@dbcdk/react-components 0.0.5 → 0.0.7

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 (276) hide show
  1. package/dist/assets/logo.js +2 -85
  2. package/dist/components/__stories__/_data/table.d.ts +15 -0
  3. package/dist/components/__stories__/_data/table.js +49 -0
  4. package/dist/components/__stories__/story-components/Colors.d.ts +2 -1
  5. package/dist/components/__stories__/story-components/Colors.js +87 -142
  6. package/dist/components/__stories__/story-components/Spacing.d.ts +1 -0
  7. package/dist/components/__stories__/story-components/Spacing.js +58 -166
  8. package/dist/components/app-header/AppHeader.d.ts +4 -3
  9. package/dist/components/app-header/AppHeader.js +3 -6
  10. package/dist/components/attribute-chip/AttributeChip.d.ts +1 -0
  11. package/dist/components/attribute-chip/AttributeChip.js +3 -14
  12. package/dist/components/avatar/Avatar.d.ts +2 -2
  13. package/dist/components/avatar/Avatar.js +37 -71
  14. package/dist/components/breadcrumbs/Breadcrumbs.d.ts +4 -4
  15. package/dist/components/breadcrumbs/Breadcrumbs.js +4 -13
  16. package/dist/components/button/Button.d.ts +3 -2
  17. package/dist/components/button/Button.js +54 -56
  18. package/dist/components/button/Button.module.css +1 -1
  19. package/dist/components/card/Card.d.ts +8 -7
  20. package/dist/components/card/Card.js +19 -60
  21. package/dist/components/card-container/CardContainer.d.ts +3 -3
  22. package/dist/components/card-container/CardContainer.js +4 -16
  23. package/dist/components/chip/Chip.d.ts +6 -5
  24. package/dist/components/chip/Chip.js +14 -38
  25. package/dist/components/chip/Chip.module.css +9 -1
  26. package/dist/components/circle/Circle.d.ts +3 -2
  27. package/dist/components/circle/Circle.js +3 -10
  28. package/dist/components/clear-button/ClearButton.d.ts +2 -1
  29. package/dist/components/clear-button/ClearButton.js +6 -17
  30. package/dist/components/code-block/CodeBlock.d.ts +1 -0
  31. package/dist/components/code-block/CodeBlock.js +4 -10
  32. package/dist/components/copy-button/CopyButton.d.ts +4 -3
  33. package/dist/components/copy-button/CopyButton.js +19 -26
  34. package/dist/components/datetime-picker/DateTimePicker.d.ts +8 -5
  35. package/dist/components/datetime-picker/DateTimePicker.js +262 -475
  36. package/dist/components/datetime-picker/dateTimeHelpers.d.ts +13 -0
  37. package/dist/components/datetime-picker/dateTimeHelpers.js +119 -0
  38. package/dist/components/filter-field/FilterField.d.ts +5 -2
  39. package/dist/components/filter-field/FilterField.js +130 -173
  40. package/dist/components/filter-field/FilterField.module.css +21 -5
  41. package/dist/components/filtering/chip-multi-toggle/ChipMultiToggle.d.ts +36 -0
  42. package/dist/components/filtering/chip-multi-toggle/ChipMultiToggle.js +53 -0
  43. package/dist/components/filtering/chip-multi-toggle/ChipMultiToggle.module.css +60 -0
  44. package/dist/components/forms/checkbox/Checkbox.d.ts +31 -0
  45. package/dist/components/forms/checkbox/Checkbox.js +27 -0
  46. package/dist/components/{checkbox → forms/checkbox}/Checkbox.module.css +0 -1
  47. package/dist/components/forms/checkbox-group/CheckboxGroup.d.ts +47 -0
  48. package/dist/components/forms/checkbox-group/CheckboxGroup.js +75 -0
  49. package/dist/components/forms/checkbox-group/CheckboxGroup.module.css +115 -0
  50. package/dist/components/{input → forms/input}/Input.d.ts +9 -5
  51. package/dist/components/forms/input/Input.js +70 -0
  52. package/dist/components/{input → forms/input}/Input.module.css +1 -0
  53. package/dist/components/forms/input-container/InputContainer.d.ts +15 -0
  54. package/dist/components/forms/input-container/InputContainer.js +15 -0
  55. package/dist/components/forms/input-container/InputContainer.module.css +34 -0
  56. package/dist/components/forms/multi-select/MultiSelect.d.ts +20 -0
  57. package/dist/components/forms/multi-select/MultiSelect.js +19 -0
  58. package/dist/components/forms/select/Select.d.ts +21 -0
  59. package/dist/components/forms/select/Select.js +94 -0
  60. package/dist/components/forms/text-area/Textarea.d.ts +17 -0
  61. package/dist/components/forms/text-area/Textarea.js +33 -0
  62. package/dist/components/forms/text-area/Textarea.module.css +26 -0
  63. package/dist/components/headline/Headline.js +18 -43
  64. package/dist/components/{link/Link.d.ts → hyperlink/Hyperlink.d.ts} +2 -2
  65. package/dist/components/hyperlink/Hyperlink.js +11 -0
  66. package/dist/components/{link/Link.module.css → hyperlink/Hyperlink.module.css} +5 -14
  67. package/dist/components/icon/Icon.d.ts +4 -3
  68. package/dist/components/icon/Icon.js +11 -17
  69. package/dist/components/interval-select/IntervalSelect.d.ts +30 -0
  70. package/dist/components/interval-select/IntervalSelect.js +82 -0
  71. package/dist/components/menu/Menu.js +25 -67
  72. package/dist/components/meta-bar/MetaBar.d.ts +4 -4
  73. package/dist/components/meta-bar/MetaBar.js +7 -20
  74. package/dist/components/nav-bar/NavBar.d.ts +5 -5
  75. package/dist/components/nav-bar/NavBar.js +15 -45
  76. package/dist/components/{modal → overlay/modal}/Modal.d.ts +4 -2
  77. package/dist/components/overlay/modal/Modal.js +92 -0
  78. package/dist/components/{modal → overlay/modal}/provider/ModalProvider.d.ts +0 -1
  79. package/dist/components/overlay/modal/provider/ModalProvider.js +70 -0
  80. package/dist/components/overlay/side-panel/SidePanel.d.ts +16 -0
  81. package/dist/components/overlay/side-panel/SidePanel.js +10 -0
  82. package/dist/components/overlay/side-panel/SidePanel.module.css +56 -0
  83. package/dist/components/overlay/side-panel/useSidePanel.d.ts +5 -0
  84. package/dist/components/overlay/side-panel/useSidePanel.js +11 -0
  85. package/dist/components/overlay/tooltip/Tooltip.d.ts +13 -0
  86. package/dist/components/overlay/tooltip/Tooltip.js +17 -0
  87. package/dist/components/overlay/tooltip/Tooltip.module.css +106 -0
  88. package/dist/components/overlay/tooltip/TooltipProvider.d.ts +20 -0
  89. package/dist/components/overlay/tooltip/TooltipProvider.js +244 -0
  90. package/dist/components/overlay/tooltip/useTooltipTrigger.d.ts +24 -0
  91. package/dist/components/overlay/tooltip/useTooltipTrigger.js +108 -0
  92. package/dist/components/page/Page.d.ts +7 -6
  93. package/dist/components/page/Page.js +4 -21
  94. package/dist/components/page-layout/PageLayout.d.ts +11 -12
  95. package/dist/components/page-layout/PageLayout.js +35 -71
  96. package/dist/components/page-layout/components/page-layout-hero/PageLayoutHero.js +4 -22
  97. package/dist/components/pagination/Pagination.d.ts +2 -1
  98. package/dist/components/pagination/Pagination.js +38 -121
  99. package/dist/components/panel/Panel.d.ts +4 -3
  100. package/dist/components/panel/Panel.js +5 -10
  101. package/dist/components/popover/Popover.d.ts +1 -0
  102. package/dist/components/popover/Popover.js +116 -141
  103. package/dist/components/search-box/SearchBox.d.ts +2 -2
  104. package/dist/components/search-box/SearchBox.js +112 -162
  105. package/dist/components/segmented-progress-bar/SegmentedProgressBar.d.ts +1 -1
  106. package/dist/components/segmented-progress-bar/SegmentedProgressBar.js +47 -94
  107. package/dist/components/sidebar/Sidebar.d.ts +1 -0
  108. package/dist/components/sidebar/Sidebar.js +5 -7
  109. package/dist/components/sidebar/components/SidebarItem.js +6 -14
  110. package/dist/components/sidebar/components/expandable-sidebar-item/ExpandableSidebarItem.d.ts +1 -1
  111. package/dist/components/sidebar/components/expandable-sidebar-item/ExpandableSidebarItem.js +48 -88
  112. package/dist/components/sidebar/components/sidebar-container/SidebarContainer.d.ts +3 -2
  113. package/dist/components/sidebar/components/sidebar-container/SidebarContainer.js +11 -41
  114. package/dist/components/sidebar/components/sidebar-item-content/SidebarItemContent.d.ts +1 -0
  115. package/dist/components/sidebar/components/sidebar-item-content/SidebarItemContent.js +4 -25
  116. package/dist/components/sidebar/components/sidebar-items/SidebarItems.js +9 -23
  117. package/dist/components/sidebar/components/sidenav-filteirng/SidenavFiltering.js +19 -40
  118. package/dist/components/sidebar/providers/SidebarProvider.d.ts +2 -1
  119. package/dist/components/sidebar/providers/SidebarProvider.js +182 -165
  120. package/dist/components/skeleton-loader/SkeletonLoader.js +68 -266
  121. package/dist/components/skeleton-loader/skeleton-loader-item/SkeletonLoaderItem.js +11 -34
  122. package/dist/components/split-button/SplitButton.d.ts +7 -5
  123. package/dist/components/split-button/SplitButton.js +4 -27
  124. package/dist/components/split-pane/SplitPane.js +69 -105
  125. package/dist/components/split-pane/provider/SplitPaneContext.js +77 -71
  126. package/dist/components/table/Table.d.ts +9 -7
  127. package/dist/components/table/Table.js +115 -238
  128. package/dist/components/table/Table.module.css +5 -1
  129. package/dist/components/table/components/column-resizer/ColumnResizer.js +4 -15
  130. package/dist/components/table/components/empty-state/EmptyState.d.ts +6 -5
  131. package/dist/components/table/components/empty-state/EmptyState.js +22 -41
  132. package/dist/components/table/components/table-settings/TableSettings.d.ts +2 -1
  133. package/dist/components/table/components/table-settings/TableSettings.js +9 -27
  134. package/dist/components/table/tanstack.d.ts +1 -1
  135. package/dist/components/table/tanstack.js +154 -160
  136. package/dist/components/tabs/Tabs.d.ts +1 -0
  137. package/dist/components/tabs/Tabs.js +32 -81
  138. package/dist/components/toast/Toast.d.ts +1 -1
  139. package/dist/components/toast/Toast.js +4 -37
  140. package/dist/components/toast/Toast.module.css +1 -0
  141. package/dist/components/toast/provider/ToastProvider.d.ts +1 -1
  142. package/dist/components/toast/provider/ToastProvider.js +60 -87
  143. package/dist/components/user-display/UserDisplay.d.ts +2 -1
  144. package/dist/components/user-display/UserDisplay.js +4 -20
  145. package/dist/constants/severity.d.ts +1 -1
  146. package/dist/constants/severity.js +14 -16
  147. package/dist/constants/severity.types.d.ts +1 -1
  148. package/dist/constants/severity.types.js +1 -1
  149. package/dist/constants/sizes.js +6 -8
  150. package/dist/hooks/usePagination.d.ts +1 -1
  151. package/dist/hooks/usePagination.js +75 -82
  152. package/dist/hooks/useSorting.js +112 -110
  153. package/dist/hooks/useTableData.d.ts +1 -1
  154. package/dist/hooks/useTableData.js +42 -47
  155. package/dist/hooks/useTableSelection.js +121 -121
  156. package/dist/hooks/useTableSettings.js +23 -25
  157. package/dist/hooks/useTheme.d.ts +3 -7
  158. package/dist/hooks/useTheme.js +52 -47
  159. package/dist/hooks/useTimeDuration.d.ts +2 -2
  160. package/dist/hooks/useTimeDuration.js +33 -34
  161. package/dist/hooks/useViewportFill.d.ts +3 -2
  162. package/dist/hooks/useViewportFill.js +55 -48
  163. package/dist/index.d.ts +17 -8
  164. package/dist/index.js +18 -8
  165. package/dist/src/styles/styles.css +3 -3
  166. package/dist/styles/css-helper-classes/flex.css +4 -0
  167. package/dist/styles/styles.css +3 -3
  168. package/dist/styles/themes/dbc/dark.css +1 -1
  169. package/dist/styles/themes/dbc/light.css +2 -1
  170. package/dist/styles/themes/forfatterweb/light.css +1 -1
  171. package/dist/styles/themes/types.js +1 -1
  172. package/dist/types/a11y-props.types.d.ts +5 -5
  173. package/dist/types/a11y-props.types.js +1 -1
  174. package/dist/types/sizes.types.js +1 -1
  175. package/dist/utils/arrays/nested-filtering.js +43 -33
  176. package/dist/utils/date/formatDate.js +25 -16
  177. package/package.json +18 -9
  178. package/dist/assets/logo.cjs +0 -87
  179. package/dist/components/__stories__/story-components/Colors.cjs +0 -159
  180. package/dist/components/__stories__/story-components/Spacing.cjs +0 -190
  181. package/dist/components/app-header/AppHeader.cjs +0 -14
  182. package/dist/components/attribute-chip/AttributeChip.cjs +0 -22
  183. package/dist/components/avatar/Avatar.cjs +0 -101
  184. package/dist/components/breadcrumbs/Breadcrumbs.cjs +0 -22
  185. package/dist/components/button/Button.cjs +0 -87
  186. package/dist/components/card/Card.cjs +0 -69
  187. package/dist/components/card-container/CardContainer.cjs +0 -24
  188. package/dist/components/checkbox/Checkbox.cjs +0 -42
  189. package/dist/components/checkbox/Checkbox.d.ts +0 -12
  190. package/dist/components/checkbox/Checkbox.js +0 -36
  191. package/dist/components/chip/Chip.cjs +0 -50
  192. package/dist/components/circle/Circle.cjs +0 -18
  193. package/dist/components/clear-button/ClearButton.cjs +0 -26
  194. package/dist/components/code-block/CodeBlock.cjs +0 -18
  195. package/dist/components/copy-button/CopyButton.cjs +0 -35
  196. package/dist/components/datetime-picker/DateTimePicker.cjs +0 -504
  197. package/dist/components/filter-field/FilterField.cjs +0 -189
  198. package/dist/components/headline/Headline.cjs +0 -53
  199. package/dist/components/icon/Icon.cjs +0 -27
  200. package/dist/components/input/Input.cjs +0 -89
  201. package/dist/components/input/Input.js +0 -83
  202. package/dist/components/link/Link.cjs +0 -46
  203. package/dist/components/link/Link.js +0 -21
  204. package/dist/components/menu/Menu.cjs +0 -96
  205. package/dist/components/meta-bar/MetaBar.cjs +0 -29
  206. package/dist/components/modal/Modal.cjs +0 -134
  207. package/dist/components/modal/Modal.js +0 -128
  208. package/dist/components/modal/provider/ModalProvider.cjs +0 -80
  209. package/dist/components/modal/provider/ModalProvider.js +0 -77
  210. package/dist/components/multi-select/MultiSelect.cjs +0 -59
  211. package/dist/components/multi-select/MultiSelect.d.ts +0 -18
  212. package/dist/components/multi-select/MultiSelect.js +0 -57
  213. package/dist/components/nav-bar/NavBar.cjs +0 -55
  214. package/dist/components/page/Page.cjs +0 -30
  215. package/dist/components/page-layout/PageLayout.cjs +0 -84
  216. package/dist/components/page-layout/components/page-layout-hero/PageLayoutHero.cjs +0 -32
  217. package/dist/components/pagination/Pagination.cjs +0 -133
  218. package/dist/components/panel/Panel.cjs +0 -18
  219. package/dist/components/popover/Popover.cjs +0 -149
  220. package/dist/components/search-box/SearchBox.cjs +0 -175
  221. package/dist/components/segmented-progress-bar/SegmentedProgressBar.cjs +0 -103
  222. package/dist/components/select/Select.cjs +0 -121
  223. package/dist/components/select/Select.d.ts +0 -12
  224. package/dist/components/select/Select.js +0 -119
  225. package/dist/components/sidebar/Sidebar.cjs +0 -11
  226. package/dist/components/sidebar/components/SidebarItem.cjs +0 -18
  227. package/dist/components/sidebar/components/expandable-sidebar-item/ExpandableSidebarItem.cjs +0 -100
  228. package/dist/components/sidebar/components/sidebar-container/SidebarContainer.cjs +0 -50
  229. package/dist/components/sidebar/components/sidebar-item-content/SidebarItemContent.cjs +0 -34
  230. package/dist/components/sidebar/components/sidebar-items/SidebarItems.cjs +0 -29
  231. package/dist/components/sidebar/components/sidenav-filteirng/SidenavFiltering.cjs +0 -52
  232. package/dist/components/sidebar/providers/SidebarProvider.cjs +0 -179
  233. package/dist/components/skeleton-loader/SkeletonLoader.cjs +0 -270
  234. package/dist/components/skeleton-loader/skeleton-loader-item/SkeletonLoaderItem.cjs +0 -42
  235. package/dist/components/split-button/SplitButton.cjs +0 -37
  236. package/dist/components/split-pane/SplitPane.cjs +0 -123
  237. package/dist/components/split-pane/provider/SplitPaneContext.cjs +0 -87
  238. package/dist/components/table/Table.cjs +0 -249
  239. package/dist/components/table/components/column-resizer/ColumnResizer.cjs +0 -22
  240. package/dist/components/table/components/empty-state/EmptyState.cjs +0 -52
  241. package/dist/components/table/components/table-settings/TableSettings.cjs +0 -32
  242. package/dist/components/table/tanstack.cjs +0 -193
  243. package/dist/components/tabs/Tabs.cjs +0 -90
  244. package/dist/components/text-area/Textarea.cjs +0 -62
  245. package/dist/components/text-area/Textarea.d.ts +0 -14
  246. package/dist/components/text-area/Textarea.js +0 -56
  247. package/dist/components/text-area/Textarea.module.css +0 -3
  248. package/dist/components/toast/Toast.cjs +0 -47
  249. package/dist/components/toast/provider/ToastProvider.cjs +0 -98
  250. package/dist/components/tooltip/Tooltip.cjs +0 -183
  251. package/dist/components/tooltip/Tooltip.d.ts +0 -11
  252. package/dist/components/tooltip/Tooltip.js +0 -177
  253. package/dist/components/tooltip/Tooltip.module.css +0 -66
  254. package/dist/components/user-display/UserDisplay.cjs +0 -28
  255. package/dist/constants/severity.cjs +0 -21
  256. package/dist/constants/severity.types.cjs +0 -2
  257. package/dist/constants/sizes.cjs +0 -11
  258. package/dist/hooks/usePagination.cjs +0 -88
  259. package/dist/hooks/useSorting.cjs +0 -118
  260. package/dist/hooks/useTableData.cjs +0 -52
  261. package/dist/hooks/useTableSelection.cjs +0 -130
  262. package/dist/hooks/useTableSettings.cjs +0 -28
  263. package/dist/hooks/useTheme.cjs +0 -58
  264. package/dist/hooks/useTimeDuration.cjs +0 -39
  265. package/dist/hooks/useViewportFill.cjs +0 -52
  266. package/dist/index.cjs +0 -383
  267. package/dist/styles/themes/types.cjs +0 -2
  268. package/dist/types/a11y-props.types.cjs +0 -2
  269. package/dist/types/assets.d.cjs +0 -2
  270. package/dist/types/assets.d.js +0 -1
  271. package/dist/types/css.d.cjs +0 -2
  272. package/dist/types/css.d.js +0 -1
  273. package/dist/types/sizes.types.cjs +0 -2
  274. package/dist/utils/arrays/nested-filtering.cjs +0 -40
  275. package/dist/utils/date/formatDate.cjs +0 -19
  276. /package/dist/components/{modal → overlay/modal}/Modal.module.css +0 -0
