@orcestr/ui 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (309) hide show
  1. package/README.md +151 -0
  2. package/README.ru.md +151 -0
  3. package/assets/orcestr-banner.webp +0 -0
  4. package/dist/components/Action/ActionConfirmModal.d.ts +8 -0
  5. package/dist/components/Action/ActionConfirmModal.d.ts.map +1 -0
  6. package/dist/components/Action/ActionConfirmModal.js +13 -0
  7. package/dist/components/Action/ActionTypes.d.ts +47 -0
  8. package/dist/components/Action/ActionTypes.d.ts.map +1 -0
  9. package/dist/components/Action/ActionTypes.js +49 -0
  10. package/dist/components/ActionMenu/ActionMenu.d.ts +3 -0
  11. package/dist/components/ActionMenu/ActionMenu.d.ts.map +1 -0
  12. package/dist/components/ActionMenu/ActionMenu.js +1 -0
  13. package/dist/components/Alert/Alert.d.ts +11 -0
  14. package/dist/components/Alert/Alert.d.ts.map +1 -0
  15. package/dist/components/Alert/Alert.js +7 -0
  16. package/dist/components/AppShell/AppShell.d.ts +102 -0
  17. package/dist/components/AppShell/AppShell.d.ts.map +1 -0
  18. package/dist/components/AppShell/AppShell.js +96 -0
  19. package/dist/components/Badge/Badge.d.ts +15 -0
  20. package/dist/components/Badge/Badge.d.ts.map +1 -0
  21. package/dist/components/Badge/Badge.js +8 -0
  22. package/dist/components/Box/Box.d.ts +11 -0
  23. package/dist/components/Box/Box.d.ts.map +1 -0
  24. package/dist/components/Box/Box.js +8 -0
  25. package/dist/components/Button/Button.d.ts +27 -0
  26. package/dist/components/Button/Button.d.ts.map +1 -0
  27. package/dist/components/Button/Button.js +13 -0
  28. package/dist/components/Checkbox/Checkbox.d.ts +10 -0
  29. package/dist/components/Checkbox/Checkbox.d.ts.map +1 -0
  30. package/dist/components/Checkbox/Checkbox.js +15 -0
  31. package/dist/components/Collapse/Collapse.d.ts +11 -0
  32. package/dist/components/Collapse/Collapse.d.ts.map +1 -0
  33. package/dist/components/Collapse/Collapse.js +33 -0
  34. package/dist/components/Combobox/Combobox.d.ts +17 -0
  35. package/dist/components/Combobox/Combobox.d.ts.map +1 -0
  36. package/dist/components/Combobox/Combobox.js +32 -0
  37. package/dist/components/CommandPalette/CommandPalette.d.ts +21 -0
  38. package/dist/components/CommandPalette/CommandPalette.d.ts.map +1 -0
  39. package/dist/components/CommandPalette/CommandPalette.js +168 -0
  40. package/dist/components/ConfirmDialog/ConfirmDialog.d.ts +25 -0
  41. package/dist/components/ConfirmDialog/ConfirmDialog.d.ts.map +1 -0
  42. package/dist/components/ConfirmDialog/ConfirmDialog.js +25 -0
  43. package/dist/components/ContextMenu/ContextMenu.d.ts +11 -0
  44. package/dist/components/ContextMenu/ContextMenu.d.ts.map +1 -0
  45. package/dist/components/ContextMenu/ContextMenu.js +68 -0
  46. package/dist/components/DataTable/DataTable.d.ts +88 -0
  47. package/dist/components/DataTable/DataTable.d.ts.map +1 -0
  48. package/dist/components/DataTable/DataTable.js +415 -0
  49. package/dist/components/DataTable/DataTableStateAdapters.d.ts +41 -0
  50. package/dist/components/DataTable/DataTableStateAdapters.d.ts.map +1 -0
  51. package/dist/components/DataTable/DataTableStateAdapters.js +192 -0
  52. package/dist/components/DatePicker/DatePicker.d.ts +21 -0
  53. package/dist/components/DatePicker/DatePicker.d.ts.map +1 -0
  54. package/dist/components/DatePicker/DatePicker.js +39 -0
  55. package/dist/components/DatePicker/DatePickerState.d.ts +30 -0
  56. package/dist/components/DatePicker/DatePickerState.d.ts.map +1 -0
  57. package/dist/components/DatePicker/DatePickerState.js +106 -0
  58. package/dist/components/DateRangePicker/DateRangePicker.d.ts +19 -0
  59. package/dist/components/DateRangePicker/DateRangePicker.d.ts.map +1 -0
  60. package/dist/components/DateRangePicker/DateRangePicker.js +6 -0
  61. package/dist/components/DateRangePresetPicker/DateRangePresetPicker.d.ts +10 -0
  62. package/dist/components/DateRangePresetPicker/DateRangePresetPicker.d.ts.map +1 -0
  63. package/dist/components/DateRangePresetPicker/DateRangePresetPicker.js +26 -0
  64. package/dist/components/DateRangePresetPicker/DateRangePresetPickerState.d.ts +4 -0
  65. package/dist/components/DateRangePresetPicker/DateRangePresetPickerState.d.ts.map +1 -0
  66. package/dist/components/DateRangePresetPicker/DateRangePresetPickerState.js +20 -0
  67. package/dist/components/Dialog/Dialog.d.ts +2 -0
  68. package/dist/components/Dialog/Dialog.d.ts.map +1 -0
  69. package/dist/components/Dialog/Dialog.js +1 -0
  70. package/dist/components/Drawer/Drawer.d.ts +30 -0
  71. package/dist/components/Drawer/Drawer.d.ts.map +1 -0
  72. package/dist/components/Drawer/Drawer.js +83 -0
  73. package/dist/components/EntityPicker/EntityPicker.d.ts +41 -0
  74. package/dist/components/EntityPicker/EntityPicker.d.ts.map +1 -0
  75. package/dist/components/EntityPicker/EntityPicker.js +17 -0
  76. package/dist/components/Field/Field.d.ts +12 -0
  77. package/dist/components/Field/Field.d.ts.map +1 -0
  78. package/dist/components/Field/Field.js +8 -0
  79. package/dist/components/Flex/Flex.d.ts +9 -0
  80. package/dist/components/Flex/Flex.d.ts.map +1 -0
  81. package/dist/components/Flex/Flex.js +8 -0
  82. package/dist/components/Grid/Grid.d.ts +11 -0
  83. package/dist/components/Grid/Grid.d.ts.map +1 -0
  84. package/dist/components/Grid/Grid.js +12 -0
  85. package/dist/components/Highlight/Highlight.d.ts +27 -0
  86. package/dist/components/Highlight/Highlight.d.ts.map +1 -0
  87. package/dist/components/Highlight/Highlight.js +26 -0
  88. package/dist/components/IconButton/IconButton.d.ts +25 -0
  89. package/dist/components/IconButton/IconButton.d.ts.map +1 -0
  90. package/dist/components/IconButton/IconButton.js +13 -0
  91. package/dist/components/IconText/IconText.d.ts +12 -0
  92. package/dist/components/IconText/IconText.d.ts.map +1 -0
  93. package/dist/components/IconText/IconText.js +7 -0
  94. package/dist/components/Listbox/Listbox.d.ts +13 -0
  95. package/dist/components/Listbox/Listbox.d.ts.map +1 -0
  96. package/dist/components/Listbox/Listbox.js +74 -0
  97. package/dist/components/Menu/Menu.d.ts +14 -0
  98. package/dist/components/Menu/Menu.d.ts.map +1 -0
  99. package/dist/components/Menu/Menu.js +168 -0
  100. package/dist/components/Modal/Modal.d.ts +29 -0
  101. package/dist/components/Modal/Modal.d.ts.map +1 -0
  102. package/dist/components/Modal/Modal.js +155 -0
  103. package/dist/components/MultiSelect/MultiSelect.d.ts +21 -0
  104. package/dist/components/MultiSelect/MultiSelect.d.ts.map +1 -0
  105. package/dist/components/MultiSelect/MultiSelect.js +139 -0
  106. package/dist/components/NumberField/NumberField.d.ts +4 -0
  107. package/dist/components/NumberField/NumberField.d.ts.map +1 -0
  108. package/dist/components/NumberField/NumberField.js +6 -0
  109. package/dist/components/Overlay/OverlayProvider.d.ts +19 -0
  110. package/dist/components/Overlay/OverlayProvider.d.ts.map +1 -0
  111. package/dist/components/Overlay/OverlayProvider.js +73 -0
  112. package/dist/components/PaginatedCombobox/PaginatedCombobox.d.ts +48 -0
  113. package/dist/components/PaginatedCombobox/PaginatedCombobox.d.ts.map +1 -0
  114. package/dist/components/PaginatedCombobox/PaginatedCombobox.js +223 -0
  115. package/dist/components/PaginatedCombobox/PaginatedComboboxReactQueryAdapter.d.ts +13 -0
  116. package/dist/components/PaginatedCombobox/PaginatedComboboxReactQueryAdapter.d.ts.map +1 -0
  117. package/dist/components/PaginatedCombobox/PaginatedComboboxReactQueryAdapter.js +10 -0
  118. package/dist/components/Pagination/Pagination.d.ts +7 -0
  119. package/dist/components/Pagination/Pagination.d.ts.map +1 -0
  120. package/dist/components/Pagination/Pagination.js +9 -0
  121. package/dist/components/Popover/Popover.d.ts +19 -0
  122. package/dist/components/Popover/Popover.d.ts.map +1 -0
  123. package/dist/components/Popover/Popover.js +83 -0
  124. package/dist/components/Portal/Portal.d.ts +6 -0
  125. package/dist/components/Portal/Portal.d.ts.map +1 -0
  126. package/dist/components/Portal/Portal.js +23 -0
  127. package/dist/components/RadioGroup/RadioGroup.d.ts +14 -0
  128. package/dist/components/RadioGroup/RadioGroup.d.ts.map +1 -0
  129. package/dist/components/RadioGroup/RadioGroup.js +6 -0
  130. package/dist/components/ScrollArea/ScrollArea.d.ts +36 -0
  131. package/dist/components/ScrollArea/ScrollArea.d.ts.map +1 -0
  132. package/dist/components/ScrollArea/ScrollArea.js +124 -0
  133. package/dist/components/Section/Section.d.ts +14 -0
  134. package/dist/components/Section/Section.d.ts.map +1 -0
  135. package/dist/components/Section/Section.js +20 -0
  136. package/dist/components/SegmentedControl/SegmentedControl.d.ts +13 -0
  137. package/dist/components/SegmentedControl/SegmentedControl.d.ts.map +1 -0
  138. package/dist/components/SegmentedControl/SegmentedControl.js +6 -0
  139. package/dist/components/Select/Select.d.ts +27 -0
  140. package/dist/components/Select/Select.d.ts.map +1 -0
  141. package/dist/components/Select/Select.js +142 -0
  142. package/dist/components/Separator/Separator.d.ts +6 -0
  143. package/dist/components/Separator/Separator.d.ts.map +1 -0
  144. package/dist/components/Separator/Separator.js +5 -0
  145. package/dist/components/Skeleton/Skeleton.d.ts +9 -0
  146. package/dist/components/Skeleton/Skeleton.d.ts.map +1 -0
  147. package/dist/components/Skeleton/Skeleton.js +8 -0
  148. package/dist/components/Spinner/Spinner.d.ts +7 -0
  149. package/dist/components/Spinner/Spinner.d.ts.map +1 -0
  150. package/dist/components/Spinner/Spinner.js +5 -0
  151. package/dist/components/Stack/Stack.d.ts +9 -0
  152. package/dist/components/Stack/Stack.d.ts.map +1 -0
  153. package/dist/components/Stack/Stack.js +7 -0
  154. package/dist/components/State/State.d.ts +23 -0
  155. package/dist/components/State/State.d.ts.map +1 -0
  156. package/dist/components/State/State.js +30 -0
  157. package/dist/components/State/stateIcon.d.ts +3 -0
  158. package/dist/components/State/stateIcon.d.ts.map +1 -0
  159. package/dist/components/State/stateIcon.js +11 -0
  160. package/dist/components/StepperInput/StepperInput.d.ts +13 -0
  161. package/dist/components/StepperInput/StepperInput.d.ts.map +1 -0
  162. package/dist/components/StepperInput/StepperInput.js +22 -0
  163. package/dist/components/Switch/Switch.d.ts +10 -0
  164. package/dist/components/Switch/Switch.d.ts.map +1 -0
  165. package/dist/components/Switch/Switch.js +14 -0
  166. package/dist/components/Tabs/Tabs.d.ts +18 -0
  167. package/dist/components/Tabs/Tabs.d.ts.map +1 -0
  168. package/dist/components/Tabs/Tabs.js +104 -0
  169. package/dist/components/Text/Text.d.ts +13 -0
  170. package/dist/components/Text/Text.d.ts.map +1 -0
  171. package/dist/components/Text/Text.js +8 -0
  172. package/dist/components/TextArea/TextArea.d.ts +15 -0
  173. package/dist/components/TextArea/TextArea.d.ts.map +1 -0
  174. package/dist/components/TextArea/TextArea.js +17 -0
  175. package/dist/components/TextField/TextField.d.ts +25 -0
  176. package/dist/components/TextField/TextField.d.ts.map +1 -0
  177. package/dist/components/TextField/TextField.js +31 -0
  178. package/dist/components/Toast/Toast.d.ts +43 -0
  179. package/dist/components/Toast/Toast.d.ts.map +1 -0
  180. package/dist/components/Toast/Toast.js +205 -0
  181. package/dist/components/Tooltip/Tooltip.d.ts +10 -0
  182. package/dist/components/Tooltip/Tooltip.d.ts.map +1 -0
  183. package/dist/components/Tooltip/Tooltip.js +24 -0
  184. package/dist/components/VisuallyHidden/VisuallyHidden.d.ts +8 -0
  185. package/dist/components/VisuallyHidden/VisuallyHidden.d.ts.map +1 -0
  186. package/dist/components/VisuallyHidden/VisuallyHidden.js +6 -0
  187. package/dist/components/Workflow/Workflow.d.ts +82 -0
  188. package/dist/components/Workflow/Workflow.d.ts.map +1 -0
  189. package/dist/components/Workflow/Workflow.js +73 -0
  190. package/dist/example/CodePreview.d.ts +25 -0
  191. package/dist/example/CodePreview.d.ts.map +1 -0
  192. package/dist/example/CodePreview.js +93 -0
  193. package/dist/example/ExampleActionsSection.d.ts +10 -0
  194. package/dist/example/ExampleActionsSection.d.ts.map +1 -0
  195. package/dist/example/ExampleActionsSection.js +10 -0
  196. package/dist/example/ExampleBasicsSections.d.ts +8 -0
  197. package/dist/example/ExampleBasicsSections.d.ts.map +1 -0
  198. package/dist/example/ExampleBasicsSections.js +43 -0
  199. package/dist/example/ExampleDataSection.d.ts +7 -0
  200. package/dist/example/ExampleDataSection.d.ts.map +1 -0
  201. package/dist/example/ExampleDataSection.js +124 -0
  202. package/dist/example/ExampleFieldsSection.d.ts +17 -0
  203. package/dist/example/ExampleFieldsSection.d.ts.map +1 -0
  204. package/dist/example/ExampleFieldsSection.js +10 -0
  205. package/dist/example/ExampleFoundationsSection.d.ts +5 -0
  206. package/dist/example/ExampleFoundationsSection.d.ts.map +1 -0
  207. package/dist/example/ExampleFoundationsSection.js +25 -0
  208. package/dist/example/ExampleOverlays.d.ts +30 -0
  209. package/dist/example/ExampleOverlays.d.ts.map +1 -0
  210. package/dist/example/ExampleOverlays.js +12 -0
  211. package/dist/example/ExampleOverlaysSection.d.ts +14 -0
  212. package/dist/example/ExampleOverlaysSection.d.ts.map +1 -0
  213. package/dist/example/ExampleOverlaysSection.js +126 -0
  214. package/dist/example/ExampleSelectionSection.d.ts +30 -0
  215. package/dist/example/ExampleSelectionSection.d.ts.map +1 -0
  216. package/dist/example/ExampleSelectionSection.js +66 -0
  217. package/dist/example/ExampleStateSection.d.ts +8 -0
  218. package/dist/example/ExampleStateSection.d.ts.map +1 -0
  219. package/dist/example/ExampleStateSection.js +76 -0
  220. package/dist/example/ExampleThemePlayground.d.ts +417 -0
  221. package/dist/example/ExampleThemePlayground.d.ts.map +1 -0
  222. package/dist/example/ExampleThemePlayground.js +596 -0
  223. package/dist/example/UiExamplePage.d.ts +2 -0
  224. package/dist/example/UiExamplePage.d.ts.map +1 -0
  225. package/dist/example/UiExamplePage.js +315 -0
  226. package/dist/example/UiExampleSection.d.ts +8 -0
  227. package/dist/example/UiExampleSection.d.ts.map +1 -0
  228. package/dist/example/UiExampleSection.js +5 -0
  229. package/dist/example/codeSamples.d.ts +30 -0
  230. package/dist/example/codeSamples.d.ts.map +1 -0
  231. package/dist/example/codeSamples.js +976 -0
  232. package/dist/example/exampleData.d.ts +33 -0
  233. package/dist/example/exampleData.d.ts.map +1 -0
  234. package/dist/example/exampleData.js +217 -0
  235. package/dist/example/styles.css +1106 -0
  236. package/dist/hooks/useControllableState.d.ts +6 -0
  237. package/dist/hooks/useControllableState.d.ts.map +1 -0
  238. package/dist/hooks/useControllableState.js +16 -0
  239. package/dist/hooks/useDisclosure.d.ts +12 -0
  240. package/dist/hooks/useDisclosure.d.ts.map +1 -0
  241. package/dist/hooks/useDisclosure.js +14 -0
  242. package/dist/hooks/useEscapeKey.d.ts +2 -0
  243. package/dist/hooks/useEscapeKey.d.ts.map +1 -0
  244. package/dist/hooks/useEscapeKey.js +15 -0
  245. package/dist/hooks/useFloatingLayer.d.ts +19 -0
  246. package/dist/hooks/useFloatingLayer.d.ts.map +1 -0
  247. package/dist/hooks/useFloatingLayer.js +26 -0
  248. package/dist/hooks/useFloatingPosition.d.ts +17 -0
  249. package/dist/hooks/useFloatingPosition.d.ts.map +1 -0
  250. package/dist/hooks/useFloatingPosition.js +132 -0
  251. package/dist/hooks/useFocusTrap.d.ts +3 -0
  252. package/dist/hooks/useFocusTrap.d.ts.map +1 -0
  253. package/dist/hooks/useFocusTrap.js +54 -0
  254. package/dist/hooks/useListNavigation.d.ts +17 -0
  255. package/dist/hooks/useListNavigation.d.ts.map +1 -0
  256. package/dist/hooks/useListNavigation.js +44 -0
  257. package/dist/hooks/useOutsidePointerDown.d.ts +3 -0
  258. package/dist/hooks/useOutsidePointerDown.d.ts.map +1 -0
  259. package/dist/hooks/useOutsidePointerDown.js +20 -0
  260. package/dist/hooks/usePresence.d.ts +5 -0
  261. package/dist/hooks/usePresence.d.ts.map +1 -0
  262. package/dist/hooks/usePresence.js +35 -0
  263. package/dist/hooks/useTypeahead.d.ts +2 -0
  264. package/dist/hooks/useTypeahead.d.ts.map +1 -0
  265. package/dist/hooks/useTypeahead.js +23 -0
  266. package/dist/index.d.ts +64 -0
  267. package/dist/index.d.ts.map +1 -0
  268. package/dist/index.js +64 -0
  269. package/dist/locale/LocaleProvider.d.ts +89 -0
  270. package/dist/locale/LocaleProvider.d.ts.map +1 -0
  271. package/dist/locale/LocaleProvider.js +174 -0
  272. package/dist/provider/OrcestrUiProvider.d.ts +28 -0
  273. package/dist/provider/OrcestrUiProvider.d.ts.map +1 -0
  274. package/dist/provider/OrcestrUiProvider.js +9 -0
  275. package/dist/react-query.d.ts +2 -0
  276. package/dist/react-query.d.ts.map +1 -0
  277. package/dist/react-query.js +1 -0
  278. package/dist/styles/orcestr-ui.css +4676 -0
  279. package/dist/theme/ThemeProvider.d.ts +3 -0
  280. package/dist/theme/ThemeProvider.d.ts.map +1 -0
  281. package/dist/theme/ThemeProvider.js +280 -0
  282. package/dist/theme/defaultTheme.d.ts +12 -0
  283. package/dist/theme/defaultTheme.d.ts.map +1 -0
  284. package/dist/theme/defaultTheme.js +516 -0
  285. package/dist/theme/systemProps.d.ts +53 -0
  286. package/dist/theme/systemProps.d.ts.map +1 -0
  287. package/dist/theme/systemProps.js +240 -0
  288. package/dist/theme/themeTypes.d.ts +197 -0
  289. package/dist/theme/themeTypes.d.ts.map +1 -0
  290. package/dist/theme/themeTypes.js +1 -0
  291. package/dist/theme/useTheme.d.ts +4 -0
  292. package/dist/theme/useTheme.d.ts.map +1 -0
  293. package/dist/theme/useTheme.js +10 -0
  294. package/dist/utils/cn.d.ts +2 -0
  295. package/dist/utils/cn.d.ts.map +1 -0
  296. package/dist/utils/cn.js +3 -0
  297. package/dist/utils/composeRefs.d.ts +3 -0
  298. package/dist/utils/composeRefs.d.ts.map +1 -0
  299. package/dist/utils/composeRefs.js +14 -0
  300. package/dist/utils/mergeProps.d.ts +4 -0
  301. package/dist/utils/mergeProps.d.ts.map +1 -0
  302. package/dist/utils/mergeProps.js +26 -0
  303. package/dist/utils/ownerDocument.d.ts +2 -0
  304. package/dist/utils/ownerDocument.d.ts.map +1 -0
  305. package/dist/utils/ownerDocument.js +3 -0
  306. package/dist/utils/polymorphic.d.ts +6 -0
  307. package/dist/utils/polymorphic.d.ts.map +1 -0
  308. package/dist/utils/polymorphic.js +1 -0
  309. package/package.json +78 -0
