@ryuzaki13/react-foundation-ui 1.0.0 → 1.0.2

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 (405) hide show
  1. package/dist/advanced-search/index.d.ts +3 -0
  2. package/dist/advanced-search/index.d.ts.map +1 -0
  3. package/dist/advanced-search/index.js +361 -0
  4. package/dist/advanced-search/index.js.map +1 -0
  5. package/dist/advanced-search/lib/index.d.ts +2 -0
  6. package/dist/advanced-search/lib/index.d.ts.map +1 -0
  7. package/dist/advanced-search/lib/searchParts.d.ts +3 -0
  8. package/dist/advanced-search/lib/searchParts.d.ts.map +1 -0
  9. package/dist/advanced-search/model/index.d.ts +5 -0
  10. package/dist/advanced-search/model/index.d.ts.map +1 -0
  11. package/dist/advanced-search/model/types.d.ts +55 -0
  12. package/dist/advanced-search/model/types.d.ts.map +1 -0
  13. package/dist/advanced-search/model/useAdvancedSearch.d.ts +11 -0
  14. package/dist/advanced-search/model/useAdvancedSearch.d.ts.map +1 -0
  15. package/dist/advanced-search/model/useAdvancedSearchInitialSelected.d.ts +6 -0
  16. package/dist/advanced-search/model/useAdvancedSearchInitialSelected.d.ts.map +1 -0
  17. package/dist/advanced-search/model/useAdvancedSearchSelection.d.ts +13 -0
  18. package/dist/advanced-search/model/useAdvancedSearchSelection.d.ts.map +1 -0
  19. package/dist/advanced-search/ui/AdvancedSearchModal.d.ts +13 -0
  20. package/dist/advanced-search/ui/AdvancedSearchModal.d.ts.map +1 -0
  21. package/dist/advanced-search/ui/AdvancedSearchSelect.d.ts +8 -0
  22. package/dist/advanced-search/ui/AdvancedSearchSelect.d.ts.map +1 -0
  23. package/dist/advanced-search/ui/AdvancedSearchSelectUI.d.ts +9 -0
  24. package/dist/advanced-search/ui/AdvancedSearchSelectUI.d.ts.map +1 -0
  25. package/dist/advanced-search/ui/index.d.ts +2 -0
  26. package/dist/advanced-search/ui/index.d.ts.map +1 -0
  27. package/dist/badge/Badge.d.ts.map +1 -1
  28. package/dist/badge/index.js +1 -1
  29. package/dist/badge/stories/Badge.stories.js +22 -22
  30. package/dist/base-table/index.js +2 -2
  31. package/dist/base-table/lib/columnPinning.d.ts.map +1 -1
  32. package/dist/base-table/model/useTableColumnOrder.d.ts +1 -1
  33. package/dist/base-table/model/useTableColumnOrder.d.ts.map +1 -1
  34. package/dist/base-table/model/useTableColumnSizing.d.ts +1 -1
  35. package/dist/base-table/model/useTableColumnSizing.d.ts.map +1 -1
  36. package/dist/base-table/ui/BaseTable.d.ts +2 -2
  37. package/dist/base-table/ui/BaseTable.d.ts.map +1 -1
  38. package/dist/base-table/ui/BaseTableHeaderCell.d.ts.map +1 -1
  39. package/dist/base-table/ui/FormattedTableCell.d.ts.map +1 -1
  40. package/dist/button/index.js +7 -7
  41. package/dist/button/stories/Button.stories.js +1 -1
  42. package/dist/check-box/CheckBox.d.ts.map +1 -1
  43. package/dist/check-box/index.js +1 -1
  44. package/dist/check-box/stories/CheckBox.stories.js +25 -25
  45. package/dist/chunks/{BadgeList-DHW_Ktr3.js → BadgeList-DYgun2rf.js} +16 -16
  46. package/dist/chunks/BadgeList-DYgun2rf.js.map +1 -0
  47. package/dist/chunks/{Button-BZ_b-Kin.js → Button-CCWuggdA.js} +16 -16
  48. package/dist/chunks/{Button-BZ_b-Kin.js.map → Button-CCWuggdA.js.map} +1 -1
  49. package/dist/chunks/{CalendarView-B75faWIU.js → CalendarView-DjeTJkTT.js} +149 -149
  50. package/dist/chunks/{CalendarView-B75faWIU.js.map → CalendarView-DjeTJkTT.js.map} +1 -1
  51. package/dist/chunks/{CheckBox-Cck5w1Ud.js → CheckBox-BowNqqd3.js} +13 -13
  52. package/dist/chunks/CheckBox-BowNqqd3.js.map +1 -0
  53. package/dist/chunks/{DateInput-CINDYueM.js → DateInput--tfofQ2x.js} +68 -68
  54. package/dist/chunks/DateInput--tfofQ2x.js.map +1 -0
  55. package/dist/chunks/{DateRangePresetSelect-CyzGMvVp.js → DateRangePresetSelect-UgsfaOeM.js} +22 -22
  56. package/dist/chunks/{DateRangePresetSelect-CyzGMvVp.js.map → DateRangePresetSelect-UgsfaOeM.js.map} +1 -1
  57. package/dist/chunks/Detail-DHDMsg8q.js +80 -0
  58. package/dist/chunks/{Detail-DKolHye4.js.map → Detail-DHDMsg8q.js.map} +1 -1
  59. package/dist/chunks/{Dialog-BPS4BeWZ.js → Dialog-CFIvGxER.js} +8 -8
  60. package/dist/chunks/Dialog-CFIvGxER.js.map +1 -0
  61. package/dist/chunks/{DisclosureGroup-0BtaXO54.js → DisclosureGroup-CfRTkl6Z.js} +11 -11
  62. package/dist/chunks/DisclosureGroup-CfRTkl6Z.js.map +1 -0
  63. package/dist/chunks/{DropZone-hf7Em__0.js → DropZone-kJfbZU5g.js} +22 -22
  64. package/dist/chunks/DropZone-kJfbZU5g.js.map +1 -0
  65. package/dist/chunks/{DropdownMenu-Ds-trH4M.js → DropdownMenu-DQeR3y7M.js} +138 -138
  66. package/dist/chunks/DropdownMenu-DQeR3y7M.js.map +1 -0
  67. package/dist/chunks/{Flex-DbBdq336.js → Flex-DUYSL5TE.js} +16 -16
  68. package/dist/chunks/{Flex-DbBdq336.js.map → Flex-DUYSL5TE.js.map} +1 -1
  69. package/dist/chunks/Grid-ByIIytjh.js.map +1 -1
  70. package/dist/chunks/{Input-Ce2HXBUc.js → Input-BmjlpA09.js} +76 -76
  71. package/dist/chunks/Input-BmjlpA09.js.map +1 -0
  72. package/dist/chunks/{InputDateTime-DPtY_4Od.js → InputDateTime-CxfAFe2L.js} +56 -56
  73. package/dist/chunks/{InputDateTime-DPtY_4Od.js.map → InputDateTime-CxfAFe2L.js.map} +1 -1
  74. package/dist/chunks/{InputFile-ga5yJmdZ.js → InputFile-CyZu__B_.js} +17 -17
  75. package/dist/chunks/InputFile-CyZu__B_.js.map +1 -0
  76. package/dist/chunks/{InputFiles-Or2Nvfgk.js → InputFiles-CrTJV27R.js} +36 -36
  77. package/dist/chunks/InputFiles-CrTJV27R.js.map +1 -0
  78. package/dist/chunks/{InputImage-BeA5WJz1.js → InputImage-Cw8rPYQu.js} +18 -18
  79. package/dist/chunks/{InputImage-BeA5WJz1.js.map → InputImage-Cw8rPYQu.js.map} +1 -1
  80. package/dist/chunks/{LabeledExpandableActionPanel-Bx-DWmYz.js → LabeledExpandableActionPanel-D3kUvmFH.js} +25 -25
  81. package/dist/chunks/LabeledExpandableActionPanel-D3kUvmFH.js.map +1 -0
  82. package/dist/chunks/Listbox-BZlp5qHz.js +81 -0
  83. package/dist/chunks/Listbox-BZlp5qHz.js.map +1 -0
  84. package/dist/chunks/{MultiSelect-CBqTylqO.js → MultiSelect-D1XYuwH1.js} +113 -113
  85. package/dist/chunks/{MultiSelect-CBqTylqO.js.map → MultiSelect-D1XYuwH1.js.map} +1 -1
  86. package/dist/chunks/{NotificationsHost-BQc-zOr2.js → NotificationsHost-_icJx4xR.js} +34 -34
  87. package/dist/chunks/NotificationsHost-_icJx4xR.js.map +1 -0
  88. package/dist/chunks/{PresetRangeDateInput-YBQm_4Fb.js → PresetRangeDateInput-CapirptQ.js} +11 -11
  89. package/dist/chunks/{PresetRangeDateInput-YBQm_4Fb.js.map → PresetRangeDateInput-CapirptQ.js.map} +1 -1
  90. package/dist/chunks/{RadioButton-DJp31HFR.js → RadioButton-D0uA0rX_.js} +13 -13
  91. package/dist/chunks/RadioButton-D0uA0rX_.js.map +1 -0
  92. package/dist/chunks/RadioGroup-B9XjkcOy.js +121 -0
  93. package/dist/chunks/{RadioGroup-BAhN1d1X.js.map → RadioGroup-B9XjkcOy.js.map} +1 -1
  94. package/dist/chunks/{Select-B7k_8_Lf.js → Select-CXeVjVKA.js} +11 -11
  95. package/dist/chunks/Select-CXeVjVKA.js.map +1 -0
  96. package/dist/chunks/{SerializableSelect-53uNCqdE.js → SerializableSelect-DkYeJtAO.js} +2 -2
  97. package/dist/chunks/{SerializableSelect-53uNCqdE.js.map → SerializableSelect-DkYeJtAO.js.map} +1 -1
  98. package/dist/chunks/{SingleDateTimeInput-CwvIbwje.js → SingleDateTimeInput-BmeuVGQT.js} +86 -86
  99. package/dist/chunks/SingleDateTimeInput-BmeuVGQT.js.map +1 -0
  100. package/dist/chunks/{Splitter-NjNFuEq4.js → Splitter-BFkVGVRb.js} +32 -32
  101. package/dist/chunks/{Splitter-NjNFuEq4.js.map → Splitter-BFkVGVRb.js.map} +1 -1
  102. package/dist/chunks/StateSelect-1jH3uLz9.js +78 -0
  103. package/dist/chunks/{StateSelect-D0wuUdT9.js.map → StateSelect-1jH3uLz9.js.map} +1 -1
  104. package/dist/chunks/{Switch-B476FBUD.js → Switch-B57Qmy1z.js} +19 -19
  105. package/dist/chunks/Switch-B57Qmy1z.js.map +1 -0
  106. package/dist/chunks/{TextEditorLexicalClient-DcixYuo4.js → TextEditorLexicalClient-DRhAswpP.js} +204 -204
  107. package/dist/chunks/{TextEditorLexicalClient-DcixYuo4.js.map → TextEditorLexicalClient-DRhAswpP.js.map} +1 -1
  108. package/dist/chunks/{Textarea-DeJJjjkI.js → Textarea-C9UdUueF.js} +2 -2
  109. package/dist/chunks/{Textarea-DeJJjjkI.js.map → Textarea-C9UdUueF.js.map} +1 -1
  110. package/dist/chunks/{TimePanel-_kF2RtHk.js → TimePanel-b4saqoUY.js} +27 -27
  111. package/dist/chunks/TimePanel-b4saqoUY.js.map +1 -0
  112. package/dist/chunks/{Toggle-C_fE-bkM.js → Toggle-DVqOQXmt.js} +18 -18
  113. package/dist/chunks/{Toggle-C_fE-bkM.js.map → Toggle-DVqOQXmt.js.map} +1 -1
  114. package/dist/chunks/{TreeMultiSelect-DRYNx7u5.js → TreeMultiSelect-CfQhlfnC.js} +6 -6
  115. package/dist/chunks/{TreeMultiSelect-DRYNx7u5.js.map → TreeMultiSelect-CfQhlfnC.js.map} +1 -1
  116. package/dist/chunks/{TreePickerBase-DYzTsSBQ.js → TreePickerBase-BBUOWsSu.js} +154 -154
  117. package/dist/chunks/TreePickerBase-BBUOWsSu.js.map +1 -0
  118. package/dist/chunks/{TreeSelect-DGLDu6qc.js → TreeSelect-2wUXs90E.js} +6 -6
  119. package/dist/chunks/{TreeSelect-DGLDu6qc.js.map → TreeSelect-2wUXs90E.js.map} +1 -1
  120. package/dist/chunks/base-table-CoQlKABk.js +514 -0
  121. package/dist/chunks/base-table-CoQlKABk.js.map +1 -0
  122. package/dist/chunks/{floating-arrow-CdRV69sg.js → floating-arrow-BE-z4QkE.js} +7 -7
  123. package/dist/chunks/{floating-arrow-CdRV69sg.js.map → floating-arrow-BE-z4QkE.js.map} +1 -1
  124. package/dist/chunks/input-search-Dw4rnJBq.js +30 -0
  125. package/dist/chunks/input-search-Dw4rnJBq.js.map +1 -0
  126. package/dist/chunks/{layout-picker-BA9vA8JI.js → layout-picker-MWaImn3L.js} +34 -34
  127. package/dist/chunks/layout-picker-MWaImn3L.js.map +1 -0
  128. package/dist/chunks/{misc-DrmMj8GO.js → misc-DoqZBMof.js} +100 -100
  129. package/dist/chunks/misc-DoqZBMof.js.map +1 -0
  130. package/dist/chunks/{modal-DqVcZws_.js → modal-B3HY3laL.js} +40 -40
  131. package/dist/chunks/modal-B3HY3laL.js.map +1 -0
  132. package/dist/chunks/multi-select-BzYIviCU.js +1305 -0
  133. package/dist/chunks/multi-select-BzYIviCU.js.map +1 -0
  134. package/dist/chunks/{picker-Cj4RnJh6.js → picker-Dg55Ss-B.js} +73 -73
  135. package/dist/chunks/picker-Dg55Ss-B.js.map +1 -0
  136. package/dist/chunks/{popover-C79P5bm2.js → popover-xJJqy1v6.js} +52 -52
  137. package/dist/chunks/popover-xJJqy1v6.js.map +1 -0
  138. package/dist/chunks/{separator-CIqnk2z9.js → separator-B72Aq-6a.js} +2 -2
  139. package/dist/chunks/{separator-CIqnk2z9.js.map → separator-B72Aq-6a.js.map} +1 -1
  140. package/dist/chunks/{slider-34wxzKkG.js → slider-CFKsfxFp.js} +83 -83
  141. package/dist/chunks/slider-CFKsfxFp.js.map +1 -0
  142. package/dist/chunks/sortable-DcTIAbjD.js +185 -0
  143. package/dist/chunks/sortable-DcTIAbjD.js.map +1 -0
  144. package/dist/chunks/{table-BYA0hCj7.js → table-Dc3AqMzP.js} +21 -21
  145. package/dist/chunks/table-Dc3AqMzP.js.map +1 -0
  146. package/dist/chunks/{table-column-interactions-DPyJDD7P.js → table-column-interactions-6RGjmiI5.js} +24 -24
  147. package/dist/chunks/{table-column-interactions-DPyJDD7P.js.map → table-column-interactions-6RGjmiI5.js.map} +1 -1
  148. package/dist/chunks/{tabs-CjU2KCgs.js → tabs-DlnVVMJl.js} +96 -96
  149. package/dist/chunks/{tabs-CjU2KCgs.js.map → tabs-DlnVVMJl.js.map} +1 -1
  150. package/dist/chunks/{toolbar-C-Ziw_Uh.js → toolbar-BCZNdRXM.js} +2 -2
  151. package/dist/chunks/{toolbar-C-Ziw_Uh.js.map → toolbar-BCZNdRXM.js.map} +1 -1
  152. package/dist/chunks/{wheel-picker-DUHGy7wE.js → wheel-picker-FS58cRsQ.js} +23 -23
  153. package/dist/chunks/{wheel-picker-DUHGy7wE.js.map → wheel-picker-FS58cRsQ.js.map} +1 -1
  154. package/dist/context-menu/components/MenuContent.d.ts.map +1 -1
  155. package/dist/context-menu/components/MenuContext.d.ts.map +1 -1
  156. package/dist/context-menu/components/MenuRoot.d.ts.map +1 -1
  157. package/dist/context-menu/components/RadialMenuContent.d.ts.map +1 -1
  158. package/dist/context-menu/index.js +1 -1
  159. package/dist/context-menu/stories/ContextMenu.stories.js +45 -45
  160. package/dist/date-input/index.js +2 -2
  161. package/dist/date-input/lib/types.d.ts.map +1 -1
  162. package/dist/date-input/stories/DateInput.stories.js +2 -2
  163. package/dist/date-input/ui/CalendarView.d.ts.map +1 -1
  164. package/dist/date-input/ui/DateInput.d.ts.map +1 -1
  165. package/dist/date-range-preset-select/index.js +1 -1
  166. package/dist/date-range-preset-select/stories/DateRangePresetSelect.stories.js +8 -8
  167. package/dist/date-time-input/index.js +1 -1
  168. package/dist/date-time-input/lib/dateTimeValue.d.ts.map +1 -1
  169. package/dist/date-time-input/stories/SingleDateTimeInput.stories.js +38 -38
  170. package/dist/date-time-input/stories/TimePanel.stories.js +9 -9
  171. package/dist/date-time-input/ui/SingleDateTimeInput.d.ts.map +1 -1
  172. package/dist/detail/index.js +1 -1
  173. package/dist/detail/stories/Detail.stories.js +1 -1
  174. package/dist/dialog/Dialog.d.ts.map +1 -1
  175. package/dist/dialog/index.js +1 -1
  176. package/dist/dialog/stories/Dialog.stories.js +16 -16
  177. package/dist/disclosure/Disclosure.d.ts.map +1 -1
  178. package/dist/disclosure/index.js +1 -1
  179. package/dist/disclosure/stories/Disclosure.stories.js +1 -1
  180. package/dist/drop-zone/DropZone.d.ts.map +1 -1
  181. package/dist/drop-zone/index.js +1 -1
  182. package/dist/drop-zone/stories/DropZone.stories.d.ts.map +1 -1
  183. package/dist/drop-zone/stories/DropZone.stories.js +14 -14
  184. package/dist/drop-zone/stories/DropZone.stories.js.map +1 -1
  185. package/dist/errors/ErrorDisplay.d.ts.map +1 -1
  186. package/dist/errors/index.js +47 -47
  187. package/dist/errors/index.js.map +1 -1
  188. package/dist/expandable-action-panel/ExpandableActionPanel.d.ts.map +1 -1
  189. package/dist/expandable-action-panel/index.js +1 -1
  190. package/dist/expandable-action-panel/stories/ExpandableActionPanel.stories.js +28 -28
  191. package/dist/flex/index.js +2 -2
  192. package/dist/flex/stories/Flex.stories.js +2 -2
  193. package/dist/floating-arrow/index.js +1 -1
  194. package/dist/fullscreen-portal/index.js +6 -6
  195. package/dist/grid/stories/Grid.stories.js +1 -1
  196. package/dist/image/index.js +123 -123
  197. package/dist/image/index.js.map +1 -1
  198. package/dist/image/ui/ImageSelection.d.ts.map +1 -1
  199. package/dist/input/Input.d.ts.map +1 -1
  200. package/dist/input/index.js +1 -1
  201. package/dist/input/stories/Input.stories.js +11 -11
  202. package/dist/input-date-time/index.js +1 -1
  203. package/dist/input-date-time/stories/InputDateTime.stories.js +11 -11
  204. package/dist/input-file/InputFile.d.ts.map +1 -1
  205. package/dist/input-file/index.js +1 -1
  206. package/dist/input-file/stories/InputFile.stories.d.ts.map +1 -1
  207. package/dist/input-file/stories/InputFile.stories.js +9 -9
  208. package/dist/input-file/stories/InputFile.stories.js.map +1 -1
  209. package/dist/input-files/InputFilesList.d.ts.map +1 -1
  210. package/dist/input-files/index.js +1 -1
  211. package/dist/input-files/stories/InputFiles.stories.d.ts +1 -1
  212. package/dist/input-files/stories/InputFiles.stories.d.ts.map +1 -1
  213. package/dist/input-files/stories/InputFiles.stories.js +9 -9
  214. package/dist/input-files/stories/InputFiles.stories.js.map +1 -1
  215. package/dist/input-image/index.js +1 -1
  216. package/dist/input-image/stories/InputImage.stories.d.ts.map +1 -1
  217. package/dist/input-image/stories/InputImage.stories.js +15 -15
  218. package/dist/input-image/stories/InputImage.stories.js.map +1 -1
  219. package/dist/input-search/index.js +2 -30
  220. package/dist/layout-picker/index.js +1 -1
  221. package/dist/layout-picker/stories/LayoutPicker.stories.js +52 -52
  222. package/dist/layout-picker/ui/LayoutPicker.d.ts.map +1 -1
  223. package/dist/list/List.d.ts.map +1 -1
  224. package/dist/list/index.js +30 -30
  225. package/dist/list/index.js.map +1 -1
  226. package/dist/listbox/Listbox.d.ts.map +1 -1
  227. package/dist/listbox/index.js +1 -1
  228. package/dist/listbox/stories/Listbox.stories.js +19 -19
  229. package/dist/misc/CopyTextWrapper.d.ts.map +1 -1
  230. package/dist/misc/OneStepScroller.d.ts.map +1 -1
  231. package/dist/misc/StateIcon.d.ts.map +1 -1
  232. package/dist/misc/index.js +1 -1
  233. package/dist/modal/Modal.d.ts +5 -1
  234. package/dist/modal/Modal.d.ts.map +1 -1
  235. package/dist/modal/index.js +1 -1
  236. package/dist/modal/stories/Modal.stories.js +55 -55
  237. package/dist/multi-select/index.js +3 -35
  238. package/dist/multi-select/model/useODataMultiSelect.d.ts +23 -0
  239. package/dist/multi-select/model/useODataMultiSelect.d.ts.map +1 -0
  240. package/dist/multi-select/ui/MultiSelect.d.ts +1 -1
  241. package/dist/multi-select/ui/MultiSelect.d.ts.map +1 -1
  242. package/dist/multi-select/ui/ODataDependentMultiSelect.d.ts +20 -0
  243. package/dist/multi-select/ui/ODataDependentMultiSelect.d.ts.map +1 -0
  244. package/dist/multi-select/ui/ODataDependentSegmentMultiSelect.d.ts +21 -0
  245. package/dist/multi-select/ui/ODataDependentSegmentMultiSelect.d.ts.map +1 -0
  246. package/dist/multi-select/ui/ODataMultiSelect.d.ts +7 -0
  247. package/dist/multi-select/ui/ODataMultiSelect.d.ts.map +1 -0
  248. package/dist/multi-select/ui/SerializableMultiSelect.d.ts.map +1 -1
  249. package/dist/multi-select/ui/index.d.ts +3 -0
  250. package/dist/multi-select/ui/index.d.ts.map +1 -1
  251. package/dist/multi-select/ui/stories/MultiSelect.stories.js +17 -17
  252. package/dist/multi-select/ui/stories/ODataMultiSelect.stories.d.ts +44 -0
  253. package/dist/multi-select/ui/stories/ODataMultiSelect.stories.d.ts.map +1 -0
  254. package/dist/notifications/index.js +1 -1
  255. package/dist/notifications/model/NotificationsProvider.d.ts.map +1 -1
  256. package/dist/notifications/ui/NotificationsHost.d.ts.map +1 -1
  257. package/dist/notifications/ui/stories/NotificationsHost.stories.js +59 -59
  258. package/dist/period-select/PeriodSelect.d.ts +1 -1
  259. package/dist/period-select/PeriodSelect.d.ts.map +1 -1
  260. package/dist/period-select/index.js +20 -20
  261. package/dist/period-select/index.js.map +1 -1
  262. package/dist/period-select/lib/periodSelect.d.ts.map +1 -1
  263. package/dist/period-select/stories/PeriodSelect.stories.d.ts.map +1 -1
  264. package/dist/period-select/stories/PeriodSelect.stories.js +17 -17
  265. package/dist/period-select/stories/PeriodSelect.stories.js.map +1 -1
  266. package/dist/picker/PickerPopup.d.ts.map +1 -1
  267. package/dist/picker/PickerTriggerActions.d.ts.map +1 -1
  268. package/dist/picker/index.js +1 -1
  269. package/dist/picker/model/usePickerFloatingListbox.d.ts.map +1 -1
  270. package/dist/popover/FloatingPopover.d.ts.map +1 -1
  271. package/dist/popover/components/PopoverContent.d.ts.map +1 -1
  272. package/dist/popover/components/PopoverContext.d.ts.map +1 -1
  273. package/dist/popover/index.js +1 -1
  274. package/dist/popover/stories/Popover.stories.js +16 -16
  275. package/dist/preset-range-date-input/index.js +1 -1
  276. package/dist/preset-range-date-input/ui/stories/PresetRangeDateInput.stories.js +9 -9
  277. package/dist/preset-select/index.js +1 -1
  278. package/dist/radio-button/RadioButton.d.ts.map +1 -1
  279. package/dist/radio-button/index.js +1 -1
  280. package/dist/radio-button/stories/RadioButton.stories.js +11 -11
  281. package/dist/radio-group/index.js +1 -1
  282. package/dist/radio-group/stories/RadioGroup.stories.js +21 -21
  283. package/dist/select/ODataSelect.d.ts +9 -0
  284. package/dist/select/ODataSelect.d.ts.map +1 -0
  285. package/dist/select/Select.d.ts.map +1 -1
  286. package/dist/select/index.js +2 -2
  287. package/dist/select/model/useODataSelect.d.ts +25 -0
  288. package/dist/select/model/useODataSelect.d.ts.map +1 -0
  289. package/dist/select/model/useODataSelectBase.d.ts +24 -0
  290. package/dist/select/model/useODataSelectBase.d.ts.map +1 -0
  291. package/dist/select/stories/ODataSelect.stories.d.ts +46 -0
  292. package/dist/select/stories/ODataSelect.stories.d.ts.map +1 -0
  293. package/dist/select/stories/Select.stories.js +23 -23
  294. package/dist/select/stories/SerializableSelect.stories.js +22 -22
  295. package/dist/select/stories/odataStoryFixtures.d.ts +35 -0
  296. package/dist/select/stories/odataStoryFixtures.d.ts.map +1 -0
  297. package/dist/separator/index.js +1 -1
  298. package/dist/simple-table/index.js +5 -5
  299. package/dist/simple-table/index.js.map +1 -1
  300. package/dist/slider/Slider.d.ts.map +1 -1
  301. package/dist/slider/index.js +1 -1
  302. package/dist/slider/stories/Slider.stories.js +32 -32
  303. package/dist/slider/stories/SliderInput.stories.js +39 -39
  304. package/dist/sortable/Sortable.d.ts.map +1 -1
  305. package/dist/sortable/SortableDragHandle.d.ts.map +1 -1
  306. package/dist/sortable/index.js +1 -1
  307. package/dist/sortable/stories/Sortable.stories.js +23 -23
  308. package/dist/splitter/index.js +1 -1
  309. package/dist/splitter/stories/Splitter.stories.js +1 -1
  310. package/dist/state-select/index.js +1 -1
  311. package/dist/state-select/stories/StateSelect.stories.d.ts.map +1 -1
  312. package/dist/state-select/stories/StateSelect.stories.js +23 -23
  313. package/dist/state-select/stories/StateSelect.stories.js.map +1 -1
  314. package/dist/styles.css +1 -1
  315. package/dist/switch/Switch.d.ts.map +1 -1
  316. package/dist/switch/index.js +1 -1
  317. package/dist/switch/stories/Switch.stories.js +11 -11
  318. package/dist/table/Table.d.ts +1 -1
  319. package/dist/table/Table.d.ts.map +1 -1
  320. package/dist/table/index.js +1 -1
  321. package/dist/table/stories/Table.stories.d.ts +155 -0
  322. package/dist/table/stories/Table.stories.d.ts.map +1 -0
  323. package/dist/table-column-interactions/TableHeaderInteractionCell.d.ts.map +1 -1
  324. package/dist/table-column-interactions/index.js +1 -1
  325. package/dist/table-sorting/index.js +1 -1
  326. package/dist/tabs/index.js +1 -1
  327. package/dist/tabs/stories/Tabs.stories.d.ts.map +1 -1
  328. package/dist/tabs/stories/Tabs.stories.js +39 -39
  329. package/dist/tabs/stories/Tabs.stories.js.map +1 -1
  330. package/dist/text/TextOverflow.d.ts.map +1 -1
  331. package/dist/text/index.js +20 -20
  332. package/dist/text/index.js.map +1 -1
  333. package/dist/text-editor/TextEditorLexicalClient.d.ts.map +1 -1
  334. package/dist/text-editor/index.js +3 -3
  335. package/dist/text-editor/toolbar/index.js +1 -1
  336. package/dist/textarea/index.js +1 -1
  337. package/dist/textarea/stories/Textarea.stories.js +8 -8
  338. package/dist/three-scene/index.js +7 -7
  339. package/dist/toggle/index.js +1 -1
  340. package/dist/toggle/stories/Toggle.stories.js +7 -7
  341. package/dist/toolbar/index.js +16 -16
  342. package/dist/tree/index.js +24 -24
  343. package/dist/tree-select/ODataTreeMultiSelect.d.ts +12 -0
  344. package/dist/tree-select/ODataTreeMultiSelect.d.ts.map +1 -0
  345. package/dist/tree-select/ODataTreeSelect.d.ts +13 -0
  346. package/dist/tree-select/ODataTreeSelect.d.ts.map +1 -0
  347. package/dist/tree-select/TreeNodeContent.d.ts.map +1 -1
  348. package/dist/tree-select/TreePickerBase.d.ts.map +1 -1
  349. package/dist/tree-select/index.js +2 -2
  350. package/dist/tree-select/model/buildODataTreeNodes.d.ts +12 -0
  351. package/dist/tree-select/model/buildODataTreeNodes.d.ts.map +1 -0
  352. package/dist/tree-select/model/resolveOrderedTreeSegmentItems.d.ts +4 -0
  353. package/dist/tree-select/model/resolveOrderedTreeSegmentItems.d.ts.map +1 -0
  354. package/dist/tree-select/model/useODataTreeData.d.ts +11 -0
  355. package/dist/tree-select/model/useODataTreeData.d.ts.map +1 -0
  356. package/dist/tree-select/stories/ODataTreeMultiSelect.stories.d.ts +55 -0
  357. package/dist/tree-select/stories/ODataTreeMultiSelect.stories.d.ts.map +1 -0
  358. package/dist/tree-select/stories/ODataTreeSelect.stories.d.ts +54 -0
  359. package/dist/tree-select/stories/ODataTreeSelect.stories.d.ts.map +1 -0
  360. package/dist/tree-select/stories/TreeMultiSelect.stories.js +9 -9
  361. package/dist/tree-select/stories/TreeSelect.stories.js +9 -9
  362. package/dist/tree-table/TreeTable.d.ts +1 -1
  363. package/dist/tree-table/TreeTable.d.ts.map +1 -1
  364. package/dist/tree-table/index.js +32 -32
  365. package/dist/tree-table/index.js.map +1 -1
  366. package/dist/tree-table/stories/TreeTable.stories.d.ts +158 -0
  367. package/dist/tree-table/stories/TreeTable.stories.d.ts.map +1 -0
  368. package/dist/wheel-picker/index.js +1 -1
  369. package/package.json +15 -4
  370. package/dist/chunks/BadgeList-DHW_Ktr3.js.map +0 -1
  371. package/dist/chunks/CheckBox-Cck5w1Ud.js.map +0 -1
  372. package/dist/chunks/DateInput-CINDYueM.js.map +0 -1
  373. package/dist/chunks/Detail-DKolHye4.js +0 -80
  374. package/dist/chunks/Dialog-BPS4BeWZ.js.map +0 -1
  375. package/dist/chunks/DisclosureGroup-0BtaXO54.js.map +0 -1
  376. package/dist/chunks/DropZone-hf7Em__0.js.map +0 -1
  377. package/dist/chunks/DropdownMenu-Ds-trH4M.js.map +0 -1
  378. package/dist/chunks/Input-Ce2HXBUc.js.map +0 -1
  379. package/dist/chunks/InputFile-ga5yJmdZ.js.map +0 -1
  380. package/dist/chunks/InputFiles-Or2Nvfgk.js.map +0 -1
  381. package/dist/chunks/LabeledExpandableActionPanel-Bx-DWmYz.js.map +0 -1
  382. package/dist/chunks/Listbox-CY1wQOCP.js +0 -81
  383. package/dist/chunks/Listbox-CY1wQOCP.js.map +0 -1
  384. package/dist/chunks/NotificationsHost-BQc-zOr2.js.map +0 -1
  385. package/dist/chunks/RadioButton-DJp31HFR.js.map +0 -1
  386. package/dist/chunks/RadioGroup-BAhN1d1X.js +0 -121
  387. package/dist/chunks/Select-B7k_8_Lf.js.map +0 -1
  388. package/dist/chunks/SingleDateTimeInput-CwvIbwje.js.map +0 -1
  389. package/dist/chunks/StateSelect-D0wuUdT9.js +0 -78
  390. package/dist/chunks/Switch-B476FBUD.js.map +0 -1
  391. package/dist/chunks/TimePanel-_kF2RtHk.js.map +0 -1
  392. package/dist/chunks/TreePickerBase-DYzTsSBQ.js.map +0 -1
  393. package/dist/chunks/base-table-DVje02Zi.js +0 -514
  394. package/dist/chunks/base-table-DVje02Zi.js.map +0 -1
  395. package/dist/chunks/layout-picker-BA9vA8JI.js.map +0 -1
  396. package/dist/chunks/misc-DrmMj8GO.js.map +0 -1
  397. package/dist/chunks/modal-DqVcZws_.js.map +0 -1
  398. package/dist/chunks/picker-Cj4RnJh6.js.map +0 -1
  399. package/dist/chunks/popover-C79P5bm2.js.map +0 -1
  400. package/dist/chunks/slider-34wxzKkG.js.map +0 -1
  401. package/dist/chunks/sortable-CwDHC3CA.js +0 -185
  402. package/dist/chunks/sortable-CwDHC3CA.js.map +0 -1
  403. package/dist/chunks/table-BYA0hCj7.js.map +0 -1
  404. package/dist/input-search/index.js.map +0 -1
  405. package/dist/multi-select/index.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"CalendarView-B75faWIU.js","names":[],"sources":["../../src/date-input/lib/dateInputCalendar.ts","../../src/date-input/ui/CalendarDayView.module.scss","../../src/date-input/ui/CalendarDayView.tsx","../../src/date-input/ui/CalendarMonthView.module.scss","../../src/date-input/ui/CalendarMonthView.tsx","../../src/date-input/ui/CalendarView.module.scss","../../src/date-input/ui/CalendarYearView.module.scss","../../src/date-input/ui/CalendarYearView.tsx","../../src/date-input/ui/CalendarView.tsx"],"sourcesContent":["import {\n\tgetCalendarPeriod,\n\tisDateInsideCalendarPeriod,\n\ttype CalendarPeriod,\n\ttype CalendarPeriodOptions,\n\ttype DateRangeInput,\n\ttype NullableDateRange\n} from \"@ryuzaki13/react-foundation-lib/formatters\";\n\nimport type { DateInputSelectionMode, DateInputWeekEndDay, DatePickerLevel } from \"./types\";\n\nexport const DATE_PICKER_LEVELS = [\"day\", \"month\", \"year\"] as const satisfies readonly DatePickerLevel[];\nexport const DATE_INPUT_SELECTION_MODES = [\"day\", \"week\", \"month\", \"year\"] as const satisfies readonly DateInputSelectionMode[];\nexport const DATE_INPUT_WEEK_END_DAYS = [\"friday\", \"saturday\", \"sunday\"] as const satisfies readonly DateInputWeekEndDay[];\n\n/**\n * Возвращает календарный вид, который удобнее всего открывать для выбранного размера периода.\n */\nexport function getDatePickerLevelForSelectionMode(selectionMode: DateInputSelectionMode): DatePickerLevel {\n\tif (selectionMode === \"month\") return \"month\";\n\tif (selectionMode === \"year\") return \"year\";\n\n\treturn \"day\";\n}\n\n/**\n * Проверяет, разрешён ли календарный вид относительно минимального уровня навигации.\n */\nexport function isDatePickerLevelAvailable(level: DatePickerLevel, minLevel: DatePickerLevel): boolean {\n\treturn DATE_PICKER_LEVELS.indexOf(level) >= DATE_PICKER_LEVELS.indexOf(minLevel);\n}\n\n/**\n * Подбирает вид календаря для режима выбора с учётом ограничения `datePickerLevel`.\n */\nexport function resolveAvailableDatePickerLevel(selectionMode: DateInputSelectionMode, minLevel: DatePickerLevel): DatePickerLevel {\n\tconst preferredLevel = getDatePickerLevelForSelectionMode(selectionMode);\n\n\treturn isDatePickerLevelAvailable(preferredLevel, minLevel) ? preferredLevel : minLevel;\n}\n\nexport interface DateInputPeriodRangeStateOptions {\n\treadonly date: Date;\n\treadonly value: DateRangeInput;\n\treadonly hoveredDate?: Date | null;\n\treadonly selectsRange?: boolean;\n\treadonly selectionOptions?: CalendarPeriodOptions;\n}\n\nexport interface DateInputPeriodRangeState {\n\treadonly selected: boolean;\n\treadonly range: boolean;\n\treadonly rangeStart: boolean;\n\treadonly rangeEnd: boolean;\n}\n\nfunction isSameCalendarPeriod(left: CalendarPeriod | null, right: CalendarPeriod | null): boolean {\n\tif (!left || !right) return false;\n\n\treturn left.start.getTime() === right.start.getTime() && left.end.getTime() === right.end.getTime();\n}\n\nfunction isCalendarPeriodInsideRange(\n\tperiod: CalendarPeriod | null,\n\tstartPeriod: CalendarPeriod | null,\n\tendPeriod: CalendarPeriod | null\n): boolean {\n\tif (!period || !startPeriod || !endPeriod) return false;\n\n\tconst startTime = Math.min(startPeriod.start.getTime(), endPeriod.start.getTime());\n\tconst endTime = Math.max(startPeriod.end.getTime(), endPeriod.end.getTime());\n\n\treturn period.start.getTime() >= startTime && period.end.getTime() <= endTime;\n}\n\n/**\n * Рассчитывает visual-state ячейки календарного периода для single/range режима.\n */\nexport function resolveDateInputPeriodRangeState({\n\tdate,\n\tvalue,\n\thoveredDate,\n\tselectsRange,\n\tselectionOptions\n}: DateInputPeriodRangeStateOptions): DateInputPeriodRangeState {\n\tconst period = getCalendarPeriod(date, selectionOptions);\n\tconst selectedDate = !selectsRange && value instanceof Date ? value : null;\n\tconst selectedSinglePeriod = getCalendarPeriod(selectedDate, selectionOptions);\n\n\tif (!selectsRange || !Array.isArray(value)) {\n\t\treturn {\n\t\t\tselected: isDateInsideCalendarPeriod(date, selectedSinglePeriod),\n\t\t\trange: false,\n\t\t\trangeStart: false,\n\t\t\trangeEnd: false\n\t\t};\n\t}\n\n\tconst [selectedStartDate, selectedEndDate] = value as NullableDateRange;\n\tconst selectedStartPeriod = getCalendarPeriod(selectedStartDate, selectionOptions);\n\tconst previewEndPeriod = getCalendarPeriod(selectedEndDate ?? (selectedStartDate ? hoveredDate : null), selectionOptions);\n\tconst rangeStart = isSameCalendarPeriod(period, selectedStartPeriod);\n\tconst rangeEnd = isSameCalendarPeriod(period, previewEndPeriod);\n\tconst range = isCalendarPeriodInsideRange(period, selectedStartPeriod, previewEndPeriod);\n\n\treturn {\n\t\tselected: false,\n\t\trange: range && !rangeStart && !rangeEnd,\n\t\trangeStart,\n\t\trangeEnd\n\t};\n}\n",".dayView {\n\tpadding: 0;\n}\n\n.weekdays {\n\tdisplay: grid;\n\tgrid-template-columns: repeat(7, 1fr);\n\ttext-align: center;\n\tmargin-bottom: var(--space-sm);\n\tcolor: var(--content-1);\n}\n\n.weekday {\n\tfont-size: var(--font-size-xs);\n}\n\n.daysGrid {\n\tdisplay: grid;\n\tgap: var(--border-width);\n}\n\n.week {\n\tdisplay: grid;\n\tgrid-template-columns: repeat(7, 1fr);\n\tgap: var(--border-width);\n}\n\n.day {\n\t--range-radius: calc(var(--control-height) / 2);\n\n\theight: var(--control-height);\n\tcursor: pointer;\n\tborder-radius: var(--radius-xs);\n\t// font-size: var(--font-size-sm);\n\n\tbackground-color: var(--surface-1);\n\n\t&:hover:not(.disabled) {\n\t\tbackground-color: var(--surface-accent);\n\t}\n\n\t&.outsideMonth {\n\t\tbackground-color: transparent;\n\t\tcolor: var(--content-2);\n\t}\n\n\t&.range {\n\t\tbackground-color: var(--surface-accent);\n\t\tcolor: var(--content-0);\n\t}\n\n\t&.rangeStart {\n\t\t// border-top-left-radius: var(--range-radius);\n\t\t// border-bottom-left-radius: var(--range-radius);\n\t}\n\n\t&.rangeEnd {\n\t\t// border-top-right-radius: var(--range-radius);\n\t\t// border-bottom-right-radius: var(--range-radius);\n\t}\n\n\t&.selected,\n\t&.rangeStart,\n\t&.rangeEnd {\n\t\tbackground-color: var(--surface-accent);\n\t\tcolor: var(--content-accent);\n\t\tfont-weight: 600;\n\t\tfont-variation-settings: \"wght\" 600;\n\t}\n\n\t&.weekend:not(.selected):not(.range):not(.rangeStart):not(.rangeEnd) {\n\t\tcolor: var(--status-error-fill);\n\t}\n\n\t&.disabled {\n\t\tcolor: var(--content-2);\n\t\tcursor: not-allowed;\n\n\t\t&:hover {\n\t\t\tbackground: none;\n\t\t}\n\t}\n\n\t&.now {\n\t\tborder: var(--border);\n\t\tcolor: var(--status-info-text);\n\t\tborder-color: var(--status-info-text);\n\t}\n}\n","import { useState } from \"react\";\n\nimport {\n\tcreateCalendarDate,\n\tgetCalendarPeriod,\n\tgetStartOfDay,\n\tisCalendarPeriodWithinDateBounds,\n\tisDateInsideCalendarPeriod,\n\tisSameCalendarDay,\n\ttype CalendarPeriodOptions,\n\ttype DateRangeInput\n} from \"@ryuzaki13/react-foundation-lib/formatters\";\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport styles from \"./CalendarDayView.module.scss\";\n\nimport type { DateInputSelectionMode, DateInputWeekEndDay } from \"../lib\";\n\nconst weekDays = [\"Пн\", \"Вт\", \"Ср\", \"Чт\", \"Пт\", \"Сб\", \"Вс\"];\nconst dayLabelFormatter = new Intl.DateTimeFormat(\"ru-RU\", {\n\tweekday: \"long\",\n\tyear: \"numeric\",\n\tmonth: \"long\",\n\tday: \"numeric\"\n});\n\ninterface DayViewProps {\n\tnow: Date;\n\tcurrentDate: Date;\n\tvalue: DateRangeInput;\n\tonChange: (date: Date) => void;\n\tminDate?: Date;\n\tmaxDate?: Date;\n\tselectsRange?: boolean;\n\tselectionMode?: DateInputSelectionMode;\n\tweekEndDay?: DateInputWeekEndDay;\n}\n\n/**\n * Отображает сетку дней месяца в календарной семантике без timezone-сдвига.\n */\nexport const CalendarDayView: React.FC<DayViewProps> = ({\n\tnow,\n\tcurrentDate,\n\tvalue,\n\tonChange,\n\tminDate,\n\tmaxDate,\n\tselectsRange,\n\tselectionMode = \"day\",\n\tweekEndDay = \"sunday\"\n}) => {\n\tconst [hoveredDate, setHoveredDate] = useState<Date | null>(null);\n\tconst selectionOptions: CalendarPeriodOptions = {\n\t\tselectionMode,\n\t\tweekEndDay\n\t};\n\n\t/**\n\t * Генерирует недели для текущего месяца с учётом дней соседних месяцев.\n\t */\n\tconst generateCalendarDays = () => {\n\t\tconst year = currentDate.getFullYear();\n\t\tconst month = currentDate.getMonth();\n\n\t\tconst firstDay = createCalendarDate(year, month, 1);\n\t\tconst lastDay = createCalendarDate(year, month + 1, 0);\n\t\tconst prevMonthDays = firstDay.getDay() === 0 ? 6 : firstDay.getDay() - 1;\n\t\tconst nextMonthDays = 6 * 7 - (prevMonthDays + lastDay.getDate());\n\n\t\tconst days: Date[] = [];\n\t\tconst prevMonthLastDay = createCalendarDate(year, month, 0).getDate();\n\n\t\tfor (let index = prevMonthDays; index > 0; index -= 1) {\n\t\t\tdays.push(createCalendarDate(year, month - 1, prevMonthLastDay - index + 1));\n\t\t}\n\n\t\tfor (let day = 1; day <= lastDay.getDate(); day += 1) {\n\t\t\tdays.push(createCalendarDate(year, month, day));\n\t\t}\n\n\t\tfor (let day = 1; day <= nextMonthDays; day += 1) {\n\t\t\tdays.push(createCalendarDate(year, month + 1, day));\n\t\t}\n\n\t\tconst weeks: Date[][] = [];\n\t\tfor (let index = 0; index < days.length; index += 7) {\n\t\t\tweeks.push(days.slice(index, index + 7));\n\t\t}\n\n\t\treturn weeks;\n\t};\n\n\tconst weeks = generateCalendarDays();\n\tconst selectedStartDate = selectsRange && Array.isArray(value) ? value[0] : null;\n\tconst selectedEndDate = selectsRange && Array.isArray(value) ? value[1] : null;\n\tconst selectedDate = !selectsRange ? (value as Date | null) : null;\n\tconst selectedSinglePeriod = getCalendarPeriod(selectedDate, selectionOptions);\n\tconst hoveredPeriod = getCalendarPeriod(hoveredDate, selectionOptions);\n\tconst previewEndDate = selectedEndDate ?? (selectedStartDate ? (hoveredPeriod?.end ?? null) : null);\n\n\t/**\n\t * Проверяет, лежит ли день внутри выбранного или preview-диапазона.\n\t */\n\tconst isInRange = (date: Date) => {\n\t\tif (!selectsRange || !selectedStartDate || !previewEndDate) return false;\n\n\t\tconst dateMs = getStartOfDay(date).getTime();\n\t\tconst startMs = selectedStartDate.getTime();\n\t\tconst endMs = previewEndDate.getTime();\n\n\t\treturn dateMs >= Math.min(startMs, endMs) && dateMs <= Math.max(startMs, endMs);\n\t};\n\n\t/**\n\t * Проверяет ограничения на выбор даты.\n\t */\n\tconst isDisabled = (date: Date) => {\n\t\treturn !isCalendarPeriodWithinDateBounds(getCalendarPeriod(date, selectionOptions), { minDate, maxDate });\n\t};\n\n\t/**\n\t * Обновляет preview-конец диапазона при движении мыши.\n\t */\n\tconst handleDayHover = (date: Date, disabled: boolean) => {\n\t\tif (!selectsRange || !selectedStartDate || selectedEndDate || disabled) return;\n\t\tsetHoveredDate(date);\n\t};\n\n\t/**\n\t * Сбрасывает preview незавершённого диапазона при уходе курсора.\n\t */\n\tconst handleGridLeave = () => {\n\t\tif (!selectedEndDate) {\n\t\t\tsetHoveredDate(null);\n\t\t}\n\t};\n\n\treturn (\n\t\t<div className={styles.dayView}>\n\t\t\t<div className={styles.weekdays}>\n\t\t\t\t{weekDays.map((day) => (\n\t\t\t\t\t<div key={day} className={styles.weekday}>\n\t\t\t\t\t\t{day}\n\t\t\t\t\t</div>\n\t\t\t\t))}\n\t\t\t</div>\n\n\t\t\t<div className={styles.daysGrid} onMouseLeave={handleGridLeave}>\n\t\t\t\t{weeks.map((week, weekIndex) => (\n\t\t\t\t\t<div key={weekIndex} className={styles.week}>\n\t\t\t\t\t\t{week.map((day, dayIndex) => {\n\t\t\t\t\t\t\tconst isCurrentMonth = day.getMonth() === currentDate.getMonth();\n\t\t\t\t\t\t\tconst isSelected = isDateInsideCalendarPeriod(day, selectedSinglePeriod);\n\t\t\t\t\t\t\tconst isRange = isInRange(day);\n\t\t\t\t\t\t\tconst isStart = isSameCalendarDay(day, selectedStartDate);\n\t\t\t\t\t\t\tconst isEnd = isSameCalendarDay(day, previewEndDate);\n\t\t\t\t\t\t\tconst isNow = isSameCalendarDay(day, now);\n\t\t\t\t\t\t\tconst disabled = isDisabled(day);\n\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\tkey={`${weekIndex}-${dayIndex}`}\n\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\tonClick={() => !disabled && onChange(day)}\n\t\t\t\t\t\t\t\t\tonMouseEnter={() => handleDayHover(day, disabled)}\n\t\t\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\t\t\tdata-ui=\"calendar-day-button\"\n\t\t\t\t\t\t\t\t\tdata-action=\"select-calendar-day\"\n\t\t\t\t\t\t\t\t\tclassName={cn(styles.day, {\n\t\t\t\t\t\t\t\t\t\t[styles.outsideMonth]: !isCurrentMonth,\n\t\t\t\t\t\t\t\t\t\t[styles.selected]: isSelected,\n\t\t\t\t\t\t\t\t\t\t[styles.range]: isRange && !isStart && !isEnd,\n\t\t\t\t\t\t\t\t\t\t[styles.rangeStart]: isStart,\n\t\t\t\t\t\t\t\t\t\t[styles.rangeEnd]: isEnd,\n\t\t\t\t\t\t\t\t\t\t[styles.disabled]: disabled,\n\t\t\t\t\t\t\t\t\t\t[styles.weekend]: dayIndex > 4,\n\t\t\t\t\t\t\t\t\t\t[styles.now]: isNow\n\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\taria-label={dayLabelFormatter.format(day)}\n\t\t\t\t\t\t\t\t\taria-pressed={isSelected || isRange || isStart || isEnd}>\n\t\t\t\t\t\t\t\t\t{day.getDate()}\n\t\t\t\t\t\t\t\t</button>\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</div>\n\t\t</div>\n\t);\n};\n",".monthView {\n\tpadding: 0;\n}\n\n.monthsGrid {\n\tdisplay: grid;\n\tgrid-template-columns: repeat(3, 1fr);\n\tgap: var(--border-width);\n\talign-content: center;\n\n\t// min-height: calc(12em * var(--line-height));\n}\n\n.month {\n\theight: var(--control-height);\n\tcursor: pointer;\n\tborder-radius: var(--radius-xs);\n\t// font-size: var(--font-size-sm);\n\ttext-transform: capitalize;\n\n\tbackground-color: var(--surface-1);\n\n\t&:hover:not(.disabled) {\n\t\tbackground-color: var(--surface-accent);\n\t}\n\n\t&.range {\n\t\tbackground-color: var(--surface-accent);\n\t\tcolor: var(--content-0);\n\t}\n\n\t&.selected,\n\t&.rangeStart,\n\t&.rangeEnd {\n\t\tbackground-color: var(--surface-accent);\n\t\tcolor: var(--content-accent);\n\t\tfont-weight: 600;\n\t\tfont-variation-settings: \"wght\" 600;\n\t}\n\n\t&.disabled {\n\t\tcolor: var(--content-2);\n\t\tcursor: not-allowed;\n\n\t\t&:hover {\n\t\t\tbackground: none;\n\t\t}\n\t}\n}\n","import { useState } from \"react\";\n\nimport {\n\tcreateCalendarDate,\n\tgetCalendarPeriod,\n\tisCalendarPeriodWithinDateBounds,\n\ttype CalendarPeriodOptions,\n\ttype DateRangeInput\n} from \"@ryuzaki13/react-foundation-lib/formatters\";\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport { resolveDateInputPeriodRangeState } from \"../lib\";\n\nimport styles from \"./CalendarMonthView.module.scss\";\n\nimport type { DateInputSelectionMode, DateInputWeekEndDay } from \"../lib\";\n\nconst monthLabelFormatter = new Intl.DateTimeFormat(\"ru-RU\", { month: \"short\" });\nconst monthAriaFormatter = new Intl.DateTimeFormat(\"ru-RU\", { month: \"long\", year: \"numeric\" });\n\ninterface MonthViewProps {\n\tcurrentDate: Date;\n\tvalue: DateRangeInput;\n\tonChange: (date: Date) => void;\n\tminDate?: Date;\n\tmaxDate?: Date;\n\tselectsRange?: boolean;\n\tselectsPeriod?: boolean;\n\tselectionMode?: DateInputSelectionMode;\n\tweekEndDay?: DateInputWeekEndDay;\n}\n\n/**\n * Отображает выбор месяца в календарной семантике без timezone-сдвига.\n */\nexport const CalendarMonthView: React.FC<MonthViewProps> = ({\n\tcurrentDate,\n\tvalue,\n\tonChange,\n\tminDate,\n\tmaxDate,\n\tselectsRange,\n\tselectsPeriod,\n\tselectionMode = \"day\",\n\tweekEndDay = \"sunday\"\n}) => {\n\tconst [hoveredDate, setHoveredDate] = useState<Date | null>(null);\n\tconst months = Array.from({ length: 12 }, (_, index) => index);\n\tconst currentYear = currentDate.getFullYear();\n\tconst selectionOptions: CalendarPeriodOptions = {\n\t\tselectionMode,\n\t\tweekEndDay\n\t};\n\tconst selectedStartDate = selectsRange && Array.isArray(value) ? value[0] : null;\n\tconst selectedEndDate = selectsRange && Array.isArray(value) ? value[1] : null;\n\n\t/**\n\t * Возвращает сокращённое имя месяца.\n\t */\n\tconst getMonthName = (monthIndex: number) => monthLabelFormatter.format(createCalendarDate(currentYear, monthIndex, 1));\n\n\t/**\n\t * Проверяет, запрещён ли выбор месяца по ограничениям.\n\t */\n\tconst isDisabled = (monthIndex: number) => {\n\t\tif (!minDate && !maxDate) return false;\n\n\t\tconst monthStart = createCalendarDate(currentYear, monthIndex, 1);\n\t\tconst monthEnd = createCalendarDate(currentYear, monthIndex + 1, 0, 23, 59, 59);\n\n\t\tif (selectsPeriod) {\n\t\t\treturn !isCalendarPeriodWithinDateBounds(getCalendarPeriod(monthStart, selectionOptions), { minDate, maxDate });\n\t\t}\n\n\t\tif (minDate && monthEnd < minDate) return true;\n\t\tif (maxDate && monthStart > maxDate) return true;\n\n\t\treturn false;\n\t};\n\n\t/**\n\t * Обновляет preview-конец диапазона при движении мыши.\n\t */\n\tconst handleMonthHover = (date: Date, disabled: boolean) => {\n\t\tif (!selectsRange || !selectedStartDate || selectedEndDate || disabled) return;\n\t\tsetHoveredDate(date);\n\t};\n\n\t/**\n\t * Сбрасывает preview незавершённого диапазона при уходе курсора.\n\t */\n\tconst handleGridLeave = () => {\n\t\tif (!selectedEndDate) {\n\t\t\tsetHoveredDate(null);\n\t\t}\n\t};\n\n\treturn (\n\t\t<div className={styles.monthView}>\n\t\t\t<div className={styles.monthsGrid} onMouseLeave={handleGridLeave}>\n\t\t\t\t{months.map((monthIndex) => {\n\t\t\t\t\tconst disabled = isDisabled(monthIndex);\n\t\t\t\t\tconst monthDate = createCalendarDate(currentYear, monthIndex, 1);\n\t\t\t\t\tconst rangeState = resolveDateInputPeriodRangeState({\n\t\t\t\t\t\tdate: monthDate,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\thoveredDate,\n\t\t\t\t\t\tselectsRange,\n\t\t\t\t\t\tselectionOptions\n\t\t\t\t\t});\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tkey={monthIndex}\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tonClick={() => !disabled && onChange(monthDate)}\n\t\t\t\t\t\t\tonMouseEnter={() => handleMonthHover(monthDate, disabled)}\n\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\tdata-ui=\"calendar-month-button\"\n\t\t\t\t\t\t\tdata-action=\"select-calendar-month\"\n\t\t\t\t\t\t\tclassName={cn(styles.month, {\n\t\t\t\t\t\t\t\t[styles.selected]: rangeState.selected,\n\t\t\t\t\t\t\t\t[styles.range]: rangeState.range,\n\t\t\t\t\t\t\t\t[styles.rangeStart]: rangeState.rangeStart,\n\t\t\t\t\t\t\t\t[styles.rangeEnd]: rangeState.rangeEnd,\n\t\t\t\t\t\t\t\t[styles.disabled]: disabled\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\taria-label={monthAriaFormatter.format(monthDate)}\n\t\t\t\t\t\t\taria-pressed={rangeState.selected || rangeState.range || rangeState.rangeStart || rangeState.rangeEnd}>\n\t\t\t\t\t\t\t{getMonthName(monthIndex)}\n\t\t\t\t\t\t</button>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n",".calendarView {\n\twidth: calc(18em + var(--width-add));\n}\n\n.calendarHeader {\n\tdisplay: flex;\n\tjustify-content: space-between;\n\talign-items: center;\n\tpadding-bottom: var(--space-sm);\n\tmargin-bottom: var(--space-sm);\n\tgap: var(--space-sm);\n\tborder-bottom: var(--border);\n}\n",".yearView {\n\tpadding: 0;\n}\n\n.yearsGrid {\n\tdisplay: grid;\n\tgrid-template-columns: repeat(3, 1fr);\n\tgap: var(--border-width);\n}\n\n.year {\n\theight: var(--control-height);\n\tcursor: pointer;\n\tborder-radius: var(--radius-xs);\n\t// font-size: var(--font-size-sm);\n\n\tbackground-color: var(--surface-1);\n\n\t&:hover:not(.disabled) {\n\t\tbackground-color: var(--surface-accent);\n\t}\n\n\t&.range {\n\t\tbackground-color: var(--surface-accent);\n\t\tcolor: var(--content-0);\n\t}\n\n\t&.selected,\n\t&.rangeStart,\n\t&.rangeEnd {\n\t\tbackground-color: var(--surface-accent);\n\t\tcolor: var(--content-accent);\n\t\tfont-weight: 600;\n\t\tfont-variation-settings: \"wght\" 600;\n\t}\n\n\t&.disabled {\n\t\tcolor: var(--content-2);\n\t\tcursor: not-allowed;\n\n\t\t&:hover {\n\t\t\tbackground: none;\n\t\t}\n\t}\n}\n","import { useState } from \"react\";\n\nimport {\n\tcreateCalendarDate,\n\tgetCalendarPeriod,\n\tisCalendarPeriodWithinDateBounds,\n\ttype CalendarPeriodOptions,\n\ttype DateRangeInput\n} from \"@ryuzaki13/react-foundation-lib/formatters\";\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport { resolveDateInputPeriodRangeState } from \"../lib\";\n\nimport styles from \"./CalendarYearView.module.scss\";\n\nimport type { DateInputSelectionMode, DateInputWeekEndDay } from \"../lib\";\n\ninterface YearViewProps {\n\tcurrentDate: Date;\n\tvalue: DateRangeInput;\n\tonChange: (date: Date) => void;\n\tminDate?: Date;\n\tmaxDate?: Date;\n\tselectsRange?: boolean;\n\tselectsPeriod?: boolean;\n\tselectionMode?: DateInputSelectionMode;\n\tweekEndDay?: DateInputWeekEndDay;\n}\n\n/**\n * Отображает выбор года в календарной семантике без timezone-сдвига.\n */\nexport const CalendarYearView: React.FC<YearViewProps> = ({\n\tcurrentDate,\n\tvalue,\n\tonChange,\n\tminDate,\n\tmaxDate,\n\tselectsRange,\n\tselectsPeriod,\n\tselectionMode = \"day\",\n\tweekEndDay = \"sunday\"\n}) => {\n\tconst [hoveredDate, setHoveredDate] = useState<Date | null>(null);\n\tconst startYear = Math.floor(currentDate.getFullYear() / 12) * 12;\n\tconst years = Array.from({ length: 12 }, (_, index) => startYear + index);\n\tconst selectionOptions: CalendarPeriodOptions = {\n\t\tselectionMode,\n\t\tweekEndDay\n\t};\n\tconst selectedStartDate = selectsRange && Array.isArray(value) ? value[0] : null;\n\tconst selectedEndDate = selectsRange && Array.isArray(value) ? value[1] : null;\n\n\t/**\n\t * Проверяет ограничения на выбор года.\n\t */\n\tconst isDisabled = (year: number) => {\n\t\tif (!minDate && !maxDate) return false;\n\n\t\tconst yearStart = createCalendarDate(year, 0, 1);\n\t\tconst yearEnd = createCalendarDate(year, 11, 31, 23, 59, 59);\n\n\t\tif (selectsPeriod) {\n\t\t\treturn !isCalendarPeriodWithinDateBounds(getCalendarPeriod(yearStart, selectionOptions), { minDate, maxDate });\n\t\t}\n\n\t\tif (minDate && yearEnd < minDate) return true;\n\t\tif (maxDate && yearStart > maxDate) return true;\n\n\t\treturn false;\n\t};\n\n\t/**\n\t * Обновляет preview-конец диапазона при движении мыши.\n\t */\n\tconst handleYearHover = (date: Date, disabled: boolean) => {\n\t\tif (!selectsRange || !selectedStartDate || selectedEndDate || disabled) return;\n\t\tsetHoveredDate(date);\n\t};\n\n\t/**\n\t * Сбрасывает preview незавершённого диапазона при уходе курсора.\n\t */\n\tconst handleGridLeave = () => {\n\t\tif (!selectedEndDate) {\n\t\t\tsetHoveredDate(null);\n\t\t}\n\t};\n\n\treturn (\n\t\t<div className={styles.yearView}>\n\t\t\t<div className={styles.yearsGrid} onMouseLeave={handleGridLeave}>\n\t\t\t\t{years.map((year) => {\n\t\t\t\t\tconst disabled = isDisabled(year);\n\t\t\t\t\tconst yearDate = createCalendarDate(year, 0, 1);\n\t\t\t\t\tconst rangeState = resolveDateInputPeriodRangeState({\n\t\t\t\t\t\tdate: yearDate,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\thoveredDate,\n\t\t\t\t\t\tselectsRange,\n\t\t\t\t\t\tselectionOptions\n\t\t\t\t\t});\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tkey={year}\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tonClick={() => !disabled && onChange(yearDate)}\n\t\t\t\t\t\t\tonMouseEnter={() => handleYearHover(yearDate, disabled)}\n\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\tdata-ui=\"calendar-year-button\"\n\t\t\t\t\t\t\tdata-action=\"select-calendar-year\"\n\t\t\t\t\t\t\tclassName={cn(styles.year, {\n\t\t\t\t\t\t\t\t[styles.selected]: rangeState.selected,\n\t\t\t\t\t\t\t\t[styles.range]: rangeState.range,\n\t\t\t\t\t\t\t\t[styles.rangeStart]: rangeState.rangeStart,\n\t\t\t\t\t\t\t\t[styles.rangeEnd]: rangeState.rangeEnd,\n\t\t\t\t\t\t\t\t[styles.disabled]: disabled\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\taria-label={year.toString()}\n\t\t\t\t\t\t\taria-pressed={rangeState.selected || rangeState.range || rangeState.rangeStart || rangeState.rangeEnd}>\n\t\t\t\t\t\t\t{year}\n\t\t\t\t\t\t</button>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n","import { useEffect, useEffectEvent, useState } from \"react\";\n\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\n\nimport {\n\taddCalendarMonths,\n\taddCalendarYears,\n\tgetCalendarPeriod,\n\tgetStartOfDay,\n\tisCalendarPeriodWithinDateBounds,\n\tisDateRangeTuple,\n\ttype CalendarPeriodOptions,\n\ttype NullableDateRange\n} from \"@ryuzaki13/react-foundation-lib/formatters\";\n\nimport { Button } from \"../../button\";\nimport { isDatePickerLevelAvailable, type CalendarType, type DateInputSelectionMode, type DateInputWeekEndDay } from \"../lib\";\n\nimport { CalendarDayView } from \"./CalendarDayView\";\nimport { CalendarMonthView } from \"./CalendarMonthView\";\nimport styles from \"./CalendarView.module.scss\";\nimport { CalendarYearView } from \"./CalendarYearView\";\n\ninterface BaseCalendarViewProps {\n\tview: CalendarType;\n\tdatePickerLevel: CalendarType;\n\tselectionMode?: DateInputSelectionMode;\n\tweekEndDay?: DateInputWeekEndDay;\n\tonViewChange: (view: CalendarType) => void;\n}\n\ninterface CalendarViewProps extends BaseCalendarViewProps {\n\tselectsRange?: boolean;\n\tvalue: Date | NullableDateRange | null;\n\tonChange: (date: Date | NullableDateRange) => void;\n\tminDate?: Date;\n\tmaxDate?: Date;\n\tcurrentDate?: Date;\n\tonCurrentDateChange?: (date: Date) => void;\n}\n\n/**\n * Отображает календарь выбора даты в календарной семантике без timezone-сдвига.\n */\nexport function CalendarView({\n\tview,\n\tdatePickerLevel,\n\tselectionMode = \"day\",\n\tweekEndDay = \"sunday\",\n\tonViewChange,\n\t...props\n}: CalendarViewProps) {\n\tconst [dateNow] = useState(() => getStartOfDay(new Date()));\n\tconst [uncontrolledCurrentDate, setUncontrolledCurrentDate] = useState<Date>(() => {\n\t\tif (props.selectsRange && isDateRangeTuple(props.value) && props.value[0] instanceof Date) {\n\t\t\treturn props.value[0];\n\t\t}\n\n\t\tif (!props.selectsRange && props.value instanceof Date) {\n\t\t\treturn props.value;\n\t\t}\n\n\t\treturn getStartOfDay(new Date());\n\t});\n\tconst currentDate = props.currentDate ?? uncontrolledCurrentDate;\n\tconst selectionOptions: CalendarPeriodOptions = {\n\t\tselectionMode,\n\t\tweekEndDay\n\t};\n\n\t/**\n\t * Обновляет видимую календарную дату в управляемом или неуправляемом режиме.\n\t */\n\tconst setCurrentDate = (value: Date | ((prevValue: Date) => Date)) => {\n\t\tconst nextValue = typeof value === \"function\" ? value(currentDate) : value;\n\n\t\tif (props.currentDate === undefined) {\n\t\t\tsetUncontrolledCurrentDate(nextValue);\n\t\t}\n\n\t\tprops.onCurrentDateChange?.(nextValue);\n\t};\n\n\t/**\n\t * Синхронизирует видимый месяц/год с внешним значением поля.\n\t */\n\tconst syncCurrentDate = useEffectEvent((nextValue: Date | NullableDateRange | null) => {\n\t\tif (props.selectsRange && Array.isArray(nextValue) && nextValue[0] instanceof Date) {\n\t\t\tsetCurrentDate(nextValue[0]);\n\t\t\treturn;\n\t\t}\n\n\t\tif (!props.selectsRange && nextValue instanceof Date) {\n\t\t\tsetCurrentDate(nextValue);\n\t\t}\n\t});\n\n\tuseEffect(() => {\n\t\tsyncCurrentDate(props.value);\n\t}, [props.value]);\n\n\t/**\n\t * Переключает видимую область календаря назад.\n\t */\n\tconst goToPrevious = () => {\n\t\tif (view === \"day\") {\n\t\t\tsetCurrentDate((prev) => addCalendarMonths(prev, -1));\n\t\t\treturn;\n\t\t}\n\n\t\tif (view === \"month\") {\n\t\t\tsetCurrentDate((prev) => addCalendarYears(prev, -1));\n\t\t\treturn;\n\t\t}\n\n\t\tsetCurrentDate((prev) => addCalendarYears(prev, -12));\n\t};\n\n\t/**\n\t * Переключает видимую область календаря вперёд.\n\t */\n\tconst goToNext = () => {\n\t\tif (view === \"day\") {\n\t\t\tsetCurrentDate((prev) => addCalendarMonths(prev, 1));\n\t\t\treturn;\n\t\t}\n\n\t\tif (view === \"month\") {\n\t\t\tsetCurrentDate((prev) => addCalendarYears(prev, 1));\n\t\t\treturn;\n\t\t}\n\n\t\tsetCurrentDate((prev) => addCalendarYears(prev, 12));\n\t};\n\n\t/**\n\t * Возвращает заголовок текущего календарного вида.\n\t */\n\tconst renderHeader = () => {\n\t\tlet title = \"\";\n\t\tif (view === \"day\") {\n\t\t\ttitle = currentDate.toLocaleDateString(\"ru-RU\", {\n\t\t\t\tmonth: \"long\",\n\t\t\t\tyear: \"numeric\"\n\t\t\t});\n\t\t} else if (view === \"month\") {\n\t\t\ttitle = currentDate.getFullYear().toString();\n\t\t} else {\n\t\t\tconst startYear = Math.floor(currentDate.getFullYear() / 12) * 12;\n\t\t\tconst endYear = startYear + 11;\n\t\t\ttitle = `${startYear} - ${endYear}`;\n\t\t}\n\n\t\treturn (\n\t\t\t<div className={styles.calendarHeader}>\n\t\t\t\t<Button\n\t\t\t\t\ticon={<ChevronLeft />}\n\t\t\t\t\tonClick={goToPrevious}\n\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\taria-label=\"Предыдущий\"\n\t\t\t\t\tdata-action=\"calendar-previous\"\n\t\t\t\t/>\n\n\t\t\t\t<Button\n\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\tif (view === \"day\") onViewChange(\"month\");\n\t\t\t\t\t\telse if (view === \"month\") onViewChange(\"year\");\n\t\t\t\t\t}}\n\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\tclassName=\"flex1\"\n\t\t\t\t\tdata-ui=\"calendar-view-switch-button\"\n\t\t\t\t\tdata-action=\"calendar-switch-view\">\n\t\t\t\t\t{title}\n\t\t\t\t</Button>\n\n\t\t\t\t<Button\n\t\t\t\t\ticon={<ChevronRight />}\n\t\t\t\t\tonClick={goToNext}\n\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\taria-label=\"Следующий\"\n\t\t\t\t\tdata-ui=\"calendar-next-button\"\n\t\t\t\t\tdata-action=\"calendar-next\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t);\n\t};\n\n\t/**\n\t * Отрисовывает активный режим календаря.\n\t */\n\tconst renderView = () => {\n\t\tconst handleDateSelect = (date: Date) => {\n\t\t\tconst selectedPeriod = getCalendarPeriod(date, selectionOptions);\n\t\t\tif (!selectedPeriod || !isCalendarPeriodWithinDateBounds(selectedPeriod, { minDate: props.minDate, maxDate: props.maxDate }))\n\t\t\t\treturn;\n\n\t\t\tif (props.selectsRange) {\n\t\t\t\tlet selectedStartDate: Date | null = null;\n\t\t\t\tlet selectedEndDate: Date | null = null;\n\n\t\t\t\tif (Array.isArray(props.value)) {\n\t\t\t\t\t[selectedStartDate, selectedEndDate] = props.value;\n\t\t\t\t}\n\n\t\t\t\tif (!selectedStartDate || selectedEndDate) {\n\t\t\t\t\tprops.onChange([selectedPeriod.start, null]);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst startPeriod = getCalendarPeriod(selectedStartDate, selectionOptions);\n\t\t\t\tif (!startPeriod) return;\n\n\t\t\t\tif (selectedPeriod.start < startPeriod.start) {\n\t\t\t\t\tprops.onChange([selectedPeriod.start, startPeriod.end]);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tprops.onChange([startPeriod.start, selectedPeriod.end]);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tprops.onChange(selectedPeriod.start);\n\t\t};\n\n\t\tconst handleMonthSelect = (date: Date) => {\n\t\t\tsetCurrentDate(date);\n\n\t\t\tif (selectionMode === \"month\" || !isDatePickerLevelAvailable(\"day\", datePickerLevel)) {\n\t\t\t\thandleDateSelect(date);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tonViewChange(\"day\");\n\t\t};\n\n\t\tconst handleYearSelect = (date: Date) => {\n\t\t\tsetCurrentDate(date);\n\n\t\t\tif (selectionMode === \"year\" || !isDatePickerLevelAvailable(\"month\", datePickerLevel)) {\n\t\t\t\thandleDateSelect(date);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tonViewChange(\"month\");\n\t\t};\n\n\t\tswitch (view) {\n\t\t\tcase \"day\":\n\t\t\t\treturn (\n\t\t\t\t\t<CalendarDayView\n\t\t\t\t\t\tnow={dateNow}\n\t\t\t\t\t\tcurrentDate={currentDate}\n\t\t\t\t\t\tvalue={props.value}\n\t\t\t\t\t\tonChange={handleDateSelect}\n\t\t\t\t\t\tminDate={props.minDate}\n\t\t\t\t\t\tmaxDate={props.maxDate}\n\t\t\t\t\t\tselectsRange={props.selectsRange}\n\t\t\t\t\t\tselectionMode={selectionMode}\n\t\t\t\t\t\tweekEndDay={weekEndDay}\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\tcase \"month\":\n\t\t\t\treturn (\n\t\t\t\t\t<CalendarMonthView\n\t\t\t\t\t\tcurrentDate={currentDate}\n\t\t\t\t\t\tvalue={props.value}\n\t\t\t\t\t\tonChange={handleMonthSelect}\n\t\t\t\t\t\tminDate={props.minDate}\n\t\t\t\t\t\tmaxDate={props.maxDate}\n\t\t\t\t\t\tselectsRange={props.selectsRange}\n\t\t\t\t\t\tselectsPeriod={selectionMode === \"month\" || !isDatePickerLevelAvailable(\"day\", datePickerLevel)}\n\t\t\t\t\t\tselectionMode={selectionMode}\n\t\t\t\t\t\tweekEndDay={weekEndDay}\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\tcase \"year\":\n\t\t\t\treturn (\n\t\t\t\t\t<CalendarYearView\n\t\t\t\t\t\tcurrentDate={currentDate}\n\t\t\t\t\t\tvalue={props.value}\n\t\t\t\t\t\tonChange={handleYearSelect}\n\t\t\t\t\t\tminDate={props.minDate}\n\t\t\t\t\t\tmaxDate={props.maxDate}\n\t\t\t\t\t\tselectsRange={props.selectsRange}\n\t\t\t\t\t\tselectsPeriod={selectionMode === \"year\" || !isDatePickerLevelAvailable(\"month\", datePickerLevel)}\n\t\t\t\t\t\tselectionMode={selectionMode}\n\t\t\t\t\t\tweekEndDay={weekEndDay}\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\tdefault:\n\t\t\t\treturn null;\n\t\t}\n\t};\n\n\treturn (\n\t\t<div className={styles.calendarView}>\n\t\t\t{renderHeader()}\n\t\t\t{renderView()}\n\t\t</div>\n\t);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"CalendarView-DjeTJkTT.js","names":[],"sources":["../../src/date-input/lib/dateInputCalendar.ts","../../src/date-input/ui/CalendarDayView.module.scss","../../src/date-input/ui/CalendarDayView.tsx","../../src/date-input/ui/CalendarMonthView.module.scss","../../src/date-input/ui/CalendarMonthView.tsx","../../src/date-input/ui/CalendarView.module.scss","../../src/date-input/ui/CalendarYearView.module.scss","../../src/date-input/ui/CalendarYearView.tsx","../../src/date-input/ui/CalendarView.tsx"],"sourcesContent":["import {\n\tgetCalendarPeriod,\n\tisDateInsideCalendarPeriod,\n\ttype CalendarPeriod,\n\ttype CalendarPeriodOptions,\n\ttype DateRangeInput,\n\ttype NullableDateRange\n} from \"@ryuzaki13/react-foundation-lib/formatters\";\n\nimport type { DateInputSelectionMode, DateInputWeekEndDay, DatePickerLevel } from \"./types\";\n\nexport const DATE_PICKER_LEVELS = [\"day\", \"month\", \"year\"] as const satisfies readonly DatePickerLevel[];\nexport const DATE_INPUT_SELECTION_MODES = [\"day\", \"week\", \"month\", \"year\"] as const satisfies readonly DateInputSelectionMode[];\nexport const DATE_INPUT_WEEK_END_DAYS = [\"friday\", \"saturday\", \"sunday\"] as const satisfies readonly DateInputWeekEndDay[];\n\n/**\n * Возвращает календарный вид, который удобнее всего открывать для выбранного размера периода.\n */\nexport function getDatePickerLevelForSelectionMode(selectionMode: DateInputSelectionMode): DatePickerLevel {\n\tif (selectionMode === \"month\") return \"month\";\n\tif (selectionMode === \"year\") return \"year\";\n\n\treturn \"day\";\n}\n\n/**\n * Проверяет, разрешён ли календарный вид относительно минимального уровня навигации.\n */\nexport function isDatePickerLevelAvailable(level: DatePickerLevel, minLevel: DatePickerLevel): boolean {\n\treturn DATE_PICKER_LEVELS.indexOf(level) >= DATE_PICKER_LEVELS.indexOf(minLevel);\n}\n\n/**\n * Подбирает вид календаря для режима выбора с учётом ограничения `datePickerLevel`.\n */\nexport function resolveAvailableDatePickerLevel(selectionMode: DateInputSelectionMode, minLevel: DatePickerLevel): DatePickerLevel {\n\tconst preferredLevel = getDatePickerLevelForSelectionMode(selectionMode);\n\n\treturn isDatePickerLevelAvailable(preferredLevel, minLevel) ? preferredLevel : minLevel;\n}\n\nexport interface DateInputPeriodRangeStateOptions {\n\treadonly date: Date;\n\treadonly value: DateRangeInput;\n\treadonly hoveredDate?: Date | null;\n\treadonly selectsRange?: boolean;\n\treadonly selectionOptions?: CalendarPeriodOptions;\n}\n\nexport interface DateInputPeriodRangeState {\n\treadonly selected: boolean;\n\treadonly range: boolean;\n\treadonly rangeStart: boolean;\n\treadonly rangeEnd: boolean;\n}\n\nfunction isSameCalendarPeriod(left: CalendarPeriod | null, right: CalendarPeriod | null): boolean {\n\tif (!left || !right) return false;\n\n\treturn left.start.getTime() === right.start.getTime() && left.end.getTime() === right.end.getTime();\n}\n\nfunction isCalendarPeriodInsideRange(\n\tperiod: CalendarPeriod | null,\n\tstartPeriod: CalendarPeriod | null,\n\tendPeriod: CalendarPeriod | null\n): boolean {\n\tif (!period || !startPeriod || !endPeriod) return false;\n\n\tconst startTime = Math.min(startPeriod.start.getTime(), endPeriod.start.getTime());\n\tconst endTime = Math.max(startPeriod.end.getTime(), endPeriod.end.getTime());\n\n\treturn period.start.getTime() >= startTime && period.end.getTime() <= endTime;\n}\n\n/**\n * Рассчитывает visual-state ячейки календарного периода для single/range режима.\n */\nexport function resolveDateInputPeriodRangeState({\n\tdate,\n\tvalue,\n\thoveredDate,\n\tselectsRange,\n\tselectionOptions\n}: DateInputPeriodRangeStateOptions): DateInputPeriodRangeState {\n\tconst period = getCalendarPeriod(date, selectionOptions);\n\tconst selectedDate = !selectsRange && value instanceof Date ? value : null;\n\tconst selectedSinglePeriod = getCalendarPeriod(selectedDate, selectionOptions);\n\n\tif (!selectsRange || !Array.isArray(value)) {\n\t\treturn {\n\t\t\tselected: isDateInsideCalendarPeriod(date, selectedSinglePeriod),\n\t\t\trange: false,\n\t\t\trangeStart: false,\n\t\t\trangeEnd: false\n\t\t};\n\t}\n\n\tconst [selectedStartDate, selectedEndDate] = value as NullableDateRange;\n\tconst selectedStartPeriod = getCalendarPeriod(selectedStartDate, selectionOptions);\n\tconst previewEndPeriod = getCalendarPeriod(selectedEndDate ?? (selectedStartDate ? hoveredDate : null), selectionOptions);\n\tconst rangeStart = isSameCalendarPeriod(period, selectedStartPeriod);\n\tconst rangeEnd = isSameCalendarPeriod(period, previewEndPeriod);\n\tconst range = isCalendarPeriodInsideRange(period, selectedStartPeriod, previewEndPeriod);\n\n\treturn {\n\t\tselected: false,\n\t\trange: range && !rangeStart && !rangeEnd,\n\t\trangeStart,\n\t\trangeEnd\n\t};\n}\n",".dayView {\n\tpadding: 0;\n}\n\n.weekdays {\n\tdisplay: grid;\n\tgrid-template-columns: repeat(7, 1fr);\n\ttext-align: center;\n\tmargin-bottom: var(--space-sm);\n\tcolor: var(--content-1);\n}\n\n.weekday {\n\tfont-size: var(--font-size-xs);\n}\n\n.daysGrid {\n\tdisplay: grid;\n\tgap: var(--border-width);\n}\n\n.week {\n\tdisplay: grid;\n\tgrid-template-columns: repeat(7, 1fr);\n\tgap: var(--border-width);\n}\n\n.day {\n\t--range-radius: calc(var(--control-height) / 2);\n\n\theight: var(--control-height);\n\tcursor: pointer;\n\tborder-radius: var(--radius-xs);\n\t// font-size: var(--font-size-sm);\n\n\tbackground-color: var(--surface-1);\n\n\t&:hover:not(.disabled) {\n\t\tbackground-color: var(--surface-accent);\n\t}\n\n\t&.outsideMonth {\n\t\tbackground-color: transparent;\n\t\tcolor: var(--content-2);\n\t}\n\n\t&.range {\n\t\tbackground-color: var(--surface-accent);\n\t\tcolor: var(--content-0);\n\t}\n\n\t&.rangeStart {\n\t\t// border-top-left-radius: var(--range-radius);\n\t\t// border-bottom-left-radius: var(--range-radius);\n\t}\n\n\t&.rangeEnd {\n\t\t// border-top-right-radius: var(--range-radius);\n\t\t// border-bottom-right-radius: var(--range-radius);\n\t}\n\n\t&.selected,\n\t&.rangeStart,\n\t&.rangeEnd {\n\t\tbackground-color: var(--surface-accent);\n\t\tcolor: var(--content-accent);\n\t\tfont-weight: 600;\n\t\tfont-variation-settings: \"wght\" 600;\n\t}\n\n\t&.weekend:not(.selected):not(.range):not(.rangeStart):not(.rangeEnd) {\n\t\tcolor: var(--status-error-fill);\n\t}\n\n\t&.disabled {\n\t\tcolor: var(--content-2);\n\t\tcursor: not-allowed;\n\n\t\t&:hover {\n\t\t\tbackground: none;\n\t\t}\n\t}\n\n\t&.now {\n\t\tborder: var(--border);\n\t\tcolor: var(--status-info-text);\n\t\tborder-color: var(--status-info-text);\n\t}\n}\n","import { useState } from \"react\";\n\nimport {\n\tcreateCalendarDate,\n\tgetCalendarPeriod,\n\tgetStartOfDay,\n\tisCalendarPeriodWithinDateBounds,\n\tisDateInsideCalendarPeriod,\n\tisSameCalendarDay,\n\ttype CalendarPeriodOptions,\n\ttype DateRangeInput\n} from \"@ryuzaki13/react-foundation-lib/formatters\";\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport styles from \"./CalendarDayView.module.scss\";\n\nimport type { DateInputSelectionMode, DateInputWeekEndDay } from \"../lib\";\n\nconst weekDays = [\"Пн\", \"Вт\", \"Ср\", \"Чт\", \"Пт\", \"Сб\", \"Вс\"];\nconst dayLabelFormatter = new Intl.DateTimeFormat(\"ru-RU\", {\n\tweekday: \"long\",\n\tyear: \"numeric\",\n\tmonth: \"long\",\n\tday: \"numeric\"\n});\n\ninterface DayViewProps {\n\tnow: Date;\n\tcurrentDate: Date;\n\tvalue: DateRangeInput;\n\tonChange: (date: Date) => void;\n\tminDate?: Date;\n\tmaxDate?: Date;\n\tselectsRange?: boolean;\n\tselectionMode?: DateInputSelectionMode;\n\tweekEndDay?: DateInputWeekEndDay;\n}\n\n/**\n * Отображает сетку дней месяца в календарной семантике без timezone-сдвига.\n */\nexport const CalendarDayView: React.FC<DayViewProps> = ({\n\tnow,\n\tcurrentDate,\n\tvalue,\n\tonChange,\n\tminDate,\n\tmaxDate,\n\tselectsRange,\n\tselectionMode = \"day\",\n\tweekEndDay = \"sunday\"\n}) => {\n\tconst [hoveredDate, setHoveredDate] = useState<Date | null>(null);\n\tconst selectionOptions: CalendarPeriodOptions = {\n\t\tselectionMode,\n\t\tweekEndDay\n\t};\n\n\t/**\n\t * Генерирует недели для текущего месяца с учётом дней соседних месяцев.\n\t */\n\tconst generateCalendarDays = () => {\n\t\tconst year = currentDate.getFullYear();\n\t\tconst month = currentDate.getMonth();\n\n\t\tconst firstDay = createCalendarDate(year, month, 1);\n\t\tconst lastDay = createCalendarDate(year, month + 1, 0);\n\t\tconst prevMonthDays = firstDay.getDay() === 0 ? 6 : firstDay.getDay() - 1;\n\t\tconst nextMonthDays = 6 * 7 - (prevMonthDays + lastDay.getDate());\n\n\t\tconst days: Date[] = [];\n\t\tconst prevMonthLastDay = createCalendarDate(year, month, 0).getDate();\n\n\t\tfor (let index = prevMonthDays; index > 0; index -= 1) {\n\t\t\tdays.push(createCalendarDate(year, month - 1, prevMonthLastDay - index + 1));\n\t\t}\n\n\t\tfor (let day = 1; day <= lastDay.getDate(); day += 1) {\n\t\t\tdays.push(createCalendarDate(year, month, day));\n\t\t}\n\n\t\tfor (let day = 1; day <= nextMonthDays; day += 1) {\n\t\t\tdays.push(createCalendarDate(year, month + 1, day));\n\t\t}\n\n\t\tconst weeks: Date[][] = [];\n\t\tfor (let index = 0; index < days.length; index += 7) {\n\t\t\tweeks.push(days.slice(index, index + 7));\n\t\t}\n\n\t\treturn weeks;\n\t};\n\n\tconst weeks = generateCalendarDays();\n\tconst selectedStartDate = selectsRange && Array.isArray(value) ? value[0] : null;\n\tconst selectedEndDate = selectsRange && Array.isArray(value) ? value[1] : null;\n\tconst selectedDate = !selectsRange ? (value as Date | null) : null;\n\tconst selectedSinglePeriod = getCalendarPeriod(selectedDate, selectionOptions);\n\tconst hoveredPeriod = getCalendarPeriod(hoveredDate, selectionOptions);\n\tconst previewEndDate = selectedEndDate ?? (selectedStartDate ? (hoveredPeriod?.end ?? null) : null);\n\n\t/**\n\t * Проверяет, лежит ли день внутри выбранного или preview-диапазона.\n\t */\n\tconst isInRange = (date: Date) => {\n\t\tif (!selectsRange || !selectedStartDate || !previewEndDate) return false;\n\n\t\tconst dateMs = getStartOfDay(date).getTime();\n\t\tconst startMs = selectedStartDate.getTime();\n\t\tconst endMs = previewEndDate.getTime();\n\n\t\treturn dateMs >= Math.min(startMs, endMs) && dateMs <= Math.max(startMs, endMs);\n\t};\n\n\t/**\n\t * Проверяет ограничения на выбор даты.\n\t */\n\tconst isDisabled = (date: Date) => {\n\t\treturn !isCalendarPeriodWithinDateBounds(getCalendarPeriod(date, selectionOptions), { minDate, maxDate });\n\t};\n\n\t/**\n\t * Обновляет preview-конец диапазона при движении мыши.\n\t */\n\tconst handleDayHover = (date: Date, disabled: boolean) => {\n\t\tif (!selectsRange || !selectedStartDate || selectedEndDate || disabled) return;\n\t\tsetHoveredDate(date);\n\t};\n\n\t/**\n\t * Сбрасывает preview незавершённого диапазона при уходе курсора.\n\t */\n\tconst handleGridLeave = () => {\n\t\tif (!selectedEndDate) {\n\t\t\tsetHoveredDate(null);\n\t\t}\n\t};\n\n\treturn (\n\t\t<div className={styles.dayView}>\n\t\t\t<div className={styles.weekdays}>\n\t\t\t\t{weekDays.map((day) => (\n\t\t\t\t\t<div key={day} className={styles.weekday}>\n\t\t\t\t\t\t{day}\n\t\t\t\t\t</div>\n\t\t\t\t))}\n\t\t\t</div>\n\n\t\t\t<div className={styles.daysGrid} onMouseLeave={handleGridLeave}>\n\t\t\t\t{weeks.map((week, weekIndex) => (\n\t\t\t\t\t<div key={weekIndex} className={styles.week}>\n\t\t\t\t\t\t{week.map((day, dayIndex) => {\n\t\t\t\t\t\t\tconst isCurrentMonth = day.getMonth() === currentDate.getMonth();\n\t\t\t\t\t\t\tconst isSelected = isDateInsideCalendarPeriod(day, selectedSinglePeriod);\n\t\t\t\t\t\t\tconst isRange = isInRange(day);\n\t\t\t\t\t\t\tconst isStart = isSameCalendarDay(day, selectedStartDate);\n\t\t\t\t\t\t\tconst isEnd = isSameCalendarDay(day, previewEndDate);\n\t\t\t\t\t\t\tconst isNow = isSameCalendarDay(day, now);\n\t\t\t\t\t\t\tconst disabled = isDisabled(day);\n\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\tkey={`${weekIndex}-${dayIndex}`}\n\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\tonClick={() => !disabled && onChange(day)}\n\t\t\t\t\t\t\t\t\tonMouseEnter={() => handleDayHover(day, disabled)}\n\t\t\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\t\t\tdata-ui=\"calendar-day-button\"\n\t\t\t\t\t\t\t\t\tdata-action=\"select-calendar-day\"\n\t\t\t\t\t\t\t\t\tclassName={cn(styles.day, {\n\t\t\t\t\t\t\t\t\t\t[styles.outsideMonth]: !isCurrentMonth,\n\t\t\t\t\t\t\t\t\t\t[styles.selected]: isSelected,\n\t\t\t\t\t\t\t\t\t\t[styles.range]: isRange && !isStart && !isEnd,\n\t\t\t\t\t\t\t\t\t\t[styles.rangeStart]: isStart,\n\t\t\t\t\t\t\t\t\t\t[styles.rangeEnd]: isEnd,\n\t\t\t\t\t\t\t\t\t\t[styles.disabled]: disabled,\n\t\t\t\t\t\t\t\t\t\t[styles.weekend]: dayIndex > 4,\n\t\t\t\t\t\t\t\t\t\t[styles.now]: isNow\n\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\taria-label={dayLabelFormatter.format(day)}\n\t\t\t\t\t\t\t\t\taria-pressed={isSelected || isRange || isStart || isEnd}>\n\t\t\t\t\t\t\t\t\t{day.getDate()}\n\t\t\t\t\t\t\t\t</button>\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</div>\n\t\t</div>\n\t);\n};\n",".monthView {\n\tpadding: 0;\n}\n\n.monthsGrid {\n\tdisplay: grid;\n\tgrid-template-columns: repeat(3, 1fr);\n\tgap: var(--border-width);\n\talign-content: center;\n\n\t// min-height: calc(12em * var(--line-height));\n}\n\n.month {\n\theight: var(--control-height);\n\tcursor: pointer;\n\tborder-radius: var(--radius-xs);\n\t// font-size: var(--font-size-sm);\n\ttext-transform: capitalize;\n\n\tbackground-color: var(--surface-1);\n\n\t&:hover:not(.disabled) {\n\t\tbackground-color: var(--surface-accent);\n\t}\n\n\t&.range {\n\t\tbackground-color: var(--surface-accent);\n\t\tcolor: var(--content-0);\n\t}\n\n\t&.selected,\n\t&.rangeStart,\n\t&.rangeEnd {\n\t\tbackground-color: var(--surface-accent);\n\t\tcolor: var(--content-accent);\n\t\tfont-weight: 600;\n\t\tfont-variation-settings: \"wght\" 600;\n\t}\n\n\t&.disabled {\n\t\tcolor: var(--content-2);\n\t\tcursor: not-allowed;\n\n\t\t&:hover {\n\t\t\tbackground: none;\n\t\t}\n\t}\n}\n","import { useState } from \"react\";\n\nimport {\n\tcreateCalendarDate,\n\tgetCalendarPeriod,\n\tisCalendarPeriodWithinDateBounds,\n\ttype CalendarPeriodOptions,\n\ttype DateRangeInput\n} from \"@ryuzaki13/react-foundation-lib/formatters\";\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport { resolveDateInputPeriodRangeState } from \"../lib\";\n\nimport styles from \"./CalendarMonthView.module.scss\";\n\nimport type { DateInputSelectionMode, DateInputWeekEndDay } from \"../lib\";\n\nconst monthLabelFormatter = new Intl.DateTimeFormat(\"ru-RU\", { month: \"short\" });\nconst monthAriaFormatter = new Intl.DateTimeFormat(\"ru-RU\", { month: \"long\", year: \"numeric\" });\n\ninterface MonthViewProps {\n\tcurrentDate: Date;\n\tvalue: DateRangeInput;\n\tonChange: (date: Date) => void;\n\tminDate?: Date;\n\tmaxDate?: Date;\n\tselectsRange?: boolean;\n\tselectsPeriod?: boolean;\n\tselectionMode?: DateInputSelectionMode;\n\tweekEndDay?: DateInputWeekEndDay;\n}\n\n/**\n * Отображает выбор месяца в календарной семантике без timezone-сдвига.\n */\nexport const CalendarMonthView: React.FC<MonthViewProps> = ({\n\tcurrentDate,\n\tvalue,\n\tonChange,\n\tminDate,\n\tmaxDate,\n\tselectsRange,\n\tselectsPeriod,\n\tselectionMode = \"day\",\n\tweekEndDay = \"sunday\"\n}) => {\n\tconst [hoveredDate, setHoveredDate] = useState<Date | null>(null);\n\tconst months = Array.from({ length: 12 }, (_, index) => index);\n\tconst currentYear = currentDate.getFullYear();\n\tconst selectionOptions: CalendarPeriodOptions = {\n\t\tselectionMode,\n\t\tweekEndDay\n\t};\n\tconst selectedStartDate = selectsRange && Array.isArray(value) ? value[0] : null;\n\tconst selectedEndDate = selectsRange && Array.isArray(value) ? value[1] : null;\n\n\t/**\n\t * Возвращает сокращённое имя месяца.\n\t */\n\tconst getMonthName = (monthIndex: number) => monthLabelFormatter.format(createCalendarDate(currentYear, monthIndex, 1));\n\n\t/**\n\t * Проверяет, запрещён ли выбор месяца по ограничениям.\n\t */\n\tconst isDisabled = (monthIndex: number) => {\n\t\tif (!minDate && !maxDate) return false;\n\n\t\tconst monthStart = createCalendarDate(currentYear, monthIndex, 1);\n\t\tconst monthEnd = createCalendarDate(currentYear, monthIndex + 1, 0, 23, 59, 59);\n\n\t\tif (selectsPeriod) {\n\t\t\treturn !isCalendarPeriodWithinDateBounds(getCalendarPeriod(monthStart, selectionOptions), { minDate, maxDate });\n\t\t}\n\n\t\tif (minDate && monthEnd < minDate) return true;\n\t\tif (maxDate && monthStart > maxDate) return true;\n\n\t\treturn false;\n\t};\n\n\t/**\n\t * Обновляет preview-конец диапазона при движении мыши.\n\t */\n\tconst handleMonthHover = (date: Date, disabled: boolean) => {\n\t\tif (!selectsRange || !selectedStartDate || selectedEndDate || disabled) return;\n\t\tsetHoveredDate(date);\n\t};\n\n\t/**\n\t * Сбрасывает preview незавершённого диапазона при уходе курсора.\n\t */\n\tconst handleGridLeave = () => {\n\t\tif (!selectedEndDate) {\n\t\t\tsetHoveredDate(null);\n\t\t}\n\t};\n\n\treturn (\n\t\t<div className={styles.monthView}>\n\t\t\t<div className={styles.monthsGrid} onMouseLeave={handleGridLeave}>\n\t\t\t\t{months.map((monthIndex) => {\n\t\t\t\t\tconst disabled = isDisabled(monthIndex);\n\t\t\t\t\tconst monthDate = createCalendarDate(currentYear, monthIndex, 1);\n\t\t\t\t\tconst rangeState = resolveDateInputPeriodRangeState({\n\t\t\t\t\t\tdate: monthDate,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\thoveredDate,\n\t\t\t\t\t\tselectsRange,\n\t\t\t\t\t\tselectionOptions\n\t\t\t\t\t});\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tkey={monthIndex}\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tonClick={() => !disabled && onChange(monthDate)}\n\t\t\t\t\t\t\tonMouseEnter={() => handleMonthHover(monthDate, disabled)}\n\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\tdata-ui=\"calendar-month-button\"\n\t\t\t\t\t\t\tdata-action=\"select-calendar-month\"\n\t\t\t\t\t\t\tclassName={cn(styles.month, {\n\t\t\t\t\t\t\t\t[styles.selected]: rangeState.selected,\n\t\t\t\t\t\t\t\t[styles.range]: rangeState.range,\n\t\t\t\t\t\t\t\t[styles.rangeStart]: rangeState.rangeStart,\n\t\t\t\t\t\t\t\t[styles.rangeEnd]: rangeState.rangeEnd,\n\t\t\t\t\t\t\t\t[styles.disabled]: disabled\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\taria-label={monthAriaFormatter.format(monthDate)}\n\t\t\t\t\t\t\taria-pressed={rangeState.selected || rangeState.range || rangeState.rangeStart || rangeState.rangeEnd}>\n\t\t\t\t\t\t\t{getMonthName(monthIndex)}\n\t\t\t\t\t\t</button>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n",".calendarView {\n\twidth: calc(18em + var(--width-add));\n}\n\n.calendarHeader {\n\tdisplay: flex;\n\tjustify-content: space-between;\n\talign-items: center;\n\tpadding-bottom: var(--space-sm);\n\tmargin-bottom: var(--space-sm);\n\tgap: var(--space-sm);\n\tborder-bottom: var(--border);\n}\n",".yearView {\n\tpadding: 0;\n}\n\n.yearsGrid {\n\tdisplay: grid;\n\tgrid-template-columns: repeat(3, 1fr);\n\tgap: var(--border-width);\n}\n\n.year {\n\theight: var(--control-height);\n\tcursor: pointer;\n\tborder-radius: var(--radius-xs);\n\t// font-size: var(--font-size-sm);\n\n\tbackground-color: var(--surface-1);\n\n\t&:hover:not(.disabled) {\n\t\tbackground-color: var(--surface-accent);\n\t}\n\n\t&.range {\n\t\tbackground-color: var(--surface-accent);\n\t\tcolor: var(--content-0);\n\t}\n\n\t&.selected,\n\t&.rangeStart,\n\t&.rangeEnd {\n\t\tbackground-color: var(--surface-accent);\n\t\tcolor: var(--content-accent);\n\t\tfont-weight: 600;\n\t\tfont-variation-settings: \"wght\" 600;\n\t}\n\n\t&.disabled {\n\t\tcolor: var(--content-2);\n\t\tcursor: not-allowed;\n\n\t\t&:hover {\n\t\t\tbackground: none;\n\t\t}\n\t}\n}\n","import { useState } from \"react\";\n\nimport {\n\tcreateCalendarDate,\n\tgetCalendarPeriod,\n\tisCalendarPeriodWithinDateBounds,\n\ttype CalendarPeriodOptions,\n\ttype DateRangeInput\n} from \"@ryuzaki13/react-foundation-lib/formatters\";\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport { resolveDateInputPeriodRangeState } from \"../lib\";\n\nimport styles from \"./CalendarYearView.module.scss\";\n\nimport type { DateInputSelectionMode, DateInputWeekEndDay } from \"../lib\";\n\ninterface YearViewProps {\n\tcurrentDate: Date;\n\tvalue: DateRangeInput;\n\tonChange: (date: Date) => void;\n\tminDate?: Date;\n\tmaxDate?: Date;\n\tselectsRange?: boolean;\n\tselectsPeriod?: boolean;\n\tselectionMode?: DateInputSelectionMode;\n\tweekEndDay?: DateInputWeekEndDay;\n}\n\n/**\n * Отображает выбор года в календарной семантике без timezone-сдвига.\n */\nexport const CalendarYearView: React.FC<YearViewProps> = ({\n\tcurrentDate,\n\tvalue,\n\tonChange,\n\tminDate,\n\tmaxDate,\n\tselectsRange,\n\tselectsPeriod,\n\tselectionMode = \"day\",\n\tweekEndDay = \"sunday\"\n}) => {\n\tconst [hoveredDate, setHoveredDate] = useState<Date | null>(null);\n\tconst startYear = Math.floor(currentDate.getFullYear() / 12) * 12;\n\tconst years = Array.from({ length: 12 }, (_, index) => startYear + index);\n\tconst selectionOptions: CalendarPeriodOptions = {\n\t\tselectionMode,\n\t\tweekEndDay\n\t};\n\tconst selectedStartDate = selectsRange && Array.isArray(value) ? value[0] : null;\n\tconst selectedEndDate = selectsRange && Array.isArray(value) ? value[1] : null;\n\n\t/**\n\t * Проверяет ограничения на выбор года.\n\t */\n\tconst isDisabled = (year: number) => {\n\t\tif (!minDate && !maxDate) return false;\n\n\t\tconst yearStart = createCalendarDate(year, 0, 1);\n\t\tconst yearEnd = createCalendarDate(year, 11, 31, 23, 59, 59);\n\n\t\tif (selectsPeriod) {\n\t\t\treturn !isCalendarPeriodWithinDateBounds(getCalendarPeriod(yearStart, selectionOptions), { minDate, maxDate });\n\t\t}\n\n\t\tif (minDate && yearEnd < minDate) return true;\n\t\tif (maxDate && yearStart > maxDate) return true;\n\n\t\treturn false;\n\t};\n\n\t/**\n\t * Обновляет preview-конец диапазона при движении мыши.\n\t */\n\tconst handleYearHover = (date: Date, disabled: boolean) => {\n\t\tif (!selectsRange || !selectedStartDate || selectedEndDate || disabled) return;\n\t\tsetHoveredDate(date);\n\t};\n\n\t/**\n\t * Сбрасывает preview незавершённого диапазона при уходе курсора.\n\t */\n\tconst handleGridLeave = () => {\n\t\tif (!selectedEndDate) {\n\t\t\tsetHoveredDate(null);\n\t\t}\n\t};\n\n\treturn (\n\t\t<div className={styles.yearView}>\n\t\t\t<div className={styles.yearsGrid} onMouseLeave={handleGridLeave}>\n\t\t\t\t{years.map((year) => {\n\t\t\t\t\tconst disabled = isDisabled(year);\n\t\t\t\t\tconst yearDate = createCalendarDate(year, 0, 1);\n\t\t\t\t\tconst rangeState = resolveDateInputPeriodRangeState({\n\t\t\t\t\t\tdate: yearDate,\n\t\t\t\t\t\tvalue,\n\t\t\t\t\t\thoveredDate,\n\t\t\t\t\t\tselectsRange,\n\t\t\t\t\t\tselectionOptions\n\t\t\t\t\t});\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tkey={year}\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tonClick={() => !disabled && onChange(yearDate)}\n\t\t\t\t\t\t\tonMouseEnter={() => handleYearHover(yearDate, disabled)}\n\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\tdata-ui=\"calendar-year-button\"\n\t\t\t\t\t\t\tdata-action=\"select-calendar-year\"\n\t\t\t\t\t\t\tclassName={cn(styles.year, {\n\t\t\t\t\t\t\t\t[styles.selected]: rangeState.selected,\n\t\t\t\t\t\t\t\t[styles.range]: rangeState.range,\n\t\t\t\t\t\t\t\t[styles.rangeStart]: rangeState.rangeStart,\n\t\t\t\t\t\t\t\t[styles.rangeEnd]: rangeState.rangeEnd,\n\t\t\t\t\t\t\t\t[styles.disabled]: disabled\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\taria-label={year.toString()}\n\t\t\t\t\t\t\taria-pressed={rangeState.selected || rangeState.range || rangeState.rangeStart || rangeState.rangeEnd}>\n\t\t\t\t\t\t\t{year}\n\t\t\t\t\t\t</button>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n","import { useEffect, useEffectEvent, useState } from \"react\";\n\nimport {\n\taddCalendarMonths,\n\taddCalendarYears,\n\tgetCalendarPeriod,\n\tgetStartOfDay,\n\tisCalendarPeriodWithinDateBounds,\n\tisDateRangeTuple,\n\ttype CalendarPeriodOptions,\n\ttype NullableDateRange\n} from \"@ryuzaki13/react-foundation-lib/formatters\";\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\n\nimport { Button } from \"../../button\";\nimport { isDatePickerLevelAvailable, type CalendarType, type DateInputSelectionMode, type DateInputWeekEndDay } from \"../lib\";\n\nimport { CalendarDayView } from \"./CalendarDayView\";\nimport { CalendarMonthView } from \"./CalendarMonthView\";\nimport styles from \"./CalendarView.module.scss\";\nimport { CalendarYearView } from \"./CalendarYearView\";\n\ninterface BaseCalendarViewProps {\n\tview: CalendarType;\n\tdatePickerLevel: CalendarType;\n\tselectionMode?: DateInputSelectionMode;\n\tweekEndDay?: DateInputWeekEndDay;\n\tonViewChange: (view: CalendarType) => void;\n}\n\ninterface CalendarViewProps extends BaseCalendarViewProps {\n\tselectsRange?: boolean;\n\tvalue: Date | NullableDateRange | null;\n\tonChange: (date: Date | NullableDateRange) => void;\n\tminDate?: Date;\n\tmaxDate?: Date;\n\tcurrentDate?: Date;\n\tonCurrentDateChange?: (date: Date) => void;\n}\n\n/**\n * Отображает календарь выбора даты в календарной семантике без timezone-сдвига.\n */\nexport function CalendarView({\n\tview,\n\tdatePickerLevel,\n\tselectionMode = \"day\",\n\tweekEndDay = \"sunday\",\n\tonViewChange,\n\t...props\n}: CalendarViewProps) {\n\tconst [dateNow] = useState(() => getStartOfDay(new Date()));\n\tconst [uncontrolledCurrentDate, setUncontrolledCurrentDate] = useState<Date>(() => {\n\t\tif (props.selectsRange && isDateRangeTuple(props.value) && props.value[0] instanceof Date) {\n\t\t\treturn props.value[0];\n\t\t}\n\n\t\tif (!props.selectsRange && props.value instanceof Date) {\n\t\t\treturn props.value;\n\t\t}\n\n\t\treturn getStartOfDay(new Date());\n\t});\n\tconst currentDate = props.currentDate ?? uncontrolledCurrentDate;\n\tconst selectionOptions: CalendarPeriodOptions = {\n\t\tselectionMode,\n\t\tweekEndDay\n\t};\n\n\t/**\n\t * Обновляет видимую календарную дату в управляемом или неуправляемом режиме.\n\t */\n\tconst setCurrentDate = (value: Date | ((prevValue: Date) => Date)) => {\n\t\tconst nextValue = typeof value === \"function\" ? value(currentDate) : value;\n\n\t\tif (props.currentDate === undefined) {\n\t\t\tsetUncontrolledCurrentDate(nextValue);\n\t\t}\n\n\t\tprops.onCurrentDateChange?.(nextValue);\n\t};\n\n\t/**\n\t * Синхронизирует видимый месяц/год с внешним значением поля.\n\t */\n\tconst syncCurrentDate = useEffectEvent((nextValue: Date | NullableDateRange | null) => {\n\t\tif (props.selectsRange && Array.isArray(nextValue) && nextValue[0] instanceof Date) {\n\t\t\tsetCurrentDate(nextValue[0]);\n\t\t\treturn;\n\t\t}\n\n\t\tif (!props.selectsRange && nextValue instanceof Date) {\n\t\t\tsetCurrentDate(nextValue);\n\t\t}\n\t});\n\n\tuseEffect(() => {\n\t\tsyncCurrentDate(props.value);\n\t}, [props.value]);\n\n\t/**\n\t * Переключает видимую область календаря назад.\n\t */\n\tconst goToPrevious = () => {\n\t\tif (view === \"day\") {\n\t\t\tsetCurrentDate((prev) => addCalendarMonths(prev, -1));\n\t\t\treturn;\n\t\t}\n\n\t\tif (view === \"month\") {\n\t\t\tsetCurrentDate((prev) => addCalendarYears(prev, -1));\n\t\t\treturn;\n\t\t}\n\n\t\tsetCurrentDate((prev) => addCalendarYears(prev, -12));\n\t};\n\n\t/**\n\t * Переключает видимую область календаря вперёд.\n\t */\n\tconst goToNext = () => {\n\t\tif (view === \"day\") {\n\t\t\tsetCurrentDate((prev) => addCalendarMonths(prev, 1));\n\t\t\treturn;\n\t\t}\n\n\t\tif (view === \"month\") {\n\t\t\tsetCurrentDate((prev) => addCalendarYears(prev, 1));\n\t\t\treturn;\n\t\t}\n\n\t\tsetCurrentDate((prev) => addCalendarYears(prev, 12));\n\t};\n\n\t/**\n\t * Возвращает заголовок текущего календарного вида.\n\t */\n\tconst renderHeader = () => {\n\t\tlet title = \"\";\n\t\tif (view === \"day\") {\n\t\t\ttitle = currentDate.toLocaleDateString(\"ru-RU\", {\n\t\t\t\tmonth: \"long\",\n\t\t\t\tyear: \"numeric\"\n\t\t\t});\n\t\t} else if (view === \"month\") {\n\t\t\ttitle = currentDate.getFullYear().toString();\n\t\t} else {\n\t\t\tconst startYear = Math.floor(currentDate.getFullYear() / 12) * 12;\n\t\t\tconst endYear = startYear + 11;\n\t\t\ttitle = `${startYear} - ${endYear}`;\n\t\t}\n\n\t\treturn (\n\t\t\t<div className={styles.calendarHeader}>\n\t\t\t\t<Button\n\t\t\t\t\ticon={<ChevronLeft />}\n\t\t\t\t\tonClick={goToPrevious}\n\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\taria-label=\"Предыдущий\"\n\t\t\t\t\tdata-action=\"calendar-previous\"\n\t\t\t\t/>\n\n\t\t\t\t<Button\n\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\tif (view === \"day\") onViewChange(\"month\");\n\t\t\t\t\t\telse if (view === \"month\") onViewChange(\"year\");\n\t\t\t\t\t}}\n\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\tclassName=\"flex1\"\n\t\t\t\t\tdata-ui=\"calendar-view-switch-button\"\n\t\t\t\t\tdata-action=\"calendar-switch-view\">\n\t\t\t\t\t{title}\n\t\t\t\t</Button>\n\n\t\t\t\t<Button\n\t\t\t\t\ticon={<ChevronRight />}\n\t\t\t\t\tonClick={goToNext}\n\t\t\t\t\tvariant=\"ghost\"\n\t\t\t\t\taria-label=\"Следующий\"\n\t\t\t\t\tdata-ui=\"calendar-next-button\"\n\t\t\t\t\tdata-action=\"calendar-next\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t);\n\t};\n\n\t/**\n\t * Отрисовывает активный режим календаря.\n\t */\n\tconst renderView = () => {\n\t\tconst handleDateSelect = (date: Date) => {\n\t\t\tconst selectedPeriod = getCalendarPeriod(date, selectionOptions);\n\t\t\tif (!selectedPeriod || !isCalendarPeriodWithinDateBounds(selectedPeriod, { minDate: props.minDate, maxDate: props.maxDate }))\n\t\t\t\treturn;\n\n\t\t\tif (props.selectsRange) {\n\t\t\t\tlet selectedStartDate: Date | null = null;\n\t\t\t\tlet selectedEndDate: Date | null = null;\n\n\t\t\t\tif (Array.isArray(props.value)) {\n\t\t\t\t\t[selectedStartDate, selectedEndDate] = props.value;\n\t\t\t\t}\n\n\t\t\t\tif (!selectedStartDate || selectedEndDate) {\n\t\t\t\t\tprops.onChange([selectedPeriod.start, null]);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst startPeriod = getCalendarPeriod(selectedStartDate, selectionOptions);\n\t\t\t\tif (!startPeriod) return;\n\n\t\t\t\tif (selectedPeriod.start < startPeriod.start) {\n\t\t\t\t\tprops.onChange([selectedPeriod.start, startPeriod.end]);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tprops.onChange([startPeriod.start, selectedPeriod.end]);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tprops.onChange(selectedPeriod.start);\n\t\t};\n\n\t\tconst handleMonthSelect = (date: Date) => {\n\t\t\tsetCurrentDate(date);\n\n\t\t\tif (selectionMode === \"month\" || !isDatePickerLevelAvailable(\"day\", datePickerLevel)) {\n\t\t\t\thandleDateSelect(date);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tonViewChange(\"day\");\n\t\t};\n\n\t\tconst handleYearSelect = (date: Date) => {\n\t\t\tsetCurrentDate(date);\n\n\t\t\tif (selectionMode === \"year\" || !isDatePickerLevelAvailable(\"month\", datePickerLevel)) {\n\t\t\t\thandleDateSelect(date);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tonViewChange(\"month\");\n\t\t};\n\n\t\tswitch (view) {\n\t\t\tcase \"day\":\n\t\t\t\treturn (\n\t\t\t\t\t<CalendarDayView\n\t\t\t\t\t\tnow={dateNow}\n\t\t\t\t\t\tcurrentDate={currentDate}\n\t\t\t\t\t\tvalue={props.value}\n\t\t\t\t\t\tonChange={handleDateSelect}\n\t\t\t\t\t\tminDate={props.minDate}\n\t\t\t\t\t\tmaxDate={props.maxDate}\n\t\t\t\t\t\tselectsRange={props.selectsRange}\n\t\t\t\t\t\tselectionMode={selectionMode}\n\t\t\t\t\t\tweekEndDay={weekEndDay}\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\tcase \"month\":\n\t\t\t\treturn (\n\t\t\t\t\t<CalendarMonthView\n\t\t\t\t\t\tcurrentDate={currentDate}\n\t\t\t\t\t\tvalue={props.value}\n\t\t\t\t\t\tonChange={handleMonthSelect}\n\t\t\t\t\t\tminDate={props.minDate}\n\t\t\t\t\t\tmaxDate={props.maxDate}\n\t\t\t\t\t\tselectsRange={props.selectsRange}\n\t\t\t\t\t\tselectsPeriod={selectionMode === \"month\" || !isDatePickerLevelAvailable(\"day\", datePickerLevel)}\n\t\t\t\t\t\tselectionMode={selectionMode}\n\t\t\t\t\t\tweekEndDay={weekEndDay}\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\tcase \"year\":\n\t\t\t\treturn (\n\t\t\t\t\t<CalendarYearView\n\t\t\t\t\t\tcurrentDate={currentDate}\n\t\t\t\t\t\tvalue={props.value}\n\t\t\t\t\t\tonChange={handleYearSelect}\n\t\t\t\t\t\tminDate={props.minDate}\n\t\t\t\t\t\tmaxDate={props.maxDate}\n\t\t\t\t\t\tselectsRange={props.selectsRange}\n\t\t\t\t\t\tselectsPeriod={selectionMode === \"year\" || !isDatePickerLevelAvailable(\"month\", datePickerLevel)}\n\t\t\t\t\t\tselectionMode={selectionMode}\n\t\t\t\t\t\tweekEndDay={weekEndDay}\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\tdefault:\n\t\t\t\treturn null;\n\t\t}\n\t};\n\n\treturn (\n\t\t<div className={styles.calendarView}>\n\t\t\t{renderHeader()}\n\t\t\t{renderView()}\n\t\t</div>\n\t);\n}\n"],"mappings":"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"}
