@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,20 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { forwardRef } from 'react';
3
+ import { cn } from '../../utils/cn';
4
+ import { Flex } from '../Flex/Flex';
5
+ function opacityValue(value) {
6
+ if (typeof value === 'string')
7
+ return value;
8
+ if (value <= 1)
9
+ return `${value * 100}%`;
10
+ return `${value}%`;
11
+ }
12
+ export const Section = forwardRef(function Section({ className, style, sectionColor, sectionOpacity, ...props }, ref) {
13
+ const sectionStyle = { ...style };
14
+ if (sectionColor !== undefined)
15
+ sectionStyle['--oui-section-bg'] = sectionColor;
16
+ if (sectionOpacity !== undefined) {
17
+ sectionStyle['--oui-section-opacity'] = opacityValue(sectionOpacity);
18
+ }
19
+ return (_jsx(Flex, { ref: ref, col: true, className: cn('oui-section', className), style: sectionStyle, ...props }));
20
+ });
@@ -0,0 +1,13 @@
1
+ export type SegmentedControlItem = {
2
+ value: string;
3
+ label: string;
4
+ disabled?: boolean;
5
+ };
6
+ export declare function SegmentedControl({ value, onValueChange, items, className, testId, }: {
7
+ value: string;
8
+ onValueChange: (value: string) => void;
9
+ items: ReadonlyArray<SegmentedControlItem>;
10
+ className?: string;
11
+ testId?: string;
12
+ }): import("react/jsx-runtime").JSX.Element;
13
+ //# sourceMappingURL=SegmentedControl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SegmentedControl.d.ts","sourceRoot":"","sources":["../../../src/components/SegmentedControl/SegmentedControl.tsx"],"names":[],"mappings":"AAIA,MAAM,MAAM,oBAAoB,GAAG;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,EAC7B,KAAK,EACL,aAAa,EACb,KAAK,EACL,SAAS,EACT,MAAM,GACT,EAAE;IACC,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,KAAK,EAAE,aAAa,CAAC,oBAAoB,CAAC,CAAC;IAC3C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,2CAkBA"}
@@ -0,0 +1,6 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { cn } from '../../utils/cn';
4
+ export function SegmentedControl({ value, onValueChange, items, className, testId, }) {
5
+ return (_jsx("div", { className: cn('oui-segmented', className), "data-testid": testId, children: items.map((item) => (_jsx("button", { type: 'button', className: 'oui-segmented-item', "data-active": value === item.value ? 'true' : undefined, "data-testid": testId ? `${testId}-${item.value}` : undefined, disabled: item.disabled, onClick: () => onValueChange(item.value), children: item.label }, item.value))) }));
6
+ }
@@ -0,0 +1,27 @@
1
+ import { type ReactNode } from 'react';
2
+ import type { UiSize } from '../../theme/systemProps';
3
+ export type SelectItem<V extends string = string> = {
4
+ value: V;
5
+ label: ReactNode;
6
+ searchText?: string;
7
+ triggerLabel?: ReactNode;
8
+ disabled?: boolean;
9
+ };
10
+ export declare function Select<V extends string = string>({ items, value, onValueChange, placeholder, selectedFallbackLabel, clearable, disabled, emptyText, size, maxHeight, onClear, className, showChevron, clearLabel, testId, }: {
11
+ items: ReadonlyArray<SelectItem<V>>;
12
+ value: V | null;
13
+ onValueChange: (value: V | null) => void;
14
+ placeholder?: string;
15
+ selectedFallbackLabel?: ReactNode;
16
+ clearable?: boolean;
17
+ disabled?: boolean;
18
+ emptyText?: ReactNode;
19
+ size?: UiSize;
20
+ maxHeight?: number;
21
+ onClear?: () => void;
22
+ className?: string;
23
+ showChevron?: boolean;
24
+ clearLabel?: string;
25
+ testId?: string;
26
+ }): import("react/jsx-runtime").JSX.Element;
27
+ //# sourceMappingURL=Select.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Select.d.ts","sourceRoot":"","sources":["../../../src/components/Select/Select.tsx"],"names":[],"mappings":"AAEA,OAAO,EAQH,KAAK,SAAS,EACjB,MAAM,OAAO,CAAC;AAKf,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,yBAAyB,CAAC;AAKpD,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI;IAChD,KAAK,EAAE,CAAC,CAAC;IACT,KAAK,EAAE,SAAS,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,wBAAgB,MAAM,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,EAC9C,KAAK,EACL,KAAK,EACL,aAAa,EACb,WAAW,EACX,qBAAqB,EACrB,SAAiB,EACjB,QAAgB,EAChB,SAAS,EACT,IAAQ,EACR,SAAe,EACf,OAAO,EACP,SAAS,EACT,WAAkB,EAClB,UAAU,EACV,MAAM,GACT,EAAE;IACC,KAAK,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IACpC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IAChB,aAAa,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC;IACzC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qBAAqB,CAAC,EAAE,SAAS,CAAC;IAClC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,2CAoNA"}
@@ -0,0 +1,142 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useCallback, useEffect, useId, useMemo, useRef, useState, } from 'react';
4
+ import { LuCheck, LuChevronsUpDown, LuX } from 'react-icons/lu';
5
+ import { Button } from '../Button/Button';
6
+ import { Popover } from '../Popover/Popover';
7
+ import { useOrcestrUiLocale } from '../../locale/LocaleProvider';
8
+ import { useListNavigation } from '../../hooks/useListNavigation';
9
+ import { useTypeahead } from '../../hooks/useTypeahead';
10
+ export function Select({ items, value, onValueChange, placeholder, selectedFallbackLabel, clearable = false, disabled = false, emptyText, size = 3, maxHeight = 280, onClear, className, showChevron = true, clearLabel, testId, }) {
11
+ const { copy } = useOrcestrUiLocale();
12
+ const actualPlaceholder = placeholder ?? copy.common.selectValue;
13
+ const actualEmptyText = emptyText ?? copy.common.noOptions;
14
+ const [open, setOpen] = useState(false);
15
+ const listboxId = useId();
16
+ const optionsRef = useRef(null);
17
+ const navigationItems = useMemo(() => items.map((item) => ({
18
+ value: item.value,
19
+ disabled: item.disabled,
20
+ searchText: labelText(item),
21
+ })), [items]);
22
+ const navigation = useListNavigation(navigationItems, { value });
23
+ const selected = useMemo(() => items.find((item) => item.value === value) ?? null, [items, value]);
24
+ const highlighted = navigation.highlightedValue;
25
+ useEffect(() => {
26
+ if (!open || highlighted === null)
27
+ return;
28
+ const node = optionsRef.current?.querySelector(`[data-oui-select-value="${cssAttr(highlighted)}"]`);
29
+ node?.scrollIntoView({ block: 'nearest' });
30
+ }, [highlighted, open]);
31
+ const commit = useCallback((next) => {
32
+ onValueChange(next);
33
+ setOpen(false);
34
+ navigation.reset();
35
+ }, [navigation, onValueChange]);
36
+ const handleTypeahead = useTypeahead((query) => {
37
+ const match = navigation.enabledItems.find((item) => item.searchText?.toLowerCase().startsWith(query));
38
+ if (match)
39
+ navigation.setHighlightedValue(match.value);
40
+ }, 600);
41
+ const close = useCallback(() => {
42
+ setOpen(false);
43
+ navigation.reset();
44
+ }, [navigation]);
45
+ const openList = useCallback(() => {
46
+ setOpen(true);
47
+ }, []);
48
+ const handleKeyDown = useCallback((event) => {
49
+ if (!open && ['ArrowDown', 'ArrowUp', 'Enter', ' '].includes(event.key)) {
50
+ event.preventDefault();
51
+ openList();
52
+ return;
53
+ }
54
+ if (!open)
55
+ return;
56
+ switch (event.key) {
57
+ case 'ArrowDown':
58
+ event.preventDefault();
59
+ navigation.move(1);
60
+ break;
61
+ case 'ArrowUp':
62
+ event.preventDefault();
63
+ navigation.move(-1);
64
+ break;
65
+ case 'Home':
66
+ event.preventDefault();
67
+ navigation.first();
68
+ break;
69
+ case 'End':
70
+ event.preventDefault();
71
+ navigation.last();
72
+ break;
73
+ case 'Enter':
74
+ case ' ':
75
+ event.preventDefault();
76
+ if (highlighted !== null)
77
+ commit(highlighted);
78
+ break;
79
+ case 'Escape':
80
+ event.preventDefault();
81
+ close();
82
+ break;
83
+ default:
84
+ if (event.key.length === 1 && !event.metaKey && !event.ctrlKey) {
85
+ handleTypeahead(event.key);
86
+ }
87
+ }
88
+ }, [close, commit, handleTypeahead, highlighted, navigation, open, openList]);
89
+ const hasSelectedValue = value !== null;
90
+ const canClear = clearable && hasSelectedValue && !disabled;
91
+ const triggerLabel = selected?.triggerLabel ?? selected?.label ?? selectedFallbackLabel ?? null;
92
+ return (_jsx(Popover, { open: open, onOpenChange: (next) => {
93
+ setOpen(next);
94
+ if (!next)
95
+ navigation.reset();
96
+ }, trigger: _jsx(Button, { type: 'button', v: 'surface', size: size, disabled: disabled, fullWidth: true, pressAnimation: 'none', className: 'oui-combobox-trigger', "data-state": open ? 'open' : 'closed', testId: testId, "aria-haspopup": 'listbox', "aria-expanded": open, "aria-controls": listboxId, onKeyDown: handleKeyDown, rightIcon: _jsxs("span", { className: 'oui-combobox-trigger-actions', children: [canClear ? (_jsx("span", { "aria-label": clearLabel ?? copy.common.clear, className: 'oui-combobox-clear', onPointerDown: (event) => {
97
+ event.preventDefault();
98
+ event.stopPropagation();
99
+ }, onClick: (event) => {
100
+ event.preventDefault();
101
+ event.stopPropagation();
102
+ close();
103
+ if (onClear)
104
+ onClear();
105
+ else
106
+ onValueChange(null);
107
+ }, children: _jsx(LuX, { size: 14 }) })) : null, showChevron ? _jsx(LuChevronsUpDown, { size: 15 }) : null] }), children: _jsx("span", { className: triggerLabel ? 'oui-combobox-trigger-label' : 'oui-combobox-placeholder', children: triggerLabel ?? actualPlaceholder }) }), className: className ? `oui-select-content ${className}` : 'oui-select-content', testId: testId ? `${testId}-popover` : undefined, align: 'start', sideOffset: 4, matchTriggerWidth: true, disabled: disabled, children: _jsx("div", { ref: optionsRef, role: 'listbox', id: listboxId, tabIndex: -1, className: 'oui-combobox-scroll oui-combobox-options', "data-testid": testId ? `${testId}-listbox` : undefined, style: { maxHeight }, onKeyDown: handleKeyDown, children: items.length === 0 ? (_jsx("div", { className: 'oui-combobox-empty', children: actualEmptyText })) : (items.map((item) => {
108
+ const isSelected = item.value === value;
109
+ const isHighlighted = item.value === highlighted;
110
+ return (_jsxs("button", { type: 'button', role: 'option', "aria-selected": isSelected, disabled: item.disabled, className: 'oui-combobox-option', "data-oui-select-value": item.value, "data-selected": isSelected ? 'true' : 'false', "data-highlighted": isHighlighted ? 'true' : 'false', onMouseEnter: () => {
111
+ if (!item.disabled) {
112
+ navigation.setHighlightedValue(item.value);
113
+ }
114
+ }, onClick: () => {
115
+ if (!item.disabled)
116
+ commit(item.value);
117
+ }, children: [_jsx("span", { className: 'oui-combobox-option-main', children: item.label }), isSelected ? (_jsx(LuCheck, { className: 'oui-combobox-check', size: 15 })) : null] }, item.value));
118
+ })) }) }));
119
+ }
120
+ function labelText(item) {
121
+ if (item.searchText)
122
+ return item.searchText;
123
+ return reactNodeText(item.label);
124
+ }
125
+ function reactNodeText(value) {
126
+ if (value === null || value === undefined || value === false)
127
+ return '';
128
+ if (typeof value === 'string')
129
+ return value;
130
+ if (typeof value === 'number')
131
+ return String(value);
132
+ if (Array.isArray(value))
133
+ return value.map(reactNodeText).join('');
134
+ if (typeof value === 'object' && 'props' in value) {
135
+ const props = value.props;
136
+ return reactNodeText(props.children);
137
+ }
138
+ return '';
139
+ }
140
+ function cssAttr(value) {
141
+ return value.replace(/"/g, '\\"');
142
+ }
@@ -0,0 +1,6 @@
1
+ export declare function Separator({ orientation, className, testId, }: {
2
+ orientation?: 'horizontal' | 'vertical';
3
+ className?: string;
4
+ testId?: string;
5
+ }): import("react/jsx-runtime").JSX.Element;
6
+ //# sourceMappingURL=Separator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Separator.d.ts","sourceRoot":"","sources":["../../../src/components/Separator/Separator.tsx"],"names":[],"mappings":"AAEA,wBAAgB,SAAS,CAAC,EACtB,WAA0B,EAC1B,SAAS,EACT,MAAM,GACT,EAAE;IACC,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,2CAUA"}
@@ -0,0 +1,5 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { cn } from '../../utils/cn';
3
+ export function Separator({ orientation = 'horizontal', className, testId, }) {
4
+ return (_jsx("span", { className: cn('oui-separator', className), "data-orientation": orientation, "data-testid": testId, role: 'separator', "aria-orientation": orientation }));
5
+ }
@@ -0,0 +1,9 @@
1
+ import { type ComponentPropsWithoutRef } from 'react';
2
+ import { type SystemProps } from '../../theme/systemProps';
3
+ export type SkeletonProps = ComponentPropsWithoutRef<'span'> & SystemProps & {
4
+ testId?: string;
5
+ };
6
+ export declare const Skeleton: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "ref"> & SystemProps & {
7
+ testId?: string;
8
+ } & import("react").RefAttributes<HTMLSpanElement>>;
9
+ //# sourceMappingURL=Skeleton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Skeleton.d.ts","sourceRoot":"","sources":["../../../src/components/Skeleton/Skeleton.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,wBAAwB,EAAC,MAAM,OAAO,CAAC;AAGhE,OAAO,EAAmB,KAAK,WAAW,EAAC,MAAM,yBAAyB,CAAC;AAE3E,MAAM,MAAM,aAAa,GAAG,wBAAwB,CAAC,MAAM,CAAC,GACxD,WAAW,GAAG;IACV,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEN,eAAO,MAAM,QAAQ;aAHJ,MAAM;mDAkBrB,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { forwardRef } from 'react';
3
+ import { cn } from '../../utils/cn';
4
+ import { splitSystemProps } from '../../theme/systemProps';
5
+ export const Skeleton = forwardRef(function Skeleton({ className, style, testId, ...props }, ref) {
6
+ const { systemStyle, restProps } = splitSystemProps(props);
7
+ return (_jsx("span", { ref: ref, className: cn('oui-skeleton', className), "data-testid": testId, style: { ...systemStyle, ...style }, "aria-hidden": 'true', ...restProps }));
8
+ });
@@ -0,0 +1,7 @@
1
+ import type { UiSize } from '../../theme/systemProps';
2
+ export declare function Spinner({ size, className, testId, }: {
3
+ size?: UiSize;
4
+ className?: string;
5
+ testId?: string;
6
+ }): import("react/jsx-runtime").JSX.Element;
7
+ //# sourceMappingURL=Spinner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Spinner.d.ts","sourceRoot":"","sources":["../../../src/components/Spinner/Spinner.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,yBAAyB,CAAC;AAEpD,wBAAgB,OAAO,CAAC,EACpB,IAAQ,EACR,SAAS,EACT,MAAM,GACT,EAAE;IACC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,2CAEA"}
@@ -0,0 +1,5 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { cn } from '../../utils/cn';
3
+ export function Spinner({ size = 2, className, testId, }) {
4
+ return _jsx("span", { className: cn('oui-spinner', className), "data-size": size, "data-testid": testId });
5
+ }
@@ -0,0 +1,9 @@
1
+ import { type ComponentPropsWithoutRef } from 'react';
2
+ import type { SystemProps } from '../../theme/systemProps';
3
+ export type StackProps = ComponentPropsWithoutRef<'div'> & SystemProps & {
4
+ testId?: string;
5
+ };
6
+ export declare const Stack: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & SystemProps & {
7
+ testId?: string;
8
+ } & import("react").RefAttributes<HTMLDivElement>>;
9
+ //# sourceMappingURL=Stack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Stack.d.ts","sourceRoot":"","sources":["../../../src/components/Stack/Stack.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,wBAAwB,EAAC,MAAM,OAAO,CAAC;AAIhE,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,yBAAyB,CAAC;AAEzD,MAAM,MAAM,UAAU,GAAG,wBAAwB,CAAC,KAAK,CAAC,GACpD,WAAW,GAAG;IACV,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEN,eAAO,MAAM,KAAK;aAHD,MAAM;kDAgBrB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { forwardRef } from 'react';
3
+ import { cn } from '../../utils/cn';
4
+ import { Flex } from '../Flex/Flex';
5
+ export const Stack = forwardRef(function Stack({ className, g = 2, ...props }, ref) {
6
+ return (_jsx(Flex, { ref: ref, col: true, g: g, className: cn('oui-stack', className), ...props }));
7
+ });
@@ -0,0 +1,23 @@
1
+ import type { HTMLAttributes, ReactNode } from 'react';
2
+ import type { SystemProps, Tone } from '../../theme/systemProps';
3
+ export type StateCardTone = Tone;
4
+ export type StateCardProps = Omit<HTMLAttributes<HTMLDivElement>, 'title'> & {
5
+ tone?: StateCardTone;
6
+ icon?: ReactNode;
7
+ title?: ReactNode;
8
+ description?: ReactNode;
9
+ titleFs?: SystemProps['fs'];
10
+ descriptionFs?: SystemProps['fs'];
11
+ action?: ReactNode;
12
+ compact?: boolean;
13
+ testId?: string;
14
+ };
15
+ export declare function StateCard({ tone, icon, title, description, titleFs, descriptionFs, action, compact, className, children, testId, ...props }: StateCardProps): import("react/jsx-runtime").JSX.Element;
16
+ export declare function EmptyState({ title, ...props }: Omit<StateCardProps, 'tone'>): import("react/jsx-runtime").JSX.Element;
17
+ export declare function LoadingState({ title, description, ...props }: Omit<StateCardProps, 'icon' | 'tone'>): import("react/jsx-runtime").JSX.Element;
18
+ export declare function ErrorState({ title, retryLabel, onRetry, action, ...props }: Omit<StateCardProps, 'tone'> & {
19
+ retryLabel?: ReactNode;
20
+ onRetry?: () => void;
21
+ }): import("react/jsx-runtime").JSX.Element;
22
+ export declare function AccessDeniedState(props: Omit<StateCardProps, 'icon' | 'tone'>): import("react/jsx-runtime").JSX.Element;
23
+ //# sourceMappingURL=State.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"State.d.ts","sourceRoot":"","sources":["../../../src/components/State/State.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,cAAc,EAAE,SAAS,EAAC,MAAM,OAAO,CAAC;AAKrD,OAAO,KAAK,EAAC,WAAW,EAAE,IAAI,EAAC,MAAM,yBAAyB,CAAC;AAO/D,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC;AAEjC,MAAM,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC,GAAG;IACzE,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,OAAO,CAAC,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;IAC5B,aAAa,CAAC,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,wBAAgB,SAAS,CAAC,EACtB,IAAgB,EAChB,IAAI,EACJ,KAAK,EACL,WAAW,EACX,OAAO,EACP,aAAsB,EACtB,MAAM,EACN,OAAe,EACf,SAAS,EACT,QAAQ,EACR,MAAM,EACN,GAAG,KAAK,EACX,EAAE,cAAc,2CAkChB;AAED,wBAAgB,UAAU,CAAC,EAAC,KAAK,EAAE,GAAG,KAAK,EAAC,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,2CAGzE;AAED,wBAAgB,YAAY,CAAC,EACzB,KAAK,EACL,WAAW,EACX,GAAG,KAAK,EACX,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAAC,2CAWvC;AAED,wBAAgB,UAAU,CAAC,EACvB,KAAK,EACL,UAAU,EACV,OAAO,EACP,MAAM,EACN,GAAG,KAAK,EACX,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,GAAG;IAC9B,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACxB,2CAgBA;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAAC,2CAE7E"}
@@ -0,0 +1,30 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { LuLock } from 'react-icons/lu';
4
+ import { useOrcestrUiLocale } from '../../locale/LocaleProvider';
5
+ import { cn } from '../../utils/cn';
6
+ import { Button } from '../Button/Button';
7
+ import { IconText } from '../IconText/IconText';
8
+ import { Spinner } from '../Spinner/Spinner';
9
+ import { Text } from '../Text/Text';
10
+ import { stateIcon } from './stateIcon';
11
+ export function StateCard({ tone = 'neutral', icon, title, description, titleFs, descriptionFs = '13px', action, compact = false, className, children, testId, ...props }) {
12
+ const hasBody = description || children;
13
+ const actualTitleFs = titleFs ?? (compact ? '14px' : '15px');
14
+ return (_jsxs("div", { className: cn('oui-state-card', className), "data-tone": tone, "data-compact": compact ? 'true' : undefined, "data-testid": testId, ...props, children: [_jsxs("div", { className: 'oui-state-card-main', children: [_jsx(IconText, { fw: 760, fs: actualTitleFs, icon: icon ?? stateIcon(tone), iconTone: tone === 'neutral' ? 'muted' : tone, children: title }), hasBody ? (_jsxs("div", { className: 'oui-state-card-body', children: [description ? (_jsx(Text, { className: 'oui-state-card-description', fs: descriptionFs, children: description })) : null, children] })) : null] }), action ? _jsx("div", { className: 'oui-state-card-action', children: action }) : null] }));
15
+ }
16
+ export function EmptyState({ title, ...props }) {
17
+ const { copy } = useOrcestrUiLocale();
18
+ return _jsx(StateCard, { tone: 'neutral', title: title ?? copy.common.noData, ...props });
19
+ }
20
+ export function LoadingState({ title, description, ...props }) {
21
+ const { copy } = useOrcestrUiLocale();
22
+ return (_jsx(StateCard, { tone: 'info', icon: _jsx(Spinner, {}), title: title ?? copy.common.loading, description: description, ...props }));
23
+ }
24
+ export function ErrorState({ title, retryLabel, onRetry, action, ...props }) {
25
+ const { copy } = useOrcestrUiLocale();
26
+ return (_jsx(StateCard, { tone: 'danger', title: title ?? copy.table.unableToLoad, action: onRetry ? (_jsx(Button, { size: 1, v: 'surface', tone: 'danger', onClick: onRetry, children: retryLabel ?? copy.common.retry })) : action, ...props }));
27
+ }
28
+ export function AccessDeniedState(props) {
29
+ return _jsx(StateCard, { tone: 'warning', icon: _jsx(LuLock, {}), ...props });
30
+ }
@@ -0,0 +1,3 @@
1
+ import type { Tone } from '../../theme/systemProps';
2
+ export declare function stateIcon(tone: Tone): import("react/jsx-runtime").JSX.Element;
3
+ //# sourceMappingURL=stateIcon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stateIcon.d.ts","sourceRoot":"","sources":["../../../src/components/State/stateIcon.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,yBAAyB,CAAC;AAElD,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,2CAKnC"}
@@ -0,0 +1,11 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { LuCircleAlert, LuCircleCheck, LuCircleX, LuInfo } from 'react-icons/lu';
3
+ export function stateIcon(tone) {
4
+ if (tone === 'success')
5
+ return _jsx(LuCircleCheck, {});
6
+ if (tone === 'warning')
7
+ return _jsx(LuCircleAlert, {});
8
+ if (tone === 'danger')
9
+ return _jsx(LuCircleX, {});
10
+ return _jsx(LuInfo, {});
11
+ }
@@ -0,0 +1,13 @@
1
+ export declare function StepperInput({ value, onChange, min, max, step, disabled, unit, decreaseLabel, increaseLabel, testId, }: {
2
+ value: number;
3
+ onChange: (value: number) => void;
4
+ min?: number;
5
+ max?: number;
6
+ step?: number;
7
+ disabled?: boolean;
8
+ unit?: string;
9
+ decreaseLabel?: string;
10
+ increaseLabel?: string;
11
+ testId?: string;
12
+ }): import("react/jsx-runtime").JSX.Element;
13
+ //# sourceMappingURL=StepperInput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StepperInput.d.ts","sourceRoot":"","sources":["../../../src/components/StepperInput/StepperInput.tsx"],"names":[],"mappings":"AASA,wBAAgB,YAAY,CAAC,EACzB,KAAK,EACL,QAAQ,EACR,GAAG,EACH,GAAG,EACH,IAAQ,EACR,QAAQ,EACR,IAAI,EACJ,aAAa,EACb,aAAa,EACb,MAAM,GACT,EAAE;IACC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,2CAmDA"}
@@ -0,0 +1,22 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useMemo } from 'react';
4
+ import { LuMinus, LuPlus } from 'react-icons/lu';
5
+ import { useOrcestrUiLocale } from '../../locale/LocaleProvider';
6
+ import { IconButton } from '../IconButton/IconButton';
7
+ import { TextField } from '../TextField/TextField';
8
+ export function StepperInput({ value, onChange, min, max, step = 1, disabled, unit, decreaseLabel, increaseLabel, testId, }) {
9
+ const { copy } = useOrcestrUiLocale();
10
+ const canDecrease = min === undefined || value > min;
11
+ const canIncrease = max === undefined || value < max;
12
+ const displayValue = useMemo(() => String(value), [value]);
13
+ const commit = (next) => {
14
+ const clamped = Math.max(min ?? next, Math.min(max ?? next, next));
15
+ onChange(clamped);
16
+ };
17
+ return (_jsxs("span", { className: 'oui-stepper', "data-testid": testId, children: [_jsx(IconButton, { size: 1, v: 'surface', icon: _jsx(LuMinus, { size: 14 }), round: false, pressAnimation: 'none', className: 'oui-stepper-button oui-stepper-decrease', "aria-label": decreaseLabel ?? copy.common.decrease, testId: testId ? `${testId}-decrease` : undefined, disabled: disabled || !canDecrease, onClick: () => commit(value - step) }), _jsx(TextField, { value: displayValue, disabled: disabled, className: 'oui-stepper-field', size: 1, testId: testId ? `${testId}-input` : undefined, onChange: (event) => {
18
+ const next = Number(event.target.value);
19
+ if (Number.isFinite(next))
20
+ commit(next);
21
+ }, rightSlot: unit ? _jsx("span", { children: unit }) : null, w: '86px' }), _jsx(IconButton, { size: 1, v: 'surface', icon: _jsx(LuPlus, { size: 14 }), round: false, pressAnimation: 'none', className: 'oui-stepper-button oui-stepper-increase', "aria-label": increaseLabel ?? copy.common.increase, testId: testId ? `${testId}-increase` : undefined, disabled: disabled || !canIncrease, onClick: () => commit(value + step) })] }));
22
+ }
@@ -0,0 +1,10 @@
1
+ import { type InputHTMLAttributes, type ReactNode } from 'react';
2
+ export type SwitchProps = Omit<InputHTMLAttributes<HTMLInputElement>, 'type'> & {
3
+ label?: ReactNode;
4
+ testId?: string;
5
+ };
6
+ export declare const Switch: import("react").ForwardRefExoticComponent<Omit<InputHTMLAttributes<HTMLInputElement>, "type"> & {
7
+ label?: ReactNode;
8
+ testId?: string;
9
+ } & import("react").RefAttributes<HTMLInputElement>>;
10
+ //# sourceMappingURL=Switch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Switch.d.ts","sourceRoot":"","sources":["../../../src/components/Switch/Switch.tsx"],"names":[],"mappings":"AAEA,OAAO,EAIH,KAAK,mBAAmB,EACxB,KAAK,SAAS,EACjB,MAAM,OAAO,CAAC;AAIf,MAAM,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC,GAAG;IAC5E,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,eAAO,MAAM,MAAM;YAJP,SAAS;aACR,MAAM;oDA6CjB,CAAC"}
@@ -0,0 +1,14 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { forwardRef, useState, } from 'react';
4
+ import { cn } from '../../utils/cn';
5
+ export const Switch = forwardRef(function Switch({ className, label, children, checked, defaultChecked, disabled, onChange, testId, ...props }, ref) {
6
+ const [internalChecked, setInternalChecked] = useState(Boolean(defaultChecked));
7
+ const actualChecked = checked ?? internalChecked;
8
+ const handleChange = (event) => {
9
+ if (checked === undefined)
10
+ setInternalChecked(event.target.checked);
11
+ onChange?.(event);
12
+ };
13
+ return (_jsxs("label", { className: cn('oui-switch', className), "data-checked": actualChecked ? 'true' : undefined, "data-disabled": disabled ? 'true' : undefined, "data-testid": testId, children: [_jsx("input", { ref: ref, type: 'checkbox', checked: actualChecked, disabled: disabled, onChange: handleChange, ...props }), _jsx("span", { className: 'oui-switch-track', children: _jsx("span", { className: 'oui-switch-thumb' }) }), label || children ? _jsx("span", { children: label ?? children }) : null] }));
14
+ });
@@ -0,0 +1,18 @@
1
+ import { type ReactNode } from 'react';
2
+ export type TabItem = {
3
+ value: string;
4
+ label: ReactNode;
5
+ content: ReactNode;
6
+ icon?: ReactNode;
7
+ badge?: ReactNode;
8
+ };
9
+ export declare function Tabs({ items, value, onValueChange, className, listClassName, contentClassName, testId, }: {
10
+ items: ReadonlyArray<TabItem>;
11
+ value: string;
12
+ onValueChange: (value: string) => void;
13
+ className?: string;
14
+ listClassName?: string;
15
+ contentClassName?: string;
16
+ testId?: string;
17
+ }): import("react/jsx-runtime").JSX.Element | null;
18
+ //# sourceMappingURL=Tabs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tabs.d.ts","sourceRoot":"","sources":["../../../src/components/Tabs/Tabs.tsx"],"names":[],"mappings":"AAEA,OAAO,EAMH,KAAK,SAAS,EACjB,MAAM,OAAO,CAAC;AAKf,MAAM,MAAM,OAAO,GAAG;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,SAAS,CAAC;IACjB,OAAO,EAAE,SAAS,CAAC;IACnB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,KAAK,CAAC,EAAE,SAAS,CAAC;CACrB,CAAC;AASF,wBAAgB,IAAI,CAAC,EACjB,KAAK,EACL,KAAK,EACL,aAAa,EACb,SAAS,EACT,aAAa,EACb,gBAAgB,EAChB,MAAM,GACT,EAAE;IACC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,kDAgKA"}
@@ -0,0 +1,104 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useCallback, useLayoutEffect, useRef, useState, } from 'react';
4
+ import { cn } from '../../utils/cn';
5
+ import { Collapse } from '../Collapse/Collapse';
6
+ export function Tabs({ items, value, onValueChange, className, listClassName, contentClassName, testId, }) {
7
+ const active = items.find((item) => item.value === value) ?? items[0];
8
+ const listRef = useRef(null);
9
+ const triggerRefs = useRef(new Map());
10
+ const [hoveredValue, setHoveredValue] = useState(null);
11
+ const [activeRect, setActiveRect] = useState(null);
12
+ const [hoverRect, setHoverRect] = useState(null);
13
+ const [hoverVisible, setHoverVisible] = useState(false);
14
+ const measure = useCallback(() => {
15
+ const list = listRef.current;
16
+ if (!list)
17
+ return;
18
+ const readRect = (nextValue) => {
19
+ if (!nextValue)
20
+ return null;
21
+ const trigger = triggerRefs.current.get(nextValue);
22
+ if (!trigger)
23
+ return null;
24
+ return {
25
+ left: trigger.offsetLeft,
26
+ top: trigger.offsetTop,
27
+ width: trigger.offsetWidth,
28
+ height: trigger.offsetHeight,
29
+ };
30
+ };
31
+ setActiveRect(readRect(active?.value));
32
+ setHoverRect((current) => readRect(hoveredValue) ?? current);
33
+ setHoverVisible(Boolean(hoveredValue && readRect(hoveredValue)));
34
+ }, [active?.value, hoveredValue]);
35
+ const moveFocus = (currentValue, direction) => {
36
+ const currentIndex = items.findIndex((item) => item.value === currentValue);
37
+ if (currentIndex === -1)
38
+ return;
39
+ const nextIndex = (currentIndex + direction + items.length) % items.length;
40
+ const next = items[nextIndex];
41
+ if (!next)
42
+ return;
43
+ triggerRefs.current.get(next.value)?.focus();
44
+ onValueChange(next.value);
45
+ };
46
+ const focusEdge = (edge) => {
47
+ const next = edge === 'first' ? items[0] : items[items.length - 1];
48
+ if (!next)
49
+ return;
50
+ triggerRefs.current.get(next.value)?.focus();
51
+ onValueChange(next.value);
52
+ };
53
+ useLayoutEffect(() => {
54
+ measure();
55
+ }, [items, measure]);
56
+ useLayoutEffect(() => {
57
+ const list = listRef.current;
58
+ if (!list || typeof ResizeObserver === 'undefined')
59
+ return;
60
+ const observer = new ResizeObserver(() => measure());
61
+ observer.observe(list);
62
+ triggerRefs.current.forEach((trigger) => observer.observe(trigger));
63
+ return () => observer.disconnect();
64
+ }, [items, measure]);
65
+ if (!active)
66
+ return null;
67
+ return (_jsxs("div", { className: cn('oui-tabs', className), "data-testid": testId, children: [_jsx("div", { className: 'oui-tabs-shell', children: _jsxs("div", { ref: listRef, className: cn('oui-tabs-list', listClassName), role: 'tablist', "data-testid": testId ? `${testId}-list` : undefined, onMouseLeave: () => setHoveredValue(null), children: [activeRect ? (_jsx("span", { "aria-hidden": true, className: 'oui-tabs-active-indicator', style: indicatorStyle(activeRect) })) : null, hoverRect ? (_jsx("span", { "aria-hidden": true, className: 'oui-tabs-hover-indicator', "data-visible": hoverVisible ? 'true' : undefined, style: indicatorStyle(hoverRect) })) : null, items.map((item) => {
68
+ const isActive = active.value === item.value;
69
+ return (_jsxs("button", { ref: (element) => {
70
+ if (element)
71
+ triggerRefs.current.set(item.value, element);
72
+ else
73
+ triggerRefs.current.delete(item.value);
74
+ }, type: 'button', role: 'tab', "aria-selected": isActive, className: 'oui-tabs-trigger', "data-active": isActive ? 'true' : undefined, "data-testid": testId ? `${testId}-${item.value}` : undefined, onMouseEnter: () => setHoveredValue(item.value), onFocus: () => setHoveredValue(item.value), onBlur: () => setHoveredValue(null), onKeyDown: (event) => {
75
+ if (event.key === 'ArrowRight') {
76
+ event.preventDefault();
77
+ moveFocus(item.value, 1);
78
+ }
79
+ if (event.key === 'ArrowLeft') {
80
+ event.preventDefault();
81
+ moveFocus(item.value, -1);
82
+ }
83
+ if (event.key === 'Home') {
84
+ event.preventDefault();
85
+ focusEdge('first');
86
+ }
87
+ if (event.key === 'End') {
88
+ event.preventDefault();
89
+ focusEdge('last');
90
+ }
91
+ }, onClick: () => onValueChange(item.value), children: [item.icon ? (_jsx("span", { className: 'oui-tabs-trigger-icon', "aria-hidden": true, children: item.icon })) : null, _jsx("span", { className: 'oui-tabs-trigger-label', children: item.label }), item.badge ? (_jsx("span", { className: 'oui-tabs-trigger-badge', children: item.badge })) : null] }, item.value));
92
+ })] }) }), _jsx("div", { className: cn('oui-tabs-content', contentClassName), "data-testid": testId ? `${testId}-content` : undefined, children: items.map((item) => {
93
+ const open = active.value === item.value;
94
+ return (_jsx(Collapse, { open: open, children: _jsx("div", { role: 'tabpanel', className: 'oui-tabs-panel', "data-active": open ? 'true' : undefined, "data-testid": testId ? `${testId}-${item.value}-panel` : undefined, children: item.content }) }, item.value));
95
+ }) })] }));
96
+ }
97
+ function indicatorStyle(rect) {
98
+ return {
99
+ left: rect.left,
100
+ top: rect.top + 4,
101
+ width: rect.width,
102
+ height: Math.max(0, rect.height - 8),
103
+ };
104
+ }
@@ -0,0 +1,13 @@
1
+ import { type ComponentPropsWithoutRef, type ElementType } from 'react';
2
+ import { type SystemProps, type Tone } from '../../theme/systemProps';
3
+ export type TextProps = ComponentPropsWithoutRef<'span'> & SystemProps & {
4
+ as?: ElementType;
5
+ tone?: Tone | 'muted';
6
+ testId?: string;
7
+ };
8
+ export declare const Text: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "ref"> & SystemProps & {
9
+ as?: ElementType;
10
+ tone?: Tone | "muted";
11
+ testId?: string;
12
+ } & import("react").RefAttributes<HTMLElement>>;
13
+ //# sourceMappingURL=Text.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Text.d.ts","sourceRoot":"","sources":["../../../src/components/Text/Text.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEH,KAAK,wBAAwB,EAC7B,KAAK,WAAW,EACnB,MAAM,OAAO,CAAC;AAGf,OAAO,EAAmB,KAAK,WAAW,EAAE,KAAK,IAAI,EAAC,MAAM,yBAAyB,CAAC;AAEtF,MAAM,MAAM,SAAS,GAAG,wBAAwB,CAAC,MAAM,CAAC,GACpD,WAAW,GAAG;IACV,EAAE,CAAC,EAAE,WAAW,CAAC;IACjB,IAAI,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEN,eAAO,MAAM,IAAI;SALJ,WAAW;WACT,IAAI,GAAG,OAAO;aACZ,MAAM;+CAiBrB,CAAC"}