@ryuzaki13/react-foundation-ui 1.0.7 → 1.0.11

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 (633) hide show
  1. package/dist/advanced-search/index.js +11 -11
  2. package/dist/badge/index.js +1 -1
  3. package/dist/base-table/index.js +1 -1
  4. package/dist/button/index.js +2 -23
  5. package/dist/check-box/index.js +1 -1
  6. package/dist/chunks/{CalendarView-DjeTJkTT.js → CalendarView-DCQjO2ho.js} +2 -2
  7. package/dist/chunks/{CalendarView-DjeTJkTT.js.map → CalendarView-DCQjO2ho.js.map} +1 -1
  8. package/dist/chunks/{odata-DSW7z3nh.js → SelectOptionContent-lfEtHXfO.js} +404 -381
  9. package/dist/chunks/SelectOptionContent-lfEtHXfO.js.map +1 -0
  10. package/dist/chunks/{TextEditorLexicalClient-uvFboXlh.js → TextEditorLexicalClient-Bca3FOUs.js} +8 -8
  11. package/dist/chunks/{TextEditorLexicalClient-uvFboXlh.js.map → TextEditorLexicalClient-Bca3FOUs.js.map} +1 -1
  12. package/dist/chunks/{BadgeList-DYgun2rf.js → badge-BfbLPk0z.js} +2 -2
  13. package/dist/chunks/badge-BfbLPk0z.js.map +1 -0
  14. package/dist/chunks/{base-table-CoQlKABk.js → base-table-CiYSRI_J.js} +4 -4
  15. package/dist/chunks/{base-table-CoQlKABk.js.map → base-table-CiYSRI_J.js.map} +1 -1
  16. package/dist/chunks/button-CC0Jdx1j.js +72 -0
  17. package/dist/chunks/button-CC0Jdx1j.js.map +1 -0
  18. package/dist/chunks/{CheckBox-BowNqqd3.js → check-box-BowNqqd3.js} +1 -1
  19. package/dist/chunks/check-box-BowNqqd3.js.map +1 -0
  20. package/dist/chunks/{DropdownMenu-DQeR3y7M.js → context-menu-DQeR3y7M.js} +1 -1
  21. package/dist/chunks/context-menu-DQeR3y7M.js.map +1 -0
  22. package/dist/chunks/{DateInput-CaKGXluL.js → date-input-DjAQ75n9.js} +5 -5
  23. package/dist/chunks/date-input-DjAQ75n9.js.map +1 -0
  24. package/dist/chunks/{DateRangePresetSelect-UgsfaOeM.js → date-range-preset-select-UgsfaOeM.js} +1 -1
  25. package/dist/chunks/date-range-preset-select-UgsfaOeM.js.map +1 -0
  26. package/dist/chunks/{Flex-DUYSL5TE.js → flex-CPO6xlPR.js} +38 -33
  27. package/dist/chunks/{Flex-DUYSL5TE.js.map → flex-CPO6xlPR.js.map} +1 -1
  28. package/dist/chunks/{Grid-ByIIytjh.js → grid-ByIIytjh.js} +1 -1
  29. package/dist/chunks/{Grid-ByIIytjh.js.map → grid-ByIIytjh.js.map} +1 -1
  30. package/dist/chunks/{Input-BYUl3UFn.js → input-CZLUUggm.js} +12 -4
  31. package/dist/chunks/input-CZLUUggm.js.map +1 -0
  32. package/dist/chunks/{InputFiles-gIxOPv5y.js → input-files-aB8iaqGk.js} +5 -5
  33. package/dist/chunks/input-files-aB8iaqGk.js.map +1 -0
  34. package/dist/chunks/{input-search-BR4LDmyb.js → input-search-eMvnvgV0.js} +2 -2
  35. package/dist/chunks/{input-search-BR4LDmyb.js.map → input-search-eMvnvgV0.js.map} +1 -1
  36. package/dist/chunks/{misc-DoqZBMof.js → misc-1PxS8OWD.js} +2 -2
  37. package/dist/chunks/{misc-DoqZBMof.js.map → misc-1PxS8OWD.js.map} +1 -1
  38. package/dist/chunks/{modal-ByNRME3b.js → modal-C0j0hEIt.js} +5 -5
  39. package/dist/chunks/{modal-ByNRME3b.js.map → modal-C0j0hEIt.js.map} +1 -1
  40. package/dist/chunks/multi-select-r0ekR6Bh.js +541 -0
  41. package/dist/chunks/multi-select-r0ekR6Bh.js.map +1 -0
  42. package/dist/chunks/{picker-DGXq3ikg.js → picker-beNX-cW9.js} +11 -11
  43. package/dist/chunks/{picker-DGXq3ikg.js.map → picker-beNX-cW9.js.map} +1 -1
  44. package/dist/chunks/{RadioGroup-B9XjkcOy.js → radio-group-B9XjkcOy.js} +1 -1
  45. package/dist/chunks/radio-group-B9XjkcOy.js.map +1 -0
  46. package/dist/chunks/select-CFbZS7fx.js +284 -0
  47. package/dist/chunks/select-CFbZS7fx.js.map +1 -0
  48. package/dist/chunks/{table-Dc3AqMzP.js → table-BR2VqeEg.js} +2 -2
  49. package/dist/chunks/{table-Dc3AqMzP.js.map → table-BR2VqeEg.js.map} +1 -1
  50. package/dist/chunks/{toolbar-BCZNdRXM.js → toolbar-XCDeS2Li.js} +2 -2
  51. package/dist/chunks/{toolbar-BCZNdRXM.js.map → toolbar-XCDeS2Li.js.map} +1 -1
  52. package/dist/chunks/{useODataSelectBase-BbeKdq6x.js → useODataSelectBase-BxAvhDww.js} +2 -2
  53. package/dist/chunks/{useODataSelectBase-BbeKdq6x.js.map → useODataSelectBase-BxAvhDww.js.map} +1 -1
  54. package/dist/context-menu/index.js +1 -1
  55. package/dist/date-input/index.js +2 -2
  56. package/dist/date-range-preset-select/index.js +1 -1
  57. package/dist/date-time-input/index.js +458 -2
  58. package/dist/date-time-input/index.js.map +1 -0
  59. package/dist/detail/index.js +80 -2
  60. package/dist/detail/index.js.map +1 -0
  61. package/dist/dialog/index.js +50 -2
  62. package/dist/dialog/index.js.map +1 -0
  63. package/dist/disclosure/index.js +49 -2
  64. package/dist/disclosure/index.js.map +1 -0
  65. package/dist/drop-zone/index.js +98 -2
  66. package/dist/drop-zone/index.js.map +1 -0
  67. package/dist/errors/index.js +1 -1
  68. package/dist/expandable-action-panel/index.js +82 -2
  69. package/dist/expandable-action-panel/index.js.map +1 -0
  70. package/dist/flex/index.js +2 -14
  71. package/dist/grid/index.js +1 -1
  72. package/dist/image/index.js +5 -5
  73. package/dist/input/Input.d.ts +2 -2
  74. package/dist/input/Input.d.ts.map +1 -1
  75. package/dist/input/index.js +2 -14
  76. package/dist/input-date-time/index.js +258 -2
  77. package/dist/input-date-time/index.js.map +1 -0
  78. package/dist/input-file/index.js +105 -2
  79. package/dist/input-file/index.js.map +1 -0
  80. package/dist/input-files/index.js +1 -1
  81. package/dist/input-image/index.js +100 -2
  82. package/dist/input-image/index.js.map +1 -0
  83. package/dist/input-search/index.js +1 -1
  84. package/dist/layout-picker/index.js +1171 -2
  85. package/dist/layout-picker/index.js.map +1 -0
  86. package/dist/list/index.js +2 -2
  87. package/dist/listbox/index.js +81 -2
  88. package/dist/listbox/index.js.map +1 -0
  89. package/dist/misc/index.js +1 -1
  90. package/dist/modal/index.js +1 -1
  91. package/dist/multi-select/index.js +2 -3
  92. package/dist/notifications/index.js +151 -3
  93. package/dist/notifications/index.js.map +1 -0
  94. package/dist/picker/index.js +1 -1
  95. package/dist/preset-range-date-input/index.js +52 -3
  96. package/dist/preset-range-date-input/index.js.map +1 -1
  97. package/dist/preset-select/index.js +1 -1
  98. package/dist/radio-button/index.js +48 -2
  99. package/dist/radio-button/index.js.map +1 -0
  100. package/dist/radio-group/index.js +1 -1
  101. package/dist/select/index.js +2 -4
  102. package/dist/simple-table/index.js +1 -1
  103. package/dist/slider/index.js +695 -2
  104. package/dist/slider/index.js.map +1 -0
  105. package/dist/splitter/index.js +168 -2
  106. package/dist/splitter/index.js.map +1 -0
  107. package/dist/state-select/index.js +78 -2
  108. package/dist/state-select/index.js.map +1 -0
  109. package/dist/styles.css +1 -1
  110. package/dist/switch/index.js +81 -2
  111. package/dist/switch/index.js.map +1 -0
  112. package/dist/table/index.js +1 -1
  113. package/dist/table-sorting/index.js +1 -1
  114. package/dist/tabs/index.js +384 -2
  115. package/dist/tabs/index.js.map +1 -0
  116. package/dist/text-editor/index.js +3 -3
  117. package/dist/text-editor/toolbar/index.js +1 -1
  118. package/dist/textarea/index.js +44 -2
  119. package/dist/textarea/index.js.map +1 -0
  120. package/dist/toggle/index.js +73 -2
  121. package/dist/toggle/index.js.map +1 -0
  122. package/dist/toolbar/index.js +2 -3
  123. package/dist/toolbar/index.js.map +1 -1
  124. package/dist/tree-select/index.js +569 -89
  125. package/dist/tree-select/index.js.map +1 -1
  126. package/dist/tree-table/index.js +1 -1
  127. package/package.json +5 -304
  128. package/src/styles/_base.scss +11 -3
  129. package/src/styles/config/_index.scss +21 -37
  130. package/src/styles/themes/dark/_default.scss +0 -17
  131. package/storybook-static/assets/Badge-Cr7bAbxa.css +1 -0
  132. package/storybook-static/assets/Badge-Q8iX86Mn.js +139 -0
  133. package/storybook-static/assets/Badge.stories-BEMBzR2f.js +51 -0
  134. package/storybook-static/assets/Button-BN8Cuwsy.css +1 -0
  135. package/storybook-static/assets/Button-BUkCW8Zg.js +12 -0
  136. package/storybook-static/assets/Button-CfX05aoR.js +124 -0
  137. package/storybook-static/assets/Button.stories-BoNLZb6w.js +75 -0
  138. package/storybook-static/assets/CheckBox-B1xm2kwz.css +1 -0
  139. package/storybook-static/assets/CheckBox-CcXGzkSE.js +42 -0
  140. package/storybook-static/assets/CheckBox-DTSi8Yok.js +2 -0
  141. package/storybook-static/assets/CheckBox.module-Hr3mvdAC.js +1 -0
  142. package/storybook-static/assets/CheckBox.stories-Bo53TxC7.js +60 -0
  143. package/storybook-static/assets/Color-KMSTOMOX-Mbprgrbi.js +1 -0
  144. package/storybook-static/assets/ContextMenu-DYlSojIE.js +40 -0
  145. package/storybook-static/assets/ContextMenu.stories-BJr53bsq.js +90 -0
  146. package/storybook-static/assets/DateInput-Bc-MiPp1.css +1 -0
  147. package/storybook-static/assets/DateInput-BrmilavO.js +40 -0
  148. package/storybook-static/assets/DateInput-C72jV86j.js +1 -0
  149. package/storybook-static/assets/DateInput.stories-0hU_T1iZ.js +115 -0
  150. package/storybook-static/assets/DateRangePresetSelect-BklzgpCR.js +3 -0
  151. package/storybook-static/assets/DateRangePresetSelect-C7gJVkMB.js +30 -0
  152. package/storybook-static/assets/DateRangePresetSelect.stories-DQKDcAdP.js +11 -0
  153. package/storybook-static/assets/Detail-BKSBSfTO.css +1 -0
  154. package/storybook-static/assets/Detail-BMu0MY4h.js +40 -0
  155. package/storybook-static/assets/Detail.stories-CgBJjWQd.js +44 -0
  156. package/storybook-static/assets/Dialog-M7Uy3LiO.js +40 -0
  157. package/storybook-static/assets/Dialog.stories-BZ0opvaJ.js +31 -0
  158. package/storybook-static/assets/Disclosure-BXnfHC6v.js +29 -0
  159. package/storybook-static/assets/Disclosure-zNgXNDkm.css +1 -0
  160. package/storybook-static/assets/Disclosure.stories-C7wh6KJU.js +35 -0
  161. package/storybook-static/assets/DocsRenderer-JROSPFPF-BjXFJaat.js +2 -0
  162. package/storybook-static/assets/DropZone-C7HIN5ml.css +1 -0
  163. package/storybook-static/assets/DropZone-cd1aCNT1.js +36 -0
  164. package/storybook-static/assets/DropZone.stories-CVu731Lk.js +44 -0
  165. package/storybook-static/assets/DropdownMenu-B97Ad5Dg.js +1 -0
  166. package/storybook-static/assets/DropdownMenu-BgzIzwzM.css +1 -0
  167. package/storybook-static/assets/ExpandableActionPanel-D7q9two4.css +1 -0
  168. package/storybook-static/assets/ExpandableActionPanel.stories-k-eTxMyV.js +20 -0
  169. package/storybook-static/assets/Flex-BQkqAqL5.js +61 -0
  170. package/storybook-static/assets/Flex-C_VnI9xY.js +3 -0
  171. package/storybook-static/assets/Flex-IXK2se1Y.css +1 -0
  172. package/storybook-static/assets/Flex.stories-C1VO9Ct3.js +300 -0
  173. package/storybook-static/assets/Grid-Dr3BuEgd.js +61 -0
  174. package/storybook-static/assets/Grid-K9R_IHaw.css +1 -0
  175. package/storybook-static/assets/Grid-y8wKyEwc.js +163 -0
  176. package/storybook-static/assets/Grid.stories-6WUp6Tof.js +495 -0
  177. package/storybook-static/assets/Input-B7DWcGCL.js +3 -0
  178. package/storybook-static/assets/Input-BioMOZju.css +1 -0
  179. package/storybook-static/assets/Input-yly8wxYE.js +39 -0
  180. package/storybook-static/assets/Input.stories-CkVqvY-C.js +38 -0
  181. package/storybook-static/assets/InputDateTime-Cv8gmBe0.css +1 -0
  182. package/storybook-static/assets/InputDateTime-DHirw8rp.js +39 -0
  183. package/storybook-static/assets/InputDateTime.stories-Dci_81MA.js +35 -0
  184. package/storybook-static/assets/InputFile-DBFfWIkJ.js +37 -0
  185. package/storybook-static/assets/InputFile-hNjZ_wlG.css +1 -0
  186. package/storybook-static/assets/InputFile.stories-Bar27dP5.js +36 -0
  187. package/storybook-static/assets/InputFiles-ByK52qUe.css +1 -0
  188. package/storybook-static/assets/InputFiles-DPz7PiOC.js +1 -0
  189. package/storybook-static/assets/InputFiles-tULKp1KR.js +37 -0
  190. package/storybook-static/assets/InputFiles.stories-CkZ8et32.js +33 -0
  191. package/storybook-static/assets/InputImage-C-pnIXhT.css +1 -0
  192. package/storybook-static/assets/InputImage-D8VckxKl.js +37 -0
  193. package/storybook-static/assets/InputImage.stories-Dq8ORce3.js +51 -0
  194. package/storybook-static/assets/LayoutPicker-9tLTatHF.css +1 -0
  195. package/storybook-static/assets/LayoutPicker-l3XFAkqv.js +65 -0
  196. package/storybook-static/assets/LayoutPicker.stories-BjUmm2cg.js +449 -0
  197. package/storybook-static/assets/Listbox-B_6QVPAJ.js +38 -0
  198. package/storybook-static/assets/Listbox.stories-Cf_ApbmT.js +47 -0
  199. package/storybook-static/assets/Modal-BL_cTIW7.css +1 -0
  200. package/storybook-static/assets/Modal-BzienAaa.js +54 -0
  201. package/storybook-static/assets/Modal.stories-cPIHRa9a.js +180 -0
  202. package/storybook-static/assets/MultiSelect-CK2D25RA.js +56 -0
  203. package/storybook-static/assets/MultiSelect-CUQV67Ev.css +1 -0
  204. package/storybook-static/assets/MultiSelect-CjGBd2pC.js +2 -0
  205. package/storybook-static/assets/MultiSelect.stories--f_FoBzR.js +29 -0
  206. package/storybook-static/assets/NotificationsHost-D5Pvn4eu.css +1 -0
  207. package/storybook-static/assets/NotificationsHost-DKmlmqh0.js +44 -0
  208. package/storybook-static/assets/NotificationsHost.stories-1bPUJXfm.js +25 -0
  209. package/storybook-static/assets/ODataMultiSelect-BWUXuzlr.js +53 -0
  210. package/storybook-static/assets/ODataMultiSelect.stories-DA0f6SUG.js +73 -0
  211. package/storybook-static/assets/ODataSelect-D7GAFOcM.js +1 -0
  212. package/storybook-static/assets/ODataSelect-aNdHSjo_.js +52 -0
  213. package/storybook-static/assets/ODataSelect.stories-CjXA9Y9l.js +73 -0
  214. package/storybook-static/assets/ODataTreeMultiSelect-DKodulQ8.js +17 -0
  215. package/storybook-static/assets/ODataTreeMultiSelect.stories-BjRcb4W0.js +24 -0
  216. package/storybook-static/assets/ODataTreeSelect-Ck8HCh74.js +16 -0
  217. package/storybook-static/assets/ODataTreeSelect.stories-BgDj08mH.js +21 -0
  218. package/storybook-static/assets/PeriodSelect-Db7QmUfi.js +35 -0
  219. package/storybook-static/assets/PeriodSelect.stories-BI6yLRCK.js +23 -0
  220. package/storybook-static/assets/Popover-DR-r8iC5.js +45 -0
  221. package/storybook-static/assets/Popover.stories-ReRFMWiO.js +69 -0
  222. package/storybook-static/assets/PresetRangeDateInput-tSpiPAT9.js +31 -0
  223. package/storybook-static/assets/PresetRangeDateInput.stories-LVQa2_DG.js +15 -0
  224. package/storybook-static/assets/RadioButton-C-RjN-wY.css +1 -0
  225. package/storybook-static/assets/RadioButton-sEzdlL1y.js +38 -0
  226. package/storybook-static/assets/RadioButton.stories-CR0km0zF.js +36 -0
  227. package/storybook-static/assets/RadioGroup-BtNCd3Je.js +1 -0
  228. package/storybook-static/assets/RadioGroup-D-J7t20C.css +1 -0
  229. package/storybook-static/assets/RadioGroup-DR0H6Z0w.js +42 -0
  230. package/storybook-static/assets/RadioGroup.stories-FEqmkrs7.js +42 -0
  231. package/storybook-static/assets/Select-CO4ZHP9h.css +1 -0
  232. package/storybook-static/assets/Select-CUAevk01.js +57 -0
  233. package/storybook-static/assets/Select-DYVS7SCZ.js +9 -0
  234. package/storybook-static/assets/Select.stories-Df_c0IfC.js +37 -0
  235. package/storybook-static/assets/SelectOptionContent-B7W0Mned.js +1 -0
  236. package/storybook-static/assets/SerializableSelect-D63xBqOT.js +48 -0
  237. package/storybook-static/assets/SerializableSelect-DwCnuBgv.js +4 -0
  238. package/storybook-static/assets/SerializableSelect.stories-BLPXVOtP.js +43 -0
  239. package/storybook-static/assets/SingleDateTimeInput-mOllNfg2.css +1 -0
  240. package/storybook-static/assets/SingleDateTimeInput-xMkDodYz.js +53 -0
  241. package/storybook-static/assets/SingleDateTimeInput.stories-kcuSwx76.js +78 -0
  242. package/storybook-static/assets/Slider-BHZgpCjC.js +63 -0
  243. package/storybook-static/assets/Slider.stories-Bias_Soq.js +77 -0
  244. package/storybook-static/assets/SliderInput-jzFZcWr7.js +58 -0
  245. package/storybook-static/assets/SliderInput.stories-B7w8bp86.js +67 -0
  246. package/storybook-static/assets/Sortable-DcmDaPBw.js +72 -0
  247. package/storybook-static/assets/Sortable.stories-CwhHGCih.js +141 -0
  248. package/storybook-static/assets/Splitter-Bn7AJiD_.js +83 -0
  249. package/storybook-static/assets/Splitter-D-LmmQad.css +1 -0
  250. package/storybook-static/assets/Splitter.stories-CSvjKF-O.js +22 -0
  251. package/storybook-static/assets/StateSelect-MIGiXD10.js +36 -0
  252. package/storybook-static/assets/StateSelect-pIMkhj9A.css +1 -0
  253. package/storybook-static/assets/StateSelect.stories-BGDCnVqb.js +47 -0
  254. package/storybook-static/assets/Switch-C5zxOq_O.js +36 -0
  255. package/storybook-static/assets/Switch-DGYGWtPw.css +1 -0
  256. package/storybook-static/assets/Switch.stories-BmCl_Ts5.js +26 -0
  257. package/storybook-static/assets/Table-BGvRn9y0.css +1 -0
  258. package/storybook-static/assets/Table-CoySXvs5.js +197 -0
  259. package/storybook-static/assets/Table.stories-CA7ARhwC.js +122 -0
  260. package/storybook-static/assets/Tabs-BLkTB6pp.css +1 -0
  261. package/storybook-static/assets/Tabs-CQdzU18E.js +72 -0
  262. package/storybook-static/assets/Tabs.stories-SBWTpiy2.js +58 -0
  263. package/storybook-static/assets/Textarea-Bo-I0cnE.js +37 -0
  264. package/storybook-static/assets/Textarea-CPNMR88I.css +1 -0
  265. package/storybook-static/assets/Textarea.stories-C1wO9PKR.js +27 -0
  266. package/storybook-static/assets/TimePanel-0-mzaXky.js +1 -0
  267. package/storybook-static/assets/TimePanel-Bh98qsCo.css +1 -0
  268. package/storybook-static/assets/TimePanel.stories-C1VM13qN.js +25 -0
  269. package/storybook-static/assets/Toggle-B9H63WWC.js +37 -0
  270. package/storybook-static/assets/Toggle-DHulCX3T.css +1 -0
  271. package/storybook-static/assets/Toggle.stories-CKlGFcZW.js +30 -0
  272. package/storybook-static/assets/TreeMultiSelect-AXIl2Ge2.js +15 -0
  273. package/storybook-static/assets/TreeMultiSelect-Ci3bUpmv.js +1 -0
  274. package/storybook-static/assets/TreeMultiSelect.stories-CXGt4Q_u.js +14 -0
  275. package/storybook-static/assets/TreePickerBase-Md6Mt9qF.js +19 -0
  276. package/storybook-static/assets/TreePickerBase-qreyVjhY.css +1 -0
  277. package/storybook-static/assets/TreeSelect-BWoURakw.js +15 -0
  278. package/storybook-static/assets/TreeSelect-bOgRYtQQ.js +1 -0
  279. package/storybook-static/assets/TreeSelect.stories-By0h6wRi.js +16 -0
  280. package/storybook-static/assets/TreeTable--ZoksUiw.css +1 -0
  281. package/storybook-static/assets/TreeTable-C52Jh7O_.js +175 -0
  282. package/storybook-static/assets/TreeTable.stories-BH9Q8NPP.js +83 -0
  283. package/storybook-static/assets/WithTooltip-7X4HQR7L-DQXHhZoH.js +9 -0
  284. package/storybook-static/assets/axe-GLfyhAYL.js +20 -0
  285. package/storybook-static/assets/base-table-BNO0lnTL.css +1 -0
  286. package/storybook-static/assets/base-table-BSkQBgdx.js +18 -0
  287. package/storybook-static/assets/blocks-CwEU-ME1.js +285 -0
  288. package/storybook-static/assets/button-Bl3Hu8CS.js +1 -0
  289. package/storybook-static/assets/check-box-BrnNQnSi.js +1 -0
  290. package/storybook-static/assets/chunk-242VQQM5-Dtm7LRbQ.js +1 -0
  291. package/storybook-static/assets/chunk-3LY4VQVK-BxHCYS2R.js +6 -0
  292. package/storybook-static/assets/chunk-LITCR56V-euffoZAN.js +18 -0
  293. package/storybook-static/assets/contextMenu-Do6qEwKB.js +2 -0
  294. package/storybook-static/assets/date-segments-CzU9k5bl.js +1 -0
  295. package/storybook-static/assets/error-RVOk7zpw.js +1 -0
  296. package/storybook-static/assets/file-hArYcyES.js +1 -0
  297. package/storybook-static/assets/flex-DuYzsEBQ.js +1 -0
  298. package/storybook-static/assets/floating-ui.react-BR04wkLx.js +1 -0
  299. package/storybook-static/assets/formatter-L2YTDE3Q-Cdp-Jp2M.js +1 -0
  300. package/storybook-static/assets/formatters-yIBztcem.js +3 -0
  301. package/storybook-static/assets/grid-D0WOuGlB.js +1 -0
  302. package/storybook-static/assets/hooks-BEB2Gqy0.js +5 -0
  303. package/storybook-static/assets/iframe-SfMJGCsn.js +1117 -0
  304. package/storybook-static/assets/input-Be5K9_B7.js +1 -0
  305. package/storybook-static/assets/jsx-runtime-BBQGix-2.js +1 -0
  306. package/storybook-static/assets/lucide-react-CK2oyDtF.js +1 -0
  307. package/storybook-static/assets/matchers-JIUQ3HVY-BPS-eazD.js +28 -0
  308. package/storybook-static/assets/mdx-react-shim-DnKFgFHy.js +1 -0
  309. package/storybook-static/assets/media-Djn0SUaN.js +1 -0
  310. package/storybook-static/assets/misc-CPvLzCFJ.js +5 -0
  311. package/storybook-static/assets/misc-CerLA5Xh.css +1 -0
  312. package/storybook-static/assets/notifications-Zk996KvR.js +1 -0
  313. package/storybook-static/assets/odata-C2BNbnc9.js +1 -0
  314. package/storybook-static/assets/odata-service-8sDCOQ3I.js +1 -0
  315. package/storybook-static/assets/odataStoryFixtures-BBfdskiC.js +25 -0
  316. package/storybook-static/assets/picker-BmTTr59E.css +1 -0
  317. package/storybook-static/assets/picker-De4ZbESe.js +1 -0
  318. package/storybook-static/assets/popover-BiQHI7Wi.css +1 -0
  319. package/storybook-static/assets/popover-DWA5VOMQ.js +2 -0
  320. package/storybook-static/assets/preload-helper-B45gAKPr.js +1 -0
  321. package/storybook-static/assets/preset-select-DozCGhmu.js +5 -0
  322. package/storybook-static/assets/react-18-CfpYK14y.js +9 -0
  323. package/storybook-static/assets/react-BWN-5oQj.js +9 -0
  324. package/storybook-static/assets/react-dom-CncQzc_h.js +1 -0
  325. package/storybook-static/assets/select-BPvMbVDe.js +1 -0
  326. package/storybook-static/assets/slider-39Mty47U.js +2 -0
  327. package/storybook-static/assets/slider-DMDFRH6B.css +1 -0
  328. package/storybook-static/assets/sortable-CgCCp3dq.js +1 -0
  329. package/storybook-static/assets/sortable-DiBavgm0.css +1 -0
  330. package/storybook-static/assets/syntaxhighlighter-RTCFPKCB-Di6cCrDX.js +6 -0
  331. package/storybook-static/assets/text-BxA8yj6Z.js +4 -0
  332. package/storybook-static/assets/theming-DZauqOKI.js +39 -0
  333. package/storybook-static/assets/treeStoryFixtures-Cd984L7t.js +1 -0
  334. package/storybook-static/assets/ui-CmVy0trY.js +1 -0
  335. package/storybook-static/assets/ui-ZWM9zG1I.css +1 -0
  336. package/storybook-static/assets/ui.module-DS2qtZts.js +1 -0
  337. package/storybook-static/assets/uiClasses-CZ_HVS3Y.js +1 -0
  338. package/storybook-static/assets/useODataSelectBase-D33B4x2W.js +1 -0
  339. package/storybook-static/assets/useODataTreeData-CDdzN-LC.js +1 -0
  340. package/storybook-static/assets/utils-CReRlw17.js +1 -0
  341. package/storybook-static/favicon-wrapper.svg +46 -0
  342. package/storybook-static/favicon.svg +1 -0
  343. package/storybook-static/iframe.html +709 -0
  344. package/storybook-static/index.html +146 -0
  345. package/storybook-static/index.json +1 -0
  346. package/storybook-static/nunito-sans-bold-italic.woff2 +0 -0
  347. package/storybook-static/nunito-sans-bold.woff2 +0 -0
  348. package/storybook-static/nunito-sans-italic.woff2 +0 -0
  349. package/storybook-static/nunito-sans-regular.woff2 +0 -0
  350. package/storybook-static/project.json +1 -0
  351. package/storybook-static/sb-addons/a11y-2/manager-bundle.js +57 -0
  352. package/storybook-static/sb-addons/docs-1/manager-bundle.js +3 -0
  353. package/storybook-static/sb-addons/storybook-core-server-presets-0/common-manager-bundle.js +630 -0
  354. package/storybook-static/sb-common-assets/favicon-wrapper.svg +46 -0
  355. package/storybook-static/sb-common-assets/favicon.svg +1 -0
  356. package/storybook-static/sb-common-assets/nunito-sans-bold-italic.woff2 +0 -0
  357. package/storybook-static/sb-common-assets/nunito-sans-bold.woff2 +0 -0
  358. package/storybook-static/sb-common-assets/nunito-sans-italic.woff2 +0 -0
  359. package/storybook-static/sb-common-assets/nunito-sans-regular.woff2 +0 -0
  360. package/storybook-static/sb-manager/globals-runtime.js +76714 -0
  361. package/storybook-static/sb-manager/globals.js +24 -0
  362. package/storybook-static/sb-manager/manager-stores.js +23 -0
  363. package/storybook-static/sb-manager/runtime.js +27451 -0
  364. package/storybook-static/vite-inject-mocker-entry.js +2 -0
  365. package/dist/badge/stories/Badge.stories.d.ts +0 -54
  366. package/dist/badge/stories/Badge.stories.d.ts.map +0 -1
  367. package/dist/badge/stories/Badge.stories.js +0 -147
  368. package/dist/badge/stories/Badge.stories.js.map +0 -1
  369. package/dist/button/index.js.map +0 -1
  370. package/dist/button/stories/Button.stories.d.ts +0 -69
  371. package/dist/button/stories/Button.stories.d.ts.map +0 -1
  372. package/dist/button/stories/Button.stories.js +0 -223
  373. package/dist/button/stories/Button.stories.js.map +0 -1
  374. package/dist/check-box/stories/CheckBox.stories.d.ts +0 -58
  375. package/dist/check-box/stories/CheckBox.stories.d.ts.map +0 -1
  376. package/dist/check-box/stories/CheckBox.stories.js +0 -150
  377. package/dist/check-box/stories/CheckBox.stories.js.map +0 -1
  378. package/dist/chunks/BadgeList-DYgun2rf.js.map +0 -1
  379. package/dist/chunks/Button-CCWuggdA.js +0 -55
  380. package/dist/chunks/Button-CCWuggdA.js.map +0 -1
  381. package/dist/chunks/CheckBox-BowNqqd3.js.map +0 -1
  382. package/dist/chunks/DateInput-CaKGXluL.js.map +0 -1
  383. package/dist/chunks/DateRangePresetSelect-UgsfaOeM.js.map +0 -1
  384. package/dist/chunks/Detail-DHDMsg8q.js +0 -80
  385. package/dist/chunks/Detail-DHDMsg8q.js.map +0 -1
  386. package/dist/chunks/Dialog-CFIvGxER.js +0 -50
  387. package/dist/chunks/Dialog-CFIvGxER.js.map +0 -1
  388. package/dist/chunks/DisclosureGroup-CfRTkl6Z.js +0 -49
  389. package/dist/chunks/DisclosureGroup-CfRTkl6Z.js.map +0 -1
  390. package/dist/chunks/DropZone-DdFdnC9X.js +0 -98
  391. package/dist/chunks/DropZone-DdFdnC9X.js.map +0 -1
  392. package/dist/chunks/DropdownMenu-DQeR3y7M.js.map +0 -1
  393. package/dist/chunks/Input-BYUl3UFn.js.map +0 -1
  394. package/dist/chunks/InputDateTime-DBkWb0lk.js +0 -258
  395. package/dist/chunks/InputDateTime-DBkWb0lk.js.map +0 -1
  396. package/dist/chunks/InputFile-Bo3CN73O.js +0 -105
  397. package/dist/chunks/InputFile-Bo3CN73O.js.map +0 -1
  398. package/dist/chunks/InputFiles-gIxOPv5y.js.map +0 -1
  399. package/dist/chunks/InputImage-k4l1J_tm.js +0 -100
  400. package/dist/chunks/InputImage-k4l1J_tm.js.map +0 -1
  401. package/dist/chunks/LabeledExpandableActionPanel-D3kUvmFH.js +0 -82
  402. package/dist/chunks/LabeledExpandableActionPanel-D3kUvmFH.js.map +0 -1
  403. package/dist/chunks/Listbox-BZlp5qHz.js +0 -81
  404. package/dist/chunks/Listbox-BZlp5qHz.js.map +0 -1
  405. package/dist/chunks/MultiSelect-B0nfMSpS.js +0 -422
  406. package/dist/chunks/MultiSelect-B0nfMSpS.js.map +0 -1
  407. package/dist/chunks/NotificationsHost-_icJx4xR.js +0 -151
  408. package/dist/chunks/NotificationsHost-_icJx4xR.js.map +0 -1
  409. package/dist/chunks/PresetRangeDateInput-C5HqkOCG.js +0 -53
  410. package/dist/chunks/PresetRangeDateInput-C5HqkOCG.js.map +0 -1
  411. package/dist/chunks/RadioButton-D0uA0rX_.js +0 -48
  412. package/dist/chunks/RadioButton-D0uA0rX_.js.map +0 -1
  413. package/dist/chunks/RadioGroup-B9XjkcOy.js.map +0 -1
  414. package/dist/chunks/Select-B6kxgxK2.js +0 -182
  415. package/dist/chunks/Select-B6kxgxK2.js.map +0 -1
  416. package/dist/chunks/SelectOptionContent-CI7wq9Oi.js +0 -27
  417. package/dist/chunks/SelectOptionContent-CI7wq9Oi.js.map +0 -1
  418. package/dist/chunks/SerializableSelect-CVGFjCGK.js +0 -33
  419. package/dist/chunks/SerializableSelect-CVGFjCGK.js.map +0 -1
  420. package/dist/chunks/SingleDateTimeInput-D2fDMQnI.js +0 -331
  421. package/dist/chunks/SingleDateTimeInput-D2fDMQnI.js.map +0 -1
  422. package/dist/chunks/Splitter-BFkVGVRb.js +0 -168
  423. package/dist/chunks/Splitter-BFkVGVRb.js.map +0 -1
  424. package/dist/chunks/StateSelect-CEp7kGGg.js +0 -78
  425. package/dist/chunks/StateSelect-CEp7kGGg.js.map +0 -1
  426. package/dist/chunks/Switch-B57Qmy1z.js +0 -81
  427. package/dist/chunks/Switch-B57Qmy1z.js.map +0 -1
  428. package/dist/chunks/Textarea-T8gXua35.js +0 -44
  429. package/dist/chunks/Textarea-T8gXua35.js.map +0 -1
  430. package/dist/chunks/TimePanel-b4saqoUY.js +0 -135
  431. package/dist/chunks/TimePanel-b4saqoUY.js.map +0 -1
  432. package/dist/chunks/Toggle-DVqOQXmt.js +0 -73
  433. package/dist/chunks/Toggle-DVqOQXmt.js.map +0 -1
  434. package/dist/chunks/TreeMultiSelect-BcPr2Phe.js +0 -40
  435. package/dist/chunks/TreeMultiSelect-BcPr2Phe.js.map +0 -1
  436. package/dist/chunks/TreePickerBase-ClXn2q3u.js +0 -423
  437. package/dist/chunks/TreePickerBase-ClXn2q3u.js.map +0 -1
  438. package/dist/chunks/TreeSelect-DYWkgryS.js +0 -37
  439. package/dist/chunks/TreeSelect-DYWkgryS.js.map +0 -1
  440. package/dist/chunks/layout-picker-C1sizRYa.js +0 -1171
  441. package/dist/chunks/layout-picker-C1sizRYa.js.map +0 -1
  442. package/dist/chunks/multi-select-DCY3fonG.js +0 -126
  443. package/dist/chunks/multi-select-DCY3fonG.js.map +0 -1
  444. package/dist/chunks/odata-DSW7z3nh.js.map +0 -1
  445. package/dist/chunks/select-Di99RAVO.js +0 -81
  446. package/dist/chunks/select-Di99RAVO.js.map +0 -1
  447. package/dist/chunks/slider-BqeYbdrg.js +0 -695
  448. package/dist/chunks/slider-BqeYbdrg.js.map +0 -1
  449. package/dist/chunks/tabs-DlnVVMJl.js +0 -384
  450. package/dist/chunks/tabs-DlnVVMJl.js.map +0 -1
  451. package/dist/chunks/treeStoryFixtures-Bhm3Gdky.js +0 -113
  452. package/dist/chunks/treeStoryFixtures-Bhm3Gdky.js.map +0 -1
  453. package/dist/context-menu/stories/ContextMenu.stories.d.ts +0 -16
  454. package/dist/context-menu/stories/ContextMenu.stories.d.ts.map +0 -1
  455. package/dist/context-menu/stories/ContextMenu.stories.js +0 -136
  456. package/dist/context-menu/stories/ContextMenu.stories.js.map +0 -1
  457. package/dist/date-input/stories/DateInput.stories.d.ts +0 -132
  458. package/dist/date-input/stories/DateInput.stories.d.ts.map +0 -1
  459. package/dist/date-input/stories/DateInput.stories.js +0 -247
  460. package/dist/date-input/stories/DateInput.stories.js.map +0 -1
  461. package/dist/date-range-preset-select/stories/DateRangePresetSelect.stories.d.ts +0 -22
  462. package/dist/date-range-preset-select/stories/DateRangePresetSelect.stories.d.ts.map +0 -1
  463. package/dist/date-range-preset-select/stories/DateRangePresetSelect.stories.js +0 -41
  464. package/dist/date-range-preset-select/stories/DateRangePresetSelect.stories.js.map +0 -1
  465. package/dist/date-time-input/stories/SingleDateTimeInput.stories.d.ts +0 -95
  466. package/dist/date-time-input/stories/SingleDateTimeInput.stories.d.ts.map +0 -1
  467. package/dist/date-time-input/stories/SingleDateTimeInput.stories.js +0 -195
  468. package/dist/date-time-input/stories/SingleDateTimeInput.stories.js.map +0 -1
  469. package/dist/date-time-input/stories/TimePanel.stories.d.ts +0 -26
  470. package/dist/date-time-input/stories/TimePanel.stories.d.ts.map +0 -1
  471. package/dist/date-time-input/stories/TimePanel.stories.js +0 -53
  472. package/dist/date-time-input/stories/TimePanel.stories.js.map +0 -1
  473. package/dist/detail/stories/Detail.stories.d.ts +0 -67
  474. package/dist/detail/stories/Detail.stories.d.ts.map +0 -1
  475. package/dist/detail/stories/Detail.stories.js +0 -170
  476. package/dist/detail/stories/Detail.stories.js.map +0 -1
  477. package/dist/dialog/stories/Dialog.stories.d.ts +0 -50
  478. package/dist/dialog/stories/Dialog.stories.d.ts.map +0 -1
  479. package/dist/dialog/stories/Dialog.stories.js +0 -89
  480. package/dist/dialog/stories/Dialog.stories.js.map +0 -1
  481. package/dist/disclosure/stories/Disclosure.stories.d.ts +0 -35
  482. package/dist/disclosure/stories/Disclosure.stories.d.ts.map +0 -1
  483. package/dist/disclosure/stories/Disclosure.stories.js +0 -70
  484. package/dist/disclosure/stories/Disclosure.stories.js.map +0 -1
  485. package/dist/drop-zone/stories/DropZone.stories.d.ts +0 -63
  486. package/dist/drop-zone/stories/DropZone.stories.d.ts.map +0 -1
  487. package/dist/drop-zone/stories/DropZone.stories.js +0 -97
  488. package/dist/drop-zone/stories/DropZone.stories.js.map +0 -1
  489. package/dist/expandable-action-panel/stories/ExpandableActionPanel.stories.d.ts +0 -44
  490. package/dist/expandable-action-panel/stories/ExpandableActionPanel.stories.d.ts.map +0 -1
  491. package/dist/expandable-action-panel/stories/ExpandableActionPanel.stories.js +0 -117
  492. package/dist/expandable-action-panel/stories/ExpandableActionPanel.stories.js.map +0 -1
  493. package/dist/flex/index.js.map +0 -1
  494. package/dist/flex/stories/Flex.stories.d.ts +0 -24
  495. package/dist/flex/stories/Flex.stories.d.ts.map +0 -1
  496. package/dist/flex/stories/Flex.stories.js +0 -607
  497. package/dist/flex/stories/Flex.stories.js.map +0 -1
  498. package/dist/grid/stories/Grid.stories.d.ts +0 -24
  499. package/dist/grid/stories/Grid.stories.d.ts.map +0 -1
  500. package/dist/grid/stories/Grid.stories.js +0 -840
  501. package/dist/grid/stories/Grid.stories.js.map +0 -1
  502. package/dist/input/index.js.map +0 -1
  503. package/dist/input/stories/Input.stories.d.ts +0 -69
  504. package/dist/input/stories/Input.stories.d.ts.map +0 -1
  505. package/dist/input/stories/Input.stories.js +0 -132
  506. package/dist/input/stories/Input.stories.js.map +0 -1
  507. package/dist/input-date-time/stories/InputDateTime.stories.d.ts +0 -69
  508. package/dist/input-date-time/stories/InputDateTime.stories.d.ts.map +0 -1
  509. package/dist/input-date-time/stories/InputDateTime.stories.js +0 -125
  510. package/dist/input-date-time/stories/InputDateTime.stories.js.map +0 -1
  511. package/dist/input-file/stories/InputFile.stories.d.ts +0 -85
  512. package/dist/input-file/stories/InputFile.stories.d.ts.map +0 -1
  513. package/dist/input-file/stories/InputFile.stories.js +0 -158
  514. package/dist/input-file/stories/InputFile.stories.js.map +0 -1
  515. package/dist/input-files/stories/InputFiles.stories.d.ts +0 -86
  516. package/dist/input-files/stories/InputFiles.stories.d.ts.map +0 -1
  517. package/dist/input-files/stories/InputFiles.stories.js +0 -158
  518. package/dist/input-files/stories/InputFiles.stories.js.map +0 -1
  519. package/dist/input-image/stories/InputImage.stories.d.ts +0 -81
  520. package/dist/input-image/stories/InputImage.stories.d.ts.map +0 -1
  521. package/dist/input-image/stories/InputImage.stories.js +0 -174
  522. package/dist/input-image/stories/InputImage.stories.js.map +0 -1
  523. package/dist/layout-picker/stories/LayoutPicker.stories.d.ts +0 -873
  524. package/dist/layout-picker/stories/LayoutPicker.stories.d.ts.map +0 -1
  525. package/dist/layout-picker/stories/LayoutPicker.stories.js +0 -422
  526. package/dist/layout-picker/stories/LayoutPicker.stories.js.map +0 -1
  527. package/dist/listbox/stories/Listbox.stories.d.ts +0 -76
  528. package/dist/listbox/stories/Listbox.stories.d.ts.map +0 -1
  529. package/dist/listbox/stories/Listbox.stories.js +0 -140
  530. package/dist/listbox/stories/Listbox.stories.js.map +0 -1
  531. package/dist/modal/stories/Modal.stories.d.ts +0 -74
  532. package/dist/modal/stories/Modal.stories.d.ts.map +0 -1
  533. package/dist/modal/stories/Modal.stories.js +0 -320
  534. package/dist/modal/stories/Modal.stories.js.map +0 -1
  535. package/dist/multi-select/ui/stories/MultiSelect.stories.d.ts +0 -67
  536. package/dist/multi-select/ui/stories/MultiSelect.stories.d.ts.map +0 -1
  537. package/dist/multi-select/ui/stories/MultiSelect.stories.js +0 -114
  538. package/dist/multi-select/ui/stories/MultiSelect.stories.js.map +0 -1
  539. package/dist/multi-select/ui/stories/ODataMultiSelect.stories.d.ts +0 -44
  540. package/dist/multi-select/ui/stories/ODataMultiSelect.stories.d.ts.map +0 -1
  541. package/dist/notifications/ui/stories/NotificationsHost.stories.d.ts +0 -21
  542. package/dist/notifications/ui/stories/NotificationsHost.stories.d.ts.map +0 -1
  543. package/dist/notifications/ui/stories/NotificationsHost.stories.js +0 -326
  544. package/dist/notifications/ui/stories/NotificationsHost.stories.js.map +0 -1
  545. package/dist/period-select/stories/PeriodSelect.stories.d.ts +0 -96
  546. package/dist/period-select/stories/PeriodSelect.stories.d.ts.map +0 -1
  547. package/dist/period-select/stories/PeriodSelect.stories.js +0 -166
  548. package/dist/period-select/stories/PeriodSelect.stories.js.map +0 -1
  549. package/dist/popover/stories/Popover.stories.d.ts +0 -10
  550. package/dist/popover/stories/Popover.stories.d.ts.map +0 -1
  551. package/dist/popover/stories/Popover.stories.js +0 -75
  552. package/dist/popover/stories/Popover.stories.js.map +0 -1
  553. package/dist/preset-range-date-input/ui/stories/PresetRangeDateInput.stories.d.ts +0 -22
  554. package/dist/preset-range-date-input/ui/stories/PresetRangeDateInput.stories.d.ts.map +0 -1
  555. package/dist/preset-range-date-input/ui/stories/PresetRangeDateInput.stories.js +0 -45
  556. package/dist/preset-range-date-input/ui/stories/PresetRangeDateInput.stories.js.map +0 -1
  557. package/dist/radio-button/stories/RadioButton.stories.d.ts +0 -60
  558. package/dist/radio-button/stories/RadioButton.stories.d.ts.map +0 -1
  559. package/dist/radio-button/stories/RadioButton.stories.js +0 -121
  560. package/dist/radio-button/stories/RadioButton.stories.js.map +0 -1
  561. package/dist/radio-group/stories/RadioGroup.stories.d.ts +0 -74
  562. package/dist/radio-group/stories/RadioGroup.stories.d.ts.map +0 -1
  563. package/dist/radio-group/stories/RadioGroup.stories.js +0 -146
  564. package/dist/radio-group/stories/RadioGroup.stories.js.map +0 -1
  565. package/dist/select/stories/ODataSelect.stories.d.ts +0 -46
  566. package/dist/select/stories/ODataSelect.stories.d.ts.map +0 -1
  567. package/dist/select/stories/Select.stories.d.ts +0 -127
  568. package/dist/select/stories/Select.stories.d.ts.map +0 -1
  569. package/dist/select/stories/Select.stories.js +0 -214
  570. package/dist/select/stories/Select.stories.js.map +0 -1
  571. package/dist/select/stories/SerializableSelect.stories.d.ts +0 -91
  572. package/dist/select/stories/SerializableSelect.stories.d.ts.map +0 -1
  573. package/dist/select/stories/SerializableSelect.stories.js +0 -165
  574. package/dist/select/stories/SerializableSelect.stories.js.map +0 -1
  575. package/dist/select/stories/odataStoryCollection.d.ts +0 -2
  576. package/dist/select/stories/odataStoryCollection.d.ts.map +0 -1
  577. package/dist/select/stories/odataStoryFixtures.d.ts +0 -35
  578. package/dist/select/stories/odataStoryFixtures.d.ts.map +0 -1
  579. package/dist/slider/stories/Slider.stories.d.ts +0 -29
  580. package/dist/slider/stories/Slider.stories.d.ts.map +0 -1
  581. package/dist/slider/stories/Slider.stories.js +0 -310
  582. package/dist/slider/stories/Slider.stories.js.map +0 -1
  583. package/dist/slider/stories/SliderInput.stories.d.ts +0 -30
  584. package/dist/slider/stories/SliderInput.stories.d.ts.map +0 -1
  585. package/dist/slider/stories/SliderInput.stories.js +0 -282
  586. package/dist/slider/stories/SliderInput.stories.js.map +0 -1
  587. package/dist/sortable/stories/Sortable.stories.d.ts +0 -58
  588. package/dist/sortable/stories/Sortable.stories.d.ts.map +0 -1
  589. package/dist/sortable/stories/Sortable.stories.js +0 -255
  590. package/dist/sortable/stories/Sortable.stories.js.map +0 -1
  591. package/dist/splitter/stories/Splitter.stories.d.ts +0 -66
  592. package/dist/splitter/stories/Splitter.stories.d.ts.map +0 -1
  593. package/dist/splitter/stories/Splitter.stories.js +0 -223
  594. package/dist/splitter/stories/Splitter.stories.js.map +0 -1
  595. package/dist/state-select/stories/StateSelect.stories.d.ts +0 -70
  596. package/dist/state-select/stories/StateSelect.stories.d.ts.map +0 -1
  597. package/dist/state-select/stories/StateSelect.stories.js +0 -145
  598. package/dist/state-select/stories/StateSelect.stories.js.map +0 -1
  599. package/dist/switch/stories/Switch.stories.d.ts +0 -59
  600. package/dist/switch/stories/Switch.stories.d.ts.map +0 -1
  601. package/dist/switch/stories/Switch.stories.js +0 -90
  602. package/dist/switch/stories/Switch.stories.js.map +0 -1
  603. package/dist/table/stories/Table.stories.d.ts +0 -155
  604. package/dist/table/stories/Table.stories.d.ts.map +0 -1
  605. package/dist/tabs/stories/Tabs.stories.d.ts +0 -94
  606. package/dist/tabs/stories/Tabs.stories.d.ts.map +0 -1
  607. package/dist/tabs/stories/Tabs.stories.js +0 -283
  608. package/dist/tabs/stories/Tabs.stories.js.map +0 -1
  609. package/dist/textarea/stories/Textarea.stories.d.ts +0 -64
  610. package/dist/textarea/stories/Textarea.stories.d.ts.map +0 -1
  611. package/dist/textarea/stories/Textarea.stories.js +0 -98
  612. package/dist/textarea/stories/Textarea.stories.js.map +0 -1
  613. package/dist/toggle/stories/Toggle.stories.d.ts +0 -61
  614. package/dist/toggle/stories/Toggle.stories.d.ts.map +0 -1
  615. package/dist/toggle/stories/Toggle.stories.js +0 -102
  616. package/dist/toggle/stories/Toggle.stories.js.map +0 -1
  617. package/dist/tree-select/stories/ODataTreeMultiSelect.stories.d.ts +0 -55
  618. package/dist/tree-select/stories/ODataTreeMultiSelect.stories.d.ts.map +0 -1
  619. package/dist/tree-select/stories/ODataTreeSelect.stories.d.ts +0 -54
  620. package/dist/tree-select/stories/ODataTreeSelect.stories.d.ts.map +0 -1
  621. package/dist/tree-select/stories/TreeMultiSelect.stories.d.ts +0 -35
  622. package/dist/tree-select/stories/TreeMultiSelect.stories.d.ts.map +0 -1
  623. package/dist/tree-select/stories/TreeMultiSelect.stories.js +0 -64
  624. package/dist/tree-select/stories/TreeMultiSelect.stories.js.map +0 -1
  625. package/dist/tree-select/stories/TreeSelect.stories.d.ts +0 -35
  626. package/dist/tree-select/stories/TreeSelect.stories.d.ts.map +0 -1
  627. package/dist/tree-select/stories/TreeSelect.stories.js +0 -66
  628. package/dist/tree-select/stories/TreeSelect.stories.js.map +0 -1
  629. package/dist/tree-select/stories/treeStoryFixtures.d.ts +0 -3
  630. package/dist/tree-select/stories/treeStoryFixtures.d.ts.map +0 -1
  631. package/dist/tree-table/stories/TreeTable.stories.d.ts +0 -158
  632. package/dist/tree-table/stories/TreeTable.stories.d.ts.map +0 -1
  633. package/src/styles/fonts.scss +0 -47