@@ -0,0 +1,315 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
4
+ import { LuBell, LuCheck, LuExternalLink, LuRefreshCw, LuTrash2, } from 'react-icons/lu';
5
+ import { AppShell, AppShellContent, AppShellHeader, AppShellNav, AppShellSidebar, OrcestrUiProvider, ScrollArea, useOrcestrTheme, useToast, } from '..';
6
+ import { LayoutSection, TypographySection } from './ExampleBasicsSections';
7
+ import { ActionsSection } from './ExampleActionsSection';
8
+ import { FieldsSection } from './ExampleFieldsSection';
9
+ import { SelectionSection } from './ExampleSelectionSection';
10
+ import { DataSection } from './ExampleDataSection';
11
+ import { OverlaysSection } from './ExampleOverlaysSection';
12
+ import { FoundationsSection } from './ExampleFoundationsSection';
13
+ import { IconTextSection, StateCardSection } from './ExampleStateSection';
14
+ import { ExampleThemePlayground, getThemePlaygroundPreset, themePlaygroundPresets, themePresetLabel, themePresetPreviewStyle, } from './ExampleThemePlayground';
15
+ import { CodePreviewModal } from './CodePreview';
16
+ import { ExampleOverlays } from './ExampleOverlays';
17
+ import {} from './codeSamples';
18
+ import { navGroups, navItems } from './exampleData';
19
+ const ORCESTR_LOGO_SRC = '/assets/orcestr/logo.png';
20
+ const UI_EXAMPLE_SCROLL_LEAD = 50;
21
+ function scrollUiExampleSection(id) {
22
+ const node = document.getElementById(id);
23
+ const scrollRoot = document.querySelector('.oui-app-shell-content-scroll .oui-scroll-area-viewport');
24
+ if (!node || !scrollRoot) {
25
+ node?.scrollIntoView({ block: 'start', behavior: 'smooth' });
26
+ return;
27
+ }
28
+ scrollRoot.scrollTo({
29
+ top: uiExampleSectionScrollTop(node, scrollRoot),
30
+ behavior: 'smooth',
31
+ });
32
+ }
33
+ function uiExampleSectionScrollTop(node, scrollRoot) {
34
+ const maxTop = scrollRoot
35
+ ? Math.max(0, scrollRoot.scrollHeight - scrollRoot.clientHeight)
36
+ : Number.POSITIVE_INFINITY;
37
+ return Math.min(maxTop, Math.max(0, node.offsetTop - UI_EXAMPLE_SCROLL_LEAD));
38
+ }
39
+ function UiExampleContent({ activePresetId, onThemePresetChange, onThemeOverridesChange, locale, onLocaleChange, }) {
40
+ const { theme } = useOrcestrTheme();
41
+ const toast = useToast();
42
+ const [segment, setSegment] = useState('active');
43
+ const [selectValue, setSelectValue] = useState('work');
44
+ const [selectNoChevronValue, setSelectNoChevronValue] = useState('ready');
45
+ const [selectPlainValue, setSelectPlainValue] = useState('blocked');
46
+ const [comboValue, setComboValue] = useState('ready');
47
+ const [entityValue, setEntityValue] = useState(null);
48
+ const [ownerValues, setOwnerValues] = useState(['anna', 'ops']);
49
+ const [radioValue, setRadioValue] = useState('manual');
50
+ const [tabValue, setTabValue] = useState('overview');
51
+ const [modalOpen, setModalOpen] = useState(false);
52
+ const [nestedOpen, setNestedOpen] = useState(false);
53
+ const [blurModalOpen, setBlurModalOpen] = useState(false);
54
+ const [blurNestedOpen, setBlurNestedOpen] = useState(false);
55
+ const [blurFinalOpen, setBlurFinalOpen] = useState(false);
56
+ const [fastModalOpen, setFastModalOpen] = useState(false);
57
+ const [slowModalOpen, setSlowModalOpen] = useState(false);
58
+ const [riseModalOpen, setRiseModalOpen] = useState(false);
59
+ const [dangerModalOpen, setDangerModalOpen] = useState(false);
60
+ const [paletteOpen, setPaletteOpen] = useState(false);
61
+ const [codeExample, setCodeExample] = useState(null);
62
+ const [mobileNavOpen, setMobileNavOpen] = useState(false);
63
+ const [stepperValue, setStepperValue] = useState(12);
64
+ const [dateValue, setDateValue] = useState('2026-06-26');
65
+ const [dateRange, setDateRange] = useState({
66
+ from: '2026-06-01',
67
+ to: '2026-06-26',
68
+ });
69
+ useEffect(() => {
70
+ document.documentElement.classList.add('oui-ui-document-lock');
71
+ document.body.classList.add('oui-ui-document-lock');
72
+ const hash = window.location.hash.replace('#', '');
73
+ let hashSettleTimer = null;
74
+ const hashFrame = hash
75
+ ? window.requestAnimationFrame(() => {
76
+ scrollUiExampleSection(hash);
77
+ hashSettleTimer = window.setTimeout(() => {
78
+ scrollUiExampleSection(hash);
79
+ }, 450);
80
+ })
81
+ : null;
82
+ return () => {
83
+ if (hashFrame !== null)
84
+ window.cancelAnimationFrame(hashFrame);
85
+ if (hashSettleTimer !== null)
86
+ window.clearTimeout(hashSettleTimer);
87
+ document.documentElement.classList.remove('oui-ui-document-lock');
88
+ document.body.classList.remove('oui-ui-document-lock');
89
+ };
90
+ }, []);
91
+ const menuItems = useMemo(() => {
92
+ const copy = locale === 'ru'
93
+ ? {
94
+ copy: 'Скопировать ссылку',
95
+ notify: 'Уведомить команду',
96
+ notifyInfo: 'Подсказка внутри пункта меню',
97
+ syncing: 'Синхронизация остатков',
98
+ more: 'Еще действия',
99
+ duplicate: 'Дублировать',
100
+ duplicateToast: 'Дублировано',
101
+ archive: 'Архивировать',
102
+ archiveToast: 'Архивировано',
103
+ delete: 'Удалить',
104
+ deleteTitle: 'Удалить элемент?',
105
+ deleteMessage: 'Это действие нельзя отменить.',
106
+ deletedToast: 'Удалено',
107
+ }
108
+ : {
109
+ copy: 'Copy link',
110
+ notify: 'Notify team',
111
+ notifyInfo: 'Info tooltip inside a menu item',
112
+ syncing: 'Syncing status',
113
+ more: 'More actions',
114
+ duplicate: 'Duplicate',
115
+ duplicateToast: 'Duplicated',
116
+ archive: 'Archive',
117
+ archiveToast: 'Archived',
118
+ delete: 'Delete',
119
+ deleteTitle: 'Delete item?',
120
+ deleteMessage: 'This action cannot be undone.',
121
+ deletedToast: 'Deleted',
122
+ };
123
+ return [
124
+ { key: 'copy', label: copy.copy, icon: _jsx(LuCheck, { size: 15 }) },
125
+ {
126
+ key: 'notify',
127
+ label: copy.notify,
128
+ icon: _jsx(LuBell, { size: 15 }),
129
+ info: copy.notifyInfo,
130
+ },
131
+ {
132
+ key: 'syncing',
133
+ label: copy.syncing,
134
+ icon: _jsx(LuRefreshCw, { size: 15 }),
135
+ loading: true,
136
+ },
137
+ {
138
+ key: 'more',
139
+ label: copy.more,
140
+ children: [
141
+ {
142
+ key: 'duplicate',
143
+ label: copy.duplicate,
144
+ onSelect: () => toast.push(copy.duplicateToast, 'success'),
145
+ },
146
+ {
147
+ key: 'archive',
148
+ label: copy.archive,
149
+ onSelect: () => toast.push(copy.archiveToast, 'info'),
150
+ },
151
+ ],
152
+ },
153
+ {
154
+ key: 'sep',
155
+ label: copy.delete,
156
+ icon: _jsx(LuTrash2, { size: 15 }),
157
+ tone: 'danger',
158
+ separatorBefore: true,
159
+ confirm: {
160
+ title: copy.deleteTitle,
161
+ message: copy.deleteMessage,
162
+ confirmLabel: copy.delete,
163
+ tone: 'danger',
164
+ },
165
+ onSelect: () => toast.push(copy.deletedToast, 'warning'),
166
+ },
167
+ ];
168
+ }, [locale, toast]);
169
+ return (_jsxs(AppShell, { sidebarOpen: mobileNavOpen, onSidebarOpenChange: setMobileNavOpen, header: _jsx(AppShellHeader, { visibility: 'mobile', sidebarOpen: mobileNavOpen, onSidebarOpenChange: setMobileNavOpen, actions: _jsx(UiExampleHeaderActions, { compact: true, locale: locale, onLocaleChange: onLocaleChange }), children: _jsx(UiExampleBrand, { compact: true }) }), sidebar: _jsx(AppShellSidebar, { title: _jsx(UiExampleBrand, {}), onClose: () => setMobileNavOpen(false), children: _jsx(UiExampleSidebar, { onNavigate: () => setMobileNavOpen(false) }) }), children: [_jsxs("div", { className: 'oui-ui-workspace', children: [_jsxs("div", { className: 'oui-ui-workspace-main', children: [_jsx(UiExampleTopBar, { locale: locale, onLocaleChange: onLocaleChange }), _jsxs(AppShellContent, { children: [_jsx(ExampleThemePlayground, { activePresetId: activePresetId, theme: theme, locale: locale, onPresetChange: onThemePresetChange, onThemeOverridesChange: onThemeOverridesChange }), _jsx(FoundationsSection, { onOpenCode: setCodeExample }), _jsx(TypographySection, { onOpenCode: setCodeExample }), _jsx(IconTextSection, { onOpenCode: setCodeExample }), _jsx(LayoutSection, { onOpenCode: setCodeExample }), _jsx(ActionsSection, { menuItems: menuItems, onOpenCode: setCodeExample, onOpenPalette: () => setPaletteOpen(true) }), _jsx(FieldsSection, { stepperValue: stepperValue, onStepperValueChange: setStepperValue, dateValue: dateValue, onDateValueChange: setDateValue, dateRange: dateRange, onDateRangeChange: setDateRange, onOpenCode: setCodeExample }), _jsx(SelectionSection, { locale: locale, segment: segment, onSegmentChange: setSegment, selectValue: selectValue, onSelectValueChange: setSelectValue, selectNoChevronValue: selectNoChevronValue, onSelectNoChevronValueChange: setSelectNoChevronValue, selectPlainValue: selectPlainValue, onSelectPlainValueChange: setSelectPlainValue, comboValue: comboValue, onComboValueChange: setComboValue, entityValue: entityValue, onEntityValueChange: setEntityValue, ownerValues: ownerValues, onOwnerValuesChange: setOwnerValues, radioValue: radioValue, onRadioValueChange: setRadioValue, tabValue: tabValue, onTabValueChange: setTabValue, onOpenCode: setCodeExample, onToast: toast.push }), _jsx(StateCardSection, { onOpenCode: setCodeExample }), _jsx(DataSection, { onOpenCode: setCodeExample }), _jsx(OverlaysSection, { setModalOpen: setModalOpen, setBlurModalOpen: setBlurModalOpen, setFastModalOpen: setFastModalOpen, setRiseModalOpen: setRiseModalOpen, setSlowModalOpen: setSlowModalOpen, setDangerModalOpen: setDangerModalOpen, onOpenCode: setCodeExample })] })] }), _jsx(UiExampleThemeRail, { activePresetId: activePresetId, locale: locale, onThemePresetChange: onThemePresetChange })] }), _jsx(CodePreviewModal, { example: codeExample, onClose: () => setCodeExample(null) }), _jsx(ExampleOverlays, { locale: locale, modalOpen: modalOpen, setModalOpen: setModalOpen, nestedOpen: nestedOpen, setNestedOpen: setNestedOpen, blurModalOpen: blurModalOpen, setBlurModalOpen: setBlurModalOpen, blurNestedOpen: blurNestedOpen, setBlurNestedOpen: setBlurNestedOpen, blurFinalOpen: blurFinalOpen, setBlurFinalOpen: setBlurFinalOpen, fastModalOpen: fastModalOpen, setFastModalOpen: setFastModalOpen, slowModalOpen: slowModalOpen, setSlowModalOpen: setSlowModalOpen, riseModalOpen: riseModalOpen, setRiseModalOpen: setRiseModalOpen, dangerModalOpen: dangerModalOpen, setDangerModalOpen: setDangerModalOpen, paletteOpen: paletteOpen, setPaletteOpen: setPaletteOpen, onToast: toast.push })] }));
170
+ }
171
+ function UiExampleThemeRail({ activePresetId, locale, onThemePresetChange, }) {
172
+ const presets = useMemo(() => {
173
+ const dark = themePlaygroundPresets.filter((preset) => preset.group === 'dark');
174
+ const light = themePlaygroundPresets.filter((preset) => preset.group === 'light');
175
+ const next = [];
176
+ const maxLength = Math.max(dark.length, light.length);
177
+ for (let index = 0; index < maxLength; index += 1) {
178
+ if (dark[index])
179
+ next.push(dark[index]);
180
+ if (light[index])
181
+ next.push(light[index]);
182
+ }
183
+ return next;
184
+ }, []);
185
+ return (_jsxs("aside", { className: 'oui-ui-theme-rail', "aria-label": 'Theme presets', children: [_jsx("div", { className: 'oui-ui-theme-rail-title', children: "Themes" }), _jsx(ScrollArea, { className: 'oui-ui-theme-rail-scroll', highlights: true, highlightColor: 'var(--oui-ui-theme-rail-highlight-bg)', highlightTop: {
186
+ start: 18,
187
+ fadeDistance: 90,
188
+ maxOpacity: 0.94,
189
+ }, highlightBottom: {
190
+ start: 12,
191
+ fadeDistance: 90,
192
+ maxOpacity: 0.94,
193
+ }, children: _jsx("div", { className: 'oui-ui-theme-rail-list', children: presets.map((preset) => (_jsxs("button", { type: 'button', className: 'oui-ui-theme-rail-item', "data-active": activePresetId === preset.id ? 'true' : undefined, style: themePresetPreviewStyle(preset), onClick: () => onThemePresetChange(preset), children: [_jsxs("span", { className: 'oui-ui-theme-rail-preview', "aria-hidden": true, children: [_jsx("span", {}), _jsx("span", {})] }), _jsx("span", { className: 'oui-ui-theme-rail-name', children: themePresetLabel(preset, locale) })] }, preset.id))) }) })] }));
194
+ }
195
+ function UiExampleSidebar({ onNavigate }) {
196
+ const [activeSection, setActiveSection] = useState('theme');
197
+ const activeSectionRef = useRef('theme');
198
+ const scrollNavigationTargetRef = useRef(null);
199
+ const scrollNavigationReleaseTimerRef = useRef(null);
200
+ const setActiveSectionValue = useCallback((id) => {
201
+ activeSectionRef.current = id;
202
+ setActiveSection((current) => current === id ? current : id);
203
+ }, []);
204
+ const lockScrollNavigationTarget = useCallback((id) => {
205
+ scrollNavigationTargetRef.current = id;
206
+ if (scrollNavigationReleaseTimerRef.current !== null) {
207
+ window.clearTimeout(scrollNavigationReleaseTimerRef.current);
208
+ }
209
+ scrollNavigationReleaseTimerRef.current = window.setTimeout(() => {
210
+ if (scrollNavigationTargetRef.current === id)
211
+ scrollNavigationTargetRef.current = null;
212
+ }, 900);
213
+ }, []);
214
+ useEffect(() => {
215
+ const hash = window.location.hash.replace('#', '');
216
+ if (hash)
217
+ setActiveSectionValue(hash);
218
+ const ids = navItems.map((item) => item.id);
219
+ const nodes = ids
220
+ .map((id) => document.getElementById(id))
221
+ .filter((node) => Boolean(node));
222
+ const scrollRoot = document.querySelector('.oui-app-shell-content-scroll .oui-scroll-area-viewport');
223
+ if (nodes.length === 0 || !scrollRoot)
224
+ return undefined;
225
+ let frame = null;
226
+ const updateActiveSection = () => {
227
+ frame = null;
228
+ const lockedTarget = scrollNavigationTargetRef.current;
229
+ if (lockedTarget) {
230
+ const targetNode = document.getElementById(lockedTarget);
231
+ if (!targetNode) {
232
+ scrollNavigationTargetRef.current = null;
233
+ return;
234
+ }
235
+ const targetTop = uiExampleSectionScrollTop(targetNode, scrollRoot);
236
+ if (Math.abs(scrollRoot.scrollTop - targetTop) <= 2) {
237
+ scrollNavigationTargetRef.current = null;
238
+ setActiveSectionValue(lockedTarget);
239
+ }
240
+ return;
241
+ }
242
+ const bottomDistance = scrollRoot.scrollHeight
243
+ - scrollRoot.clientHeight
244
+ - scrollRoot.scrollTop;
245
+ const top = scrollRoot.scrollTop + 24;
246
+ const next = bottomDistance <= 2
247
+ ? nodes.at(-1)?.id
248
+ : nodes.filter((node) => node.offsetTop <= top).at(-1)?.id ?? nodes[0]?.id;
249
+ if (next && next !== activeSectionRef.current)
250
+ setActiveSectionValue(next);
251
+ };
252
+ const requestUpdateActiveSection = () => {
253
+ if (frame !== null)
254
+ return;
255
+ frame = window.requestAnimationFrame(updateActiveSection);
256
+ };
257
+ updateActiveSection();
258
+ scrollRoot.addEventListener('scroll', requestUpdateActiveSection, { passive: true });
259
+ return () => {
260
+ if (frame !== null)
261
+ window.cancelAnimationFrame(frame);
262
+ if (scrollNavigationReleaseTimerRef.current !== null) {
263
+ window.clearTimeout(scrollNavigationReleaseTimerRef.current);
264
+ }
265
+ scrollRoot.removeEventListener('scroll', requestUpdateActiveSection);
266
+ };
267
+ }, [setActiveSectionValue]);
268
+ const navigateToSection = useCallback((id) => {
269
+ setActiveSectionValue(id);
270
+ lockScrollNavigationTarget(id);
271
+ window.history.replaceState(null, '', `#${id}`);
272
+ scrollUiExampleSection(id);
273
+ onNavigate();
274
+ }, [lockScrollNavigationTarget, onNavigate, setActiveSectionValue]);
275
+ const sidebarNavGroups = useMemo(() => navGroups.map((group) => ({
276
+ ...group,
277
+ items: group.items.map((item) => ({
278
+ key: item.id,
279
+ label: item.label,
280
+ active: activeSection === item.id,
281
+ onSelect: () => navigateToSection(item.id),
282
+ })),
283
+ })), [activeSection, navigateToSection]);
284
+ return (_jsx("div", { className: 'oui-ui-sidebar-groups', children: sidebarNavGroups.map((group) => (_jsxs("div", { className: 'oui-ui-sidebar-group', children: [_jsx("div", { className: 'oui-ui-sidebar-group-label', children: group.label }), _jsx(AppShellNav, { className: 'oui-ui-sidebar-nav', items: group.items })] }, group.key))) }));
285
+ }
286
+ function UiExampleTopBar({ locale, onLocaleChange, }) {
287
+ const title = locale === 'ru'
288
+ ? 'Единый язык компонентов для всех модулей.'
289
+ : 'One component language for every module.';
290
+ const subtitle = locale === 'ru'
291
+ ? 'Одна тема, предсказуемый интерфейс.'
292
+ : 'One theme, predictable interface.';
293
+ return (_jsxs("header", { className: 'oui-ui-topbar', children: [_jsxs("div", { className: 'oui-ui-topbar-slogan', children: [_jsx("strong", { children: title }), _jsx("span", { children: subtitle })] }), _jsx(UiExampleHeaderActions, { locale: locale, onLocaleChange: onLocaleChange })] }));
294
+ }
295
+ function UiExampleBrand({ compact = false }) {
296
+ return (_jsxs("div", { className: 'oui-ui-brand', "data-compact": compact ? 'true' : undefined, children: [_jsx("span", { className: 'oui-ui-brand-mark', "aria-hidden": 'true', children: _jsx("img", { className: 'oui-ui-brand-logo', src: ORCESTR_LOGO_SRC, alt: '' }) }), _jsx("span", { className: 'oui-ui-brand-text', children: _jsx("strong", { children: "Orcestr UI" }) })] }));
297
+ }
298
+ function UiExampleHeaderActions({ compact = false, locale, onLocaleChange, }) {
299
+ return (_jsxs("div", { className: 'oui-ui-topbar-actions', "data-compact": compact ? 'true' : undefined, children: [_jsxs("span", { className: 'oui-ui-language-switch', "aria-label": 'UI example language', children: [_jsx("span", { className: 'oui-ui-language-label', children: locale === 'ru' ? 'Язык' : 'Language' }), ['ru', 'en'].map((item) => (_jsx("button", { type: 'button', className: 'oui-ui-language-option', "data-active": locale === item ? 'true' : undefined, "aria-pressed": locale === item, onClick: () => onLocaleChange(item), children: item.toUpperCase() }, item)))] }), _jsxs("a", { className: 'oui-ui-topbar-link', href: 'https://github.com/Artasov/orcestr', target: '_blank', rel: 'noreferrer', children: [_jsx(LuExternalLink, { size: 14, "aria-hidden": true }), _jsx("span", { children: "GitHub" })] })] }));
300
+ }
301
+ export function UiExamplePage() {
302
+ const firstPreset = getThemePlaygroundPreset('orcestr-dark');
303
+ const [activePresetId, setActivePresetId] = useState(firstPreset.id);
304
+ const [mode, setMode] = useState(firstPreset.mode);
305
+ const [surface, setSurface] = useState(firstPreset.surface);
306
+ const [locale, setLocale] = useState('ru');
307
+ const [themeOverrides, setThemeOverrides] = useState(firstPreset.overrides ?? {});
308
+ const handleThemePresetChange = useCallback((preset) => {
309
+ setActivePresetId(preset.id);
310
+ setMode(preset.mode);
311
+ setSurface(preset.surface);
312
+ setThemeOverrides(preset.overrides ?? {});
313
+ }, []);
314
+ return (_jsx(OrcestrUiProvider, { mode: mode, surface: surface, onModeChange: setMode, onSurfaceChange: setSurface, themeOverrides: themeOverrides, locale: locale, children: _jsx(UiExampleContent, { activePresetId: activePresetId, onThemePresetChange: handleThemePresetChange, onThemeOverridesChange: setThemeOverrides, locale: locale, onLocaleChange: setLocale }) }));
315
+ }
@@ -0,0 +1,8 @@
1
+ import type { ReactNode } from 'react';
2
+ export declare function UiExampleSection({ id, title, description, children, }: {
3
+ id: string;
4
+ title: string;
5
+ description?: string;
6
+ children: ReactNode;
7
+ }): import("react/jsx-runtime").JSX.Element;
8
+ //# sourceMappingURL=UiExampleSection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UiExampleSection.d.ts","sourceRoot":"","sources":["../../src/example/UiExampleSection.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,OAAO,CAAC;AAIrC,wBAAgB,gBAAgB,CAAC,EAC7B,EAAE,EACF,KAAK,EACL,WAAW,EACX,QAAQ,GACX,EAAE;IACC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,SAAS,CAAC;CACvB,2CAcA"}
@@ -0,0 +1,5 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Section } from '../components/Section/Section';
3
+ export function UiExampleSection({ id, title, description, children, }) {
4
+ return (_jsxs(Section, { id: id, className: 'oui-ui-section', children: [_jsx("div", { className: 'oui-ui-section-head', children: _jsxs("div", { children: [_jsx("h2", { className: 'oui-ui-section-title', children: title }), description ? (_jsx("p", { className: 'oui-ui-description', children: description })) : null] }) }), children] }));
5
+ }
@@ -0,0 +1,30 @@
1
+ export type CodeExample = {
2
+ title: string;
3
+ code: string;
4
+ };
5
+ export declare const codeSamples: {
6
+ typography: string;
7
+ skeleton: string;
8
+ appShell: string;
9
+ layoutFlex: string;
10
+ layoutStack: string;
11
+ layoutCollapse: string;
12
+ layoutGrid: string;
13
+ highlights: string;
14
+ scrollArea: string;
15
+ systemRadius: string;
16
+ buttons: string;
17
+ iconButtons: string;
18
+ textFields: string;
19
+ groupedFields: string;
20
+ numberAndDateFields: string;
21
+ dateRangeFields: string;
22
+ selection: string;
23
+ selectionGroup: string;
24
+ tabs: string;
25
+ overlays: string;
26
+ toast: string;
27
+ overlaySettings: string;
28
+ data: string;
29
+ };
30
+ //# sourceMappingURL=codeSamples.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codeSamples.d.ts","sourceRoot":"","sources":["../../src/example/codeSamples.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;CA88Bc,CAAC"}