@dbcdk/react-components 0.0.2 → 0.0.4

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 (281) hide show
  1. package/dist/assets/logo.cjs +87 -0
  2. package/dist/assets/logo.d.ts +2 -0
  3. package/dist/assets/logo.js +85 -0
  4. package/dist/components/app-header/AppHeader.cjs +14 -0
  5. package/dist/components/app-header/AppHeader.d.ts +5 -0
  6. package/dist/components/app-header/AppHeader.js +8 -0
  7. package/dist/components/app-header/AppHeader.module.css +73 -0
  8. package/dist/components/avatar/Avatar.cjs +67 -0
  9. package/dist/components/avatar/Avatar.d.ts +15 -0
  10. package/dist/components/avatar/Avatar.js +42 -0
  11. package/dist/components/avatar/Avatar.module.css +43 -0
  12. package/dist/components/breadcrumbs/Breadcrumbs.cjs +23 -0
  13. package/dist/components/breadcrumbs/Breadcrumbs.d.ts +12 -0
  14. package/dist/components/breadcrumbs/Breadcrumbs.js +16 -0
  15. package/dist/components/breadcrumbs/Breadcrumbs.module.css +84 -0
  16. package/dist/components/button/Button.cjs +79 -0
  17. package/dist/components/button/Button.d.ts +13 -0
  18. package/dist/components/button/Button.js +54 -0
  19. package/dist/components/button/Button.module.css +156 -0
  20. package/dist/components/card/Card.cjs +29 -0
  21. package/dist/components/card/Card.d.ts +11 -0
  22. package/dist/components/card/Card.js +23 -0
  23. package/dist/components/card/Card.module.css +69 -0
  24. package/dist/components/card-container/CardContainer.cjs +23 -0
  25. package/dist/components/card-container/CardContainer.d.ts +8 -0
  26. package/dist/components/card-container/CardContainer.js +17 -0
  27. package/dist/components/card-container/CardContainer.module.css +18 -0
  28. package/dist/components/checkbox/Checkbox.cjs +43 -0
  29. package/dist/components/checkbox/Checkbox.d.ts +12 -0
  30. package/dist/components/checkbox/Checkbox.js +37 -0
  31. package/dist/components/checkbox/Checkbox.module.css +63 -0
  32. package/dist/components/chip/Chip.cjs +49 -0
  33. package/dist/components/chip/Chip.d.ts +13 -0
  34. package/dist/components/chip/Chip.js +43 -0
  35. package/dist/components/chip/Chip.module.css +97 -0
  36. package/dist/components/circle/Circle.cjs +18 -0
  37. package/dist/components/circle/Circle.d.ts +8 -0
  38. package/dist/components/circle/Circle.js +12 -0
  39. package/dist/components/circle/Circle.module.css +62 -0
  40. package/dist/components/clear-button/ClearButton.cjs +26 -0
  41. package/dist/components/clear-button/ClearButton.d.ts +6 -0
  42. package/dist/components/clear-button/ClearButton.js +20 -0
  43. package/dist/components/clear-button/ClearButton.module.css +16 -0
  44. package/dist/components/data-summary/DataSummary.cjs +49 -0
  45. package/dist/components/data-summary/DataSummary.d.ts +19 -0
  46. package/dist/components/data-summary/DataSummary.js +43 -0
  47. package/dist/components/data-summary/DataSummary.module.css +51 -0
  48. package/dist/components/filter-field/FilterField.cjs +174 -0
  49. package/dist/components/filter-field/FilterField.d.ts +28 -0
  50. package/dist/components/filter-field/FilterField.js +167 -0
  51. package/dist/components/filter-field/FilterField.module.css +109 -0
  52. package/dist/components/headline/Headline.cjs +47 -0
  53. package/dist/components/headline/Headline.d.ts +14 -0
  54. package/dist/components/headline/Headline.js +41 -0
  55. package/dist/components/headline/Headline.module.css +35 -0
  56. package/dist/components/icon/Icon.cjs +27 -0
  57. package/dist/components/icon/Icon.d.ts +9 -0
  58. package/dist/components/icon/Icon.js +20 -0
  59. package/dist/components/icon/Icon.module.css +34 -0
  60. package/dist/components/input/Input.cjs +48 -0
  61. package/dist/components/input/Input.d.ts +13 -0
  62. package/dist/components/input/Input.js +42 -0
  63. package/dist/components/input/Input.module.css +112 -0
  64. package/dist/components/menu/Menu.cjs +96 -0
  65. package/dist/components/menu/Menu.d.ts +12 -0
  66. package/dist/components/menu/Menu.js +71 -0
  67. package/dist/components/menu/Menu.module.css +95 -0
  68. package/dist/components/multi-select/MultiSelect.cjs +48 -0
  69. package/dist/components/multi-select/MultiSelect.d.ts +18 -0
  70. package/dist/components/multi-select/MultiSelect.js +46 -0
  71. package/dist/components/nav-bar/NavBar.cjs +55 -0
  72. package/dist/components/nav-bar/NavBar.d.ts +20 -0
  73. package/dist/components/nav-bar/NavBar.js +49 -0
  74. package/dist/components/nav-bar/NavBar.module.css +101 -0
  75. package/dist/components/page/Page.cjs +30 -0
  76. package/dist/components/page/Page.d.ts +13 -0
  77. package/dist/components/page/Page.js +24 -0
  78. package/dist/components/page/Page.module.css +26 -0
  79. package/dist/components/page-layout/PageLayout.cjs +101 -0
  80. package/dist/components/page-layout/PageLayout.d.ts +35 -0
  81. package/dist/components/page-layout/PageLayout.js +95 -0
  82. package/dist/components/page-layout/PageLayout.module.css +142 -0
  83. package/dist/components/pagination/Pagination.cjs +117 -0
  84. package/dist/components/pagination/Pagination.d.ts +17 -0
  85. package/dist/components/pagination/Pagination.js +111 -0
  86. package/dist/components/pagination/Pagination.module.css +17 -0
  87. package/dist/components/panel/Panel.cjs +18 -0
  88. package/dist/components/panel/Panel.d.ts +10 -0
  89. package/dist/components/panel/Panel.js +12 -0
  90. package/dist/components/panel/Panel.module.css +29 -0
  91. package/dist/components/popover/Popover.cjs +132 -0
  92. package/dist/components/popover/Popover.d.ts +15 -0
  93. package/dist/components/popover/Popover.js +126 -0
  94. package/dist/components/popover/Popover.module.css +25 -0
  95. package/dist/components/search-box/SearchBox.cjs +162 -0
  96. package/dist/components/search-box/SearchBox.d.ts +22 -0
  97. package/dist/components/search-box/SearchBox.js +156 -0
  98. package/dist/components/search-box/SearchBox.module.css +20 -0
  99. package/dist/components/segmented-progress-bar/SegmentedProgressBar.cjs +97 -0
  100. package/dist/components/segmented-progress-bar/SegmentedProgressBar.d.ts +24 -0
  101. package/dist/components/segmented-progress-bar/SegmentedProgressBar.js +91 -0
  102. package/dist/components/segmented-progress-bar/SegmentedProgressBar.module.css +55 -0
  103. package/dist/components/select/Select.cjs +52 -0
  104. package/dist/components/select/Select.d.ts +11 -0
  105. package/dist/components/select/Select.js +50 -0
  106. package/dist/components/sidebar/Sidebar.cjs +38 -0
  107. package/dist/components/sidebar/Sidebar.d.ts +12 -0
  108. package/dist/components/sidebar/Sidebar.js +31 -0
  109. package/dist/components/sidebar/Sidebar.module.css +66 -0
  110. package/dist/components/sidebar/components/SidebarItem.cjs +16 -0
  111. package/dist/components/sidebar/components/SidebarItem.d.ts +9 -0
  112. package/dist/components/sidebar/components/SidebarItem.js +14 -0
  113. package/dist/components/sidebar/components/SidebarItem.module.css +0 -0
  114. package/dist/components/sidebar/components/expandable-sidebar-item/ExpandableSidebarItem.cjs +74 -0
  115. package/dist/components/sidebar/components/expandable-sidebar-item/ExpandableSidebarItem.d.ts +9 -0
  116. package/dist/components/sidebar/components/expandable-sidebar-item/ExpandableSidebarItem.js +68 -0
  117. package/dist/components/sidebar/components/expandable-sidebar-item/ExpandableSidebarItem.module.css +61 -0
  118. package/dist/components/sidebar/components/sidebar-item-content/SidebarItemContent.cjs +27 -0
  119. package/dist/components/sidebar/components/sidebar-item-content/SidebarItemContent.d.ts +8 -0
  120. package/dist/components/sidebar/components/sidebar-item-content/SidebarItemContent.js +21 -0
  121. package/dist/components/sidebar/components/sidebar-item-content/SidebarItemContent.module.css +62 -0
  122. package/dist/components/sidebar/components/sidebar-items/SidebarItems.cjs +28 -0
  123. package/dist/components/sidebar/components/sidebar-items/SidebarItems.d.ts +4 -0
  124. package/dist/components/sidebar/components/sidebar-items/SidebarItems.js +26 -0
  125. package/dist/components/sidebar/components/sidenav-filteirng/SidenavFiltering.cjs +25 -0
  126. package/dist/components/sidebar/components/sidenav-filteirng/SidenavFiltering.d.ts +3 -0
  127. package/dist/components/sidebar/components/sidenav-filteirng/SidenavFiltering.js +23 -0
  128. package/dist/components/sidebar/providers/SidebarProvider.cjs +81 -0
  129. package/dist/components/sidebar/providers/SidebarProvider.d.ts +24 -0
  130. package/dist/components/sidebar/providers/SidebarProvider.js +78 -0
  131. package/dist/components/skeleton-loader/SkeletonLoader.cjs +270 -0
  132. package/dist/components/skeleton-loader/SkeletonLoader.d.ts +9 -0
  133. package/dist/components/skeleton-loader/SkeletonLoader.js +268 -0
  134. package/dist/components/skeleton-loader/skeleton-loader-item/SkeletonLoaderItem.cjs +42 -0
  135. package/dist/components/skeleton-loader/skeleton-loader-item/SkeletonLoaderItem.d.ts +11 -0
  136. package/dist/components/skeleton-loader/skeleton-loader-item/SkeletonLoaderItem.js +36 -0
  137. package/dist/components/skeleton-loader/skeleton-loader-item/SkeletonLoaderItem.module.css +63 -0
  138. package/dist/components/split-button/SplitButton.cjs +37 -0
  139. package/dist/components/split-button/SplitButton.d.ts +14 -0
  140. package/dist/components/split-button/SplitButton.js +31 -0
  141. package/dist/components/split-button/SplitButton.module.css +32 -0
  142. package/dist/components/table/Table.cjs +181 -0
  143. package/dist/components/table/Table.d.ts +45 -0
  144. package/dist/components/table/Table.js +175 -0
  145. package/dist/components/table/Table.module.css +143 -0
  146. package/dist/components/table/components/column-resizer/ColumnResizer.cjs +22 -0
  147. package/dist/components/table/components/column-resizer/ColumnResizer.d.ts +7 -0
  148. package/dist/components/table/components/column-resizer/ColumnResizer.js +16 -0
  149. package/dist/components/table/components/column-resizer/ColumnResizer.module.css +13 -0
  150. package/dist/components/tabs/Tabs.cjs +74 -0
  151. package/dist/components/tabs/Tabs.d.ts +18 -0
  152. package/dist/components/tabs/Tabs.js +68 -0
  153. package/dist/components/tabs/Tabs.module.css +113 -0
  154. package/dist/components/text-area/Textarea.cjs +62 -0
  155. package/dist/components/text-area/Textarea.d.ts +14 -0
  156. package/dist/components/text-area/Textarea.js +56 -0
  157. package/dist/components/text-area/Textarea.module.css +3 -0
  158. package/dist/components/tooltip/Tooltip.cjs +78 -0
  159. package/dist/components/tooltip/Tooltip.d.ts +11 -0
  160. package/dist/components/tooltip/Tooltip.js +72 -0
  161. package/dist/components/tooltip/Tooltip.module.css +84 -0
  162. package/dist/components/user-display/UserDisplay.cjs +28 -0
  163. package/dist/components/user-display/UserDisplay.d.ts +9 -0
  164. package/dist/components/user-display/UserDisplay.js +22 -0
  165. package/dist/components/user-display/UserDisplay.module.css +25 -0
  166. package/dist/constants/severity.cjs +21 -0
  167. package/dist/constants/severity.d.ts +3 -0
  168. package/dist/constants/severity.js +18 -0
  169. package/dist/constants/severity.types.cjs +2 -0
  170. package/dist/constants/severity.types.d.ts +1 -0
  171. package/dist/constants/severity.types.js +1 -0
  172. package/dist/constants/sizes.cjs +10 -0
  173. package/dist/constants/sizes.d.ts +2 -0
  174. package/dist/constants/sizes.js +8 -0
  175. package/dist/hooks/useTheme.cjs +58 -0
  176. package/dist/hooks/useTheme.d.ts +9 -0
  177. package/dist/hooks/useTheme.js +55 -0
  178. package/dist/hooks/useViewportFill.cjs +52 -0
  179. package/dist/hooks/useViewportFill.d.ts +15 -0
  180. package/dist/hooks/useViewportFill.js +50 -0
  181. package/dist/index.cjs +264 -2
  182. package/dist/index.d.ts +37 -12
  183. package/dist/index.js +37 -2
  184. package/dist/src/styles/styles.css +124 -0
  185. package/dist/styles/css-helper-classes/spacing.css +291 -0
  186. package/dist/styles/fonts/Roboto/OFL.txt +93 -0
  187. package/dist/styles/fonts/Roboto/README.txt +118 -0
  188. package/dist/styles/fonts/Roboto/Roboto-Black.ttf +0 -0
  189. package/dist/styles/fonts/Roboto/Roboto-BlackItalic.ttf +0 -0
  190. package/dist/styles/fonts/Roboto/Roboto-Bold.ttf +0 -0
  191. package/dist/styles/fonts/Roboto/Roboto-BoldItalic.ttf +0 -0
  192. package/dist/styles/fonts/Roboto/Roboto-ExtraBold.ttf +0 -0
  193. package/dist/styles/fonts/Roboto/Roboto-ExtraBoldItalic.ttf +0 -0
  194. package/dist/styles/fonts/Roboto/Roboto-ExtraLight.ttf +0 -0
  195. package/dist/styles/fonts/Roboto/Roboto-ExtraLightItalic.ttf +0 -0
  196. package/dist/styles/fonts/Roboto/Roboto-Italic.ttf +0 -0
  197. package/dist/styles/fonts/Roboto/Roboto-Light.ttf +0 -0
  198. package/dist/styles/fonts/Roboto/Roboto-LightItalic.ttf +0 -0
  199. package/dist/styles/fonts/Roboto/Roboto-Medium.ttf +0 -0
  200. package/dist/styles/fonts/Roboto/Roboto-MediumItalic.ttf +0 -0
  201. package/dist/styles/fonts/Roboto/Roboto-Regular.ttf +0 -0
  202. package/dist/styles/fonts/Roboto/Roboto-SemiBold.ttf +0 -0
  203. package/dist/styles/fonts/Roboto/Roboto-SemiBoldItalic.ttf +0 -0
  204. package/dist/styles/fonts/Roboto/Roboto-Thin.ttf +0 -0
  205. package/dist/styles/fonts/Roboto/Roboto-ThinItalic.ttf +0 -0
  206. package/dist/styles/fonts/Roboto/Roboto_Condensed-Black.ttf +0 -0
  207. package/dist/styles/fonts/Roboto/Roboto_Condensed-BlackItalic.ttf +0 -0
  208. package/dist/styles/fonts/Roboto/Roboto_Condensed-Bold.ttf +0 -0
  209. package/dist/styles/fonts/Roboto/Roboto_Condensed-BoldItalic.ttf +0 -0
  210. package/dist/styles/fonts/Roboto/Roboto_Condensed-ExtraBold.ttf +0 -0
  211. package/dist/styles/fonts/Roboto/Roboto_Condensed-ExtraBoldItalic.ttf +0 -0
  212. package/dist/styles/fonts/Roboto/Roboto_Condensed-ExtraLight.ttf +0 -0
  213. package/dist/styles/fonts/Roboto/Roboto_Condensed-ExtraLightItalic.ttf +0 -0
  214. package/dist/styles/fonts/Roboto/Roboto_Condensed-Italic.ttf +0 -0
  215. package/dist/styles/fonts/Roboto/Roboto_Condensed-Light.ttf +0 -0
  216. package/dist/styles/fonts/Roboto/Roboto_Condensed-LightItalic.ttf +0 -0
  217. package/dist/styles/fonts/Roboto/Roboto_Condensed-Medium.ttf +0 -0
  218. package/dist/styles/fonts/Roboto/Roboto_Condensed-MediumItalic.ttf +0 -0
  219. package/dist/styles/fonts/Roboto/Roboto_Condensed-Regular.ttf +0 -0
  220. package/dist/styles/fonts/Roboto/Roboto_Condensed-SemiBold.ttf +0 -0
  221. package/dist/styles/fonts/Roboto/Roboto_Condensed-SemiBoldItalic.ttf +0 -0
  222. package/dist/styles/fonts/Roboto/Roboto_Condensed-Thin.ttf +0 -0
  223. package/dist/styles/fonts/Roboto/Roboto_Condensed-ThinItalic.ttf +0 -0
  224. package/dist/styles/fonts/Roboto/Roboto_SemiCondensed-Black.ttf +0 -0
  225. package/dist/styles/fonts/Roboto/Roboto_SemiCondensed-BlackItalic.ttf +0 -0
  226. package/dist/styles/fonts/Roboto/Roboto_SemiCondensed-Bold.ttf +0 -0
  227. package/dist/styles/fonts/Roboto/Roboto_SemiCondensed-BoldItalic.ttf +0 -0
  228. package/dist/styles/fonts/Roboto/Roboto_SemiCondensed-ExtraBold.ttf +0 -0
  229. package/dist/styles/fonts/Roboto/Roboto_SemiCondensed-ExtraBoldItalic.ttf +0 -0
  230. package/dist/styles/fonts/Roboto/Roboto_SemiCondensed-ExtraLight.ttf +0 -0
  231. package/dist/styles/fonts/Roboto/Roboto_SemiCondensed-ExtraLightItalic.ttf +0 -0
  232. package/dist/styles/fonts/Roboto/Roboto_SemiCondensed-Italic.ttf +0 -0
  233. package/dist/styles/fonts/Roboto/Roboto_SemiCondensed-Light.ttf +0 -0
  234. package/dist/styles/fonts/Roboto/Roboto_SemiCondensed-LightItalic.ttf +0 -0
  235. package/dist/styles/fonts/Roboto/Roboto_SemiCondensed-Medium.ttf +0 -0
  236. package/dist/styles/fonts/Roboto/Roboto_SemiCondensed-MediumItalic.ttf +0 -0
  237. package/dist/styles/fonts/Roboto/Roboto_SemiCondensed-Regular.ttf +0 -0
  238. package/dist/styles/fonts/Roboto/Roboto_SemiCondensed-SemiBold.ttf +0 -0
  239. package/dist/styles/fonts/Roboto/Roboto_SemiCondensed-SemiBoldItalic.ttf +0 -0
  240. package/dist/styles/fonts/Roboto/Roboto_SemiCondensed-Thin.ttf +0 -0
  241. package/dist/styles/fonts/Roboto/Roboto_SemiCondensed-ThinItalic.ttf +0 -0
  242. package/dist/styles/fonts/Tajawal/OFL.txt +93 -0
  243. package/dist/styles/fonts/Tajawal/Tajawal-Black.ttf +0 -0
  244. package/dist/styles/fonts/Tajawal/Tajawal-Bold.ttf +0 -0
  245. package/dist/styles/fonts/Tajawal/Tajawal-ExtraBold.ttf +0 -0
  246. package/dist/styles/fonts/Tajawal/Tajawal-ExtraLight.ttf +0 -0
  247. package/dist/styles/fonts/Tajawal/Tajawal-Light.ttf +0 -0
  248. package/dist/styles/fonts/Tajawal/Tajawal-Medium.ttf +0 -0
  249. package/dist/styles/fonts/Tajawal/Tajawal-Regular.ttf +0 -0
  250. package/dist/styles/styles.css +124 -0
  251. package/dist/styles/themes/dbc/dark.css +240 -0
  252. package/dist/styles/themes/dbc/light.css +245 -0
  253. package/dist/styles/themes/forfatterweb/light.css +104 -0
  254. package/dist/styles/themes/types.cjs +2 -0
  255. package/dist/styles/themes/types.d.ts +16 -0
  256. package/dist/styles/themes/types.js +1 -0
  257. package/dist/tanstack.cjs +231 -0
  258. package/dist/tanstack.d.ts +25 -0
  259. package/dist/tanstack.js +206 -0
  260. package/dist/types/a11y-props.types.cjs +2 -0
  261. package/dist/types/a11y-props.types.d.ts +8 -0
  262. package/dist/types/a11y-props.types.js +1 -0
  263. package/dist/types/assets.d.cjs +2 -0
  264. package/dist/types/assets.d.js +1 -0
  265. package/dist/types/css.d.cjs +2 -0
  266. package/dist/types/css.d.js +1 -0
  267. package/dist/types/sizes.types.cjs +2 -0
  268. package/dist/types/sizes.types.d.ts +2 -0
  269. package/dist/types/sizes.types.js +1 -0
  270. package/dist/utils/arrays/nested-filtering.cjs +40 -0
  271. package/dist/utils/arrays/nested-filtering.d.ts +9 -0
  272. package/dist/utils/arrays/nested-filtering.js +38 -0
  273. package/dist/utils/date/formatDate.cjs +19 -0
  274. package/dist/utils/date/formatDate.d.ts +12 -0
  275. package/dist/utils/date/formatDate.js +17 -0
  276. package/package.json +53 -12
  277. package/dist/index.cjs.map +0 -1
  278. package/dist/index.css +0 -2
  279. package/dist/index.css.map +0 -1
  280. package/dist/index.d.cts +0 -12
  281. package/dist/index.js.map +0 -1