@@ -1,21 +1,21 @@
1
1
  import { t as e } from "./ui.module-BisoTevy.js";
2
2
  import { n as t } from "./uiClasses-BNjBunnY.js";
3
3
  import { t as n } from "./CheckBox.module-D0Ze9qh3.js";
4
- import { SquareIcon as r } from "lucide-react";
4
+ import { useId as r } from "react";
5
5
  import { cn as i } from "@ryuzaki13/react-foundation-lib/utils";
6
- import { jsx as a, jsxs as o } from "react/jsx-runtime";
7
- import { useId as s } from "react";
6
+ import { SquareIcon as a } from "lucide-react";
7
+ import { jsx as o, jsxs as s } from "react/jsx-runtime";
8
8
  //#region src/check-box/CheckBox.tsx
9
9
  function c({ label: c, description: l, placeholder: u, disabled: d, size: f, className: p, onChange: m, value: h, noWrap: g, id: _, tone: v = "neutral", ...y }) {
10
- let b = s(), x = _ ?? b, S = l ? `${x}-description` : void 0, C = c ?? u, w = h ?? !1;
11
- return /* @__PURE__ */ o("div", {
10
+ let b = r(), x = _ ?? b, S = l ? `${x}-description` : void 0, C = c ?? u, w = h ?? !1;
11
+ return /* @__PURE__ */ s("div", {
12
12
  className: i(e.uiElement, f && e.uiSizable, f && e[f], d && e.disabled, p),
13
13
  "aria-disabled": d || void 0,
14
- children: [/* @__PURE__ */ o("div", {
14
+ children: [/* @__PURE__ */ s("div", {
15
15
  className: n.row,
16
- children: [/* @__PURE__ */ o("div", {
16
+ children: [/* @__PURE__ */ s("div", {
17
17
  className: i(n.wrapper, t(v)),
18
- children: [/* @__PURE__ */ a("input", {
18
+ children: [/* @__PURE__ */ o("input", {
19
19
  ...y,
20
20
  id: x,
21
21
  type: "checkbox",
@@ -25,17 +25,17 @@ function c({ label: c, description: l, placeholder: u, disabled: d, size: f, cla
25
25
  "aria-describedby": S,
26
26
  className: i(e.uiSelectionControl, n.input),
27
27
  onChange: () => m?.(!w)
28
- }), /* @__PURE__ */ a("div", {
28
+ }), /* @__PURE__ */ o("div", {
29
29
  className: i(e.uiSelectionIcon, n.icon),
30
30
  "aria-hidden": "true",
31
- children: /* @__PURE__ */ a(r, {})
31
+ children: /* @__PURE__ */ o(a, {})
32
32
  })]
33
- }), C && /* @__PURE__ */ a("label", {
33
+ }), C && /* @__PURE__ */ o("label", {
34
34
  htmlFor: x,
35
35
  className: i(e.uiLabelBase, g && "textNoWrap"),
36
36
  children: C
37
37
  })]
38
- }), l && /* @__PURE__ */ a("p", {
38
+ }), l && /* @__PURE__ */ o("p", {
39
39
  id: S,
40
40
  className: e.uiDescription,
41
41
  children: l
@@ -45,4 +45,4 @@ function c({ label: c, description: l, placeholder: u, disabled: d, size: f, cla
45
45
  //#endregion
46
46
  export { c as t };
47
47
 
48
- //# sourceMappingURL=CheckBox-Cck5w1Ud.js.map
48
+ //# sourceMappingURL=CheckBox-BowNqqd3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CheckBox-BowNqqd3.js","names":[],"sources":["../../src/check-box/CheckBox.tsx"],"sourcesContent":["import React, { useId } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\nimport { SquareIcon } from \"lucide-react\";\n\nimport uiStyles from \"../ui.module.scss\";\nimport { getUiToneClassName } from \"../uiClasses\";\n\nimport styles from \"./CheckBox.module.scss\";\n\nimport type { UiBaseProps, UiTone } from \"../types\";\n\ninterface CheckBoxProps\n\textends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\" | \"checked\" | \"value\" | \"onChange\" | \"type\">, UiBaseProps<boolean> {\n\ttone?: UiTone;\n\tnoWrap?: boolean;\n}\n\n/**\n * Компонент флажка для выбора булевого значения в формах и списках.\n * Поддерживает tone + appearance и использует общие selection utility-классы из ui.module.scss.\n */\nexport function CheckBox({\n\tlabel,\n\tdescription,\n\tplaceholder,\n\tdisabled,\n\tsize,\n\tclassName,\n\tonChange,\n\tvalue,\n\tnoWrap,\n\tid: externalId,\n\ttone = \"neutral\",\n\t...props\n}: CheckBoxProps) {\n\tconst autoId = useId();\n\tconst id = externalId ?? autoId;\n\tconst descriptionId = description ? `${id}-description` : undefined;\n\tconst text = label ?? placeholder;\n\tconst checked = value ?? false;\n\n\treturn (\n\t\t<div\n\t\t\tclassName={cn(uiStyles.uiElement, size && uiStyles.uiSizable, size && uiStyles[size], disabled && uiStyles.disabled, className)}\n\t\t\taria-disabled={disabled || undefined}>\n\t\t\t<div className={styles.row}>\n\t\t\t\t<div className={cn(styles.wrapper, getUiToneClassName(tone))}>\n\t\t\t\t\t<input\n\t\t\t\t\t\t{...props}\n\t\t\t\t\t\tid={id}\n\t\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t\tchecked={checked}\n\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\taria-checked={checked}\n\t\t\t\t\t\taria-describedby={descriptionId}\n\t\t\t\t\t\tclassName={cn(uiStyles.uiSelectionControl, styles.input)}\n\t\t\t\t\t\tonChange={() => onChange?.(!checked)}\n\t\t\t\t\t/>\n\t\t\t\t\t<div className={cn(uiStyles.uiSelectionIcon, styles.icon)} aria-hidden=\"true\">\n\t\t\t\t\t\t<SquareIcon />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t{text && (\n\t\t\t\t\t<label htmlFor={id} className={cn(uiStyles.uiLabelBase, noWrap && \"textNoWrap\")}>\n\t\t\t\t\t\t{text}\n\t\t\t\t\t</label>\n\t\t\t\t)}\n\t\t\t</div>\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</div>\n\t);\n}\n"],"mappings":";;;;;;;;AAsBA,SAAgB,EAAS,EACxB,UACA,gBACA,gBACA,aACA,SACA,cACA,aACA,UACA,WACA,IAAI,GACJ,UAAO,WACP,GAAG,KACc;CACjB,IAAM,IAAS,EAAM,GACf,IAAK,KAAc,GACnB,IAAgB,IAAc,GAAG,EAAG,gBAAgB,KAAA,GACpD,IAAO,KAAS,GAChB,IAAU,KAAS;CAEzB,OACC,kBAAC,OAAD;EACC,WAAW,EAAG,EAAS,WAAW,KAAQ,EAAS,WAAW,KAAQ,EAAS,IAAO,KAAY,EAAS,UAAU,CAAS;EAC9H,iBAAe,KAAY,KAAA;YAF5B,CAGC,kBAAC,OAAD;GAAK,WAAW,EAAO;aAAvB,CACC,kBAAC,OAAD;IAAK,WAAW,EAAG,EAAO,SAAS,EAAmB,CAAI,CAAC;cAA3D,CACC,kBAAC,SAAD;KACC,GAAI;KACA;KACJ,MAAK;KACI;KACC;KACV,gBAAc;KACd,oBAAkB;KAClB,WAAW,EAAG,EAAS,oBAAoB,EAAO,KAAK;KACvD,gBAAgB,IAAW,CAAC,CAAO;IACnC,CAAA,GACD,kBAAC,OAAD;KAAK,WAAW,EAAG,EAAS,iBAAiB,EAAO,IAAI;KAAG,eAAY;eACtE,kBAAC,GAAD,CAAa,CAAA;IACT,CAAA,CACD;OACJ,KACA,kBAAC,SAAD;IAAO,SAAS;IAAI,WAAW,EAAG,EAAS,aAAa,KAAU,YAAY;cAC5E;GACK,CAAA,CAEJ;MACJ,KACA,kBAAC,KAAD;GAAG,IAAI;GAAe,WAAW,EAAS;aACxC;EACC,CAAA,CAEA;;AAEP"}
@@ -1,14 +1,14 @@
1
- import { r as e } from "./popover-C79P5bm2.js";
2
- import { t } from "./Button-BZ_b-Kin.js";
3
- import { n, o as r, s as i, t as a } from "./CalendarView-B75faWIU.js";
4
- import { a as o } from "./Input-Ce2HXBUc.js";
5
- import { n as s } from "./RadioGroup-BAhN1d1X.js";
6
- import { CalendarDaysIcon as c } from "lucide-react";
7
- import { jsx as l, jsxs as u } from "react/jsx-runtime";
8
- import { useCallback as d, useEffect as f, useEffectEvent as p, useMemo as m, useRef as ee, useState as h } from "react";
9
- import { DEFAULT_DATE_PRESET_NAMES as g, formatDate as _, formatDateRange as v, getCalendarPeriod as y, getDatePreset as b, isDateRangeTuple as x, parseDateByFormat as S, resolveDateFormatName as C, resolveDateFormatPreset as w } from "@ryuzaki13/react-foundation-lib/formatters";
1
+ import { r as e } from "./popover-xJJqy1v6.js";
2
+ import { t } from "./Button-CCWuggdA.js";
3
+ import { a as n } from "./Input-BmjlpA09.js";
4
+ import { n as r, o as i, s as a, t as o } from "./CalendarView-DjeTJkTT.js";
5
+ import { n as s } from "./RadioGroup-B9XjkcOy.js";
6
+ import { useCallback as c, useEffect as l, useEffectEvent as u, useMemo as d, useRef as f, useState as p } from "react";
7
+ import { DEFAULT_DATE_PRESET_NAMES as m, formatDate as h, formatDateRange as g, getCalendarPeriod as _, getDatePreset as v, isDateRangeTuple as y, parseDateByFormat as b, resolveDateFormatName as x, resolveDateFormatPreset as S } from "@ryuzaki13/react-foundation-lib/formatters";
8
+ import { CalendarDaysIcon as ee } from "lucide-react";
9
+ import { jsx as C, jsxs as w } from "react/jsx-runtime";
10
10
  //#region src/date-input/lib/dateInputValue.ts
11
- var T = g.date, E = "dd.MM.yyyy", D = " - ", O = Object.freeze({
11
+ var T = m.date, E = "dd.MM.yyyy", D = " - ", O = Object.freeze({
12
12
  defaultFormat: T,
13
13
  patternPresetName: "__date_input__"
14
14
  });
@@ -31,32 +31,32 @@ function j(e, t) {
31
31
  } : e;
32
32
  }
33
33
  function M(e) {
34
- let t = C(e, T);
35
- return b(t) ? t : T;
34
+ let t = x(e, T);
35
+ return v(t) ? t : T;
36
36
  }
37
37
  function N(e) {
38
38
  return e.datePreset === void 0 ? e.dateFormat : M(e.datePreset);
39
39
  }
40
40
  function P(e) {
41
- return e.datePreset === void 0 ? w(e.dateFormat, O) : M(e.datePreset);
41
+ return e.datePreset === void 0 ? S(e.dateFormat, O) : M(e.datePreset);
42
42
  }
43
43
  function F(e, t) {
44
- return S(e, N(t), {
44
+ return b(e, N(t), {
45
45
  defaultFormat: T,
46
46
  precision: k(t),
47
47
  referenceDate: t.referenceDate
48
48
  })?.date ?? null;
49
49
  }
50
50
  function I(e, t) {
51
- return y(e, A(t))?.start ?? null;
51
+ return _(e, A(t))?.start ?? null;
52
52
  }
53
53
  function L(e, t) {
54
- if (!x(e)) return null;
54
+ if (!y(e)) return null;
55
55
  let [n, r] = e;
56
56
  return [I(n, t), R(r, t)];
57
57
  }
58
58
  function R(e, t) {
59
- return y(e, A(t))?.end ?? null;
59
+ return _(e, A(t))?.end ?? null;
60
60
  }
61
61
  function z(e) {
62
62
  return e?.getTime() ?? null;
@@ -71,15 +71,15 @@ function V(e, t, n) {
71
71
  function H(e, t, n) {
72
72
  if (!e) return "";
73
73
  let r = j(t, n);
74
- return _(e, P(r), { precision: k(r) });
74
+ return h(e, P(r), { precision: k(r) });
75
75
  }
76
76
  function U(e, t, n) {
77
- if (!x(e)) return "";
77
+ if (!y(e)) return "";
78
78
  let r = j(t, n), [i, a] = e;
79
- return i && a ? v(i, a, P(r), { precision: k(r) }) : i ? `${H(i, r)}${D}` : "";
79
+ return i && a ? g(i, a, P(r), { precision: k(r) }) : i ? `${H(i, r)}${D}` : "";
80
80
  }
81
81
  function W(e, t, n) {
82
- return x(e) ? U(e, t, n) : H(e, t, n);
82
+ return y(e) ? U(e, t, n) : H(e, t, n);
83
83
  }
84
84
  function G(e, t, n) {
85
85
  let r = j(t, n);
@@ -96,10 +96,10 @@ function q(e, t, n) {
96
96
  //#endregion
97
97
  //#region src/date-input/model/useDateInput.ts
98
98
  function J(e) {
99
- return x(e) ? e[0] ?? e[1] ?? void 0 : e ?? void 0;
99
+ return y(e) ? e[0] ?? e[1] ?? void 0 : e ?? void 0;
100
100
  }
101
101
  var te = (e) => {
102
- let t = m(() => {
102
+ let t = d(() => {
103
103
  let t = {
104
104
  selectionMode: e.selectionMode,
105
105
  weekEndDay: e.weekEndDay
@@ -110,7 +110,7 @@ var te = (e) => {
110
110
  e.selectionMode,
111
111
  e.value,
112
112
  e.weekEndDay
113
- ]), [n, r] = h(t), i = m(() => ({
113
+ ]), [n, r] = p(t), i = d(() => ({
114
114
  datePreset: e.datePreset,
115
115
  dateFormat: e.dateFormat,
116
116
  datePickerLevel: e.datePickerLevel,
@@ -122,7 +122,7 @@ var te = (e) => {
122
122
  e.datePreset,
123
123
  e.selectionMode,
124
124
  e.weekEndDay
125
- ]), [a, o] = h(() => W(t, i)), s = m(() => {
125
+ ]), [a, o] = p(() => W(t, i)), s = d(() => {
126
126
  if (e.selectsRange) {
127
127
  let t = L(e.value, i);
128
128
  return `${t?.[0]?.getTime() ?? "null"}:${t?.[1]?.getTime() ?? "null"}`;
@@ -133,7 +133,7 @@ var te = (e) => {
133
133
  i,
134
134
  e.selectsRange,
135
135
  e.value
136
- ]), c = (e) => W(e, i), l = p((t) => {
136
+ ]), c = (e) => W(e, i), f = u((t) => {
137
137
  if (e.selectsRange) {
138
138
  let e = L(t, i), n = c(e);
139
139
  r((t) => {
@@ -145,8 +145,8 @@ var te = (e) => {
145
145
  let n = I(t, i), a = c(n);
146
146
  r((e) => (e?.getTime() ?? null) === (n?.getTime() ?? null) ? e : n), o((e) => e === a ? e : a);
147
147
  });
148
- return f(() => {
149
- l(e.value);
148
+ return l(() => {
149
+ f(e.value);
150
150
  }, [
151
151
  e.dateFormat,
152
152
  e.datePickerLevel,
@@ -200,38 +200,38 @@ var te = (e) => {
200
200
  year: "Год"
201
201
  };
202
202
  function re(e, t) {
203
- let r = new Set(e?.length ? e : n);
204
- return r.add(t), n.filter((e) => r.has(e));
203
+ let n = new Set(e?.length ? e : r);
204
+ return n.add(t), r.filter((e) => n.has(e));
205
205
  }
206
- function X({ placeholder: n, disabled: p, error: m, onClearError: g, minDate: _, maxDate: v, datePickerLevel: y, selectionMode: b, weekEndDay: S = "sunday", allowSelectionModeChange: C, selectionModeOptions: w, onSelectionModeChange: T, ...E }) {
207
- let [D, O] = h(!1), [k, A] = h(b ?? "day"), j = b ?? k, M = y ?? "day", N = i(j, M), [P, F] = h(() => ({
206
+ function X({ placeholder: r, disabled: u, error: d, onClearError: m, minDate: h, maxDate: g, datePickerLevel: _, selectionMode: v, weekEndDay: b = "sunday", allowSelectionModeChange: x, selectionModeOptions: S, onSelectionModeChange: T, ...E }) {
207
+ let [D, O] = p(!1), [k, A] = p(v ?? "day"), j = v ?? k, M = _ ?? "day", N = a(j, M), [P, F] = p(() => ({
208
208
  view: N,
209
209
  selectionMode: j,
210
210
  minDatePickerLevel: M
211
- })), I = P.selectionMode === j && P.minDatePickerLevel === M && r(P.view, M) ? P.view : N, L = ee(E.value), R = {
211
+ })), I = P.selectionMode === j && P.minDatePickerLevel === M && i(P.view, M) ? P.view : N, L = f(E.value), R = {
212
212
  selectionMode: j,
213
- weekEndDay: S
213
+ weekEndDay: b
214
214
  }, { inputValue: z, setInputValue: H, selectedDate: U, setSelectedDate: W, handleSelect: G, formatDate: K, parseDate: q } = te({
215
215
  ...E,
216
216
  datePickerLevel: M,
217
217
  selectionMode: j,
218
- weekEndDay: S
219
- }), J = E.selectsRange ? E.onChange : void 0, X = d((e) => {
220
- r(e, M) && F({
218
+ weekEndDay: b
219
+ }), J = E.selectsRange ? E.onChange : void 0, X = c((e) => {
220
+ i(e, M) && F({
221
221
  view: e,
222
222
  selectionMode: j,
223
223
  minDatePickerLevel: M
224
224
  });
225
225
  }, [M, j]);
226
- f(() => {
226
+ l(() => {
227
227
  L.current = E.value;
228
228
  }, [E.value]);
229
229
  let Z = () => {
230
230
  if (z) {
231
231
  let e = q(z);
232
232
  if (e) {
233
- if (H(K(e)), E.selectsRange && x(e)) {
234
- if (V(e, x(U) ? U : null, R)) return;
233
+ if (H(K(e)), E.selectsRange && y(e)) {
234
+ if (V(e, y(U) ? U : null, R)) return;
235
235
  W(e), E.onChange(e);
236
236
  } else if (!E.selectsRange && e instanceof Date) {
237
237
  if (B(e, U instanceof Date ? U : null, R)) return;
@@ -241,21 +241,21 @@ function X({ placeholder: n, disabled: p, error: m, onClearError: g, minDate: _,
241
241
  }
242
242
  }, Q = (e) => {
243
243
  e.key === "Enter" && (e.preventDefault(), Z());
244
- }, ie = d((e) => {
244
+ }, ie = c((e) => {
245
245
  G(e) && O(!1);
246
- }, [G]), ae = d((e) => {
247
- b === void 0 && A(e), T?.(e), F({
248
- view: i(e, M),
246
+ }, [G]), ae = c((e) => {
247
+ v === void 0 && A(e), T?.(e), F({
248
+ view: a(e, M),
249
249
  selectionMode: e,
250
250
  minDatePickerLevel: M
251
251
  });
252
252
  }, [
253
- b,
253
+ v,
254
254
  M,
255
255
  T
256
- ]), oe = d(() => {
256
+ ]), oe = c(() => {
257
257
  if (J) {
258
- let [, e] = x(U) ? U : [null, null];
258
+ let [, e] = y(U) ? U : [null, null];
259
259
  if (!e) {
260
260
  let e = L.current, t = Array.isArray(e) ? e : null, n = t?.[0] ?? null, r = t?.[1] ?? null;
261
261
  if (n && r) {
@@ -270,13 +270,13 @@ function X({ placeholder: n, disabled: p, error: m, onClearError: g, minDate: _,
270
270
  W,
271
271
  H,
272
272
  K
273
- ]), $ = re(w, j), se = C && $.length > 1;
274
- return /* @__PURE__ */ u(e, {
273
+ ]), $ = re(S, j), se = x && $.length > 1;
274
+ return /* @__PURE__ */ w(e, {
275
275
  open: D,
276
276
  onOpenChange: (e) => {
277
277
  O(e), e || oe();
278
278
  },
279
- children: [/* @__PURE__ */ l(o, {
279
+ children: [/* @__PURE__ */ C(n, {
280
280
  label: E.label,
281
281
  description: E.description,
282
282
  size: E.size,
@@ -284,39 +284,39 @@ function X({ placeholder: n, disabled: p, error: m, onClearError: g, minDate: _,
284
284
  onChange: H,
285
285
  onBlur: Z,
286
286
  onKeyUp: Q,
287
- placeholder: n,
288
- disabled: p,
289
- error: m,
290
- onClearError: g,
287
+ placeholder: r,
288
+ disabled: u,
289
+ error: d,
290
+ onClearError: m,
291
291
  endAdornmentWidth: "var(--control-height)",
292
- endAdornment: /* @__PURE__ */ l(e.Trigger, { children: /* @__PURE__ */ l(t, {
292
+ endAdornment: /* @__PURE__ */ C(e.Trigger, { children: /* @__PURE__ */ C(t, {
293
293
  variant: "transparent",
294
- disabled: p,
294
+ disabled: u,
295
295
  className: Y.calendarButton,
296
- icon: /* @__PURE__ */ l(c, {}),
296
+ icon: /* @__PURE__ */ C(ee, {}),
297
297
  "aria-label": "Открыть календарь"
298
298
  }) })
299
- }), /* @__PURE__ */ u(e.Content, {
299
+ }), /* @__PURE__ */ w(e.Content, {
300
300
  background: "primary",
301
- children: [/* @__PURE__ */ l(a, {
301
+ children: [/* @__PURE__ */ C(o, {
302
302
  view: I,
303
303
  datePickerLevel: M,
304
304
  selectionMode: j,
305
- weekEndDay: S,
305
+ weekEndDay: b,
306
306
  onViewChange: X,
307
307
  value: U ?? null,
308
308
  onChange: ie,
309
- minDate: _,
310
- maxDate: v,
309
+ minDate: h,
310
+ maxDate: g,
311
311
  selectsRange: !!E.selectsRange
312
- }), se && /* @__PURE__ */ l("div", {
312
+ }), se && /* @__PURE__ */ C("div", {
313
313
  className: Y.selectionModeControl,
314
- children: /* @__PURE__ */ l(s, {
314
+ children: /* @__PURE__ */ C(s, {
315
315
  value: j,
316
316
  onChange: ae,
317
317
  noWrap: !0,
318
318
  "aria-label": "Режим выбора даты",
319
- children: $.map((e) => /* @__PURE__ */ l(s.Option, {
319
+ children: $.map((e) => /* @__PURE__ */ C(s.Option, {
320
320
  value: e,
321
321
  label: ne[e]
322
322
  }, e))
@@ -326,10 +326,10 @@ function X({ placeholder: n, disabled: p, error: m, onClearError: g, minDate: _,
326
326
  });
327
327
  }
328
328
  function Z(e) {
329
- return /* @__PURE__ */ l(X, { ...e });
329
+ return /* @__PURE__ */ C(X, { ...e });
330
330
  }
331
331
  function Q(e) {
332
- return /* @__PURE__ */ l(X, {
332
+ return /* @__PURE__ */ C(X, {
333
333
  ...e,
334
334
  selectsRange: !0
335
335
  });
@@ -337,4 +337,4 @@ function Q(e) {
337
337
  //#endregion
338
338
  export { V as a, U as c, R as d, I as f, G as h, T as i, H as l, q as m, Z as n, B as o, K as p, E as r, W as s, Q as t, L as u };
339
339
 
340
- //# sourceMappingURL=DateInput-CINDYueM.js.map
340
+ //# sourceMappingURL=DateInput--tfofQ2x.js.map