@dbcdk/react-components 0.0.1 → 0.0.3

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 +67 -20
  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,174 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var react = require('react');
5
+ var lucideReact = require('lucide-react');
6
+ var Popover = require('../popover/Popover');
7
+ var Input = require('../input/Input');
8
+ var Menu = require('../menu/Menu');
9
+ var MultiSelect = require('../multi-select/MultiSelect');
10
+ var Select = require('../select/Select');
11
+ var styles = require('./FilterField.module.css');
12
+
13
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
14
+
15
+ var styles__default = /*#__PURE__*/_interopDefault(styles);
16
+
17
+ const LABELS = {
18
+ is: "is",
19
+ isNot: "not",
20
+ contains: "contains",
21
+ notContains: "not contain",
22
+ startsWith: "starts with",
23
+ endsWith: "ends with",
24
+ gt: ">",
25
+ lt: "<",
26
+ gte: "\u2265",
27
+ lte: "\u2264",
28
+ in: "",
29
+ notIn: "not in",
30
+ isEmpty: "empty",
31
+ isNotEmpty: "not empty"
32
+ };
33
+ const DEFAULT_TEXT_OPERATORS = [
34
+ "is",
35
+ "isNot",
36
+ "contains",
37
+ "notContains",
38
+ "startsWith",
39
+ "endsWith",
40
+ "isEmpty",
41
+ "isNotEmpty"
42
+ ];
43
+ const NUMBER_OPERATORS = [
44
+ "is",
45
+ "isNot",
46
+ "gt",
47
+ "lt",
48
+ "gte",
49
+ "lte",
50
+ "isEmpty",
51
+ "isNotEmpty"
52
+ ];
53
+ function OperatorDropdown({
54
+ value,
55
+ onChange,
56
+ operators,
57
+ size = "sm",
58
+ disabled
59
+ }) {
60
+ const popRef = react.useRef(null);
61
+ const [activeIndex, setActiveIndex] = react.useState(() => Math.max(0, operators.indexOf(value)));
62
+ const handleSelect = (op) => {
63
+ var _a;
64
+ onChange(op);
65
+ setActiveIndex(operators.indexOf(op));
66
+ (_a = popRef.current) == null ? void 0 : _a.close();
67
+ };
68
+ return /* @__PURE__ */ jsxRuntime.jsx(
69
+ Popover.Popover,
70
+ {
71
+ ref: popRef,
72
+ minWidth: "220px",
73
+ trigger: (toggle, icon) => /* @__PURE__ */ jsxRuntime.jsxs(
74
+ "button",
75
+ {
76
+ type: "button",
77
+ onClick: toggle,
78
+ disabled,
79
+ "aria-label": "Change operator",
80
+ className: `${styles__default.default.operatorTrigger} ${styles__default.default[size]}`,
81
+ children: [
82
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: styles__default.default.operatorText, children: LABELS[value] }),
83
+ icon
84
+ ]
85
+ }
86
+ ),
87
+ children: /* @__PURE__ */ jsxRuntime.jsx(Menu.Menu, { children: operators.map((op) => {
88
+ const selected = op === value;
89
+ return /* @__PURE__ */ jsxRuntime.jsx(Menu.Menu.Item, { active: selected, children: /* @__PURE__ */ jsxRuntime.jsxs("button", { onClick: () => handleSelect(op), children: [
90
+ /* @__PURE__ */ jsxRuntime.jsx("span", { style: { width: 16, display: "inline-flex", justifyContent: "center" }, children: selected ? /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Check, { size: 16 }) : null }),
91
+ LABELS[op]
92
+ ] }) }, op);
93
+ }) })
94
+ }
95
+ );
96
+ }
97
+ function FilterField({
98
+ field,
99
+ control,
100
+ operator,
101
+ onChange,
102
+ operators,
103
+ options = [],
104
+ single = true,
105
+ value = control === "select" ? single ? null : [] : "",
106
+ size = "sm",
107
+ label,
108
+ placeholder = "Type value\u2026",
109
+ disabled,
110
+ ...inputProps
111
+ }) {
112
+ const ops = react.useMemo(() => operators != null ? operators : DEFAULT_TEXT_OPERATORS, [operators]);
113
+ const [op, setOp] = react.useState(operator);
114
+ const [val, setVal] = react.useState(value);
115
+ react.useEffect(() => {
116
+ onChange({ field, operator: op, value: val });
117
+ }, [field, op, val, onChange]);
118
+ const emitValue = react.useCallback((next) => setVal(next), []);
119
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: ` ${styles__default.default.filterField} ${styles__default.default[size]}`, children: [
120
+ label ? /* @__PURE__ */ jsxRuntime.jsx("span", { className: `${styles__default.default.label} ${styles__default.default[size]}`, children: label }) : null,
121
+ /* @__PURE__ */ jsxRuntime.jsx(
122
+ OperatorDropdown,
123
+ {
124
+ value: op,
125
+ onChange: setOp,
126
+ operators: ops,
127
+ size,
128
+ disabled
129
+ }
130
+ ),
131
+ /* @__PURE__ */ jsxRuntime.jsx("div", { className: `${control === "input" ? "" : styles__default.default.valueWrapper}`, children: control === "input" ? /* @__PURE__ */ jsxRuntime.jsx(
132
+ Input.Input,
133
+ {
134
+ ...inputProps,
135
+ value: val != null ? val : "",
136
+ onChange: (e) => emitValue(e.currentTarget.value),
137
+ inputSize: size,
138
+ placeholder,
139
+ minWidth: "120px",
140
+ disabled,
141
+ onClear: () => emitValue("")
142
+ }
143
+ ) : single ? /* @__PURE__ */ jsxRuntime.jsx(
144
+ Select.Select,
145
+ {
146
+ options,
147
+ selectedValue: val != null ? val : null,
148
+ onChange: (v) => emitValue(v),
149
+ placeholder,
150
+ size,
151
+ variant: "inline",
152
+ onClear: () => emitValue("")
153
+ }
154
+ ) : /* @__PURE__ */ jsxRuntime.jsx(
155
+ MultiSelect.MultiSelect,
156
+ {
157
+ options,
158
+ size,
159
+ variant: "inline",
160
+ selectedValues: Array.isArray(val) ? val : [],
161
+ onChange: (v) => {
162
+ const current = new Set(Array.isArray(val) ? val : []);
163
+ current.has(v) ? current.delete(v) : current.add(v);
164
+ emitValue(Array.from(current));
165
+ },
166
+ onClear: () => emitValue([]),
167
+ children: placeholder
168
+ }
169
+ ) })
170
+ ] });
171
+ }
172
+
173
+ exports.FilterField = FilterField;
174
+ exports.NUMBER_OPERATORS = NUMBER_OPERATORS;
@@ -0,0 +1,28 @@
1
+ import * as React from 'react';
2
+ export type Operator = 'is' | 'isNot' | 'contains' | 'notContains' | 'startsWith' | 'endsWith' | 'gt' | 'lt' | 'gte' | 'lte' | 'in' | 'notIn' | 'isEmpty' | 'isNotEmpty';
3
+ export interface FilterEvent {
4
+ field: string;
5
+ operator: Operator;
6
+ value: string | string[] | null;
7
+ }
8
+ export interface MultiselectOption {
9
+ label: string;
10
+ value: string;
11
+ icon?: React.ReactNode;
12
+ }
13
+ export interface FilterFieldProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'onChange' | 'size' | 'value'> {
14
+ field: string;
15
+ control: 'input' | 'select';
16
+ operator: Operator;
17
+ onChange: (e: FilterEvent) => void;
18
+ operators?: Operator[];
19
+ options?: MultiselectOption[];
20
+ single?: boolean;
21
+ value?: string | string[] | null;
22
+ size?: 'sm' | 'md' | 'lg';
23
+ label?: string;
24
+ placeholder?: string;
25
+ disabled?: boolean;
26
+ }
27
+ export declare const NUMBER_OPERATORS: Operator[];
28
+ export declare function FilterField({ field, control, operator, onChange, operators, options, single, value, size, label, placeholder, disabled, ...inputProps }: FilterFieldProps): React.ReactElement;
@@ -0,0 +1,167 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { useMemo, useState, useEffect, useCallback, useRef } from 'react';
3
+ import { Check } from 'lucide-react';
4
+ import { Popover } from '../popover/Popover';
5
+ import { Input } from '../input/Input';
6
+ import { Menu } from '../menu/Menu';
7
+ import { MultiSelect } from '../multi-select/MultiSelect';
8
+ import { Select } from '../select/Select';
9
+ import styles from './FilterField.module.css';
10
+
11
+ const LABELS = {
12
+ is: "is",
13
+ isNot: "not",
14
+ contains: "contains",
15
+ notContains: "not contain",
16
+ startsWith: "starts with",
17
+ endsWith: "ends with",
18
+ gt: ">",
19
+ lt: "<",
20
+ gte: "\u2265",
21
+ lte: "\u2264",
22
+ in: "",
23
+ notIn: "not in",
24
+ isEmpty: "empty",
25
+ isNotEmpty: "not empty"
26
+ };
27
+ const DEFAULT_TEXT_OPERATORS = [
28
+ "is",
29
+ "isNot",
30
+ "contains",
31
+ "notContains",
32
+ "startsWith",
33
+ "endsWith",
34
+ "isEmpty",
35
+ "isNotEmpty"
36
+ ];
37
+ const NUMBER_OPERATORS = [
38
+ "is",
39
+ "isNot",
40
+ "gt",
41
+ "lt",
42
+ "gte",
43
+ "lte",
44
+ "isEmpty",
45
+ "isNotEmpty"
46
+ ];
47
+ function OperatorDropdown({
48
+ value,
49
+ onChange,
50
+ operators,
51
+ size = "sm",
52
+ disabled
53
+ }) {
54
+ const popRef = useRef(null);
55
+ const [activeIndex, setActiveIndex] = useState(() => Math.max(0, operators.indexOf(value)));
56
+ const handleSelect = (op) => {
57
+ var _a;
58
+ onChange(op);
59
+ setActiveIndex(operators.indexOf(op));
60
+ (_a = popRef.current) == null ? void 0 : _a.close();
61
+ };
62
+ return /* @__PURE__ */ jsx(
63
+ Popover,
64
+ {
65
+ ref: popRef,
66
+ minWidth: "220px",
67
+ trigger: (toggle, icon) => /* @__PURE__ */ jsxs(
68
+ "button",
69
+ {
70
+ type: "button",
71
+ onClick: toggle,
72
+ disabled,
73
+ "aria-label": "Change operator",
74
+ className: `${styles.operatorTrigger} ${styles[size]}`,
75
+ children: [
76
+ /* @__PURE__ */ jsx("span", { className: styles.operatorText, children: LABELS[value] }),
77
+ icon
78
+ ]
79
+ }
80
+ ),
81
+ children: /* @__PURE__ */ jsx(Menu, { children: operators.map((op) => {
82
+ const selected = op === value;
83
+ return /* @__PURE__ */ jsx(Menu.Item, { active: selected, children: /* @__PURE__ */ jsxs("button", { onClick: () => handleSelect(op), children: [
84
+ /* @__PURE__ */ jsx("span", { style: { width: 16, display: "inline-flex", justifyContent: "center" }, children: selected ? /* @__PURE__ */ jsx(Check, { size: 16 }) : null }),
85
+ LABELS[op]
86
+ ] }) }, op);
87
+ }) })
88
+ }
89
+ );
90
+ }
91
+ function FilterField({
92
+ field,
93
+ control,
94
+ operator,
95
+ onChange,
96
+ operators,
97
+ options = [],
98
+ single = true,
99
+ value = control === "select" ? single ? null : [] : "",
100
+ size = "sm",
101
+ label,
102
+ placeholder = "Type value\u2026",
103
+ disabled,
104
+ ...inputProps
105
+ }) {
106
+ const ops = useMemo(() => operators != null ? operators : DEFAULT_TEXT_OPERATORS, [operators]);
107
+ const [op, setOp] = useState(operator);
108
+ const [val, setVal] = useState(value);
109
+ useEffect(() => {
110
+ onChange({ field, operator: op, value: val });
111
+ }, [field, op, val, onChange]);
112
+ const emitValue = useCallback((next) => setVal(next), []);
113
+ return /* @__PURE__ */ jsxs("div", { className: ` ${styles.filterField} ${styles[size]}`, children: [
114
+ label ? /* @__PURE__ */ jsx("span", { className: `${styles.label} ${styles[size]}`, children: label }) : null,
115
+ /* @__PURE__ */ jsx(
116
+ OperatorDropdown,
117
+ {
118
+ value: op,
119
+ onChange: setOp,
120
+ operators: ops,
121
+ size,
122
+ disabled
123
+ }
124
+ ),
125
+ /* @__PURE__ */ jsx("div", { className: `${control === "input" ? "" : styles.valueWrapper}`, children: control === "input" ? /* @__PURE__ */ jsx(
126
+ Input,
127
+ {
128
+ ...inputProps,
129
+ value: val != null ? val : "",
130
+ onChange: (e) => emitValue(e.currentTarget.value),
131
+ inputSize: size,
132
+ placeholder,
133
+ minWidth: "120px",
134
+ disabled,
135
+ onClear: () => emitValue("")
136
+ }
137
+ ) : single ? /* @__PURE__ */ jsx(
138
+ Select,
139
+ {
140
+ options,
141
+ selectedValue: val != null ? val : null,
142
+ onChange: (v) => emitValue(v),
143
+ placeholder,
144
+ size,
145
+ variant: "inline",
146
+ onClear: () => emitValue("")
147
+ }
148
+ ) : /* @__PURE__ */ jsx(
149
+ MultiSelect,
150
+ {
151
+ options,
152
+ size,
153
+ variant: "inline",
154
+ selectedValues: Array.isArray(val) ? val : [],
155
+ onChange: (v) => {
156
+ const current = new Set(Array.isArray(val) ? val : []);
157
+ current.has(v) ? current.delete(v) : current.add(v);
158
+ emitValue(Array.from(current));
159
+ },
160
+ onClear: () => emitValue([]),
161
+ children: placeholder
162
+ }
163
+ ) })
164
+ ] });
165
+ }
166
+
167
+ export { FilterField, NUMBER_OPERATORS };
@@ -0,0 +1,109 @@
1
+ .filterField {
2
+ display: inline-flex;
3
+ align-items: stretch;
4
+ gap: 0;
5
+ font-size: var(--font-size-sm);
6
+ font-family: var(--font-family);
7
+ background: var(--color-surface);
8
+ color: var(--color-text);
9
+
10
+ border: var(--border-width-thin) solid var(--color-border);
11
+ border-radius: var(--border-radius-default);
12
+
13
+ transition:
14
+ border-color var(--transition-fast) var(--ease-standard),
15
+ box-shadow var(--transition-fast) var(--ease-standard),
16
+ background-color var(--transition-fast) var(--ease-standard);
17
+ }
18
+
19
+ .filterField:focus-within {
20
+ border-color: var(--color-border-selected);
21
+ box-shadow: var(--focus-ring);
22
+ }
23
+
24
+ .filterField.sm {
25
+ min-block-size: calc(var(--component-size-sm) + var(--density));
26
+ }
27
+ .filterField.md {
28
+ min-block-size: calc(var(--component-size-md) + var(--density));
29
+ }
30
+
31
+ .filterField .label {
32
+ display: inline-flex;
33
+ align-items: center;
34
+
35
+ padding-block: calc(var(--spacing-2xs) + var(--density)); /* ~2px + density */
36
+ padding-inline: var(--spacing-sm); /* 12px */
37
+
38
+ font-size: var(--font-size-sm);
39
+ color: var(--color-text-secondary);
40
+ white-space: nowrap;
41
+ user-select: none;
42
+ }
43
+
44
+ .filterField .operatorTrigger {
45
+ display: inline-flex;
46
+ align-items: center;
47
+ justify-content: center;
48
+
49
+ padding-block: calc(var(--spacing-2xs) + var(--density));
50
+ padding-inline: var(--spacing-sm);
51
+
52
+ background: var(--opac-bg-default);
53
+ color: var(--color-text);
54
+ border: 0;
55
+ border-radius: 0;
56
+ cursor: pointer;
57
+
58
+ transition:
59
+ background-color var(--transition-fast) var(--ease-standard),
60
+ color var(--transition-fast) var(--ease-standard);
61
+ }
62
+ .filterField .operatorTrigger:hover {
63
+ background: var(--opac-bg-dark);
64
+ }
65
+ .filterField .operatorTrigger:focus-visible {
66
+ outline: none;
67
+ box-shadow: var(--focus-ring);
68
+ }
69
+ .filterField .operatorTrigger:disabled,
70
+ .filterField .operatorTrigger[aria-disabled='true'] {
71
+ cursor: not-allowed;
72
+ color: var(--color-disabled-text);
73
+ background: var(--color-disabled-bg);
74
+ }
75
+
76
+ .filterField .operatorText {
77
+ white-space: nowrap;
78
+ }
79
+
80
+ .filterField .valueWrapper {
81
+ display: inline-flex;
82
+ align-items: center;
83
+
84
+ padding-block: calc(var(--spacing-2xs) + var(--density));
85
+ padding-inline: var(--spacing-sm);
86
+ }
87
+
88
+ .filterField input {
89
+ appearance: none;
90
+ border: 0;
91
+ outline: none;
92
+ background: transparent;
93
+ color: var(--color-text);
94
+ font: inherit;
95
+
96
+ inline-size: auto;
97
+ min-inline-size: 10ch;
98
+
99
+ block-size: 100%;
100
+ }
101
+
102
+ .filterField input::placeholder {
103
+ color: var(--color-text-muted);
104
+ }
105
+
106
+ .filterField input:disabled {
107
+ color: var(--color-disabled-text);
108
+ cursor: not-allowed;
109
+ }
@@ -0,0 +1,47 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var styles = require('./Headline.module.css');
5
+ var severity = require('../../constants/severity');
6
+ var Icon = require('../icon/Icon');
7
+
8
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
9
+
10
+ var styles__default = /*#__PURE__*/_interopDefault(styles);
11
+
12
+ function Headline({
13
+ size = 2,
14
+ marker,
15
+ disableMargin,
16
+ children,
17
+ severity: severity$1,
18
+ weight = 600,
19
+ subHeadline,
20
+ addition,
21
+ icon
22
+ }) {
23
+ const Tag = `h${size}`;
24
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
25
+ " ",
26
+ /* @__PURE__ */ jsxRuntime.jsxs("div", { className: styles__default.default.headlineContainer, children: [
27
+ /* @__PURE__ */ jsxRuntime.jsxs(
28
+ Tag,
29
+ {
30
+ style: {
31
+ "--font-weight": weight,
32
+ "--marker-color": severity$1 ? severity.SeverityBgColor[severity$1] : void 0
33
+ },
34
+ className: ` ${styles__default.default.headline} ${disableMargin ? styles__default.default.noMargin : void 0} ${marker ? `${styles__default.default.marker} ` : void 0}`,
35
+ children: [
36
+ icon || severity$1 && !marker ? /* @__PURE__ */ jsxRuntime.jsx(Icon.Icon, { customIcon: icon, severity: severity$1 }) : null,
37
+ children
38
+ ]
39
+ }
40
+ ),
41
+ addition
42
+ ] }),
43
+ subHeadline && /* @__PURE__ */ jsxRuntime.jsx("div", { className: styles__default.default.subHeadline, children: subHeadline })
44
+ ] });
45
+ }
46
+
47
+ exports.Headline = Headline;
@@ -0,0 +1,14 @@
1
+ import React, { JSX, PropsWithChildren } from 'react';
2
+ import { Severity } from '../../constants/severity.types';
3
+ interface HeadlineProps extends React.AriaAttributes {
4
+ size?: 1 | 2 | 3 | 4 | 5 | 6;
5
+ marker?: boolean;
6
+ disableMargin?: boolean;
7
+ severity?: Severity;
8
+ weight?: 500 | 600 | 700;
9
+ subHeadline?: string | JSX.Element;
10
+ addition?: React.ReactNode;
11
+ icon?: React.ReactNode;
12
+ }
13
+ export declare function Headline({ size, marker, disableMargin, children, severity, weight, subHeadline, addition, icon, }: PropsWithChildren<HeadlineProps>): React.ReactNode;
14
+ export {};
@@ -0,0 +1,41 @@
1
+ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
2
+ import styles from './Headline.module.css';
3
+ import { SeverityBgColor } from '../../constants/severity';
4
+ import { Icon } from '../icon/Icon';
5
+
6
+ function Headline({
7
+ size = 2,
8
+ marker,
9
+ disableMargin,
10
+ children,
11
+ severity,
12
+ weight = 600,
13
+ subHeadline,
14
+ addition,
15
+ icon
16
+ }) {
17
+ const Tag = `h${size}`;
18
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
19
+ " ",
20
+ /* @__PURE__ */ jsxs("div", { className: styles.headlineContainer, children: [
21
+ /* @__PURE__ */ jsxs(
22
+ Tag,
23
+ {
24
+ style: {
25
+ "--font-weight": weight,
26
+ "--marker-color": severity ? SeverityBgColor[severity] : void 0
27
+ },
28
+ className: ` ${styles.headline} ${disableMargin ? styles.noMargin : void 0} ${marker ? `${styles.marker} ` : void 0}`,
29
+ children: [
30
+ icon || severity && !marker ? /* @__PURE__ */ jsx(Icon, { customIcon: icon, severity }) : null,
31
+ children
32
+ ]
33
+ }
34
+ ),
35
+ addition
36
+ ] }),
37
+ subHeadline && /* @__PURE__ */ jsx("div", { className: styles.subHeadline, children: subHeadline })
38
+ ] });
39
+ }
40
+
41
+ export { Headline };
@@ -0,0 +1,35 @@
1
+ .headlineContainer {
2
+ display: flex;
3
+ align-items: center;
4
+ gap: var(--spacing-lg);
5
+ flex-wrap: wrap;
6
+ }
7
+
8
+ .headline {
9
+ display: inline-flex;
10
+ align-items: center;
11
+ gap: var(--spacing-sm);
12
+ font-weight: var(--font-weight-bold);
13
+ letter-spacing: var(--letter-spacing-tight);
14
+ color: var(--color-text);
15
+ line-height: var(--line-height-tight);
16
+ transition: color var(--transition-fast) var(--ease-standard);
17
+ }
18
+
19
+ .noMargin {
20
+ margin: 0;
21
+ }
22
+
23
+ .marker {
24
+ border-inline-start: var(--border-width-thick) solid var(--marker-color);
25
+ padding-inline-start: var(--spacing-sm);
26
+ border-start-start-radius: var(--border-radius-default);
27
+ border-end-start-radius: var(--border-radius-default);
28
+ }
29
+
30
+ .subHeadline {
31
+ color: var(--color-text-muted);
32
+ font-size: var(--font-size-md);
33
+ margin-block-start: calc(var(--spacing-2xs) * -1);
34
+ line-height: var(--line-height-normal);
35
+ }
@@ -0,0 +1,27 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var lucideReact = require('lucide-react');
5
+ var styles = require('./Icon.module.css');
6
+
7
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
8
+
9
+ var styles__default = /*#__PURE__*/_interopDefault(styles);
10
+
11
+ const SeverityIcon = {
12
+ neutral: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CircleCheck, {}),
13
+ success: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CircleCheck, {}),
14
+ error: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CircleX, {}),
15
+ info: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Info, {}),
16
+ warning: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.CircleAlert, {}),
17
+ brand: /* @__PURE__ */ jsxRuntime.jsx(lucideReact.Building2, {})
18
+ };
19
+ function Icon({ severity, label, customIcon }) {
20
+ return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${styles__default.default.container}`, children: [
21
+ /* @__PURE__ */ jsxRuntime.jsx("span", { className: `${styles__default.default.icon} ${severity ? styles__default.default[severity] : ""} dbc-icon`, children: customIcon ? customIcon : severity ? SeverityIcon[severity] : null }),
22
+ label && /* @__PURE__ */ jsxRuntime.jsx("span", { children: label })
23
+ ] });
24
+ }
25
+
26
+ exports.Icon = Icon;
27
+ exports.SeverityIcon = SeverityIcon;
@@ -0,0 +1,9 @@
1
+ import { Severity } from '@/constants/severity.types';
2
+ export declare const SeverityIcon: Record<Severity, React.ReactNode>;
3
+ interface IconProps {
4
+ severity?: Severity;
5
+ customIcon?: React.ReactNode;
6
+ label?: string;
7
+ }
8
+ export declare function Icon({ severity, label, customIcon }: IconProps): JSX.Element;
9
+ export {};
@@ -0,0 +1,20 @@
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
+ import { Building2, CircleAlert, Info, CircleX, CircleCheck } from 'lucide-react';
3
+ import styles from './Icon.module.css';
4
+
5
+ const SeverityIcon = {
6
+ neutral: /* @__PURE__ */ jsx(CircleCheck, {}),
7
+ success: /* @__PURE__ */ jsx(CircleCheck, {}),
8
+ error: /* @__PURE__ */ jsx(CircleX, {}),
9
+ info: /* @__PURE__ */ jsx(Info, {}),
10
+ warning: /* @__PURE__ */ jsx(CircleAlert, {}),
11
+ brand: /* @__PURE__ */ jsx(Building2, {})
12
+ };
13
+ function Icon({ severity, label, customIcon }) {
14
+ return /* @__PURE__ */ jsxs("div", { className: `${styles.container}`, children: [
15
+ /* @__PURE__ */ jsx("span", { className: `${styles.icon} ${severity ? styles[severity] : ""} dbc-icon`, children: customIcon ? customIcon : severity ? SeverityIcon[severity] : null }),
16
+ label && /* @__PURE__ */ jsx("span", { children: label })
17
+ ] });
18
+ }
19
+
20
+ export { Icon, SeverityIcon };