@@ -0,0 +1,142 @@
1
+ .container {
2
+ display: flex;
3
+ flex-direction: column;
4
+ gap: 20px;
5
+ max-width: 100vw;
6
+ }
7
+
8
+ .vertical {
9
+ flex-direction: row;
10
+ align-items: flex-start;
11
+ }
12
+
13
+ .container.containScrolling {
14
+ height: 100vh;
15
+ overflow: auto;
16
+ position: relative;
17
+ }
18
+
19
+ @media screen and (max-height: 400px) {
20
+ .container {
21
+ height: unset;
22
+ }
23
+ }
24
+
25
+ .heroContainer {
26
+ height: clamp(220px, 80svh, 520px);
27
+ height: clamp(220px, 80vh, 600px);
28
+ position: relative;
29
+ overflow: hidden;
30
+ margin: var(--spacing-lg) auto;
31
+ width: 100%;
32
+ padding: 0 var(--spacing-lg);
33
+ box-sizing: border-box;
34
+ }
35
+
36
+ .heroContainer img {
37
+ width: 100%;
38
+ height: 100%;
39
+ object-fit: cover;
40
+ object-position: 0% 10%;
41
+ display: block;
42
+ }
43
+
44
+ .heroImageWrapper {
45
+ height: 100%;
46
+ position: relative;
47
+ }
48
+ .heroImageWrapper::after {
49
+ content: '';
50
+ position: absolute;
51
+ inset: 0;
52
+ top: 0;
53
+ left: 0;
54
+ height: 100%;
55
+ width: 100%;
56
+ background: rgba(0, 0, 0, 0.15);
57
+ }
58
+
59
+ .heroText {
60
+ z-index: 10;
61
+ position: absolute;
62
+ left: var(--spacing-2xl);
63
+ bottom: var(--spacing-2xl);
64
+ padding: var(--spacing-md);
65
+ letter-spacing: 1px;
66
+ color: #fff;
67
+ text-shadow: 0 2px 6px rgba(0, 0, 0, 0.4);
68
+ font-size: 1.5rem;
69
+ font-weight: 600;
70
+ line-height: 1.3;
71
+ }
72
+
73
+ .heroText h2 {
74
+ margin: 0;
75
+ font-size: var(--font-size-2xl);
76
+ }
77
+
78
+ .heroText .metaHeadline {
79
+ text-transform: uppercase;
80
+ opacity: 0.9;
81
+ font-size: var(--font-size-lg);
82
+ text-transform: uppercase;
83
+ opacity: 0.9;
84
+ font-weight: 500;
85
+ padding: 0 0 var(--spacing-xs) 0;
86
+ font-weight: 400;
87
+ }
88
+
89
+ .metaHeadline::after {
90
+ content: '';
91
+ display: block;
92
+ width: 40px;
93
+ height: 3px;
94
+ background: var(--color-primary);
95
+ margin-top: 4px;
96
+ border-radius: 2px;
97
+ }
98
+
99
+ .headerContainer {
100
+ display: flex;
101
+ justify-content: center;
102
+ }
103
+
104
+ .container:not(.containScrolling) {
105
+ .headerContainer {
106
+ position: sticky;
107
+ z-index: 1000;
108
+ top: 0;
109
+ }
110
+ }
111
+
112
+ .headerContent {
113
+ flex: 0 0 auto;
114
+ width: 100%;
115
+ box-sizing: border-box;
116
+ }
117
+
118
+ .maxWidth {
119
+ max-width: 1600px;
120
+ margin: auto;
121
+ width: 100%;
122
+ box-sizing: border-box;
123
+ }
124
+
125
+ .content {
126
+ flex: 1 1 auto;
127
+ width: 100%;
128
+ margin: 0 auto;
129
+ box-sizing: border-box;
130
+ gap: var(--spacing-xl);
131
+ padding: var(--spacing-md) var(--spacing-xl);
132
+ padding-top: 0;
133
+ min-height: 0;
134
+ display: flex;
135
+ flex-direction: column;
136
+ overflow: auto;
137
+ -webkit-overflow-scrolling: touch;
138
+ }
139
+
140
+ .footer {
141
+ flex: 0 0 auto;
142
+ }
@@ -0,0 +1,117 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var react = require('react');
5
+ var styles = require('./Pagination.module.css');
6
+ var Button = require('../button/Button');
7
+ var lucideReact = require('lucide-react');
8
+ var Popover = require('../popover/Popover');
9
+ var Menu = require('../menu/Menu');
10
+
11
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
12
+
13
+ var styles__default = /*#__PURE__*/_interopDefault(styles);
14
+
15
+ const DEFAULT_PAGE_SIZE_OPTIONS = [10, 25, 50, 100];
16
+ function Pagination({
17
+ itemsCount = 0,
18
+ skip = 0,
19
+ take = DEFAULT_PAGE_SIZE_OPTIONS[1],
20
+ onPageChange,
21
+ pageSizeOptions = DEFAULT_PAGE_SIZE_OPTIONS
22
+ }) {
23
+ const totalPages = react.useMemo(() => {
24
+ const pages = Math.max(1, Math.ceil(itemsCount / Math.max(1, take)));
25
+ return pages;
26
+ }, [itemsCount, take]);
27
+ const currentPage = react.useMemo(() => {
28
+ const p = Math.floor(skip / Math.max(1, take)) + 1;
29
+ return Math.min(Math.max(1, p), totalPages);
30
+ }, [skip, take, totalPages]);
31
+ const emit = react.useCallback(
32
+ (page) => {
33
+ const clampedPage = Math.min(Math.max(1, page), totalPages);
34
+ const nextSkip = (clampedPage - 1) * take;
35
+ onPageChange == null ? void 0 : onPageChange({
36
+ page: clampedPage,
37
+ take,
38
+ skip: nextSkip,
39
+ totalPages
40
+ });
41
+ },
42
+ [onPageChange, take, totalPages]
43
+ );
44
+ const prevPage = react.useCallback(() => emit(currentPage - 1), [emit, currentPage]);
45
+ const nextPage = react.useCallback(() => emit(currentPage + 1), [emit, currentPage]);
46
+ const goToPage = react.useCallback((page) => emit(page), [emit]);
47
+ const pageList = react.useMemo(() => {
48
+ const visiblePages = 3;
49
+ const pages = Array.from({ length: totalPages }, (_, i) => i + 1);
50
+ let startIndex = Math.max(currentPage - Math.floor(visiblePages / 2) - 1, 0);
51
+ let endIndex = startIndex + visiblePages;
52
+ if (endIndex > totalPages) {
53
+ endIndex = totalPages;
54
+ startIndex = Math.max(endIndex - visiblePages, 0);
55
+ }
56
+ return {
57
+ first: startIndex > 0 ? 1 : void 0,
58
+ items: pages.slice(startIndex, endIndex),
59
+ last: endIndex < totalPages ? totalPages : void 0
60
+ };
61
+ }, [totalPages, currentPage]);
62
+ const handlePageSizeChange = react.useCallback(
63
+ (size) => {
64
+ onPageChange == null ? void 0 : onPageChange({
65
+ page: 1,
66
+ take: size,
67
+ skip: 0,
68
+ totalPages: Math.max(1, Math.ceil(itemsCount / Math.max(1, size)))
69
+ });
70
+ },
71
+ [onPageChange, itemsCount]
72
+ );
73
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles__default.default.container, children: [
74
+ /* @__PURE__ */ jsxRuntime.jsx(Button.Button, { disabled: currentPage === 1, icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ArrowLeft, {}), onClick: prevPage }),
75
+ pageList.first && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: styles__default.default.ellipsisButton, children: [
76
+ /* @__PURE__ */ jsxRuntime.jsx(Button.Button, { variant: "outlined", onClick: () => goToPage(1), children: pageList.first }),
77
+ "\u2026"
78
+ ] }),
79
+ pageList.items.map((page) => /* @__PURE__ */ jsxRuntime.jsx(
80
+ Button.Button,
81
+ {
82
+ "aria-current": page === currentPage ? "page" : void 0,
83
+ variant: "outlined",
84
+ onClick: () => goToPage(page),
85
+ active: page === currentPage,
86
+ children: page
87
+ },
88
+ page
89
+ )),
90
+ pageList.last !== void 0 && /* @__PURE__ */ jsxRuntime.jsxs("span", { className: styles__default.default.ellipsisButton, children: [
91
+ "\u2026",
92
+ /* @__PURE__ */ jsxRuntime.jsx(Button.Button, { variant: "outlined", onClick: () => goToPage(pageList.last), children: pageList.last })
93
+ ] }),
94
+ /* @__PURE__ */ jsxRuntime.jsx(Button.Button, { disabled: currentPage === totalPages, icon: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ArrowRight, {}), onClick: nextPage }),
95
+ /* @__PURE__ */ jsxRuntime.jsx(
96
+ Popover.Popover,
97
+ {
98
+ trigger: (event, icon) => /* @__PURE__ */ jsxRuntime.jsxs(Button.Button, { variant: "outlined", onClick: event, children: [
99
+ "Vis ",
100
+ take,
101
+ icon
102
+ ] }),
103
+ children: /* @__PURE__ */ jsxRuntime.jsx(Menu.Menu, { children: pageSizeOptions.map((size) => /* @__PURE__ */ jsxRuntime.jsx(Menu.Menu.Item, { active: size === take, children: /* @__PURE__ */ jsxRuntime.jsx(
104
+ "button",
105
+ {
106
+ onClick: () => {
107
+ handlePageSizeChange(size);
108
+ },
109
+ children: size
110
+ }
111
+ ) }, size)) })
112
+ }
113
+ )
114
+ ] });
115
+ }
116
+
117
+ exports.Pagination = Pagination;
@@ -0,0 +1,17 @@
1
+ export type PageChangeEvent = {
2
+ page: number;
3
+ take: number;
4
+ skip: number;
5
+ totalPages: number;
6
+ pageSizeOptions?: number[];
7
+ };
8
+ interface PaginationProps {
9
+ itemsCount?: number;
10
+ take?: number;
11
+ skip?: number;
12
+ onPageChange?: (e: PageChangeEvent) => void;
13
+ lazy?: boolean;
14
+ pageSizeOptions?: number[];
15
+ }
16
+ export declare function Pagination({ itemsCount, skip, take, onPageChange, pageSizeOptions, }: PaginationProps): React.ReactNode;
17
+ export {};
@@ -0,0 +1,111 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { useMemo, useCallback } from 'react';
3
+ import styles from './Pagination.module.css';
4
+ import { Button } from '../button/Button';
5
+ import { ArrowLeft, ArrowRight } from 'lucide-react';
6
+ import { Popover } from '../popover/Popover';
7
+ import { Menu } from '../menu/Menu';
8
+
9
+ const DEFAULT_PAGE_SIZE_OPTIONS = [10, 25, 50, 100];
10
+ function Pagination({
11
+ itemsCount = 0,
12
+ skip = 0,
13
+ take = DEFAULT_PAGE_SIZE_OPTIONS[1],
14
+ onPageChange,
15
+ pageSizeOptions = DEFAULT_PAGE_SIZE_OPTIONS
16
+ }) {
17
+ const totalPages = useMemo(() => {
18
+ const pages = Math.max(1, Math.ceil(itemsCount / Math.max(1, take)));
19
+ return pages;
20
+ }, [itemsCount, take]);
21
+ const currentPage = useMemo(() => {
22
+ const p = Math.floor(skip / Math.max(1, take)) + 1;
23
+ return Math.min(Math.max(1, p), totalPages);
24
+ }, [skip, take, totalPages]);
25
+ const emit = useCallback(
26
+ (page) => {
27
+ const clampedPage = Math.min(Math.max(1, page), totalPages);
28
+ const nextSkip = (clampedPage - 1) * take;
29
+ onPageChange == null ? void 0 : onPageChange({
30
+ page: clampedPage,
31
+ take,
32
+ skip: nextSkip,
33
+ totalPages
34
+ });
35
+ },
36
+ [onPageChange, take, totalPages]
37
+ );
38
+ const prevPage = useCallback(() => emit(currentPage - 1), [emit, currentPage]);
39
+ const nextPage = useCallback(() => emit(currentPage + 1), [emit, currentPage]);
40
+ const goToPage = useCallback((page) => emit(page), [emit]);
41
+ const pageList = useMemo(() => {
42
+ const visiblePages = 3;
43
+ const pages = Array.from({ length: totalPages }, (_, i) => i + 1);
44
+ let startIndex = Math.max(currentPage - Math.floor(visiblePages / 2) - 1, 0);
45
+ let endIndex = startIndex + visiblePages;
46
+ if (endIndex > totalPages) {
47
+ endIndex = totalPages;
48
+ startIndex = Math.max(endIndex - visiblePages, 0);
49
+ }
50
+ return {
51
+ first: startIndex > 0 ? 1 : void 0,
52
+ items: pages.slice(startIndex, endIndex),
53
+ last: endIndex < totalPages ? totalPages : void 0
54
+ };
55
+ }, [totalPages, currentPage]);
56
+ const handlePageSizeChange = useCallback(
57
+ (size) => {
58
+ onPageChange == null ? void 0 : onPageChange({
59
+ page: 1,
60
+ take: size,
61
+ skip: 0,
62
+ totalPages: Math.max(1, Math.ceil(itemsCount / Math.max(1, size)))
63
+ });
64
+ },
65
+ [onPageChange, itemsCount]
66
+ );
67
+ return /* @__PURE__ */ jsxs("div", { className: styles.container, children: [
68
+ /* @__PURE__ */ jsx(Button, { disabled: currentPage === 1, icon: /* @__PURE__ */ jsx(ArrowLeft, {}), onClick: prevPage }),
69
+ pageList.first && /* @__PURE__ */ jsxs("span", { className: styles.ellipsisButton, children: [
70
+ /* @__PURE__ */ jsx(Button, { variant: "outlined", onClick: () => goToPage(1), children: pageList.first }),
71
+ "\u2026"
72
+ ] }),
73
+ pageList.items.map((page) => /* @__PURE__ */ jsx(
74
+ Button,
75
+ {
76
+ "aria-current": page === currentPage ? "page" : void 0,
77
+ variant: "outlined",
78
+ onClick: () => goToPage(page),
79
+ active: page === currentPage,
80
+ children: page
81
+ },
82
+ page
83
+ )),
84
+ pageList.last !== void 0 && /* @__PURE__ */ jsxs("span", { className: styles.ellipsisButton, children: [
85
+ "\u2026",
86
+ /* @__PURE__ */ jsx(Button, { variant: "outlined", onClick: () => goToPage(pageList.last), children: pageList.last })
87
+ ] }),
88
+ /* @__PURE__ */ jsx(Button, { disabled: currentPage === totalPages, icon: /* @__PURE__ */ jsx(ArrowRight, {}), onClick: nextPage }),
89
+ /* @__PURE__ */ jsx(
90
+ Popover,
91
+ {
92
+ trigger: (event, icon) => /* @__PURE__ */ jsxs(Button, { variant: "outlined", onClick: event, children: [
93
+ "Vis ",
94
+ take,
95
+ icon
96
+ ] }),
97
+ children: /* @__PURE__ */ jsx(Menu, { children: pageSizeOptions.map((size) => /* @__PURE__ */ jsx(Menu.Item, { active: size === take, children: /* @__PURE__ */ jsx(
98
+ "button",
99
+ {
100
+ onClick: () => {
101
+ handlePageSizeChange(size);
102
+ },
103
+ children: size
104
+ }
105
+ ) }, size)) })
106
+ }
107
+ )
108
+ ] });
109
+ }
110
+
111
+ export { Pagination };
@@ -0,0 +1,17 @@
1
+ .container {
2
+ display: flex;
3
+ gap: 5px;
4
+ align-items: flex-end;
5
+ justify-content: center;
6
+ margin: 0 auto;
7
+ }
8
+
9
+ .ellipsisButton {
10
+ display: none;
11
+ }
12
+
13
+ @media (min-width: 480px) {
14
+ .ellipsisButton {
15
+ display: contents;
16
+ }
17
+ }
@@ -0,0 +1,18 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var Headline = require('../headline/Headline');
5
+ var styles = require('./Panel.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 Panel({ header, headerIcon, children, severity, size }) {
12
+ return /* @__PURE__ */ jsxRuntime.jsxs("section", { className: `${styles__default.default.container} ${size ? styles__default.default[size] : ""}`, children: [
13
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles__default.default.header, children: /* @__PURE__ */ jsxRuntime.jsx(Headline.Headline, { disableMargin: true, size: 3, icon: headerIcon, severity, children: header }) }),
14
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles__default.default.content, children })
15
+ ] });
16
+ }
17
+
18
+ exports.Panel = Panel;
@@ -0,0 +1,10 @@
1
+ interface PanelProps {
2
+ header: string;
3
+ headerIcon?: React.ReactNode;
4
+ severity?: Severity;
5
+ children: React.ReactNode;
6
+ size?: 'sm' | 'md' | 'lg';
7
+ }
8
+ import { Severity } from '@/constants/severity.types';
9
+ export declare function Panel({ header, headerIcon, children, severity, size }: PanelProps): JSX.Element;
10
+ export {};
@@ -0,0 +1,12 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { Headline } from '../headline/Headline';
3
+ import styles from './Panel.module.css';
4
+
5
+ function Panel({ header, headerIcon, children, severity, size }) {
6
+ return /* @__PURE__ */ jsxs("section", { className: `${styles.container} ${size ? styles[size] : ""}`, children: [
7
+ /* @__PURE__ */ jsx("div", { className: styles.header, children: /* @__PURE__ */ jsx(Headline, { disableMargin: true, size: 3, icon: headerIcon, severity, children: header }) }),
8
+ /* @__PURE__ */ jsx("div", { className: styles.content, children })
9
+ ] });
10
+ }
11
+
12
+ export { Panel };
@@ -0,0 +1,29 @@
1
+ .container {
2
+ border: 1px solid var(--color-border-strong);
3
+ border-radius: var(--border-radius-default);
4
+ background-color: var(--color-bg);
5
+ box-sizing: border-box;
6
+ display: flex;
7
+ flex-direction: column;
8
+ }
9
+
10
+ .header {
11
+ border-bottom: 1px solid var(--color-border-strong);
12
+ }
13
+
14
+
15
+ .content {
16
+ padding: var(--spacing-md);
17
+ }
18
+
19
+ .header
20
+ {
21
+ padding: var(--spacing-sm) var(--spacing-md);
22
+ }
23
+
24
+
25
+ .container.sm {
26
+ .header,.content {
27
+ padding: var(--spacing-sm) var(--spacing-md);
28
+ }
29
+ }
@@ -0,0 +1,132 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var react = require('react');
5
+ var styles = require('./Popover.module.css');
6
+ var lucideReact = require('lucide-react');
7
+
8
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
9
+
10
+ var styles__default = /*#__PURE__*/_interopDefault(styles);
11
+
12
+ const Popover = react.forwardRef(function Popover2({ trigger: Trigger, children, minWidth = "200px", viewportPadding = 8, edgeBuffer = 100 }, ref) {
13
+ const [pos, setPos] = react.useState({ top: 0, left: 0, visible: false });
14
+ const containerRef = react.useRef(null);
15
+ const contentRef = react.useRef(null);
16
+ const computeAndSetPosition = react.useCallback(
17
+ (show) => {
18
+ const container = containerRef.current;
19
+ const content = contentRef.current;
20
+ if (!container || !content) return;
21
+ const prevVis = content.style.visibility;
22
+ const prevDisp = content.style.display;
23
+ content.style.visibility = "hidden";
24
+ content.style.display = "block";
25
+ const triggerRect = container.getBoundingClientRect();
26
+ const contentWidth = content.offsetWidth;
27
+ const contentHeight = content.offsetHeight;
28
+ content.style.visibility = prevVis;
29
+ content.style.display = prevDisp;
30
+ const vw = window.innerWidth;
31
+ const vh = window.innerHeight;
32
+ const spaceAbove = Math.max(0, triggerRect.top);
33
+ const spaceBelow = Math.max(0, vh - triggerRect.bottom);
34
+ const spaceLeft = Math.max(0, triggerRect.left);
35
+ const spaceRight = Math.max(0, vw - triggerRect.right);
36
+ const preferBelow = spaceBelow >= contentHeight + edgeBuffer || spaceBelow >= spaceAbove;
37
+ const spacing = viewportPadding;
38
+ const rawTop = preferBelow ? triggerRect.bottom + spacing : triggerRect.top - contentHeight - spacing;
39
+ const placeRightOfLeftEdge = spaceRight >= contentWidth + edgeBuffer;
40
+ const placeLeftOfRightEdge = spaceLeft >= contentWidth + edgeBuffer;
41
+ let rawLeft;
42
+ if (placeRightOfLeftEdge) {
43
+ rawLeft = triggerRect.left;
44
+ } else if (placeLeftOfRightEdge) {
45
+ rawLeft = triggerRect.right - contentWidth;
46
+ } else {
47
+ rawLeft = triggerRect.left + (triggerRect.width - contentWidth) / 2;
48
+ }
49
+ const clampedLeft = Math.max(
50
+ viewportPadding,
51
+ Math.min(rawLeft, vw - contentWidth - viewportPadding)
52
+ );
53
+ const clampedTop = Math.max(
54
+ viewportPadding,
55
+ Math.min(rawTop, vh - contentHeight - viewportPadding)
56
+ );
57
+ setPos({ top: clampedTop, left: clampedLeft, visible: show });
58
+ },
59
+ [edgeBuffer, viewportPadding]
60
+ );
61
+ const openPopover = react.useCallback(
62
+ (e) => {
63
+ if (pos.visible) {
64
+ setPos((p) => ({ ...p, visible: false }));
65
+ return;
66
+ }
67
+ computeAndSetPosition(true);
68
+ e == null ? void 0 : e.stopPropagation();
69
+ },
70
+ [pos.visible, computeAndSetPosition]
71
+ );
72
+ const closePopover = react.useCallback(() => {
73
+ setPos((p) => ({ ...p, visible: false }));
74
+ }, []);
75
+ react.useImperativeHandle(
76
+ ref,
77
+ () => ({
78
+ close: closePopover,
79
+ open: () => computeAndSetPosition(true),
80
+ isOpen: () => !!pos.visible
81
+ }),
82
+ [closePopover, computeAndSetPosition, pos.visible]
83
+ );
84
+ react.useEffect(() => {
85
+ if (!pos.visible) return;
86
+ const handleClickOutside = (e) => {
87
+ if (containerRef.current && contentRef.current && !containerRef.current.contains(e.target) && !contentRef.current.contains(e.target)) {
88
+ closePopover();
89
+ }
90
+ };
91
+ const handleEscape = (e) => {
92
+ if (e.key === "Escape") closePopover();
93
+ };
94
+ const handleReposition = () => computeAndSetPosition(true);
95
+ document.addEventListener("click", handleClickOutside);
96
+ document.addEventListener("keydown", handleEscape, true);
97
+ window.addEventListener("resize", handleReposition);
98
+ window.addEventListener("scroll", handleReposition, true);
99
+ return () => {
100
+ document.removeEventListener("click", handleClickOutside);
101
+ document.removeEventListener("keydown", handleEscape, true);
102
+ window.removeEventListener("resize", handleReposition);
103
+ window.removeEventListener("scroll", handleReposition, true);
104
+ };
105
+ }, [pos.visible, closePopover, computeAndSetPosition]);
106
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles__default.default.container, ref: containerRef, children: [
107
+ Trigger(openPopover, pos.visible ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronUp, { size: 20 }) : /* @__PURE__ */ jsxRuntime.jsx(lucideReact.ChevronDown, { size: 20 })),
108
+ /* @__PURE__ */ jsxRuntime.jsx(
109
+ "div",
110
+ {
111
+ ref: contentRef,
112
+ className: styles__default.default.content,
113
+ style: {
114
+ position: "fixed",
115
+ top: pos.top,
116
+ left: pos.left,
117
+ visibility: pos.visible ? "visible" : "hidden",
118
+ minWidth,
119
+ maxWidth: `calc(100vw - ${viewportPadding * 2}px)`,
120
+ maxHeight: `calc(100vh - ${viewportPadding * 2}px)`,
121
+ overflow: "auto"
122
+ },
123
+ role: "dialog",
124
+ "aria-hidden": !pos.visible,
125
+ children
126
+ }
127
+ )
128
+ ] });
129
+ });
130
+ Popover.displayName = "Popover";
131
+
132
+ exports.Popover = Popover;
@@ -0,0 +1,15 @@
1
+ import * as React from 'react';
2
+ interface PopoverProps {
3
+ trigger: (event: (e: React.MouseEvent<HTMLElement> | React.FocusEvent<HTMLElement>) => void, icon: React.ReactNode) => React.ReactNode;
4
+ children: React.ReactNode;
5
+ minWidth?: string;
6
+ viewportPadding?: number;
7
+ edgeBuffer?: number;
8
+ }
9
+ export interface PopoverHandle {
10
+ close: () => void;
11
+ open: () => void;
12
+ isOpen: () => boolean;
13
+ }
14
+ export declare const Popover: React.ForwardRefExoticComponent<PopoverProps & React.RefAttributes<PopoverHandle>>;
15
+ export {};