@@ -1,177 +0,0 @@
1
- import { jsxs, jsx } from 'react/jsx-runtime';
2
- import { useId, useRef, useState, useEffect, useLayoutEffect, useMemo } from 'react';
3
- import { createPortal } from 'react-dom';
4
- import styles from './Tooltip.module.css';
5
-
6
- const VIEWPORT_PADDING = 8;
7
- function clamp(n, min, max) {
8
- return Math.max(min, Math.min(n, max));
9
- }
10
- function computePosition(args) {
11
- const { triggerRect, bubbleRect, placement, offset } = args;
12
- switch (placement) {
13
- case "top":
14
- return {
15
- left: triggerRect.left + triggerRect.width / 2 - bubbleRect.width / 2,
16
- top: triggerRect.top - bubbleRect.height - offset
17
- };
18
- case "bottom":
19
- return {
20
- left: triggerRect.left + triggerRect.width / 2 - bubbleRect.width / 2,
21
- top: triggerRect.bottom + offset
22
- };
23
- case "left":
24
- return {
25
- left: triggerRect.left - bubbleRect.width - offset,
26
- top: triggerRect.top + triggerRect.height / 2 - bubbleRect.height / 2
27
- };
28
- case "right":
29
- return {
30
- left: triggerRect.right + offset,
31
- top: triggerRect.top + triggerRect.height / 2 - bubbleRect.height / 2
32
- };
33
- }
34
- }
35
- function fitsViewport(pos, bubbleRect) {
36
- const vw = window.innerWidth;
37
- const vh = window.innerHeight;
38
- const leftOk = pos.left >= VIEWPORT_PADDING;
39
- const rightOk = pos.left + bubbleRect.width <= vw - VIEWPORT_PADDING;
40
- const topOk = pos.top >= VIEWPORT_PADDING;
41
- const bottomOk = pos.top + bubbleRect.height <= vh - VIEWPORT_PADDING;
42
- return leftOk && rightOk && topOk && bottomOk;
43
- }
44
- function flippedPlacement(p) {
45
- if (p === "top") return "bottom";
46
- if (p === "bottom") return "top";
47
- if (p === "left") return "right";
48
- return "left";
49
- }
50
- const Tooltip = ({
51
- children,
52
- content,
53
- placement = "top",
54
- className,
55
- open,
56
- flip = true,
57
- offset = 8,
58
- ...rest
59
- }) => {
60
- const id = useId();
61
- const wrapperRef = useRef(null);
62
- const bubbleRef = useRef(null);
63
- const [internalOpen, setInternalOpen] = useState(false);
64
- const [coords, setCoords] = useState({
65
- top: 0,
66
- left: 0,
67
- placement,
68
- visible: false
69
- });
70
- const isControlled = open !== void 0;
71
- const isOpen = isControlled ? !!open : internalOpen;
72
- useEffect(() => {
73
- setCoords((c) => ({ ...c, placement }));
74
- }, [placement]);
75
- const recompute = () => {
76
- const wrapper = wrapperRef.current;
77
- const bubble = bubbleRef.current;
78
- if (!wrapper || !bubble) return;
79
- const triggerRect = wrapper.getBoundingClientRect();
80
- const bubbleRect = bubble.getBoundingClientRect();
81
- const candidates = flip ? [placement, flippedPlacement(placement)] : [placement];
82
- let chosen = candidates[0];
83
- let pos = computePosition({ triggerRect, bubbleRect, placement: chosen, offset });
84
- if (flip && !fitsViewport(pos, bubbleRect) && candidates.length > 1) {
85
- const alt = candidates[1];
86
- const altPos = computePosition({ triggerRect, bubbleRect, placement: alt, offset });
87
- if (fitsViewport(altPos, bubbleRect)) {
88
- chosen = alt;
89
- pos = altPos;
90
- }
91
- }
92
- const vw = window.innerWidth;
93
- const vh = window.innerHeight;
94
- const clampedLeft = clamp(pos.left, VIEWPORT_PADDING, vw - bubbleRect.width - VIEWPORT_PADDING);
95
- const clampedTop = clamp(pos.top, VIEWPORT_PADDING, vh - bubbleRect.height - VIEWPORT_PADDING);
96
- setCoords({
97
- left: clampedLeft,
98
- top: clampedTop,
99
- placement: chosen,
100
- visible: true
101
- });
102
- };
103
- useLayoutEffect(() => {
104
- if (!isOpen) {
105
- setCoords((c) => ({ ...c, visible: false }));
106
- return;
107
- }
108
- const raf = requestAnimationFrame(() => recompute());
109
- const onResize = () => recompute();
110
- const onScroll = () => recompute();
111
- window.addEventListener("resize", onResize);
112
- window.addEventListener("scroll", onScroll, { passive: true, capture: true });
113
- return () => {
114
- cancelAnimationFrame(raf);
115
- window.removeEventListener("resize", onResize);
116
- window.removeEventListener("scroll", onScroll, true);
117
- window.removeEventListener("scroll", onScroll, true);
118
- window.removeEventListener("scroll", onScroll);
119
- };
120
- }, [isOpen, placement, flip, offset, content]);
121
- const onMouseEnter = () => {
122
- if (!isControlled) setInternalOpen(true);
123
- };
124
- const onMouseLeave = () => {
125
- if (!isControlled) setInternalOpen(false);
126
- };
127
- const onFocusIn = () => {
128
- if (!isControlled) setInternalOpen(true);
129
- };
130
- const onFocusOut = () => {
131
- if (!isControlled) setInternalOpen(false);
132
- };
133
- const rootClass = useMemo(
134
- () => [styles.container, className].filter(Boolean).join(" "),
135
- [className]
136
- );
137
- const [mounted, setMounted] = useState(false);
138
- useEffect(() => setMounted(true), []);
139
- return /* @__PURE__ */ jsxs(
140
- "div",
141
- {
142
- ref: wrapperRef,
143
- className: rootClass,
144
- onMouseEnter,
145
- onMouseLeave,
146
- onFocusCapture: onFocusIn,
147
- onBlurCapture: onFocusOut,
148
- ...rest,
149
- children: [
150
- /* @__PURE__ */ jsx("div", { className: styles.trigger, "aria-describedby": id, tabIndex: 0, children }),
151
- mounted && isOpen ? createPortal(
152
- /* @__PURE__ */ jsx(
153
- "div",
154
- {
155
- ref: bubbleRef,
156
- id,
157
- role: "tooltip",
158
- className: styles.bubble,
159
- "data-open": coords.visible ? "true" : "false",
160
- "data-placement": coords.placement,
161
- style: {
162
- top: coords.top,
163
- left: coords.left,
164
- visibility: coords.visible ? "visible" : "hidden"
165
- },
166
- "aria-hidden": !coords.visible,
167
- children: content
168
- }
169
- ),
170
- document.body
171
- ) : null
172
- ]
173
- }
174
- );
175
- };
176
-
177
- export { Tooltip };
@@ -1,66 +0,0 @@
1
- .container {
2
- display: inline-flex;
3
- }
4
-
5
- .trigger {
6
- width: 100%;
7
- }
8
- .trigger:focus-visible {
9
- outline: none;
10
- box-shadow: var(--focus-ring);
11
- border-radius: var(--border-radius-default);
12
- }
13
-
14
- .bubble {
15
- position: fixed;
16
- background: var(--color-fg-default);
17
- color: var(--color-fg-on-strong);
18
- font-size: var(--font-size-xs);
19
- padding: var(--spacing-xxs) var(--spacing-sm);
20
- border-radius: var(--border-radius-default);
21
- line-height: var(--line-height-tight);
22
- white-space: nowrap;
23
- z-index: var(--z-tooltip);
24
- pointer-events: none;
25
-
26
- opacity: 0;
27
- transform: translateY(-6px);
28
- transition:
29
- opacity var(--transition-fast),
30
- transform var(--transition-fast);
31
- }
32
-
33
- .bubble[data-open='true'] {
34
- opacity: 1;
35
- transform: translateY(0);
36
- }
37
-
38
- .bubble[data-placement='bottom'] {
39
- transform: translateY(6px);
40
- }
41
- .bubble[data-placement='bottom'][data-open='true'] {
42
- transform: translateY(0);
43
- }
44
-
45
- .bubble[data-placement='left'],
46
- .bubble[data-placement='right'] {
47
- transform: translateX(6px);
48
- }
49
- .bubble[data-placement='left'] {
50
- transform: translateX(-6px);
51
- }
52
- .bubble[data-placement='left'][data-open='true'],
53
- .bubble[data-placement='right'][data-open='true'] {
54
- transform: translateX(0);
55
- }
56
-
57
- .bubble svg {
58
- height: 20px;
59
- width: 20px;
60
- }
61
-
62
- @media (prefers-reduced-motion: reduce) {
63
- .bubble {
64
- transition: none;
65
- }
66
- }
@@ -1,28 +0,0 @@
1
- 'use strict';
2
-
3
- var jsxRuntime = require('react/jsx-runtime');
4
- var Avatar = require('../avatar/Avatar');
5
- var styles = require('./UserDisplay.module.css');
6
-
7
- function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
8
-
9
- var styles__default = /*#__PURE__*/_interopDefault(styles);
10
-
11
- function UserDisplay({
12
- id,
13
- name,
14
- email,
15
- role,
16
- avatarUrl
17
- }) {
18
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles__default.default.container, children: [
19
- /* @__PURE__ */ jsxRuntime.jsx("div", { children: /* @__PURE__ */ jsxRuntime.jsx(Avatar.Avatar, { imgSrc: avatarUrl, imgAlt: name, fullName: name, size: "xl" }) }),
20
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles__default.default.userInfo, children: [
21
- /* @__PURE__ */ jsxRuntime.jsx("h4", { children: name }),
22
- /* @__PURE__ */ jsxRuntime.jsx("p", { children: email }),
23
- /* @__PURE__ */ jsxRuntime.jsx("p", { children: role })
24
- ] })
25
- ] });
26
- }
27
-
28
- exports.UserDisplay = UserDisplay;
@@ -1,21 +0,0 @@
1
- 'use strict';
2
-
3
- const SeverityBgColor = {
4
- neutral: "var(--color-neutral-strong)",
5
- brand: "var(--color-brand)",
6
- success: "var(--color-status-success)",
7
- error: "var(--color-status-error)",
8
- info: "var(--color-status-info)",
9
- warning: "var(--color-status-warning)"
10
- };
11
- const SeverityTextColor = {
12
- neutral: "var(--color-neutral-strong-fg)",
13
- brand: "var(--color-fg-on-brand)",
14
- success: "var(--color-status-success-fg)",
15
- error: "var(--color-status-error-fg)",
16
- info: "var(--color-status-info-fg)",
17
- warning: "var(--color-status-warning-fg)"
18
- };
19
-
20
- exports.SeverityBgColor = SeverityBgColor;
21
- exports.SeverityTextColor = SeverityTextColor;
@@ -1,2 +0,0 @@
1
- 'use strict';
2
-
@@ -1,11 +0,0 @@
1
- 'use strict';
2
-
3
- const sizes = {
4
- xs: "var(--component-size-xs)",
5
- sm: "var(--component-size-sm)",
6
- md: "var(--component-size-md)",
7
- lg: "var(--component-size-lg)",
8
- xl: "var(--component-size-xl)"
9
- };
10
-
11
- exports.sizes = sizes;
@@ -1,88 +0,0 @@
1
- 'use strict';
2
-
3
- var react = require('react');
4
-
5
- function clamp(n, min, max) {
6
- return Math.max(min, Math.min(max, n));
7
- }
8
- function usePagination({
9
- data = [],
10
- skip = 0,
11
- take = 10,
12
- state,
13
- onStateChange,
14
- resetOnDataChange = false
15
- }) {
16
- const isControlled = state != null;
17
- const [uncontrolled, setUncontrolled] = react.useState(() => ({
18
- skip: Math.max(0, skip),
19
- take: Math.max(1, take)
20
- }));
21
- const didInitRef = react.useRef(false);
22
- react.useEffect(() => {
23
- if (isControlled) return;
24
- if (!didInitRef.current) {
25
- didInitRef.current = true;
26
- return;
27
- }
28
- setUncontrolled((prev) => ({
29
- skip: prev.skip,
30
- take: Math.max(1, take)
31
- }));
32
- }, [isControlled, take]);
33
- const paginationState = isControlled ? state : uncontrolled;
34
- const totalCount = data.length;
35
- const safeTake = Math.max(1, paginationState.take);
36
- const maxSkip = Math.max(
37
- 0,
38
- totalCount === 0 ? 0 : Math.floor((totalCount - 1) / safeTake) * safeTake
39
- );
40
- const safeSkip = clamp(Math.max(0, paginationState.skip), 0, maxSkip);
41
- const setPagination = react.useCallback(
42
- (next) => {
43
- const normalized = {
44
- take: Math.max(1, next.take),
45
- skip: Math.max(0, next.skip)
46
- };
47
- if (isControlled) onStateChange == null ? void 0 : onStateChange(normalized);
48
- else setUncontrolled(normalized);
49
- },
50
- [isControlled, onStateChange]
51
- );
52
- const onPageChange = react.useCallback(
53
- (pageEvent) => {
54
- const nextTake = Math.max(1, pageEvent.take);
55
- const nextSkip = Math.max(0, (pageEvent.page - 1) * nextTake);
56
- setPagination({ skip: nextSkip, take: nextTake });
57
- },
58
- [setPagination]
59
- );
60
- const resetPage = react.useCallback(() => {
61
- setPagination({ skip: 0, take: safeTake });
62
- }, [setPagination, safeTake]);
63
- react.useEffect(() => {
64
- if (!resetOnDataChange) return;
65
- resetPage();
66
- }, [resetOnDataChange, data]);
67
- const paginatedData = react.useMemo(() => {
68
- return data.slice(safeSkip, safeSkip + safeTake);
69
- }, [data, safeSkip, safeTake]);
70
- const page = react.useMemo(() => Math.floor(safeSkip / safeTake) + 1, [safeSkip, safeTake]);
71
- react.useEffect(() => {
72
- if (isControlled) return;
73
- if (safeSkip !== paginationState.skip) {
74
- setUncontrolled((prev) => ({ ...prev, skip: safeSkip }));
75
- }
76
- }, [isControlled, safeSkip, paginationState.skip]);
77
- return {
78
- paginatedData,
79
- paginationState: { skip: safeSkip, take: safeTake },
80
- onPageChange,
81
- setPagination,
82
- resetPage,
83
- page,
84
- totalCount
85
- };
86
- }
87
-
88
- exports.usePagination = usePagination;
@@ -1,118 +0,0 @@
1
- 'use strict';
2
-
3
- var react = require('react');
4
-
5
- function defaultCompare(a, b, dir, nulls) {
6
- const aNull = a == null;
7
- const bNull = b == null;
8
- if (aNull || bNull) {
9
- if (aNull && bNull) return 0;
10
- const order = nulls === "first" ? -1 : 1;
11
- return aNull ? order : -order;
12
- }
13
- if (a instanceof Date && b instanceof Date) {
14
- const diff2 = a.getTime() - b.getTime();
15
- return dir === "asc" ? diff2 : -diff2;
16
- }
17
- if (typeof a === "number" && typeof b === "number") {
18
- const diff2 = a - b;
19
- return dir === "asc" ? diff2 : -diff2;
20
- }
21
- if (typeof a === "boolean" && typeof b === "boolean") {
22
- const diff2 = Number(a) - Number(b);
23
- return dir === "asc" ? diff2 : -diff2;
24
- }
25
- const aStr = String(a);
26
- const bStr = String(b);
27
- const diff = aStr.localeCompare(bStr, void 0, { numeric: true, sensitivity: "base" });
28
- return dir === "asc" ? diff : -diff;
29
- }
30
- function stableSort(arr, cmp) {
31
- return arr.map((item, idx) => ({ item, idx })).sort((x, y) => {
32
- const c = cmp(x.item, y.item);
33
- return c !== 0 ? c : x.idx - y.idx;
34
- }).map((x) => x.item);
35
- }
36
- function useSorting({
37
- data = [],
38
- sortBy = null,
39
- sortDirection = "asc",
40
- state,
41
- onStateChange,
42
- columnComparators = {},
43
- nulls = "last",
44
- allowUnsort = true,
45
- resetOnDataChange = false
46
- }) {
47
- const isControlled = state != null;
48
- const [uncontrolled, setUncontrolled] = react.useState(() => ({
49
- sortBy,
50
- sortDirection
51
- }));
52
- const sortState = isControlled ? state : uncontrolled;
53
- const setSort = react.useCallback(
54
- (next) => {
55
- var _a, _b;
56
- const normalized = {
57
- sortBy: (_a = next.sortBy) != null ? _a : null,
58
- sortDirection: (_b = next.sortDirection) != null ? _b : null
59
- };
60
- if (isControlled) onStateChange == null ? void 0 : onStateChange(normalized);
61
- else setUncontrolled(normalized);
62
- },
63
- [isControlled, onStateChange]
64
- );
65
- const clearSort = react.useCallback(() => setSort({ sortBy: null, sortDirection: null }), [setSort]);
66
- const onSortChange = react.useCallback(
67
- (e) => {
68
- var _a, _b;
69
- const nextSortBy = (_a = e.sortBy) != null ? _a : null;
70
- setSort(sortState);
71
- const current = sortState;
72
- if (nextSortBy == null) {
73
- return clearSort();
74
- }
75
- if (current.sortBy === nextSortBy) {
76
- const nextDir = current.sortDirection === "asc" ? "desc" : allowUnsort ? null : "asc";
77
- return setSort({ sortBy: nextSortBy, sortDirection: nextDir });
78
- }
79
- return setSort({
80
- sortBy: nextSortBy,
81
- sortDirection: (_b = e.sortDirection) != null ? _b : "asc"
82
- });
83
- },
84
- [allowUnsort, clearSort, setSort, sortState]
85
- );
86
- const didInitRef = react.useRef(false);
87
- react.useEffect(() => {
88
- if (!resetOnDataChange) return;
89
- if (!didInitRef.current) {
90
- didInitRef.current = true;
91
- return;
92
- }
93
- clearSort();
94
- }, [resetOnDataChange, data]);
95
- const sortedData = react.useMemo(() => {
96
- const { sortBy: sb, sortDirection: dir } = sortState;
97
- if (!sb || !dir) return data;
98
- const custom = columnComparators[sb];
99
- const cmp = (a, b) => {
100
- if (custom) return custom(a, b, dir);
101
- const av = a[sb];
102
- const bv = b[sb];
103
- return defaultCompare(av, bv, dir, nulls);
104
- };
105
- return stableSort(data, cmp);
106
- }, [data, sortState, columnComparators, nulls]);
107
- const setSortRef = react.useRef(setSort);
108
- setSortRef.current = setSort;
109
- return {
110
- sortedData,
111
- sortState,
112
- onSortChange,
113
- setSort,
114
- clearSort
115
- };
116
- }
117
-
118
- exports.useSorting = useSorting;
@@ -1,52 +0,0 @@
1
- 'use strict';
2
-
3
- var react = require('react');
4
- var usePagination = require('./usePagination');
5
- var useSorting = require('./useSorting');
6
-
7
- function useTableData({
8
- data = [],
9
- pagination,
10
- sorting,
11
- resetPageOnSortChange = true
12
- }) {
13
- var _a, _b, _c, _d, _e, _f;
14
- const s = useSorting.useSorting({
15
- data,
16
- sortBy: (_a = sorting == null ? void 0 : sorting.sortBy) != null ? _a : null,
17
- sortDirection: (_b = sorting == null ? void 0 : sorting.direction) != null ? _b : null,
18
- state: sorting == null ? void 0 : sorting.state,
19
- onStateChange: sorting == null ? void 0 : sorting.onStateChange,
20
- columnComparators: sorting == null ? void 0 : sorting.columnComparators,
21
- nulls: (_c = sorting == null ? void 0 : sorting.nulls) != null ? _c : "last",
22
- allowUnsort: (_d = sorting == null ? void 0 : sorting.allowUnsort) != null ? _d : true
23
- });
24
- const p = usePagination.usePagination({
25
- data: s.sortedData,
26
- skip: (_e = pagination == null ? void 0 : pagination.skip) != null ? _e : 0,
27
- take: (_f = pagination == null ? void 0 : pagination.take) != null ? _f : 10,
28
- state: pagination == null ? void 0 : pagination.state,
29
- onStateChange: pagination == null ? void 0 : pagination.onStateChange
30
- });
31
- react.useEffect(() => {
32
- if (!resetPageOnSortChange) return;
33
- p.resetPage();
34
- }, [resetPageOnSortChange, s.sortState.sortBy, s.sortState.sortDirection]);
35
- const rows = react.useMemo(() => p.paginatedData, [p.paginatedData]);
36
- return {
37
- rows,
38
- totalCount: s.sortedData.length,
39
- pagination: {
40
- state: p.paginationState,
41
- onPageChange: p.onPageChange,
42
- resetPage: p.resetPage
43
- },
44
- sorting: {
45
- state: s.sortState,
46
- onSortChange: s.onSortChange,
47
- clearSort: s.clearSort
48
- }
49
- };
50
- }
51
-
52
- exports.useTableData = useTableData;
@@ -1,130 +0,0 @@
1
- 'use strict';
2
-
3
- var react = require('react');
4
-
5
- function useTableSelection({
6
- storageKey,
7
- items,
8
- getId,
9
- initialSelectedIds = /* @__PURE__ */ new Set(),
10
- totalItems,
11
- onSelectionChange,
12
- selectionMode = "single"
13
- }) {
14
- const [selectedIds, setSelectedIds] = react.useState(initialSelectedIds);
15
- const [selectedItemMap, setSelectedItemMap] = react.useState(() => /* @__PURE__ */ new Map());
16
- const itemsById = react.useMemo(() => {
17
- const m = /* @__PURE__ */ new Map();
18
- for (const item of items) m.set(getId(item), item);
19
- return m;
20
- }, [items, getId]);
21
- react.useEffect(() => {
22
- const stored = window.localStorage.getItem(storageKey);
23
- if (!stored) {
24
- setSelectedIds(initialSelectedIds);
25
- return;
26
- }
27
- try {
28
- const parsed = JSON.parse(stored);
29
- setSelectedIds(new Set(parsed));
30
- } catch {
31
- setSelectedIds(initialSelectedIds);
32
- }
33
- }, [storageKey]);
34
- react.useEffect(() => {
35
- setSelectedItemMap((prev) => {
36
- const next = /* @__PURE__ */ new Map();
37
- for (const id of selectedIds) {
38
- const item = itemsById.get(id);
39
- if (item !== void 0) next.set(id, item);
40
- }
41
- if (next.size === prev.size) {
42
- let same = true;
43
- for (const [id, item] of next) {
44
- if (prev.get(id) !== item) {
45
- same = false;
46
- break;
47
- }
48
- }
49
- if (same) return prev;
50
- }
51
- return next;
52
- });
53
- }, [selectedIds, itemsById]);
54
- const selectedItems = react.useMemo(() => Array.from(selectedItemMap.values()), [selectedItemMap]);
55
- const allSelected = react.useMemo(() => {
56
- if (typeof totalItems !== "number") return false;
57
- return totalItems > 0 && selectedIds.size === totalItems;
58
- }, [selectedIds, totalItems]);
59
- const anySelected = react.useMemo(() => selectedIds.size > 0, [selectedIds]);
60
- react.useEffect(() => {
61
- window.localStorage.setItem(storageKey, JSON.stringify(Array.from(selectedIds)));
62
- onSelectionChange == null ? void 0 : onSelectionChange({ selectedIds, selectedItems });
63
- }, [selectedIds, selectedItems, storageKey, onSelectionChange]);
64
- const toggleId = react.useCallback(
65
- (id) => {
66
- setSelectedIds((prevIds) => {
67
- const nextIds = new Set(prevIds);
68
- const isSelected = nextIds.has(id);
69
- if (isSelected) {
70
- nextIds.delete(id);
71
- } else {
72
- if (selectionMode === "single") nextIds.clear();
73
- nextIds.add(id);
74
- }
75
- return nextIds;
76
- });
77
- setSelectedItemMap((prevMap) => {
78
- const nextMap = new Map(prevMap);
79
- const isSelected = nextMap.has(id);
80
- if (isSelected) {
81
- nextMap.delete(id);
82
- } else {
83
- if (selectionMode === "single") nextMap.clear();
84
- const item = itemsById.get(id);
85
- if (item !== void 0) nextMap.set(id, item);
86
- }
87
- return nextMap;
88
- });
89
- },
90
- [itemsById, selectionMode]
91
- );
92
- const toggleItem = react.useCallback(
93
- (item) => {
94
- toggleId(getId(item));
95
- },
96
- [toggleId, getId]
97
- );
98
- const toggleAll = react.useCallback(
99
- (selected) => {
100
- if (!selected) {
101
- clearSelection();
102
- } else {
103
- const nextIds = /* @__PURE__ */ new Set();
104
- for (const item of items) {
105
- nextIds.add(getId(item));
106
- }
107
- setSelectedIds(nextIds);
108
- return nextIds;
109
- }
110
- },
111
- [allSelected, getId, items]
112
- );
113
- const clearSelection = react.useCallback(() => {
114
- setSelectedIds(/* @__PURE__ */ new Set());
115
- setSelectedItemMap(/* @__PURE__ */ new Map());
116
- }, []);
117
- return {
118
- selectedIds,
119
- selectedItems,
120
- selectedItemMap,
121
- toggleItem,
122
- toggleId,
123
- clearSelection,
124
- allSelected,
125
- anySelected,
126
- toggleAll
127
- };
128
- }
129
-
130
- exports.useTableSelection = useTableSelection;