ods-ant 0.2.0 → 0.4.1

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 (715) hide show
  1. package/README.md +28 -2
  2. package/dist-lib/AutoComplete-cpf8hCnK.js +93 -0
  3. package/dist-lib/AutoComplete-cpf8hCnK.js.map +1 -0
  4. package/dist-lib/AutoComplete-gOMQxLvY.cjs +38 -0
  5. package/dist-lib/AutoComplete-gOMQxLvY.cjs.map +1 -0
  6. package/dist-lib/DatePicker-BpjYibJF.js +599 -0
  7. package/dist-lib/DatePicker-BpjYibJF.js.map +1 -0
  8. package/dist-lib/DatePicker-DTVtamsX.cjs +518 -0
  9. package/dist-lib/DatePicker-DTVtamsX.cjs.map +1 -0
  10. package/dist-lib/Dropdown-BU7v5Q4i.cjs +88 -0
  11. package/dist-lib/Dropdown-BU7v5Q4i.cjs.map +1 -0
  12. package/dist-lib/Dropdown-C2t8AOdz.js +113 -0
  13. package/dist-lib/Dropdown-C2t8AOdz.js.map +1 -0
  14. package/dist-lib/InputNumber-55VASjK4.js +253 -0
  15. package/dist-lib/InputNumber-55VASjK4.js.map +1 -0
  16. package/dist-lib/InputNumber-X-VvOKNc.cjs +202 -0
  17. package/dist-lib/InputNumber-X-VvOKNc.cjs.map +1 -0
  18. package/dist-lib/Steps-DT5AKuMX.js +214 -0
  19. package/dist-lib/Steps-DT5AKuMX.js.map +1 -0
  20. package/dist-lib/Steps-Dhq_inin.cjs +191 -0
  21. package/dist-lib/Steps-Dhq_inin.cjs.map +1 -0
  22. package/dist-lib/TimePicker-BgaELcl_.js +277 -0
  23. package/dist-lib/TimePicker-BgaELcl_.js.map +1 -0
  24. package/dist-lib/TimePicker-D4iKsUck.cjs +217 -0
  25. package/dist-lib/TimePicker-D4iKsUck.cjs.map +1 -0
  26. package/dist-lib/chunk-Bmb41Sf3.cjs +1 -0
  27. package/dist-lib/core-C-tv3mqr.js +57 -0
  28. package/dist-lib/core-C-tv3mqr.js.map +1 -0
  29. package/dist-lib/core-bPY3ouxp.cjs +2 -0
  30. package/dist-lib/core-bPY3ouxp.cjs.map +1 -0
  31. package/dist-lib/display/Avatar.cjs +84 -0
  32. package/dist-lib/display/Avatar.cjs.map +1 -0
  33. package/dist-lib/display/Avatar.js +176 -0
  34. package/dist-lib/display/Avatar.js.map +1 -0
  35. package/dist-lib/display/Badge.cjs +89 -0
  36. package/dist-lib/display/Badge.cjs.map +1 -0
  37. package/dist-lib/display/Badge.js +184 -0
  38. package/dist-lib/display/Badge.js.map +1 -0
  39. package/dist-lib/display/Calendar.cjs +194 -0
  40. package/dist-lib/display/Calendar.cjs.map +1 -0
  41. package/dist-lib/display/Calendar.js +378 -0
  42. package/dist-lib/display/Calendar.js.map +1 -0
  43. package/dist-lib/display/Card.cjs +177 -0
  44. package/dist-lib/display/Card.cjs.map +1 -0
  45. package/dist-lib/display/Card.js +209 -0
  46. package/dist-lib/display/Card.js.map +1 -0
  47. package/dist-lib/display/Collapse.cjs +346 -0
  48. package/dist-lib/display/Collapse.cjs.map +1 -0
  49. package/dist-lib/display/Collapse.js +449 -0
  50. package/dist-lib/display/Collapse.js.map +1 -0
  51. package/dist-lib/display/Descriptions.cjs +145 -0
  52. package/dist-lib/display/Descriptions.cjs.map +1 -0
  53. package/dist-lib/display/Descriptions.js +186 -0
  54. package/dist-lib/display/Descriptions.js.map +1 -0
  55. package/dist-lib/display/Empty.cjs +170 -0
  56. package/dist-lib/display/Empty.cjs.map +1 -0
  57. package/dist-lib/display/Empty.js +295 -0
  58. package/dist-lib/display/Empty.js.map +1 -0
  59. package/dist-lib/display/Icon.cjs +48 -0
  60. package/dist-lib/display/Icon.cjs.map +1 -0
  61. package/dist-lib/display/Icon.js +165 -0
  62. package/dist-lib/display/Icon.js.map +1 -0
  63. package/dist-lib/display/Image.cjs +69 -0
  64. package/dist-lib/display/Image.cjs.map +1 -0
  65. package/dist-lib/display/Image.js +163 -0
  66. package/dist-lib/display/Image.js.map +1 -0
  67. package/dist-lib/display/List.cjs +142 -0
  68. package/dist-lib/display/List.cjs.map +1 -0
  69. package/dist-lib/display/List.js +178 -0
  70. package/dist-lib/display/List.js.map +1 -0
  71. package/dist-lib/display/Popover.cjs +62 -0
  72. package/dist-lib/display/Popover.cjs.map +1 -0
  73. package/dist-lib/display/Popover.js +130 -0
  74. package/dist-lib/display/Popover.js.map +1 -0
  75. package/dist-lib/display/Segmented.cjs +115 -0
  76. package/dist-lib/display/Segmented.cjs.map +1 -0
  77. package/dist-lib/display/Segmented.js +202 -0
  78. package/dist-lib/display/Segmented.js.map +1 -0
  79. package/dist-lib/display/Statistic.cjs +133 -0
  80. package/dist-lib/display/Statistic.cjs.map +1 -0
  81. package/dist-lib/display/Statistic.js +165 -0
  82. package/dist-lib/display/Statistic.js.map +1 -0
  83. package/dist-lib/display/Table.cjs +510 -0
  84. package/dist-lib/display/Table.cjs.map +1 -0
  85. package/dist-lib/display/Table.js +1036 -0
  86. package/dist-lib/display/Table.js.map +1 -0
  87. package/dist-lib/display/Tag.cjs +35 -0
  88. package/dist-lib/display/Tag.cjs.map +1 -0
  89. package/dist-lib/display/Tag.js +95 -0
  90. package/dist-lib/display/Tag.js.map +1 -0
  91. package/dist-lib/display/Timeline.cjs +138 -0
  92. package/dist-lib/display/Timeline.cjs.map +1 -0
  93. package/dist-lib/display/Timeline.js +275 -0
  94. package/dist-lib/display/Timeline.js.map +1 -0
  95. package/dist-lib/display/Tooltip.cjs +70 -0
  96. package/dist-lib/display/Tooltip.cjs.map +1 -0
  97. package/dist-lib/display/Tooltip.js +141 -0
  98. package/dist-lib/display/Tooltip.js.map +1 -0
  99. package/dist-lib/display/Tree.cjs +199 -0
  100. package/dist-lib/display/Tree.cjs.map +1 -0
  101. package/dist-lib/display/Tree.js +349 -0
  102. package/dist-lib/display/Tree.js.map +1 -0
  103. package/dist-lib/display/Typography.cjs +102 -0
  104. package/dist-lib/display/Typography.cjs.map +1 -0
  105. package/dist-lib/display/Typography.js +159 -0
  106. package/dist-lib/display/Typography.js.map +1 -0
  107. package/dist-lib/display/index.cjs +1 -0
  108. package/dist-lib/display/index.js +20 -0
  109. package/dist-lib/feedback/Drawer.cjs +169 -0
  110. package/dist-lib/feedback/Drawer.cjs.map +1 -0
  111. package/dist-lib/feedback/Drawer.js +255 -0
  112. package/dist-lib/feedback/Drawer.js.map +1 -0
  113. package/dist-lib/feedback/FloatButton.cjs +2 -0
  114. package/dist-lib/feedback/FloatButton.cjs.map +1 -0
  115. package/dist-lib/feedback/FloatButton.js +19 -0
  116. package/dist-lib/feedback/FloatButton.js.map +1 -0
  117. package/dist-lib/feedback/Message.cjs +2 -0
  118. package/dist-lib/feedback/Message.cjs.map +1 -0
  119. package/dist-lib/feedback/Message.js +47 -0
  120. package/dist-lib/feedback/Message.js.map +1 -0
  121. package/dist-lib/feedback/Modal.cjs +170 -0
  122. package/dist-lib/feedback/Modal.cjs.map +1 -0
  123. package/dist-lib/feedback/Modal.js +297 -0
  124. package/dist-lib/feedback/Modal.js.map +1 -0
  125. package/dist-lib/feedback/Notification.cjs +20 -0
  126. package/dist-lib/feedback/Notification.cjs.map +1 -0
  127. package/dist-lib/feedback/Notification.js +60 -0
  128. package/dist-lib/feedback/Notification.js.map +1 -0
  129. package/dist-lib/feedback/Popconfirm.cjs +2 -0
  130. package/dist-lib/feedback/Popconfirm.cjs.map +1 -0
  131. package/dist-lib/feedback/Popconfirm.js +15 -0
  132. package/dist-lib/feedback/Popconfirm.js.map +1 -0
  133. package/dist-lib/feedback/Progress.cjs +78 -0
  134. package/dist-lib/feedback/Progress.cjs.map +1 -0
  135. package/dist-lib/feedback/Progress.js +199 -0
  136. package/dist-lib/feedback/Progress.js.map +1 -0
  137. package/dist-lib/feedback/Result.cjs +95 -0
  138. package/dist-lib/feedback/Result.cjs.map +1 -0
  139. package/dist-lib/feedback/Result.js +174 -0
  140. package/dist-lib/feedback/Result.js.map +1 -0
  141. package/dist-lib/feedback/Skeleton.cjs +214 -0
  142. package/dist-lib/feedback/Skeleton.cjs.map +1 -0
  143. package/dist-lib/feedback/Skeleton.js +408 -0
  144. package/dist-lib/feedback/Skeleton.js.map +1 -0
  145. package/dist-lib/feedback/Spin.cjs +65 -0
  146. package/dist-lib/feedback/Spin.cjs.map +1 -0
  147. package/dist-lib/feedback/Spin.js +115 -0
  148. package/dist-lib/feedback/Spin.js.map +1 -0
  149. package/dist-lib/feedback/Tour.cjs +154 -0
  150. package/dist-lib/feedback/Tour.cjs.map +1 -0
  151. package/dist-lib/feedback/Tour.js +211 -0
  152. package/dist-lib/feedback/Tour.js.map +1 -0
  153. package/dist-lib/feedback/index.cjs +1 -0
  154. package/dist-lib/feedback/index.js +12 -0
  155. package/dist-lib/feedbackIcons-DBoCD6Dk.js +37 -0
  156. package/dist-lib/feedbackIcons-DBoCD6Dk.js.map +1 -0
  157. package/dist-lib/feedbackIcons-DXxPnA5r.cjs +2 -0
  158. package/dist-lib/feedbackIcons-DXxPnA5r.cjs.map +1 -0
  159. package/dist-lib/fieldProps-CuWfEbFx.cjs +2 -0
  160. package/dist-lib/fieldProps-CuWfEbFx.cjs.map +1 -0
  161. package/dist-lib/fieldProps-EeYy2kXb.js +9 -0
  162. package/dist-lib/fieldProps-EeYy2kXb.js.map +1 -0
  163. package/dist-lib/forms/AccessibleCheckboxGroup.cjs +2 -0
  164. package/dist-lib/forms/AccessibleCheckboxGroup.cjs.map +1 -0
  165. package/dist-lib/forms/AccessibleCheckboxGroup.js +16 -0
  166. package/dist-lib/forms/AccessibleCheckboxGroup.js.map +1 -0
  167. package/dist-lib/forms/AccessibleDatePicker.cjs +2 -0
  168. package/dist-lib/forms/AccessibleDatePicker.cjs.map +1 -0
  169. package/dist-lib/forms/AccessibleDatePicker.js +22 -0
  170. package/dist-lib/forms/AccessibleDatePicker.js.map +1 -0
  171. package/dist-lib/forms/AccessiblePasswordInput.cjs +2 -0
  172. package/dist-lib/forms/AccessiblePasswordInput.cjs.map +1 -0
  173. package/dist-lib/forms/AccessiblePasswordInput.js +14 -0
  174. package/dist-lib/forms/AccessiblePasswordInput.js.map +1 -0
  175. package/dist-lib/forms/AccessibleRadioGroup.cjs +2 -0
  176. package/dist-lib/forms/AccessibleRadioGroup.cjs.map +1 -0
  177. package/dist-lib/forms/AccessibleRadioGroup.js +16 -0
  178. package/dist-lib/forms/AccessibleRadioGroup.js.map +1 -0
  179. package/dist-lib/forms/AccessibleSelect.cjs +2 -0
  180. package/dist-lib/forms/AccessibleSelect.cjs.map +1 -0
  181. package/dist-lib/forms/AccessibleSelect.js +20 -0
  182. package/dist-lib/forms/AccessibleSelect.js.map +1 -0
  183. package/dist-lib/forms/AccessibleSwitch.cjs +2 -0
  184. package/dist-lib/forms/AccessibleSwitch.cjs.map +1 -0
  185. package/dist-lib/forms/AccessibleSwitch.js +20 -0
  186. package/dist-lib/forms/AccessibleSwitch.js.map +1 -0
  187. package/dist-lib/forms/AutoComplete.cjs +1 -0
  188. package/dist-lib/forms/AutoComplete.js +2 -0
  189. package/dist-lib/forms/Button.cjs +243 -0
  190. package/dist-lib/forms/Button.cjs.map +1 -0
  191. package/dist-lib/forms/Button.js +299 -0
  192. package/dist-lib/forms/Button.js.map +1 -0
  193. package/dist-lib/forms/Cascader.cjs +37 -0
  194. package/dist-lib/forms/Cascader.cjs.map +1 -0
  195. package/dist-lib/forms/Cascader.js +88 -0
  196. package/dist-lib/forms/Cascader.js.map +1 -0
  197. package/dist-lib/forms/Checkbox.cjs +275 -0
  198. package/dist-lib/forms/Checkbox.cjs.map +1 -0
  199. package/dist-lib/forms/Checkbox.js +327 -0
  200. package/dist-lib/forms/Checkbox.js.map +1 -0
  201. package/dist-lib/forms/CheckboxGroup.cjs +2 -0
  202. package/dist-lib/forms/CheckboxGroup.cjs.map +1 -0
  203. package/dist-lib/forms/CheckboxGroup.js +42 -0
  204. package/dist-lib/forms/CheckboxGroup.js.map +1 -0
  205. package/dist-lib/forms/ClearableAutoComplete.cjs +2 -0
  206. package/dist-lib/forms/ClearableAutoComplete.cjs.map +1 -0
  207. package/dist-lib/forms/ClearableAutoComplete.js +27 -0
  208. package/dist-lib/forms/ClearableAutoComplete.js.map +1 -0
  209. package/dist-lib/forms/ClearableCascader.cjs +2 -0
  210. package/dist-lib/forms/ClearableCascader.cjs.map +1 -0
  211. package/dist-lib/forms/ClearableCascader.js +27 -0
  212. package/dist-lib/forms/ClearableCascader.js.map +1 -0
  213. package/dist-lib/forms/ClearableCheckbox.cjs +2 -0
  214. package/dist-lib/forms/ClearableCheckbox.cjs.map +1 -0
  215. package/dist-lib/forms/ClearableCheckbox.js +23 -0
  216. package/dist-lib/forms/ClearableCheckbox.js.map +1 -0
  217. package/dist-lib/forms/ClearableColorPicker.cjs +2 -0
  218. package/dist-lib/forms/ClearableColorPicker.cjs.map +1 -0
  219. package/dist-lib/forms/ClearableColorPicker.js +22 -0
  220. package/dist-lib/forms/ClearableColorPicker.js.map +1 -0
  221. package/dist-lib/forms/ClearableDatePicker.cjs +2 -0
  222. package/dist-lib/forms/ClearableDatePicker.cjs.map +1 -0
  223. package/dist-lib/forms/ClearableDatePicker.js +27 -0
  224. package/dist-lib/forms/ClearableDatePicker.js.map +1 -0
  225. package/dist-lib/forms/ClearableInput.cjs +2 -0
  226. package/dist-lib/forms/ClearableInput.cjs.map +1 -0
  227. package/dist-lib/forms/ClearableInput.js +22 -0
  228. package/dist-lib/forms/ClearableInput.js.map +1 -0
  229. package/dist-lib/forms/ClearableInputNumber.cjs +2 -0
  230. package/dist-lib/forms/ClearableInputNumber.cjs.map +1 -0
  231. package/dist-lib/forms/ClearableInputNumber.js +27 -0
  232. package/dist-lib/forms/ClearableInputNumber.js.map +1 -0
  233. package/dist-lib/forms/ClearableMentions.cjs +2 -0
  234. package/dist-lib/forms/ClearableMentions.cjs.map +1 -0
  235. package/dist-lib/forms/ClearableMentions.js +27 -0
  236. package/dist-lib/forms/ClearableMentions.js.map +1 -0
  237. package/dist-lib/forms/ClearableRadio.cjs +2 -0
  238. package/dist-lib/forms/ClearableRadio.cjs.map +1 -0
  239. package/dist-lib/forms/ClearableRadio.js +23 -0
  240. package/dist-lib/forms/ClearableRadio.js.map +1 -0
  241. package/dist-lib/forms/ClearableRadioGroup.cjs +2 -0
  242. package/dist-lib/forms/ClearableRadioGroup.cjs.map +1 -0
  243. package/dist-lib/forms/ClearableRadioGroup.js +22 -0
  244. package/dist-lib/forms/ClearableRadioGroup.js.map +1 -0
  245. package/dist-lib/forms/ClearableRate.cjs +2 -0
  246. package/dist-lib/forms/ClearableRate.cjs.map +1 -0
  247. package/dist-lib/forms/ClearableRate.js +22 -0
  248. package/dist-lib/forms/ClearableRate.js.map +1 -0
  249. package/dist-lib/forms/ClearableSelect.cjs +2 -0
  250. package/dist-lib/forms/ClearableSelect.cjs.map +1 -0
  251. package/dist-lib/forms/ClearableSelect.js +27 -0
  252. package/dist-lib/forms/ClearableSelect.js.map +1 -0
  253. package/dist-lib/forms/ClearableSlider.cjs +2 -0
  254. package/dist-lib/forms/ClearableSlider.cjs.map +1 -0
  255. package/dist-lib/forms/ClearableSlider.js +23 -0
  256. package/dist-lib/forms/ClearableSlider.js.map +1 -0
  257. package/dist-lib/forms/ClearableSwitch.cjs +2 -0
  258. package/dist-lib/forms/ClearableSwitch.cjs.map +1 -0
  259. package/dist-lib/forms/ClearableSwitch.js +23 -0
  260. package/dist-lib/forms/ClearableSwitch.js.map +1 -0
  261. package/dist-lib/forms/ClearableTimePicker.cjs +2 -0
  262. package/dist-lib/forms/ClearableTimePicker.cjs.map +1 -0
  263. package/dist-lib/forms/ClearableTimePicker.js +27 -0
  264. package/dist-lib/forms/ClearableTimePicker.js.map +1 -0
  265. package/dist-lib/forms/ClearableTransfer.cjs +200 -0
  266. package/dist-lib/forms/ClearableTransfer.cjs.map +1 -0
  267. package/dist-lib/forms/ClearableTransfer.js +337 -0
  268. package/dist-lib/forms/ClearableTransfer.js.map +1 -0
  269. package/dist-lib/forms/ClearableTreeSelect.cjs +2 -0
  270. package/dist-lib/forms/ClearableTreeSelect.cjs.map +1 -0
  271. package/dist-lib/forms/ClearableTreeSelect.js +27 -0
  272. package/dist-lib/forms/ClearableTreeSelect.js.map +1 -0
  273. package/dist-lib/forms/ClearableUpload.cjs +111 -0
  274. package/dist-lib/forms/ClearableUpload.cjs.map +1 -0
  275. package/dist-lib/forms/ClearableUpload.js +187 -0
  276. package/dist-lib/forms/ClearableUpload.js.map +1 -0
  277. package/dist-lib/forms/ColorPicker.cjs +2 -0
  278. package/dist-lib/forms/ColorPicker.cjs.map +1 -0
  279. package/dist-lib/forms/ColorPicker.js +42 -0
  280. package/dist-lib/forms/ColorPicker.js.map +1 -0
  281. package/dist-lib/forms/DatePicker.cjs +1 -0
  282. package/dist-lib/forms/DatePicker.js +2 -0
  283. package/dist-lib/forms/FieldSetShell.cjs +2 -0
  284. package/dist-lib/forms/FieldSetShell.cjs.map +1 -0
  285. package/dist-lib/forms/FieldSetShell.js +87 -0
  286. package/dist-lib/forms/FieldSetShell.js.map +1 -0
  287. package/dist-lib/forms/FieldShell.cjs +2 -0
  288. package/dist-lib/forms/FieldShell.cjs.map +1 -0
  289. package/dist-lib/forms/FieldShell.js +93 -0
  290. package/dist-lib/forms/FieldShell.js.map +1 -0
  291. package/dist-lib/forms/Form.cjs +244 -0
  292. package/dist-lib/forms/Form.cjs.map +1 -0
  293. package/dist-lib/forms/Form.js +357 -0
  294. package/dist-lib/forms/Form.js.map +1 -0
  295. package/dist-lib/forms/FormError.cjs +2 -0
  296. package/dist-lib/forms/FormError.cjs.map +1 -0
  297. package/dist-lib/forms/FormError.js +41 -0
  298. package/dist-lib/forms/FormError.js.map +1 -0
  299. package/dist-lib/forms/FormSuccess.cjs +2 -0
  300. package/dist-lib/forms/FormSuccess.cjs.map +1 -0
  301. package/dist-lib/forms/FormSuccess.js +42 -0
  302. package/dist-lib/forms/FormSuccess.js.map +1 -0
  303. package/dist-lib/forms/FormWarning.cjs +2 -0
  304. package/dist-lib/forms/FormWarning.cjs.map +1 -0
  305. package/dist-lib/forms/FormWarning.js +42 -0
  306. package/dist-lib/forms/FormWarning.js.map +1 -0
  307. package/dist-lib/forms/Input.cjs +295 -0
  308. package/dist-lib/forms/Input.cjs.map +1 -0
  309. package/dist-lib/forms/Input.js +358 -0
  310. package/dist-lib/forms/Input.js.map +1 -0
  311. package/dist-lib/forms/InputNumber.cjs +1 -0
  312. package/dist-lib/forms/InputNumber.js +2 -0
  313. package/dist-lib/forms/Mentions.cjs +40 -0
  314. package/dist-lib/forms/Mentions.cjs.map +1 -0
  315. package/dist-lib/forms/Mentions.js +126 -0
  316. package/dist-lib/forms/Mentions.js.map +1 -0
  317. package/dist-lib/forms/PasswordInput.cjs +2 -0
  318. package/dist-lib/forms/PasswordInput.cjs.map +1 -0
  319. package/dist-lib/forms/PasswordInput.js +56 -0
  320. package/dist-lib/forms/PasswordInput.js.map +1 -0
  321. package/dist-lib/forms/Radio.cjs +2 -0
  322. package/dist-lib/forms/Radio.cjs.map +1 -0
  323. package/dist-lib/forms/Radio.js +43 -0
  324. package/dist-lib/forms/Radio.js.map +1 -0
  325. package/dist-lib/forms/RadioGroup.cjs +2 -0
  326. package/dist-lib/forms/RadioGroup.cjs.map +1 -0
  327. package/dist-lib/forms/RadioGroup.js +42 -0
  328. package/dist-lib/forms/RadioGroup.js.map +1 -0
  329. package/dist-lib/forms/Rate.cjs +2 -0
  330. package/dist-lib/forms/Rate.cjs.map +1 -0
  331. package/dist-lib/forms/Rate.js +42 -0
  332. package/dist-lib/forms/Rate.js.map +1 -0
  333. package/dist-lib/forms/Select.cjs +2 -0
  334. package/dist-lib/forms/Select.cjs.map +1 -0
  335. package/dist-lib/forms/Select.js +72 -0
  336. package/dist-lib/forms/Select.js.map +1 -0
  337. package/dist-lib/forms/Slider.cjs +2 -0
  338. package/dist-lib/forms/Slider.cjs.map +1 -0
  339. package/dist-lib/forms/Slider.js +43 -0
  340. package/dist-lib/forms/Slider.js.map +1 -0
  341. package/dist-lib/forms/Switch.cjs +117 -0
  342. package/dist-lib/forms/Switch.cjs.map +1 -0
  343. package/dist-lib/forms/Switch.js +209 -0
  344. package/dist-lib/forms/Switch.js.map +1 -0
  345. package/dist-lib/forms/TimePicker.cjs +1 -0
  346. package/dist-lib/forms/TimePicker.js +2 -0
  347. package/dist-lib/forms/TreeSelect.cjs +2 -0
  348. package/dist-lib/forms/TreeSelect.cjs.map +1 -0
  349. package/dist-lib/forms/TreeSelect.js +45 -0
  350. package/dist-lib/forms/TreeSelect.js.map +1 -0
  351. package/dist-lib/forms/clearUtils.cjs +2 -0
  352. package/dist-lib/forms/clearUtils.cjs.map +1 -0
  353. package/dist-lib/forms/clearUtils.js +16 -0
  354. package/dist-lib/forms/clearUtils.js.map +1 -0
  355. package/dist-lib/forms/index.cjs +1 -0
  356. package/dist-lib/forms/index.js +52 -0
  357. package/dist-lib/forms/validation.cjs +2 -0
  358. package/dist-lib/forms/validation.cjs.map +1 -0
  359. package/dist-lib/forms/validation.js +68 -0
  360. package/dist-lib/forms/validation.js.map +1 -0
  361. package/dist-lib/index.cjs +1 -7307
  362. package/dist-lib/index.js +91 -9807
  363. package/dist-lib/navigation/Anchor.cjs +10 -0
  364. package/dist-lib/navigation/Anchor.cjs.map +1 -0
  365. package/dist-lib/navigation/Anchor.js +32 -0
  366. package/dist-lib/navigation/Anchor.js.map +1 -0
  367. package/dist-lib/navigation/Breadcrumb.cjs +130 -0
  368. package/dist-lib/navigation/Breadcrumb.cjs.map +1 -0
  369. package/dist-lib/navigation/Breadcrumb.js +217 -0
  370. package/dist-lib/navigation/Breadcrumb.js.map +1 -0
  371. package/dist-lib/navigation/Dropdown.cjs +1 -0
  372. package/dist-lib/navigation/Dropdown.js +2 -0
  373. package/dist-lib/navigation/Menu.cjs +177 -0
  374. package/dist-lib/navigation/Menu.cjs.map +1 -0
  375. package/dist-lib/navigation/Menu.js +258 -0
  376. package/dist-lib/navigation/Menu.js.map +1 -0
  377. package/dist-lib/navigation/Pagination.cjs +370 -0
  378. package/dist-lib/navigation/Pagination.cjs.map +1 -0
  379. package/dist-lib/navigation/Pagination.js +505 -0
  380. package/dist-lib/navigation/Pagination.js.map +1 -0
  381. package/dist-lib/navigation/Steps.cjs +1 -0
  382. package/dist-lib/navigation/Steps.js +2 -0
  383. package/dist-lib/navigation/Tabs.cjs +162 -0
  384. package/dist-lib/navigation/Tabs.cjs.map +1 -0
  385. package/dist-lib/navigation/Tabs.js +249 -0
  386. package/dist-lib/navigation/Tabs.js.map +1 -0
  387. package/dist-lib/navigation/index.cjs +1 -0
  388. package/dist-lib/navigation/index.js +8 -0
  389. package/dist-lib/selectStyles-BFeXUMpO.cjs +1027 -0
  390. package/dist-lib/selectStyles-BFeXUMpO.cjs.map +1 -0
  391. package/dist-lib/selectStyles-C8j5Vvgp.js +1037 -0
  392. package/dist-lib/selectStyles-C8j5Vvgp.js.map +1 -0
  393. package/dist-lib/theme.cjs +2 -1
  394. package/dist-lib/theme.cjs.map +1 -0
  395. package/dist-lib/theme.js +1656 -2
  396. package/dist-lib/theme.js.map +1 -0
  397. package/dist-lib/types/ds/display/Avatar.d.ts +37 -0
  398. package/dist-lib/types/ds/display/Avatar.d.ts.map +1 -0
  399. package/dist-lib/types/ds/display/Avatar.test.d.ts +2 -0
  400. package/dist-lib/types/ds/display/Avatar.test.d.ts.map +1 -0
  401. package/dist-lib/types/ds/display/Badge.test.d.ts +2 -0
  402. package/dist-lib/types/ds/display/Badge.test.d.ts.map +1 -0
  403. package/dist-lib/types/ds/display/Calendar.d.ts +38 -0
  404. package/dist-lib/types/ds/display/Calendar.d.ts.map +1 -0
  405. package/dist-lib/types/ds/display/Calendar.test.d.ts +2 -0
  406. package/dist-lib/types/ds/display/Calendar.test.d.ts.map +1 -0
  407. package/dist-lib/types/ds/display/Card.d.ts +20 -0
  408. package/dist-lib/types/ds/display/Card.d.ts.map +1 -0
  409. package/dist-lib/types/ds/display/Card.test.d.ts +2 -0
  410. package/dist-lib/types/ds/display/Card.test.d.ts.map +1 -0
  411. package/dist-lib/types/ds/display/Collapse.test.d.ts +2 -0
  412. package/dist-lib/types/ds/display/Collapse.test.d.ts.map +1 -0
  413. package/dist-lib/types/ds/display/Descriptions.d.ts +16 -0
  414. package/dist-lib/types/ds/display/Descriptions.d.ts.map +1 -0
  415. package/dist-lib/types/ds/display/Descriptions.test.d.ts +2 -0
  416. package/dist-lib/types/ds/display/Descriptions.test.d.ts.map +1 -0
  417. package/dist-lib/types/ds/display/Empty.test.d.ts +2 -0
  418. package/dist-lib/types/ds/display/Empty.test.d.ts.map +1 -0
  419. package/dist-lib/types/ds/display/Icon.d.ts +43 -0
  420. package/dist-lib/types/ds/display/Icon.d.ts.map +1 -0
  421. package/dist-lib/types/ds/display/Icon.test.d.ts +2 -0
  422. package/dist-lib/types/ds/display/Icon.test.d.ts.map +1 -0
  423. package/dist-lib/types/ds/display/Image.d.ts +20 -0
  424. package/dist-lib/types/ds/display/Image.d.ts.map +1 -0
  425. package/dist-lib/types/ds/display/Image.test.d.ts +2 -0
  426. package/dist-lib/types/ds/display/Image.test.d.ts.map +1 -0
  427. package/dist-lib/types/ds/display/List.d.ts +14 -0
  428. package/dist-lib/types/ds/display/List.d.ts.map +1 -0
  429. package/dist-lib/types/ds/display/List.test.d.ts +2 -0
  430. package/dist-lib/types/ds/display/List.test.d.ts.map +1 -0
  431. package/dist-lib/types/ds/display/Popover.test.d.ts +2 -0
  432. package/dist-lib/types/ds/display/Popover.test.d.ts.map +1 -0
  433. package/dist-lib/types/ds/display/Segmented.test.d.ts +2 -0
  434. package/dist-lib/types/ds/display/Segmented.test.d.ts.map +1 -0
  435. package/dist-lib/types/ds/display/Statistic.d.ts +25 -0
  436. package/dist-lib/types/ds/display/Statistic.d.ts.map +1 -0
  437. package/dist-lib/types/ds/display/Statistic.test.d.ts +2 -0
  438. package/dist-lib/types/ds/display/Statistic.test.d.ts.map +1 -0
  439. package/dist-lib/types/ds/display/Table.d.ts +50 -0
  440. package/dist-lib/types/ds/display/Table.d.ts.map +1 -1
  441. package/dist-lib/types/ds/display/Table.test.d.ts +2 -0
  442. package/dist-lib/types/ds/display/Table.test.d.ts.map +1 -0
  443. package/dist-lib/types/ds/display/Tag.test.d.ts +2 -0
  444. package/dist-lib/types/ds/display/Tag.test.d.ts.map +1 -0
  445. package/dist-lib/types/ds/display/Timeline.d.ts +32 -0
  446. package/dist-lib/types/ds/display/Timeline.d.ts.map +1 -0
  447. package/dist-lib/types/ds/display/Timeline.test.d.ts +2 -0
  448. package/dist-lib/types/ds/display/Timeline.test.d.ts.map +1 -0
  449. package/dist-lib/types/ds/display/Tooltip.test.d.ts +2 -0
  450. package/dist-lib/types/ds/display/Tooltip.test.d.ts.map +1 -0
  451. package/dist-lib/types/ds/display/Tree.d.ts +59 -0
  452. package/dist-lib/types/ds/display/Tree.d.ts.map +1 -0
  453. package/dist-lib/types/ds/display/Tree.test.d.ts +2 -0
  454. package/dist-lib/types/ds/display/Tree.test.d.ts.map +1 -0
  455. package/dist-lib/types/ds/display/Typography.d.ts +26 -0
  456. package/dist-lib/types/ds/display/Typography.d.ts.map +1 -0
  457. package/dist-lib/types/ds/display/Typography.test.d.ts +2 -0
  458. package/dist-lib/types/ds/display/Typography.test.d.ts.map +1 -0
  459. package/dist-lib/types/ds/display/index.d.ts +11 -0
  460. package/dist-lib/types/ds/display/index.d.ts.map +1 -1
  461. package/dist-lib/types/ds/feedback/Drawer.test.d.ts +2 -0
  462. package/dist-lib/types/ds/feedback/Drawer.test.d.ts.map +1 -0
  463. package/dist-lib/types/ds/feedback/FloatButton.test.d.ts +2 -0
  464. package/dist-lib/types/ds/feedback/FloatButton.test.d.ts.map +1 -0
  465. package/dist-lib/types/ds/feedback/Message.test.d.ts +2 -0
  466. package/dist-lib/types/ds/feedback/Message.test.d.ts.map +1 -0
  467. package/dist-lib/types/ds/feedback/Modal.test.d.ts +2 -0
  468. package/dist-lib/types/ds/feedback/Modal.test.d.ts.map +1 -0
  469. package/dist-lib/types/ds/feedback/Notification.test.d.ts +2 -0
  470. package/dist-lib/types/ds/feedback/Notification.test.d.ts.map +1 -0
  471. package/dist-lib/types/ds/feedback/Popconfirm.test.d.ts +2 -0
  472. package/dist-lib/types/ds/feedback/Popconfirm.test.d.ts.map +1 -0
  473. package/dist-lib/types/ds/feedback/Progress.d.ts +30 -0
  474. package/dist-lib/types/ds/feedback/Progress.d.ts.map +1 -0
  475. package/dist-lib/types/ds/feedback/Progress.test.d.ts +2 -0
  476. package/dist-lib/types/ds/feedback/Progress.test.d.ts.map +1 -0
  477. package/dist-lib/types/ds/feedback/Result.d.ts +20 -0
  478. package/dist-lib/types/ds/feedback/Result.d.ts.map +1 -0
  479. package/dist-lib/types/ds/feedback/Result.test.d.ts +2 -0
  480. package/dist-lib/types/ds/feedback/Result.test.d.ts.map +1 -0
  481. package/dist-lib/types/ds/feedback/Skeleton.d.ts +25 -0
  482. package/dist-lib/types/ds/feedback/Skeleton.d.ts.map +1 -0
  483. package/dist-lib/types/ds/feedback/Skeleton.test.d.ts +2 -0
  484. package/dist-lib/types/ds/feedback/Skeleton.test.d.ts.map +1 -0
  485. package/dist-lib/types/ds/feedback/Spin.test.d.ts +2 -0
  486. package/dist-lib/types/ds/feedback/Spin.test.d.ts.map +1 -0
  487. package/dist-lib/types/ds/feedback/Tour.d.ts +14 -0
  488. package/dist-lib/types/ds/feedback/Tour.d.ts.map +1 -0
  489. package/dist-lib/types/ds/feedback/Tour.test.d.ts +2 -0
  490. package/dist-lib/types/ds/feedback/Tour.test.d.ts.map +1 -0
  491. package/dist-lib/types/ds/feedback/feedbackIcons.test.d.ts +2 -0
  492. package/dist-lib/types/ds/feedback/feedbackIcons.test.d.ts.map +1 -0
  493. package/dist-lib/types/ds/feedback/index.d.ts +4 -0
  494. package/dist-lib/types/ds/feedback/index.d.ts.map +1 -1
  495. package/dist-lib/types/ds/forms/AccessibleCheckboxGroup.d.ts.map +1 -1
  496. package/dist-lib/types/ds/forms/AccessibleCheckboxGroup.test.d.ts +2 -0
  497. package/dist-lib/types/ds/forms/AccessibleCheckboxGroup.test.d.ts.map +1 -0
  498. package/dist-lib/types/ds/forms/AccessibleDatePicker.d.ts.map +1 -1
  499. package/dist-lib/types/ds/forms/AccessibleDatePicker.test.d.ts +2 -0
  500. package/dist-lib/types/ds/forms/AccessibleDatePicker.test.d.ts.map +1 -0
  501. package/dist-lib/types/ds/forms/AccessiblePasswordInput.d.ts +4 -12
  502. package/dist-lib/types/ds/forms/AccessiblePasswordInput.d.ts.map +1 -1
  503. package/dist-lib/types/ds/forms/AccessiblePasswordInput.test.d.ts +2 -0
  504. package/dist-lib/types/ds/forms/AccessiblePasswordInput.test.d.ts.map +1 -0
  505. package/dist-lib/types/ds/forms/AccessibleRadioGroup.d.ts.map +1 -1
  506. package/dist-lib/types/ds/forms/AccessibleRadioGroup.test.d.ts +2 -0
  507. package/dist-lib/types/ds/forms/AccessibleRadioGroup.test.d.ts.map +1 -0
  508. package/dist-lib/types/ds/forms/AccessibleSelect.d.ts.map +1 -1
  509. package/dist-lib/types/ds/forms/AccessibleSelect.test.d.ts +2 -0
  510. package/dist-lib/types/ds/forms/AccessibleSelect.test.d.ts.map +1 -0
  511. package/dist-lib/types/ds/forms/AccessibleSwitch.d.ts +1 -1
  512. package/dist-lib/types/ds/forms/AccessibleSwitch.d.ts.map +1 -1
  513. package/dist-lib/types/ds/forms/AccessibleSwitch.test.d.ts +2 -0
  514. package/dist-lib/types/ds/forms/AccessibleSwitch.test.d.ts.map +1 -0
  515. package/dist-lib/types/ds/forms/AutoComplete.d.ts +5 -1
  516. package/dist-lib/types/ds/forms/AutoComplete.d.ts.map +1 -1
  517. package/dist-lib/types/ds/forms/AutoComplete.test.d.ts +2 -0
  518. package/dist-lib/types/ds/forms/AutoComplete.test.d.ts.map +1 -0
  519. package/dist-lib/types/ds/forms/Button.test.d.ts +2 -0
  520. package/dist-lib/types/ds/forms/Button.test.d.ts.map +1 -0
  521. package/dist-lib/types/ds/forms/Cascader.d.ts +6 -2
  522. package/dist-lib/types/ds/forms/Cascader.d.ts.map +1 -1
  523. package/dist-lib/types/ds/forms/Cascader.test.d.ts +2 -0
  524. package/dist-lib/types/ds/forms/Cascader.test.d.ts.map +1 -0
  525. package/dist-lib/types/ds/forms/Checkbox.d.ts +7 -1
  526. package/dist-lib/types/ds/forms/Checkbox.d.ts.map +1 -1
  527. package/dist-lib/types/ds/forms/Checkbox.test.d.ts +2 -0
  528. package/dist-lib/types/ds/forms/Checkbox.test.d.ts.map +1 -0
  529. package/dist-lib/types/ds/forms/CheckboxGroup.d.ts +13 -0
  530. package/dist-lib/types/ds/forms/CheckboxGroup.d.ts.map +1 -0
  531. package/dist-lib/types/ds/forms/CheckboxGroup.test.d.ts +2 -0
  532. package/dist-lib/types/ds/forms/CheckboxGroup.test.d.ts.map +1 -0
  533. package/dist-lib/types/ds/forms/ClearableAutoComplete.d.ts +1 -1
  534. package/dist-lib/types/ds/forms/ClearableAutoComplete.d.ts.map +1 -1
  535. package/dist-lib/types/ds/forms/ClearableAutoComplete.test.d.ts +2 -0
  536. package/dist-lib/types/ds/forms/ClearableAutoComplete.test.d.ts.map +1 -0
  537. package/dist-lib/types/ds/forms/ClearableCascader.d.ts.map +1 -1
  538. package/dist-lib/types/ds/forms/ClearableCascader.test.d.ts +2 -0
  539. package/dist-lib/types/ds/forms/ClearableCascader.test.d.ts.map +1 -0
  540. package/dist-lib/types/ds/forms/ClearableCheckbox.d.ts.map +1 -1
  541. package/dist-lib/types/ds/forms/ClearableCheckbox.test.d.ts +2 -0
  542. package/dist-lib/types/ds/forms/ClearableCheckbox.test.d.ts.map +1 -0
  543. package/dist-lib/types/ds/forms/ClearableColorPicker.d.ts +2 -3
  544. package/dist-lib/types/ds/forms/ClearableColorPicker.d.ts.map +1 -1
  545. package/dist-lib/types/ds/forms/ClearableColorPicker.test.d.ts +2 -0
  546. package/dist-lib/types/ds/forms/ClearableColorPicker.test.d.ts.map +1 -0
  547. package/dist-lib/types/ds/forms/ClearableDatePicker.d.ts.map +1 -1
  548. package/dist-lib/types/ds/forms/ClearableDatePicker.test.d.ts +2 -0
  549. package/dist-lib/types/ds/forms/ClearableDatePicker.test.d.ts.map +1 -0
  550. package/dist-lib/types/ds/forms/ClearableInput.d.ts.map +1 -1
  551. package/dist-lib/types/ds/forms/ClearableInput.test.d.ts +2 -0
  552. package/dist-lib/types/ds/forms/ClearableInput.test.d.ts.map +1 -0
  553. package/dist-lib/types/ds/forms/ClearableInputNumber.d.ts.map +1 -1
  554. package/dist-lib/types/ds/forms/ClearableInputNumber.test.d.ts +2 -0
  555. package/dist-lib/types/ds/forms/ClearableInputNumber.test.d.ts.map +1 -0
  556. package/dist-lib/types/ds/forms/ClearableMentions.d.ts +2 -4
  557. package/dist-lib/types/ds/forms/ClearableMentions.d.ts.map +1 -1
  558. package/dist-lib/types/ds/forms/ClearableMentions.test.d.ts +2 -0
  559. package/dist-lib/types/ds/forms/ClearableMentions.test.d.ts.map +1 -0
  560. package/dist-lib/types/ds/forms/ClearableRadio.d.ts +1 -1
  561. package/dist-lib/types/ds/forms/ClearableRadio.d.ts.map +1 -1
  562. package/dist-lib/types/ds/forms/ClearableRadio.test.d.ts +2 -0
  563. package/dist-lib/types/ds/forms/ClearableRadio.test.d.ts.map +1 -0
  564. package/dist-lib/types/ds/forms/ClearableRadioGroup.d.ts +2 -2
  565. package/dist-lib/types/ds/forms/ClearableRadioGroup.d.ts.map +1 -1
  566. package/dist-lib/types/ds/forms/ClearableRadioGroup.test.d.ts +2 -0
  567. package/dist-lib/types/ds/forms/ClearableRadioGroup.test.d.ts.map +1 -0
  568. package/dist-lib/types/ds/forms/ClearableRate.d.ts +2 -4
  569. package/dist-lib/types/ds/forms/ClearableRate.d.ts.map +1 -1
  570. package/dist-lib/types/ds/forms/ClearableRate.test.d.ts +2 -0
  571. package/dist-lib/types/ds/forms/ClearableRate.test.d.ts.map +1 -0
  572. package/dist-lib/types/ds/forms/ClearableSelect.d.ts.map +1 -1
  573. package/dist-lib/types/ds/forms/ClearableSelect.test.d.ts +2 -0
  574. package/dist-lib/types/ds/forms/ClearableSelect.test.d.ts.map +1 -0
  575. package/dist-lib/types/ds/forms/ClearableSlider.d.ts +1 -2
  576. package/dist-lib/types/ds/forms/ClearableSlider.d.ts.map +1 -1
  577. package/dist-lib/types/ds/forms/ClearableSlider.test.d.ts +2 -0
  578. package/dist-lib/types/ds/forms/ClearableSlider.test.d.ts.map +1 -0
  579. package/dist-lib/types/ds/forms/ClearableSwitch.d.ts +1 -1
  580. package/dist-lib/types/ds/forms/ClearableSwitch.d.ts.map +1 -1
  581. package/dist-lib/types/ds/forms/ClearableSwitch.test.d.ts +2 -0
  582. package/dist-lib/types/ds/forms/ClearableSwitch.test.d.ts.map +1 -0
  583. package/dist-lib/types/ds/forms/ClearableTimePicker.d.ts.map +1 -1
  584. package/dist-lib/types/ds/forms/ClearableTimePicker.test.d.ts +2 -0
  585. package/dist-lib/types/ds/forms/ClearableTimePicker.test.d.ts.map +1 -0
  586. package/dist-lib/types/ds/forms/ClearableTransfer.d.ts +13 -7
  587. package/dist-lib/types/ds/forms/ClearableTransfer.d.ts.map +1 -1
  588. package/dist-lib/types/ds/forms/ClearableTransfer.test.d.ts +2 -0
  589. package/dist-lib/types/ds/forms/ClearableTransfer.test.d.ts.map +1 -0
  590. package/dist-lib/types/ds/forms/ClearableTreeSelect.d.ts +2 -2
  591. package/dist-lib/types/ds/forms/ClearableTreeSelect.d.ts.map +1 -1
  592. package/dist-lib/types/ds/forms/ClearableTreeSelect.test.d.ts +2 -0
  593. package/dist-lib/types/ds/forms/ClearableTreeSelect.test.d.ts.map +1 -0
  594. package/dist-lib/types/ds/forms/ClearableUpload.d.ts +13 -7
  595. package/dist-lib/types/ds/forms/ClearableUpload.d.ts.map +1 -1
  596. package/dist-lib/types/ds/forms/ClearableUpload.test.d.ts +2 -0
  597. package/dist-lib/types/ds/forms/ClearableUpload.test.d.ts.map +1 -0
  598. package/dist-lib/types/ds/forms/ColorPicker.d.ts +11 -0
  599. package/dist-lib/types/ds/forms/ColorPicker.d.ts.map +1 -0
  600. package/dist-lib/types/ds/forms/ColorPicker.test.d.ts +2 -0
  601. package/dist-lib/types/ds/forms/ColorPicker.test.d.ts.map +1 -0
  602. package/dist-lib/types/ds/forms/DatePicker.d.ts +5 -2
  603. package/dist-lib/types/ds/forms/DatePicker.d.ts.map +1 -1
  604. package/dist-lib/types/ds/forms/DatePicker.test.d.ts +2 -0
  605. package/dist-lib/types/ds/forms/DatePicker.test.d.ts.map +1 -0
  606. package/dist-lib/types/ds/forms/FieldSetShell.d.ts +6 -1
  607. package/dist-lib/types/ds/forms/FieldSetShell.d.ts.map +1 -1
  608. package/dist-lib/types/ds/forms/FieldSetShell.test.d.ts +2 -0
  609. package/dist-lib/types/ds/forms/FieldSetShell.test.d.ts.map +1 -0
  610. package/dist-lib/types/ds/forms/FieldShell.d.ts +6 -2
  611. package/dist-lib/types/ds/forms/FieldShell.d.ts.map +1 -1
  612. package/dist-lib/types/ds/forms/FieldShell.test.d.ts +2 -0
  613. package/dist-lib/types/ds/forms/FieldShell.test.d.ts.map +1 -0
  614. package/dist-lib/types/ds/forms/Form.test.d.ts +2 -0
  615. package/dist-lib/types/ds/forms/Form.test.d.ts.map +1 -0
  616. package/dist-lib/types/ds/forms/FormError.test.d.ts +2 -0
  617. package/dist-lib/types/ds/forms/FormError.test.d.ts.map +1 -0
  618. package/dist-lib/types/ds/forms/FormSuccess.test.d.ts +2 -0
  619. package/dist-lib/types/ds/forms/FormSuccess.test.d.ts.map +1 -0
  620. package/dist-lib/types/ds/forms/FormWarning.test.d.ts +2 -0
  621. package/dist-lib/types/ds/forms/FormWarning.test.d.ts.map +1 -0
  622. package/dist-lib/types/ds/forms/Input.d.ts +6 -2
  623. package/dist-lib/types/ds/forms/Input.d.ts.map +1 -1
  624. package/dist-lib/types/ds/forms/Input.test.d.ts +2 -0
  625. package/dist-lib/types/ds/forms/Input.test.d.ts.map +1 -0
  626. package/dist-lib/types/ds/forms/InputNumber.d.ts +6 -1
  627. package/dist-lib/types/ds/forms/InputNumber.d.ts.map +1 -1
  628. package/dist-lib/types/ds/forms/InputNumber.test.d.ts +2 -0
  629. package/dist-lib/types/ds/forms/InputNumber.test.d.ts.map +1 -0
  630. package/dist-lib/types/ds/forms/Mentions.d.ts +11 -0
  631. package/dist-lib/types/ds/forms/Mentions.d.ts.map +1 -0
  632. package/dist-lib/types/ds/forms/Mentions.test.d.ts +2 -0
  633. package/dist-lib/types/ds/forms/Mentions.test.d.ts.map +1 -0
  634. package/dist-lib/types/ds/forms/PasswordInput.d.ts +13 -0
  635. package/dist-lib/types/ds/forms/PasswordInput.d.ts.map +1 -0
  636. package/dist-lib/types/ds/forms/PasswordInput.test.d.ts +2 -0
  637. package/dist-lib/types/ds/forms/PasswordInput.test.d.ts.map +1 -0
  638. package/dist-lib/types/ds/forms/Radio.d.ts +10 -0
  639. package/dist-lib/types/ds/forms/Radio.d.ts.map +1 -0
  640. package/dist-lib/types/ds/forms/Radio.test.d.ts +2 -0
  641. package/dist-lib/types/ds/forms/Radio.test.d.ts.map +1 -0
  642. package/dist-lib/types/ds/forms/RadioGroup.d.ts +11 -0
  643. package/dist-lib/types/ds/forms/RadioGroup.d.ts.map +1 -0
  644. package/dist-lib/types/ds/forms/RadioGroup.test.d.ts +2 -0
  645. package/dist-lib/types/ds/forms/RadioGroup.test.d.ts.map +1 -0
  646. package/dist-lib/types/ds/forms/Rate.d.ts +10 -0
  647. package/dist-lib/types/ds/forms/Rate.d.ts.map +1 -0
  648. package/dist-lib/types/ds/forms/Rate.test.d.ts +2 -0
  649. package/dist-lib/types/ds/forms/Rate.test.d.ts.map +1 -0
  650. package/dist-lib/types/ds/forms/Select.d.ts +6 -1
  651. package/dist-lib/types/ds/forms/Select.d.ts.map +1 -1
  652. package/dist-lib/types/ds/forms/Select.test.d.ts +2 -0
  653. package/dist-lib/types/ds/forms/Select.test.d.ts.map +1 -0
  654. package/dist-lib/types/ds/forms/Slider.d.ts +11 -0
  655. package/dist-lib/types/ds/forms/Slider.d.ts.map +1 -0
  656. package/dist-lib/types/ds/forms/Slider.test.d.ts +2 -0
  657. package/dist-lib/types/ds/forms/Slider.test.d.ts.map +1 -0
  658. package/dist-lib/types/ds/forms/Switch.d.ts +5 -1
  659. package/dist-lib/types/ds/forms/Switch.d.ts.map +1 -1
  660. package/dist-lib/types/ds/forms/Switch.test.d.ts +2 -0
  661. package/dist-lib/types/ds/forms/Switch.test.d.ts.map +1 -0
  662. package/dist-lib/types/ds/forms/TimePicker.d.ts +4 -1
  663. package/dist-lib/types/ds/forms/TimePicker.d.ts.map +1 -1
  664. package/dist-lib/types/ds/forms/TimePicker.test.d.ts +2 -0
  665. package/dist-lib/types/ds/forms/TimePicker.test.d.ts.map +1 -0
  666. package/dist-lib/types/ds/forms/Transfer.test.d.ts +2 -0
  667. package/dist-lib/types/ds/forms/Transfer.test.d.ts.map +1 -0
  668. package/dist-lib/types/ds/forms/TreeSelect.d.ts +11 -0
  669. package/dist-lib/types/ds/forms/TreeSelect.d.ts.map +1 -0
  670. package/dist-lib/types/ds/forms/TreeSelect.test.d.ts +2 -0
  671. package/dist-lib/types/ds/forms/TreeSelect.test.d.ts.map +1 -0
  672. package/dist-lib/types/ds/forms/Upload.test.d.ts +2 -0
  673. package/dist-lib/types/ds/forms/Upload.test.d.ts.map +1 -0
  674. package/dist-lib/types/ds/forms/fieldProps.d.ts +17 -0
  675. package/dist-lib/types/ds/forms/fieldProps.d.ts.map +1 -0
  676. package/dist-lib/types/ds/forms/index.d.ts +9 -0
  677. package/dist-lib/types/ds/forms/index.d.ts.map +1 -1
  678. package/dist-lib/types/ds/navigation/Anchor.test.d.ts +2 -0
  679. package/dist-lib/types/ds/navigation/Anchor.test.d.ts.map +1 -0
  680. package/dist-lib/types/ds/navigation/Breadcrumb.test.d.ts +2 -0
  681. package/dist-lib/types/ds/navigation/Breadcrumb.test.d.ts.map +1 -0
  682. package/dist-lib/types/ds/navigation/Dropdown.test.d.ts +2 -0
  683. package/dist-lib/types/ds/navigation/Dropdown.test.d.ts.map +1 -0
  684. package/dist-lib/types/ds/navigation/Menu.d.ts +13 -0
  685. package/dist-lib/types/ds/navigation/Menu.d.ts.map +1 -0
  686. package/dist-lib/types/ds/navigation/Menu.test.d.ts +2 -0
  687. package/dist-lib/types/ds/navigation/Menu.test.d.ts.map +1 -0
  688. package/dist-lib/types/ds/navigation/Pagination.test.d.ts +2 -0
  689. package/dist-lib/types/ds/navigation/Pagination.test.d.ts.map +1 -0
  690. package/dist-lib/types/ds/navigation/Steps.test.d.ts +2 -0
  691. package/dist-lib/types/ds/navigation/Steps.test.d.ts.map +1 -0
  692. package/dist-lib/types/ds/navigation/Tabs.test.d.ts +2 -0
  693. package/dist-lib/types/ds/navigation/Tabs.test.d.ts.map +1 -0
  694. package/dist-lib/types/ds/navigation/index.d.ts +1 -0
  695. package/dist-lib/types/ds/navigation/index.d.ts.map +1 -1
  696. package/dist-lib/types/test/contracts/componentContracts.d.ts +3 -0
  697. package/dist-lib/types/test/contracts/componentContracts.d.ts.map +1 -0
  698. package/dist-lib/types/test/contracts/formControlContracts.d.ts +5 -0
  699. package/dist-lib/types/test/contracts/formControlContracts.d.ts.map +1 -0
  700. package/dist-lib/types/test/renderWithProviders.d.ts +3 -0
  701. package/dist-lib/types/test/renderWithProviders.d.ts.map +1 -0
  702. package/dist-lib/types/theme/ontadaTheme.d.ts +694 -0
  703. package/dist-lib/types/theme/ontadaTheme.d.ts.map +1 -1
  704. package/dist-lib/types/utils/useCustomIcon.d.ts.map +1 -1
  705. package/dist-lib/useCustomIcon-B-VUK-84.js +541 -0
  706. package/dist-lib/useCustomIcon-B-VUK-84.js.map +1 -0
  707. package/dist-lib/useCustomIcon-DbSB56Pd.cjs +1364 -0
  708. package/dist-lib/useCustomIcon-DbSB56Pd.cjs.map +1 -0
  709. package/package.json +94 -10
  710. package/dist-lib/index.cjs.map +0 -1
  711. package/dist-lib/index.js.map +0 -1
  712. package/dist-lib/ontadaTheme-DEEJ31G9.cjs +0 -2
  713. package/dist-lib/ontadaTheme-DEEJ31G9.cjs.map +0 -1
  714. package/dist-lib/ontadaTheme-DoyP_6uO.js +0 -1022
  715. package/dist-lib/ontadaTheme-DoyP_6uO.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../src/ds/forms/Button.tsx","../src/ds/forms/Form.tsx","../src/utils/iconMapping.ts","../src/utils/useCustomIcon.tsx","../src/ds/forms/selectStyles.ts","../src/ds/forms/Select.tsx","../src/ds/forms/datePickerStyles.ts","../src/ds/forms/DatePicker.tsx","../src/ds/forms/timePickerStyles.ts","../src/ds/forms/TimePicker.tsx","../src/ds/forms/Input.tsx","../src/ds/forms/inputNumberStyles.ts","../src/ds/forms/InputNumber.tsx","../src/ds/forms/Checkbox.tsx","../src/ds/forms/Switch.tsx","../src/ds/forms/clearUtils.ts","../src/ds/forms/FieldShell.tsx","../src/ds/forms/FieldSetShell.tsx","../src/ds/forms/AccessiblePasswordInput.tsx","../src/ds/forms/AccessibleCheckboxGroup.tsx","../src/ds/forms/AccessibleRadioGroup.tsx","../src/ds/forms/AccessibleSwitch.tsx","../src/ds/forms/AccessibleSelect.tsx","../src/ds/forms/AccessibleDatePicker.tsx","../src/ds/forms/FormError.tsx","../src/ds/forms/FormSuccess.tsx","../src/ds/forms/FormWarning.tsx","../src/ds/forms/validation.ts","../src/ds/forms/ClearableInput.tsx","../src/ds/forms/ClearableSelect.tsx","../src/ds/forms/ClearableDatePicker.tsx","../src/ds/forms/ClearableInputNumber.tsx","../src/ds/forms/ClearableTimePicker.tsx","../src/ds/forms/ClearableTreeSelect.tsx","../src/ds/forms/Cascader.tsx","../src/ds/forms/ClearableCascader.tsx","../src/ds/forms/autoCompleteStyles.ts","../src/ds/forms/AutoComplete.tsx","../src/ds/forms/ClearableAutoComplete.tsx","../src/ds/forms/ClearableMentions.tsx","../src/ds/forms/ClearableCheckbox.tsx","../src/ds/forms/ClearableRadio.tsx","../src/ds/forms/ClearableRadioGroup.tsx","../src/ds/forms/ClearableSwitch.tsx","../src/ds/forms/ClearableSlider.tsx","../src/ds/forms/ClearableRate.tsx","../src/ds/forms/ClearableColorPicker.tsx","../src/ds/forms/ClearableTransfer.tsx","../src/ds/forms/ClearableUpload.tsx","../src/ds/navigation/Breadcrumb.tsx","../src/ds/navigation/Anchor.tsx","../src/ds/display/Tooltip.tsx","../src/ds/navigation/Pagination.tsx","../src/ds/navigation/stepsStyles.ts","../src/ds/navigation/Steps.tsx","../src/ds/navigation/Tabs.tsx","../src/ds/navigation/dropdownStyles.ts","../src/ds/navigation/Dropdown.tsx","../src/ds/display/Badge.tsx","../src/ds/display/Empty.tsx","../src/ds/display/Tag.tsx","../src/ds/display/Table.tsx","../src/ds/display/Popover.tsx","../src/ds/display/Collapse.tsx","../src/ds/display/Segmented.tsx","../src/ds/feedback/Modal.tsx","../src/ds/feedback/feedbackIcons.tsx","../src/ds/feedback/Message.tsx","../src/ds/feedback/Notification.tsx","../src/ds/feedback/Popconfirm.tsx","../src/ds/feedback/Spin.tsx","../src/ds/feedback/FloatButton.tsx","../src/ds/feedback/Drawer.tsx"],"sourcesContent":["import { Button as AntButton } from 'antd';\nimport type { ButtonProps as AntButtonProps } from 'antd';\nimport { ConfigProvider } from 'antd';\nimport type { CSSProperties } from 'react';\nimport { useEffect } from 'react';\nimport { dsSemanticTokens } from '../../theme/ontadaTheme';\n\ntype DSButtonVariant = 'primary' | 'secondary' | 'tertiary' | 'tertiary-alt';\n\ntype RestrictedAntVisualProps = 'type' | 'variant' | 'color' | 'danger' | 'ghost';\n\nexport type ButtonProps = Omit<AntButtonProps, RestrictedAntVisualProps> & {\n /** Design system button variant matching Figma design */\n dsVariant?: DSButtonVariant;\n};\n\n// Unique ID for this component's style tag\nconst STYLE_ID = 'ds-button-styles';\n\n/**\n * DS Button wrapper that applies design system styling on top of Ant Design's Button.\n * Provides consistent visual appearance aligned with Figma design specifications.\n *\n * Variants:\n * - primary: Solid filled button (default)\n * - secondary: Outlined button\n * - tertiary: Text button\n * - tertiary-alt: Alternative text button\n *\n * @example\n * <Button>Primary</Button>\n * <Button dsVariant=\"secondary\">Secondary</Button>\n * <Button dsVariant=\"tertiary\">Tertiary</Button>\n * <Button disabled>Disabled</Button>\n */\nexport const Button = ({\n dsVariant = 'primary',\n disabled = false,\n style: userStyle = {},\n className: userClassName = '',\n ...props\n}: ButtonProps) => {\n // Ensure global styles are injected once\n useEffect(() => {\n if (typeof document !== 'undefined' && !document.getElementById(STYLE_ID)) {\n const style = document.createElement('style');\n style.id = STYLE_ID;\n const { button } = dsSemanticTokens;\n style.textContent = `\n :root {\n --ds-btn-primary: ${button.primary.default};\n --ds-btn-primary-hover: ${button.primary.hover};\n --ds-btn-primary-pressed: ${button.primary.pressed};\n --ds-btn-primary-text: ${button.primary.text};\n --ds-btn-primary-disabled-text: ${button.primary.disabledText};\n --ds-btn-primary-disabled-bg: ${button.primary.disabledBg};\n\n --ds-btn-secondary-text: ${button.secondary.defaultText};\n --ds-btn-secondary-border: ${button.secondary.defaultBorder};\n --ds-btn-secondary-bg: ${button.secondary.defaultBg};\n --ds-btn-secondary-hover-text: ${button.secondary.hoverText};\n --ds-btn-secondary-hover-border: ${button.secondary.hoverBorder};\n --ds-btn-secondary-hover-bg: ${button.secondary.hoverBg};\n --ds-btn-secondary-pressed-text: ${button.secondary.pressedText};\n --ds-btn-secondary-pressed-border: ${button.secondary.pressedBorder};\n --ds-btn-secondary-pressed-bg: ${button.secondary.pressedBg};\n --ds-btn-secondary-disabled-text: ${button.secondary.disabledText};\n --ds-btn-secondary-disabled-border: ${button.secondary.disabledBorder};\n --ds-btn-secondary-disabled-bg: ${button.secondary.disabledBg};\n\n --ds-btn-tertiary-text: ${button.tertiary.defaultText};\n --ds-btn-tertiary-hover-text: ${button.tertiary.hoverText};\n --ds-btn-tertiary-pressed-text: ${button.tertiary.pressedText};\n --ds-btn-tertiary-disabled-text: ${button.tertiary.disabledText};\n\n --ds-btn-tertiary-alt-text: ${button.tertiaryAlt.defaultText};\n --ds-btn-tertiary-alt-hover-text: ${button.tertiaryAlt.hoverText};\n --ds-btn-tertiary-alt-pressed-text: ${button.tertiaryAlt.pressedText};\n --ds-btn-tertiary-alt-disabled-text: ${button.tertiaryAlt.disabledText};\n\n --ds-btn-font-small-size: ${button.typography.small.fontSize};\n --ds-btn-font-small-line-height: ${button.typography.small.lineHeight};\n --ds-btn-font-small-letter-spacing: ${button.typography.small.letterSpacing};\n --ds-btn-font-middle-size: ${button.typography.middle.fontSize};\n --ds-btn-font-middle-line-height: ${button.typography.middle.lineHeight};\n --ds-btn-font-middle-letter-spacing: ${button.typography.middle.letterSpacing};\n --ds-btn-font-large-size: ${button.typography.large.fontSize};\n --ds-btn-font-large-line-height: ${button.typography.large.lineHeight};\n --ds-btn-font-large-letter-spacing: ${button.typography.large.letterSpacing};\n }\n\n [data-ds-variant].ant-btn {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n font-weight: ${button.typography.fontWeight};\n text-transform: ${button.typography.textTransform};\n transition: none !important;\n animation: none !important;\n box-shadow: none !important;\n }\n\n [data-ds-variant].ant-btn:hover,\n [data-ds-variant].ant-btn:active,\n [data-ds-variant].ant-btn:focus,\n [data-ds-variant].ant-btn:focus-visible,\n [data-ds-variant].ant-btn.ant-btn-active {\n box-shadow: none !important;\n transition: none !important;\n animation: none !important;\n }\n\n [data-ds-variant].ant-btn::before,\n [data-ds-variant].ant-btn::after {\n transition: none !important;\n animation: none !important;\n box-shadow: none !important;\n }\n\n [data-ds-variant].ant-btn.ant-wave::after,\n [data-ds-variant].ant-btn .ant-wave::after {\n animation: none !important;\n opacity: 0 !important;\n }\n\n [data-ds-variant].ant-btn .ant-btn-icon {\n width: 16px;\n height: 16px;\n min-width: 16px;\n min-height: 16px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n color: inherit;\n line-height: 1;\n flex: 0 0 16px;\n }\n\n [data-ds-variant].ant-btn .ant-btn-icon > .anticon,\n [data-ds-variant].ant-btn .ant-btn-icon > svg,\n [data-ds-variant].ant-btn .ant-btn-icon > span > svg {\n width: 16px !important;\n height: 16px !important;\n font-size: 16px !important;\n line-height: 1;\n display: block;\n color: inherit;\n }\n\n [data-ds-variant].ant-btn .ant-btn-icon svg [fill]:not([fill=\"none\"]),\n [data-ds-variant].ant-btn .ant-btn-icon svg path:not([fill=\"none\"]) {\n fill: currentColor !important;\n }\n\n [data-ds-variant].ant-btn .ant-btn-icon svg [stroke]:not([stroke=\"none\"]) {\n stroke: currentColor !important;\n }\n\n /* Optical centering for uppercase labels */\n [data-ds-variant].ant-btn > span:not(.ant-btn-icon) {\n display: inline-flex;\n align-items: center;\n transform: translateY(-0.5px);\n }\n\n [data-ds-variant].ant-btn.ant-btn-sm {\n font-size: var(--ds-btn-font-small-size);\n line-height: var(--ds-btn-font-small-line-height);\n letter-spacing: var(--ds-btn-font-small-letter-spacing);\n }\n\n [data-ds-variant].ant-btn.ant-btn-lg {\n font-size: var(--ds-btn-font-large-size);\n line-height: var(--ds-btn-font-large-line-height);\n letter-spacing: var(--ds-btn-font-large-letter-spacing);\n }\n\n [data-ds-variant].ant-btn:not(.ant-btn-sm):not(.ant-btn-lg) {\n font-size: var(--ds-btn-font-middle-size);\n line-height: var(--ds-btn-font-middle-line-height);\n letter-spacing: var(--ds-btn-font-middle-letter-spacing);\n }\n\n /* Primary variant states */\n [data-ds-variant=\"primary\"].ant-btn,\n [data-ds-variant=\"primary\"].ant-btn.ant-btn-primary {\n background-color: var(--ds-btn-primary) !important;\n border-color: var(--ds-btn-primary) !important;\n color: var(--ds-btn-primary-text) !important;\n }\n\n [data-ds-variant=\"primary\"].ant-btn:hover,\n [data-ds-variant=\"primary\"].ant-btn.ant-btn-primary:hover {\n background-color: var(--ds-btn-primary-hover) !important;\n border-color: var(--ds-btn-primary-hover) !important;\n color: var(--ds-btn-primary-text) !important;\n }\n\n [data-ds-variant=\"primary\"].ant-btn:active,\n [data-ds-variant=\"primary\"].ant-btn.ant-btn-primary:active,\n [data-ds-variant=\"primary\"].ant-btn.ant-btn-primary.ant-btn-active {\n background-color: var(--ds-btn-primary-pressed) !important;\n border-color: var(--ds-btn-primary-pressed) !important;\n color: var(--ds-btn-primary-text) !important;\n }\n\n [data-ds-variant=\"primary\"].ant-btn:disabled,\n [data-ds-variant=\"primary\"].ant-btn.ant-btn-disabled {\n background-color: var(--ds-btn-primary-disabled-bg) !important;\n border-color: var(--ds-btn-primary-disabled-bg) !important;\n color: var(--ds-btn-primary-disabled-text) !important;\n }\n\n /* Secondary variant states */\n [data-ds-variant=\"secondary\"].ant-btn {\n border-color: var(--ds-btn-secondary-border) !important;\n color: var(--ds-btn-secondary-text) !important;\n background-color: var(--ds-btn-secondary-bg) !important;\n }\n \n [data-ds-variant=\"secondary\"].ant-btn:hover {\n border-color: var(--ds-btn-secondary-hover-border) !important;\n color: var(--ds-btn-secondary-hover-text) !important;\n background-color: var(--ds-btn-secondary-hover-bg) !important;\n }\n\n [data-ds-variant=\"secondary\"].ant-btn:active,\n [data-ds-variant=\"secondary\"].ant-btn.ant-btn-active {\n border-color: var(--ds-btn-secondary-pressed-border) !important;\n color: var(--ds-btn-secondary-pressed-text) !important;\n background-color: var(--ds-btn-secondary-pressed-bg) !important;\n }\n \n [data-ds-variant=\"secondary\"].ant-btn:disabled,\n [data-ds-variant=\"secondary\"].ant-btn.ant-btn-disabled {\n border-color: var(--ds-btn-secondary-disabled-border) !important;\n border-width: 2px !important;\n border-style: solid !important;\n color: var(--ds-btn-secondary-disabled-text) !important;\n background-color: var(--ds-btn-secondary-disabled-bg) !important;\n }\n \n /* Tertiary variant states */\n [data-ds-variant=\"tertiary\"].ant-btn {\n color: var(--ds-btn-tertiary-text) !important;\n border: none !important;\n background-color: transparent !important;\n }\n \n [data-ds-variant=\"tertiary\"].ant-btn:hover {\n color: var(--ds-btn-tertiary-hover-text) !important;\n background-color: transparent !important;\n }\n\n [data-ds-variant=\"tertiary\"].ant-btn:active,\n [data-ds-variant=\"tertiary\"].ant-btn.ant-btn-active {\n color: var(--ds-btn-tertiary-pressed-text) !important;\n background-color: transparent !important;\n }\n \n [data-ds-variant=\"tertiary\"].ant-btn:disabled,\n [data-ds-variant=\"tertiary\"].ant-btn.ant-btn-disabled {\n color: var(--ds-btn-tertiary-disabled-text) !important;\n background-color: transparent !important;\n }\n\n /* Tertiary-alt variant states */\n [data-ds-variant=\"tertiary-alt\"].ant-btn {\n color: var(--ds-btn-tertiary-alt-text) !important;\n border: none !important;\n background-color: transparent !important;\n }\n\n [data-ds-variant=\"tertiary-alt\"].ant-btn:hover {\n color: var(--ds-btn-tertiary-alt-hover-text) !important;\n background-color: transparent !important;\n }\n\n [data-ds-variant=\"tertiary-alt\"].ant-btn:active,\n [data-ds-variant=\"tertiary-alt\"].ant-btn.ant-btn-active {\n color: var(--ds-btn-tertiary-alt-pressed-text) !important;\n background-color: transparent !important;\n }\n\n [data-ds-variant=\"tertiary-alt\"].ant-btn:disabled,\n [data-ds-variant=\"tertiary-alt\"].ant-btn.ant-btn-disabled {\n color: var(--ds-btn-tertiary-alt-disabled-text) !important;\n background-color: transparent !important;\n }\n `;\n document.head.appendChild(style);\n }\n }, []);\n\n // Build inline styles based on variant\n const getStyles = (): CSSProperties => {\n const baseStyle: CSSProperties = {\n ...userStyle,\n boxShadow: 'none',\n transition: 'none',\n animation: 'none',\n WebkitTapHighlightColor: 'transparent',\n };\n\n return baseStyle;\n };\n\n // For secondary and tertiary, use different Ant Design types\n if (dsVariant === 'secondary') {\n return (\n <ConfigProvider wave={{ disabled: true }}>\n <AntButton\n type=\"default\"\n disabled={disabled}\n style={getStyles()}\n className={userClassName}\n data-ds-variant={dsVariant}\n {...props}\n />\n </ConfigProvider>\n );\n }\n\n if (dsVariant === 'tertiary' || dsVariant === 'tertiary-alt') {\n return (\n <ConfigProvider wave={{ disabled: true }}>\n <AntButton\n type=\"text\"\n disabled={disabled}\n style={getStyles()}\n className={userClassName}\n data-ds-variant={dsVariant}\n {...props}\n />\n </ConfigProvider>\n );\n }\n\n // Primary variant\n return (\n <ConfigProvider wave={{ disabled: true }}>\n <AntButton\n type=\"primary\"\n disabled={disabled}\n style={getStyles()}\n className={userClassName}\n data-ds-variant={dsVariant}\n {...props}\n />\n </ConfigProvider>\n );\n};\n\nButton.displayName = 'Button';\nButton.Group = AntButton.Group;\n","import { Form as AntForm } from 'antd';\nimport type { FormProps as AntFormProps } from 'antd';\nimport type { CSSProperties, ReactNode } from 'react';\nimport { useEffect } from 'react';\nimport { dsSemanticTokens } from '../../theme/ontadaTheme';\n\nexport type DSFormVariant = 'standard' | 'compact' | 'clinical' | 'review' | 'wizardSection';\nexport type DSFormRequiredMark = 'asterisk' | 'optional' | 'none';\n\nexport type FormProps<Values = any> = Omit<\n AntFormProps<Values>,\n 'layout' | 'requiredMark' | 'colon' | 'size' | 'variant'\n> & {\n /** DS form workflow variant. */\n dsVariant?: DSFormVariant;\n /** DS required marker treatment. */\n dsRequiredMark?: DSFormRequiredMark;\n /** Optional form-level validation summary shown before fields. */\n dsValidationSummary?: ReactNode;\n /** Optional section title for clinical, review, or wizard form sections. */\n dsSectionTitle?: ReactNode;\n /** Optional section description displayed below the section title. */\n dsSectionDescription?: ReactNode;\n /** Optional action slot aligned with the section title. */\n dsSectionActions?: ReactNode;\n};\n\ntype VariantDefaults = {\n layout: NonNullable<AntFormProps['layout']>;\n size: NonNullable<AntFormProps['size']>;\n requiredMark: AntFormProps['requiredMark'];\n colon: boolean;\n};\n\ntype DSFormComponent = (<Values = any>(props: FormProps<Values>) => ReactNode) & {\n Item: typeof AntForm.Item;\n List: typeof AntForm.List;\n ErrorList: typeof AntForm.ErrorList;\n Provider: typeof AntForm.Provider;\n useForm: typeof AntForm.useForm;\n useFormInstance: typeof AntForm.useFormInstance;\n useWatch: typeof AntForm.useWatch;\n};\n\nconst STYLE_ID = 'ds-form-styles';\n\nconst VARIANT_DEFAULTS: Record<DSFormVariant, VariantDefaults> = {\n standard: {\n layout: 'vertical',\n size: 'middle',\n requiredMark: true,\n colon: false,\n },\n compact: {\n layout: 'vertical',\n size: 'small',\n requiredMark: true,\n colon: false,\n },\n clinical: {\n layout: 'vertical',\n size: 'middle',\n requiredMark: true,\n colon: false,\n },\n review: {\n layout: 'horizontal',\n size: 'middle',\n requiredMark: false,\n colon: false,\n },\n wizardSection: {\n layout: 'vertical',\n size: 'middle',\n requiredMark: 'optional',\n colon: false,\n },\n};\n\nconst REQUIRED_MARK_MAP: Record<DSFormRequiredMark, AntFormProps['requiredMark']> = {\n asterisk: true,\n optional: 'optional',\n none: false,\n};\n\nfunction injectStyles() {\n if (typeof document === 'undefined') return;\n\n const { form } = dsSemanticTokens;\n\n let style = document.getElementById(STYLE_ID) as HTMLStyleElement | null;\n if (!style) {\n style = document.createElement('style');\n style.id = STYLE_ID;\n document.head.appendChild(style);\n }\n\n style.textContent = `\n .ds-form-shell {\n display: flex;\n flex-direction: column;\n gap: var(--ds-form-section-gap);\n padding: var(--ds-form-shell-padding);\n border-radius: ${form.border.radius};\n font-family: 'Nunito', sans-serif;\n }\n\n .ds-form-shell[data-ds-form-variant='clinical'] {\n background: ${form.surface.clinical};\n border: ${form.border.width} solid ${form.border.color};\n }\n\n .ds-form-shell[data-ds-form-variant='review'] {\n background: ${form.surface.review};\n border: ${form.border.width} solid ${form.border.color};\n }\n\n .ds-form-shell[data-ds-form-variant='wizardSection'] {\n background: ${form.surface.background};\n border: ${form.border.width} solid ${form.border.color};\n }\n\n .ds-form-heading {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: 16px;\n }\n\n .ds-form-heading-copy {\n display: flex;\n flex-direction: column;\n gap: 4px;\n min-width: 0;\n }\n\n .ds-form-section-title {\n color: ${form.text.sectionTitle};\n font-size: ${form.typography.sectionTitle.fontSize};\n font-weight: ${form.typography.sectionTitle.fontWeight};\n line-height: ${form.typography.sectionTitle.lineHeight};\n letter-spacing: 0;\n margin: 0;\n }\n\n .ds-form-section-description {\n color: ${form.text.description};\n font-size: ${form.typography.sectionDescription.fontSize};\n font-weight: ${form.typography.sectionDescription.fontWeight};\n line-height: ${form.typography.sectionDescription.lineHeight};\n letter-spacing: 0;\n margin: 0;\n }\n\n .ds-form-summary {\n display: flex;\n flex-direction: column;\n gap: 4px;\n padding: 12px 14px;\n background: ${form.surface.error};\n border: ${form.border.width} solid ${form.text.error};\n border-radius: ${form.border.radius};\n color: ${form.text.error};\n font-size: ${form.typography.help.fontSize};\n font-weight: ${form.typography.help.fontWeight};\n line-height: ${form.typography.help.lineHeight};\n }\n\n .ds-form.ant-form {\n margin: 0;\n color: ${form.text.label};\n font-family: 'Nunito', sans-serif;\n }\n\n .ds-form.ant-form input.ds-input.ant-input,\n .ds-form.ant-form .ds-input.ant-input-affix-wrapper,\n .ds-form.ant-form .ds-input.ant-input-search,\n .ds-form.ant-form .ds-input.ant-space-compact.ant-input-search,\n .ds-form.ant-form .ds-select.ant-select:not(.ant-select-multiple),\n .ds-form.ant-form .ds-input-number.ant-input-number,\n .ds-form.ant-form .ds-input-number.ant-input-number-affix-wrapper,\n .ds-form.ant-form .ds-date-picker.ant-picker,\n .ds-form.ant-form .ds-time-picker.ant-picker {\n height: var(--ds-form-control-height) !important;\n min-height: var(--ds-form-control-height) !important;\n border-radius: ${dsSemanticTokens.input.border.radius} !important;\n box-sizing: border-box !important;\n }\n\n .ds-form.ant-form input.ds-input.ant-input,\n .ds-form.ant-form .ds-input.ant-input-affix-wrapper {\n padding: var(--ds-form-control-padding-y) var(--ds-form-control-padding-x) !important;\n }\n\n .ds-form.ant-form .ds-select.ant-select:not(.ant-select-multiple),\n .ds-form.ant-form .ds-date-picker.ant-picker,\n .ds-form.ant-form .ds-time-picker.ant-picker {\n padding: 0 var(--ds-form-control-padding-x) !important;\n }\n\n .ds-form.ant-form .ds-select.ant-select:not(.ant-select-multiple) .ant-select-content,\n .ds-form.ant-form .ds-select.ant-select:not(.ant-select-multiple) .ant-select-selection-item,\n .ds-form.ant-form .ds-select.ant-select:not(.ant-select-multiple) .ant-select-selection-placeholder {\n height: 100% !important;\n min-height: 0 !important;\n }\n\n .ds-form.ant-form .ant-form-item {\n margin-bottom: var(--ds-form-item-gap);\n }\n\n .ds-form.ant-form .ant-form-item:last-child {\n margin-bottom: 0;\n }\n\n .ds-form.ant-form .ant-form-item-label {\n padding-bottom: 6px;\n }\n\n .ds-form.ant-form .ant-form-item-label > label {\n color: ${form.text.label};\n font-size: ${form.typography.label.fontSize};\n font-weight: ${form.typography.label.fontWeight};\n line-height: ${form.typography.label.lineHeight};\n letter-spacing: 0;\n height: auto;\n }\n\n .ds-form.ant-form .ant-form-item-label > label::after {\n display: none;\n }\n\n .ds-form.ant-form .ant-form-item-required::before,\n .ds-form.ant-form .ant-form-item-required-mark-optional::before {\n color: ${form.text.required} !important;\n font-family: 'Nunito', sans-serif;\n font-weight: 700;\n }\n\n .ds-form.ant-form .ant-form-item-optional {\n color: ${form.text.optional};\n font-size: 12px;\n font-weight: 600;\n line-height: 16px;\n margin-inline-start: 6px;\n }\n\n .ds-form.ant-form .ant-form-item-explain,\n .ds-form.ant-form .ant-form-item-extra {\n font-size: ${form.typography.help.fontSize};\n font-weight: ${form.typography.help.fontWeight};\n line-height: ${form.typography.help.lineHeight};\n letter-spacing: 0;\n margin-top: 4px;\n }\n\n .ds-form.ant-form .ant-form-item-explain-error {\n color: ${form.text.error};\n }\n\n .ds-form.ant-form .ant-form-item-explain-warning {\n color: ${form.text.warning};\n }\n\n .ds-form.ant-form .ant-form-item-has-success .ant-form-item-explain,\n .ds-form.ant-form .ant-form-item-has-success .ant-form-item-extra {\n color: ${form.text.success};\n }\n\n .ds-form.ant-form[data-ds-form-variant='compact'] .ant-form-item-label {\n padding-bottom: 4px;\n }\n\n .ds-form.ant-form[data-ds-form-variant='review'] .ant-form-item {\n padding: 10px 0;\n border-bottom: ${form.border.width} solid ${form.border.color};\n margin-bottom: 0 !important;\n }\n\n .ds-form.ant-form[data-ds-form-variant='review'] .ant-form-item:last-child {\n padding-bottom: 0;\n border-bottom: 0;\n margin-bottom: 0 !important;\n }\n\n .ds-form.ant-form[data-ds-form-variant='review'] .ant-form-item:first-child {\n padding-top: 0;\n }\n\n .ds-form.ant-form[data-ds-form-variant='review'] .ant-form-item-row {\n display: grid !important;\n grid-template-columns: minmax(140px, 180px) minmax(0, 1fr);\n column-gap: 16px;\n align-items: start;\n min-height: 22px;\n width: 100%;\n }\n\n .ds-form.ant-form[data-ds-form-variant='review'] .ant-form-item-label {\n flex: none !important;\n max-width: none !important;\n min-height: 22px;\n padding: 0 !important;\n text-align: left !important;\n white-space: normal;\n }\n\n .ds-form.ant-form[data-ds-form-variant='review'] .ant-form-item-control {\n flex: none !important;\n min-width: 0;\n min-height: 22px;\n }\n\n .ds-form.ant-form[data-ds-form-variant='review'] .ant-form-item-control-input {\n min-height: 22px;\n align-items: flex-start;\n }\n\n .ds-form.ant-form[data-ds-form-variant='review'] .ant-form-item-control-input-content {\n min-height: 22px;\n line-height: 22px;\n color: ${form.text.label};\n }\n\n .ds-form.ant-form[data-ds-form-variant='review'] .ant-form-item-label > label {\n display: inline-flex;\n min-height: 22px;\n align-items: flex-start;\n color: ${form.text.description};\n line-height: 22px;\n white-space: normal;\n }\n\n @media (max-width: 640px) {\n .ds-form.ant-form[data-ds-form-variant='review'] .ant-form-item-row {\n grid-template-columns: 1fr;\n row-gap: 2px;\n }\n }\n `;\n}\n\nfunction getVariantStyle(variant: DSFormVariant) {\n const { form } = dsSemanticTokens;\n const { input } = dsSemanticTokens;\n const spacing = form.spacing[variant];\n const controlSize = VARIANT_DEFAULTS[variant].size === 'small' ? 'small' : 'middle';\n const controlTokens = input.padding[controlSize];\n\n return {\n '--ds-form-item-gap': spacing.itemGap,\n '--ds-form-section-gap': spacing.sectionGap,\n '--ds-form-shell-padding': spacing.shellPadding,\n '--ds-form-control-height': input.height[controlSize],\n '--ds-form-control-padding-x': controlTokens.x,\n '--ds-form-control-padding-y': controlTokens.y,\n } as CSSProperties;\n}\n\nexport const FormBase = <Values = any,>({\n dsVariant = 'standard',\n dsRequiredMark,\n dsValidationSummary,\n dsSectionTitle,\n dsSectionDescription,\n dsSectionActions,\n className: userClassName = '',\n rootClassName: userRootClassName = '',\n style: userStyle = {},\n children,\n ...restProps\n}: FormProps<Values>) => {\n useEffect(() => {\n injectStyles();\n }, []);\n\n const defaults = VARIANT_DEFAULTS[dsVariant];\n const requiredMark = dsRequiredMark ? REQUIRED_MARK_MAP[dsRequiredMark] : defaults.requiredMark;\n const className = `ds-form${userClassName ? ` ${userClassName}` : ''}`;\n const rootClassName = `ds-form-root${userRootClassName ? ` ${userRootClassName}` : ''}`;\n const variantStyle = getVariantStyle(dsVariant);\n const hasSectionHeader = Boolean(dsSectionTitle || dsSectionDescription || dsSectionActions);\n\n const form = (\n <AntForm<Values>\n {...restProps}\n className={className}\n rootClassName={rootClassName}\n style={{ ...variantStyle, ...userStyle }}\n layout={defaults.layout}\n size={defaults.size}\n requiredMark={requiredMark}\n colon={defaults.colon}\n variant=\"outlined\"\n data-ds-form-variant={dsVariant}\n >\n {dsValidationSummary ? (\n <div className=\"ds-form-summary\" role=\"alert\" aria-live=\"polite\">\n {dsValidationSummary}\n </div>\n ) : null}\n {children}\n </AntForm>\n );\n\n if (!hasSectionHeader && (dsVariant === 'standard' || dsVariant === 'compact')) {\n return form;\n }\n\n return (\n <section\n className=\"ds-form-shell\"\n style={variantStyle}\n data-ds-form-variant={dsVariant}\n >\n {hasSectionHeader ? (\n <div className=\"ds-form-heading\">\n <div className=\"ds-form-heading-copy\">\n {dsSectionTitle ? <h3 className=\"ds-form-section-title\">{dsSectionTitle}</h3> : null}\n {dsSectionDescription ? (\n <p className=\"ds-form-section-description\">{dsSectionDescription}</p>\n ) : null}\n </div>\n {dsSectionActions ? <div>{dsSectionActions}</div> : null}\n </div>\n ) : null}\n {form}\n </section>\n );\n};\n\nFormBase.displayName = 'Form';\n\nexport const Form = Object.assign(FormBase, {\n Item: AntForm.Item,\n List: AntForm.List,\n ErrorList: AntForm.ErrorList,\n Provider: AntForm.Provider,\n useForm: AntForm.useForm,\n useFormInstance: AntForm.useFormInstance,\n useWatch: AntForm.useWatch,\n}) as DSFormComponent;\n","/**\n * Icon mapping for custom SVG icons\n * Maps user-friendly names to file paths in src/assets/icons/individual/\n */\n\nexport const CUSTOM_ICON_MAP: Record<string, string> = {\n // Callback & Messages\n callBackRequest: 'Call back request.svg',\n clipboard: 'Clipboard.svg',\n messages: 'Messages.svg',\n newMessage: 'New message.svg',\n\n // Navigation & Layout\n expandLeft: 'Expand 1.svg',\n externalCloseLeft: 'External Close-Left.svg',\n externalCloseRight: 'External Close-Right.svg',\n externalOpenLeft: 'External Open-Left.svg',\n externalOpenRight: 'External Open-Right.svg',\n filterAllDigital: 'Filter All-Digital.svg',\n filterDigital: 'Filter-Digital.svg',\n moreOptionHorizontal1: 'More Option - Horizontal 1.svg',\n moreOptionHorizontal2: 'More Option - Horizontal 2.svg',\n moreOptionVertical1: 'More Option - Vertical 1.svg',\n moreOptionVertical2: 'More Option - Vertical 2.svg',\n navigationMenuVertical: 'navigation-menu-vertical 1.svg',\n drawerOpen: 'drawer-open.svg',\n shrink: 'Shrink.svg',\n\n // Status & Progress\n inProgress: 'In Progress.svg',\n taskListUpload: 'Task-list-upload-1.svg',\n patientList: 'Patient List.svg',\n patient: 'Patient.svg',\n scheduling: 'Scheduling.svg',\n runningMan: 'Running man.svg',\n\n // Table Operations\n tableColumnReorderActive: 'Table Column Reorder - Active.svg',\n tableColumnReorderNormal: 'Table Column Reorder - Normal.svg',\n tableRowReorderActive: 'Table Row Reorder - Active.svg',\n tableRowReorderNormal: 'Table Row Reorder - Normal.svg',\n\n // Medical\n prescription: 'Prescription-Rx.svg',\n pushPin: 'Push Pin.svg',\n robot: 'Robot.svg',\n medicalFile: 'medical-file 1.svg',\n medicalFolder: 'medical-folder 1.svg',\n medicalInstrumentAmbulanceBed: 'medical-instrument-ambulance-bed 1.svg',\n medicalNotes: 'medical-notes 3.svg',\n hospitalShield: 'hospital-shield.svg',\n drugsBox: 'drugs-box 1.svg',\n\n // Common UI\n add: 'add 1.svg',\n addCircleAlternate: 'add-circle-alternate 1.svg',\n addCircleBold: 'add-circle-bold 1.svg',\n addCircle1: 'addCircle1.svg',\n alarmBell: 'alarm-bell-1 1.svg',\n alarmBellOff: 'alarm-bell-off 1.svg',\n alarmBellRing: 'alarm-bell-ring-1 1.svg',\n alarmBellTimer: 'alarm-bell-timer-1 1.svg',\n alertCircle: 'alert-circle 1.svg',\n alertTriangle: 'alert-triangle 2.svg',\n analyticsGraphBar: 'analytics-graph-bar 2.svg',\n\n // Arrows\n arrowButtonDown: 'arrow-button-down-2 2.svg',\n arrowButtonLeft1: 'arrow-button-left-1.svg',\n arrowButtonLeft2: 'arrow-button-left-2.svg',\n arrowButtonRight1: 'arrow-button-right-1 2.svg',\n arrowButtonRight2: 'arrow-button-right-2.svg',\n arrowButtonUp: 'arrow-button-up-2.svg',\n arrowDown1: 'arrow-down-1 1.svg',\n arrowDown: 'arrow-down.svg',\n arrowLeft1: 'arrow-left-1 3.svg',\n arrowLeft: 'arrow-left.svg',\n arrowRight1: 'arrow-right-1 2.svg',\n arrowRight: 'arrow-right.svg',\n arrowUp1: 'arrow-up-1 4.svg',\n arrowUp: 'arrow-up.svg',\n arrowThickCircleDown: 'arrow-thick-circle-down.svg',\n arrowThickCircleLeft: 'arrow-thick-circle-left.svg',\n arrowThickCircleRight: 'arrow-thick-circle-right.svg',\n arrowThickCircleUp: 'arrow-thick-circle-up.svg',\n arrowThickDown: 'arrow-thick-down-2.svg',\n arrowThickUp: 'arrow-thick-up-2.svg',\n\n // Files & Documents\n attachment: 'attachment.svg',\n bin: 'bin 1.svg',\n bookFlipPage: 'book-flip-page.svg',\n bookmarks: 'bookmarks-1 1.svg',\n bookmarksAlt: 'bookmarks-1 3.svg',\n commonFileText: 'common-file-text 2.svg',\n commonFileTextSearch: 'common-file-text-search.svg',\n commonFileUpload: 'common-file-upload.svg',\n officeFileSheet: 'office-file-sheet.svg',\n officeFileXls1: 'office-file-xls-1.svg',\n officeFileXls: 'office-file-xls.svg',\n requestFormIcon: 'request-form-icon.svg',\n\n // Media & Window\n appWindow: 'app-window-1 1.svg',\n appWindowMultiple: 'app-window-multiple 1.svg',\n archiveBooks: 'archive-books 1.svg',\n buttonPlayAlternate: 'button-play-alternate 1.svg',\n buttonRefreshArrow: 'button-refresh-arrow 1.svg',\n buttonRefreshArrows: 'button-refresh-arrows 2.svg',\n buttonStopAlternate: 'button-stop-alternate 1.svg',\n buttonSyncing: 'button-syncing.svg',\n answerMachinePaper: 'answer-machine-paper 1.svg',\n\n // Time & Calendar\n calendar: 'calendar-3 2.svg',\n timeClock: 'time-clock-circle.svg',\n phoneActionsClock: 'phone-actions-clock-1.svg',\n\n // Check & Close\n check1: 'check-1 1.svg',\n check2: 'check-2 1.svg',\n checkCircle1: 'check-circle-1 1.svg',\n checkCircle1Alternate: 'check-circle-1-alternate 1.svg',\n close: 'close 1.svg',\n\n // Settings & Tools\n cog: 'cog.svg',\n wrench: 'wrench.svg',\n cursor: 'cursor.svg',\n singleNeutralActionsSetting: 'single-neutral-actions-setting.svg',\n singleNeutralActionsUpDown: 'single-neutral-actions-up-down.svg',\n\n // Data & Search\n dataTransferVertical: 'data-transfer-vertical 1.svg',\n database: 'database-2 1.svg',\n databaseAlternate: 'database-2-alternate 1.svg',\n searchAlternate: 'search-alternate.svg',\n searchNoResult: 'searchNoResult.svg',\n diagramSplitHorizontal: 'diagram-split-horizontal 2.svg',\n\n // Downloads & Uploads\n downloadBottom: 'download-bottom.svg',\n uploadTop: 'common-file-upload.svg',\n uploadBottom: 'upload-bottom.svg',\n\n // Money & Business\n currencyDollarCircle: 'currency-dollar-circle.svg',\n shoppingCartEmpty: 'shopping-cart-empty-1 1.svg',\n officeWorkWireless: 'office-work-wireless.svg',\n\n // Communication\n envelope: 'envelope 2.svg',\n emailActionWarning: 'email-action-warning 2.svg',\n phoneActionsRecord: 'phone-actions-record.svg',\n phoneActionsRemove: 'phone-actions-remove-1.svg',\n phoneActionsVoiceMail: 'phone-actions-voice-mail.svg',\n\n // Layout & View\n layoutColumn: 'layout-column 1.svg',\n layoutDashboard: 'layout-dashboard 1.svg',\n layoutHeadline: 'layout-headline 1.svg',\n layoutModule: 'layout-module 1.svg',\n layoutModule1: 'layout-module-1 1.svg',\n layoutRightOpen: 'layout-right 1 - Open.svg',\n layoutRightClose: 'layout-right 2 - Close.svg',\n listBullets: 'list-bullets 3.svg',\n picturStackLandscape: 'picture-stack-landscape.svg',\n tvFlatScreen: 'tv-flat-screen 1.svg',\n view1: 'view-1.svg',\n view2: 'view-2.svg',\n viewOff1: 'view-off-1.svg',\n viewOff2: 'view-off-2.svg',\n scrollVertical: 'scroll-vertical-1 1.svg',\n\n // Info & Help\n informationCircle: 'information-circle 2.svg',\n questionCircle: 'question-circle 2.svg',\n\n // Actions\n pencil: 'pencil-1 1.svg',\n pencilWrite: 'pencil-write-1-alternate 1.svg',\n moveToBottom: 'move-to-bottom 1.svg',\n multipleActionsUpDown: 'multiple-actions-up-down 1.svg',\n multipleNeutral: 'multiple-neutral-1 3.svg',\n singleNeutralCircle: 'single-neutral-circle 1.svg',\n printText: 'print-text 1.svg',\n ratingStarStar: 'rating-star 1.svg',\n removeCircleAlternate: 'remove-circle-alternate 1.svg',\n removeCircleBold: 'remove-circle-bold 2.svg',\n subtractCircleAlternate: 'subtract-circle-alternate.svg',\n subtractCircle1: 'subtractCircle1.svg',\n takingPicturesCircleAlternate: 'taking-pictures-circle-alternate.svg',\n taskChecklistCheck: 'task-checklist-check.svg',\n taskListMultiple: 'task-list-multiple.svg',\n taskListTextAlternate: 'task-list-text-alternate 1.svg',\n\n // Location & Navigation\n locationTarget: 'location-target.svg',\n hierarchy: 'hierarchy.svg',\n styleThreePinNavigation: 'style-three-pin-navigation-location-1.svg',\n styleThreePinHospital: 'style-three-pin-hospital 2.svg',\n\n // Security & Lock\n lock: 'lock-4.svg',\n logout: 'logout-1-alternate.svg',\n\n // Home & Places\n house: 'house-2 1.svg',\n houseAlternate: 'house-2-alternate 1.svg',\n folderEmpty: 'folder-empty-1-alternate.svg',\n\n // Other\n expand: 'expand-5 1.svg',\n expandHorizontal: 'expand-horizontal-left-right.svg',\n notesPaperText: 'notes-paper-text 1.svg',\n skull: 'skull-2.svg',\n filter: 'filter-2.svg',\n\n // Placeholder\n placeholder: '00_Placeholder.svg',\n\n // Dropdowns\n arrowCustomDropdownDown: 'Arrow - Custom Dropdown - Down.svg',\n arrowCustomDropdownUp: 'Arrow - Custom Dropdown - Up.svg',\n\n // Button States\n buttonLoading: 'Button Loading.svg',\n buttonPause: 'button-pause.svg',\n buttonPauseAlternate: 'button-pause-alternate.svg',\n\n // Additional Icons\n addAlt: 'add.svg',\n alertTriangleAlt: 'alert-triangle 2-alt.svg',\n appWindowExpand: 'app-window-expand-1.svg',\n cursorHandAlternate: 'cursor-hand-1-alternate.svg',\n expandFull: 'expand-full.svg',\n expandHorizontal4: 'expand-horizontal-4.svg',\n fileCopyrightUser: 'file-copyright-user.svg',\n floppyDisk: 'floppy-disk.svg',\n keyboardArrowReturn: 'keyboard-arrow-return.svg',\n lock1: 'lock-1.svg',\n navigationMenuHorizontal: 'navigation-menu-horizontal-1 1.svg',\n officeFilePdf: 'office-file-pdf-1.svg',\n passwordLock: 'password-lock.svg',\n presentationProjectorScreenClock: 'presentation-projector-screen-clock.svg',\n programmingCode: 'programming-code.svg',\n questionAlt: 'question - alt.svg',\n ratingStarOutline: 'rating-star-outline 1.svg',\n readEmailLaptop: 'read-email-laptop.svg',\n robotIcon: 'robot.svg',\n sorting: 'Sorting.svg',\n wench: 'wench.svg',\n zoomIn: 'zoom-in-1.svg',\n zoomOut: 'zoom-out-1.svg',\n bookmarksList: 'bookmarks List.svg',\n bookmarksAdd: 'bookmarks-Add.svg',\n bookmarksDelete: 'bookmarks-Delete.svg',\n diagramAllDirectionExpand: 'diagram-all-direction-expand.svg',\n commonFileTextQuestion: 'common-file-text-question.svg',\n commonFileTextWarning: 'common-file-text-warning.svg',\n downloadButtonAlternate: 'download-button-alternate.svg',\n expand1: 'expand-1.svg',\n};\n\n/**\n * Get the file path for a custom icon\n */\nexport const getCustomIconPath = (iconName: string): string => {\n return `/src/assets/icons/individual/${CUSTOM_ICON_MAP[iconName] || ''}`;\n};\n\n/**\n * List of all available custom icon names\n */\nexport const CUSTOM_ICON_NAMES = Object.keys(CUSTOM_ICON_MAP);\n","/**\n * Custom Icon Hook\n * Provides unified access to custom SVG icons and Ant Design icons\n * Maps icon names to components with fallback support\n */\n\nimport React from 'react';\nimport {\n SmileOutlined,\n FrownOutlined,\n MehOutlined,\n CheckCircleOutlined,\n CloseCircleOutlined,\n ExclamationCircleOutlined,\n InfoCircleOutlined,\n QuestionCircleOutlined,\n SearchOutlined,\n FilterOutlined,\n DeleteOutlined,\n PlusOutlined,\n MinusOutlined,\n EditOutlined,\n CopyOutlined,\n DownloadOutlined,\n UploadOutlined,\n SaveOutlined,\n SettingOutlined,\n LockOutlined,\n UnlockOutlined,\n MenuOutlined,\n HomeOutlined,\n FileOutlined,\n FolderOutlined,\n SyncOutlined,\n ClockCircleOutlined,\n LoadingOutlined,\n CalendarOutlined,\n BellOutlined,\n MailOutlined,\n PhoneOutlined,\n LogoutOutlined,\n UserOutlined,\n TeamOutlined,\n ApiOutlined,\n DashboardOutlined,\n TableOutlined,\n BarChartOutlined,\n LineChartOutlined,\n PieChartOutlined,\n CloudOutlined,\n DatabaseOutlined,\n ToolOutlined,\n BugOutlined,\n CheckOutlined,\n CloseOutlined,\n CreditCardOutlined,\n ShoppingCartOutlined,\n ShoppingOutlined,\n PrinterOutlined,\n ExportOutlined,\n ImportOutlined,\n LinkOutlined,\n EyeOutlined,\n EyeInvisibleOutlined,\n ZoomInOutlined,\n ZoomOutOutlined,\n AlignLeftOutlined,\n AlignCenterOutlined,\n AlignRightOutlined,\n BgColorsOutlined,\n FontColorsOutlined,\n} from '@ant-design/icons';\n\nimport { CUSTOM_ICON_MAP } from './iconMapping';\n\nconst CUSTOM_SVG_MODULES = import.meta.glob<string>('../assets/icons/individual/*.svg', {\n query: '?raw',\n import: 'default',\n eager: true,\n});\n\n// Ant Design icon mapping\nconst ANT_ICON_MAP: Record<string, React.ComponentType<any>> = {\n // Feedback\n smile: SmileOutlined,\n frown: FrownOutlined,\n meh: MehOutlined,\n checkCircle: CheckCircleOutlined,\n closeCircle: CloseCircleOutlined,\n exclamation: ExclamationCircleOutlined,\n exclamationCircle: ExclamationCircleOutlined,\n info: InfoCircleOutlined,\n infoCircle: InfoCircleOutlined,\n question: QuestionCircleOutlined,\n questionCircle: QuestionCircleOutlined,\n\n // Search & Filter\n search: SearchOutlined,\n filter: FilterOutlined,\n\n // CRUD Operations\n delete: DeleteOutlined,\n add: PlusOutlined,\n plus: PlusOutlined,\n minus: MinusOutlined,\n edit: EditOutlined,\n pencil: EditOutlined,\n copy: CopyOutlined,\n download: DownloadOutlined,\n upload: UploadOutlined,\n save: SaveOutlined,\n\n // Settings\n settings: SettingOutlined,\n setting: SettingOutlined,\n cog: SettingOutlined,\n tool: ToolOutlined,\n wrench: ToolOutlined,\n\n // Security\n lock: LockOutlined,\n unlock: UnlockOutlined,\n logout: LogoutOutlined,\n\n // Navigation\n menu: MenuOutlined,\n home: HomeOutlined,\n house: HomeOutlined,\n\n // Files & Folders\n file: FileOutlined,\n folder: FolderOutlined,\n\n // Status & Loading\n loading: LoadingOutlined,\n sync: SyncOutlined,\n clock: ClockCircleOutlined,\n check: CheckOutlined,\n close: CloseOutlined,\n x: CloseOutlined,\n\n // Time & Calendar\n calendar: CalendarOutlined,\n time: ClockCircleOutlined,\n\n // Communication\n bell: BellOutlined,\n mail: MailOutlined,\n email: MailOutlined,\n phone: PhoneOutlined,\n\n // Users\n user: UserOutlined,\n team: TeamOutlined,\n users: TeamOutlined,\n\n // Dashboard & Data\n dashboard: DashboardOutlined,\n table: TableOutlined,\n barChart: BarChartOutlined,\n lineChart: LineChartOutlined,\n pieChart: PieChartOutlined,\n api: ApiOutlined,\n\n // Infrastructure\n cloud: CloudOutlined,\n database: DatabaseOutlined,\n\n // Development\n bug: BugOutlined,\n\n // Finance\n creditCard: CreditCardOutlined,\n shoppingCart: ShoppingCartOutlined,\n shopping: ShoppingOutlined,\n\n // Document\n print: PrinterOutlined,\n export: ExportOutlined,\n import: ImportOutlined,\n\n // Links & Views\n link: LinkOutlined,\n eye: EyeOutlined,\n eyeOff: EyeInvisibleOutlined,\n eyeInvisible: EyeInvisibleOutlined,\n zoomIn: ZoomInOutlined,\n zoomOut: ZoomOutOutlined,\n\n // Text Formatting\n alignLeft: AlignLeftOutlined,\n alignCenter: AlignCenterOutlined,\n alignRight: AlignRightOutlined,\n bgColors: BgColorsOutlined,\n fontColors: FontColorsOutlined,\n};\n\n/**\n * Custom SVG Icon Component\n * Embeds SVG files so packaged consumers do not need to host source assets.\n */\nexport const CustomSvgIcon: React.FC<{\n fileName: string;\n size?: number;\n className?: string;\n style?: React.CSSProperties;\n}> = ({ fileName, size = 24, className, style }) => {\n const svgContent = CUSTOM_SVG_MODULES[`../assets/icons/individual/${fileName}`];\n\n if (!svgContent) {\n console.warn(`Custom SVG icon file \"${fileName}\" was not bundled`);\n return <span className={className}>⚠️</span>;\n }\n\n return (\n <span\n className={className}\n style={{\n width: size,\n height: size,\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n lineHeight: 0,\n ...style,\n }}\n dangerouslySetInnerHTML={{ __html: svgContent }}\n />\n );\n};\n\n/**\n * useCustomIcon Hook\n * Retrieves an icon by name, supporting both custom SVGs and Ant Design icons\n *\n * @param iconName - Name of the icon (e.g., 'smile', 'add', 'callBackRequest')\n * @param options - Optional configuration\n * @returns React component for the icon\n *\n * @example\n * // Using Ant Design icon\n * const icon = useCustomIcon('smile', { size: 24 });\n *\n * @example\n * // Using custom SVG\n * const icon = useCustomIcon('callBackRequest', { size: 32 });\n */\nexport const useCustomIcon = (\n iconName: string,\n options?: {\n size?: number;\n className?: string;\n style?: React.CSSProperties;\n }\n) => {\n const { size = 24, className, style } = options || {};\n\n // Check if it's an Ant Design icon\n const AntIcon = ANT_ICON_MAP[iconName];\n if (AntIcon) {\n return (\n <AntIcon\n style={{ fontSize: size, ...style }}\n className={className}\n />\n );\n }\n\n // Check if it's a custom SVG icon\n const customIconFile = CUSTOM_ICON_MAP[iconName];\n if (customIconFile) {\n return (\n <CustomSvgIcon\n fileName={customIconFile}\n size={size}\n className={className}\n style={style}\n />\n );\n }\n\n // Icon not found\n console.warn(`Icon \"${iconName}\" not found in custom or Ant Design icons`);\n return <span className={className}>❌</span>;\n};\n\n/**\n * Icon Component\n * Stateless wrapper for easy use in JSX\n *\n * @example\n * <Icon name=\"callBackRequest\" size={32} />\n * <Icon name=\"smile\" size={24} className=\"my-icon\" />\n */\nexport const Icon: React.FC<{\n name: string;\n size?: number;\n className?: string;\n style?: React.CSSProperties;\n}> = ({ name, size = 24, className, style }) => {\n return useCustomIcon(name, { size, className, style });\n};\n\n/**\n * Get list of all available icon names\n */\nexport const getAvailableIcons = () => {\n return {\n ant: Object.keys(ANT_ICON_MAP),\n custom: Object.keys(CUSTOM_ICON_MAP),\n };\n};\n\n/**\n * Check if an icon exists\n */\nexport const iconExists = (iconName: string): boolean => {\n return iconName in ANT_ICON_MAP || iconName in CUSTOM_ICON_MAP;\n};\n","import { dsSemanticTokens } from '../../theme/ontadaTheme';\nimport { CORE_COLORS } from '../../tokens/core';\n\nconst STYLE_ID = 'ds-select-styles';\n\nexport const DS_SELECT_CLASS = 'ds-select';\nexport const DS_SELECT_READONLY_CLASS = 'ds-select-readonly';\nexport const DS_SELECT_FORCE_HOVER_CLASS = 'ds-select-force-hover';\nexport const DS_SELECT_FORCE_FOCUS_CLASS = 'ds-select-force-focus';\nexport const DS_SELECT_DROPDOWN_CLASS = 'ds-select-dropdown';\nexport const DS_SELECT_DROPDOWN_CHECKBOX_CLASS = 'ds-select-dropdown-checkboxes';\nexport const DS_SELECT_DROPDOWN_MULTI_CLASS = 'ds-select-dropdown-multi';\n\nexport const mergeClassNames = (...classNames: Array<string | undefined>): string =>\n classNames.filter(Boolean).join(' ').trim();\n\nexport const ensureSelectStyles = () => {\n if (typeof document === 'undefined') {\n return;\n }\n\n const { input } = dsSemanticTokens;\n let style = document.getElementById(STYLE_ID) as HTMLStyleElement | null;\n if (!style) {\n style = document.createElement('style');\n style.id = STYLE_ID;\n document.head.appendChild(style);\n }\n\n style.textContent = `\n .${DS_SELECT_CLASS}.ant-select {\n border-color: ${input.border.default} !important;\n border-width: ${input.border.widthDefault} !important;\n border-style: solid !important;\n border-radius: ${input.border.radius} !important;\n background-color: ${input.background.default} !important;\n font-family: var(--ant-font-family, 'Nunito', sans-serif) !important;\n box-shadow: none !important;\n transition: none !important;\n display: inline-flex !important;\n align-items: center !important;\n box-sizing: border-box !important;\n overflow: hidden !important;\n }\n\n .${DS_SELECT_CLASS}.ant-select .ant-select-selector {\n width: 100% !important;\n height: 100% !important;\n min-height: 100% !important;\n padding: 0 !important;\n border: 0 !important;\n border-radius: ${input.border.radius} !important;\n background: transparent !important;\n box-shadow: none !important;\n display: flex !important;\n align-items: center !important;\n box-sizing: border-box !important;\n }\n\n .${DS_SELECT_CLASS}.ant-select.ant-select-outlined {\n border: ${input.border.widthDefault} solid ${input.border.default} !important;\n box-shadow: none !important;\n }\n\n .${DS_SELECT_CLASS}.ant-select .ant-select-content {\n display: flex !important;\n height: 100% !important;\n min-height: 0 !important;\n padding: 0 !important;\n font-family: var(--ant-font-family, 'Nunito', sans-serif) !important;\n font-size: 14px !important;\n line-height: 18px !important;\n align-items: center !important;\n }\n\n .${DS_SELECT_CLASS}.ant-select .ant-select-content.ant-select-content-has-value {\n display: flex !important;\n align-items: center !important;\n height: 100% !important;\n min-height: 0 !important;\n line-height: 18px !important;\n }\n\n .${DS_SELECT_CLASS}.ant-select.ant-select-multiple .ant-select-content {\n min-height: 32px !important;\n height: 32px !important;\n margin: 0 !important;\n align-items: center !important;\n display: flex !important;\n flex-wrap: nowrap !important;\n overflow: hidden !important;\n }\n\n .${DS_SELECT_CLASS}.ant-select.ant-select-multiple .ant-select-selection-item {\n display: inline-flex !important;\n align-items: center !important;\n min-height: 18px !important;\n height: auto !important;\n line-height: 18px !important;\n margin: 0 4px 0 0 !important;\n padding: 0 !important;\n box-sizing: border-box !important;\n }\n\n .${DS_SELECT_CLASS}.ant-select.ant-select-multiple .ant-select-selection-item-content {\n display: inline-flex !important;\n align-items: center !important;\n line-height: 18px !important;\n margin: 0 !important;\n }\n\n .${DS_SELECT_CLASS}.ant-select.ant-select-multiple .ant-select-selection-item-remove {\n display: inline-flex !important;\n align-items: center !important;\n height: 18px !important;\n margin: 0 !important;\n }\n\n .${DS_SELECT_CLASS}.ant-select .ant-select-content .ant-select-placeholder,\n .${DS_SELECT_CLASS}.ant-select .ant-select-placeholder {\n font-family: var(--ant-font-family, 'Nunito', sans-serif) !important;\n color: ${input.text.placeholder} !important;\n opacity: 1 !important;\n font-size: 14px !important;\n line-height: 18px !important;\n font-weight: 400 !important;\n }\n\n .${DS_SELECT_CLASS}.ant-select .ant-select-content .ant-select-selection-item,\n .${DS_SELECT_CLASS}.ant-select .ant-select-selection-item {\n font-family: var(--ant-font-family, 'Nunito', sans-serif) !important;\n color: ${input.text.focus} !important;\n font-size: 14px !important;\n line-height: 18px !important;\n font-weight: 400 !important;\n }\n\n .${DS_SELECT_CLASS}.ant-select .ant-select-selection-search-input,\n .${DS_SELECT_CLASS}.ant-select .ant-select-selection-search-input input {\n font-family: var(--ant-font-family, 'Nunito', sans-serif) !important;\n border: none !important;\n outline: none !important;\n box-shadow: none !important;\n background: transparent !important;\n }\n\n .${DS_SELECT_CLASS}.ant-select .ant-select-suffix,\n .${DS_SELECT_CLASS}.ant-select .ant-select-suffix .anticon {\n color: ${input.text.focus} !important;\n font-size: 10px !important;\n }\n\n .${DS_SELECT_CLASS}.ant-select .ant-select-suffix svg {\n width: 10px !important;\n height: 10px !important;\n display: block;\n }\n\n .${DS_SELECT_CLASS}.ant-select:not(.ant-select-disabled):hover,\n .${DS_SELECT_CLASS}.ant-select.ant-select-outlined:not(.ant-select-disabled):hover {\n border: ${input.border.widthDefault} solid ${input.border.hover} !important;\n box-shadow: none !important;\n }\n\n .${DS_SELECT_CLASS}.ant-select.${DS_SELECT_FORCE_HOVER_CLASS}:not(.ant-select-disabled):not(.${DS_SELECT_READONLY_CLASS}) {\n border: ${input.border.widthDefault} solid ${input.border.hover} !important;\n box-shadow: none !important;\n }\n\n .${DS_SELECT_CLASS}.ant-select.ant-select-focused,\n .${DS_SELECT_CLASS}.ant-select.ant-select-open {\n border-color: ${input.border.focus} !important;\n border-width: ${input.border.widthFocus} !important;\n border-style: solid !important;\n box-shadow: none !important;\n outline: none !important;\n }\n\n .${DS_SELECT_CLASS}.ant-select.ant-select-outlined.ant-select-focused,\n .${DS_SELECT_CLASS}.ant-select.ant-select-outlined.ant-select-open {\n border-color: ${input.border.focus} !important;\n border-width: ${input.border.widthFocus} !important;\n border-style: solid !important;\n box-shadow: none !important;\n outline: none !important;\n }\n\n .${DS_SELECT_CLASS}.ant-select.ant-select-outlined.ant-select-focused:hover,\n .${DS_SELECT_CLASS}.ant-select.ant-select-outlined.ant-select-open:hover,\n .${DS_SELECT_CLASS}.ant-select.ant-select-outlined.ant-select-focused:focus-within,\n .${DS_SELECT_CLASS}.ant-select.ant-select-outlined.ant-select-open:focus-within {\n border-color: ${input.border.focus} !important;\n border-width: ${input.border.widthFocus} !important;\n border-style: solid !important;\n box-shadow: none !important;\n }\n\n .${DS_SELECT_CLASS}.ant-select.${DS_SELECT_FORCE_FOCUS_CLASS}:not(.ant-select-disabled):not(.${DS_SELECT_READONLY_CLASS}) {\n border-color: ${input.border.focus} !important;\n border-width: ${input.border.widthFocus} !important;\n border-style: solid !important;\n box-shadow: none !important;\n outline: none !important;\n }\n\n .${DS_SELECT_CLASS}.ant-select .ant-select-selector,\n .${DS_SELECT_CLASS}.ant-select:focus-within,\n .${DS_SELECT_CLASS}.ant-select [role='combobox']:focus,\n .${DS_SELECT_CLASS}.ant-select [role='combobox']:focus-visible {\n outline: none !important;\n box-shadow: none !important;\n }\n\n .${DS_SELECT_CLASS}.ant-select [role='combobox'] {\n line-height: 18px !important;\n }\n\n .${DS_SELECT_CLASS}.ant-select.ant-select-open .ant-select-suffix .anticon,\n .${DS_SELECT_CLASS}.ant-select.ant-select-focused .ant-select-suffix .anticon {\n transform: none !important;\n color: ${input.text.focus} !important;\n }\n\n .${DS_SELECT_CLASS}.ant-select.ant-select-focused .ant-select-content .ant-select-placeholder,\n .${DS_SELECT_CLASS}.ant-select.ant-select-open .ant-select-content .ant-select-placeholder,\n .${DS_SELECT_CLASS}.ant-select.ant-select-focused .ant-select-content .ant-select-selection-item,\n .${DS_SELECT_CLASS}.ant-select.ant-select-open .ant-select-content .ant-select-selection-item {\n color: ${CORE_COLORS.text.strong} !important;\n font-weight: 600 !important;\n }\n\n .${DS_SELECT_CLASS}.ant-select.${DS_SELECT_FORCE_FOCUS_CLASS}:not(.ant-select-disabled):not(.${DS_SELECT_READONLY_CLASS}) .ant-select-content .ant-select-placeholder,\n .${DS_SELECT_CLASS}.ant-select.${DS_SELECT_FORCE_FOCUS_CLASS}:not(.ant-select-disabled):not(.${DS_SELECT_READONLY_CLASS}) .ant-select-content .ant-select-selection-item {\n color: ${CORE_COLORS.text.strong} !important;\n font-weight: 600 !important;\n }\n\n .${DS_SELECT_CLASS}.ant-select.ant-select-status-error {\n border-color: ${input.border.error} !important;\n box-shadow: none !important;\n }\n\n .${DS_SELECT_CLASS}.ant-select.ant-select-status-warning {\n border-color: ${CORE_COLORS.status.warning} !important;\n box-shadow: none !important;\n }\n\n .${DS_SELECT_CLASS}.ant-select.ant-select-status-success {\n border-color: ${input.border.success} !important;\n box-shadow: none !important;\n }\n\n .${DS_SELECT_CLASS}.ant-select.ant-select-disabled {\n background-color: ${input.background.disabled} !important;\n border-color: transparent !important;\n box-shadow: none !important;\n }\n\n .${DS_SELECT_CLASS}.ant-select.ant-select-disabled .ant-select-selection-item,\n .${DS_SELECT_CLASS}.ant-select.ant-select-disabled .ant-select-selection-placeholder,\n .${DS_SELECT_CLASS}.ant-select.ant-select-disabled .ant-select-arrow {\n color: ${input.text.disabled} !important;\n }\n\n .${DS_SELECT_CLASS}.ant-select.${DS_SELECT_READONLY_CLASS}:not(.ant-select-disabled) {\n background-color: ${input.background.readOnly} !important;\n border-color: ${input.border.default} !important;\n box-shadow: none !important;\n cursor: default !important;\n }\n\n .${DS_SELECT_CLASS}.ant-select.${DS_SELECT_READONLY_CLASS}:not(.ant-select-disabled) .ant-select-selector {\n background-color: ${input.background.readOnly} !important;\n background: ${input.background.readOnly} !important;\n box-shadow: none !important;\n }\n\n .${DS_SELECT_CLASS}.ant-select.${DS_SELECT_READONLY_CLASS}:not(.ant-select-disabled) .ant-select-selection-item,\n .${DS_SELECT_CLASS}.ant-select.${DS_SELECT_READONLY_CLASS}:not(.ant-select-disabled) .ant-select-selection-placeholder,\n .${DS_SELECT_CLASS}.ant-select.${DS_SELECT_READONLY_CLASS}:not(.ant-select-disabled) .ant-select-arrow {\n color: ${input.text.readOnly} !important;\n }\n\n .${DS_SELECT_CLASS}.ant-select.${DS_SELECT_READONLY_CLASS}:not(.ant-select-disabled):hover,\n .${DS_SELECT_CLASS}.ant-select.${DS_SELECT_READONLY_CLASS}:not(.ant-select-disabled).ant-select-focused,\n .${DS_SELECT_CLASS}.ant-select.${DS_SELECT_READONLY_CLASS}:not(.ant-select-disabled).ant-select-open {\n border-color: ${input.border.default} !important;\n box-shadow: none !important;\n }\n\n .${DS_SELECT_CLASS}.ant-select.ant-select-sm {\n min-height: ${input.height.small} !important;\n height: ${input.height.small} !important;\n padding: 0 ${input.padding.small.x} !important;\n border-radius: ${input.border.radius} !important;\n }\n\n .${DS_SELECT_CLASS}.ant-select.ant-select-sm .ant-select-content,\n .${DS_SELECT_CLASS}.ant-select.ant-select-sm .ant-select-selection-item,\n .${DS_SELECT_CLASS}.ant-select.ant-select-sm .ant-select-selection-placeholder {\n height: 100% !important;\n min-height: 0 !important;\n line-height: 18px !important;\n }\n\n .${DS_SELECT_CLASS}.ant-select {\n min-height: ${input.height.middle} !important;\n height: ${input.height.middle} !important;\n padding: 0 ${input.padding.middle.x} !important;\n border-radius: ${input.border.radius} !important;\n }\n\n .${DS_SELECT_CLASS}.ant-select .ant-select-content,\n .${DS_SELECT_CLASS}.ant-select .ant-select-selection-item,\n .${DS_SELECT_CLASS}.ant-select .ant-select-selection-placeholder {\n height: 100% !important;\n min-height: 0 !important;\n line-height: 18px !important;\n }\n\n .${DS_SELECT_CLASS}.ant-select.ant-select-lg {\n min-height: ${input.height.large} !important;\n height: ${input.height.large} !important;\n padding: 0 ${input.padding.large.x} !important;\n border-radius: ${input.border.radius} !important;\n }\n\n .${DS_SELECT_CLASS}.ant-select.ant-select-lg .ant-select-content,\n .${DS_SELECT_CLASS}.ant-select.ant-select-lg .ant-select-selection-item,\n .${DS_SELECT_CLASS}.ant-select.ant-select-lg .ant-select-selection-placeholder {\n height: 100% !important;\n min-height: 0 !important;\n line-height: 18px !important;\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.ant-select-dropdown {\n border: 1px solid ${CORE_COLORS.text.primary} !important;\n border-radius: 4px !important;\n background: ${CORE_COLORS.text.inverse} !important;\n --ant-select-option-active-bg: transparent;\n --ant-select-option-selected-bg: ${CORE_COLORS.accent.highlightSoft};\n box-shadow: 0 4px 4px color-mix(in srgb, ${CORE_COLORS.text.primary} 15%, transparent) !important;\n overflow: hidden !important;\n padding: 0 !important;\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.ant-select-dropdown .ant-select-item {\n border-bottom: 1px solid ${CORE_COLORS.text.disabled} !important;\n min-height: 34px !important;\n padding: 8px 16px !important;\n border-radius: 0 !important;\n color: ${CORE_COLORS.text.primary} !important;\n font-family: var(--ant-font-family, 'Nunito', sans-serif) !important;\n font-size: 14px !important;\n line-height: 18px !important;\n background: ${CORE_COLORS.text.inverse} !important;\n transition: none !important;\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.ant-select-dropdown .ant-select-item-option-content {\n color: inherit !important;\n font-size: inherit !important;\n line-height: inherit !important;\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.ant-select-dropdown .ant-select-item-option-active:not(.ant-select-item-option-selected),\n .${DS_SELECT_DROPDOWN_CLASS}.ant-select-dropdown .ant-select-item-option:not(.ant-select-item-option-selected):hover {\n background: ${CORE_COLORS.surface.canvas} !important;\n background-color: ${CORE_COLORS.surface.canvas} !important;\n background-image: none !important;\n color: ${CORE_COLORS.text.strong} !important;\n font-weight: 600 !important;\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.ant-select-dropdown .ant-select-item-option-active:not(.ant-select-item-option-selected) .ant-select-item-option-content,\n .${DS_SELECT_DROPDOWN_CLASS}.ant-select-dropdown .ant-select-item-option:not(.ant-select-item-option-selected):hover .ant-select-item-option-content {\n background: transparent !important;\n background-color: transparent !important;\n background-image: none !important;\n color: ${CORE_COLORS.text.strong} !important;\n font-weight: 600 !important;\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.ant-select-dropdown .ant-select-item-option-selected {\n background: ${CORE_COLORS.accent.highlightSoft} !important;\n background-color: ${CORE_COLORS.accent.highlightSoft} !important;\n background-image: none !important;\n color: ${CORE_COLORS.text.strong} !important;\n font-weight: 600 !important;\n position: relative;\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.ant-select-dropdown .ant-select-item-option-selected.ant-select-item-option-active {\n background: ${CORE_COLORS.accent.highlightSoft} !important;\n background-color: ${CORE_COLORS.accent.highlightSoft} !important;\n background-image: none !important;\n color: ${CORE_COLORS.text.strong} !important;\n font-weight: 600 !important;\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_MULTI_CLASS}.ant-select-dropdown:not(.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}) .ant-select-item-option-selected,\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_MULTI_CLASS}.ant-select-dropdown:not(.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}) .ant-select-item-option-selected.ant-select-item-option-active,\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_MULTI_CLASS}.ant-select-dropdown:not(.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}) .ant-select-item-option-selected:not(.ant-select-item-option-disabled),\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_MULTI_CLASS}.ant-select-dropdown:not(.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}) .ant-select-item-option-selected.ant-select-item-option-active:not(.ant-select-item-option-disabled) {\n background: ${CORE_COLORS.accent.highlightSoft} !important;\n background-color: ${CORE_COLORS.accent.highlightSoft} !important;\n background-image: none !important;\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.ant-select-dropdown:not(.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}) .ant-select-item-option-selected::before {\n content: '';\n position: absolute;\n left: 0;\n top: 0;\n bottom: 0;\n width: 4px;\n background: ${CORE_COLORS.accent.highlight};\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_MULTI_CLASS}.ant-select-dropdown .ant-select-item-option-state {\n display: none !important;\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.ant-select-dropdown .ant-empty {\n margin: 0 !important;\n padding: 12px 16px !important;\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.ant-select-dropdown .ds-select-all-row {\n display: flex !important;\n align-items: center !important;\n padding: 8px 16px !important;\n border-bottom: 1px solid ${CORE_COLORS.text.disabled} !important;\n background: ${CORE_COLORS.text.inverse} !important;\n min-height: 38px !important;\n box-sizing: border-box !important;\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.ant-select-dropdown .ds-select-all-row .ant-checkbox-wrapper {\n margin: 0 !important;\n display: inline-flex !important;\n align-items: center !important;\n gap: 8px !important;\n line-height: 18px !important;\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.ant-select-dropdown .ds-select-all-row .ant-checkbox {\n width: 18px !important;\n height: 18px !important;\n min-width: 18px !important;\n min-height: 18px !important;\n display: inline-flex !important;\n align-items: center !important;\n justify-content: center !important;\n border-radius: 2px !important;\n overflow: hidden !important;\n background: transparent !important;\n border: 0 !important;\n color: transparent !important;\n box-shadow: none !important;\n position: relative !important;\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.ant-select-dropdown .ds-select-all-row .ant-checkbox::before,\n .${DS_SELECT_DROPDOWN_CLASS}.ant-select-dropdown .ds-select-all-row .ant-checkbox::after {\n content: none !important;\n display: none !important;\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.ant-select-dropdown .ds-select-all-row .ant-checkbox-input {\n appearance: none !important;\n -webkit-appearance: none !important;\n width: 18px !important;\n height: 18px !important;\n min-width: 18px !important;\n min-height: 18px !important;\n margin: 0 !important;\n border: 1px solid ${CORE_COLORS.text.muted} !important;\n border-radius: 2px !important;\n background: ${CORE_COLORS.text.inverse} !important;\n cursor: pointer !important;\n position: relative !important;\n box-sizing: border-box !important;\n display: block !important;\n inset: 0 !important;\n z-index: 1 !important;\n opacity: 1 !important;\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.ant-select-dropdown .ds-select-all-row .ant-checkbox-input:checked,\n .${DS_SELECT_DROPDOWN_CLASS}.ant-select-dropdown .ds-select-all-row .ant-checkbox-input:indeterminate,\n .${DS_SELECT_DROPDOWN_CLASS}.ant-select-dropdown .ds-select-all-row .ant-checkbox-indeterminate .ant-checkbox-input {\n border-color: ${CORE_COLORS.brand.primary} !important;\n background: ${CORE_COLORS.brand.primary} !important;\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.ant-select-dropdown .ds-select-all-row .ant-checkbox-input:checked::after {\n content: '';\n position: absolute;\n width: 9px;\n height: 5px;\n left: 4px;\n top: 4px;\n border-left: 2px solid ${CORE_COLORS.text.inverse};\n border-bottom: 2px solid ${CORE_COLORS.text.inverse};\n transform: rotate(-45deg);\n box-sizing: border-box;\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.ant-select-dropdown .ds-select-all-row .ant-checkbox-input:indeterminate::after,\n .${DS_SELECT_DROPDOWN_CLASS}.ant-select-dropdown .ds-select-all-row .ant-checkbox-indeterminate .ant-checkbox-input::after {\n content: '';\n position: absolute;\n width: 8px;\n height: 2px;\n left: 4px;\n top: 8px;\n background: ${CORE_COLORS.text.inverse};\n border-radius: 1px;\n box-sizing: border-box;\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.ant-select-dropdown .ds-select-all-row .ant-checkbox.ant-checkbox-indeterminate {\n width: 18px !important;\n height: 18px !important;\n min-width: 18px !important;\n min-height: 18px !important;\n border: 0 !important;\n border-radius: 2px !important;\n background: transparent !important;\n background-color: transparent !important;\n color: transparent !important;\n opacity: 1 !important;\n filter: none !important;\n box-shadow: none !important;\n box-sizing: border-box !important;\n position: relative !important;\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.ant-select-dropdown .ds-select-all-row .ant-checkbox.ant-checkbox-indeterminate::after {\n content: none !important;\n display: none !important;\n position: absolute !important;\n width: 8px !important;\n height: 2px !important;\n left: 4px !important;\n top: 8px !important;\n background: ${CORE_COLORS.text.inverse} !important;\n border: 0 !important;\n border-radius: 1px !important;\n transform: none !important;\n box-sizing: border-box !important;\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.ant-select-dropdown .ds-select-all-row .ant-checkbox.ant-checkbox-indeterminate .ant-checkbox-input {\n opacity: 1 !important;\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown {\n background: ${CORE_COLORS.text.inverse} !important;\n --ant-select-option-active-bg: ${CORE_COLORS.surface.canvas};\n --ant-select-option-selected-bg: ${CORE_COLORS.accent.highlightSoft};\n border: 1px solid ${CORE_COLORS.text.primary} !important;\n border-radius: 4px !important;\n box-shadow: 0 4px 4px color-mix(in srgb, ${CORE_COLORS.text.primary} 15%, transparent) !important;\n padding: 0 !important;\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ds-select-all-row {\n padding: 16px 16px 7px !important;\n background: ${CORE_COLORS.text.inverse} !important;\n display: flex !important;\n flex-direction: column !important;\n align-items: stretch !important;\n min-height: 58px !important;\n margin: 0 !important;\n box-sizing: border-box !important;\n border-bottom: 0 !important;\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ds-select-all-row .ant-checkbox-wrapper {\n margin: 0 !important;\n color: ${CORE_COLORS.text.primary} !important;\n font-size: 14px !important;\n line-height: 18px !important;\n display: inline-flex !important;\n align-items: center !important;\n gap: 8px !important;\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ds-select-all-divider {\n height: 1px !important;\n margin: 16px 0 0 !important;\n background: ${CORE_COLORS.text.disabled} !important;\n width: 100% !important;\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ant-select-item {\n min-height: 34px !important;\n padding: 8px 16px !important;\n border-bottom: 1px solid ${CORE_COLORS.text.disabled} !important;\n background: ${CORE_COLORS.text.inverse} !important;\n color: ${CORE_COLORS.text.primary} !important;\n font-size: 14px !important;\n line-height: 18px !important;\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ant-select-item:last-child {\n border-bottom: 0 !important;\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ant-select-item-option-active:not(.ant-select-item-option-selected) {\n background: ${CORE_COLORS.surface.canvas} !important;\n background-color: ${CORE_COLORS.surface.canvas} !important;\n background-image: none !important;\n color: ${CORE_COLORS.text.strong} !important;\n font-weight: 600 !important;\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ant-select-item-option-active:not(.ant-select-item-option-selected) .ant-select-item-option-content {\n background: ${CORE_COLORS.surface.canvas} !important;\n background-color: ${CORE_COLORS.surface.canvas} !important;\n background-image: none !important;\n color: ${CORE_COLORS.text.strong} !important;\n font-weight: 600 !important;\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ant-select-item-option-active:not(.ant-select-item-option-selected) .ds-checkbox-option-content,\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ant-select-item-option-active:not(.ant-select-item-option-selected) .ant-checkbox-wrapper {\n color: ${CORE_COLORS.text.strong} !important;\n font-weight: 600 !important;\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ant-select-item-option-selected {\n background: ${CORE_COLORS.accent.highlightSoft} !important;\n background-color: ${CORE_COLORS.accent.highlightSoft} !important;\n background-image: none !important;\n color: ${CORE_COLORS.text.primary} !important;\n font-weight: 400 !important;\n position: relative;\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ant-select-item-option-selected.ant-select-item-option-active {\n --ant-select-option-active-bg: transparent;\n background: ${CORE_COLORS.accent.highlightSoft} !important;\n background-color: ${CORE_COLORS.accent.highlightSoft} !important;\n background-image: none !important;\n color: ${CORE_COLORS.text.primary} !important;\n font-weight: 400 !important;\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ant-select-item-option-selected .ant-select-item-option-content,\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ant-select-item-option-selected.ant-select-item-option-active .ant-select-item-option-content,\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ant-select-item-option-selected.ant-select-item-option-active .ds-checkbox-option-content,\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ant-select-item-option-selected.ant-select-item-option-active .ant-checkbox-wrapper {\n background: transparent !important;\n background-color: transparent !important;\n background-image: none !important;\n color: ${CORE_COLORS.text.primary} !important;\n font-weight: 400 !important;\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ant-select-item-option-selected::before,\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ant-select-item-option-selected::after,\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ant-select-item-option-selected.ant-select-item-option-active::before,\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ant-select-item-option-selected.ant-select-item-option-active::after {\n content: none !important;\n display: none !important;\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ds-checkbox-option-content,\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ds-checkbox-option-content {\n display: inline-flex !important;\n align-items: center !important;\n gap: 8px !important;\n color: ${CORE_COLORS.text.primary} !important;\n font-size: 14px !important;\n line-height: 18px !important;\n width: 100% !important;\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ant-checkbox .ant-checkbox-inner {\n display: none !important;\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ant-checkbox {\n width: 18px !important;\n height: 18px !important;\n min-width: 18px !important;\n min-height: 18px !important;\n display: inline-flex !important;\n align-items: center !important;\n justify-content: center !important;\n border-radius: 2px !important;\n overflow: hidden !important;\n background: transparent !important;\n border: 0 !important;\n color: transparent !important;\n box-shadow: none !important;\n position: relative !important;\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ant-checkbox::before,\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ant-checkbox::after {\n content: none !important;\n display: none !important;\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ant-checkbox-input {\n appearance: none !important;\n -webkit-appearance: none !important;\n width: 18px !important;\n height: 18px !important;\n min-width: 18px !important;\n min-height: 18px !important;\n margin: 0 !important;\n border: none !important;\n border-radius: 2px !important;\n background: ${CORE_COLORS.text.inverse} !important;\n cursor: pointer !important;\n position: relative !important;\n box-sizing: border-box !important;\n display: block !important;\n inset: 0 !important;\n z-index: 1 !important;\n opacity: 1 !important;\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ant-checkbox-input:checked {\n border: none !important;\n background: ${CORE_COLORS.brand.primary} !important;\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ant-checkbox-input:checked::after {\n content: '';\n position: absolute;\n width: 9px;\n height: 5px;\n left: 4px;\n top: 4px;\n border-left: 2px solid ${CORE_COLORS.text.inverse};\n border-bottom: 2px solid ${CORE_COLORS.text.inverse};\n transform: rotate(-45deg);\n box-sizing: border-box;\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ant-checkbox-wrapper:hover .ant-checkbox-input,\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ant-checkbox:hover .ant-checkbox-input {\n border-color: ${CORE_COLORS.text.primary} !important;\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ant-select-item-option-selected .ant-checkbox-wrapper:hover .ant-checkbox-input,\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ant-select-item-option-selected .ant-checkbox:hover .ant-checkbox-input,\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ant-select-item-option-selected .ant-checkbox-input:checked {\n border-color: ${CORE_COLORS.brand.primary} !important;\n }\n\n /* Canonical checkbox visuals for checkbox-options dropdown:\n keep Ant inner box visible (unchecked), and align check/indeterminate glyphs. */\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ant-checkbox {\n position: relative !important;\n width: 18px !important;\n height: 18px !important;\n min-width: 18px !important;\n min-height: 18px !important;\n display: inline-flex !important;\n align-items: center !important;\n justify-content: center !important;\n border: 0 !important;\n background: transparent !important;\n box-shadow: none !important;\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ant-checkbox .ant-checkbox-inner {\n display: block !important;\n width: 18px !important;\n height: 18px !important;\n border: 1px solid ${CORE_COLORS.text.muted} !important;\n border-radius: 2px !important;\n background: ${CORE_COLORS.text.inverse} !important;\n box-sizing: border-box !important;\n position: relative !important;\n top: 0 !important;\n left: 0 !important;\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ant-checkbox-input {\n position: absolute !important;\n inset: 0 !important;\n width: 18px !important;\n height: 18px !important;\n margin: 0 !important;\n opacity: 0 !important;\n cursor: pointer !important;\n z-index: 2 !important;\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ant-checkbox-checked .ant-checkbox-inner {\n border-color: ${CORE_COLORS.brand.primary} !important;\n background: ${CORE_COLORS.brand.primary} !important;\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ant-checkbox-checked .ant-checkbox-inner::after {\n width: 5px !important;\n height: 9px !important;\n border: 0 solid ${CORE_COLORS.text.inverse} !important;\n border-top: 0 !important;\n border-left: 0 !important;\n border-right: 2px solid ${CORE_COLORS.text.inverse} !important;\n border-bottom: 2px solid ${CORE_COLORS.text.inverse} !important;\n transform: rotate(45deg) scale(1) !important;\n position: absolute !important;\n left: 5px !important;\n top: 2px !important;\n margin: 0 !important;\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ant-checkbox-indeterminate .ant-checkbox-inner {\n border-color: ${CORE_COLORS.brand.primary} !important;\n background: ${CORE_COLORS.brand.primary} !important;\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ant-checkbox-indeterminate .ant-checkbox-inner::after {\n content: '' !important;\n width: 8px !important;\n height: 2px !important;\n background: ${CORE_COLORS.text.inverse} !important;\n border: 0 !important;\n border-radius: 1px !important;\n position: absolute !important;\n left: 50% !important;\n top: 50% !important;\n transform: translate(-50%, -50%) !important;\n margin: 0 !important;\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ant-checkbox-wrapper:hover .ant-checkbox-inner,\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ant-checkbox:hover .ant-checkbox-inner {\n border-color: ${CORE_COLORS.text.primary} !important;\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ant-checkbox-checked:hover .ant-checkbox-inner,\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ant-checkbox-indeterminate:hover .ant-checkbox-inner {\n border-color: ${CORE_COLORS.brand.primary} !important;\n }\n\n /* Ant v5 checkbox markup in this project does not include .ant-checkbox-inner.\n Render the checkbox box and glyph directly on .ant-checkbox for reliable parity. */\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ant-checkbox {\n width: 18px !important;\n height: 18px !important;\n min-width: 18px !important;\n min-height: 18px !important;\n border: 1px solid ${CORE_COLORS.text.muted} !important;\n border-radius: 2px !important;\n background: ${CORE_COLORS.text.inverse} !important;\n box-sizing: border-box !important;\n display: inline-flex !important;\n align-items: center !important;\n justify-content: center !important;\n position: relative !important;\n overflow: hidden !important;\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ant-checkbox::after {\n content: none !important;\n display: none !important;\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ant-checkbox.ant-checkbox-checked {\n border-color: ${CORE_COLORS.brand.primary} !important;\n background: ${CORE_COLORS.brand.primary} !important;\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ant-checkbox.ant-checkbox-checked::before {\n content: '' !important;\n position: absolute !important;\n width: 5px !important;\n height: 9px !important;\n border-right: 2px solid ${CORE_COLORS.text.inverse} !important;\n border-bottom: 2px solid ${CORE_COLORS.text.inverse} !important;\n transform: rotate(45deg) !important;\n left: 5px !important;\n top: 2px !important;\n box-sizing: border-box !important;\n display: block !important;\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ant-checkbox.ant-checkbox-indeterminate {\n border-color: ${CORE_COLORS.brand.primary} !important;\n background: ${CORE_COLORS.brand.primary} !important;\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ant-checkbox.ant-checkbox-indeterminate::before {\n content: '' !important;\n position: absolute !important;\n width: 8px !important;\n height: 2px !important;\n background: ${CORE_COLORS.text.inverse} !important;\n border-radius: 1px !important;\n left: 50% !important;\n top: 50% !important;\n transform: translate(-50%, -50%) !important;\n display: block !important;\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ant-checkbox-input {\n width: 18px !important;\n height: 18px !important;\n min-width: 18px !important;\n min-height: 18px !important;\n position: absolute !important;\n inset: 0 !important;\n opacity: 0 !important;\n margin: 0 !important;\n cursor: pointer !important;\n z-index: 2 !important;\n border: 0 !important;\n background: transparent !important;\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ant-checkbox-wrapper:hover .ant-checkbox,\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ant-checkbox:hover {\n border-color: ${CORE_COLORS.text.primary} !important;\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ant-checkbox.ant-checkbox-checked:hover,\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ant-checkbox.ant-checkbox-indeterminate:hover {\n border-color: ${CORE_COLORS.brand.primary} !important;\n }\n\n /* Final state override: paint visual states on the native checkbox input itself. */\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ant-checkbox .ant-checkbox-input {\n appearance: none !important;\n -webkit-appearance: none !important;\n width: 18px !important;\n height: 18px !important;\n min-width: 18px !important;\n min-height: 18px !important;\n border: 1px solid ${CORE_COLORS.text.muted} !important;\n border-radius: 2px !important;\n background: ${CORE_COLORS.text.inverse} !important;\n box-sizing: border-box !important;\n opacity: 1 !important;\n position: relative !important;\n z-index: 3 !important;\n display: block !important;\n cursor: pointer !important;\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ant-checkbox .ant-checkbox-input:checked {\n border-color: ${CORE_COLORS.brand.primary} !important;\n background: ${CORE_COLORS.brand.primary} !important;\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ant-checkbox .ant-checkbox-input:checked::after {\n content: '' !important;\n position: absolute !important;\n width: 5px !important;\n height: 9px !important;\n border-right: 2px solid ${CORE_COLORS.text.inverse} !important;\n border-bottom: 2px solid ${CORE_COLORS.text.inverse} !important;\n transform: rotate(45deg) !important;\n left: 5px !important;\n top: 2px !important;\n box-sizing: border-box !important;\n display: block !important;\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ant-checkbox .ant-checkbox-input:indeterminate {\n border-color: ${CORE_COLORS.brand.primary} !important;\n background: ${CORE_COLORS.brand.primary} !important;\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ant-checkbox .ant-checkbox-input:indeterminate::after {\n content: '' !important;\n position: absolute !important;\n width: 8px !important;\n height: 2px !important;\n background: ${CORE_COLORS.text.inverse} !important;\n border-radius: 1px !important;\n left: 50% !important;\n top: 50% !important;\n transform: translate(-50%, -50%) !important;\n display: block !important;\n }\n\n /* Prevent duplicate glyphs: selected states should render a single check/dash. */\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ant-checkbox.ant-checkbox-checked::before,\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ant-checkbox.ant-checkbox-indeterminate::before {\n content: none !important;\n display: none !important;\n }\n\n /* Single glyph source: hide native/input marks and draw one mark on wrapper ::after. */\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ant-checkbox .ant-checkbox-input {\n appearance: none !important;\n -webkit-appearance: none !important;\n opacity: 0 !important;\n background: transparent !important;\n border: 0 !important;\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ant-checkbox .ant-checkbox-input::after {\n content: none !important;\n display: none !important;\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ant-checkbox .ant-checkbox-input:checked::after,\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ant-checkbox .ant-checkbox-input:indeterminate::after {\n content: none !important;\n display: none !important;\n border: 0 !important;\n background: transparent !important;\n box-shadow: none !important;\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ant-checkbox.ant-checkbox-checked {\n border-color: ${CORE_COLORS.brand.primary} !important;\n background: ${CORE_COLORS.brand.primary} !important;\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ant-checkbox.ant-checkbox-checked::after {\n content: '' !important;\n position: absolute !important;\n width: 5px !important;\n height: 9px !important;\n border-right: 2px solid ${CORE_COLORS.text.inverse} !important;\n border-bottom: 2px solid ${CORE_COLORS.text.inverse} !important;\n transform: rotate(45deg) !important;\n left: 5px !important;\n top: 2px !important;\n box-sizing: border-box !important;\n display: block !important;\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ant-checkbox.ant-checkbox-indeterminate {\n border-color: ${CORE_COLORS.brand.primary} !important;\n background: ${CORE_COLORS.brand.primary} !important;\n }\n\n .${DS_SELECT_DROPDOWN_CLASS}.${DS_SELECT_DROPDOWN_CHECKBOX_CLASS}.ant-select-dropdown .ant-checkbox.ant-checkbox-indeterminate::after {\n content: '' !important;\n position: absolute !important;\n width: 8px !important;\n height: 2px !important;\n background: ${CORE_COLORS.text.inverse} !important;\n border-radius: 1px !important;\n left: 50% !important;\n top: 50% !important;\n transform: translate(-50%, -50%) !important;\n display: block !important;\n }\n\n `;\n\n};\n","import { Select as AntSelect } from 'antd';\nimport type { SelectProps } from 'antd';\nimport { useEffect, useState } from 'react';\nimport { Icon } from '../../utils/icons';\nimport { dsSemanticTokens } from '../../theme/ontadaTheme';\nimport {\n DS_SELECT_CLASS,\n DS_SELECT_FORCE_FOCUS_CLASS,\n DS_SELECT_FORCE_HOVER_CLASS,\n DS_SELECT_READONLY_CLASS,\n DS_SELECT_DROPDOWN_CLASS,\n DS_SELECT_DROPDOWN_MULTI_CLASS,\n ensureSelectStyles,\n mergeClassNames,\n} from './selectStyles';\n\nexport type DSSelectInteractionState = 'rest' | 'hover' | 'focus';\n\nexport type DSSelectProps = SelectProps & {\n readOnly?: boolean;\n interactionState?: DSSelectInteractionState;\n};\n\nexport const Select = ({\n className: providedClassName,\n popupClassName: providedPopupClassName,\n classNames: providedClassNames,\n suffixIcon,\n readOnly = false,\n interactionState = 'rest',\n open,\n onOpenChange,\n onDropdownVisibleChange,\n ...props\n}: DSSelectProps) => {\n const [isOpen, setIsOpen] = useState<boolean>(Boolean(open));\n\n useEffect(() => {\n ensureSelectStyles();\n }, []);\n\n useEffect(() => {\n if (typeof open === 'boolean') {\n setIsOpen(open);\n }\n }, [open]);\n\n const isMultiMode = props.mode === 'multiple' || props.mode === 'tags';\n const mergedSelectClassName = mergeClassNames(\n DS_SELECT_CLASS,\n interactionState === 'hover' ? DS_SELECT_FORCE_HOVER_CLASS : undefined,\n interactionState === 'focus' ? DS_SELECT_FORCE_FOCUS_CLASS : undefined,\n readOnly ? DS_SELECT_READONLY_CLASS : undefined,\n providedClassName,\n );\n const mergedPopupRootClass = mergeClassNames(\n DS_SELECT_DROPDOWN_CLASS,\n isMultiMode ? DS_SELECT_DROPDOWN_MULTI_CLASS : undefined,\n (providedClassNames as any)?.popup?.root,\n providedPopupClassName,\n );\n const resolvedOpen = readOnly ? false : open;\n\n const mergedClassNames = {\n ...(providedClassNames ?? {}),\n popup: {\n ...((providedClassNames as any)?.popup ?? {}),\n root: mergedPopupRootClass,\n },\n } as SelectProps['classNames'];\n\n const resolvedSuffixIcon = suffixIcon ?? (\n <Icon\n name={isOpen ? 'arrowButtonUp' : 'arrowButtonDown'}\n size={10}\n style={{ color: dsSemanticTokens.input.text.focus }}\n />\n );\n\n return (\n <AntSelect\n {...props}\n open={resolvedOpen}\n suffixIcon={resolvedSuffixIcon}\n className={mergedSelectClassName}\n classNames={mergedClassNames}\n onOpenChange={(nextOpen) => {\n if (readOnly && nextOpen) {\n setIsOpen(false);\n return;\n }\n setIsOpen(nextOpen);\n onOpenChange?.(nextOpen);\n onDropdownVisibleChange?.(nextOpen);\n }}\n />\n );\n};\n\nSelect.displayName = 'Select';\n","import { dsSemanticTokens } from '../../theme/ontadaTheme';\nimport { CORE_COLORS } from '../../tokens/core';\n\nconst STYLE_ID = 'ds-date-picker-styles';\n\nexport const DS_PICKER_CLASS = 'ds-date-picker';\nexport const DS_PICKER_PANEL_CLASS = 'ds-date-picker-panel';\n\nexport const mergePickerClassNames = (...classNames: Array<string | undefined>): string =>\n classNames.filter(Boolean).join(' ').trim();\n\nexport const ensureDatePickerStyles = () => {\n if (typeof document === 'undefined') {\n return;\n }\n\n const { button, input } = dsSemanticTokens;\n let style = document.getElementById(STYLE_ID) as HTMLStyleElement | null;\n if (!style) {\n style = document.createElement('style');\n style.id = STYLE_ID;\n document.head.appendChild(style);\n }\n\n style.textContent = `\n\n /* ── Trigger: base ───────────────────────────────── */\n\n .${DS_PICKER_CLASS}.ant-picker {\n border-color: ${input.border.default} !important;\n border-width: ${input.border.widthDefault} !important;\n border-style: solid !important;\n border-radius: ${input.border.radius} !important;\n background-color: ${input.background.default} !important;\n box-shadow: none !important;\n min-height: ${input.height.middle} !important;\n height: ${input.height.middle} !important;\n padding: 0 ${input.padding.middle.x} !important;\n display: inline-flex !important;\n align-items: center !important;\n width: 100% !important;\n transition: none !important;\n }\n\n .${DS_PICKER_CLASS}.ant-picker:has(.ant-picker-input > input[readonly]:not(:disabled)) {\n background-color: ${input.background.readOnly} !important;\n border-color: ${input.border.default} !important;\n box-shadow: none !important;\n }\n\n .${DS_PICKER_CLASS}.ant-picker.ant-picker-outlined {\n border-color: ${input.border.default} !important;\n box-shadow: none !important;\n }\n\n /* ── Trigger: sizes ──────────────────────────────── */\n\n .${DS_PICKER_CLASS}.ant-picker.ant-picker-small {\n min-height: ${input.height.small} !important;\n height: ${input.height.small} !important;\n padding: 0 ${input.padding.small.x} !important;\n }\n\n .${DS_PICKER_CLASS}.ant-picker.ant-picker-large {\n min-height: ${input.height.large} !important;\n height: ${input.height.large} !important;\n padding: 0 ${input.padding.large.x} !important;\n }\n\n /* ── Trigger: hover ──────────────────────────────── */\n\n .${DS_PICKER_CLASS}.ant-picker:not(.ant-picker-disabled):hover,\n .${DS_PICKER_CLASS}.ant-picker.ant-picker-outlined:not(.ant-picker-disabled):hover {\n border-color: ${input.border.hover} !important;\n box-shadow: none !important;\n }\n\n /* ── Trigger: focus / open ───────────────────────── */\n\n .${DS_PICKER_CLASS}.ant-picker.ant-picker-focused,\n .${DS_PICKER_CLASS}.ant-picker.ant-picker-outlined.ant-picker-focused {\n border-color: ${input.border.focus} !important;\n border-width: ${input.border.widthFocus} !important;\n box-shadow: none !important;\n outline: none !important;\n }\n\n .${DS_PICKER_CLASS}.ant-picker.ant-picker-focused:hover,\n .${DS_PICKER_CLASS}.ant-picker.ant-picker-outlined.ant-picker-focused:hover {\n border-color: ${input.border.focus} !important;\n border-width: ${input.border.widthFocus} !important;\n box-shadow: none !important;\n outline: none !important;\n }\n\n .${DS_PICKER_CLASS}.ant-picker:focus-within,\n .${DS_PICKER_CLASS}.ant-picker .ant-picker-input > input:focus,\n .${DS_PICKER_CLASS}.ant-picker .ant-picker-input > input:focus-visible {\n outline: none !important;\n box-shadow: none !important;\n }\n\n /* ── Trigger: status ─────────────────────────────── */\n\n .${DS_PICKER_CLASS}.ant-picker.ant-picker-status-error,\n .${DS_PICKER_CLASS}.ant-picker.ant-picker-outlined.ant-picker-status-error {\n border-color: ${input.border.error} !important;\n box-shadow: none !important;\n }\n\n .${DS_PICKER_CLASS}.ant-picker.ant-picker-status-warning,\n .${DS_PICKER_CLASS}.ant-picker.ant-picker-outlined.ant-picker-status-warning {\n border-color: ${CORE_COLORS.status.warning} !important;\n box-shadow: none !important;\n }\n\n .${DS_PICKER_CLASS}.ant-picker.ant-picker-status-success,\n .${DS_PICKER_CLASS}.ant-picker.ant-picker-outlined.ant-picker-status-success {\n border-color: ${input.border.success} !important;\n box-shadow: none !important;\n }\n\n /* ── Trigger: disabled ───────────────────────────── */\n\n .${DS_PICKER_CLASS}.ant-picker.ant-picker-disabled {\n background-color: ${input.background.disabled} !important;\n border-color: transparent !important;\n box-shadow: none !important;\n }\n\n /* ── Input text ──────────────────────────────────── */\n\n .${DS_PICKER_CLASS}.ant-picker .ant-picker-input > input {\n font-size: 14px !important;\n line-height: 18px !important;\n font-weight: 400 !important;\n color: ${CORE_COLORS.text.strong} !important;\n }\n\n .${DS_PICKER_CLASS}.ant-picker .ant-picker-input > input::placeholder {\n color: ${input.text.placeholder} !important;\n font-weight: 400 !important;\n opacity: 1 !important;\n }\n\n .${DS_PICKER_CLASS}.ant-picker.ant-picker-focused .ant-picker-input > input {\n color: ${CORE_COLORS.text.strong} !important;\n font-weight: ${input.focusFontWeight} !important;\n }\n\n .${DS_PICKER_CLASS}.ant-picker.ant-picker-status-error .ant-picker-input > input {\n color: ${input.border.error} !important;\n font-weight: ${input.focusFontWeight} !important;\n }\n\n .${DS_PICKER_CLASS}.ant-picker.ant-picker-disabled .ant-picker-input > input {\n color: ${input.text.disabled} !important;\n }\n\n .${DS_PICKER_CLASS}.ant-picker .ant-picker-input > input[readonly]:not(:disabled) {\n color: ${input.text.readOnly} !important;\n font-weight: 400 !important;\n }\n\n /* ── Suffix icon ─────────────────────────────────── */\n\n .${DS_PICKER_CLASS}.ant-picker .ant-picker-suffix,\n .${DS_PICKER_CLASS}.ant-picker .ant-picker-suffix .anticon {\n color: ${input.border.default} !important;\n font-size: 14px !important;\n }\n\n .${DS_PICKER_CLASS}.ant-picker.ant-picker-focused .ant-picker-suffix,\n .${DS_PICKER_CLASS}.ant-picker.ant-picker-focused .ant-picker-suffix .anticon {\n color: ${input.border.default} !important;\n }\n\n .${DS_PICKER_CLASS}.ant-picker.ant-picker-status-error .ant-picker-suffix,\n .${DS_PICKER_CLASS}.ant-picker.ant-picker-status-error .ant-picker-suffix .anticon {\n color: ${input.border.default} !important;\n }\n\n .${DS_PICKER_CLASS}.ant-picker.ant-picker-disabled .ant-picker-suffix,\n .${DS_PICKER_CLASS}.ant-picker.ant-picker-disabled .ant-picker-suffix .anticon {\n color: ${input.text.disabled} !important;\n }\n\n /* ── Clear button ────────────────────────────────── */\n\n .${DS_PICKER_CLASS}.ant-picker .ant-picker-clear {\n color: ${input.text.default} !important;\n background: ${input.background.default} !important;\n }\n\n .${DS_PICKER_CLASS}.ant-picker .ant-picker-clear:hover {\n color: ${input.text.focus} !important;\n }\n\n /* ── Calendar panel container ────────────────────── */\n\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-panel-container {\n border: 1px solid ${input.text.focus} !important;\n border-radius: 4px !important;\n background: ${input.background.default} !important;\n box-shadow: 0 2px 4px color-mix(in srgb, ${CORE_COLORS.text.primary} 30%, transparent) !important;\n overflow: hidden !important;\n font-family: 'Nunito', 'Segoe UI', Roboto, sans-serif !important;\n }\n\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-panel {\n border: 0 !important;\n border-radius: 0 !important;\n font-family: 'Nunito', 'Segoe UI', Roboto, sans-serif !important;\n }\n\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-date-panel,\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-month-panel,\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-year-panel,\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-quarter-panel,\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-week-panel,\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-decade-panel {\n width: 300px !important;\n padding: 16px !important;\n }\n\n /* ── Panel header ────────────────────────────────── */\n\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-header {\n border-bottom: 0 !important;\n padding: 0 0 8px !important;\n color: ${input.text.focus} !important;\n display: flex !important;\n align-items: center !important;\n justify-content: flex-start !important;\n font-family: 'Nunito', 'Segoe UI', Roboto, sans-serif !important;\n }\n\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-header button {\n color: ${input.text.focus} !important;\n font-size: 14px !important;\n line-height: 18px !important;\n font-family: 'Nunito', 'Segoe UI', Roboto, sans-serif !important;\n padding: 0 !important;\n margin: 0 !important;\n border: 0 !important;\n background: transparent !important;\n }\n\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-header button:hover {\n color: ${input.border.focus} !important;\n }\n\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-header-view {\n font-size: 16px !important;\n font-weight: 600 !important;\n line-height: 20px !important;\n font-family: 'Nunito', 'Segoe UI', Roboto, sans-serif !important;\n color: ${button.primary.default} !important;\n display: inline-flex !important;\n align-items: center !important;\n gap: 2px !important;\n order: 1 !important;\n margin-right: auto !important;\n }\n\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-header-view,\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-header-view *,\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-header-view button *,\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-header-view button span {\n font-family: 'Nunito', 'Segoe UI', Roboto, sans-serif !important;\n }\n\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-header-view button {\n color: ${button.primary.default} !important;\n font-size: 16px !important;\n font-weight: 600 !important;\n line-height: 20px !important;\n letter-spacing: ${button.typography.middle.letterSpacing} !important;\n font-family: 'Nunito', 'Segoe UI', Roboto, sans-serif !important;\n cursor: pointer !important;\n }\n\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-header-view button:hover {\n color: ${button.primary.hover} !important;\n }\n\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-header-view button:active,\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-header-view button:focus-visible {\n color: ${button.primary.pressed} !important;\n }\n\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-header-super-prev-btn,\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-header-super-next-btn {\n display: none !important;\n }\n\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-header-prev-btn,\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-header-next-btn {\n width: 14px !important;\n height: 14px !important;\n min-width: 14px !important;\n min-height: 14px !important;\n display: inline-flex !important;\n align-items: center !important;\n justify-content: center !important;\n color: ${input.text.focus} !important;\n }\n\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-header-prev-btn,\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-header-next-btn {\n margin-left: 16px !important;\n }\n\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-header-prev-btn {\n order: 2 !important;\n }\n\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-header-next-btn {\n order: 3 !important;\n }\n\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-header-prev-icon,\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-header-next-icon {\n width: 14px !important;\n height: 14px !important;\n font-size: 14px !important;\n }\n\n /* ── Day-of-week header row ──────────────────────── */\n\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-content th {\n color: ${input.border.default} !important;\n font-size: 12px !important;\n font-weight: 600 !important;\n font-family: 'Nunito', 'Segoe UI', Roboto, sans-serif !important;\n text-transform: uppercase !important;\n letter-spacing: 0.48px !important;\n padding: 0 0 8px !important;\n }\n\n /* ── Day cells ───────────────────────────────────── */\n\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-body {\n padding: 0 !important;\n }\n\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-cell {\n color: ${CORE_COLORS.text.strong} !important;\n padding: 2px 0 !important;\n }\n\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-cell-in-view {\n color: ${CORE_COLORS.text.strong} !important;\n }\n\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-week-panel .ant-picker-content tr {\n display: table-row !important;\n }\n\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-week-panel .ant-picker-content td {\n display: table-cell !important;\n visibility: visible !important;\n opacity: 1 !important;\n }\n\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-cell .ant-picker-cell-inner {\n font-size: 12px !important;\n font-weight: 400 !important;\n line-height: 16px !important;\n min-width: 28px !important;\n height: 28px !important;\n border-radius: 50% !important;\n display: inline-flex !important;\n align-items: center !important;\n justify-content: center !important;\n }\n\n /* ── Cell: hover ─────────────────────────────────── */\n\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown\n .ant-picker-cell:not(.ant-picker-cell-selected):not(.ant-picker-cell-disabled):not(.ant-picker-cell-in-range):not(.ant-picker-cell-range-start):not(.ant-picker-cell-range-end):not(.ant-picker-cell-range-hover-start):not(.ant-picker-cell-range-hover-end):not(.ant-picker-cell-range-hover):hover\n .ant-picker-cell-inner {\n background: ${CORE_COLORS.semantic.infoBg} !important;\n color: ${input.text.focus} !important;\n }\n\n /* ── Cell: today ─────────────────────────────────── */\n\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-cell-today .ant-picker-cell-inner {\n font-weight: 400 !important;\n }\n\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-cell-today .ant-picker-cell-inner::before {\n border: 1px solid ${CORE_COLORS.text.strong} !important;\n border-radius: 50% !important;\n }\n\n /* ── Cell: selected ──────────────────────────────── */\n\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-cell-selected .ant-picker-cell-inner,\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-cell-selected:hover .ant-picker-cell-inner {\n background: ${CORE_COLORS.accent.highlightSoft} !important;\n background-color: ${CORE_COLORS.accent.highlightSoft} !important;\n border: 2px solid ${CORE_COLORS.accent.highlight} !important;\n color: ${CORE_COLORS.text.strong} !important;\n font-weight: 700 !important;\n border-radius: 50% !important;\n }\n\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-cell-selected .ant-picker-cell-inner::before {\n border: 0 !important;\n }\n\n /* ── Month / year panel cell selected ────────────── */\n\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-month-panel .ant-picker-cell-selected .ant-picker-cell-inner,\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-year-panel .ant-picker-cell-selected .ant-picker-cell-inner,\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-quarter-panel .ant-picker-cell-selected .ant-picker-cell-inner,\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-decade-panel .ant-picker-cell-selected .ant-picker-cell-inner {\n background: ${CORE_COLORS.accent.highlightSoft} !important;\n background-color: ${CORE_COLORS.accent.highlightSoft} !important;\n border: 2px solid ${CORE_COLORS.accent.highlight} !important;\n color: ${CORE_COLORS.text.strong} !important;\n font-weight: 700 !important;\n border-radius: 16px !important;\n }\n\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-month-panel .ant-picker-cell .ant-picker-cell-inner,\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-year-panel .ant-picker-cell .ant-picker-cell-inner,\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-quarter-panel .ant-picker-cell .ant-picker-cell-inner,\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-decade-panel .ant-picker-cell .ant-picker-cell-inner {\n font-size: 14px !important;\n line-height: 18px !important;\n font-weight: 400 !important;\n border-radius: 16px !important;\n min-width: 56px !important;\n height: 28px !important;\n padding: 0 8px !important;\n }\n\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-month-panel .ant-picker-cell-selected:hover .ant-picker-cell-inner,\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-year-panel .ant-picker-cell-selected:hover .ant-picker-cell-inner,\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-quarter-panel .ant-picker-cell-selected:hover .ant-picker-cell-inner,\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-decade-panel .ant-picker-cell-selected:hover .ant-picker-cell-inner {\n background: ${CORE_COLORS.accent.highlightSoft} !important;\n background-color: ${CORE_COLORS.accent.highlightSoft} !important;\n border: 2px solid ${CORE_COLORS.accent.highlight} !important;\n color: ${CORE_COLORS.text.strong} !important;\n font-weight: 700 !important;\n }\n\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-week-panel .ant-picker-cell-selected::before,\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-week-panel .ant-picker-cell-selected:hover::before,\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-week-panel .ant-picker-cell-range-hover::before {\n background: transparent !important;\n }\n\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-week-panel .ant-picker-cell::before,\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-week-panel .ant-picker-cell:hover::before,\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-week-panel .ant-picker-cell-in-view.ant-picker-cell-in-range::before,\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-week-panel .ant-picker-cell-in-view.ant-picker-cell-range-hover::before {\n background: transparent !important;\n }\n\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-week-panel .ant-picker-cell-selected .ant-picker-cell-inner,\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-week-panel .ant-picker-cell-selected:hover .ant-picker-cell-inner {\n background: ${CORE_COLORS.accent.highlightSoft} !important;\n background-color: ${CORE_COLORS.accent.highlightSoft} !important;\n border: 2px solid ${CORE_COLORS.accent.highlight} !important;\n color: ${CORE_COLORS.text.strong} !important;\n font-weight: 700 !important;\n border-radius: 50% !important;\n }\n\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-week-panel .ant-picker-cell-selected:hover .ant-picker-cell-inner {\n background: ${CORE_COLORS.accent.highlightSoft} !important;\n background-color: ${CORE_COLORS.accent.highlightSoft} !important;\n }\n\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-week-panel .ant-picker-cell-selected .ant-picker-cell-inner::before,\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-week-panel .ant-picker-cell-selected:hover .ant-picker-cell-inner::before {\n border: 0 !important;\n background: transparent !important;\n }\n\n /* ── Footer ──────────────────────────────────────── */\n\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-footer {\n display: none !important;\n }\n\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-today-btn {\n color: ${input.border.focus} !important;\n font-size: 14px !important;\n font-weight: 400 !important;\n }\n\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-today-btn:hover {\n color: ${CORE_COLORS.brand.primaryHover} !important;\n }\n\n /* ── Range picker ────────────────────────────────── */\n\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-cell-in-range .ant-picker-cell-inner {\n background: ${CORE_COLORS.accent.highlightBg} !important;\n color: ${CORE_COLORS.text.strong} !important;\n border-radius: 0 !important;\n }\n\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-cell-in-range::before,\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-cell-range-start::before,\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-cell-range-end::before {\n background: ${CORE_COLORS.accent.highlightBg} !important;\n }\n\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-cell-range-start .ant-picker-cell-inner,\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-cell-range-end .ant-picker-cell-inner {\n background: ${CORE_COLORS.accent.highlightSoft} !important;\n border: 2px solid ${CORE_COLORS.accent.highlight} !important;\n color: ${CORE_COLORS.text.strong} !important;\n font-weight: 700 !important;\n border-radius: 50% !important;\n }\n\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-cell-range-start:hover .ant-picker-cell-inner,\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-cell-range-end:hover .ant-picker-cell-inner,\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-cell-range-start.ant-picker-cell-range-hover-start .ant-picker-cell-inner,\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-cell-range-end.ant-picker-cell-range-hover-end .ant-picker-cell-inner {\n background: ${CORE_COLORS.accent.highlightSoft} !important;\n border: 2px solid ${CORE_COLORS.accent.highlight} !important;\n color: ${CORE_COLORS.text.strong} !important;\n font-weight: 700 !important;\n }\n\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-cell-range-hover-start .ant-picker-cell-inner,\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-cell-range-hover-end .ant-picker-cell-inner,\n .${DS_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-cell-range-hover .ant-picker-cell-inner {\n background: ${CORE_COLORS.accent.highlightBg} !important;\n }\n\n `;\n\n};\n","import { DatePicker as AntDatePicker } from 'antd';\nimport type { DatePickerProps } from 'antd';\nimport { useEffect } from 'react';\nimport type { ComponentProps } from 'react';\nimport {\n DS_PICKER_CLASS,\n DS_PICKER_PANEL_CLASS,\n ensureDatePickerStyles,\n mergePickerClassNames,\n} from './datePickerStyles';\n\nexport type DSDatePickerProps = DatePickerProps;\nexport const DS_DATE_FORMAT = 'MM-DD-YYYY';\n\ntype DSRangePickerProps = ComponentProps<typeof AntDatePicker.RangePicker>;\n\nexport const DatePicker = ({\n className: providedClassName,\n popupClassName: providedPopupClassName,\n classNames: providedClassNames,\n ...props\n}: DSDatePickerProps) => {\n useEffect(() => {\n ensureDatePickerStyles();\n }, []);\n\n const mergedClassName = mergePickerClassNames(DS_PICKER_CLASS, providedClassName);\n const mergedPopupRootClassName = mergePickerClassNames(\n DS_PICKER_PANEL_CLASS,\n (providedClassNames as any)?.popup?.root,\n providedPopupClassName,\n );\n\n const mergedClassNames = {\n ...(providedClassNames ?? {}),\n popup: {\n ...((providedClassNames as any)?.popup ?? {}),\n root: mergedPopupRootClassName,\n },\n } as DatePickerProps['classNames'];\n\n const resolvedFormat = props.format ?? DS_DATE_FORMAT;\n const resolvedPlaceholder = props.placeholder ?? DS_DATE_FORMAT;\n\n return (\n <AntDatePicker\n {...props}\n format={resolvedFormat}\n placeholder={resolvedPlaceholder}\n className={mergedClassName}\n classNames={mergedClassNames}\n />\n );\n};\n\nDatePicker.displayName = 'DatePicker';\n\nconst DSRangePicker = ({\n className: providedClassName,\n popupClassName: providedPopupClassName,\n classNames: providedClassNames,\n ...props\n}: DSRangePickerProps) => {\n useEffect(() => {\n ensureDatePickerStyles();\n }, []);\n\n const mergedClassName = mergePickerClassNames(DS_PICKER_CLASS, providedClassName);\n const mergedPopupRootClassName = mergePickerClassNames(\n DS_PICKER_PANEL_CLASS,\n (providedClassNames as any)?.popup?.root,\n providedPopupClassName,\n );\n\n const mergedClassNames = {\n ...(providedClassNames ?? {}),\n popup: {\n ...((providedClassNames as any)?.popup ?? {}),\n root: mergedPopupRootClassName,\n },\n } as DSRangePickerProps['classNames'];\n\n const resolvedFormat = props.format ?? DS_DATE_FORMAT;\n const resolvedPlaceholder = props.placeholder ?? [DS_DATE_FORMAT, DS_DATE_FORMAT];\n\n return (\n <AntDatePicker.RangePicker\n {...props}\n format={resolvedFormat}\n placeholder={resolvedPlaceholder}\n className={mergedClassName}\n classNames={mergedClassNames}\n />\n );\n};\n\nDSRangePicker.displayName = 'DatePicker.RangePicker';\n\n// Forward DS-wrapped sub-component so callers can do const { RangePicker } = DSDatePicker\n(DatePicker as typeof DatePicker & { RangePicker: typeof DSRangePicker }).RangePicker = DSRangePicker;\n","import { appTheme, dsSemanticTokens } from '../../theme/ontadaTheme';\n\nconst STYLE_ID = 'ds-time-picker-styles';\n\nexport const DS_TIME_PICKER_CLASS = 'ds-time-picker';\nexport const DS_TIME_PICKER_PANEL_CLASS = 'ds-time-picker-panel';\n\nexport const mergeTimePickerClassNames = (...classNames: Array<string | undefined>): string =>\n classNames.filter(Boolean).join(' ').trim();\n\nexport const ensureTimePickerStyles = () => {\n if (typeof document === 'undefined') {\n return;\n }\n\n const { input, picker } = dsSemanticTokens;\n const antTokens = appTheme.token ?? {};\n const textColor = String(antTokens.colorText);\n const warningColor = String(antTokens.colorWarning);\n const selectedBackground = picker.selected.background;\n const selectedBorder = picker.selected.border;\n const selectedText = picker.selected.text;\n const panelShadowColor = input.text.focus;\n const panelShadowBlendColor = input.background.default;\n let style = document.getElementById(STYLE_ID) as HTMLStyleElement | null;\n if (!style) {\n style = document.createElement('style');\n style.id = STYLE_ID;\n document.head.appendChild(style);\n }\n\n style.textContent = `\n /* TimePicker trigger: base */\n\n .${DS_TIME_PICKER_CLASS}.ant-picker {\n border-color: ${input.border.default} !important;\n border-width: ${input.border.widthDefault} !important;\n border-style: solid !important;\n border-radius: ${input.border.radius} !important;\n background-color: ${input.background.default} !important;\n box-shadow: none !important;\n min-height: ${input.height.middle} !important;\n height: ${input.height.middle} !important;\n padding: 0 ${input.padding.middle.x} !important;\n display: inline-flex !important;\n align-items: center !important;\n color: ${input.text.default} !important;\n font-family: 'Nunito', 'Segoe UI', Roboto, sans-serif !important;\n font-size: 14px !important;\n line-height: 1.5 !important;\n transition: none !important;\n }\n\n .${DS_TIME_PICKER_CLASS}.ant-picker.ant-picker-outlined {\n border-color: ${input.border.default} !important;\n box-shadow: none !important;\n }\n\n .${DS_TIME_PICKER_CLASS}.ant-picker.ant-picker-small {\n min-height: ${input.height.small} !important;\n height: ${input.height.small} !important;\n padding: 0 ${input.padding.small.x} !important;\n }\n\n .${DS_TIME_PICKER_CLASS}.ant-picker.ant-picker-large {\n min-height: ${input.height.large} !important;\n height: ${input.height.large} !important;\n padding: 0 ${input.padding.large.x} !important;\n }\n\n /* Trigger: hover */\n\n .${DS_TIME_PICKER_CLASS}.ant-picker:not(.ant-picker-disabled):hover,\n .${DS_TIME_PICKER_CLASS}.ant-picker.ant-picker-outlined:not(.ant-picker-disabled):hover {\n border-color: ${input.border.hover} !important;\n box-shadow: none !important;\n }\n\n /* Trigger: focus / open */\n\n .${DS_TIME_PICKER_CLASS}.ant-picker.ant-picker-focused,\n .${DS_TIME_PICKER_CLASS}.ant-picker.ant-picker-outlined.ant-picker-focused {\n border-color: ${input.border.focus} !important;\n border-width: ${input.border.widthFocus} !important;\n box-shadow: none !important;\n background-color: ${input.background.focus} !important;\n outline: none !important;\n }\n\n .${DS_TIME_PICKER_CLASS}.ant-picker.ant-picker-focused:hover,\n .${DS_TIME_PICKER_CLASS}.ant-picker.ant-picker-outlined.ant-picker-focused:hover {\n border-color: ${input.border.focus} !important;\n border-width: ${input.border.widthFocus} !important;\n box-shadow: none !important;\n outline: none !important;\n }\n\n .${DS_TIME_PICKER_CLASS}.ant-picker:focus-within,\n .${DS_TIME_PICKER_CLASS}.ant-picker .ant-picker-input > input:focus,\n .${DS_TIME_PICKER_CLASS}.ant-picker .ant-picker-input > input:focus-visible {\n outline: none !important;\n box-shadow: none !important;\n }\n\n /* Trigger: status */\n\n .${DS_TIME_PICKER_CLASS}.ant-picker.ant-picker-status-error,\n .${DS_TIME_PICKER_CLASS}.ant-picker.ant-picker-outlined.ant-picker-status-error {\n border-color: ${input.border.error} !important;\n box-shadow: none !important;\n }\n\n .${DS_TIME_PICKER_CLASS}.ant-picker.ant-picker-status-warning,\n .${DS_TIME_PICKER_CLASS}.ant-picker.ant-picker-outlined.ant-picker-status-warning {\n border-color: ${warningColor} !important;\n box-shadow: none !important;\n }\n\n .${DS_TIME_PICKER_CLASS}.ant-picker.ant-picker-status-success,\n .${DS_TIME_PICKER_CLASS}.ant-picker.ant-picker-outlined.ant-picker-status-success {\n border-color: ${input.border.success} !important;\n box-shadow: none !important;\n }\n\n /* Trigger: disabled */\n\n .${DS_TIME_PICKER_CLASS}.ant-picker.ant-picker-disabled {\n border-color: ${input.text.disabled} !important;\n background-color: ${input.background.disabled} !important;\n box-shadow: none !important;\n color: ${input.text.disabled} !important;\n }\n\n .${DS_TIME_PICKER_CLASS}.ant-picker .ant-picker-input > input {\n font-size: 14px !important;\n line-height: 18px !important;\n font-weight: 400 !important;\n color: ${textColor} !important;\n }\n\n .${DS_TIME_PICKER_CLASS}.ant-picker .ant-picker-input > input::placeholder {\n color: ${input.text.placeholder} !important;\n font-weight: 400 !important;\n opacity: 1 !important;\n }\n\n .${DS_TIME_PICKER_CLASS}.ant-picker.ant-picker-disabled input {\n color: ${input.text.disabled} !important;\n }\n\n /* Clear button */\n\n .${DS_TIME_PICKER_CLASS}.ant-picker .ant-picker-clear {\n color: ${input.text.default} !important;\n background: ${input.background.default} !important;\n }\n\n .${DS_TIME_PICKER_CLASS}.ant-picker .ant-picker-clear:hover {\n color: ${input.text.focus} !important;\n }\n\n /* Panel container */\n\n .${DS_TIME_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-panel-container {\n border: 1px solid ${input.text.focus} !important;\n border-radius: 4px !important;\n background: ${input.background.default} !important;\n box-shadow: 0 2px 4px color-mix(in srgb, ${panelShadowColor} 30%, ${panelShadowBlendColor}) !important;\n overflow: hidden !important;\n font-family: 'Nunito', 'Segoe UI', Roboto, sans-serif !important;\n }\n\n /* Panel body */\n\n .${DS_TIME_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-panel {\n border: 0 !important;\n border-radius: 0 !important;\n background: ${input.background.default} !important;\n font-family: 'Nunito', 'Segoe UI', Roboto, sans-serif !important;\n }\n\n .${DS_TIME_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-time-panel {\n width: 232px !important;\n padding: 8px !important;\n }\n\n /* Time columns */\n\n .${DS_TIME_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-time-panel-column {\n padding: 0 !important;\n width: 64px !important;\n min-width: 64px !important;\n }\n\n .${DS_TIME_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-time-panel-column li {\n color: ${input.text.default} !important;\n line-height: 32px !important;\n padding-inline: 4px !important;\n }\n\n .${DS_TIME_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-time-panel-column li .ant-picker-time-panel-cell-inner {\n box-sizing: border-box !important;\n width: calc(100% - 8px) !important;\n min-width: 40px !important;\n margin-inline: 4px !important;\n text-align: center !important;\n }\n\n .${DS_TIME_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-time-panel-column li:hover {\n background: ${input.background.focus} !important;\n }\n\n .${DS_TIME_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-time-panel-column li.ant-picker-time-panel-cell-selected,\n .${DS_TIME_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-time-panel-column li.ant-picker-time-panel-cell-selected:hover {\n background: none !important;\n background-color: unset !important;\n background-image: none !important;\n color: ${selectedText} !important;\n font-weight: 700 !important;\n opacity: 1 !important;\n }\n\n .${DS_TIME_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-time-panel-column li.ant-picker-time-panel-cell-selected .ant-picker-time-panel-cell-inner,\n .${DS_TIME_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-time-panel-column li.ant-picker-time-panel-cell-selected:hover .ant-picker-time-panel-cell-inner {\n background: ${selectedBackground} !important;\n background-color: ${selectedBackground} !important;\n background-image: none !important;\n border: 0 !important;\n box-shadow: inset 0 0 0 ${input.border.widthDefault} ${selectedBorder} !important;\n color: ${selectedText} !important;\n font-weight: 700 !important;\n opacity: 1 !important;\n }\n\n .${DS_TIME_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-time-panel-column li.ant-picker-time-panel-cell-selected::before,\n .${DS_TIME_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-time-panel-column li.ant-picker-time-panel-cell-selected .ant-picker-time-panel-cell-inner::before {\n background: ${selectedBackground} !important;\n background-color: ${selectedBackground} !important;\n background-image: none !important;\n border: 0 !important;\n box-shadow: none !important;\n }\n\n .${DS_TIME_PICKER_PANEL_CLASS}.ant-picker-dropdown .ant-picker-ok {\n float: right !important;\n }\n `;\n\n};\n","import { TimePicker as AntTimePicker } from 'antd';\nimport type { TimePickerProps } from 'antd';\nimport { useEffect } from 'react';\nimport {\n DS_TIME_PICKER_CLASS,\n DS_TIME_PICKER_PANEL_CLASS,\n ensureTimePickerStyles,\n mergeTimePickerClassNames,\n} from './timePickerStyles';\n\nexport type DSTimePickerFormat = '24h' | '12h';\n\nexport type DSTimePickerProps = TimePickerProps & {\n /**\n * DS time format variant.\n * 24h: 24-hour format (HH:mm:ss).\n * 12h: 12-hour format with AM/PM (h:mm A).\n */\n dsFormat?: DSTimePickerFormat;\n};\n\nexport const TimePicker = ({\n className: providedClassName,\n popupClassName: providedPopupClassName,\n classNames: providedClassNames,\n dsFormat = '24h',\n use12Hours: provided12Hours,\n format: providedFormat,\n ...props\n}: DSTimePickerProps) => {\n useEffect(() => {\n ensureTimePickerStyles();\n }, []);\n\n const use12Hours = dsFormat === '12h' || provided12Hours;\n const finalFormat = dsFormat === '12h' ? (providedFormat ?? 'h:mm A') : (providedFormat ?? 'HH:mm:ss');\n const mergedClassName = mergeTimePickerClassNames(DS_TIME_PICKER_CLASS, providedClassName);\n const mergedPopupClassName = mergeTimePickerClassNames(\n DS_TIME_PICKER_PANEL_CLASS,\n (providedClassNames as any)?.popup?.root,\n providedPopupClassName,\n );\n const mergedClassNames = {\n ...(providedClassNames ?? {}),\n popup: {\n ...((providedClassNames as any)?.popup ?? {}),\n root: mergedPopupClassName,\n },\n } as TimePickerProps['classNames'];\n\n return (\n <AntTimePicker\n {...props}\n className={mergedClassName}\n classNames={mergedClassNames}\n use12Hours={use12Hours}\n format={finalFormat}\n />\n );\n};\n\nTimePicker.displayName = 'TimePicker';\n","import { Input as AntInput } from 'antd';\nimport type { InputProps as AntInputProps } from 'antd';\nimport type { ComponentProps } from 'react';\nimport { useEffect } from 'react';\nimport { dsSemanticTokens } from '../../theme/ontadaTheme';\n\nconst STYLE_ID = 'ds-input-styles';\nconst DS_INPUT_CLASS = 'ds-input';\n\ntype ClassNameProp = { className?: string };\n\nconst withDsInputClass = <T extends ClassNameProp>(props: T): T => {\n const mergedClassName = `${DS_INPUT_CLASS} ${props.className ?? ''}`.trim();\n return { ...props, className: mergedClassName };\n};\n\nexport type InputProps = AntInputProps;\nexport type InputTextAreaProps = ComponentProps<typeof AntInput.TextArea>;\nexport type InputSearchProps = ComponentProps<typeof AntInput.Search>;\nexport type InputOTPProps = ComponentProps<typeof AntInput.OTP>;\n\nexport const Input = ({ className = '', ...props }: InputProps) => {\n useEffect(() => {\n if (typeof document !== 'undefined') {\n let style = document.getElementById(STYLE_ID) as HTMLStyleElement | null;\n if (!style) {\n style = document.createElement('style');\n style.id = STYLE_ID;\n document.head.appendChild(style);\n }\n const { input } = dsSemanticTokens;\n\n style.textContent = `\n .ds-input.ant-input,\n .ds-input.ant-input-affix-wrapper,\n .ds-input.ant-input-filled,\n .ds-input.ant-input-affix-wrapper.ant-input-affix-wrapper-filled,\n .ds-input.ant-input-borderless,\n .ds-input.ant-input-affix-wrapper.ant-input-affix-wrapper-borderless,\n .ds-input.ant-input-underlined,\n .ds-input.ant-input-affix-wrapper.ant-input-affix-wrapper-underlined,\n .ds-input.ant-input-group-wrapper,\n .ds-input.ant-input-search,\n .ds-input.ant-space-compact.ant-input-search,\n .ds-input.ant-input-outlined,\n .ds-input.ant-input-affix-wrapper.ant-input-outlined {\n border-color: ${input.border.default} !important;\n border-width: ${input.border.widthDefault} !important;\n border-style: solid !important;\n border-radius: ${input.border.radius} !important;\n background-color: ${input.background.default} !important;\n color: ${input.text.default} !important;\n transition: none !important;\n box-sizing: border-box !important;\n }\n\n .ds-input.ant-input-group-wrapper .ant-input-group-addon,\n .ds-input.ant-input-search .ant-input-search-button,\n .ds-input.ant-input-search .ant-input-search-btn {\n border-radius: ${input.border.radius} !important;\n }\n\n .ds-input.ant-input-search .ant-input-search-btn,\n .ds-input.ant-input-search .ant-input-search-button {\n border-top-left-radius: 0 !important;\n border-bottom-left-radius: 0 !important;\n border-top-right-radius: ${input.border.radius} !important;\n border-bottom-right-radius: ${input.border.radius} !important;\n }\n\n .ds-input.ant-input-group-wrapper .ant-input-group-addon:first-child {\n border-top-right-radius: 0 !important;\n border-bottom-right-radius: 0 !important;\n }\n\n .ds-input.ant-input-group-wrapper .ant-input-group-addon:last-child {\n border-top-left-radius: 0 !important;\n border-bottom-left-radius: 0 !important;\n }\n\n .ds-input.ant-input-group-wrapper .ant-input-group > .ant-input {\n border-radius: ${input.border.radius} !important;\n }\n\n .ds-input.ant-input-group-wrapper .ant-input-group > .ant-input,\n .ds-input.ant-input-group-wrapper .ant-input-group-addon,\n .ds-input.ant-input-search .ant-input,\n .ds-input.ant-input-search .ant-input-search-btn,\n .ds-input.ant-input-search .ant-input-search-button {\n border-color: ${input.border.default} !important;\n outline: none !important;\n box-shadow: none !important;\n transition: none !important;\n }\n\n .ds-input.ant-input-group-wrapper .ant-input-group > .ant-input,\n .ds-input.ant-input-search .ant-input {\n border-color: transparent !important;\n }\n\n .ds-input.ant-input-group-wrapper:focus-within {\n border-color: ${input.border.focus} !important;\n border-width: ${input.border.widthFocus} !important;\n border-style: solid !important;\n box-shadow: none !important;\n outline: none !important;\n }\n\n .ds-input.ant-space-compact.ant-input-search:focus-within {\n border-color: ${input.border.focus} !important;\n border-width: ${input.border.widthFocus} !important;\n border-style: solid !important;\n box-shadow: none !important;\n outline: none !important;\n }\n\n .ds-input.ant-input-group-wrapper:hover .ant-input-group-addon,\n .ds-input.ant-space-compact.ant-input-search:hover .ant-input,\n .ds-input.ant-input-search:hover .ant-input-search-btn,\n .ds-input.ant-space-compact.ant-input-search:hover .ant-input-search-btn,\n .ds-input.ant-input-search:hover .ant-input-search-button {\n border-color: ${input.border.hover} !important;\n }\n\n .ds-input.ant-input-group-wrapper:hover .ant-input-group > .ant-input,\n .ds-input.ant-input-search:hover .ant-input,\n .ds-input.ant-space-compact.ant-input-search:hover .ant-input {\n border-color: transparent !important;\n }\n\n .ds-input.ant-input-group-wrapper:focus-within .ant-input-group-addon,\n .ds-input.ant-space-compact.ant-input-search:focus-within .ant-input,\n .ds-input.ant-input-search:focus-within .ant-input-search-btn,\n .ds-input.ant-space-compact.ant-input-search:focus-within .ant-input-search-btn,\n .ds-input.ant-input-search:focus-within .ant-input-search-button {\n border-color: ${input.border.focus} !important;\n box-shadow: none !important;\n outline: none !important;\n }\n\n .ds-input.ant-input-group-wrapper:focus-within .ant-input-group > .ant-input,\n .ds-input.ant-input-search:focus-within .ant-input,\n .ds-input.ant-space-compact.ant-input-search:focus-within .ant-input {\n border-color: transparent !important;\n }\n\n .ds-input.ant-otp .ant-otp-input {\n border: ${input.border.widthDefault} solid ${input.border.default} !important;\n border-radius: ${input.border.radius} !important;\n box-shadow: none !important;\n outline: none !important;\n transition: none !important;\n background-color: ${input.background.default} !important;\n color: ${input.text.default} !important;\n }\n\n .ds-input.ant-otp .ant-otp-input:hover {\n border-color: ${input.border.hover} !important;\n }\n\n .ds-input.ant-otp .ant-otp-input:focus,\n .ds-input.ant-otp .ant-otp-input:focus-visible {\n border-color: ${input.border.focus} !important;\n box-shadow: none !important;\n outline: none !important;\n color: ${input.text.focus} !important;\n }\n\n .ds-input.ant-input::placeholder,\n .ds-input .ant-input::placeholder {\n color: ${input.text.placeholder} !important;\n opacity: 1;\n }\n\n .ds-input.ant-input:hover,\n .ds-input.ant-input-affix-wrapper:hover,\n .ds-input.ant-input-filled:hover,\n .ds-input.ant-input-affix-wrapper.ant-input-affix-wrapper-filled:hover,\n .ds-input.ant-input-outlined:hover,\n .ds-input.ant-input-affix-wrapper.ant-input-outlined:hover {\n border-color: ${input.border.hover} !important;\n }\n\n .ds-input.ant-input-filled,\n .ds-input.ant-input-affix-wrapper.ant-input-affix-wrapper-filled {\n background-color: ${input.background.readOnly} !important;\n }\n\n .ds-input.ant-input-affix-wrapper.ant-input-affix-wrapper-filled .ant-input {\n background-color: transparent !important;\n }\n\n .ds-input.ant-input:focus,\n .ds-input.ant-input-focused,\n .ds-input.ant-input-affix-wrapper-focused,\n .ds-input.ant-input-affix-wrapper:focus-within {\n border-color: ${input.border.focus} !important;\n border-width: ${input.border.widthFocus} !important;\n border-style: solid !important;\n box-shadow: none !important;\n outline: none !important;\n color: ${input.text.focus} !important;\n font-weight: ${input.focusFontWeight} !important;\n }\n\n .ds-input.ant-input:focus-visible,\n .ds-input.ant-input-affix-wrapper:focus-visible,\n .ds-input.ant-input-affix-wrapper .ant-input:focus,\n .ds-input.ant-input-affix-wrapper .ant-input:focus-visible {\n outline: none !important;\n box-shadow: none !important;\n }\n\n .ds-input.ant-input:focus::placeholder,\n .ds-input.ant-input-focused::placeholder,\n .ds-input.ant-input-affix-wrapper-focused .ant-input::placeholder,\n .ds-input.ant-input-affix-wrapper:focus-within .ant-input::placeholder {\n color: ${input.text.focus} !important;\n }\n\n .ds-input.ant-input-status-error,\n .ds-input.ant-input-affix-wrapper-status-error {\n border-color: ${input.border.error} !important;\n }\n\n .ds-input.ant-input-status-success,\n .ds-input.ant-input-affix-wrapper-status-success {\n border-color: ${input.border.success} !important;\n }\n\n .ds-input.ant-input-disabled,\n .ds-input.ant-input-affix-wrapper-disabled,\n .ds-input.ant-input[disabled],\n .ds-input.ant-input-affix-wrapper[disabled],\n .ds-input.ant-input-affix-wrapper-disabled .ant-input {\n background-color: ${input.background.disabled} !important;\n border-color: transparent !important;\n color: ${input.text.disabled} !important;\n -webkit-text-fill-color: ${input.text.disabled} !important;\n }\n\n .ds-input.ant-input[readonly],\n .ds-input.ant-input-affix-wrapper:has(.ant-input[readonly]),\n .ds-input.ant-input-affix-wrapper-readonly {\n background-color: ${input.background.readOnly} !important;\n border-color: ${input.border.default} !important;\n color: ${input.text.readOnly} !important;\n }\n\n .ds-input.ant-input[readonly]::placeholder,\n .ds-input.ant-input-affix-wrapper:has(.ant-input[readonly]) .ant-input::placeholder,\n .ds-input.ant-input-affix-wrapper-readonly .ant-input::placeholder {\n color: ${input.text.placeholder} !important;\n }\n\n .ds-input.ant-input-sm,\n .ds-input.ant-input-affix-wrapper-sm {\n height: ${input.height.small} !important;\n min-height: ${input.height.small} !important;\n padding: ${input.padding.small.y} ${input.padding.small.x} !important;\n }\n\n .ds-input.ant-input,\n .ds-input.ant-input-affix-wrapper {\n height: ${input.height.middle} !important;\n min-height: ${input.height.middle} !important;\n padding: ${input.padding.middle.y} ${input.padding.middle.x} !important;\n }\n\n .ds-input.ant-input-lg,\n .ds-input.ant-input-affix-wrapper-lg {\n height: ${input.height.large} !important;\n min-height: ${input.height.large} !important;\n padding: ${input.padding.large.y} ${input.padding.large.x} !important;\n }\n\n .ds-input.ant-input-affix-wrapper .ant-input {\n border: none !important;\n border-color: transparent !important;\n outline: none !important;\n box-shadow: none !important;\n background: transparent !important;\n padding: 0 !important;\n height: auto !important;\n min-height: 0 !important;\n }\n\n .ds-input.ant-input:focus,\n .ds-input.ant-input:focus-visible,\n .ds-input.ant-input:focus:hover,\n .ds-input.ant-input-focused,\n .ds-input.ant-input-focused:hover,\n .ds-input.ant-input-affix-wrapper-focused,\n .ds-input.ant-input-affix-wrapper-focused:hover,\n .ds-input.ant-input-affix-wrapper:focus,\n .ds-input.ant-input-affix-wrapper:focus-visible,\n .ds-input.ant-input-affix-wrapper:focus-within,\n .ds-input.ant-input-affix-wrapper:focus-within:hover,\n .ds-input.ant-input-group-wrapper:focus-within,\n .ds-input.ant-input-group-wrapper:focus-within:hover,\n .ds-input.ant-input-search:focus-within,\n .ds-input.ant-input-search:focus-within:hover,\n .ds-input.ant-space-compact.ant-input-search:focus-within,\n .ds-input.ant-space-compact.ant-input-search:focus-within:hover {\n border-color: ${input.border.focus} !important;\n border-width: ${input.border.widthFocus} !important;\n border-style: solid !important;\n box-shadow: none !important;\n outline: none !important;\n }\n\n .ds-input.ant-input-affix-wrapper:focus-within .ant-input,\n .ds-input.ant-input-affix-wrapper-focused .ant-input,\n .ds-input.ant-input-group-wrapper:focus-within .ant-input-group > .ant-input,\n .ds-input.ant-input-group-wrapper:focus-within .ant-input-group-addon,\n .ds-input.ant-input-search:focus-within .ant-input,\n .ds-input.ant-input-search:focus-within .ant-input-search-btn,\n .ds-input.ant-input-search:focus-within .ant-input-search-button,\n .ds-input.ant-space-compact.ant-input-search:focus-within .ant-input,\n .ds-input.ant-space-compact.ant-input-search:focus-within .ant-input-search-btn,\n .ds-input.ant-space-compact.ant-input-search:focus-within .ant-input-search-button {\n border-color: transparent !important;\n box-shadow: none !important;\n outline: none !important;\n }\n `;\n\n }\n }, []);\n\n const mergedClassName = `${DS_INPUT_CLASS} ${className}`.trim();\n\n return <AntInput {...props} className={mergedClassName} />;\n};\n\nInput.displayName = 'Input';\n\nexport const InputTextArea = (props: InputTextAreaProps) => {\n return <AntInput.TextArea {...withDsInputClass(props)} />;\n};\n\nInputTextArea.displayName = 'InputTextArea';\n\nexport const InputSearch = (props: InputSearchProps) => {\n return <AntInput.Search {...withDsInputClass(props)} />;\n};\n\nInputSearch.displayName = 'InputSearch';\n\nexport const InputOTP = (props: InputOTPProps) => {\n return <AntInput.OTP {...withDsInputClass(props)} />;\n};\n\nInputOTP.displayName = 'InputOTP';","import { dsSemanticTokens } from '../../theme/ontadaTheme';\n\nconst STYLE_ID = 'ds-input-number-control-styles';\n\nexport const ensureInputNumberStyles = () => {\n if (typeof document === 'undefined') {\n return;\n }\n\n const { input, table } = dsSemanticTokens;\n let style = document.getElementById(STYLE_ID) as HTMLStyleElement | null;\n if (!style) {\n style = document.createElement('style');\n style.id = STYLE_ID;\n document.head.appendChild(style);\n }\n\n style.textContent = `\n .ds-input-number.ant-input-number,\n .ds-input-number-root.ant-space-compact,\n .ds-input-number.ant-input-number-outlined,\n .ds-input-number.ant-input-number-filled,\n .ds-input-number.ant-input-number-borderless,\n .ds-input-number.ant-input-number-underlined,\n .ds-input-number.ant-input-number-group-wrapper,\n .ds-input-number.ant-input-number-group-wrapper .ant-input-number,\n .ds-input-number.ant-input-number-affix-wrapper,\n .ds-input-number.ant-input-number-affix-wrapper .ant-input-number {\n border-color: ${input.border.default} !important;\n border-width: ${input.border.widthDefault} !important;\n border-style: solid !important;\n border-radius: 4px !important;\n background-color: ${input.background.default} !important;\n color: ${input.text.default} !important;\n box-shadow: none !important;\n outline: none !important;\n transition: none !important;\n }\n\n .ds-input-number-root.ant-space-compact {\n border-radius: 4px !important;\n overflow: hidden !important;\n }\n\n .ds-input-number-root.ant-space-compact .ant-space-addon.ant-input-number-addon,\n .ds-input-number-root.ant-space-compact .ant-input-number {\n border-color: transparent !important;\n border-radius: 0 !important;\n box-shadow: none !important;\n outline: none !important;\n transition: none !important;\n }\n\n .ds-input-number-root.ant-space-compact:hover .ant-space-addon.ant-input-number-addon,\n .ds-input-number-root.ant-space-compact:hover .ant-input-number {\n border-color: transparent !important;\n box-shadow: none !important;\n outline: none !important;\n }\n\n .ds-input-number-root.ant-space-compact:focus-within,\n .ds-input-number-root.ant-space-compact:focus-within:hover {\n border-color: ${input.border.focus} !important;\n border-width: ${input.border.widthFocus} !important;\n border-style: solid !important;\n box-shadow: none !important;\n outline: none !important;\n }\n\n .ds-input-number-root.ant-space-compact:focus-within .ant-space-addon.ant-input-number-addon,\n .ds-input-number-root.ant-space-compact:focus-within:hover .ant-space-addon.ant-input-number-addon,\n .ds-input-number-root.ant-space-compact:focus-within .ant-input-number,\n .ds-input-number-root.ant-space-compact:focus-within:hover .ant-input-number {\n border-color: transparent !important;\n box-shadow: none !important;\n outline: none !important;\n }\n\n .ds-input-number.ant-input-number:hover,\n .ds-input-number.ant-input-number-group-wrapper:hover,\n .ds-input-number.ant-input-number-group-wrapper:hover .ant-input-number,\n .ds-input-number.ant-input-number-affix-wrapper:hover,\n .ds-input-number.ant-input-number-affix-wrapper:hover .ant-input-number {\n border-color: ${input.border.hover} !important;\n box-shadow: none !important;\n outline: none !important;\n }\n\n .ds-input-number.ant-input-number:focus,\n .ds-input-number.ant-input-number:focus-visible,\n .ds-input-number.ant-input-number-focused,\n .ds-input-number.ant-input-number-focused:hover,\n .ds-input-number.ant-input-number:focus-within,\n .ds-input-number.ant-input-number:focus-within:hover,\n .ds-input-number.ant-input-number-group-wrapper:focus-within,\n .ds-input-number.ant-input-number-group-wrapper:focus-within:hover,\n .ds-input-number.ant-input-number-group-wrapper:focus-within .ant-input-number,\n .ds-input-number.ant-input-number-group-wrapper:focus-within:hover .ant-input-number,\n .ds-input-number.ant-input-number-affix-wrapper-focused,\n .ds-input-number.ant-input-number-affix-wrapper-focused:hover,\n .ds-input-number.ant-input-number-affix-wrapper:focus-within,\n .ds-input-number.ant-input-number-affix-wrapper:focus-within:hover,\n .ds-input-number.ant-input-number-affix-wrapper:focus-within .ant-input-number,\n .ds-input-number.ant-input-number-affix-wrapper:focus-within:hover .ant-input-number {\n border-color: ${input.border.focus} !important;\n border-width: ${input.border.widthFocus} !important;\n border-style: solid !important;\n box-shadow: none !important;\n outline: none !important;\n }\n\n .ds-input-number.ant-input-number .ant-input-number-input,\n .ds-input-number.ant-input-number-group-wrapper .ant-input-number-input,\n .ds-input-number.ant-input-number-affix-wrapper .ant-input-number-input {\n color: ${input.text.default} !important;\n }\n\n .ds-input-number.ant-input-number:focus-within .ant-input-number-input,\n .ds-input-number.ant-input-number-focused .ant-input-number-input,\n .ds-input-number.ant-input-number-group-wrapper:focus-within .ant-input-number-input,\n .ds-input-number.ant-input-number-affix-wrapper:focus-within .ant-input-number-input {\n color: ${input.text.focus} !important;\n font-weight: ${input.focusFontWeight} !important;\n }\n\n .ds-input-number.ant-input-number-group-wrapper .ant-input-number-group-addon {\n border-color: ${input.border.default} !important;\n border-radius: 4px !important;\n color: ${input.text.default} !important;\n box-shadow: none !important;\n transition: none !important;\n }\n\n .ds-input-number.ant-input-number-group-wrapper:focus-within .ant-input-number-group-addon,\n .ds-input-number.ant-input-number-group-wrapper:focus-within:hover .ant-input-number-group-addon {\n border-color: transparent !important;\n box-shadow: none !important;\n outline: none !important;\n }\n\n .ds-input-number.ant-input-number-disabled,\n .ds-input-number.ant-input-number-disabled:hover,\n .ds-input-number.ant-input-number-group-wrapper:has(.ant-input-number-disabled),\n .ds-input-number.ant-input-number-affix-wrapper-disabled,\n .ds-input-number.ant-input-number-affix-wrapper-disabled:hover {\n background-color: ${input.background.disabled} !important;\n border-color: transparent !important;\n color: ${input.text.disabled} !important;\n box-shadow: none !important;\n }\n\n .ds-input-number.ant-input-number-readonly,\n .ds-input-number.ant-input-number:has(.ant-input-number-input[readonly]),\n .ds-input-number.ant-input-number-group-wrapper:has(.ant-input-number-input[readonly]),\n .ds-input-number.ant-input-number-affix-wrapper:has(.ant-input-number-input[readonly]) {\n background-color: ${input.background.readOnly} !important;\n border-color: ${input.border.default} !important;\n color: ${input.text.readOnly} !important;\n }\n\n .ds-input-number.ant-input-number-status-error,\n .ds-input-number.ant-input-number-affix-wrapper-status-error,\n .ds-input-number.ant-input-number-group-wrapper-status-error,\n .ds-input-number.ant-input-number-group-wrapper-status-error .ant-input-number {\n border-color: ${input.border.error} !important;\n }\n\n .ds-input-number.ant-input-number-status-success,\n .ds-input-number.ant-input-number-affix-wrapper-status-success,\n .ds-input-number.ant-input-number-group-wrapper-status-success,\n .ds-input-number.ant-input-number-group-wrapper-status-success .ant-input-number {\n border-color: ${input.border.success} !important;\n }\n\n .ds-input-number.ant-input-number-sm {\n height: ${input.height.small} !important;\n min-height: ${input.height.small} !important;\n }\n\n .ds-input-number.ant-input-number {\n height: ${input.height.middle} !important;\n min-height: ${input.height.middle} !important;\n }\n\n .ds-input-number.ant-input-number-lg {\n height: ${input.height.large} !important;\n min-height: ${input.height.large} !important;\n }\n\n .ds-input-number.ant-input-number .ant-input-number-actions,\n .ds-input-number.ant-input-number .ant-input-number-action,\n .ds-input-number.ant-input-number-affix-wrapper .ant-input-number-actions,\n .ds-input-number.ant-input-number-affix-wrapper .ant-input-number-action {\n transition: none !important;\n }\n\n .ds-input-number.ant-input-number .ant-input-number-action,\n .ds-input-number.ant-input-number-affix-wrapper .ant-input-number-action {\n color: ${input.text.focus} !important;\n }\n\n .ds-input-number.ant-input-number .ant-input-number-action:hover,\n .ds-input-number.ant-input-number-affix-wrapper .ant-input-number-action:hover {\n background: ${table.surface.rowHover} !important;\n }\n\n .ds-input-number.ant-input-number.ant-input-number-mode-input .ant-input-number-action-up,\n .ds-input-number.ant-input-number.ant-input-number-mode-input .ant-input-number-action-down {\n height: 50% !important;\n }\n\n .ds-input-number.ant-input-number.ant-input-number-outlined .ant-input-number-actions,\n .ds-input-number.ant-input-number-affix-wrapper.ant-input-number-affix-wrapper-outlined .ant-input-number-actions {\n opacity: 1 !important;\n width: 22px !important;\n transition: none !important;\n }\n `;\n};","import { InputNumber as AntInputNumber } from 'antd';\nimport type { ComponentProps } from 'react';\nimport { useEffect } from 'react';\nimport { ensureInputNumberStyles } from './inputNumberStyles';\n\nconst DS_INPUT_NUMBER_CLASS = 'ds-input-number';\n\nexport type InputNumberProps = ComponentProps<typeof AntInputNumber>;\n\nexport const InputNumber = ({ className = '', rootClassName = '', ...props }: InputNumberProps) => {\n useEffect(() => {\n ensureInputNumberStyles();\n }, []);\n\n const mergedClassName = `${DS_INPUT_NUMBER_CLASS} ${className}`.trim();\n const mergedRootClassName = `${DS_INPUT_NUMBER_CLASS}-root ${rootClassName}`.trim();\n\n return <AntInputNumber {...props} className={mergedClassName} rootClassName={mergedRootClassName} />;\n};\n\nInputNumber.displayName = 'InputNumber';","import { Checkbox as AntCheckbox } from 'antd';\nimport type { CheckboxProps as AntCheckboxProps } from 'antd';\nimport { useEffect } from 'react';\nimport { dsSemanticTokens } from '../../theme/ontadaTheme';\n\nexport type DSCheckboxSize = 'sm' | 'md' | 'lg';\nexport type DSCheckboxStatus = 'default' | 'error';\n\nexport type CheckboxProps = AntCheckboxProps & {\n dsSize?: DSCheckboxSize;\n dsStatus?: DSCheckboxStatus;\n};\n\nconst STYLE_ID = 'ds-checkbox-styles';\n\nexport const Checkbox = ({\n dsSize = 'md',\n dsStatus = 'default',\n className = '',\n ...props\n}: CheckboxProps) => {\n useEffect(() => {\n if (typeof document !== 'undefined') {\n let style = document.getElementById(STYLE_ID) as HTMLStyleElement | null;\n if (!style) {\n style = document.createElement('style');\n style.id = STYLE_ID;\n document.head.appendChild(style);\n }\n const { checkbox } = dsSemanticTokens;\n\n style.textContent = `\n .ds-checkbox.ant-checkbox-wrapper {\n align-items: center;\n }\n\n .ds-checkbox .ant-checkbox {\n top: 0;\n }\n\n .ds-checkbox .ant-checkbox .ant-checkbox-inner {\n border-radius: ${checkbox.radius}px;\n border-color: ${checkbox.border.default};\n border-width: ${checkbox.borderWidth.default}px;\n background-color: ${checkbox.background.default};\n transition: none !important;\n animation: none !important;\n }\n\n .ds-checkbox .ant-checkbox::after,\n .ds-checkbox .ant-checkbox .ant-checkbox-inner::after {\n transition: none !important;\n animation: none !important;\n }\n\n .ds-checkbox .ant-checkbox-input:focus-visible + .ant-checkbox-inner {\n outline: 2px solid ${checkbox.border.hover};\n outline-offset: 2px;\n }\n\n .ds-checkbox.ant-checkbox-wrapper:hover .ant-checkbox:not(.ant-checkbox-checked):not(.ant-checkbox-indeterminate):not(.ant-checkbox-disabled) .ant-checkbox-inner,\n .ds-checkbox .ant-checkbox:hover:not(.ant-checkbox-checked):not(.ant-checkbox-indeterminate):not(.ant-checkbox-disabled) .ant-checkbox-inner,\n .ds-checkbox .ant-checkbox:active:not(.ant-checkbox-checked):not(.ant-checkbox-indeterminate):not(.ant-checkbox-disabled) .ant-checkbox-inner {\n border-color: ${checkbox.border.default};\n border-width: ${checkbox.borderWidth.default}px;\n background-color: ${checkbox.background.default};\n }\n\n .ds-checkbox .ant-checkbox.ant-checkbox-checked .ant-checkbox-inner {\n border-color: ${checkbox.border.checked};\n background-color: ${checkbox.background.checked};\n }\n\n .ds-checkbox .ant-checkbox.ant-checkbox-checked .ant-checkbox-inner::after {\n border-color: ${checkbox.mark.checked};\n }\n\n .ds-checkbox .ant-checkbox.ant-checkbox-indeterminate .ant-checkbox-inner {\n border-color: ${checkbox.border.checked} !important;\n background-color: ${checkbox.background.checked} !important;\n }\n\n .ds-checkbox .ant-checkbox.ant-checkbox-indeterminate .ant-checkbox-inner::after {\n content: '';\n position: absolute;\n inset-inline-start: 50%;\n top: 50%;\n margin: 0;\n background-color: ${checkbox.mark.indeterminate} !important;\n border: none !important;\n border-radius: 1px;\n transform: translate(-50%, -50%) !important;\n opacity: 1;\n }\n\n .ds-checkbox .ant-checkbox.ant-checkbox-indeterminate.ant-checkbox-disabled .ant-checkbox-inner::after,\n .ds-checkbox.ant-checkbox-wrapper-disabled .ant-checkbox.ant-checkbox-indeterminate .ant-checkbox-inner::after {\n background-color: ${checkbox.mark.indeterminate} !important;\n }\n\n .ds-checkbox.ds-checkbox-status-error .ant-checkbox:not(.ant-checkbox-checked):not(.ant-checkbox-indeterminate):not(.ant-checkbox-disabled) .ant-checkbox-inner {\n border-color: ${checkbox.border.error};\n }\n\n .ds-checkbox.ds-checkbox-status-error.ant-checkbox-wrapper:hover .ant-checkbox:not(.ant-checkbox-checked):not(.ant-checkbox-indeterminate):not(.ant-checkbox-disabled) .ant-checkbox-inner,\n .ds-checkbox.ds-checkbox-status-error .ant-checkbox:hover:not(.ant-checkbox-checked):not(.ant-checkbox-indeterminate):not(.ant-checkbox-disabled) .ant-checkbox-inner,\n .ds-checkbox.ds-checkbox-status-error .ant-checkbox:active:not(.ant-checkbox-checked):not(.ant-checkbox-indeterminate):not(.ant-checkbox-disabled) .ant-checkbox-inner {\n border-color: ${checkbox.border.error};\n border-width: ${checkbox.borderWidth.default}px;\n }\n\n .ds-checkbox.ds-checkbox-status-error .ant-checkbox.ant-checkbox-checked .ant-checkbox-inner,\n .ds-checkbox.ds-checkbox-status-error .ant-checkbox.ant-checkbox-indeterminate .ant-checkbox-inner {\n border-color: ${checkbox.border.error};\n background-color: ${checkbox.background.errorChecked};\n }\n\n .ds-checkbox.ds-checkbox-status-error.ant-checkbox-wrapper:hover .ant-checkbox.ant-checkbox-checked .ant-checkbox-inner,\n .ds-checkbox.ds-checkbox-status-error.ant-checkbox-wrapper:hover .ant-checkbox.ant-checkbox-indeterminate .ant-checkbox-inner,\n .ds-checkbox.ds-checkbox-status-error .ant-checkbox.ant-checkbox-checked:hover .ant-checkbox-inner,\n .ds-checkbox.ds-checkbox-status-error .ant-checkbox.ant-checkbox-indeterminate:hover .ant-checkbox-inner,\n .ds-checkbox.ds-checkbox-status-error .ant-checkbox.ant-checkbox-checked:active .ant-checkbox-inner,\n .ds-checkbox.ds-checkbox-status-error .ant-checkbox.ant-checkbox-indeterminate:active .ant-checkbox-inner {\n border-color: ${checkbox.border.error};\n background-color: ${checkbox.background.errorChecked};\n }\n\n .ds-checkbox .ant-checkbox.ant-checkbox-disabled .ant-checkbox-inner,\n .ds-checkbox.ant-checkbox-wrapper-disabled .ant-checkbox .ant-checkbox-inner {\n background-color: ${checkbox.background.disabled};\n border-color: transparent;\n }\n\n .ds-checkbox .ant-checkbox.ant-checkbox-disabled.ant-checkbox-checked .ant-checkbox-inner::after,\n .ds-checkbox .ant-checkbox.ant-checkbox-disabled.ant-checkbox-indeterminate .ant-checkbox-inner::after {\n border-color: ${checkbox.mark.checked};\n border-width: 0;\n background-color: ${checkbox.mark.indeterminate};\n opacity: 0.95;\n }\n\n .ds-checkbox.ds-checkbox-size-sm .ant-checkbox .ant-checkbox-inner {\n width: ${checkbox.size.sm}px;\n height: ${checkbox.size.sm}px;\n }\n\n .ds-checkbox.ds-checkbox-size-sm .ant-checkbox.ant-checkbox-checked .ant-checkbox-inner::after {\n inset-inline-start: 4px;\n top: 1px;\n width: 5px;\n height: 9px;\n }\n\n .ds-checkbox.ds-checkbox-size-sm .ant-checkbox.ant-checkbox-indeterminate .ant-checkbox-inner::after {\n width: ${checkbox.indeterminate.sm.width}px !important;\n height: ${checkbox.indeterminate.sm.height}px !important;\n }\n\n .ds-checkbox.ds-checkbox-size-md .ant-checkbox .ant-checkbox-inner {\n width: ${checkbox.size.md}px;\n height: ${checkbox.size.md}px;\n }\n\n .ds-checkbox.ds-checkbox-size-md .ant-checkbox.ant-checkbox-checked .ant-checkbox-inner::after {\n inset-inline-start: 5px;\n top: 1px;\n width: 6px;\n height: 10px;\n }\n\n .ds-checkbox.ds-checkbox-size-md .ant-checkbox.ant-checkbox-indeterminate .ant-checkbox-inner::after {\n width: ${checkbox.indeterminate.md.width}px !important;\n height: ${checkbox.indeterminate.md.height}px !important;\n }\n\n .ds-checkbox.ds-checkbox-size-lg .ant-checkbox .ant-checkbox-inner {\n width: ${checkbox.size.lg}px;\n height: ${checkbox.size.lg}px;\n }\n\n .ds-checkbox.ds-checkbox-size-lg .ant-checkbox.ant-checkbox-checked .ant-checkbox-inner::after {\n inset-inline-start: 6px;\n top: 2px;\n width: 7px;\n height: 11px;\n }\n\n .ds-checkbox.ds-checkbox-size-lg .ant-checkbox.ant-checkbox-indeterminate .ant-checkbox-inner::after {\n width: ${checkbox.indeterminate.lg.width}px !important;\n height: ${checkbox.indeterminate.lg.height}px !important;\n }\n\n /* Ant v6 checkbox visuals are rendered on .ant-checkbox and its ::after */\n .ds-checkbox .ant-checkbox {\n width: ${checkbox.size.md}px;\n height: ${checkbox.size.md}px;\n border-radius: ${checkbox.radius}px;\n border: ${checkbox.borderWidth.default}px solid ${checkbox.border.default};\n background-color: ${checkbox.background.default};\n box-sizing: border-box;\n transition: none !important;\n animation: none !important;\n }\n\n .ds-checkbox.ds-checkbox-size-sm .ant-checkbox {\n width: ${checkbox.size.sm}px;\n height: ${checkbox.size.sm}px;\n }\n\n .ds-checkbox.ds-checkbox-size-lg .ant-checkbox {\n width: ${checkbox.size.lg}px;\n height: ${checkbox.size.lg}px;\n }\n\n .ds-checkbox.ant-checkbox-wrapper:hover .ant-checkbox:not(.ant-checkbox-checked):not(.ant-checkbox-indeterminate):not(.ant-checkbox-disabled),\n .ds-checkbox .ant-checkbox:hover:not(.ant-checkbox-checked):not(.ant-checkbox-indeterminate):not(.ant-checkbox-disabled),\n .ds-checkbox .ant-checkbox:active:not(.ant-checkbox-checked):not(.ant-checkbox-indeterminate):not(.ant-checkbox-disabled) {\n border-color: ${checkbox.border.default} !important;\n border-width: ${checkbox.borderWidth.default}px !important;\n background-color: ${checkbox.background.default} !important;\n }\n\n .ds-checkbox .ant-checkbox.ant-checkbox-indeterminate {\n border-color: ${checkbox.border.checked} !important;\n background-color: ${checkbox.background.checked} !important;\n }\n\n .ds-checkbox .ant-checkbox.ant-checkbox-checked {\n border-color: transparent !important;\n background-color: ${checkbox.background.checked} !important;\n }\n\n .ds-checkbox .ant-checkbox.ant-checkbox-checked::after {\n border-color: ${checkbox.mark.checked} !important;\n }\n\n .ds-checkbox .ant-checkbox.ant-checkbox-indeterminate::after {\n content: '' !important;\n position: absolute !important;\n left: 50% !important;\n top: 50% !important;\n margin: 0 !important;\n border: 0 !important;\n border-radius: 1px !important;\n background: ${checkbox.mark.indeterminate} !important;\n transform: translate(-50%, -50%) !important;\n opacity: 1 !important;\n }\n\n .ds-checkbox.ds-checkbox-size-sm .ant-checkbox.ant-checkbox-indeterminate::after {\n width: ${checkbox.indeterminate.sm.width}px !important;\n height: ${checkbox.indeterminate.sm.height}px !important;\n }\n\n .ds-checkbox.ds-checkbox-size-md .ant-checkbox.ant-checkbox-indeterminate::after {\n width: ${checkbox.indeterminate.md.width}px !important;\n height: ${checkbox.indeterminate.md.height}px !important;\n }\n\n .ds-checkbox.ds-checkbox-size-lg .ant-checkbox.ant-checkbox-indeterminate::after {\n width: ${checkbox.indeterminate.lg.width}px !important;\n height: ${checkbox.indeterminate.lg.height}px !important;\n }\n\n .ds-checkbox.ds-checkbox-status-error .ant-checkbox.ant-checkbox-checked,\n .ds-checkbox.ds-checkbox-status-error .ant-checkbox.ant-checkbox-indeterminate {\n border-color: ${checkbox.border.error} !important;\n background-color: ${checkbox.background.errorChecked} !important;\n }\n\n .ds-checkbox.ds-checkbox-status-error .ant-checkbox.ant-checkbox-checked::after {\n border-color: ${checkbox.mark.checked} !important;\n }\n\n .ds-checkbox .ant-checkbox.ant-checkbox-disabled.ant-checkbox-checked,\n .ds-checkbox .ant-checkbox.ant-checkbox-disabled.ant-checkbox-indeterminate,\n .ds-checkbox.ant-checkbox-wrapper-disabled .ant-checkbox.ant-checkbox-checked,\n .ds-checkbox.ant-checkbox-wrapper-disabled .ant-checkbox.ant-checkbox-indeterminate {\n border-color: transparent !important;\n background-color: ${checkbox.background.disabled} !important;\n }\n `;\n }\n }, []);\n\n const mergedClassName = `ds-checkbox ds-checkbox-size-${dsSize} ds-checkbox-status-${dsStatus} ${className}`.trim();\n\n return <AntCheckbox {...props} className={mergedClassName} />;\n};\n\nCheckbox.displayName = 'Checkbox';\nCheckbox.Group = AntCheckbox.Group;","import { Switch as AntSwitch } from 'antd';\nimport type { SwitchProps as AntSwitchProps } from 'antd';\nimport { useId } from 'react';\nimport { useEffect } from 'react';\nimport type { CSSProperties, ReactNode } from 'react';\nimport { dsSemanticTokens } from '../../theme/ontadaTheme';\n\nexport type DSSwitchLabelPosition = 'left' | 'right';\nexport type DSSwitchSize = 'sm' | 'md' | 'lg';\nexport type DSSwitchState = 'normal' | 'hover' | 'focus' | 'pressed';\n\nexport type SwitchProps = AntSwitchProps & {\n /** Optional DS label rendered alongside the switch control. */\n dsLabel?: ReactNode;\n /** DS label placement around the switch control. */\n dsLabelPosition?: DSSwitchLabelPosition;\n /** DS switch size variant from Figma. */\n dsSize?: DSSwitchSize;\n /** DS visual state variant from Figma. */\n dsState?: DSSwitchState;\n /** Show icon labels inside the switch track. */\n dsShowIcon?: boolean;\n /** Optional helper description rendered below the label. */\n dsShowSubLabel?: boolean;\n dsDescription?: ReactNode;\n};\n\nconst STYLE_ID = 'ds-switch-styles';\n\nfunction injectStyles() {\n if (typeof document === 'undefined') return;\n let style = document.getElementById(STYLE_ID) as HTMLStyleElement | null;\n if (!style) {\n style = document.createElement('style');\n style.id = STYLE_ID;\n document.head.appendChild(style);\n }\n\n const switchOn = dsSemanticTokens.button.primary.default;\n const switchOnHover = dsSemanticTokens.button.primary.hover;\n const switchOnPressed = dsSemanticTokens.button.primary.pressed;\n const switchOnDisabled = dsSemanticTokens.button.primary.disabledBg;\n const switchOff = dsSemanticTokens.table.text.body;\n const switchOffHover = dsSemanticTokens.table.text.header;\n const switchOffPressed = dsSemanticTokens.pagination.text.hover;\n const switchOffDisabled = dsSemanticTokens.checkbox.background.disabled;\n const thumb = dsSemanticTokens.checkbox.background.default;\n const focusOutline = dsSemanticTokens.modal.closeButton.focusOutline;\n const iconOn = dsSemanticTokens.button.primary.text;\n const iconOff = dsSemanticTokens.button.primary.default;\n const iconDisabled = dsSemanticTokens.button.primary.disabledText;\n\n style.textContent = `\n .ant-switch.ds-switch {\n background: ${switchOff};\n box-shadow: none;\n transition: none;\n }\n\n .ant-switch.ds-switch.ant-switch-checked {\n background: ${switchOn};\n }\n\n .ant-switch.ds-switch.ds-switch-size-sm {\n min-width: 28px;\n height: 16px;\n line-height: 16px;\n }\n\n .ant-switch.ds-switch.ds-switch-size-sm .ant-switch-handle {\n width: 12px;\n height: 12px;\n top: 2px;\n inset-inline-start: 2px;\n }\n\n .ant-switch.ds-switch.ds-switch-size-sm.ant-switch-checked .ant-switch-handle {\n inset-inline-start: calc(100% - 14px);\n }\n\n .ant-switch.ds-switch.ds-switch-size-md {\n min-width: 36px;\n height: 20px;\n line-height: 20px;\n }\n\n .ant-switch.ds-switch.ds-switch-size-md .ant-switch-handle {\n width: 16px;\n height: 16px;\n top: 2px;\n inset-inline-start: 2px;\n }\n\n .ant-switch.ds-switch.ds-switch-size-md.ant-switch-checked .ant-switch-handle {\n inset-inline-start: calc(100% - 18px);\n }\n\n .ant-switch.ds-switch.ds-switch-size-lg {\n min-width: 44px;\n height: 24px;\n line-height: 24px;\n }\n\n .ant-switch.ds-switch.ds-switch-size-lg .ant-switch-handle {\n width: 20px;\n height: 20px;\n top: 2px;\n inset-inline-start: 2px;\n }\n\n .ant-switch.ds-switch.ds-switch-size-lg.ant-switch-checked .ant-switch-handle {\n inset-inline-start: calc(100% - 22px);\n }\n\n .ant-switch.ds-switch .ant-switch-handle::before {\n background: ${thumb};\n box-shadow: none;\n }\n\n .ant-switch.ds-switch.ds-switch-state-hover:not(.ant-switch-checked):not(.ant-switch-disabled) {\n background: ${switchOffHover};\n }\n\n .ant-switch.ds-switch.ds-switch-state-hover.ant-switch-checked:not(.ant-switch-disabled) {\n background: ${switchOnHover};\n }\n\n .ant-switch.ds-switch.ds-switch-state-pressed:not(.ant-switch-checked):not(.ant-switch-disabled) {\n background: ${switchOffPressed};\n }\n\n .ant-switch.ds-switch.ds-switch-state-pressed.ant-switch-checked:not(.ant-switch-disabled) {\n background: ${switchOnPressed};\n }\n\n .ant-switch.ds-switch.ds-switch-state-focus:not(.ant-switch-disabled),\n .ant-switch.ds-switch:focus-visible:not(.ant-switch-disabled) {\n outline: 2px solid ${focusOutline};\n outline-offset: 2px;\n }\n\n .ant-switch.ds-switch.ant-switch-disabled:not(.ant-switch-checked) {\n background: ${switchOffDisabled};\n }\n\n .ant-switch.ds-switch.ant-switch-checked.ant-switch-disabled {\n background: ${switchOnDisabled};\n }\n\n .ant-switch.ds-switch .ant-switch-inner .ant-switch-inner-checked,\n .ant-switch.ds-switch .ant-switch-inner .ant-switch-inner-unchecked {\n font-size: 10px;\n font-weight: 700;\n }\n\n .ant-switch.ds-switch .ant-switch-inner .ant-switch-inner-checked {\n color: ${iconOn};\n }\n\n .ant-switch.ds-switch .ant-switch-inner .ant-switch-inner-unchecked {\n color: ${iconOff};\n }\n\n .ant-switch.ds-switch.ant-switch-disabled .ant-switch-inner .ant-switch-inner-checked,\n .ant-switch.ds-switch.ant-switch-disabled .ant-switch-inner .ant-switch-inner-unchecked {\n color: ${iconDisabled};\n }\n `;\n}\n\nfunction mergeClassNames(...names: Array<string | undefined>) {\n return names.filter(Boolean).join(' ');\n}\n\nconst containerStyle: CSSProperties = {\n display: 'inline-flex',\n alignItems: 'center',\n gap: 8,\n};\n\nconst labelStackStyle: CSSProperties = {\n display: 'inline-flex',\n flexDirection: 'column',\n gap: 2,\n};\n\nconst labelStyle: CSSProperties = {\n fontFamily: 'Nunito, sans-serif',\n fontSize: dsSemanticTokens.button.typography.small.fontSize,\n lineHeight: dsSemanticTokens.button.typography.small.lineHeight,\n fontWeight: 600,\n color: dsSemanticTokens.table.text.body,\n};\n\nconst descriptionStyle: CSSProperties = {\n fontFamily: 'Nunito, sans-serif',\n fontSize: 12,\n lineHeight: '16px',\n fontWeight: 600,\n color: dsSemanticTokens.table.text.sorterMuted,\n};\n\nexport const Switch = ({\n dsLabel,\n dsLabelPosition = 'right',\n dsSize = 'md',\n dsState = 'normal',\n dsShowIcon = false,\n dsShowSubLabel = false,\n dsDescription,\n id,\n className,\n checkedChildren,\n unCheckedChildren,\n ...props\n}: SwitchProps) => {\n useEffect(() => {\n injectStyles();\n }, []);\n\n const generatedId = useId();\n const switchId = id ?? (dsLabel || dsDescription ? generatedId : undefined);\n const resolvedCheckedChildren = dsShowIcon ? (checkedChildren ?? '+') : checkedChildren;\n const resolvedUncheckedChildren = dsShowIcon ? (unCheckedChildren ?? '-') : unCheckedChildren;\n const resolvedDescription = dsShowSubLabel ? dsDescription : undefined;\n\n const labelNode = dsLabel ? (\n <div style={labelStackStyle}>\n <label htmlFor={switchId} style={labelStyle}>\n {dsLabel}\n </label>\n {resolvedDescription ? <span style={descriptionStyle}>{resolvedDescription}</span> : null}\n </div>\n ) : null;\n\n return (\n <span style={containerStyle}>\n {dsLabelPosition === 'left' ? labelNode : null}\n <AntSwitch\n id={switchId}\n checkedChildren={resolvedCheckedChildren}\n unCheckedChildren={resolvedUncheckedChildren}\n className={mergeClassNames('ds-switch', `ds-switch-size-${dsSize}`, `ds-switch-state-${dsState}`, className)}\n {...props}\n />\n {dsLabelPosition === 'right' ? labelNode : null}\n </span>\n );\n};\n","import type { ReactNode } from 'react';\n\nexport type ClearVisibility = 'always' | 'hasValue' | 'never';\n\nexport type ClearConfig = {\n enabled?: boolean;\n label?: ReactNode;\n visibility?: ClearVisibility;\n onClear?: () => void;\n};\n\nexport const hasUsableValue = (value: unknown): boolean => {\n if (value === null || value === undefined) {\n return false;\n }\n\n if (typeof value === 'string') {\n return value.trim().length > 0;\n }\n\n if (Array.isArray(value)) {\n return value.length > 0;\n }\n\n if (typeof value === 'number' || typeof value === 'boolean') {\n return true;\n }\n\n if (typeof value === 'object') {\n const maybeDayjs = value as { isValid?: () => boolean };\n if (typeof maybeDayjs.isValid === 'function') {\n return maybeDayjs.isValid();\n }\n\n return Object.keys(value as Record<string, unknown>).length > 0;\n }\n\n return false;\n};\n\nexport const shouldShowClear = (\n clearable: boolean,\n visibility: ClearVisibility,\n value: unknown,\n): boolean => {\n if (!clearable || visibility === 'never') {\n return false;\n }\n\n if (visibility === 'always') {\n return true;\n }\n\n return hasUsableValue(value);\n};\n","import { Button, Flex } from 'antd';\nimport type { CSSProperties, ReactNode } from 'react';\nimport { shouldShowClear, type ClearConfig, type ClearVisibility } from './clearUtils';\nimport { dsSemanticTokens } from '../../theme/ontadaTheme';\n\nexport type FieldShellProps = {\n label: ReactNode;\n required?: boolean;\n htmlFor?: string;\n clear?: ClearConfig;\n clearable?: boolean;\n clearLabel?: ReactNode;\n clearVisibility?: ClearVisibility;\n clearValue?: unknown;\n onClear?: () => void;\n extraActions?: ReactNode;\n children: ReactNode;\n style?: CSSProperties;\n};\n\nconst rowStyle: CSSProperties = {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: 8,\n marginBottom: 6,\n};\n\nconst actionGroupStyle: CSSProperties = {\n display: 'inline-flex',\n alignItems: 'center',\n gap: 10,\n};\n\nconst labelStyle: CSSProperties = {\n fontSize: dsSemanticTokens.button.typography.small.fontSize,\n lineHeight: dsSemanticTokens.button.typography.small.lineHeight,\n fontWeight: 600,\n fontFamily: 'Nunito, sans-serif',\n};\n\nconst requiredIndicatorStyle: CSSProperties = {\n fontSize: 12,\n lineHeight: '16px',\n fontWeight: 600,\n color: dsSemanticTokens.tag.status.error.outline.text,\n display: 'inline-flex',\n alignItems: 'center',\n fontFamily: 'Nunito, sans-serif',\n};\n\nexport const FieldShell = ({\n label,\n required,\n htmlFor,\n clear,\n clearable = false,\n clearLabel = 'Clear',\n clearVisibility = 'always',\n clearValue,\n onClear,\n extraActions,\n children,\n style,\n}: FieldShellProps) => {\n const resolvedClearable = clear?.enabled ?? clearable;\n const resolvedClearLabel = clear?.label ?? clearLabel;\n const resolvedClearVisibility = clear?.visibility ?? clearVisibility;\n const resolvedClearHandler = clear?.onClear ?? onClear;\n const showClear =\n shouldShowClear(resolvedClearable, resolvedClearVisibility, clearValue) &&\n Boolean(resolvedClearHandler);\n\n return (\n <div style={style}>\n <div style={rowStyle}>\n <Flex align=\"center\" gap={6}>\n <label htmlFor={htmlFor} style={labelStyle}>\n {label}\n </label>\n {required ? <span style={requiredIndicatorStyle}>✱</span> : null}\n </Flex>\n\n <div style={actionGroupStyle}>\n {showClear ? (\n <Button\n type=\"link\"\n size=\"small\"\n onClick={resolvedClearHandler}\n style={{ padding: 0, height: 'auto' }}\n >\n {resolvedClearLabel}\n </Button>\n ) : null}\n {extraActions}\n </div>\n </div>\n {children}\n </div>\n );\n};\n","import { Button, Flex, Typography } from 'antd';\nimport type { CSSProperties, ReactNode } from 'react';\nimport { shouldShowClear, type ClearConfig, type ClearVisibility } from './clearUtils';\nimport { dsSemanticTokens } from '../../theme/ontadaTheme';\n\nexport type FieldSetShellProps = {\n title: ReactNode;\n required?: boolean;\n description?: ReactNode;\n clear?: ClearConfig;\n clearable?: boolean;\n clearLabel?: ReactNode;\n clearVisibility?: ClearVisibility;\n clearValue?: unknown;\n onClear?: () => void;\n actions?: ReactNode;\n children: ReactNode;\n style?: CSSProperties;\n};\n\nconst titleRowStyle: CSSProperties = {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n gap: 12,\n};\n\nconst titleStyle: CSSProperties = {\n margin: 0,\n fontSize: dsSemanticTokens.button.typography.small.fontSize,\n lineHeight: dsSemanticTokens.button.typography.small.lineHeight,\n fontWeight: 600,\n fontFamily: 'Nunito, sans-serif',\n};\n\nconst requiredIndicatorStyle: CSSProperties = {\n fontSize: 12,\n lineHeight: '16px',\n fontWeight: 600,\n color: dsSemanticTokens.tag.status.error.outline.text,\n display: 'inline-flex',\n alignItems: 'center',\n fontFamily: 'Nunito, sans-serif',\n};\n\nexport const FieldSetShell = ({\n title,\n required,\n description,\n clear,\n clearable = false,\n clearLabel = 'Clear All',\n clearVisibility = 'always',\n clearValue,\n onClear,\n actions,\n children,\n style,\n}: FieldSetShellProps) => {\n const resolvedClearable = clear?.enabled ?? clearable;\n const resolvedClearLabel = clear?.label ?? clearLabel;\n const resolvedClearVisibility = clear?.visibility ?? clearVisibility;\n const resolvedClearHandler = clear?.onClear ?? onClear;\n const showClear =\n shouldShowClear(resolvedClearable, resolvedClearVisibility, clearValue) &&\n Boolean(resolvedClearHandler);\n\n return (\n <div style={style}>\n <div style={titleRowStyle}>\n <Flex align=\"center\" gap={6}>\n <Typography.Text style={titleStyle}>\n {title}\n </Typography.Text>\n {required ? <span style={requiredIndicatorStyle}>✱</span> : null}\n </Flex>\n <Flex align=\"center\" gap={10}>\n {showClear ? (\n <Button\n type=\"link\"\n size=\"small\"\n onClick={resolvedClearHandler}\n style={{ padding: 0, height: 'auto' }}\n >\n {resolvedClearLabel}\n </Button>\n ) : null}\n {actions}\n </Flex>\n </div>\n {description ? (\n <Typography.Paragraph type=\"secondary\" style={{ marginTop: 4, marginBottom: 16 }}>\n {description}\n </Typography.Paragraph>\n ) : null}\n {children}\n </div>\n );\n};\n","import { Button } from 'antd';\nimport { useId, useState } from 'react';\nimport type { CSSProperties, ComponentProps, ReactNode } from 'react';\nimport { Icon } from '../../utils/icons';\nimport { FieldShell } from './FieldShell';\nimport { Input } from './Input';\n\ntype InputProps = ComponentProps<typeof Input>;\n\nexport type AccessiblePasswordInputProps = Omit<InputProps, 'onChange' | 'type'> & {\n fieldLabel: ReactNode;\n fieldRequired?: boolean;\n showPasswordLabel?: string;\n hidePasswordLabel?: string;\n passwordVisible?: boolean;\n defaultPasswordVisible?: boolean;\n onPasswordVisibleChange?: (visible: boolean) => void;\n onValueChange?: (nextValue: string) => void;\n containerStyle?: CSSProperties;\n fieldActions?: ReactNode;\n};\n\nconst suffixStyle: CSSProperties = {\n display: 'inline-flex',\n alignItems: 'center',\n gap: 8,\n};\n\nexport const AccessiblePasswordInput = ({\n fieldLabel,\n fieldRequired,\n showPasswordLabel = 'Show password',\n hidePasswordLabel = 'Hide password',\n passwordVisible,\n defaultPasswordVisible = false,\n onPasswordVisibleChange,\n onValueChange,\n containerStyle,\n fieldActions,\n id,\n suffix,\n value,\n disabled,\n ...inputProps\n}: AccessiblePasswordInputProps) => {\n const generatedId = useId();\n const inputId = id ?? generatedId;\n const [internalPasswordVisible, setInternalPasswordVisible] = useState(defaultPasswordVisible);\n const isPasswordVisible = passwordVisible ?? internalPasswordVisible;\n const visibilityLabel = isPasswordVisible ? hidePasswordLabel : showPasswordLabel;\n\n const setPasswordVisibility = (nextVisible: boolean) => {\n if (passwordVisible == null) {\n setInternalPasswordVisible(nextVisible);\n }\n\n onPasswordVisibleChange?.(nextVisible);\n };\n\n const passwordToggle = (\n <Button\n type=\"text\"\n htmlType=\"button\"\n aria-label={visibilityLabel}\n aria-controls={inputId}\n aria-pressed={isPasswordVisible}\n title={visibilityLabel}\n disabled={disabled}\n onMouseDown={(event) => event.preventDefault()}\n onClick={() => setPasswordVisibility(!isPasswordVisible)}\n style={{ paddingInline: 4, height: 24, minWidth: 24 }}\n icon={\n <span aria-hidden=\"true\" style={{ display: 'inline-flex', alignItems: 'center' }}>\n <Icon name={isPasswordVisible ? 'eyeOff' : 'eye'} size={16} />\n </span>\n }\n />\n );\n\n return (\n <FieldShell\n label={fieldLabel}\n required={fieldRequired}\n htmlFor={inputId}\n extraActions={fieldActions}\n style={containerStyle}\n >\n <Input\n id={inputId}\n type={isPasswordVisible ? 'text' : 'password'}\n value={value}\n disabled={disabled}\n suffix={suffix ? <span style={suffixStyle}>{suffix}{passwordToggle}</span> : passwordToggle}\n onChange={(event) => {\n inputProps.onChange?.(event);\n onValueChange?.(event.target.value);\n }}\n {...inputProps}\n />\n </FieldShell>\n );\n};\n","import { Checkbox, Typography } from 'antd';\nimport type { CSSProperties, ReactNode } from 'react';\nimport { CORE_COLORS } from '../../tokens/core';\nimport type { CheckboxGroupProps } from 'antd';\n\ntype AntCheckboxGroupProps = CheckboxGroupProps;\n\nexport type AccessibleCheckboxGroupProps = Omit<AntCheckboxGroupProps, 'onChange'> & {\n legend: ReactNode;\n required?: boolean;\n description?: ReactNode;\n onSelectionChange?: (selectedValues: (string | number)[]) => void;\n fieldsetStyle?: CSSProperties;\n legendStyle?: CSSProperties;\n};\n\nconst fieldsetStyle: CSSProperties = {\n border: 'none',\n padding: 0,\n margin: 0,\n minWidth: 0,\n};\n\nconst legendBaseStyle: CSSProperties = {\n fontWeight: 600,\n marginBottom: 6,\n display: 'block',\n};\n\nconst descriptionStyle: CSSProperties = {\n fontSize: '12px',\n marginTop: 4,\n marginBottom: 8,\n opacity: 0.65,\n};\n\nconst requiredIndicatorStyle: CSSProperties = {\n fontSize: 12,\n lineHeight: '16px',\n fontWeight: 600,\n color: CORE_COLORS.status.errorDark,\n display: 'inline-flex',\n alignItems: 'center',\n marginLeft: 4,\n fontFamily: 'Nunito, sans-serif',\n};\n\nexport const AccessibleCheckboxGroup = ({\n legend,\n required,\n description,\n onSelectionChange,\n fieldsetStyle: customFieldsetStyle,\n legendStyle: customLegendStyle,\n ...checkboxGroupProps\n}: AccessibleCheckboxGroupProps) => {\n return (\n <fieldset style={{ ...fieldsetStyle, ...customFieldsetStyle }}>\n <legend style={{ ...legendBaseStyle, ...customLegendStyle }}>\n <span>\n {legend}\n {required ? (\n <Typography.Text type=\"danger\" style={requiredIndicatorStyle}>\n ✱\n </Typography.Text>\n ) : null}\n </span>\n </legend>\n\n {description ? (\n <div style={descriptionStyle}>{description}</div>\n ) : null}\n\n <Checkbox.Group\n {...checkboxGroupProps}\n onChange={(values) => {\n checkboxGroupProps.onChange?.(values);\n onSelectionChange?.(values);\n }}\n />\n </fieldset>\n );\n};\n","import { Radio, Typography } from 'antd';\nimport type { CSSProperties, ReactNode } from 'react';\nimport { CORE_COLORS } from '../../tokens/core';\nimport type { RadioGroupProps } from 'antd';\n\ntype AntRadioGroupProps = RadioGroupProps;\n\nexport type AccessibleRadioGroupProps = Omit<AntRadioGroupProps, 'onChange'> & {\n legend: ReactNode;\n required?: boolean;\n description?: ReactNode;\n onSelectionChange?: (value: string | number) => void;\n fieldsetStyle?: CSSProperties;\n legendStyle?: CSSProperties;\n};\n\nconst fieldsetStyle: CSSProperties = {\n border: 'none',\n padding: 0,\n margin: 0,\n minWidth: 0,\n};\n\nconst legendBaseStyle: CSSProperties = {\n fontWeight: 600,\n marginBottom: 6,\n display: 'block',\n};\n\nconst descriptionStyle: CSSProperties = {\n fontSize: '12px',\n marginTop: 4,\n marginBottom: 8,\n opacity: 0.65,\n};\n\nconst requiredIndicatorStyle: CSSProperties = {\n fontSize: 12,\n lineHeight: '16px',\n fontWeight: 600,\n color: CORE_COLORS.status.errorDark,\n display: 'inline-flex',\n alignItems: 'center',\n marginLeft: 4,\n fontFamily: 'Nunito, sans-serif',\n};\n\nexport const AccessibleRadioGroup = ({\n legend,\n required,\n description,\n onSelectionChange,\n fieldsetStyle: customFieldsetStyle,\n legendStyle: customLegendStyle,\n ...radioGroupProps\n}: AccessibleRadioGroupProps) => {\n return (\n <fieldset style={{ ...fieldsetStyle, ...customFieldsetStyle }}>\n <legend style={{ ...legendBaseStyle, ...customLegendStyle }}>\n <span>\n {legend}\n {required ? (\n <Typography.Text type=\"danger\" style={requiredIndicatorStyle}>\n ✱\n </Typography.Text>\n ) : null}\n </span>\n </legend>\n\n {description ? (\n <div style={descriptionStyle}>{description}</div>\n ) : null}\n\n <Radio.Group\n {...radioGroupProps}\n onChange={(e) => {\n radioGroupProps.onChange?.(e);\n onSelectionChange?.(e.target.value);\n }}\n />\n </fieldset>\n );\n};\n","import { Switch, Typography } from 'antd';\nimport { useId } from 'react';\nimport type { CSSProperties, ReactNode } from 'react';\nimport { CORE_COLORS } from '../../tokens/core';\nimport type { SwitchProps } from 'antd';\n\ntype AntSwitchProps = SwitchProps;\n\nexport type AccessibleSwitchProps = Omit<AntSwitchProps, 'onChange'> & {\n label: ReactNode;\n description?: ReactNode;\n required?: boolean;\n onToggle?: (checked: boolean) => void;\n containerStyle?: CSSProperties;\n};\n\nconst containerBaseStyle: CSSProperties = {\n display: 'flex',\n alignItems: 'center',\n gap: 12,\n};\n\nconst labelWrapperStyle: CSSProperties = {\n display: 'flex',\n flexDirection: 'column',\n gap: 2,\n};\n\nconst labelStyle: CSSProperties = {\n fontWeight: 600,\n};\n\nconst descriptionStyle: CSSProperties = {\n fontSize: '12px',\n opacity: 0.65,\n};\n\nconst requiredIndicatorStyle: CSSProperties = {\n fontSize: 12,\n lineHeight: '16px',\n fontWeight: 600,\n color: CORE_COLORS.status.errorDark,\n display: 'inline-flex',\n alignItems: 'center',\n marginLeft: 4,\n fontFamily: 'Nunito, sans-serif',\n};\n\nexport const AccessibleSwitch = ({\n label,\n description,\n required,\n onToggle,\n containerStyle: customContainerStyle,\n id,\n ...switchProps\n}: AccessibleSwitchProps) => {\n const generatedId = useId();\n const switchId = id ?? generatedId;\n\n return (\n <div style={{ ...containerBaseStyle, ...customContainerStyle }}>\n <Switch\n id={switchId}\n {...switchProps}\n onChange={(checked) => {\n switchProps.onChange?.(checked);\n onToggle?.(checked);\n }}\n aria-label={typeof label === 'string' ? label : undefined}\n aria-describedby={description ? `${switchId}-description` : undefined}\n />\n <div style={labelWrapperStyle}>\n <label htmlFor={switchId} style={labelStyle}>\n {label}\n {required ? (\n <Typography.Text type=\"danger\" style={requiredIndicatorStyle}>\n ✱\n </Typography.Text>\n ) : null}\n </label>\n {description ? (\n <div id={`${switchId}-description`} style={descriptionStyle}>\n {description}\n </div>\n ) : null}\n </div>\n </div>\n );\n};\n","import { useId } from 'react';\nimport type { CSSProperties, ReactNode } from 'react';\nimport { CORE_COLORS } from '../../tokens/core';\nimport { Select } from './Select';\nimport type { DSSelectProps } from './Select';\n\ntype AntSelectProps = DSSelectProps;\n\nexport type AccessibleSelectProps = Omit<AntSelectProps, 'onChange' | 'id'> & {\n fieldLabel: ReactNode;\n required?: boolean;\n description?: ReactNode;\n onValueChange?: (value: string | number | null) => void;\n containerStyle?: CSSProperties;\n selectId?: string;\n};\n\nconst containerStyle: CSSProperties = {\n display: 'flex',\n flexDirection: 'column',\n gap: 6,\n};\n\nconst labelStyle: CSSProperties = {\n fontWeight: 600,\n display: 'flex',\n alignItems: 'center',\n gap: 4,\n};\n\nconst descriptionStyle: CSSProperties = {\n fontSize: '12px',\n opacity: 0.65,\n};\n\nconst requiredIndicatorStyle: CSSProperties = {\n fontSize: 12,\n lineHeight: '16px',\n fontWeight: 600,\n color: CORE_COLORS.status.errorDark,\n display: 'inline-flex',\n alignItems: 'center',\n fontFamily: 'Nunito, sans-serif',\n};\n\nexport const AccessibleSelect = ({\n fieldLabel,\n required,\n description,\n onValueChange,\n containerStyle: customContainerStyle,\n selectId: providedId,\n ...selectProps\n}: AccessibleSelectProps) => {\n const generatedId = useId();\n const selectId = providedId ?? generatedId;\n const resolvedSelectProps = selectProps;\n\n return (\n <div style={{ ...containerStyle, ...customContainerStyle }}>\n <label htmlFor={selectId} style={labelStyle}>\n {fieldLabel}\n {required ? <span style={requiredIndicatorStyle}>✱</span> : null}\n </label>\n\n {description ? (\n <div id={`${selectId}-description`} style={descriptionStyle}>\n {description}\n </div>\n ) : null}\n\n <Select\n id={selectId}\n {...resolvedSelectProps}\n onChange={(value) => {\n resolvedSelectProps.onChange?.(value);\n onValueChange?.(value ?? null);\n }}\n aria-describedby={description ? `${selectId}-description` : undefined}\n />\n </div>\n );\n};\n","import { DatePicker } from 'antd';\nimport { useId, useEffect } from 'react';\nimport type { CSSProperties, ReactNode } from 'react';\nimport { CORE_COLORS } from '../../tokens/core';\nimport type { DatePickerProps } from 'antd';\nimport {\n DS_PICKER_CLASS,\n DS_PICKER_PANEL_CLASS,\n ensureDatePickerStyles,\n mergePickerClassNames,\n} from './datePickerStyles';\nimport { DS_DATE_FORMAT } from './DatePicker';\n\ntype AntDatePickerProps = DatePickerProps;\n\nexport type AccessibleDatePickerProps = Omit<AntDatePickerProps, 'onChange' | 'id'> & {\n fieldLabel: ReactNode;\n required?: boolean;\n description?: ReactNode;\n errorMessage?: ReactNode;\n onValueChange?: (value: any) => void;\n containerStyle?: CSSProperties;\n datePickerId?: string;\n};\n\nconst containerStyle: CSSProperties = {\n display: 'flex',\n flexDirection: 'column',\n gap: 6,\n};\n\nconst labelStyle: CSSProperties = {\n fontWeight: 600,\n display: 'flex',\n alignItems: 'center',\n gap: 4,\n};\n\nconst descriptionStyle: CSSProperties = {\n fontSize: '12px',\n opacity: 0.65,\n};\n\nconst errorStyle: CSSProperties = {\n fontSize: '12px',\n color: CORE_COLORS.status.error,\n};\n\nconst requiredIndicatorStyle: CSSProperties = {\n fontSize: 12,\n lineHeight: '16px',\n fontWeight: 600,\n color: CORE_COLORS.status.errorDark,\n display: 'inline-flex',\n alignItems: 'center',\n fontFamily: 'Nunito, sans-serif',\n};\n\nexport const AccessibleDatePicker = ({\n fieldLabel,\n required,\n description,\n errorMessage,\n onValueChange,\n containerStyle: customContainerStyle,\n datePickerId: providedId,\n ...datePickerProps\n}: AccessibleDatePickerProps) => {\n useEffect(() => {\n ensureDatePickerStyles();\n }, []);\n\n const generatedId = useId();\n const datePickerId = providedId ?? generatedId;\n const descriptionId = `${datePickerId}-description`;\n const errorId = `${datePickerId}-error`;\n\n const ariaDescribedBy = [\n description ? descriptionId : null,\n errorMessage ? errorId : null,\n ]\n .filter(Boolean)\n .join(' ');\n\n const {\n className: providedClassName,\n popupClassName: providedPopupClassName,\n classNames: providedClassNames,\n ...resolvedPickerProps\n } = datePickerProps;\n\n const mergedClassName = mergePickerClassNames(DS_PICKER_CLASS, providedClassName);\n const mergedPopupRootClassName = mergePickerClassNames(\n DS_PICKER_PANEL_CLASS,\n (providedClassNames as any)?.popup?.root,\n providedPopupClassName,\n );\n\n const mergedClassNames = {\n ...(providedClassNames ?? {}),\n popup: {\n ...((providedClassNames as any)?.popup ?? {}),\n root: mergedPopupRootClassName,\n },\n } as DatePickerProps['classNames'];\n\n return (\n <div style={{ ...containerStyle, ...customContainerStyle }}>\n <label htmlFor={datePickerId} style={labelStyle}>\n {fieldLabel}\n {required ? <span style={requiredIndicatorStyle}>✱</span> : null}\n </label>\n\n {description ? (\n <div id={descriptionId} style={descriptionStyle}>\n {description}\n </div>\n ) : null}\n\n <DatePicker\n id={datePickerId}\n {...resolvedPickerProps}\n className={mergedClassName}\n popupClassName={mergedPopupRootClassName}\n classNames={mergedClassNames}\n format={resolvedPickerProps.format ?? DS_DATE_FORMAT}\n placeholder={resolvedPickerProps.placeholder ?? DS_DATE_FORMAT}\n onChange={(date, dateString) => {\n resolvedPickerProps.onChange?.(date, dateString);\n onValueChange?.(date);\n }}\n status={errorMessage ? 'error' : undefined}\n aria-describedby={ariaDescribedBy || undefined}\n aria-invalid={Boolean(errorMessage)}\n />\n\n {errorMessage ? (\n <div id={errorId} style={errorStyle} role=\"alert\">\n {errorMessage}\n </div>\n ) : null}\n </div>\n );\n};\n","import type { CSSProperties, ReactNode } from 'react';\nimport { CORE_COLORS } from '../../tokens/core';\nimport { Icon } from '../../utils/useCustomIcon';\n\nexport type FormErrorProps = {\n message?: ReactNode;\n containerStyle?: CSSProperties;\n live?: 'polite' | 'assertive';\n};\n\nconst defaultContainerStyle: CSSProperties = {\n fontSize: '12px',\n lineHeight: '16px',\n letterSpacing: '0.012px',\n fontWeight: 600,\n color: CORE_COLORS.status.errorDark,\n fontFamily: 'Nunito, sans-serif',\n marginTop: 0,\n display: 'flex',\n alignItems: 'flex-start',\n gap: 6,\n};\n\nconst iconStyle: CSSProperties = {\n flexShrink: 0,\n width: 14,\n height: 14,\n lineHeight: '14px',\n marginTop: 1,\n};\n\n/**\n * Accessible form error message component\n * - Uses role=\"alert\" for polite announcements (default)\n * - Supports aria-live=\"assertive\" for urgent errors\n * - Pairs with aria-invalid and aria-describedby on form controls\n */\nexport const FormError = ({\n message,\n containerStyle: customContainerStyle,\n live = 'polite',\n}: FormErrorProps) => {\n if (!message) {\n return null;\n }\n\n return (\n <div\n role={live === 'assertive' ? 'alert' : undefined}\n aria-live={live === 'assertive' ? 'assertive' : 'polite'}\n style={{ ...defaultContainerStyle, ...customContainerStyle }}\n >\n <span style={iconStyle} aria-hidden=\"true\">\n <Icon name=\"alertTriangle\" size={14} />\n </span>\n <span>{message}</span>\n </div>\n );\n};\n","import type { CSSProperties, ReactNode } from 'react';\nimport { CORE_COLORS } from '../../tokens/core';\nimport { Icon } from '../../utils/useCustomIcon';\n\nexport type FormSuccessProps = {\n message?: ReactNode;\n containerStyle?: CSSProperties;\n live?: 'polite' | 'assertive';\n};\n\nconst defaultContainerStyle: CSSProperties = {\n fontSize: '12px',\n lineHeight: '16px',\n letterSpacing: '0.012px',\n fontWeight: 600,\n color: CORE_COLORS.text.primary,\n fontFamily: 'Nunito, sans-serif',\n marginTop: 0,\n display: 'flex',\n alignItems: 'flex-start',\n gap: 6,\n};\n\nconst iconStyle: CSSProperties = {\n flexShrink: 0,\n width: 14,\n height: 14,\n lineHeight: '14px',\n marginTop: 1,\n color: CORE_COLORS.status.successDark,\n};\n\n/**\n * Accessible form success message component for submission validation feedback.\n */\nexport const FormSuccess = ({\n message,\n containerStyle: customContainerStyle,\n live = 'polite',\n}: FormSuccessProps) => {\n if (!message) {\n return null;\n }\n\n return (\n <div\n role={live === 'assertive' ? 'status' : undefined}\n aria-live={live === 'assertive' ? 'assertive' : 'polite'}\n style={{ ...defaultContainerStyle, ...customContainerStyle }}\n >\n <span style={iconStyle} aria-hidden=\"true\">\n <Icon name=\"check\" size={14} />\n </span>\n <span>{message}</span>\n </div>\n );\n};\n","import type { CSSProperties, ReactNode } from 'react';\nimport { CORE_COLORS } from '../../tokens/core';\nimport { Icon } from '../../utils/useCustomIcon';\n\nexport type FormWarningProps = {\n message?: ReactNode;\n containerStyle?: CSSProperties;\n live?: 'polite' | 'assertive';\n};\n\nconst defaultContainerStyle: CSSProperties = {\n fontSize: '12px',\n lineHeight: '16px',\n letterSpacing: '0.012px',\n fontWeight: 600,\n color: CORE_COLORS.text.primary,\n fontFamily: 'Nunito, sans-serif',\n marginTop: 0,\n display: 'flex',\n alignItems: 'flex-start',\n gap: 6,\n};\n\nconst iconStyle: CSSProperties = {\n flexShrink: 0,\n width: 14,\n height: 14,\n lineHeight: '14px',\n marginTop: 1,\n color: CORE_COLORS.status.warningDark,\n};\n\n/**\n * Accessible form warning message component for non-blocking validation feedback.\n */\nexport const FormWarning = ({\n message,\n containerStyle: customContainerStyle,\n live = 'polite',\n}: FormWarningProps) => {\n if (!message) {\n return null;\n }\n\n return (\n <div\n role={live === 'assertive' ? 'status' : undefined}\n aria-live={live === 'assertive' ? 'assertive' : 'polite'}\n style={{ ...defaultContainerStyle, ...customContainerStyle }}\n >\n <span style={iconStyle} aria-hidden=\"true\">\n <Icon name=\"alertTriangle\" size={14} />\n </span>\n <span>{message}</span>\n </div>\n );\n};\n","import type { ReactNode } from 'react';\n\nexport type FormFieldValidationState = 'idle' | 'error' | 'success';\n\nexport type ValidationRule = {\n type: 'required' | 'email' | 'minLength' | 'maxLength' | 'pattern' | 'custom';\n message: string;\n validate?: (value: any) => boolean;\n minLength?: number;\n maxLength?: number;\n pattern?: RegExp;\n};\n\nexport type FieldValidator = {\n rules: ValidationRule[];\n validate: (value: any) => { isValid: boolean; error?: string };\n};\n\n/**\n * Creates a field validator with reusable rules\n * Designed for accessible form validation with clear error messaging\n */\nexport const createFieldValidator = (rules: ValidationRule[]): FieldValidator => {\n return {\n rules,\n validate: (value: any) => {\n for (const rule of rules) {\n let isValid = false;\n\n switch (rule.type) {\n case 'required':\n isValid = value !== undefined && value !== null && value !== '';\n break;\n\n case 'email': {\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n isValid = !value || emailRegex.test(value);\n break;\n }\n\n case 'minLength':\n isValid =\n !value || (typeof value === 'string' && value.length >= (rule.minLength ?? 0));\n break;\n\n case 'maxLength':\n isValid =\n !value || (typeof value === 'string' && value.length <= (rule.maxLength ?? 999));\n break;\n\n case 'pattern':\n isValid = !value || (rule.pattern?.test(value) ?? false);\n break;\n\n case 'custom':\n isValid = rule.validate?.(value) ?? false;\n break;\n\n default:\n isValid = true;\n }\n\n if (!isValid) {\n return {\n isValid: false,\n error: rule.message,\n };\n }\n }\n\n return { isValid: true };\n },\n };\n};\n\n/**\n * Common validation rule presets\n */\nexport const ValidationRules = {\n required: (message = 'This field is required'): ValidationRule => ({\n type: 'required',\n message,\n }),\n\n email: (message = 'Please enter a valid email address'): ValidationRule => ({\n type: 'email',\n message,\n }),\n\n minLength: (minLength: number, message?: string): ValidationRule => ({\n type: 'minLength',\n message: message ?? `Must be at least ${minLength} characters`,\n minLength,\n }),\n\n maxLength: (maxLength: number, message?: string): ValidationRule => ({\n type: 'maxLength',\n message: message ?? `Must not exceed ${maxLength} characters`,\n maxLength,\n }),\n\n pattern: (pattern: RegExp, message: string): ValidationRule => ({\n type: 'pattern',\n message,\n pattern,\n }),\n\n custom: (validate: (value: any) => boolean, message: string): ValidationRule => ({\n type: 'custom',\n message,\n validate,\n }),\n};\n","import type { CSSProperties, ReactNode } from 'react';\nimport { FieldShell } from './FieldShell';\nimport { Input } from './Input';\nimport type { ClearConfig, ClearVisibility } from './clearUtils';\n\ntype InputProps = React.ComponentProps<typeof Input>;\n\nexport type ClearableInputProps = Omit<InputProps, 'onChange'> & {\n fieldLabel: ReactNode;\n fieldRequired?: boolean;\n clear?: ClearConfig;\n clearable?: boolean;\n clearLabel?: ReactNode;\n clearVisibility?: ClearVisibility;\n onClear?: () => void;\n onValueChange?: (nextValue: string) => void;\n containerStyle?: CSSProperties;\n fieldActions?: ReactNode;\n};\n\nexport const ClearableInput = ({\n fieldLabel,\n fieldRequired,\n clear,\n clearable = true,\n clearLabel,\n clearVisibility = 'always',\n onClear,\n onValueChange,\n value,\n containerStyle,\n fieldActions,\n id,\n ...inputProps\n}: ClearableInputProps) => {\n const clearAction = clear?.onClear ?? onClear;\n\n const handleClear = () => {\n clearAction?.();\n onValueChange?.('');\n };\n\n return (\n <FieldShell\n label={fieldLabel}\n required={fieldRequired}\n htmlFor={id}\n clear={{\n enabled: clear?.enabled ?? clearable,\n label: clear?.label ?? clearLabel,\n visibility: clear?.visibility ?? clearVisibility,\n onClear: handleClear,\n }}\n clearValue={value}\n extraActions={fieldActions}\n style={containerStyle}\n >\n <Input\n id={id}\n value={value}\n onChange={(event) => {\n inputProps.onChange?.(event);\n onValueChange?.(event.target.value);\n }}\n {...inputProps}\n />\n </FieldShell>\n );\n};\n","import type { CSSProperties, ReactNode } from 'react';\nimport { FieldShell } from './FieldShell';\nimport type { ClearConfig, ClearVisibility } from './clearUtils';\nimport { Select } from './Select';\nimport type { DSSelectProps } from './Select';\n\ntype SelectProps = DSSelectProps;\n\nexport type ClearableSelectProps = Omit<SelectProps, 'onChange'> & {\n fieldLabel: ReactNode;\n fieldRequired?: boolean;\n clear?: ClearConfig;\n clearable?: boolean;\n clearLabel?: ReactNode;\n clearVisibility?: ClearVisibility;\n onClear?: () => void;\n onValueChange?: (nextValue: SelectProps['value']) => void;\n clearToValue?: SelectProps['value'];\n containerStyle?: CSSProperties;\n fieldActions?: ReactNode;\n};\n\nexport const ClearableSelect = ({\n fieldLabel,\n fieldRequired,\n clear,\n clearable = true,\n clearLabel,\n clearVisibility = 'always',\n onClear,\n onValueChange,\n clearToValue,\n value,\n containerStyle,\n fieldActions,\n id,\n ...selectProps\n}: ClearableSelectProps) => {\n const resolvedSelectProps = selectProps;\n\n const clearValue = clearToValue === undefined ? undefined : clearToValue;\n const clearAction = clear?.onClear ?? onClear;\n\n const handleClear = () => {\n clearAction?.();\n onValueChange?.(clearValue);\n resolvedSelectProps.onChange?.(clearValue, undefined as never);\n };\n\n return (\n <FieldShell\n label={fieldLabel}\n required={fieldRequired}\n htmlFor={id}\n clear={{\n enabled: clear?.enabled ?? clearable,\n label: clear?.label ?? clearLabel,\n visibility: clear?.visibility ?? clearVisibility,\n onClear: handleClear,\n }}\n clearValue={value}\n extraActions={fieldActions}\n style={containerStyle}\n >\n <Select\n {...resolvedSelectProps}\n id={id}\n value={value}\n onChange={(nextValue, option) => {\n resolvedSelectProps.onChange?.(nextValue, option);\n onValueChange?.(nextValue);\n }}\n style={{ width: '100%', ...resolvedSelectProps.style }}\n />\n </FieldShell>\n );\n};\n","import { DatePicker } from 'antd';\nimport { useEffect } from 'react';\nimport type { CSSProperties, ReactNode } from 'react';\nimport type { Dayjs } from 'dayjs';\nimport { FieldShell } from './FieldShell';\nimport type { ClearConfig, ClearVisibility } from './clearUtils';\nimport {\n DS_PICKER_CLASS,\n DS_PICKER_PANEL_CLASS,\n ensureDatePickerStyles,\n mergePickerClassNames,\n} from './datePickerStyles';\nimport { DS_DATE_FORMAT } from './DatePicker';\n\ntype DatePickerProps = React.ComponentProps<typeof DatePicker>;\n\nexport type ClearableDatePickerProps = Omit<DatePickerProps, 'onChange'> & {\n fieldLabel: ReactNode;\n fieldRequired?: boolean;\n clear?: ClearConfig;\n clearable?: boolean;\n clearLabel?: ReactNode;\n clearVisibility?: ClearVisibility;\n onClear?: () => void;\n onValueChange?: (nextValue: Dayjs | null) => void;\n containerStyle?: CSSProperties;\n fieldActions?: ReactNode;\n};\n\nexport const ClearableDatePicker = ({\n fieldLabel,\n fieldRequired,\n clear,\n clearable = true,\n clearLabel,\n clearVisibility = 'always',\n onClear,\n onValueChange,\n value,\n containerStyle,\n fieldActions,\n id,\n ...pickerProps\n}: ClearableDatePickerProps) => {\n useEffect(() => {\n ensureDatePickerStyles();\n }, []);\n\n const clearAction = clear?.onClear ?? onClear;\n\n const handleClear = () => {\n clearAction?.();\n onValueChange?.(null);\n pickerProps.onChange?.(null, '');\n };\n\n const {\n className: providedClassName,\n popupClassName: providedPopupClassName,\n classNames: providedClassNames,\n ...resolvedPickerProps\n } = pickerProps;\n\n const mergedClassName = mergePickerClassNames(DS_PICKER_CLASS, providedClassName);\n const mergedPopupRootClassName = mergePickerClassNames(\n DS_PICKER_PANEL_CLASS,\n (providedClassNames as any)?.popup?.root,\n providedPopupClassName,\n );\n\n const mergedClassNames = {\n ...(providedClassNames ?? {}),\n popup: {\n ...((providedClassNames as any)?.popup ?? {}),\n root: mergedPopupRootClassName,\n },\n } as DatePickerProps['classNames'];\n\n return (\n <FieldShell\n label={fieldLabel}\n required={fieldRequired}\n htmlFor={id}\n clear={{\n enabled: clear?.enabled ?? clearable,\n label: clear?.label ?? clearLabel,\n visibility: clear?.visibility ?? clearVisibility,\n onClear: handleClear,\n }}\n clearValue={value}\n extraActions={fieldActions}\n style={containerStyle}\n >\n <DatePicker\n id={id}\n value={value}\n onChange={(nextDate, dateString) => {\n resolvedPickerProps.onChange?.(nextDate, dateString);\n onValueChange?.(nextDate);\n }}\n className={mergedClassName}\n popupClassName={mergedPopupRootClassName}\n classNames={mergedClassNames}\n format={resolvedPickerProps.format ?? DS_DATE_FORMAT}\n placeholder={resolvedPickerProps.placeholder ?? DS_DATE_FORMAT}\n style={{ width: '100%', ...resolvedPickerProps.style }}\n {...resolvedPickerProps}\n />\n </FieldShell>\n );\n};\n","import type { CSSProperties, ReactNode } from 'react';\nimport { FieldShell } from './FieldShell';\nimport type { ClearConfig, ClearVisibility } from './clearUtils';\nimport { InputNumber } from './InputNumber';\n\ntype InputNumberProps = React.ComponentProps<typeof InputNumber>;\n\nexport type ClearableInputNumberProps = Omit<InputNumberProps, 'onChange'> & {\n fieldLabel: ReactNode;\n fieldRequired?: boolean;\n clear?: ClearConfig;\n clearable?: boolean;\n clearLabel?: ReactNode;\n clearVisibility?: ClearVisibility;\n onClear?: () => void;\n onValueChange?: (nextValue: InputNumberProps['value']) => void;\n clearToValue?: InputNumberProps['value'];\n containerStyle?: CSSProperties;\n fieldActions?: ReactNode;\n};\n\nexport const ClearableInputNumber = ({\n fieldLabel,\n fieldRequired,\n clear,\n clearable = true,\n clearLabel,\n clearVisibility = 'always',\n onClear,\n onValueChange,\n clearToValue,\n value,\n containerStyle,\n fieldActions,\n id,\n ...numberProps\n}: ClearableInputNumberProps) => {\n const clearAction = clear?.onClear ?? onClear;\n const clearValue = clearToValue === undefined ? null : clearToValue;\n\n const handleClear = () => {\n clearAction?.();\n onValueChange?.(clearValue);\n numberProps.onChange?.(clearValue);\n };\n\n return (\n <FieldShell\n label={fieldLabel}\n required={fieldRequired}\n htmlFor={id}\n clear={{\n enabled: clear?.enabled ?? clearable,\n label: clear?.label ?? clearLabel,\n visibility: clear?.visibility ?? clearVisibility,\n onClear: handleClear,\n }}\n clearValue={value}\n extraActions={fieldActions}\n style={containerStyle}\n >\n <InputNumber\n id={id}\n value={value}\n onChange={(nextValue) => {\n numberProps.onChange?.(nextValue);\n onValueChange?.(nextValue);\n }}\n style={{ width: '100%', ...numberProps.style }}\n {...numberProps}\n />\n </FieldShell>\n );\n};\n","import { TimePicker as DSTimePicker } from './TimePicker';\nimport type { CSSProperties, ReactNode } from 'react';\nimport type { Dayjs } from 'dayjs';\nimport { FieldShell } from './FieldShell';\nimport type { ClearConfig, ClearVisibility } from './clearUtils';\nimport type { DSTimePickerProps } from './TimePicker';\n\ntype TimePickerProps = DSTimePickerProps;\n\nexport type ClearableTimePickerProps = Omit<TimePickerProps, 'onChange'> & {\n fieldLabel: ReactNode;\n fieldRequired?: boolean;\n clear?: ClearConfig;\n clearable?: boolean;\n clearLabel?: ReactNode;\n clearVisibility?: ClearVisibility;\n onClear?: () => void;\n onValueChange?: (nextValue: Dayjs | null) => void;\n containerStyle?: CSSProperties;\n fieldActions?: ReactNode;\n dsFormat?: DSTimePickerProps['dsFormat'];\n};\n\nexport const ClearableTimePicker = ({\n fieldLabel,\n fieldRequired,\n clear,\n clearable = true,\n clearLabel,\n clearVisibility = 'always',\n onClear,\n onValueChange,\n value,\n containerStyle,\n fieldActions,\n id,\n dsFormat,\n ...timeProps\n}: ClearableTimePickerProps) => {\n const clearAction = clear?.onClear ?? onClear;\n\n const handleClear = () => {\n clearAction?.();\n onValueChange?.(null);\n timeProps.onChange?.(null, '');\n };\n\n return (\n <FieldShell\n label={fieldLabel}\n required={fieldRequired}\n htmlFor={id}\n clear={{\n enabled: clear?.enabled ?? clearable,\n label: clear?.label ?? clearLabel,\n visibility: clear?.visibility ?? clearVisibility,\n onClear: handleClear,\n }}\n clearValue={value}\n extraActions={fieldActions}\n style={containerStyle}\n >\n <DSTimePicker\n id={id}\n value={value}\n onChange={(nextTime, timeString) => {\n timeProps.onChange?.(nextTime, timeString);\n onValueChange?.(nextTime);\n }}\n dsFormat={dsFormat}\n style={{ width: '100%', ...timeProps.style }}\n {...timeProps}\n />\n </FieldShell>\n );\n};\n","import { TreeSelect } from 'antd';\nimport type { CSSProperties, ReactNode } from 'react';\nimport { FieldShell } from './FieldShell';\nimport type { ClearConfig, ClearVisibility } from './clearUtils';\n\ntype TreeSelectProps = React.ComponentProps<typeof TreeSelect>;\n\nexport type ClearableTreeSelectProps = Omit<TreeSelectProps, 'onChange'> & {\n fieldLabel: ReactNode;\n fieldRequired?: boolean;\n clear?: ClearConfig;\n clearable?: boolean;\n clearLabel?: ReactNode;\n clearVisibility?: ClearVisibility;\n onClear?: () => void;\n onValueChange?: (nextValue: TreeSelectProps['value']) => void;\n clearToValue?: TreeSelectProps['value'];\n containerStyle?: CSSProperties;\n fieldActions?: ReactNode;\n};\n\nexport const ClearableTreeSelect = ({\n fieldLabel,\n fieldRequired,\n clear,\n clearable = true,\n clearLabel,\n clearVisibility = 'always',\n onClear,\n onValueChange,\n clearToValue,\n value,\n containerStyle,\n fieldActions,\n id,\n ...treeProps\n}: ClearableTreeSelectProps) => {\n const clearAction = clear?.onClear ?? onClear;\n const clearValue = clearToValue === undefined ? undefined : clearToValue;\n\n const handleClear = () => {\n clearAction?.();\n onValueChange?.(clearValue);\n treeProps.onChange?.(clearValue, null as never, null as never);\n };\n\n return (\n <FieldShell\n label={fieldLabel}\n required={fieldRequired}\n htmlFor={id}\n clear={{\n enabled: clear?.enabled ?? clearable,\n label: clear?.label ?? clearLabel,\n visibility: clear?.visibility ?? clearVisibility,\n onClear: handleClear,\n }}\n clearValue={value}\n extraActions={fieldActions}\n style={containerStyle}\n >\n <TreeSelect\n id={id}\n value={value}\n onChange={(nextValue, label, extra) => {\n treeProps.onChange?.(nextValue, label, extra);\n onValueChange?.(nextValue);\n }}\n style={{ width: '100%', ...treeProps.style }}\n {...treeProps}\n />\n </FieldShell>\n );\n};\n","import { Cascader as AntCascader } from 'antd';\nimport type { CascaderProps as AntCascaderProps } from 'antd';\nimport { useEffect, useMemo } from 'react';\nimport { useCustomIcon } from '../../utils/icons';\nimport { DS_SELECT_CLASS, ensureSelectStyles, mergeClassNames } from './selectStyles';\n\nexport type CascaderProps = AntCascaderProps;\n\nconst STYLE_ID = 'ds-cascader-styles';\nconst DS_CASCADER_CLASS = 'ds-cascader';\n\nconst ArrowButtonDownIcon = () => useCustomIcon('arrowButtonDown', { size: 10 });\n\nexport const Cascader = ({ suffixIcon, ...props }: CascaderProps) => {\n useEffect(() => {\n ensureSelectStyles();\n if (typeof document !== 'undefined' && !document.getElementById(STYLE_ID)) {\n const style = document.createElement('style');\n style.id = STYLE_ID;\n style.textContent = `\n .${DS_CASCADER_CLASS}.ant-select,\n .${DS_CASCADER_CLASS}.ant-select .ant-select-selector,\n .${DS_CASCADER_CLASS} .ant-select-selector {\n border-radius: 4px !important;\n }\n\n .${DS_CASCADER_CLASS} .ant-select-arrow,\n .${DS_CASCADER_CLASS} .ant-select-suffix,\n .${DS_CASCADER_CLASS} .ant-cascader-picker-arrow,\n .${DS_CASCADER_CLASS} .ant-cascader-suffix {\n width: 24px;\n height: 24px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n }\n\n .${DS_CASCADER_CLASS} .ant-select-arrow > svg,\n .${DS_CASCADER_CLASS} .ant-select-suffix > svg,\n .${DS_CASCADER_CLASS} .ant-select-arrow > .anticon > svg,\n .${DS_CASCADER_CLASS} .ant-select-suffix > .anticon > svg,\n .${DS_CASCADER_CLASS} .ant-select-arrow svg svg,\n .${DS_CASCADER_CLASS} .ant-select-suffix svg svg,\n .${DS_CASCADER_CLASS} .ant-cascader-picker-arrow > svg,\n .${DS_CASCADER_CLASS} .ant-cascader-suffix > svg,\n .${DS_CASCADER_CLASS} .ant-cascader-picker-arrow > .anticon > svg,\n .${DS_CASCADER_CLASS} .ant-cascader-suffix > .anticon > svg,\n .${DS_CASCADER_CLASS} .ant-cascader-picker-arrow svg svg,\n .${DS_CASCADER_CLASS} .ant-cascader-suffix svg svg {\n width: 10px !important;\n height: 10px !important;\n min-width: 10px;\n min-height: 10px;\n }\n `;\n document.head.appendChild(style);\n }\n }, []);\n\n const resolvedSuffixIcon = useMemo(() => {\n if (suffixIcon !== undefined) {\n return suffixIcon;\n }\n\n return <ArrowButtonDownIcon />;\n }, [suffixIcon]);\n\n const mergedClassName = mergeClassNames(DS_CASCADER_CLASS, DS_SELECT_CLASS, props.className);\n\n return <AntCascader {...props} className={mergedClassName} suffixIcon={resolvedSuffixIcon} />;\n};\n\nCascader.displayName = 'Cascader';\n","import type { CSSProperties, ReactNode } from 'react';\nimport { FieldShell } from './FieldShell';\nimport type { ClearConfig, ClearVisibility } from './clearUtils';\nimport { Cascader } from './Cascader';\n\ntype CascaderProps = React.ComponentProps<typeof Cascader>;\n\nexport type ClearableCascaderProps = Omit<CascaderProps, 'onChange'> & {\n fieldLabel: ReactNode;\n fieldRequired?: boolean;\n clear?: ClearConfig;\n clearable?: boolean;\n clearLabel?: ReactNode;\n clearVisibility?: ClearVisibility;\n onClear?: () => void;\n onValueChange?: (nextValue: CascaderProps['value']) => void;\n clearToValue?: CascaderProps['value'];\n containerStyle?: CSSProperties;\n fieldActions?: ReactNode;\n};\n\nexport const ClearableCascader = ({\n fieldLabel,\n fieldRequired,\n clear,\n clearable = true,\n clearLabel,\n clearVisibility = 'always',\n onClear,\n onValueChange,\n clearToValue,\n value,\n containerStyle,\n fieldActions,\n id,\n ...cascaderProps\n}: ClearableCascaderProps) => {\n const clearAction = clear?.onClear ?? onClear;\n const clearValue = clearToValue === undefined ? undefined : clearToValue;\n\n const handleClear = () => {\n clearAction?.();\n onValueChange?.(clearValue);\n cascaderProps.onChange?.(clearValue as never, []);\n };\n\n return (\n <FieldShell\n label={fieldLabel}\n required={fieldRequired}\n htmlFor={id}\n clear={{\n enabled: clear?.enabled ?? clearable,\n label: clear?.label ?? clearLabel,\n visibility: clear?.visibility ?? clearVisibility,\n onClear: handleClear,\n }}\n clearValue={value}\n extraActions={fieldActions}\n style={containerStyle}\n >\n <Cascader\n id={id}\n value={value}\n onChange={(nextValue, selectedOptions) => {\n cascaderProps.onChange?.(nextValue, selectedOptions);\n onValueChange?.(nextValue);\n }}\n style={{ width: '100%', ...cascaderProps.style }}\n {...cascaderProps}\n />\n </FieldShell>\n );\n};\n","import { appTheme } from '../../theme/ontadaTheme';\n\nconst STYLE_ID = 'ds-autocomplete-styles';\nexport const DS_AUTOCOMPLETE_CLASS = 'ds-autocomplete';\n\nconst FONT_FAMILY = appTheme.token?.fontFamily ?? \"'Nunito', sans-serif\";\nexport const DS_AUTOCOMPLETE_FONT_FAMILY = FONT_FAMILY;\n\nexport const mergeAutoCompleteClassNames = (...classNames: Array<string | undefined>): string =>\n classNames.filter(Boolean).join(' ').trim();\n\nexport const ensureAutoCompleteStyles = () => {\n if (typeof document === 'undefined') {\n return;\n }\n\n let style = document.getElementById(STYLE_ID) as HTMLStyleElement | null;\n if (!style) {\n style = document.createElement('style');\n style.id = STYLE_ID;\n document.head.appendChild(style);\n }\n style.textContent = `\n .${DS_AUTOCOMPLETE_CLASS},\n .${DS_AUTOCOMPLETE_CLASS}.ant-select,\n .${DS_AUTOCOMPLETE_CLASS} .ant-select,\n .${DS_AUTOCOMPLETE_CLASS}.ant-select .ant-select-selector,\n .${DS_AUTOCOMPLETE_CLASS} .ant-select-selector,\n .${DS_AUTOCOMPLETE_CLASS}.ant-select .ant-select-selector,\n .${DS_AUTOCOMPLETE_CLASS}.ant-select .ant-select-selection-search,\n .${DS_AUTOCOMPLETE_CLASS}.ant-select .ant-select-selection-search-input,\n .${DS_AUTOCOMPLETE_CLASS}.ant-select .ant-select-selection-item,\n .${DS_AUTOCOMPLETE_CLASS}.ant-select .ant-select-selection-placeholder,\n .${DS_AUTOCOMPLETE_CLASS}.ant-select .ant-select-content,\n .${DS_AUTOCOMPLETE_CLASS}.ant-select .ant-select-input,\n .${DS_AUTOCOMPLETE_CLASS}.ant-select .ant-select-placeholder {\n font-family: ${FONT_FAMILY} !important;\n }\n\n .${DS_AUTOCOMPLETE_CLASS}.ant-select,\n .${DS_AUTOCOMPLETE_CLASS}.ant-select .ant-select-selector,\n .${DS_AUTOCOMPLETE_CLASS} .ant-select-selector {\n border-radius: 4px !important;\n }\n\n .${DS_AUTOCOMPLETE_CLASS} .ant-select-selection-search,\n .${DS_AUTOCOMPLETE_CLASS} .ant-select-selection-search-input,\n .${DS_AUTOCOMPLETE_CLASS} .ant-select-selection-item,\n .${DS_AUTOCOMPLETE_CLASS} .ant-select-selection-placeholder,\n .${DS_AUTOCOMPLETE_CLASS} .ant-select-content,\n .${DS_AUTOCOMPLETE_CLASS} .ant-select-input,\n .${DS_AUTOCOMPLETE_CLASS} .ant-select-placeholder,\n .${DS_AUTOCOMPLETE_CLASS} .ant-input,\n .${DS_AUTOCOMPLETE_CLASS}.ant-select .ant-input,\n .${DS_AUTOCOMPLETE_CLASS} input,\n .${DS_AUTOCOMPLETE_CLASS} textarea {\n font-family: ${FONT_FAMILY} !important;\n }\n `;\n\n};\n","import { AutoComplete as AntAutoComplete } from 'antd';\nimport type { ComponentProps } from 'react';\nimport { useEffect } from 'react';\nimport {\n DS_AUTOCOMPLETE_CLASS,\n DS_AUTOCOMPLETE_FONT_FAMILY,\n ensureAutoCompleteStyles,\n mergeAutoCompleteClassNames,\n} from './autoCompleteStyles';\nimport { DS_SELECT_CLASS, ensureSelectStyles } from './selectStyles';\n\nexport type AutoCompleteProps = ComponentProps<typeof AntAutoComplete>;\n\nexport const AutoComplete = ({ className, style, ...props }: AutoCompleteProps) => {\n useEffect(() => {\n ensureSelectStyles();\n ensureAutoCompleteStyles();\n }, []);\n\n return (\n <AntAutoComplete\n {...props}\n className={mergeAutoCompleteClassNames(DS_AUTOCOMPLETE_CLASS, DS_SELECT_CLASS, className)}\n style={{ fontFamily: DS_AUTOCOMPLETE_FONT_FAMILY, ...style }}\n />\n );\n};\n\nAutoComplete.displayName = 'AutoComplete';\n","import { AutoComplete } from 'antd';\nimport type { CSSProperties, ReactNode } from 'react';\nimport { useEffect } from 'react';\nimport { FieldShell } from './FieldShell';\nimport type { ClearConfig, ClearVisibility } from './clearUtils';\nimport {\n DS_AUTOCOMPLETE_CLASS,\n DS_AUTOCOMPLETE_FONT_FAMILY,\n ensureAutoCompleteStyles,\n mergeAutoCompleteClassNames,\n} from './autoCompleteStyles';\nimport { DS_SELECT_CLASS, ensureSelectStyles } from './selectStyles';\n\ntype AutoCompleteProps = React.ComponentProps<typeof AutoComplete>;\n\nexport type ClearableAutoCompleteProps = Omit<AutoCompleteProps, 'onChange'> & {\n fieldLabel: ReactNode;\n fieldRequired?: boolean;\n clear?: ClearConfig;\n clearable?: boolean;\n clearLabel?: ReactNode;\n clearVisibility?: ClearVisibility;\n onClear?: () => void;\n onValueChange?: (nextValue: string) => void;\n containerStyle?: CSSProperties;\n fieldActions?: ReactNode;\n};\n\nexport const ClearableAutoComplete = ({\n fieldLabel,\n fieldRequired,\n clear,\n clearable = true,\n clearLabel,\n clearVisibility = 'always',\n onClear,\n onValueChange,\n value,\n containerStyle,\n fieldActions,\n id,\n className: providedClassName,\n style: providedStyle,\n ...autoCompleteProps\n}: ClearableAutoCompleteProps) => {\n useEffect(() => {\n ensureSelectStyles();\n ensureAutoCompleteStyles();\n }, []);\n\n const clearAction = clear?.onClear ?? onClear;\n\n const handleClear = () => {\n clearAction?.();\n onValueChange?.('');\n autoCompleteProps.onChange?.('');\n };\n\n return (\n <FieldShell\n label={fieldLabel}\n required={fieldRequired}\n htmlFor={id}\n clear={{\n enabled: clear?.enabled ?? clearable,\n label: clear?.label ?? clearLabel,\n visibility: clear?.visibility ?? clearVisibility,\n onClear: handleClear,\n }}\n clearValue={value}\n extraActions={fieldActions}\n style={containerStyle}\n >\n <AutoComplete\n id={id}\n value={value}\n className={mergeAutoCompleteClassNames(DS_AUTOCOMPLETE_CLASS, DS_SELECT_CLASS, providedClassName)}\n onChange={(nextValue) => {\n autoCompleteProps.onChange?.(nextValue);\n onValueChange?.(nextValue);\n }}\n style={{ width: '100%', fontFamily: DS_AUTOCOMPLETE_FONT_FAMILY, ...providedStyle }}\n {...autoCompleteProps}\n />\n </FieldShell>\n );\n};\n","import { Mentions } from 'antd';\nimport type { CSSProperties, ReactNode } from 'react';\nimport { FieldShell } from './FieldShell';\nimport type { ClearConfig, ClearVisibility } from './clearUtils';\nimport { dsSemanticTokens } from '../../theme/ontadaTheme';\n\nconst DS_MENTIONS_CLASS = 'ds-clearable-mentions';\nconst DS_MENTIONS_HAS_TAGS_CLASS = 'ds-clearable-mentions-has-tags';\nconst DS_MENTIONS_OVERLAY_CLASS = 'ds-clearable-mentions-overlay';\nconst DS_MENTIONS_TAG_CLASS = 'ds-clearable-mentions-tag';\nconst DS_MENTIONS_STYLE_ID = 'ds-clearable-mentions-style';\n\nconst MENTION_TAG_PATTERN = /(^|\\s)(@[A-Za-z0-9._-]+)/g;\nconst MENTION_TAG_CHECK_PATTERN = /(^|\\s)@[A-Za-z0-9._-]+/;\n\nfunction ensureMentionsStyles() {\n if (typeof document === 'undefined') {\n return;\n }\n\n if (document.getElementById(DS_MENTIONS_STYLE_ID)) {\n return;\n }\n\n const style = document.createElement('style');\n style.id = DS_MENTIONS_STYLE_ID;\n style.textContent = `\n .${DS_MENTIONS_CLASS} {\n position: relative;\n width: 100%;\n }\n\n .${DS_MENTIONS_CLASS} .${DS_MENTIONS_OVERLAY_CLASS} {\n position: absolute;\n inset: 0;\n z-index: 1;\n pointer-events: none;\n white-space: pre-wrap;\n overflow: hidden;\n padding: ${dsSemanticTokens.input.padding.middle.y} ${dsSemanticTokens.input.padding.middle.x};\n color: ${dsSemanticTokens.input.text.focus};\n font-family: var(--ant-font-family);\n font-size: ${dsSemanticTokens.button.typography.small.fontSize};\n font-weight: 400;\n line-height: ${dsSemanticTokens.button.typography.small.lineHeight};\n }\n\n .${DS_MENTIONS_CLASS}.${DS_MENTIONS_HAS_TAGS_CLASS} .ant-mentions > textarea {\n color: transparent !important;\n -webkit-text-fill-color: transparent;\n caret-color: ${dsSemanticTokens.input.text.focus};\n }\n\n .${DS_MENTIONS_CLASS} .${DS_MENTIONS_TAG_CLASS} {\n display: inline-flex;\n align-items: center;\n background: ${dsSemanticTokens.tag.status.new.light.bg};\n color: ${dsSemanticTokens.tag.status.new.light.text};\n border-radius: ${dsSemanticTokens.tag.size.sm.radius}px;\n line-height: ${dsSemanticTokens.button.typography.small.lineHeight};\n max-height: calc(${dsSemanticTokens.button.typography.small.lineHeight} + 2px);\n padding: 0 4px;\n vertical-align: top;\n }\n `;\n\n document.head.appendChild(style);\n}\n\ntype MentionSegment = {\n text: string;\n isTag: boolean;\n};\n\nfunction toMentionSegments(value: string): MentionSegment[] {\n const segments: MentionSegment[] = [];\n let lastIndex = 0;\n\n value.replace(MENTION_TAG_PATTERN, (match, leadingSpace, tag, offset) => {\n const leading = String(leadingSpace ?? '');\n const mention = String(tag ?? '').trim();\n const mentionStart = offset + leading.length;\n\n if (mentionStart > lastIndex) {\n segments.push({ text: value.slice(lastIndex, mentionStart), isTag: false });\n }\n\n if (mention) {\n segments.push({ text: mention, isTag: true });\n }\n\n lastIndex = mentionStart + mention.length;\n return match;\n });\n\n if (lastIndex < value.length) {\n segments.push({ text: value.slice(lastIndex), isTag: false });\n }\n\n return segments.length > 0 ? segments : [{ text: value, isTag: false }];\n}\n\ntype MentionsProps = React.ComponentProps<typeof Mentions>;\n\nexport type ClearableMentionsProps = Omit<MentionsProps, 'onChange'> & {\n fieldLabel: ReactNode;\n fieldRequired?: boolean;\n clear?: ClearConfig;\n clearable?: boolean;\n clearLabel?: ReactNode;\n clearVisibility?: ClearVisibility;\n onClear?: () => void;\n onValueChange?: (nextValue: string) => void;\n containerStyle?: CSSProperties;\n fieldActions?: ReactNode;\n};\n\nexport const ClearableMentions = ({\n fieldLabel,\n fieldRequired,\n clear,\n clearable = true,\n clearLabel,\n clearVisibility = 'always',\n onClear,\n onValueChange,\n value,\n containerStyle,\n fieldActions,\n id,\n className,\n ...mentionsProps\n}: ClearableMentionsProps) => {\n ensureMentionsStyles();\n\n const stringValue = typeof value === 'string' ? value : '';\n const hasMentionTags = MENTION_TAG_CHECK_PATTERN.test(stringValue);\n const mentionSegments = hasMentionTags ? toMentionSegments(stringValue) : [];\n const mergedClassName = [\n className,\n DS_MENTIONS_CLASS,\n hasMentionTags ? DS_MENTIONS_HAS_TAGS_CLASS : undefined,\n ]\n .filter(Boolean)\n .join(' ');\n\n const clearAction = clear?.onClear ?? onClear;\n\n const handleClear = () => {\n clearAction?.();\n onValueChange?.('');\n mentionsProps.onChange?.('');\n };\n\n return (\n <FieldShell\n label={fieldLabel}\n required={fieldRequired}\n htmlFor={id}\n clear={{\n enabled: clear?.enabled ?? clearable,\n label: clear?.label ?? clearLabel,\n visibility: clear?.visibility ?? clearVisibility,\n onClear: handleClear,\n }}\n clearValue={value}\n extraActions={fieldActions}\n style={containerStyle}\n >\n <div className={mergedClassName}>\n {hasMentionTags ? (\n <div aria-hidden=\"true\" className={DS_MENTIONS_OVERLAY_CLASS}>\n {mentionSegments.map((segment, index) =>\n segment.isTag ? (\n <span className={DS_MENTIONS_TAG_CLASS} key={`${index}-${segment.text}`}>\n {segment.text}\n </span>\n ) : (\n <span key={`${index}-${segment.text}`}>{segment.text}</span>\n ),\n )}\n </div>\n ) : null}\n <Mentions\n id={id}\n className={className}\n value={value}\n onChange={(nextValue) => {\n mentionsProps.onChange?.(nextValue);\n onValueChange?.(nextValue);\n }}\n style={{ width: '100%', ...mentionsProps.style }}\n {...mentionsProps}\n />\n </div>\n </FieldShell>\n );\n};\n","import type { CSSProperties, ReactNode } from 'react';\nimport { Checkbox } from './Checkbox';\nimport { FieldShell } from './FieldShell';\nimport type { ClearConfig, ClearVisibility } from './clearUtils';\n\ntype CheckboxProps = React.ComponentProps<typeof Checkbox>;\n\nexport type ClearableCheckboxProps = Omit<CheckboxProps, 'onChange'> & {\n fieldLabel: ReactNode;\n fieldRequired?: boolean;\n clear?: ClearConfig;\n clearable?: boolean;\n clearLabel?: ReactNode;\n clearVisibility?: ClearVisibility;\n onClear?: () => void;\n onValueChange?: (nextValue: boolean) => void;\n containerStyle?: CSSProperties;\n fieldActions?: ReactNode;\n};\n\nexport const ClearableCheckbox = ({\n fieldLabel,\n fieldRequired,\n clear,\n clearable = true,\n clearLabel,\n clearVisibility = 'always',\n onClear,\n onValueChange,\n checked,\n children,\n containerStyle,\n fieldActions,\n id,\n ...checkboxProps\n}: ClearableCheckboxProps) => {\n const clearAction = clear?.onClear ?? onClear;\n\n const handleClear = () => {\n clearAction?.();\n onValueChange?.(false);\n };\n\n return (\n <FieldShell\n label={fieldLabel}\n required={fieldRequired}\n htmlFor={id}\n clear={{\n enabled: clear?.enabled ?? clearable,\n label: clear?.label ?? clearLabel,\n visibility: clear?.visibility ?? clearVisibility,\n onClear: handleClear,\n }}\n clearValue={checked}\n extraActions={fieldActions}\n style={containerStyle}\n >\n <Checkbox\n id={id}\n checked={checked}\n onChange={(event) => {\n checkboxProps.onChange?.(event);\n onValueChange?.(event.target.checked);\n }}\n {...checkboxProps}\n >\n {children}\n </Checkbox>\n </FieldShell>\n );\n};\n","import { Radio } from 'antd';\nimport type { CSSProperties, ReactNode } from 'react';\nimport { FieldShell } from './FieldShell';\nimport type { ClearConfig, ClearVisibility } from './clearUtils';\n\ntype RadioProps = React.ComponentProps<typeof Radio>;\n\nexport type ClearableRadioProps = Omit<RadioProps, 'onChange'> & {\n fieldLabel: ReactNode;\n fieldRequired?: boolean;\n clear?: ClearConfig;\n clearable?: boolean;\n clearLabel?: ReactNode;\n clearVisibility?: ClearVisibility;\n onClear?: () => void;\n onValueChange?: (nextValue: boolean) => void;\n containerStyle?: CSSProperties;\n fieldActions?: ReactNode;\n};\n\nexport const ClearableRadio = ({\n fieldLabel,\n fieldRequired,\n clear,\n clearable = true,\n clearLabel,\n clearVisibility = 'always',\n onClear,\n onValueChange,\n checked,\n children,\n containerStyle,\n fieldActions,\n id,\n ...radioProps\n}: ClearableRadioProps) => {\n const clearAction = clear?.onClear ?? onClear;\n\n const handleClear = () => {\n clearAction?.();\n onValueChange?.(false);\n };\n\n return (\n <FieldShell\n label={fieldLabel}\n required={fieldRequired}\n htmlFor={id}\n clear={{\n enabled: clear?.enabled ?? clearable,\n label: clear?.label ?? clearLabel,\n visibility: clear?.visibility ?? clearVisibility,\n onClear: handleClear,\n }}\n clearValue={checked}\n extraActions={fieldActions}\n style={containerStyle}\n >\n <Radio\n id={id}\n checked={checked}\n onChange={(event) => {\n radioProps.onChange?.(event);\n onValueChange?.(event.target.checked);\n }}\n {...radioProps}\n >\n {children}\n </Radio>\n </FieldShell>\n );\n};\n","import { Radio } from 'antd';\nimport type { CSSProperties, ReactNode } from 'react';\nimport { FieldShell } from './FieldShell';\nimport type { ClearConfig, ClearVisibility } from './clearUtils';\n\ntype RadioGroupProps = React.ComponentProps<typeof Radio.Group>;\n\nexport type ClearableRadioGroupProps = Omit<RadioGroupProps, 'onChange'> & {\n fieldLabel: ReactNode;\n fieldRequired?: boolean;\n clear?: ClearConfig;\n clearable?: boolean;\n clearLabel?: ReactNode;\n clearVisibility?: ClearVisibility;\n onClear?: () => void;\n onValueChange?: (nextValue: RadioGroupProps['value']) => void;\n clearToValue?: RadioGroupProps['value'];\n containerStyle?: CSSProperties;\n fieldActions?: ReactNode;\n};\n\nexport const ClearableRadioGroup = ({\n fieldLabel,\n fieldRequired,\n clear,\n clearable = true,\n clearLabel,\n clearVisibility = 'always',\n onClear,\n onValueChange,\n clearToValue,\n value,\n containerStyle,\n fieldActions,\n ...radioProps\n}: ClearableRadioGroupProps) => {\n const clearAction = clear?.onClear ?? onClear;\n\n const handleClear = () => {\n clearAction?.();\n onValueChange?.(clearToValue);\n };\n\n return (\n <FieldShell\n label={fieldLabel}\n required={fieldRequired}\n clear={{\n enabled: clear?.enabled ?? clearable,\n label: clear?.label ?? clearLabel,\n visibility: clear?.visibility ?? clearVisibility,\n onClear: handleClear,\n }}\n clearValue={value}\n extraActions={fieldActions}\n style={containerStyle}\n >\n <Radio.Group\n value={value}\n onChange={(event) => {\n radioProps.onChange?.(event);\n onValueChange?.(event.target.value);\n }}\n {...radioProps}\n />\n </FieldShell>\n );\n};\n","import { Switch } from 'antd';\nimport type { CSSProperties, ReactNode } from 'react';\nimport { FieldShell } from './FieldShell';\nimport type { ClearConfig, ClearVisibility } from './clearUtils';\n\ntype SwitchProps = React.ComponentProps<typeof Switch>;\n\nexport type ClearableSwitchProps = Omit<SwitchProps, 'onChange'> & {\n fieldLabel: ReactNode;\n fieldRequired?: boolean;\n clear?: ClearConfig;\n clearable?: boolean;\n clearLabel?: ReactNode;\n clearVisibility?: ClearVisibility;\n onClear?: () => void;\n onValueChange?: (nextValue: boolean) => void;\n clearToValue?: boolean;\n containerStyle?: CSSProperties;\n fieldActions?: ReactNode;\n};\n\nexport const ClearableSwitch = ({\n fieldLabel,\n fieldRequired,\n clear,\n clearable = true,\n clearLabel,\n clearVisibility = 'always',\n onClear,\n onValueChange,\n clearToValue = false,\n checked,\n containerStyle,\n fieldActions,\n id,\n ...switchProps\n}: ClearableSwitchProps) => {\n const clearAction = clear?.onClear ?? onClear;\n\n const handleClear = () => {\n clearAction?.();\n onValueChange?.(clearToValue);\n };\n\n return (\n <FieldShell\n label={fieldLabel}\n required={fieldRequired}\n htmlFor={id}\n clear={{\n enabled: clear?.enabled ?? clearable,\n label: clear?.label ?? clearLabel,\n visibility: clear?.visibility ?? clearVisibility,\n onClear: handleClear,\n }}\n clearValue={checked}\n extraActions={fieldActions}\n style={containerStyle}\n >\n <Switch\n id={id}\n checked={checked}\n onChange={(nextChecked, event) => {\n switchProps.onChange?.(nextChecked, event);\n onValueChange?.(nextChecked);\n }}\n {...switchProps}\n />\n </FieldShell>\n );\n};\n","import { Slider } from 'antd';\nimport type { CSSProperties, ReactNode } from 'react';\nimport { FieldShell } from './FieldShell';\nimport type { ClearConfig, ClearVisibility } from './clearUtils';\n\ntype SliderProps = React.ComponentProps<typeof Slider>;\ntype SliderValue = SliderProps['value'];\n\nexport type ClearableSliderProps = Omit<SliderProps, 'onChange'> & {\n fieldLabel: ReactNode;\n fieldRequired?: boolean;\n clear?: ClearConfig;\n clearable?: boolean;\n clearLabel?: ReactNode;\n clearVisibility?: ClearVisibility;\n onClear?: () => void;\n onValueChange?: (nextValue: SliderValue) => void;\n clearToValue?: SliderValue;\n containerStyle?: CSSProperties;\n fieldActions?: ReactNode;\n};\n\nexport const ClearableSlider = ({\n fieldLabel,\n fieldRequired,\n clear,\n clearable = true,\n clearLabel,\n clearVisibility = 'always',\n onClear,\n onValueChange,\n clearToValue,\n value,\n min,\n containerStyle,\n fieldActions,\n ...sliderProps\n}: ClearableSliderProps) => {\n const clearAction = clear?.onClear ?? onClear;\n const fallbackClear = clearToValue ?? min ?? 0;\n\n const handleClear = () => {\n clearAction?.();\n onValueChange?.(fallbackClear);\n };\n\n return (\n <FieldShell\n label={fieldLabel}\n required={fieldRequired}\n clear={{\n enabled: clear?.enabled ?? clearable,\n label: clear?.label ?? clearLabel,\n visibility: clear?.visibility ?? clearVisibility,\n onClear: handleClear,\n }}\n clearValue={value}\n extraActions={fieldActions}\n style={containerStyle}\n >\n <Slider\n value={value}\n min={min}\n onChange={(nextValue) => {\n sliderProps.onChange?.(nextValue);\n onValueChange?.(nextValue);\n }}\n {...sliderProps}\n />\n </FieldShell>\n );\n};\n","import { Rate } from 'antd';\nimport type { CSSProperties, ReactNode } from 'react';\nimport { FieldShell } from './FieldShell';\nimport type { ClearConfig, ClearVisibility } from './clearUtils';\n\ntype RateProps = React.ComponentProps<typeof Rate>;\n\nexport type ClearableRateProps = Omit<RateProps, 'onChange'> & {\n fieldLabel: ReactNode;\n fieldRequired?: boolean;\n clear?: ClearConfig;\n clearable?: boolean;\n clearLabel?: ReactNode;\n clearVisibility?: ClearVisibility;\n onClear?: () => void;\n onValueChange?: (nextValue: number) => void;\n clearToValue?: number;\n containerStyle?: CSSProperties;\n fieldActions?: ReactNode;\n};\n\nexport const ClearableRate = ({\n fieldLabel,\n fieldRequired,\n clear,\n clearable = true,\n clearLabel,\n clearVisibility = 'always',\n onClear,\n onValueChange,\n clearToValue = 0,\n value,\n containerStyle,\n fieldActions,\n ...rateProps\n}: ClearableRateProps) => {\n const clearAction = clear?.onClear ?? onClear;\n\n const handleClear = () => {\n clearAction?.();\n onValueChange?.(clearToValue);\n };\n\n return (\n <FieldShell\n label={fieldLabel}\n required={fieldRequired}\n clear={{\n enabled: clear?.enabled ?? clearable,\n label: clear?.label ?? clearLabel,\n visibility: clear?.visibility ?? clearVisibility,\n onClear: handleClear,\n }}\n clearValue={value}\n extraActions={fieldActions}\n style={containerStyle}\n >\n <Rate\n value={value}\n onChange={(nextValue) => {\n rateProps.onChange?.(nextValue);\n onValueChange?.(nextValue);\n }}\n {...rateProps}\n />\n </FieldShell>\n );\n};\n","import { ColorPicker } from 'antd';\nimport type { CSSProperties, ReactNode } from 'react';\nimport { FieldShell } from './FieldShell';\nimport type { ClearConfig, ClearVisibility } from './clearUtils';\n\ntype ColorPickerProps = React.ComponentProps<typeof ColorPicker>;\n\ntype ColorValue = ColorPickerProps['value'];\n\nexport type ClearableColorPickerProps = Omit<ColorPickerProps, 'onChange'> & {\n fieldLabel: ReactNode;\n fieldRequired?: boolean;\n clear?: ClearConfig;\n clearable?: boolean;\n clearLabel?: ReactNode;\n clearVisibility?: ClearVisibility;\n onClear?: () => void;\n onValueChange?: (nextValue: ColorValue) => void;\n clearToValue?: ColorValue;\n containerStyle?: CSSProperties;\n fieldActions?: ReactNode;\n};\n\nexport const ClearableColorPicker = ({\n fieldLabel,\n fieldRequired,\n clear,\n clearable = true,\n clearLabel,\n clearVisibility = 'always',\n onClear,\n onValueChange,\n clearToValue,\n value,\n containerStyle,\n fieldActions,\n ...colorProps\n}: ClearableColorPickerProps) => {\n const clearAction = clear?.onClear ?? onClear;\n\n const handleClear = () => {\n clearAction?.();\n onValueChange?.(clearToValue);\n };\n\n return (\n <FieldShell\n label={fieldLabel}\n required={fieldRequired}\n clear={{\n enabled: clear?.enabled ?? clearable,\n label: clear?.label ?? clearLabel,\n visibility: clear?.visibility ?? clearVisibility,\n onClear: handleClear,\n }}\n clearValue={value}\n extraActions={fieldActions}\n style={containerStyle}\n >\n <ColorPicker\n value={value}\n onChange={(nextValue) => {\n colorProps.onChange?.(nextValue);\n onValueChange?.(nextValue);\n }}\n {...colorProps}\n />\n </FieldShell>\n );\n};\n","import { Transfer } from 'antd';\nimport type { CSSProperties, ReactNode } from 'react';\nimport { FieldShell } from './FieldShell';\nimport type { ClearConfig, ClearVisibility } from './clearUtils';\n\ntype TransferProps = React.ComponentProps<typeof Transfer>;\n\ntype TransferTargetKeys = TransferProps['targetKeys'];\n\nexport type ClearableTransferProps = Omit<TransferProps, 'onChange'> & {\n fieldLabel: ReactNode;\n fieldRequired?: boolean;\n clear?: ClearConfig;\n clearable?: boolean;\n clearLabel?: ReactNode;\n clearVisibility?: ClearVisibility;\n onClear?: () => void;\n onValueChange?: (nextValue: TransferTargetKeys) => void;\n clearToValue?: TransferTargetKeys;\n containerStyle?: CSSProperties;\n fieldActions?: ReactNode;\n};\n\nexport const ClearableTransfer = ({\n fieldLabel,\n fieldRequired,\n clear,\n clearable = true,\n clearLabel,\n clearVisibility = 'always',\n onClear,\n onValueChange,\n clearToValue = [],\n targetKeys,\n containerStyle,\n fieldActions,\n ...transferProps\n}: ClearableTransferProps) => {\n const clearAction = clear?.onClear ?? onClear;\n\n const handleClear = () => {\n clearAction?.();\n onValueChange?.(clearToValue);\n };\n\n return (\n <FieldShell\n label={fieldLabel}\n required={fieldRequired}\n clear={{\n enabled: clear?.enabled ?? clearable,\n label: clear?.label ?? clearLabel,\n visibility: clear?.visibility ?? clearVisibility,\n onClear: handleClear,\n }}\n clearValue={targetKeys}\n extraActions={fieldActions}\n style={containerStyle}\n >\n <Transfer\n targetKeys={targetKeys}\n onChange={(nextTargetKeys, direction, moveKeys) => {\n transferProps.onChange?.(nextTargetKeys, direction, moveKeys);\n onValueChange?.(nextTargetKeys);\n }}\n {...transferProps}\n />\n </FieldShell>\n );\n};\n","import { Upload } from 'antd';\nimport type { CSSProperties, ReactNode } from 'react';\nimport { FieldShell } from './FieldShell';\nimport type { ClearConfig, ClearVisibility } from './clearUtils';\n\ntype UploadProps = React.ComponentProps<typeof Upload>;\n\ntype UploadFileList = UploadProps['fileList'];\n\nexport type ClearableUploadProps = Omit<UploadProps, 'onChange'> & {\n fieldLabel: ReactNode;\n fieldRequired?: boolean;\n clear?: ClearConfig;\n clearable?: boolean;\n clearLabel?: ReactNode;\n clearVisibility?: ClearVisibility;\n onClear?: () => void;\n onValueChange?: (nextValue: UploadFileList) => void;\n clearToValue?: UploadFileList;\n containerStyle?: CSSProperties;\n fieldActions?: ReactNode;\n};\n\nexport const ClearableUpload = ({\n fieldLabel,\n fieldRequired,\n clear,\n clearable = true,\n clearLabel,\n clearVisibility = 'always',\n onClear,\n onValueChange,\n clearToValue = [],\n fileList,\n children,\n containerStyle,\n fieldActions,\n ...uploadProps\n}: ClearableUploadProps) => {\n const clearAction = clear?.onClear ?? onClear;\n\n const handleClear = () => {\n clearAction?.();\n onValueChange?.(clearToValue);\n };\n\n return (\n <FieldShell\n label={fieldLabel}\n required={fieldRequired}\n clear={{\n enabled: clear?.enabled ?? clearable,\n label: clear?.label ?? clearLabel,\n visibility: clear?.visibility ?? clearVisibility,\n onClear: handleClear,\n }}\n clearValue={fileList}\n extraActions={fieldActions}\n style={containerStyle}\n >\n <Upload\n fileList={fileList}\n onChange={(info) => {\n uploadProps.onChange?.(info);\n onValueChange?.(info.fileList);\n }}\n {...uploadProps}\n >\n {children}\n </Upload>\n </FieldShell>\n );\n};\n","import { Breadcrumb as AntBreadcrumb, Dropdown, Typography } from 'antd';\nimport { cloneElement, isValidElement, useEffect, useRef, useState } from 'react';\nimport type { ComponentProps, MouseEvent, ReactNode } from 'react';\nimport { dsSemanticTokens } from '../../theme/ontadaTheme';\nimport { Icon } from '../../utils/icons';\n\ntype AntBreadcrumbProps = ComponentProps<typeof AntBreadcrumb>;\ntype BreadcrumbItem = NonNullable<AntBreadcrumbProps['items']>[number];\ntype CollapseMode = 'count' | 'responsive';\ntype DSBreadcrumbSize = 'sm' | 'md' | 'lg';\n\nconst STYLE_ID = 'ds-breadcrumb-styles';\nconst DS_BREADCRUMB_CLASS = 'ds-breadcrumb';\n\nconst ensureBreadcrumbStyles = () => {\n if (typeof document === 'undefined' || document.getElementById(STYLE_ID)) {\n return;\n }\n\n const { breadcrumb } = dsSemanticTokens;\n\n const style = document.createElement('style');\n style.id = STYLE_ID;\n style.textContent = `\n .${DS_BREADCRUMB_CLASS}.ant-breadcrumb {\n --ds-breadcrumb-link-default: ${breadcrumb.link.default};\n --ds-breadcrumb-link-hover: ${breadcrumb.link.hover};\n --ds-breadcrumb-current-text: ${breadcrumb.current.text};\n --ds-breadcrumb-separator-color: ${breadcrumb.separator.color};\n --ds-breadcrumb-separator-size: ${breadcrumb.separator.size};\n\n --ds-breadcrumb-font-family: ${breadcrumb.typography.family};\n --ds-breadcrumb-font-weight: ${breadcrumb.typography.weight};\n\n --ds-breadcrumb-font-size-sm: ${breadcrumb.typography.sm.fontSize};\n --ds-breadcrumb-line-height-sm: ${breadcrumb.typography.sm.lineHeight};\n --ds-breadcrumb-letter-spacing-sm: ${breadcrumb.typography.sm.letterSpacing};\n\n --ds-breadcrumb-font-size-md: ${breadcrumb.typography.md.fontSize};\n --ds-breadcrumb-line-height-md: ${breadcrumb.typography.md.lineHeight};\n --ds-breadcrumb-letter-spacing-md: ${breadcrumb.typography.md.letterSpacing};\n\n --ds-breadcrumb-font-size-lg: ${breadcrumb.typography.lg.fontSize};\n --ds-breadcrumb-line-height-lg: ${breadcrumb.typography.lg.lineHeight};\n --ds-breadcrumb-letter-spacing-lg: ${breadcrumb.typography.lg.letterSpacing};\n\n --ds-breadcrumb-separator-gap-sm: ${breadcrumb.separator.gap.sm};\n --ds-breadcrumb-separator-gap-md: ${breadcrumb.separator.gap.md};\n --ds-breadcrumb-separator-gap-lg: ${breadcrumb.separator.gap.lg};\n }\n\n .${DS_BREADCRUMB_CLASS}.ant-breadcrumb {\n color: var(--ds-breadcrumb-current-text);\n }\n\n .${DS_BREADCRUMB_CLASS}.ant-breadcrumb,\n .${DS_BREADCRUMB_CLASS}.ant-breadcrumb .ant-breadcrumb-link,\n .${DS_BREADCRUMB_CLASS}.ant-breadcrumb .ant-breadcrumb-link > a,\n .${DS_BREADCRUMB_CLASS}.ant-breadcrumb .ant-breadcrumb-link > span,\n .${DS_BREADCRUMB_CLASS}.ant-breadcrumb .ant-breadcrumb-separator,\n .${DS_BREADCRUMB_CLASS}.ant-breadcrumb .ant-breadcrumb-overlay-link {\n font-family: var(--ds-breadcrumb-font-family);\n font-weight: var(--ds-breadcrumb-font-weight);\n }\n\n .${DS_BREADCRUMB_CLASS}[data-ds-size='sm'].ant-breadcrumb,\n .${DS_BREADCRUMB_CLASS}[data-ds-size='sm'].ant-breadcrumb .ant-breadcrumb-link,\n .${DS_BREADCRUMB_CLASS}[data-ds-size='sm'].ant-breadcrumb .ant-breadcrumb-link > a,\n .${DS_BREADCRUMB_CLASS}[data-ds-size='sm'].ant-breadcrumb .ant-breadcrumb-link > span,\n .${DS_BREADCRUMB_CLASS}[data-ds-size='sm'].ant-breadcrumb .ant-breadcrumb-separator,\n .${DS_BREADCRUMB_CLASS}[data-ds-size='sm'].ant-breadcrumb .ant-breadcrumb-overlay-link {\n font-size: var(--ds-breadcrumb-font-size-sm);\n line-height: var(--ds-breadcrumb-line-height-sm);\n letter-spacing: var(--ds-breadcrumb-letter-spacing-sm);\n }\n\n .${DS_BREADCRUMB_CLASS}[data-ds-size='md'].ant-breadcrumb,\n .${DS_BREADCRUMB_CLASS}[data-ds-size='md'].ant-breadcrumb .ant-breadcrumb-link,\n .${DS_BREADCRUMB_CLASS}[data-ds-size='md'].ant-breadcrumb .ant-breadcrumb-link > a,\n .${DS_BREADCRUMB_CLASS}[data-ds-size='md'].ant-breadcrumb .ant-breadcrumb-link > span,\n .${DS_BREADCRUMB_CLASS}[data-ds-size='md'].ant-breadcrumb .ant-breadcrumb-separator,\n .${DS_BREADCRUMB_CLASS}[data-ds-size='md'].ant-breadcrumb .ant-breadcrumb-overlay-link {\n font-size: var(--ds-breadcrumb-font-size-md);\n line-height: var(--ds-breadcrumb-line-height-md);\n letter-spacing: var(--ds-breadcrumb-letter-spacing-md);\n }\n\n .${DS_BREADCRUMB_CLASS}[data-ds-size='lg'].ant-breadcrumb,\n .${DS_BREADCRUMB_CLASS}[data-ds-size='lg'].ant-breadcrumb .ant-breadcrumb-link,\n .${DS_BREADCRUMB_CLASS}[data-ds-size='lg'].ant-breadcrumb .ant-breadcrumb-link > a,\n .${DS_BREADCRUMB_CLASS}[data-ds-size='lg'].ant-breadcrumb .ant-breadcrumb-link > span,\n .${DS_BREADCRUMB_CLASS}[data-ds-size='lg'].ant-breadcrumb .ant-breadcrumb-separator,\n .${DS_BREADCRUMB_CLASS}[data-ds-size='lg'].ant-breadcrumb .ant-breadcrumb-overlay-link {\n font-size: var(--ds-breadcrumb-font-size-lg);\n line-height: var(--ds-breadcrumb-line-height-lg);\n letter-spacing: var(--ds-breadcrumb-letter-spacing-lg);\n }\n\n .${DS_BREADCRUMB_CLASS}.ant-breadcrumb a.ant-breadcrumb-link,\n .${DS_BREADCRUMB_CLASS}.ant-breadcrumb a.ant-breadcrumb-link:visited,\n .${DS_BREADCRUMB_CLASS}.ant-breadcrumb .ant-breadcrumb-link > a,\n .${DS_BREADCRUMB_CLASS}.ant-breadcrumb .ant-breadcrumb-link > a:visited {\n color: var(--ds-breadcrumb-link-default);\n text-decoration: none;\n }\n\n .${DS_BREADCRUMB_CLASS}.ant-breadcrumb a.ant-breadcrumb-link:hover,\n .${DS_BREADCRUMB_CLASS}.ant-breadcrumb .ant-breadcrumb-link > a:hover {\n color: var(--ds-breadcrumb-link-hover);\n background: transparent !important;\n background-color: transparent !important;\n text-decoration: none;\n }\n\n .${DS_BREADCRUMB_CLASS}.ant-breadcrumb .ant-breadcrumb-link:hover,\n .${DS_BREADCRUMB_CLASS}.ant-breadcrumb .ant-breadcrumb-overlay-link:hover,\n .${DS_BREADCRUMB_CLASS}.ant-breadcrumb a:hover {\n background: transparent !important;\n background-color: transparent !important;\n }\n\n .${DS_BREADCRUMB_CLASS}.ant-breadcrumb[data-has-trail='true'] .ant-breadcrumb-item:last-child .ant-breadcrumb-link,\n .${DS_BREADCRUMB_CLASS}.ant-breadcrumb[data-has-trail='true'] .ant-breadcrumb-item:last-child .ant-breadcrumb-link > span,\n .${DS_BREADCRUMB_CLASS}.ant-breadcrumb[data-has-trail='true'] .ant-breadcrumb-item:last-child .ant-breadcrumb-link > a {\n color: var(--ds-breadcrumb-current-text);\n }\n\n .${DS_BREADCRUMB_CLASS}[data-ds-size='sm'].ant-breadcrumb .ant-breadcrumb-separator {\n margin-inline: var(--ds-breadcrumb-separator-gap-sm);\n color: var(--ds-breadcrumb-separator-color);\n }\n\n .${DS_BREADCRUMB_CLASS}[data-ds-size='md'].ant-breadcrumb .ant-breadcrumb-separator {\n margin-inline: var(--ds-breadcrumb-separator-gap-md);\n color: var(--ds-breadcrumb-separator-color);\n }\n\n .${DS_BREADCRUMB_CLASS}[data-ds-size='lg'].ant-breadcrumb .ant-breadcrumb-separator {\n margin-inline: var(--ds-breadcrumb-separator-gap-lg);\n color: var(--ds-breadcrumb-separator-color);\n }\n\n .${DS_BREADCRUMB_CLASS}.ant-breadcrumb .ds-breadcrumb-separator-icon {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n color: var(--ds-breadcrumb-separator-color);\n line-height: 1;\n vertical-align: middle;\n }\n\n `;\n\n document.head.appendChild(style);\n};\n\nexport type BreadcrumbProps = Omit<AntBreadcrumbProps, 'items'> & {\n items: BreadcrumbItem[];\n collapseMode?: CollapseMode;\n dsSize?: DSBreadcrumbSize;\n maxVisibleItems?: number;\n responsiveBreakpoint?: number;\n preserveStartCount?: number;\n preserveEndCount?: number;\n ellipsisLabel?: ReactNode;\n};\n\nconst defaultEllipsisLabel = (\n <Typography.Text aria-label=\"Collapsed breadcrumb items\" strong>\n ...\n </Typography.Text>\n);\n\nconst isAnchorElement = (title: ReactNode) =>\n isValidElement<{ style?: Record<string, string | number> }>(title) && title.type === 'a';\n\nconst getCurrentItemTitle = (item: BreadcrumbItem): ReactNode => {\n if (isAnchorElement(item.title)) {\n return item.title.props.children;\n }\n\n return item.title;\n};\n\nconst getLinkedItemTitle = (item: BreadcrumbItem): ReactNode => {\n if (isAnchorElement(item.title)) {\n return cloneElement(item.title, {\n style: {\n ...(item.title.props.style ?? {}),\n },\n });\n }\n\n const href = item.href ?? '#';\n const onClick = item.href\n ? undefined\n : (event: MouseEvent<HTMLAnchorElement>) => {\n event.preventDefault();\n };\n\n return <a href={href} onClick={onClick}>{item.title}</a>;\n};\n\nconst normalizeBreadcrumbItems = (items: BreadcrumbItem[]): BreadcrumbItem[] =>\n items.map((item, index) => {\n const hasTrail = items.length > 1;\n const isCurrentItem = hasTrail && index === items.length - 1;\n\n if (isCurrentItem) {\n return {\n ...item,\n href: undefined,\n title: getCurrentItemTitle(item),\n };\n }\n\n if (item.menu) {\n return item;\n }\n\n if (item.href) {\n return {\n ...item,\n title: getCurrentItemTitle(item),\n };\n }\n\n return {\n ...item,\n title: getLinkedItemTitle(item),\n };\n });\n\nconst toMenuItem = (item: BreadcrumbItem, index: number) => ({\n key: `${index}-${typeof item.title === 'string' ? item.title : 'item'}`,\n label: getLinkedItemTitle(item),\n disabled: Boolean(item.menu),\n});\n\nexport const Breadcrumb = ({\n items,\n collapseMode = 'count',\n dsSize = 'md',\n maxVisibleItems = 4,\n responsiveBreakpoint = 768,\n preserveStartCount = 1,\n preserveEndCount = 2,\n ellipsisLabel,\n ...breadcrumbProps\n}: BreadcrumbProps) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const [containerWidth, setContainerWidth] = useState<number | null>(null);\n\n useEffect(() => {\n ensureBreadcrumbStyles();\n }, []);\n\n useEffect(() => {\n if (collapseMode !== 'responsive' || typeof ResizeObserver === 'undefined') {\n return;\n }\n\n const node = containerRef.current;\n if (!node) {\n return;\n }\n\n const observer = new ResizeObserver((entries) => {\n const nextWidth = entries[0]?.contentRect.width;\n if (typeof nextWidth === 'number') {\n setContainerWidth(nextWidth);\n }\n });\n\n observer.observe(node);\n setContainerWidth(node.getBoundingClientRect().width);\n\n return () => observer.disconnect();\n }, [collapseMode]);\n\n const shouldCollapse =\n collapseMode === 'responsive'\n ? items.length > preserveStartCount + preserveEndCount &&\n containerWidth !== null &&\n containerWidth < responsiveBreakpoint\n : items.length > maxVisibleItems;\n\n const hasTrail = items.length > 1;\n\n const clickableItems = normalizeBreadcrumbItems(items);\n\n const normalizedItems = shouldCollapse\n ? (() => {\n const firstItems = clickableItems.slice(0, preserveStartCount);\n const trailingItems = clickableItems.slice(clickableItems.length - preserveEndCount);\n const middleItems = clickableItems.slice(\n preserveStartCount,\n clickableItems.length - preserveEndCount,\n );\n\n if (middleItems.length === 0) {\n return clickableItems;\n }\n\n const collapsedTrigger: BreadcrumbItem = {\n title: (\n <Dropdown\n trigger={['click']}\n menu={{\n items: middleItems.map(toMenuItem),\n }}\n >\n <span style={{ cursor: 'pointer' }}>{ellipsisLabel ?? defaultEllipsisLabel}</span>\n </Dropdown>\n ),\n };\n\n return [...firstItems, collapsedTrigger, ...trailingItems];\n })()\n : clickableItems;\n\n const separatorSize = Number.parseInt(dsSemanticTokens.breadcrumb.separator.size, 10) || 10;\n const defaultSeparator = (\n <span className=\"ds-breadcrumb-separator-icon\" aria-hidden=\"true\">\n <Icon name=\"arrowRight1\" size={separatorSize} style={{ color: 'inherit' }} />\n </span>\n );\n\n const resolvedSeparator = breadcrumbProps.separator ?? defaultSeparator;\n\n return (\n <div ref={containerRef}>\n <AntBreadcrumb\n {...breadcrumbProps}\n items={normalizedItems}\n separator={resolvedSeparator}\n className={[DS_BREADCRUMB_CLASS, breadcrumbProps.className].filter(Boolean).join(' ')}\n data-ds-size={dsSize}\n data-has-trail={hasTrail ? 'true' : 'false'}\n />\n </div>\n );\n};\n","import { Anchor as AntAnchor } from 'antd';\nimport type { AnchorProps as AntAnchorProps } from 'antd';\nimport { useEffect } from 'react';\n\nexport type AnchorProps = AntAnchorProps;\n\nconst STYLE_ID = 'ds-anchor-styles';\nconst DS_ANCHOR_CLASS = 'ds-anchor';\n\nfunction mergeClassNames(...classNames: Array<string | undefined>) {\n return classNames.filter(Boolean).join(' ');\n}\n\nfunction injectStyles() {\n if (typeof document === 'undefined') return;\n if (document.getElementById(STYLE_ID)) return;\n\n const style = document.createElement('style');\n style.id = STYLE_ID;\n style.textContent = `\n .${DS_ANCHOR_CLASS}.ant-anchor-wrapper:not(.ant-anchor-wrapper-horizontal) .ant-anchor .ant-anchor-ink {\n transition: none !important;\n }\n\n .${DS_ANCHOR_CLASS}.ant-anchor-wrapper-horizontal .ant-anchor .ant-anchor-ink {\n transition: none !important;\n }\n `;\n\n document.head.appendChild(style);\n}\n\nexport const Anchor = ({ className, ...props }: AnchorProps) => {\n useEffect(() => {\n injectStyles();\n }, []);\n\n return <AntAnchor {...props} className={mergeClassNames(DS_ANCHOR_CLASS, className)} />;\n};\n\nAnchor.displayName = 'Anchor';\n","import { Tooltip as AntTooltip } from 'antd';\nimport type { TooltipProps as AntTooltipProps } from 'antd';\nimport { useEffect } from 'react';\nimport type { ReactNode } from 'react';\nimport { dsSemanticTokens } from '../../theme/ontadaTheme';\n\nexport type DSTooltipSize = 'mini' | 'normal';\n\nexport type TooltipProps = AntTooltipProps & {\n /** DS size variant from Figma. */\n dsSize?: DSTooltipSize;\n /** Optional DS title text for normal tooltip variant. */\n dsTitle?: string;\n /** DS body text used when Ant `title` prop is not provided. */\n dsBody?: string;\n};\n\nconst STYLE_ID = 'ds-tooltip-styles';\n\nexport function ensureTooltipStyles() {\n if (typeof document === 'undefined') return;\n const { tooltip } = dsSemanticTokens;\n let style = document.getElementById(STYLE_ID) as HTMLStyleElement | null;\n if (!style) {\n style = document.createElement('style');\n style.id = STYLE_ID;\n document.head.appendChild(style);\n }\n\n style.textContent = `\n .ds-tooltip-overlay {\n --ant-tooltip-arrow-background-color: ${tooltip.surface.background};\n }\n\n .ds-tooltip-overlay .ant-tooltip-container {\n background: ${tooltip.surface.background};\n border-radius: ${tooltip.radius};\n filter: ${tooltip.elevation};\n color: ${tooltip.surface.body};\n letter-spacing: 0;\n max-width: ${tooltip.width.normal.max};\n min-width: ${tooltip.width.normal.min};\n padding: ${tooltip.padding.normal};\n }\n\n .ds-tooltip-overlay .ant-tooltip-arrow .ant-tooltip-arrow-content {\n background: ${tooltip.surface.background};\n }\n\n .ds-tooltip-overlay .ant-tooltip-arrow::before {\n background: ${tooltip.surface.background};\n }\n\n .ds-tooltip-overlay.ant-tooltip-placement-left > .ant-tooltip-arrow,\n .ds-tooltip-overlay.ant-tooltip-placement-leftTop > .ant-tooltip-arrow,\n .ds-tooltip-overlay.ant-tooltip-placement-leftBottom > .ant-tooltip-arrow {\n inset-inline-end: 0;\n }\n\n .ds-tooltip-overlay.ant-tooltip-placement-right > .ant-tooltip-arrow,\n .ds-tooltip-overlay.ant-tooltip-placement-rightTop > .ant-tooltip-arrow,\n .ds-tooltip-overlay.ant-tooltip-placement-rightBottom > .ant-tooltip-arrow {\n inset-inline-start: 0;\n }\n\n .ds-tooltip-overlay.ds-tooltip-size-mini .ant-tooltip-container {\n min-width: ${tooltip.width.mini.min};\n max-width: ${tooltip.width.mini.max};\n padding: ${tooltip.padding.mini};\n text-align: center;\n }\n\n .ds-tooltip-title {\n margin: 0 0 4px;\n color: ${tooltip.surface.title};\n font-size: ${tooltip.typography.title.fontSize};\n font-weight: ${tooltip.typography.title.fontWeight};\n line-height: ${tooltip.typography.title.lineHeight};\n }\n\n .ds-tooltip-body {\n margin: 0;\n color: ${tooltip.surface.body};\n font-size: ${tooltip.typography.body.fontSize};\n font-weight: ${tooltip.typography.body.fontWeight};\n line-height: ${tooltip.typography.body.lineHeight};\n }\n\n .ds-tooltip-content {\n display: flex;\n flex-direction: column;\n gap: 4px;\n }\n\n .ds-tooltip-content-mini {\n align-items: center;\n }\n `;\n}\n\nfunction getDefaultContent(dsSize: DSTooltipSize, dsTitle: string | undefined, dsBody: string) {\n if (dsSize === 'mini') {\n return (\n <div className=\"ds-tooltip-content ds-tooltip-content-mini\">\n <p className=\"ds-tooltip-body\">{dsBody}</p>\n </div>\n );\n }\n\n return (\n <div className=\"ds-tooltip-content\">\n {dsTitle ? <p className=\"ds-tooltip-title\">{dsTitle}</p> : null}\n <p className=\"ds-tooltip-body\">{dsBody}</p>\n </div>\n );\n}\n\nfunction mergeClassNames(...names: Array<string | undefined>) {\n return names.filter(Boolean).join(' ');\n}\n\nexport const Tooltip = ({\n dsSize = 'normal',\n dsTitle,\n dsBody,\n title,\n color,\n arrow,\n styles,\n classNames,\n overlayClassName,\n children,\n ...props\n}: TooltipProps) => {\n const { tooltip } = dsSemanticTokens;\n\n useEffect(() => {\n ensureTooltipStyles();\n }, []);\n\n const defaultBody = dsSize === 'mini'\n ? 'Mini Tooltip'\n : 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla pellentesque fermentum dolor eget.';\n\n const resolvedBody = dsBody ?? defaultBody;\n const resolvedTitle: ReactNode =\n title !== undefined\n ? title\n : getDefaultContent(dsSize, dsTitle, resolvedBody);\n\n const sizeBodyStyles = dsSize === 'mini'\n ? {\n minWidth: tooltip.width.mini.min,\n maxWidth: tooltip.width.mini.max,\n padding: tooltip.padding.mini,\n textAlign: 'center' as const,\n }\n : {\n minWidth: tooltip.width.normal.min,\n maxWidth: tooltip.width.normal.max,\n padding: tooltip.padding.normal,\n };\n\n return (\n <AntTooltip\n {...props}\n title={resolvedTitle}\n color={color ?? tooltip.surface.background}\n arrow={arrow ?? true}\n styles={{\n ...styles,\n body: {\n borderRadius: tooltip.radius,\n color: tooltip.surface.body,\n letterSpacing: 0,\n ...sizeBodyStyles,\n ...styles?.body,\n },\n }}\n classNames={{\n ...classNames,\n root: mergeClassNames('ds-tooltip-overlay', `ds-tooltip-size-${dsSize}`, classNames?.root, overlayClassName),\n }}\n >\n {children}\n </AntTooltip>\n );\n};\n","import React, { useEffect } from 'react';\nimport { Pagination as AntPagination, type PaginationProps as AntPaginationProps } from 'antd';\nimport { Icon } from '../../utils/icons';\nimport { dsSemanticTokens } from '../../theme/ontadaTheme';\nimport { Tooltip as DSTooltip } from '../display/Tooltip';\n\nexport interface DSPaginationProps extends Omit<AntPaginationProps, 'size'> {\n /**\n * Pagination size. Note: Ant's 'size' prop is retained for design system control.\n * @default 'default'\n */\n size?: 'small' | 'default';\n /**\n * Optional responsive configuration for different breakpoints.\n * When true, uses recommended page limits: 9 pages on desktop, 5-6 on mobile/tablet.\n * @default false\n */\n dsResponsive?: boolean;\n /**\n * Breakpoint where DS responsive pagination switches to the compact mobile truncation pattern.\n * @default 768\n */\n dsResponsiveBreakpoint?: number;\n /**\n * Shows DS truncation jumper affordance for ellipsis controls.\n * @default true\n */\n dsShowTruncationJumper?: boolean;\n /**\n * Number of pages advanced when a truncation jumper is clicked.\n * @default 3\n */\n dsTruncationJumpSize?: number;\n /**\n * Delay in seconds before the truncation jumper tooltip appears.\n * @default 3\n */\n dsTruncationTooltipDelay?: number;\n /**\n * Tooltip label shown when hovering a truncation jumper.\n * @default 'Jump 3 pages'\n */\n dsTruncationTooltipLabel?: string;\n}\n\nconst STYLE_ID = 'ds-pagination-styles';\n\nfunction injectStyles() {\n if (typeof document === 'undefined') return;\n const { pagination } = dsSemanticTokens;\n let style = document.getElementById(STYLE_ID) as HTMLStyleElement | null;\n if (!style) {\n style = document.createElement('style');\n style.id = STYLE_ID;\n document.head.appendChild(style);\n }\n\n style.textContent = `\n .ds-pagination {\n display: flex;\n gap: ${pagination.spacing.gap};\n align-items: center;\n }\n\n .ds-pagination .ant-pagination {\n display: flex;\n gap: ${pagination.spacing.gap};\n align-items: center;\n margin: 0;\n }\n\n .ds-pagination .ant-pagination-item {\n display: flex !important;\n align-items: center !important;\n justify-content: center !important;\n padding: 4px 9px !important;\n border-radius: 16px !important;\n background: transparent !important;\n border: 1px solid transparent !important;\n outline: none !important;\n box-shadow: none !important;\n transition: none !important;\n -webkit-tap-highlight-color: transparent !important;\n min-width: 0 !important;\n height: auto !important;\n width: auto !important;\n aspect-ratio: auto !important;\n line-height: 1 !important;\n margin-inline-end: 0 !important;\n }\n\n .ds-pagination .ant-pagination-item a {\n color: ${pagination.text.default} !important;\n font-weight: ${pagination.typography.item.fontWeight} !important;\n font-size: ${pagination.typography.item.fontSize} !important;\n line-height: ${pagination.typography.item.lineHeight} !important;\n font-family: \"Nunito\", sans-serif !important;\n letter-spacing: ${pagination.typography.item.letterSpacing} !important;\n width: auto !important;\n min-width: 0 !important;\n height: auto !important;\n padding: 0 !important;\n outline: none !important;\n box-shadow: none !important;\n transition: none !important;\n -webkit-tap-highlight-color: transparent !important;\n }\n\n .ds-pagination .ant-pagination-item a:focus,\n .ds-pagination .ant-pagination-item a:focus-visible,\n .ds-pagination .ant-pagination-item:focus,\n .ds-pagination .ant-pagination-item:focus-visible {\n outline: none !important;\n box-shadow: none !important;\n }\n\n .ds-pagination .ant-pagination-item-active {\n background: ${pagination.surface.activeBg} !important;\n border: 1px solid ${pagination.surface.activeBorder} !important;\n }\n\n .ds-pagination .ant-pagination-item-active a {\n color: ${pagination.text.active} !important;\n font-weight: ${pagination.typography.item.activeWeight} !important;\n }\n\n .ds-pagination .ant-pagination-item:hover {\n background: ${pagination.surface.hoverBg} !important;\n border: 1px solid transparent !important;\n outline: none !important;\n box-shadow: none !important;\n }\n\n .ds-pagination .ant-pagination-item-active:hover {\n outline: none !important;\n box-shadow: none !important;\n background: ${pagination.surface.activeBg} !important;\n border: 1px solid ${pagination.surface.activeBorder} !important;\n }\n\n .ds-pagination .ant-pagination-prev,\n .ds-pagination .ant-pagination-next {\n display: flex !important;\n align-items: center !important;\n justify-content: center !important;\n width: ${pagination.iconControl.width} !important;\n height: ${pagination.iconControl.height} !important;\n min-width: ${pagination.iconControl.width} !important;\n flex: 0 0 ${pagination.iconControl.width} !important;\n padding: 0 !important;\n margin: 0 !important;\n margin-inline-end: 0 !important;\n background: transparent !important;\n border: none !important;\n color: ${pagination.text.default} !important;\n line-height: 1 !important;\n transition: none !important;\n outline: none !important;\n box-shadow: none !important;\n -webkit-tap-highlight-color: transparent !important;\n }\n\n .ds-pagination .ant-pagination-item-link {\n display: flex !important;\n align-items: center !important;\n justify-content: center !important;\n width: ${pagination.iconControl.width} !important;\n height: ${pagination.iconControl.height} !important;\n min-width: ${pagination.iconControl.width} !important;\n color: inherit !important;\n transition: none !important;\n -webkit-tap-highlight-color: transparent !important;\n }\n\n .ds-pagination .ds-pagination-arrow-icon {\n display: inline-flex !important;\n align-items: center !important;\n justify-content: center !important;\n width: ${pagination.iconControl.width} !important;\n height: ${pagination.iconControl.height} !important;\n color: inherit !important;\n line-height: 1 !important;\n pointer-events: none;\n }\n\n .ds-pagination .ant-pagination-item-link,\n .ds-pagination .ant-pagination-item-link:focus,\n .ds-pagination .ant-pagination-item-link:focus-visible,\n .ds-pagination .ant-pagination-item-link:active {\n outline: none !important;\n box-shadow: none !important;\n -webkit-tap-highlight-color: transparent !important;\n }\n\n .ds-pagination .ant-pagination-prev:hover,\n .ds-pagination .ant-pagination-next:hover,\n .ds-pagination .ant-pagination-item:not(.ant-pagination-item-active):hover {\n color: ${pagination.text.hover} !important;\n }\n\n .ds-pagination .ant-pagination-prev.ant-pagination-disabled,\n .ds-pagination .ant-pagination-next.ant-pagination-disabled {\n color: ${pagination.text.disabled} !important;\n cursor: not-allowed !important;\n transition: none !important;\n }\n\n .ds-pagination .ant-pagination-jump-prev,\n .ds-pagination .ant-pagination-jump-next {\n transition: none !important;\n display: flex !important;\n align-items: center !important;\n justify-content: center !important;\n width: 28px !important;\n height: 28px !important;\n min-width: 28px !important;\n padding: 0 !important;\n border-radius: ${pagination.radius.jump} !important;\n background: transparent !important;\n border: none !important;\n margin-inline-start: 0 !important;\n margin-inline-end: 0 !important;\n }\n\n .ds-pagination .ant-pagination-jump-prev a,\n .ds-pagination .ant-pagination-jump-next a {\n display: inline-flex !important;\n align-items: center !important;\n justify-content: center !important;\n margin: 0 !important;\n padding: 0 !important;\n min-width: 0 !important;\n color: ${pagination.text.default} !important;\n font-weight: ${pagination.typography.jump.fontWeight} !important;\n font-size: ${pagination.typography.jump.fontSize} !important;\n line-height: ${pagination.typography.jump.lineHeight} !important;\n }\n\n .ds-pagination .ant-pagination-jump-prev .ant-pagination-item-container,\n .ds-pagination .ant-pagination-jump-next .ant-pagination-item-container {\n display: inline-flex !important;\n align-items: center !important;\n justify-content: center !important;\n margin: 0 !important;\n padding: 0 !important;\n min-width: 0 !important;\n gap: 0 !important;\n }\n\n .ds-pagination .ant-pagination-jump-prev .ant-pagination-item-link-icon,\n .ds-pagination .ant-pagination-jump-next .ant-pagination-item-link-icon {\n display: none !important;\n opacity: 0 !important;\n visibility: hidden !important;\n }\n\n .ds-pagination .ant-pagination-jump-prev .ant-pagination-item-ellipsis,\n .ds-pagination .ant-pagination-jump-next .ant-pagination-item-ellipsis {\n position: static !important;\n inset: auto !important;\n display: inline-flex !important;\n align-items: center !important;\n justify-content: center !important;\n width: auto !important;\n min-width: 0 !important;\n height: auto !important;\n margin: 0 !important;\n padding: 0 !important;\n opacity: 1 !important;\n visibility: visible !important;\n }\n\n .ds-pagination .ds-pagination-jump-button {\n display: inline-flex !important;\n align-items: center !important;\n justify-content: center !important;\n width: 28px !important;\n min-width: 28px !important;\n height: 28px !important;\n margin: 0 !important;\n padding: 0 !important;\n border: 0 !important;\n background: transparent !important;\n color: ${pagination.text.default} !important;\n font: inherit !important;\n line-height: ${pagination.typography.jump.lineHeight} !important;\n cursor: pointer !important;\n }\n\n .ds-pagination .ds-pagination-jump-icon {\n display: none !important;\n align-items: center !important;\n justify-content: center !important;\n width: 8px !important;\n height: 8px !important;\n color: ${pagination.text.default} !important;\n line-height: 1 !important;\n }\n\n .ds-pagination .ds-pagination-jump-icon svg {\n width: 8px !important;\n height: 8px !important;\n display: block !important;\n }\n\n .ds-pagination .ds-pagination-truncation-icon {\n display: inline-flex !important;\n align-items: center !important;\n justify-content: center !important;\n width: 28px !important;\n height: 28px !important;\n color: ${pagination.text.default} !important;\n line-height: 1 !important;\n }\n\n .ds-pagination .ds-pagination-truncation-icon svg {\n width: 24px !important;\n height: 24px !important;\n display: block !important;\n }\n\n .ds-pagination .ant-pagination-jump-prev:hover,\n .ds-pagination .ant-pagination-jump-next:hover,\n .ds-pagination .ant-pagination-jump-prev:focus-within,\n .ds-pagination .ant-pagination-jump-next:focus-within {\n background: ${pagination.surface.hoverBg} !important;\n }\n\n .ds-pagination .ant-pagination-jump-prev:hover .ds-pagination-truncation-icon,\n .ds-pagination .ant-pagination-jump-next:hover .ds-pagination-truncation-icon,\n .ds-pagination .ds-pagination-jump-button:focus-visible .ds-pagination-truncation-icon {\n display: none !important;\n }\n\n .ds-pagination .ant-pagination-jump-prev:hover .ds-pagination-jump-icon,\n .ds-pagination .ant-pagination-jump-next:hover .ds-pagination-jump-icon,\n .ds-pagination .ds-pagination-jump-button:focus-visible .ds-pagination-jump-icon {\n display: inline-flex !important;\n }\n\n .ds-pagination-jumper-tooltip.ds-tooltip-overlay .ant-tooltip-container {\n min-width: 0 !important;\n max-width: none !important;\n padding: 6px 12px 5px !important;\n border-radius: ${dsSemanticTokens.tooltip.radius} !important;\n background: ${dsSemanticTokens.tooltip.surface.background} !important;\n filter: none !important;\n box-shadow: none !important;\n }\n\n .ds-pagination-jumper-tooltip.ds-tooltip-overlay {\n filter: drop-shadow(0px 2px 4px rgba(38, 44, 54, 0.3)) !important;\n --ant-tooltip-arrow-background-color: ${dsSemanticTokens.tooltip.surface.background};\n overflow: visible !important;\n }\n\n .ds-pagination-jumper-tooltip.ds-tooltip-overlay .ant-tooltip-content {\n overflow: visible !important;\n }\n\n .ds-pagination-jumper-tooltip.ds-tooltip-overlay .ds-tooltip-body {\n color: ${dsSemanticTokens.tooltip.surface.body} !important;\n font-size: ${dsSemanticTokens.tooltip.typography.body.fontSize} !important;\n line-height: ${dsSemanticTokens.tooltip.typography.body.lineHeight} !important;\n font-weight: ${dsSemanticTokens.tooltip.typography.body.fontWeight} !important;\n white-space: nowrap !important;\n }\n\n .ds-pagination-jumper-tooltip.ds-tooltip-overlay.ant-tooltip-placement-top > .ant-tooltip-arrow {\n display: none !important;\n }\n\n .ds-pagination-jumper-tooltip.ds-tooltip-overlay.ant-tooltip-placement-top .ant-tooltip-container {\n position: relative !important;\n overflow: visible !important;\n }\n\n .ds-pagination-jumper-tooltip.ds-tooltip-overlay.ant-tooltip-placement-top .ant-tooltip-container::after {\n content: '' !important;\n position: absolute !important;\n left: 50% !important;\n bottom: -9px !important;\n width: 0 !important;\n height: 0 !important;\n border-left: 8px solid transparent !important;\n border-right: 8px solid transparent !important;\n border-top: 9px solid ${dsSemanticTokens.tooltip.surface.background} !important;\n transform: translateX(-50%) !important;\n filter: drop-shadow(0px 2px 1px rgba(38, 44, 54, 0.3)) !important;\n pointer-events: none !important;\n }\n\n .ds-pagination .ds-pagination-jump-button:focus-visible {\n outline: 2px solid ${pagination.text.default} !important;\n outline-offset: 2px !important;\n border-radius: ${pagination.radius.jump} !important;\n }\n\n .ds-pagination .ant-pagination-options {\n display: flex !important;\n gap: ${pagination.spacing.optionsGap} !important;\n align-items: center !important;\n margin-left: ${pagination.spacing.optionsOffset} !important;\n }\n\n .ds-pagination .ant-pagination-options-size-changer {\n display: flex !important;\n align-items: center !important;\n }\n\n .ds-pagination .ant-pagination-options-quick-jumper {\n display: flex !important;\n align-items: center !important;\n gap: 8px !important;\n }\n\n .ds-pagination .ant-pagination-options-quick-jumper input {\n width: ${pagination.quickJumper.inputWidth} !important;\n min-width: ${pagination.quickJumper.inputWidth} !important;\n padding: 4px 8px !important;\n border: 1px solid ${pagination.text.disabled} !important;\n border-radius: ${pagination.radius.input} !important;\n font-size: ${pagination.typography.jump.fontSize} !important;\n text-align: center !important;\n }\n `;\n}\n\n/**\n * DSPagination\n * \n * Design system wrapper for Ant Design's Pagination component.\n * Provides consistent styling, sizing, and responsive behavior\n * while allowing full pass-through of Ant's pagination API.\n * \n * Design tokens applied:\n * - Selected page: #faf5e2 background, #f7c91e border\n * - Unselected page: #007cc1 text color\n * - Text: 16px, semibold unselected / bold selected\n * - Gap: 16px between items\n * - Border radius: 16px\n * \n * Canonical variants:\n * - Default: Standard pagination with 2-9 pages (desktop)\n * - Mobile: Reduced page numbers (5-6 pages max)\n * - With quick jumper: For navigating many pages\n * - With size changer: For changing results per page\n */\nexport const Pagination: React.FC<DSPaginationProps> = ({\n size = 'default',\n dsResponsive = false,\n dsResponsiveBreakpoint = 768,\n dsShowTruncationJumper = true,\n dsTruncationJumpSize = 3,\n dsTruncationTooltipDelay = 3,\n dsTruncationTooltipLabel,\n showQuickJumper = false,\n showSizeChanger = false,\n simple = false,\n className,\n current,\n defaultCurrent = 1,\n pageSize,\n defaultPageSize = 10,\n total = 0,\n showLessItems,\n onChange,\n onShowSizeChange,\n itemRender: providedItemRender,\n locale,\n ...antProps\n}) => {\n const [internalCurrent, setInternalCurrent] = React.useState(defaultCurrent);\n const [internalPageSize, setInternalPageSize] = React.useState(defaultPageSize);\n const [isCompactResponsive, setIsCompactResponsive] = React.useState(false);\n\n useEffect(() => {\n injectStyles();\n }, []);\n\n useEffect(() => {\n if (!dsResponsive || typeof window === 'undefined') return;\n\n const updateResponsiveMode = () => {\n setIsCompactResponsive(window.innerWidth <= dsResponsiveBreakpoint);\n };\n\n updateResponsiveMode();\n window.addEventListener('resize', updateResponsiveMode);\n\n return () => {\n window.removeEventListener('resize', updateResponsiveMode);\n };\n }, [dsResponsive, dsResponsiveBreakpoint]);\n\n const resolvedCurrent = current ?? internalCurrent;\n const resolvedPageSize = pageSize ?? internalPageSize;\n const resolvedShowLessItems = showLessItems ?? (dsResponsive && isCompactResponsive);\n const totalPages = Math.max(1, Math.ceil(total / resolvedPageSize));\n const truncationTooltipLabel = dsTruncationTooltipLabel ?? `Jump ${dsTruncationJumpSize} pages`;\n const resolvedLocale = React.useMemo(() => {\n if (!dsShowTruncationJumper) return locale;\n\n return {\n ...locale,\n prev_3: truncationTooltipLabel,\n next_3: truncationTooltipLabel,\n prev_5: truncationTooltipLabel,\n next_5: truncationTooltipLabel,\n };\n }, [dsShowTruncationJumper, locale, truncationTooltipLabel]);\n\n const changePage = React.useCallback((nextPage: number) => {\n const clampedPage = Math.min(totalPages, Math.max(1, nextPage));\n if (current == null) {\n setInternalCurrent(clampedPage);\n }\n onChange?.(clampedPage, resolvedPageSize);\n }, [current, onChange, resolvedPageSize, totalPages]);\n\n const handlePaginationChange = React.useCallback((nextPage: number, nextPageSize: number) => {\n if (current == null) {\n setInternalCurrent(nextPage);\n }\n if (pageSize == null) {\n setInternalPageSize(nextPageSize);\n }\n onChange?.(nextPage, nextPageSize);\n }, [current, onChange, pageSize]);\n\n const handleShowSizeChange = React.useCallback((nextPage: number, nextPageSize: number) => {\n if (current == null) {\n setInternalCurrent(nextPage);\n }\n if (pageSize == null) {\n setInternalPageSize(nextPageSize);\n }\n onShowSizeChange?.(nextPage, nextPageSize);\n }, [current, onShowSizeChange, pageSize]);\n\n const renderJumpItem = React.useCallback((type: 'jump-prev' | 'jump-next') => {\n const isPrevious = type === 'jump-prev';\n const targetPage = isPrevious\n ? resolvedCurrent - dsTruncationJumpSize\n : resolvedCurrent + dsTruncationJumpSize;\n\n const jumpButton = (\n <button\n type=\"button\"\n className=\"ds-pagination-jump-button\"\n aria-label={truncationTooltipLabel}\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n changePage(targetPage);\n }}\n onKeyDown={(event) => {\n event.stopPropagation();\n }}\n >\n <span className=\"ds-pagination-truncation-icon\" aria-hidden=\"true\">\n <Icon\n name=\"moreOptionHorizontal2\"\n size={28}\n style={{ color: 'inherit' }}\n />\n </span>\n <span className=\"ds-pagination-jump-icon\" aria-hidden=\"true\">\n <Icon\n name={isPrevious ? 'arrowButtonLeft1' : 'arrowButtonRight1'}\n size={8}\n style={{ color: 'inherit' }}\n />\n </span>\n </button>\n );\n\n return (\n <DSTooltip\n dsSize=\"mini\"\n dsBody={truncationTooltipLabel}\n mouseEnterDelay={dsTruncationTooltipDelay}\n placement=\"top\"\n classNames={{ root: 'ds-pagination-jumper-tooltip' }}\n >\n {jumpButton}\n </DSTooltip>\n );\n }, [changePage, dsTruncationJumpSize, dsTruncationTooltipDelay, resolvedCurrent, truncationTooltipLabel]);\n\n const itemRender: AntPaginationProps['itemRender'] = (_, type, originalElement) => {\n if (type === 'prev') {\n return (\n <span className=\"ds-pagination-arrow-icon\" aria-hidden=\"true\">\n <Icon name=\"arrowLeft1\" size={dsSemanticTokens.pagination.iconControl.iconSize} style={{ color: 'inherit' }} />\n </span>\n );\n }\n\n if (type === 'next') {\n return (\n <span className=\"ds-pagination-arrow-icon\" aria-hidden=\"true\">\n <Icon name=\"arrowRight1\" size={dsSemanticTokens.pagination.iconControl.iconSize} style={{ color: 'inherit' }} />\n </span>\n );\n }\n\n if ((type === 'jump-prev' || type === 'jump-next') && dsShowTruncationJumper) {\n return renderJumpItem(type);\n }\n\n if (providedItemRender) {\n return providedItemRender(_, type, originalElement);\n }\n\n return originalElement;\n };\n\n // Apply design system defaults while preserving Ant prop pass-through\n return (\n <AntPagination\n className={`ds-pagination ${className || ''}`}\n size={size}\n current={resolvedCurrent}\n pageSize={resolvedPageSize}\n total={total}\n showLessItems={resolvedShowLessItems}\n showQuickJumper={showQuickJumper}\n showSizeChanger={showSizeChanger}\n simple={simple}\n locale={resolvedLocale}\n itemRender={itemRender}\n onChange={handlePaginationChange}\n onShowSizeChange={handleShowSizeChange}\n {...antProps}\n />\n );\n};\n\nexport default Pagination;\n","import { CORE_COLORS } from '../../tokens/core';\n\nconst STYLE_ID = 'ds-steps-styles';\n\nexport const DS_STEPS_CLASS = 'ds-steps';\n\nexport const mergeStepsClassNames = (...classNames: Array<string | undefined>): string =>\n classNames.filter(Boolean).join(' ').trim();\n\nexport const ensureStepsStyles = () => {\n if (typeof document === 'undefined' || document.getElementById(STYLE_ID)) {\n return;\n }\n\n const style = document.createElement('style');\n style.id = STYLE_ID;\n style.textContent = `\n .${DS_STEPS_CLASS}.ant-steps {\n --ds-steps-complete: ${CORE_COLORS.status.success};\n --ds-steps-progress: ${CORE_COLORS.text.muted};\n --ds-steps-next: ${CORE_COLORS.text.disabled};\n --ds-steps-line-complete: ${CORE_COLORS.text.muted};\n --ds-steps-line-wait: ${CORE_COLORS.surface.divider};\n --ds-steps-text: ${CORE_COLORS.text.primary};\n --ds-steps-error: ${CORE_COLORS.status.errorDark};\n }\n\n .${DS_STEPS_CLASS}.ant-steps .ant-steps-item-tail::after {\n height: 2px !important;\n background-image: none !important;\n background: var(--ds-steps-line-wait) !important;\n }\n\n .${DS_STEPS_CLASS}.ant-steps .ant-steps-item-rail {\n border-color: var(--ds-steps-line-wait) !important;\n border-top-color: var(--ds-steps-line-wait) !important;\n border-top-width: 2px !important;\n }\n\n .${DS_STEPS_CLASS}.ant-steps .ant-steps-item-rail-process,\n .${DS_STEPS_CLASS}.ant-steps .ant-steps-item-rail-wait {\n border-color: var(--ds-steps-line-wait) !important;\n border-top-color: var(--ds-steps-line-wait) !important;\n }\n\n .${DS_STEPS_CLASS}.ant-steps .ant-steps-item-rail-finish {\n border-color: var(--ds-steps-line-complete) !important;\n border-top-color: var(--ds-steps-line-complete) !important;\n }\n\n .${DS_STEPS_CLASS}.ant-steps.ant-steps-vertical .ant-steps-item-rail {\n inset-inline-start: 12px !important;\n top: 24px !important;\n bottom: 0 !important;\n width: 2px !important;\n border-inline-start-width: 2px !important;\n }\n\n .${DS_STEPS_CLASS}.ant-steps.ant-steps-vertical.ant-steps-small .ant-steps-item-rail {\n inset-inline-start: 8px !important;\n top: 16px !important;\n bottom: 0 !important;\n width: 2px !important;\n border-inline-start-width: 2px !important;\n }\n\n .${DS_STEPS_CLASS}.ant-steps .ant-steps-item-finish .ant-steps-item-rail-process {\n border-color: var(--ds-steps-line-complete) !important;\n border-top-color: var(--ds-steps-line-complete) !important;\n }\n\n .${DS_STEPS_CLASS}.ant-steps .ant-steps-item-process > .ant-steps-item-container > .ant-steps-item-tail::after,\n .${DS_STEPS_CLASS}.ant-steps .ant-steps-item-wait > .ant-steps-item-container > .ant-steps-item-tail::after,\n .${DS_STEPS_CLASS}.ant-steps .ant-steps-item-process .ant-steps-item-tail::after,\n .${DS_STEPS_CLASS}.ant-steps .ant-steps-item-wait .ant-steps-item-tail::after {\n background-image: none !important;\n background: var(--ds-steps-line-wait) !important;\n }\n\n .${DS_STEPS_CLASS}.ant-steps .ant-steps-item-finish > .ant-steps-item-container > .ant-steps-item-tail::after,\n .${DS_STEPS_CLASS}.ant-steps .ant-steps-item-finish .ant-steps-item-tail::after {\n background-image: none !important;\n background: var(--ds-steps-line-complete) !important;\n }\n\n .${DS_STEPS_CLASS}.ant-steps.ant-steps-horizontal.ant-steps-label-vertical .ant-steps-item-tail {\n top: 12px !important;\n padding: 0 !important;\n inset-inline-start: calc(50% + 12px) !important;\n inset-inline-end: calc(-50% + 12px) !important;\n width: auto !important;\n }\n\n .${DS_STEPS_CLASS}.ant-steps.ant-steps-horizontal.ant-steps-title-vertical > .ant-steps-item .ant-steps-item-rail {\n margin-top: 13px !important;\n width: calc(100% - 24px) !important;\n inset-inline-start: calc(50% + 8px) !important;\n }\n\n .${DS_STEPS_CLASS}.ant-steps.ant-steps-horizontal.ant-steps-label-vertical .ant-steps-item-icon {\n margin-inline-end: 0 !important;\n }\n\n .${DS_STEPS_CLASS}.ant-steps.ant-steps-horizontal.ant-steps-label-vertical.ant-steps-small .ant-steps-item-tail {\n top: 8px !important;\n inset-inline-start: calc(50% + 8px) !important;\n inset-inline-end: calc(-50% + 8px) !important;\n }\n\n .${DS_STEPS_CLASS}.ant-steps.ant-steps-horizontal.ant-steps-title-vertical.ant-steps-small > .ant-steps-item .ant-steps-item-rail {\n margin-top: 9px !important;\n width: calc(100% - 16px) !important;\n inset-inline-start: calc(50% + 5px) !important;\n }\n\n .${DS_STEPS_CLASS}.ant-steps.ant-steps-horizontal.ant-steps-label-vertical .ant-steps-item-container {\n display: flex !important;\n flex-direction: column !important;\n align-items: center !important;\n }\n\n .${DS_STEPS_CLASS}.ant-steps.ant-steps-horizontal.ant-steps-label-vertical .ant-steps-item-content {\n width: auto !important;\n margin-top: 8px !important;\n text-align: center !important;\n min-width: 52px !important;\n }\n\n .${DS_STEPS_CLASS}.ant-steps .ant-steps-item-icon {\n width: 24px !important;\n height: 24px !important;\n margin-inline-end: 8px !important;\n border: 0 !important;\n background: var(--ds-steps-next) !important;\n display: inline-flex !important;\n align-items: center !important;\n justify-content: center !important;\n box-shadow: none !important;\n }\n\n .${DS_STEPS_CLASS}.ant-steps.ant-steps-small .ant-steps-item-icon {\n width: 16px !important;\n height: 16px !important;\n margin-inline-end: 6px !important;\n }\n\n .${DS_STEPS_CLASS}.ant-steps .ant-steps-item-process .ant-steps-item-icon {\n background: var(--ds-steps-progress) !important;\n color: ${CORE_COLORS.text.inverse} !important;\n }\n\n .${DS_STEPS_CLASS}.ant-steps .ant-steps-item-finish .ant-steps-item-icon {\n background: var(--ds-steps-complete) !important;\n color: ${CORE_COLORS.text.inverse} !important;\n }\n\n .${DS_STEPS_CLASS}.ant-steps .ant-steps-item-error .ant-steps-item-icon {\n background: var(--ds-steps-error) !important;\n }\n\n .${DS_STEPS_CLASS}.ant-steps .ant-steps-item:not(.ant-steps-item-custom) .ant-steps-item-icon .ant-steps-icon {\n color: ${CORE_COLORS.text.inverse} !important;\n font-size: 0 !important;\n line-height: 1 !important;\n }\n\n .${DS_STEPS_CLASS}.ant-steps .ant-steps-item-finish:not(.ant-steps-item-custom) .ant-steps-item-icon .ant-steps-icon .anticon {\n font-size: 11px !important;\n color: ${CORE_COLORS.text.inverse} !important;\n }\n\n .${DS_STEPS_CLASS}.ant-steps .ant-steps-item-finish:not(.ant-steps-item-custom) .ant-steps-item-icon .anticon {\n color: ${CORE_COLORS.text.inverse} !important;\n }\n\n .${DS_STEPS_CLASS}.ant-steps .ant-steps-item-finish:not(.ant-steps-item-custom) .ant-steps-item-icon .ant-steps-icon .anticon svg,\n .${DS_STEPS_CLASS}.ant-steps .ant-steps-item-finish:not(.ant-steps-item-custom) .ant-steps-item-icon .ant-steps-icon .anticon path {\n fill: currentColor !important;\n stroke: currentColor !important;\n }\n\n .${DS_STEPS_CLASS}.ant-steps .ant-steps-item-title {\n color: var(--ds-steps-text) !important;\n font-size: 14px !important;\n font-weight: 600 !important;\n line-height: 18px !important;\n letter-spacing: 0 !important;\n padding-right: 0 !important;\n }\n\n .${DS_STEPS_CLASS}.ant-steps.ant-steps-small .ant-steps-item-title {\n font-size: 12px !important;\n line-height: 16px !important;\n letter-spacing: 0.012px !important;\n }\n\n .${DS_STEPS_CLASS}.ant-steps .ant-steps-item-title::after {\n display: none !important;\n }\n\n .${DS_STEPS_CLASS}.ant-steps .ant-steps-item-description {\n color: ${CORE_COLORS.text.secondary} !important;\n font-size: 12px !important;\n line-height: 16px !important;\n }\n `;\n\n document.head.appendChild(style);\n};\n","import { Steps as AntSteps } from 'antd';\nimport type { StepsProps } from 'antd';\nimport { useEffect } from 'react';\nimport { DS_STEPS_CLASS, ensureStepsStyles, mergeStepsClassNames } from './stepsStyles';\n\nexport type DSStepsVariant = 'ant' | 'ontada-progress';\n\nexport type DSStepsProps = StepsProps & {\n /** Opt-in DS styling variant. Defaults to Ant-native rendering. */\n dsVariant?: DSStepsVariant;\n};\n\nexport const Steps = ({\n className: providedClassName,\n dsVariant = 'ant',\n ...props\n}: DSStepsProps) => {\n useEffect(() => {\n ensureStepsStyles();\n }, []);\n\n const isDsVariant = dsVariant === 'ontada-progress';\n const mergedClassName = mergeStepsClassNames(\n isDsVariant ? DS_STEPS_CLASS : undefined,\n providedClassName,\n );\n const resolvedLabelPlacement =\n isDsVariant\n ? props.labelPlacement ?? (props.direction === 'vertical' ? undefined : 'vertical')\n : props.labelPlacement;\n\n return <AntSteps {...props} labelPlacement={resolvedLabelPlacement} className={mergedClassName} />;\n};\n\nSteps.displayName = 'Steps';\n","import { Tabs as AntTabs } from 'antd';\nimport type { TabsProps as AntTabsProps } from 'antd';\nimport { useEffect, useRef } from 'react';\nimport { dsSemanticTokens } from '../../theme/ontadaTheme';\n\nexport type DSTabsSize = 'sm' | 'md' | 'lg';\nexport type DSTabsLayout = 'default-hug' | 'equal-width';\nexport type DSTabsVariant = 'line' | 'segmented-light';\n\nexport type TabsProps = AntTabsProps & {\n /** DS visual variant. */\n dsVariant?: DSTabsVariant;\n /** DS tab size mapped from Figma menu tab variants. */\n dsSize?: DSTabsSize;\n /** DS layout mode: intrinsic tab widths or equal-width tabs. */\n dsLayout?: DSTabsLayout;\n /** DS underline baseline under the tab row. */\n dsUnderline?: boolean;\n};\n\nconst STYLE_ID = 'ds-tabs-styles';\nconst LABEL_STABILITY_ATTR = 'data-ds-tab-label';\nconst TAB_HORIZONTAL_PADDING_PX = 16;\n\nconst SIZE_TOKENS: Record<DSTabsSize, {\n tabHeight: string;\n fontSize: string;\n lineHeight: string;\n letterSpacingActive: string;\n letterSpacingInactive: string;\n segmentedMinWidth: string;\n}> = {\n sm: {\n tabHeight: '26px',\n fontSize: '12px',\n lineHeight: '16px',\n letterSpacingActive: '0.54px',\n letterSpacingInactive: '0.48px',\n segmentedMinWidth: '104px',\n },\n md: {\n tabHeight: '40px',\n fontSize: '14px',\n lineHeight: '18px',\n letterSpacingActive: '0.56px',\n letterSpacingInactive: '0.49px',\n segmentedMinWidth: '132px',\n },\n lg: {\n tabHeight: '44px',\n fontSize: '16px',\n lineHeight: '20px',\n letterSpacingActive: '0.56px',\n letterSpacingInactive: '0.48px',\n segmentedMinWidth: '160px',\n },\n};\n\nfunction injectStyles() {\n if (typeof document === 'undefined') return;\n if (document.getElementById(STYLE_ID)) return;\n\n const { tabs, segmented } = dsSemanticTokens;\n\n const style = document.createElement('style');\n style.id = STYLE_ID;\n style.textContent = `\n [data-ds-tabs].ant-tabs .ant-tabs-nav {\n margin: 0;\n }\n\n [data-ds-tabs].ant-tabs .ant-tabs-tab {\n margin: 0;\n padding: 0 16px;\n height: var(--ds-tabs-height);\n align-items: center;\n }\n\n [data-ds-tabs].ant-tabs .ant-tabs-tab-btn {\n display: inline-grid;\n color: ${tabs.text.inactive};\n font-size: var(--ds-tabs-font-size);\n font-weight: 600;\n line-height: var(--ds-tabs-line-height);\n letter-spacing: var(--ds-tabs-letter-inactive);\n text-transform: uppercase;\n }\n\n /* Reserve width using a hidden bold clone to prevent layout shift on activation. */\n [data-ds-tabs].ant-tabs .ant-tabs-tab-btn::after {\n content: attr(${LABEL_STABILITY_ATTR});\n font-size: inherit;\n font-weight: 700;\n line-height: inherit;\n letter-spacing: var(--ds-tabs-letter-active);\n text-transform: inherit;\n visibility: hidden;\n pointer-events: none;\n height: 0;\n overflow: hidden;\n }\n\n [data-ds-tabs].ant-tabs .ant-tabs-tab.ant-tabs-tab-active .ant-tabs-tab-btn {\n color: ${tabs.text.active};\n font-weight: 700;\n letter-spacing: var(--ds-tabs-letter-active);\n }\n\n [data-ds-tabs].ant-tabs .ant-tabs-ink-bar {\n height: 4px;\n background: ${tabs.indicator.active};\n }\n\n [data-ds-tabs].ant-tabs .ant-tabs-ink-bar,\n [data-ds-tabs].ant-tabs .ant-tabs-tab,\n [data-ds-tabs].ant-tabs .ant-tabs-tab-btn,\n [data-ds-tabs].ant-tabs .ant-tabs-content,\n [data-ds-tabs].ant-tabs .ant-tabs-tabpane {\n transition: none !important;\n animation: none !important;\n }\n\n [data-ds-tabs].ant-tabs-top > .ant-tabs-content-holder {\n margin-top: 24px;\n }\n\n [data-ds-tabs][data-ds-underline='true'].ant-tabs-top > .ant-tabs-nav::before,\n [data-ds-tabs][data-ds-underline='true'].ant-tabs-bottom > .ant-tabs-nav::before {\n border-bottom: 1px solid ${tabs.indicator.baseline};\n }\n\n [data-ds-tabs][data-ds-underline='false'].ant-tabs-top > .ant-tabs-nav::before,\n [data-ds-tabs][data-ds-underline='false'].ant-tabs-bottom > .ant-tabs-nav::before {\n border-bottom: none;\n }\n\n [data-ds-tabs][data-ds-layout='equal-width'].ant-tabs-top .ant-tabs-nav-list,\n [data-ds-tabs][data-ds-layout='equal-width'].ant-tabs-bottom .ant-tabs-nav-list {\n width: 100%;\n display: flex;\n }\n\n [data-ds-tabs][data-ds-layout='equal-width'].ant-tabs-top .ant-tabs-tab,\n [data-ds-tabs][data-ds-layout='equal-width'].ant-tabs-bottom .ant-tabs-tab {\n flex: 1 1 0;\n justify-content: center;\n }\n\n [data-ds-tabs][data-ds-layout='equal-width'].ant-tabs-top .ant-tabs-tab-btn,\n [data-ds-tabs][data-ds-layout='equal-width'].ant-tabs-bottom .ant-tabs-tab-btn {\n text-align: center;\n }\n\n [data-ds-tabs][data-ds-variant='segmented-light'].ant-tabs-top > .ant-tabs-nav {\n display: inline-flex;\n width: fit-content;\n max-width: 100%;\n flex: 0 0 auto;\n padding: 4px;\n background: ${segmented.container.background};\n border: none;\n border-radius: 8px;\n box-shadow: none;\n }\n\n [data-ds-tabs][data-ds-variant='segmented-light'].ant-tabs-top > .ant-tabs-nav::before {\n border-bottom: none;\n }\n\n [data-ds-tabs][data-ds-variant='segmented-light'].ant-tabs-top > .ant-tabs-nav .ant-tabs-nav-wrap,\n [data-ds-tabs][data-ds-variant='segmented-light'].ant-tabs-top > .ant-tabs-nav .ant-tabs-nav-list {\n width: auto;\n flex: 0 0 auto;\n max-width: 100%;\n }\n\n [data-ds-tabs][data-ds-variant='segmented-light'].ant-tabs-top .ant-tabs-nav-list {\n gap: 4px;\n align-items: center;\n }\n\n [data-ds-tabs][data-ds-variant='segmented-light'].ant-tabs-top .ant-tabs-tab {\n min-width: var(--ds-tabs-segmented-min-width);\n height: var(--ds-tabs-height);\n padding: 0 16px;\n justify-content: center;\n border-radius: 6px;\n border: 1px solid transparent;\n background: transparent;\n }\n\n [data-ds-tabs][data-ds-variant='segmented-light'].ant-tabs-top .ant-tabs-tab-btn {\n color: ${segmented.text.inactive};\n font-weight: ${segmented.typography.fontWeight};\n letter-spacing: 0;\n text-transform: none;\n }\n\n [data-ds-tabs][data-ds-variant='segmented-light'][data-ds-size='sm'].ant-tabs-top .ant-tabs-tab-btn {\n font-size: ${SIZE_TOKENS.md.fontSize};\n line-height: ${SIZE_TOKENS.md.lineHeight};\n }\n\n [data-ds-tabs][data-ds-variant='segmented-light'].ant-tabs-top .ant-tabs-tab.ant-tabs-tab-active {\n background: ${segmented.item.selectedBackground};\n border-color: transparent;\n }\n\n [data-ds-tabs][data-ds-variant='segmented-light'].ant-tabs-top .ant-tabs-tab.ant-tabs-tab-active .ant-tabs-tab-btn {\n color: ${tabs.text.active};\n font-weight: 700;\n letter-spacing: 0;\n }\n\n [data-ds-tabs][data-ds-variant='segmented-light'].ant-tabs-top .ant-tabs-ink-bar {\n display: none;\n }\n\n [data-ds-tabs][data-ds-variant='segmented-light'].ant-tabs-top > .ant-tabs-content-holder {\n margin-top: 16px;\n }\n\n [data-ds-tabs][data-ds-variant='segmented-light'][data-ds-layout='equal-width'].ant-tabs-top > .ant-tabs-nav {\n display: flex;\n width: 100%;\n }\n `;\n\n document.head.appendChild(style);\n}\n\nfunction syncTabLabelStabilityAttrs(root: HTMLElement | null) {\n if (!root) return;\n\n const tabButtons = root.querySelectorAll<HTMLElement>('.ant-tabs-tab-btn');\n tabButtons.forEach((button) => {\n const label = (button.textContent ?? '').replace(/\\s+/g, ' ').trim();\n button.setAttribute(LABEL_STABILITY_ATTR, label);\n });\n}\n\nexport const Tabs = ({\n dsVariant = 'line',\n dsSize = 'md',\n dsLayout = 'default-hug',\n dsUnderline = false,\n indicator,\n style,\n className,\n ...props\n}: TabsProps) => {\n const rootRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n injectStyles();\n\n syncTabLabelStabilityAttrs(rootRef.current);\n\n const observer = new MutationObserver(() => {\n syncTabLabelStabilityAttrs(rootRef.current);\n });\n\n if (rootRef.current) {\n observer.observe(rootRef.current, {\n subtree: true,\n childList: true,\n characterData: true,\n });\n }\n\n return () => {\n observer.disconnect();\n };\n }, []);\n\n const tokens = SIZE_TOKENS[dsSize];\n const resolvedIndicator = indicator ?? {\n size: (origin: number) => Math.max(origin - TAB_HORIZONTAL_PADDING_PX * 2, 0),\n align: 'center' as const,\n };\n\n return (\n <div ref={rootRef}>\n <AntTabs\n {...props}\n className={className}\n animated={false}\n indicator={resolvedIndicator}\n style={{\n ...style,\n ['--ds-tabs-height' as string]: tokens.tabHeight,\n ['--ds-tabs-font-size' as string]: tokens.fontSize,\n ['--ds-tabs-line-height' as string]: tokens.lineHeight,\n ['--ds-tabs-letter-active' as string]: tokens.letterSpacingActive,\n ['--ds-tabs-letter-inactive' as string]: tokens.letterSpacingInactive,\n ['--ds-tabs-segmented-min-width' as string]: tokens.segmentedMinWidth,\n }}\n data-ds-tabs\n data-ds-variant={dsVariant}\n data-ds-size={dsSize}\n data-ds-layout={dsLayout}\n data-ds-underline={dsUnderline ? 'true' : 'false'}\n />\n </div>\n );\n};\n","import { CORE_COLORS } from '../../tokens/core';\n\nconst STYLE_ID = 'ds-dropdown-styles';\n\nexport const DS_DROPDOWN_MENU_CLASS = 'ds-dropdown-menu';\n\nexport const mergeDropdownClassNames = (...classNames: Array<string | undefined>): string =>\n classNames.filter(Boolean).join(' ').trim();\n\nexport const ensureDropdownStyles = () => {\n if (typeof document === 'undefined' || document.getElementById(STYLE_ID)) {\n return;\n }\n\n const style = document.createElement('style');\n style.id = STYLE_ID;\n style.textContent = `\n .${DS_DROPDOWN_MENU_CLASS}.ant-dropdown {\n border: 1px solid ${CORE_COLORS.text.primary} !important;\n border-radius: 4px !important;\n background: ${CORE_COLORS.text.inverse} !important;\n box-shadow: 0 4px 4px color-mix(in srgb, ${CORE_COLORS.text.primary} 15%, transparent) !important;\n overflow: hidden !important;\n padding: 0 !important;\n }\n\n .${DS_DROPDOWN_MENU_CLASS}.ant-dropdown .ant-dropdown-menu {\n margin: 0 !important;\n padding: 0 !important;\n border-radius: 0 !important;\n background: ${CORE_COLORS.text.inverse} !important;\n box-shadow: none !important;\n }\n\n .${DS_DROPDOWN_MENU_CLASS}.ant-dropdown .ant-dropdown-menu-item,\n .${DS_DROPDOWN_MENU_CLASS}.ant-dropdown .ant-dropdown-menu-submenu-title {\n min-height: 34px !important;\n padding: 8px 16px !important;\n border-bottom: 1px solid ${CORE_COLORS.text.disabled} !important;\n border-radius: 0 !important;\n color: ${CORE_COLORS.text.primary} !important;\n background: ${CORE_COLORS.text.inverse} !important;\n font-family: var(--ant-font-family, 'Nunito', sans-serif) !important;\n font-size: 14px !important;\n line-height: 18px !important;\n transition: none !important;\n }\n\n .${DS_DROPDOWN_MENU_CLASS}.ant-dropdown .ant-dropdown-menu-item:last-child,\n .${DS_DROPDOWN_MENU_CLASS}.ant-dropdown .ant-dropdown-menu-submenu:last-child > .ant-dropdown-menu-submenu-title,\n .${DS_DROPDOWN_MENU_CLASS}.ant-dropdown .ant-dropdown-menu-submenu:last-child .ant-dropdown-menu .ant-dropdown-menu-item:last-child,\n .${DS_DROPDOWN_MENU_CLASS}.ant-dropdown .ant-dropdown-menu-submenu:last-child .ant-dropdown-menu .ant-dropdown-menu-submenu:last-child > .ant-dropdown-menu-submenu-title {\n border-bottom: 0 !important;\n }\n\n .${DS_DROPDOWN_MENU_CLASS}.ant-dropdown .ant-dropdown-menu-item:hover,\n .${DS_DROPDOWN_MENU_CLASS}.ant-dropdown .ant-dropdown-menu-item-active,\n .${DS_DROPDOWN_MENU_CLASS}.ant-dropdown .ant-dropdown-menu-submenu-title:hover,\n .${DS_DROPDOWN_MENU_CLASS}.ant-dropdown .ant-dropdown-menu-submenu-active > .ant-dropdown-menu-submenu-title {\n background: ${CORE_COLORS.surface.canvas} !important;\n color: ${CORE_COLORS.text.strong} !important;\n font-weight: 600 !important;\n }\n\n .${DS_DROPDOWN_MENU_CLASS}.ant-dropdown .ant-dropdown-menu-item-selected,\n .${DS_DROPDOWN_MENU_CLASS}.ant-dropdown .ant-dropdown-menu-submenu-selected > .ant-dropdown-menu-submenu-title {\n background: ${CORE_COLORS.accent.highlightSoft} !important;\n color: ${CORE_COLORS.text.strong} !important;\n font-weight: 600 !important;\n position: relative;\n }\n\n .${DS_DROPDOWN_MENU_CLASS}.ant-dropdown .ant-dropdown-menu-item-selected:hover,\n .${DS_DROPDOWN_MENU_CLASS}.ant-dropdown .ant-dropdown-menu-item-selected.ant-dropdown-menu-item-active,\n .${DS_DROPDOWN_MENU_CLASS}.ant-dropdown .ant-dropdown-menu-submenu-selected > .ant-dropdown-menu-submenu-title:hover,\n .${DS_DROPDOWN_MENU_CLASS}.ant-dropdown .ant-dropdown-menu-submenu-selected.ant-dropdown-menu-submenu-active > .ant-dropdown-menu-submenu-title {\n background: ${CORE_COLORS.accent.highlightSoft} !important;\n color: ${CORE_COLORS.text.strong} !important;\n font-weight: 600 !important;\n }\n\n .${DS_DROPDOWN_MENU_CLASS}.ant-dropdown .ant-dropdown-menu-item-selected::before {\n content: '';\n position: absolute;\n left: 0;\n top: 0;\n bottom: 0;\n width: 4px;\n background: ${CORE_COLORS.accent.highlight};\n }\n\n .${DS_DROPDOWN_MENU_CLASS}.ant-dropdown .ant-dropdown-menu-item-danger,\n .${DS_DROPDOWN_MENU_CLASS}.ant-dropdown .ant-dropdown-menu-item-danger:hover,\n .${DS_DROPDOWN_MENU_CLASS}.ant-dropdown .ant-dropdown-menu-item-danger.ant-dropdown-menu-item-active {\n color: ${CORE_COLORS.status.errorDark} !important;\n }\n\n .${DS_DROPDOWN_MENU_CLASS}.ant-dropdown .ant-dropdown-menu-item-divider,\n .${DS_DROPDOWN_MENU_CLASS}.ant-dropdown .ant-dropdown-menu-submenu .ant-dropdown-menu-item-divider {\n margin: 0 !important;\n background: ${CORE_COLORS.text.disabled} !important;\n }\n `;\n\n document.head.appendChild(style);\n};\n","import { Dropdown as AntDropdown } from 'antd';\nimport type { DropdownProps as AntDropdownProps } from 'antd';\nimport { useEffect } from 'react';\nimport {\n DS_DROPDOWN_MENU_CLASS,\n ensureDropdownStyles,\n mergeDropdownClassNames,\n} from './dropdownStyles';\n\nexport type DropdownProps = AntDropdownProps;\n\nexport const Dropdown = ({\n classNames: providedClassNames,\n overlayClassName,\n ...props\n}: DropdownProps) => {\n useEffect(() => {\n ensureDropdownStyles();\n }, []);\n\n const mergedRootClassName = mergeDropdownClassNames(\n DS_DROPDOWN_MENU_CLASS,\n (providedClassNames as any)?.root,\n overlayClassName,\n );\n\n const mergedClassNames = {\n ...(providedClassNames ?? {}),\n root: mergedRootClassName,\n } as AntDropdownProps['classNames'];\n\n return <AntDropdown {...props} classNames={mergedClassNames} />;\n};\n\nDropdown.displayName = 'Dropdown';\n","import { Badge as AntBadge } from 'antd';\nimport type { BadgeProps as AntBadgeProps } from 'antd';\nimport type { CSSProperties, FC } from 'react';\nimport { useEffect } from 'react';\nimport { dsSemanticTokens } from '../../theme/ontadaTheme';\n\nexport type DSBadgeStatus = 'neutral' | 'success' | 'warning' | 'error' | 'processing' | 'inactive' | 'new' | 'custom';\nexport type DSBadgeVariant = 'solid' | 'light' | 'outline';\nexport type DSBadgeSize = 'sm' | 'md' | 'lg';\n\ntype RestrictedAntBadgeProps = 'color' | 'status' | 'size';\ntype RestrictedAntRibbonProps = 'color';\ntype AntRibbonProps = Parameters<typeof AntBadge.Ribbon>[0];\n\ntype DSBadgePalette = {\n bg?: string;\n text: string;\n border?: string;\n};\n\ntype DSBadgeCustomColors = {\n text?: string;\n background?: string;\n border?: string;\n};\n\nexport type BadgeProps = Omit<AntBadgeProps, RestrictedAntBadgeProps> & {\n /** DS semantic status — drives count, dot, status text, and ribbon colors. */\n dsStatus?: DSBadgeStatus;\n /** DS visual style — solid filled, light tinted, or outline only. */\n dsVariant?: DSBadgeVariant;\n /** DS size — sm, md, or lg. */\n dsSize?: DSBadgeSize;\n /** Custom text color applied when dsStatus is custom. */\n dsCustomTextColor?: string;\n /** Custom background color applied when dsStatus is custom. */\n dsCustomBackgroundColor?: string;\n /** Custom border color applied when dsStatus is custom. */\n dsCustomBorderColor?: string;\n};\n\nexport type BadgeRibbonProps = Omit<AntRibbonProps, RestrictedAntRibbonProps> & {\n /** DS semantic status — drives ribbon colors. */\n dsStatus?: DSBadgeStatus;\n /** DS visual style — solid filled, light tinted, or outline only. */\n dsVariant?: DSBadgeVariant;\n /** Custom text color applied when dsStatus is custom. */\n dsCustomTextColor?: string;\n /** Custom background color applied when dsStatus is custom. */\n dsCustomBackgroundColor?: string;\n /** Custom border color applied when dsStatus is custom. */\n dsCustomBorderColor?: string;\n};\n\ntype DSBadgeComponent = FC<BadgeProps> & {\n Ribbon: FC<BadgeRibbonProps>;\n};\n\nconst STYLE_ID = 'ds-badge-styles';\n\nconst ANT_STATUS_MAP: Record<DSBadgeStatus, AntBadgeProps['status']> = {\n neutral: 'default',\n success: 'success',\n warning: 'warning',\n error: 'error',\n processing: 'processing',\n inactive: 'default',\n new: 'processing',\n custom: 'default',\n};\n\nfunction injectStyles() {\n if (typeof document === 'undefined') return;\n\n const { badge } = dsSemanticTokens;\n\n let style = document.getElementById(STYLE_ID) as HTMLStyleElement | null;\n if (!style) {\n style = document.createElement('style');\n style.id = STYLE_ID;\n document.head.appendChild(style);\n }\n\n style.textContent = `\n .ds-badge.ant-badge,\n .ds-badge-ribbon.ant-ribbon-wrapper {\n font-family: inherit;\n }\n\n .ds-badge.ant-badge .ant-badge-count,\n .ds-badge.ant-badge .ant-scroll-number,\n .ds-badge.ant-badge .ant-badge-dot,\n .ds-badge.ant-badge .ant-badge-status-dot,\n .ds-badge.ant-badge .ant-badge-status-text,\n .ds-badge-ribbon.ant-ribbon-wrapper .ant-ribbon,\n .ds-badge-ribbon.ant-ribbon-wrapper .ant-ribbon-text {\n transition: none !important;\n animation-duration: 0s !important;\n }\n\n .ds-badge.ant-badge .ant-badge-count,\n .ds-badge.ant-badge .ant-scroll-number {\n min-width: var(--ds-badge-count-size);\n height: var(--ds-badge-count-size);\n padding: var(--ds-badge-count-padding);\n border: var(--ds-badge-border-width) solid var(--ds-badge-border);\n border-radius: ${badge.count.radius};\n background: var(--ds-badge-bg);\n box-shadow: none;\n color: var(--ds-badge-text);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n font-size: var(--ds-badge-font-size);\n font-weight: ${badge.typography.fontWeight};\n line-height: var(--ds-badge-line-height);\n letter-spacing: var(--ds-badge-letter-spacing);\n font-family: inherit;\n }\n\n .ds-badge.ant-badge .ant-badge-dot {\n width: var(--ds-badge-dot-size);\n min-width: var(--ds-badge-dot-size);\n height: var(--ds-badge-dot-size);\n border: var(--ds-badge-dot-border-width) solid var(--ds-badge-dot-border);\n background: var(--ds-badge-bg);\n box-shadow: none;\n }\n\n .ds-badge.ant-badge.ant-badge-status .ant-badge-status-dot {\n width: var(--ds-badge-status-dot-size);\n height: var(--ds-badge-status-dot-size);\n background: var(--ds-badge-bg);\n border: var(--ds-badge-dot-border-width) solid var(--ds-badge-dot-border);\n }\n\n .ds-badge.ant-badge.ant-badge-status .ant-badge-status-text {\n color: ${badge.statusText.color};\n font-size: var(--ds-badge-status-font-size);\n font-weight: ${badge.statusText.fontWeight};\n line-height: var(--ds-badge-status-line-height);\n margin-inline-start: ${badge.statusText.gap};\n font-family: inherit;\n }\n\n .ds-badge-ribbon.ant-ribbon,\n .ds-badge-ribbon.ant-ribbon-wrapper .ant-ribbon {\n background: var(--ds-badge-bg);\n border: var(--ds-badge-border-width) solid var(--ds-badge-border);\n border-radius: ${badge.ribbon.radius};\n color: var(--ds-badge-text);\n font-size: ${badge.ribbon.fontSize};\n font-weight: ${badge.typography.fontWeight};\n line-height: ${badge.ribbon.lineHeight};\n letter-spacing: ${badge.ribbon.letterSpacing};\n box-shadow: none;\n font-family: inherit;\n }\n\n .ds-badge-ribbon.ant-ribbon .ant-ribbon-text,\n .ds-badge-ribbon.ant-ribbon .ant-ribbon-content,\n .ds-badge-ribbon.ant-ribbon-wrapper .ant-ribbon .ant-ribbon-text,\n .ds-badge-ribbon.ant-ribbon-wrapper .ant-ribbon .ant-ribbon-content {\n color: var(--ds-badge-text);\n }\n\n .ds-badge-ribbon.ant-ribbon .ant-ribbon-corner,\n .ds-badge-ribbon.ant-ribbon-wrapper .ant-ribbon-corner {\n color: var(--ds-badge-border);\n }\n `;\n}\n\nfunction getPalette(status: DSBadgeStatus, variant: DSBadgeVariant, customColors: DSBadgeCustomColors): DSBadgePalette {\n const { badge } = dsSemanticTokens;\n\n if (status === 'custom') {\n return {\n text: customColors.text ?? badge.status.neutral.light.text,\n bg: customColors.background ?? badge.status.neutral.light.bg,\n border: customColors.border ?? badge.status.neutral.light.border,\n };\n }\n\n return badge.status[status][variant] as DSBadgePalette;\n}\n\nfunction getCustomProperties(\n status: DSBadgeStatus,\n variant: DSBadgeVariant,\n size: DSBadgeSize,\n customColors: DSBadgeCustomColors,\n): CSSProperties {\n const { badge } = dsSemanticTokens;\n const palette = getPalette(status, variant, customColors);\n const sizeTokens = badge.size[size];\n\n return {\n '--ds-badge-bg': palette.bg ?? 'transparent',\n '--ds-badge-text': palette.text,\n '--ds-badge-border': palette.border ?? palette.bg ?? 'transparent',\n '--ds-badge-border-width': status === 'custom' || variant === 'outline' || palette.border ? badge.borderWidth : '0px',\n '--ds-badge-count-size': sizeTokens.countSize,\n '--ds-badge-count-padding': sizeTokens.countPadding,\n '--ds-badge-dot-size': sizeTokens.dotSize,\n '--ds-badge-status-dot-size': sizeTokens.statusDotSize,\n '--ds-badge-dot-border': variant === 'outline' ? palette.border ?? palette.text : badge.dot.border,\n '--ds-badge-dot-border-width': variant === 'outline' ? badge.borderWidth : badge.dot.borderWidth,\n '--ds-badge-font-size': sizeTokens.typography.fontSize,\n '--ds-badge-line-height': sizeTokens.typography.lineHeight,\n '--ds-badge-letter-spacing': sizeTokens.typography.letterSpacing,\n '--ds-badge-status-font-size': sizeTokens.statusTypography.fontSize,\n '--ds-badge-status-line-height': sizeTokens.statusTypography.lineHeight,\n } as CSSProperties;\n}\n\nfunction shouldRenderStatusBadge(props: Pick<BadgeProps, 'count' | 'dot' | 'text' | 'children'>) {\n return props.text !== undefined && props.count === undefined && !props.dot && props.children === undefined;\n}\n\nconst BadgeBase: FC<BadgeProps> = ({\n dsStatus = 'neutral',\n dsVariant = 'solid',\n dsSize = 'md',\n dsCustomTextColor,\n dsCustomBackgroundColor,\n dsCustomBorderColor,\n className: userClassName = '',\n rootClassName: userRootClassName = '',\n style: userStyle = {},\n ...restProps\n}) => {\n useEffect(() => {\n injectStyles();\n }, []);\n\n const className = `ds-badge${userClassName ? ` ${userClassName}` : ''}`;\n const rootClassName = `ds-badge${userRootClassName ? ` ${userRootClassName}` : ''}`;\n const customProperties = getCustomProperties(\n dsStatus,\n dsVariant,\n dsSize,\n {\n text: dsCustomTextColor,\n background: dsCustomBackgroundColor,\n border: dsCustomBorderColor,\n },\n );\n const status = shouldRenderStatusBadge(restProps) ? ANT_STATUS_MAP[dsStatus] : undefined;\n\n return (\n <AntBadge\n className={className}\n rootClassName={rootClassName}\n style={{ ...customProperties, ...userStyle }}\n status={status}\n data-ds-status={dsStatus}\n data-ds-variant={dsVariant}\n data-ds-size={dsSize}\n {...restProps}\n />\n );\n};\n\nconst BadgeRibbon: FC<BadgeRibbonProps> = ({\n dsStatus = 'neutral',\n dsVariant = 'solid',\n dsCustomTextColor,\n dsCustomBackgroundColor,\n dsCustomBorderColor,\n className: userClassName = '',\n rootClassName: userRootClassName = '',\n style: userStyle = {},\n ...restProps\n}) => {\n useEffect(() => {\n injectStyles();\n }, []);\n\n const className = `ds-badge-ribbon${userClassName ? ` ${userClassName}` : ''}`;\n const rootClassName = `ds-badge-ribbon${userRootClassName ? ` ${userRootClassName}` : ''}`;\n const customProperties = getCustomProperties(\n dsStatus,\n dsVariant,\n 'md',\n {\n text: dsCustomTextColor,\n background: dsCustomBackgroundColor,\n border: dsCustomBorderColor,\n },\n );\n\n return (\n <AntBadge.Ribbon\n className={className}\n rootClassName={rootClassName}\n style={{ ...customProperties, ...userStyle }}\n {...restProps}\n />\n );\n};\n\nexport const Badge = BadgeBase as DSBadgeComponent;\n\nBadge.displayName = 'Badge';\nBadgeRibbon.displayName = 'Badge.Ribbon';\nBadge.Ribbon = BadgeRibbon;\n","import { Empty as AntEmpty } from 'antd';\nimport type { EmptyProps as AntEmptyProps } from 'antd';\nimport type { CSSProperties, ReactNode } from 'react';\nimport { useEffect } from 'react';\nimport { dsSemanticTokens } from '../../theme/ontadaTheme';\nimport { useCustomIcon } from '../../utils/icons';\n\nexport type DSEmptyVariant = 'illustrated' | 'tablePrompt' | 'tableNoResults';\nexport type DSEmptySize = 'desktop' | 'mobile';\nexport type DSEmptyIconName = 'messages' | 'folderEmpty' | 'searchAlternate' | 'commonFileText';\n\ntype RestrictedAntProps = 'description' | 'image' | 'imageStyle';\n\nexport type EmptyProps = Omit<AntEmptyProps, RestrictedAntProps> & {\n /** DS empty-state variant matching Figma usage guidance. */\n dsVariant?: DSEmptyVariant;\n /** DS responsive scale for desktop or mobile empty-state blocks. */\n dsSize?: DSEmptySize;\n /** Optional illustration/icon override for illustrated empty states. */\n dsIconName?: DSEmptyIconName;\n /** Optional title override for illustrated empty states. */\n dsTitle?: ReactNode;\n /** Optional body/message override. */\n dsDescription?: ReactNode;\n};\n\nconst STYLE_ID = 'ds-empty-styles';\n\nconst VARIANT_CONTENT: Record<DSEmptyVariant, {\n iconName?: DSEmptyIconName;\n title?: string;\n description: string;\n}> = {\n illustrated: {\n iconName: 'messages',\n title: 'No Messages',\n description: 'When you have received messages, you will see them here.',\n },\n tablePrompt: {\n description: 'Please search or apply filters to populate list.',\n },\n tableNoResults: {\n description: 'No results match your search criteria, please adjust your filters.',\n },\n};\n\nfunction injectStyles() {\n if (typeof document === 'undefined') return;\n\n const { empty } = dsSemanticTokens;\n\n let style = document.getElementById(STYLE_ID) as HTMLStyleElement | null;\n if (!style) {\n style = document.createElement('style');\n style.id = STYLE_ID;\n document.head.appendChild(style);\n }\n\n style.textContent = `\n .ds-empty.ant-empty {\n margin: 0;\n padding: 0;\n color: ${empty.text.description};\n font-family: inherit;\n }\n\n .ds-empty.ant-empty .ant-empty-image {\n height: auto;\n margin-bottom: var(--ds-empty-illustration-gap);\n line-height: 1;\n }\n\n .ds-empty.ant-empty .ant-empty-description {\n color: inherit;\n }\n\n .ds-empty.ant-empty .ant-empty-footer {\n margin-top: var(--ds-empty-action-gap);\n }\n\n .ds-empty-illustration {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--ds-empty-illustration-size);\n height: var(--ds-empty-illustration-size);\n color: ${empty.illustration.color};\n }\n\n .ds-empty-inbox-illustration {\n position: relative;\n display: inline-block;\n width: var(--ds-empty-illustration-size);\n height: var(--ds-empty-illustration-size);\n color: ${empty.illustration.color};\n }\n\n .ds-empty-inbox-box {\n position: absolute;\n left: 22%;\n right: 22%;\n bottom: 12%;\n height: 34%;\n border: ${empty.illustration.strokeWidth} solid currentColor;\n border-radius: 4px;\n background: transparent;\n }\n\n .ds-empty-inbox-box::before {\n content: '';\n position: absolute;\n left: 22%;\n right: 22%;\n bottom: 40%;\n height: 28%;\n border-bottom: ${empty.illustration.strokeWidth} solid currentColor;\n border-radius: 0 0 999px 999px;\n }\n\n .ds-empty-inbox-ray {\n position: absolute;\n top: 8%;\n left: 50%;\n width: ${empty.illustration.strokeWidth};\n height: 14%;\n background: currentColor;\n border-radius: 999px;\n transform-origin: bottom center;\n }\n\n .ds-empty-inbox-ray[data-ray='left'] {\n transform: translateX(-50%) rotate(-28deg) translateY(4%);\n }\n\n .ds-empty-inbox-ray[data-ray='center'] {\n transform: translateX(-50%);\n }\n\n .ds-empty-inbox-ray[data-ray='right'] {\n transform: translateX(-50%) rotate(28deg) translateY(4%);\n }\n\n .ds-empty-illustration .anticon,\n .ds-empty-illustration svg {\n width: var(--ds-empty-illustration-size) !important;\n height: var(--ds-empty-illustration-size) !important;\n font-size: var(--ds-empty-illustration-size) !important;\n color: inherit;\n }\n\n .ds-empty-inbox-svg {\n overflow: visible;\n }\n\n .ds-empty-inbox-svg path {\n fill: none !important;\n stroke: currentColor;\n stroke-width: 2;\n stroke-linecap: round;\n stroke-linejoin: round;\n }\n\n .ds-empty-illustration svg [fill]:not([fill=\"none\"]),\n .ds-empty-illustration svg path:not([fill=\"none\"]) {\n fill: currentColor !important;\n }\n\n .ds-empty-illustration svg [stroke]:not([stroke=\"none\"]) {\n stroke: currentColor !important;\n }\n\n .ds-empty-copy {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--ds-empty-copy-gap);\n width: min(var(--ds-empty-copy-width), 100%);\n margin: 0 auto;\n text-align: center;\n }\n\n .ds-empty-title {\n color: ${empty.text.title};\n font-size: var(--ds-empty-title-size);\n font-weight: ${empty.title.fontWeight};\n line-height: var(--ds-empty-title-line-height);\n letter-spacing: 0;\n margin: 0;\n }\n\n .ds-empty-description {\n color: ${empty.text.description};\n font-size: var(--ds-empty-description-size);\n font-weight: ${empty.description.fontWeight};\n line-height: var(--ds-empty-description-line-height);\n letter-spacing: 0;\n margin: 0;\n }\n\n .ds-empty-table {\n display: flex;\n min-height: var(--ds-empty-table-min-height);\n align-items: center;\n justify-content: center;\n padding: var(--ds-empty-table-padding);\n color: ${empty.text.title};\n font-family: inherit;\n text-align: center;\n }\n\n .ds-empty-table-content {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: var(--ds-empty-table-action-gap);\n }\n\n .ds-empty-table-message {\n color: ${empty.text.title};\n font-size: var(--ds-empty-table-message-size);\n font-weight: ${empty.table.messageFontWeight};\n line-height: var(--ds-empty-table-message-line-height);\n letter-spacing: 0;\n margin: 0;\n }\n `;\n}\n\nfunction getCustomProperties(size: DSEmptySize): CSSProperties {\n const { empty } = dsSemanticTokens;\n const sizeTokens = empty.size[size];\n\n return {\n '--ds-empty-illustration-size': sizeTokens.illustrationSize,\n '--ds-empty-illustration-gap': sizeTokens.illustrationGap,\n '--ds-empty-copy-gap': sizeTokens.copyGap,\n '--ds-empty-copy-width': sizeTokens.copyWidth,\n '--ds-empty-action-gap': sizeTokens.actionGap,\n '--ds-empty-title-size': sizeTokens.title.fontSize,\n '--ds-empty-title-line-height': sizeTokens.title.lineHeight,\n '--ds-empty-description-size': sizeTokens.description.fontSize,\n '--ds-empty-description-line-height': sizeTokens.description.lineHeight,\n '--ds-empty-table-min-height': sizeTokens.tableMinHeight,\n '--ds-empty-table-padding': sizeTokens.tablePadding,\n '--ds-empty-table-action-gap': sizeTokens.tableActionGap,\n '--ds-empty-table-message-size': sizeTokens.tableMessage.fontSize,\n '--ds-empty-table-message-line-height': sizeTokens.tableMessage.lineHeight,\n } as CSSProperties;\n}\n\nfunction renderIllustration(iconName: DSEmptyIconName) {\n if (iconName === 'messages') {\n return (\n <svg className=\"ds-empty-inbox-svg\" viewBox=\"0 0 96 96\" role=\"presentation\" focusable=\"false\">\n <path d=\"M31 45H65L70 62H26L31 45Z\" />\n <path d=\"M26 62H39C41 68 55 68 57 62H70\" />\n <path d=\"M48 19V31\" />\n <path d=\"M34 25L39 35\" />\n <path d=\"M62 25L57 35\" />\n </svg>\n );\n }\n\n return useCustomIcon(iconName, { size: 96 });\n}\n\nexport const Empty = ({\n dsVariant = 'illustrated',\n dsSize = 'desktop',\n dsIconName,\n dsTitle,\n dsDescription,\n className: userClassName = '',\n rootClassName: userRootClassName = '',\n style: userStyle = {},\n children,\n ...restProps\n}: EmptyProps) => {\n useEffect(() => {\n injectStyles();\n }, []);\n\n const variantContent = VARIANT_CONTENT[dsVariant];\n const customProperties = getCustomProperties(dsSize);\n\n if (dsVariant === 'tablePrompt' || dsVariant === 'tableNoResults') {\n const className = `ds-empty-table${userClassName ? ` ${userClassName}` : ''}`;\n\n return (\n <div\n className={className}\n style={{ ...customProperties, ...userStyle }}\n data-ds-variant={dsVariant}\n data-ds-size={dsSize}\n >\n <div className=\"ds-empty-table-content\">\n <p className=\"ds-empty-table-message\">{dsDescription ?? variantContent.description}</p>\n {children}\n </div>\n </div>\n );\n }\n\n const iconName = dsIconName ?? variantContent.iconName ?? 'messages';\n const className = `ds-empty${userClassName ? ` ${userClassName}` : ''}`;\n const rootClassName = `ds-empty${userRootClassName ? ` ${userRootClassName}` : ''}`;\n const title = dsTitle ?? variantContent.title;\n\n const image = dsIconName ? (\n <span className=\"ds-empty-illustration\" aria-hidden=\"true\">\n {renderIllustration(iconName)}\n </span>\n ) : (\n <span className=\"ds-empty-inbox-illustration\" aria-hidden=\"true\">\n <span className=\"ds-empty-inbox-ray\" data-ray=\"left\" />\n <span className=\"ds-empty-inbox-ray\" data-ray=\"center\" />\n <span className=\"ds-empty-inbox-ray\" data-ray=\"right\" />\n <span className=\"ds-empty-inbox-box\" />\n </span>\n );\n const description = (\n <span className=\"ds-empty-copy\">\n {title ? <span className=\"ds-empty-title\">{title}</span> : null}\n <span className=\"ds-empty-description\">{dsDescription ?? variantContent.description}</span>\n </span>\n );\n\n return (\n <AntEmpty\n className={className}\n rootClassName={rootClassName}\n style={{ ...customProperties, ...userStyle }}\n image={image}\n description={description}\n data-ds-variant={dsVariant}\n data-ds-size={dsSize}\n {...restProps}\n >\n {children}\n </AntEmpty>\n );\n};\n\nEmpty.displayName = 'Empty';\n","import React, { useEffect } from 'react';\nimport { Tag as AntTag } from 'antd';\nimport type { TagProps as AntTagProps } from 'antd';\nimport type { CSSProperties } from 'react';\nimport { dsSemanticTokens } from '../../theme/ontadaTheme';\n\nexport type DSTagStatus = 'neutral' | 'success' | 'warning' | 'error' | 'inactive' | 'new' | 'custom';\nexport type DSTagVariant = 'solid' | 'light' | 'outline';\nexport type DSTagSize = 'sm' | 'md' | 'lg';\n\n/**\n * Ant visual props replaced by DS semantic API.\n * Use dsStatus + dsVariant instead of color/variant/bordered.\n */\ntype RestrictedAntProps = 'color' | 'variant' | 'bordered';\n\nexport type TagProps = Omit<AntTagProps, RestrictedAntProps> & {\n /** DS semantic status — drives background, text, and border color. */\n dsStatus?: DSTagStatus;\n /** DS visual style — solid filled, light tinted, or outline only. */\n dsVariant?: DSTagVariant;\n /** DS size — sm (12px), md (14px, default), lg (16px). */\n dsSize?: DSTagSize;\n /** Custom status label rendered when dsStatus is custom. Falls back to children. */\n dsCustomStatusText?: React.ReactNode;\n /** Custom text color applied when dsStatus is custom. */\n dsCustomTextColor?: string;\n /** Custom background color applied when dsStatus is custom. */\n dsCustomBackgroundColor?: string;\n /** Custom border color applied when dsStatus is custom. */\n dsCustomBorderColor?: string;\n};\n\nconst STYLE_ID = 'ds-tag-styles';\n\nfunction injectStyles() {\n if (typeof document === 'undefined') return;\n\n const { tag } = dsSemanticTokens;\n\n let style = document.getElementById(STYLE_ID) as HTMLStyleElement | null;\n if (!style) {\n style = document.createElement('style');\n style.id = STYLE_ID;\n document.head.appendChild(style);\n }\n\n style.textContent = `\n .ds-tag.ant-tag {\n margin-inline-end: 0;\n transition: none;\n }\n\n .ds-tag.ant-tag .ant-tag-close-icon {\n margin-inline-start: 0;\n transition: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n line-height: 1;\n color: inherit;\n }\n\n .ds-tag.ant-tag[data-ds-size='sm'] .ant-tag-close-icon {\n width: ${tag.closeIcon.size.sm};\n height: ${tag.closeIcon.size.sm};\n font-size: ${tag.closeIcon.size.sm};\n }\n\n .ds-tag.ant-tag[data-ds-size='md'] .ant-tag-close-icon {\n width: ${tag.closeIcon.size.md};\n height: ${tag.closeIcon.size.md};\n font-size: ${tag.closeIcon.size.md};\n }\n\n .ds-tag.ant-tag[data-ds-size='lg'] .ant-tag-close-icon {\n width: ${tag.closeIcon.size.lg};\n height: ${tag.closeIcon.size.lg};\n font-size: ${tag.closeIcon.size.lg};\n }\n `;\n}\n\nfunction buildStyles(\n status: DSTagStatus,\n variant: DSTagVariant,\n size: DSTagSize,\n customColors: {\n text?: string;\n background?: string;\n border?: string;\n },\n userStyle: CSSProperties,\n): CSSProperties {\n const { tag } = dsSemanticTokens;\n const palette = status === 'custom'\n ? {\n text: customColors.text ?? tag.status.neutral.light.text,\n bg: customColors.background ?? tag.status.neutral.light.bg,\n border: customColors.border ?? tag.status.neutral.light.border,\n }\n : tag.status[status][variant];\n const sizeTokens = tag.size[size];\n const typeTokens = sizeTokens.typography;\n\n const base: CSSProperties = {\n fontWeight: tag.typography.fontWeight,\n textTransform: tag.typography.textTransform,\n fontFamily: 'inherit',\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: sizeTokens.padding,\n borderRadius: sizeTokens.radius,\n fontSize: typeTokens.fontSize,\n lineHeight: typeTokens.lineHeight,\n letterSpacing: typeTokens.letterSpacing,\n boxSizing: 'border-box',\n border: 'none',\n color: palette.text,\n backgroundColor: palette.bg ?? 'transparent',\n };\n\n if (status === 'custom' || variant === 'outline' || palette.border) {\n base.border = `${tag.borderWidth} solid ${palette.border}`;\n }\n\n return { ...base, ...userStyle };\n}\n\n// ─── Component ───────────────────────────────────────────────────────────────\n\n/**\n * DS Tag — semantic status badge extending Ant Design's Tag.\n *\n * Use `dsStatus` + `dsVariant` + `dsSize` to drive all visual styling.\n * Ant Design's `color`, `variant`, and `bordered` props are intentionally\n * excluded so DS variants remain the source of truth.\n *\n * @example\n * <Tag dsStatus=\"success\" dsVariant=\"solid\">Active</Tag>\n * <Tag dsStatus=\"error\" dsVariant=\"outline\" dsSize=\"sm\">Error</Tag>\n * <Tag dsStatus=\"warning\" dsVariant=\"light\" dsSize=\"lg\">Warning</Tag>\n * <Tag dsStatus=\"custom\" dsCustomStatusText=\"Escalated\" dsCustomTextColor=\"#1e394e\" dsCustomBackgroundColor=\"#f2f6fa\" dsCustomBorderColor=\"#8da0b4\" />\n */\nexport const Tag = ({\n dsStatus = 'neutral',\n dsVariant = 'solid',\n dsSize = 'md',\n dsCustomStatusText,\n dsCustomTextColor,\n dsCustomBackgroundColor,\n dsCustomBorderColor,\n style: userStyle = {},\n className: userClassName = '',\n children,\n ...restProps\n}: TagProps) => {\n useEffect(() => {\n injectStyles();\n }, []);\n\n const computedStyles = buildStyles(\n dsStatus,\n dsVariant,\n dsSize,\n {\n text: dsCustomTextColor,\n background: dsCustomBackgroundColor,\n border: dsCustomBorderColor,\n },\n userStyle,\n );\n const className = `ds-tag${userClassName ? ` ${userClassName}` : ''}`;\n const content = dsStatus === 'custom' && dsCustomStatusText !== undefined ? dsCustomStatusText : children;\n\n return (\n <AntTag\n style={computedStyles}\n className={className}\n data-ds-status={dsStatus}\n data-ds-variant={dsVariant}\n data-ds-size={dsSize}\n {...restProps}\n >\n {content}\n </AntTag>\n );\n};\n\nTag.displayName = 'Tag';\nTag.CheckableTag = AntTag.CheckableTag;\n","import React, { useEffect } from 'react';\nimport { Table as AntTable, type TableProps as AntTableProps } from 'antd';\nimport { Input } from 'antd';\nimport { dsSemanticTokens } from '../../theme/ontadaTheme';\nimport { Icon } from '../../utils/icons';\nimport { Pagination as DSPagination } from '../navigation/Pagination';\nimport type { DSPaginationProps } from '../navigation/Pagination';\nimport { ensureTooltipStyles, Tooltip as DSTooltip } from './Tooltip';\nimport type { DSTooltipSize } from './Tooltip';\n\nexport type DSTableStyle = 'styleA' | 'styleAEditable' | 'styleACustomizable' | 'styleAFixedHeaderFooter' | 'styleAResizable' | 'styleB';\nexport type DSTableHeaderVariant = 'default' | 'white';\nexport type DSTableFrozenColumns = 'none' | 'first' | 'last' | 'both';\nexport type DSTableColumnWidths = Record<string, number>;\n\nexport type DSTableProps<RecordType = Record<string, unknown>> = AntTableProps<RecordType> & {\n /**\n * DS table style from Figma documentation.\n * styleA: full-width, white header, thicker header divider, no container border.\n * styleAEditable: styleA base with inline editable cells for selected columns.\n * styleB: warm layout background, cool header, 1px container border with 4px radius.\n */\n dsStyle?: DSTableStyle;\n /**\n * Header background variant for styleB.\n * default: cool gray header\n * white: white header (allowed alternative in Figma docs)\n */\n dsHeaderVariant?: DSTableHeaderVariant;\n /**\n * DS responsive frozen-column mode.\n * none: no DS freezing behavior\n * first: freeze first column on small screens\n * last: freeze last column on small screens\n * both: freeze first and last columns on small screens\n */\n dsFrozenColumns?: DSTableFrozenColumns;\n /**\n * Breakpoint (px) at or below which DS frozen columns become active.\n */\n dsFrozenBreakpoint?: number;\n /**\n * Default width for DS-frozen columns when column width is not defined.\n */\n dsFrozenColumnWidth?: number;\n /**\n * Truncates cell text based on available cell width.\n */\n dsTruncateCellText?: boolean;\n /**\n * Shows DS tooltip with the full value when truncated text is hovered.\n */\n dsTruncateTooltip?: boolean;\n /**\n * Delay (seconds) before showing the truncation tooltip on hover.\n */\n dsTruncateTooltipDelay?: number;\n /**\n * DS tooltip size variant used for truncation tooltips.\n */\n dsTruncateTooltipSize?: DSTooltipSize;\n /**\n * DS tooltip title used for truncation tooltips when using normal tooltip size.\n */\n dsTruncateTooltipTitle?: string;\n /**\n * Column keys or dataIndex values that are editable when dsStyle is styleAEditable.\n */\n dsEditableColumns?: string[] | string | Record<string, boolean>;\n /**\n * Called whenever editable table data changes.\n */\n dsOnEditableDataChange?: (nextData: RecordType[]) => void;\n /**\n * When true, enables column visibility controls above the table for dsStyle=\"styleACustomizable\".\n */\n dsCustomizable?: boolean;\n /**\n * Column keys or dataIndex values that are currently visible.\n * Only used when dsStyle=\"styleACustomizable\".\n */\n dsVisibleColumns?: string[];\n /**\n * Called when user toggles column visibility.\n */\n dsOnVisibleColumnsChange?: (nextVisible: string[]) => void;\n /**\n * Scrollable body height for dsStyle=\"styleAFixedHeaderFooter\".\n */\n dsFixedBodyHeight?: number | string;\n /**\n * Enables column resizing. Automatically enabled for dsStyle=\"styleAResizable\".\n */\n dsResizableColumns?: boolean;\n /**\n * Controlled column widths by column key or dataIndex.\n */\n dsColumnWidths?: DSTableColumnWidths;\n /**\n * Called whenever a resizable column width changes.\n */\n dsOnColumnWidthsChange?: (nextWidths: DSTableColumnWidths) => void;\n /**\n * Minimum resizable column width in px.\n */\n dsResizableColumnMinWidth?: number;\n /**\n * Maximum resizable column width in px.\n */\n dsResizableColumnMaxWidth?: number;\n /**\n * Default width in px for resizable columns without an explicit width.\n */\n dsResizableDefaultColumnWidth?: number;\n};\n\nconst STYLE_ID = 'ds-table-styles';\n\nconst isTextValue = (value: unknown): value is string | number =>\n typeof value === 'string' || typeof value === 'number';\n\nconst DSTruncatedCell: React.FC<{\n value: string | number;\n withTooltip: boolean;\n tooltipDelay: number;\n tooltipSize: DSTooltipSize;\n tooltipTitle?: string;\n}> = ({ value, withTooltip, tooltipDelay, tooltipSize, tooltipTitle }) => {\n const cellRef = React.useRef<HTMLSpanElement>(null);\n const [isTruncated, setIsTruncated] = React.useState(false);\n const text = String(value);\n\n const updateTruncation = React.useCallback(() => {\n const cell = cellRef.current;\n if (!cell) return;\n const nextValue = cell.scrollWidth > cell.clientWidth;\n setIsTruncated((prev) => (prev === nextValue ? prev : nextValue));\n }, []);\n\n React.useEffect(() => {\n const cell = cellRef.current;\n if (!cell) return;\n\n updateTruncation();\n\n // Styles for truncation can be injected shortly after first render.\n // Re-check on subsequent frames so measurement reflects final layout.\n const rafId = requestAnimationFrame(() => {\n updateTruncation();\n requestAnimationFrame(updateTruncation);\n });\n const timeoutId = window.setTimeout(updateTruncation, 120);\n\n const resizeObserver = typeof ResizeObserver !== 'undefined' ? new ResizeObserver(updateTruncation) : null;\n if (resizeObserver) {\n resizeObserver.observe(cell);\n } else if (typeof window !== 'undefined') {\n window.addEventListener('resize', updateTruncation);\n }\n\n return () => {\n if (resizeObserver) {\n resizeObserver.disconnect();\n } else if (typeof window !== 'undefined') {\n window.removeEventListener('resize', updateTruncation);\n }\n cancelAnimationFrame(rafId);\n window.clearTimeout(timeoutId);\n };\n }, [text, updateTruncation]);\n\n const content = (\n <span\n ref={cellRef}\n className=\"ds-table-cell-truncate\"\n onMouseOverCapture={updateTruncation}\n onFocus={updateTruncation}\n >\n {text}\n </span>\n );\n\n if (!withTooltip) {\n return content;\n }\n\n return (\n <DSTooltip\n title={isTruncated ? undefined : null}\n dsSize={tooltipSize}\n dsTitle={tooltipTitle}\n dsBody={text}\n mouseEnterDelay={tooltipDelay}\n trigger=\"hover\"\n >\n {content}\n </DSTooltip>\n );\n};\n\ntype DSTableSorterTooltip = Exclude<AntTableProps['showSorterTooltip'], boolean | undefined>;\n\nfunction mergeClassNames(...names: Array<string | undefined>) {\n return names.filter(Boolean).join(' ');\n}\n\nfunction getDSSorterTooltipProps(showSorterTooltip?: AntTableProps['showSorterTooltip']): AntTableProps['showSorterTooltip'] {\n if (showSorterTooltip === false) {\n return false;\n }\n\n const { tooltip } = dsSemanticTokens;\n const provided = showSorterTooltip && typeof showSorterTooltip === 'object'\n ? showSorterTooltip as DSTableSorterTooltip\n : undefined;\n\n return {\n ...provided,\n color: provided?.color ?? tooltip.surface.background,\n arrow: provided?.arrow ?? true,\n classNames: {\n ...provided?.classNames,\n root: mergeClassNames('ds-tooltip-overlay', 'ds-tooltip-size-normal', provided?.classNames?.root, provided?.overlayClassName),\n },\n styles: {\n ...provided?.styles,\n container: {\n borderRadius: tooltip.radius,\n color: tooltip.surface.body,\n letterSpacing: 0,\n minWidth: tooltip.width.normal.min,\n maxWidth: tooltip.width.normal.max,\n padding: tooltip.padding.normal,\n ...provided?.styles?.container,\n },\n },\n };\n}\n\nfunction withDSSortIcons(\n columns: any[] | undefined,\n tableShowSorterTooltip?: AntTableProps['showSorterTooltip'],\n): any[] | undefined {\n if (!columns) return columns;\n\n return columns.map((column) => {\n const nextColumn = { ...column };\n\n if (Array.isArray(nextColumn.children) && nextColumn.children.length > 0) {\n nextColumn.children = withDSSortIcons(nextColumn.children, tableShowSorterTooltip);\n }\n\n if (nextColumn.sorter) {\n const columnShowSorterTooltip = nextColumn.showSorterTooltip === undefined\n ? tableShowSorterTooltip\n : nextColumn.showSorterTooltip;\n nextColumn.showSorterTooltip = getDSSorterTooltipProps(columnShowSorterTooltip);\n }\n\n if (nextColumn.sorter && !nextColumn.sortIcon) {\n nextColumn.sortIcon = ({ sortOrder }: { sortOrder?: 'ascend' | 'descend' }) => (\n <span className=\"ds-table-sort-icon\" aria-hidden=\"true\">\n <Icon\n name={sortOrder === 'ascend' ? 'arrowThickUp' : 'arrowThickDown'}\n size={10}\n style={{ color: 'inherit' }}\n />\n </span>\n );\n }\n\n return nextColumn;\n });\n}\n\nfunction withDSFrozenColumns(\n columns: any[] | undefined,\n mode: DSTableFrozenColumns,\n defaultFrozenWidth: number\n): any[] | undefined {\n if (!columns || mode === 'none' || columns.length === 0) return columns;\n\n const freezeFirst = mode === 'first' || mode === 'both';\n const freezeLast = mode === 'last' || mode === 'both';\n const lastIndex = columns.length - 1;\n\n return columns.map((column, index) => {\n const nextColumn = { ...column };\n\n const shouldFreezeLeft = freezeFirst && index === 0;\n const shouldFreezeRight = freezeLast && index === lastIndex;\n\n if (shouldFreezeLeft) {\n nextColumn.fixed = 'left';\n if (nextColumn.width == null) {\n nextColumn.width = defaultFrozenWidth;\n }\n }\n\n if (shouldFreezeRight) {\n nextColumn.fixed = 'right';\n if (nextColumn.width == null) {\n nextColumn.width = defaultFrozenWidth;\n }\n }\n\n return nextColumn;\n });\n}\n\nfunction withDSTruncatedCells(\n columns: any[] | undefined,\n withTooltip: boolean,\n tooltipDelay: number,\n tooltipSize: DSTooltipSize,\n tooltipTitle?: string\n): any[] | undefined {\n if (!columns) return columns;\n\n return columns.map((column) => {\n const nextColumn = { ...column };\n\n if (Array.isArray(nextColumn.children) && nextColumn.children.length > 0) {\n nextColumn.children = withDSTruncatedCells(nextColumn.children, withTooltip, tooltipDelay, tooltipSize, tooltipTitle);\n return nextColumn;\n }\n\n const originalRender = nextColumn.render;\n\n if (nextColumn.ellipsis == null) {\n nextColumn.ellipsis = { showTitle: false };\n } else if (nextColumn.ellipsis === true) {\n nextColumn.ellipsis = { showTitle: false };\n } else if (typeof nextColumn.ellipsis === 'object') {\n nextColumn.ellipsis = { ...nextColumn.ellipsis, showTitle: false };\n }\n\n nextColumn.render = (value: unknown, record: unknown, index: number) => {\n const rendered = originalRender ? originalRender(value, record, index) : value;\n\n if (isTextValue(rendered)) {\n return <DSTruncatedCell value={rendered} withTooltip={withTooltip} tooltipDelay={tooltipDelay} tooltipSize={tooltipSize} tooltipTitle={tooltipTitle} />;\n }\n\n if (!originalRender && isTextValue(value)) {\n return <DSTruncatedCell value={value} withTooltip={withTooltip} tooltipDelay={tooltipDelay} tooltipSize={tooltipSize} tooltipTitle={tooltipTitle} />;\n }\n\n return rendered;\n };\n\n return nextColumn;\n });\n}\n\nfunction getColumnIdentity(column: any): string | undefined {\n if (typeof column?.key === 'string') return column.key;\n if (typeof column?.dataIndex === 'string') return column.dataIndex;\n if (typeof column?.dataIndex === 'number') return String(column.dataIndex);\n return undefined;\n}\n\nfunction getNumericColumnWidth(width: unknown): number | undefined {\n if (typeof width === 'number' && Number.isFinite(width)) return width;\n if (typeof width === 'string' && width.endsWith('px')) {\n const parsedWidth = Number(width.slice(0, -2));\n return Number.isFinite(parsedWidth) ? parsedWidth : undefined;\n }\n return undefined;\n}\n\nfunction clampColumnWidth(width: number, minWidth: number, maxWidth?: number): number {\n const widthWithMin = Math.max(minWidth, Math.round(width));\n return typeof maxWidth === 'number' ? Math.min(maxWidth, widthWithMin) : widthWithMin;\n}\n\nfunction getInitialColumnWidths(\n columns: any[] | undefined,\n defaultWidth: number,\n existingWidths: DSTableColumnWidths = {},\n): DSTableColumnWidths {\n if (!columns) return existingWidths;\n\n const nextWidths = { ...existingWidths };\n\n const traverse = (cols: any[]) => {\n cols.forEach((column) => {\n if (Array.isArray(column.children) && column.children.length > 0) {\n traverse(column.children);\n return;\n }\n\n const identity = getColumnIdentity(column);\n if (!identity || nextWidths[identity] != null) return;\n\n nextWidths[identity] = getNumericColumnWidth(column.width) ?? defaultWidth;\n });\n };\n\n traverse(columns);\n return nextWidths;\n}\n\nfunction getValueByDataIndex(record: Record<string, unknown>, dataIndex: unknown): unknown {\n if (Array.isArray(dataIndex)) {\n return dataIndex.reduce<unknown>((acc, key) => {\n if (acc && typeof acc === 'object') {\n return (acc as Record<string, unknown>)[String(key)];\n }\n return undefined;\n }, record);\n }\n\n if (typeof dataIndex === 'string' || typeof dataIndex === 'number') {\n return record[String(dataIndex)];\n }\n\n return undefined;\n}\n\nfunction setValueByDataIndex(record: Record<string, unknown>, dataIndex: unknown, value: unknown): Record<string, unknown> {\n if (Array.isArray(dataIndex) && dataIndex.length > 0) {\n const next = { ...record };\n let cursor: Record<string, unknown> = next;\n\n for (let i = 0; i < dataIndex.length - 1; i += 1) {\n const key = String(dataIndex[i]);\n const current = cursor[key];\n const cloned = current && typeof current === 'object' ? { ...(current as Record<string, unknown>) } : {};\n cursor[key] = cloned;\n cursor = cloned;\n }\n\n cursor[String(dataIndex[dataIndex.length - 1])] = value;\n return next;\n }\n\n if (typeof dataIndex === 'string' || typeof dataIndex === 'number') {\n return { ...record, [String(dataIndex)]: value };\n }\n\n return record;\n}\n\nfunction withDSEditableCells(\n columns: any[] | undefined,\n editableColumnKeys: Set<string>,\n onValueChange: (rowIndex: number, dataIndex: unknown, nextValue: unknown) => void,\n): any[] | undefined {\n if (!columns) return columns;\n\n return columns.map((column) => {\n const nextColumn = { ...column };\n\n if (Array.isArray(nextColumn.children) && nextColumn.children.length > 0) {\n nextColumn.children = withDSEditableCells(nextColumn.children, editableColumnKeys, onValueChange);\n return nextColumn;\n }\n\n const identity = getColumnIdentity(nextColumn);\n const isEditable = Boolean(identity && editableColumnKeys.has(identity));\n\n if (!isEditable || nextColumn.dataIndex == null) {\n return nextColumn;\n }\n\n nextColumn.render = (_value: unknown, record: Record<string, unknown>, rowIndex: number) => {\n const currentValue = getValueByDataIndex(record, nextColumn.dataIndex);\n const isNumberValue = typeof currentValue === 'number';\n const inputValue = currentValue == null ? '' : String(currentValue);\n\n return (\n <Input\n className=\"ds-table-edit-input\"\n type={isNumberValue ? 'number' : 'text'}\n size=\"small\"\n value={inputValue}\n onChange={(event) => {\n const raw = event.target.value;\n const nextValue = isNumberValue ? (raw === '' ? null : Number(raw)) : raw;\n onValueChange(rowIndex, nextColumn.dataIndex, nextValue);\n }}\n />\n );\n };\n\n return nextColumn;\n });\n}\n\nfunction withDSVisibleColumnsFilter(\n columns: any[] | undefined,\n visibleColumnKeys: Set<string>,\n): any[] | undefined {\n if (!columns) return columns;\n\n return columns.map((column) => {\n const nextColumn = { ...column };\n\n if (Array.isArray(nextColumn.children) && nextColumn.children.length > 0) {\n nextColumn.children = withDSVisibleColumnsFilter(nextColumn.children, visibleColumnKeys);\n return nextColumn;\n }\n\n const identity = getColumnIdentity(nextColumn);\n if (!identity || visibleColumnKeys.has(identity)) {\n return nextColumn;\n }\n\n return null;\n }).filter((col) => col !== null);\n}\n\nconst DSColumnVisibilityControl: React.FC<{\n columns: any[];\n visibleColumns: Set<string>;\n onToggle: (colKey: string, visible: boolean) => void;\n}> = ({ columns, visibleColumns, onToggle }) => {\n const columnOptions = React.useMemo(() => {\n const opts: Array<{ key: string; label: string }> = [];\n\n const traverse = (cols: any[]) => {\n cols.forEach((col) => {\n if (Array.isArray(col.children) && col.children.length > 0) {\n traverse(col.children);\n } else {\n const identity = getColumnIdentity(col);\n const label = col.title || (typeof col.dataIndex === 'string' ? col.dataIndex : 'Column');\n if (identity) {\n opts.push({ key: identity, label: String(label) });\n }\n }\n });\n };\n\n traverse(columns);\n return opts;\n }, [columns]);\n\n return (\n <div className=\"ds-table-column-visibility-control\">\n <label className=\"ds-table-control-label\">Columns:</label>\n <div className=\"ds-table-control-checkboxes\">\n {columnOptions.map(({ key, label }) => (\n <label key={key} className=\"ds-table-control-checkbox\">\n <input\n type=\"checkbox\"\n checked={visibleColumns.has(key)}\n onChange={(e) => onToggle(key, e.target.checked)}\n />\n <span>{label}</span>\n </label>\n ))}\n </div>\n </div>\n );\n};\n\ntype DSResizableHeaderCellProps = React.ThHTMLAttributes<HTMLTableCellElement> & {\n width?: number;\n minWidth?: number;\n maxWidth?: number;\n onResize?: (nextWidth: number) => void;\n};\n\nconst DSResizableHeaderCell: React.FC<DSResizableHeaderCellProps> = ({\n width,\n minWidth = 96,\n maxWidth,\n onResize,\n children,\n className,\n style,\n ...restProps\n}) => {\n const startWidthRef = React.useRef(0);\n const startXRef = React.useRef(0);\n\n const updateWidth = React.useCallback((nextWidth: number) => {\n if (!onResize) return;\n onResize(clampColumnWidth(nextWidth, minWidth, maxWidth));\n }, [maxWidth, minWidth, onResize]);\n\n const handleMouseDown = React.useCallback((event: React.MouseEvent<HTMLButtonElement>) => {\n if (!onResize || typeof document === 'undefined') return;\n\n event.preventDefault();\n event.stopPropagation();\n startXRef.current = event.clientX;\n startWidthRef.current = width ?? event.currentTarget.parentElement?.getBoundingClientRect().width ?? minWidth;\n\n const handleMouseMove = (moveEvent: MouseEvent) => {\n const delta = moveEvent.clientX - startXRef.current;\n updateWidth(startWidthRef.current + delta);\n };\n\n const handleMouseUp = () => {\n document.removeEventListener('mousemove', handleMouseMove);\n document.removeEventListener('mouseup', handleMouseUp);\n document.body.style.cursor = '';\n document.body.style.userSelect = '';\n };\n\n document.body.style.cursor = 'col-resize';\n document.body.style.userSelect = 'none';\n document.addEventListener('mousemove', handleMouseMove);\n document.addEventListener('mouseup', handleMouseUp);\n }, [minWidth, onResize, updateWidth, width]);\n\n const handleKeyDown = React.useCallback((event: React.KeyboardEvent<HTMLButtonElement>) => {\n if (!onResize || width == null) return;\n\n if (event.key !== 'ArrowLeft' && event.key !== 'ArrowRight') return;\n\n event.preventDefault();\n event.stopPropagation();\n const direction = event.key === 'ArrowLeft' ? -1 : 1;\n updateWidth(width + direction * (event.shiftKey ? 24 : 8));\n }, [onResize, updateWidth, width]);\n\n return (\n <th\n {...restProps}\n className={mergeClassNames(className, onResize ? 'ds-table-resizable-header-cell' : undefined)}\n style={{ ...style, width }}\n >\n {children}\n {onResize ? (\n <button\n type=\"button\"\n className=\"ds-table-resize-handle\"\n aria-label=\"Resize column\"\n onClick={(event) => event.stopPropagation()}\n onMouseDown={handleMouseDown}\n onKeyDown={handleKeyDown}\n />\n ) : null}\n </th>\n );\n};\n\nfunction withDSResizableColumns(\n columns: any[] | undefined,\n widths: DSTableColumnWidths,\n onColumnResize: (columnKey: string, nextWidth: number) => void,\n minWidth: number,\n maxWidth: number | undefined,\n defaultWidth: number,\n): any[] | undefined {\n if (!columns) return columns;\n\n return columns.map((column) => {\n const nextColumn = { ...column };\n\n if (Array.isArray(nextColumn.children) && nextColumn.children.length > 0) {\n nextColumn.children = withDSResizableColumns(nextColumn.children, widths, onColumnResize, minWidth, maxWidth, defaultWidth);\n return nextColumn;\n }\n\n const identity = getColumnIdentity(nextColumn);\n if (!identity) return nextColumn;\n\n const width = widths[identity] ?? getNumericColumnWidth(nextColumn.width) ?? defaultWidth;\n const originalOnHeaderCell = nextColumn.onHeaderCell;\n nextColumn.width = width;\n nextColumn.onHeaderCell = (columnInstance: unknown) => {\n const providedHeaderCellProps = originalOnHeaderCell?.(columnInstance) ?? {};\n return {\n ...providedHeaderCellProps,\n width,\n minWidth,\n maxWidth,\n onResize: (nextWidth: number) => onColumnResize(identity, nextWidth),\n className: mergeClassNames(providedHeaderCellProps.className, 'ds-table-resizable-header'),\n };\n };\n\n return nextColumn;\n });\n}\n\nfunction injectStyles() {\n if (typeof document === 'undefined') return;\n const { table, checkbox } = dsSemanticTokens;\n\n let style = document.getElementById(STYLE_ID) as HTMLStyleElement | null;\n if (!style) {\n style = document.createElement('style');\n style.id = STYLE_ID;\n document.head.appendChild(style);\n }\n\n style.textContent = `\n .ds-table {\n font-family: \"Nunito\", sans-serif;\n color: ${table.text.body};\n }\n\n .ds-table .ant-table {\n font-family: \"Nunito\", sans-serif;\n color: ${table.text.body};\n background: ${table.surface.container};\n }\n\n .ds-table .ant-table-thead > tr > th {\n color: ${table.text.header} !important;\n font-weight: ${table.typography.header.fontWeight} !important;\n font-size: ${table.typography.header.fontSize} !important;\n line-height: ${table.typography.header.lineHeight} !important;\n letter-spacing: ${table.typography.header.letterSpacing} !important;\n background: ${table.surface.container} !important;\n border-bottom: ${table.border.headerDividerWidth} solid ${table.border.container} !important;\n padding: ${table.padding.normal.header} !important;\n height: ${table.rowHeight.normal.header} !important;\n vertical-align: middle !important;\n box-sizing: border-box !important;\n }\n\n .ds-table .ant-table-thead > tr > th::before {\n display: none !important;\n }\n\n .ds-table .ant-table-tbody > tr > td {\n color: ${table.text.body} !important;\n font-weight: ${table.typography.body.fontWeight} !important;\n font-size: ${table.typography.body.fontSize} !important;\n line-height: ${table.typography.body.lineHeight} !important;\n letter-spacing: ${table.typography.body.letterSpacing} !important;\n border-bottom: 1px solid ${table.border.bodyDivider} !important;\n background: transparent !important;\n padding: ${table.padding.normal.body} !important;\n height: ${table.rowHeight.normal.body} !important;\n vertical-align: middle !important;\n transition: none !important;\n box-sizing: border-box !important;\n }\n\n .ds-table .ant-table-tbody > tr:hover > td {\n background: ${table.surface.rowHover} !important;\n }\n\n .ds-table .ant-table-tbody > tr.ant-table-row-selected > td,\n .ds-table .ant-table-tbody > tr.ant-table-row-selected:hover > td {\n background: ${table.surface.rowSelected} !important;\n }\n\n .ds-table .ant-table-selection-column .ant-checkbox.ant-checkbox-indeterminate {\n border-color: ${checkbox.border.checked} !important;\n background-color: ${checkbox.background.checked} !important;\n }\n\n .ds-table .ant-table-selection-column .ant-checkbox.ant-checkbox-indeterminate::after {\n content: '' !important;\n position: absolute !important;\n left: 50% !important;\n top: 50% !important;\n margin: 0 !important;\n border: 0 !important;\n border-radius: 1px !important;\n background: ${checkbox.mark.indeterminate} !important;\n width: ${checkbox.indeterminate.sm.width}px !important;\n height: ${checkbox.indeterminate.sm.height}px !important;\n transform: translate(-50%, -50%) !important;\n opacity: 1 !important;\n }\n\n .ds-table .ant-table-thead > tr > th.ant-table-column-sort,\n .ds-table .ant-table-thead > tr > th.ant-table-column-sort:hover {\n color: ${table.text.header} !important;\n }\n\n .ds-table .ant-table-thead > tr > th.ant-table-column-has-sorters,\n .ds-table .ant-table-thead > tr > th.ant-table-column-has-sorters:hover {\n color: ${table.text.header} !important;\n }\n\n .ds-table .ant-table-thead > tr > th.ant-table-column-has-sorters .ant-table-column-sorters {\n justify-content: flex-start !important;\n gap: 6px !important;\n }\n\n .ds-table .ant-table-thead > tr > th.ant-table-column-has-sorters .ant-table-column-title {\n flex: none !important;\n font-weight: 600 !important;\n }\n\n .ds-table .ant-table-thead > tr > th.ant-table-column-has-sorters .ant-table-column-sorter {\n opacity: 0 !important;\n transition: none !important;\n margin-inline-start: 0 !important;\n }\n\n .ds-table .ant-table-thead > tr > th.ant-table-column-has-sorters .ds-table-sort-icon {\n display: inline-flex !important;\n align-items: center !important;\n justify-content: center !important;\n width: 10px !important;\n height: 10px !important;\n opacity: 0 !important;\n transition: none !important;\n color: inherit !important;\n }\n\n .ds-table .ant-table-thead > tr > th.ant-table-column-has-sorters:hover .ant-table-column-sorter,\n .ds-table .ant-table-thead > tr > th.ant-table-column-sort .ant-table-column-sorter {\n opacity: 1 !important;\n }\n\n .ds-table .ant-table-thead > tr > th.ant-table-column-has-sorters:hover .ds-table-sort-icon,\n .ds-table .ant-table-thead > tr > th.ant-table-column-sort .ds-table-sort-icon {\n opacity: 1 !important;\n }\n\n .ds-table .ant-table-column-sorter,\n .ds-table .ant-table-column-sorter-up,\n .ds-table .ant-table-column-sorter-down {\n color: ${table.text.sorterMuted} !important;\n }\n\n .ds-table .ant-table-column-sorter-up.active,\n .ds-table .ant-table-column-sorter-down.active {\n color: ${table.text.header} !important;\n }\n\n .ds-table .ant-table-pagination.ant-pagination {\n margin-top: 16px !important;\n margin-bottom: 0 !important;\n }\n\n .ds-table .ant-table-row-expand-icon-cell {\n vertical-align: middle !important;\n }\n\n .ds-table .ant-table-row-expand-icon-cell .ds-table-expand-toggle {\n display: flex !important;\n align-items: center !important;\n justify-content: center !important;\n margin: 0 auto !important;\n line-height: 0 !important;\n }\n\n .ds-table .ant-table-row-expand-icon-cell .ds-table-expand-toggle svg {\n display: block !important;\n width: 16px !important;\n height: 16px !important;\n }\n\n .ds-table .ds-table-cell-truncate {\n display: block !important;\n width: 100% !important;\n overflow: hidden !important;\n white-space: nowrap !important;\n text-overflow: ellipsis !important;\n }\n\n .ds-table.ds-table-size-small .ant-table-thead > tr > th,\n .ds-table.ds-table-size-small .ant-table-tbody > tr > td {\n vertical-align: middle !important;\n }\n\n .ds-table.ds-table-size-small .ant-table-thead > tr > th {\n font-size: ${table.typography.compactHeader.fontSize} !important;\n line-height: ${table.typography.compactHeader.lineHeight} !important;\n font-weight: ${table.typography.compactHeader.fontWeight} !important;\n letter-spacing: ${table.typography.compactHeader.letterSpacing} !important;\n height: ${table.rowHeight.compact.header} !important;\n padding: ${table.padding.compact.header} !important;\n border-bottom: ${table.border.headerDividerWidth} solid ${table.border.container} !important;\n }\n\n .ds-table.ds-table-size-small .ant-table-tbody > tr > td {\n font-size: ${table.typography.compactBody.fontSize} !important;\n line-height: ${table.typography.compactBody.lineHeight} !important;\n font-weight: ${table.typography.compactBody.fontWeight} !important;\n letter-spacing: ${table.typography.compactBody.letterSpacing} !important;\n height: ${table.rowHeight.compact.body} !important;\n min-height: ${table.rowHeight.compact.body} !important;\n max-height: ${table.rowHeight.compact.body} !important;\n padding: ${table.padding.compact.body} !important;\n }\n\n .ds-table.ds-table-size-small .ant-table-tbody > tr {\n height: ${table.rowHeight.compact.body} !important;\n min-height: ${table.rowHeight.compact.body} !important;\n max-height: ${table.rowHeight.compact.body} !important;\n }\n\n .ds-table.ds-table-size-small .ant-tag {\n margin-inline-end: 0 !important;\n padding: 0 4px !important;\n height: 16px !important;\n line-height: 16px !important;\n font-size: 10px !important;\n border-radius: 2px !important;\n display: inline-flex !important;\n align-items: center !important;\n }\n\n .ds-table.ds-table-size-middle .ant-table-thead > tr > th,\n .ds-table.ds-table-size-middle .ant-table-tbody > tr > td {\n padding: 0 16px !important;\n vertical-align: middle !important;\n }\n\n .ds-table.ds-table-size-middle .ant-table-thead > tr > th {\n font-size: ${table.typography.header.fontSize} !important;\n line-height: ${table.typography.header.lineHeight} !important;\n letter-spacing: ${table.typography.header.letterSpacing} !important;\n height: ${table.rowHeight.normal.header} !important;\n font-weight: ${table.typography.header.fontWeight} !important;\n }\n\n .ds-table.ds-table-size-middle .ant-table-tbody > tr > td {\n font-size: ${table.typography.body.fontSize} !important;\n line-height: ${table.typography.body.lineHeight} !important;\n letter-spacing: ${table.typography.body.letterSpacing} !important;\n height: ${table.rowHeight.normal.body} !important;\n }\n\n .ds-table.ds-table-size-large .ant-table-thead > tr > th,\n .ds-table.ds-table-size-large .ant-table-tbody > tr > td {\n padding: 0 16px !important;\n vertical-align: middle !important;\n }\n\n .ds-table.ds-table-size-large .ant-table-thead > tr > th {\n font-size: 18px !important;\n line-height: 22px !important;\n letter-spacing: -0.036px !important;\n height: 50px !important;\n font-weight: 600 !important;\n }\n\n .ds-table.ds-table-size-large .ant-table-tbody > tr > td {\n font-size: 16px !important;\n line-height: 20px !important;\n letter-spacing: -0.016px !important;\n height: 46px !important;\n }\n\n .ds-table .ant-table-thead > tr > th,\n .ds-table .ant-table-thead > tr > th:hover {\n color: ${table.text.body} !important;\n font-weight: ${table.typography.body.fontWeight} !important;\n }\n\n .ds-table .ant-table-thead > tr > th .ant-table-column-title {\n color: inherit !important;\n font-weight: inherit !important;\n }\n\n .ds-table .ant-table-thead > tr > th.ant-table-column-has-sorters,\n .ds-table .ant-table-thead > tr > th.ant-table-column-has-sorters:hover,\n .ds-table .ant-table-thead > tr > th.ant-table-column-sort,\n .ds-table .ant-table-thead > tr > th.ant-table-column-sort:hover {\n color: ${table.text.header} !important;\n font-weight: ${table.typography.header.fontWeight} !important;\n }\n\n .ds-table .ant-table-thead > tr > th.ant-table-column-has-sorters .ant-table-column-title,\n .ds-table .ant-table-thead > tr > th.ant-table-column-sort .ant-table-column-title {\n font-weight: ${table.typography.header.fontWeight} !important;\n }\n\n .ds-table.ds-table-styleA .ant-table {\n background: ${table.surface.container} !important;\n }\n\n .ds-table.ds-table-styleA .ant-table-thead > tr > th {\n border-bottom-width: 2px !important;\n }\n\n .ds-table.ds-table-styleA .ant-table-container {\n border: none !important;\n border-radius: 0 !important;\n background: ${table.surface.container} !important;\n }\n\n .ds-table.ds-table-styleAEditable .ant-table {\n background: ${table.surface.container} !important;\n }\n\n .ds-table.ds-table-styleAEditable .ant-table-thead > tr > th {\n border-bottom-width: 2px !important;\n }\n\n .ds-table.ds-table-styleAEditable .ant-table-container {\n border: none !important;\n border-radius: 0 !important;\n background: ${table.surface.container} !important;\n }\n\n .ds-table.ds-table-styleACustomizable .ant-table {\n background: ${table.surface.container} !important;\n }\n\n .ds-table.ds-table-styleACustomizable .ant-table-thead > tr > th {\n border-bottom-width: 2px !important;\n }\n\n .ds-table.ds-table-styleACustomizable .ant-table-container {\n border: none !important;\n border-radius: 0 !important;\n background: ${table.surface.container} !important;\n }\n\n .ds-table.ds-table-styleAResizable .ant-table {\n background: ${table.surface.container} !important;\n }\n\n .ds-table.ds-table-styleAResizable .ant-table-thead > tr > th {\n border-bottom-width: 2px !important;\n }\n\n .ds-table.ds-table-styleAResizable .ant-table-container {\n border: none !important;\n border-radius: 0 !important;\n background: ${table.surface.container} !important;\n }\n\n .ds-table .ds-table-resizable-header-cell {\n position: relative !important;\n }\n\n .ds-table .ds-table-resize-handle {\n position: absolute !important;\n top: 8px !important;\n inset-inline-end: 0 !important;\n bottom: 8px !important;\n width: 12px !important;\n padding: 0 !important;\n border: 0 !important;\n border-radius: 0 !important;\n background: transparent !important;\n cursor: col-resize !important;\n touch-action: none !important;\n z-index: 2 !important;\n }\n\n .ds-table .ds-table-resize-handle::after {\n content: '' !important;\n position: absolute !important;\n top: 0 !important;\n bottom: 0 !important;\n inset-inline-end: 5px !important;\n width: 1px !important;\n background: ${table.border.bodyDivider} !important;\n opacity: 0 !important;\n transition: opacity 120ms ease !important;\n }\n\n .ds-table .ds-table-resizable-header-cell:hover .ds-table-resize-handle::after,\n .ds-table .ds-table-resize-handle:focus-visible::after {\n opacity: 1 !important;\n background: ${table.text.header} !important;\n }\n\n .ds-table .ds-table-resize-handle:focus-visible {\n outline: 2px solid ${table.text.header} !important;\n outline-offset: -2px !important;\n }\n\n .ds-table.ds-table-styleAFixedHeaderFooter .ant-table {\n background: ${table.surface.container} !important;\n }\n\n .ds-table.ds-table-styleAFixedHeaderFooter .ant-table-thead > tr > th {\n border-bottom-width: 2px !important;\n }\n\n .ds-table.ds-table-styleAFixedHeaderFooter .ant-table-container {\n border: none !important;\n border-radius: 0 !important;\n background: ${table.surface.container} !important;\n }\n\n .ds-table-fixed-frame {\n display: flex !important;\n flex-direction: column !important;\n width: 100% !important;\n background: ${table.surface.container} !important;\n }\n\n .ds-table-fixed-frame > .ds-table.ant-table-wrapper,\n .ds-table-fixed-frame > .ant-table-wrapper {\n flex: 1 1 auto !important;\n min-height: 0 !important;\n }\n\n .ds-table-fixed-frame .ant-table-body {\n overflow-y: auto !important;\n }\n\n .ds-table-fixed-footer {\n flex: 0 0 auto !important;\n min-height: 56px !important;\n display: flex !important;\n align-items: center !important;\n justify-content: flex-end !important;\n padding: 12px 16px !important;\n border-top: 1px solid ${table.border.bodyDivider} !important;\n background: ${table.surface.container} !important;\n box-sizing: border-box !important;\n }\n\n .ds-table-column-visibility-control {\n display: flex !important;\n align-items: center !important;\n gap: 12px !important;\n margin-bottom: 16px !important;\n padding: 12px 0 !important;\n flex-wrap: wrap !important;\n }\n\n .ds-table-control-label {\n font-weight: 600 !important;\n font-size: 14px !important;\n color: ${table.text.body} !important;\n margin: 0 !important;\n }\n\n .ds-table-control-checkboxes {\n display: flex !important;\n gap: 12px !important;\n flex-wrap: wrap !important;\n }\n\n .ds-table-control-checkbox {\n display: inline-flex !important;\n align-items: center !important;\n gap: 6px !important;\n font-size: 14px !important;\n color: ${table.text.body} !important;\n cursor: pointer !important;\n user-select: none !important;\n margin: 0 !important;\n }\n\n .ds-table-control-checkbox input[type='checkbox'] {\n width: 16px !important;\n height: 16px !important;\n cursor: pointer !important;\n margin: 0 !important;\n }\n\n .ds-table .ds-table-edit-input.ant-input,\n .ds-table .ds-table-edit-input.ant-input-affix-wrapper {\n height: 26px !important;\n min-height: 26px !important;\n width: 100% !important;\n min-width: 0 !important;\n max-width: 100% !important;\n box-sizing: border-box !important;\n border-radius: 4px !important;\n border: 1px solid ${dsSemanticTokens.input.border.default} !important;\n background: ${dsSemanticTokens.input.background.default} !important;\n color: ${dsSemanticTokens.input.text.focus} !important;\n padding: 3px 8px !important;\n font-size: 12px !important;\n line-height: 16px !important;\n }\n\n .ds-table .ds-table-edit-input.ant-input:hover,\n .ds-table .ds-table-edit-input.ant-input-affix-wrapper:hover {\n border-color: ${dsSemanticTokens.input.border.hover} !important;\n }\n\n .ds-table .ds-table-edit-input.ant-input:focus,\n .ds-table .ds-table-edit-input.ant-input-focused,\n .ds-table .ds-table-edit-input.ant-input-affix-wrapper-focused {\n border-color: ${dsSemanticTokens.input.border.focus} !important;\n box-shadow: none !important;\n outline: none !important;\n }\n\n .ds-table.ds-table-styleB {\n background: ${table.surface.layout};\n padding: 0;\n }\n\n .ds-table.ds-table-styleB .ant-table {\n background: ${table.surface.layout} !important;\n }\n\n .ds-table.ds-table-styleB .ant-table-container {\n border: 1px solid ${table.border.container} !important;\n border-radius: ${table.border.radius} !important;\n overflow: hidden !important;\n background: ${table.surface.layout} !important;\n }\n\n .ds-table.ds-table-styleB .ant-table-thead > tr > th {\n border-bottom-width: ${table.border.headerDividerWidth} !important;\n background: ${table.surface.headerDefault} !important;\n }\n\n\n .ds-table.ds-table-styleB.ds-table-header-white .ant-table-thead > tr > th {\n background: ${table.surface.headerWhite} !important;\n }\n `;\n}\n\nexport const Table: React.FC<DSTableProps> = ({\n dsStyle = 'styleA',\n dsHeaderVariant = 'default',\n dsFrozenColumns = 'none',\n dsFrozenBreakpoint = 768,\n dsFrozenColumnWidth = 180,\n dsTruncateCellText = false,\n dsTruncateTooltip = true,\n dsTruncateTooltipDelay = 0.25,\n dsTruncateTooltipSize = 'normal',\n dsTruncateTooltipTitle = 'Title Heading',\n dsEditableColumns = [],\n dsOnEditableDataChange,\n dsCustomizable = false,\n dsVisibleColumns,\n dsOnVisibleColumnsChange,\n dsFixedBodyHeight = 320,\n dsResizableColumns = false,\n dsColumnWidths,\n dsOnColumnWidthsChange,\n dsResizableColumnMinWidth = 96,\n dsResizableColumnMaxWidth,\n dsResizableDefaultColumnWidth = 180,\n size = 'middle',\n className,\n columns,\n dataSource,\n pagination,\n ...antProps\n}) => {\n const [isAtOrBelowFrozenBreakpoint, setIsAtOrBelowFrozenBreakpoint] = React.useState(false);\n const [editableData, setEditableData] = React.useState<Record<string, unknown>[]>(\n Array.isArray(dataSource) ? (dataSource as Record<string, unknown>[]) : [],\n );\n const [localVisibleColumns, setLocalVisibleColumns] = React.useState<Set<string>>(() => {\n if (Array.isArray(dsVisibleColumns)) {\n return new Set(dsVisibleColumns.map(String));\n }\n if (columns && Array.isArray(columns)) {\n return new Set(\n columns\n .map((col) => getColumnIdentity(col))\n .filter((id) => Boolean(id)) as string[],\n );\n }\n return new Set();\n });\n const [localColumnWidths, setLocalColumnWidths] = React.useState<DSTableColumnWidths>(() => (\n dsColumnWidths ?? getInitialColumnWidths(columns as any[], dsResizableDefaultColumnWidth)\n ));\n\n useEffect(() => {\n injectStyles();\n ensureTooltipStyles();\n }, []);\n\n useEffect(() => {\n if (typeof window === 'undefined') return;\n\n const onResize = () => {\n setIsAtOrBelowFrozenBreakpoint(window.innerWidth <= dsFrozenBreakpoint);\n };\n\n onResize();\n window.addEventListener('resize', onResize);\n\n return () => {\n window.removeEventListener('resize', onResize);\n };\n }, [dsFrozenBreakpoint]);\n\n useEffect(() => {\n if (dsStyle !== 'styleAEditable') return;\n setEditableData(Array.isArray(dataSource) ? (dataSource as Record<string, unknown>[]) : []);\n }, [dataSource, dsStyle]);\n\n const {\n scroll: antScroll,\n tableLayout: antTableLayout,\n showSorterTooltip: antShowSorterTooltip,\n components: antComponents,\n ...restAntProps\n } = antProps;\n const useDSFrozenColumns = dsFrozenColumns !== 'none' && isAtOrBelowFrozenBreakpoint;\n const useEditableVariant = dsStyle === 'styleAEditable';\n const useCustomizableVariant = dsStyle === 'styleACustomizable' && dsCustomizable;\n const useFixedHeaderFooterVariant = dsStyle === 'styleAFixedHeaderFooter';\n const useResizableVariant = dsStyle === 'styleAResizable' || dsResizableColumns;\n const paginationConfig = pagination && typeof pagination === 'object' ? pagination : undefined;\n const [localCurrentPage, setLocalCurrentPage] = React.useState(paginationConfig?.defaultCurrent ?? 1);\n const [localPageSize, setLocalPageSize] = React.useState(paginationConfig?.defaultPageSize ?? paginationConfig?.pageSize ?? 10);\n\n useEffect(() => {\n if (!useCustomizableVariant) return;\n if (Array.isArray(dsVisibleColumns)) {\n setLocalVisibleColumns(new Set(dsVisibleColumns.map(String)));\n }\n }, [dsVisibleColumns, useCustomizableVariant]);\n\n useEffect(() => {\n if (!useResizableVariant) return;\n\n if (dsColumnWidths) {\n setLocalColumnWidths(dsColumnWidths);\n return;\n }\n\n setLocalColumnWidths((prev) => getInitialColumnWidths(columns as any[], dsResizableDefaultColumnWidth, prev));\n }, [columns, dsColumnWidths, dsResizableDefaultColumnWidth, useResizableVariant]);\n\n const handleColumnVisibilityToggle = React.useCallback(\n (colKey: string, visible: boolean) => {\n setLocalVisibleColumns((prev) => {\n const next = new Set(prev);\n if (visible) {\n next.add(colKey);\n } else {\n next.delete(colKey);\n }\n const nextArray = Array.from(next);\n dsOnVisibleColumnsChange?.(nextArray);\n return next;\n });\n },\n [dsOnVisibleColumnsChange],\n );\n const normalizedEditableColumns = React.useMemo(() => {\n if (Array.isArray(dsEditableColumns)) {\n return dsEditableColumns.map(String);\n }\n\n if (typeof dsEditableColumns === 'string') {\n return dsEditableColumns\n .split(',')\n .map((entry) => entry.trim())\n .filter(Boolean);\n }\n\n if (dsEditableColumns && typeof dsEditableColumns === 'object') {\n return Object.entries(dsEditableColumns)\n .filter(([, enabled]) => Boolean(enabled))\n .map(([key]) => key);\n }\n\n return [] as string[];\n }, [dsEditableColumns]);\n\n const handleEditableCellChange = React.useCallback((rowIndex: number, dataIndex: unknown, nextValue: unknown) => {\n setEditableData((prev) => {\n if (!Array.isArray(prev) || !prev[rowIndex]) {\n return prev;\n }\n\n const nextRows = [...prev];\n const currentRow = nextRows[rowIndex] as Record<string, unknown>;\n nextRows[rowIndex] = setValueByDataIndex(currentRow, dataIndex, nextValue);\n dsOnEditableDataChange?.(nextRows as unknown[] as Record<string, unknown>[]);\n return nextRows;\n });\n }, [dsOnEditableDataChange]);\n\n const handleColumnResize = React.useCallback((columnKey: string, nextWidth: number) => {\n const clampedWidth = clampColumnWidth(nextWidth, dsResizableColumnMinWidth, dsResizableColumnMaxWidth);\n\n setLocalColumnWidths((prev) => {\n const next = { ...prev, [columnKey]: clampedWidth };\n dsOnColumnWidthsChange?.(next);\n return next;\n });\n }, [dsOnColumnWidthsChange, dsResizableColumnMaxWidth, dsResizableColumnMinWidth]);\n\n const columnsWithDSBehavior = React.useMemo(() => {\n const withSortIcons = withDSSortIcons(columns as any[], antShowSorterTooltip);\n const withFrozenColumns = useDSFrozenColumns\n ? withDSFrozenColumns(withSortIcons, dsFrozenColumns, dsFrozenColumnWidth)\n : withSortIcons;\n\n const withVisibilityFilter = useCustomizableVariant\n ? withDSVisibleColumnsFilter(withFrozenColumns, localVisibleColumns)\n : withFrozenColumns;\n\n const editableColumnKeys = new Set(normalizedEditableColumns);\n const withEditableColumns = useEditableVariant\n ? withDSEditableCells(withVisibilityFilter, editableColumnKeys, handleEditableCellChange)\n : withVisibilityFilter;\n\n const withResizableColumns = useResizableVariant\n ? withDSResizableColumns(\n withEditableColumns,\n localColumnWidths,\n handleColumnResize,\n dsResizableColumnMinWidth,\n dsResizableColumnMaxWidth,\n dsResizableDefaultColumnWidth,\n )\n : withEditableColumns;\n\n if (!dsTruncateCellText || useEditableVariant) {\n return withResizableColumns;\n }\n\n return withDSTruncatedCells(\n withResizableColumns,\n dsTruncateTooltip,\n dsTruncateTooltipDelay,\n dsTruncateTooltipSize,\n dsTruncateTooltipTitle\n );\n }, [\n columns,\n antShowSorterTooltip,\n dsFrozenColumnWidth,\n dsFrozenColumns,\n dsTruncateCellText,\n dsTruncateTooltip,\n dsTruncateTooltipDelay,\n dsTruncateTooltipSize,\n dsTruncateTooltipTitle,\n normalizedEditableColumns,\n handleEditableCellChange,\n useResizableVariant,\n localColumnWidths,\n handleColumnResize,\n dsResizableColumnMinWidth,\n dsResizableColumnMaxWidth,\n dsResizableDefaultColumnWidth,\n useDSFrozenColumns,\n useEditableVariant,\n localVisibleColumns,\n useCustomizableVariant,\n handleColumnVisibilityToggle,\n ]);\n\n const effectiveScroll = React.useMemo(() => {\n if (useFixedHeaderFooterVariant) {\n const scrollBase = antScroll && typeof antScroll === 'object' ? antScroll : {};\n return {\n ...scrollBase,\n y: scrollBase.y ?? dsFixedBodyHeight,\n };\n }\n\n if (useResizableVariant) {\n if (!antScroll || typeof antScroll !== 'object') {\n return { x: 'max-content' as const };\n }\n\n return {\n ...antScroll,\n x: antScroll.x ?? ('max-content' as const),\n };\n }\n\n if (!useDSFrozenColumns) {\n return antScroll;\n }\n\n if (!antScroll || typeof antScroll !== 'object') {\n return { x: 'max-content' as const };\n }\n\n return {\n ...antScroll,\n x: antScroll.x ?? ('max-content' as const),\n };\n }, [antScroll, dsFixedBodyHeight, useDSFrozenColumns, useFixedHeaderFooterVariant, useResizableVariant]);\n\n const effectiveTableLayout = (useEditableVariant || useResizableVariant) ? (antTableLayout ?? 'fixed') : antTableLayout;\n const effectiveComponents = React.useMemo(() => {\n if (!useResizableVariant) return antComponents;\n\n return {\n ...antComponents,\n header: {\n ...antComponents?.header,\n cell: DSResizableHeaderCell,\n },\n };\n }, [antComponents, useResizableVariant]);\n\n const fixedPaginationTotal = paginationConfig?.total ?? (Array.isArray(dataSource) ? dataSource.length : 0);\n const fixedCurrentPage = paginationConfig?.current ?? localCurrentPage;\n const fixedPageSize = paginationConfig?.pageSize ?? localPageSize;\n const fixedDataSource = React.useMemo(() => {\n const source = useEditableVariant ? editableData : dataSource;\n if (!useFixedHeaderFooterVariant || !Array.isArray(source)) {\n return source;\n }\n\n if (paginationConfig?.total != null && paginationConfig.total > source.length) {\n return source;\n }\n\n const start = (fixedCurrentPage - 1) * fixedPageSize;\n return source.slice(start, start + fixedPageSize);\n }, [dataSource, editableData, fixedCurrentPage, fixedPageSize, paginationConfig?.total, useEditableVariant, useFixedHeaderFooterVariant]);\n\n const fixedFooterPaginationProps: DSPaginationProps = {\n ...paginationConfig,\n current: fixedCurrentPage,\n pageSize: fixedPageSize,\n total: fixedPaginationTotal,\n showSizeChanger: paginationConfig?.showSizeChanger ?? false,\n onChange: (page, pageSize) => {\n setLocalCurrentPage(page);\n setLocalPageSize(pageSize);\n paginationConfig?.onChange?.(page, pageSize);\n },\n onShowSizeChange: (page, pageSize) => {\n setLocalCurrentPage(page);\n setLocalPageSize(pageSize);\n paginationConfig?.onShowSizeChange?.(page, pageSize);\n },\n };\n\n const dsClassName = [\n 'ds-table',\n `ds-table-${dsStyle}`,\n `ds-table-size-${size}`,\n dsHeaderVariant === 'white' ? 'ds-table-header-white' : '',\n className || '',\n ]\n .filter(Boolean)\n .join(' ');\n\n const tableElement = (\n <AntTable\n {...restAntProps}\n columns={columnsWithDSBehavior}\n dataSource={fixedDataSource}\n pagination={useFixedHeaderFooterVariant ? false : pagination}\n scroll={effectiveScroll}\n tableLayout={effectiveTableLayout}\n components={effectiveComponents}\n size={size}\n className={dsClassName}\n showSorterTooltip={getDSSorterTooltipProps(antShowSorterTooltip)}\n />\n );\n\n if (useFixedHeaderFooterVariant) {\n return (\n <div className={`${dsClassName} ds-table-fixed-frame`}>\n {tableElement}\n <div className=\"ds-table-fixed-footer\">\n <DSPagination {...fixedFooterPaginationProps} />\n </div>\n </div>\n );\n }\n\n return useCustomizableVariant ? (\n <div className={dsClassName}>\n <DSColumnVisibilityControl\n columns={columns as any[]}\n visibleColumns={localVisibleColumns}\n onToggle={handleColumnVisibilityToggle}\n />\n {tableElement}\n </div>\n ) : (\n tableElement\n );\n};\n\nexport default Table;\n","import { Popover as AntPopover } from 'antd';\nimport type { PopoverProps as AntPopoverProps } from 'antd';\nimport { useEffect } from 'react';\nimport type { ReactNode } from 'react';\nimport { dsSemanticTokens } from '../../theme/ontadaTheme';\n\nexport type DSPopoverSize = 'mini' | 'normal';\n\nexport type PopoverProps = AntPopoverProps & {\n /** DS size variant from Figma. */\n dsSize?: DSPopoverSize;\n /** Optional DS title text for normal popover variant. */\n dsTitle?: string;\n /** DS body text used when Ant `content` prop is not provided. */\n dsBody?: string;\n};\n\nconst STYLE_ID = 'ds-popover-styles';\n\nfunction injectStyles() {\n if (typeof document === 'undefined') return;\n\n const { tooltip } = dsSemanticTokens;\n let style = document.getElementById(STYLE_ID) as HTMLStyleElement | null;\n if (!style) {\n style = document.createElement('style');\n style.id = STYLE_ID;\n document.head.appendChild(style);\n }\n\n style.textContent = `\n .ds-popover-overlay .ant-popover-inner {\n background: ${tooltip.surface.background};\n border-radius: ${tooltip.radius};\n box-shadow: none;\n filter: ${tooltip.elevation};\n color: ${tooltip.surface.body};\n letter-spacing: 0;\n max-width: ${tooltip.width.normal.max};\n min-width: ${tooltip.width.normal.min};\n padding: ${tooltip.padding.normal};\n }\n\n .ds-popover-overlay .ant-popover-arrow {\n width: ${tooltip.arrow.width};\n height: ${tooltip.arrow.height};\n }\n\n .ds-popover-overlay .ant-popover-arrow::before,\n .ds-popover-overlay .ant-popover-arrow::after {\n background: ${tooltip.surface.background};\n }\n\n .ds-popover-overlay.ds-popover-size-mini .ant-popover-inner {\n min-width: ${tooltip.width.mini.min};\n max-width: ${tooltip.width.mini.max};\n padding: ${tooltip.padding.mini};\n text-align: center;\n }\n\n .ds-popover-overlay .ant-popover-title,\n .ds-popover-title {\n margin: 0 0 4px;\n color: ${tooltip.surface.title};\n font-size: ${tooltip.typography.title.fontSize};\n font-weight: ${tooltip.typography.title.fontWeight};\n line-height: ${tooltip.typography.title.lineHeight};\n border: 0;\n padding: 0;\n min-height: 0;\n }\n\n .ds-popover-overlay .ant-popover-inner-content,\n .ds-popover-body {\n margin: 0;\n color: ${tooltip.surface.body};\n font-size: ${tooltip.typography.body.fontSize};\n font-weight: ${tooltip.typography.body.fontWeight};\n line-height: ${tooltip.typography.body.lineHeight};\n }\n\n .ds-popover-content {\n display: flex;\n flex-direction: column;\n gap: 4px;\n }\n\n .ds-popover-content-mini {\n align-items: center;\n }\n `;\n}\n\nfunction mergeClassNames(...names: Array<string | undefined>) {\n return names.filter(Boolean).join(' ');\n}\n\nfunction getDefaultContent(dsSize: DSPopoverSize, dsBody: string) {\n if (dsSize === 'mini') {\n return (\n <div className=\"ds-popover-content ds-popover-content-mini\">\n <p className=\"ds-popover-body\">{dsBody}</p>\n </div>\n );\n }\n\n return <p className=\"ds-popover-body\">{dsBody}</p>;\n}\n\nexport const Popover = ({\n dsSize = 'normal',\n dsTitle,\n dsBody,\n title,\n content,\n color,\n arrow,\n styles,\n classNames,\n overlayClassName,\n ...props\n}: PopoverProps) => {\n const { tooltip } = dsSemanticTokens;\n\n useEffect(() => {\n injectStyles();\n }, []);\n\n const defaultBody = dsSize === 'mini'\n ? 'Mini Popover'\n : 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla pellentesque fermentum dolor eget.';\n\n const resolvedBody = dsBody ?? defaultBody;\n const resolvedContent: ReactNode =\n content !== undefined ? content : getDefaultContent(dsSize, resolvedBody);\n\n const resolvedTitle: ReactNode =\n title !== undefined\n ? title\n : dsSize === 'normal' && dsTitle\n ? <p className=\"ds-popover-title\">{dsTitle}</p>\n : undefined;\n\n const sizeBodyStyles = dsSize === 'mini'\n ? {\n minWidth: tooltip.width.mini.min,\n maxWidth: tooltip.width.mini.max,\n padding: tooltip.padding.mini,\n textAlign: 'center' as const,\n }\n : {\n minWidth: tooltip.width.normal.min,\n maxWidth: tooltip.width.normal.max,\n padding: tooltip.padding.normal,\n };\n\n return (\n <AntPopover\n {...props}\n title={resolvedTitle}\n content={resolvedContent}\n color={color ?? tooltip.surface.background}\n arrow={arrow ?? true}\n styles={{\n ...styles,\n body: {\n borderRadius: tooltip.radius,\n color: tooltip.surface.body,\n letterSpacing: 0,\n ...sizeBodyStyles,\n ...styles?.body,\n },\n }}\n classNames={{\n ...classNames,\n root: mergeClassNames('ds-popover-overlay', `ds-popover-size-${dsSize}`, classNames?.root, overlayClassName),\n }}\n />\n );\n};","import { Collapse as AntCollapse } from 'antd';\nimport type { CollapseProps } from 'antd';\nimport { useEffect, useMemo, useState } from 'react';\nimport { Icon } from '../../utils/icons';\nimport { dsSemanticTokens } from '../../theme/ontadaTheme';\n\ntype DSCollapseVariant = 'ant' | 'canonical';\nexport type DSCollapseSize = 'sm' | 'md' | 'lg';\nexport type DSCollapsePanelBackground = 'white' | 'light-gray' | 'collapsed-all';\nexport type DSCollapseHeaderBackground = 'panel' | 'light-gray';\n\ntype CollapseChangeKey = NonNullable<CollapseProps['onChange']> extends (key: infer K) => void ? K : string | number | Array<string | number>;\n\ntype ActiveKey = CollapseProps['activeKey'];\n\ntype ExpandIconPanelProps = {\n isActive?: boolean;\n};\n\ntype RestrictedAntProps = 'expandIcon';\n\nconst PANEL_ICON_SIZE_BY_DS_SIZE: Record<DSCollapseSize, number> = {\n lg: 16,\n md: 12,\n sm: 10,\n};\n\nexport type DSCollapseProps = Omit<CollapseProps, RestrictedAntProps> & {\n /** Render Ant defaults or DS canonical accordion styling. */\n dsVariant?: DSCollapseVariant;\n /** Canonical DS size from Figma: sm, md, lg. */\n dsSize?: DSCollapseSize;\n /** Shows Expand all / Collapse all controls for canonical variants. */\n dsShowBulkActions?: boolean;\n /** Label text for bulk expand action. */\n dsExpandAllLabel?: string;\n /** Label text for bulk collapse action. */\n dsCollapseAllLabel?: string;\n /** Canonical panel background variant from Figma component accordion. */\n dsPanelBackground?: DSCollapsePanelBackground;\n /** Header background fill for canonical variants. */\n dsHeaderBackground?: DSCollapseHeaderBackground;\n /** Optional row gap (px) between accordion items for Figma parity variants. */\n dsRowGap?: number;\n /** Adds left/right contrasting edges for open panel body variants from Figma. */\n dsOpenPanelEdgeContrast?: boolean;\n};\n\nconst STYLE_ID = 'ds-collapse-styles-v2';\nconst DS_COLLAPSE_CLASS = 'ds-collapse';\n\nfunction injectStyles() {\n if (typeof document === 'undefined') return;\n\n const { table, input, button } = dsSemanticTokens;\n const existingStyle = document.getElementById(STYLE_ID) as HTMLStyleElement | null;\n\n const cssText = `\n .${DS_COLLAPSE_CLASS}.ant-collapse {\n background: ${table.surface.container};\n border: none;\n border-radius: 0;\n }\n\n .${DS_COLLAPSE_CLASS}.ant-collapse > .ant-collapse-item {\n background: var(--ds-collapse-content-bg, ${table.surface.container});\n border-bottom: 1px solid ${table.border.bodyDivider};\n }\n\n .${DS_COLLAPSE_CLASS}.ant-collapse > .ant-collapse-item:first-child {\n border-top: 1px solid ${table.border.bodyDivider};\n }\n\n .${DS_COLLAPSE_CLASS}.ant-collapse > .ant-collapse-item > .ant-collapse-header {\n position: relative;\n align-items: center;\n color: ${button.primary.default};\n font-family: 'Nunito', sans-serif;\n font-weight: 600;\n background: var(--ds-collapse-header-bg, var(--ds-collapse-panel-bg, ${table.surface.container}));\n }\n\n .${DS_COLLAPSE_CLASS}.ant-collapse:not([data-ds-panel-background='collapsed-all']) > .ant-collapse-item.ant-collapse-item-active > .ant-collapse-header {\n border-bottom: 1px solid ${table.border.bodyDivider};\n }\n\n .${DS_COLLAPSE_CLASS}.ant-collapse > .ant-collapse-item > .ant-collapse-content,\n .${DS_COLLAPSE_CLASS}.ant-collapse > .ant-collapse-item > .ant-collapse-panel {\n border-top: none;\n background: var(--ds-collapse-content-bg, ${table.surface.container});\n }\n\n .${DS_COLLAPSE_CLASS}.ant-collapse > .ant-collapse-item > .ant-collapse-content > .ant-collapse-content-box,\n .${DS_COLLAPSE_CLASS}.ant-collapse > .ant-collapse-item > .ant-collapse-panel > .ant-collapse-body {\n color: ${table.text.body};\n font-family: 'Nunito', sans-serif;\n font-weight: 400;\n }\n\n .${DS_COLLAPSE_CLASS}[data-ds-size='lg'] > .ant-collapse-item > .ant-collapse-header {\n min-height: 60px;\n padding: 19px 40px !important;\n }\n\n .${DS_COLLAPSE_CLASS}[data-ds-size='lg'] .ant-collapse-header,\n .${DS_COLLAPSE_CLASS}[data-ds-size='lg'] .ant-collapse-header .ant-collapse-header-text,\n .${DS_COLLAPSE_CLASS}[data-ds-size='lg'] .ant-collapse-header .ant-collapse-title {\n font-size: 18px;\n line-height: 22px;\n letter-spacing: -0.036px;\n font-weight: 600;\n }\n\n .${DS_COLLAPSE_CLASS}[data-ds-size='lg'] > .ant-collapse-item > .ant-collapse-header .ant-collapse-expand-icon {\n margin-inline-end: 24px;\n }\n\n .${DS_COLLAPSE_CLASS}[data-ds-size='lg'] > .ant-collapse-item > .ant-collapse-content > .ant-collapse-content-box,\n .${DS_COLLAPSE_CLASS}[data-ds-size='lg'] > .ant-collapse-item > .ant-collapse-panel > .ant-collapse-body {\n padding: 24px 40px !important;\n font-size: 16px;\n line-height: 20px;\n letter-spacing: -0.016px;\n font-weight: 400;\n }\n\n .${DS_COLLAPSE_CLASS}[data-ds-size='lg'] .ant-collapse-content-box,\n .${DS_COLLAPSE_CLASS}[data-ds-size='lg'] .ant-collapse-body,\n .${DS_COLLAPSE_CLASS}[data-ds-size='lg'] .ant-collapse-content-box p,\n .${DS_COLLAPSE_CLASS}[data-ds-size='lg'] .ant-collapse-body p,\n .${DS_COLLAPSE_CLASS}[data-ds-size='lg'] .ant-collapse-content-box span {\n font-size: 16px;\n line-height: 20px;\n letter-spacing: -0.016px;\n font-weight: 400;\n }\n\n .${DS_COLLAPSE_CLASS}[data-ds-size='md'] > .ant-collapse-item > .ant-collapse-header {\n min-height: 50px;\n padding: 15px 40px !important;\n }\n\n .${DS_COLLAPSE_CLASS}[data-ds-size='md'] .ant-collapse-header,\n .${DS_COLLAPSE_CLASS}[data-ds-size='md'] .ant-collapse-header .ant-collapse-header-text,\n .${DS_COLLAPSE_CLASS}[data-ds-size='md'] .ant-collapse-header .ant-collapse-title {\n font-size: 16px;\n line-height: 20px;\n letter-spacing: -0.016px;\n font-weight: 600;\n }\n\n .${DS_COLLAPSE_CLASS}[data-ds-size='md'] > .ant-collapse-item > .ant-collapse-header .ant-collapse-expand-icon {\n margin-inline-end: 16px;\n }\n\n .${DS_COLLAPSE_CLASS}[data-ds-size='md'] > .ant-collapse-item > .ant-collapse-content > .ant-collapse-content-box,\n .${DS_COLLAPSE_CLASS}[data-ds-size='md'] > .ant-collapse-item > .ant-collapse-panel > .ant-collapse-body {\n padding: 24px 40px !important;\n font-size: 16px;\n line-height: 20px;\n letter-spacing: -0.016px;\n font-weight: 400;\n }\n\n .${DS_COLLAPSE_CLASS}[data-ds-size='md'] .ant-collapse-content-box,\n .${DS_COLLAPSE_CLASS}[data-ds-size='md'] .ant-collapse-body,\n .${DS_COLLAPSE_CLASS}[data-ds-size='md'] .ant-collapse-content-box p,\n .${DS_COLLAPSE_CLASS}[data-ds-size='md'] .ant-collapse-body p,\n .${DS_COLLAPSE_CLASS}[data-ds-size='md'] .ant-collapse-content-box span {\n font-size: 16px;\n line-height: 20px;\n letter-spacing: -0.016px;\n font-weight: 400;\n }\n\n .${DS_COLLAPSE_CLASS}[data-ds-size='sm'] > .ant-collapse-item > .ant-collapse-header {\n min-height: 32px;\n padding: 7px 24px !important;\n }\n\n .${DS_COLLAPSE_CLASS}[data-ds-size='sm'] .ant-collapse-header,\n .${DS_COLLAPSE_CLASS}[data-ds-size='sm'] .ant-collapse-header .ant-collapse-header-text,\n .${DS_COLLAPSE_CLASS}[data-ds-size='sm'] .ant-collapse-header .ant-collapse-title {\n font-size: 14px;\n line-height: 18px;\n letter-spacing: 0;\n font-weight: 600;\n }\n\n .${DS_COLLAPSE_CLASS}[data-ds-size='sm'] > .ant-collapse-item > .ant-collapse-header .ant-collapse-expand-icon {\n margin-inline-end: 12px;\n }\n\n .${DS_COLLAPSE_CLASS}[data-ds-size='sm'] > .ant-collapse-item > .ant-collapse-content > .ant-collapse-content-box,\n .${DS_COLLAPSE_CLASS}[data-ds-size='sm'] > .ant-collapse-item > .ant-collapse-panel > .ant-collapse-body {\n padding: 24px !important;\n font-size: 14px;\n line-height: 18px;\n letter-spacing: 0;\n font-weight: 400;\n }\n\n .${DS_COLLAPSE_CLASS}[data-ds-size='sm'] .ant-collapse-content-box,\n .${DS_COLLAPSE_CLASS}[data-ds-size='sm'] .ant-collapse-body,\n .${DS_COLLAPSE_CLASS}[data-ds-size='sm'] .ant-collapse-content-box p,\n .${DS_COLLAPSE_CLASS}[data-ds-size='sm'] .ant-collapse-body p,\n .${DS_COLLAPSE_CLASS}[data-ds-size='sm'] .ant-collapse-content-box span {\n font-size: 14px;\n line-height: 18px;\n letter-spacing: 0;\n font-weight: 400;\n }\n\n .${DS_COLLAPSE_CLASS}-controls {\n display: flex;\n align-items: center;\n justify-content: flex-end;\n gap: 24px;\n margin-bottom: 12px;\n color: ${input.text.placeholder};\n font-family: 'Nunito', sans-serif;\n font-weight: 600;\n background: ${table.surface.container};\n user-select: none;\n }\n\n .${DS_COLLAPSE_CLASS}-controls[data-ds-size='sm'] {\n font-size: 12px;\n line-height: 16px;\n letter-spacing: 0.012px;\n }\n\n .${DS_COLLAPSE_CLASS}-controls[data-ds-size='md'],\n .${DS_COLLAPSE_CLASS}-controls[data-ds-size='lg'] {\n font-size: 14px;\n line-height: 18px;\n letter-spacing: 0;\n }\n\n .${DS_COLLAPSE_CLASS}-controls[data-ds-size='sm'] .${DS_COLLAPSE_CLASS}-control-button {\n font-size: 12px;\n line-height: 16px;\n letter-spacing: 0.012px;\n font-weight: 600;\n }\n\n .${DS_COLLAPSE_CLASS}-controls[data-ds-size='md'] .${DS_COLLAPSE_CLASS}-control-button,\n .${DS_COLLAPSE_CLASS}-controls[data-ds-size='lg'] .${DS_COLLAPSE_CLASS}-control-button {\n font-size: 14px;\n line-height: 18px;\n letter-spacing: 0;\n font-weight: 600;\n }\n\n .${DS_COLLAPSE_CLASS}-control-button {\n border: 0;\n background: transparent;\n color: inherit;\n cursor: pointer;\n padding: 0;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font: inherit;\n }\n\n .${DS_COLLAPSE_CLASS}-control-button:disabled {\n opacity: 0.45;\n cursor: not-allowed;\n }\n\n .${DS_COLLAPSE_CLASS}-control-icon {\n width: 16px;\n height: 16px;\n border-radius: 999px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n line-height: 1;\n }\n\n .${DS_COLLAPSE_CLASS}-control-icon > svg,\n .${DS_COLLAPSE_CLASS}-control-icon .anticon,\n .${DS_COLLAPSE_CLASS}-control-icon span > svg {\n width: 16px !important;\n height: 16px !important;\n min-width: 16px !important;\n min-height: 16px !important;\n display: block;\n }\n\n .${DS_COLLAPSE_CLASS}-chevron {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--ds-collapse-panel-icon-size);\n height: var(--ds-collapse-panel-icon-size);\n min-width: var(--ds-collapse-panel-icon-size);\n min-height: var(--ds-collapse-panel-icon-size);\n color: ${input.text.disabled};\n line-height: 1;\n }\n\n .${DS_COLLAPSE_CLASS}.ant-collapse .ant-collapse-expand-icon {\n width: var(--ds-collapse-panel-icon-size) !important;\n height: var(--ds-collapse-panel-icon-size) !important;\n min-width: var(--ds-collapse-panel-icon-size) !important;\n min-height: var(--ds-collapse-panel-icon-size) !important;\n flex: 0 0 var(--ds-collapse-panel-icon-size) !important;\n padding-inline-start: 0 !important;\n padding-inline-end: 0 !important;\n margin-inline-start: 0 !important;\n display: inline-flex !important;\n align-items: center !important;\n justify-content: center !important;\n }\n\n .${DS_COLLAPSE_CLASS}.ant-collapse .ant-collapse-arrow {\n width: var(--ds-collapse-panel-icon-size) !important;\n height: var(--ds-collapse-panel-icon-size) !important;\n min-width: var(--ds-collapse-panel-icon-size) !important;\n min-height: var(--ds-collapse-panel-icon-size) !important;\n font-size: var(--ds-collapse-panel-icon-size) !important;\n display: inline-flex !important;\n align-items: center !important;\n justify-content: center !important;\n line-height: 1 !important;\n }\n\n .${DS_COLLAPSE_CLASS}.ant-collapse .ant-collapse-arrow svg {\n width: var(--ds-collapse-panel-icon-size) !important;\n height: var(--ds-collapse-panel-icon-size) !important;\n min-width: var(--ds-collapse-panel-icon-size) !important;\n min-height: var(--ds-collapse-panel-icon-size) !important;\n display: block !important;\n }\n\n .${DS_COLLAPSE_CLASS}.ant-collapse[data-ds-row-gap='true'] {\n display: flex;\n flex-direction: column;\n gap: var(--ds-collapse-row-gap, 0px);\n background: transparent;\n }\n\n .${DS_COLLAPSE_CLASS}.ant-collapse[data-ds-row-gap='true'] > .ant-collapse-item {\n background: var(--ds-collapse-content-bg, ${table.surface.container});\n border: 1px solid ${table.border.bodyDivider};\n border-radius: 0;\n overflow: hidden;\n }\n\n .${DS_COLLAPSE_CLASS}.ant-collapse[data-ds-row-gap='true'] > .ant-collapse-item:first-child {\n border-top-left-radius: 8px;\n border-top-right-radius: 8px;\n border-top: 1px solid ${table.border.bodyDivider};\n }\n\n .${DS_COLLAPSE_CLASS}.ant-collapse[data-ds-row-gap='true'] > .ant-collapse-item:last-child {\n border-bottom-left-radius: 8px;\n border-bottom-right-radius: 8px;\n }\n\n .${DS_COLLAPSE_CLASS}.ant-collapse[data-ds-panel-background='collapsed-all'] {\n background: transparent;\n display: flex;\n flex-direction: column;\n gap: var(--ds-collapse-row-gap, 16px);\n }\n\n .${DS_COLLAPSE_CLASS}.ant-collapse[data-ds-panel-background='collapsed-all'] > .ant-collapse-item {\n border: none;\n border-radius: 0;\n }\n\n .${DS_COLLAPSE_CLASS}.ant-collapse[data-ds-panel-background='collapsed-all'] > .ant-collapse-item > .ant-collapse-header {\n border-radius: 0;\n border: 1px solid ${table.border.bodyDivider};\n }\n\n .${DS_COLLAPSE_CLASS}.ant-collapse[data-ds-panel-background='collapsed-all'] > .ant-collapse-item:first-child > .ant-collapse-header {\n border-top-left-radius: 8px;\n border-top-right-radius: 8px;\n }\n\n .${DS_COLLAPSE_CLASS}.ant-collapse[data-ds-panel-background='collapsed-all'] > .ant-collapse-item:last-child > .ant-collapse-header {\n border-bottom-left-radius: 8px;\n border-bottom-right-radius: 8px;\n }\n\n .${DS_COLLAPSE_CLASS}.ant-collapse[data-ds-panel-background='collapsed-all'] > .ant-collapse-item > .ant-collapse-content,\n .${DS_COLLAPSE_CLASS}.ant-collapse[data-ds-panel-background='collapsed-all'] > .ant-collapse-item > .ant-collapse-panel {\n border-radius: 0;\n margin-top: -1px;\n border: 1px solid ${table.border.bodyDivider};\n border-top: none;\n }\n\n .${DS_COLLAPSE_CLASS}.ant-collapse[data-ds-open-panel-edge-contrast='true'] > .ant-collapse-item.ant-collapse-item-active {\n border-left-color: ${table.border.container};\n border-right-color: ${table.border.container};\n }\n `;\n\n if (existingStyle) {\n existingStyle.textContent = cssText;\n return;\n }\n\n const style = document.createElement('style');\n style.id = STYLE_ID;\n style.textContent = cssText;\n document.head.appendChild(style);\n}\n\nfunction toKeyArray(activeKey: ActiveKey | undefined): Array<string | number> {\n if (activeKey == null) return [];\n if (Array.isArray(activeKey)) return activeKey;\n return [activeKey];\n}\n\nexport const Collapse = ({\n dsVariant = 'ant',\n dsSize = 'md',\n dsShowBulkActions = false,\n dsExpandAllLabel = 'Expand all',\n dsCollapseAllLabel = 'Collapse all',\n dsPanelBackground = 'white',\n dsHeaderBackground = 'panel',\n dsRowGap,\n dsOpenPanelEdgeContrast = false,\n className,\n activeKey,\n defaultActiveKey,\n items,\n onChange,\n bordered,\n ...props\n}: DSCollapseProps) => {\n useEffect(() => {\n injectStyles();\n }, []);\n\n const isCanonical = dsVariant === 'canonical';\n const panelIconSize = PANEL_ICON_SIZE_BY_DS_SIZE[dsSize];\n const tableTokens = dsSemanticTokens.table;\n const panelBackground =\n dsPanelBackground === 'light-gray' || dsPanelBackground === 'collapsed-all'\n ? tableTokens.surface.rowHover\n : tableTokens.surface.container;\n const headerBackground =\n dsHeaderBackground === 'light-gray'\n ? tableTokens.surface.rowHover\n : panelBackground;\n const rowGap = dsRowGap ?? 0;\n const isControlled = activeKey !== undefined;\n const [internalActiveKey, setInternalActiveKey] = useState<ActiveKey>(defaultActiveKey);\n\n const resolvedActiveKey = isControlled ? activeKey : internalActiveKey;\n const allKeys = useMemo(() => (items ?? []).map((item) => item.key), [items]);\n const activeKeysArray = toKeyArray(resolvedActiveKey);\n\n const handleChange = (nextKey: CollapseChangeKey) => {\n if (!isControlled) {\n setInternalActiveKey(nextKey as ActiveKey);\n }\n onChange?.(nextKey);\n };\n\n const handleExpandAll = () => {\n if (allKeys.length === 0) return;\n handleChange(allKeys as CollapseChangeKey);\n };\n\n const handleCollapseAll = () => {\n handleChange([] as CollapseChangeKey);\n };\n\n const resolvedBordered = isCanonical ? (bordered ?? false) : bordered;\n const mergedClassName = [isCanonical ? DS_COLLAPSE_CLASS : undefined, className].filter(Boolean).join(' ');\n\n const resolvedExpandIcon = isCanonical\n ? ({ isActive }: ExpandIconPanelProps) => (\n <span className={`${DS_COLLAPSE_CLASS}-chevron`}>\n <Icon\n name={isActive ? 'arrowDown1' : 'arrowRight1'}\n size={panelIconSize}\n style={{\n width: `${panelIconSize}px`,\n height: `${panelIconSize}px`,\n minWidth: `${panelIconSize}px`,\n minHeight: `${panelIconSize}px`,\n display: 'block',\n }}\n />\n </span>\n )\n : undefined;\n\n const resolvedStyle = isCanonical\n ? {\n ...props.style,\n ['--ds-collapse-panel-icon-size' as string]: `${panelIconSize}px`,\n ['--ds-collapse-panel-bg' as string]: panelBackground,\n ['--ds-collapse-content-bg' as string]: tableTokens.surface.container,\n ['--ds-collapse-header-bg' as string]: headerBackground,\n ['--ds-collapse-row-gap' as string]: `${rowGap}px`,\n }\n : props.style;\n\n return (\n <div>\n {isCanonical && dsShowBulkActions && (\n <div className={`${DS_COLLAPSE_CLASS}-controls`} data-ds-size={dsSize}>\n <button\n type=\"button\"\n className={`${DS_COLLAPSE_CLASS}-control-button`}\n onClick={handleExpandAll}\n disabled={allKeys.length > 0 && activeKeysArray.length === allKeys.length}\n >\n <span className={`${DS_COLLAPSE_CLASS}-control-icon`} aria-hidden=\"true\">\n <Icon name=\"addCircle1\" size={16} />\n </span>\n {dsExpandAllLabel}\n </button>\n\n <button\n type=\"button\"\n className={`${DS_COLLAPSE_CLASS}-control-button`}\n onClick={handleCollapseAll}\n disabled={activeKeysArray.length === 0}\n >\n <span className={`${DS_COLLAPSE_CLASS}-control-icon`} aria-hidden=\"true\">\n <Icon name=\"subtractCircle1\" size={16} />\n </span>\n {dsCollapseAllLabel}\n </button>\n </div>\n )}\n\n <AntCollapse\n {...props}\n items={items}\n bordered={resolvedBordered}\n expandIcon={resolvedExpandIcon}\n activeKey={resolvedActiveKey}\n onChange={handleChange}\n className={mergedClassName}\n style={resolvedStyle}\n data-ds-size={isCanonical ? dsSize : undefined}\n data-ds-panel-background={isCanonical ? dsPanelBackground : undefined}\n data-ds-row-gap={isCanonical && rowGap > 0 ? 'true' : undefined}\n data-ds-open-panel-edge-contrast={isCanonical && dsOpenPanelEdgeContrast ? 'true' : undefined}\n />\n </div>\n );\n};\n\nCollapse.displayName = 'Collapse';\n","import type { SegmentedProps as AntSegmentedProps } from 'antd';\nimport { useEffect, useMemo, useState } from 'react';\nimport type { CSSProperties, ReactNode } from 'react';\nimport { dsSemanticTokens } from '../../theme/ontadaTheme';\n\nexport type DSSegmentedSize = 'sm' | 'md' | 'lg';\n\nexport type SegmentedProps = AntSegmentedProps & {\n /** DS size mapped from Figma segmented variants. */\n dsSize?: DSSegmentedSize;\n /** Show or remove borders around the control and selected state. */\n dsBordered?: boolean;\n};\n\nconst STYLE_ID = 'ds-segmented-styles';\n\nconst DS_TO_ANT_SIZE: Record<DSSegmentedSize, 'small' | 'middle' | 'large'> = {\n sm: 'small',\n md: 'middle',\n lg: 'large',\n};\n\ntype SegmentValue = string | number;\n\ntype DSOption = {\n label?: ReactNode;\n value: SegmentValue;\n icon?: ReactNode;\n disabled?: boolean;\n title?: string;\n};\n\nfunction mapAntSizeToDS(size: AntSegmentedProps['size']): DSSegmentedSize {\n if (size === 'small') return 'sm';\n if (size === 'large') return 'lg';\n return 'md';\n}\n\nfunction normalizeOptions(options: AntSegmentedProps['options']): DSOption[] {\n if (!options || options.length === 0) return [];\n\n return options.map((option) => {\n if (typeof option === 'string' || typeof option === 'number') {\n return {\n value: option,\n label: option,\n };\n }\n\n return {\n value: option.value as SegmentValue,\n label: option.label ?? option.value,\n icon: (option as { icon?: ReactNode }).icon,\n disabled: option.disabled,\n title: option.title,\n };\n });\n}\n\nfunction injectStyles() {\n if (typeof document === 'undefined') return;\n if (document.getElementById(STYLE_ID)) return;\n\n const { segmented } = dsSemanticTokens;\n\n const style = document.createElement('style');\n style.id = STYLE_ID;\n style.textContent = `\n [data-ds-segmented] {\n box-sizing: border-box;\n height: var(--ds-segmented-control-height);\n width: var(--ds-segmented-width, auto);\n font-family: var(--ant-font-family, 'Nunito', sans-serif);\n background: ${segmented.container.background};\n border: ${segmented.container.borderWidth} solid ${segmented.container.border};\n border-radius: ${segmented.container.radius};\n padding: ${segmented.container.padding};\n box-shadow: none;\n display: inline-flex;\n }\n\n [data-ds-segmented][data-ds-block='true'] {\n width: 100%;\n display: flex;\n }\n\n [data-ds-segmented][data-ds-bordered='false'] {\n border: none;\n }\n\n [data-ds-segmented] .ds-segmented-group {\n gap: 0;\n height: var(--ds-segmented-item-height);\n display: flex;\n align-items: stretch;\n width: 100%;\n }\n\n [data-ds-segmented] .ds-segmented-item {\n box-sizing: border-box;\n display: flex;\n align-items: stretch;\n flex: 1 1 0;\n height: var(--ds-segmented-item-height);\n min-height: 0;\n margin: 0;\n border: 1px solid transparent;\n border-radius: ${segmented.item.unselectedRadius};\n line-height: normal;\n transition: none;\n background: transparent;\n color: ${segmented.text.inactive};\n font-family: inherit;\n font-size: inherit;\n cursor: pointer;\n padding: 0;\n outline: none;\n appearance: none;\n }\n\n [data-ds-segmented] .ds-segmented-item[aria-checked='true'] {\n background: ${segmented.item.selectedBackground};\n border-color: ${segmented.item.selectedBorder};\n border-radius: ${segmented.item.selectedRadius};\n color: ${segmented.text.active};\n }\n\n [data-ds-segmented][data-ds-bordered='false'] .ds-segmented-item[aria-checked='true'] {\n border: none;\n }\n\n [data-ds-segmented] .ds-segmented-item[aria-disabled='true'] {\n opacity: 0.55;\n cursor: not-allowed;\n }\n\n [data-ds-segmented] .ds-segmented-item-label {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: var(--ds-segmented-item-gap);\n min-height: 0 !important;\n height: 100% !important;\n width: 100%;\n padding: 0 var(--ds-segmented-item-padding-x);\n color: inherit;\n font-size: var(--ds-segmented-font-size);\n line-height: var(--ds-segmented-line-height) !important;\n font-weight: ${segmented.typography.fontWeight};\n letter-spacing: var(--ds-segmented-letter-spacing);\n text-align: center;\n box-sizing: border-box;\n white-space: nowrap;\n }\n\n [data-ds-segmented] .ds-segmented-item-icon {\n width: var(--ds-segmented-icon-size);\n height: var(--ds-segmented-icon-size);\n display: inline-flex;\n align-items: center;\n justify-content: center;\n color: inherit;\n font-size: var(--ds-segmented-icon-size);\n line-height: 1;\n flex: 0 0 auto;\n }\n\n [data-ds-segmented] .ds-segmented-item-icon svg {\n width: var(--ds-segmented-icon-size);\n height: var(--ds-segmented-icon-size);\n display: block;\n }\n\n [data-ds-segmented] .ds-segmented-item,\n [data-ds-segmented] .ds-segmented-item-label,\n [data-ds-segmented] .ds-segmented-item-icon {\n transition: none !important;\n animation: none !important;\n }\n\n `;\n\n document.head.appendChild(style);\n}\n\nexport const Segmented = ({ dsSize = 'md', dsBordered = true, size, style, ...props }: SegmentedProps) => {\n useEffect(() => {\n injectStyles();\n }, []);\n\n const {\n options,\n value,\n defaultValue,\n onChange,\n disabled,\n block,\n className,\n name,\n id,\n ...restProps\n } = props;\n\n const resolvedSize = dsSize ?? mapAntSizeToDS(size);\n const normalizedOptions = useMemo(() => normalizeOptions(options), [options]);\n\n const firstOption = normalizedOptions[0];\n const [uncontrolledValue, setUncontrolledValue] = useState<SegmentValue | undefined>(\n (defaultValue as SegmentValue | undefined) ?? firstOption?.value,\n );\n\n const selectedValue = (value as SegmentValue | undefined) ?? uncontrolledValue;\n\n const tokens = dsSemanticTokens.segmented.size[resolvedSize];\n\n const handleSelect = (option: DSOption) => {\n if (disabled || option.disabled) return;\n\n if (value === undefined) {\n setUncontrolledValue(option.value);\n }\n\n onChange?.(option.value);\n };\n\n const rootStyle: CSSProperties = {\n ...style,\n ['--ds-segmented-item-height' as string]: tokens.itemHeight,\n ['--ds-segmented-control-height' as string]: tokens.controlHeight,\n ['--ds-segmented-item-gap' as string]: tokens.gap,\n ['--ds-segmented-item-padding-x' as string]: tokens.paddingX,\n ['--ds-segmented-font-size' as string]: tokens.fontSize,\n ['--ds-segmented-line-height' as string]: tokens.lineHeight,\n ['--ds-segmented-letter-spacing' as string]: tokens.letterSpacing,\n ['--ds-segmented-icon-size' as string]: tokens.iconSize,\n };\n\n if (block) {\n rootStyle['--ds-segmented-width' as string] = '100%';\n }\n\n return (\n <div\n {...restProps}\n id={id}\n className={className}\n role=\"radiogroup\"\n aria-disabled={disabled ? 'true' : 'false'}\n data-ds-block={block ? 'true' : 'false'}\n style={rootStyle}\n data-ds-segmented\n data-ds-bordered={dsBordered ? 'true' : 'false'}\n data-ds-size={resolvedSize}\n data-ds-ant-size={size ?? DS_TO_ANT_SIZE[resolvedSize]}\n >\n <div className=\"ds-segmented-group\">\n {normalizedOptions.map((option, index) => {\n const checked = option.value === selectedValue;\n const optionDisabled = disabled || option.disabled;\n\n return (\n <button\n key={`${String(option.value)}-${index}`}\n type=\"button\"\n className=\"ds-segmented-item\"\n role=\"radio\"\n aria-checked={checked ? 'true' : 'false'}\n aria-disabled={optionDisabled ? 'true' : 'false'}\n tabIndex={checked ? 0 : -1}\n onClick={() => handleSelect(option)}\n title={option.title}\n name={name}\n disabled={!!optionDisabled}\n >\n <span className=\"ds-segmented-item-label\">\n {option.icon ? <span className=\"ds-segmented-item-icon\">{option.icon}</span> : null}\n <span>{option.label ?? option.value}</span>\n </span>\n </button>\n );\n })}\n </div>\n </div>\n );\n};\n","import { Modal as AntModal } from 'antd';\nimport type { ModalProps as AntModalProps } from 'antd';\nimport { Space } from 'antd';\nimport { useEffect } from 'react';\nimport type { ReactNode } from 'react';\nimport { Button as DSButton } from '../forms';\nimport { dsSemanticTokens } from '../../theme/ontadaTheme';\n\nexport type DSModalColumns = '04' | '05' | '06' | '07' | '08' | '09' | '10' | '11';\nexport type DSModalFooter = 'default' | 'none';\nexport type DSModalSize = 'xs' | 'sm' | 'md' | 'lg' | 'full-screen';\nexport type DSModalDevice = 'desktop' | 'mobile';\nexport type DSModalActions = 'primary' | 'primary-secondary' | 'primary-secondary-tertiary';\nexport type DSModalHeader = 'default' | 'none';\n\nexport type ModalProps = AntModalProps & {\n /** Legacy width variant mapped from earlier Figma column sizes. */\n dsColumns?: DSModalColumns;\n /** Canonical DS footer visibility mode. */\n dsFooter?: DSModalFooter;\n /** New DS modal size variants from Figma. */\n dsSize?: DSModalSize;\n /** New DS responsive mode from Figma variants. */\n dsDevice?: DSModalDevice;\n /** Footer action configuration from Figma variants. */\n dsActions?: DSModalActions;\n /** Header visibility variant from Figma. */\n dsHeader?: DSModalHeader;\n /** Show required indicator in the title row. */\n dsRequired?: boolean;\n /** Optional leading icon for compact content variants. */\n dsLeadingIcon?: ReactNode;\n /** Explicit DS control over close icon visibility. */\n dsShowClose?: boolean;\n};\n\nconst WIDTH_BY_COLUMN: Record<DSModalColumns, number> = {\n '04': 608,\n '05': 764,\n '06': 920,\n '07': 1076,\n '08': 1232,\n '09': 1388,\n '10': 1544,\n '11': 1700,\n};\n\nconst WIDTH_BY_SIZE: Record<DSModalDevice, Record<DSModalSize, number | string>> = {\n desktop: {\n xs: dsSemanticTokens.modal.width.desktop.xs,\n sm: dsSemanticTokens.modal.width.desktop.sm,\n md: dsSemanticTokens.modal.width.desktop.md,\n lg: dsSemanticTokens.modal.width.desktop.lg,\n 'full-screen': dsSemanticTokens.modal.width.desktop.fullScreen,\n },\n mobile: {\n xs: dsSemanticTokens.modal.width.mobile.xs,\n sm: dsSemanticTokens.modal.width.mobile.sm,\n md: dsSemanticTokens.modal.width.mobile.md,\n lg: dsSemanticTokens.modal.width.mobile.lg,\n 'full-screen': dsSemanticTokens.modal.width.mobile.fullScreen,\n },\n};\n\nconst STYLE_ID = 'ds-modal-styles';\n\nfunction injectStyles() {\n if (typeof document === 'undefined') return;\n const { modal } = dsSemanticTokens;\n let style = document.getElementById(STYLE_ID) as HTMLStyleElement | null;\n if (!style) {\n style = document.createElement('style');\n style.id = STYLE_ID;\n document.head.appendChild(style);\n }\n\n style.textContent = `\n .ds-modal.ant-modal {\n top: 32px;\n padding-bottom: 32px;\n }\n\n .ant-modal-centered .ds-modal.ant-modal {\n top: 0;\n padding-bottom: 0;\n }\n\n .ds-modal.ant-modal .ant-modal-container {\n border: ${modal.border.width} solid ${modal.border.color};\n border-radius: ${modal.border.radius};\n box-shadow: ${modal.shadow};\n padding: 0;\n overflow: hidden;\n background: ${modal.surface.background};\n display: flex;\n flex-direction: column;\n max-height: calc(100dvh - 64px);\n }\n\n .ds-modal.ant-modal .ant-modal-header {\n position: relative;\n min-height: 56px;\n flex: 0 0 auto;\n background: ${modal.surface.header};\n border-radius: ${modal.border.radius} ${modal.border.radius} 0 0;\n padding: ${modal.spacing.header.y} ${modal.spacing.header.x};\n margin: 0;\n border-bottom: ${modal.border.width} solid ${modal.border.color};\n }\n\n .ds-modal.ant-modal .ant-modal-title {\n color: ${modal.text.title};\n font-size: 22px;\n line-height: 26px;\n font-weight: 700;\n }\n\n .ds-modal.ant-modal .ant-modal-close {\n top: 15px;\n width: ${modal.closeButton.size};\n height: ${modal.closeButton.size};\n padding: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n inset-inline-end: 24px;\n color: ${modal.closeButton.color};\n border-radius: ${modal.closeButton.radius};\n background: transparent !important;\n border: none !important;\n box-shadow: none !important;\n }\n\n .ds-modal.ant-modal .ant-modal-close-x {\n width: ${modal.closeButton.iconSize};\n height: ${modal.closeButton.iconSize};\n display: flex;\n align-items: center;\n justify-content: center;\n line-height: 1;\n }\n\n .ds-modal.ant-modal .ant-modal-close:hover {\n color: ${modal.closeButton.color};\n background: transparent !important;\n border: none !important;\n box-shadow: none !important;\n }\n\n .ds-modal.ant-modal .ant-modal-close:focus-visible {\n outline: none !important;\n background: transparent !important;\n border: none !important;\n box-shadow: none !important;\n }\n\n .ds-modal.ant-modal .ant-modal-body {\n flex: 1 1 auto;\n min-height: 0;\n overflow-y: auto;\n overscroll-behavior: contain;\n scrollbar-gutter: stable;\n padding: 24px ${modal.spacing.header.x};\n color: ${modal.text.body};\n font-size: 16px;\n line-height: 20px;\n letter-spacing: -0.016px;\n }\n\n .ds-modal.ant-modal .ant-modal-footer {\n min-height: 64px;\n flex: 0 0 auto;\n margin: 0;\n padding: ${modal.spacing.footer.desktop};\n border-top: ${modal.border.width} solid ${modal.border.color};\n display: flex;\n align-items: center;\n justify-content: flex-end;\n }\n\n .ds-modal.ant-modal.ds-modal-mobile {\n top: 16px;\n padding-bottom: 16px;\n }\n\n .ds-modal.ant-modal.ds-modal-mobile .ant-modal-container {\n max-height: calc(100dvh - 32px);\n }\n\n .ds-modal.ant-modal.ds-modal-mobile .ant-modal-header {\n padding: ${modal.spacing.header.y} ${modal.spacing.header.x};\n min-height: 58px;\n }\n\n .ds-modal.ant-modal.ds-modal-mobile .ant-modal-close {\n top: 15px;\n inset-inline-end: 24px;\n width: ${modal.closeButton.size};\n height: ${modal.closeButton.size};\n }\n\n .ds-modal.ant-modal.ds-modal-mobile .ant-modal-close-x {\n width: ${modal.closeButton.iconSize};\n height: ${modal.closeButton.iconSize};\n }\n\n .ds-modal.ant-modal.ds-modal-mobile .ant-modal-body {\n padding: 16px ${modal.spacing.header.x};\n }\n\n .ds-modal.ant-modal.ds-modal-mobile .ant-modal-footer {\n padding: ${modal.spacing.footer.mobile};\n justify-content: stretch;\n }\n\n .ds-modal.ant-modal.ds-modal-size-full-screen {\n margin: 0;\n max-width: 100vw;\n top: 0;\n padding-bottom: 0;\n }\n\n .ds-modal.ant-modal.ds-modal-size-full-screen .ant-modal-container {\n border-radius: ${modal.border.fullScreenRadius};\n height: 100dvh;\n min-height: 100dvh;\n max-height: 100dvh;\n box-shadow: none;\n }\n\n .ds-modal.ant-modal.ds-modal-size-full-screen .ant-modal-header {\n background: ${modal.surface.headerFullScreen};\n border-radius: ${modal.border.fullScreenRadius} ${modal.border.fullScreenRadius} 0 0;\n border-bottom: ${modal.border.width} solid ${modal.border.color};\n }\n\n .ds-modal.ant-modal.ds-modal-size-full-screen .ant-modal-body {\n flex: 1 1 auto;\n min-height: 0;\n }\n\n .ds-modal.ant-modal.ds-modal-footer-none .ant-modal-footer {\n display: none;\n }\n `;\n}\n\nexport const Modal = ({\n dsColumns,\n dsFooter = 'default',\n dsSize = 'xs',\n dsDevice = 'desktop',\n dsActions = 'primary-secondary',\n dsHeader = 'default',\n dsRequired = false,\n dsLeadingIcon,\n dsShowClose,\n className = '',\n footer,\n closable,\n title,\n children,\n width,\n style,\n okText = 'Apply',\n cancelText = 'Cancel',\n onCancel,\n onOk,\n styles,\n ...props\n}: ModalProps) => {\n useEffect(() => {\n injectStyles();\n }, []);\n\n const resolvedWidth = width ?? (dsColumns ? WIDTH_BY_COLUMN[dsColumns] : WIDTH_BY_SIZE[dsDevice][dsSize]);\n\n const showClose = dsShowClose ?? closable ?? true;\n const hasHeader = dsHeader !== 'none';\n\n const resolvedTitle = !hasHeader\n ? null\n : dsRequired\n ? (\n <span style={{ display: 'inline-flex', alignItems: 'center', gap: 8 }}>\n <span>{title ?? 'Title'}</span>\n <span style={{ color: dsSemanticTokens.modal.text.required, fontSize: 12, fontWeight: 400 }}>* Required</span>\n </span>\n )\n : (title ?? 'Title');\n\n const footerGap = dsDevice === 'mobile' ? 12 : 16;\n\n const resolvedFooter =\n footer !== undefined\n ? footer\n : dsFooter === 'none'\n ? null\n : (\n <Space direction={dsDevice === 'mobile' ? 'vertical' : 'horizontal'} size={footerGap} style={{ width: dsDevice === 'mobile' ? '100%' : undefined }}>\n {dsActions === 'primary-secondary-tertiary' && (\n <DSButton dsVariant=\"tertiary\" style={dsDevice === 'mobile' ? { width: '100%' } : undefined} onClick={(e) => onCancel?.(e)}>\n LABEL\n </DSButton>\n )}\n {dsActions !== 'primary' && (\n <DSButton dsVariant=\"secondary\" style={dsDevice === 'mobile' ? { width: '100%' } : undefined} onClick={(e) => onCancel?.(e)}>\n {String(cancelText).toUpperCase()}\n </DSButton>\n )}\n <DSButton dsVariant=\"primary\" style={dsDevice === 'mobile' ? { width: '100%' } : undefined} onClick={(e) => onOk?.(e)}>\n {String(okText).toUpperCase()}\n </DSButton>\n </Space>\n );\n\n const bodyWithOptionalIcon = dsLeadingIcon ? (\n <div style={{ display: 'flex', alignItems: 'flex-start', gap: 16 }}>\n <div style={{ paddingTop: 4 }}>{dsLeadingIcon}</div>\n <div style={{ flex: 1, minWidth: 0 }}>{children}</div>\n </div>\n ) : children;\n\n return (\n <AntModal\n {...props}\n width={resolvedWidth}\n title={resolvedTitle}\n closable={showClose}\n footer={resolvedFooter}\n onCancel={onCancel}\n onOk={onOk}\n className={`ds-modal ds-modal-footer-${dsFooter} ds-modal-size-${dsSize} ${dsDevice === 'mobile' ? 'ds-modal-mobile' : 'ds-modal-desktop'} ${className}`.trim()}\n style={{\n ...style,\n maxWidth: dsSize === 'full-screen' ? '100vw' : 'calc(100vw - 32px)',\n }}\n styles={{\n ...styles,\n mask: {\n backgroundColor: dsSemanticTokens.modal.backdrop,\n ...styles?.mask,\n },\n }}\n data-ds-modal\n data-ds-columns={dsColumns ?? ''}\n data-ds-footer={dsFooter}\n data-ds-size={dsSize}\n data-ds-device={dsDevice}\n data-ds-actions={dsActions}\n data-ds-header={dsHeader}\n >\n {bodyWithOptionalIcon}\n </AntModal>\n );\n};\n","import type { CSSProperties, ReactNode } from 'react';\nimport { CORE_COLORS } from '../../tokens/core';\nimport { useCustomIcon } from '../../utils/icons';\n\nexport type DSFeedbackStatus = 'success' | 'info' | 'warning' | 'error';\n\nconst statusIconNameByStatus: Record<DSFeedbackStatus, string> = {\n success: 'check1',\n info: 'informationCircle',\n warning: 'alertTriangle',\n error: 'removeCircleBold',\n};\n\nconst statusIconColorByStatus: Record<DSFeedbackStatus, string> = {\n success: CORE_COLORS.status.successDeep,\n info: CORE_COLORS.text.muted,\n warning: CORE_COLORS.status.warningDark,\n error: CORE_COLORS.status.errorDark,\n};\n\nfunction mergeClassNames(...names: Array<string | undefined>) {\n return names.filter(Boolean).join(' ');\n}\n\nexport function getDSFeedbackStatusIcon(\n status: DSFeedbackStatus,\n options?: {\n size?: number;\n className?: string;\n style?: CSSProperties;\n }\n): ReactNode {\n return useCustomIcon(statusIconNameByStatus[status], {\n ...options,\n className: mergeClassNames('anticon', 'ds-feedback-status-icon', options?.className),\n style: {\n color: statusIconColorByStatus[status],\n display: 'inline-flex',\n alignItems: 'center',\n marginInlineEnd: 8,\n ...options?.style,\n },\n });\n}\n\nexport function getDSPopconfirmIcon(\n options?: {\n size?: number;\n className?: string;\n style?: CSSProperties;\n }\n): ReactNode {\n return getDSFeedbackStatusIcon('warning', options);\n}\n","import { message } from 'antd';\nimport type { MessageArgsProps } from 'antd';\nimport type { ReactNode } from 'react';\nimport { getDSFeedbackStatusIcon, type DSFeedbackStatus } from './feedbackIcons';\n\ntype MessageConfig = MessageArgsProps;\ntype MessageType = MessageArgsProps['type'];\ntype MessageApi = ReturnType<typeof message.useMessage>[0];\n\nconst DS_MESSAGE_ICON_SIZE = 18;\n\nfunction withDS(config: MessageConfig): MessageConfig {\n if (!config.type || config.icon !== undefined || !isFeedbackStatus(config.type)) {\n return config;\n }\n\n return {\n ...config,\n icon: getDSFeedbackStatusIcon(config.type, { size: DS_MESSAGE_ICON_SIZE }),\n };\n}\n\nfunction isFeedbackStatus(type: MessageType): type is DSFeedbackStatus {\n return type === 'success' || type === 'info' || type === 'warning' || type === 'error';\n}\n\nfunction toConfig(content: ReactNode | MessageConfig, type?: MessageType): MessageConfig {\n if (typeof content === 'object' && content !== null && !Array.isArray(content) && 'content' in content) {\n return type && (content as MessageConfig).type === undefined\n ? { ...(content as MessageConfig), type }\n : (content as MessageConfig);\n }\n\n return { content, type };\n}\n\nexport function useMessage() {\n const [api, contextHolder] = message.useMessage();\n\n const dsApi = {\n ...api,\n open: (config: MessageConfig) => api.open(withDS(config)),\n success: (content: ReactNode | MessageConfig) => api.open(withDS(toConfig(content, 'success'))),\n info: (content: ReactNode | MessageConfig) => api.open(withDS(toConfig(content, 'info'))),\n warning: (content: ReactNode | MessageConfig) => api.open(withDS(toConfig(content, 'warning'))),\n error: (content: ReactNode | MessageConfig) => api.open(withDS(toConfig(content, 'error'))),\n loading: (content: ReactNode | MessageConfig) => api.open(toConfig(content, 'loading')),\n } as MessageApi;\n\n return [dsApi, contextHolder] as const;\n}\n\nexport const messageDS = {\n open: (config: MessageConfig) => message.open(withDS(config)),\n success: (content: ReactNode | MessageConfig) => message.open(withDS(toConfig(content, 'success'))),\n info: (content: ReactNode | MessageConfig) => message.open(withDS(toConfig(content, 'info'))),\n warning: (content: ReactNode | MessageConfig) => message.open(withDS(toConfig(content, 'warning'))),\n error: (content: ReactNode | MessageConfig) => message.open(withDS(toConfig(content, 'error'))),\n loading: (content: ReactNode | MessageConfig) => message.open(toConfig(content, 'loading')),\n destroy: (key?: React.Key) => message.destroy(key),\n};\n","import { notification } from 'antd';\nimport type { NotificationArgsProps } from 'antd';\nimport type { ReactNode } from 'react';\nimport { useEffect } from 'react';\nimport { getDSFeedbackStatusIcon, type DSFeedbackStatus } from './feedbackIcons';\n\nconst STYLE_ID = 'ds-notification-styles';\nconst DS_NOTIFICATION_ICON_SIZE = 20;\n\nfunction injectStyles() {\n if (typeof document === 'undefined') return;\n\n let style = document.getElementById(STYLE_ID) as HTMLStyleElement | null;\n if (!style) {\n style = document.createElement('style');\n style.id = STYLE_ID;\n document.head.appendChild(style);\n }\n\n style.textContent = `\n .ds-notification.ant-notification-notice,\n .ds-notification .ant-notification-notice-wrapper,\n .ds-notification .ant-notification-notice-message,\n .ds-notification .ant-notification-notice-description,\n .ds-notification .ant-notification-notice-actions,\n .ds-notification .ds-notification-title,\n .ds-notification .ds-notification-description {\n font-family: 'Nunito', sans-serif !important;\n }\n\n .ds-notification .ant-notification-notice-message {\n font-weight: 700;\n }\n\n .ds-notification .ant-notification-notice-description {\n font-weight: 600;\n }\n `;\n}\n\nfunction mergeClassNames(...names: Array<string | undefined>) {\n return names.filter(Boolean).join(' ');\n}\n\nfunction wrapNode(node: ReactNode, className: string) {\n if (node === undefined || node === null) return node;\n return <span className={className}>{node}</span>;\n}\n\nfunction isFeedbackStatus(type: NotificationArgsProps['type']): type is DSFeedbackStatus {\n return type === 'success' || type === 'info' || type === 'warning' || type === 'error';\n}\n\nfunction withDS(config: NotificationArgsProps, fallbackType?: DSFeedbackStatus): NotificationArgsProps {\n injectStyles();\n const resolvedType = config.type ?? fallbackType;\n\n return {\n ...config,\n className: mergeClassNames('ds-notification', config.className),\n icon:\n config.icon ?? (isFeedbackStatus(resolvedType) ? getDSFeedbackStatusIcon(resolvedType, { size: DS_NOTIFICATION_ICON_SIZE }) : undefined),\n message: wrapNode(config.message, 'ds-notification-title'),\n title: wrapNode(config.title, 'ds-notification-title'),\n description: wrapNode(config.description, 'ds-notification-description'),\n };\n}\n\ntype NotificationApi = ReturnType<typeof notification.useNotification>[0];\n\nexport function useNotification() {\n const [api, contextHolder] = notification.useNotification();\n\n useEffect(() => {\n injectStyles();\n }, []);\n\n const dsApi: NotificationApi = {\n open: (config) => api.open(withDS(config)),\n success: (config) => api.success(withDS(config, 'success')),\n info: (config) => api.info(withDS(config, 'info')),\n warning: (config) => api.warning(withDS(config, 'warning')),\n error: (config) => api.error(withDS(config, 'error')),\n destroy: (key) => api.destroy(key),\n };\n\n return [dsApi, contextHolder] as const;\n}\n\nexport const notificationDS = {\n open: (config: NotificationArgsProps) => notification.open(withDS(config)),\n success: (config: NotificationArgsProps) => notification.success(withDS(config, 'success')),\n info: (config: NotificationArgsProps) => notification.info(withDS(config, 'info')),\n warning: (config: NotificationArgsProps) => notification.warning(withDS(config, 'warning')),\n error: (config: NotificationArgsProps) => notification.error(withDS(config, 'error')),\n destroy: (key?: React.Key) => notification.destroy(key),\n};\n","import { Popconfirm as AntPopconfirm } from 'antd';\nimport type { PopconfirmProps } from 'antd';\nimport { getDSPopconfirmIcon } from './feedbackIcons';\n\nconst DS_POPCONFIRM_ICON_SIZE = 16;\n\nexport type DSPopconfirmProps = PopconfirmProps;\n\nexport function Popconfirm({ icon, ...props }: DSPopconfirmProps) {\n return (\n <AntPopconfirm\n {...props}\n icon={icon ?? getDSPopconfirmIcon({ size: DS_POPCONFIRM_ICON_SIZE })}\n />\n );\n}\n","import { Spin as AntSpin } from 'antd';\nimport type { SpinProps } from 'antd';\nimport type { CSSProperties } from 'react';\nimport { useEffect } from 'react';\nimport { dsSemanticTokens } from '../../theme/ontadaTheme';\nimport { CORE_COLORS } from '../../tokens/core';\n\nconst STYLE_ID = 'ds-spin-styles';\nconst DS_SPIN_CLASS = 'ds-spin';\nconst DS_SPIN_INDICATOR_CLASS = 'ds-spin-circular-loader';\n\ntype DSSpinSize = NonNullable<SpinProps['size']>;\n\nexport type DSSpinProps = SpinProps & {\n dsLoaderSize?: string | number;\n};\n\nconst loaderSizeBySpinSize: Record<DSSpinSize, string> = {\n small: '24px',\n default: '40px',\n middle: '40px',\n medium: '40px',\n large: '75px',\n};\n\nfunction injectStyles() {\n if (typeof document === 'undefined') return;\n\n let style = document.getElementById(STYLE_ID) as HTMLStyleElement | null;\n if (!style) {\n style = document.createElement('style');\n style.id = STYLE_ID;\n document.head.appendChild(style);\n }\n\n const { button, input } = dsSemanticTokens;\n style.textContent = `\n @keyframes ds-spin-circular-loader-rotate {\n to { transform: rotate(360deg); }\n }\n\n .${DS_SPIN_CLASS}.ant-spin,\n .${DS_SPIN_CLASS}.ant-spin-nested-loading,\n .${DS_SPIN_CLASS}.ant-spin .ant-spin-text {\n font-family: 'Nunito', sans-serif !important;\n }\n\n .${DS_SPIN_CLASS}.ant-spin .ant-spin-dot {\n width: var(--ds-spin-loader-size, ${loaderSizeBySpinSize.default}) !important;\n height: var(--ds-spin-loader-size, ${loaderSizeBySpinSize.default}) !important;\n display: inline-flex !important;\n align-items: center;\n justify-content: center;\n margin: 0 !important;\n transform: none !important;\n }\n\n .${DS_SPIN_CLASS}.ant-spin .ant-spin-dot-holder {\n color: ${button.primary.default} !important;\n }\n\n .${DS_SPIN_INDICATOR_CLASS} {\n width: var(--ds-spin-loader-size, ${loaderSizeBySpinSize.default});\n height: var(--ds-spin-loader-size, ${loaderSizeBySpinSize.default});\n display: inline-block;\n border-radius: 50%;\n background: conic-gradient(${button.primary.default} 0deg 92deg, ${input.background.disabled} 92deg 360deg);\n animation: ds-spin-circular-loader-rotate 1s linear infinite;\n position: relative;\n }\n\n .${DS_SPIN_INDICATOR_CLASS}::after {\n content: '';\n position: absolute;\n inset: 18%;\n border-radius: 50%;\n background: ${input.background.default};\n }\n\n .${DS_SPIN_CLASS}.ant-spin .ant-spin-text,\n .${DS_SPIN_CLASS}.ant-spin-nested-loading .ant-spin-text {\n color: ${input.text.focus} !important;\n font-size: 14px;\n line-height: 18px;\n font-weight: 600;\n margin-top: 8px;\n }\n\n .${DS_SPIN_CLASS}.ant-spin-sm .${DS_SPIN_INDICATOR_CLASS} {\n --ds-spin-loader-size: ${loaderSizeBySpinSize.small};\n }\n\n .${DS_SPIN_CLASS}.ant-spin-lg .${DS_SPIN_INDICATOR_CLASS} {\n --ds-spin-loader-size: ${loaderSizeBySpinSize.large};\n }\n\n .${DS_SPIN_CLASS}.ant-spin-fullscreen {\n background: color-mix(in srgb, ${CORE_COLORS.surface.subtle} 72%, transparent) !important;\n }\n `;\n}\n\nfunction mergeClassNames(...names: Array<string | undefined>) {\n return names.filter(Boolean).join(' ');\n}\n\nfunction formatLoaderSize(size: string | number | undefined, spinSize: SpinProps['size']) {\n if (size === undefined) {\n return loaderSizeBySpinSize[spinSize ?? 'default'];\n }\n\n return typeof size === 'number' ? `${size}px` : size;\n}\n\nfunction CircularLoader() {\n return <span className={DS_SPIN_INDICATOR_CLASS} aria-hidden=\"true\" />;\n}\n\nexport function Spin({ className, indicator, size = 'default', style, dsLoaderSize, ...props }: DSSpinProps) {\n useEffect(() => {\n injectStyles();\n }, []);\n\n const mergedStyle: CSSProperties = {\n ...style,\n ['--ds-spin-loader-size' as string]: formatLoaderSize(dsLoaderSize, size),\n };\n\n return (\n <AntSpin\n {...props}\n size={size}\n className={mergeClassNames(DS_SPIN_CLASS, className)}\n indicator={indicator ?? <CircularLoader />}\n style={mergedStyle}\n />\n );\n}\n","import { ConfigProvider, FloatButton as AntFloatButton } from 'antd';\nimport type { ComponentProps } from 'react';\n\nexport type FloatButtonProps = ComponentProps<typeof AntFloatButton>;\nexport type FloatButtonGroupProps = ComponentProps<typeof AntFloatButton.Group>;\nexport type FloatButtonBackTopProps = ComponentProps<typeof AntFloatButton.BackTop>;\n\ntype DSFloatButtonComponent = ((props: FloatButtonProps) => JSX.Element) & {\n Group: (props: FloatButtonGroupProps) => JSX.Element;\n BackTop: (props: FloatButtonBackTopProps) => JSX.Element;\n};\n\nconst FloatButtonBase = (props: FloatButtonProps) => (\n <ConfigProvider wave={{ disabled: true }}>\n <AntFloatButton {...props} />\n </ConfigProvider>\n);\n\nconst FloatButtonGroup = (props: FloatButtonGroupProps) => (\n <ConfigProvider wave={{ disabled: true }}>\n <AntFloatButton.Group {...props} />\n </ConfigProvider>\n);\n\nconst FloatButtonBackTop = (props: FloatButtonBackTopProps) => (\n <ConfigProvider wave={{ disabled: true }}>\n <AntFloatButton.BackTop {...props} />\n </ConfigProvider>\n);\n\nexport const FloatButton = Object.assign(FloatButtonBase, {\n Group: FloatButtonGroup,\n BackTop: FloatButtonBackTop,\n}) as DSFloatButtonComponent;\n","import { Drawer as AntDrawer } from 'antd';\nimport type { DrawerProps as AntDrawerProps } from 'antd';\nimport type { MouseEventHandler, ReactNode } from 'react';\nimport { useEffect } from 'react';\nimport { dsSemanticTokens } from '../../theme/ontadaTheme';\nimport { Button } from '../forms';\nimport type { ButtonProps } from '../forms';\n\nexport type DSDrawerVariant = 'details' | 'edit' | 'filter' | 'confirmation' | 'workflowPanel';\nexport type DSDrawerSize = 'narrow' | 'standard' | 'wide' | 'full';\nexport type DSDrawerFooter = 'auto' | 'actions' | 'none';\n\nexport type DSDrawerAction = {\n label: ReactNode;\n onClick?: ButtonProps['onClick'];\n disabled?: boolean;\n loading?: boolean;\n};\n\nexport type DrawerProps = Omit<AntDrawerProps, 'size'> & {\n /** DS workflow variant controlling width, density, surface, and default footer behavior. */\n dsVariant?: DSDrawerVariant;\n /** DS width preset. Defaults from the selected workflow variant. */\n dsSize?: DSDrawerSize;\n /** DS footer mode. `auto` follows the selected workflow variant. */\n dsFooter?: DSDrawerFooter;\n /** Optional supporting text rendered below the drawer title. */\n dsDescription?: ReactNode;\n /** Primary footer action rendered last in the action group. */\n dsPrimaryAction?: DSDrawerAction;\n /** Secondary footer action rendered before the primary action. */\n dsSecondaryAction?: DSDrawerAction;\n /** Tertiary footer action rendered at the start edge of the footer. */\n dsTertiaryAction?: DSDrawerAction;\n};\n\nconst STYLE_ID = 'ds-drawer-styles';\n\nconst SIZE_BY_VARIANT: Record<DSDrawerVariant, DSDrawerSize> = {\n details: 'standard',\n edit: 'wide',\n filter: 'narrow',\n confirmation: 'narrow',\n workflowPanel: 'full',\n};\n\nconst DEFAULT_FOOTER_BY_VARIANT: Record<DSDrawerVariant, DSDrawerFooter> = {\n details: 'none',\n edit: 'actions',\n filter: 'actions',\n confirmation: 'actions',\n workflowPanel: 'actions',\n};\n\nconst DEFAULT_PRIMARY_LABEL: Record<DSDrawerVariant, ReactNode> = {\n details: 'Done',\n edit: 'Save',\n filter: 'Apply filters',\n confirmation: 'Confirm',\n workflowPanel: 'Continue',\n};\n\nconst DEFAULT_SECONDARY_LABEL: Record<DSDrawerVariant, ReactNode> = {\n details: 'Close',\n edit: 'Cancel',\n filter: 'Reset',\n confirmation: 'Cancel',\n workflowPanel: 'Back',\n};\n\nconst mergeClassNames = (...classNames: Array<string | undefined>): string =>\n classNames.filter(Boolean).join(' ').trim();\n\nfunction injectStyles() {\n if (typeof document === 'undefined') return;\n\n const { drawer } = dsSemanticTokens;\n let style = document.getElementById(STYLE_ID) as HTMLStyleElement | null;\n if (!style) {\n style = document.createElement('style');\n style.id = STYLE_ID;\n document.head.appendChild(style);\n }\n\n style.textContent = `\n .ds-drawer-root .ant-drawer-mask {\n background: ${drawer.backdrop} !important;\n }\n\n .ds-drawer-root .ant-drawer-content-wrapper {\n box-shadow: ${drawer.shadow} !important;\n }\n\n .ds-drawer-root .ant-drawer-content,\n .ds-drawer.ant-drawer-content {\n background: ${drawer.surface.background};\n border-radius: ${drawer.border.radius};\n overflow: hidden;\n }\n\n .ds-drawer-root .ant-drawer-header {\n flex: 0 0 auto !important;\n min-height: 64px;\n height: auto !important;\n padding: ${drawer.spacing.header};\n background: ${drawer.surface.header};\n border-bottom: ${drawer.border.width} solid ${drawer.border.color};\n align-items: flex-start;\n box-sizing: border-box;\n }\n\n .ds-drawer-root .ant-drawer-header-title {\n width: 100%;\n min-width: 0;\n min-height: 0;\n height: auto !important;\n gap: 12px;\n align-items: flex-start;\n }\n\n .ds-drawer-root .ant-drawer-title {\n flex: 1 1 auto;\n min-width: 0;\n color: ${drawer.text.title};\n font-family: 'Nunito', sans-serif;\n font-size: 18px;\n font-weight: 700;\n line-height: 24px;\n letter-spacing: 0;\n white-space: normal;\n overflow-wrap: anywhere;\n }\n\n .ds-drawer-title-stack {\n display: flex;\n flex-direction: column;\n gap: 4px;\n width: 100%;\n min-width: 0;\n }\n\n .ds-drawer-title-text,\n .ds-drawer-description {\n overflow-wrap: anywhere;\n }\n\n .ds-drawer-description {\n color: ${drawer.text.description};\n font-size: 14px;\n font-weight: 400;\n line-height: 20px;\n }\n\n .ds-drawer-root .ant-drawer-close {\n width: ${drawer.closeButton.size};\n height: ${drawer.closeButton.size};\n padding: 0;\n margin-inline-end: 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex: 0 0 ${drawer.closeButton.size};\n color: ${drawer.closeButton.color};\n border-radius: ${drawer.closeButton.radius};\n background: transparent !important;\n border: 0 !important;\n box-shadow: none !important;\n }\n\n .ds-drawer-root .ant-drawer-close svg {\n width: ${drawer.closeButton.iconSize};\n height: ${drawer.closeButton.iconSize};\n }\n\n .ds-drawer-root .ant-drawer-body {\n padding: ${drawer.spacing.body};\n background: ${drawer.surface.background};\n color: ${drawer.text.body};\n font-family: 'Nunito', sans-serif;\n font-size: 14px;\n line-height: 20px;\n }\n\n .ds-drawer-root .ant-drawer-footer {\n min-height: 64px;\n margin: 0;\n padding: ${drawer.spacing.footer};\n background: ${drawer.surface.footer};\n border-top: ${drawer.border.width} solid ${drawer.border.color};\n }\n\n .ds-drawer-actions {\n display: flex;\n width: 100%;\n align-items: center;\n justify-content: space-between;\n gap: 16px;\n }\n\n .ds-drawer-actions-main {\n display: inline-flex;\n align-items: center;\n justify-content: flex-end;\n gap: 12px;\n margin-inline-start: auto;\n }\n\n .ds-drawer-root.ds-drawer-variant-details .ant-drawer-body {\n background: ${drawer.surface.details};\n }\n\n .ds-drawer-root.ds-drawer-variant-edit .ant-drawer-body,\n .ds-drawer-root.ds-drawer-variant-workflowPanel .ant-drawer-body {\n padding: ${drawer.spacing.body};\n }\n\n .ds-drawer-root.ds-drawer-variant-filter .ant-drawer-body {\n padding: ${drawer.spacing.bodyCompact};\n }\n\n .ds-drawer-root.ds-drawer-footer-none .ant-drawer-footer {\n display: none;\n }\n\n @media (max-width: 640px) {\n .ds-drawer-root .ant-drawer-content-wrapper {\n max-width: 100vw !important;\n }\n\n .ds-drawer-root .ant-drawer-header,\n .ds-drawer-root .ant-drawer-body,\n .ds-drawer-root .ant-drawer-footer {\n padding-left: 16px;\n padding-right: 16px;\n }\n\n .ds-drawer-actions,\n .ds-drawer-actions-main {\n flex-direction: column-reverse;\n align-items: stretch;\n }\n\n .ds-drawer-actions-main {\n width: 100%;\n margin-inline-start: 0;\n }\n\n .ds-drawer-actions .ant-btn {\n width: 100%;\n }\n }\n `;\n}\n\nfunction renderTitle(title: ReactNode, description?: ReactNode) {\n if (!description) return title;\n\n return (\n <span className=\"ds-drawer-title-stack\">\n <span className=\"ds-drawer-title-text\">{title}</span>\n <span className=\"ds-drawer-description\">{description}</span>\n </span>\n );\n}\n\nfunction actionButton(action: DSDrawerAction, dsVariant: ButtonProps['dsVariant'], fallbackOnClick?: ButtonProps['onClick']) {\n return (\n <Button dsVariant={dsVariant} disabled={action.disabled} loading={action.loading} onClick={action.onClick ?? fallbackOnClick}>\n {action.label}\n </Button>\n );\n}\n\nexport const Drawer = ({\n dsVariant = 'details',\n dsSize,\n dsFooter = 'auto',\n dsDescription,\n dsPrimaryAction,\n dsSecondaryAction,\n dsTertiaryAction,\n rootClassName,\n className,\n title,\n footer,\n onClose,\n placement = 'right',\n children,\n ...props\n}: DrawerProps) => {\n useEffect(() => {\n injectStyles();\n }, []);\n\n const resolvedSize = dsSize ?? SIZE_BY_VARIANT[dsVariant];\n const resolvedFooterMode = dsFooter === 'auto' ? DEFAULT_FOOTER_BY_VARIANT[dsVariant] : dsFooter;\n const fallbackOnClose: MouseEventHandler<HTMLElement> = (event) => onClose?.(event);\n const primaryAction = dsPrimaryAction ?? { label: DEFAULT_PRIMARY_LABEL[dsVariant] };\n const secondaryAction = dsSecondaryAction ?? { label: DEFAULT_SECONDARY_LABEL[dsVariant] };\n\n const resolvedFooter = footer !== undefined\n ? footer\n : resolvedFooterMode === 'none'\n ? null\n : (\n <div className=\"ds-drawer-actions\">\n <div>{dsTertiaryAction ? actionButton(dsTertiaryAction, 'tertiary', fallbackOnClose) : null}</div>\n <div className=\"ds-drawer-actions-main\">\n {actionButton(secondaryAction, 'secondary', fallbackOnClose)}\n {actionButton(primaryAction, 'primary')}\n </div>\n </div>\n );\n\n return (\n <AntDrawer\n {...props}\n placement={placement}\n size={dsSemanticTokens.drawer.width[resolvedSize]}\n title={renderTitle(title, dsDescription)}\n footer={resolvedFooter}\n onClose={onClose}\n rootClassName={mergeClassNames('ds-drawer-root', `ds-drawer-variant-${dsVariant}`, `ds-drawer-size-${resolvedSize}`, `ds-drawer-footer-${resolvedFooterMode}`, rootClassName)}\n className={mergeClassNames('ds-drawer', className)}\n data-ds-drawer-variant={dsVariant}\n data-ds-drawer-size={resolvedSize}\n data-ds-drawer-footer={resolvedFooterMode}\n >\n {children}\n </AntDrawer>\n );\n};\n\nDrawer.displayName = 'Drawer';"],"mappings":";;;;;;AAiBA,IAAM,KAAW,oBAkBJ,MAAU,EACrB,eAAY,WACZ,cAAW,IACX,OAAO,IAAY,EAAE,EACrB,WAAW,IAAgB,IAC3B,GAAG,QACc;AAEjB,SAAgB;AACd,MAAI,OAAO,WAAa,OAAe,CAAC,SAAS,eAAe,GAAS,EAAE;GACzE,IAAM,IAAQ,SAAS,cAAc,QAAQ;AAC7C,KAAM,KAAK;GACX,IAAM,EAAE,cAAW;AAmPnB,GAlPA,EAAM,cAAc;;8BAEI,EAAO,QAAQ,QAAQ;oCACjB,EAAO,QAAQ,MAAM;sCACnB,EAAO,QAAQ,QAAQ;mCAC1B,EAAO,QAAQ,KAAK;4CACX,EAAO,QAAQ,aAAa;0CAC9B,EAAO,QAAQ,WAAW;;qCAE/B,EAAO,UAAU,YAAY;uCAC3B,EAAO,UAAU,cAAc;mCACnC,EAAO,UAAU,UAAU;2CACnB,EAAO,UAAU,UAAU;6CACzB,EAAO,UAAU,YAAY;yCACjC,EAAO,UAAU,QAAQ;6CACrB,EAAO,UAAU,YAAY;+CAC3B,EAAO,UAAU,cAAc;2CACnC,EAAO,UAAU,UAAU;8CACxB,EAAO,UAAU,aAAa;gDAC5B,EAAO,UAAU,eAAe;4CACpC,EAAO,UAAU,WAAW;;oCAEpC,EAAO,SAAS,YAAY;0CACtB,EAAO,SAAS,UAAU;4CACxB,EAAO,SAAS,YAAY;6CAC3B,EAAO,SAAS,aAAa;;wCAElC,EAAO,YAAY,YAAY;8CACzB,EAAO,YAAY,UAAU;gDAC3B,EAAO,YAAY,YAAY;iDAC9B,EAAO,YAAY,aAAa;;sCAE3C,EAAO,WAAW,MAAM,SAAS;6CAC1B,EAAO,WAAW,MAAM,WAAW;gDAChC,EAAO,WAAW,MAAM,cAAc;uCAC/C,EAAO,WAAW,OAAO,SAAS;8CAC3B,EAAO,WAAW,OAAO,WAAW;iDACjC,EAAO,WAAW,OAAO,cAAc;sCAClD,EAAO,WAAW,MAAM,SAAS;6CAC1B,EAAO,WAAW,MAAM,WAAW;gDAChC,EAAO,WAAW,MAAM,cAAc;;;;;;;yBAO7D,EAAO,WAAW,WAAW;4BAC1B,EAAO,WAAW,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAkMtD,SAAS,KAAK,YAAY,EAAM;;IAEjC,EAAE,CAAC;CAGN,IAAM,WASG;EAPL,GAAG;EACH,WAAW;EACX,YAAY;EACZ,WAAW;EACX,yBAAyB;EAGpB;AAmCT,QA/BI,MAAc,cAEd,kBAAC,GAAD;EAAgB,MAAM,EAAE,UAAU,IAAM;YACtC,kBAAC,GAAD;GACE,MAAK;GACK;GACV,OAAO,GAAW;GAClB,WAAW;GACX,mBAAiB;GACjB,GAAI;GACJ,CAAA;EACa,CAAA,GAIjB,MAAc,cAAc,MAAc,iBAE1C,kBAAC,GAAD;EAAgB,MAAM,EAAE,UAAU,IAAM;YACtC,kBAAC,GAAD;GACE,MAAK;GACK;GACV,OAAO,GAAW;GAClB,WAAW;GACX,mBAAiB;GACjB,GAAI;GACJ,CAAA;EACa,CAAA,GAMnB,kBAAC,GAAD;EAAgB,MAAM,EAAE,UAAU,IAAM;YACtC,kBAAC,GAAD;GACE,MAAK;GACK;GACV,OAAO,GAAW;GAClB,WAAW;GACX,mBAAiB;GACjB,GAAI;GACJ,CAAA;EACa,CAAA;;AAIrB,GAAO,cAAc,UACrB,GAAO,QAAQ,EAAU;;;ACtTzB,IAAM,KAAW,kBAEX,KAA2D;CAC/D,UAAU;EACR,QAAQ;EACR,MAAM;EACN,cAAc;EACd,OAAO;EACR;CACD,SAAS;EACP,QAAQ;EACR,MAAM;EACN,cAAc;EACd,OAAO;EACR;CACD,UAAU;EACR,QAAQ;EACR,MAAM;EACN,cAAc;EACd,OAAO;EACR;CACD,QAAQ;EACN,QAAQ;EACR,MAAM;EACN,cAAc;EACd,OAAO;EACR;CACD,eAAe;EACb,QAAQ;EACR,MAAM;EACN,cAAc;EACd,OAAO;EACR;CACF,EAEK,KAA8E;CAClF,UAAU;CACV,UAAU;CACV,MAAM;CACP;AAED,SAAS,KAAe;AACtB,KAAI,OAAO,WAAa,IAAa;CAErC,IAAM,EAAE,YAAS,GAEb,IAAQ,SAAS,eAAe,GAAS;AAO7C,CANK,MACH,IAAQ,SAAS,cAAc,QAAQ,EACvC,EAAM,KAAK,IACX,SAAS,KAAK,YAAY,EAAM,GAGlC,EAAM,cAAc;;;;;;uBAMC,EAAK,OAAO,OAAO;;;;;oBAKtB,EAAK,QAAQ,SAAS;gBAC1B,EAAK,OAAO,MAAM,SAAS,EAAK,OAAO,MAAM;;;;oBAIzC,EAAK,QAAQ,OAAO;gBACxB,EAAK,OAAO,MAAM,SAAS,EAAK,OAAO,MAAM;;;;oBAIzC,EAAK,QAAQ,WAAW;gBAC5B,EAAK,OAAO,MAAM,SAAS,EAAK,OAAO,MAAM;;;;;;;;;;;;;;;;;;eAkB9C,EAAK,KAAK,aAAa;mBACnB,EAAK,WAAW,aAAa,SAAS;qBACpC,EAAK,WAAW,aAAa,WAAW;qBACxC,EAAK,WAAW,aAAa,WAAW;;;;;;eAM9C,EAAK,KAAK,YAAY;mBAClB,EAAK,WAAW,mBAAmB,SAAS;qBAC1C,EAAK,WAAW,mBAAmB,WAAW;qBAC9C,EAAK,WAAW,mBAAmB,WAAW;;;;;;;;;;oBAU/C,EAAK,QAAQ,MAAM;gBACvB,EAAK,OAAO,MAAM,SAAS,EAAK,KAAK,MAAM;uBACpC,EAAK,OAAO,OAAO;eAC3B,EAAK,KAAK,MAAM;mBACZ,EAAK,WAAW,KAAK,SAAS;qBAC5B,EAAK,WAAW,KAAK,WAAW;qBAChC,EAAK,WAAW,KAAK,WAAW;;;;;eAKtC,EAAK,KAAK,MAAM;;;;;;;;;;;;;;;uBAeR,EAAiB,MAAM,OAAO,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eAmC7C,EAAK,KAAK,MAAM;mBACZ,EAAK,WAAW,MAAM,SAAS;qBAC7B,EAAK,WAAW,MAAM,WAAW;qBACjC,EAAK,WAAW,MAAM,WAAW;;;;;;;;;;;eAWvC,EAAK,KAAK,SAAS;;;;;;eAMnB,EAAK,KAAK,SAAS;;;;;;;;;mBASf,EAAK,WAAW,KAAK,SAAS;qBAC5B,EAAK,WAAW,KAAK,WAAW;qBAChC,EAAK,WAAW,KAAK,WAAW;;;;;;eAMtC,EAAK,KAAK,MAAM;;;;eAIhB,EAAK,KAAK,QAAQ;;;;;eAKlB,EAAK,KAAK,QAAQ;;;;;;;;;uBASV,EAAK,OAAO,MAAM,SAAS,EAAK,OAAO,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eA8CrD,EAAK,KAAK,MAAM;;;;;;;eAOhB,EAAK,KAAK,YAAY;;;;;;;;;;;;;AAcrC,SAAS,GAAgB,GAAwB;CAC/C,IAAM,EAAE,YAAS,GACX,EAAE,aAAU,GACZ,IAAU,EAAK,QAAQ,IACvB,IAAc,GAAiB,GAAS,SAAS,UAAU,UAAU,UACrE,IAAgB,EAAM,QAAQ;AAEpC,QAAO;EACL,sBAAsB,EAAQ;EAC9B,yBAAyB,EAAQ;EACjC,2BAA2B,EAAQ;EACnC,4BAA4B,EAAM,OAAO;EACzC,+BAA+B,EAAc;EAC7C,+BAA+B,EAAc;EAC9C;;AAGH,IAAa,MAA2B,EACtC,eAAY,YACZ,mBACA,wBACA,mBACA,yBACA,qBACA,WAAW,IAAgB,IAC3B,eAAe,IAAoB,IACnC,OAAO,IAAY,EAAE,EACrB,aACA,GAAG,QACoB;AACvB,SAAgB;AACd,MAAc;IACb,EAAE,CAAC;CAEN,IAAM,IAAW,GAAiB,IAC5B,IAAe,IAAiB,GAAkB,KAAkB,EAAS,cAC7E,IAAY,UAAU,IAAgB,IAAI,MAAkB,MAC5D,IAAgB,eAAe,IAAoB,IAAI,MAAsB,MAC7E,IAAe,GAAgB,EAAU,EACzC,IAAmB,GAAQ,KAAkB,KAAwB,IAErE,IACJ,kBAAC,GAAD;EACE,GAAI;EACO;EACI;EACf,OAAO;GAAE,GAAG;GAAc,GAAG;GAAW;EACxC,QAAQ,EAAS;EACjB,MAAM,EAAS;EACD;EACd,OAAO,EAAS;EAChB,SAAQ;EACR,wBAAsB;YAVxB,CAYG,IACC,kBAAC,OAAD;GAAK,WAAU;GAAkB,MAAK;GAAQ,aAAU;aACrD;GACG,CAAA,GACJ,MACH,EACO;;AAOZ,QAJI,CAAC,MAAqB,MAAc,cAAc,MAAc,aAC3D,IAIP,kBAAC,WAAD;EACE,WAAU;EACV,OAAO;EACP,wBAAsB;YAHxB,CAKG,IACC,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,OAAD;IAAK,WAAU;cAAf,CACG,IAAiB,kBAAC,MAAD;KAAI,WAAU;eAAyB;KAAoB,CAAA,GAAG,MAC/E,IACC,kBAAC,KAAD;KAAG,WAAU;eAA+B;KAAyB,CAAA,GACnE,KACA;OACL,IAAmB,kBAAC,OAAD,EAAA,UAAM,GAAuB,CAAA,GAAG,KAChD;OACJ,MACH,EACO;;;AAId,GAAS,cAAc;AAEvB,IAAa,KAAO,OAAO,OAAO,IAAU;CAC1C,MAAM,EAAQ;CACd,MAAM,EAAQ;CACd,WAAW,EAAQ;CACnB,UAAU,EAAQ;CAClB,SAAS,EAAQ;CACjB,iBAAiB,EAAQ;CACzB,UAAU,EAAQ;CACnB,CAAC,09nYCpbW,KAA0C;CAErD,iBAAiB;CACjB,WAAW;CACX,UAAU;CACV,YAAY;CAGZ,YAAY;CACZ,mBAAmB;CACnB,oBAAoB;CACpB,kBAAkB;CAClB,mBAAmB;CACnB,kBAAkB;CAClB,eAAe;CACf,uBAAuB;CACvB,uBAAuB;CACvB,qBAAqB;CACrB,qBAAqB;CACrB,wBAAwB;CACxB,YAAY;CACZ,QAAQ;CAGR,YAAY;CACZ,gBAAgB;CAChB,aAAa;CACb,SAAS;CACT,YAAY;CACZ,YAAY;CAGZ,0BAA0B;CAC1B,0BAA0B;CAC1B,uBAAuB;CACvB,uBAAuB;CAGvB,cAAc;CACd,SAAS;CACT,OAAO;CACP,aAAa;CACb,eAAe;CACf,+BAA+B;CAC/B,cAAc;CACd,gBAAgB;CAChB,UAAU;CAGV,KAAK;CACL,oBAAoB;CACpB,eAAe;CACf,YAAY;CACZ,WAAW;CACX,cAAc;CACd,eAAe;CACf,gBAAgB;CAChB,aAAa;CACb,eAAe;CACf,mBAAmB;CAGnB,iBAAiB;CACjB,kBAAkB;CAClB,kBAAkB;CAClB,mBAAmB;CACnB,mBAAmB;CACnB,eAAe;CACf,YAAY;CACZ,WAAW;CACX,YAAY;CACZ,WAAW;CACX,aAAa;CACb,YAAY;CACZ,UAAU;CACV,SAAS;CACT,sBAAsB;CACtB,sBAAsB;CACtB,uBAAuB;CACvB,oBAAoB;CACpB,gBAAgB;CAChB,cAAc;CAGd,YAAY;CACZ,KAAK;CACL,cAAc;CACd,WAAW;CACX,cAAc;CACd,gBAAgB;CAChB,sBAAsB;CACtB,kBAAkB;CAClB,iBAAiB;CACjB,gBAAgB;CAChB,eAAe;CACf,iBAAiB;CAGjB,WAAW;CACX,mBAAmB;CACnB,cAAc;CACd,qBAAqB;CACrB,oBAAoB;CACpB,qBAAqB;CACrB,qBAAqB;CACrB,eAAe;CACf,oBAAoB;CAGpB,UAAU;CACV,WAAW;CACX,mBAAmB;CAGnB,QAAQ;CACR,QAAQ;CACR,cAAc;CACd,uBAAuB;CACvB,OAAO;CAGP,KAAK;CACL,QAAQ;CACR,QAAQ;CACR,6BAA6B;CAC7B,4BAA4B;CAG5B,sBAAsB;CACtB,UAAU;CACV,mBAAmB;CACnB,iBAAiB;CACjB,gBAAgB;CAChB,wBAAwB;CAGxB,gBAAgB;CAChB,WAAW;CACX,cAAc;CAGd,sBAAsB;CACtB,mBAAmB;CACnB,oBAAoB;CAGpB,UAAU;CACV,oBAAoB;CACpB,oBAAoB;CACpB,oBAAoB;CACpB,uBAAuB;CAGvB,cAAc;CACd,iBAAiB;CACjB,gBAAgB;CAChB,cAAc;CACd,eAAe;CACf,iBAAiB;CACjB,kBAAkB;CAClB,aAAa;CACb,sBAAsB;CACtB,cAAc;CACd,OAAO;CACP,OAAO;CACP,UAAU;CACV,UAAU;CACV,gBAAgB;CAGhB,mBAAmB;CACnB,gBAAgB;CAGhB,QAAQ;CACR,aAAa;CACb,cAAc;CACd,uBAAuB;CACvB,iBAAiB;CACjB,qBAAqB;CACrB,WAAW;CACX,gBAAgB;CAChB,uBAAuB;CACvB,kBAAkB;CAClB,yBAAyB;CACzB,iBAAiB;CACjB,+BAA+B;CAC/B,oBAAoB;CACpB,kBAAkB;CAClB,uBAAuB;CAGvB,gBAAgB;CAChB,WAAW;CACX,yBAAyB;CACzB,uBAAuB;CAGvB,MAAM;CACN,QAAQ;CAGR,OAAO;CACP,gBAAgB;CAChB,aAAa;CAGb,QAAQ;CACR,kBAAkB;CAClB,gBAAgB;CAChB,OAAO;CACP,QAAQ;CAGR,aAAa;CAGb,yBAAyB;CACzB,uBAAuB;CAGvB,eAAe;CACf,aAAa;CACb,sBAAsB;CAGtB,QAAQ;CACR,kBAAkB;CAClB,iBAAiB;CACjB,qBAAqB;CACrB,YAAY;CACZ,mBAAmB;CACnB,mBAAmB;CACnB,YAAY;CACZ,qBAAqB;CACrB,OAAO;CACP,0BAA0B;CAC1B,eAAe;CACf,cAAc;CACd,kCAAkC;CAClC,iBAAiB;CACjB,aAAa;CACb,mBAAmB;CACnB,iBAAiB;CACjB,WAAW;CACX,SAAS;CACT,OAAO;CACP,QAAQ;CACR,SAAS;CACT,eAAe;CACf,cAAc;CACd,iBAAiB;CACjB,2BAA2B;CAC3B,wBAAwB;CACxB,uBAAuB;CACvB,yBAAyB;CACzB,SAAS;CACV,EC3LK,KAAqB,uBAAA,OAAA;CAAA,iDAAA;CAAA,iEAAA;CAAA,+DAAA;CAAA,iDAAA;CAAA,oDAAA;CAAA,4CAAA;CAAA,2CAAA;CAAA,sDAAA;CAAA,uDAAA;CAAA,qDAAA;CAAA,sDAAA;CAAA,qDAAA;CAAA,iDAAA;CAAA,8CAAA;CAAA,2CAAA;CAAA,6DAAA;CAAA,6DAAA;CAAA,2DAAA;CAAA,2DAAA;CAAA,8CAAA;CAAA,+CAAA;CAAA,0CAAA;CAAA,kDAAA;CAAA,2CAAA;CAAA,8CAAA;CAAA,6CAAA;CAAA,yCAAA;CAAA,0CAAA;CAAA,gEAAA;CAAA,gEAAA;CAAA,6DAAA;CAAA,6DAAA;CAAA,qDAAA;CAAA,wCAAA;CAAA,yDAAA;CAAA,oDAAA;CAAA,sCAAA;CAAA,6CAAA;CAAA,iDAAA;CAAA,mDAAA;CAAA,sDAAA;CAAA,uDAAA;CAAA,iDAAA;CAAA,uDAAA;CAAA,mDAAA;CAAA,wDAAA;CAAA,yDAAA;CAAA,iDAAA;CAAA,sDAAA;CAAA,wDAAA;CAAA,kDAAA;CAAA,wDAAA;CAAA,sDAAA;CAAA,sDAAA;CAAA,yDAAA;CAAA,uDAAA;CAAA,oDAAA;CAAA,oDAAA;CAAA,qDAAA;CAAA,iDAAA;CAAA,6CAAA;CAAA,iDAAA;CAAA,6CAAA;CAAA,kDAAA;CAAA,8CAAA;CAAA,0DAAA;CAAA,0DAAA;CAAA,2DAAA;CAAA,wDAAA;CAAA,qDAAA;CAAA,mDAAA;CAAA,+CAAA;CAAA,2CAAA;CAAA,6CAAA;CAAA,wCAAA;CAAA,iDAAA;CAAA,iDAAA;CAAA,gDAAA;CAAA,gDAAA;CAAA,gDAAA;CAAA,mDAAA;CAAA,mDAAA;CAAA,yDAAA;CAAA,+CAAA;CAAA,0DAAA;CAAA,yDAAA;CAAA,0DAAA;CAAA,0DAAA;CAAA,iDAAA;CAAA,+CAAA;CAAA,4CAAA;CAAA,4CAAA;CAAA,mDAAA;CAAA,6DAAA;CAAA,0CAAA;CAAA,sCAAA;CAAA,qDAAA;CAAA,4DAAA;CAAA,0DAAA;CAAA,2DAAA;CAAA,qDAAA;CAAA,yDAAA;CAAA,0DAAA;CAAA,yCAAA;CAAA,2DAAA;CAAA,+CAAA;CAAA,yDAAA;CAAA,+DAAA;CAAA,6DAAA;CAAA,kDAAA;CAAA,4DAAA;CAAA,8CAAA;CAAA,8CAAA;CAAA,yDAAA;CAAA,6CAAA;CAAA,2CAAA;CAAA,6CAAA;CAAA,8CAAA;CAAA,sDAAA;CAAA,+DAAA;CAAA,sDAAA;CAAA,2CAAA;CAAA,8CAAA;CAAA,2DAAA;CAAA,4CAAA;CAAA,kDAAA;CAAA,4CAAA;CAAA,sDAAA;CAAA,uDAAA;CAAA,uDAAA;CAAA,wDAAA;CAAA,kDAAA;CAAA,qDAAA;CAAA,oDAAA;CAAA,kDAAA;CAAA,oDAAA;CAAA,wDAAA;CAAA,yDAAA;CAAA,iDAAA;CAAA,kDAAA;CAAA,yCAAA;CAAA,yCAAA;CAAA,qDAAA;CAAA,iDAAA;CAAA,mDAAA;CAAA,qEAAA;CAAA,kDAAA;CAAA,mDAAA;CAAA,6DAAA;CAAA,uDAAA;CAAA,iEAAA;CAAA,6DAAA;CAAA,qDAAA;CAAA,oDAAA;CAAA,oDAAA;CAAA,oDAAA;CAAA,kDAAA;CAAA,uDAAA;CAAA,gDAAA;CAAA,6CAAA;CAAA,6DAAA;CAAA,wDAAA;CAAA,uDAAA;CAAA,yDAAA;CAAA,2DAAA;CAAA,0DAAA;CAAA,sEAAA;CAAA,+CAAA;CAAA,mDAAA;CAAA,iDAAA;CAAA,oDAAA;CAAA,gDAAA;CAAA,wDAAA;CAAA,oDAAA;CAAA,4DAAA;CAAA,uDAAA;CAAA,oDAAA;CAAA,wCAAA;CAAA,sDAAA;CAAA,mDAAA;CAAA,iDAAA;CAAA,0DAAA;CAAA,iEAAA;CAAA,iEAAA;CAAA,0DAAA;CAAA,0CAAA;CAAA,6DAAA;CAAA,wEAAA;CAAA,4DAAA;CAAA,kDAAA;CAAA,mEAAA;CAAA,uDAAA;CAAA,qDAAA;CAAA,6DAAA;CAAA,oDAAA;CAAA,mDAAA;CAAA,gDAAA;CAAA,yCAAA;CAAA,yCAAA;CAAA,6CAAA;CAAA,6CAAA;CAAA,wCAAA;CAAA,yCAAA;CAAA,4CAAA;CAAA,6CAAA;EAIzB,EAGI,KAAyD;CAE7D,OAAO;CACP,OAAO;CACP,KAAK;CACL,aAAa;CACb,aAAa;CACb,aAAa;CACb,mBAAmB;CACnB,MAAM;CACN,YAAY;CACZ,UAAU;CACV,gBAAgB;CAGhB,QAAQ;CACR,QAAQ;CAGR,QAAQ;CACR,KAAK;CACL,MAAM;CACN,OAAO;CACP,MAAM;CACN,QAAQ;CACR,MAAM;CACN,UAAU;CACV,QAAQ;CACR,MAAM;CAGN,UAAU;CACV,SAAS;CACT,KAAK;CACL,MAAM;CACN,QAAQ;CAGR,MAAM;CACN,QAAQ;CACR,QAAQ;CAGR,MAAM;CACN,MAAM;CACN,OAAO;CAGP,MAAM;CACN,QAAQ;CAGR,SAAS;CACT,MAAM;CACN,OAAO;CACP,OAAO;CACP,OAAO;CACP,GAAG;CAGH,UAAU;CACV,MAAM;CAGN,MAAM;CACN,MAAM;CACN,OAAO;CACP,OAAO;CAGP,MAAM;CACN,MAAM;CACN,OAAO;CAGP,WAAW;CACX,OAAO;CACP,UAAU;CACV,WAAW;CACX,UAAU;CACV,KAAK;CAGL,OAAO;CACP,UAAU;CAGV,KAAK;CAGL,YAAY;CACZ,cAAc;CACd,UAAU;CAGV,OAAO;CACP,QAAQ;CACR,QAAQ;CAGR,MAAM;CACN,KAAK;CACL,QAAQ;CACR,cAAc;CACd,QAAQ;CACR,SAAS;CAGT,WAAW;CACX,aAAa;CACb,YAAY;CACZ,UAAU;CACV,YAAY;CACb,EAMY,MAKP,EAAE,aAAU,UAAO,IAAI,cAAW,eAAY;CAClD,IAAM,IAAa,GAAmB,8BAA8B;AAOpE,QALK,IAMH,kBAAC,QAAD;EACa;EACX,OAAO;GACL,OAAO;GACP,QAAQ;GACR,SAAS;GACT,YAAY;GACZ,gBAAgB;GAChB,YAAY;GACZ,GAAG;GACJ;EACD,yBAAyB,EAAE,QAAQ,GAAA;EACnC,CAAA,IAjBF,QAAQ,KAAK,yBAAyB,EAAS,mBAAmB,EAC3D,kBAAC,QAAD;EAAiB;YAAW;EAAS,CAAA;GAoCnC,MACX,GACA,MAKG;CACH,IAAM,EAAE,UAAO,IAAI,cAAW,aAAU,KAAW,EAAE,EAG/C,IAAU,GAAa;AAC7B,KAAI,EACF,QACE,kBAAC,GAAD;EACE,OAAO;GAAE,UAAU;GAAM,GAAG;GAAO;EACxB;EACX,CAAA;CAKN,IAAM,IAAiB,GAAgB;AAcvC,QAbI,IAEA,kBAAC,IAAD;EACE,UAAU;EACJ;EACK;EACJ;EACP,CAAA,IAKN,QAAQ,KAAK,SAAS,EAAS,2CAA2C,EACnE,kBAAC,QAAD;EAAiB;YAAW;EAAQ,CAAA;GAWhC,KAKP,EAAE,SAAM,UAAO,IAAI,cAAW,eAC3B,GAAc,GAAM;CAAE;CAAM;CAAW;CAAO,CAAC,ECzSlD,KAAW,oBAEJ,IAAkB,aAClB,IAA2B,sBAC3B,KAA8B,yBAC9B,KAA8B,yBAC9B,IAA2B,sBAC3B,IAAoC,iCACpC,KAAiC,4BAEjC,MAAmB,GAAG,MACjC,EAAW,OAAO,QAAQ,CAAC,KAAK,IAAI,CAAC,MAAM,EAEhC,WAA2B;AACtC,KAAI,OAAO,WAAa,IACtB;CAGF,IAAM,EAAE,aAAU,GACd,IAAQ,SAAS,eAAe,GAAS;AAO7C,CANK,MACH,IAAQ,SAAS,cAAc,QAAQ,EACvC,EAAM,KAAK,IACX,SAAS,KAAK,YAAY,EAAM,GAGlC,EAAM,cAAc;OACf,EAAgB;sBACD,EAAM,OAAO,QAAQ;sBACrB,EAAM,OAAO,aAAa;;uBAEzB,EAAM,OAAO,OAAO;0BACjB,EAAM,WAAW,QAAQ;;;;;;;;;;OAU5C,EAAgB;;;;;;uBAMA,EAAM,OAAO,OAAO;;;;;;;;OAQpC,EAAgB;gBACP,EAAM,OAAO,aAAa,SAAS,EAAM,OAAO,QAAQ;;;;OAIjE,EAAgB;;;;;;;;;;;OAWhB,EAAgB;;;;;;;;OAQhB,EAAgB;;;;;;;;;;OAUhB,EAAgB;;;;;;;;;;;OAWhB,EAAgB;;;;;;;OAOhB,EAAgB;;;;;;;OAOhB,EAAgB;OAChB,EAAgB;;eAER,EAAM,KAAK,YAAY;;;;;;;OAO/B,EAAgB;OAChB,EAAgB;;eAER,EAAM,KAAK,MAAM;;;;;;OAMzB,EAAgB;OAChB,EAAgB;;;;;;;;OAQhB,EAAgB;OAChB,EAAgB;eACR,EAAM,KAAK,MAAM;;;;OAIzB,EAAgB;;;;;;OAMhB,EAAgB;OAChB,EAAgB;gBACP,EAAM,OAAO,aAAa,SAAS,EAAM,OAAO,MAAM;;;;OAI/D,EAAgB,cAAc,GAA4B,kCAAkC,EAAyB;gBAC5G,EAAM,OAAO,aAAa,SAAS,EAAM,OAAO,MAAM;;;;OAI/D,EAAgB;OAChB,EAAgB;sBACD,EAAM,OAAO,MAAM;sBACnB,EAAM,OAAO,WAAW;;;;;;OAMvC,EAAgB;OAChB,EAAgB;sBACD,EAAM,OAAO,MAAM;sBACnB,EAAM,OAAO,WAAW;;;;;;OAMvC,EAAgB;OAChB,EAAgB;OAChB,EAAgB;OAChB,EAAgB;sBACD,EAAM,OAAO,MAAM;sBACnB,EAAM,OAAO,WAAW;;;;;OAKvC,EAAgB,cAAc,GAA4B,kCAAkC,EAAyB;sBACtG,EAAM,OAAO,MAAM;sBACnB,EAAM,OAAO,WAAW;;;;;;OAMvC,EAAgB;OAChB,EAAgB;OAChB,EAAgB;OAChB,EAAgB;;;;;OAKhB,EAAgB;;;;OAIhB,EAAgB;OAChB,EAAgB;;eAER,EAAM,KAAK,MAAM;;;OAGzB,EAAgB;OAChB,EAAgB;OAChB,EAAgB;OAChB,EAAgB;eACR,EAAY,KAAK,OAAO;;;;OAIhC,EAAgB,cAAc,GAA4B,kCAAkC,EAAyB;OACrH,EAAgB,cAAc,GAA4B,kCAAkC,EAAyB;eAC7G,EAAY,KAAK,OAAO;;;;OAIhC,EAAgB;sBACD,EAAM,OAAO,MAAM;;;;OAIlC,EAAgB;sBACD,EAAY,OAAO,QAAQ;;;;OAI1C,EAAgB;sBACD,EAAM,OAAO,QAAQ;;;;OAIpC,EAAgB;0BACG,EAAM,WAAW,SAAS;;;;;OAK7C,EAAgB;OAChB,EAAgB;OAChB,EAAgB;eACR,EAAM,KAAK,SAAS;;;OAG5B,EAAgB,cAAc,EAAyB;0BACpC,EAAM,WAAW,SAAS;sBAC9B,EAAM,OAAO,QAAQ;;;;;OAKpC,EAAgB,cAAc,EAAyB;0BACpC,EAAM,WAAW,SAAS;oBAChC,EAAM,WAAW,SAAS;;;;OAIvC,EAAgB,cAAc,EAAyB;OACvD,EAAgB,cAAc,EAAyB;OACvD,EAAgB,cAAc,EAAyB;eAC/C,EAAM,KAAK,SAAS;;;OAG5B,EAAgB,cAAc,EAAyB;OACvD,EAAgB,cAAc,EAAyB;OACvD,EAAgB,cAAc,EAAyB;sBACxC,EAAM,OAAO,QAAQ;;;;OAIpC,EAAgB;oBACH,EAAM,OAAO,MAAM;gBACvB,EAAM,OAAO,MAAM;mBAChB,EAAM,QAAQ,MAAM,EAAE;uBAClB,EAAM,OAAO,OAAO;;;OAGpC,EAAgB;OAChB,EAAgB;OAChB,EAAgB;;;;;;OAMhB,EAAgB;oBACH,EAAM,OAAO,OAAO;gBACxB,EAAM,OAAO,OAAO;mBACjB,EAAM,QAAQ,OAAO,EAAE;uBACnB,EAAM,OAAO,OAAO;;;OAGpC,EAAgB;OAChB,EAAgB;OAChB,EAAgB;;;;;;OAMhB,EAAgB;oBACH,EAAM,OAAO,MAAM;gBACvB,EAAM,OAAO,MAAM;mBAChB,EAAM,QAAQ,MAAM,EAAE;uBAClB,EAAM,OAAO,OAAO;;;OAGpC,EAAgB;OAChB,EAAgB;OAChB,EAAgB;;;;;;OAMhB,EAAyB;0BACN,EAAY,KAAK,QAAQ;;oBAE/B,EAAY,KAAK,QAAQ;;yCAEJ,EAAY,OAAO,cAAc;iDACzB,EAAY,KAAK,QAAQ;;;;;OAKnE,EAAyB;iCACC,EAAY,KAAK,SAAS;;;;eAI5C,EAAY,KAAK,QAAQ;;;;oBAIpB,EAAY,KAAK,QAAQ;;;;OAItC,EAAyB;;;;;;OAMzB,EAAyB;OACzB,EAAyB;oBACZ,EAAY,QAAQ,OAAO;0BACrB,EAAY,QAAQ,OAAO;;eAEtC,EAAY,KAAK,OAAO;;;;OAIhC,EAAyB;OACzB,EAAyB;;;;eAIjB,EAAY,KAAK,OAAO;;;;OAIhC,EAAyB;oBACZ,EAAY,OAAO,cAAc;0BAC3B,EAAY,OAAO,cAAc;;eAE5C,EAAY,KAAK,OAAO;;;;;OAKhC,EAAyB;oBACZ,EAAY,OAAO,cAAc;0BAC3B,EAAY,OAAO,cAAc;;eAE5C,EAAY,KAAK,OAAO;;;;OAIhC,EAAyB,GAAG,GAA+B,4BAA4B,EAAkC;OACzH,EAAyB,GAAG,GAA+B,4BAA4B,EAAkC;OACzH,EAAyB,GAAG,GAA+B,4BAA4B,EAAkC;OACzH,EAAyB,GAAG,GAA+B,4BAA4B,EAAkC;oBAC5G,EAAY,OAAO,cAAc;0BAC3B,EAAY,OAAO,cAAc;;;;OAIpD,EAAyB,4BAA4B,EAAkC;;;;;;;oBAO1E,EAAY,OAAO,UAAU;;;OAG1C,EAAyB,GAAG,GAA+B;;;;OAI3D,EAAyB;;;;;OAKzB,EAAyB;;;;iCAIC,EAAY,KAAK,SAAS;oBACvC,EAAY,KAAK,QAAQ;;;;;OAKtC,EAAyB;;;;;;;;OAQzB,EAAyB;;;;;;;;;;;;;;;;;OAiBzB,EAAyB;OACzB,EAAyB;;;;;OAKzB,EAAyB;;;;;;;;0BAQN,EAAY,KAAK,MAAM;;oBAE7B,EAAY,KAAK,QAAQ;;;;;;;;;;OAUtC,EAAyB;OACzB,EAAyB;OACzB,EAAyB;sBACV,EAAY,MAAM,QAAQ;oBAC5B,EAAY,MAAM,QAAQ;;;OAGvC,EAAyB;;;;;;;+BAOD,EAAY,KAAK,QAAQ;iCACvB,EAAY,KAAK,QAAQ;;;;;OAKnD,EAAyB;OACzB,EAAyB;;;;;;;oBAOZ,EAAY,KAAK,QAAQ;;;;;OAKtC,EAAyB;;;;;;;;;;;;;;;;;OAiBzB,EAAyB;;;;;;;;oBAQZ,EAAY,KAAK,QAAQ;;;;;;;OAOtC,EAAyB;;;;OAIzB,EAAyB,GAAG,EAAkC;oBACjD,EAAY,KAAK,QAAQ;uCACN,EAAY,QAAQ,OAAO;yCACzB,EAAY,OAAO,cAAc;0BAChD,EAAY,KAAK,QAAQ;;iDAEF,EAAY,KAAK,QAAQ;;;;OAInE,EAAyB,GAAG,EAAkC;;oBAEjD,EAAY,KAAK,QAAQ;;;;;;;;;;OAUtC,EAAyB,GAAG,EAAkC;;eAEtD,EAAY,KAAK,QAAQ;;;;;;;;OAQjC,EAAyB,GAAG,EAAkC;;;oBAGjD,EAAY,KAAK,SAAS;;;;OAIvC,EAAyB,GAAG,EAAkC;;;iCAGpC,EAAY,KAAK,SAAS;oBACvC,EAAY,KAAK,QAAQ;eAC9B,EAAY,KAAK,QAAQ;;;;;OAKjC,EAAyB,GAAG,EAAkC;;;;OAI9D,EAAyB,GAAG,EAAkC;oBACjD,EAAY,QAAQ,OAAO;0BACrB,EAAY,QAAQ,OAAO;;eAEtC,EAAY,KAAK,OAAO;;;;OAIhC,EAAyB,GAAG,EAAkC;oBACjD,EAAY,QAAQ,OAAO;0BACrB,EAAY,QAAQ,OAAO;;eAEtC,EAAY,KAAK,OAAO;;;;OAIhC,EAAyB,GAAG,EAAkC;OAC9D,EAAyB,GAAG,EAAkC;eACtD,EAAY,KAAK,OAAO;;;;OAIhC,EAAyB,GAAG,EAAkC;oBACjD,EAAY,OAAO,cAAc;0BAC3B,EAAY,OAAO,cAAc;;eAE5C,EAAY,KAAK,QAAQ;;;;;OAKjC,EAAyB,GAAG,EAAkC;;oBAEjD,EAAY,OAAO,cAAc;0BAC3B,EAAY,OAAO,cAAc;;eAE5C,EAAY,KAAK,QAAQ;;;;OAIjC,EAAyB,GAAG,EAAkC;OAC9D,EAAyB,GAAG,EAAkC;OAC9D,EAAyB,GAAG,EAAkC;OAC9D,EAAyB,GAAG,EAAkC;;;;eAItD,EAAY,KAAK,QAAQ;;;;OAIjC,EAAyB,GAAG,EAAkC;OAC9D,EAAyB,GAAG,EAAkC;OAC9D,EAAyB,GAAG,EAAkC;OAC9D,EAAyB,GAAG,EAAkC;;;;;OAK9D,EAAyB,GAAG,EAAkC;OAC9D,EAAyB,GAAG,EAAkC;;;;eAItD,EAAY,KAAK,QAAQ;;;;;;OAMjC,EAAyB,GAAG,EAAkC;;;;OAI9D,EAAyB,GAAG,EAAkC;;;;;;;;;;;;;;;;;OAiB9D,EAAyB,GAAG,EAAkC;OAC9D,EAAyB,GAAG,EAAkC;;;;;OAK9D,EAAyB,GAAG,EAAkC;;;;;;;;;;oBAUjD,EAAY,KAAK,QAAQ;;;;;;;;;;OAUtC,EAAyB,GAAG,EAAkC;;oBAEjD,EAAY,MAAM,QAAQ;;;OAGvC,EAAyB,GAAG,EAAkC;;;;;;;+BAOtC,EAAY,KAAK,QAAQ;iCACvB,EAAY,KAAK,QAAQ;;;;;OAKnD,EAAyB,GAAG,EAAkC;OAC9D,EAAyB,GAAG,EAAkC;sBAC/C,EAAY,KAAK,QAAQ;;;OAGxC,EAAyB,GAAG,EAAkC;OAC9D,EAAyB,GAAG,EAAkC;OAC9D,EAAyB,GAAG,EAAkC;sBAC/C,EAAY,MAAM,QAAQ;;;;;OAKzC,EAAyB,GAAG,EAAkC;;;;;;;;;;;;;;OAc9D,EAAyB,GAAG,EAAkC;;;;0BAI3C,EAAY,KAAK,MAAM;;oBAE7B,EAAY,KAAK,QAAQ;;;;;;;OAOtC,EAAyB,GAAG,EAAkC;;;;;;;;;;;OAW9D,EAAyB,GAAG,EAAkC;sBAC/C,EAAY,MAAM,QAAQ;oBAC5B,EAAY,MAAM,QAAQ;;;OAGvC,EAAyB,GAAG,EAAkC;;;wBAG7C,EAAY,KAAK,QAAQ;;;gCAGjB,EAAY,KAAK,QAAQ;iCACxB,EAAY,KAAK,QAAQ;;;;;;;;OAQnD,EAAyB,GAAG,EAAkC;sBAC/C,EAAY,MAAM,QAAQ;oBAC5B,EAAY,MAAM,QAAQ;;;OAGvC,EAAyB,GAAG,EAAkC;;;;oBAIjD,EAAY,KAAK,QAAQ;;;;;;;;;;OAUtC,EAAyB,GAAG,EAAkC;OAC9D,EAAyB,GAAG,EAAkC;sBAC/C,EAAY,KAAK,QAAQ;;;OAGxC,EAAyB,GAAG,EAAkC;OAC9D,EAAyB,GAAG,EAAkC;sBAC/C,EAAY,MAAM,QAAQ;;;;;OAKzC,EAAyB,GAAG,EAAkC;;;;;0BAK3C,EAAY,KAAK,MAAM;;oBAE7B,EAAY,KAAK,QAAQ;;;;;;;;;OAStC,EAAyB,GAAG,EAAkC;;;;;OAK9D,EAAyB,GAAG,EAAkC;sBAC/C,EAAY,MAAM,QAAQ;oBAC5B,EAAY,MAAM,QAAQ;;;OAGvC,EAAyB,GAAG,EAAkC;;;;;gCAKrC,EAAY,KAAK,QAAQ;iCACxB,EAAY,KAAK,QAAQ;;;;;;;;OAQnD,EAAyB,GAAG,EAAkC;sBAC/C,EAAY,MAAM,QAAQ;oBAC5B,EAAY,MAAM,QAAQ;;;OAGvC,EAAyB,GAAG,EAAkC;;;;;oBAKjD,EAAY,KAAK,QAAQ;;;;;;;;OAQtC,EAAyB,GAAG,EAAkC;;;;;;;;;;;;;;;OAe9D,EAAyB,GAAG,EAAkC;OAC9D,EAAyB,GAAG,EAAkC;sBAC/C,EAAY,KAAK,QAAQ;;;OAGxC,EAAyB,GAAG,EAAkC;OAC9D,EAAyB,GAAG,EAAkC;sBAC/C,EAAY,MAAM,QAAQ;;;;OAIzC,EAAyB,GAAG,EAAkC;;;;;;;0BAO3C,EAAY,KAAK,MAAM;;oBAE7B,EAAY,KAAK,QAAQ;;;;;;;;;OAStC,EAAyB,GAAG,EAAkC;sBAC/C,EAAY,MAAM,QAAQ;oBAC5B,EAAY,MAAM,QAAQ;;;OAGvC,EAAyB,GAAG,EAAkC;;;;;gCAKrC,EAAY,KAAK,QAAQ;iCACxB,EAAY,KAAK,QAAQ;;;;;;;;OAQnD,EAAyB,GAAG,EAAkC;sBAC/C,EAAY,MAAM,QAAQ;oBAC5B,EAAY,MAAM,QAAQ;;;OAGvC,EAAyB,GAAG,EAAkC;;;;;oBAKjD,EAAY,KAAK,QAAQ;;;;;;;;;OAStC,EAAyB,GAAG,EAAkC;OAC9D,EAAyB,GAAG,EAAkC;;;;;;OAM9D,EAAyB,GAAG,EAAkC;;;;;;;;OAQ9D,EAAyB,GAAG,EAAkC;;;;;OAK9D,EAAyB,GAAG,EAAkC;OAC9D,EAAyB,GAAG,EAAkC;;;;;;;;OAQ9D,EAAyB,GAAG,EAAkC;sBAC/C,EAAY,MAAM,QAAQ;oBAC5B,EAAY,MAAM,QAAQ;;;OAGvC,EAAyB,GAAG,EAAkC;;;;;gCAKrC,EAAY,KAAK,QAAQ;iCACxB,EAAY,KAAK,QAAQ;;;;;;;;OAQnD,EAAyB,GAAG,EAAkC;sBAC/C,EAAY,MAAM,QAAQ;oBAC5B,EAAY,MAAM,QAAQ;;;OAGvC,EAAyB,GAAG,EAAkC;;;;;oBAKjD,EAAY,KAAK,QAAQ;;;;;;;;;GC//BhC,MAAU,EACrB,WAAW,GACX,gBAAgB,GAChB,YAAY,GACZ,eACA,cAAW,IACX,sBAAmB,QACnB,SACA,iBACA,4BACA,GAAG,QACgB;CACnB,IAAM,CAAC,GAAQ,KAAa,GAAkB,EAAQ,EAAM;AAM5D,CAJA,QAAgB;AACd,MAAoB;IACnB,EAAE,CAAC,EAEN,QAAgB;AACd,EAAI,OAAO,KAAS,aAClB,EAAU,EAAK;IAEhB,CAAC,EAAK,CAAC;CAEV,IAAM,IAAc,EAAM,SAAS,cAAc,EAAM,SAAS,QAC1D,IAAwB,GAC5B,GACA,MAAqB,UAAU,KAA8B,KAAA,GAC7D,MAAqB,UAAU,KAA8B,KAAA,GAC7D,IAAW,IAA2B,KAAA,GACtC,EACD,EACK,IAAuB,GAC3B,GACA,IAAc,KAAiC,KAAA,GAC9C,GAA4B,OAAO,MACpC,EACD,EACK,IAAe,IAAW,KAAQ,GAElC,IAAmB;EACvB,GAAI,KAAsB,EAAE;EAC5B,OAAO;GACL,GAAK,GAA4B,SAAS,EAAE;GAC5C,MAAM;GACP;EACF,EAEK,IAAqB,KACzB,kBAAC,GAAD;EACE,MAAM,IAAS,kBAAkB;EACjC,MAAM;EACN,OAAO,EAAE,OAAO,EAAiB,MAAM,KAAK,OAAO;EACnD,CAAA;AAGJ,QACE,kBAAC,IAAD;EACE,GAAI;EACJ,MAAM;EACN,YAAY;EACZ,WAAW;EACX,YAAY;EACZ,eAAe,MAAa;AAC1B,OAAI,KAAY,GAAU;AACxB,MAAU,GAAM;AAChB;;AAIF,GAFA,EAAU,EAAS,EACnB,IAAe,EAAS,EACxB,IAA0B,EAAS;;EAErC,CAAA;;AAIN,GAAO,cAAc;;;AChGrB,IAAM,KAAW,yBAEJ,IAAkB,kBAClB,IAAwB,wBAExB,MAAyB,GAAG,MACvC,EAAW,OAAO,QAAQ,CAAC,KAAK,IAAI,CAAC,MAAM,EAEhC,WAA+B;AAC1C,KAAI,OAAO,WAAa,IACtB;CAGF,IAAM,EAAE,WAAQ,aAAU,GACtB,IAAQ,SAAS,eAAe,GAAS;AAO7C,CANK,MACH,IAAQ,SAAS,cAAc,QAAQ,EACvC,EAAM,KAAK,IACX,SAAS,KAAK,YAAY,EAAM,GAGlC,EAAM,cAAc;;;;OAIf,EAAgB;sBACD,EAAM,OAAO,QAAQ;sBACrB,EAAM,OAAO,aAAa;;uBAEzB,EAAM,OAAO,OAAO;0BACjB,EAAM,WAAW,QAAQ;;oBAE/B,EAAM,OAAO,OAAO;gBACxB,EAAM,OAAO,OAAO;mBACjB,EAAM,QAAQ,OAAO,EAAE;;;;;;;OAOnC,EAAgB;0BACG,EAAM,WAAW,SAAS;sBAC9B,EAAM,OAAO,QAAQ;;;;OAIpC,EAAgB;sBACD,EAAM,OAAO,QAAQ;;;;;;OAMpC,EAAgB;oBACH,EAAM,OAAO,MAAM;gBACvB,EAAM,OAAO,MAAM;mBAChB,EAAM,QAAQ,MAAM,EAAE;;;OAGlC,EAAgB;oBACH,EAAM,OAAO,MAAM;gBACvB,EAAM,OAAO,MAAM;mBAChB,EAAM,QAAQ,MAAM,EAAE;;;;;OAKlC,EAAgB;OAChB,EAAgB;sBACD,EAAM,OAAO,MAAM;;;;;;OAMlC,EAAgB;OAChB,EAAgB;sBACD,EAAM,OAAO,MAAM;sBACnB,EAAM,OAAO,WAAW;;;;;OAKvC,EAAgB;OAChB,EAAgB;sBACD,EAAM,OAAO,MAAM;sBACnB,EAAM,OAAO,WAAW;;;;;OAKvC,EAAgB;OAChB,EAAgB;OAChB,EAAgB;;;;;;;OAOhB,EAAgB;OAChB,EAAgB;sBACD,EAAM,OAAO,MAAM;;;;OAIlC,EAAgB;OAChB,EAAgB;sBACD,EAAY,OAAO,QAAQ;;;;OAI1C,EAAgB;OAChB,EAAgB;sBACD,EAAM,OAAO,QAAQ;;;;;;OAMpC,EAAgB;0BACG,EAAM,WAAW,SAAS;;;;;;;OAO7C,EAAgB;;;;eAIR,EAAY,KAAK,OAAO;;;OAGhC,EAAgB;eACR,EAAM,KAAK,YAAY;;;;;OAK/B,EAAgB;eACR,EAAY,KAAK,OAAO;qBAClB,EAAM,gBAAgB;;;OAGpC,EAAgB;eACR,EAAM,OAAO,MAAM;qBACb,EAAM,gBAAgB;;;OAGpC,EAAgB;eACR,EAAM,KAAK,SAAS;;;OAG5B,EAAgB;eACR,EAAM,KAAK,SAAS;;;;;;OAM5B,EAAgB;OAChB,EAAgB;eACR,EAAM,OAAO,QAAQ;;;;OAI7B,EAAgB;OAChB,EAAgB;eACR,EAAM,OAAO,QAAQ;;;OAG7B,EAAgB;OAChB,EAAgB;eACR,EAAM,OAAO,QAAQ;;;OAG7B,EAAgB;OAChB,EAAgB;eACR,EAAM,KAAK,SAAS;;;;;OAK5B,EAAgB;eACR,EAAM,KAAK,QAAQ;oBACd,EAAM,WAAW,QAAQ;;;OAGtC,EAAgB;eACR,EAAM,KAAK,MAAM;;;;;OAKzB,EAAsB;0BACH,EAAM,KAAK,MAAM;;oBAEvB,EAAM,WAAW,QAAQ;iDACI,EAAY,KAAK,QAAQ;;;;;OAKnE,EAAsB;;;;;;OAMtB,EAAsB;OACtB,EAAsB;OACtB,EAAsB;OACtB,EAAsB;OACtB,EAAsB;OACtB,EAAsB;;;;;;;OAOtB,EAAsB;;;eAGd,EAAM,KAAK,MAAM;;;;;;;OAOzB,EAAsB;eACd,EAAM,KAAK,MAAM;;;;;;;;;;OAUzB,EAAsB;eACd,EAAM,OAAO,MAAM;;;OAG3B,EAAsB;;;;;eAKd,EAAO,QAAQ,QAAQ;;;;;;;;OAQ/B,EAAsB;OACtB,EAAsB;OACtB,EAAsB;OACtB,EAAsB;;;;OAItB,EAAsB;eACd,EAAO,QAAQ,QAAQ;;;;wBAId,EAAO,WAAW,OAAO,cAAc;;;;;OAKxD,EAAsB;eACd,EAAO,QAAQ,MAAM;;;OAG7B,EAAsB;OACtB,EAAsB;eACd,EAAO,QAAQ,QAAQ;;;OAG/B,EAAsB;OACtB,EAAsB;;;;OAItB,EAAsB;OACtB,EAAsB;;;;;;;;eAQd,EAAM,KAAK,MAAM;;;OAGzB,EAAsB;OACtB,EAAsB;;;;OAItB,EAAsB;;;;OAItB,EAAsB;;;;OAItB,EAAsB;OACtB,EAAsB;;;;;;;;OAQtB,EAAsB;eACd,EAAM,OAAO,QAAQ;;;;;;;;;;;OAW7B,EAAsB;;;;OAItB,EAAsB;eACd,EAAY,KAAK,OAAO;;;;OAIhC,EAAsB;eACd,EAAY,KAAK,OAAO;;;OAGhC,EAAsB;;;;OAItB,EAAsB;;;;;;OAMtB,EAAsB;;;;;;;;;;;;;;OActB,EAAsB;;;oBAGT,EAAY,SAAS,OAAO;eACjC,EAAM,KAAK,MAAM;;;;;OAKzB,EAAsB;;;;OAItB,EAAsB;0BACH,EAAY,KAAK,OAAO;;;;;;OAM3C,EAAsB;OACtB,EAAsB;oBACT,EAAY,OAAO,cAAc;0BAC3B,EAAY,OAAO,cAAc;0BACjC,EAAY,OAAO,UAAU;eACxC,EAAY,KAAK,OAAO;;;;;OAKhC,EAAsB;;;;;;OAMtB,EAAsB;OACtB,EAAsB;OACtB,EAAsB;OACtB,EAAsB;oBACT,EAAY,OAAO,cAAc;0BAC3B,EAAY,OAAO,cAAc;0BACjC,EAAY,OAAO,UAAU;eACxC,EAAY,KAAK,OAAO;;;;;OAKhC,EAAsB;OACtB,EAAsB;OACtB,EAAsB;OACtB,EAAsB;;;;;;;;;;OAUtB,EAAsB;OACtB,EAAsB;OACtB,EAAsB;OACtB,EAAsB;oBACT,EAAY,OAAO,cAAc;0BAC3B,EAAY,OAAO,cAAc;0BACjC,EAAY,OAAO,UAAU;eACxC,EAAY,KAAK,OAAO;;;;OAIhC,EAAsB;OACtB,EAAsB;OACtB,EAAsB;;;;OAItB,EAAsB;OACtB,EAAsB;OACtB,EAAsB;OACtB,EAAsB;;;;OAItB,EAAsB;OACtB,EAAsB;oBACT,EAAY,OAAO,cAAc;0BAC3B,EAAY,OAAO,cAAc;0BACjC,EAAY,OAAO,UAAU;eACxC,EAAY,KAAK,OAAO;;;;;OAKhC,EAAsB;oBACT,EAAY,OAAO,cAAc;0BAC3B,EAAY,OAAO,cAAc;;;OAGpD,EAAsB;OACtB,EAAsB;;;;;;;OAOtB,EAAsB;;;;OAItB,EAAsB;eACd,EAAM,OAAO,MAAM;;;;;OAK3B,EAAsB;eACd,EAAY,MAAM,aAAa;;;;;OAKvC,EAAsB;oBACT,EAAY,OAAO,YAAY;eACpC,EAAY,KAAK,OAAO;;;;OAIhC,EAAsB;OACtB,EAAsB;OACtB,EAAsB;oBACT,EAAY,OAAO,YAAY;;;OAG5C,EAAsB;OACtB,EAAsB;oBACT,EAAY,OAAO,cAAc;0BAC3B,EAAY,OAAO,UAAU;eACxC,EAAY,KAAK,OAAO;;;;;OAKhC,EAAsB;OACtB,EAAsB;OACtB,EAAsB;OACtB,EAAsB;oBACT,EAAY,OAAO,cAAc;0BAC3B,EAAY,OAAO,UAAU;eACxC,EAAY,KAAK,OAAO;;;;OAIhC,EAAsB;OACtB,EAAsB;OACtB,EAAsB;oBACT,EAAY,OAAO,YAAY;;;;GC7gBtC,KAAiB,cAIjB,MAAc,EACzB,WAAW,GACX,gBAAgB,GAChB,YAAY,GACZ,GAAG,QACoB;AACvB,SAAgB;AACd,MAAwB;IACvB,EAAE,CAAC;CAEN,IAAM,IAAkB,GAAsB,GAAiB,EAAkB,EAC3E,IAA2B,GAC/B,GACC,GAA4B,OAAO,MACpC,EACD,EAEK,IAAmB;EACvB,GAAI,KAAsB,EAAE;EAC5B,OAAO;GACL,GAAK,GAA4B,SAAS,EAAE;GAC5C,MAAM;GACP;EACF,EAEK,IAAiB,EAAM,UAAA,cACvB,IAAsB,EAAM,eAAA;AAElC,QACE,kBAAC,GAAD;EACE,GAAI;EACJ,QAAQ;EACR,aAAa;EACb,WAAW;EACX,YAAY;EACZ,CAAA;;AAIN,GAAW,cAAc;AAEzB,IAAM,MAAiB,EACrB,WAAW,GACX,gBAAgB,GAChB,YAAY,GACZ,GAAG,QACqB;AACxB,SAAgB;AACd,MAAwB;IACvB,EAAE,CAAC;CAEN,IAAM,IAAkB,GAAsB,GAAiB,EAAkB,EAC3E,IAA2B,GAC/B,GACC,GAA4B,OAAO,MACpC,EACD,EAEK,IAAmB;EACvB,GAAI,KAAsB,EAAE;EAC5B,OAAO;GACL,GAAK,GAA4B,SAAS,EAAE;GAC5C,MAAM;GACP;EACF,EAEK,IAAiB,EAAM,UAAA,cACvB,IAAsB,EAAM,eAAe,CAAA,cAAA,aAAgC;AAEjF,QACE,kBAAC,EAAc,aAAf;EACE,GAAI;EACJ,QAAQ;EACR,aAAa;EACb,WAAW;EACX,YAAY;EACZ,CAAA;;AAIN,GAAc,cAAc,0BAG5B,GAA0E,cAAc;;;ACjGxF,IAAM,KAAW,yBAEJ,IAAuB,kBACvB,IAA6B,wBAE7B,MAA6B,GAAG,MAC3C,EAAW,OAAO,QAAQ,CAAC,KAAK,IAAI,CAAC,MAAM,EAEhC,WAA+B;AAC1C,KAAI,OAAO,WAAa,IACtB;CAGF,IAAM,EAAE,UAAO,cAAW,GACpB,IAAY,EAAS,SAAS,EAAE,EAChC,IAAY,OAAO,EAAU,UAAU,EACvC,IAAe,OAAO,EAAU,aAAa,EAC7C,IAAqB,EAAO,SAAS,YACrC,IAAiB,EAAO,SAAS,QACjC,IAAe,EAAO,SAAS,MAC/B,IAAmB,EAAM,KAAK,OAC9B,IAAwB,EAAM,WAAW,SAC3C,IAAQ,SAAS,eAAe,GAAS;AAO7C,CANK,MACH,IAAQ,SAAS,cAAc,QAAQ,EACvC,EAAM,KAAK,IACX,SAAS,KAAK,YAAY,EAAM,GAGlC,EAAM,cAAc;;;OAGf,EAAqB;sBACN,EAAM,OAAO,QAAQ;sBACrB,EAAM,OAAO,aAAa;;uBAEzB,EAAM,OAAO,OAAO;0BACjB,EAAM,WAAW,QAAQ;;oBAE/B,EAAM,OAAO,OAAO;gBACxB,EAAM,OAAO,OAAO;mBACjB,EAAM,QAAQ,OAAO,EAAE;;;eAG3B,EAAM,KAAK,QAAQ;;;;;;;OAO3B,EAAqB;sBACN,EAAM,OAAO,QAAQ;;;;OAIpC,EAAqB;oBACR,EAAM,OAAO,MAAM;gBACvB,EAAM,OAAO,MAAM;mBAChB,EAAM,QAAQ,MAAM,EAAE;;;OAGlC,EAAqB;oBACR,EAAM,OAAO,MAAM;gBACvB,EAAM,OAAO,MAAM;mBAChB,EAAM,QAAQ,MAAM,EAAE;;;;;OAKlC,EAAqB;OACrB,EAAqB;sBACN,EAAM,OAAO,MAAM;;;;;;OAMlC,EAAqB;OACrB,EAAqB;sBACN,EAAM,OAAO,MAAM;sBACnB,EAAM,OAAO,WAAW;;0BAEpB,EAAM,WAAW,MAAM;;;;OAI1C,EAAqB;OACrB,EAAqB;sBACN,EAAM,OAAO,MAAM;sBACnB,EAAM,OAAO,WAAW;;;;;OAKvC,EAAqB;OACrB,EAAqB;OACrB,EAAqB;;;;;;;OAOrB,EAAqB;OACrB,EAAqB;sBACN,EAAM,OAAO,MAAM;;;;OAIlC,EAAqB;OACrB,EAAqB;sBACN,EAAa;;;;OAI5B,EAAqB;OACrB,EAAqB;sBACN,EAAM,OAAO,QAAQ;;;;;;OAMpC,EAAqB;sBACN,EAAM,KAAK,SAAS;0BAChB,EAAM,WAAW,SAAS;;eAErC,EAAM,KAAK,SAAS;;;OAG5B,EAAqB;;;;eAIb,EAAU;;;OAGlB,EAAqB;eACb,EAAM,KAAK,YAAY;;;;;OAK/B,EAAqB;eACb,EAAM,KAAK,SAAS;;;;;OAK5B,EAAqB;eACb,EAAM,KAAK,QAAQ;oBACd,EAAM,WAAW,QAAQ;;;OAGtC,EAAqB;eACb,EAAM,KAAK,MAAM;;;;;OAKzB,EAA2B;0BACR,EAAM,KAAK,MAAM;;oBAEvB,EAAM,WAAW,QAAQ;iDACI,EAAiB,QAAQ,EAAsB;;;;;;;OAOzF,EAA2B;;;oBAGd,EAAM,WAAW,QAAQ;;;;OAItC,EAA2B;;;;;;;OAO3B,EAA2B;;;;;;OAM3B,EAA2B;eACnB,EAAM,KAAK,QAAQ;;;;;OAK3B,EAA2B;;;;;;;;OAQ3B,EAA2B;oBACd,EAAM,WAAW,MAAM;;;OAGpC,EAA2B;OAC3B,EAA2B;;;;eAInB,EAAa;;;;;OAKrB,EAA2B;OAC3B,EAA2B;oBACd,EAAmB;0BACb,EAAmB;;;gCAGb,EAAM,OAAO,aAAa,GAAG,EAAe;eAC7D,EAAa;;;;;OAKrB,EAA2B;OAC3B,EAA2B;oBACd,EAAmB;0BACb,EAAmB;;;;;;OAMtC,EAA2B;;;;GC9NrB,MAAc,EACzB,WAAW,GACX,gBAAgB,GAChB,YAAY,GACZ,cAAW,OACX,YAAY,GACZ,QAAQ,GACR,GAAG,QACoB;AACvB,SAAgB;AACd,MAAwB;IACvB,EAAE,CAAC;CAEN,IAAM,IAAa,MAAa,SAAS,GACnC,IAAc,MAAa,QAAS,KAAkB,WAAa,KAAkB,YACrF,IAAkB,GAA0B,GAAsB,EAAkB,EACpF,IAAuB,GAC3B,GACC,GAA4B,OAAO,MACpC,EACD,EACK,IAAmB;EACvB,GAAI,KAAsB,EAAE;EAC5B,OAAO;GACL,GAAK,GAA4B,SAAS,EAAE;GAC5C,MAAM;GACP;EACF;AAED,QACE,kBAAC,IAAD;EACE,GAAI;EACJ,WAAW;EACX,YAAY;EACA;EACZ,QAAQ;EACR,CAAA;;AAIN,GAAW,cAAc;;;ACvDzB,IAAM,KAAW,mBACX,KAAiB,YAIjB,MAA6C,MAAgB;CACjE,IAAM,IAAkB,GAAG,GAAe,GAAG,EAAM,aAAa,KAAK,MAAM;AAC3E,QAAO;EAAE,GAAG;EAAO,WAAW;EAAiB;GAQpC,MAAS,EAAE,eAAY,IAAI,GAAG,QAAwB;AACjE,SAAgB;AACd,MAAI,OAAO,WAAa,KAAa;GACnC,IAAI,IAAQ,SAAS,eAAe,GAAS;AAC7C,GAAK,MACH,IAAQ,SAAS,cAAc,QAAQ,EACvC,EAAM,KAAK,IACX,SAAS,KAAK,YAAY,EAAM;GAElC,IAAM,EAAE,aAAU;AAElB,KAAM,cAAc;;;;;;;;;;;;;;0BAcA,EAAM,OAAO,QAAQ;0BACrB,EAAM,OAAO,aAAa;;2BAEzB,EAAM,OAAO,OAAO;8BACjB,EAAM,WAAW,QAAQ;mBACpC,EAAM,KAAK,QAAQ;;;;;;;;2BAQX,EAAM,OAAO,OAAO;;;;;;;qCAOV,EAAM,OAAO,OAAO;wCACjB,EAAM,OAAO,OAAO;;;;;;;;;;;;;;2BAcjC,EAAM,OAAO,OAAO;;;;;;;;0BAQrB,EAAM,OAAO,QAAQ;;;;;;;;;;;;0BAYrB,EAAM,OAAO,MAAM;0BACnB,EAAM,OAAO,WAAW;;;;;;;0BAOxB,EAAM,OAAO,MAAM;0BACnB,EAAM,OAAO,WAAW;;;;;;;;;;;0BAWxB,EAAM,OAAO,MAAM;;;;;;;;;;;;;;0BAcnB,EAAM,OAAO,MAAM;;;;;;;;;;;;oBAYzB,EAAM,OAAO,aAAa,SAAS,EAAM,OAAO,QAAQ;2BACjD,EAAM,OAAO,OAAO;;;;8BAIjB,EAAM,WAAW,QAAQ;mBACpC,EAAM,KAAK,QAAQ;;;;0BAIZ,EAAM,OAAO,MAAM;;;;;0BAKnB,EAAM,OAAO,MAAM;;;mBAG1B,EAAM,KAAK,MAAM;;;;;mBAKjB,EAAM,KAAK,YAAY;;;;;;;;;;0BAUhB,EAAM,OAAO,MAAM;;;;;8BAKf,EAAM,WAAW,SAAS;;;;;;;;;;;0BAW9B,EAAM,OAAO,MAAM;0BACnB,EAAM,OAAO,WAAW;;;;mBAI/B,EAAM,KAAK,MAAM;yBACX,EAAM,gBAAgB;;;;;;;;;;;;;;;mBAe5B,EAAM,KAAK,MAAM;;;;;0BAKV,EAAM,OAAO,MAAM;;;;;0BAKnB,EAAM,OAAO,QAAQ;;;;;;;;8BAQjB,EAAM,WAAW,SAAS;;mBAErC,EAAM,KAAK,SAAS;qCACF,EAAM,KAAK,SAAS;;;;;;8BAM3B,EAAM,WAAW,SAAS;0BAC9B,EAAM,OAAO,QAAQ;mBAC5B,EAAM,KAAK,SAAS;;;;;;mBAMpB,EAAM,KAAK,YAAY;;;;;oBAKtB,EAAM,OAAO,MAAM;wBACf,EAAM,OAAO,MAAM;qBACtB,EAAM,QAAQ,MAAM,EAAE,GAAG,EAAM,QAAQ,MAAM,EAAE;;;;;oBAKhD,EAAM,OAAO,OAAO;wBAChB,EAAM,OAAO,OAAO;qBACvB,EAAM,QAAQ,OAAO,EAAE,GAAG,EAAM,QAAQ,OAAO,EAAE;;;;;oBAKlD,EAAM,OAAO,MAAM;wBACf,EAAM,OAAO,MAAM;qBACtB,EAAM,QAAQ,MAAM,EAAE,GAAG,EAAM,QAAQ,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0BA+B1C,EAAM,OAAO,MAAM;0BACnB,EAAM,OAAO,WAAW;;;;;;;;;;;;;;;;;;;;;;IAuB7C,EAAE,CAAC;CAEN,IAAM,IAAkB,GAAG,GAAe,GAAG,IAAY,MAAM;AAE/D,QAAO,kBAAC,GAAD;EAAU,GAAI;EAAO,WAAW;EAAmB,CAAA;;AAG5D,GAAM,cAAc;AAEpB,IAAa,MAAiB,MACrB,kBAAC,EAAS,UAAV,EAAmB,GAAI,GAAiB,EAAM,EAAI,CAAA;AAG3D,GAAc,cAAc;AAE5B,IAAa,MAAe,MACnB,kBAAC,EAAS,QAAV,EAAiB,GAAI,GAAiB,EAAM,EAAI,CAAA;AAGzD,GAAY,cAAc;AAE1B,IAAa,MAAY,MAChB,kBAAC,EAAS,KAAV,EAAc,GAAI,GAAiB,EAAM,EAAI,CAAA;AAGtD,GAAS,cAAc;;;AC/VvB,IAAM,KAAW,kCAEJ,WAAgC;AAC3C,KAAI,OAAO,WAAa,IACtB;CAGF,IAAM,EAAE,UAAO,aAAU,GACrB,IAAQ,SAAS,eAAe,GAAS;AAO7C,CANK,MACH,IAAQ,SAAS,cAAc,QAAQ,EACvC,EAAM,KAAK,IACX,SAAS,KAAK,YAAY,EAAM,GAGlC,EAAM,cAAc;;;;;;;;;;;sBAWA,EAAM,OAAO,QAAQ;sBACrB,EAAM,OAAO,aAAa;;;0BAGtB,EAAM,WAAW,QAAQ;eACpC,EAAM,KAAK,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBA6BZ,EAAM,OAAO,MAAM;sBACnB,EAAM,OAAO,WAAW;;;;;;;;;;;;;;;;;;;;sBAoBxB,EAAM,OAAO,MAAM;;;;;;;;;;;;;;;;;;;;;sBAqBnB,EAAM,OAAO,MAAM;sBACnB,EAAM,OAAO,WAAW;;;;;;;;;eAS/B,EAAM,KAAK,QAAQ;;;;;;;eAOnB,EAAM,KAAK,MAAM;qBACX,EAAM,gBAAgB;;;;sBAIrB,EAAM,OAAO,QAAQ;;eAE5B,EAAM,KAAK,QAAQ;;;;;;;;;;;;;;;;;0BAiBR,EAAM,WAAW,SAAS;;eAErC,EAAM,KAAK,SAAS;;;;;;;;0BAQT,EAAM,WAAW,SAAS;sBAC9B,EAAM,OAAO,QAAQ;eAC5B,EAAM,KAAK,SAAS;;;;;;;sBAOb,EAAM,OAAO,MAAM;;;;;;;sBAOnB,EAAM,OAAO,QAAQ;;;;gBAI3B,EAAM,OAAO,MAAM;oBACf,EAAM,OAAO,MAAM;;;;gBAIvB,EAAM,OAAO,OAAO;oBAChB,EAAM,OAAO,OAAO;;;;gBAIxB,EAAM,OAAO,MAAM;oBACf,EAAM,OAAO,MAAM;;;;;;;;;;;;eAYxB,EAAM,KAAK,MAAM;;;;;oBAKZ,EAAM,QAAQ,SAAS;;;;;;;;;;;;;;;GCtMrC,KAAwB,mBAIjB,MAAe,EAAE,eAAY,IAAI,mBAAgB,IAAI,GAAG,QAA8B;AACjG,SAAgB;AACd,MAAyB;IACxB,EAAE,CAAC;CAEN,IAAM,IAAkB,GAAG,GAAsB,GAAG,IAAY,MAAM,EAChE,IAAsB,GAAG,GAAsB,QAAQ,IAAgB,MAAM;AAEnF,QAAO,kBAAC,GAAD;EAAgB,GAAI;EAAO,WAAW;EAAiB,eAAe;EAAuB,CAAA;;AAGtG,GAAY,cAAc;;;ACP1B,IAAM,KAAW,sBAEJ,MAAY,EACvB,YAAS,MACT,cAAW,WACX,eAAY,IACZ,GAAG,QACgB;AACnB,SAAgB;AACd,MAAI,OAAO,WAAa,KAAa;GACnC,IAAI,IAAQ,SAAS,eAAe,GAAS;AAC7C,GAAK,MACH,IAAQ,SAAS,cAAc,QAAQ,EACvC,EAAM,KAAK,IACX,SAAS,KAAK,YAAY,EAAM;GAElC,IAAM,EAAE,gBAAa;AAErB,KAAM,cAAc;;;;;;;;;;2BAUC,EAAS,OAAO;0BACjB,EAAS,OAAO,QAAQ;0BACxB,EAAS,YAAY,QAAQ;8BACzB,EAAS,WAAW,QAAQ;;;;;;;;;;;;+BAY3B,EAAS,OAAO,MAAM;;;;;;;0BAO3B,EAAS,OAAO,QAAQ;0BACxB,EAAS,YAAY,QAAQ;8BACzB,EAAS,WAAW,QAAQ;;;;0BAIhC,EAAS,OAAO,QAAQ;8BACpB,EAAS,WAAW,QAAQ;;;;0BAIhC,EAAS,KAAK,QAAQ;;;;0BAItB,EAAS,OAAO,QAAQ;8BACpB,EAAS,WAAW,QAAQ;;;;;;;;;8BAS5B,EAAS,KAAK,cAAc;;;;;;;;;8BAS5B,EAAS,KAAK,cAAc;;;;0BAIhC,EAAS,OAAO,MAAM;;;;;;0BAMtB,EAAS,OAAO,MAAM;0BACtB,EAAS,YAAY,QAAQ;;;;;0BAK7B,EAAS,OAAO,MAAM;8BAClB,EAAS,WAAW,aAAa;;;;;;;;;0BASrC,EAAS,OAAO,MAAM;8BAClB,EAAS,WAAW,aAAa;;;;;8BAKjC,EAAS,WAAW,SAAS;;;;;;0BAMjC,EAAS,KAAK,QAAQ;;8BAElB,EAAS,KAAK,cAAc;;;;;mBAKvC,EAAS,KAAK,GAAG;oBAChB,EAAS,KAAK,GAAG;;;;;;;;;;;mBAWlB,EAAS,cAAc,GAAG,MAAM;oBAC/B,EAAS,cAAc,GAAG,OAAO;;;;mBAIlC,EAAS,KAAK,GAAG;oBAChB,EAAS,KAAK,GAAG;;;;;;;;;;;mBAWlB,EAAS,cAAc,GAAG,MAAM;oBAC/B,EAAS,cAAc,GAAG,OAAO;;;;mBAIlC,EAAS,KAAK,GAAG;oBAChB,EAAS,KAAK,GAAG;;;;;;;;;;;mBAWlB,EAAS,cAAc,GAAG,MAAM;oBAC/B,EAAS,cAAc,GAAG,OAAO;;;;;mBAKlC,EAAS,KAAK,GAAG;oBAChB,EAAS,KAAK,GAAG;2BACV,EAAS,OAAO;oBACvB,EAAS,YAAY,QAAQ,WAAW,EAAS,OAAO,QAAQ;8BACtD,EAAS,WAAW,QAAQ;;;;;;;mBAOvC,EAAS,KAAK,GAAG;oBAChB,EAAS,KAAK,GAAG;;;;mBAIlB,EAAS,KAAK,GAAG;oBAChB,EAAS,KAAK,GAAG;;;;;;0BAMX,EAAS,OAAO,QAAQ;0BACxB,EAAS,YAAY,QAAQ;8BACzB,EAAS,WAAW,QAAQ;;;;0BAIhC,EAAS,OAAO,QAAQ;8BACpB,EAAS,WAAW,QAAQ;;;;;8BAK5B,EAAS,WAAW,QAAQ;;;;0BAIhC,EAAS,KAAK,QAAQ;;;;;;;;;;;wBAWxB,EAAS,KAAK,cAAc;;;;;;mBAMjC,EAAS,cAAc,GAAG,MAAM;oBAC/B,EAAS,cAAc,GAAG,OAAO;;;;mBAIlC,EAAS,cAAc,GAAG,MAAM;oBAC/B,EAAS,cAAc,GAAG,OAAO;;;;mBAIlC,EAAS,cAAc,GAAG,MAAM;oBAC/B,EAAS,cAAc,GAAG,OAAO;;;;;0BAK3B,EAAS,OAAO,MAAM;8BAClB,EAAS,WAAW,aAAa;;;;0BAIrC,EAAS,KAAK,QAAQ;;;;;;;;8BAQlB,EAAS,WAAW,SAAS;;;;IAItD,EAAE,CAAC;CAEN,IAAM,IAAkB,gCAAgC,EAAO,sBAAsB,EAAS,GAAG,IAAY,MAAM;AAEnH,QAAO,kBAAC,GAAD;EAAa,GAAI;EAAO,WAAW;EAAmB,CAAA;;AAG/D,GAAS,cAAc,YACvB,GAAS,QAAQ,EAAY;;;ACxQ7B,IAAM,KAAW;AAEjB,SAAS,KAAe;AACtB,KAAI,OAAO,WAAa,IAAa;CACrC,IAAI,IAAQ,SAAS,eAAe,GAAS;AAC7C,CAAK,MACH,IAAQ,SAAS,cAAc,QAAQ,EACvC,EAAM,KAAK,IACX,SAAS,KAAK,YAAY,EAAM;CAGlC,IAAM,IAAW,EAAiB,OAAO,QAAQ,SAC3C,IAAgB,EAAiB,OAAO,QAAQ,OAChD,IAAkB,EAAiB,OAAO,QAAQ,SAClD,IAAmB,EAAiB,OAAO,QAAQ,YACnD,IAAY,EAAiB,MAAM,KAAK,MACxC,IAAiB,EAAiB,MAAM,KAAK,QAC7C,IAAmB,EAAiB,WAAW,KAAK,OACpD,IAAoB,EAAiB,SAAS,WAAW,UACzD,IAAQ,EAAiB,SAAS,WAAW,SAC7C,IAAe,EAAiB,MAAM,YAAY,cAClD,IAAS,EAAiB,OAAO,QAAQ,MACzC,IAAU,EAAiB,OAAO,QAAQ,SAC1C,IAAe,EAAiB,OAAO,QAAQ;AAErD,GAAM,cAAc;;oBAEF,EAAU;;;;;;oBAMV,EAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBAuDT,EAAM;;;;;oBAKN,EAAe;;;;oBAIf,EAAc;;;;oBAId,EAAiB;;;;oBAIjB,EAAgB;;;;;2BAKT,EAAa;;;;;oBAKpB,EAAkB;;;;oBAIlB,EAAiB;;;;;;;;;;eAUtB,EAAO;;;;eAIP,EAAQ;;;;;eAKR,EAAa;;;;AAK5B,SAAS,GAAgB,GAAG,GAAkC;AAC5D,QAAO,EAAM,OAAO,QAAQ,CAAC,KAAK,IAAI;;AAGxC,IAAM,KAAgC;CACpC,SAAS;CACT,YAAY;CACZ,KAAK;CACN,EAEK,KAAiC;CACrC,SAAS;CACT,eAAe;CACf,KAAK;CACN,EAEK,KAA4B;CAChC,YAAY;CACZ,UAAU,EAAiB,OAAO,WAAW,MAAM;CACnD,YAAY,EAAiB,OAAO,WAAW,MAAM;CACrD,YAAY;CACZ,OAAO,EAAiB,MAAM,KAAK;CACpC,EAEK,KAAkC;CACtC,YAAY;CACZ,UAAU;CACV,YAAY;CACZ,YAAY;CACZ,OAAO,EAAiB,MAAM,KAAK;CACpC,EAEY,MAAU,EACrB,YACA,qBAAkB,SAClB,YAAS,MACT,aAAU,UACV,gBAAa,IACb,oBAAiB,IACjB,kBACA,OACA,cACA,oBACA,sBACA,GAAG,QACc;AACjB,SAAgB;AACd,MAAc;IACb,EAAE,CAAC;CAEN,IAAM,IAAc,IAAO,EACrB,IAAW,MAAO,KAAW,IAAgB,IAAc,KAAA,IAC3D,IAA0B,IAAc,KAAmB,MAAO,GAClE,IAA4B,IAAc,KAAqB,MAAO,GACtE,IAAsB,IAAiB,IAAgB,KAAA,GAEvD,IAAY,IAChB,kBAAC,OAAD;EAAK,OAAO;YAAZ,CACE,kBAAC,SAAD;GAAO,SAAS;GAAU,OAAO;aAC9B;GACK,CAAA,EACP,IAAsB,kBAAC,QAAD;GAAM,OAAO;aAAmB;GAA2B,CAAA,GAAG,KACjF;MACJ;AAEJ,QACE,kBAAC,QAAD;EAAM,OAAO;YAAb;GACG,MAAoB,SAAS,IAAY;GAC1C,kBAAC,GAAD;IACE,IAAI;IACJ,iBAAiB;IACjB,mBAAmB;IACnB,WAAW,GAAgB,aAAa,kBAAkB,KAAU,mBAAmB,KAAW,EAAU;IAC5G,GAAI;IACJ,CAAA;GACD,MAAoB,UAAU,IAAY;GACtC;;GC3OE,MAAkB,MAA4B;AACzD,KAAI,KAAU,KACZ,QAAO;AAGT,KAAI,OAAO,KAAU,SACnB,QAAO,EAAM,MAAM,CAAC,SAAS;AAG/B,KAAI,MAAM,QAAQ,EAAM,CACtB,QAAO,EAAM,SAAS;AAGxB,KAAI,OAAO,KAAU,YAAY,OAAO,KAAU,UAChD,QAAO;AAGT,KAAI,OAAO,KAAU,UAAU;EAC7B,IAAM,IAAa;AAKnB,SAJI,OAAO,EAAW,WAAY,aACzB,EAAW,SAAS,GAGtB,OAAO,KAAK,EAAiC,CAAC,SAAS;;AAGhE,QAAO;GAGI,MACX,GACA,GACA,MAEI,CAAC,KAAa,MAAe,UACxB,KAGL,MAAe,WACV,KAGF,GAAe,EAAM,ECjCxB,KAA0B;CAC9B,SAAS;CACT,YAAY;CACZ,gBAAgB;CAChB,KAAK;CACL,cAAc;CACf,EAEK,KAAkC;CACtC,SAAS;CACT,YAAY;CACZ,KAAK;CACN,EAEK,KAA4B;CAChC,UAAU,EAAiB,OAAO,WAAW,MAAM;CACnD,YAAY,EAAiB,OAAO,WAAW,MAAM;CACrD,YAAY;CACZ,YAAY;CACb,EAEK,KAAwC;CAC5C,UAAU;CACV,YAAY;CACZ,YAAY;CACZ,OAAO,EAAiB,IAAI,OAAO,MAAM,QAAQ;CACjD,SAAS;CACT,YAAY;CACZ,YAAY;CACb,EAEY,KAAc,EACzB,UACA,aACA,YACA,UACA,eAAY,IACZ,gBAAa,SACb,qBAAkB,UAClB,eACA,YACA,iBACA,aACA,eACqB;CACrB,IAAM,IAAoB,GAAO,WAAW,GACtC,IAAqB,GAAO,SAAS,GACrC,IAA0B,GAAO,cAAc,GAC/C,IAAuB,GAAO,WAAW,GACzC,IACJ,GAAgB,GAAmB,GAAyB,EAAW,IACvE,EAAQ;AAEV,QACE,kBAAC,OAAD;EAAY;YAAZ,CACE,kBAAC,OAAD;GAAK,OAAO;aAAZ,CACE,kBAAC,GAAD;IAAM,OAAM;IAAS,KAAK;cAA1B,CACE,kBAAC,SAAD;KAAgB;KAAS,OAAO;eAC7B;KACK,CAAA,EACP,IAAW,kBAAC,QAAD;KAAM,OAAO;eAAwB;KAAQ,CAAA,GAAG,KACvD;OAEP,kBAAC,OAAD;IAAK,OAAO;cAAZ,CACG,IACC,kBAAC,GAAD;KACE,MAAK;KACL,MAAK;KACL,SAAS;KACT,OAAO;MAAE,SAAS;MAAG,QAAQ;MAAQ;eAEpC;KACM,CAAA,GACP,MACH,EACG;MACF;MACL,EACG;;GC9EJ,KAA+B;CACnC,SAAS;CACT,YAAY;CACZ,gBAAgB;CAChB,KAAK;CACN,EAEK,KAA4B;CAChC,QAAQ;CACR,UAAU,EAAiB,OAAO,WAAW,MAAM;CACnD,YAAY,EAAiB,OAAO,WAAW,MAAM;CACrD,YAAY;CACZ,YAAY;CACb,EAEK,KAAwC;CAC5C,UAAU;CACV,YAAY;CACZ,YAAY;CACZ,OAAO,EAAiB,IAAI,OAAO,MAAM,QAAQ;CACjD,SAAS;CACT,YAAY;CACZ,YAAY;CACb,EAEY,MAAiB,EAC5B,UACA,aACA,gBACA,UACA,eAAY,IACZ,gBAAa,aACb,qBAAkB,UAClB,eACA,YACA,YACA,aACA,eACwB;CACxB,IAAM,IAAoB,GAAO,WAAW,GACtC,IAAqB,GAAO,SAAS,GACrC,IAA0B,GAAO,cAAc,GAC/C,IAAuB,GAAO,WAAW,GACzC,IACJ,GAAgB,GAAmB,GAAyB,EAAW,IACvE,EAAQ;AAEV,QACE,kBAAC,OAAD;EAAY;YAAZ;GACE,kBAAC,OAAD;IAAK,OAAO;cAAZ,CACE,kBAAC,GAAD;KAAM,OAAM;KAAS,KAAK;eAA1B,CACE,kBAAC,EAAW,MAAZ;MAAiB,OAAO;gBACrB;MACe,CAAA,EACjB,IAAW,kBAAC,QAAD;MAAM,OAAO;gBAAwB;MAAQ,CAAA,GAAG,KACvD;QACP,kBAAC,GAAD;KAAM,OAAM;KAAS,KAAK;eAA1B,CACG,IACC,kBAAC,GAAD;MACE,MAAK;MACL,MAAK;MACL,SAAS;MACT,OAAO;OAAE,SAAS;OAAG,QAAQ;OAAQ;gBAEpC;MACM,CAAA,GACP,MACH,EACI;OACH;;GACL,IACC,kBAAC,EAAW,WAAZ;IAAsB,MAAK;IAAY,OAAO;KAAE,WAAW;KAAG,cAAc;KAAI;cAC7E;IACoB,CAAA,GACrB;GACH;GACG;;GC1EJ,KAA6B;CACjC,SAAS;CACT,YAAY;CACZ,KAAK;CACN,EAEY,MAA2B,EACtC,eACA,kBACA,uBAAoB,iBACpB,uBAAoB,iBACpB,oBACA,4BAAyB,IACzB,4BACA,kBACA,mBACA,iBACA,OACA,WACA,UACA,aACA,GAAG,QAC+B;CAClC,IAAM,IAAc,IAAO,EACrB,IAAU,KAAM,GAChB,CAAC,GAAyB,KAA8B,GAAS,EAAuB,EACxF,IAAoB,KAAmB,GACvC,IAAkB,IAAoB,IAAoB,GAE1D,KAAyB,MAAyB;AAKtD,EAJI,KACF,EAA2B,EAAY,EAGzC,IAA0B,EAAY;IAGlC,KACJ,kBAAC,GAAD;EACE,MAAK;EACL,UAAS;EACT,cAAY;EACZ,iBAAe;EACf,gBAAc;EACd,OAAO;EACG;EACV,cAAc,MAAU,EAAM,gBAAgB;EAC9C,eAAe,EAAsB,CAAC,EAAkB;EACxD,OAAO;GAAE,eAAe;GAAG,QAAQ;GAAI,UAAU;GAAI;EACrD,MACE,kBAAC,QAAD;GAAM,eAAY;GAAO,OAAO;IAAE,SAAS;IAAe,YAAY;IAAU;aAC9E,kBAAC,GAAD;IAAM,MAAM,IAAoB,WAAW;IAAO,MAAM;IAAM,CAAA;GACzD,CAAA;EAET,CAAA;AAGJ,QACE,kBAAC,GAAD;EACE,OAAO;EACP,UAAU;EACV,SAAS;EACT,cAAc;EACd,OAAO;YAEP,kBAAC,IAAD;GACE,IAAI;GACJ,MAAM,IAAoB,SAAS;GAC5B;GACG;GACV,QAAQ,IAAS,kBAAC,QAAD;IAAM,OAAO;cAAb,CAA2B,GAAQ,GAAsB;QAAG;GAC7E,WAAW,MAAU;AAEnB,IADA,EAAW,WAAW,EAAM,EAC5B,IAAgB,EAAM,OAAO,MAAM;;GAErC,GAAI;GACJ,CAAA;EACS,CAAA;GCnFX,KAA+B;CACnC,QAAQ;CACR,SAAS;CACT,QAAQ;CACR,UAAU;CACX,EAEK,KAAiC;CACrC,YAAY;CACZ,cAAc;CACd,SAAS;CACV,EAEK,KAAkC;CACtC,UAAU;CACV,WAAW;CACX,cAAc;CACd,SAAS;CACV,EAEK,KAAwC;CAC5C,UAAU;CACV,YAAY;CACZ,YAAY;CACZ,OAAO,EAAY,OAAO;CAC1B,SAAS;CACT,YAAY;CACZ,YAAY;CACZ,YAAY;CACb,EAEY,MAA2B,EACtC,WACA,aACA,gBACA,sBACA,eAAe,GACf,aAAa,GACb,GAAG,QAGD,kBAAC,YAAD;CAAU,OAAO;EAAE,GAAG;EAAe,GAAG;EAAqB;WAA7D;EACE,kBAAC,UAAD;GAAQ,OAAO;IAAE,GAAG;IAAiB,GAAG;IAAmB;aACzD,kBAAC,QAAD,EAAA,UAAA,CACG,GACA,IACC,kBAAC,EAAW,MAAZ;IAAiB,MAAK;IAAS,OAAO;cAAwB;IAE5C,CAAA,GAChB,KACC,EAAA,CAAA;GACA,CAAA;EAER,IACC,kBAAC,OAAD;GAAK,OAAO;aAAmB;GAAkB,CAAA,GAC/C;EAEJ,kBAAC,EAAS,OAAV;GACE,GAAI;GACJ,WAAW,MAAW;AAEpB,IADA,EAAmB,WAAW,EAAO,EACrC,IAAoB,EAAO;;GAE7B,CAAA;EACO;IChET,KAA+B;CACnC,QAAQ;CACR,SAAS;CACT,QAAQ;CACR,UAAU;CACX,EAEK,KAAiC;CACrC,YAAY;CACZ,cAAc;CACd,SAAS;CACV,EAEK,KAAkC;CACtC,UAAU;CACV,WAAW;CACX,cAAc;CACd,SAAS;CACV,EAEK,KAAwC;CAC5C,UAAU;CACV,YAAY;CACZ,YAAY;CACZ,OAAO,EAAY,OAAO;CAC1B,SAAS;CACT,YAAY;CACZ,YAAY;CACZ,YAAY;CACb,EAEY,MAAwB,EACnC,WACA,aACA,gBACA,sBACA,eAAe,GACf,aAAa,GACb,GAAG,QAGD,kBAAC,YAAD;CAAU,OAAO;EAAE,GAAG;EAAe,GAAG;EAAqB;WAA7D;EACE,kBAAC,UAAD;GAAQ,OAAO;IAAE,GAAG;IAAiB,GAAG;IAAmB;aACzD,kBAAC,QAAD,EAAA,UAAA,CACG,GACA,IACC,kBAAC,EAAW,MAAZ;IAAiB,MAAK;IAAS,OAAO;cAAwB;IAE5C,CAAA,GAChB,KACC,EAAA,CAAA;GACA,CAAA;EAER,IACC,kBAAC,OAAD;GAAK,OAAO;aAAmB;GAAkB,CAAA,GAC/C;EAEJ,kBAAC,GAAM,OAAP;GACE,GAAI;GACJ,WAAW,MAAM;AAEf,IADA,EAAgB,WAAW,EAAE,EAC7B,IAAoB,EAAE,OAAO,MAAM;;GAErC,CAAA;EACO;IChET,KAAoC;CACxC,SAAS;CACT,YAAY;CACZ,KAAK;CACN,EAEK,KAAmC;CACvC,SAAS;CACT,eAAe;CACf,KAAK;CACN,EAEK,KAA4B,EAChC,YAAY,KACb,EAEK,KAAkC;CACtC,UAAU;CACV,SAAS;CACV,EAEK,KAAwC;CAC5C,UAAU;CACV,YAAY;CACZ,YAAY;CACZ,OAAO,EAAY,OAAO;CAC1B,SAAS;CACT,YAAY;CACZ,YAAY;CACZ,YAAY;CACb,EAEY,MAAoB,EAC/B,UACA,gBACA,aACA,aACA,gBAAgB,GAChB,OACA,GAAG,QACwB;CAC3B,IAAM,IAAc,IAAO,EACrB,IAAW,KAAM;AAEvB,QACE,kBAAC,OAAD;EAAK,OAAO;GAAE,GAAG;GAAoB,GAAG;GAAsB;YAA9D,CACE,kBAAC,GAAD;GACE,IAAI;GACJ,GAAI;GACJ,WAAW,MAAY;AAErB,IADA,EAAY,WAAW,EAAQ,EAC/B,IAAW,EAAQ;;GAErB,cAAY,OAAO,KAAU,WAAW,IAAQ,KAAA;GAChD,oBAAkB,IAAc,GAAG,EAAS,gBAAgB,KAAA;GAC5D,CAAA,EACF,kBAAC,OAAD;GAAK,OAAO;aAAZ,CACE,kBAAC,SAAD;IAAO,SAAS;IAAU,OAAO;cAAjC,CACG,GACA,IACC,kBAAC,EAAW,MAAZ;KAAiB,MAAK;KAAS,OAAO;eAAwB;KAE5C,CAAA,GAChB,KACE;OACP,IACC,kBAAC,OAAD;IAAK,IAAI,GAAG,EAAS;IAAe,OAAO;cACxC;IACG,CAAA,GACJ,KACA;KACF;;GCtEJ,KAAgC;CACpC,SAAS;CACT,eAAe;CACf,KAAK;CACN,EAEK,KAA4B;CAChC,YAAY;CACZ,SAAS;CACT,YAAY;CACZ,KAAK;CACN,EAEK,KAAkC;CACtC,UAAU;CACV,SAAS;CACV,EAEK,KAAwC;CAC5C,UAAU;CACV,YAAY;CACZ,YAAY;CACZ,OAAO,EAAY,OAAO;CAC1B,SAAS;CACT,YAAY;CACZ,YAAY;CACb,EAEY,MAAoB,EAC/B,eACA,aACA,gBACA,kBACA,gBAAgB,GAChB,UAAU,GACV,GAAG,QACwB;CAC3B,IAAM,IAAc,IAAO,EACrB,IAAW,KAAc,GACzB,IAAsB;AAE5B,QACE,kBAAC,OAAD;EAAK,OAAO;GAAE,GAAG;GAAgB,GAAG;GAAsB;YAA1D;GACE,kBAAC,SAAD;IAAO,SAAS;IAAU,OAAO;cAAjC,CACG,GACA,IAAW,kBAAC,QAAD;KAAM,OAAO;eAAwB;KAAQ,CAAA,GAAG,KACtD;;GAEP,IACC,kBAAC,OAAD;IAAK,IAAI,GAAG,EAAS;IAAe,OAAO;cACxC;IACG,CAAA,GACJ;GAEJ,kBAAC,IAAD;IACE,IAAI;IACJ,GAAI;IACJ,WAAW,MAAU;AAEnB,KADA,EAAoB,WAAW,EAAM,EACrC,IAAgB,KAAS,KAAK;;IAEhC,oBAAkB,IAAc,GAAG,EAAS,gBAAgB,KAAA;IAC5D,CAAA;GACE;;GCvDJ,KAAgC;CACpC,SAAS;CACT,eAAe;CACf,KAAK;CACN,EAEK,KAA4B;CAChC,YAAY;CACZ,SAAS;CACT,YAAY;CACZ,KAAK;CACN,EAEK,KAAkC;CACtC,UAAU;CACV,SAAS;CACV,EAEK,KAA4B;CAChC,UAAU;CACV,OAAO,EAAY,OAAO;CAC3B,EAEK,KAAwC;CAC5C,UAAU;CACV,YAAY;CACZ,YAAY;CACZ,OAAO,EAAY,OAAO;CAC1B,SAAS;CACT,YAAY;CACZ,YAAY;CACb,EAEY,MAAwB,EACnC,eACA,aACA,gBACA,iBACA,kBACA,gBAAgB,GAChB,cAAc,GACd,GAAG,QAC4B;AAC/B,SAAgB;AACd,MAAwB;IACvB,EAAE,CAAC;CAEN,IAAM,IAAc,IAAO,EACrB,IAAe,KAAc,GAC7B,IAAgB,GAAG,EAAa,eAChC,IAAU,GAAG,EAAa,SAE1B,IAAkB,CACtB,IAAc,IAAgB,MAC9B,IAAe,IAAU,KAC1B,CACE,OAAO,QAAQ,CACf,KAAK,IAAI,EAEN,EACJ,WAAW,GACX,gBAAgB,GAChB,YAAY,GACZ,GAAG,MACD,GAEE,IAAkB,GAAsB,GAAiB,EAAkB,EAC3E,IAA2B,GAC/B,GACC,GAA4B,OAAO,MACpC,EACD,EAEK,IAAmB;EACvB,GAAI,KAAsB,EAAE;EAC5B,OAAO;GACL,GAAK,GAA4B,SAAS,EAAE;GAC5C,MAAM;GACP;EACF;AAED,QACE,kBAAC,OAAD;EAAK,OAAO;GAAE,GAAG;GAAgB,GAAG;GAAsB;YAA1D;GACE,kBAAC,SAAD;IAAO,SAAS;IAAc,OAAO;cAArC,CACG,GACA,IAAW,kBAAC,QAAD;KAAM,OAAO;eAAwB;KAAQ,CAAA,GAAG,KACtD;;GAEP,IACC,kBAAC,OAAD;IAAK,IAAI;IAAe,OAAO;cAC5B;IACG,CAAA,GACJ;GAEJ,kBAAC,GAAD;IACE,IAAI;IACJ,GAAI;IACJ,WAAW;IACX,gBAAgB;IAChB,YAAY;IACZ,QAAQ,EAAoB,UAAA;IAC5B,aAAa,EAAoB,eAAA;IACjC,WAAW,GAAM,MAAe;AAE9B,KADA,EAAoB,WAAW,GAAM,EAAW,EAChD,IAAgB,EAAK;;IAEvB,QAAQ,IAAe,UAAU,KAAA;IACjC,oBAAkB,KAAmB,KAAA;IACrC,gBAAc,EAAQ;IACtB,CAAA;GAED,IACC,kBAAC,OAAD;IAAK,IAAI;IAAS,OAAO;IAAY,MAAK;cACvC;IACG,CAAA,GACJ;GACA;;GCnIJ,KAAuC;CAC3C,UAAU;CACV,YAAY;CACZ,eAAe;CACf,YAAY;CACZ,OAAO,EAAY,OAAO;CAC1B,YAAY;CACZ,WAAW;CACX,SAAS;CACT,YAAY;CACZ,KAAK;CACN,EAEK,KAA2B;CAC/B,YAAY;CACZ,OAAO;CACP,QAAQ;CACR,YAAY;CACZ,WAAW;CACZ,EAQY,MAAa,EACxB,YACA,gBAAgB,GAChB,UAAO,eAEF,IAKH,kBAAC,OAAD;CACE,MAAM,MAAS,cAAc,UAAU,KAAA;CACvC,aAAW,MAAS,cAAc,cAAc;CAChD,OAAO;EAAE,GAAG;EAAuB,GAAG;EAAsB;WAH9D,CAKE,kBAAC,QAAD;EAAM,OAAO;EAAW,eAAY;YAClC,kBAAC,GAAD;GAAM,MAAK;GAAgB,MAAM;GAAM,CAAA;EAClC,CAAA,EACP,kBAAC,QAAD,EAAA,UAAO,GAAe,CAAA,CAClB;KAbC,MCjCL,KAAuC;CAC3C,UAAU;CACV,YAAY;CACZ,eAAe;CACf,YAAY;CACZ,OAAO,EAAY,KAAK;CACxB,YAAY;CACZ,WAAW;CACX,SAAS;CACT,YAAY;CACZ,KAAK;CACN,EAEK,KAA2B;CAC/B,YAAY;CACZ,OAAO;CACP,QAAQ;CACR,YAAY;CACZ,WAAW;CACX,OAAO,EAAY,OAAO;CAC3B,EAKY,MAAe,EAC1B,YACA,gBAAgB,GAChB,UAAO,eAEF,IAKH,kBAAC,OAAD;CACE,MAAM,MAAS,cAAc,WAAW,KAAA;CACxC,aAAW,MAAS,cAAc,cAAc;CAChD,OAAO;EAAE,GAAG;EAAuB,GAAG;EAAsB;WAH9D,CAKE,kBAAC,QAAD;EAAM,OAAO;EAAW,eAAY;YAClC,kBAAC,GAAD;GAAM,MAAK;GAAQ,MAAM;GAAM,CAAA;EAC1B,CAAA,EACP,kBAAC,QAAD,EAAA,UAAO,GAAe,CAAA,CAClB;KAbC,MC/BL,KAAuC;CAC3C,UAAU;CACV,YAAY;CACZ,eAAe;CACf,YAAY;CACZ,OAAO,EAAY,KAAK;CACxB,YAAY;CACZ,WAAW;CACX,SAAS;CACT,YAAY;CACZ,KAAK;CACN,EAEK,KAA2B;CAC/B,YAAY;CACZ,OAAO;CACP,QAAQ;CACR,YAAY;CACZ,WAAW;CACX,OAAO,EAAY,OAAO;CAC3B,EAKY,MAAe,EAC1B,YACA,gBAAgB,GAChB,UAAO,eAEF,IAKH,kBAAC,OAAD;CACE,MAAM,MAAS,cAAc,WAAW,KAAA;CACxC,aAAW,MAAS,cAAc,cAAc;CAChD,OAAO;EAAE,GAAG;EAAuB,GAAG;EAAsB;WAH9D,CAKE,kBAAC,QAAD;EAAM,OAAO;EAAW,eAAY;YAClC,kBAAC,GAAD;GAAM,MAAK;GAAgB,MAAM;GAAM,CAAA;EAClC,CAAA,EACP,kBAAC,QAAD,EAAA,UAAO,GAAe,CAAA,CAClB;KAbC,MCnBE,MAAwB,OAC5B;CACL;CACA,WAAW,MAAe;AACxB,OAAK,IAAM,KAAQ,GAAO;GACxB,IAAI,IAAU;AAEd,WAAQ,EAAK,MAAb;IACE,KAAK;AACH,SAAU,KAAiC,QAAQ,MAAU;AAC7D;IAEF,KAAK;AAEH,SAAU,CAAC,KAAS,6BAAW,KAAK,EAAM;AAC1C;IAGF,KAAK;AACH,SACE,CAAC,KAAU,OAAO,KAAU,YAAY,EAAM,WAAW,EAAK,aAAa;AAC7E;IAEF,KAAK;AACH,SACE,CAAC,KAAU,OAAO,KAAU,YAAY,EAAM,WAAW,EAAK,aAAa;AAC7E;IAEF,KAAK;AACH,SAAU,CAAC,MAAU,EAAK,SAAS,KAAK,EAAM,IAAI;AAClD;IAEF,KAAK;AACH,SAAU,EAAK,WAAW,EAAM,IAAI;AACpC;IAEF,QACE,KAAU;;AAGd,OAAI,CAAC,EACH,QAAO;IACL,SAAS;IACT,OAAO,EAAK;IACb;;AAIL,SAAO,EAAE,SAAS,IAAM;;CAE3B,GAMU,KAAkB;CAC7B,WAAW,IAAU,8BAA8C;EACjE,MAAM;EACN;EACD;CAED,QAAQ,IAAU,0CAA0D;EAC1E,MAAM;EACN;EACD;CAED,YAAY,GAAmB,OAAsC;EACnE,MAAM;EACN,SAAS,KAAW,oBAAoB,EAAU;EAClD;EACD;CAED,YAAY,GAAmB,OAAsC;EACnE,MAAM;EACN,SAAS,KAAW,mBAAmB,EAAU;EACjD;EACD;CAED,UAAU,GAAiB,OAAqC;EAC9D,MAAM;EACN;EACA;EACD;CAED,SAAS,GAAmC,OAAqC;EAC/E,MAAM;EACN;EACA;EACD;CACF,EC5FY,MAAkB,EAC7B,eACA,kBACA,UACA,eAAY,IACZ,eACA,qBAAkB,UAClB,YACA,kBACA,UACA,mBACA,iBACA,OACA,GAAG,QACsB;CACzB,IAAM,IAAc,GAAO,WAAW;AAOtC,QACE,kBAAC,GAAD;EACE,OAAO;EACP,UAAU;EACV,SAAS;EACT,OAAO;GACL,SAAS,GAAO,WAAW;GAC3B,OAAO,GAAO,SAAS;GACvB,YAAY,GAAO,cAAc;GACjC,eAdoB;AAExB,IADA,KAAe,EACf,IAAgB,GAAG;;GAahB;EACD,YAAY;EACZ,cAAc;EACd,OAAO;YAEP,kBAAC,IAAD;GACM;GACG;GACP,WAAW,MAAU;AAEnB,IADA,EAAW,WAAW,EAAM,EAC5B,IAAgB,EAAM,OAAO,MAAM;;GAErC,GAAI;GACJ,CAAA;EACS,CAAA;GC5CJ,MAAmB,EAC9B,eACA,kBACA,UACA,eAAY,IACZ,eACA,qBAAkB,UAClB,YACA,kBACA,iBACA,UACA,mBACA,iBACA,OACA,GAAG,QACuB;CAC1B,IAAM,IAAsB,GAEtB,IAAa,MAAiB,KAAA,IAAY,KAAA,IAAY,GACtD,IAAc,GAAO,WAAW;AAQtC,QACE,kBAAC,GAAD;EACE,OAAO;EACP,UAAU;EACV,SAAS;EACT,OAAO;GACL,SAAS,GAAO,WAAW;GAC3B,OAAO,GAAO,SAAS;GACvB,YAAY,GAAO,cAAc;GACjC,eAfoB;AAGxB,IAFA,KAAe,EACf,IAAgB,EAAW,EAC3B,EAAoB,WAAW,GAAY,KAAA,EAAmB;;GAa3D;EACD,YAAY;EACZ,cAAc;EACd,OAAO;YAEP,kBAAC,IAAD;GACE,GAAI;GACA;GACG;GACP,WAAW,GAAW,MAAW;AAE/B,IADA,EAAoB,WAAW,GAAW,EAAO,EACjD,IAAgB,EAAU;;GAE5B,OAAO;IAAE,OAAO;IAAQ,GAAG,EAAoB;IAAO;GACtD,CAAA;EACS,CAAA;GC7CJ,MAAuB,EAClC,eACA,kBACA,UACA,eAAY,IACZ,eACA,qBAAkB,UAClB,YACA,kBACA,UACA,mBACA,iBACA,OACA,GAAG,QAC2B;AAC9B,SAAgB;AACd,MAAwB;IACvB,EAAE,CAAC;CAEN,IAAM,IAAc,GAAO,WAAW,GAEhC,UAAoB;AAGxB,EAFA,KAAe,EACf,IAAgB,KAAK,EACrB,EAAY,WAAW,MAAM,GAAG;IAG5B,EACJ,WAAW,GACX,gBAAgB,GAChB,YAAY,GACZ,GAAG,MACD,GAEE,IAAkB,GAAsB,GAAiB,EAAkB,EAC3E,IAA2B,GAC/B,GACC,GAA4B,OAAO,MACpC,EACD,EAEK,IAAmB;EACvB,GAAI,KAAsB,EAAE;EAC5B,OAAO;GACL,GAAK,GAA4B,SAAS,EAAE;GAC5C,MAAM;GACP;EACF;AAED,QACE,kBAAC,GAAD;EACE,OAAO;EACP,UAAU;EACV,SAAS;EACT,OAAO;GACL,SAAS,GAAO,WAAW;GAC3B,OAAO,GAAO,SAAS;GACvB,YAAY,GAAO,cAAc;GACjC,SAAS;GACV;EACD,YAAY;EACZ,cAAc;EACd,OAAO;YAEP,kBAAC,GAAD;GACM;GACG;GACP,WAAW,GAAU,MAAe;AAElC,IADA,EAAoB,WAAW,GAAU,EAAW,EACpD,IAAgB,EAAS;;GAE3B,WAAW;GACX,gBAAgB;GAChB,YAAY;GACZ,QAAQ,EAAoB,UAAA;GAC5B,aAAa,EAAoB,eAAA;GACjC,OAAO;IAAE,OAAO;IAAQ,GAAG,EAAoB;IAAO;GACtD,GAAI;GACJ,CAAA;EACS,CAAA;GCvFJ,MAAwB,EACnC,eACA,kBACA,UACA,eAAY,IACZ,eACA,qBAAkB,UAClB,YACA,kBACA,iBACA,UACA,mBACA,iBACA,OACA,GAAG,QAC4B;CAC/B,IAAM,IAAc,GAAO,WAAW,GAChC,IAAa,MAAiB,KAAA,IAAY,OAAO;AAQvD,QACE,kBAAC,GAAD;EACE,OAAO;EACP,UAAU;EACV,SAAS;EACT,OAAO;GACL,SAAS,GAAO,WAAW;GAC3B,OAAO,GAAO,SAAS;GACvB,YAAY,GAAO,cAAc;GACjC,eAfoB;AAGxB,IAFA,KAAe,EACf,IAAgB,EAAW,EAC3B,EAAY,WAAW,EAAW;;GAa/B;EACD,YAAY;EACZ,cAAc;EACd,OAAO;YAEP,kBAAC,IAAD;GACM;GACG;GACP,WAAW,MAAc;AAEvB,IADA,EAAY,WAAW,EAAU,EACjC,IAAgB,EAAU;;GAE5B,OAAO;IAAE,OAAO;IAAQ,GAAG,EAAY;IAAO;GAC9C,GAAI;GACJ,CAAA;EACS,CAAA;GChDJ,MAAuB,EAClC,eACA,kBACA,UACA,eAAY,IACZ,eACA,qBAAkB,UAClB,YACA,kBACA,UACA,mBACA,iBACA,OACA,aACA,GAAG,QAC2B;CAC9B,IAAM,IAAc,GAAO,WAAW;AAQtC,QACE,kBAAC,GAAD;EACE,OAAO;EACP,UAAU;EACV,SAAS;EACT,OAAO;GACL,SAAS,GAAO,WAAW;GAC3B,OAAO,GAAO,SAAS;GACvB,YAAY,GAAO,cAAc;GACjC,eAfoB;AAGxB,IAFA,KAAe,EACf,IAAgB,KAAK,EACrB,EAAU,WAAW,MAAM,GAAG;;GAa3B;EACD,YAAY;EACZ,cAAc;EACd,OAAO;YAEP,kBAAC,IAAD;GACM;GACG;GACP,WAAW,GAAU,MAAe;AAElC,IADA,EAAU,WAAW,GAAU,EAAW,EAC1C,IAAgB,EAAS;;GAEjB;GACV,OAAO;IAAE,OAAO;IAAQ,GAAG,EAAU;IAAO;GAC5C,GAAI;GACJ,CAAA;EACS,CAAA;GCpDJ,MAAuB,EAClC,eACA,kBACA,UACA,eAAY,IACZ,eACA,qBAAkB,UAClB,YACA,kBACA,iBACA,UACA,mBACA,iBACA,OACA,GAAG,QAC2B;CAC9B,IAAM,IAAc,GAAO,WAAW,GAChC,IAAa,MAAiB,KAAA,IAAY,KAAA,IAAY;AAQ5D,QACE,kBAAC,GAAD;EACE,OAAO;EACP,UAAU;EACV,SAAS;EACT,OAAO;GACL,SAAS,GAAO,WAAW;GAC3B,OAAO,GAAO,SAAS;GACvB,YAAY,GAAO,cAAc;GACjC,eAfoB;AAGxB,IAFA,KAAe,EACf,IAAgB,EAAW,EAC3B,EAAU,WAAW,GAAY,MAAe,KAAc;;GAa3D;EACD,YAAY;EACZ,cAAc;EACd,OAAO;YAEP,kBAAC,IAAD;GACM;GACG;GACP,WAAW,GAAW,GAAO,MAAU;AAErC,IADA,EAAU,WAAW,GAAW,GAAO,EAAM,EAC7C,IAAgB,EAAU;;GAE5B,OAAO;IAAE,OAAO;IAAQ,GAAG,EAAU;IAAO;GAC5C,GAAI;GACJ,CAAA;EACS,CAAA;GC/DX,KAAW,sBACX,IAAoB,eAEpB,WAA4B,GAAc,mBAAmB,EAAE,MAAM,IAAI,CAAC,EAEnE,MAAY,EAAE,eAAY,GAAG,QAA2B;AACnE,SAAgB;AAEd,MADA,IAAoB,EAChB,OAAO,WAAa,OAAe,CAAC,SAAS,eAAe,GAAS,EAAE;GACzE,IAAM,IAAQ,SAAS,cAAc,QAAQ;AAsC7C,GArCA,EAAM,KAAK,IACX,EAAM,cAAc;WACf,EAAkB;WAClB,EAAkB;WAClB,EAAkB;;;;WAIlB,EAAkB;WAClB,EAAkB;WAClB,EAAkB;WAClB,EAAkB;;;;;;;;WAQlB,EAAkB;WAClB,EAAkB;WAClB,EAAkB;WAClB,EAAkB;WAClB,EAAkB;WAClB,EAAkB;WAClB,EAAkB;WAClB,EAAkB;WAClB,EAAkB;WAClB,EAAkB;WAClB,EAAkB;WAClB,EAAkB;;;;;;SAOvB,SAAS,KAAK,YAAY,EAAM;;IAEjC,EAAE,CAAC;CAEN,IAAM,IAAqB,SACrB,MAAe,KAAA,IAIZ,kBAAC,IAAD,EAAuB,CAAA,GAHrB,GAIR,CAAC,EAAW,CAAC,EAEV,IAAkB,GAAgB,GAAmB,GAAiB,EAAM,UAAU;AAE5F,QAAO,kBAAC,GAAD;EAAa,GAAI;EAAO,WAAW;EAAiB,YAAY;EAAsB,CAAA;;AAG/F,GAAS,cAAc;;;ACnDvB,IAAa,MAAqB,EAChC,eACA,kBACA,UACA,eAAY,IACZ,eACA,qBAAkB,UAClB,YACA,kBACA,iBACA,UACA,mBACA,iBACA,OACA,GAAG,QACyB;CAC5B,IAAM,IAAc,GAAO,WAAW,GAChC,IAAa,MAAiB,KAAA,IAAY,KAAA,IAAY;AAQ5D,QACE,kBAAC,GAAD;EACE,OAAO;EACP,UAAU;EACV,SAAS;EACT,OAAO;GACL,SAAS,GAAO,WAAW;GAC3B,OAAO,GAAO,SAAS;GACvB,YAAY,GAAO,cAAc;GACjC,eAfoB;AAGxB,IAFA,KAAe,EACf,IAAgB,EAAW,EAC3B,EAAc,WAAW,GAAqB,EAAE,CAAC;;GAa9C;EACD,YAAY;EACZ,cAAc;EACd,OAAO;YAEP,kBAAC,IAAD;GACM;GACG;GACP,WAAW,GAAW,MAAoB;AAExC,IADA,EAAc,WAAW,GAAW,EAAgB,EACpD,IAAgB,EAAU;;GAE5B,OAAO;IAAE,OAAO;IAAQ,GAAG,EAAc;IAAO;GAChD,GAAI;GACJ,CAAA;EACS,CAAA;GCrEX,KAAW,0BACJ,IAAwB,mBAE/B,KAAc,EAAS,OAAO,cAAc,wBACrC,KAA8B,IAE9B,MAA+B,GAAG,MAC7C,EAAW,OAAO,QAAQ,CAAC,KAAK,IAAI,CAAC,MAAM,EAEhC,WAAiC;AAC5C,KAAI,OAAO,WAAa,IACtB;CAGF,IAAI,IAAQ,SAAS,eAAe,GAAS;AAM7C,CALK,MACH,IAAQ,SAAS,cAAc,QAAQ,EACvC,EAAM,KAAK,IACX,SAAS,KAAK,YAAY,EAAM,GAElC,EAAM,cAAc;OACf,EAAsB;OACtB,EAAsB;OACtB,EAAsB;OACtB,EAAsB;OACtB,EAAsB;OACtB,EAAsB;OACtB,EAAsB;OACtB,EAAsB;OACtB,EAAsB;OACtB,EAAsB;OACtB,EAAsB;OACtB,EAAsB;OACtB,EAAsB;qBACR,GAAY;;;OAG1B,EAAsB;OACtB,EAAsB;OACtB,EAAsB;;;;OAItB,EAAsB;OACtB,EAAsB;OACtB,EAAsB;OACtB,EAAsB;OACtB,EAAsB;OACtB,EAAsB;OACtB,EAAsB;OACtB,EAAsB;OACtB,EAAsB;OACtB,EAAsB;OACtB,EAAsB;qBACR,GAAY;;;GC3CpB,MAAgB,EAAE,cAAW,UAAO,GAAG,SAClD,QAAgB;AAEd,CADA,IAAoB,EACpB,IAA0B;GACzB,EAAE,CAAC,EAGJ,kBAAC,GAAD;CACE,GAAI;CACJ,WAAW,GAA4B,GAAuB,GAAiB,EAAU;CACzF,OAAO;EAAE,YAAY;EAA6B,GAAG;EAAO;CAC5D,CAAA;AAIN,GAAa,cAAc;;;ACA3B,IAAa,MAAyB,EACpC,eACA,kBACA,UACA,eAAY,IACZ,eACA,qBAAkB,UAClB,YACA,kBACA,UACA,mBACA,iBACA,OACA,WAAW,GACX,OAAO,GACP,GAAG,QAC6B;AAChC,SAAgB;AAEd,EADA,IAAoB,EACpB,IAA0B;IACzB,EAAE,CAAC;CAEN,IAAM,IAAc,GAAO,WAAW;AAQtC,QACE,kBAAC,GAAD;EACE,OAAO;EACP,UAAU;EACV,SAAS;EACT,OAAO;GACL,SAAS,GAAO,WAAW;GAC3B,OAAO,GAAO,SAAS;GACvB,YAAY,GAAO,cAAc;GACjC,eAfoB;AAGxB,IAFA,KAAe,EACf,IAAgB,GAAG,EACnB,EAAkB,WAAW,GAAG;;GAa7B;EACD,YAAY;EACZ,cAAc;EACd,OAAO;YAEP,kBAAC,GAAD;GACM;GACG;GACP,WAAW,GAA4B,GAAuB,GAAiB,EAAkB;GACjG,WAAW,MAAc;AAEvB,IADA,EAAkB,WAAW,EAAU,EACvC,IAAgB,EAAU;;GAE5B,OAAO;IAAE,OAAO;IAAQ,YAAY;IAA6B,GAAG;IAAe;GACnF,GAAI;GACJ,CAAA;EACS,CAAA;GC9EX,KAAoB,yBACpB,KAA6B,kCAC7B,KAA4B,iCAC5B,KAAwB,6BACxB,KAAuB,+BAEvB,KAAsB,6BACtB,KAA4B;AAElC,SAAS,KAAuB;AAK9B,KAJI,OAAO,WAAa,OAIpB,SAAS,eAAe,GAAqB,CAC/C;CAGF,IAAM,IAAQ,SAAS,cAAc,QAAQ;AA0C7C,CAzCA,EAAM,KAAK,IACX,EAAM,cAAc;OACf,GAAkB;;;;;OAKlB,GAAkB,IAAI,GAA0B;;;;;;;iBAOtC,EAAiB,MAAM,QAAQ,OAAO,EAAE,GAAG,EAAiB,MAAM,QAAQ,OAAO,EAAE;eACrF,EAAiB,MAAM,KAAK,MAAM;;mBAE9B,EAAiB,OAAO,WAAW,MAAM,SAAS;;qBAEhD,EAAiB,OAAO,WAAW,MAAM,WAAW;;;OAGlE,GAAkB,GAAG,GAA2B;;;qBAGlC,EAAiB,MAAM,KAAK,MAAM;;;OAGhD,GAAkB,IAAI,GAAsB;;;oBAG/B,EAAiB,IAAI,OAAO,IAAI,MAAM,GAAG;eAC9C,EAAiB,IAAI,OAAO,IAAI,MAAM,KAAK;uBACnC,EAAiB,IAAI,KAAK,GAAG,OAAO;qBACtC,EAAiB,OAAO,WAAW,MAAM,WAAW;yBAChD,EAAiB,OAAO,WAAW,MAAM,WAAW;;;;KAM3E,SAAS,KAAK,YAAY,EAAM;;AAQlC,SAAS,GAAkB,GAAiC;CAC1D,IAAM,IAA6B,EAAE,EACjC,IAAY;AAuBhB,QArBA,EAAM,QAAQ,KAAsB,GAAO,GAAc,GAAK,MAAW;EACvE,IAAM,IAAU,OAAO,KAAgB,GAAG,EACpC,IAAU,OAAO,KAAO,GAAG,CAAC,MAAM,EAClC,IAAe,IAAS,EAAQ;AAWtC,SATI,IAAe,KACjB,EAAS,KAAK;GAAE,MAAM,EAAM,MAAM,GAAW,EAAa;GAAE,OAAO;GAAO,CAAC,EAGzE,KACF,EAAS,KAAK;GAAE,MAAM;GAAS,OAAO;GAAM,CAAC,EAG/C,IAAY,IAAe,EAAQ,QAC5B;GACP,EAEE,IAAY,EAAM,UACpB,EAAS,KAAK;EAAE,MAAM,EAAM,MAAM,EAAU;EAAE,OAAO;EAAO,CAAC,EAGxD,EAAS,SAAS,IAAI,IAAW,CAAC;EAAE,MAAM;EAAO,OAAO;EAAO,CAAC;;AAkBzE,IAAa,MAAqB,EAChC,eACA,kBACA,UACA,eAAY,IACZ,eACA,qBAAkB,UAClB,YACA,kBACA,UACA,mBACA,iBACA,OACA,cACA,GAAG,QACyB;AAC5B,KAAsB;CAEtB,IAAM,IAAc,OAAO,KAAU,WAAW,IAAQ,IAClD,IAAiB,GAA0B,KAAK,EAAY,EAC5D,IAAkB,IAAiB,GAAkB,EAAY,GAAG,EAAE,EACtE,IAAkB;EACtB;EACA;EACA,IAAiB,KAA6B,KAAA;EAC/C,CACE,OAAO,QAAQ,CACf,KAAK,IAAI,EAEN,IAAc,GAAO,WAAW;AAQtC,QACE,kBAAC,GAAD;EACE,OAAO;EACP,UAAU;EACV,SAAS;EACT,OAAO;GACL,SAAS,GAAO,WAAW;GAC3B,OAAO,GAAO,SAAS;GACvB,YAAY,GAAO,cAAc;GACjC,eAfoB;AAGxB,IAFA,KAAe,EACf,IAAgB,GAAG,EACnB,EAAc,WAAW,GAAG;;GAazB;EACD,YAAY;EACZ,cAAc;EACd,OAAO;YAEP,kBAAC,OAAD;GAAK,WAAW;aAAhB,CACG,IACC,kBAAC,OAAD;IAAK,eAAY;IAAO,WAAW;cAChC,EAAgB,KAAK,GAAS,MAC7B,EAAQ,QACN,kBAAC,QAAD;KAAM,WAAW;eACd,EAAQ;KACJ,EAFsC,GAAG,EAAM,GAAG,EAAQ,OAE1D,GAEP,kBAAC,QAAD,EAAA,UAAwC,EAAQ,MAAY,EAAjD,GAAG,EAAM,GAAG,EAAQ,OAA6B,CAE/D;IACG,CAAA,GACJ,MACJ,kBAAC,GAAD;IACM;IACO;IACJ;IACP,WAAW,MAAc;AAEvB,KADA,EAAc,WAAW,EAAU,EACnC,IAAgB,EAAU;;IAE5B,OAAO;KAAE,OAAO;KAAQ,GAAG,EAAc;KAAO;IAChD,GAAI;IACJ,CAAA,CACE;;EACK,CAAA;GC/KJ,MAAqB,EAChC,eACA,kBACA,UACA,eAAY,IACZ,eACA,qBAAkB,UAClB,YACA,kBACA,YACA,aACA,mBACA,iBACA,OACA,GAAG,QACyB;CAC5B,IAAM,IAAc,GAAO,WAAW;AAOtC,QACE,kBAAC,GAAD;EACE,OAAO;EACP,UAAU;EACV,SAAS;EACT,OAAO;GACL,SAAS,GAAO,WAAW;GAC3B,OAAO,GAAO,SAAS;GACvB,YAAY,GAAO,cAAc;GACjC,eAdoB;AAExB,IADA,KAAe,EACf,IAAgB,GAAM;;GAanB;EACD,YAAY;EACZ,cAAc;EACd,OAAO;YAEP,kBAAC,IAAD;GACM;GACK;GACT,WAAW,MAAU;AAEnB,IADA,EAAc,WAAW,EAAM,EAC/B,IAAgB,EAAM,OAAO,QAAQ;;GAEvC,GAAI;GAEH;GACQ,CAAA;EACA,CAAA;GCjDJ,MAAkB,EAC7B,eACA,kBACA,UACA,eAAY,IACZ,eACA,qBAAkB,UAClB,YACA,kBACA,YACA,aACA,mBACA,iBACA,OACA,GAAG,QACsB;CACzB,IAAM,IAAc,GAAO,WAAW;AAOtC,QACE,kBAAC,GAAD;EACE,OAAO;EACP,UAAU;EACV,SAAS;EACT,OAAO;GACL,SAAS,GAAO,WAAW;GAC3B,OAAO,GAAO,SAAS;GACvB,YAAY,GAAO,cAAc;GACjC,eAdoB;AAExB,IADA,KAAe,EACf,IAAgB,GAAM;;GAanB;EACD,YAAY;EACZ,cAAc;EACd,OAAO;YAEP,kBAAC,IAAD;GACM;GACK;GACT,WAAW,MAAU;AAEnB,IADA,EAAW,WAAW,EAAM,EAC5B,IAAgB,EAAM,OAAO,QAAQ;;GAEvC,GAAI;GAEH;GACK,CAAA;EACG,CAAA;GChDJ,MAAuB,EAClC,eACA,kBACA,UACA,eAAY,IACZ,eACA,qBAAkB,UAClB,YACA,kBACA,iBACA,UACA,mBACA,iBACA,GAAG,QAC2B;CAC9B,IAAM,IAAc,GAAO,WAAW;AAOtC,QACE,kBAAC,GAAD;EACE,OAAO;EACP,UAAU;EACV,OAAO;GACL,SAAS,GAAO,WAAW;GAC3B,OAAO,GAAO,SAAS;GACvB,YAAY,GAAO,cAAc;GACjC,eAboB;AAExB,IADA,KAAe,EACf,IAAgB,EAAa;;GAY1B;EACD,YAAY;EACZ,cAAc;EACd,OAAO;YAEP,kBAAC,GAAM,OAAP;GACS;GACP,WAAW,MAAU;AAEnB,IADA,EAAW,WAAW,EAAM,EAC5B,IAAgB,EAAM,OAAO,MAAM;;GAErC,GAAI;GACJ,CAAA;EACS,CAAA;GC5CJ,MAAmB,EAC9B,eACA,kBACA,UACA,eAAY,IACZ,eACA,qBAAkB,UAClB,YACA,kBACA,kBAAe,IACf,YACA,mBACA,iBACA,OACA,GAAG,QACuB;CAC1B,IAAM,IAAc,GAAO,WAAW;AAOtC,QACE,kBAAC,GAAD;EACE,OAAO;EACP,UAAU;EACV,SAAS;EACT,OAAO;GACL,SAAS,GAAO,WAAW;GAC3B,OAAO,GAAO,SAAS;GACvB,YAAY,GAAO,cAAc;GACjC,eAdoB;AAExB,IADA,KAAe,EACf,IAAgB,EAAa;;GAa1B;EACD,YAAY;EACZ,cAAc;EACd,OAAO;YAEP,kBAAC,GAAD;GACM;GACK;GACT,WAAW,GAAa,MAAU;AAEhC,IADA,EAAY,WAAW,GAAa,EAAM,EAC1C,IAAgB,EAAY;;GAE9B,GAAI;GACJ,CAAA;EACS,CAAA;GC9CJ,MAAmB,EAC9B,eACA,kBACA,UACA,eAAY,IACZ,eACA,qBAAkB,UAClB,YACA,kBACA,iBACA,UACA,QACA,mBACA,iBACA,GAAG,QACuB;CAC1B,IAAM,IAAc,GAAO,WAAW,GAChC,IAAgB,KAAgB,KAAO;AAO7C,QACE,kBAAC,GAAD;EACE,OAAO;EACP,UAAU;EACV,OAAO;GACL,SAAS,GAAO,WAAW;GAC3B,OAAO,GAAO,SAAS;GACvB,YAAY,GAAO,cAAc;GACjC,eAboB;AAExB,IADA,KAAe,EACf,IAAgB,EAAc;;GAY3B;EACD,YAAY;EACZ,cAAc;EACd,OAAO;YAEP,kBAAC,IAAD;GACS;GACF;GACL,WAAW,MAAc;AAEvB,IADA,EAAY,WAAW,EAAU,EACjC,IAAgB,EAAU;;GAE5B,GAAI;GACJ,CAAA;EACS,CAAA;GChDJ,MAAiB,EAC5B,eACA,kBACA,UACA,eAAY,IACZ,eACA,qBAAkB,UAClB,YACA,kBACA,kBAAe,GACf,UACA,mBACA,iBACA,GAAG,QACqB;CACxB,IAAM,IAAc,GAAO,WAAW;AAOtC,QACE,kBAAC,GAAD;EACE,OAAO;EACP,UAAU;EACV,OAAO;GACL,SAAS,GAAO,WAAW;GAC3B,OAAO,GAAO,SAAS;GACvB,YAAY,GAAO,cAAc;GACjC,eAboB;AAExB,IADA,KAAe,EACf,IAAgB,EAAa;;GAY1B;EACD,YAAY;EACZ,cAAc;EACd,OAAO;YAEP,kBAAC,IAAD;GACS;GACP,WAAW,MAAc;AAEvB,IADA,EAAU,WAAW,EAAU,EAC/B,IAAgB,EAAU;;GAE5B,GAAI;GACJ,CAAA;EACS,CAAA;GC1CJ,MAAwB,EACnC,eACA,kBACA,UACA,eAAY,IACZ,eACA,qBAAkB,UAClB,YACA,kBACA,iBACA,UACA,mBACA,iBACA,GAAG,QAC4B;CAC/B,IAAM,IAAc,GAAO,WAAW;AAOtC,QACE,kBAAC,GAAD;EACE,OAAO;EACP,UAAU;EACV,OAAO;GACL,SAAS,GAAO,WAAW;GAC3B,OAAO,GAAO,SAAS;GACvB,YAAY,GAAO,cAAc;GACjC,eAboB;AAExB,IADA,KAAe,EACf,IAAgB,EAAa;;GAY1B;EACD,YAAY;EACZ,cAAc;EACd,OAAO;YAEP,kBAAC,GAAD;GACS;GACP,WAAW,MAAc;AAEvB,IADA,EAAW,WAAW,EAAU,EAChC,IAAgB,EAAU;;GAE5B,GAAI;GACJ,CAAA;EACS,CAAA;GC5CJ,MAAqB,EAChC,eACA,kBACA,UACA,eAAY,IACZ,eACA,qBAAkB,UAClB,YACA,kBACA,kBAAe,EAAE,EACjB,eACA,mBACA,iBACA,GAAG,QACyB;CAC5B,IAAM,IAAc,GAAO,WAAW;AAOtC,QACE,kBAAC,GAAD;EACE,OAAO;EACP,UAAU;EACV,OAAO;GACL,SAAS,GAAO,WAAW;GAC3B,OAAO,GAAO,SAAS;GACvB,YAAY,GAAO,cAAc;GACjC,eAboB;AAExB,IADA,KAAe,EACf,IAAgB,EAAa;;GAY1B;EACD,YAAY;EACZ,cAAc;EACd,OAAO;YAEP,kBAAC,IAAD;GACc;GACZ,WAAW,GAAgB,GAAW,MAAa;AAEjD,IADA,EAAc,WAAW,GAAgB,GAAW,EAAS,EAC7D,IAAgB,EAAe;;GAEjC,GAAI;GACJ,CAAA;EACS,CAAA;GC5CJ,MAAmB,EAC9B,eACA,kBACA,UACA,eAAY,IACZ,eACA,qBAAkB,UAClB,YACA,kBACA,kBAAe,EAAE,EACjB,aACA,aACA,mBACA,iBACA,GAAG,QACuB;CAC1B,IAAM,IAAc,GAAO,WAAW;AAOtC,QACE,kBAAC,GAAD;EACE,OAAO;EACP,UAAU;EACV,OAAO;GACL,SAAS,GAAO,WAAW;GAC3B,OAAO,GAAO,SAAS;GACvB,YAAY,GAAO,cAAc;GACjC,eAboB;AAExB,IADA,KAAe,EACf,IAAgB,EAAa;;GAY1B;EACD,YAAY;EACZ,cAAc;EACd,OAAO;YAEP,kBAAC,IAAD;GACY;GACV,WAAW,MAAS;AAElB,IADA,EAAY,WAAW,EAAK,EAC5B,IAAgB,EAAK,SAAS;;GAEhC,GAAI;GAEH;GACM,CAAA;EACE,CAAA;GC3DX,KAAW,wBACX,IAAsB,iBAEtB,WAA+B;AACnC,KAAI,OAAO,WAAa,OAAe,SAAS,eAAe,GAAS,CACtE;CAGF,IAAM,EAAE,kBAAe,GAEjB,IAAQ,SAAS,cAAc,QAAQ;AAoI7C,CAnIA,EAAM,KAAK,IACX,EAAM,cAAc;OACf,EAAoB;sCACW,EAAW,KAAK,QAAQ;oCAC1B,EAAW,KAAK,MAAM;sCACpB,EAAW,QAAQ,KAAK;yCACrB,EAAW,UAAU,MAAM;wCAC5B,EAAW,UAAU,KAAK;;qCAE7B,EAAW,WAAW,OAAO;qCAC7B,EAAW,WAAW,OAAO;;sCAE5B,EAAW,WAAW,GAAG,SAAS;wCAChC,EAAW,WAAW,GAAG,WAAW;2CACjC,EAAW,WAAW,GAAG,cAAc;;sCAE5C,EAAW,WAAW,GAAG,SAAS;wCAChC,EAAW,WAAW,GAAG,WAAW;2CACjC,EAAW,WAAW,GAAG,cAAc;;sCAE5C,EAAW,WAAW,GAAG,SAAS;wCAChC,EAAW,WAAW,GAAG,WAAW;2CACjC,EAAW,WAAW,GAAG,cAAc;;0CAExC,EAAW,UAAU,IAAI,GAAG;0CAC5B,EAAW,UAAU,IAAI,GAAG;0CAC5B,EAAW,UAAU,IAAI,GAAG;;;OAG/D,EAAoB;;;;OAIpB,EAAoB;OACpB,EAAoB;OACpB,EAAoB;OACpB,EAAoB;OACpB,EAAoB;OACpB,EAAoB;;;;;OAKpB,EAAoB;OACpB,EAAoB;OACpB,EAAoB;OACpB,EAAoB;OACpB,EAAoB;OACpB,EAAoB;;;;;;OAMpB,EAAoB;OACpB,EAAoB;OACpB,EAAoB;OACpB,EAAoB;OACpB,EAAoB;OACpB,EAAoB;;;;;;OAMpB,EAAoB;OACpB,EAAoB;OACpB,EAAoB;OACpB,EAAoB;OACpB,EAAoB;OACpB,EAAoB;;;;;;OAMpB,EAAoB;OACpB,EAAoB;OACpB,EAAoB;OACpB,EAAoB;;;;;OAKpB,EAAoB;OACpB,EAAoB;;;;;;;OAOpB,EAAoB;OACpB,EAAoB;OACpB,EAAoB;;;;;OAKpB,EAAoB;OACpB,EAAoB;OACpB,EAAoB;;;;OAIpB,EAAoB;;;;;OAKpB,EAAoB;;;;;OAKpB,EAAoB;;;;;OAKpB,EAAoB;;;;;;;;;KAWzB,SAAS,KAAK,YAAY,EAAM;GAc5B,KACJ,kBAAC,EAAW,MAAZ;CAAiB,cAAW;CAA6B,QAAA;WAAO;CAE9C,CAAA,EAGd,MAAmB,MACvB,EAA4D,EAAM,IAAI,EAAM,SAAS,KAEjF,MAAuB,MACvB,GAAgB,EAAK,MAAM,GACtB,EAAK,MAAM,MAAM,WAGnB,EAAK,OAGR,MAAsB,MACtB,GAAgB,EAAK,MAAM,GACtB,EAAa,EAAK,OAAO,EAC9B,OAAO,EACL,GAAI,EAAK,MAAM,MAAM,SAAS,EAAE,EACjC,EACF,CAAC,GAUG,kBAAC,KAAD;CAAS,MAPH,EAAK,QAAQ;CAOK,SANf,EAAK,OACjB,KAAA,KACC,MAAyC;AACxC,IAAM,gBAAgB;;WAGa,EAAK;CAAU,CAAA,EAGpD,MAA4B,MAChC,EAAM,KAAK,GAAM,MACE,EAAM,SAAS,KACE,MAAU,EAAM,SAAS,IAGlD;CACL,GAAG;CACH,MAAM,KAAA;CACN,OAAO,GAAoB,EAAK;CACjC,GAGC,EAAK,OACA,IAGL,EAAK,OACA;CACL,GAAG;CACH,OAAO,GAAoB,EAAK;CACjC,GAGI;CACL,GAAG;CACH,OAAO,GAAmB,EAAK;CAChC,CACD,EAEE,MAAc,GAAsB,OAAmB;CAC3D,KAAK,GAAG,EAAM,GAAG,OAAO,EAAK,SAAU,WAAW,EAAK,QAAQ;CAC/D,OAAO,GAAmB,EAAK;CAC/B,UAAU,EAAQ,EAAK;CACxB,GAEY,MAAc,EACzB,UACA,kBAAe,SACf,YAAS,MACT,qBAAkB,GAClB,0BAAuB,KACvB,wBAAqB,GACrB,sBAAmB,GACnB,kBACA,GAAG,QACkB;CACrB,IAAM,IAAe,GAAuB,KAAK,EAC3C,CAAC,GAAgB,KAAqB,GAAwB,KAAK;AAMzE,CAJA,QAAgB;AACd,MAAwB;IACvB,EAAE,CAAC,EAEN,QAAgB;AACd,MAAI,MAAiB,gBAAgB,OAAO,iBAAmB,IAC7D;EAGF,IAAM,IAAO,EAAa;AAC1B,MAAI,CAAC,EACH;EAGF,IAAM,IAAW,IAAI,gBAAgB,MAAY;GAC/C,IAAM,IAAY,EAAQ,IAAI,YAAY;AAC1C,GAAI,OAAO,KAAc,YACvB,EAAkB,EAAU;IAE9B;AAKF,SAHA,EAAS,QAAQ,EAAK,EACtB,EAAkB,EAAK,uBAAuB,CAAC,MAAM,QAExC,EAAS,YAAY;IACjC,CAAC,EAAa,CAAC;CAElB,IAAM,IACJ,MAAiB,eACb,EAAM,SAAS,IAAqB,KACpC,MAAmB,QACnB,IAAiB,IACjB,EAAM,SAAS,GAEf,IAAW,EAAM,SAAS,GAE1B,IAAiB,GAAyB,EAAM,EAEhD,IAAkB,WACb;EACL,IAAM,IAAa,EAAe,MAAM,GAAG,EAAmB,EACxD,IAAgB,EAAe,MAAM,EAAe,SAAS,EAAiB,EAC9E,IAAc,EAAe,MACjC,GACA,EAAe,SAAS,EACzB;AAED,MAAI,EAAY,WAAW,EACzB,QAAO;EAGT,IAAM,IAAmC,EACvC,OACE,kBAAC,GAAD;GACE,SAAS,CAAC,QAAQ;GAClB,MAAM,EACJ,OAAO,EAAY,IAAI,GAAW,EACnC;aAED,kBAAC,QAAD;IAAM,OAAO,EAAE,QAAQ,WAAW;cAAG,KAAiB;IAA4B,CAAA;GACzE,CAAA,EAEd;AAED,SAAO;GAAC,GAAG;GAAY;GAAkB,GAAG;GAAc;KACxD,GACJ,GAGE,IACJ,kBAAC,QAAD;EAAM,WAAU;EAA+B,eAAY;YACzD,kBAAC,GAAD;GAAM,MAAK;GAAc,MAHP,OAAO,SAAS,EAAiB,WAAW,UAAU,MAAM,GAAG,IAAI;GAGvC,OAAO,EAAE,OAAO,WAAW;GAAI,CAAA;EACxE,CAAA,EAGH,IAAoB,EAAgB,aAAa;AAEvD,QACE,kBAAC,OAAD;EAAK,KAAK;YACR,kBAAC,GAAD;GACE,GAAI;GACJ,OAAO;GACP,WAAW;GACX,WAAW,CAAC,GAAqB,EAAgB,UAAU,CAAC,OAAO,QAAQ,CAAC,KAAK,IAAI;GACrF,gBAAc;GACd,kBAAgB,IAAW,SAAS;GACpC,CAAA;EACE,CAAA;GC9UJ,KAAW,oBACX,KAAkB;AAExB,SAAS,GAAgB,GAAG,GAAuC;AACjE,QAAO,EAAW,OAAO,QAAQ,CAAC,KAAK,IAAI;;AAG7C,SAAS,KAAe;AAEtB,KADI,OAAO,WAAa,OACpB,SAAS,eAAe,GAAS,CAAE;CAEvC,IAAM,IAAQ,SAAS,cAAc,QAAQ;AAY7C,CAXA,EAAM,KAAK,IACX,EAAM,cAAc;OACf,GAAgB;;;;OAIhB,GAAgB;;;KAKrB,SAAS,KAAK,YAAY,EAAM;;AAGlC,IAAa,MAAU,EAAE,cAAW,GAAG,SACrC,QAAgB;AACd,KAAc;GACb,EAAE,CAAC,EAEC,kBAAC,GAAD;CAAW,GAAI;CAAO,WAAW,GAAgB,IAAiB,EAAU;CAAI,CAAA;AAGzF,GAAO,cAAc;;;ACvBrB,IAAM,KAAW;AAEjB,SAAgB,KAAsB;AACpC,KAAI,OAAO,WAAa,IAAa;CACrC,IAAM,EAAE,eAAY,GAChB,IAAQ,SAAS,eAAe,GAAS;AAO7C,CANK,MACH,IAAQ,SAAS,cAAc,QAAQ,EACvC,EAAM,KAAK,IACX,SAAS,KAAK,YAAY,EAAM,GAGlC,EAAM,cAAc;;8CAEwB,EAAQ,QAAQ,WAAW;;;;oBAIrD,EAAQ,QAAQ,WAAW;uBACxB,EAAQ,OAAO;gBACtB,EAAQ,UAAU;eACnB,EAAQ,QAAQ,KAAK;;mBAEjB,EAAQ,MAAM,OAAO,IAAI;mBACzB,EAAQ,MAAM,OAAO,IAAI;iBAC3B,EAAQ,QAAQ,OAAO;;;;oBAIpB,EAAQ,QAAQ,WAAW;;;;oBAI3B,EAAQ,QAAQ,WAAW;;;;;;;;;;;;;;;;mBAgB5B,EAAQ,MAAM,KAAK,IAAI;mBACvB,EAAQ,MAAM,KAAK,IAAI;iBACzB,EAAQ,QAAQ,KAAK;;;;;;eAMvB,EAAQ,QAAQ,MAAM;mBAClB,EAAQ,WAAW,MAAM,SAAS;qBAChC,EAAQ,WAAW,MAAM,WAAW;qBACpC,EAAQ,WAAW,MAAM,WAAW;;;;;eAK1C,EAAQ,QAAQ,KAAK;mBACjB,EAAQ,WAAW,KAAK,SAAS;qBAC/B,EAAQ,WAAW,KAAK,WAAW;qBACnC,EAAQ,WAAW,KAAK,WAAW;;;;;;;;;;;;;;AAexD,SAAS,GAAkB,GAAuB,GAA6B,GAAgB;AAS7F,QARI,MAAW,SAEX,kBAAC,OAAD;EAAK,WAAU;YACb,kBAAC,KAAD;GAAG,WAAU;aAAmB;GAAW,CAAA;EACvC,CAAA,GAKR,kBAAC,OAAD;EAAK,WAAU;YAAf,CACG,IAAU,kBAAC,KAAD;GAAG,WAAU;aAAoB;GAAY,CAAA,GAAG,MAC3D,kBAAC,KAAD;GAAG,WAAU;aAAmB;GAAW,CAAA,CACvC;;;AAIV,SAAS,GAAgB,GAAG,GAAkC;AAC5D,QAAO,EAAM,OAAO,QAAQ,CAAC,KAAK,IAAI;;AAGxC,IAAa,MAAW,EACtB,YAAS,UACT,YACA,WACA,UACA,UACA,UACA,WACA,eACA,qBACA,aACA,GAAG,QACe;CAClB,IAAM,EAAE,eAAY;AAEpB,SAAgB;AACd,MAAqB;IACpB,EAAE,CAAC;CAON,IAAM,IACJ,MAAU,KAAA,IAEN,GAAkB,GAAQ,GAJX,MAJD,MAAW,SAC3B,iBACA,qGAMkD,GADhD,GAGA,IAAiB,MAAW,SAC9B;EACA,UAAU,EAAQ,MAAM,KAAK;EAC7B,UAAU,EAAQ,MAAM,KAAK;EAC7B,SAAS,EAAQ,QAAQ;EACzB,WAAW;EACZ,GACC;EACA,UAAU,EAAQ,MAAM,OAAO;EAC/B,UAAU,EAAQ,MAAM,OAAO;EAC/B,SAAS,EAAQ,QAAQ;EAC1B;AAEH,QACE,kBAAC,IAAD;EACE,GAAI;EACJ,OAAO;EACP,OAAO,KAAS,EAAQ,QAAQ;EAChC,OAAO,KAAS;EAChB,QAAQ;GACN,GAAG;GACH,MAAM;IACJ,cAAc,EAAQ;IACtB,OAAO,EAAQ,QAAQ;IACvB,eAAe;IACf,GAAG;IACH,GAAG,GAAQ;IACZ;GACF;EACD,YAAY;GACV,GAAG;GACH,MAAM,GAAgB,sBAAsB,mBAAmB,KAAU,GAAY,MAAM,EAAiB;GAC7G;EAEA;EACU,CAAA;GC5IX,KAAW;AAEjB,SAAS,KAAe;AACtB,KAAI,OAAO,WAAa,IAAa;CACrC,IAAM,EAAE,kBAAe,GACnB,IAAQ,SAAS,eAAe,GAAS;AAO7C,CANK,MACH,IAAQ,SAAS,cAAc,QAAQ,EACvC,EAAM,KAAK,IACX,SAAS,KAAK,YAAY,EAAM,GAGlC,EAAM,cAAc;;;aAGT,EAAW,QAAQ,IAAI;;;;;;aAMvB,EAAW,QAAQ,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;eA0BrB,EAAW,KAAK,QAAQ;qBAClB,EAAW,WAAW,KAAK,WAAW;mBACxC,EAAW,WAAW,KAAK,SAAS;qBAClC,EAAW,WAAW,KAAK,WAAW;;wBAEnC,EAAW,WAAW,KAAK,cAAc;;;;;;;;;;;;;;;;;;;;oBAoB7C,EAAW,QAAQ,SAAS;0BACtB,EAAW,QAAQ,aAAa;;;;eAI3C,EAAW,KAAK,OAAO;qBACjB,EAAW,WAAW,KAAK,aAAa;;;;oBAIzC,EAAW,QAAQ,QAAQ;;;;;;;;;oBAS3B,EAAW,QAAQ,SAAS;0BACtB,EAAW,QAAQ,aAAa;;;;;;;;eAQ3C,EAAW,YAAY,MAAM;gBAC5B,EAAW,YAAY,OAAO;mBAC3B,EAAW,YAAY,MAAM;kBAC9B,EAAW,YAAY,MAAM;;;;;;eAMhC,EAAW,KAAK,QAAQ;;;;;;;;;;;;eAYxB,EAAW,YAAY,MAAM;gBAC5B,EAAW,YAAY,OAAO;mBAC3B,EAAW,YAAY,MAAM;;;;;;;;;;eAUjC,EAAW,YAAY,MAAM;gBAC5B,EAAW,YAAY,OAAO;;;;;;;;;;;;;;;;;;eAkB/B,EAAW,KAAK,MAAM;;;;;eAKtB,EAAW,KAAK,SAAS;;;;;;;;;;;;;;;uBAejB,EAAW,OAAO,KAAK;;;;;;;;;;;;;;;eAe/B,EAAW,KAAK,QAAQ;qBAClB,EAAW,WAAW,KAAK,WAAW;mBACxC,EAAW,WAAW,KAAK,SAAS;qBAClC,EAAW,WAAW,KAAK,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eAgD5C,EAAW,KAAK,QAAQ;;qBAElB,EAAW,WAAW,KAAK,WAAW;;;;;;;;;;eAU5C,EAAW,KAAK,QAAQ;;;;;;;;;;;;;;;;eAgBxB,EAAW,KAAK,QAAQ;;;;;;;;;;;;;;oBAcnB,EAAW,QAAQ,QAAQ;;;;;;;;;;;;;;;;;;;uBAmBxB,EAAiB,QAAQ,OAAO;oBACnC,EAAiB,QAAQ,QAAQ,WAAW;;;;;;;8CAOlB,EAAiB,QAAQ,QAAQ,WAAW;;;;;;;;;eAS3E,EAAiB,QAAQ,QAAQ,KAAK;mBAClC,EAAiB,QAAQ,WAAW,KAAK,SAAS;qBAChD,EAAiB,QAAQ,WAAW,KAAK,WAAW;qBACpD,EAAiB,QAAQ,WAAW,KAAK,WAAW;;;;;;;;;;;;;;;;;;;;;;8BAsB3C,EAAiB,QAAQ,QAAQ,WAAW;;;;;;;2BAO/C,EAAW,KAAK,QAAQ;;uBAE5B,EAAW,OAAO,KAAK;;;;;aAKjC,EAAW,QAAQ,WAAW;;qBAEtB,EAAW,QAAQ,cAAc;;;;;;;;;;;;;;;eAevC,EAAW,YAAY,WAAW;mBAC9B,EAAW,YAAY,WAAW;;0BAE3B,EAAW,KAAK,SAAS;uBAC5B,EAAW,OAAO,MAAM;mBAC5B,EAAW,WAAW,KAAK,SAAS;;;;;AA0BvD,IAAa,MAA2C,EACtD,UAAO,WACP,kBAAe,IACf,4BAAyB,KACzB,4BAAyB,IACzB,0BAAuB,GACvB,8BAA2B,GAC3B,6BACA,qBAAkB,IAClB,qBAAkB,IAClB,YAAS,IACT,cACA,YACA,oBAAiB,GACjB,aACA,qBAAkB,IAClB,WAAQ,GACR,kBACA,aACA,qBACA,YAAY,GACZ,WACA,GAAG,QACC;CACJ,IAAM,CAAC,IAAiB,KAAsB,EAAM,SAAS,EAAe,EACtE,CAAC,IAAkB,MAAuB,EAAM,SAAS,EAAgB,EACzE,CAAC,IAAqB,MAA0B,EAAM,SAAS,GAAM;AAM3E,CAJA,QAAgB;AACd,MAAc;IACb,EAAE,CAAC,EAEN,QAAgB;AACd,MAAI,CAAC,KAAgB,OAAO,SAAW,IAAa;EAEpD,IAAM,UAA6B;AACjC,MAAuB,OAAO,cAAc,EAAuB;;AAMrE,SAHA,GAAsB,EACtB,OAAO,iBAAiB,UAAU,EAAqB,QAE1C;AACX,UAAO,oBAAoB,UAAU,EAAqB;;IAE3D,CAAC,GAAc,EAAuB,CAAC;CAE1C,IAAM,KAAkB,KAAW,IAC7B,KAAmB,KAAY,IAC/B,KAAwB,MAAkB,KAAgB,KAC1D,KAAa,KAAK,IAAI,GAAG,KAAK,KAAK,IAAQ,GAAiB,CAAC,EAC7D,IAAyB,KAA4B,QAAQ,EAAqB,SAClF,KAAiB,EAAM,cACtB,IAEE;EACL,GAAG;EACH,QAAQ;EACR,QAAQ;EACR,QAAQ;EACR,QAAQ;EACT,GARmC,GASnC;EAAC;EAAwB;EAAQ;EAAuB,CAAC,EAEtD,KAAa,EAAM,aAAa,MAAqB;EACzD,IAAM,IAAc,KAAK,IAAI,IAAY,KAAK,IAAI,GAAG,EAAS,CAAC;AAI/D,EAHI,KACF,EAAmB,EAAY,EAEjC,IAAW,GAAa,GAAiB;IACxC;EAAC;EAAS;EAAU;EAAkB;EAAW,CAAC,EAE/C,IAAyB,EAAM,aAAa,GAAkB,MAAyB;AAO3F,EANI,KACF,EAAmB,EAAS,EAE1B,KACF,GAAoB,EAAa,EAEnC,IAAW,GAAU,EAAa;IACjC;EAAC;EAAS;EAAU;EAAS,CAAC,EAE3B,KAAuB,EAAM,aAAa,GAAkB,MAAyB;AAOzF,EANI,KACF,EAAmB,EAAS,EAE1B,KACF,GAAoB,EAAa,EAEnC,IAAmB,GAAU,EAAa;IACzC;EAAC;EAAS;EAAkB;EAAS,CAAC,EAEnC,KAAiB,EAAM,aAAa,MAAoC;EAC5E,IAAM,IAAa,MAAS,aACtB,IAAa,IACf,KAAkB,IAClB,KAAkB;AAiCtB,SACE,kBAAC,IAAD;GACE,QAAO;GACP,QAAQ;GACR,iBAAiB;GACjB,WAAU;GACV,YAAY,EAAE,MAAM,gCAAgC;aApCtD,kBAAC,UAAD;IACE,MAAK;IACL,WAAU;IACV,cAAY;IACZ,UAAU,MAAU;AAGlB,KAFA,EAAM,gBAAgB,EACtB,EAAM,iBAAiB,EACvB,GAAW,EAAW;;IAExB,YAAY,MAAU;AACpB,OAAM,iBAAiB;;cAV3B,CAaE,kBAAC,QAAD;KAAM,WAAU;KAAgC,eAAY;eAC1D,kBAAC,GAAD;MACE,MAAK;MACL,MAAM;MACN,OAAO,EAAE,OAAO,WAAW;MAC3B,CAAA;KACG,CAAA,EACP,kBAAC,QAAD;KAAM,WAAU;KAA0B,eAAY;eACpD,kBAAC,GAAD;MACE,MAAM,IAAa,qBAAqB;MACxC,MAAM;MACN,OAAO,EAAE,OAAO,WAAW;MAC3B,CAAA;KACG,CAAA,CACA;KAWN;GACS,CAAA;IAEb;EAAC;EAAY;EAAsB;EAA0B;EAAiB;EAAuB,CAAC;AA+BzG,QACE,kBAAC,GAAD;EACE,WAAW,iBAAiB,KAAa;EACnC;EACN,SAAS;EACT,UAAU;EACH;EACP,eAAe;EACE;EACA;EACT;EACR,QAAQ;EACI,aAzCsC,GAAG,GAAM,MACzD,MAAS,SAET,kBAAC,QAAD;GAAM,WAAU;GAA2B,eAAY;aACrD,kBAAC,GAAD;IAAM,MAAK;IAAa,MAAM,EAAiB,WAAW,YAAY;IAAU,OAAO,EAAE,OAAO,WAAW;IAAI,CAAA;GAC1G,CAAA,GAIP,MAAS,SAET,kBAAC,QAAD;GAAM,WAAU;GAA2B,eAAY;aACrD,kBAAC,GAAD;IAAM,MAAK;IAAc,MAAM,EAAiB,WAAW,YAAY;IAAU,OAAO,EAAE,OAAO,WAAW;IAAI,CAAA;GAC3G,CAAA,IAIN,MAAS,eAAe,MAAS,gBAAgB,IAC7C,GAAe,EAAK,GAGzB,IACK,EAAmB,GAAG,GAAM,EAAgB,GAG9C;EAiBL,UAAU;EACV,kBAAkB;EAClB,GAAI;EACJ,CAAA;GCznBA,KAAW,mBAEJ,IAAiB,YAEjB,MAAwB,GAAG,MACtC,EAAW,OAAO,QAAQ,CAAC,KAAK,IAAI,CAAC,MAAM,EAEhC,WAA0B;AACrC,KAAI,OAAO,WAAa,OAAe,SAAS,eAAe,GAAS,CACtE;CAGF,IAAM,IAAQ,SAAS,cAAc,QAAQ;AAiM7C,CAhMA,EAAM,KAAK,IACX,EAAM,cAAc;OACf,EAAe;6BACO,EAAY,OAAO,QAAQ;6BAC3B,EAAY,KAAK,MAAM;yBAC3B,EAAY,KAAK,SAAS;kCACjB,EAAY,KAAK,MAAM;8BAC3B,EAAY,QAAQ,QAAQ;yBACjC,EAAY,KAAK,QAAQ;0BACxB,EAAY,OAAO,UAAU;;;OAGhD,EAAe;;;;;;OAMf,EAAe;;;;;;OAMf,EAAe;OACf,EAAe;;;;;OAKf,EAAe;;;;;OAKf,EAAe;;;;;;;;OAQf,EAAe;;;;;;;;OAQf,EAAe;;;;;OAKf,EAAe;OACf,EAAe;OACf,EAAe;OACf,EAAe;;;;;OAKf,EAAe;OACf,EAAe;;;;;OAKf,EAAe;;;;;;;;OAQf,EAAe;;;;;;OAMf,EAAe;;;;OAIf,EAAe;;;;;;OAMf,EAAe;;;;;;OAMf,EAAe;;;;;;OAMf,EAAe;;;;;;;OAOf,EAAe;;;;;;;;;;;;OAYf,EAAe;;;;;;OAMf,EAAe;;eAEP,EAAY,KAAK,QAAQ;;;OAGjC,EAAe;;eAEP,EAAY,KAAK,QAAQ;;;OAGjC,EAAe;;;;OAIf,EAAe;eACP,EAAY,KAAK,QAAQ;;;;;OAKjC,EAAe;;eAEP,EAAY,KAAK,QAAQ;;;OAGjC,EAAe;eACP,EAAY,KAAK,QAAQ;;;OAGjC,EAAe;OACf,EAAe;;;;;OAKf,EAAe;;;;;;;;;OASf,EAAe;;;;;;OAMf,EAAe;;;;OAIf,EAAe;eACP,EAAY,KAAK,UAAU;;;;KAMxC,SAAS,KAAK,YAAY,EAAM;GCnMrB,MAAS,EACpB,WAAW,GACX,eAAY,OACZ,GAAG,QACe;AAClB,SAAgB;AACd,MAAmB;IAClB,EAAE,CAAC;CAEN,IAAM,IAAc,MAAc,mBAC5B,IAAkB,GACtB,IAAc,IAAiB,KAAA,GAC/B,EACD,EACK,IACJ,IACI,EAAM,mBAAmB,EAAM,cAAc,aAAa,KAAA,IAAY,cACtE,EAAM;AAEZ,QAAO,kBAAC,IAAD;EAAU,GAAI;EAAO,gBAAgB;EAAwB,WAAW;EAAmB,CAAA;;AAGpG,GAAM,cAAc;;;ACdpB,IAAM,KAAW,kBACX,KAAuB,qBACvB,KAA4B,IAE5B,KAOD;CACH,IAAI;EACF,WAAW;EACX,UAAU;EACV,YAAY;EACZ,qBAAqB;EACrB,uBAAuB;EACvB,mBAAmB;EACpB;CACD,IAAI;EACF,WAAW;EACX,UAAU;EACV,YAAY;EACZ,qBAAqB;EACrB,uBAAuB;EACvB,mBAAmB;EACpB;CACD,IAAI;EACF,WAAW;EACX,UAAU;EACV,YAAY;EACZ,qBAAqB;EACrB,uBAAuB;EACvB,mBAAmB;EACpB;CACF;AAED,SAAS,KAAe;AAEtB,KADI,OAAO,WAAa,OACpB,SAAS,eAAe,GAAS,CAAE;CAEvC,IAAM,EAAE,SAAM,iBAAc,GAEtB,IAAQ,SAAS,cAAc,QAAQ;AAoK7C,CAnKA,EAAM,KAAK,IACX,EAAM,cAAc;;;;;;;;;;;;;;eAcP,EAAK,KAAK,SAAS;;;;;;;;;;sBAUZ,GAAqB;;;;;;;;;;;;;eAa5B,EAAK,KAAK,OAAO;;;;;;;oBAOZ,EAAK,UAAU,OAAO;;;;;;;;;;;;;;;;;;iCAkBT,EAAK,UAAU,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBA+BrC,EAAU,UAAU,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eAiCpC,EAAU,KAAK,SAAS;qBAClB,EAAU,WAAW,WAAW;;;;;;mBAMlC,GAAY,GAAG,SAAS;qBACtB,GAAY,GAAG,WAAW;;;;oBAI3B,EAAU,KAAK,mBAAmB;;;;;eAKvC,EAAK,KAAK,OAAO;;;;;;;;;;;;;;;;;KAmB9B,SAAS,KAAK,YAAY,EAAM;;AAGlC,SAAS,GAA2B,GAA0B;AACvD,MAEc,EAAK,iBAA8B,oBACtD,CAAW,SAAS,MAAW;EAC7B,IAAM,KAAS,EAAO,eAAe,IAAI,QAAQ,QAAQ,IAAI,CAAC,MAAM;AACpE,IAAO,aAAa,IAAsB,EAAM;GAChD;;AAGJ,IAAa,MAAQ,EACnB,eAAY,QACZ,YAAS,MACT,cAAW,eACX,iBAAc,IACd,cACA,UACA,cACA,GAAG,QACY;CACf,IAAM,IAAU,GAAuB,KAAK;AAE5C,SAAgB;AAGd,EAFA,IAAc,EAEd,GAA2B,EAAQ,QAAQ;EAE3C,IAAM,IAAW,IAAI,uBAAuB;AAC1C,MAA2B,EAAQ,QAAQ;IAC3C;AAUF,SARI,EAAQ,WACV,EAAS,QAAQ,EAAQ,SAAS;GAChC,SAAS;GACT,WAAW;GACX,eAAe;GAChB,CAAC,QAGS;AACX,KAAS,YAAY;;IAEtB,EAAE,CAAC;CAEN,IAAM,IAAS,GAAY,IACrB,IAAoB,KAAa;EACrC,OAAO,MAAmB,KAAK,IAAI,IAAS,KAA4B,GAAG,EAAE;EAC7E,OAAO;EACR;AAED,QACE,kBAAC,OAAD;EAAK,KAAK;YACR,kBAAC,IAAD;GACE,GAAI;GACO;GACX,UAAU;GACV,WAAW;GACX,OAAO;IACL,GAAG;IACF,oBAA+B,EAAO;IACtC,uBAAkC,EAAO;IACzC,yBAAoC,EAAO;IAC3C,2BAAsC,EAAO;IAC7C,6BAAwC,EAAO;IAC/C,iCAA4C,EAAO;IACrD;GACD,gBAAA;GACA,mBAAiB;GACjB,gBAAc;GACd,kBAAgB;GAChB,qBAAmB,IAAc,SAAS;GAC1C,CAAA;EACE,CAAA;GC7SJ,KAAW,sBAEJ,IAAyB,oBAEzB,MAA2B,GAAG,MACzC,EAAW,OAAO,QAAQ,CAAC,KAAK,IAAI,CAAC,MAAM,EAEhC,WAA6B;AACxC,KAAI,OAAO,WAAa,OAAe,SAAS,eAAe,GAAS,CACtE;CAGF,IAAM,IAAQ,SAAS,cAAc,QAAQ;AA0F7C,CAzFA,EAAM,KAAK,IACX,EAAM,cAAc;OACf,EAAuB;0BACJ,EAAY,KAAK,QAAQ;;oBAE/B,EAAY,KAAK,QAAQ;iDACI,EAAY,KAAK,QAAQ;;;;;OAKnE,EAAuB;;;;oBAIV,EAAY,KAAK,QAAQ;;;;OAItC,EAAuB;OACvB,EAAuB;;;iCAGG,EAAY,KAAK,SAAS;;eAE5C,EAAY,KAAK,QAAQ;oBACpB,EAAY,KAAK,QAAQ;;;;;;;OAOtC,EAAuB;OACvB,EAAuB;OACvB,EAAuB;OACvB,EAAuB;;;;OAIvB,EAAuB;OACvB,EAAuB;OACvB,EAAuB;OACvB,EAAuB;oBACV,EAAY,QAAQ,OAAO;eAChC,EAAY,KAAK,OAAO;;;;OAIhC,EAAuB;OACvB,EAAuB;oBACV,EAAY,OAAO,cAAc;eACtC,EAAY,KAAK,OAAO;;;;;OAKhC,EAAuB;OACvB,EAAuB;OACvB,EAAuB;OACvB,EAAuB;oBACV,EAAY,OAAO,cAAc;eACtC,EAAY,KAAK,OAAO;;;;OAIhC,EAAuB;;;;;;;oBAOV,EAAY,OAAO,UAAU;;;OAG1C,EAAuB;OACvB,EAAuB;OACvB,EAAuB;eACf,EAAY,OAAO,UAAU;;;OAGrC,EAAuB;OACvB,EAAuB;;oBAEV,EAAY,KAAK,SAAS;;KAI5C,SAAS,KAAK,YAAY,EAAM;GC7FrB,MAAY,EACvB,YAAY,GACZ,qBACA,GAAG,QACgB;AACnB,SAAgB;AACd,MAAsB;IACrB,EAAE,CAAC;CAEN,IAAM,IAAsB,GAC1B,GACC,GAA4B,MAC7B,EACD,EAEK,IAAmB;EACvB,GAAI,KAAsB,EAAE;EAC5B,MAAM;EACP;AAED,QAAO,kBAAC,GAAD;EAAa,GAAI;EAAO,YAAY;EAAoB,CAAA;;AAGjE,GAAS,cAAc;;;ACwBvB,IAAM,KAAW,mBAEX,KAAiE;CACrE,SAAS;CACT,SAAS;CACT,SAAS;CACT,OAAO;CACP,YAAY;CACZ,UAAU;CACV,KAAK;CACL,QAAQ;CACT;AAED,SAAS,KAAe;AACtB,KAAI,OAAO,WAAa,IAAa;CAErC,IAAM,EAAE,aAAU,GAEd,IAAQ,SAAS,eAAe,GAAS;AAO7C,CANK,MACH,IAAQ,SAAS,cAAc,QAAQ,EACvC,EAAM,KAAK,IACX,SAAS,KAAK,YAAY,EAAM,GAGlC,EAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;uBAuBC,EAAM,MAAM,OAAO;;;;;;;;qBAQrB,EAAM,WAAW,WAAW;;;;;;;;;;;;;;;;;;;;;;;eAuBlC,EAAM,WAAW,MAAM;;qBAEjB,EAAM,WAAW,WAAW;;6BAEpB,EAAM,WAAW,IAAI;;;;;;;;uBAQ3B,EAAM,OAAO,OAAO;;mBAExB,EAAM,OAAO,SAAS;qBACpB,EAAM,WAAW,WAAW;qBAC5B,EAAM,OAAO,WAAW;wBACrB,EAAM,OAAO,cAAc;;;;;;;;;;;;;;;;;;AAmBnD,SAAS,GAAW,GAAuB,GAAyB,GAAmD;CACrH,IAAM,EAAE,aAAU;AAUlB,QARI,MAAW,WACN;EACL,MAAM,EAAa,QAAQ,EAAM,OAAO,QAAQ,MAAM;EACtD,IAAI,EAAa,cAAc,EAAM,OAAO,QAAQ,MAAM;EAC1D,QAAQ,EAAa,UAAU,EAAM,OAAO,QAAQ,MAAM;EAC3D,GAGI,EAAM,OAAO,GAAQ;;AAG9B,SAAS,GACP,GACA,GACA,GACA,GACe;CACf,IAAM,EAAE,aAAU,GACZ,IAAU,GAAW,GAAQ,GAAS,EAAa,EACnD,IAAa,EAAM,KAAK;AAE9B,QAAO;EACL,iBAAiB,EAAQ,MAAM;EAC/B,mBAAmB,EAAQ;EAC3B,qBAAqB,EAAQ,UAAU,EAAQ,MAAM;EACrD,2BAA2B,MAAW,YAAY,MAAY,aAAa,EAAQ,SAAS,EAAM,cAAc;EAChH,yBAAyB,EAAW;EACpC,4BAA4B,EAAW;EACvC,uBAAuB,EAAW;EAClC,8BAA8B,EAAW;EACzC,yBAAyB,MAAY,YAAY,EAAQ,UAAU,EAAQ,OAAO,EAAM,IAAI;EAC5F,+BAA+B,MAAY,YAAY,EAAM,cAAc,EAAM,IAAI;EACrF,wBAAwB,EAAW,WAAW;EAC9C,0BAA0B,EAAW,WAAW;EAChD,6BAA6B,EAAW,WAAW;EACnD,+BAA+B,EAAW,iBAAiB;EAC3D,iCAAiC,EAAW,iBAAiB;EAC9D;;AAGH,SAAS,GAAwB,GAAgE;AAC/F,QAAO,EAAM,SAAS,KAAA,KAAa,EAAM,UAAU,KAAA,KAAa,CAAC,EAAM,OAAO,EAAM,aAAa,KAAA;;AAGnG,IAAM,MAA6B,EACjC,cAAW,WACX,eAAY,SACZ,YAAS,MACT,sBACA,4BACA,wBACA,WAAW,IAAgB,IAC3B,eAAe,IAAoB,IACnC,OAAO,IAAY,EAAE,EACrB,GAAG,QACC;AACJ,SAAgB;AACd,MAAc;IACb,EAAE,CAAC;CAEN,IAAM,IAAY,WAAW,IAAgB,IAAI,MAAkB,MAC7D,IAAgB,WAAW,IAAoB,IAAI,MAAsB,MACzE,IAAmB,GACvB,GACA,GACA,GACA;EACE,MAAM;EACN,YAAY;EACZ,QAAQ;EACT,CACF,EACK,IAAS,GAAwB,EAAU,GAAG,GAAe,KAAY,KAAA;AAE/E,QACE,kBAAC,GAAD;EACa;EACI;EACf,OAAO;GAAE,GAAG;GAAkB,GAAG;GAAW;EACpC;EACR,kBAAgB;EAChB,mBAAiB;EACjB,gBAAc;EACd,GAAI;EACJ,CAAA;GAIA,MAAqC,EACzC,cAAW,WACX,eAAY,SACZ,sBACA,4BACA,wBACA,WAAW,IAAgB,IAC3B,eAAe,IAAoB,IACnC,OAAO,IAAY,EAAE,EACrB,GAAG,QACC;AACJ,SAAgB;AACd,MAAc;IACb,EAAE,CAAC;CAEN,IAAM,IAAY,kBAAkB,IAAgB,IAAI,MAAkB,MACpE,IAAgB,kBAAkB,IAAoB,IAAI,MAAsB,MAChF,IAAmB,GACvB,GACA,GACA,MACA;EACE,MAAM;EACN,YAAY;EACZ,QAAQ;EACT,CACF;AAED,QACE,kBAAC,EAAS,QAAV;EACa;EACI;EACf,OAAO;GAAE,GAAG;GAAkB,GAAG;GAAW;EAC5C,GAAI;EACJ,CAAA;GAIO,KAAQ;AAErB,GAAM,cAAc,SACpB,GAAY,cAAc,gBAC1B,GAAM,SAAS;;;ACxRf,IAAM,KAAW,mBAEX,KAID;CACH,aAAa;EACX,UAAU;EACV,OAAO;EACP,aAAa;EACd;CACD,aAAa,EACX,aAAa,oDACd;CACD,gBAAgB,EACd,aAAa,sEACd;CACF;AAED,SAAS,KAAe;AACtB,KAAI,OAAO,WAAa,IAAa;CAErC,IAAM,EAAE,aAAU,GAEd,IAAQ,SAAS,eAAe,GAAS;AAO7C,CANK,MACH,IAAQ,SAAS,cAAc,QAAQ,EACvC,EAAM,KAAK,IACX,SAAS,KAAK,YAAY,EAAM,GAGlC,EAAM,cAAc;;;;eAIP,EAAM,KAAK,YAAY;;;;;;;;;;;;;;;;;;;;;;;;eAwBvB,EAAM,aAAa,MAAM;;;;;;;;eAQzB,EAAM,aAAa,MAAM;;;;;;;;;gBASxB,EAAM,aAAa,YAAY;;;;;;;;;;;;uBAYxB,EAAM,aAAa,YAAY;;;;;;;;eAQvC,EAAM,aAAa,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eA2D/B,EAAM,KAAK,MAAM;;qBAEX,EAAM,MAAM,WAAW;;;;;;;eAO7B,EAAM,KAAK,YAAY;;qBAEjB,EAAM,YAAY,WAAW;;;;;;;;;;;;eAYnC,EAAM,KAAK,MAAM;;;;;;;;;;;;;;eAcjB,EAAM,KAAK,MAAM;;qBAEX,EAAM,MAAM,kBAAkB;;;;;;;AAQnD,SAAS,GAAoB,GAAkC;CAC7D,IAAM,EAAE,aAAU,GACZ,IAAa,EAAM,KAAK;AAE9B,QAAO;EACL,gCAAgC,EAAW;EAC3C,+BAA+B,EAAW;EAC1C,uBAAuB,EAAW;EAClC,yBAAyB,EAAW;EACpC,yBAAyB,EAAW;EACpC,yBAAyB,EAAW,MAAM;EAC1C,gCAAgC,EAAW,MAAM;EACjD,+BAA+B,EAAW,YAAY;EACtD,sCAAsC,EAAW,YAAY;EAC7D,+BAA+B,EAAW;EAC1C,4BAA4B,EAAW;EACvC,+BAA+B,EAAW;EAC1C,iCAAiC,EAAW,aAAa;EACzD,wCAAwC,EAAW,aAAa;EACjE;;AAGH,SAAS,GAAmB,GAA2B;AAarD,QAZI,MAAa,aAEb,kBAAC,OAAD;EAAK,WAAU;EAAqB,SAAQ;EAAY,MAAK;EAAe,WAAU;YAAtF;GACE,kBAAC,QAAD,EAAM,GAAE,6BAA8B,CAAA;GACtC,kBAAC,QAAD,EAAM,GAAE,kCAAmC,CAAA;GAC3C,kBAAC,QAAD,EAAM,GAAE,aAAc,CAAA;GACtB,kBAAC,QAAD,EAAM,GAAE,gBAAiB,CAAA;GACzB,kBAAC,QAAD,EAAM,GAAE,gBAAiB,CAAA;GACrB;MAIH,GAAc,GAAU,EAAE,MAAM,IAAI,CAAC;;AAG9C,IAAa,MAAS,EACpB,eAAY,eACZ,YAAS,WACT,eACA,YACA,kBACA,WAAW,IAAgB,IAC3B,eAAe,IAAoB,IACnC,OAAO,IAAY,EAAE,EACrB,aACA,GAAG,QACa;AAChB,SAAgB;AACd,MAAc;IACb,EAAE,CAAC;CAEN,IAAM,IAAiB,GAAgB,IACjC,IAAmB,GAAoB,EAAO;AAEpD,KAAI,MAAc,iBAAiB,MAAc,iBAG/C,QACE,kBAAC,OAAD;EACa,WAAA,iBAJoB,IAAgB,IAAI,MAAkB;EAKrE,OAAO;GAAE,GAAG;GAAkB,GAAG;GAAW;EAC5C,mBAAiB;EACjB,gBAAc;YAEd,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,KAAD;IAAG,WAAU;cAA0B,KAAiB,EAAe;IAAgB,CAAA,EACtF,EACG;;EACF,CAAA;CAIV,IAAM,IAAW,KAAc,EAAe,YAAY,YACpD,IAAY,WAAW,IAAgB,IAAI,MAAkB,MAC7D,IAAgB,WAAW,IAAoB,IAAI,MAAsB,MACzE,IAAQ,KAAW,EAAe,OAElC,IAAQ,IACZ,kBAAC,QAAD;EAAM,WAAU;EAAwB,eAAY;YACjD,GAAmB,EAAS;EACxB,CAAA,GAEP,kBAAC,QAAD;EAAM,WAAU;EAA8B,eAAY;YAA1D;GACE,kBAAC,QAAD;IAAM,WAAU;IAAqB,YAAS;IAAS,CAAA;GACvD,kBAAC,QAAD;IAAM,WAAU;IAAqB,YAAS;IAAW,CAAA;GACzD,kBAAC,QAAD;IAAM,WAAU;IAAqB,YAAS;IAAU,CAAA;GACxD,kBAAC,QAAD,EAAM,WAAU,sBAAuB,CAAA;GAClC;KAEH,IACJ,kBAAC,QAAD;EAAM,WAAU;YAAhB,CACG,IAAQ,kBAAC,QAAD;GAAM,WAAU;aAAkB;GAAa,CAAA,GAAG,MAC3D,kBAAC,QAAD;GAAM,WAAU;aAAwB,KAAiB,EAAe;GAAmB,CAAA,CACtF;;AAGT,QACE,kBAAC,GAAD;EACa;EACI;EACf,OAAO;GAAE,GAAG;GAAkB,GAAG;GAAW;EACrC;EACM;EACb,mBAAiB;EACjB,gBAAc;EACd,GAAI;EAEH;EACQ,CAAA;;AAIf,GAAM,cAAc;;;ACvTpB,IAAM,KAAW;AAEjB,SAAS,KAAe;AACtB,KAAI,OAAO,WAAa,IAAa;CAErC,IAAM,EAAE,WAAQ,GAEZ,IAAQ,SAAS,eAAe,GAAS;AAO7C,CANK,MACH,IAAQ,SAAS,cAAc,QAAQ,EACvC,EAAM,KAAK,IACX,SAAS,KAAK,YAAY,EAAM,GAGlC,EAAM,cAAc;;;;;;;;;;;;;;;;;eAiBP,EAAI,UAAU,KAAK,GAAG;gBACrB,EAAI,UAAU,KAAK,GAAG;mBACnB,EAAI,UAAU,KAAK,GAAG;;;;eAI1B,EAAI,UAAU,KAAK,GAAG;gBACrB,EAAI,UAAU,KAAK,GAAG;mBACnB,EAAI,UAAU,KAAK,GAAG;;;;eAI1B,EAAI,UAAU,KAAK,GAAG;gBACrB,EAAI,UAAU,KAAK,GAAG;mBACnB,EAAI,UAAU,KAAK,GAAG;;;;AAKzC,SAAS,GACP,GACA,GACA,GACA,GAKA,GACe;CACf,IAAM,EAAE,WAAQ,GACV,IAAU,MAAW,WACvB;EACE,MAAM,EAAa,QAAQ,EAAI,OAAO,QAAQ,MAAM;EACpD,IAAI,EAAa,cAAc,EAAI,OAAO,QAAQ,MAAM;EACxD,QAAQ,EAAa,UAAU,EAAI,OAAO,QAAQ,MAAM;EACzD,GACD,EAAI,OAAO,GAAQ,IACjB,IAAa,EAAI,KAAK,IACtB,IAAa,EAAW,YAExB,IAAsB;EAC1B,YAAY,EAAI,WAAW;EAC3B,eAAe,EAAI,WAAW;EAC9B,YAAY;EACZ,SAAS;EACT,YAAY;EACZ,gBAAgB;EAChB,SAAS,EAAW;EACpB,cAAc,EAAW;EACzB,UAAU,EAAW;EACrB,YAAY,EAAW;EACvB,eAAe,EAAW;EAC1B,WAAW;EACX,QAAQ;EACR,OAAO,EAAQ;EACf,iBAAiB,EAAQ,MAAM;EAChC;AAMD,SAJI,MAAW,YAAY,MAAY,aAAa,EAAQ,YAC1D,EAAK,SAAS,GAAG,EAAI,YAAY,SAAS,EAAQ,WAG7C;EAAE,GAAG;EAAM,GAAG;EAAW;;AAkBlC,IAAa,MAAO,EAClB,cAAW,WACX,eAAY,SACZ,YAAS,MACT,uBACA,sBACA,4BACA,wBACA,OAAO,IAAY,EAAE,EACrB,WAAW,IAAgB,IAC3B,aACA,GAAG,QACW;AACd,SAAgB;AACd,MAAc;IACb,EAAE,CAAC;CAEN,IAAM,IAAiB,GACrB,GACA,GACA,GACA;EACE,MAAM;EACN,YAAY;EACZ,QAAQ;EACT,EACD,EACD,EACK,IAAY,SAAS,IAAgB,IAAI,MAAkB,MAC3D,IAAU,MAAa,YAAY,MAAuB,KAAA,IAAY,IAAqB;AAEjG,QACE,kBAAC,GAAD;EACE,OAAO;EACI;EACX,kBAAgB;EAChB,mBAAiB;EACjB,gBAAc;EACd,GAAI;YAEH;EACM,CAAA;;AAIb,GAAI,cAAc,OAClB,GAAI,eAAe,EAAO;;;AC3E1B,IAAM,KAAW,mBAEX,MAAe,MACnB,OAAO,KAAU,YAAY,OAAO,KAAU,UAE1C,MAMA,EAAE,UAAO,gBAAa,iBAAc,gBAAa,sBAAmB;CACxE,IAAM,IAAU,EAAM,OAAwB,KAAK,EAC7C,CAAC,GAAa,KAAkB,EAAM,SAAS,GAAM,EACrD,IAAO,OAAO,EAAM,EAEpB,IAAmB,EAAM,kBAAkB;EAC/C,IAAM,IAAO,EAAQ;AACrB,MAAI,CAAC,EAAM;EACX,IAAM,IAAY,EAAK,cAAc,EAAK;AAC1C,KAAgB,MAAU,MAAS,IAAY,IAAO,EAAW;IAChE,EAAE,CAAC;AAEN,GAAM,gBAAgB;EACpB,IAAM,IAAO,EAAQ;AACrB,MAAI,CAAC,EAAM;AAEX,KAAkB;EAIlB,IAAM,IAAQ,4BAA4B;AAExC,GADA,GAAkB,EAClB,sBAAsB,EAAiB;IACvC,EACI,IAAY,OAAO,WAAW,GAAkB,IAAI,EAEpD,IAAiB,OAAO,iBAAmB,MAAc,IAAI,eAAe,EAAiB,GAAG;AAOtG,SANI,IACF,EAAe,QAAQ,EAAK,GACnB,OAAO,SAAW,OAC3B,OAAO,iBAAiB,UAAU,EAAiB,QAGxC;AAOX,GANI,IACF,EAAe,YAAY,GAClB,OAAO,SAAW,OAC3B,OAAO,oBAAoB,UAAU,EAAiB,EAExD,qBAAqB,EAAM,EAC3B,OAAO,aAAa,EAAU;;IAE/B,CAAC,GAAM,EAAiB,CAAC;CAE5B,IAAM,IACJ,kBAAC,QAAD;EACE,KAAK;EACL,WAAU;EACV,oBAAoB;EACpB,SAAS;YAER;EACI,CAAA;AAOT,QAJK,IAKH,kBAAC,IAAD;EACE,OAAO,IAAc,KAAA,IAAY;EACjC,QAAQ;EACR,SAAS;EACT,QAAQ;EACR,iBAAiB;EACjB,SAAQ;YAEP;EACS,CAAA,GAbL;;AAmBX,SAAS,GAAgB,GAAG,GAAkC;AAC5D,QAAO,EAAM,OAAO,QAAQ,CAAC,KAAK,IAAI;;AAGxC,SAAS,GAAwB,GAA4F;AAC3H,KAAI,MAAsB,GACxB,QAAO;CAGT,IAAM,EAAE,eAAY,GACd,IAAW,KAAqB,OAAO,KAAsB,WAC/D,IACA,KAAA;AAEJ,QAAO;EACL,GAAG;EACH,OAAO,GAAU,SAAS,EAAQ,QAAQ;EAC1C,OAAO,GAAU,SAAS;EAC1B,YAAY;GACV,GAAG,GAAU;GACb,MAAM,GAAgB,sBAAsB,0BAA0B,GAAU,YAAY,MAAM,GAAU,iBAAiB;GAC9H;EACD,QAAQ;GACN,GAAG,GAAU;GACb,WAAW;IACT,cAAc,EAAQ;IACtB,OAAO,EAAQ,QAAQ;IACvB,eAAe;IACf,UAAU,EAAQ,MAAM,OAAO;IAC/B,UAAU,EAAQ,MAAM,OAAO;IAC/B,SAAS,EAAQ,QAAQ;IACzB,GAAG,GAAU,QAAQ;IACtB;GACF;EACF;;AAGH,SAAS,GACP,GACA,GACmB;AAGnB,QAFK,KAEE,EAAQ,KAAK,MAAW;EAC7B,IAAM,IAAa,EAAE,GAAG,GAAQ;AAyBhC,SAvBI,MAAM,QAAQ,EAAW,SAAS,IAAI,EAAW,SAAS,SAAS,MACrE,EAAW,WAAW,GAAgB,EAAW,UAAU,EAAuB,GAGhF,EAAW,WAIb,EAAW,oBAAoB,GAHC,EAAW,sBAAsB,KAAA,IAC7D,IACA,EAAW,kBACgE,GAG7E,EAAW,UAAU,CAAC,EAAW,aACnC,EAAW,YAAY,EAAE,mBACvB,kBAAC,QAAD;GAAM,WAAU;GAAqB,eAAY;aAC/C,kBAAC,GAAD;IACE,MAAM,MAAc,WAAW,iBAAiB;IAChD,MAAM;IACN,OAAO,EAAE,OAAO,WAAW;IAC3B,CAAA;GACG,CAAA,GAIJ;GACP;;AAGJ,SAAS,GACP,GACA,GACA,GACmB;AACnB,KAAI,CAAC,KAAW,MAAS,UAAU,EAAQ,WAAW,EAAG,QAAO;CAEhE,IAAM,IAAc,MAAS,WAAW,MAAS,QAC3C,IAAa,MAAS,UAAU,MAAS,QACzC,IAAY,EAAQ,SAAS;AAEnC,QAAO,EAAQ,KAAK,GAAQ,MAAU;EACpC,IAAM,IAAa,EAAE,GAAG,GAAQ,EAE1B,IAAmB,KAAe,MAAU,GAC5C,IAAoB,KAAc,MAAU;AAgBlD,SAdI,MACF,EAAW,QAAQ,QACnB,AACE,EAAW,UAAQ,IAInB,MACF,EAAW,QAAQ,SACnB,AACE,EAAW,UAAQ,IAIhB;GACP;;AAGJ,SAAS,GACP,GACA,GACA,GACA,GACA,GACmB;AAGnB,QAFK,KAEE,EAAQ,KAAK,MAAW;EAC7B,IAAM,IAAa,EAAE,GAAG,GAAQ;AAEhC,MAAI,MAAM,QAAQ,EAAW,SAAS,IAAI,EAAW,SAAS,SAAS,EAErE,QADA,EAAW,WAAW,GAAqB,EAAW,UAAU,GAAa,GAAc,GAAa,EAAa,EAC9G;EAGT,IAAM,IAAiB,EAAW;AAwBlC,SAtBI,EAAW,YAAY,QAEhB,EAAW,aAAa,KADjC,EAAW,WAAW,EAAE,WAAW,IAAO,GAGjC,OAAO,EAAW,YAAa,aACxC,EAAW,WAAW;GAAE,GAAG,EAAW;GAAU,WAAW;GAAO,GAGpE,EAAW,UAAU,GAAgB,GAAiB,MAAkB;GACtE,IAAM,IAAW,IAAiB,EAAe,GAAO,GAAQ,EAAM,GAAG;AAUzE,UARI,GAAY,EAAS,GAChB,kBAAC,IAAD;IAAiB,OAAO;IAAuB;IAA2B;IAA2B;IAA2B;IAAgB,CAAA,GAGrJ,CAAC,KAAkB,GAAY,EAAM,GAChC,kBAAC,IAAD;IAAwB;IAAoB;IAA2B;IAA2B;IAA2B;IAAgB,CAAA,GAG/I;KAGF;GACP;;AAGJ,SAAS,GAAkB,GAAiC;AAC1D,KAAI,OAAO,GAAQ,OAAQ,SAAU,QAAO,EAAO;AACnD,KAAI,OAAO,GAAQ,aAAc,SAAU,QAAO,EAAO;AACzD,KAAI,OAAO,GAAQ,aAAc,SAAU,QAAO,OAAO,EAAO,UAAU;;AAI5E,SAAS,GAAsB,GAAoC;AACjE,KAAI,OAAO,KAAU,YAAY,OAAO,SAAS,EAAM,CAAE,QAAO;AAChE,KAAI,OAAO,KAAU,YAAY,EAAM,SAAS,KAAK,EAAE;EACrD,IAAM,IAAc,OAAO,EAAM,MAAM,GAAG,GAAG,CAAC;AAC9C,SAAO,OAAO,SAAS,EAAY,GAAG,IAAc,KAAA;;;AAKxD,SAAS,GAAiB,GAAe,GAAkB,GAA2B;CACpF,IAAM,IAAe,KAAK,IAAI,GAAU,KAAK,MAAM,EAAM,CAAC;AAC1D,QAAO,OAAO,KAAa,WAAW,KAAK,IAAI,GAAU,EAAa,GAAG;;AAG3E,SAAS,GACP,GACA,GACA,IAAsC,EAAE,EACnB;AACrB,KAAI,CAAC,EAAS,QAAO;CAErB,IAAM,IAAa,EAAE,GAAG,GAAgB,EAElC,KAAY,MAAgB;AAChC,IAAK,SAAS,MAAW;AACvB,OAAI,MAAM,QAAQ,EAAO,SAAS,IAAI,EAAO,SAAS,SAAS,GAAG;AAChE,MAAS,EAAO,SAAS;AACzB;;GAGF,IAAM,IAAW,GAAkB,EAAO;AACtC,IAAC,KAAY,EAAW,MAAa,SAEzC,EAAW,KAAY,GAAsB,EAAO,MAAM,IAAI;IAC9D;;AAIJ,QADA,EAAS,EAAQ,EACV;;AAGT,SAAS,GAAoB,GAAiC,GAA6B;AACzF,KAAI,MAAM,QAAQ,EAAU,CAC1B,QAAO,EAAU,QAAiB,GAAK,MAAQ;AAC7C,MAAI,KAAO,OAAO,KAAQ,SACxB,QAAQ,EAAgC,OAAO,EAAI;IAGpD,EAAO;AAGZ,KAAI,OAAO,KAAc,YAAY,OAAO,KAAc,SACxD,QAAO,EAAO,OAAO,EAAU;;AAMnC,SAAS,GAAoB,GAAiC,GAAoB,GAAyC;AACzH,KAAI,MAAM,QAAQ,EAAU,IAAI,EAAU,SAAS,GAAG;EACpD,IAAM,IAAO,EAAE,GAAG,GAAQ,EACtB,IAAkC;AAEtC,OAAK,IAAI,IAAI,GAAG,IAAI,EAAU,SAAS,GAAG,KAAK,GAAG;GAChD,IAAM,IAAM,OAAO,EAAU,GAAG,EAC1B,IAAU,EAAO,IACjB,IAAS,KAAW,OAAO,KAAY,WAAW,EAAE,GAAI,GAAqC,GAAG,EAAE;AAExG,GADA,EAAO,KAAO,GACd,IAAS;;AAIX,SADA,EAAO,OAAO,EAAU,EAAU,SAAS,GAAG,IAAI,GAC3C;;AAOT,QAJI,OAAO,KAAc,YAAY,OAAO,KAAc,WACjD;EAAE,GAAG;GAAS,OAAO,EAAU,GAAG;EAAO,GAG3C;;AAGT,SAAS,GACP,GACA,GACA,GACmB;AAGnB,QAFK,KAEE,EAAQ,KAAK,MAAW;EAC7B,IAAM,IAAa,EAAE,GAAG,GAAQ;AAEhC,MAAI,MAAM,QAAQ,EAAW,SAAS,IAAI,EAAW,SAAS,SAAS,EAErE,QADA,EAAW,WAAW,GAAoB,EAAW,UAAU,GAAoB,EAAc,EAC1F;EAGT,IAAM,IAAW,GAAkB,EAAW;AA2B9C,SAxBI,EAFuB,KAAY,EAAmB,IAAI,EAAS,KAEpD,EAAW,aAAa,SAI3C,EAAW,UAAU,GAAiB,GAAiC,MAAqB;GAC1F,IAAM,IAAe,GAAoB,GAAQ,EAAW,UAAU,EAChE,IAAgB,OAAO,KAAiB;AAG9C,UACE,kBAAC,GAAD;IACE,WAAU;IACV,MAAM,IAAgB,WAAW;IACjC,MAAK;IACL,OAPe,KAAgB,OAAO,KAAK,OAAO,EAAa;IAQ/D,WAAW,MAAU;KACnB,IAAM,IAAM,EAAM,OAAO,OACnB,IAAY,IAAiB,MAAQ,KAAK,OAAO,OAAO,EAAI,GAAI;AACtE,OAAc,GAAU,EAAW,WAAW,EAAU;;IAE1D,CAAA;MAnBG;GAwBT;;AAGJ,SAAS,GACP,GACA,GACmB;AAGnB,QAFK,KAEE,EAAQ,KAAK,MAAW;EAC7B,IAAM,IAAa,EAAE,GAAG,GAAQ;AAEhC,MAAI,MAAM,QAAQ,EAAW,SAAS,IAAI,EAAW,SAAS,SAAS,EAErE,QADA,EAAW,WAAW,GAA2B,EAAW,UAAU,EAAkB,EACjF;EAGT,IAAM,IAAW,GAAkB,EAAW;AAK9C,SAJI,CAAC,KAAY,EAAkB,IAAI,EAAS,GACvC,IAGF;GACP,CAAC,QAAQ,MAAQ,MAAQ,KAAK;;AAGlC,IAAM,MAIA,EAAE,YAAS,mBAAgB,kBAAe;CAC9C,IAAM,IAAgB,EAAM,cAAc;EACxC,IAAM,IAA8C,EAAE,EAEhD,KAAY,MAAgB;AAChC,KAAK,SAAS,MAAQ;AACpB,QAAI,MAAM,QAAQ,EAAI,SAAS,IAAI,EAAI,SAAS,SAAS,EACvD,GAAS,EAAI,SAAS;SACjB;KACL,IAAM,IAAW,GAAkB,EAAI,EACjC,IAAQ,EAAI,UAAU,OAAO,EAAI,aAAc,WAAW,EAAI,YAAY;AAChF,KAAI,KACF,EAAK,KAAK;MAAE,KAAK;MAAU,OAAO,OAAO,EAAM;MAAE,CAAC;;KAGtD;;AAIJ,SADA,EAAS,EAAQ,EACV;IACN,CAAC,EAAQ,CAAC;AAEb,QACE,kBAAC,OAAD;EAAK,WAAU;YAAf,CACE,kBAAC,SAAD;GAAO,WAAU;aAAyB;GAAgB,CAAA,EAC1D,kBAAC,OAAD;GAAK,WAAU;aACZ,EAAc,KAAK,EAAE,QAAK,eACzB,kBAAC,SAAD;IAAiB,WAAU;cAA3B,CACE,kBAAC,SAAD;KACE,MAAK;KACL,SAAS,EAAe,IAAI,EAAI;KAChC,WAAW,MAAM,EAAS,GAAK,EAAE,OAAO,QAAQ;KAChD,CAAA,EACF,kBAAC,QAAD,EAAA,UAAO,GAAa,CAAA,CACd;MAPI,EAOJ,CACR;GACE,CAAA,CACF;;GAWJ,MAA+D,EACnE,UACA,cAAW,IACX,aACA,aACA,aACA,cACA,UACA,GAAG,QACC;CACJ,IAAM,IAAgB,EAAM,OAAO,EAAE,EAC/B,IAAY,EAAM,OAAO,EAAE,EAE3B,IAAc,EAAM,aAAa,MAAsB;AACtD,OACL,EAAS,GAAiB,GAAW,GAAU,EAAS,CAAC;IACxD;EAAC;EAAU;EAAU;EAAS,CAAC,EAE5B,IAAkB,EAAM,aAAa,MAA+C;AACxF,MAAI,CAAC,KAAY,OAAO,WAAa,IAAa;AAKlD,EAHA,EAAM,gBAAgB,EACtB,EAAM,iBAAiB,EACvB,EAAU,UAAU,EAAM,SAC1B,EAAc,UAAU,KAAS,EAAM,cAAc,eAAe,uBAAuB,CAAC,SAAS;EAErG,IAAM,KAAmB,MAA0B;GACjD,IAAM,IAAQ,EAAU,UAAU,EAAU;AAC5C,KAAY,EAAc,UAAU,EAAM;KAGtC,UAAsB;AAI1B,GAHA,SAAS,oBAAoB,aAAa,EAAgB,EAC1D,SAAS,oBAAoB,WAAW,EAAc,EACtD,SAAS,KAAK,MAAM,SAAS,IAC7B,SAAS,KAAK,MAAM,aAAa;;AAMnC,EAHA,SAAS,KAAK,MAAM,SAAS,cAC7B,SAAS,KAAK,MAAM,aAAa,QACjC,SAAS,iBAAiB,aAAa,EAAgB,EACvD,SAAS,iBAAiB,WAAW,EAAc;IAClD;EAAC;EAAU;EAAU;EAAa;EAAM,CAAC,EAEtC,IAAgB,EAAM,aAAa,MAAkD;AACrF,GAAC,KAAY,KAAS,QAEtB,EAAM,QAAQ,eAAe,EAAM,QAAQ,iBAE/C,EAAM,gBAAgB,EACtB,EAAM,iBAAiB,EAEvB,EAAY,KADM,EAAM,QAAQ,cAAc,KAAK,MAClB,EAAM,WAAW,KAAK,GAAG;IACzD;EAAC;EAAU;EAAa;EAAM,CAAC;AAElC,QACE,kBAAC,MAAD;EACE,GAAI;EACJ,WAAW,GAAgB,GAAW,IAAW,mCAAmC,KAAA,EAAU;EAC9F,OAAO;GAAE,GAAG;GAAO;GAAO;YAH5B,CAKG,GACA,IACC,kBAAC,UAAD;GACE,MAAK;GACL,WAAU;GACV,cAAW;GACX,UAAU,MAAU,EAAM,iBAAiB;GAC3C,aAAa;GACb,WAAW;GACX,CAAA,GACA,KACD;;;AAIT,SAAS,GACP,GACA,GACA,GACA,GACA,GACA,GACmB;AAGnB,QAFK,KAEE,EAAQ,KAAK,MAAW;EAC7B,IAAM,IAAa,EAAE,GAAG,GAAQ;AAEhC,MAAI,MAAM,QAAQ,EAAW,SAAS,IAAI,EAAW,SAAS,SAAS,EAErE,QADA,EAAW,WAAW,GAAuB,EAAW,UAAU,GAAQ,GAAgB,GAAU,GAAU,EAAa,EACpH;EAGT,IAAM,IAAW,GAAkB,EAAW;AAC9C,MAAI,CAAC,EAAU,QAAO;EAEtB,IAAM,IAAQ,EAAO,MAAa,GAAsB,EAAW,MAAM,IAAI,GACvE,IAAuB,EAAW;AAcxC,SAbA,EAAW,QAAQ,GACnB,EAAW,gBAAgB,MAA4B;GACrD,IAAM,IAA0B,IAAuB,EAAe,IAAI,EAAE;AAC5E,UAAO;IACL,GAAG;IACH;IACA;IACA;IACA,WAAW,MAAsB,EAAe,GAAU,EAAU;IACpE,WAAW,GAAgB,EAAwB,WAAW,4BAA4B;IAC3F;KAGI;GACP;;AAGJ,SAAS,KAAe;AACtB,KAAI,OAAO,WAAa,IAAa;CACrC,IAAM,EAAE,UAAO,gBAAa,GAExB,IAAQ,SAAS,eAAe,GAAS;AAO7C,CANK,MACH,IAAQ,SAAS,cAAc,QAAQ,EACvC,EAAM,KAAK,IACX,SAAS,KAAK,YAAY,EAAM,GAGlC,EAAM,cAAc;;;eAGP,EAAM,KAAK,KAAK;;;;;eAKhB,EAAM,KAAK,KAAK;oBACX,EAAM,QAAQ,UAAU;;;;eAI7B,EAAM,KAAK,OAAO;qBACZ,EAAM,WAAW,OAAO,WAAW;mBACrC,EAAM,WAAW,OAAO,SAAS;qBAC/B,EAAM,WAAW,OAAO,WAAW;wBAChC,EAAM,WAAW,OAAO,cAAc;oBAC1C,EAAM,QAAQ,UAAU;uBACrB,EAAM,OAAO,mBAAmB,SAAS,EAAM,OAAO,UAAU;iBACtE,EAAM,QAAQ,OAAO,OAAO;gBAC7B,EAAM,UAAU,OAAO,OAAO;;;;;;;;;;eAU/B,EAAM,KAAK,KAAK;qBACV,EAAM,WAAW,KAAK,WAAW;mBACnC,EAAM,WAAW,KAAK,SAAS;qBAC7B,EAAM,WAAW,KAAK,WAAW;wBAC9B,EAAM,WAAW,KAAK,cAAc;iCAC3B,EAAM,OAAO,YAAY;;iBAEzC,EAAM,QAAQ,OAAO,KAAK;gBAC3B,EAAM,UAAU,OAAO,KAAK;;;;;;;oBAOxB,EAAM,QAAQ,SAAS;;;;;oBAKvB,EAAM,QAAQ,YAAY;;;;sBAIxB,EAAS,OAAO,QAAQ;0BACpB,EAAS,WAAW,QAAQ;;;;;;;;;;;oBAWlC,EAAS,KAAK,cAAc;eACjC,EAAS,cAAc,GAAG,MAAM;gBAC/B,EAAS,cAAc,GAAG,OAAO;;;;;;;eAOlC,EAAM,KAAK,OAAO;;;;;eAKlB,EAAM,KAAK,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eA2ClB,EAAM,KAAK,YAAY;;;;;eAKvB,EAAM,KAAK,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAwCd,EAAM,WAAW,cAAc,SAAS;qBACtC,EAAM,WAAW,cAAc,WAAW;qBAC1C,EAAM,WAAW,cAAc,WAAW;wBACvC,EAAM,WAAW,cAAc,cAAc;gBACrD,EAAM,UAAU,QAAQ,OAAO;iBAC9B,EAAM,QAAQ,QAAQ,OAAO;uBACvB,EAAM,OAAO,mBAAmB,SAAS,EAAM,OAAO,UAAU;;;;mBAIpE,EAAM,WAAW,YAAY,SAAS;qBACpC,EAAM,WAAW,YAAY,WAAW;qBACxC,EAAM,WAAW,YAAY,WAAW;wBACrC,EAAM,WAAW,YAAY,cAAc;gBACnD,EAAM,UAAU,QAAQ,KAAK;oBACzB,EAAM,UAAU,QAAQ,KAAK;oBAC7B,EAAM,UAAU,QAAQ,KAAK;iBAChC,EAAM,QAAQ,QAAQ,KAAK;;;;gBAI5B,EAAM,UAAU,QAAQ,KAAK;oBACzB,EAAM,UAAU,QAAQ,KAAK;oBAC7B,EAAM,UAAU,QAAQ,KAAK;;;;;;;;;;;;;;;;;;;;;mBAqB9B,EAAM,WAAW,OAAO,SAAS;qBAC/B,EAAM,WAAW,OAAO,WAAW;wBAChC,EAAM,WAAW,OAAO,cAAc;gBAC9C,EAAM,UAAU,OAAO,OAAO;qBACzB,EAAM,WAAW,OAAO,WAAW;;;;mBAIrC,EAAM,WAAW,KAAK,SAAS;qBAC7B,EAAM,WAAW,KAAK,WAAW;wBAC9B,EAAM,WAAW,KAAK,cAAc;gBAC5C,EAAM,UAAU,OAAO,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;eA0B7B,EAAM,KAAK,KAAK;qBACV,EAAM,WAAW,KAAK,WAAW;;;;;;;;;;;;eAYvC,EAAM,KAAK,OAAO;qBACZ,EAAM,WAAW,OAAO,WAAW;;;;;qBAKnC,EAAM,WAAW,OAAO,WAAW;;;;oBAIpC,EAAM,QAAQ,UAAU;;;;;;;;;;oBAUxB,EAAM,QAAQ,UAAU;;;;oBAIxB,EAAM,QAAQ,UAAU;;;;;;;;;;oBAUxB,EAAM,QAAQ,UAAU;;;;oBAIxB,EAAM,QAAQ,UAAU;;;;;;;;;;oBAUxB,EAAM,QAAQ,UAAU;;;;oBAIxB,EAAM,QAAQ,UAAU;;;;;;;;;;oBAUxB,EAAM,QAAQ,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBA6BxB,EAAM,OAAO,YAAY;;;;;;;;oBAQzB,EAAM,KAAK,OAAO;;;;2BAIX,EAAM,KAAK,OAAO;;;;;oBAKzB,EAAM,QAAQ,UAAU;;;;;;;;;;oBAUxB,EAAM,QAAQ,UAAU;;;;;;;oBAOxB,EAAM,QAAQ,UAAU;;;;;;;;;;;;;;;;;;;;8BAoBd,EAAM,OAAO,YAAY;oBACnC,EAAM,QAAQ,UAAU;;;;;;;;;;;;;;;;eAgB7B,EAAM,KAAK,KAAK;;;;;;;;;;;;;;;eAehB,EAAM,KAAK,KAAK;;;;;;;;;;;;;;;;;;;;;;0BAsBL,EAAiB,MAAM,OAAO,QAAQ;oBAC5C,EAAiB,MAAM,WAAW,QAAQ;eAC/C,EAAiB,MAAM,KAAK,MAAM;;;;;;;;sBAQ3B,EAAiB,MAAM,OAAO,MAAM;;;;;;sBAMpC,EAAiB,MAAM,OAAO,MAAM;;;;;;oBAMtC,EAAM,QAAQ,OAAO;;;;;oBAKrB,EAAM,QAAQ,OAAO;;;;0BAIf,EAAM,OAAO,UAAU;uBAC1B,EAAM,OAAO,OAAO;;oBAEvB,EAAM,QAAQ,OAAO;;;;6BAIZ,EAAM,OAAO,mBAAmB;oBACzC,EAAM,QAAQ,cAAc;;;;;oBAK5B,EAAM,QAAQ,YAAY;;;;AAK9C,IAAa,MAAiC,EAC5C,aAAU,UACV,qBAAkB,WAClB,qBAAkB,QAClB,wBAAqB,KACrB,yBAAsB,KACtB,wBAAqB,IACrB,uBAAoB,IACpB,4BAAyB,KACzB,2BAAwB,UACxB,4BAAyB,iBACzB,uBAAoB,EAAE,EACtB,2BACA,oBAAiB,IACjB,qBACA,6BACA,uBAAoB,KACpB,wBAAqB,IACrB,mBACA,2BACA,+BAA4B,IAC5B,8BACA,mCAAgC,KAChC,UAAO,UACP,eACA,YACA,eACA,gBACA,GAAG,SACC;CACJ,IAAM,CAAC,IAA6B,MAAkC,EAAM,SAAS,GAAM,EACrF,CAAC,IAAc,MAAmB,EAAM,SAC5C,MAAM,QAAQ,EAAW,GAAI,IAA2C,EAAE,CAC3E,EACK,CAAC,IAAqB,MAA0B,EAAM,eACtD,MAAM,QAAQ,EAAiB,GAC1B,IAAI,IAAI,EAAiB,IAAI,OAAO,CAAC,GAE1C,KAAW,MAAM,QAAQ,EAAQ,GAC5B,IAAI,IACT,EACG,KAAK,MAAQ,GAAkB,EAAI,CAAC,CACpC,QAAQ,MAAO,EAAQ,EAAI,CAC/B,mBAEI,IAAI,KAAK,CAChB,EACI,CAAC,GAAmB,MAAwB,EAAM,eACtD,KAAkB,GAAuB,GAAkB,EAA8B,CACzF;AAsBF,CApBA,QAAgB;AAEd,EADA,IAAc,EACd,IAAqB;IACpB,EAAE,CAAC,EAEN,QAAgB;AACd,MAAI,OAAO,SAAW,IAAa;EAEnC,IAAM,UAAiB;AACrB,MAA+B,OAAO,cAAc,EAAmB;;AAMzE,SAHA,GAAU,EACV,OAAO,iBAAiB,UAAU,EAAS,QAE9B;AACX,UAAO,oBAAoB,UAAU,EAAS;;IAE/C,CAAC,EAAmB,CAAC,EAExB,QAAgB;AACV,QAAY,oBAChB,GAAgB,MAAM,QAAQ,EAAW,GAAI,IAA2C,EAAE,CAAC;IAC1F,CAAC,GAAY,EAAQ,CAAC;CAEzB,IAAM,EACJ,QAAQ,GACR,aAAa,IACb,mBAAmB,IACnB,YAAY,IACZ,GAAG,OACD,IACE,IAAqB,MAAoB,UAAU,IACnD,KAAqB,MAAY,kBACjC,IAAyB,MAAY,wBAAwB,GAC7D,IAA8B,MAAY,2BAC1C,IAAsB,MAAY,qBAAqB,GACvD,IAAmB,MAAc,OAAO,MAAe,WAAW,KAAa,KAAA,GAC/E,CAAC,IAAkB,MAAuB,EAAM,SAAS,GAAkB,kBAAkB,EAAE,EAC/F,CAAC,IAAe,MAAoB,EAAM,SAAS,GAAkB,mBAAmB,GAAkB,YAAY,GAAG;AAS/H,CAPA,QAAgB;AACT,OACD,MAAM,QAAQ,EAAiB,IACjC,GAAuB,IAAI,IAAI,EAAiB,IAAI,OAAO,CAAC,CAAC;IAE9D,CAAC,GAAkB,EAAuB,CAAC,EAE9C,QAAgB;AACT,SAEL;OAAI,GAAgB;AAClB,OAAqB,EAAe;AACpC;;AAGF,OAAsB,MAAS,GAAuB,GAAkB,GAA+B,EAAK,CAAC;;IAC5G;EAAC;EAAS;EAAgB;EAA+B;EAAoB,CAAC;CAEjF,IAAM,KAA+B,EAAM,aACxC,GAAgB,MAAqB;AACpC,MAAwB,MAAS;GAC/B,IAAM,IAAO,IAAI,IAAI,EAAK;AAC1B,GAAI,IACF,EAAK,IAAI,EAAO,GAEhB,EAAK,OAAO,EAAO;GAErB,IAAM,IAAY,MAAM,KAAK,EAAK;AAElC,UADA,IAA2B,EAAU,EAC9B;IACP;IAEJ,CAAC,EAAyB,CAC3B,EACK,KAA4B,EAAM,cAClC,MAAM,QAAQ,EAAkB,GAC3B,EAAkB,IAAI,OAAO,GAGlC,OAAO,KAAsB,WACxB,EACJ,MAAM,IAAI,CACV,KAAK,MAAU,EAAM,MAAM,CAAC,CAC5B,OAAO,QAAQ,GAGhB,KAAqB,OAAO,KAAsB,WAC7C,OAAO,QAAQ,EAAkB,CACrC,QAAQ,GAAG,OAAa,EAAQ,EAAS,CACzC,KAAK,CAAC,OAAS,EAAI,GAGjB,EAAE,EACR,CAAC,EAAkB,CAAC,EAEjB,KAA2B,EAAM,aAAa,GAAkB,GAAoB,MAAuB;AAC/G,MAAiB,MAAS;AACxB,OAAI,CAAC,MAAM,QAAQ,EAAK,IAAI,CAAC,EAAK,GAChC,QAAO;GAGT,IAAM,IAAW,CAAC,GAAG,EAAK,EACpB,IAAa,EAAS;AAG5B,UAFA,EAAS,KAAY,GAAoB,GAAY,GAAW,EAAU,EAC1E,IAAyB,EAAmD,EACrE;IACP;IACD,CAAC,EAAuB,CAAC,EAEtB,KAAqB,EAAM,aAAa,GAAmB,MAAsB;EACrF,IAAM,IAAe,GAAiB,GAAW,GAA2B,EAA0B;AAEtG,MAAsB,MAAS;GAC7B,IAAM,IAAO;IAAE,GAAG;KAAO,IAAY;IAAc;AAEnD,UADA,IAAyB,EAAK,EACvB;IACP;IACD;EAAC;EAAwB;EAA2B;EAA0B,CAAC,EAE5E,KAAwB,EAAM,cAAc;EAChD,IAAM,IAAgB,GAAgB,GAAkB,GAAqB,EACvE,IAAoB,IACtB,GAAoB,GAAe,GAAiB,EAAoB,GACxE,GAEE,IAAuB,IACzB,GAA2B,GAAmB,GAAoB,GAClE,GAEE,IAAqB,IAAI,IAAI,GAA0B,EACvD,IAAsB,KACxB,GAAoB,GAAsB,GAAoB,GAAyB,GACvF,GAEE,IAAuB,IACzB,GACA,GACA,GACA,IACA,GACA,GACA,EACD,GACC;AAMJ,SAJI,CAAC,KAAsB,KAClB,IAGF,GACL,GACA,GACA,GACA,GACA,EACD;IACA;EACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAAC,EAEI,KAAkB,EAAM,cAAc;AAC1C,MAAI,GAA6B;GAC/B,IAAM,IAAa,KAAa,OAAO,KAAc,WAAW,IAAY,EAAE;AAC9E,UAAO;IACL,GAAG;IACH,GAAG,EAAW,KAAK;IACpB;;AAsBH,SAnBI,KAWC,IAVC,CAAC,KAAa,OAAO,KAAc,WAC9B,EAAE,GAAG,eAAwB,GAG/B;GACL,GAAG;GACH,GAAG,EAAU,KAAM;GACpB,GAIM;IAWR;EAAC;EAAW;EAAmB;EAAoB;EAA6B;EAAoB,CAAC,EAElG,KAAwB,MAAsB,IAAwB,MAAkB,UAAW,IACnG,KAAsB,EAAM,cAC3B,IAEE;EACL,GAAG;EACH,QAAQ;GACN,GAAG,IAAe;GAClB,MAAM;GACP;EACF,GARgC,IAShC,CAAC,IAAe,EAAoB,CAAC,EAElC,KAAuB,GAAkB,UAAU,MAAM,QAAQ,EAAW,GAAG,EAAW,SAAS,IACnG,KAAmB,GAAkB,WAAW,IAChD,KAAgB,GAAkB,YAAY,IAC9C,KAAkB,EAAM,cAAc;EAC1C,IAAM,IAAS,KAAqB,KAAe;AAKnD,MAJI,CAAC,KAA+B,CAAC,MAAM,QAAQ,EAAO,IAItD,GAAkB,SAAS,QAAQ,EAAiB,QAAQ,EAAO,OACrE,QAAO;EAGT,IAAM,KAAS,KAAmB,KAAK;AACvC,SAAO,EAAO,MAAM,GAAO,IAAQ,GAAc;IAChD;EAAC;EAAY;EAAc;EAAkB;EAAe,GAAkB;EAAO;EAAoB;EAA4B,CAAC,EAEnI,KAAgD;EACpD,GAAG;EACH,SAAS;EACT,UAAU;EACV,OAAO;EACP,iBAAiB,GAAkB,mBAAmB;EACtD,WAAW,GAAM,MAAa;AAG5B,GAFA,GAAoB,EAAK,EACzB,GAAiB,EAAS,EAC1B,GAAkB,WAAW,GAAM,EAAS;;EAE9C,mBAAmB,GAAM,MAAa;AAGpC,GAFA,GAAoB,EAAK,EACzB,GAAiB,EAAS,EAC1B,GAAkB,mBAAmB,GAAM,EAAS;;EAEvD,EAEK,KAAc;EAClB;EACA,YAAY;EACZ,iBAAiB;EACjB,MAAoB,UAAU,0BAA0B;EACxD,MAAa;EACd,CACE,OAAO,QAAQ,CACf,KAAK,IAAI,EAEN,KACJ,kBAAC,IAAD;EACE,GAAI;EACJ,SAAS;EACT,YAAY;EACZ,YAAY,IAA8B,KAAQ;EAClD,QAAQ;EACR,aAAa;EACb,YAAY;EACN;EACN,WAAW;EACX,mBAAmB,GAAwB,GAAqB;EAChE,CAAA;AAcJ,QAXI,IAEA,kBAAC,OAAD;EAAK,WAAW,GAAG,GAAY;YAA/B,CACG,IACD,kBAAC,OAAD;GAAK,WAAU;aACb,kBAAC,IAAD,EAAc,GAAI,IAA8B,CAAA;GAC5C,CAAA,CACF;MAIH,IACL,kBAAC,OAAD;EAAK,WAAW;YAAhB,CACE,kBAAC,IAAD;GACW;GACT,gBAAgB;GAChB,UAAU;GACV,CAAA,EACD,GACG;MAEN;GC3gDE,KAAW;AAEjB,SAAS,KAAe;AACtB,KAAI,OAAO,WAAa,IAAa;CAErC,IAAM,EAAE,eAAY,GAChB,IAAQ,SAAS,eAAe,GAAS;AAO7C,CANK,MACH,IAAQ,SAAS,cAAc,QAAQ,EACvC,EAAM,KAAK,IACX,SAAS,KAAK,YAAY,EAAM,GAGlC,EAAM,cAAc;;oBAEF,EAAQ,QAAQ,WAAW;uBACxB,EAAQ,OAAO;;gBAEtB,EAAQ,UAAU;eACnB,EAAQ,QAAQ,KAAK;;mBAEjB,EAAQ,MAAM,OAAO,IAAI;mBACzB,EAAQ,MAAM,OAAO,IAAI;iBAC3B,EAAQ,QAAQ,OAAO;;;;eAIzB,EAAQ,MAAM,MAAM;gBACnB,EAAQ,MAAM,OAAO;;;;;oBAKjB,EAAQ,QAAQ,WAAW;;;;mBAI5B,EAAQ,MAAM,KAAK,IAAI;mBACvB,EAAQ,MAAM,KAAK,IAAI;iBACzB,EAAQ,QAAQ,KAAK;;;;;;;eAOvB,EAAQ,QAAQ,MAAM;mBAClB,EAAQ,WAAW,MAAM,SAAS;qBAChC,EAAQ,WAAW,MAAM,WAAW;qBACpC,EAAQ,WAAW,MAAM,WAAW;;;;;;;;;eAS1C,EAAQ,QAAQ,KAAK;mBACjB,EAAQ,WAAW,KAAK,SAAS;qBAC/B,EAAQ,WAAW,KAAK,WAAW;qBACnC,EAAQ,WAAW,KAAK,WAAW;;;;;;;;;;;;;;AAexD,SAAS,GAAgB,GAAG,GAAkC;AAC5D,QAAO,EAAM,OAAO,QAAQ,CAAC,KAAK,IAAI;;AAGxC,SAAS,GAAkB,GAAuB,GAAgB;AAShE,QARI,MAAW,SAEX,kBAAC,OAAD;EAAK,WAAU;YACb,kBAAC,KAAD;GAAG,WAAU;aAAmB;GAAW,CAAA;EACvC,CAAA,GAIH,kBAAC,KAAD;EAAG,WAAU;YAAmB;EAAW,CAAA;;AAGpD,IAAa,MAAW,EACtB,YAAS,UACT,YACA,WACA,UACA,YACA,UACA,UACA,WACA,eACA,qBACA,GAAG,QACe;CAClB,IAAM,EAAE,eAAY;AAEpB,SAAgB;AACd,MAAc;IACb,EAAE,CAAC;CAON,IAAM,IACJ,MAAY,KAAA,IAAsB,GAAkB,GAFjC,MAJD,MAAW,SAC3B,iBACA,qGAIuE,GAAjD,GAEpB,IACJ,MAAU,KAAA,IAEN,MAAW,YAAY,IACrB,kBAAC,KAAD;EAAG,WAAU;YAAoB;EAAY,CAAA,GAC7C,KAAA,IAHF,GAKA,IAAiB,MAAW,SAC9B;EACA,UAAU,EAAQ,MAAM,KAAK;EAC7B,UAAU,EAAQ,MAAM,KAAK;EAC7B,SAAS,EAAQ,QAAQ;EACzB,WAAW;EACZ,GACC;EACA,UAAU,EAAQ,MAAM,OAAO;EAC/B,UAAU,EAAQ,MAAM,OAAO;EAC/B,SAAS,EAAQ,QAAQ;EAC1B;AAEH,QACE,kBAAC,IAAD;EACE,GAAI;EACJ,OAAO;EACP,SAAS;EACT,OAAO,KAAS,EAAQ,QAAQ;EAChC,OAAO,KAAS;EAChB,QAAQ;GACN,GAAG;GACH,MAAM;IACJ,cAAc,EAAQ;IACtB,OAAO,EAAQ,QAAQ;IACvB,eAAe;IACf,GAAG;IACH,GAAG,GAAQ;IACZ;GACF;EACD,YAAY;GACV,GAAG;GACH,MAAM,GAAgB,sBAAsB,mBAAmB,KAAU,GAAY,MAAM,EAAiB;GAC7G;EACD,CAAA;GC5JA,KAA6D;CACjE,IAAI;CACJ,IAAI;CACJ,IAAI;CACL,EAuBK,KAAW,yBACX,IAAoB;AAE1B,SAAS,KAAe;AACtB,KAAI,OAAO,WAAa,IAAa;CAErC,IAAM,EAAE,UAAO,UAAO,cAAW,GAC3B,IAAgB,SAAS,eAAe,GAAS,EAEjD,IAAU;OACX,EAAkB;oBACL,EAAM,QAAQ,UAAU;;;;;OAKrC,EAAkB;kDACyB,EAAM,QAAQ,UAAU;iCACzC,EAAM,OAAO,YAAY;;;OAGnD,EAAkB;8BACK,EAAM,OAAO,YAAY;;;OAGhD,EAAkB;;;eAGV,EAAO,QAAQ,QAAQ;;;6EAGuC,EAAM,QAAQ,UAAU;;;OAG9F,EAAkB;iCACQ,EAAM,OAAO,YAAY;;;OAGnD,EAAkB;OAClB,EAAkB;;kDAEyB,EAAM,QAAQ,UAAU;;;OAGnE,EAAkB;OAClB,EAAkB;eACV,EAAM,KAAK,KAAK;;;;;OAKxB,EAAkB;;;;;OAKlB,EAAkB;OAClB,EAAkB;OAClB,EAAkB;;;;;;;OAOlB,EAAkB;;;;OAIlB,EAAkB;OAClB,EAAkB;;;;;;;;OAQlB,EAAkB;OAClB,EAAkB;OAClB,EAAkB;OAClB,EAAkB;OAClB,EAAkB;;;;;;;OAOlB,EAAkB;;;;;OAKlB,EAAkB;OAClB,EAAkB;OAClB,EAAkB;;;;;;;OAOlB,EAAkB;;;;OAIlB,EAAkB;OAClB,EAAkB;;;;;;;;OAQlB,EAAkB;OAClB,EAAkB;OAClB,EAAkB;OAClB,EAAkB;OAClB,EAAkB;;;;;;;OAOlB,EAAkB;;;;;OAKlB,EAAkB;OAClB,EAAkB;OAClB,EAAkB;;;;;;;OAOlB,EAAkB;;;;OAIlB,EAAkB;OAClB,EAAkB;;;;;;;;OAQlB,EAAkB;OAClB,EAAkB;OAClB,EAAkB;OAClB,EAAkB;OAClB,EAAkB;;;;;;;OAOlB,EAAkB;;;;;;eAMV,EAAM,KAAK,YAAY;;;oBAGlB,EAAM,QAAQ,UAAU;;;;OAIrC,EAAkB;;;;;;OAMlB,EAAkB;OAClB,EAAkB;;;;;;OAMlB,EAAkB,gCAAgC,EAAkB;;;;;;;OAOpE,EAAkB,gCAAgC,EAAkB;OACpE,EAAkB,gCAAgC,EAAkB;;;;;;;OAOpE,EAAkB;;;;;;;;;;;;OAYlB,EAAkB;;;;;OAKlB,EAAkB;;;;;;;;;;OAUlB,EAAkB;OAClB,EAAkB;OAClB,EAAkB;;;;;;;;OAQlB,EAAkB;;;;;;;;eAQV,EAAM,KAAK,SAAS;;;;OAI5B,EAAkB;;;;;;;;;;;;;;OAclB,EAAkB;;;;;;;;;;;;OAYlB,EAAkB;;;;;;;;OAQlB,EAAkB;;;;;;;OAOlB,EAAkB;kDACyB,EAAM,QAAQ,UAAU;0BAChD,EAAM,OAAO,YAAY;;;;;OAK5C,EAAkB;;;8BAGK,EAAM,OAAO,YAAY;;;OAGhD,EAAkB;;;;;OAKlB,EAAkB;;;;;;;OAOlB,EAAkB;;;;;OAKlB,EAAkB;;0BAEC,EAAM,OAAO,YAAY;;;OAG5C,EAAkB;;;;;OAKlB,EAAkB;;;;;OAKlB,EAAkB;OAClB,EAAkB;;;0BAGC,EAAM,OAAO,YAAY;;;;OAI5C,EAAkB;2BACE,EAAM,OAAO,UAAU;4BACtB,EAAM,OAAO,UAAU;;;AAIjD,KAAI,GAAe;AACjB,IAAc,cAAc;AAC5B;;CAGF,IAAM,IAAQ,SAAS,cAAc,QAAQ;AAG7C,CAFA,EAAM,KAAK,IACX,EAAM,cAAc,GACpB,SAAS,KAAK,YAAY,EAAM;;AAGlC,SAAS,GAAW,GAA0D;AAG5E,QAFI,KAAa,OAAa,EAAE,GAC5B,MAAM,QAAQ,EAAU,GAAS,IAC9B,CAAC,EAAU;;AAGpB,IAAa,MAAY,EACvB,eAAY,OACZ,YAAS,MACT,uBAAoB,IACpB,sBAAmB,cACnB,wBAAqB,gBACrB,uBAAoB,SACpB,wBAAqB,SACrB,aACA,6BAA0B,IAC1B,cACA,cACA,qBACA,UACA,aACA,aACA,GAAG,QACkB;AACrB,SAAgB;AACd,MAAc;IACb,EAAE,CAAC;CAEN,IAAM,IAAc,MAAc,aAC5B,IAAgB,GAA2B,IAC3C,IAAc,EAAiB,OAC/B,IACJ,MAAsB,gBAAgB,MAAsB,kBACxD,EAAY,QAAQ,WACpB,EAAY,QAAQ,WACpB,IACJ,MAAuB,eACnB,EAAY,QAAQ,WACpB,GACA,KAAS,KAAY,GACrB,IAAe,MAAc,KAAA,GAC7B,CAAC,GAAmB,MAAwB,GAAoB,EAAiB,EAEjF,KAAoB,IAAe,IAAY,GAC/C,KAAU,UAAe,KAAS,EAAE,EAAE,KAAK,MAAS,EAAK,IAAI,EAAE,CAAC,EAAM,CAAC,EACvE,KAAkB,GAAW,GAAkB,EAE/C,MAAgB,MAA+B;AAInD,EAHK,KACH,GAAqB,EAAqB,EAE5C,IAAW,EAAQ;IAGf,WAAwB;AACxB,KAAQ,WAAW,KACvB,GAAa,GAA6B;IAGtC,WAA0B;AAC9B,KAAa,EAAE,CAAsB;IAGjC,KAAmB,IAAe,KAAY,KAAS,GACvD,IAAkB,CAAC,IAAc,IAAoB,KAAA,GAAW,EAAU,CAAC,OAAO,QAAQ,CAAC,KAAK,IAAI,EAEpG,KAAqB,KACtB,EAAE,kBACH,kBAAC,QAAD;EAAM,WAAW,GAAG,EAAkB;YACpC,kBAAC,GAAD;GACE,MAAM,IAAW,eAAe;GAChC,MAAM;GACN,OAAO;IACL,OAAO,GAAG,EAAc;IACxB,QAAQ,GAAG,EAAc;IACzB,UAAU,GAAG,EAAc;IAC3B,WAAW,GAAG,EAAc;IAC5B,SAAS;IACV;GACD,CAAA;EACG,CAAA,GAEP,KAAA,GAEE,KAAgB,IAClB;EACA,GAAG,EAAM;EACR,iCAA4C,GAAG,EAAc;EAC7D,0BAAqC;EACrC,4BAAuC,EAAY,QAAQ;EAC3D,2BAAsC;EACtC,yBAAoC,GAAG,GAAO;EAChD,GACC,EAAM;AAEV,QACE,kBAAC,OAAD,EAAA,UAAA,CACG,KAAe,KACd,kBAAC,OAAD;EAAK,WAAW,GAAG,EAAkB;EAAY,gBAAc;YAA/D,CACE,kBAAC,UAAD;GACE,MAAK;GACL,WAAW,GAAG,EAAkB;GAChC,SAAS;GACT,UAAU,GAAQ,SAAS,KAAK,GAAgB,WAAW,GAAQ;aAJrE,CAME,kBAAC,QAAD;IAAM,WAAW,GAAG,EAAkB;IAAgB,eAAY;cAChE,kBAAC,GAAD;KAAM,MAAK;KAAa,MAAM;KAAM,CAAA;IAC/B,CAAA,EACN,EACM;MAET,kBAAC,UAAD;GACE,MAAK;GACL,WAAW,GAAG,EAAkB;GAChC,SAAS;GACT,UAAU,GAAgB,WAAW;aAJvC,CAME,kBAAC,QAAD;IAAM,WAAW,GAAG,EAAkB;IAAgB,eAAY;cAChE,kBAAC,GAAD;KAAM,MAAK;KAAkB,MAAM;KAAM,CAAA;IACpC,CAAA,EACN,EACM;KACL;KAGR,kBAAC,GAAD;EACE,GAAI;EACG;EACP,UAAU;EACV,YAAY;EACZ,WAAW;EACX,UAAU;EACV,WAAW;EACX,OAAO;EACP,gBAAc,IAAc,IAAS,KAAA;EACrC,4BAA0B,IAAc,IAAoB,KAAA;EAC5D,mBAAiB,KAAe,KAAS,IAAI,SAAS,KAAA;EACtD,oCAAkC,KAAe,IAA0B,SAAS,KAAA;EACpF,CAAA,CACE,EAAA,CAAA;;AAIV,GAAS,cAAc;;;AC/hBvB,IAAM,KAAW,uBAEX,KAAwE;CAC5E,IAAI;CACJ,IAAI;CACJ,IAAI;CACL;AAYD,SAAS,GAAe,GAAkD;AAGxE,QAFI,MAAS,UAAgB,OACzB,MAAS,UAAgB,OACtB;;AAGT,SAAS,GAAiB,GAAmD;AAG3E,QAFI,CAAC,KAAW,EAAQ,WAAW,IAAU,EAAE,GAExC,EAAQ,KAAK,MACd,OAAO,KAAW,YAAY,OAAO,KAAW,WAC3C;EACL,OAAO;EACP,OAAO;EACR,GAGI;EACL,OAAO,EAAO;EACd,OAAO,EAAO,SAAS,EAAO;EAC9B,MAAO,EAAgC;EACvC,UAAU,EAAO;EACjB,OAAO,EAAO;EACf,CACD;;AAGJ,SAAS,KAAe;AAEtB,KADI,OAAO,WAAa,OACpB,SAAS,eAAe,GAAS,CAAE;CAEvC,IAAM,EAAE,iBAAc,GAEhB,IAAQ,SAAS,cAAc,QAAQ;AAqH7C,CApHA,EAAM,KAAK,IACX,EAAM,cAAc;;;;;;oBAMF,EAAU,UAAU,WAAW;gBACnC,EAAU,UAAU,YAAY,SAAS,EAAU,UAAU,OAAO;uBAC7D,EAAU,UAAU,OAAO;iBACjC,EAAU,UAAU,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uBA+BtB,EAAU,KAAK,iBAAiB;;;;eAIxC,EAAU,KAAK,SAAS;;;;;;;;;;oBAUnB,EAAU,KAAK,mBAAmB;sBAChC,EAAU,KAAK,eAAe;uBAC7B,EAAU,KAAK,eAAe;eACtC,EAAU,KAAK,OAAO;;;;;;;;;;;;;;;;;;;;;;;;qBAwBhB,EAAU,WAAW,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAkCnD,SAAS,KAAK,YAAY,EAAM;;AAGlC,IAAa,MAAa,EAAE,YAAS,MAAM,gBAAa,IAAM,SAAM,UAAO,GAAG,QAA4B;AACxG,SAAgB;AACd,MAAc;IACb,EAAE,CAAC;CAEN,IAAM,EACJ,YACA,UACA,iBACA,aACA,aACA,UACA,cACA,SACA,OACA,GAAG,MACD,GAEE,IAAe,KAAU,GAAe,EAAK,EAC7C,IAAoB,SAAc,GAAiB,EAAQ,EAAE,CAAC,EAAQ,CAAC,EAEvE,IAAc,EAAkB,IAChC,CAAC,GAAmB,KAAwB,GAC/C,KAA6C,GAAa,MAC5D,EAEK,IAAiB,KAAsC,GAEvD,IAAS,EAAiB,UAAU,KAAK,IAEzC,MAAgB,MAAqB;AACrC,OAAY,EAAO,aAEnB,MAAU,KAAA,KACZ,EAAqB,EAAO,MAAM,EAGpC,IAAW,EAAO,MAAM;IAGpB,IAA2B;EAC/B,GAAG;EACF,8BAAyC,EAAO;EAChD,iCAA4C,EAAO;EACnD,2BAAsC,EAAO;EAC7C,iCAA4C,EAAO;EACnD,4BAAuC,EAAO;EAC9C,8BAAyC,EAAO;EAChD,iCAA4C,EAAO;EACnD,4BAAuC,EAAO;EAChD;AAMD,QAJI,MACF,EAAU,0BAAoC,SAI9C,kBAAC,OAAD;EACE,GAAI;EACA;EACO;EACX,MAAK;EACL,iBAAe,IAAW,SAAS;EACnC,iBAAe,IAAQ,SAAS;EAChC,OAAO;EACP,qBAAA;EACA,oBAAkB,IAAa,SAAS;EACxC,gBAAc;EACd,oBAAkB,KAAQ,GAAe;YAEzC,kBAAC,OAAD;GAAK,WAAU;aACZ,EAAkB,KAAK,GAAQ,MAAU;IACxC,IAAM,IAAU,EAAO,UAAU,GAC3B,IAAiB,KAAY,EAAO;AAE1C,WACE,kBAAC,UAAD;KAEE,MAAK;KACL,WAAU;KACV,MAAK;KACL,gBAAc,IAAU,SAAS;KACjC,iBAAe,IAAiB,SAAS;KACzC,UAAU,IAAU,IAAI;KACxB,eAAe,GAAa,EAAO;KACnC,OAAO,EAAO;KACR;KACN,UAAU,CAAC,CAAC;eAEZ,kBAAC,QAAD;MAAM,WAAU;gBAAhB,CACG,EAAO,OAAO,kBAAC,QAAD;OAAM,WAAU;iBAA0B,EAAO;OAAY,CAAA,GAAG,MAC/E,kBAAC,QAAD,EAAA,UAAO,EAAO,SAAS,EAAO,OAAa,CAAA,CACtC;;KACA,EAhBF,GAAG,OAAO,EAAO,MAAM,CAAC,GAAG,IAgBzB;KAEX;GACE,CAAA;EACF,CAAA;GCtPJ,KAAkD;CACtD,MAAM;CACN,MAAM;CACN,MAAM;CACN,MAAM;CACN,MAAM;CACN,MAAM;CACN,IAAM;CACN,IAAM;CACP,EAEK,KAA6E;CACjF,SAAS;EACP,IAAI,EAAiB,MAAM,MAAM,QAAQ;EACzC,IAAI,EAAiB,MAAM,MAAM,QAAQ;EACzC,IAAI,EAAiB,MAAM,MAAM,QAAQ;EACzC,IAAI,EAAiB,MAAM,MAAM,QAAQ;EACzC,eAAe,EAAiB,MAAM,MAAM,QAAQ;EACrD;CACD,QAAQ;EACN,IAAI,EAAiB,MAAM,MAAM,OAAO;EACxC,IAAI,EAAiB,MAAM,MAAM,OAAO;EACxC,IAAI,EAAiB,MAAM,MAAM,OAAO;EACxC,IAAI,EAAiB,MAAM,MAAM,OAAO;EACxC,eAAe,EAAiB,MAAM,MAAM,OAAO;EACpD;CACF,EAEK,KAAW;AAEjB,SAAS,KAAe;AACtB,KAAI,OAAO,WAAa,IAAa;CACrC,IAAM,EAAE,aAAU,GACd,IAAQ,SAAS,eAAe,GAAS;AAO7C,CANK,MACH,IAAQ,SAAS,cAAc,QAAQ,EACvC,EAAM,KAAK,IACX,SAAS,KAAK,YAAY,EAAM,GAGlC,EAAM,cAAc;;;;;;;;;;;;gBAYN,EAAM,OAAO,MAAM,SAAS,EAAM,OAAO,MAAM;uBACxC,EAAM,OAAO,OAAO;oBACvB,EAAM,OAAO;;;oBAGb,EAAM,QAAQ,WAAW;;;;;;;;;;oBAUzB,EAAM,QAAQ,OAAO;uBAClB,EAAM,OAAO,OAAO,GAAG,EAAM,OAAO,OAAO;iBACjD,EAAM,QAAQ,OAAO,EAAE,GAAG,EAAM,QAAQ,OAAO,EAAE;;uBAE3C,EAAM,OAAO,MAAM,SAAS,EAAM,OAAO,MAAM;;;;eAIvD,EAAM,KAAK,MAAM;;;;;;;;eAQjB,EAAM,YAAY,KAAK;gBACtB,EAAM,YAAY,KAAK;;;;;;eAMxB,EAAM,YAAY,MAAM;uBAChB,EAAM,YAAY,OAAO;;;;;;;eAOjC,EAAM,YAAY,SAAS;gBAC1B,EAAM,YAAY,SAAS;;;;;;;;eAQ5B,EAAM,YAAY,MAAM;;;;;;;;;;;;;;;;;;;sBAmBjB,EAAM,QAAQ,OAAO,EAAE;eAC9B,EAAM,KAAK,KAAK;;;;;;;;;;iBAUd,EAAM,QAAQ,OAAO,QAAQ;oBAC1B,EAAM,OAAO,MAAM,SAAS,EAAM,OAAO,MAAM;;;;;;;;;;;;;;;;iBAgBlD,EAAM,QAAQ,OAAO,EAAE,GAAG,EAAM,QAAQ,OAAO,EAAE;;;;;;;eAOnD,EAAM,YAAY,KAAK;gBACtB,EAAM,YAAY,KAAK;;;;eAIxB,EAAM,YAAY,SAAS;gBAC1B,EAAM,YAAY,SAAS;;;;sBAIrB,EAAM,QAAQ,OAAO,EAAE;;;;iBAI5B,EAAM,QAAQ,OAAO,OAAO;;;;;;;;;;;;uBAYtB,EAAM,OAAO,iBAAiB;;;;;;;;oBAQjC,EAAM,QAAQ,iBAAiB;uBAC5B,EAAM,OAAO,iBAAiB,GAAG,EAAM,OAAO,iBAAiB;uBAC/D,EAAM,OAAO,MAAM,SAAS,EAAM,OAAO,MAAM;;;;;;;;;;;;;AActE,IAAa,MAAS,EACpB,cACA,cAAW,WACX,YAAS,MACT,cAAW,WACX,eAAY,qBACZ,cAAW,WACX,gBAAa,IACb,kBACA,gBACA,eAAY,IACZ,WACA,aACA,UACA,aACA,UACA,UACA,YAAS,SACT,gBAAa,UACb,aACA,SACA,WACA,GAAG,QACa;AAChB,SAAgB;AACd,MAAc;IACb,EAAE,CAAC;CAEN,IAAM,IAAgB,MAAU,IAAY,GAAgB,KAAa,GAAc,GAAU,KAE3F,IAAY,KAAe,KAAY,IAGvC,KAFY,MAAa,SAG3B,OACA,IAEF,kBAAC,QAAD;EAAM,OAAO;GAAE,SAAS;GAAe,YAAY;GAAU,KAAK;GAAG;YAArE,CACE,kBAAC,QAAD,EAAA,UAAO,KAAS,SAAe,CAAA,EAC/B,kBAAC,QAAD;GAAM,OAAO;IAAE,OAAO,EAAiB,MAAM,KAAK;IAAU,UAAU;IAAI,YAAY;IAAK;aAAE;GAAiB,CAAA,CACzG;MAEF,KAAS,SAIV,KACJ,MAAW,KAAA,IAEP,MAAa,SACX,OAEA,kBAAC,IAAD;EAAO,WAAW,MAAa,WAAW,aAAa;EAAc,MAR3D,MAAa,WAAW,KAAK;EAQ+C,OAAO,EAAE,OAAO,MAAa,WAAW,SAAS,KAAA,GAAW;YAAlJ;GACG,MAAc,gCACb,kBAAC,IAAD;IAAU,WAAU;IAAW,OAAO,MAAa,WAAW,EAAE,OAAO,QAAQ,GAAG,KAAA;IAAW,UAAU,MAAM,IAAW,EAAE;cAAE;IAEjH,CAAA;GAEZ,MAAc,aACb,kBAAC,IAAD;IAAU,WAAU;IAAY,OAAO,MAAa,WAAW,EAAE,OAAO,QAAQ,GAAG,KAAA;IAAW,UAAU,MAAM,IAAW,EAAE;cACxH,OAAO,EAAW,CAAC,aAAa;IACxB,CAAA;GAEb,kBAAC,IAAD;IAAU,WAAU;IAAU,OAAO,MAAa,WAAW,EAAE,OAAO,QAAQ,GAAG,KAAA;IAAW,UAAU,MAAM,IAAO,EAAE;cAClH,OAAO,EAAO,CAAC,aAAa;IACpB,CAAA;GACL;MAlBV,GAqBA,KAAuB,IAC3B,kBAAC,OAAD;EAAK,OAAO;GAAE,SAAS;GAAQ,YAAY;GAAc,KAAK;GAAI;YAAlE,CACE,kBAAC,OAAD;GAAK,OAAO,EAAE,YAAY,GAAG;aAAG;GAAoB,CAAA,EACpD,kBAAC,OAAD;GAAK,OAAO;IAAE,MAAM;IAAG,UAAU;IAAG;GAAG;GAAe,CAAA,CAClD;MACJ;AAEJ,QACE,kBAAC,IAAD;EACE,GAAI;EACJ,OAAO;EACP,OAAO;EACP,UAAU;EACV,QAAQ;EACE;EACJ;EACN,WAAW,4BAA4B,EAAS,iBAAiB,EAAO,GAAG,MAAa,WAAW,oBAAoB,mBAAmB,GAAG,IAAY,MAAM;EAC/J,OAAO;GACL,GAAG;GACH,UAAU,MAAW,gBAAgB,UAAU;GAChD;EACD,QAAQ;GACN,GAAG;GACH,MAAM;IACJ,iBAAiB,EAAiB,MAAM;IACxC,GAAG,GAAQ;IACZ;GACF;EACD,iBAAA;EACA,mBAAiB,KAAa;EAC9B,kBAAgB;EAChB,gBAAc;EACd,kBAAgB;EAChB,mBAAiB;EACjB,kBAAgB;YAEf;EACQ,CAAA;GC3VT,KAA2D;CAC/D,SAAS;CACT,MAAM;CACN,SAAS;CACT,OAAO;CACR,EAEK,KAA4D;CAChE,SAAS,EAAY,OAAO;CAC5B,MAAM,EAAY,KAAK;CACvB,SAAS,EAAY,OAAO;CAC5B,OAAO,EAAY,OAAO;CAC3B;AAED,SAAS,GAAgB,GAAG,GAAkC;AAC5D,QAAO,EAAM,OAAO,QAAQ,CAAC,KAAK,IAAI;;AAGxC,SAAgB,GACd,GACA,GAKW;AACX,QAAO,GAAc,GAAuB,IAAS;EACnD,GAAG;EACH,WAAW,GAAgB,WAAW,2BAA2B,GAAS,UAAU;EACpF,OAAO;GACL,OAAO,GAAwB;GAC/B,SAAS;GACT,YAAY;GACZ,iBAAiB;GACjB,GAAG,GAAS;GACb;EACF,CAAC;;AAGJ,SAAgB,GACd,GAKW;AACX,QAAO,GAAwB,WAAW,EAAQ;;;;AC3CpD,IAAM,KAAuB;AAE7B,SAAS,EAAO,GAAsC;AAKpD,QAJI,CAAC,EAAO,QAAQ,EAAO,SAAS,KAAA,KAAa,CAAC,GAAiB,EAAO,KAAK,GACtE,IAGF;EACL,GAAG;EACH,MAAM,GAAwB,EAAO,MAAM,EAAE,MAAM,IAAsB,CAAC;EAC3E;;AAGH,SAAS,GAAiB,GAA6C;AACrE,QAAO,MAAS,aAAa,MAAS,UAAU,MAAS,aAAa,MAAS;;AAGjF,SAAS,GAAS,GAAoC,GAAmC;AAOvF,QANI,OAAO,KAAY,YAAY,KAAoB,CAAC,MAAM,QAAQ,EAAQ,IAAI,aAAa,IACtF,KAAS,EAA0B,SAAS,KAAA,IAC/C;EAAE,GAAI;EAA2B;EAAM,GACtC,IAGA;EAAE;EAAS;EAAM;;AAG1B,SAAgB,KAAa;CAC3B,IAAM,CAAC,GAAK,KAAiB,EAAQ,YAAY;AAYjD,QAAO,CAAC;EATN,GAAG;EACH,OAAO,MAA0B,EAAI,KAAK,EAAO,EAAO,CAAC;EACzD,UAAU,MAAuC,EAAI,KAAK,EAAO,GAAS,GAAS,UAAU,CAAC,CAAC;EAC/F,OAAO,MAAuC,EAAI,KAAK,EAAO,GAAS,GAAS,OAAO,CAAC,CAAC;EACzF,UAAU,MAAuC,EAAI,KAAK,EAAO,GAAS,GAAS,UAAU,CAAC,CAAC;EAC/F,QAAQ,MAAuC,EAAI,KAAK,EAAO,GAAS,GAAS,QAAQ,CAAC,CAAC;EAC3F,UAAU,MAAuC,EAAI,KAAK,GAAS,GAAS,UAAU,CAAC;EAGjF,EAAO,EAAc;;AAG/B,IAAa,KAAY;CACvB,OAAO,MAA0B,EAAQ,KAAK,EAAO,EAAO,CAAC;CAC7D,UAAU,MAAuC,EAAQ,KAAK,EAAO,GAAS,GAAS,UAAU,CAAC,CAAC;CACnG,OAAO,MAAuC,EAAQ,KAAK,EAAO,GAAS,GAAS,OAAO,CAAC,CAAC;CAC7F,UAAU,MAAuC,EAAQ,KAAK,EAAO,GAAS,GAAS,UAAU,CAAC,CAAC;CACnG,QAAQ,MAAuC,EAAQ,KAAK,EAAO,GAAS,GAAS,QAAQ,CAAC,CAAC;CAC/F,UAAU,MAAuC,EAAQ,KAAK,GAAS,GAAS,UAAU,CAAC;CAC3F,UAAU,MAAoB,EAAQ,QAAQ,EAAI;CACnD,ECtDK,KAAW,0BACX,KAA4B;AAElC,SAAS,KAAe;AACtB,KAAI,OAAO,WAAa,IAAa;CAErC,IAAI,IAAQ,SAAS,eAAe,GAAS;AAO7C,CANK,MACH,IAAQ,SAAS,cAAc,QAAQ,EACvC,EAAM,KAAK,IACX,SAAS,KAAK,YAAY,EAAM,GAGlC,EAAM,cAAc;;AAqBtB,SAAS,GAAgB,GAAG,GAAkC;AAC5D,QAAO,EAAM,OAAO,QAAQ,CAAC,KAAK,IAAI;;AAGxC,SAAS,GAAS,GAAiB,GAAmB;AAEpD,QADI,KAA+B,OAAa,IACzC,kBAAC,QAAD;EAAiB;YAAY;EAAY,CAAA;;AAGlD,SAAS,GAAiB,GAA+D;AACvF,QAAO,MAAS,aAAa,MAAS,UAAU,MAAS,aAAa,MAAS;;AAGjF,SAAS,GAAO,GAA+B,GAAwD;AACrG,KAAc;CACd,IAAM,IAAe,EAAO,QAAQ;AAEpC,QAAO;EACL,GAAG;EACH,WAAW,GAAgB,mBAAmB,EAAO,UAAU;EAC/D,MACE,EAAO,SAAS,GAAiB,EAAa,GAAG,GAAwB,GAAc,EAAE,MAAM,IAA2B,CAAC,GAAG,KAAA;EAChI,SAAS,GAAS,EAAO,SAAS,wBAAwB;EAC1D,OAAO,GAAS,EAAO,OAAO,wBAAwB;EACtD,aAAa,GAAS,EAAO,aAAa,8BAA8B;EACzE;;AAKH,SAAgB,KAAkB;CAChC,IAAM,CAAC,GAAK,KAAiB,EAAa,iBAAiB;AAe3D,QAbA,QAAgB;AACd,MAAc;IACb,EAAE,CAAC,EAWC,CAAC;EARN,OAAO,MAAW,EAAI,KAAK,GAAO,EAAO,CAAC;EAC1C,UAAU,MAAW,EAAI,QAAQ,GAAO,GAAQ,UAAU,CAAC;EAC3D,OAAO,MAAW,EAAI,KAAK,GAAO,GAAQ,OAAO,CAAC;EAClD,UAAU,MAAW,EAAI,QAAQ,GAAO,GAAQ,UAAU,CAAC;EAC3D,QAAQ,MAAW,EAAI,MAAM,GAAO,GAAQ,QAAQ,CAAC;EACrD,UAAU,MAAQ,EAAI,QAAQ,EAAI;EAG5B,EAAO,EAAc;;AAG/B,IAAa,KAAiB;CAC5B,OAAO,MAAkC,EAAa,KAAK,GAAO,EAAO,CAAC;CAC1E,UAAU,MAAkC,EAAa,QAAQ,GAAO,GAAQ,UAAU,CAAC;CAC3F,OAAO,MAAkC,EAAa,KAAK,GAAO,GAAQ,OAAO,CAAC;CAClF,UAAU,MAAkC,EAAa,QAAQ,GAAO,GAAQ,UAAU,CAAC;CAC3F,QAAQ,MAAkC,EAAa,MAAM,GAAO,GAAQ,QAAQ,CAAC;CACrF,UAAU,MAAoB,EAAa,QAAQ,EAAI;CACxD,EC5FK,KAA0B;AAIhC,SAAgB,GAAW,EAAE,SAAM,GAAG,KAA4B;AAChE,QACE,kBAAC,GAAD;EACE,GAAI;EACJ,MAAM,KAAQ,GAAoB,EAAE,MAAM,IAAyB,CAAC;EACpE,CAAA;;;;ACNN,IAAM,KAAW,kBACX,IAAgB,WAChB,KAA0B,2BAQ1B,KAAmD;CACvD,OAAO;CACP,SAAS;CACT,QAAQ;CACR,QAAQ;CACR,OAAO;CACR;AAED,SAAS,KAAe;AACtB,KAAI,OAAO,WAAa,IAAa;CAErC,IAAI,IAAQ,SAAS,eAAe,GAAS;AAC7C,CAAK,MACH,IAAQ,SAAS,cAAc,QAAQ,EACvC,EAAM,KAAK,IACX,SAAS,KAAK,YAAY,EAAM;CAGlC,IAAM,EAAE,WAAQ,aAAU;AAC1B,GAAM,cAAc;;;;;OAKf,EAAc;OACd,EAAc;OACd,EAAc;;;;OAId,EAAc;0CACqB,GAAqB,QAAQ;2CAC5B,GAAqB,QAAQ;;;;;;;;OAQjE,EAAc;eACN,EAAO,QAAQ,QAAQ;;;OAG/B,GAAwB;0CACW,GAAqB,QAAQ;2CAC5B,GAAqB,QAAQ;;;mCAGrC,EAAO,QAAQ,QAAQ,eAAe,EAAM,WAAW,SAAS;;;;;OAK5F,GAAwB;;;;;oBAKX,EAAM,WAAW,QAAQ;;;OAGtC,EAAc;OACd,EAAc;eACN,EAAM,KAAK,MAAM;;;;;;;OAOzB,EAAc,gBAAgB,GAAwB;+BAC9B,GAAqB,MAAM;;;OAGnD,EAAc,gBAAgB,GAAwB;+BAC9B,GAAqB,MAAM;;;OAGnD,EAAc;uCACkB,EAAY,QAAQ,OAAO;;;;AAKlE,SAAS,GAAgB,GAAG,GAAkC;AAC5D,QAAO,EAAM,OAAO,QAAQ,CAAC,KAAK,IAAI;;AAGxC,SAAS,GAAiB,GAAmC,GAA6B;AAKxF,QAJI,MAAS,KAAA,IACJ,GAAqB,KAAY,aAGnC,OAAO,KAAS,WAAW,GAAG,EAAK,MAAM;;AAGlD,SAAS,KAAiB;AACxB,QAAO,kBAAC,QAAD;EAAM,WAAW;EAAyB,eAAY;EAAS,CAAA;;AAGxE,SAAgB,GAAK,EAAE,cAAW,cAAW,UAAO,WAAW,UAAO,iBAAc,GAAG,KAAsB;AAC3G,SAAgB;AACd,MAAc;IACb,EAAE,CAAC;CAEN,IAAM,IAA6B;EACjC,GAAG;EACF,yBAAoC,GAAiB,GAAc,EAAK;EAC1E;AAED,QACE,kBAAC,IAAD;EACE,GAAI;EACE;EACN,WAAW,GAAgB,GAAe,EAAU;EACpD,WAAW,KAAa,kBAAC,IAAD,EAAkB,CAAA;EAC1C,OAAO;EACP,CAAA;;ACzGN,IAAa,KAAc,OAAO,QAlBT,MACvB,kBAAC,GAAD;CAAgB,MAAM,EAAE,UAAU,IAAM;WACtC,kBAAC,GAAD,EAAgB,GAAI,GAAS,CAAA;CACd,CAAA,EAeuC;CACxD,QAbwB,MACxB,kBAAC,GAAD;EAAgB,MAAM,EAAE,UAAU,IAAM;YACtC,kBAAC,EAAe,OAAhB,EAAsB,GAAI,GAAS,CAAA;EACpB,CAAA;CAWjB,UAR0B,MAC1B,kBAAC,GAAD;EAAgB,MAAM,EAAE,UAAU,IAAM;YACtC,kBAAC,EAAe,SAAhB,EAAwB,GAAI,GAAS,CAAA;EACtB,CAAA;CAMlB,CAAC,ECGI,KAAW,oBAEX,KAAyD;CAC7D,SAAS;CACT,MAAM;CACN,QAAQ;CACR,cAAc;CACd,eAAe;CAChB,EAEK,KAAqE;CACzE,SAAS;CACT,MAAM;CACN,QAAQ;CACR,cAAc;CACd,eAAe;CAChB,EAEK,KAA4D;CAChE,SAAS;CACT,MAAM;CACN,QAAQ;CACR,cAAc;CACd,eAAe;CAChB,EAEK,KAA8D;CAClE,SAAS;CACT,MAAM;CACN,QAAQ;CACR,cAAc;CACd,eAAe;CAChB,EAEK,MAAmB,GAAG,MAC1B,EAAW,OAAO,QAAQ,CAAC,KAAK,IAAI,CAAC,MAAM;AAE7C,SAAS,KAAe;AACtB,KAAI,OAAO,WAAa,IAAa;CAErC,IAAM,EAAE,cAAW,GACf,IAAQ,SAAS,eAAe,GAAS;AAO7C,CANK,MACH,IAAQ,SAAS,cAAc,QAAQ,EACvC,EAAM,KAAK,IACX,SAAS,KAAK,YAAY,EAAM,GAGlC,EAAM,cAAc;;oBAEF,EAAO,SAAS;;;;oBAIhB,EAAO,OAAO;;;;;oBAKd,EAAO,QAAQ,WAAW;uBACvB,EAAO,OAAO,OAAO;;;;;;;;iBAQ3B,EAAO,QAAQ,OAAO;oBACnB,EAAO,QAAQ,OAAO;uBACnB,EAAO,OAAO,MAAM,SAAS,EAAO,OAAO,MAAM;;;;;;;;;;;;;;;;;eAiBzD,EAAO,KAAK,MAAM;;;;;;;;;;;;;;;;;;;;;;;;eAwBlB,EAAO,KAAK,YAAY;;;;;;;eAOxB,EAAO,YAAY,KAAK;gBACvB,EAAO,YAAY,KAAK;;;;;;kBAMtB,EAAO,YAAY,KAAK;eAC3B,EAAO,YAAY,MAAM;uBACjB,EAAO,YAAY,OAAO;;;;;;;eAOlC,EAAO,YAAY,SAAS;gBAC3B,EAAO,YAAY,SAAS;;;;iBAI3B,EAAO,QAAQ,KAAK;oBACjB,EAAO,QAAQ,WAAW;eAC/B,EAAO,KAAK,KAAK;;;;;;;;;iBASf,EAAO,QAAQ,OAAO;oBACnB,EAAO,QAAQ,OAAO;oBACtB,EAAO,OAAO,MAAM,SAAS,EAAO,OAAO,MAAM;;;;;;;;;;;;;;;;;;;;oBAoBjD,EAAO,QAAQ,QAAQ;;;;;iBAK1B,EAAO,QAAQ,KAAK;;;;iBAIpB,EAAO,QAAQ,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqC5C,SAAS,GAAY,GAAkB,GAAyB;AAG9D,QAFK,IAGH,kBAAC,QAAD;EAAM,WAAU;YAAhB,CACE,kBAAC,QAAD;GAAM,WAAU;aAAwB;GAAa,CAAA,EACrD,kBAAC,QAAD;GAAM,WAAU;aAAyB;GAAmB,CAAA,CACvD;MANgB;;AAU3B,SAAS,GAAa,GAAwB,GAAqC,GAA0C;AAC3H,QACE,kBAAC,IAAD;EAAmB;EAAW,UAAU,EAAO;EAAU,SAAS,EAAO;EAAS,SAAS,EAAO,WAAW;YAC1G,EAAO;EACD,CAAA;;AAIb,IAAa,MAAU,EACrB,eAAY,WACZ,WACA,cAAW,QACX,kBACA,oBACA,sBACA,qBACA,kBACA,cACA,UACA,WACA,YACA,eAAY,SACZ,aACA,GAAG,QACc;AACjB,SAAgB;AACd,MAAc;IACb,EAAE,CAAC;CAEN,IAAM,IAAe,KAAU,GAAgB,IACzC,IAAqB,MAAa,SAAS,GAA0B,KAAa,GAClF,KAAmD,MAAU,IAAU,EAAM,EAC7E,IAAgB,KAAmB,EAAE,OAAO,GAAsB,IAAY,EAC9E,IAAkB,KAAqB,EAAE,OAAO,GAAwB,IAAY,EAEpF,IAAiB,MAAW,KAAA,IAE9B,MAAuB,SACrB,OAEA,kBAAC,OAAD;EAAK,WAAU;YAAf,CACE,kBAAC,OAAD,EAAA,UAAM,IAAmB,GAAa,GAAkB,YAAY,EAAgB,GAAG,MAAW,CAAA,EAClG,kBAAC,OAAD;GAAK,WAAU;aAAf,CACG,GAAa,GAAiB,aAAa,EAAgB,EAC3D,GAAa,GAAe,UAAU,CACnC;KACF;MAVR;AAaJ,QACE,kBAAC,GAAD;EACE,GAAI;EACO;EACX,MAAM,EAAiB,OAAO,MAAM;EACpC,OAAO,GAAY,GAAO,EAAc;EACxC,QAAQ;EACC;EACT,eAAe,GAAgB,kBAAkB,qBAAqB,KAAa,kBAAkB,KAAgB,oBAAoB,KAAsB,EAAc;EAC7K,WAAW,GAAgB,aAAa,EAAU;EAClD,0BAAwB;EACxB,uBAAqB;EACrB,yBAAuB;EAEtB;EACS,CAAA;;AAIhB,GAAO,cAAc"}