@ryuzaki13/react-foundation-ui 3.4.3 → 3.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (659) hide show
  1. package/dist/badge/index.js +65 -2
  2. package/dist/badge/index.js.map +1 -0
  3. package/dist/barcode-scanner/index.js +18 -18
  4. package/dist/base-table/index.js +2 -2
  5. package/dist/button/Button.d.ts +4 -2
  6. package/dist/button/Button.d.ts.map +1 -1
  7. package/dist/button/index.js +1 -1
  8. package/dist/check-box/index.js +1 -1
  9. package/dist/chunks/{CalendarView-Dm55k0bN.js → CalendarView-BCXVjLFz.js} +102 -92
  10. package/dist/chunks/CalendarView-BCXVjLFz.js.map +1 -0
  11. package/dist/chunks/{ImageViewerRuntime-HGBWp9NM.js → ImageViewerRuntime-DZpgxzF1.js} +25 -25
  12. package/dist/chunks/{ImageViewerRuntime-HGBWp9NM.js.map → ImageViewerRuntime-DZpgxzF1.js.map} +1 -1
  13. package/dist/chunks/OptionContentContainer-CWHlfm5Z.js +14 -0
  14. package/dist/chunks/OptionContentContainer-CWHlfm5Z.js.map +1 -0
  15. package/dist/chunks/{TextEditorLexicalClient-C8nSoz85.js → TextEditorLexicalClient-DrSVnvOe.js} +355 -355
  16. package/dist/chunks/{TextEditorLexicalClient-C8nSoz85.js.map → TextEditorLexicalClient-DrSVnvOe.js.map} +1 -1
  17. package/dist/chunks/{base-table-BWvKfI2W.js → base-table-BBp5WMDM.js} +138 -138
  18. package/dist/chunks/{base-table-BWvKfI2W.js.map → base-table-BBp5WMDM.js.map} +1 -1
  19. package/dist/chunks/button-DudCl375.js +75 -0
  20. package/dist/chunks/button-DudCl375.js.map +1 -0
  21. package/dist/chunks/{check-box-CZyhzmR0.js → check-box-D_Y6iIWv.js} +19 -19
  22. package/dist/chunks/{check-box-CZyhzmR0.js.map → check-box-D_Y6iIWv.js.map} +1 -1
  23. package/dist/chunks/context-menu-CrSXJxQL.js +621 -0
  24. package/dist/chunks/context-menu-CrSXJxQL.js.map +1 -0
  25. package/dist/chunks/{date-input-D7aBsPJc.js → date-input-CzCDou4s.js} +72 -69
  26. package/dist/chunks/{date-input-D7aBsPJc.js.map → date-input-CzCDou4s.js.map} +1 -1
  27. package/dist/chunks/{date-range-preset-select-BLnY47cv.js → date-range-preset-select-CyzGMvVp.js} +6 -6
  28. package/dist/chunks/{date-range-preset-select-BLnY47cv.js.map → date-range-preset-select-CyzGMvVp.js.map} +1 -1
  29. package/dist/chunks/{dialog-1Z1zCNCe.js → dialog-BcQGVNbu.js} +13 -13
  30. package/dist/chunks/{dialog-1Z1zCNCe.js.map → dialog-BcQGVNbu.js.map} +1 -1
  31. package/dist/chunks/flex-D86M_h-0.js +222 -0
  32. package/dist/chunks/flex-D86M_h-0.js.map +1 -0
  33. package/dist/chunks/{floating-arrow-DPKwJfww.js → floating-arrow-B_iSbzUZ.js} +20 -19
  34. package/dist/chunks/{floating-arrow-DPKwJfww.js.map → floating-arrow-B_iSbzUZ.js.map} +1 -1
  35. package/dist/chunks/{grid-dI94AAbi.js → grid-CFuzBigM.js} +77 -68
  36. package/dist/chunks/grid-CFuzBigM.js.map +1 -0
  37. package/dist/chunks/{input-DSPKgiCK.js → input-CuRK9Vbz.js} +78 -78
  38. package/dist/chunks/{input-DSPKgiCK.js.map → input-CuRK9Vbz.js.map} +1 -1
  39. package/dist/chunks/{input-files-tIS17-zX.js → input-files-B8j6Pb_M.js} +31 -31
  40. package/dist/chunks/{input-files-tIS17-zX.js.map → input-files-B8j6Pb_M.js.map} +1 -1
  41. package/dist/chunks/misc-Cm_LDrUD.js +332 -0
  42. package/dist/chunks/misc-Cm_LDrUD.js.map +1 -0
  43. package/dist/chunks/{modal-dplfAaER.js → modal-Dz5TzkTB.js} +79 -70
  44. package/dist/chunks/modal-Dz5TzkTB.js.map +1 -0
  45. package/dist/chunks/picker-SJXnHwsj.js +462 -0
  46. package/dist/chunks/picker-SJXnHwsj.js.map +1 -0
  47. package/dist/chunks/popover-BJH-yHvb.js +263 -0
  48. package/dist/chunks/popover-BJH-yHvb.js.map +1 -0
  49. package/dist/chunks/radio-group-CW-K1n9c.js +125 -0
  50. package/dist/chunks/{radio-group-sSnlYjAX.js.map → radio-group-CW-K1n9c.js.map} +1 -1
  51. package/dist/chunks/select--oIrv7SC.js +357 -0
  52. package/dist/chunks/select--oIrv7SC.js.map +1 -0
  53. package/dist/chunks/separator-CHpBud1e.js +18 -0
  54. package/dist/chunks/separator-CHpBud1e.js.map +1 -0
  55. package/dist/chunks/{sortable-BKIwlqhI.js → sortable-BujAJgFa.js} +42 -40
  56. package/dist/chunks/{sortable-BKIwlqhI.js.map → sortable-BujAJgFa.js.map} +1 -1
  57. package/dist/chunks/{table-DxoSOvQK.js → table-BDY9Zw--.js} +18 -18
  58. package/dist/chunks/{table-DxoSOvQK.js.map → table-BDY9Zw--.js.map} +1 -1
  59. package/dist/chunks/{table-column-interactions-DzEvVuXe.js → table-column-interactions-Do8LFtiv.js} +20 -20
  60. package/dist/chunks/{table-column-interactions-DzEvVuXe.js.map → table-column-interactions-Do8LFtiv.js.map} +1 -1
  61. package/dist/chunks/{types-D9Wj9wrg.js → types-CxXyru6U.js} +21 -21
  62. package/dist/chunks/{types-D9Wj9wrg.js.map → types-CxXyru6U.js.map} +1 -1
  63. package/dist/chunks/ui.module-oRwY3Zli.js.map +1 -1
  64. package/dist/chunks/{useODataSelectBase-DR4PrY1j.js → useODataSelectBase-DwR4Lfv-.js} +5 -5
  65. package/dist/chunks/{useODataSelectBase-DR4PrY1j.js.map → useODataSelectBase-DwR4Lfv-.js.map} +1 -1
  66. package/dist/chunks/{wheel-picker-FS58cRsQ.js → wheel-picker-DUHGy7wE.js} +23 -23
  67. package/dist/chunks/{wheel-picker-FS58cRsQ.js.map → wheel-picker-DUHGy7wE.js.map} +1 -1
  68. package/dist/context-menu/components/ContextMenu.d.ts +16 -9
  69. package/dist/context-menu/components/ContextMenu.d.ts.map +1 -1
  70. package/dist/context-menu/components/ContextMenuTrigger.d.ts +6 -4
  71. package/dist/context-menu/components/ContextMenuTrigger.d.ts.map +1 -1
  72. package/dist/context-menu/components/DropdownMenu.d.ts +12 -7
  73. package/dist/context-menu/components/DropdownMenu.d.ts.map +1 -1
  74. package/dist/context-menu/components/DropdownMenuTrigger.d.ts +6 -4
  75. package/dist/context-menu/components/DropdownMenuTrigger.d.ts.map +1 -1
  76. package/dist/context-menu/components/MenuContent.d.ts +6 -4
  77. package/dist/context-menu/components/MenuContent.d.ts.map +1 -1
  78. package/dist/context-menu/components/MenuContext.d.ts +12 -7
  79. package/dist/context-menu/components/MenuContext.d.ts.map +1 -1
  80. package/dist/context-menu/components/MenuGroupLabel.d.ts +1 -1
  81. package/dist/context-menu/components/MenuGroupLabel.d.ts.map +1 -1
  82. package/dist/context-menu/components/MenuItem.d.ts.map +1 -1
  83. package/dist/context-menu/components/MenuRoot.d.ts +5 -5
  84. package/dist/context-menu/components/MenuRoot.d.ts.map +1 -1
  85. package/dist/context-menu/components/MenuSeparator.d.ts +1 -2
  86. package/dist/context-menu/components/MenuSeparator.d.ts.map +1 -1
  87. package/dist/context-menu/components/RadialMenuContent.d.ts +6 -4
  88. package/dist/context-menu/components/RadialMenuContent.d.ts.map +1 -1
  89. package/dist/context-menu/components/RadialMenuItem.d.ts +1 -1
  90. package/dist/context-menu/components/RadialMenuItem.d.ts.map +1 -1
  91. package/dist/context-menu/index.js +1 -1
  92. package/dist/date-input/index.js +2 -2
  93. package/dist/date-input/ui/CalendarDayView.d.ts +1 -1
  94. package/dist/date-input/ui/CalendarDayView.d.ts.map +1 -1
  95. package/dist/date-input/ui/CalendarMonthView.d.ts +1 -1
  96. package/dist/date-input/ui/CalendarMonthView.d.ts.map +1 -1
  97. package/dist/date-input/ui/CalendarView.d.ts.map +1 -1
  98. package/dist/date-input/ui/CalendarYearView.d.ts +1 -1
  99. package/dist/date-input/ui/CalendarYearView.d.ts.map +1 -1
  100. package/dist/date-input/ui/DateInput.d.ts.map +1 -1
  101. package/dist/date-range-preset-select/index.js +1 -1
  102. package/dist/date-time-input/index.js +128 -125
  103. package/dist/date-time-input/index.js.map +1 -1
  104. package/dist/date-time-input/ui/SingleDateTimeInput.d.ts.map +1 -1
  105. package/dist/detail/Detail.d.ts +6 -1
  106. package/dist/detail/Detail.d.ts.map +1 -1
  107. package/dist/detail/index.js +23 -23
  108. package/dist/detail/index.js.map +1 -1
  109. package/dist/dialog/index.js +1 -1
  110. package/dist/disclosure/index.js +9 -9
  111. package/dist/drop-zone/index.js +21 -21
  112. package/dist/errors/BadRequestPage.d.ts +1 -1
  113. package/dist/errors/BadRequestPage.d.ts.map +1 -1
  114. package/dist/errors/ErrorDisplay.d.ts +2 -2
  115. package/dist/errors/ErrorDisplay.d.ts.map +1 -1
  116. package/dist/errors/ErrorExplosion.d.ts +1 -2
  117. package/dist/errors/ErrorExplosion.d.ts.map +1 -1
  118. package/dist/errors/ForbiddenPage.d.ts +1 -1
  119. package/dist/errors/ForbiddenPage.d.ts.map +1 -1
  120. package/dist/errors/NotFoundPage.d.ts +1 -1
  121. package/dist/errors/NotFoundPage.d.ts.map +1 -1
  122. package/dist/errors/PageError.d.ts +1 -2
  123. package/dist/errors/PageError.d.ts.map +1 -1
  124. package/dist/errors/UnauthorizedPage.d.ts +1 -1
  125. package/dist/errors/UnauthorizedPage.d.ts.map +1 -1
  126. package/dist/errors/ViewNotChanged.d.ts +1 -2
  127. package/dist/errors/ViewNotChanged.d.ts.map +1 -1
  128. package/dist/errors/index.js +110 -80
  129. package/dist/errors/index.js.map +1 -1
  130. package/dist/expandable-action-panel/index.js +24 -24
  131. package/dist/flex/Flex.d.ts +6 -3
  132. package/dist/flex/Flex.d.ts.map +1 -1
  133. package/dist/flex/FlexCenter.d.ts +1 -1
  134. package/dist/flex/FlexCenter.d.ts.map +1 -1
  135. package/dist/flex/FlexContainer.d.ts +7 -1
  136. package/dist/flex/FlexContainer.d.ts.map +1 -1
  137. package/dist/flex/FlexItem.d.ts +7 -1
  138. package/dist/flex/FlexItem.d.ts.map +1 -1
  139. package/dist/flex/FlexSpacer.d.ts +7 -1
  140. package/dist/flex/FlexSpacer.d.ts.map +1 -1
  141. package/dist/flex/PredefinedFlex.d.ts +7 -1
  142. package/dist/flex/PredefinedFlex.d.ts.map +1 -1
  143. package/dist/flex/index.js +1 -1
  144. package/dist/flex/useFlexClasses.d.ts +1 -1
  145. package/dist/floating-arrow/FloatingArrow.d.ts +4 -1
  146. package/dist/floating-arrow/FloatingArrow.d.ts.map +1 -1
  147. package/dist/floating-arrow/index.js +1 -1
  148. package/dist/fullscreen-portal/index.js +8 -8
  149. package/dist/grid/Grid.d.ts +4 -2
  150. package/dist/grid/Grid.d.ts.map +1 -1
  151. package/dist/grid/GridContainer.d.ts +7 -1
  152. package/dist/grid/GridContainer.d.ts.map +1 -1
  153. package/dist/grid/GridItem.d.ts +7 -1
  154. package/dist/grid/GridItem.d.ts.map +1 -1
  155. package/dist/grid/index.js +1 -1
  156. package/dist/image/index.js +120 -120
  157. package/dist/input/index.js +1 -1
  158. package/dist/input-date-time/index.js +55 -55
  159. package/dist/input-file/index.js +16 -16
  160. package/dist/input-files/index.js +1 -1
  161. package/dist/input-image/index.js +17 -17
  162. package/dist/input-search/index.js +30 -2
  163. package/dist/input-search/index.js.map +1 -0
  164. package/dist/layout-picker/index.js +95 -97
  165. package/dist/layout-picker/index.js.map +1 -1
  166. package/dist/layout-picker/ui/LayoutPicker.d.ts.map +1 -1
  167. package/dist/list/List.d.ts +9 -9
  168. package/dist/list/List.d.ts.map +1 -1
  169. package/dist/list/index.js +51 -44
  170. package/dist/list/index.js.map +1 -1
  171. package/dist/listbox/Listbox.d.ts.map +1 -1
  172. package/dist/listbox/index.js +33 -39
  173. package/dist/listbox/index.js.map +1 -1
  174. package/dist/misc/CopyTextWrapper.d.ts +1 -1
  175. package/dist/misc/CopyTextWrapper.d.ts.map +1 -1
  176. package/dist/misc/OneStepScroller.d.ts +1 -1
  177. package/dist/misc/OneStepScroller.d.ts.map +1 -1
  178. package/dist/misc/Scrollable.d.ts +9 -7
  179. package/dist/misc/Scrollable.d.ts.map +1 -1
  180. package/dist/misc/SkeletonLine.d.ts +1 -1
  181. package/dist/misc/SkeletonLine.d.ts.map +1 -1
  182. package/dist/misc/StateIcon.d.ts +6 -7
  183. package/dist/misc/StateIcon.d.ts.map +1 -1
  184. package/dist/misc/index.d.ts +1 -0
  185. package/dist/misc/index.d.ts.map +1 -1
  186. package/dist/misc/index.js +1 -1
  187. package/dist/modal/Modal.d.ts +14 -5
  188. package/dist/modal/Modal.d.ts.map +1 -1
  189. package/dist/modal/index.js +1 -1
  190. package/dist/multi-select/index.js +481 -2
  191. package/dist/multi-select/index.js.map +1 -0
  192. package/dist/multi-select/ui/MultiSelect.d.ts +7 -2
  193. package/dist/multi-select/ui/MultiSelect.d.ts.map +1 -1
  194. package/dist/multi-select/ui/ODataMultiSelect.d.ts +1 -2
  195. package/dist/multi-select/ui/ODataMultiSelect.d.ts.map +1 -1
  196. package/dist/notifications/index.js +46 -48
  197. package/dist/notifications/index.js.map +1 -1
  198. package/dist/option/Option.d.ts +3 -3
  199. package/dist/option/OptionContentContainer.d.ts +7 -0
  200. package/dist/option/OptionContentContainer.d.ts.map +1 -0
  201. package/dist/option/index.js +30 -30
  202. package/dist/option/index.js.map +1 -1
  203. package/dist/period-select/index.js +7 -7
  204. package/dist/picker/PickerOptions.d.ts +3 -1
  205. package/dist/picker/PickerOptions.d.ts.map +1 -1
  206. package/dist/picker/PickerPopup.d.ts +1 -1
  207. package/dist/picker/PickerPopup.d.ts.map +1 -1
  208. package/dist/picker/PickerTriggerActions.d.ts +7 -2
  209. package/dist/picker/PickerTriggerActions.d.ts.map +1 -1
  210. package/dist/picker/PickerTriggerInput.d.ts +7 -2
  211. package/dist/picker/PickerTriggerInput.d.ts.map +1 -1
  212. package/dist/picker/index.js +1 -1
  213. package/dist/polymorphic/PolymorphicComponent.d.ts +1 -1
  214. package/dist/polymorphic/PolymorphicComponent.d.ts.map +1 -1
  215. package/dist/polymorphic/index.js +3 -1
  216. package/dist/polymorphic/index.js.map +1 -1
  217. package/dist/popover/FloatingPopover.d.ts +1 -1
  218. package/dist/popover/FloatingPopover.d.ts.map +1 -1
  219. package/dist/popover/FloatingTooltip.d.ts +2 -2
  220. package/dist/popover/FloatingTooltip.d.ts.map +1 -1
  221. package/dist/popover/components/Popover.d.ts +11 -10
  222. package/dist/popover/components/Popover.d.ts.map +1 -1
  223. package/dist/popover/components/PopoverContent.d.ts +6 -4
  224. package/dist/popover/components/PopoverContent.d.ts.map +1 -1
  225. package/dist/popover/components/PopoverContext.d.ts +2 -1
  226. package/dist/popover/components/PopoverContext.d.ts.map +1 -1
  227. package/dist/popover/components/PopoverTrigger.d.ts +1 -1
  228. package/dist/popover/components/PopoverTrigger.d.ts.map +1 -1
  229. package/dist/popover/index.js +1 -1
  230. package/dist/preset-range-date-input/index.js +10 -10
  231. package/dist/preset-select/index.js +1 -1
  232. package/dist/radio-button/RadioButton.d.ts +1 -1
  233. package/dist/radio-button/RadioButton.d.ts.map +1 -1
  234. package/dist/radio-button/index.js +14 -11
  235. package/dist/radio-button/index.js.map +1 -1
  236. package/dist/radio-group/index.js +1 -1
  237. package/dist/select/ODataSelect.d.ts +1 -2
  238. package/dist/select/ODataSelect.d.ts.map +1 -1
  239. package/dist/select/Select.d.ts.map +1 -1
  240. package/dist/select/index.js +1 -1
  241. package/dist/separator/Separator.d.ts +1 -1
  242. package/dist/separator/Separator.d.ts.map +1 -1
  243. package/dist/separator/index.js +1 -1
  244. package/dist/simple-table/index.js +5 -5
  245. package/dist/slider/Slider.d.ts.map +1 -1
  246. package/dist/slider/SliderInput.d.ts.map +1 -1
  247. package/dist/slider/SliderPopoverToggle.d.ts +11 -0
  248. package/dist/slider/SliderPopoverToggle.d.ts.map +1 -0
  249. package/dist/slider/index.js +298 -277
  250. package/dist/slider/index.js.map +1 -1
  251. package/dist/sortable/Sortable.d.ts.map +1 -1
  252. package/dist/sortable/SortableDragHandle.d.ts +1 -1
  253. package/dist/sortable/SortableDragHandle.d.ts.map +1 -1
  254. package/dist/sortable/index.js +1 -1
  255. package/dist/splitter/index.js +55 -55
  256. package/dist/state-select/index.js +17 -17
  257. package/dist/styles.css +1 -1
  258. package/dist/switch/index.js +18 -18
  259. package/dist/table/index.js +1 -1
  260. package/dist/table-column-interactions/index.js +1 -1
  261. package/dist/table-editor/index.js +99 -99
  262. package/dist/table-sorting/index.js +13 -13
  263. package/dist/tabs/index.js +103 -104
  264. package/dist/tabs/index.js.map +1 -1
  265. package/dist/tabs/ui/TabsBox.d.ts +1 -1
  266. package/dist/tabs/ui/TabsBox.d.ts.map +1 -1
  267. package/dist/tabs/ui/TabsLayout.d.ts +11 -7
  268. package/dist/tabs/ui/TabsLayout.d.ts.map +1 -1
  269. package/dist/tabs/ui/TabsPanel.d.ts +3 -3
  270. package/dist/tabs/ui/TabsPanel.d.ts.map +1 -1
  271. package/dist/tabs/ui/TabsTabList.d.ts +2 -2
  272. package/dist/tabs/ui/TabsTabList.d.ts.map +1 -1
  273. package/dist/tag-input/index.js +58 -58
  274. package/dist/tag-input/index.js.map +1 -1
  275. package/dist/text/HighlightText.d.ts +2 -2
  276. package/dist/text/HighlightText.d.ts.map +1 -1
  277. package/dist/text/index.js +23 -18
  278. package/dist/text/index.js.map +1 -1
  279. package/dist/text-editor/index.js +3 -3
  280. package/dist/textarea/index.js +1 -1
  281. package/dist/three-scene/index.js +7 -7
  282. package/dist/toggle/index.js +20 -20
  283. package/dist/toolbar/Toolbar.d.ts +8 -2
  284. package/dist/toolbar/Toolbar.d.ts.map +1 -1
  285. package/dist/toolbar/index.js +21 -17
  286. package/dist/toolbar/index.js.map +1 -1
  287. package/dist/tree/index.js +24 -24
  288. package/dist/tree-select/TreeNodeContent.d.ts +3 -1
  289. package/dist/tree-select/TreeNodeContent.d.ts.map +1 -1
  290. package/dist/tree-select/TreePickerBase.d.ts.map +1 -1
  291. package/dist/tree-select/index.js +469 -392
  292. package/dist/tree-select/index.js.map +1 -1
  293. package/dist/tree-table/index.js +33 -33
  294. package/dist/tree-table/index.js.map +1 -1
  295. package/dist/wheel-picker/index.js +1 -1
  296. package/package.json +1 -5
  297. package/storybook-static/assets/{Badge-BKRvorSi.js → Badge-r7lsdHne.js} +1 -1
  298. package/storybook-static/assets/{Badge.stories-19yFfupy.js → Badge.stories-P4qdQ7cm.js} +1 -1
  299. package/storybook-static/assets/{BadgeList-DMkfxply.js → BadgeList-8NyPAV2Q.js} +1 -1
  300. package/storybook-static/assets/{BarcodeScannerDialog.stories-DdnHxu5x.js → BarcodeScannerDialog.stories--TadwGdZ.js} +1 -1
  301. package/storybook-static/assets/{Button-Di-0Ionw.js → Button-BP0DDcNq.js} +1 -1
  302. package/storybook-static/assets/{Button-CoOZeR_z.js → Button-X3OT5zE7.js} +2 -2
  303. package/storybook-static/assets/{Button.stories-Bd1To5BN.js → Button.stories-CFiUr_xE.js} +1 -1
  304. package/storybook-static/assets/CalendarView-nWuZBE9T.js +1 -0
  305. package/storybook-static/assets/{CheckBox-DSmGYEML.js → CheckBox-BId2Zf_m.js} +1 -1
  306. package/storybook-static/assets/{CheckBox-DfRTTXg1.js → CheckBox-Bde9tud-.js} +1 -1
  307. package/storybook-static/assets/{CheckBox.stories-DaldWgEI.js → CheckBox.stories-BVU9Rkai.js} +1 -1
  308. package/storybook-static/assets/{Color-6AOWCN3U-DIhia6KS.js → Color-6AOWCN3U-BeUy9gum.js} +1 -1
  309. package/storybook-static/assets/{ContextMenu-BGMQHT9V.js → ContextMenu-BS2UVgbu.js} +6 -2
  310. package/storybook-static/assets/ContextMenu-Byksyz_8.js +33 -0
  311. package/storybook-static/assets/ContextMenu.stories-DmJPp2YR.js +37 -0
  312. package/storybook-static/assets/{DateInput-DUl5Bb0j.js → DateInput-CQe_1Dk-.js} +8 -1
  313. package/storybook-static/assets/{DateInput-MgdMtvtr.js → DateInput-CgETMk9B.js} +1 -1
  314. package/storybook-static/assets/{DateInput.stories-B6Ol0Ak3.js → DateInput.stories-BOst6EKv.js} +1 -1
  315. package/storybook-static/assets/{DateRangePresetSelect-CPj0pSGc.js → DateRangePresetSelect-CxrNYBTe.js} +1 -1
  316. package/storybook-static/assets/{DateRangePresetSelect-C4MVqjXa.js → DateRangePresetSelect-DHJ31vIB.js} +1 -1
  317. package/storybook-static/assets/{DateRangePresetSelect.stories-tPaMURtH.js → DateRangePresetSelect.stories-CiyN1joN.js} +1 -1
  318. package/storybook-static/assets/{Detail-DnHTVRb5.js → Detail-V_NYrUJR.js} +1 -1
  319. package/storybook-static/assets/Detail.stories-B4tf6inN.js +56 -0
  320. package/storybook-static/assets/{Dialog-COpvqcXi.js → Dialog-B6miFej7.js} +1 -1
  321. package/storybook-static/assets/{Dialog-LMnrvBpx.js → Dialog-DNTx5Unm.js} +1 -1
  322. package/storybook-static/assets/{Dialog.stories-BE2I5ny2.js → Dialog.stories-BS1dDTLW.js} +1 -1
  323. package/storybook-static/assets/{Disclosure-BZ3jd5nu.js → Disclosure-4sf5BIn1.js} +1 -1
  324. package/storybook-static/assets/{Disclosure.stories-cMcF8a8I.js → Disclosure.stories-DhUQNdEC.js} +1 -1
  325. package/storybook-static/assets/DisclosureGroup-Codiur77.js +2 -0
  326. package/storybook-static/assets/{DocsRenderer-JROSPFPF-CurHdzu8.js → DocsRenderer-JROSPFPF-yT2aWNaF.js} +1 -1
  327. package/storybook-static/assets/{DropZone-VEmgdfs6.js → DropZone-D4rl2WEV.js} +1 -1
  328. package/storybook-static/assets/{DropZone-DGMAbY1z.js → DropZone-Du0BQAyO.js} +1 -1
  329. package/storybook-static/assets/{DropZone.stories-B8N17-bV.js → DropZone.stories-B8iPjYH_.js} +1 -1
  330. package/storybook-static/assets/DropdownMenu-BcdS3oNz.js +21 -0
  331. package/storybook-static/assets/{ExpandableActionPanel-C7CFQZLD.js → ExpandableActionPanel-6u6YJanI.js} +1 -1
  332. package/storybook-static/assets/{ExpandableActionPanel.stories-CnBr0s9R.js → ExpandableActionPanel.stories-D-CZHUv0.js} +1 -1
  333. package/storybook-static/assets/{Flex-RpqsC-gQ.js → Flex-DWi0hQ-f.js} +1 -1
  334. package/storybook-static/assets/Flex.stories-CKKi33JK.js +300 -0
  335. package/storybook-static/assets/FlexContainer-BMK_YH72.js +1 -0
  336. package/storybook-static/assets/{FlexItem-pu3E11Sf.js → FlexItem-DpSHNBxJ.js} +2 -2
  337. package/storybook-static/assets/FloatingPopover-D9nTd47B.js +1 -0
  338. package/storybook-static/assets/FormattedTableCell-DyBhk9rG.js +15 -0
  339. package/storybook-static/assets/{Grid-CzO0Ae1r.js → Grid-BZgzDCLK.js} +2 -2
  340. package/storybook-static/assets/{Grid-BRnqEtg1.js → Grid-DbvUGBEN.js} +1 -1
  341. package/storybook-static/assets/{Grid.stories-DXY7Cvfu.js → Grid.stories-BeEAzTxD.js} +4 -4
  342. package/storybook-static/assets/{GridContainer-fKYgDsLl.js → GridContainer-B82Onj6x.js} +2 -2
  343. package/storybook-static/assets/{ImageCropper.stories-ZnvbFN71.js → ImageCropper.stories-SDIt19aO.js} +1 -1
  344. package/storybook-static/assets/{ImageRenderer-DUOhCfac.js → ImageRenderer-Bzg27pq7.js} +1 -1
  345. package/storybook-static/assets/{ImageRenderer.stories-Dj6NQm2k.js → ImageRenderer.stories-C-IE84zV.js} +1 -1
  346. package/storybook-static/assets/{ImageView.stories-QTzOsByD.js → ImageView.stories-DIcx2Krs.js} +1 -1
  347. package/storybook-static/assets/{ImageViewer.stories-CpnUEgZW.js → ImageViewer.stories-CQTy0uPX.js} +2 -2
  348. package/storybook-static/assets/{ImageViewerRuntime-B1PicLUw.js → ImageViewerRuntime-CA5BYQsX.js} +1 -1
  349. package/storybook-static/assets/{Input-B8eGQXlp.js → Input-D8uMye_9.js} +1 -1
  350. package/storybook-static/assets/{Input-DnFc_Pwx.js → Input-DmsN6uC_.js} +1 -1
  351. package/storybook-static/assets/{Input.stories-C6CbYvZP.js → Input.stories-D8QWPnMD.js} +1 -1
  352. package/storybook-static/assets/{InputDateTime-DoMduRde.js → InputDateTime-Cczll-bH.js} +1 -1
  353. package/storybook-static/assets/{InputDateTime.stories--LHpvJjY.js → InputDateTime.stories-DeZ6XHwa.js} +1 -1
  354. package/storybook-static/assets/{InputFile-CunQ8F4s.js → InputFile-BbPjLN4E.js} +1 -1
  355. package/storybook-static/assets/{InputFile-DFv3WAWa.js → InputFile-C0_L0zTd.js} +1 -1
  356. package/storybook-static/assets/{InputFile.stories-B0WZhic1.js → InputFile.stories-Di_6BkX1.js} +1 -1
  357. package/storybook-static/assets/{InputFiles-DyiPQ_tH.js → InputFiles-B3uOwqKF.js} +1 -1
  358. package/storybook-static/assets/{InputFiles-CKDPmjWY.js → InputFiles-CF60S_qG.js} +1 -1
  359. package/storybook-static/assets/{InputFiles.stories-BbP_bEnL.js → InputFiles.stories-BkTiEPX6.js} +1 -1
  360. package/storybook-static/assets/{InputFilesList-BAIGwV7V.js → InputFilesList-C9cudcHe.js} +1 -1
  361. package/storybook-static/assets/{InputImage-2G1pRNbw.js → InputImage-Aq_ZXmtw.js} +1 -1
  362. package/storybook-static/assets/{InputImage-ZvEB_TIT.js → InputImage-Dx0DIf4l.js} +1 -1
  363. package/storybook-static/assets/{InputImage.stories-BiShLRcw.js → InputImage.stories-D7LfEcn4.js} +1 -1
  364. package/storybook-static/assets/{InteractiveComponents-CT99QfHX.js → InteractiveComponents-DP5FyU4S.js} +1 -1
  365. package/storybook-static/assets/{InteractiveComponents.stories-BPTICQZz.js → InteractiveComponents.stories-CE5L5PAB.js} +1 -1
  366. package/storybook-static/assets/{LayoutPicker-BDpc8LBa.js → LayoutPicker-BehxFQsU.js} +2 -2
  367. package/storybook-static/assets/{LayoutPicker-Cg_AM-pj.js → LayoutPicker-CW1W-CAf.js} +2 -1
  368. package/storybook-static/assets/{LayoutPicker.stories-Ca9WZdPW.js → LayoutPicker.stories-DtvfpOUS.js} +1 -1
  369. package/storybook-static/assets/Listbox-Bn_6WyQc.js +1 -0
  370. package/storybook-static/assets/{Listbox-LbbFtte9.js → Listbox-VcD28kxl.js} +2 -1
  371. package/storybook-static/assets/{Listbox.stories-xDpbFNZk.js → Listbox.stories-CL6fJlUm.js} +1 -1
  372. package/storybook-static/assets/{Modal-CXd2j0up.js → Modal-D0D5WZ_O.js} +1 -1
  373. package/storybook-static/assets/Modal-DrSX0i3a.js +1 -0
  374. package/storybook-static/assets/{Modal.stories-cNLvFjmT.js → Modal.stories-Ch3P8_kY.js} +1 -1
  375. package/storybook-static/assets/{ModalManagerProvider-ClXvSB9a.js → ModalManagerProvider-B0Lf7xX0.js} +1 -1
  376. package/storybook-static/assets/MultiSelect-Bw3qf8eW.js +2 -0
  377. package/storybook-static/assets/{MultiSelect-Na2VdNy3.js → MultiSelect-Cmxa5Vho.js} +4 -1
  378. package/storybook-static/assets/MultiSelect-SJBp1Ymv.css +1 -0
  379. package/storybook-static/assets/{MultiSelect.stories-4nFshdtz.js → MultiSelect.stories-DKHPBUWD.js} +1 -1
  380. package/storybook-static/assets/NoData-seFnJNiE.js +1 -0
  381. package/storybook-static/assets/{NotificationsHost-CrLL4WK9.js → NotificationsHost-d770FjSM.js} +11 -8
  382. package/storybook-static/assets/{NotificationsHost.stories-Ci2q0W9-.js → NotificationsHost.stories-BYmVl44l.js} +1 -1
  383. package/storybook-static/assets/{ODataMultiSelect-Cc09uTB8.js → ODataMultiSelect-BN0pcCmQ.js} +1 -1
  384. package/storybook-static/assets/{ODataMultiSelect.stories-CzGzREa9.js → ODataMultiSelect.stories-D5zrkaFW.js} +2 -2
  385. package/storybook-static/assets/{ODataSelect-DqoRg5pz.js → ODataSelect-C5DXRRVH.js} +1 -1
  386. package/storybook-static/assets/{ODataSelect.stories-BCcxERn3.js → ODataSelect.stories-ClYp08JR.js} +2 -2
  387. package/storybook-static/assets/{ODataTreeMultiSelect-qZEcSE5O.js → ODataTreeMultiSelect-CsvSq1G1.js} +1 -1
  388. package/storybook-static/assets/{ODataTreeMultiSelect.stories-Bfees7Qr.js → ODataTreeMultiSelect.stories-DFXLQjms.js} +1 -1
  389. package/storybook-static/assets/{ODataTreeSelect-IOVS6uQc.js → ODataTreeSelect-CdN-NwV7.js} +1 -1
  390. package/storybook-static/assets/{ODataTreeSelect.stories-CO7DClzd.js → ODataTreeSelect.stories-CDffbvxi.js} +1 -1
  391. package/storybook-static/assets/OneStepScroller-qXHo2r0J.js +5 -0
  392. package/storybook-static/assets/Option-tEWfKgN_.js +10 -0
  393. package/storybook-static/assets/OptionButton-DOj_dfd1.js +1 -0
  394. package/storybook-static/assets/OptionContent-6iwuLpQP.js +1 -0
  395. package/storybook-static/assets/OptionContentContainer-DbdHO42m.js +2 -0
  396. package/storybook-static/assets/{PeriodSelect-D-jXJf5C.js → PeriodSelect-Bo_B6jdw.js} +1 -1
  397. package/storybook-static/assets/{PeriodSelect-BAVDztkI.js → PeriodSelect-DffBuv6v.js} +1 -1
  398. package/storybook-static/assets/{PeriodSelect.stories-CscsENT9.js → PeriodSelect.stories-Boq-fBL8.js} +1 -1
  399. package/storybook-static/assets/{PickerField-CRtltoce.js → PickerField-fMVQUcBX.js} +1 -1
  400. package/storybook-static/assets/PickerTriggerActions-zS0JUD-3.js +2 -0
  401. package/storybook-static/assets/PolymorphicComponent-NBvIz9JD.js +1 -0
  402. package/storybook-static/assets/Popover-5c_n39x0.js +55 -0
  403. package/storybook-static/assets/Popover-u02JbpuP.js +46 -0
  404. package/storybook-static/assets/Popover.stories-BUVgJJQI.js +63 -0
  405. package/storybook-static/assets/{PresetRangeDateInput-VZnM8RNV.js → PresetRangeDateInput-EiaEd6Qp.js} +1 -1
  406. package/storybook-static/assets/{PresetRangeDateInput-CVPMYlEV.js → PresetRangeDateInput-TyV-u0Db.js} +1 -1
  407. package/storybook-static/assets/{PresetRangeDateInput.stories-DdBWlSV-.js → PresetRangeDateInput.stories-jJq5Gkdb.js} +1 -1
  408. package/storybook-static/assets/{PresetSelect-C7YYBjlL.js → PresetSelect-Cnl_fXjS.js} +1 -1
  409. package/storybook-static/assets/{README-6XPUoxFl.js → README-10_nKrEg.js} +1 -1
  410. package/storybook-static/assets/{README-DIWsYBR7.js → README-6n5fAnyG.js} +1 -1
  411. package/storybook-static/assets/{README-oKLTQYfV.js → README-7mbN7jNm.js} +1 -1
  412. package/storybook-static/assets/{README-D2AT2-yD.js → README-8qj7XGDa.js} +1 -1
  413. package/storybook-static/assets/{README-DADnaXLy.js → README-8vaqVs2t.js} +1 -1
  414. package/storybook-static/assets/{README-ZxRwqfIH.js → README-AbbeH5rC.js} +1 -1
  415. package/storybook-static/assets/{README-Bk1oSDWQ.js → README-B-K2UPpo.js} +1 -1
  416. package/storybook-static/assets/{README-DoxVtmRh.js → README-B-z6znlC.js} +1 -1
  417. package/storybook-static/assets/{README-BL8ZNGNi.js → README-B6uVB1ib.js} +1 -1
  418. package/storybook-static/assets/{README-B0FbTpix.js → README-B7f6XRLa.js} +1 -1
  419. package/storybook-static/assets/{README-BGBxEe4u.js → README-BGEviJbA.js} +1 -1
  420. package/storybook-static/assets/{README-C-IUw1gX.js → README-BPWr_0XE.js} +1 -1
  421. package/storybook-static/assets/{README-_KzyG4dS.js → README-BWiCGCpy.js} +1 -1
  422. package/storybook-static/assets/{README-DrTR5pSr.js → README-BfF9g6q6.js} +1 -1
  423. package/storybook-static/assets/{README-2NTkucdH.js → README-BgbmWbpJ.js} +1 -1
  424. package/storybook-static/assets/{README-DC0vNdOD.js → README-Bn7SBLqL.js} +1 -1
  425. package/storybook-static/assets/{README-w9FMhq0X.js → README-BoXMNqUS.js} +1 -1
  426. package/storybook-static/assets/{README-DyWhmOFY.js → README-BoZbB8t8.js} +1 -1
  427. package/storybook-static/assets/{README-b3wA6wFr.js → README-BsHrwATK.js} +1 -1
  428. package/storybook-static/assets/{README-CB5BpIBF.js → README-By7MmJad.js} +1 -1
  429. package/storybook-static/assets/{README-DWzfTSuq.js → README-BylyIJ4z.js} +1 -1
  430. package/storybook-static/assets/{README-CeNQeTK-.js → README-ByxHEXaq.js} +1 -1
  431. package/storybook-static/assets/{README-UcyyK9jn.js → README-CO0Anr1W.js} +1 -1
  432. package/storybook-static/assets/{README-BdsFByUw.js → README-CXhBUq08.js} +1 -1
  433. package/storybook-static/assets/{README-Bvo0Qxde.js → README-CXlUZ-Tw.js} +1 -1
  434. package/storybook-static/assets/{README-CTF9mVZL.js → README-CZBT22Qx.js} +1 -1
  435. package/storybook-static/assets/{README-B0Nb0jf2.js → README-CZaKBu1r.js} +1 -1
  436. package/storybook-static/assets/{README-C_lKreF9.js → README-Cc5RUdsX.js} +1 -1
  437. package/storybook-static/assets/{README-BZlnzGAh.js → README-CmCyESsg.js} +1 -1
  438. package/storybook-static/assets/{README-jvtwVY_n.js → README-CoofcGyA.js} +1 -1
  439. package/storybook-static/assets/{README-Wli4AXG5.js → README-CqCDXjY-.js} +1 -1
  440. package/storybook-static/assets/{README-DOi6rx7n.js → README-CqMgUXym.js} +1 -1
  441. package/storybook-static/assets/{README-na5mQX4V.js → README-DB3HzmYa.js} +1 -1
  442. package/storybook-static/assets/{README-DMwF_O1R.js → README-DBqb3xHL.js} +1 -1
  443. package/storybook-static/assets/{README-CvaizZr1.js → README-DKMzvCHg.js} +1 -1
  444. package/storybook-static/assets/{README-CqiNQGIJ.js → README-DLGk_zi3.js} +1 -1
  445. package/storybook-static/assets/{README-Dm7CwuVP.js → README-DT4BWDzj.js} +1 -1
  446. package/storybook-static/assets/{README-Brn9Tjjc.js → README-DXzLMFnF.js} +1 -1
  447. package/storybook-static/assets/{README-8L1vpZcz.js → README-DZKQ2NbJ.js} +1 -1
  448. package/storybook-static/assets/{README-C7N5_6-c.js → README-DnIK-CvZ.js} +1 -1
  449. package/storybook-static/assets/{README-GChrAHFQ.js → README-DsEaeYrz.js} +1 -1
  450. package/storybook-static/assets/{README-DkBG5Azm.js → README-DsqwQGJx.js} +1 -1
  451. package/storybook-static/assets/{README-Dr8TxFTe.js → README-DyhDd6j2.js} +1 -1
  452. package/storybook-static/assets/{README-HWuoKwKL.js → README-E09CwLzJ.js} +1 -1
  453. package/storybook-static/assets/{README-DlfWWC7n.js → README-W30_dPSQ.js} +1 -1
  454. package/storybook-static/assets/{README-DOBIWrus.js → README-WtLMdn_H.js} +1 -1
  455. package/storybook-static/assets/{README-g1VWHzAJ.js → README-_UuZJvdY.js} +1 -1
  456. package/storybook-static/assets/{README-BD-WSEvQ.js → README-bJALHbSR.js} +1 -1
  457. package/storybook-static/assets/{README-Dmu5lsNT.js → README-e3Zi9n04.js} +1 -1
  458. package/storybook-static/assets/{README-DgXAMdBY.js → README-g4l3WFXZ.js} +1 -1
  459. package/storybook-static/assets/{README-jQcGKqqm.js → README-jb10Ekr5.js} +1 -1
  460. package/storybook-static/assets/{README-CTwfFqJG.js → README-q6R_bF6h.js} +1 -1
  461. package/storybook-static/assets/{README-BGmO6U9j.js → README-tDgobAYS.js} +1 -1
  462. package/storybook-static/assets/{RadioButton-Dgkz1EWU.js → RadioButton-DGjO61a9.js} +1 -1
  463. package/storybook-static/assets/RadioButton-j3O4woG8.js +1 -0
  464. package/storybook-static/assets/{RadioButton.stories-DO14jTfm.js → RadioButton.stories-COGMYQcq.js} +1 -1
  465. package/storybook-static/assets/{RadioGroup-Db0AhiKo.js → RadioGroup-Cuj2D_RZ.js} +1 -1
  466. package/storybook-static/assets/{RadioGroup-BSiqjVai.js → RadioGroup-D9samx7D.js} +1 -1
  467. package/storybook-static/assets/{RadioGroup.stories-C0D6n83q.js → RadioGroup.stories-KSDvpgqY.js} +1 -1
  468. package/storybook-static/assets/Scrollable-DsOw--4y.js +1 -0
  469. package/storybook-static/assets/Scrollable-tPrIOchd.js +18 -0
  470. package/storybook-static/assets/Scrollable.stories-B7d_6eGB.js +1 -0
  471. package/storybook-static/assets/Select-D0CHiGkz.js +12 -0
  472. package/storybook-static/assets/{Select-D8X-SkP2.js → Select-h0tWQbii.js} +3 -1
  473. package/storybook-static/assets/{Select.stories-8_zvonmc.js → Select.stories-GmGbpUoi.js} +1 -1
  474. package/storybook-static/assets/Separator-C8aQcNns.js +1 -0
  475. package/storybook-static/assets/Separator-Dh8kzf-5.js +14 -0
  476. package/storybook-static/assets/Separator.stories-nQ9bDdo1.js +14 -0
  477. package/storybook-static/assets/{SerializableSelect-ii6T140l.js → SerializableSelect-BJAxQ8an.js} +1 -1
  478. package/storybook-static/assets/{SerializableSelect.stories-Ba3ABMGt.js → SerializableSelect.stories-CzVCg1_7.js} +1 -1
  479. package/storybook-static/assets/{ShimmerText-C6vkZwUV.js → ShimmerText-DnEOvvJA.js} +1 -1
  480. package/storybook-static/assets/{ShimmerText.stories-CVpSxXHJ.js → ShimmerText.stories-D2XRPcMC.js} +1 -1
  481. package/storybook-static/assets/{SingleDateTimeInput-96-mrjq8.js → SingleDateTimeInput-Bwn8kqI3.js} +8 -1
  482. package/storybook-static/assets/{SingleDateTimeInput-DpETPR89.js → SingleDateTimeInput-DwY38Bzb.js} +1 -1
  483. package/storybook-static/assets/{SingleDateTimeInput.stories-JhviurJO.js → SingleDateTimeInput.stories-DKq1_AqA.js} +1 -1
  484. package/storybook-static/assets/{Slider-B27TdvRV.js → Slider-CT0jMXMY.js} +8 -1
  485. package/storybook-static/assets/Slider-KiXLZUpw.js +1 -0
  486. package/storybook-static/assets/{Slider.stories-d1YeKe5r.js → Slider.stories-Cmcm8HlR.js} +1 -1
  487. package/storybook-static/assets/SliderInput-Dd_yvyMG.js +3 -0
  488. package/storybook-static/assets/{SliderInput-D2d23mEI.js → SliderInput-Unp3YEcU.js} +8 -1
  489. package/storybook-static/assets/{SliderInput.stories-CwqT79oE.js → SliderInput.stories-C0MwvTOV.js} +1 -1
  490. package/storybook-static/assets/{Sortable-DiJuiI6V.js → Sortable-CnCowZw-.js} +4 -2
  491. package/storybook-static/assets/Sortable.stories-DCrIurAg.js +44 -0
  492. package/storybook-static/assets/{Splitter-QwdfWNbm.js → Splitter-BErks2lB.js} +1 -1
  493. package/storybook-static/assets/{Splitter.stories-C2iDPz8c.js → Splitter.stories-DyRlCVUo.js} +1 -1
  494. package/storybook-static/assets/{StateSelect-D1ZDM6bC.js → StateSelect-DXfsbduM.js} +1 -1
  495. package/storybook-static/assets/{StateSelect-Bw9H1Cus.js → StateSelect-DuVzqi0t.js} +1 -1
  496. package/storybook-static/assets/{StateSelect.stories-DEFvQ15O.js → StateSelect.stories-CnIXqGFB.js} +1 -1
  497. package/storybook-static/assets/{StatusIndicator-D6Pbdz37.js → StatusIndicator-Bz3JF899.js} +1 -1
  498. package/storybook-static/assets/{StatusIndicator.stories-COgpy5cK.js → StatusIndicator.stories-B5RMchH3.js} +1 -1
  499. package/storybook-static/assets/{StringToggle.stories-BFwMh0Yd.js → StringToggle.stories-CcR8KHGF.js} +1 -1
  500. package/storybook-static/assets/{Switch-Bmj2AItH.js → Switch-Bo-dd4nL.js} +1 -1
  501. package/storybook-static/assets/{Switch-DyDk152g.js → Switch-a7GMbDn9.js} +1 -1
  502. package/storybook-static/assets/{Switch.stories-C10NxPL4.js → Switch.stories-B9c9CAmZ.js} +1 -1
  503. package/storybook-static/assets/{Table-YcEwF4aO.js → Table-BgmEmcbL.js} +1 -1
  504. package/storybook-static/assets/{Table.stories-DgxFS9Sa.js → Table.stories-BByDPmdZ.js} +1 -1
  505. package/storybook-static/assets/{TableEditor.stories-CSMoxO4O.js → TableEditor.stories-DJi7VPcY.js} +1 -1
  506. package/storybook-static/assets/{Tabs-DOsPN2X1.js → Tabs-CV1ykDlt.js} +2 -3
  507. package/storybook-static/assets/Tabs.stories-DOyJdrcR.js +57 -0
  508. package/storybook-static/assets/{TabsBox-B3REnb6D.css → TabsBox-DuBKU62M.css} +1 -1
  509. package/storybook-static/assets/{TabsBox-Ovukgo9G.js → TabsBox-n38x7_yO.js} +1 -1
  510. package/storybook-static/assets/{TagInput-BQBOGr9G.js → TagInput-j4mVWIf0.js} +1 -1
  511. package/storybook-static/assets/{TagInput.stories-DAAyJlgm.js → TagInput.stories-DSU97IRU.js} +1 -1
  512. package/storybook-static/assets/{Text-fdwuak_J.js → Text-COGTV38X.js} +1 -1
  513. package/storybook-static/assets/{Textarea-A22Efyk-.js → Textarea-BcgmS9aD.js} +1 -1
  514. package/storybook-static/assets/{Textarea-D80ZPpEy.js → Textarea-Byqjr2Ve.js} +1 -1
  515. package/storybook-static/assets/{Textarea.stories-DfaOYMoN.js → Textarea.stories-D1gXsWxK.js} +1 -1
  516. package/storybook-static/assets/{TimePanel-Bd5T_SfL.js → TimePanel-DzFFLXJP.js} +1 -1
  517. package/storybook-static/assets/{TimePanel.stories-D6TIpKp4.js → TimePanel.stories-287q5ipF.js} +1 -1
  518. package/storybook-static/assets/{Toggle-BvHMq6f_.js → Toggle-CCkzi_xC.js} +1 -1
  519. package/storybook-static/assets/{Toggle-DUyCRH0o.js → Toggle-KtpVC-vX.js} +1 -1
  520. package/storybook-static/assets/{Toggle.stories-ZPgC-EWw.js → Toggle.stories-BLKa6Zst.js} +1 -1
  521. package/storybook-static/assets/{TreeMultiSelect-DTMybWfP.js → TreeMultiSelect-CbnCiXFa.js} +1 -1
  522. package/storybook-static/assets/{TreeMultiSelect-DTmB9s8s.js → TreeMultiSelect-sYAglJIC.js} +2 -1
  523. package/storybook-static/assets/{TreeMultiSelect.stories-1_HB74Gf.js → TreeMultiSelect.stories-DGw_tJQ5.js} +1 -1
  524. package/storybook-static/assets/TreePickerBase-ClWTQVKW.css +1 -0
  525. package/storybook-static/assets/TreePickerBase-wz0-Y-eg.js +76 -0
  526. package/storybook-static/assets/{TreeSelect-CTN6cRRr.js → TreeSelect-BCOJNrl1.js} +1 -1
  527. package/storybook-static/assets/{TreeSelect-UsZGYhUO.js → TreeSelect-BJ6C_2pM.js} +2 -1
  528. package/storybook-static/assets/{TreeSelect.stories-B01pZcR9.js → TreeSelect.stories-DKdmUNAI.js} +1 -1
  529. package/storybook-static/assets/{TreeTable-dr3jK3Ih.js → TreeTable-DIRsmeC8.js} +1 -1
  530. package/storybook-static/assets/{TreeTable.stories-B1DPasDc.js → TreeTable.stories-BfqeLJU6.js} +1 -1
  531. package/storybook-static/assets/{blocks-Cw5Dm88b.js → blocks-r6nP1Mk3.js} +3 -3
  532. package/storybook-static/assets/{check-028VTQ8f.js → check-CX66-EtS.js} +1 -1
  533. package/storybook-static/assets/{chevron-down-CjXVIhzi.js → chevron-down-BpTVPmXw.js} +1 -1
  534. package/storybook-static/assets/{chevron-left-CktI1oFP.js → chevron-left-BDyvowID.js} +1 -1
  535. package/storybook-static/assets/{chevron-right-CF10QSRI.js → chevron-right-PitONC71.js} +1 -1
  536. package/storybook-static/assets/{chunk-W22LQPXL-C0ehDnCq.js → chunk-W22LQPXL-Bd54JRSO.js} +1 -1
  537. package/storybook-static/assets/{circle-alert-s0HpHvQO.js → circle-alert-BxfK632o.js} +1 -1
  538. package/storybook-static/assets/{circle-check-C7Lv1fv9.js → circle-check-CQ0mrCVh.js} +1 -1
  539. package/storybook-static/assets/{components-ClxgOUq5.js → components-CJIwocXl.js} +3 -3
  540. package/storybook-static/assets/contextMenu-BodN1HdA.js +2 -0
  541. package/storybook-static/assets/{download-B1U5w3LU.js → download-C_lZf2f4.js} +1 -1
  542. package/storybook-static/assets/{floating-ui.react-CyNWkXBV.js → floating-ui.react-BzwQR5CG.js} +1 -1
  543. package/storybook-static/assets/{foundationApi-CY0sxk8w.js → foundationApi-BgE0geET.js} +1 -1
  544. package/storybook-static/assets/{foundationLib-BCpSUA25.js → foundationLib-6nKeXUFS.js} +1 -1
  545. package/storybook-static/assets/{hooks-DjR-EyBl.js → hooks-DDySZJGR.js} +1 -1
  546. package/storybook-static/assets/{iframe-woVbsQH3.js → iframe-B9PXVErw.js} +4 -4
  547. package/storybook-static/assets/iframe-f5g4GUQw.js +1 -0
  548. package/storybook-static/assets/{info-DKbXBIbQ.js → info-rdW9neC9.js} +1 -1
  549. package/storybook-static/assets/{odata-CMCuN2Rx.js → odata-D6cOAxLt.js} +1 -1
  550. package/storybook-static/assets/{odataStoryFixtures-a4Q2PLas.js → odataStoryFixtures-CGQ31IO_.js} +1 -1
  551. package/storybook-static/assets/{react-D3CyilRt.js → react-BMktiE65.js} +1 -1
  552. package/storybook-static/assets/{refresh-cw-DXEJelAO.js → refresh-cw-CfKvrc1N.js} +1 -1
  553. package/storybook-static/assets/{settings-2-CKbiQBX8.js → settings-2-Drz-L5J9.js} +1 -1
  554. package/storybook-static/assets/sortable-BMuu2DRC.js +1 -0
  555. package/storybook-static/assets/{syntaxhighlighter-QEQV7K2Y-CLptde2b.js → syntaxhighlighter-QEQV7K2Y-eBmofw1l.js} +1 -1
  556. package/storybook-static/assets/{trash-2-CPWRIQlJ.js → trash-2-DEbF1hh6.js} +1 -1
  557. package/storybook-static/assets/{triangle-alert-XjzWCHp5.js → triangle-alert--nwD_1ZX.js} +1 -1
  558. package/storybook-static/assets/{ui-FA-1R8mO.css → ui-Bpz_yxm8.css} +1 -1
  559. package/storybook-static/assets/{uiClasses-DNnVkKPr.js → uiClasses-Bar5W7-L.js} +1 -1
  560. package/storybook-static/assets/{useODataSelectBase-ZGFa3pdT.js → useODataSelectBase-DSOGiMIw.js} +1 -1
  561. package/storybook-static/assets/{useODataTreeData-DAdLowou.js → useODataTreeData-Cn_XaKz_.js} +1 -1
  562. package/storybook-static/assets/usePickerQuery-B5ZZQg8g.js +1 -0
  563. package/storybook-static/assets/usePickerTriggerController-Cqy5IfOJ.js +6 -0
  564. package/storybook-static/assets/{x-D2Q9PGsq.js → x-DSHJbBBz.js} +1 -1
  565. package/storybook-static/iframe.html +2 -2
  566. package/storybook-static/index.json +1 -1
  567. package/storybook-static/project.json +1 -1
  568. package/dist/advanced-search/index.d.ts +0 -3
  569. package/dist/advanced-search/index.d.ts.map +0 -1
  570. package/dist/advanced-search/index.js +0 -399
  571. package/dist/advanced-search/index.js.map +0 -1
  572. package/dist/advanced-search/lib/index.d.ts +0 -2
  573. package/dist/advanced-search/lib/index.d.ts.map +0 -1
  574. package/dist/advanced-search/lib/searchParts.d.ts +0 -3
  575. package/dist/advanced-search/lib/searchParts.d.ts.map +0 -1
  576. package/dist/advanced-search/model/index.d.ts +0 -5
  577. package/dist/advanced-search/model/index.d.ts.map +0 -1
  578. package/dist/advanced-search/model/types.d.ts +0 -55
  579. package/dist/advanced-search/model/types.d.ts.map +0 -1
  580. package/dist/advanced-search/model/useAdvancedSearch.d.ts +0 -11
  581. package/dist/advanced-search/model/useAdvancedSearch.d.ts.map +0 -1
  582. package/dist/advanced-search/model/useAdvancedSearchInitialSelected.d.ts +0 -6
  583. package/dist/advanced-search/model/useAdvancedSearchInitialSelected.d.ts.map +0 -1
  584. package/dist/advanced-search/model/useAdvancedSearchSelection.d.ts +0 -13
  585. package/dist/advanced-search/model/useAdvancedSearchSelection.d.ts.map +0 -1
  586. package/dist/advanced-search/ui/AdvancedSearchModal.d.ts +0 -23
  587. package/dist/advanced-search/ui/AdvancedSearchModal.d.ts.map +0 -1
  588. package/dist/advanced-search/ui/AdvancedSearchModalSession.d.ts +0 -16
  589. package/dist/advanced-search/ui/AdvancedSearchModalSession.d.ts.map +0 -1
  590. package/dist/advanced-search/ui/AdvancedSearchSelect.d.ts +0 -9
  591. package/dist/advanced-search/ui/AdvancedSearchSelect.d.ts.map +0 -1
  592. package/dist/advanced-search/ui/AdvancedSearchSelectUI.d.ts +0 -9
  593. package/dist/advanced-search/ui/AdvancedSearchSelectUI.d.ts.map +0 -1
  594. package/dist/advanced-search/ui/index.d.ts +0 -2
  595. package/dist/advanced-search/ui/index.d.ts.map +0 -1
  596. package/dist/chunks/CalendarView-Dm55k0bN.js.map +0 -1
  597. package/dist/chunks/badge-6mXO9BWP.js +0 -65
  598. package/dist/chunks/badge-6mXO9BWP.js.map +0 -1
  599. package/dist/chunks/button-DF21yxVp.js +0 -72
  600. package/dist/chunks/button-DF21yxVp.js.map +0 -1
  601. package/dist/chunks/context-menu-DgvXGCuI.js +0 -532
  602. package/dist/chunks/context-menu-DgvXGCuI.js.map +0 -1
  603. package/dist/chunks/flex-C7njxZ74.js +0 -207
  604. package/dist/chunks/flex-C7njxZ74.js.map +0 -1
  605. package/dist/chunks/grid-dI94AAbi.js.map +0 -1
  606. package/dist/chunks/input-search-Cat4c7SM.js +0 -30
  607. package/dist/chunks/input-search-Cat4c7SM.js.map +0 -1
  608. package/dist/chunks/misc-DeGboAt-.js +0 -309
  609. package/dist/chunks/misc-DeGboAt-.js.map +0 -1
  610. package/dist/chunks/modal-dplfAaER.js.map +0 -1
  611. package/dist/chunks/multi-select-BZ9N6Dal.js +0 -466
  612. package/dist/chunks/multi-select-BZ9N6Dal.js.map +0 -1
  613. package/dist/chunks/picker-lvm82d0A.js +0 -439
  614. package/dist/chunks/picker-lvm82d0A.js.map +0 -1
  615. package/dist/chunks/popover-Bne-Ljbs.js +0 -245
  616. package/dist/chunks/popover-Bne-Ljbs.js.map +0 -1
  617. package/dist/chunks/radio-group-sSnlYjAX.js +0 -125
  618. package/dist/chunks/select-aTGupQan.js +0 -363
  619. package/dist/chunks/select-aTGupQan.js.map +0 -1
  620. package/dist/chunks/separator-B72Aq-6a.js +0 -15
  621. package/dist/chunks/separator-B72Aq-6a.js.map +0 -1
  622. package/storybook-static/assets/CalendarView-Dz8cY1fo.js +0 -1
  623. package/storybook-static/assets/ContextMenu-XS7B8QUC.js +0 -1
  624. package/storybook-static/assets/ContextMenu.stories-Dp2t2BZa.js +0 -37
  625. package/storybook-static/assets/CustomOptionButton-DNd0GDWp.js +0 -1
  626. package/storybook-static/assets/Detail.stories-CXg_w4qM.js +0 -56
  627. package/storybook-static/assets/DisclosureGroup-JNnTj18G.js +0 -2
  628. package/storybook-static/assets/DropdownMenu-xjOtBneA.js +0 -1
  629. package/storybook-static/assets/Flex.stories-CCVNsX23.js +0 -300
  630. package/storybook-static/assets/FlexContainer-BWyPlTMB.js +0 -1
  631. package/storybook-static/assets/FloatingPopover-D6tO24aO.js +0 -1
  632. package/storybook-static/assets/FormattedTableCell-CDaDfaXy.js +0 -15
  633. package/storybook-static/assets/Listbox-3Npc4PI_.js +0 -1
  634. package/storybook-static/assets/Modal-Ddmc8-2-.js +0 -1
  635. package/storybook-static/assets/MultiSelect-BkLCM22R.js +0 -2
  636. package/storybook-static/assets/MultiSelect-DI_UD1B-.css +0 -1
  637. package/storybook-static/assets/NoData-bUonNuRR.js +0 -1
  638. package/storybook-static/assets/OneStepScroller-B_IRz2Rw.js +0 -5
  639. package/storybook-static/assets/Option-fRoOLqLF.js +0 -10
  640. package/storybook-static/assets/OptionButton--hnpJ-88.js +0 -1
  641. package/storybook-static/assets/PickerTriggerActions-BDGEQPvP.js +0 -1
  642. package/storybook-static/assets/Popover-BYO0DlBg.js +0 -45
  643. package/storybook-static/assets/Popover-Byy9_Twt.js +0 -2
  644. package/storybook-static/assets/Popover.stories-8RhemIQg.js +0 -47
  645. package/storybook-static/assets/RadioButton-DMn-soQD.js +0 -1
  646. package/storybook-static/assets/Scrollable-BI3OE8gc.js +0 -1
  647. package/storybook-static/assets/Select-1MNiFkxm.js +0 -12
  648. package/storybook-static/assets/Slider-DbiDvmoV.js +0 -1
  649. package/storybook-static/assets/SliderInput-CzYn9gor.js +0 -2
  650. package/storybook-static/assets/Sortable.stories-DFCzTok0.js +0 -44
  651. package/storybook-static/assets/Tabs.stories-BdZilcp2.js +0 -57
  652. package/storybook-static/assets/TreePickerBase-CmFF9pWE.css +0 -1
  653. package/storybook-static/assets/TreePickerBase-Cu2mneBS.js +0 -76
  654. package/storybook-static/assets/contextMenu-CWGju9qn.js +0 -2
  655. package/storybook-static/assets/iframe-Dyd6jnSv.js +0 -1
  656. package/storybook-static/assets/sortable-CXLU2ip-.js +0 -1
  657. package/storybook-static/assets/usePickerQuery-CaO8hXyH.js +0 -1
  658. package/storybook-static/assets/usePickerTriggerController-DWjrt_q_.js +0 -6
  659. /package/storybook-static/assets/{ui.module-CyEEibCu.js → ui.module-0uniSGT-.js} +0 -0