@@ -1,98 +0,0 @@
1
- import { n as e } from "./InputFiles-gIxOPv5y.js";
2
- import { useCallback as t, useMemo as n, useRef as r, useState as i } from "react";
3
- import { cn as a, handleKeyboardActivation as o } from "@ryuzaki13/react-foundation-lib/utils";
4
- import { UploadIcon as s } from "lucide-react";
5
- import { Fragment as c, jsx as l, jsxs as u } from "react/jsx-runtime";
6
- import { ReadFileError as d, assertValidAccept as f, assertValidAllowedMime as p, readFile as m } from "@ryuzaki13/react-foundation-lib/file";
7
- var h = {
8
- zone: "q2D6Pw",
9
- dragOver: "QVgB0d",
10
- disabled: "-nyQKp",
11
- icon: "kY0O9g",
12
- hint: "F5K1bE"
13
- };
14
- //#endregion
15
- //#region src/drop-zone/DropZone.tsx
16
- function g({ value: g, onChange: _, onChangeError: v, accept: y, allowedMime: b, maxBytes: x, readMode: S, multiple: C = !0, disabled: w, className: T, children: E }) {
17
- p(b), f(y);
18
- let D = r(0), O = r(null), [k, A] = i(!1), j = n(() => y && y.length > 0 ? y.join(",") : b && b.length > 0 ? b.join(",") : "*", [b, y]), M = t((e) => S === "array-buffer" ? m(e, {
19
- allowedMime: b,
20
- maxBytes: x,
21
- mode: "array-buffer"
22
- }) : m(e, {
23
- allowedMime: b,
24
- maxBytes: x
25
- }), [
26
- b,
27
- x,
28
- S
29
- ]), N = t(async (e) => {
30
- if (w || e.length === 0) return;
31
- let t = C ? e : e.slice(0, 1), n = [];
32
- for (let e of t) try {
33
- let t = await M(e);
34
- n.push(t);
35
- } catch (e) {
36
- e instanceof d && v && v(e);
37
- }
38
- n.length > 0 && _(n);
39
- }, [
40
- w,
41
- C,
42
- _,
43
- v,
44
- M
45
- ]), P = t(() => {
46
- w || O.current?.click();
47
- }, [w]), F = t((e) => {
48
- e.preventDefault(), e.stopPropagation(), !w && (D.current += 1, D.current === 1 && A(!0));
49
- }, [w]), I = t((e) => {
50
- e.preventDefault(), e.stopPropagation(), !w && (e.dataTransfer.dropEffect = "copy");
51
- }, [w]), L = t((e) => {
52
- e.preventDefault(), e.stopPropagation(), !w && (--D.current, D.current === 0 && A(!1));
53
- }, [w]), R = t(async (e) => {
54
- if (e.preventDefault(), e.stopPropagation(), D.current = 0, A(!1), w) return;
55
- let t = Array.from(e.dataTransfer.files);
56
- await N(t);
57
- }, [w, N]), z = t(async (e) => {
58
- let t = Array.from(e.target.files ?? []);
59
- await N(t), e.target.value = "";
60
- }, [N]), B = t((e) => {
61
- o(e, P, { disabled: w });
62
- }, [w, P]);
63
- return /* @__PURE__ */ u("div", { children: [
64
- /* @__PURE__ */ l("input", {
65
- ref: O,
66
- type: "file",
67
- hidden: !0,
68
- disabled: w,
69
- multiple: C,
70
- accept: j,
71
- onChange: z
72
- }),
73
- /* @__PURE__ */ l("div", {
74
- className: a(h.zone, k && h.dragOver, w && h.disabled, T),
75
- onClick: P,
76
- onKeyDown: B,
77
- onDragEnter: F,
78
- onDragOver: I,
79
- onDragLeave: L,
80
- onDrop: R,
81
- role: "button",
82
- tabIndex: w ? -1 : 0,
83
- "aria-disabled": w,
84
- children: E ?? /* @__PURE__ */ u(c, { children: [/* @__PURE__ */ l(s, { className: h.icon }), /* @__PURE__ */ l("span", {
85
- className: h.hint,
86
- children: C ? "Перетащите файлы сюда или нажмите для выбора" : "Перетащите файл сюда или нажмите для выбора"
87
- })] })
88
- }),
89
- /* @__PURE__ */ l(e, {
90
- files: g,
91
- onChange: _
92
- })
93
- ] });
94
- }
95
- //#endregion
96
- export { g as t };
97
-
98
- //# sourceMappingURL=DropZone-DdFdnC9X.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DropZone-DdFdnC9X.js","names":[],"sources":["../../src/drop-zone/DropZone.module.scss","../../src/drop-zone/DropZone.tsx"],"sourcesContent":[".zone {\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: center;\n\tjustify-content: center;\n\tgap: var(--space-sm);\n\n\tmin-height: 8em;\n\tpadding: var(--space-lg);\n\n\tborder: var(--border-width) dashed var(--border-0);\n\tborder-radius: var(--radius-sm);\n\tbackground-color: var(--surface-0);\n\n\tcolor: var(--content-2);\n\tcursor: pointer;\n\n\ttransition-property: border-color, background-color;\n\ttransition-duration: var(--transition-fast);\n\n\t&.dragOver {\n\t\tborder-color: var(--content-accent);\n\t\tbackground-color: var(--surface-1);\n\t}\n\n\t&.disabled {\n\t\tcursor: default;\n\t\tpointer-events: none;\n\t\tbackground-color: var(--surface-2);\n\t\tborder-color: var(--overlay-backdrop);\n\n\t\t.icon,\n\t\t.hint {\n\t\t\topacity: 0.25;\n\t\t}\n\t}\n}\n\n.icon {\n\twidth: 2em;\n\theight: 2em;\n\tcolor: var(--content-2);\n}\n\n.hint {\n\ttext-align: center;\n}\n","import { ChangeEvent, ReactNode, useCallback, useMemo, useRef, useState } from \"react\";\n\nimport {\n\tassertValidAccept,\n\tassertValidAllowedMime,\n\treadFile,\n\tReadFileError,\n\tReadFileResult,\n\tReadMode\n} from \"@ryuzaki13/react-foundation-lib/file\";\nimport { cn, handleKeyboardActivation } from \"@ryuzaki13/react-foundation-lib/utils\";\nimport { UploadIcon } from \"lucide-react\";\n\nimport { InputFilesList } from \"../input-files\";\n\nimport styles from \"./DropZone.module.scss\";\n\n/**\n * Пропсы компонента DropZone.\n *\n * Компонент представляет собой визуальную зону для выбора файлов.\n * Поддерживает перетаскивание и выбор по клику, а результаты передаются в onDrop.\n */\nexport interface DropZoneProps {\n\tvalue: ReadFileResult[];\n\t/** Вызывается с массивом результатов readFile после сброса файлов */\n\tonChange: (results: ReadFileResult[]) => void;\n\t/** Callback ошибки чтения одного из файлов */\n\tonChangeError?: (error: ReadFileError) => void;\n\n\t/** HTML-атрибут accept для нативного input[type=\"file\"] (например `[\".pdf\", \".docx\"]`) */\n\taccept?: readonly string[];\n\t/** Список допустимых MIME-типов — передаётся в readFile (например `[\"application/pdf\", \"image/png\"]`) */\n\tallowedMime?: readonly string[];\n\t/** Максимальный размер одного файла в байтах */\n\tmaxBytes?: number;\n\t/** Режим чтения: \"data-url\" (по умолчанию) или \"array-buffer\" */\n\treadMode?: ReadMode;\n\t/** Разрешить сброс нескольких файлов (по умолчанию true) */\n\tmultiple?: boolean;\n\n\t/** Блокировка компонента */\n\tdisabled?: boolean;\n\t/** CSS-класс обёртки */\n\tclassName?: string;\n\t/**\n\t * Кастомный контент внутри зоны.\n\t * По умолчанию отображается иконка загрузки и текст \"Перетащите файлы сюда\".\n\t */\n\tchildren?: ReactNode;\n}\n\n/**\n * DropZone — зона для перетаскивания файлов и выбора по клику.\n *\n * При наведении файла зона подсвечивается (пунктирная рамка меняет цвет).\n * При сбросе файлов каждый читается через readFile, успешные результаты\n * передаются в onDrop, ошибки — в onDropError.\n *\n * Поддерживает кастомный контент через children.\n * Если children не указан — отображается иконка загрузки и подсказка.\n */\nexport function DropZone({\n\tvalue,\n\tonChange,\n\tonChangeError,\n\taccept,\n\tallowedMime,\n\tmaxBytes,\n\treadMode,\n\tmultiple = true,\n\tdisabled,\n\tclassName,\n\tchildren\n}: DropZoneProps) {\n\tassertValidAllowedMime(allowedMime);\n\tassertValidAccept(accept);\n\n\t/** Счётчик вложенности drag-событий для корректной обработки dragLeave */\n\tconst dragCounter = useRef(0);\n\t/** Скрытый input для выбора файлов по клику */\n\tconst inputRef = useRef<HTMLInputElement>(null);\n\t/** Состояние: файл перетаскивается над зоной */\n\tconst [isDragOver, setIsDragOver] = useState(false);\n\n\t/**\n\t * Формируем HTML-атрибут accept из accept или allowedMime.\n\t */\n\tconst acceptAttr = useMemo(() => {\n\t\tif (accept && accept.length > 0) {\n\t\t\treturn accept.join(\",\");\n\t\t}\n\t\tif (allowedMime && allowedMime.length > 0) {\n\t\t\treturn allowedMime.join(\",\");\n\t\t}\n\t\treturn \"*\";\n\t}, [allowedMime, accept]);\n\n\tconst readDroppedFile = useCallback(\n\t\t(file: File) => {\n\t\t\tif (readMode === \"array-buffer\") {\n\t\t\t\treturn readFile(file, { allowedMime, maxBytes, mode: \"array-buffer\" });\n\t\t\t}\n\n\t\t\treturn readFile(file, { allowedMime, maxBytes });\n\t\t},\n\t\t[allowedMime, maxBytes, readMode]\n\t);\n\n\tconst processFiles = useCallback(\n\t\tasync (files: File[]) => {\n\t\t\tif (disabled || files.length === 0) return;\n\n\t\t\tconst filesToProcess = multiple ? files : files.slice(0, 1);\n\t\t\tconst results: ReadFileResult[] = [];\n\n\t\t\tfor (const file of filesToProcess) {\n\t\t\t\ttry {\n\t\t\t\t\tconst result = await readDroppedFile(file);\n\t\t\t\t\tresults.push(result);\n\t\t\t\t} catch (err) {\n\t\t\t\t\tif (err instanceof ReadFileError && onChangeError) {\n\t\t\t\t\t\tonChangeError(err);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (results.length > 0) {\n\t\t\t\tonChange(results);\n\t\t\t}\n\t\t},\n\t\t[disabled, multiple, onChange, onChangeError, readDroppedFile]\n\t);\n\n\tconst openFileDialog = useCallback(() => {\n\t\tif (disabled) return;\n\n\t\tinputRef.current?.click();\n\t}, [disabled]);\n\n\t/**\n\t * Обработка dragEnter — увеличиваем счётчик и включаем подсветку.\n\t * Счётчик нужен потому что dragEnter/dragLeave срабатывают\n\t * на каждом дочернем элементе внутри зоны.\n\t */\n\tconst handleDragEnter = useCallback(\n\t\t(e: React.DragEvent) => {\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\t\t\tif (disabled) return;\n\n\t\t\tdragCounter.current += 1;\n\t\t\tif (dragCounter.current === 1) {\n\t\t\t\tsetIsDragOver(true);\n\t\t\t}\n\t\t},\n\t\t[disabled]\n\t);\n\n\t/**\n\t * Обработка dragOver — предотвращаем дефолтное поведение браузера\n\t * (иначе drop-событие не сработает).\n\t */\n\tconst handleDragOver = useCallback(\n\t\t(e: React.DragEvent) => {\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\t\t\tif (disabled) return;\n\n\t\t\te.dataTransfer.dropEffect = \"copy\";\n\t\t},\n\t\t[disabled]\n\t);\n\n\t/**\n\t * Обработка dragLeave — уменьшаем счётчик, выключаем подсветку при 0.\n\t */\n\tconst handleDragLeave = useCallback(\n\t\t(e: React.DragEvent) => {\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\t\t\tif (disabled) return;\n\n\t\t\tdragCounter.current -= 1;\n\t\t\tif (dragCounter.current === 0) {\n\t\t\t\tsetIsDragOver(false);\n\t\t\t}\n\t\t},\n\t\t[disabled]\n\t);\n\n\t/**\n\t * Обработка drop — читаем сброшенные файлы через общую логику.\n\t */\n\tconst handleDrop = useCallback(\n\t\tasync (e: React.DragEvent) => {\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\n\t\t\t// Сбрасываем состояние drag\n\t\t\tdragCounter.current = 0;\n\t\t\tsetIsDragOver(false);\n\n\t\t\tif (disabled) return;\n\n\t\t\tconst droppedFiles = Array.from(e.dataTransfer.files);\n\t\t\tawait processFiles(droppedFiles);\n\t\t},\n\t\t[disabled, processFiles]\n\t);\n\n\tconst handleInputChange = useCallback(\n\t\tasync (e: ChangeEvent<HTMLInputElement>) => {\n\t\t\tconst selectedFiles = Array.from(e.target.files ?? []);\n\t\t\tawait processFiles(selectedFiles);\n\n\t\t\t// Сбрасываем значение, чтобы повторный выбор того же файла тоже вызывал change.\n\t\t\te.target.value = \"\";\n\t\t},\n\t\t[processFiles]\n\t);\n\n\tconst handleKeyDown = useCallback(\n\t\t(e: React.KeyboardEvent<HTMLDivElement>) => {\n\t\t\thandleKeyboardActivation(e, openFileDialog, { disabled });\n\t\t},\n\t\t[disabled, openFileDialog]\n\t);\n\n\treturn (\n\t\t<div>\n\t\t\t<input\n\t\t\t\tref={inputRef}\n\t\t\t\ttype=\"file\"\n\t\t\t\thidden\n\t\t\t\tdisabled={disabled}\n\t\t\t\tmultiple={multiple}\n\t\t\t\taccept={acceptAttr}\n\t\t\t\tonChange={handleInputChange}\n\t\t\t/>\n\t\t\t<div\n\t\t\t\tclassName={cn(styles.zone, isDragOver && styles.dragOver, disabled && styles.disabled, className)}\n\t\t\t\tonClick={openFileDialog}\n\t\t\t\tonKeyDown={handleKeyDown}\n\t\t\t\tonDragEnter={handleDragEnter}\n\t\t\t\tonDragOver={handleDragOver}\n\t\t\t\tonDragLeave={handleDragLeave}\n\t\t\t\tonDrop={handleDrop}\n\t\t\t\trole=\"button\"\n\t\t\t\ttabIndex={disabled ? -1 : 0}\n\t\t\t\taria-disabled={disabled}>\n\t\t\t\t{children ?? (\n\t\t\t\t\t<>\n\t\t\t\t\t\t{/* Иконка загрузки по умолчанию */}\n\t\t\t\t\t\t<UploadIcon className={styles.icon} />\n\t\t\t\t\t\t{/* Текст подсказки */}\n\t\t\t\t\t\t<span className={styles.hint}>\n\t\t\t\t\t\t\t{multiple ? \"Перетащите файлы сюда или нажмите для выбора\" : \"Перетащите файл сюда или нажмите для выбора\"}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</div>\n\n\t\t\t{/* Список выбранных файлов */}\n\t\t\t<InputFilesList files={value} onChange={onChange} />\n\t\t</div>\n\t);\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"DropdownMenu-DQeR3y7M.js","names":[],"sources":["../../src/context-menu/components/helpers.ts","../../src/context-menu/components/MenuContext.tsx","../../src/context-menu/components/ContextMenuTrigger.tsx","../../src/context-menu/ContextMenu.module.scss","../../src/context-menu/components/MenuContent.tsx","../../src/context-menu/components/MenuGroupLabel.tsx","../../src/context-menu/components/MenuItem.tsx","../../src/context-menu/components/MenuRoot.tsx","../../src/context-menu/components/MenuSeparator.tsx","../../src/context-menu/components/RadialMenuContent.tsx","../../src/context-menu/components/RadialMenuItem.tsx","../../src/context-menu/components/ContextMenu.tsx","../../src/context-menu/components/DropdownMenuTrigger.tsx","../../src/context-menu/components/DropdownMenu.tsx"],"sourcesContent":["import React from \"react\";\n\nexport function assignRef<T>(ref: React.Ref<T> | undefined, value: T) {\n\tif (!ref) return;\n\n\tif (typeof ref === \"function\") {\n\t\tref(value);\n\t\treturn;\n\t}\n\n\t(ref as React.MutableRefObject<T>).current = value;\n}\n\nexport function composeMouseHandlers<T extends HTMLElement>(\n\tuserHandler: ((event: React.MouseEvent<T>) => void) | undefined,\n\tlibraryHandler: (event: React.MouseEvent<T>) => void\n) {\n\treturn (event: React.MouseEvent<T>) => {\n\t\tuserHandler?.(event);\n\t\tif (event.defaultPrevented) return;\n\t\tlibraryHandler(event);\n\t};\n}\n\nexport function composeKeyboardHandlers<T extends HTMLElement>(\n\tuserHandler: ((event: React.KeyboardEvent<T>) => void) | undefined,\n\tlibraryHandler: (event: React.KeyboardEvent<T>) => void\n) {\n\treturn (event: React.KeyboardEvent<T>) => {\n\t\tuserHandler?.(event);\n\t\tif (event.defaultPrevented) return;\n\t\tlibraryHandler(event);\n\t};\n}\n","import { createContext, useContext } from \"react\";\n\nimport { createMissingContextError } from \"@ryuzaki13/react-foundation-lib/error\";\n\nimport type { MenuOpenSource, MenuPoint } from \"@ryuzaki13/react-foundation-lib/context-menu\";\n\nexport type MenuTriggerMode = \"click\" | \"contextmenu\";\n\ninterface MenuContextValue {\n\tmode: MenuTriggerMode;\n\topen: boolean;\n\topenSource: MenuOpenSource | null;\n\tanchorPoint: MenuPoint | null;\n\tfloatingStyles: React.CSSProperties;\n\tfloatingRef: React.RefObject<HTMLElement | null>;\n\ttriggerRef: React.RefObject<HTMLElement | null>;\n\tsetFloating: (node: HTMLElement | null) => void;\n\tregisterTriggerElement: (node: HTMLElement | null) => void;\n\tonTriggerClick: (event: React.MouseEvent<HTMLElement>) => void;\n\tonTriggerContextMenu: (event: React.MouseEvent<HTMLElement>) => void;\n\tonTriggerKeyDown: (event: React.KeyboardEvent<HTMLElement>) => void;\n\tcloseMenu: () => void;\n}\n\nexport const MenuContext = createContext<MenuContextValue | null>(null);\n\nexport function useMenuContext() {\n\tconst context = useContext(MenuContext);\n\tif (!context) {\n\t\tthrow createMissingContextError({\n\t\t\thookName: \"useMenuContext\",\n\t\t\tproviderName: \"MenuRoot\"\n\t\t});\n\t}\n\treturn context;\n}\n","import React, { cloneElement } from \"react\";\n\nimport { assignRef, composeKeyboardHandlers, composeMouseHandlers } from \"./helpers\";\nimport { useMenuContext } from \"./MenuContext\";\n\nexport interface ContextMenuTriggerProps {\n\tchildren: React.ReactElement<React.HTMLAttributes<HTMLElement> & { ref?: React.Ref<HTMLElement> }>;\n}\n\nexport const ContextMenuTrigger: React.FC<ContextMenuTriggerProps> = ({ children }) => {\n\tconst { mode, open, registerTriggerElement, onTriggerContextMenu, onTriggerKeyDown } = useMenuContext();\n\n\tif (mode !== \"contextmenu\") {\n\t\tthrow new Error(\"ContextMenu.Trigger must be used within <ContextMenu>\");\n\t}\n\n\treturn cloneElement(children, {\n\t\tref: (node: HTMLElement | null) => {\n\t\t\tconst childRef = (children.props as { ref?: React.Ref<HTMLElement> }).ref;\n\t\t\tassignRef(childRef, node);\n\t\t\tregisterTriggerElement(node);\n\t\t},\n\t\t\"aria-haspopup\": \"menu\",\n\t\t\"aria-expanded\": open,\n\t\tonContextMenu: composeMouseHandlers(children.props.onContextMenu, onTriggerContextMenu),\n\t\tonKeyDown: composeKeyboardHandlers(children.props.onKeyDown, onTriggerKeyDown)\n\t});\n};\n","@use \"@/styles/mixins\" as *;\n\n.menuPanel {\n\t--menu-max-height: min(22em, calc(100dvh - var(--space-xl)));\n\t--menu-min-width: 13em;\n\t--menu-max-width: min(22em, calc(100dvw - var(--space-xl)));\n\n\tmin-width: var(--menu-min-width);\n\tmax-width: var(--menu-max-width);\n\tpadding: var(--space-xs);\n\n\tbackground-color: var(--surface-0);\n\tborder: var(--border);\n\tborder-radius: var(--radius-sm);\n\tbox-shadow: var(--shadow-md);\n\n\tz-index: var(--z-dropdown);\n\toutline: none;\n}\n\n.menuScroller {\n\tmax-height: var(--menu-max-height);\n\toverflow: auto;\n}\n\n.menuItem {\n\tgap: var(--space-sm);\n}\n\n.menuItemIcon {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n\n.menuItemText {\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n}\n\n.menuItemHotKey {\n\tfont-size: var(--font-size-sm);\n}\n\n.radialPanel {\n\tposition: fixed;\n\twidth: var(--radial-panel-size);\n\theight: var(--radial-panel-size);\n\tz-index: var(--z-context-menu, var(--z-dropdown));\n\toutline: none;\n\tpointer-events: none;\n}\n\n.radialRing {\n\tposition: absolute;\n\tinset: calc(var(--radial-item-size) / 2);\n\tborder: var(--border);\n\tborder-radius: 50%;\n\tbackground:\n\t\tradial-gradient(circle, color-mix(in srgb, var(--surface-0) 96%, transparent) 0 36%, transparent 37%),\n\t\tcolor-mix(in srgb, var(--surface-0) 88%, transparent);\n\tbox-shadow: var(--shadow-md);\n\tpointer-events: none;\n}\n\n.radialCenterButton {\n\tposition: absolute;\n\tleft: 50%;\n\ttop: 50%;\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\twidth: calc(var(--radial-item-size) * 0.72);\n\theight: calc(var(--radial-item-size) * 0.72);\n\tpadding: var(--space-xxs);\n\ttransform: translate(-50%, -50%);\n\tborder: var(--border);\n\tborder-radius: 50%;\n\tbackground-color: var(--surface-0);\n\tcolor: var(--content-0);\n\tbox-shadow: var(--shadow-sm);\n\tpointer-events: auto;\n\ttransition:\n\t\tbackground-color var(--transition-fast) ease,\n\t\tborder-color var(--transition-fast) ease,\n\t\tcolor var(--transition-fast) ease,\n\t\ttransform var(--transition-fast) ease;\n\n\t&:focus {\n\t\tbackground-color: var(--surface-1);\n\t\tborder-color: var(--border-1);\n\t}\n\n\t@include hover(true) {\n\t\tbackground-color: var(--surface-accent);\n\t\tcolor: var(--content-accent);\n\t\tcursor: pointer;\n\t\ttransform: translate(-50%, -50%) scale(1.06);\n\t}\n}\n\n.radialCenterButtonText {\n\tmax-width: 100%;\n\toverflow: hidden;\n\ttext-align: center;\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n\tfont-size: var(--font-size-sm);\n\tline-height: 1.1;\n}\n\n.radialItems {\n\tposition: absolute;\n\tinset: 0;\n\tpointer-events: none;\n}\n\n.radialItemSlot {\n\tposition: absolute;\n\tleft: 50%;\n\ttop: 50%;\n\twidth: var(--radial-item-size);\n\theight: var(--radial-item-size);\n\ttransform: rotate(var(--radial-item-angle)) translate(var(--radial-radius)) rotate(calc(var(--radial-item-angle) * -1))\n\t\ttranslate(-50%, -50%);\n\tpointer-events: none;\n}\n\n.radialItem {\n\tdisplay: grid;\n\tgrid-template-rows: 1fr auto;\n\talign-items: center;\n\tjustify-items: center;\n\tgap: 0.15rem;\n\twidth: 100%;\n\theight: 100%;\n\tpadding: var(--space-xs);\n\tborder: var(--border);\n\tborder-radius: 50%;\n\tbackground-color: var(--surface-0);\n\tcolor: var(--content-0);\n\tbox-shadow: var(--shadow-sm);\n\tpointer-events: auto;\n\ttransition:\n\t\tbackground-color var(--transition-fast) ease,\n\t\tborder-color var(--transition-fast) ease,\n\t\tcolor var(--transition-fast) ease,\n\t\ttransform var(--transition-fast) ease;\n\n\t&:focus {\n\t\tbackground-color: var(--surface-1);\n\t\tborder-color: var(--border-1);\n\t}\n\n\t&:disabled,\n\t&[aria-disabled=\"true\"] {\n\t\tcursor: default;\n\t\tcolor: var(--content-2);\n\t\topacity: 0.52;\n\t\tpointer-events: none;\n\t}\n\n\t@include hover(true) {\n\t\tbackground-color: var(--surface-accent);\n\t\tcolor: var(--content-accent);\n\t\tcursor: pointer;\n\t\ttransform: scale(1.06);\n\t}\n}\n\n.radialItemIcon {\n\tdisplay: inline-flex;\n\talign-items: center;\n\tjustify-content: center;\n\tmin-width: var(--space-md);\n\tmin-height: var(--space-md);\n\n\t> svg {\n\t\twidth: var(--space-md);\n\t\theight: var(--space-md);\n\t}\n}\n\n.radialItemText {\n\tmax-width: 100%;\n\toverflow: hidden;\n\ttext-align: center;\n\ttext-overflow: ellipsis;\n\twhite-space: nowrap;\n\tfont-size: var(--font-size-sm);\n}\n","import React, { useCallback } from \"react\";\n\nimport { useClickOutside, useEscapeDismiss, useOverlayFocus } from \"@ryuzaki13/react-foundation-lib/dom\";\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\nimport { AnimatePresence, motion } from \"motion/react\";\nimport { createPortal } from \"react-dom\";\n\nimport styles from \"../ContextMenu.module.scss\";\n\nimport { useMenuContext } from \"./MenuContext\";\n\nexport interface MenuContentProps {\n\tchildren: React.ReactNode | ((ctx: { closeMenu: () => void }) => React.ReactNode);\n\tclassName?: string;\n\tcloseOnOutside?: boolean;\n\tcloseOnEscape?: boolean;\n\tdisableOutsideClick?: boolean;\n\trestoreFocus?: boolean;\n}\n\nexport const MenuContent: React.FC<MenuContentProps> = ({\n\tchildren,\n\tclassName,\n\tcloseOnOutside = true,\n\tcloseOnEscape = true,\n\tdisableOutsideClick = false,\n\trestoreFocus = true\n}) => {\n\tconst { open, floatingStyles, floatingRef, triggerRef, setFloating, closeMenu } = useMenuContext();\n\n\tconst getNavigableItems = useCallback(() => {\n\t\tconst floatingElement = floatingRef.current;\n\t\tif (!floatingElement) return [];\n\n\t\treturn Array.from(floatingElement.querySelectorAll<HTMLElement>('[data-menu-item=\"true\"]:not([data-disabled=\"true\"])'));\n\t}, [floatingRef]);\n\n\tuseOverlayFocus<HTMLElement>({\n\t\tactive: open,\n\t\tinitialFocus: (container) => getNavigableItems()[0] ?? container,\n\t\trestoreFocus,\n\t\trestoreFocusTarget: () => triggerRef.current,\n\t\tcontainerRef: floatingRef\n\t});\n\n\tuseEscapeDismiss({\n\t\tactive: open,\n\t\tenabled: closeOnEscape,\n\t\tonDismiss: closeMenu,\n\t\tcontainerRef: floatingRef\n\t});\n\n\tconst outsideClose = useCallback(() => {\n\t\tif (!open || disableOutsideClick) return;\n\t\tif (closeOnOutside) {\n\t\t\tcloseMenu();\n\t\t}\n\t}, [open, disableOutsideClick, closeOnOutside, closeMenu]);\n\n\tuseClickOutside([floatingRef as React.RefObject<HTMLElement>, triggerRef as React.RefObject<HTMLElement>], outsideClose);\n\n\tconst onMenuKeyDown = useCallback(\n\t\t(event: React.KeyboardEvent<HTMLElement>) => {\n\t\t\tconst items = getNavigableItems();\n\t\t\tif (items.length === 0) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst activeElement = document.activeElement as HTMLElement | null;\n\t\t\tconst currentIndex = activeElement ? items.indexOf(activeElement) : -1;\n\n\t\t\tif (event.key === \"ArrowDown\") {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tconst nextIndex = currentIndex >= 0 ? (currentIndex + 1) % items.length : 0;\n\t\t\t\titems[nextIndex]?.focus();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (event.key === \"ArrowUp\") {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tconst nextIndex = currentIndex >= 0 ? (currentIndex - 1 + items.length) % items.length : items.length - 1;\n\t\t\t\titems[nextIndex]?.focus();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (event.key === \"Home\") {\n\t\t\t\tevent.preventDefault();\n\t\t\t\titems[0]?.focus();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (event.key === \"End\") {\n\t\t\t\tevent.preventDefault();\n\t\t\t\titems[items.length - 1]?.focus();\n\t\t\t}\n\t\t},\n\t\t[getNavigableItems]\n\t);\n\n\tif (typeof document === \"undefined\") return null;\n\n\treturn createPortal(\n\t\t<AnimatePresence>\n\t\t\t{open && (\n\t\t\t\t<motion.div\n\t\t\t\t\tref={setFloating}\n\t\t\t\t\tstyle={floatingStyles}\n\t\t\t\t\trole=\"menu\"\n\t\t\t\t\ttabIndex={-1}\n\t\t\t\t\tclassName={cn(styles.menuPanel, className)}\n\t\t\t\t\tonKeyDown={onMenuKeyDown}\n\t\t\t\t\tinitial={{ opacity: 0, scale: 0.96, y: -2 }}\n\t\t\t\t\tanimate={{ opacity: 1, scale: 1, y: 0 }}\n\t\t\t\t\texit={{ opacity: 0, scale: 0.96, y: -2 }}\n\t\t\t\t\ttransition={{ duration: 0.14, ease: \"easeOut\" }}>\n\t\t\t\t\t<div className={cn(styles.menuScroller, \"scrollable\")}>\n\t\t\t\t\t\t{typeof children === \"function\" ? children({ closeMenu }) : children}\n\t\t\t\t\t</div>\n\t\t\t\t</motion.div>\n\t\t\t)}\n\t\t</AnimatePresence>,\n\t\tdocument.body\n\t);\n};\n","import React from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport uiStyles from \"../../ui.module.scss\";\n\nexport interface MenuGroupLabelProps {\n\tchildren: React.ReactNode;\n\tclassName?: string;\n}\n\nexport const MenuGroupLabel: React.FC<MenuGroupLabelProps> = ({ children, className }) => {\n\treturn <div className={cn(uiStyles.uiPopupGroupLabel, className)}>{children}</div>;\n};\n","import React, { useCallback } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport uiStyles from \"../../ui.module.scss\";\nimport styles from \"../ContextMenu.module.scss\";\n\nimport { useMenuContext } from \"./MenuContext\";\n\nexport interface MenuItemProps {\n\tchildren: React.ReactNode;\n\ticon?: React.ReactNode;\n\thotKey?: string;\n\tclassName?: string;\n\tdisabled?: boolean;\n\thref?: string;\n\ttarget?: string;\n\trel?: string;\n\tcloseOnSelect?: boolean;\n\tonSelect?: (event: React.MouseEvent<HTMLElement>) => void;\n}\n\nexport const MenuItem: React.FC<MenuItemProps> = ({\n\tchildren,\n\ticon,\n\thotKey,\n\tclassName,\n\tdisabled,\n\thref,\n\ttarget,\n\trel,\n\tcloseOnSelect = true,\n\tonSelect\n}) => {\n\tconst { closeMenu } = useMenuContext();\n\n\tconst handleClick = useCallback(\n\t\t(event: React.MouseEvent<HTMLElement>) => {\n\t\t\tif (disabled) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tevent.stopPropagation();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tonSelect?.(event);\n\t\t\tif (event.defaultPrevented) return;\n\n\t\t\tif (closeOnSelect) {\n\t\t\t\tcloseMenu();\n\t\t\t}\n\t\t},\n\t\t[disabled, onSelect, closeOnSelect, closeMenu]\n\t);\n\n\tconst rootClassName = cn(uiStyles.uiPopupOption, styles.menuItem, className);\n\n\tif (href) {\n\t\treturn (\n\t\t\t<a\n\t\t\t\thref={href}\n\t\t\t\ttarget={target}\n\t\t\t\trel={rel}\n\t\t\t\trole=\"menuitem\"\n\t\t\t\ttabIndex={-1}\n\t\t\t\taria-disabled={disabled}\n\t\t\t\tdata-menu-item=\"true\"\n\t\t\t\tdata-disabled={disabled ? \"true\" : undefined}\n\t\t\t\tdata-ui=\"context-menu-item\"\n\t\t\t\tdata-action=\"select-context-menu-item\"\n\t\t\t\tclassName={rootClassName}\n\t\t\t\tonClick={handleClick as React.MouseEventHandler<HTMLAnchorElement>}>\n\t\t\t\t{icon && <span className={cn(uiStyles.uiPopupOptionIcon, styles.menuItemIcon)}>{icon}</span>}\n\t\t\t\t<span className={cn(uiStyles.uiOptionText, styles.menuItemText)}>{children}</span>\n\t\t\t\t{hotKey && <kbd className={cn(uiStyles.keyboard, styles.menuItemHotKey)}>{hotKey}</kbd>}\n\t\t\t</a>\n\t\t);\n\t}\n\n\treturn (\n\t\t<button\n\t\t\ttype=\"button\"\n\t\t\trole=\"menuitem\"\n\t\t\ttabIndex={-1}\n\t\t\tdisabled={disabled}\n\t\t\tdata-menu-item=\"true\"\n\t\t\tdata-disabled={disabled ? \"true\" : undefined}\n\t\t\tdata-ui=\"context-menu-item\"\n\t\t\tdata-action=\"select-context-menu-item\"\n\t\t\tclassName={rootClassName}\n\t\t\tonClick={handleClick as React.MouseEventHandler<HTMLButtonElement>}>\n\t\t\t{icon && <span className={cn(uiStyles.uiPopupOptionIcon, styles.menuItemIcon)}>{icon}</span>}\n\t\t\t<span className={cn(uiStyles.uiOptionText, styles.menuItemText)}>{children}</span>\n\t\t\t{hotKey && <kbd className={cn(uiStyles.keyboard, styles.menuItemHotKey)}>{hotKey}</kbd>}\n\t\t</button>\n\t);\n};\n","import React, { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\n\nimport { autoUpdate, flip, offset, Placement, shift, useFloating } from \"@floating-ui/react\";\nimport {\n\tcloseMenu,\n\tcreateVirtualAnchor,\n\tgetMenuPointFromEvent,\n\tgetMenuPointFromRect,\n\tinitialMenuState,\n\topenMenu\n} from \"@ryuzaki13/react-foundation-lib/context-menu\";\n\nimport { MenuContext, MenuTriggerMode } from \"./MenuContext\";\n\ninterface MenuRootProps {\n\tchildren: React.ReactNode;\n\tmode: MenuTriggerMode;\n\tplacement?: Placement;\n\topen?: boolean;\n\tdefaultOpen?: boolean;\n\tonOpenChange?: (open: boolean) => void;\n}\n\nexport const MenuRoot: React.FC<MenuRootProps> = ({\n\tchildren,\n\tmode,\n\tplacement = mode === \"click\" ? \"bottom-start\" : \"right-start\",\n\topen: controlledOpen,\n\tdefaultOpen,\n\tonOpenChange\n}) => {\n\tconst [menuState, setMenuState] = useState(initialMenuState);\n\tconst [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen ?? false);\n\tconst isControlled = controlledOpen !== undefined;\n\tconst open = isControlled ? controlledOpen : uncontrolledOpen;\n\tconst triggerElementRef = useRef<HTMLElement | null>(null);\n\n\tconst { refs, floatingStyles, update } = useFloating({\n\t\tplacement,\n\t\tstrategy: mode === \"contextmenu\" ? \"fixed\" : \"absolute\",\n\t\ttransform: false,\n\t\tmiddleware: [offset(6), flip({ padding: 8 }), shift({ padding: 8 })],\n\t\twhileElementsMounted: autoUpdate\n\t});\n\n\tconst setOpen = useCallback(\n\t\t(nextOpen: boolean) => {\n\t\t\tif (!isControlled) {\n\t\t\t\tsetUncontrolledOpen(nextOpen);\n\t\t\t}\n\t\t\tonOpenChange?.(nextOpen);\n\t\t\tif (!nextOpen) {\n\t\t\t\tsetMenuState((state) => closeMenu(state));\n\t\t\t}\n\t\t},\n\t\t[isControlled, onOpenChange]\n\t);\n\n\tconst closeMenuHandler = useCallback(() => {\n\t\tsetOpen(false);\n\t}, [setOpen]);\n\n\tuseEffect(() => {\n\t\tif (!open) {\n\t\t\tsetMenuState((state) => closeMenu(state));\n\t\t}\n\t}, [open]);\n\n\tconst openAtElement = useCallback(\n\t\t(element: HTMLElement, source: \"click\" | \"keyboard\") => {\n\t\t\trefs.setReference(element);\n\t\t\tsetMenuState(\n\t\t\t\topenMenu({\n\t\t\t\t\tsource,\n\t\t\t\t\tanchor: {\n\t\t\t\t\t\ttype: \"element\",\n\t\t\t\t\t\telement\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t);\n\t\t\tsetOpen(true);\n\t\t},\n\t\t[refs, setOpen]\n\t);\n\n\tconst openAtPoint = useCallback(\n\t\t(point: { x: number; y: number }, source: \"contextmenu\" | \"keyboard\", contextElement?: HTMLElement | null) => {\n\t\t\trefs.setReference(createVirtualAnchor(point, contextElement));\n\t\t\tsetMenuState(\n\t\t\t\topenMenu({\n\t\t\t\t\tsource,\n\t\t\t\t\tanchor: {\n\t\t\t\t\t\ttype: \"point\",\n\t\t\t\t\t\tpoint,\n\t\t\t\t\t\tcontextElement\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t);\n\t\t\tsetOpen(true);\n\t\t\tupdate();\n\t\t},\n\t\t[refs, setOpen, update]\n\t);\n\n\tconst registerTriggerElement = useCallback(\n\t\t(node: HTMLElement | null) => {\n\t\t\ttriggerElementRef.current = node;\n\t\t\tif (mode === \"click\") {\n\t\t\t\trefs.setReference(node);\n\t\t\t}\n\t\t},\n\t\t[mode, refs]\n\t);\n\n\tconst onTriggerClick = useCallback(\n\t\t(event: React.MouseEvent<HTMLElement>) => {\n\t\t\tif (mode !== \"click\") return;\n\t\t\tconst element = event.currentTarget;\n\n\t\t\tif (open && menuState.anchor?.type === \"element\" && menuState.anchor.element === element) {\n\t\t\t\tcloseMenuHandler();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\topenAtElement(element, \"click\");\n\t\t},\n\t\t[mode, open, menuState.anchor, closeMenuHandler, openAtElement]\n\t);\n\n\tconst onTriggerContextMenu = useCallback(\n\t\t(event: React.MouseEvent<HTMLElement>) => {\n\t\t\tif (mode !== \"contextmenu\") return;\n\t\t\tevent.preventDefault();\n\n\t\t\tconst element = event.currentTarget;\n\t\t\tconst point = getMenuPointFromEvent(event);\n\t\t\topenAtPoint(point, \"contextmenu\", element);\n\t\t},\n\t\t[mode, openAtPoint]\n\t);\n\n\tconst onTriggerKeyDown = useCallback(\n\t\t(event: React.KeyboardEvent<HTMLElement>) => {\n\t\t\tconst isContextMenuKeyboardOpen = event.key === \"ContextMenu\" || (event.shiftKey && event.key === \"F10\");\n\t\t\tif (!isContextMenuKeyboardOpen) return;\n\n\t\t\tevent.preventDefault();\n\t\t\tconst element = event.currentTarget;\n\n\t\t\tif (mode === \"click\") {\n\t\t\t\topenAtElement(element, \"keyboard\");\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst point = getMenuPointFromRect(element.getBoundingClientRect());\n\t\t\topenAtPoint(point, \"keyboard\", element);\n\t\t},\n\t\t[mode, openAtElement, openAtPoint]\n\t);\n\n\tconst visible = open && menuState.anchor !== null;\n\tconst anchorPoint = useMemo(() => {\n\t\tif (!menuState.anchor) return null;\n\n\t\tif (menuState.anchor.type === \"point\") {\n\t\t\treturn menuState.anchor.point;\n\t\t}\n\n\t\tconst rect = menuState.anchor.element.getBoundingClientRect();\n\t\treturn getMenuPointFromRect(rect);\n\t}, [menuState.anchor]);\n\n\tconst value = useMemo(\n\t\t() => ({\n\t\t\tmode,\n\t\t\topen: visible,\n\t\t\topenSource: menuState.source,\n\t\t\tanchorPoint,\n\t\t\tfloatingStyles,\n\t\t\tfloatingRef: refs.floating,\n\t\t\ttriggerRef: triggerElementRef,\n\t\t\tsetFloating: refs.setFloating,\n\t\t\tregisterTriggerElement,\n\t\t\tonTriggerClick,\n\t\t\tonTriggerContextMenu,\n\t\t\tonTriggerKeyDown,\n\t\t\tcloseMenu: closeMenuHandler\n\t\t}),\n\t\t[\n\t\t\tmode,\n\t\t\tvisible,\n\t\t\tmenuState.source,\n\t\t\tanchorPoint,\n\t\t\tfloatingStyles,\n\t\t\trefs.floating,\n\t\t\trefs.setFloating,\n\t\t\tregisterTriggerElement,\n\t\t\tonTriggerClick,\n\t\t\tonTriggerContextMenu,\n\t\t\tonTriggerKeyDown,\n\t\t\tcloseMenuHandler\n\t\t]\n\t);\n\n\treturn <MenuContext.Provider value={value}>{children}</MenuContext.Provider>;\n};\n","import React from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport uiStyles from \"../../ui.module.scss\";\n\nexport interface MenuSeparatorProps {\n\tclassName?: string;\n}\n\nexport const MenuSeparator: React.FC<MenuSeparatorProps> = ({ className }) => {\n\treturn <div role=\"separator\" className={cn(uiStyles.uiPopupOptionSeparator, className)} />;\n};\n","import React, { Children, useCallback, useEffect, useMemo } from \"react\";\n\nimport { useClickOutside, useEscapeDismiss, useOverlayFocus } from \"@ryuzaki13/react-foundation-lib/dom\";\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\nimport { AnimatePresence, motion } from \"motion/react\";\nimport { createPortal } from \"react-dom\";\n\nimport styles from \"../ContextMenu.module.scss\";\n\nimport { useMenuContext } from \"./MenuContext\";\n\nexport interface RadialMenuContentProps {\n\tchildren: React.ReactNode | ((ctx: { closeMenu: () => void }) => React.ReactNode);\n\tclassName?: string;\n\tcloseOnOutside?: boolean;\n\tcloseOnEscape?: boolean;\n\tdisableOutsideClick?: boolean;\n\trestoreFocus?: boolean;\n\tradius?: number;\n\titemSize?: number;\n\tcloseLabel?: string;\n}\n\nfunction clamp(value: number, min: number, max: number) {\n\tif (max < min) return min;\n\treturn Math.min(Math.max(value, min), max);\n}\n\nexport const RadialMenuContent: React.FC<RadialMenuContentProps> = ({\n\tchildren,\n\tclassName,\n\tcloseOnOutside = true,\n\tcloseOnEscape = true,\n\tdisableOutsideClick = false,\n\trestoreFocus = true,\n\tradius = 76,\n\titemSize = 64,\n\tcloseLabel = \"Закрыть\"\n}) => {\n\tconst { open, anchorPoint, floatingRef, triggerRef, setFloating, closeMenu } = useMenuContext();\n\n\tconst resolvedChildren = typeof children === \"function\" ? children({ closeMenu }) : children;\n\tconst itemNodes = useMemo(() => Children.toArray(resolvedChildren), [resolvedChildren]);\n\tconst itemCount = itemNodes.length;\n\tconst panelSize = radius * 2 + itemSize;\n\n\tconst panelPoint = useMemo(() => {\n\t\tif (typeof window === \"undefined\" || !anchorPoint) return null;\n\n\t\t// Радиальное меню центрируется на точке вызова, но не выходит за границы viewport.\n\t\tconst safeOffset = panelSize / 2 + 8;\n\t\treturn {\n\t\t\tx: clamp(anchorPoint.x, safeOffset, window.innerWidth - safeOffset),\n\t\t\ty: clamp(anchorPoint.y, safeOffset, window.innerHeight - safeOffset)\n\t\t};\n\t}, [anchorPoint, panelSize]);\n\n\tconst getNavigableItems = useCallback(() => {\n\t\tconst floatingElement = floatingRef.current;\n\t\tif (!floatingElement) return [];\n\n\t\treturn Array.from(floatingElement.querySelectorAll<HTMLElement>('[data-menu-item=\"true\"]:not([data-disabled=\"true\"])'));\n\t}, [floatingRef]);\n\n\tuseOverlayFocus<HTMLElement>({\n\t\tactive: open,\n\t\tinitialFocus: (container) => getNavigableItems()[0] ?? container,\n\t\trestoreFocus,\n\t\trestoreFocusTarget: () => triggerRef.current,\n\t\tcontainerRef: floatingRef\n\t});\n\n\tuseEffect(() => {\n\t\tif (!open || !anchorPoint) return;\n\n\t\tlet rafId = 0;\n\n\t\t/**\n\t\t * Повторный правый клик при уже открытом меню меняет только якорь, поэтому общий\n\t\t * эффект начального фокуса не перезапускается. Возвращаем фокус в меню явно.\n\t\t */\n\t\tconst focusMenuOnReposition = () => {\n\t\t\tconst focusTarget = getNavigableItems()[0] ?? floatingRef.current;\n\t\t\tfocusTarget?.focus();\n\t\t};\n\n\t\trafId = window.requestAnimationFrame(focusMenuOnReposition);\n\t\treturn () => window.cancelAnimationFrame(rafId);\n\t}, [open, anchorPoint, getNavigableItems, floatingRef]);\n\n\tuseEscapeDismiss({\n\t\tactive: open,\n\t\tenabled: closeOnEscape,\n\t\tonDismiss: closeMenu,\n\t\tcontainerRef: floatingRef\n\t});\n\n\tconst outsideClose = useCallback(() => {\n\t\tif (!open || disableOutsideClick) return;\n\t\tif (closeOnOutside) {\n\t\t\tcloseMenu();\n\t\t}\n\t}, [open, disableOutsideClick, closeOnOutside, closeMenu]);\n\n\tuseClickOutside([floatingRef as React.RefObject<HTMLElement>, triggerRef as React.RefObject<HTMLElement>], outsideClose);\n\n\tconst onMenuKeyDown = useCallback(\n\t\t(event: React.KeyboardEvent<HTMLElement>) => {\n\t\t\tconst items = getNavigableItems();\n\t\t\tif (items.length === 0) return;\n\n\t\t\tconst activeElement = document.activeElement as HTMLElement | null;\n\t\t\tconst currentIndex = activeElement ? items.indexOf(activeElement) : -1;\n\n\t\t\tif (event.key === \"ArrowRight\" || event.key === \"ArrowDown\") {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tconst nextIndex = currentIndex >= 0 ? (currentIndex + 1) % items.length : 0;\n\t\t\t\titems[nextIndex]?.focus();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (event.key === \"ArrowLeft\" || event.key === \"ArrowUp\") {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tconst nextIndex = currentIndex >= 0 ? (currentIndex - 1 + items.length) % items.length : items.length - 1;\n\t\t\t\titems[nextIndex]?.focus();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (event.key === \"Home\") {\n\t\t\t\tevent.preventDefault();\n\t\t\t\titems[0]?.focus();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (event.key === \"End\") {\n\t\t\t\tevent.preventDefault();\n\t\t\t\titems[items.length - 1]?.focus();\n\t\t\t}\n\t\t},\n\t\t[getNavigableItems]\n\t);\n\n\tif (typeof document === \"undefined\") return null;\n\n\treturn createPortal(\n\t\t<AnimatePresence>\n\t\t\t{open && panelPoint && (\n\t\t\t\t<motion.div\n\t\t\t\t\tref={setFloating}\n\t\t\t\t\tstyle={\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"--radial-panel-size\": `${panelSize}px`,\n\t\t\t\t\t\t\t\"--radial-radius\": `${radius}px`,\n\t\t\t\t\t\t\t\"--radial-item-size\": `${itemSize}px`,\n\t\t\t\t\t\t\tleft: panelPoint.x - panelSize / 2,\n\t\t\t\t\t\t\ttop: panelPoint.y - panelSize / 2,\n\t\t\t\t\t\t\ttransformOrigin: \"center\"\n\t\t\t\t\t\t} as React.CSSProperties\n\t\t\t\t\t}\n\t\t\t\t\trole=\"menu\"\n\t\t\t\t\ttabIndex={-1}\n\t\t\t\t\tclassName={cn(styles.radialPanel, className)}\n\t\t\t\t\tonKeyDown={onMenuKeyDown}\n\t\t\t\t\tinitial={{ opacity: 0, scale: 0.78 }}\n\t\t\t\t\tanimate={{ opacity: 1, scale: 1 }}\n\t\t\t\t\texit={{ opacity: 0, scale: 0.78 }}\n\t\t\t\t\ttransition={{ duration: 0.16, ease: \"easeOut\" }}>\n\t\t\t\t\t<div className={styles.radialRing} aria-hidden=\"true\" />\n\t\t\t\t\t<button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\trole=\"menuitem\"\n\t\t\t\t\t\tclassName={styles.radialCenterButton}\n\t\t\t\t\t\taria-label={closeLabel}\n\t\t\t\t\t\tdata-menu-item=\"true\"\n\t\t\t\t\t\tdata-radial-close=\"true\"\n\t\t\t\t\t\tonClick={closeMenu}>\n\t\t\t\t\t\t<span className={styles.radialCenterButtonText}>{closeLabel}</span>\n\t\t\t\t\t</button>\n\t\t\t\t\t<div className={styles.radialItems}>\n\t\t\t\t\t\t{itemNodes.map((item, index) => {\n\t\t\t\t\t\t\tconst angle = itemCount > 0 ? -90 + (360 / itemCount) * index : -90;\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t// Индекс допустим: порядок пунктов полностью задает геометрию кольца.\n\t\t\t\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\t\t\t\tclassName={styles.radialItemSlot}\n\t\t\t\t\t\t\t\t\tstyle={{ \"--radial-item-angle\": `${angle}deg` } as React.CSSProperties}>\n\t\t\t\t\t\t\t\t\t{item}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})}\n\t\t\t\t\t</div>\n\t\t\t\t</motion.div>\n\t\t\t)}\n\t\t</AnimatePresence>,\n\t\tdocument.body\n\t);\n};\n","import React, { useCallback } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport styles from \"../ContextMenu.module.scss\";\n\nimport { useMenuContext } from \"./MenuContext\";\n\nexport interface RadialMenuItemProps {\n\tchildren: React.ReactNode;\n\ticon?: React.ReactNode;\n\tclassName?: string;\n\tdisabled?: boolean;\n\tcloseOnSelect?: boolean;\n\tonSelect?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n}\n\nexport const RadialMenuItem: React.FC<RadialMenuItemProps> = ({ children, icon, className, disabled, closeOnSelect = true, onSelect }) => {\n\tconst { closeMenu } = useMenuContext();\n\n\tconst handleClick = useCallback(\n\t\t(event: React.MouseEvent<HTMLButtonElement>) => {\n\t\t\tif (disabled) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tevent.stopPropagation();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tonSelect?.(event);\n\t\t\tif (event.defaultPrevented) return;\n\n\t\t\tif (closeOnSelect) {\n\t\t\t\tcloseMenu();\n\t\t\t}\n\t\t},\n\t\t[disabled, onSelect, closeOnSelect, closeMenu]\n\t);\n\n\treturn (\n\t\t<button\n\t\t\ttype=\"button\"\n\t\t\trole=\"menuitem\"\n\t\t\ttabIndex={-1}\n\t\t\tdisabled={disabled}\n\t\t\taria-disabled={disabled}\n\t\t\tdata-menu-item=\"true\"\n\t\t\tdata-disabled={disabled ? \"true\" : undefined}\n\t\t\tdata-ui=\"radial-menu-item\"\n\t\t\tdata-action=\"select-radial-menu-item\"\n\t\t\tclassName={cn(styles.radialItem, className)}\n\t\t\tonClick={handleClick}>\n\t\t\t{icon && <span className={styles.radialItemIcon}>{icon}</span>}\n\t\t\t<span className={styles.radialItemText}>{children}</span>\n\t\t</button>\n\t);\n};\n","/* eslint-disable react-refresh/only-export-components */\nimport React from \"react\";\n\nimport { Placement } from \"@floating-ui/react\";\n\nimport { ContextMenuTrigger } from \"./ContextMenuTrigger\";\nimport { MenuContent } from \"./MenuContent\";\nimport { MenuGroupLabel } from \"./MenuGroupLabel\";\nimport { MenuItem } from \"./MenuItem\";\nimport { MenuRoot } from \"./MenuRoot\";\nimport { MenuSeparator } from \"./MenuSeparator\";\nimport { RadialMenuContent } from \"./RadialMenuContent\";\nimport { RadialMenuItem } from \"./RadialMenuItem\";\n\nexport interface ContextMenuProps {\n\tchildren: React.ReactNode;\n\tplacement?: Placement;\n\topen?: boolean;\n\tdefaultOpen?: boolean;\n\tonOpenChange?: (open: boolean) => void;\n}\n\nconst ContextMenuRoot: React.FC<ContextMenuProps> = ({ children, placement, open, defaultOpen, onOpenChange }) => {\n\treturn (\n\t\t<MenuRoot mode=\"contextmenu\" placement={placement} open={open} defaultOpen={defaultOpen} onOpenChange={onOpenChange}>\n\t\t\t{children}\n\t\t</MenuRoot>\n\t);\n};\n\nexport const ContextMenu = Object.assign(ContextMenuRoot, {\n\tTrigger: ContextMenuTrigger,\n\tContent: MenuContent,\n\tRadialContent: RadialMenuContent,\n\tItem: MenuItem,\n\tRadialItem: RadialMenuItem,\n\tSeparator: MenuSeparator,\n\tGroupLabel: MenuGroupLabel\n});\n","import React, { cloneElement } from \"react\";\n\nimport { assignRef, composeKeyboardHandlers, composeMouseHandlers } from \"./helpers\";\nimport { useMenuContext } from \"./MenuContext\";\n\nexport interface DropdownMenuTriggerProps {\n\tchildren: React.ReactElement<React.HTMLAttributes<HTMLElement> & { ref?: React.Ref<HTMLElement> }>;\n}\n\nexport const DropdownMenuTrigger: React.FC<DropdownMenuTriggerProps> = ({ children }) => {\n\tconst { mode, open, registerTriggerElement, onTriggerClick, onTriggerKeyDown } = useMenuContext();\n\n\tif (mode !== \"click\") {\n\t\tthrow new Error(\"DropdownMenu.Trigger must be used within <DropdownMenu>\");\n\t}\n\n\treturn cloneElement(children, {\n\t\tref: (node: HTMLElement | null) => {\n\t\t\tconst childRef = (children.props as { ref?: React.Ref<HTMLElement> }).ref;\n\t\t\tassignRef(childRef, node);\n\t\t\tregisterTriggerElement(node);\n\t\t},\n\t\t\"aria-haspopup\": \"menu\",\n\t\t\"aria-expanded\": open,\n\t\tonClick: composeMouseHandlers(children.props.onClick, onTriggerClick),\n\t\tonKeyDown: composeKeyboardHandlers(children.props.onKeyDown, onTriggerKeyDown)\n\t});\n};\n","/* eslint-disable react-refresh/only-export-components */\nimport React from \"react\";\n\nimport { Placement } from \"@floating-ui/react\";\n\nimport { DropdownMenuTrigger } from \"./DropdownMenuTrigger\";\nimport { MenuContent } from \"./MenuContent\";\nimport { MenuGroupLabel } from \"./MenuGroupLabel\";\nimport { MenuItem } from \"./MenuItem\";\nimport { MenuRoot } from \"./MenuRoot\";\nimport { MenuSeparator } from \"./MenuSeparator\";\n\nexport interface DropdownMenuProps {\n\tchildren: React.ReactNode;\n\tplacement?: Placement;\n\topen?: boolean;\n\tdefaultOpen?: boolean;\n\tonOpenChange?: (open: boolean) => void;\n}\n\nconst DropdownMenuRoot: React.FC<DropdownMenuProps> = ({ children, placement, open, defaultOpen, onOpenChange }) => {\n\treturn (\n\t\t<MenuRoot mode=\"click\" placement={placement} open={open} defaultOpen={defaultOpen} onOpenChange={onOpenChange}>\n\t\t\t{children}\n\t\t</MenuRoot>\n\t);\n};\n\nexport const DropdownMenu = Object.assign(DropdownMenuRoot, {\n\tTrigger: DropdownMenuTrigger,\n\tContent: MenuContent,\n\tItem: MenuItem,\n\tSeparator: MenuSeparator,\n\tGroupLabel: MenuGroupLabel\n});\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Input-BYUl3UFn.js","names":[],"sources":["../../src/input/Input.module.scss","../../src/input/lib/useInputFieldIds.ts","../../src/input/Input.tsx"],"sourcesContent":["@use \"@/styles/mixins\" as *;\n\n.controlLayout {\n\tposition: relative;\n\twidth: 100%;\n}\n\n.input {\n\theight: var(--control-height);\n\twidth: 100%;\n\tpadding: var(--space-xs) var(--space-sm);\n\tfont-size: var(--font-size-md);\n\n\t--ui-color: var(--content-0);\n\t--ui-color-hover: var(--content-0);\n\t--ui-color-active: var(--content-0);\n}\n\n.inputNumber {\n\tappearance: textfield;\n\t-moz-appearance: textfield;\n\n\t&::-webkit-inner-spin-button,\n\t&::-webkit-outer-spin-button {\n\t\t-webkit-appearance: none;\n\t\tmargin: 0;\n\t}\n}\n\n.controlWithEndAdornment {\n\tpadding-right: calc(var(--input-end-adornment-width, var(--control-height)) + var(--space-sm));\n}\n\n.controlEndAdornment {\n\tposition: absolute;\n\theight: 100%;\n\ttop: 0;\n\tright: 0;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: flex-end;\n\t// max-width: calc(100% - (var(--space-md) * 2));\n\tmax-width: calc(100% - var(--space-md));\n}\n\n.endAdornmentGroup {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: var(--space-xs);\n}\n\n.clearButton {\n\twidth: 1.75em;\n\theight: 1.75em;\n\tborder: none;\n\tbackground: transparent;\n\tcolor: var(--content-1);\n\ttransition:\n\t\tcolor var(--transition-fast) ease,\n\t\tbackground-color var(--transition-fast) ease;\n\n\t&:hover {\n\t\tcolor: var(--content-accent);\n\t\tbackground-color: var(--status-info-soft);\n\t}\n\n\t&:focus-visible {\n\t\t@include focusVisible;\n\t}\n\n\t&:disabled {\n\t\tpointer-events: none;\n\t\topacity: 0.25;\n\t}\n}\n\n.error {\n\tposition: absolute;\n\tz-index: 11;\n\tbottom: calc(var(--space-xs) * -1);\n\tleft: 0;\n\tright: 0;\n\ttransform: translateY(100%);\n\t// font-size: var(--font-size-sm);\n\tcolor: var(--status-error-on-fill);\n\tbackground: var(--status-error-fill);\n\tborder-radius: var(--radius-sm);\n\tpadding: var(--space-xs) var(--space-sm);\n\tbox-shadow: var(--shadow-sm);\n\topacity: 0.9;\n}\n","import { useId } from \"react\";\n\nexport interface UseInputFieldIdsOptions {\n\tid?: string;\n\thasLabel?: boolean;\n\thasDescription?: boolean;\n\thasError?: boolean;\n}\n\nexport interface InputFieldIds {\n\tcontrolId: string;\n\tlabelId?: string;\n\tdescriptionId?: string;\n\terrorId?: string;\n\tdescribedBy?: string;\n}\n\nexport function useInputFieldIds({ id: externalId, hasLabel, hasDescription, hasError }: UseInputFieldIdsOptions): InputFieldIds {\n\tconst autoId = useId();\n\tconst controlId = externalId ?? autoId;\n\tconst labelId = hasLabel ? `${controlId}-label` : undefined;\n\tconst descriptionId = hasDescription ? `${controlId}-description` : undefined;\n\tconst errorId = hasError ? `${controlId}-error` : undefined;\n\tconst describedBy = [descriptionId, errorId].filter(Boolean).join(\" \") || undefined;\n\n\treturn {\n\t\tcontrolId,\n\t\tlabelId,\n\t\tdescriptionId,\n\t\terrorId,\n\t\tdescribedBy\n\t};\n}\n","import React, { CSSProperties, InputHTMLAttributes, ReactNode, useEffect, useEffectEvent, useState } from \"react\";\n\nimport { toFiniteNumber } from \"@ryuzaki13/react-foundation-lib/formatters\";\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\nimport { XIcon } from \"lucide-react\";\n\nimport { UiBaseProps, UiSize } from \"../types\";\nimport uiStyles from \"../ui.module.scss\";\n\nimport styles from \"./Input.module.scss\";\nimport { useInputFieldIds } from \"./lib/useInputFieldIds\";\n\nexport interface InputUIProps extends Omit<UiBaseProps<never>, \"value\" | \"onChange\"> {\n\tclassName?: string;\n\terror?: string;\n\tcontrolId?: string;\n\tlabelId?: string;\n\tdescriptionId?: string;\n\terrorId?: string;\n\tchildren: React.ReactNode;\n}\n\nexport interface InputControlRenderProps {\n\tcontrolClassName?: string;\n}\n\nexport interface InputControlProps {\n\tclassName?: string;\n\tendAdornment?: ReactNode;\n\tendAdornmentClassName?: string;\n\tendAdornmentWidth?: string;\n\tchildren: (props: InputControlRenderProps) => ReactNode;\n}\n\nexport interface InputClearButtonProps {\n\tonClick?: () => void;\n\tdisabled?: boolean;\n\tclassName?: string;\n\tariaLabel?: string;\n}\n\nfunction InputLabel({ label, controlId, labelId }: { label: React.ReactNode; controlId?: string; labelId?: string }) {\n\treturn (\n\t\t<label id={labelId} htmlFor={controlId} className={uiStyles.uiLabel}>\n\t\t\t{label}\n\t\t</label>\n\t);\n}\n\nexport function InputUILoading({\n\tlabel,\n\tdescription,\n\tsize,\n\tdisabled,\n\tclassName\n}: Pick<InputUIProps, \"label\" | \"description\" | \"size\" | \"disabled\" | \"className\">) {\n\tconst { controlId, labelId, descriptionId } = useInputFieldIds({\n\t\thasLabel: label !== undefined && label !== null,\n\t\thasDescription: !!description\n\t});\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(uiStyles.uiElement, uiStyles.uiSizable, size && uiStyles[size as UiSize], uiStyles.disabled, className)}\n\t\t\taria-disabled={disabled || undefined}>\n\t\t\t{label && <InputLabel label={label} controlId={controlId} labelId={labelId} />}\n\t\t\t{description && (\n\t\t\t\t<p id={descriptionId} className={uiStyles.uiDescription}>\n\t\t\t\t\t{description}\n\t\t\t\t</p>\n\t\t\t)}\n\t\t\t<div className={cn(uiStyles.uiInputControlFake, \"skeletonLine\")} />\n\t\t</div>\n\t);\n}\n\n/**\n * Низкоуровневая оболочка поля ввода с общими элементами оформления.\n */\nexport function InputUI({\n\tlabel,\n\tdescription,\n\tdisabled,\n\tclassName,\n\terror,\n\tsize,\n\tcontrolId,\n\tlabelId,\n\tdescriptionId,\n\terrorId,\n\tchildren\n}: InputUIProps) {\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(\n\t\t\t\tuiStyles.uiElement,\n\t\t\t\tuiStyles.uiSizable,\n\t\t\t\tsize && uiStyles[size as UiSize],\n\t\t\t\tdisabled && uiStyles.disabled,\n\t\t\t\tclassName\n\t\t\t)}\n\t\t\taria-disabled={disabled || undefined}>\n\t\t\t{label && <InputLabel label={label} controlId={controlId} labelId={labelId} />}\n\t\t\t{description && (\n\t\t\t\t<p id={descriptionId} className={uiStyles.uiDescription}>\n\t\t\t\t\t{description}\n\t\t\t\t</p>\n\t\t\t)}\n\t\t\t<div className={styles.controlLayout}>\n\t\t\t\t{children}\n\n\t\t\t\t{error && (\n\t\t\t\t\t<p id={errorId} className={styles.error} role=\"alert\">\n\t\t\t\t\t\t{error}\n\t\t\t\t\t</p>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nexport function InputControl({ className, endAdornment, endAdornmentClassName, endAdornmentWidth, children }: InputControlProps) {\n\tconst hasEndAdornment = endAdornment !== undefined && endAdornment !== null;\n\tconst style =\n\t\thasEndAdornment && endAdornmentWidth ? ({ \"--input-end-adornment-width\": endAdornmentWidth } as CSSProperties) : undefined;\n\n\treturn (\n\t\t<div className={cn(styles.controlLayout, className)} style={style}>\n\t\t\t{children({ controlClassName: hasEndAdornment ? styles.controlWithEndAdornment : undefined })}\n\t\t\t{hasEndAdornment && <div className={cn(styles.controlEndAdornment, endAdornmentClassName)}>{endAdornment}</div>}\n\t\t</div>\n\t);\n}\n\nexport function InputClearButton({ onClick, disabled, className, ariaLabel = \"Очистить значение\" }: InputClearButtonProps) {\n\treturn (\n\t\t<button\n\t\t\ttype=\"button\"\n\t\t\tdisabled={disabled || !onClick}\n\t\t\tclassName={cn(styles.clearButton, \"flexCenter radiusSm\", className)}\n\t\t\tonClick={onClick}\n\t\t\taria-label={ariaLabel}>\n\t\t\t<XIcon />\n\t\t</button>\n\t);\n}\n\nfunction resolveEndAdornmentWidth(hasAdornment: boolean, hasClearAction: boolean, explicitWidth?: string) {\n\tif (explicitWidth) {\n\t\treturn explicitWidth;\n\t}\n\n\tif (hasAdornment && hasClearAction) {\n\t\treturn \"calc((var(--control-height) * 2) + var(--space-xs))\";\n\t}\n\n\tif (hasAdornment || hasClearAction) {\n\t\treturn \"var(--control-height)\";\n\t}\n\n\treturn undefined;\n}\n\nfunction createEndAdornment({ endAdornment, onClear, disabled }: { endAdornment?: ReactNode; onClear?: () => void; disabled?: boolean }) {\n\tif ((endAdornment === undefined || endAdornment === null) && !onClear) {\n\t\treturn undefined;\n\t}\n\n\treturn (\n\t\t<div className={styles.endAdornmentGroup}>\n\t\t\t{endAdornment}\n\t\t\t{onClear && <InputClearButton onClick={onClear} disabled={disabled} />}\n\t\t</div>\n\t);\n}\n\nexport interface BaseInputProps<T extends number | string, V = T>\n\textends Omit<InputHTMLAttributes<HTMLInputElement>, \"size\" | \"value\" | \"type\" | \"defaultValue\" | \"onChange\">, UiBaseProps<T, V> {\n\tonClear?: () => void;\n\terror?: string;\n\tonClearError?: () => void;\n\tdefaultValue?: T;\n\tendAdornment?: ReactNode;\n\tendAdornmentClassName?: string;\n\tendAdornmentWidth?: string;\n}\n\nexport interface InputTextProps extends BaseInputProps<string> {\n\ttype?: \"email\" | \"password\" | \"search\" | \"tel\" | \"text\" | \"url\";\n\n\t/**\n\t * Регулярное выражение для валидации всего введённого значения.\n\t * При несоответствии поле подсвечивается как невалидное, но текст не удаляется.\n\t * Пример: `/^\\d*$/`\n\t */\n\tallowedPattern?: RegExp;\n}\n\n/**\n * Базовое текстовое поле ввода для строковых значений.\n */\nexport function InputText({\n\tlabel,\n\tdescription,\n\tdisabled,\n\tclassName,\n\tonClear,\n\terror,\n\tonClearError,\n\tonChange,\n\tvalue,\n\tsize,\n\tallowedPattern,\n\tendAdornment,\n\tendAdornmentClassName,\n\tendAdornmentWidth,\n\ttype = \"text\",\n\t...props\n}: InputTextProps) {\n\tconst [internalInvalid, setInternalInvalid] = useState(false);\n\n\tconst handleInput = (e: React.ChangeEvent<HTMLInputElement>) => {\n\t\tconst newValue = e.target.value;\n\n\t\tif (allowedPattern !== undefined) {\n\t\t\tsetInternalInvalid(newValue !== \"\" && !allowedPattern.test(newValue));\n\t\t}\n\n\t\tonChange?.(newValue);\n\t\tif (error && onClearError) onClearError();\n\t};\n\n\tconst hasValue = Boolean(value && value.length > 0);\n\tconst visibleError = hasValue ? error : undefined;\n\tconst { controlId, labelId, descriptionId, errorId, describedBy } = useInputFieldIds({\n\t\tid: props.id,\n\t\thasLabel: label !== undefined && label !== null,\n\t\thasDescription: !!description,\n\t\thasError: !!visibleError\n\t});\n\tconst isInvalid = hasValue && (!!error || internalInvalid);\n\tconst resolvedEndAdornment = createEndAdornment({ endAdornment, onClear, disabled });\n\tconst hasCustomAdornment = endAdornment !== undefined && endAdornment !== null;\n\tconst resolvedEndAdornmentWidth = resolveEndAdornmentWidth(hasCustomAdornment, !!onClear, endAdornmentWidth);\n\n\treturn (\n\t\t<InputUI\n\t\t\tlabel={label}\n\t\t\tdescription={description}\n\t\t\tdisabled={disabled}\n\t\t\tclassName={className}\n\t\t\tsize={size}\n\t\t\terror={visibleError}\n\t\t\tcontrolId={controlId}\n\t\t\tlabelId={labelId}\n\t\t\tdescriptionId={descriptionId}\n\t\t\terrorId={errorId}>\n\t\t\t<InputControl\n\t\t\t\tendAdornment={resolvedEndAdornment}\n\t\t\t\tendAdornmentClassName={endAdornmentClassName}\n\t\t\t\tendAdornmentWidth={resolvedEndAdornmentWidth}>\n\t\t\t\t{({ controlClassName }) => (\n\t\t\t\t\t<input\n\t\t\t\t\t\t{...props}\n\t\t\t\t\t\tid={controlId}\n\t\t\t\t\t\ttype={type}\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\tvalue={value}\n\t\t\t\t\t\taria-invalid={isInvalid || undefined}\n\t\t\t\t\t\taria-labelledby={labelId}\n\t\t\t\t\t\taria-describedby={describedBy}\n\t\t\t\t\t\tdata-invalid={isInvalid ? \"\" : undefined}\n\t\t\t\t\t\tclassName={cn(uiStyles.uiInputControl, styles.input, controlClassName)}\n\t\t\t\t\t\tonChange={handleInput}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</InputControl>\n\t\t</InputUI>\n\t);\n}\n\n/**\n * Числовое поле ввода с нормализацией значения и защитой от промежуточного невалидного ввода.\n */\nexport function InputNumber({\n\tlabel,\n\tdescription,\n\tdisabled,\n\tclassName,\n\tonClear,\n\terror,\n\tonClearError,\n\tonChange,\n\tvalue,\n\tsize,\n\tendAdornment,\n\tendAdornmentClassName,\n\tendAdornmentWidth,\n\t...props\n}: BaseInputProps<number>) {\n\tconst inputProps = props as InputHTMLAttributes<HTMLInputElement>;\n\tconst { controlId, labelId, descriptionId, errorId, describedBy } = useInputFieldIds({\n\t\tid: props.id,\n\t\thasLabel: label !== undefined && label !== null,\n\t\thasDescription: !!description,\n\t\thasError: !!error\n\t});\n\n\tconst [rawValue, setRawValue] = useState<string>(() => String(value));\n\t// const [internalInvalid, setInternalInvalid] = useState(false);\n\n\tconst syncRawValue = useEffectEvent((nextRaw: string) => {\n\t\tsetRawValue(nextRaw);\n\t\t// setInternalInvalid(false);\n\t});\n\n\tuseEffect(() => {\n\t\tconst nextRaw = value !== undefined && typeof value === \"number\" && !isNaN(value) ? String(value) : \"\";\n\t\tsyncRawValue(nextRaw);\n\t}, [value]);\n\n\tconst handleClear = onClear\n\t\t? () => {\n\t\t\t\tsetRawValue(\"\");\n\t\t\t\t// setInternalInvalid(false);\n\t\t\t\tonClear();\n\t\t\t}\n\t\t: undefined;\n\n\tconst handleInput = (e: React.ChangeEvent<HTMLInputElement>) => {\n\t\tconst raw = e.target.value;\n\t\tsetRawValue(raw);\n\n\t\tconst parsed = toFiniteNumber(raw) ?? value ?? 0;\n\t\t// const isEmpty = raw.trim() === \"\";\n\n\t\t// const minNum = min !== undefined ? Number(min) : undefined;\n\t\t// const maxNum = max !== undefined ? Number(max) : undefined;\n\t\t// const isValidNumber = !isEmpty && !isNaN(parsed);\n\t\t// const isInRange = isValidNumber && (minNum === undefined || parsed >= minNum) && (maxNum === undefined || parsed <= maxNum);\n\n\t\t// setInternalInvalid(!isEmpty && (!isValidNumber || !isInRange));\n\n\t\tonChange(parsed);\n\t\tif (error && onClearError) onClearError();\n\t};\n\n\t// const isInvalid = !!error || internalInvalid;\n\tconst resolvedEndAdornment = createEndAdornment({ endAdornment, onClear: handleClear, disabled });\n\tconst hasCustomAdornment = endAdornment !== undefined && endAdornment !== null;\n\tconst resolvedEndAdornmentWidth = resolveEndAdornmentWidth(hasCustomAdornment, !!handleClear, endAdornmentWidth);\n\n\treturn (\n\t\t<InputUI\n\t\t\tlabel={label}\n\t\t\tdescription={description}\n\t\t\tdisabled={disabled}\n\t\t\tclassName={className}\n\t\t\tsize={size}\n\t\t\terror={error}\n\t\t\tcontrolId={controlId}\n\t\t\tlabelId={labelId}\n\t\t\tdescriptionId={descriptionId}\n\t\t\terrorId={errorId}>\n\t\t\t<InputControl\n\t\t\t\tendAdornment={resolvedEndAdornment}\n\t\t\t\tendAdornmentClassName={endAdornmentClassName}\n\t\t\t\tendAdornmentWidth={resolvedEndAdornmentWidth}>\n\t\t\t\t{({ controlClassName }) => (\n\t\t\t\t\t<input\n\t\t\t\t\t\t{...inputProps}\n\t\t\t\t\t\tid={controlId}\n\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\tinputMode=\"decimal\"\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\tvalue={rawValue}\n\t\t\t\t\t\t// aria-invalid={isInvalid || undefined}\n\t\t\t\t\t\taria-labelledby={labelId}\n\t\t\t\t\t\taria-describedby={describedBy}\n\t\t\t\t\t\tclassName={cn(uiStyles.uiInputControl, styles.input, styles.inputNumber, controlClassName)}\n\t\t\t\t\t\tonChange={handleInput}\n\t\t\t\t\t/>\n\t\t\t\t)}\n\t\t\t</InputControl>\n\t\t</InputUI>\n\t);\n}\n\n/**\n * Совместимый алиас для `InputText`.\n */\nexport const Input = InputText;\n"],"mappings":"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"}
@@ -1,258 +0,0 @@
1
- import { t as e } from "./ui.module-BisoTevy.js";
2
- import { c as t, n, o as r, r as i } from "./Input-BYUl3UFn.js";
3
- import { useCallback as a, useMemo as o, useRef as s, useState as c } from "react";
4
- import { cn as l } from "@ryuzaki13/react-foundation-lib/utils";
5
- import { jsx as u } from "react/jsx-runtime";
6
- import { dateToIndexedSegmentValues as d, indexedSegmentsToDate as f, parseDateSegmentMask as p } from "@ryuzaki13/react-foundation-lib/date-segments";
7
- var m = {
8
- segmentInput: "t1iysX",
9
- separator: "_-4oX-p"
10
- };
11
- //#endregion
12
- //#region src/input-date-time/maskParser.ts
13
- function h(e) {
14
- return p(e).map((e) => e.kind === "editable" ? {
15
- ...e,
16
- type: e.id
17
- } : e);
18
- }
19
- function g(e, t) {
20
- let n = d(e, t), r = /* @__PURE__ */ new Map();
21
- return t.forEach((e, t) => {
22
- e.kind === "editable" && r.set(e.type, n.get(t) ?? "");
23
- }), r;
24
- }
25
- function _(e, t) {
26
- let n = /* @__PURE__ */ new Map();
27
- return e.forEach((e, r) => {
28
- e.kind === "editable" && n.set(r, t.get(e.type) ?? "");
29
- }), f(e, n);
30
- }
31
- //#endregion
32
- //#region src/input-date-time/useMaskedSegments.ts
33
- function v(e, t) {
34
- let n = g(e, t), r = /* @__PURE__ */ new Map();
35
- return t.forEach((e, t) => {
36
- e.kind === "editable" && r.set(t, n.get(e.type) ?? "");
37
- }), r;
38
- }
39
- function y(e) {
40
- let t = [];
41
- return e.forEach((e, n) => {
42
- e.kind === "editable" && t.push(n);
43
- }), t;
44
- }
45
- function b({ mask: e, value: t, onChange: n, onClearError: r, disabled: i }) {
46
- let l = o(() => h(e), [e]), u = o(() => y(l), [l]), d = o(() => v(t, l), [t, l]), [f, p] = c(null), [m, g] = c(() => t?.getTime()), b = t?.getTime();
47
- b !== m && (g(b), p(null));
48
- let x = f ?? d, S = s(/* @__PURE__ */ new Map()), C = s(0), [w, T] = c(!1), E = a((e) => {
49
- let t = /* @__PURE__ */ new Map();
50
- l.forEach((n, r) => {
51
- n.kind === "editable" && t.set(n.type, e.get(r) ?? "");
52
- });
53
- let r = _(l, t);
54
- r !== null && n(r);
55
- }, [l, n]), D = a((e, t = !0) => {
56
- let n = S.current.get(e);
57
- n && (n.focus(), t && requestAnimationFrame(() => n.select()));
58
- }, []), O = a((e) => {
59
- let t = u.indexOf(e);
60
- return t < u.length - 1 ? u[t + 1] : null;
61
- }, [u]), k = a((e) => {
62
- let t = u.indexOf(e);
63
- return t > 0 ? u[t - 1] : null;
64
- }, [u]), A = a((e, t) => e.padStart(t.length, "0"), []);
65
- return {
66
- segments: l,
67
- segmentValues: x,
68
- isFocused: w,
69
- registerRef: a((e) => (t) => {
70
- t ? S.current.set(e, t) : S.current.delete(e);
71
- }, []),
72
- handleInput: a((e) => (t) => {
73
- if (i) return;
74
- let n = l[e], a = t.target.value.replace(/\D/g, "").slice(0, n.length), o = new Map(x);
75
- if (o.set(e, a), p(o), r?.(), a.length === n.length) {
76
- let t = O(e);
77
- t !== null && requestAnimationFrame(() => D(t));
78
- }
79
- E(o);
80
- }, [
81
- i,
82
- l,
83
- x,
84
- r,
85
- O,
86
- D,
87
- E
88
- ]),
89
- handleKeyDown: a((e) => (t) => {
90
- if (i) return;
91
- let n = l[e], r = x.get(e) ?? "", a = t.currentTarget;
92
- switch (t.key) {
93
- case "ArrowRight":
94
- if (a.selectionStart === r.length || r === "") {
95
- t.preventDefault();
96
- let n = O(e);
97
- n !== null && D(n);
98
- }
99
- break;
100
- case "ArrowLeft":
101
- if (a.selectionStart === 0 || r === "") {
102
- t.preventDefault();
103
- let n = k(e);
104
- n !== null && D(n);
105
- }
106
- break;
107
- case "ArrowUp": {
108
- t.preventDefault();
109
- let i = r === "" ? n.min : parseInt(r, 10) + 1;
110
- i > n.max && (i = n.min);
111
- let o = A(i.toString(), n), s = new Map(x);
112
- s.set(e, o), p(s), E(s), requestAnimationFrame(() => a.select());
113
- break;
114
- }
115
- case "ArrowDown": {
116
- t.preventDefault();
117
- let i = r === "" ? n.max : parseInt(r, 10) - 1;
118
- i < n.min && (i = n.max);
119
- let o = A(i.toString(), n), s = new Map(x);
120
- s.set(e, o), p(s), E(s), requestAnimationFrame(() => a.select());
121
- break;
122
- }
123
- case "Backspace":
124
- if (r === "") {
125
- t.preventDefault();
126
- let n = k(e);
127
- n !== null && D(n);
128
- }
129
- break;
130
- case "Delete": {
131
- t.preventDefault();
132
- let n = new Map(x);
133
- n.set(e, ""), p(n), E(n);
134
- break;
135
- }
136
- }
137
- }, [
138
- i,
139
- l,
140
- x,
141
- O,
142
- k,
143
- D,
144
- A,
145
- E
146
- ]),
147
- handleFocus: a(() => (e) => {
148
- e.target.select();
149
- }, []),
150
- handleContainerFocus: a(() => {
151
- clearTimeout(C.current), T(!0);
152
- }, []),
153
- handleContainerBlur: a(() => {
154
- C.current = window.setTimeout(() => {
155
- T(!1), p(null);
156
- }, 0);
157
- }, []),
158
- focusFirstEmpty: a(() => {
159
- let e = u.find((e) => !(x.get(e) ?? "")) ?? u[u.length - 1];
160
- e !== void 0 && D(e);
161
- }, [
162
- u,
163
- x,
164
- D
165
- ])
166
- };
167
- }
168
- //#endregion
169
- //#region src/input-date-time/InputDateTime.tsx
170
- function x({ mask: a, value: o, onChange: s, label: c, description: d, disabled: f, size: p, className: h, error: g, onClearError: _, onClear: v, "aria-label": y }) {
171
- let { segments: x, segmentValues: S, registerRef: C, handleInput: w, handleKeyDown: T, handleFocus: E, handleContainerFocus: D, handleContainerBlur: O, focusFirstEmpty: k } = b({
172
- mask: a,
173
- value: o,
174
- onChange: s,
175
- onClearError: _,
176
- disabled: f
177
- }), { controlId: A, labelId: j, descriptionId: M, errorId: N, describedBy: P } = t({
178
- hasLabel: c != null,
179
- hasDescription: !!d,
180
- hasError: !!g
181
- });
182
- return /* @__PURE__ */ u(r, {
183
- label: c,
184
- description: d,
185
- disabled: f,
186
- className: h,
187
- size: p,
188
- error: g,
189
- labelId: j,
190
- descriptionId: M,
191
- errorId: N,
192
- children: /* @__PURE__ */ u(i, {
193
- endAdornment: v ? /* @__PURE__ */ u(n, {
194
- onClick: v,
195
- disabled: f
196
- }) : void 0,
197
- endAdornmentWidth: v ? "var(--control-height)" : void 0,
198
- children: ({ controlClassName: t }) => /* @__PURE__ */ u("div", {
199
- id: A,
200
- className: l(e.uiInputControlFake, t),
201
- "data-invalid": g ? "" : void 0,
202
- "data-disabled": f || void 0,
203
- role: "group",
204
- "aria-invalid": !!g || void 0,
205
- "aria-label": y || (typeof c == "string" ? c : void 0),
206
- "aria-labelledby": y ? void 0 : j,
207
- "aria-describedby": P,
208
- onFocus: D,
209
- onBlur: O,
210
- onClick: (e) => {
211
- e.target === e.currentTarget && k();
212
- },
213
- children: x.map((e, t) => e.kind === "literal" ? /* @__PURE__ */ u("span", {
214
- className: m.separator,
215
- "data-disabled": f || void 0,
216
- children: e.text
217
- }, t) : /* @__PURE__ */ u("input", {
218
- ref: C(t),
219
- type: "text",
220
- inputMode: "numeric",
221
- className: m.segmentInput,
222
- style: { width: `${e.length + .5}ch` },
223
- value: S.get(t) ?? "",
224
- placeholder: e.placeholder,
225
- maxLength: e.length,
226
- disabled: f,
227
- "aria-label": e.type,
228
- autoComplete: "off",
229
- onChange: w(t),
230
- onKeyDown: T(t),
231
- onFocus: E()
232
- }, t))
233
- })
234
- })
235
- });
236
- }
237
- function S({ mask: e = "YYYY.MM.DD", ...t }) {
238
- return /* @__PURE__ */ u(x, {
239
- mask: e,
240
- ...t
241
- });
242
- }
243
- function C({ mask: e = "hh:mm", ...t }) {
244
- return /* @__PURE__ */ u(x, {
245
- mask: e,
246
- ...t
247
- });
248
- }
249
- function w({ mask: e = "YYYY.MM.DD hh:mm", ...t }) {
250
- return /* @__PURE__ */ u(x, {
251
- mask: e,
252
- ...t
253
- });
254
- }
255
- //#endregion
256
- export { w as n, C as r, S as t };
257
-
258
- //# sourceMappingURL=InputDateTime-DBkWb0lk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"InputDateTime-DBkWb0lk.js","names":[],"sources":["../../src/input-date-time/InputDateTime.module.scss","../../src/input-date-time/maskParser.ts","../../src/input-date-time/useMaskedSegments.ts","../../src/input-date-time/InputDateTime.tsx"],"sourcesContent":["@use \"@/styles/mixins\" as *;\n\n.segmentInput {\n\tborder: none;\n\tbackground: transparent;\n\toutline: none;\n\tpadding: 0;\n\tmargin: 0;\n\tfont-family: var(--font-family-mono);\n\tcolor: inherit;\n\ttext-align: center;\n\tcaret-color: var(--content-0);\n\tfont-variant-numeric: tabular-nums;\n\n\t&::placeholder {\n\t\tcolor: var(--content-2);\n\t\t// font-size: var(--font-size-sm);\n\t}\n\n\t&::selection {\n\t\tbackground-color: var(--focus-ring);\n\t\tcolor: var(--surface-0);\n\t}\n\n\t// Remove spin buttons\n\t&::-webkit-inner-spin-button,\n\t&::-webkit-outer-spin-button {\n\t\t-webkit-appearance: none;\n\t\tmargin: 0;\n\t}\n\n\t&:disabled {\n\t\topacity: 0.25;\n\t}\n}\n\n.separator {\n\tuser-select: none;\n\tcolor: var(--content-2);\n\tflex-shrink: 0;\n\n\t&[data-disabled] {\n\t\topacity: 0.25;\n\t}\n}\n","import {\n\ttype DateMaskSegment,\n\ttype DateSegmentId,\n\tdateToIndexedSegmentValues,\n\ttype EditableDateSegment,\n\tindexedSegmentsToDate,\n\ttype LiteralDateSegment,\n\tparseDateSegmentMask\n} from \"@ryuzaki13/react-foundation-lib/date-segments\";\n\n/**\n * Совместимый тип сегмента для существующего `InputDateTime`.\n */\nexport type SegmentType = DateSegmentId;\n\n/**\n * Совместимый редактируемый сегмент для существующего `InputDateTime`.\n */\nexport interface EditableSegment extends Omit<EditableDateSegment, \"id\"> {\n\ttype: SegmentType;\n}\n\n/**\n * Совместимый литеральный сегмент для существующего `InputDateTime`.\n */\nexport type LiteralSegment = LiteralDateSegment;\n\n/**\n * Совместимый тип сегмента маски для существующего `InputDateTime`.\n */\nexport type Segment = EditableSegment | LiteralSegment;\n\n/**\n * Разбирает строковую маску, сохраняя прежний контракт `InputDateTime`.\n */\nexport function parseMask(mask: string): Segment[] {\n\treturn parseDateSegmentMask(mask).map((segment) => (segment.kind === \"editable\" ? { ...segment, type: segment.id } : segment));\n}\n\n/**\n * Преобразует Date в карту значений сегментов по их совместимым типам.\n */\nexport function dateToSegmentValues(date: Date | undefined, segments: Segment[]): Map<SegmentType, string> {\n\tconst indexedValues = dateToIndexedSegmentValues(date, segments as DateMaskSegment[]);\n\tconst values = new Map<SegmentType, string>();\n\n\tsegments.forEach((segment, index) => {\n\t\tif (segment.kind !== \"editable\") return;\n\t\tvalues.set(segment.type, indexedValues.get(index) ?? \"\");\n\t});\n\n\treturn values;\n}\n\n/**\n * Собирает строгий Date из карты сегментов старого формата.\n */\nexport function segmentsToDate(segments: Segment[], values: Map<SegmentType, string>): Date | null {\n\tconst indexedValues = new Map<number, string>();\n\n\tsegments.forEach((segment, index) => {\n\t\tif (segment.kind !== \"editable\") return;\n\t\tindexedValues.set(index, values.get(segment.type) ?? \"\");\n\t});\n\n\treturn indexedSegmentsToDate(segments as DateMaskSegment[], indexedValues);\n}\n","import React, { useCallback, useMemo, useRef, useState } from \"react\";\n\nimport { dateToSegmentValues, EditableSegment, parseMask, segmentsToDate, SegmentType } from \"./maskParser\";\n\ninterface UseMaskedSegmentsOptions {\n\tmask: string;\n\tvalue: Date | undefined;\n\tonChange: (date: Date) => void;\n\tonClearError?: () => void;\n\tdisabled?: boolean;\n}\n\n// Вычисляет Map<index, string> из Date и массива сегментов\nfunction buildSegmentMap(date: Date | undefined, segments: ReturnType<typeof parseMask>): Map<number, string> {\n\tconst typeValues = dateToSegmentValues(date, segments);\n\tconst map = new Map<number, string>();\n\n\tsegments.forEach((seg, i) => {\n\t\tif (seg.kind === \"editable\") {\n\t\t\tmap.set(i, typeValues.get(seg.type) ?? \"\");\n\t\t}\n\t});\n\n\treturn map;\n}\n\n// TODO: Duplicate date-time-input/model/useDateTimeSegments\nfunction resolveEditableIndices(segments: ReturnType<typeof parseMask>): number[] {\n\tconst indices: number[] = [];\n\n\tsegments.forEach((segment, index) => {\n\t\tif (segment.kind === \"editable\") {\n\t\t\tindices.push(index);\n\t\t}\n\t});\n\n\treturn indices;\n}\n\nexport function useMaskedSegments({ mask, value, onChange, onClearError, disabled }: UseMaskedSegmentsOptions) {\n\tconst segments = useMemo(() => parseMask(mask), [mask]);\n\n\tconst editableIndices = useMemo(() => resolveEditableIndices(segments), [segments]);\n\n\t// Значения сегментов, вычисленные из пропса value (источник истины)\n\tconst committedValues = useMemo(() => buildSegmentMap(value, segments), [value, segments]);\n\n\t// Локальные «грязные» значения при редактировании (null → используем committedValues)\n\tconst [dirtyValues, setDirtyValues] = useState<Map<number, string> | null>(null);\n\n\t// Сброс грязного состояния при внешнем изменении value (паттерн «adjusting state during render»)\n\tconst [prevValueTime, setPrevValueTime] = useState(() => value?.getTime());\n\tconst currentValueTime = value?.getTime();\n\tif (currentValueTime !== prevValueTime) {\n\t\tsetPrevValueTime(currentValueTime);\n\t\tsetDirtyValues(null);\n\t}\n\n\t// Текущие отображаемые значения\n\tconst segmentValues = dirtyValues ?? committedValues;\n\n\tconst refsMap = useRef<Map<number, HTMLInputElement>>(new Map());\n\tconst blurTimeout = useRef<number>(0);\n\tconst [isFocused, setIsFocused] = useState(false);\n\n\tconst tryFireOnChange = useCallback(\n\t\t(updatedValues: Map<number, string>) => {\n\t\t\tconst typeValues = new Map<SegmentType, string>();\n\n\t\t\tsegments.forEach((seg, i) => {\n\t\t\t\tif (seg.kind === \"editable\") {\n\t\t\t\t\ttypeValues.set(seg.type, updatedValues.get(i) ?? \"\");\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tconst date = segmentsToDate(segments, typeValues);\n\t\t\tif (date !== null) {\n\t\t\t\tonChange(date);\n\t\t\t}\n\t\t},\n\t\t[segments, onChange]\n\t);\n\n\tconst focusSegment = useCallback((index: number, selectAll = true) => {\n\t\tconst el = refsMap.current.get(index);\n\t\tif (el) {\n\t\t\tel.focus();\n\t\t\tif (selectAll) {\n\t\t\t\trequestAnimationFrame(() => el.select());\n\t\t\t}\n\t\t}\n\t}, []);\n\n\tconst getNextEditable = useCallback(\n\t\t(currentIndex: number): number | null => {\n\t\t\tconst pos = editableIndices.indexOf(currentIndex);\n\t\t\treturn pos < editableIndices.length - 1 ? editableIndices[pos + 1] : null;\n\t\t},\n\t\t[editableIndices]\n\t);\n\n\tconst getPrevEditable = useCallback(\n\t\t(currentIndex: number): number | null => {\n\t\t\tconst pos = editableIndices.indexOf(currentIndex);\n\t\t\treturn pos > 0 ? editableIndices[pos - 1] : null;\n\t\t},\n\t\t[editableIndices]\n\t);\n\n\tconst padValue = useCallback((val: string, segment: EditableSegment): string => {\n\t\treturn val.padStart(segment.length, \"0\");\n\t}, []);\n\n\tconst registerRef = useCallback(\n\t\t(index: number) => (el: HTMLInputElement | null) => {\n\t\t\tif (el) {\n\t\t\t\trefsMap.current.set(index, el);\n\t\t\t} else {\n\t\t\t\trefsMap.current.delete(index);\n\t\t\t}\n\t\t},\n\t\t[]\n\t);\n\n\tconst handleInput = useCallback(\n\t\t(index: number) => (e: React.ChangeEvent<HTMLInputElement>) => {\n\t\t\tif (disabled) return;\n\n\t\t\tconst segment = segments[index] as EditableSegment;\n\t\t\tconst raw = e.target.value.replace(/\\D/g, \"\");\n\t\t\tconst clamped = raw.slice(0, segment.length);\n\n\t\t\tconst updated = new Map(segmentValues);\n\t\t\tupdated.set(index, clamped);\n\t\t\tsetDirtyValues(updated);\n\n\t\t\tonClearError?.();\n\n\t\t\t// Авто-переход к следующему сегменту при заполнении текущего\n\t\t\tif (clamped.length === segment.length) {\n\t\t\t\tconst next = getNextEditable(index);\n\t\t\t\tif (next !== null) {\n\t\t\t\t\trequestAnimationFrame(() => focusSegment(next));\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ttryFireOnChange(updated);\n\t\t},\n\t\t[disabled, segments, segmentValues, onClearError, getNextEditable, focusSegment, tryFireOnChange]\n\t);\n\n\tconst handleKeyDown = useCallback(\n\t\t(index: number) => (e: React.KeyboardEvent<HTMLInputElement>) => {\n\t\t\tif (disabled) return;\n\n\t\t\tconst segment = segments[index] as EditableSegment;\n\t\t\tconst currentVal = segmentValues.get(index) ?? \"\";\n\t\t\tconst el = e.currentTarget;\n\n\t\t\tswitch (e.key) {\n\t\t\t\tcase \"ArrowRight\": {\n\t\t\t\t\tif (el.selectionStart === currentVal.length || currentVal === \"\") {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tconst next = getNextEditable(index);\n\t\t\t\t\t\tif (next !== null) focusSegment(next);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase \"ArrowLeft\": {\n\t\t\t\t\tif (el.selectionStart === 0 || currentVal === \"\") {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tconst prev = getPrevEditable(index);\n\t\t\t\t\t\tif (prev !== null) focusSegment(prev);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase \"ArrowUp\": {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tlet num = currentVal === \"\" ? segment.min : parseInt(currentVal, 10) + 1;\n\t\t\t\t\tif (num > segment.max) num = segment.min;\n\n\t\t\t\t\tconst padded = padValue(num.toString(), segment);\n\t\t\t\t\tconst updated = new Map(segmentValues);\n\t\t\t\t\tupdated.set(index, padded);\n\t\t\t\t\tsetDirtyValues(updated);\n\t\t\t\t\ttryFireOnChange(updated);\n\n\t\t\t\t\trequestAnimationFrame(() => el.select());\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase \"ArrowDown\": {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tlet num = currentVal === \"\" ? segment.max : parseInt(currentVal, 10) - 1;\n\t\t\t\t\tif (num < segment.min) num = segment.max;\n\n\t\t\t\t\tconst padded = padValue(num.toString(), segment);\n\t\t\t\t\tconst updated = new Map(segmentValues);\n\t\t\t\t\tupdated.set(index, padded);\n\t\t\t\t\tsetDirtyValues(updated);\n\t\t\t\t\ttryFireOnChange(updated);\n\n\t\t\t\t\trequestAnimationFrame(() => el.select());\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase \"Backspace\": {\n\t\t\t\t\tif (currentVal === \"\") {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\tconst prev = getPrevEditable(index);\n\t\t\t\t\t\tif (prev !== null) focusSegment(prev);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase \"Delete\": {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tconst updated = new Map(segmentValues);\n\t\t\t\t\tupdated.set(index, \"\");\n\t\t\t\t\tsetDirtyValues(updated);\n\t\t\t\t\ttryFireOnChange(updated);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[disabled, segments, segmentValues, getNextEditable, getPrevEditable, focusSegment, padValue, tryFireOnChange]\n\t);\n\n\tconst handleFocus = useCallback(\n\t\t() => (e: React.FocusEvent<HTMLInputElement>) => {\n\t\t\te.target.select();\n\t\t},\n\t\t[]\n\t);\n\n\tconst handleContainerFocus = useCallback(() => {\n\t\tclearTimeout(blurTimeout.current);\n\t\tsetIsFocused(true);\n\t}, []);\n\n\tconst handleContainerBlur = useCallback(() => {\n\t\tblurTimeout.current = window.setTimeout(() => {\n\t\t\tsetIsFocused(false);\n\t\t\t// Откат к последнему валидному значению (из пропса) при потере фокуса\n\t\t\tsetDirtyValues(null);\n\t\t}, 0);\n\t}, []);\n\n\tconst focusFirstEmpty = useCallback(() => {\n\t\tconst firstEmpty = editableIndices.find((i) => !(segmentValues.get(i) ?? \"\"));\n\t\tconst target = firstEmpty ?? editableIndices[editableIndices.length - 1];\n\t\tif (target !== undefined) focusSegment(target);\n\t}, [editableIndices, segmentValues, focusSegment]);\n\n\treturn {\n\t\tsegments,\n\t\tsegmentValues,\n\t\tisFocused,\n\t\tregisterRef,\n\t\thandleInput,\n\t\thandleKeyDown,\n\t\thandleFocus,\n\t\thandleContainerFocus,\n\t\thandleContainerBlur,\n\t\tfocusFirstEmpty\n\t};\n}\n","import { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport { InputClearButton, InputControl, InputUI, useInputFieldIds } from \"../input\";\nimport { UiBaseProps } from \"../types\";\nimport uiStyles from \"../ui.module.scss\";\n\nimport styles from \"./InputDateTime.module.scss\";\nimport { useMaskedSegments } from \"./useMaskedSegments\";\n\ninterface InputDateTimeBaseProps extends UiBaseProps<Date, Date | undefined> {\n\tmask: string;\n\n\tclassName?: string;\n\n\terror?: string;\n\tonClearError?: () => void;\n\tonClear?: () => void;\n\n\t\"aria-label\"?: string;\n}\n\nfunction InputDateTimeBase({\n\tmask,\n\tvalue,\n\tonChange,\n\tlabel,\n\tdescription,\n\tdisabled,\n\tsize,\n\tclassName,\n\terror,\n\tonClearError,\n\tonClear,\n\t\"aria-label\": ariaLabel\n}: InputDateTimeBaseProps) {\n\tconst {\n\t\tsegments,\n\t\tsegmentValues,\n\t\tregisterRef,\n\t\thandleInput,\n\t\thandleKeyDown,\n\t\thandleFocus,\n\t\thandleContainerFocus,\n\t\thandleContainerBlur,\n\t\tfocusFirstEmpty\n\t} = useMaskedSegments({ mask, value, onChange, onClearError, disabled });\n\tconst { controlId, labelId, descriptionId, errorId, describedBy } = useInputFieldIds({\n\t\thasLabel: label !== undefined && label !== null,\n\t\thasDescription: !!description,\n\t\thasError: !!error\n\t});\n\n\treturn (\n\t\t<InputUI\n\t\t\tlabel={label}\n\t\t\tdescription={description}\n\t\t\tdisabled={disabled}\n\t\t\tclassName={className}\n\t\t\tsize={size}\n\t\t\terror={error}\n\t\t\tlabelId={labelId}\n\t\t\tdescriptionId={descriptionId}\n\t\t\terrorId={errorId}>\n\t\t\t<InputControl\n\t\t\t\tendAdornment={onClear ? <InputClearButton onClick={onClear} disabled={disabled} /> : undefined}\n\t\t\t\tendAdornmentWidth={onClear ? \"var(--control-height)\" : undefined}>\n\t\t\t\t{({ controlClassName }) => (\n\t\t\t\t\t<div\n\t\t\t\t\t\tid={controlId}\n\t\t\t\t\t\tclassName={cn(uiStyles.uiInputControlFake, controlClassName)}\n\t\t\t\t\t\tdata-invalid={error ? \"\" : undefined}\n\t\t\t\t\t\tdata-disabled={disabled || undefined}\n\t\t\t\t\t\trole=\"group\"\n\t\t\t\t\t\taria-invalid={!!error || undefined}\n\t\t\t\t\t\taria-label={ariaLabel || (typeof label === \"string\" ? label : undefined)}\n\t\t\t\t\t\taria-labelledby={ariaLabel ? undefined : labelId}\n\t\t\t\t\t\taria-describedby={describedBy}\n\t\t\t\t\t\tonFocus={handleContainerFocus}\n\t\t\t\t\t\tonBlur={handleContainerBlur}\n\t\t\t\t\t\tonClick={(e) => {\n\t\t\t\t\t\t\tif (e.target === e.currentTarget) focusFirstEmpty();\n\t\t\t\t\t\t}}>\n\t\t\t\t\t\t{segments.map((segment, index) => {\n\t\t\t\t\t\t\tif (segment.kind === \"literal\") {\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<span key={index} className={styles.separator} data-disabled={disabled || undefined}>\n\t\t\t\t\t\t\t\t\t\t{segment.text}\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\t\t\t\tref={registerRef(index)}\n\t\t\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\t\t\tinputMode=\"numeric\"\n\t\t\t\t\t\t\t\t\tclassName={styles.segmentInput}\n\t\t\t\t\t\t\t\t\tstyle={{ width: `${segment.length + 0.5}ch` }}\n\t\t\t\t\t\t\t\t\tvalue={segmentValues.get(index) ?? \"\"}\n\t\t\t\t\t\t\t\t\tplaceholder={segment.placeholder}\n\t\t\t\t\t\t\t\t\tmaxLength={segment.length}\n\t\t\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\t\t\taria-label={segment.type}\n\t\t\t\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t\t\t\t\tonChange={handleInput(index)}\n\t\t\t\t\t\t\t\t\tonKeyDown={handleKeyDown(index)}\n\t\t\t\t\t\t\t\t\tonFocus={handleFocus()}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})}\n\t\t\t\t\t</div>\n\t\t\t\t)}\n\t\t\t</InputControl>\n\t\t</InputUI>\n\t);\n}\n\nexport type InputDateProps = Omit<InputDateTimeBaseProps, \"mask\"> & { mask?: string };\nexport type InputTimeProps = Omit<InputDateTimeBaseProps, \"mask\"> & { mask?: string };\nexport type InputDateTimeProps = Omit<InputDateTimeBaseProps, \"mask\"> & { mask?: string };\n\nexport function InputDate({ mask = \"YYYY.MM.DD\", ...props }: InputDateProps) {\n\treturn <InputDateTimeBase mask={mask} {...props} />;\n}\n\nexport function InputTime({ mask = \"hh:mm\", ...props }: InputTimeProps) {\n\treturn <InputDateTimeBase mask={mask} {...props} />;\n}\n\nexport function InputDateTime({ mask = \"YYYY.MM.DD hh:mm\", ...props }: InputDateTimeProps) {\n\treturn <InputDateTimeBase mask={mask} {...props} />;\n}\n"],"mappings":"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"}