@@ -1,9 +1,9 @@
1
1
  import { t as e } from "../chunks/ui.module-oRwY3Zli.js";
2
2
  import { n as t } from "../chunks/uiClasses-CQj47jkF.js";
3
- import { d as n, h as r, l as i } from "../chunks/misc-DeGboAt-.js";
4
- import { Children as a, isValidElement as o, useId as s, useMemo as c, useRef as l, useState as u } from "react";
5
- import { cn as d, getRovingFocusTargetIndex as f } from "@ryuzaki13/react-foundation-lib/utils";
6
- import { Fragment as p, jsx as m, jsxs as h } from "react/jsx-runtime";
3
+ import { d as n, h as r, l as i } from "../chunks/misc-Cm_LDrUD.js";
4
+ import { cn as a, getRovingFocusTargetIndex as o } from "@ryuzaki13/react-foundation-lib/utils";
5
+ import { Fragment as s, jsx as c, jsxs as l } from "react/jsx-runtime";
6
+ import { Children as u, isValidElement as d, useId as f, useMemo as p, useRef as m, useState as h } from "react";
7
7
  //#region src/tabs/lib/tabs.ts
8
8
  function g(e) {
9
9
  return e.find((e) => !e.disabled)?.id ?? null;
@@ -19,8 +19,8 @@ function y({ mountStrategy: e, isSelected: t, isVisited: n }) {
19
19
  }
20
20
  //#endregion
21
21
  //#region src/tabs/model/useTabsState.ts
22
- function b({ items: e, value: t, defaultValue: n, onValueChange: r, orientation: i = "horizontal", activationMode: a = "automatic", loop: o = !0 }) {
23
- let d = t !== void 0, p = c(() => v(e), [e]), m = p[0]?.id ?? null, [h, g] = u(() => _(e, n)), [y, b] = u(() => _(e, t ?? n)), x = _(e, t ?? n), [S, C] = u(() => x ? /* @__PURE__ */ new Set([x]) : /* @__PURE__ */ new Set()), w = s(), T = l({}), E = _(e, d ? t : h), D = _(e, y) ?? E ?? m, O = c(() => {
22
+ function b({ items: e, value: t, defaultValue: n, onValueChange: r, orientation: i = "horizontal", activationMode: a = "automatic", loop: s = !0 }) {
23
+ let c = t !== void 0, l = p(() => v(e), [e]), u = l[0]?.id ?? null, [d, g] = h(() => _(e, n)), [y, b] = h(() => _(e, t ?? n)), x = _(e, t ?? n), [S, C] = h(() => x ? /* @__PURE__ */ new Set([x]) : /* @__PURE__ */ new Set()), w = f(), T = m({}), E = _(e, c ? t : d), D = _(e, y) ?? E ?? u, O = p(() => {
24
24
  if (!E || S.has(E)) return S;
25
25
  let e = new Set(S);
26
26
  return e.add(E), e;
@@ -30,25 +30,25 @@ function b({ items: e, value: t, defaultValue: n, onValueChange: r, orientation:
30
30
  if (e.has(n)) return e;
31
31
  let t = new Set(e);
32
32
  return t.add(n), t;
33
- }), d || g(n), r?.(n));
33
+ }), c || g(n), r?.(n));
34
34
  }, A = (e) => {
35
35
  T.current[e]?.focus();
36
36
  }, j = (e) => {
37
- if (p.length < 2) return;
38
- let t = Math.max(0, p.findIndex((e) => e.id === (D ?? E ?? m))), n = f({
37
+ if (l.length < 2) return;
38
+ let t = Math.max(0, l.findIndex((e) => e.id === (D ?? E ?? u))), n = o({
39
39
  currentIndex: t,
40
- itemCount: p.length,
40
+ itemCount: l.length,
41
41
  key: e.key,
42
42
  orientation: i,
43
- wrap: o
43
+ wrap: s
44
44
  });
45
45
  if (n === null) return;
46
46
  e.preventDefault();
47
- let r = p[n]?.id;
47
+ let r = l[n]?.id;
48
48
  r && (b(r), A(r), a === "automatic" && k(r));
49
49
  }, M = (e) => {
50
50
  let t = e.relatedTarget;
51
- t instanceof Node && e.currentTarget.contains(t) || b(E ?? m);
51
+ t instanceof Node && e.currentTarget.contains(t) || b(E ?? u);
52
52
  }, N = (e) => `${w}-tab-${e}`, P = (e) => `${w}-panel-${e}`;
53
53
  return {
54
54
  activationMode: a,
@@ -99,28 +99,28 @@ var x = {
99
99
  };
100
100
  //#endregion
101
101
  //#region src/tabs/ui/TabsLoadingState.tsx
102
- function S({ containerClassName: e, tabListClassName: t, panelsClassName: n, panelClassName: i, panelBodyClassName: a, loadingText: o }) {
103
- return /* @__PURE__ */ h("div", {
102
+ function S({ containerClassName: e, tabListClassName: t, panelsClassName: n, panelClassName: i, panelBodyClassName: o, loadingText: s }) {
103
+ return /* @__PURE__ */ l("div", {
104
104
  className: e,
105
- children: [/* @__PURE__ */ m("div", {
105
+ children: [/* @__PURE__ */ c("div", {
106
106
  className: t,
107
107
  "aria-hidden": "true",
108
- children: /* @__PURE__ */ m("button", {
108
+ children: /* @__PURE__ */ c("button", {
109
109
  type: "button",
110
110
  disabled: !0,
111
111
  "data-disabled": "",
112
- className: d(x.tab, "skeletonLine"),
112
+ className: a(x.tab, "skeletonLine"),
113
113
  children: "Загрузка..."
114
114
  })
115
- }), /* @__PURE__ */ m("div", {
115
+ }), /* @__PURE__ */ c("div", {
116
116
  className: n,
117
117
  "aria-busy": "true",
118
- children: /* @__PURE__ */ m("div", {
118
+ children: /* @__PURE__ */ c("div", {
119
119
  className: i,
120
- children: /* @__PURE__ */ m("div", {
121
- className: a,
122
- children: /* @__PURE__ */ m(r, {
123
- text: o,
120
+ children: /* @__PURE__ */ c("div", {
121
+ className: o,
122
+ children: /* @__PURE__ */ c(r, {
123
+ text: s,
124
124
  className: "radiusSm"
125
125
  })
126
126
  })
@@ -131,15 +131,15 @@ function S({ containerClassName: e, tabListClassName: t, panelsClassName: n, pan
131
131
  //#endregion
132
132
  //#region src/tabs/ui/TabsNoDataState.tsx
133
133
  function C({ containerClassName: e, panelsClassName: t, panelClassName: r, panelBodyClassName: i }) {
134
- return /* @__PURE__ */ m("div", {
134
+ return /* @__PURE__ */ c("div", {
135
135
  className: e,
136
- children: /* @__PURE__ */ m("div", {
136
+ children: /* @__PURE__ */ c("div", {
137
137
  className: t,
138
- children: /* @__PURE__ */ m("div", {
138
+ children: /* @__PURE__ */ c("div", {
139
139
  className: r,
140
- children: /* @__PURE__ */ m("div", {
140
+ children: /* @__PURE__ */ c("div", {
141
141
  className: i,
142
- children: /* @__PURE__ */ m(n, { className: "radiusSm" })
142
+ children: /* @__PURE__ */ c(n, { className: "radiusSm" })
143
143
  })
144
144
  })
145
145
  })
@@ -148,84 +148,91 @@ function C({ containerClassName: e, panelsClassName: t, panelClassName: r, panel
148
148
  //#endregion
149
149
  //#region src/tabs/ui/TabsPanel.tsx
150
150
  function w({ tabId: e, isSelected: t, className: n, getTabElementId: r, getPanelElementId: i, children: a }) {
151
- return /* @__PURE__ */ m("div", {
151
+ return /* @__PURE__ */ c("div", {
152
152
  role: "tabpanel",
153
153
  id: i(e),
154
154
  "aria-labelledby": r(e),
155
155
  hidden: !t,
156
+ tabIndex: t ? 0 : -1,
156
157
  className: n,
157
158
  children: a
158
159
  });
159
160
  }
160
161
  //#endregion
161
162
  //#region src/tabs/ui/TabsTabList.tsx
162
- function T({ items: e, state: t, className: n, ariaLabel: r, ariaLabelledBy: a }) {
163
- return /* @__PURE__ */ m("div", {
163
+ function T({ items: e, state: t, className: n, ariaLabel: r, ariaLabelledBy: o }) {
164
+ let s = /* @__PURE__ */ c("div", {
165
+ "data-ui": "tabs-tablist",
164
166
  className: n,
165
167
  role: "tablist",
166
168
  "aria-orientation": t.orientation,
167
- "aria-label": r,
168
- "aria-labelledby": a,
169
+ "aria-label": o ? void 0 : r ?? "Вкладки",
170
+ "aria-labelledby": o,
171
+ "aria-live": "off",
169
172
  onKeyDown: t.onTabListKeyDown,
170
173
  onBlur: t.onTabListBlur,
171
- children: ((e) => t.orientation === "horizontal" ? /* @__PURE__ */ m(i, { children: e }) : /* @__PURE__ */ m(p, { children: e }))(e.map((e) => /* @__PURE__ */ m("button", {
174
+ children: e.map((e) => /* @__PURE__ */ c("button", {
172
175
  ...t.getTabButtonProps(e),
173
176
  "data-ui": "tabs-tab",
174
177
  "data-action": "select-tab",
175
- className: d(x.tab, "textWrap", e.id === t.selectedTabId && x.selected),
178
+ className: a(x.tab, "textWrap", e.id === t.selectedTabId && x.selected),
176
179
  children: e.title
177
- }, e.id)))
180
+ }, e.id))
178
181
  });
182
+ return t.orientation === "horizontal" ? /* @__PURE__ */ c(i, {
183
+ itemSelector: "[role='tab']",
184
+ children: s
185
+ }) : s;
179
186
  }
180
187
  //#endregion
181
188
  //#region src/tabs/ui/TabsBox.tsx
182
- function E({ items: n, value: r, defaultValue: i, onValueChange: a, className: o, isLoading: s, loadingText: c, orientation: l = "horizontal", activationMode: u = "automatic", mountStrategy: f = "unmount", loop: p = !0, tone: g = "primary", clean: _ = !1, "aria-label": v, "aria-labelledby": E }) {
189
+ function E({ items: n, value: r, defaultValue: i, onValueChange: o, className: s, isLoading: u, loadingText: d, orientation: f = "horizontal", activationMode: p = "automatic", mountStrategy: m = "unmount", loop: h = !0, tone: g = "primary", clean: _ = !1, "aria-label": v, "aria-labelledby": E }) {
183
190
  let D = b({
184
191
  items: n,
185
192
  value: r,
186
193
  defaultValue: i,
187
- onValueChange: a,
188
- orientation: l,
189
- activationMode: u,
190
- loop: p
191
- }), O = d(x.tabsContainer, _ ? x.clean : e.uiFilledPanel, x[l], t(g), o), k = x.tabs, A = d(x.panels, x.panelScrollable, "scrollable overscroll"), j = x.panel, M = x.panelBody;
192
- return s ? /* @__PURE__ */ m(S, {
194
+ onValueChange: o,
195
+ orientation: f,
196
+ activationMode: p,
197
+ loop: h
198
+ }), O = a(x.tabsContainer, _ ? x.clean : e.uiFilledPanel, x[f], t(g), s), k = x.tabs, A = a(x.panels, x.panelScrollable, "scrollable overscroll"), j = x.panel, M = x.panelBody;
199
+ return u ? /* @__PURE__ */ c(S, {
193
200
  containerClassName: O,
194
201
  tabListClassName: k,
195
202
  panelsClassName: A,
196
203
  panelClassName: j,
197
204
  panelBodyClassName: M,
198
- loadingText: c
199
- }) : n.length ? /* @__PURE__ */ h("div", {
205
+ loadingText: d
206
+ }) : n.length ? /* @__PURE__ */ l("div", {
200
207
  className: O,
201
- children: [/* @__PURE__ */ m(T, {
208
+ children: [/* @__PURE__ */ c(T, {
202
209
  items: n,
203
210
  state: D,
204
211
  className: k,
205
212
  ariaLabel: v,
206
213
  ariaLabelledBy: E
207
- }), /* @__PURE__ */ m("div", {
214
+ }), /* @__PURE__ */ c("div", {
208
215
  className: A,
209
216
  children: n.map((e) => {
210
- let t = e.id === D.selectedTabId;
211
- return y({
212
- mountStrategy: f,
217
+ let t = e.id === D.selectedTabId, n = y({
218
+ mountStrategy: m,
213
219
  isSelected: t,
214
220
  isVisited: D.isVisited(e.id)
215
- }) ? /* @__PURE__ */ m(w, {
221
+ });
222
+ return /* @__PURE__ */ c(w, {
216
223
  tabId: e.id,
217
224
  isSelected: t,
218
225
  className: j,
219
226
  getTabElementId: D.getTabElementId,
220
227
  getPanelElementId: D.getPanelElementId,
221
- children: /* @__PURE__ */ m("div", {
228
+ children: n ? /* @__PURE__ */ c("div", {
222
229
  className: M,
223
230
  children: e.content
224
- })
225
- }, e.id) : null;
231
+ }) : null
232
+ }, e.id);
226
233
  })
227
234
  })]
228
- }) : /* @__PURE__ */ m(C, {
235
+ }) : /* @__PURE__ */ c(C, {
229
236
  containerClassName: O,
230
237
  panelsClassName: A,
231
238
  panelClassName: j,
@@ -248,41 +255,41 @@ function j(e) {
248
255
  return null;
249
256
  }
250
257
  function M(e, t) {
251
- return o(e) && j(e) === t;
258
+ return d(e) && j(e) === t;
252
259
  }
253
260
  function N({ children: e }) {
254
- return /* @__PURE__ */ m(p, { children: e });
261
+ return /* @__PURE__ */ c(s, { children: e });
255
262
  }
256
263
  N.displayName = D;
257
264
  function P({ children: e }) {
258
- return /* @__PURE__ */ m(p, { children: e });
265
+ return /* @__PURE__ */ c(s, { children: e });
259
266
  }
260
267
  P.displayName = O;
261
268
  function F({ children: e }) {
262
- return /* @__PURE__ */ m(p, { children: e });
269
+ return /* @__PURE__ */ c(s, { children: e });
263
270
  }
264
271
  F.displayName = k;
265
272
  function I({ children: e }) {
266
- return /* @__PURE__ */ m(p, { children: e });
273
+ return /* @__PURE__ */ c(s, { children: e });
267
274
  }
268
275
  I.displayName = A;
269
276
  function L(e, t) {
270
277
  let n = null, r = null, i = null;
271
- for (let s of a.toArray(e)) {
272
- if (!o(s)) throw Error(`TabsLayout.Tab "${t}" поддерживает только дочерние элементы TabsLayout.Toolbar, TabsLayout.Content и TabsLayout.Footer.`);
273
- if (M(s, O)) {
278
+ for (let a of u.toArray(e)) {
279
+ if (!d(a)) throw Error(`TabsLayout.Tab "${t}" поддерживает только дочерние элементы TabsLayout.Toolbar, TabsLayout.Content и TabsLayout.Footer.`);
280
+ if (M(a, O)) {
274
281
  if (n) throw Error(`TabsLayout.Tab "${t}" содержит более одного блока TabsLayout.Toolbar.`);
275
- n = s.props;
282
+ n = a.props;
276
283
  continue;
277
284
  }
278
- if (M(s, k)) {
285
+ if (M(a, k)) {
279
286
  if (r) throw Error(`TabsLayout.Tab "${t}" содержит более одного блока TabsLayout.Content.`);
280
- r = s.props;
287
+ r = a.props;
281
288
  continue;
282
289
  }
283
- if (M(s, A)) {
290
+ if (M(a, A)) {
284
291
  if (i) throw Error(`TabsLayout.Tab "${t}" содержит более одного блока TabsLayout.Footer.`);
285
- i = s.props;
292
+ i = a.props;
286
293
  continue;
287
294
  }
288
295
  throw Error(`TabsLayout.Tab "${t}" поддерживает только дочерние элементы TabsLayout.Toolbar, TabsLayout.Content и TabsLayout.Footer.`);
@@ -295,7 +302,7 @@ function L(e, t) {
295
302
  };
296
303
  }
297
304
  function R(e) {
298
- return a.toArray(e).map((e) => {
305
+ return u.toArray(e).map((e) => {
299
306
  if (!M(e, D)) throw Error("TabsLayout принимает только дочерние элементы TabsLayout.Tab.");
300
307
  return {
301
308
  id: e.props.id,
@@ -305,71 +312,63 @@ function R(e) {
305
312
  };
306
313
  });
307
314
  }
308
- var z = ({ children: n, value: r, defaultValue: i, onValueChange: a, className: o, orientation: s = "horizontal", activationMode: l = "manual", mountStrategy: u = "lazy", loop: f = !0, tone: p = "primary", clean: g = !1, "aria-label": _, "aria-labelledby": v }) => {
309
- let S = c(() => R(n), [n]), C = b({
315
+ function z({ children: n, value: r, defaultValue: i, onValueChange: o, className: s, orientation: u = "horizontal", activationMode: d = "manual", mountStrategy: f = "lazy", loop: m = !0, tone: h = "primary", clean: g = !1, "aria-label": _, "aria-labelledby": v }) {
316
+ let S = p(() => R(n), [n]), C = b({
310
317
  items: S,
311
318
  value: r,
312
319
  defaultValue: i,
313
- onValueChange: a,
314
- orientation: s,
315
- activationMode: l,
316
- loop: f
317
- }), E = d(x.tabsContainer, g ? x.clean : e.uiFilledPanel, x[s], t(p), o), D = d(x.panels, x.layoutPanels);
318
- return /* @__PURE__ */ h("div", {
320
+ onValueChange: o,
321
+ orientation: u,
322
+ activationMode: d,
323
+ loop: m
324
+ }), E = a(x.tabsContainer, g ? x.clean : e.uiFilledPanel, x[u], t(h), s), D = a(x.panels, x.layoutPanels);
325
+ return /* @__PURE__ */ l("div", {
319
326
  className: E,
320
- children: [/* @__PURE__ */ m(T, {
327
+ children: [/* @__PURE__ */ c(T, {
321
328
  items: S,
322
329
  state: C,
323
330
  className: x.tabs,
324
331
  ariaLabel: _,
325
332
  ariaLabelledBy: v
326
- }), /* @__PURE__ */ m("div", {
333
+ }), /* @__PURE__ */ c("div", {
327
334
  className: D,
328
335
  children: S.map((e) => {
329
- let t = e.id === C.selectedTabId;
330
- if (!y({
331
- mountStrategy: u,
336
+ let t = e.id === C.selectedTabId, n = y({
337
+ mountStrategy: f,
332
338
  isSelected: t,
333
339
  isVisited: C.isVisited(e.id)
334
- })) return null;
335
- let n = `${e.toolbar ? "auto " : ""}minmax(0, 1fr)${e.footer ? " auto" : ""}`;
336
- return /* @__PURE__ */ m(w, {
340
+ }), r = `${e.toolbar ? "auto " : ""}minmax(0, 1fr)${e.footer ? " auto" : ""}`;
341
+ return /* @__PURE__ */ c(w, {
337
342
  tabId: e.id,
338
343
  isSelected: t,
339
344
  className: x.panel,
340
345
  getTabElementId: C.getTabElementId,
341
346
  getPanelElementId: C.getPanelElementId,
342
- children: /* @__PURE__ */ h("div", {
347
+ children: n ? /* @__PURE__ */ l("div", {
343
348
  className: x.layoutPanel,
344
- style: { gridTemplateRows: n },
349
+ style: { gridTemplateRows: r },
345
350
  children: [
346
- e.toolbar ? /* @__PURE__ */ m("div", {
347
- className: d(x.layoutSection, e.toolbar.className),
351
+ e.toolbar ? /* @__PURE__ */ c("div", {
352
+ className: a(x.layoutSection, e.toolbar.className),
348
353
  children: e.toolbar.children
349
354
  }) : null,
350
- /* @__PURE__ */ m("div", {
351
- className: d(x.layoutSection, x.layoutContent, e.content.className),
355
+ /* @__PURE__ */ c("div", {
356
+ className: a(x.layoutSection, x.layoutContent, e.content.className),
352
357
  children: e.content.children
353
358
  }),
354
- e.footer ? /* @__PURE__ */ m("div", {
355
- className: d(x.layoutSection, e.footer.className),
359
+ e.footer ? /* @__PURE__ */ c("div", {
360
+ className: a(x.layoutSection, e.footer.className),
356
361
  children: e.footer.children
357
362
  }) : null
358
363
  ]
359
- })
364
+ }) : null
360
365
  }, e.id);
361
366
  })
362
367
  })]
363
368
  });
364
- };
365
- z.displayName = "TabsLayout";
366
- var B = Object.assign(z, {
367
- Tab: N,
368
- Toolbar: P,
369
- Content: F,
370
- Footer: I
371
- });
369
+ }
370
+ z.Tab = N, z.Toolbar = P, z.Content = F, z.Footer = I;
372
371
  //#endregion
373
- export { E as TabsBox, B as TabsLayout };
372
+ export { E as TabsBox, z as TabsLayout };
374
373
 
375
374
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../src/tabs/lib/tabs.ts","../../src/tabs/model/useTabsState.ts","../../src/tabs/ui/Tabs.module.scss","../../src/tabs/ui/TabsLoadingState.tsx","../../src/tabs/ui/TabsNoDataState.tsx","../../src/tabs/ui/TabsPanel.tsx","../../src/tabs/ui/TabsTabList.tsx","../../src/tabs/ui/TabsBox.tsx","../../src/tabs/ui/TabsLayout.tsx"],"sourcesContent":["import type { TabsDescriptor, TabsMountStrategy } from \"../model/types\";\n\n/**\n * Возвращает идентификатор первой доступной вкладки.\n */\nexport function getFirstEnabledTabId(items: TabsDescriptor[]) {\n\treturn items.find((item) => !item.disabled)?.id ?? null;\n}\n\n/**\n * Возвращает безопасный идентификатор вкладки.\n * Если переданный `candidate` недоступен, выбирается первая доступная вкладка.\n */\nexport function getSafeTabId(items: TabsDescriptor[], candidate: string | undefined | null) {\n\tif (!candidate) {\n\t\treturn getFirstEnabledTabId(items);\n\t}\n\n\tconst matchedItem = items.find((item) => item.id === candidate && !item.disabled);\n\treturn matchedItem?.id ?? getFirstEnabledTabId(items);\n}\n\n/**\n * Возвращает только доступные вкладки для roving focus и клавиатурной навигации.\n */\nexport function getEnabledTabs(items: TabsDescriptor[]) {\n\treturn items.filter((item) => !item.disabled);\n}\n\ninterface ShouldMountTabPanelOptions {\n\tmountStrategy: TabsMountStrategy;\n\tisSelected: boolean;\n\tisVisited: boolean;\n}\n\n/**\n * Определяет, должна ли панель оставаться смонтированной с учётом стратегии монтирования.\n */\nexport function shouldMountTabPanel({ mountStrategy, isSelected, isVisited }: ShouldMountTabPanelOptions) {\n\treturn mountStrategy === \"keep-mounted\" || isSelected || (mountStrategy === \"lazy\" && isVisited);\n}\n","import type React from \"react\";\nimport { FocusEvent, KeyboardEvent, useId, useMemo, useRef, useState } from \"react\";\n\nimport { getRovingFocusTargetIndex } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport { getEnabledTabs, getSafeTabId } from \"../lib/tabs\";\n\nimport type { TabsActivationMode, TabsDescriptor, TabsOrientation } from \"./types\";\n\ninterface UseTabsStateOptions {\n\titems: TabsDescriptor[];\n\tvalue?: string;\n\tdefaultValue?: string;\n\tonValueChange?: (value: string) => void;\n\torientation?: TabsOrientation;\n\tactivationMode?: TabsActivationMode;\n\tloop?: boolean;\n}\n\n/**\n * Публичная часть модели, необходимая визуальным подкомпонентам tabs.\n */\nexport interface TabsStateModel {\n\tactivationMode: TabsActivationMode;\n\torientation: TabsOrientation;\n\tselectedTabId: string | null;\n\ttabbableTabId: string | null;\n\tonTabListKeyDown: (event: KeyboardEvent<HTMLDivElement>) => void;\n\tonTabListBlur: (event: FocusEvent<HTMLDivElement>) => void;\n\tgetTabElementId: (tabId: string) => string;\n\tgetPanelElementId: (tabId: string) => string;\n\tgetTabButtonProps: (item: TabsDescriptor) => React.ButtonHTMLAttributes<HTMLButtonElement> & {\n\t\tref: (node: HTMLButtonElement | null) => void;\n\t};\n\tisVisited: (tabId: string) => boolean;\n}\n\n/**\n * Инкапсулирует state, a11y-связки и клавиатурную навигацию для всех оболочек tabs.\n */\nexport function useTabsState({\n\titems,\n\tvalue,\n\tdefaultValue,\n\tonValueChange,\n\torientation = \"horizontal\",\n\tactivationMode = \"automatic\",\n\tloop = true\n}: UseTabsStateOptions): TabsStateModel {\n\tconst isControlled = value !== undefined;\n\tconst enabledTabs = useMemo(() => getEnabledTabs(items), [items]);\n\tconst fallbackTabId = enabledTabs[0]?.id ?? null;\n\tconst [internalValue, setInternalValue] = useState(() => getSafeTabId(items, defaultValue));\n\tconst [focusedTabId, setFocusedTabId] = useState<string | null>(() => getSafeTabId(items, value ?? defaultValue));\n\tconst initialVisitedTabId = getSafeTabId(items, value ?? defaultValue);\n\tconst [visitedTabsState, setVisitedTabsState] = useState<Set<string>>(() =>\n\t\tinitialVisitedTabId ? new Set([initialVisitedTabId]) : new Set()\n\t);\n\tconst tabsId = useId();\n\tconst tabRefs = useRef<Record<string, HTMLButtonElement | null>>({});\n\n\tconst selectedTabId = getSafeTabId(items, isControlled ? value : internalValue);\n\tconst nextTabbableTabId = getSafeTabId(items, focusedTabId) ?? selectedTabId ?? fallbackTabId;\n\tconst visitedTabs = useMemo(() => {\n\t\tif (!selectedTabId || visitedTabsState.has(selectedTabId)) {\n\t\t\treturn visitedTabsState;\n\t\t}\n\n\t\tconst next = new Set(visitedTabsState);\n\t\tnext.add(selectedTabId);\n\t\treturn next;\n\t}, [selectedTabId, visitedTabsState]);\n\n\tconst activateTab = (nextTabId: string) => {\n\t\tconst safeNextTabId = getSafeTabId(items, nextTabId);\n\t\tif (!safeNextTabId) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetVisitedTabsState((prev) => {\n\t\t\tif (prev.has(safeNextTabId)) {\n\t\t\t\treturn prev;\n\t\t\t}\n\n\t\t\tconst next = new Set(prev);\n\t\t\tnext.add(safeNextTabId);\n\t\t\treturn next;\n\t\t});\n\n\t\tif (!isControlled) {\n\t\t\tsetInternalValue(safeNextTabId);\n\t\t}\n\n\t\tonValueChange?.(safeNextTabId);\n\t};\n\n\tconst focusTab = (nextTabId: string) => {\n\t\ttabRefs.current[nextTabId]?.focus();\n\t};\n\n\tconst onTabListKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n\t\tif (enabledTabs.length < 2) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst activeFocusIndex = Math.max(\n\t\t\t0,\n\t\t\tenabledTabs.findIndex((item) => item.id === (nextTabbableTabId ?? selectedTabId ?? fallbackTabId))\n\t\t);\n\t\tconst nextEnabledIndex = getRovingFocusTargetIndex({\n\t\t\tcurrentIndex: activeFocusIndex,\n\t\t\titemCount: enabledTabs.length,\n\t\t\tkey: event.key,\n\t\t\torientation,\n\t\t\twrap: loop\n\t\t});\n\n\t\tif (nextEnabledIndex === null) {\n\t\t\treturn;\n\t\t}\n\n\t\tevent.preventDefault();\n\n\t\tconst nextTabId = enabledTabs[nextEnabledIndex]?.id;\n\t\tif (!nextTabId) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetFocusedTabId(nextTabId);\n\t\tfocusTab(nextTabId);\n\n\t\tif (activationMode === \"automatic\") {\n\t\t\tactivateTab(nextTabId);\n\t\t}\n\t};\n\n\tconst onTabListBlur = (event: FocusEvent<HTMLDivElement>) => {\n\t\tconst nextTarget = event.relatedTarget;\n\n\t\tif (nextTarget instanceof Node && event.currentTarget.contains(nextTarget)) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetFocusedTabId(selectedTabId ?? fallbackTabId);\n\t};\n\n\tconst getTabElementId = (tabId: string) => `${tabsId}-tab-${tabId}`;\n\tconst getPanelElementId = (tabId: string) => `${tabsId}-panel-${tabId}`;\n\n\tconst getTabButtonProps = (item: TabsDescriptor) => {\n\t\tconst isSelected = item.id === selectedTabId;\n\t\tconst isTabbable = item.id === nextTabbableTabId;\n\n\t\treturn {\n\t\t\tref: (node: HTMLButtonElement | null) => {\n\t\t\t\ttabRefs.current[item.id] = node;\n\t\t\t},\n\t\t\ttype: \"button\" as const,\n\t\t\trole: \"tab\" as const,\n\t\t\tid: getTabElementId(item.id),\n\t\t\tdisabled: item.disabled,\n\t\t\t\"aria-selected\": isSelected,\n\t\t\t\"aria-controls\": getPanelElementId(item.id),\n\t\t\t\"aria-disabled\": item.disabled || undefined,\n\t\t\ttabIndex: item.disabled ? -1 : isTabbable ? 0 : -1,\n\t\t\tonFocus: () => setFocusedTabId(item.id),\n\t\t\tonClick: () => activateTab(item.id)\n\t\t};\n\t};\n\n\treturn {\n\t\tactivationMode,\n\t\torientation,\n\t\tselectedTabId,\n\t\ttabbableTabId: nextTabbableTabId,\n\t\tonTabListKeyDown,\n\t\tonTabListBlur,\n\t\tgetTabElementId,\n\t\tgetPanelElementId,\n\t\tgetTabButtonProps,\n\t\tisVisited: (tabId: string) => visitedTabs.has(tabId)\n\t};\n}\n",".tabsContainer {\n\t--tabs-border: var(--border);\n\t--tabs-panel-padding: var(--space-md);\n\n\tdisplay: grid;\n\tmin-width: 0;\n\tmin-height: 0;\n\theight: 100%;\n\toverflow: hidden;\n\n\t&.clean {\n\t\t--tabs-border: none;\n\t\t--tabs-panel-padding: 0;\n\t}\n}\n\n.tabs {\n\tdisplay: flex;\n\tmin-width: 0;\n\n\tborder: var(--tabs-border);\n\tbackground-color: var(--surface-1);\n}\n\n.panels {\n\tmin-width: 0;\n\tmin-height: 0;\n\tborder: var(--tabs-border);\n}\n\n.horizontal {\n\tgrid-template-rows: auto minmax(0, 1fr);\n\n\t.tabs {\n\t\tpadding: var(--space-sm);\n\n\t\tborder-top-left-radius: var(--radius-sm);\n\t\tborder-top-right-radius: var(--radius-sm);\n\t}\n\n\t.panels {\n\t\tborder-top: none;\n\n\t\tborder-bottom-left-radius: var(--radius-sm);\n\t\tborder-bottom-right-radius: var(--radius-sm);\n\t}\n\n\t.tab {\n\t\t&::before {\n\t\t\tcontent: \"\";\n\t\t\tposition: absolute;\n\t\t\tbottom: 0;\n\t\t\tleft: 0;\n\t\t\tright: 0;\n\t\t\tborder-bottom: var(--focus-width) solid var(--decoration-color);\n\t\t}\n\t}\n}\n\n.vertical {\n\tgrid-template-columns: 10em minmax(0, 1fr);\n\tmin-height: 0;\n\n\t.tabs {\n\t\tflex-direction: column;\n\n\t\tborder-top-left-radius: var(--radius-sm);\n\t\tborder-bottom-left-radius: var(--radius-sm);\n\t}\n\n\t.panels {\n\t\tborder-left: none;\n\n\t\tborder-top-right-radius: var(--radius-sm);\n\t\tborder-bottom-right-radius: var(--radius-sm);\n\t}\n\n\t// .tab {\n\t// \t&::before {\n\t// \t\tcontent: \"\";\n\t// \t\tposition: absolute;\n\t// \t\ttop: 0;\n\t// \t\tbottom: 0;\n\t// \t\tright: 0;\n\t// \t\tborder-right: var(--focus-width) solid var(--decoration-color);\n\t// \t}\n\t// }\n}\n\n.panelScrollable {\n\toverflow: auto;\n}\n\n.tab {\n\t--decoration-color: transparent;\n\n\ttext-align: left;\n\n\tposition: relative;\n\tmin-height: var(--control-height);\n\tpadding: var(--space-xs) var(--space-md);\n\tcolor: var(--content-2);\n\tborder-radius: var(--radius-sm);\n\tfont-weight: 700;\n\tfont-variation-settings: \"wght\" 700;\n\n\tflex-shrink: 0;\n\n\t&:hover {\n\t\tcursor: pointer;\n\t\tcolor: var(--accent-text);\n\t\t// background-color: var(--accent-fill);\n\t\t--decoration-color: var(--accent-border);\n\t}\n\n\t&.selected {\n\t\tcolor: var(--brand-text);\n\t\t// color: var(--content-0);\n\t\t// background-color: var(--brand-fill);\n\t\t--decoration-color: var(--brand-border);\n\t}\n\n\t&:disabled {\n\t\tcursor: not-allowed;\n\t\tcolor: var(--content-2);\n\t\tbackground-color: var(--surface-2);\n\t}\n}\n\n.panel {\n\tpadding: 0;\n\tmin-width: 0;\n\tmin-height: 0;\n\theight: 100%;\n}\n\n.panelBody {\n\tmin-width: 0;\n\tmin-height: 0;\n\n\theight: 100%;\n\tpadding: var(--tabs-panel-padding);\n}\n\n.layoutPanels {\n\toverflow: hidden;\n}\n\n.layoutPanel {\n\tdisplay: grid;\n\tgap: var(--space-md);\n\tmin-width: 0;\n\tmin-height: 0;\n\theight: 100%;\n\tpadding: var(--tabs-panel-padding);\n}\n\n.layoutSection {\n\tmin-width: 0;\n}\n\n.layoutContent {\n\tmin-height: 0;\n}\n","import { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport { LoadingMessage } from \"../../misc\";\n\nimport styles from \"./Tabs.module.scss\";\n\ninterface TabsLoadingStateProps {\n\tcontainerClassName: string;\n\ttabListClassName: string;\n\tpanelsClassName: string;\n\tpanelClassName: string;\n\tpanelBodyClassName: string;\n\tloadingText?: string;\n}\n\n/**\n * Служебное loading-состояние для `TabsBox`.\n */\nexport function TabsLoadingState({\n\tcontainerClassName,\n\ttabListClassName,\n\tpanelsClassName,\n\tpanelClassName,\n\tpanelBodyClassName,\n\tloadingText\n}: TabsLoadingStateProps) {\n\treturn (\n\t\t<div className={containerClassName}>\n\t\t\t<div className={tabListClassName} aria-hidden=\"true\">\n\t\t\t\t<button type=\"button\" disabled data-disabled=\"\" className={cn(styles.tab, \"skeletonLine\")}>\n\t\t\t\t\tЗагрузка...\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t\t<div className={panelsClassName} aria-busy=\"true\">\n\t\t\t\t<div className={panelClassName}>\n\t\t\t\t\t<div className={panelBodyClassName}>\n\t\t\t\t\t\t<LoadingMessage text={loadingText} className=\"radiusSm\" />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n","import { NoData } from \"../../misc\";\n\ninterface TabsNoDataStateProps {\n\tcontainerClassName: string;\n\tpanelsClassName: string;\n\tpanelClassName: string;\n\tpanelBodyClassName: string;\n}\n\n/**\n * Служебное empty-состояние для `TabsBox`.\n */\nexport function TabsNoDataState({ containerClassName, panelsClassName, panelClassName, panelBodyClassName }: TabsNoDataStateProps) {\n\treturn (\n\t\t<div className={containerClassName}>\n\t\t\t<div className={panelsClassName}>\n\t\t\t\t<div className={panelClassName}>\n\t\t\t\t\t<div className={panelBodyClassName}>\n\t\t\t\t\t\t<NoData className=\"radiusSm\" />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n","import React from \"react\";\n\n/**\n * Унифицированная ARIA-обёртка для содержимого активной панели tabs.\n */\ninterface TabsPanelProps {\n\ttabId: string;\n\tisSelected: boolean;\n\tclassName?: string;\n\tgetTabElementId: (tabId: string) => string;\n\tgetPanelElementId: (tabId: string) => string;\n\tchildren: React.ReactNode;\n}\n\nexport function TabsPanel({ tabId, isSelected, className, getTabElementId, getPanelElementId, children }: TabsPanelProps) {\n\treturn (\n\t\t<div\n\t\t\trole=\"tabpanel\"\n\t\t\tid={getPanelElementId(tabId)}\n\t\t\taria-labelledby={getTabElementId(tabId)}\n\t\t\thidden={!isSelected}\n\t\t\tclassName={className}>\n\t\t\t{children}\n\t\t</div>\n\t);\n}\n","import { ReactNode } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport { OneStepScroller } from \"../../misc\";\n\nimport styles from \"./Tabs.module.scss\";\n\nimport type { TabsDescriptor } from \"../model/types\";\nimport type { TabsStateModel } from \"../model/useTabsState\";\n\n/**\n * Рендерит tablist и кнопки вкладок поверх общей модели tabs.\n */\ninterface TabsTabListProps {\n\titems: TabsDescriptor[];\n\tstate: TabsStateModel;\n\tclassName?: string;\n\tariaLabel?: string;\n\tariaLabelledBy?: string;\n}\n\nexport function TabsTabList({ items, state, className, ariaLabel, ariaLabelledBy }: TabsTabListProps) {\n\tconst wrapItems = (children: ReactNode) => {\n\t\tif (state.orientation === \"horizontal\") {\n\t\t\treturn <OneStepScroller>{children}</OneStepScroller>;\n\t\t}\n\n\t\treturn <>{children}</>;\n\t};\n\n\treturn (\n\t\t<div\n\t\t\tclassName={className}\n\t\t\trole=\"tablist\"\n\t\t\taria-orientation={state.orientation}\n\t\t\taria-label={ariaLabel}\n\t\t\taria-labelledby={ariaLabelledBy}\n\t\t\tonKeyDown={state.onTabListKeyDown}\n\t\t\tonBlur={state.onTabListBlur}>\n\t\t\t{wrapItems(\n\t\t\t\titems.map((item) => (\n\t\t\t\t\t<button\n\t\t\t\t\t\tkey={item.id}\n\t\t\t\t\t\t{...state.getTabButtonProps(item)}\n\t\t\t\t\t\tdata-ui=\"tabs-tab\"\n\t\t\t\t\t\tdata-action=\"select-tab\"\n\t\t\t\t\t\tclassName={cn(styles.tab, \"textWrap\", item.id === state.selectedTabId && styles.selected)}>\n\t\t\t\t\t\t{item.title}\n\t\t\t\t\t</button>\n\t\t\t\t))\n\t\t\t)}\n\t\t</div>\n\t);\n}\n","import { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport uiStyles from \"../../ui.module.scss\";\nimport { getUiPanelToneClassName } from \"../../uiClasses\";\nimport { shouldMountTabPanel } from \"../lib/tabs\";\nimport { TabsBoxProps } from \"../model/types\";\nimport { useTabsState } from \"../model/useTabsState\";\n\nimport styles from \"./Tabs.module.scss\";\nimport { TabsLoadingState } from \"./TabsLoadingState\";\nimport { TabsNoDataState } from \"./TabsNoDataState\";\nimport { TabsPanel } from \"./TabsPanel\";\nimport { TabsTabList } from \"./TabsTabList\";\n\n/**\n * Простой items-based tabs-компонент.\n * Сам управляет областью панели и её прокруткой.\n */\nexport function TabsBox({\n\titems,\n\tvalue,\n\tdefaultValue,\n\tonValueChange,\n\tclassName,\n\tisLoading,\n\tloadingText,\n\torientation = \"horizontal\",\n\tactivationMode = \"automatic\",\n\tmountStrategy = \"unmount\",\n\tloop = true,\n\ttone = \"primary\",\n\tclean = false,\n\t\"aria-label\": ariaLabel,\n\t\"aria-labelledby\": ariaLabelledBy\n}: TabsBoxProps) {\n\tconst state = useTabsState({\n\t\titems,\n\t\tvalue,\n\t\tdefaultValue,\n\t\tonValueChange,\n\t\torientation,\n\t\tactivationMode,\n\t\tloop\n\t});\n\n\tconst rootClassName = cn(\n\t\tstyles.tabsContainer,\n\t\tclean ? styles.clean : uiStyles.uiFilledPanel,\n\t\tstyles[orientation],\n\t\tgetUiPanelToneClassName(tone),\n\t\tclassName\n\t);\n\tconst tabListClassName = styles.tabs;\n\tconst panelsClassName = cn(styles.panels, styles.panelScrollable, \"scrollable overscroll\");\n\tconst panelClassName = styles.panel;\n\tconst panelBodyClassName = styles.panelBody;\n\n\tif (isLoading) {\n\t\treturn (\n\t\t\t<TabsLoadingState\n\t\t\t\tcontainerClassName={rootClassName}\n\t\t\t\ttabListClassName={tabListClassName}\n\t\t\t\tpanelsClassName={panelsClassName}\n\t\t\t\tpanelClassName={panelClassName}\n\t\t\t\tpanelBodyClassName={panelBodyClassName}\n\t\t\t\tloadingText={loadingText}\n\t\t\t/>\n\t\t);\n\t}\n\n\tif (!items.length) {\n\t\treturn (\n\t\t\t<TabsNoDataState\n\t\t\t\tcontainerClassName={rootClassName}\n\t\t\t\tpanelsClassName={panelsClassName}\n\t\t\t\tpanelClassName={panelClassName}\n\t\t\t\tpanelBodyClassName={panelBodyClassName}\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div className={rootClassName}>\n\t\t\t<TabsTabList items={items} state={state} className={tabListClassName} ariaLabel={ariaLabel} ariaLabelledBy={ariaLabelledBy} />\n\n\t\t\t<div className={panelsClassName}>\n\t\t\t\t{items.map((item) => {\n\t\t\t\t\tconst isSelected = item.id === state.selectedTabId;\n\t\t\t\t\tconst isMounted = shouldMountTabPanel({\n\t\t\t\t\t\tmountStrategy,\n\t\t\t\t\t\tisSelected,\n\t\t\t\t\t\tisVisited: state.isVisited(item.id)\n\t\t\t\t\t});\n\n\t\t\t\t\tif (!isMounted) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<TabsPanel\n\t\t\t\t\t\t\tkey={item.id}\n\t\t\t\t\t\t\ttabId={item.id}\n\t\t\t\t\t\t\tisSelected={isSelected}\n\t\t\t\t\t\t\tclassName={panelClassName}\n\t\t\t\t\t\t\tgetTabElementId={state.getTabElementId}\n\t\t\t\t\t\t\tgetPanelElementId={state.getPanelElementId}>\n\t\t\t\t\t\t\t<div className={panelBodyClassName}>{item.content}</div>\n\t\t\t\t\t\t</TabsPanel>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n","/* eslint-disable react-refresh/only-export-components */\nimport React, { Children, isValidElement, useMemo } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport uiStyles from \"../../ui.module.scss\";\nimport { getUiPanelToneClassName } from \"../../uiClasses\";\nimport { shouldMountTabPanel } from \"../lib/tabs\";\nimport { useTabsState } from \"../model/useTabsState\";\n\nimport styles from \"./Tabs.module.scss\";\nimport { TabsPanel } from \"./TabsPanel\";\nimport { TabsTabList } from \"./TabsTabList\";\n\nimport type { TabsDescriptor, TabsLayoutProps, TabsLayoutSectionProps, TabsLayoutTabProps } from \"../model/types\";\n\ninterface ParsedTabsLayoutTab extends TabsDescriptor {\n\ttoolbar: TabsLayoutSectionProps | null;\n\tcontent: TabsLayoutSectionProps;\n\tfooter: TabsLayoutSectionProps | null;\n}\n\nconst tabsLayoutTabDisplayName = \"TabsLayout.Tab\";\nconst tabsLayoutToolbarDisplayName = \"TabsLayout.Toolbar\";\nconst tabsLayoutContentDisplayName = \"TabsLayout.Content\";\nconst tabsLayoutFooterDisplayName = \"TabsLayout.Footer\";\n\n/**\n * Возвращает стабильный displayName compound-элемента.\n * Это нужно для корректной работы HMR, где ссылочное сравнение `child.type` может ломаться.\n */\nfunction getTabsLayoutElementDisplayName(child: React.ReactElement) {\n\tconst { type } = child;\n\n\tif (typeof type === \"function\") {\n\t\tconst componentType = type as React.JSXElementConstructor<unknown> & {\n\t\t\tdisplayName?: string;\n\t\t\tname?: string;\n\t\t};\n\n\t\treturn componentType.displayName ?? componentType.name ?? null;\n\t}\n\n\tif (typeof type === \"object\" && type !== null && \"displayName\" in type) {\n\t\tconst componentType = type as {\n\t\t\tdisplayName?: string;\n\t\t};\n\n\t\treturn typeof componentType.displayName === \"string\" ? componentType.displayName : null;\n\t}\n\n\treturn null;\n}\n\nfunction isTabsLayoutElement<Props>(child: React.ReactNode, displayName: string): child is React.ReactElement<Props> {\n\treturn isValidElement<Props>(child) && getTabsLayoutElementDisplayName(child) === displayName;\n}\n\n/**\n * Маркер верхнеуровневой вкладки в compound-режиме `TabsLayout`.\n */\nfunction TabsLayoutTab({ children }: TabsLayoutTabProps) {\n\treturn <>{children}</>;\n}\n\nTabsLayoutTab.displayName = tabsLayoutTabDisplayName;\n\n/**\n * Верхняя секция панели, исключённая из прокручиваемого содержимого.\n */\nfunction TabsLayoutToolbar({ children }: TabsLayoutSectionProps) {\n\treturn <>{children}</>;\n}\n\nTabsLayoutToolbar.displayName = tabsLayoutToolbarDisplayName;\n\n/**\n * Основное содержимое панели, которое само управляет своим layout и scroll.\n */\nfunction TabsLayoutContent({ children }: TabsLayoutSectionProps) {\n\treturn <>{children}</>;\n}\n\nTabsLayoutContent.displayName = tabsLayoutContentDisplayName;\n\n/**\n * Нижняя секция панели, исключённая из прокручиваемого содержимого.\n */\nfunction TabsLayoutFooter({ children }: TabsLayoutSectionProps) {\n\treturn <>{children}</>;\n}\n\nTabsLayoutFooter.displayName = tabsLayoutFooterDisplayName;\n\nfunction parseTabsLayoutSections(children: React.ReactNode, tabId: string) {\n\tlet toolbar: TabsLayoutSectionProps | null = null;\n\tlet content: TabsLayoutSectionProps | null = null;\n\tlet footer: TabsLayoutSectionProps | null = null;\n\n\tfor (const child of Children.toArray(children)) {\n\t\tif (!isValidElement(child)) {\n\t\t\tthrow new Error(\n\t\t\t\t`TabsLayout.Tab \"${tabId}\" поддерживает только дочерние элементы TabsLayout.Toolbar, TabsLayout.Content и TabsLayout.Footer.`\n\t\t\t);\n\t\t}\n\n\t\tif (isTabsLayoutElement<TabsLayoutSectionProps>(child, tabsLayoutToolbarDisplayName)) {\n\t\t\tif (toolbar) {\n\t\t\t\tthrow new Error(`TabsLayout.Tab \"${tabId}\" содержит более одного блока TabsLayout.Toolbar.`);\n\t\t\t}\n\n\t\t\ttoolbar = child.props;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (isTabsLayoutElement<TabsLayoutSectionProps>(child, tabsLayoutContentDisplayName)) {\n\t\t\tif (content) {\n\t\t\t\tthrow new Error(`TabsLayout.Tab \"${tabId}\" содержит более одного блока TabsLayout.Content.`);\n\t\t\t}\n\n\t\t\tcontent = child.props;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (isTabsLayoutElement<TabsLayoutSectionProps>(child, tabsLayoutFooterDisplayName)) {\n\t\t\tif (footer) {\n\t\t\t\tthrow new Error(`TabsLayout.Tab \"${tabId}\" содержит более одного блока TabsLayout.Footer.`);\n\t\t\t}\n\n\t\t\tfooter = child.props;\n\t\t\tcontinue;\n\t\t}\n\n\t\tthrow new Error(\n\t\t\t`TabsLayout.Tab \"${tabId}\" поддерживает только дочерние элементы TabsLayout.Toolbar, TabsLayout.Content и TabsLayout.Footer.`\n\t\t);\n\t}\n\n\tif (!content) {\n\t\tthrow new Error(`TabsLayout.Tab \"${tabId}\" должен содержать блок TabsLayout.Content.`);\n\t}\n\n\treturn { toolbar, content, footer };\n}\n\nfunction parseTabsLayoutChildren(children: React.ReactNode): ParsedTabsLayoutTab[] {\n\treturn Children.toArray(children).map((child) => {\n\t\tif (!isTabsLayoutElement<TabsLayoutTabProps>(child, tabsLayoutTabDisplayName)) {\n\t\t\tthrow new Error(\"TabsLayout принимает только дочерние элементы TabsLayout.Tab.\");\n\t\t}\n\n\t\treturn {\n\t\t\tid: child.props.id,\n\t\t\ttitle: child.props.title,\n\t\t\tdisabled: child.props.disabled,\n\t\t\t...parseTabsLayoutSections(child.props.children, child.props.id)\n\t\t};\n\t});\n}\n\ntype TabsLayoutComposition = React.FC<TabsLayoutProps> & {\n\tTab: typeof TabsLayoutTab;\n\tToolbar: typeof TabsLayoutToolbar;\n\tContent: typeof TabsLayoutContent;\n\tFooter: typeof TabsLayoutFooter;\n};\n\n/**\n * Compound-оболочка tabs для составных panel-layout сценариев.\n * Сам компонент управляет только переключением и каркасом панели.\n */\nconst TabsLayoutRoot: React.FC<TabsLayoutProps> = ({\n\tchildren,\n\tvalue,\n\tdefaultValue,\n\tonValueChange,\n\tclassName,\n\torientation = \"horizontal\",\n\tactivationMode = \"manual\",\n\tmountStrategy = \"lazy\",\n\tloop = true,\n\ttone = \"primary\",\n\tclean = false,\n\t\"aria-label\": ariaLabel,\n\t\"aria-labelledby\": ariaLabelledBy\n}) => {\n\tconst tabs = useMemo(() => parseTabsLayoutChildren(children), [children]);\n\tconst state = useTabsState({\n\t\titems: tabs,\n\t\tvalue,\n\t\tdefaultValue,\n\t\tonValueChange,\n\t\torientation,\n\t\tactivationMode,\n\t\tloop\n\t});\n\tconst rootClassName = cn(\n\t\tstyles.tabsContainer,\n\t\tclean ? styles.clean : uiStyles.uiFilledPanel,\n\t\tstyles[orientation],\n\t\tgetUiPanelToneClassName(tone),\n\t\tclassName\n\t);\n\tconst panelsClassName = cn(styles.panels, styles.layoutPanels);\n\n\treturn (\n\t\t<div className={rootClassName}>\n\t\t\t<TabsTabList items={tabs} state={state} className={styles.tabs} ariaLabel={ariaLabel} ariaLabelledBy={ariaLabelledBy} />\n\n\t\t\t<div className={panelsClassName}>\n\t\t\t\t{tabs.map((tab) => {\n\t\t\t\t\tconst isSelected = tab.id === state.selectedTabId;\n\t\t\t\t\tconst isMounted = shouldMountTabPanel({\n\t\t\t\t\t\tmountStrategy,\n\t\t\t\t\t\tisSelected,\n\t\t\t\t\t\tisVisited: state.isVisited(tab.id)\n\t\t\t\t\t});\n\n\t\t\t\t\tif (!isMounted) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst templateRows = `${tab.toolbar ? \"auto \" : \"\"}minmax(0, 1fr)${tab.footer ? \" auto\" : \"\"}`;\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<TabsPanel\n\t\t\t\t\t\t\tkey={tab.id}\n\t\t\t\t\t\t\ttabId={tab.id}\n\t\t\t\t\t\t\tisSelected={isSelected}\n\t\t\t\t\t\t\tclassName={styles.panel}\n\t\t\t\t\t\t\tgetTabElementId={state.getTabElementId}\n\t\t\t\t\t\t\tgetPanelElementId={state.getPanelElementId}>\n\t\t\t\t\t\t\t<div className={styles.layoutPanel} style={{ gridTemplateRows: templateRows }}>\n\t\t\t\t\t\t\t\t{tab.toolbar ? (\n\t\t\t\t\t\t\t\t\t<div className={cn(styles.layoutSection, tab.toolbar.className)}>{tab.toolbar.children}</div>\n\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t<div className={cn(styles.layoutSection, styles.layoutContent, tab.content.className)}>\n\t\t\t\t\t\t\t\t\t{tab.content.children}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t{tab.footer ? (\n\t\t\t\t\t\t\t\t\t<div className={cn(styles.layoutSection, tab.footer.className)}>{tab.footer.children}</div>\n\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</TabsPanel>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\t\t</div>\n\t);\n};\n\nTabsLayoutRoot.displayName = \"TabsLayout\";\n\nexport const TabsLayout = Object.assign(TabsLayoutRoot, {\n\tTab: TabsLayoutTab,\n\tToolbar: TabsLayoutToolbar,\n\tContent: TabsLayoutContent,\n\tFooter: TabsLayoutFooter\n}) as TabsLayoutComposition;\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../src/tabs/lib/tabs.ts","../../src/tabs/model/useTabsState.ts","../../src/tabs/ui/Tabs.module.scss","../../src/tabs/ui/TabsLoadingState.tsx","../../src/tabs/ui/TabsNoDataState.tsx","../../src/tabs/ui/TabsPanel.tsx","../../src/tabs/ui/TabsTabList.tsx","../../src/tabs/ui/TabsBox.tsx","../../src/tabs/ui/TabsLayout.tsx"],"sourcesContent":["import type { TabsDescriptor, TabsMountStrategy } from \"../model/types\";\n\n/**\n * Возвращает идентификатор первой доступной вкладки.\n */\nexport function getFirstEnabledTabId(items: TabsDescriptor[]) {\n\treturn items.find((item) => !item.disabled)?.id ?? null;\n}\n\n/**\n * Возвращает безопасный идентификатор вкладки.\n * Если переданный `candidate` недоступен, выбирается первая доступная вкладка.\n */\nexport function getSafeTabId(items: TabsDescriptor[], candidate: string | undefined | null) {\n\tif (!candidate) {\n\t\treturn getFirstEnabledTabId(items);\n\t}\n\n\tconst matchedItem = items.find((item) => item.id === candidate && !item.disabled);\n\treturn matchedItem?.id ?? getFirstEnabledTabId(items);\n}\n\n/**\n * Возвращает только доступные вкладки для roving focus и клавиатурной навигации.\n */\nexport function getEnabledTabs(items: TabsDescriptor[]) {\n\treturn items.filter((item) => !item.disabled);\n}\n\ninterface ShouldMountTabPanelOptions {\n\tmountStrategy: TabsMountStrategy;\n\tisSelected: boolean;\n\tisVisited: boolean;\n}\n\n/**\n * Определяет, должна ли панель оставаться смонтированной с учётом стратегии монтирования.\n */\nexport function shouldMountTabPanel({ mountStrategy, isSelected, isVisited }: ShouldMountTabPanelOptions) {\n\treturn mountStrategy === \"keep-mounted\" || isSelected || (mountStrategy === \"lazy\" && isVisited);\n}\n","import type React from \"react\";\nimport { FocusEvent, KeyboardEvent, useId, useMemo, useRef, useState } from \"react\";\n\nimport { getRovingFocusTargetIndex } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport { getEnabledTabs, getSafeTabId } from \"../lib/tabs\";\n\nimport type { TabsActivationMode, TabsDescriptor, TabsOrientation } from \"./types\";\n\ninterface UseTabsStateOptions {\n\titems: TabsDescriptor[];\n\tvalue?: string;\n\tdefaultValue?: string;\n\tonValueChange?: (value: string) => void;\n\torientation?: TabsOrientation;\n\tactivationMode?: TabsActivationMode;\n\tloop?: boolean;\n}\n\n/**\n * Публичная часть модели, необходимая визуальным подкомпонентам tabs.\n */\nexport interface TabsStateModel {\n\tactivationMode: TabsActivationMode;\n\torientation: TabsOrientation;\n\tselectedTabId: string | null;\n\ttabbableTabId: string | null;\n\tonTabListKeyDown: (event: KeyboardEvent<HTMLDivElement>) => void;\n\tonTabListBlur: (event: FocusEvent<HTMLDivElement>) => void;\n\tgetTabElementId: (tabId: string) => string;\n\tgetPanelElementId: (tabId: string) => string;\n\tgetTabButtonProps: (item: TabsDescriptor) => React.ButtonHTMLAttributes<HTMLButtonElement> & {\n\t\tref: (node: HTMLButtonElement | null) => void;\n\t};\n\tisVisited: (tabId: string) => boolean;\n}\n\n/**\n * Инкапсулирует state, a11y-связки и клавиатурную навигацию для всех оболочек tabs.\n */\nexport function useTabsState({\n\titems,\n\tvalue,\n\tdefaultValue,\n\tonValueChange,\n\torientation = \"horizontal\",\n\tactivationMode = \"automatic\",\n\tloop = true\n}: UseTabsStateOptions): TabsStateModel {\n\tconst isControlled = value !== undefined;\n\tconst enabledTabs = useMemo(() => getEnabledTabs(items), [items]);\n\tconst fallbackTabId = enabledTabs[0]?.id ?? null;\n\tconst [internalValue, setInternalValue] = useState(() => getSafeTabId(items, defaultValue));\n\tconst [focusedTabId, setFocusedTabId] = useState<string | null>(() => getSafeTabId(items, value ?? defaultValue));\n\tconst initialVisitedTabId = getSafeTabId(items, value ?? defaultValue);\n\tconst [visitedTabsState, setVisitedTabsState] = useState<Set<string>>(() =>\n\t\tinitialVisitedTabId ? new Set([initialVisitedTabId]) : new Set()\n\t);\n\tconst tabsId = useId();\n\tconst tabRefs = useRef<Record<string, HTMLButtonElement | null>>({});\n\n\tconst selectedTabId = getSafeTabId(items, isControlled ? value : internalValue);\n\tconst nextTabbableTabId = getSafeTabId(items, focusedTabId) ?? selectedTabId ?? fallbackTabId;\n\tconst visitedTabs = useMemo(() => {\n\t\tif (!selectedTabId || visitedTabsState.has(selectedTabId)) {\n\t\t\treturn visitedTabsState;\n\t\t}\n\n\t\tconst next = new Set(visitedTabsState);\n\t\tnext.add(selectedTabId);\n\t\treturn next;\n\t}, [selectedTabId, visitedTabsState]);\n\n\tconst activateTab = (nextTabId: string) => {\n\t\tconst safeNextTabId = getSafeTabId(items, nextTabId);\n\t\tif (!safeNextTabId) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetVisitedTabsState((prev) => {\n\t\t\tif (prev.has(safeNextTabId)) {\n\t\t\t\treturn prev;\n\t\t\t}\n\n\t\t\tconst next = new Set(prev);\n\t\t\tnext.add(safeNextTabId);\n\t\t\treturn next;\n\t\t});\n\n\t\tif (!isControlled) {\n\t\t\tsetInternalValue(safeNextTabId);\n\t\t}\n\n\t\tonValueChange?.(safeNextTabId);\n\t};\n\n\tconst focusTab = (nextTabId: string) => {\n\t\ttabRefs.current[nextTabId]?.focus();\n\t};\n\n\tconst onTabListKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n\t\tif (enabledTabs.length < 2) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst activeFocusIndex = Math.max(\n\t\t\t0,\n\t\t\tenabledTabs.findIndex((item) => item.id === (nextTabbableTabId ?? selectedTabId ?? fallbackTabId))\n\t\t);\n\t\tconst nextEnabledIndex = getRovingFocusTargetIndex({\n\t\t\tcurrentIndex: activeFocusIndex,\n\t\t\titemCount: enabledTabs.length,\n\t\t\tkey: event.key,\n\t\t\torientation,\n\t\t\twrap: loop\n\t\t});\n\n\t\tif (nextEnabledIndex === null) {\n\t\t\treturn;\n\t\t}\n\n\t\tevent.preventDefault();\n\n\t\tconst nextTabId = enabledTabs[nextEnabledIndex]?.id;\n\t\tif (!nextTabId) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetFocusedTabId(nextTabId);\n\t\tfocusTab(nextTabId);\n\n\t\tif (activationMode === \"automatic\") {\n\t\t\tactivateTab(nextTabId);\n\t\t}\n\t};\n\n\tconst onTabListBlur = (event: FocusEvent<HTMLDivElement>) => {\n\t\tconst nextTarget = event.relatedTarget;\n\n\t\tif (nextTarget instanceof Node && event.currentTarget.contains(nextTarget)) {\n\t\t\treturn;\n\t\t}\n\n\t\tsetFocusedTabId(selectedTabId ?? fallbackTabId);\n\t};\n\n\tconst getTabElementId = (tabId: string) => `${tabsId}-tab-${tabId}`;\n\tconst getPanelElementId = (tabId: string) => `${tabsId}-panel-${tabId}`;\n\n\tconst getTabButtonProps = (item: TabsDescriptor) => {\n\t\tconst isSelected = item.id === selectedTabId;\n\t\tconst isTabbable = item.id === nextTabbableTabId;\n\n\t\treturn {\n\t\t\tref: (node: HTMLButtonElement | null) => {\n\t\t\t\ttabRefs.current[item.id] = node;\n\t\t\t},\n\t\t\ttype: \"button\" as const,\n\t\t\trole: \"tab\" as const,\n\t\t\tid: getTabElementId(item.id),\n\t\t\tdisabled: item.disabled,\n\t\t\t\"aria-selected\": isSelected,\n\t\t\t\"aria-controls\": getPanelElementId(item.id),\n\t\t\t\"aria-disabled\": item.disabled || undefined,\n\t\t\ttabIndex: item.disabled ? -1 : isTabbable ? 0 : -1,\n\t\t\tonFocus: () => setFocusedTabId(item.id),\n\t\t\tonClick: () => activateTab(item.id)\n\t\t};\n\t};\n\n\treturn {\n\t\tactivationMode,\n\t\torientation,\n\t\tselectedTabId,\n\t\ttabbableTabId: nextTabbableTabId,\n\t\tonTabListKeyDown,\n\t\tonTabListBlur,\n\t\tgetTabElementId,\n\t\tgetPanelElementId,\n\t\tgetTabButtonProps,\n\t\tisVisited: (tabId: string) => visitedTabs.has(tabId)\n\t};\n}\n",".tabsContainer {\n\t--tabs-border: var(--border);\n\t--tabs-panel-padding: var(--space-md);\n\n\tdisplay: grid;\n\tmin-width: 0;\n\tmin-height: 0;\n\theight: 100%;\n\toverflow: hidden;\n\n\t&.clean {\n\t\t--tabs-border: none;\n\t\t--tabs-panel-padding: 0;\n\t}\n}\n\n.tabs {\n\tdisplay: flex;\n\tmin-width: 0;\n\n\tborder: var(--tabs-border);\n\tbackground-color: var(--surface-1);\n}\n\n.panels {\n\tmin-width: 0;\n\tmin-height: 0;\n\tborder: var(--tabs-border);\n}\n\n.horizontal {\n\tgrid-template-rows: auto minmax(0, 1fr);\n\n\t.tabs {\n\t\tpadding: var(--space-sm);\n\n\t\tborder-top-left-radius: var(--radius-sm);\n\t\tborder-top-right-radius: var(--radius-sm);\n\t}\n\n\t.panels {\n\t\tborder-top: none;\n\n\t\tborder-bottom-left-radius: var(--radius-sm);\n\t\tborder-bottom-right-radius: var(--radius-sm);\n\t}\n\n\t.tab {\n\t\t&::before {\n\t\t\tcontent: \"\";\n\t\t\tposition: absolute;\n\t\t\tbottom: 0;\n\t\t\tleft: 0;\n\t\t\tright: 0;\n\t\t\tborder-bottom: var(--focus-width) solid var(--decoration-color);\n\t\t}\n\t}\n}\n\n.vertical {\n\tgrid-template-columns: 10em minmax(0, 1fr);\n\tmin-height: 0;\n\n\t.tabs {\n\t\tflex-direction: column;\n\n\t\tborder-top-left-radius: var(--radius-sm);\n\t\tborder-bottom-left-radius: var(--radius-sm);\n\t}\n\n\t.panels {\n\t\tborder-left: none;\n\n\t\tborder-top-right-radius: var(--radius-sm);\n\t\tborder-bottom-right-radius: var(--radius-sm);\n\t}\n\n\t// .tab {\n\t// \t&::before {\n\t// \t\tcontent: \"\";\n\t// \t\tposition: absolute;\n\t// \t\ttop: 0;\n\t// \t\tbottom: 0;\n\t// \t\tright: 0;\n\t// \t\tborder-right: var(--focus-width) solid var(--decoration-color);\n\t// \t}\n\t// }\n}\n\n.panelScrollable {\n\toverflow: auto;\n}\n\n.tab {\n\t--decoration-color: transparent;\n\n\ttext-align: left;\n\n\tposition: relative;\n\tmin-height: var(--control-height);\n\tpadding: var(--space-xs) var(--space-md);\n\tcolor: var(--content-1);\n\tborder-radius: var(--radius-sm);\n\tfont-weight: 700;\n\tfont-variation-settings: \"wght\" 700;\n\n\tflex-shrink: 0;\n\n\t&:hover {\n\t\tcursor: pointer;\n\t\tcolor: var(--accent-text);\n\t\t// background-color: var(--accent-fill);\n\t\t--decoration-color: var(--accent-border);\n\t}\n\n\t&.selected {\n\t\tcolor: var(--brand-text);\n\t\t// color: var(--content-0);\n\t\t// background-color: var(--brand-fill);\n\t\t--decoration-color: var(--brand-border);\n\t}\n\n\t&:disabled {\n\t\tcursor: not-allowed;\n\t\tcolor: var(--content-2);\n\t\tbackground-color: var(--surface-2);\n\t}\n}\n\n.panel {\n\tpadding: 0;\n\tmin-width: 0;\n\tmin-height: 0;\n\theight: 100%;\n}\n\n.panelBody {\n\tmin-width: 0;\n\tmin-height: 0;\n\n\theight: 100%;\n\tpadding: var(--tabs-panel-padding);\n}\n\n.layoutPanels {\n\toverflow: hidden;\n}\n\n.layoutPanel {\n\tdisplay: grid;\n\tgap: var(--space-md);\n\tmin-width: 0;\n\tmin-height: 0;\n\theight: 100%;\n\tpadding: var(--tabs-panel-padding);\n}\n\n.layoutSection {\n\tmin-width: 0;\n}\n\n.layoutContent {\n\tmin-height: 0;\n}\n","import { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport { LoadingMessage } from \"../../misc\";\n\nimport styles from \"./Tabs.module.scss\";\n\ninterface TabsLoadingStateProps {\n\tcontainerClassName: string;\n\ttabListClassName: string;\n\tpanelsClassName: string;\n\tpanelClassName: string;\n\tpanelBodyClassName: string;\n\tloadingText?: string;\n}\n\n/**\n * Служебное loading-состояние для `TabsBox`.\n */\nexport function TabsLoadingState({\n\tcontainerClassName,\n\ttabListClassName,\n\tpanelsClassName,\n\tpanelClassName,\n\tpanelBodyClassName,\n\tloadingText\n}: TabsLoadingStateProps) {\n\treturn (\n\t\t<div className={containerClassName}>\n\t\t\t<div className={tabListClassName} aria-hidden=\"true\">\n\t\t\t\t<button type=\"button\" disabled data-disabled=\"\" className={cn(styles.tab, \"skeletonLine\")}>\n\t\t\t\t\tЗагрузка...\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t\t<div className={panelsClassName} aria-busy=\"true\">\n\t\t\t\t<div className={panelClassName}>\n\t\t\t\t\t<div className={panelBodyClassName}>\n\t\t\t\t\t\t<LoadingMessage text={loadingText} className=\"radiusSm\" />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n","import { NoData } from \"../../misc\";\n\ninterface TabsNoDataStateProps {\n\tcontainerClassName: string;\n\tpanelsClassName: string;\n\tpanelClassName: string;\n\tpanelBodyClassName: string;\n}\n\n/**\n * Служебное empty-состояние для `TabsBox`.\n */\nexport function TabsNoDataState({ containerClassName, panelsClassName, panelClassName, panelBodyClassName }: TabsNoDataStateProps) {\n\treturn (\n\t\t<div className={containerClassName}>\n\t\t\t<div className={panelsClassName}>\n\t\t\t\t<div className={panelClassName}>\n\t\t\t\t\t<div className={panelBodyClassName}>\n\t\t\t\t\t\t<NoData className=\"radiusSm\" />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n","import { type ReactNode } from \"react\";\n\n/**\n * Унифицированная ARIA-обёртка для содержимого активной панели tabs.\n */\ninterface TabsPanelProps {\n\ttabId: string;\n\tisSelected: boolean;\n\tclassName?: string;\n\tgetTabElementId: (tabId: string) => string;\n\tgetPanelElementId: (tabId: string) => string;\n\tchildren?: ReactNode;\n}\n\nexport function TabsPanel({ tabId, isSelected, className, getTabElementId, getPanelElementId, children }: TabsPanelProps) {\n\treturn (\n\t\t<div\n\t\t\trole=\"tabpanel\"\n\t\t\tid={getPanelElementId(tabId)}\n\t\t\taria-labelledby={getTabElementId(tabId)}\n\t\t\thidden={!isSelected}\n\t\t\ttabIndex={isSelected ? 0 : -1}\n\t\t\tclassName={className}>\n\t\t\t{children}\n\t\t</div>\n\t);\n}\n","import { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport { OneStepScroller } from \"../../misc\";\nimport { type TabsDescriptor } from \"../model/types\";\nimport { type TabsStateModel } from \"../model/useTabsState\";\n\nimport styles from \"./Tabs.module.scss\";\n\n/**\n * Рендерит tablist и кнопки вкладок поверх общей модели tabs.\n */\ninterface TabsTabListProps {\n\titems: TabsDescriptor[];\n\tstate: TabsStateModel;\n\tclassName?: string;\n\tariaLabel?: string;\n\tariaLabelledBy?: string;\n}\n\nexport function TabsTabList({ items, state, className, ariaLabel, ariaLabelledBy }: TabsTabListProps) {\n\tconst tabList = (\n\t\t<div\n\t\t\tdata-ui=\"tabs-tablist\"\n\t\t\tclassName={className}\n\t\t\trole=\"tablist\"\n\t\t\taria-orientation={state.orientation}\n\t\t\taria-label={ariaLabelledBy ? undefined : (ariaLabel ?? \"Вкладки\")}\n\t\t\taria-labelledby={ariaLabelledBy}\n\t\t\taria-live=\"off\"\n\t\t\tonKeyDown={state.onTabListKeyDown}\n\t\t\tonBlur={state.onTabListBlur}>\n\t\t\t{items.map((item) => (\n\t\t\t\t<button\n\t\t\t\t\tkey={item.id}\n\t\t\t\t\t{...state.getTabButtonProps(item)}\n\t\t\t\t\tdata-ui=\"tabs-tab\"\n\t\t\t\t\tdata-action=\"select-tab\"\n\t\t\t\t\tclassName={cn(styles.tab, \"textWrap\", item.id === state.selectedTabId && styles.selected)}>\n\t\t\t\t\t{item.title}\n\t\t\t\t</button>\n\t\t\t))}\n\t\t</div>\n\t);\n\n\tif (state.orientation === \"horizontal\") {\n\t\treturn <OneStepScroller itemSelector=\"[role='tab']\">{tabList}</OneStepScroller>;\n\t}\n\n\treturn tabList;\n}\n","import { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport uiStyles from \"../../ui.module.scss\";\nimport { getUiPanelToneClassName } from \"../../uiClasses\";\nimport { shouldMountTabPanel } from \"../lib/tabs\";\nimport { type TabsBoxProps } from \"../model/types\";\nimport { useTabsState } from \"../model/useTabsState\";\n\nimport styles from \"./Tabs.module.scss\";\nimport { TabsLoadingState } from \"./TabsLoadingState\";\nimport { TabsNoDataState } from \"./TabsNoDataState\";\nimport { TabsPanel } from \"./TabsPanel\";\nimport { TabsTabList } from \"./TabsTabList\";\n\n/**\n * Простой items-based tabs-компонент.\n * Сам управляет областью панели и её прокруткой.\n */\nexport function TabsBox({\n\titems,\n\tvalue,\n\tdefaultValue,\n\tonValueChange,\n\tclassName,\n\tisLoading,\n\tloadingText,\n\torientation = \"horizontal\",\n\tactivationMode = \"automatic\",\n\tmountStrategy = \"unmount\",\n\tloop = true,\n\ttone = \"primary\",\n\tclean = false,\n\t\"aria-label\": ariaLabel,\n\t\"aria-labelledby\": ariaLabelledBy\n}: TabsBoxProps) {\n\tconst state = useTabsState({\n\t\titems,\n\t\tvalue,\n\t\tdefaultValue,\n\t\tonValueChange,\n\t\torientation,\n\t\tactivationMode,\n\t\tloop\n\t});\n\n\tconst rootClassName = cn(\n\t\tstyles.tabsContainer,\n\t\tclean ? styles.clean : uiStyles.uiFilledPanel,\n\t\tstyles[orientation],\n\t\tgetUiPanelToneClassName(tone),\n\t\tclassName\n\t);\n\tconst tabListClassName = styles.tabs;\n\tconst panelsClassName = cn(styles.panels, styles.panelScrollable, \"scrollable overscroll\");\n\tconst panelClassName = styles.panel;\n\tconst panelBodyClassName = styles.panelBody;\n\n\tif (isLoading) {\n\t\treturn (\n\t\t\t<TabsLoadingState\n\t\t\t\tcontainerClassName={rootClassName}\n\t\t\t\ttabListClassName={tabListClassName}\n\t\t\t\tpanelsClassName={panelsClassName}\n\t\t\t\tpanelClassName={panelClassName}\n\t\t\t\tpanelBodyClassName={panelBodyClassName}\n\t\t\t\tloadingText={loadingText}\n\t\t\t/>\n\t\t);\n\t}\n\n\tif (!items.length) {\n\t\treturn (\n\t\t\t<TabsNoDataState\n\t\t\t\tcontainerClassName={rootClassName}\n\t\t\t\tpanelsClassName={panelsClassName}\n\t\t\t\tpanelClassName={panelClassName}\n\t\t\t\tpanelBodyClassName={panelBodyClassName}\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn (\n\t\t<div className={rootClassName}>\n\t\t\t<TabsTabList items={items} state={state} className={tabListClassName} ariaLabel={ariaLabel} ariaLabelledBy={ariaLabelledBy} />\n\n\t\t\t<div className={panelsClassName}>\n\t\t\t\t{items.map((item) => {\n\t\t\t\t\tconst isSelected = item.id === state.selectedTabId;\n\t\t\t\t\tconst isMounted = shouldMountTabPanel({\n\t\t\t\t\t\tmountStrategy,\n\t\t\t\t\t\tisSelected,\n\t\t\t\t\t\tisVisited: state.isVisited(item.id)\n\t\t\t\t\t});\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<TabsPanel\n\t\t\t\t\t\t\tkey={item.id}\n\t\t\t\t\t\t\ttabId={item.id}\n\t\t\t\t\t\t\tisSelected={isSelected}\n\t\t\t\t\t\t\tclassName={panelClassName}\n\t\t\t\t\t\t\tgetTabElementId={state.getTabElementId}\n\t\t\t\t\t\t\tgetPanelElementId={state.getPanelElementId}>\n\t\t\t\t\t\t\t{isMounted ? <div className={panelBodyClassName}>{item.content}</div> : null}\n\t\t\t\t\t\t</TabsPanel>\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 React, { Children, isValidElement, useMemo } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport uiStyles from \"../../ui.module.scss\";\nimport { getUiPanelToneClassName } from \"../../uiClasses\";\nimport { shouldMountTabPanel } from \"../lib/tabs\";\nimport { useTabsState } from \"../model/useTabsState\";\n\nimport styles from \"./Tabs.module.scss\";\nimport { TabsPanel } from \"./TabsPanel\";\nimport { TabsTabList } from \"./TabsTabList\";\n\nimport type { TabsDescriptor, TabsLayoutProps, TabsLayoutSectionProps, TabsLayoutTabProps } from \"../model/types\";\n\ninterface ParsedTabsLayoutTab extends TabsDescriptor {\n\ttoolbar: TabsLayoutSectionProps | null;\n\tcontent: TabsLayoutSectionProps;\n\tfooter: TabsLayoutSectionProps | null;\n}\n\nconst tabsLayoutTabDisplayName = \"TabsLayout.Tab\";\nconst tabsLayoutToolbarDisplayName = \"TabsLayout.Toolbar\";\nconst tabsLayoutContentDisplayName = \"TabsLayout.Content\";\nconst tabsLayoutFooterDisplayName = \"TabsLayout.Footer\";\n\n/**\n * Возвращает стабильный displayName compound-элемента.\n * Это нужно для корректной работы HMR, где ссылочное сравнение `child.type` может ломаться.\n */\nfunction getTabsLayoutElementDisplayName(child: React.ReactElement) {\n\tconst { type } = child;\n\n\tif (typeof type === \"function\") {\n\t\tconst componentType = type as React.JSXElementConstructor<unknown> & {\n\t\t\tdisplayName?: string;\n\t\t\tname?: string;\n\t\t};\n\n\t\treturn componentType.displayName ?? componentType.name ?? null;\n\t}\n\n\tif (typeof type === \"object\" && type !== null && \"displayName\" in type) {\n\t\tconst componentType = type as {\n\t\t\tdisplayName?: string;\n\t\t};\n\n\t\treturn typeof componentType.displayName === \"string\" ? componentType.displayName : null;\n\t}\n\n\treturn null;\n}\n\nfunction isTabsLayoutElement<Props>(child: React.ReactNode, displayName: string): child is React.ReactElement<Props> {\n\treturn isValidElement<Props>(child) && getTabsLayoutElementDisplayName(child) === displayName;\n}\n\n/**\n * Маркер верхнеуровневой вкладки в compound-режиме `TabsLayout`.\n */\nfunction TabsLayoutTab({ children }: TabsLayoutTabProps) {\n\treturn <>{children}</>;\n}\n\nTabsLayoutTab.displayName = tabsLayoutTabDisplayName;\n\n/**\n * Верхняя секция панели, исключённая из прокручиваемого содержимого.\n */\nfunction TabsLayoutToolbar({ children }: TabsLayoutSectionProps) {\n\treturn <>{children}</>;\n}\n\nTabsLayoutToolbar.displayName = tabsLayoutToolbarDisplayName;\n\n/**\n * Основное содержимое панели, которое само управляет своим layout и scroll.\n */\nfunction TabsLayoutContent({ children }: TabsLayoutSectionProps) {\n\treturn <>{children}</>;\n}\n\nTabsLayoutContent.displayName = tabsLayoutContentDisplayName;\n\n/**\n * Нижняя секция панели, исключённая из прокручиваемого содержимого.\n */\nfunction TabsLayoutFooter({ children }: TabsLayoutSectionProps) {\n\treturn <>{children}</>;\n}\n\nTabsLayoutFooter.displayName = tabsLayoutFooterDisplayName;\n\nfunction parseTabsLayoutSections(children: React.ReactNode, tabId: string) {\n\tlet toolbar: TabsLayoutSectionProps | null = null;\n\tlet content: TabsLayoutSectionProps | null = null;\n\tlet footer: TabsLayoutSectionProps | null = null;\n\n\tfor (const child of Children.toArray(children)) {\n\t\tif (!isValidElement(child)) {\n\t\t\tthrow new Error(\n\t\t\t\t`TabsLayout.Tab \"${tabId}\" поддерживает только дочерние элементы TabsLayout.Toolbar, TabsLayout.Content и TabsLayout.Footer.`\n\t\t\t);\n\t\t}\n\n\t\tif (isTabsLayoutElement<TabsLayoutSectionProps>(child, tabsLayoutToolbarDisplayName)) {\n\t\t\tif (toolbar) {\n\t\t\t\tthrow new Error(`TabsLayout.Tab \"${tabId}\" содержит более одного блока TabsLayout.Toolbar.`);\n\t\t\t}\n\n\t\t\ttoolbar = child.props;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (isTabsLayoutElement<TabsLayoutSectionProps>(child, tabsLayoutContentDisplayName)) {\n\t\t\tif (content) {\n\t\t\t\tthrow new Error(`TabsLayout.Tab \"${tabId}\" содержит более одного блока TabsLayout.Content.`);\n\t\t\t}\n\n\t\t\tcontent = child.props;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (isTabsLayoutElement<TabsLayoutSectionProps>(child, tabsLayoutFooterDisplayName)) {\n\t\t\tif (footer) {\n\t\t\t\tthrow new Error(`TabsLayout.Tab \"${tabId}\" содержит более одного блока TabsLayout.Footer.`);\n\t\t\t}\n\n\t\t\tfooter = child.props;\n\t\t\tcontinue;\n\t\t}\n\n\t\tthrow new Error(\n\t\t\t`TabsLayout.Tab \"${tabId}\" поддерживает только дочерние элементы TabsLayout.Toolbar, TabsLayout.Content и TabsLayout.Footer.`\n\t\t);\n\t}\n\n\tif (!content) {\n\t\tthrow new Error(`TabsLayout.Tab \"${tabId}\" должен содержать блок TabsLayout.Content.`);\n\t}\n\n\treturn { toolbar, content, footer };\n}\n\nfunction parseTabsLayoutChildren(children: React.ReactNode): ParsedTabsLayoutTab[] {\n\treturn Children.toArray(children).map((child) => {\n\t\tif (!isTabsLayoutElement<TabsLayoutTabProps>(child, tabsLayoutTabDisplayName)) {\n\t\t\tthrow new Error(\"TabsLayout принимает только дочерние элементы TabsLayout.Tab.\");\n\t\t}\n\n\t\treturn {\n\t\t\tid: child.props.id,\n\t\t\ttitle: child.props.title,\n\t\t\tdisabled: child.props.disabled,\n\t\t\t...parseTabsLayoutSections(child.props.children, child.props.id)\n\t\t};\n\t});\n}\n\n/**\n * Compound-оболочка tabs для составных panel-layout сценариев.\n * Сам компонент управляет только переключением и каркасом панели.\n */\nexport function TabsLayout({\n\tchildren,\n\tvalue,\n\tdefaultValue,\n\tonValueChange,\n\tclassName,\n\torientation = \"horizontal\",\n\tactivationMode = \"manual\",\n\tmountStrategy = \"lazy\",\n\tloop = true,\n\ttone = \"primary\",\n\tclean = false,\n\t\"aria-label\": ariaLabel,\n\t\"aria-labelledby\": ariaLabelledBy\n}: TabsLayoutProps) {\n\tconst tabs = useMemo(() => parseTabsLayoutChildren(children), [children]);\n\tconst state = useTabsState({\n\t\titems: tabs,\n\t\tvalue,\n\t\tdefaultValue,\n\t\tonValueChange,\n\t\torientation,\n\t\tactivationMode,\n\t\tloop\n\t});\n\tconst rootClassName = cn(\n\t\tstyles.tabsContainer,\n\t\tclean ? styles.clean : uiStyles.uiFilledPanel,\n\t\tstyles[orientation],\n\t\tgetUiPanelToneClassName(tone),\n\t\tclassName\n\t);\n\tconst panelsClassName = cn(styles.panels, styles.layoutPanels);\n\n\treturn (\n\t\t<div className={rootClassName}>\n\t\t\t<TabsTabList items={tabs} state={state} className={styles.tabs} ariaLabel={ariaLabel} ariaLabelledBy={ariaLabelledBy} />\n\n\t\t\t<div className={panelsClassName}>\n\t\t\t\t{tabs.map((tab) => {\n\t\t\t\t\tconst isSelected = tab.id === state.selectedTabId;\n\t\t\t\t\tconst isMounted = shouldMountTabPanel({\n\t\t\t\t\t\tmountStrategy,\n\t\t\t\t\t\tisSelected,\n\t\t\t\t\t\tisVisited: state.isVisited(tab.id)\n\t\t\t\t\t});\n\n\t\t\t\t\tconst templateRows = `${tab.toolbar ? \"auto \" : \"\"}minmax(0, 1fr)${tab.footer ? \" auto\" : \"\"}`;\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<TabsPanel\n\t\t\t\t\t\t\tkey={tab.id}\n\t\t\t\t\t\t\ttabId={tab.id}\n\t\t\t\t\t\t\tisSelected={isSelected}\n\t\t\t\t\t\t\tclassName={styles.panel}\n\t\t\t\t\t\t\tgetTabElementId={state.getTabElementId}\n\t\t\t\t\t\t\tgetPanelElementId={state.getPanelElementId}>\n\t\t\t\t\t\t\t{isMounted ? (\n\t\t\t\t\t\t\t\t<div className={styles.layoutPanel} style={{ gridTemplateRows: templateRows }}>\n\t\t\t\t\t\t\t\t\t{tab.toolbar ? (\n\t\t\t\t\t\t\t\t\t\t<div className={cn(styles.layoutSection, tab.toolbar.className)}>{tab.toolbar.children}</div>\n\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t\t<div className={cn(styles.layoutSection, styles.layoutContent, tab.content.className)}>\n\t\t\t\t\t\t\t\t\t\t{tab.content.children}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t{tab.footer ? (\n\t\t\t\t\t\t\t\t\t\t<div className={cn(styles.layoutSection, tab.footer.className)}>{tab.footer.children}</div>\n\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t</TabsPanel>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nTabsLayout.Tab = TabsLayoutTab;\nTabsLayout.Toolbar = TabsLayoutToolbar;\nTabsLayout.Content = TabsLayoutContent;\nTabsLayout.Footer = TabsLayoutFooter;\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { TabsBoxProps } from "../model/types";
1
+ import { type TabsBoxProps } from "../model/types";
2
2
  /**
3
3
  * Простой items-based tabs-компонент.
4
4
  * Сам управляет областью панели и её прокруткой.
@@ -1 +1 @@
1
- {"version":3,"file":"TabsBox.d.ts","sourceRoot":"","sources":["../../../src/tabs/ui/TabsBox.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAS9C;;;GAGG;AACH,wBAAgB,OAAO,CAAC,EACvB,KAAK,EACL,KAAK,EACL,YAAY,EACZ,aAAa,EACb,SAAS,EACT,SAAS,EACT,WAAW,EACX,WAA0B,EAC1B,cAA4B,EAC5B,aAAyB,EACzB,IAAW,EACX,IAAgB,EAChB,KAAa,EACb,YAAY,EAAE,SAAS,EACvB,iBAAiB,EAAE,cAAc,EACjC,EAAE,YAAY,+BA+Ed"}
1
+ {"version":3,"file":"TabsBox.d.ts","sourceRoot":"","sources":["../../../src/tabs/ui/TabsBox.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AASnD;;;GAGG;AACH,wBAAgB,OAAO,CAAC,EACvB,KAAK,EACL,KAAK,EACL,YAAY,EACZ,aAAa,EACb,SAAS,EACT,SAAS,EACT,WAAW,EACX,WAA0B,EAC1B,cAA4B,EAC5B,aAAyB,EACzB,IAAW,EACX,IAAgB,EAChB,KAAa,EACb,YAAY,EAAE,SAAS,EACvB,iBAAiB,EAAE,cAAc,EACjC,EAAE,YAAY,+BA2Ed"}
@@ -28,12 +28,16 @@ declare function TabsLayoutFooter({ children }: TabsLayoutSectionProps): React.J
28
28
  declare namespace TabsLayoutFooter {
29
29
  var displayName: string;
30
30
  }
31
- type TabsLayoutComposition = React.FC<TabsLayoutProps> & {
32
- Tab: typeof TabsLayoutTab;
33
- Toolbar: typeof TabsLayoutToolbar;
34
- Content: typeof TabsLayoutContent;
35
- Footer: typeof TabsLayoutFooter;
36
- };
37
- export declare const TabsLayout: TabsLayoutComposition;
31
+ /**
32
+ * Compound-оболочка tabs для составных panel-layout сценариев.
33
+ * Сам компонент управляет только переключением и каркасом панели.
34
+ */
35
+ export declare function TabsLayout({ children, value, defaultValue, onValueChange, className, orientation, activationMode, mountStrategy, loop, tone, clean, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy }: TabsLayoutProps): React.JSX.Element;
36
+ export declare namespace TabsLayout {
37
+ var Tab: typeof TabsLayoutTab;
38
+ var Toolbar: typeof TabsLayoutToolbar;
39
+ var Content: typeof TabsLayoutContent;
40
+ var Footer: typeof TabsLayoutFooter;
41
+ }
38
42
  export {};
39
43
  //# sourceMappingURL=TabsLayout.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TabsLayout.d.ts","sourceRoot":"","sources":["../../../src/tabs/ui/TabsLayout.tsx"],"names":[],"mappings":"AACA,OAAO,KAA4C,MAAM,OAAO,CAAC;AAajE,OAAO,KAAK,EAAkB,eAAe,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AA4ClH;;GAEG;AACH,iBAAS,aAAa,CAAC,EAAE,QAAQ,EAAE,EAAE,kBAAkB,qBAEtD;kBAFQ,aAAa;;;AAMtB;;GAEG;AACH,iBAAS,iBAAiB,CAAC,EAAE,QAAQ,EAAE,EAAE,sBAAsB,qBAE9D;kBAFQ,iBAAiB;;;AAM1B;;GAEG;AACH,iBAAS,iBAAiB,CAAC,EAAE,QAAQ,EAAE,EAAE,sBAAsB,qBAE9D;kBAFQ,iBAAiB;;;AAM1B;;GAEG;AACH,iBAAS,gBAAgB,CAAC,EAAE,QAAQ,EAAE,EAAE,sBAAsB,qBAE7D;kBAFQ,gBAAgB;;;AAwEzB,KAAK,qBAAqB,GAAG,KAAK,CAAC,EAAE,CAAC,eAAe,CAAC,GAAG;IACxD,GAAG,EAAE,OAAO,aAAa,CAAC;IAC1B,OAAO,EAAE,OAAO,iBAAiB,CAAC;IAClC,OAAO,EAAE,OAAO,iBAAiB,CAAC;IAClC,MAAM,EAAE,OAAO,gBAAgB,CAAC;CAChC,CAAC;AAwFF,eAAO,MAAM,UAAU,EAKjB,qBAAqB,CAAC"}
1
+ {"version":3,"file":"TabsLayout.d.ts","sourceRoot":"","sources":["../../../src/tabs/ui/TabsLayout.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4C,MAAM,OAAO,CAAC;AAajE,OAAO,KAAK,EAAkB,eAAe,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AA4ClH;;GAEG;AACH,iBAAS,aAAa,CAAC,EAAE,QAAQ,EAAE,EAAE,kBAAkB,qBAEtD;kBAFQ,aAAa;;;AAMtB;;GAEG;AACH,iBAAS,iBAAiB,CAAC,EAAE,QAAQ,EAAE,EAAE,sBAAsB,qBAE9D;kBAFQ,iBAAiB;;;AAM1B;;GAEG;AACH,iBAAS,iBAAiB,CAAC,EAAE,QAAQ,EAAE,EAAE,sBAAsB,qBAE9D;kBAFQ,iBAAiB;;;AAM1B;;GAEG;AACH,iBAAS,gBAAgB,CAAC,EAAE,QAAQ,EAAE,EAAE,sBAAsB,qBAE7D;kBAFQ,gBAAgB;;;AAwEzB;;;GAGG;AACH,wBAAgB,UAAU,CAAC,EAC1B,QAAQ,EACR,KAAK,EACL,YAAY,EACZ,aAAa,EACb,SAAS,EACT,WAA0B,EAC1B,cAAyB,EACzB,aAAsB,EACtB,IAAW,EACX,IAAgB,EAChB,KAAa,EACb,YAAY,EAAE,SAAS,EACvB,iBAAiB,EAAE,cAAc,EACjC,EAAE,eAAe,qBA8DjB;yBA5Ee,UAAU"}