@dbcdk/react-components 0.0.3 → 0.0.5

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 (223) hide show
  1. package/dist/assets/logo.cjs +10 -10
  2. package/dist/assets/logo.js +10 -10
  3. package/dist/components/__stories__/story-components/Colors.cjs +159 -0
  4. package/dist/components/__stories__/story-components/Colors.d.ts +10 -0
  5. package/dist/components/__stories__/story-components/Colors.js +151 -0
  6. package/dist/components/__stories__/story-components/Colors.module.css +27 -0
  7. package/dist/components/__stories__/story-components/Spacing.cjs +190 -0
  8. package/dist/components/__stories__/story-components/Spacing.d.ts +1 -0
  9. package/dist/components/__stories__/story-components/Spacing.js +184 -0
  10. package/dist/components/__stories__/story-components/Spacing.module.css +154 -0
  11. package/dist/components/app-header/AppHeader.module.css +10 -15
  12. package/dist/components/attribute-chip/AttributeChip.cjs +22 -0
  13. package/dist/components/attribute-chip/AttributeChip.d.ts +8 -0
  14. package/dist/components/attribute-chip/AttributeChip.js +16 -0
  15. package/dist/components/attribute-chip/AttributeChip.module.css +65 -0
  16. package/dist/components/avatar/Avatar.cjs +38 -4
  17. package/dist/components/avatar/Avatar.d.ts +4 -2
  18. package/dist/components/avatar/Avatar.js +39 -5
  19. package/dist/components/avatar/Avatar.module.css +27 -0
  20. package/dist/components/breadcrumbs/Breadcrumbs.cjs +1 -2
  21. package/dist/components/breadcrumbs/Breadcrumbs.js +1 -2
  22. package/dist/components/breadcrumbs/Breadcrumbs.module.css +19 -22
  23. package/dist/components/button/Button.cjs +20 -12
  24. package/dist/components/button/Button.d.ts +4 -1
  25. package/dist/components/button/Button.js +20 -12
  26. package/dist/components/button/Button.module.css +118 -55
  27. package/dist/components/card/Card.cjs +53 -13
  28. package/dist/components/card/Card.d.ts +21 -6
  29. package/dist/components/card/Card.js +54 -14
  30. package/dist/components/card/Card.module.css +148 -44
  31. package/dist/components/card-container/CardContainer.cjs +6 -5
  32. package/dist/components/card-container/CardContainer.d.ts +5 -2
  33. package/dist/components/card-container/CardContainer.js +6 -5
  34. package/dist/components/card-container/CardContainer.module.css +40 -0
  35. package/dist/components/checkbox/Checkbox.cjs +3 -4
  36. package/dist/components/checkbox/Checkbox.d.ts +1 -1
  37. package/dist/components/checkbox/Checkbox.js +3 -4
  38. package/dist/components/checkbox/Checkbox.module.css +10 -10
  39. package/dist/components/chip/Chip.cjs +2 -1
  40. package/dist/components/chip/Chip.d.ts +2 -1
  41. package/dist/components/chip/Chip.js +2 -1
  42. package/dist/components/chip/Chip.module.css +42 -27
  43. package/dist/components/circle/Circle.module.css +11 -11
  44. package/dist/components/clear-button/ClearButton.cjs +3 -3
  45. package/dist/components/clear-button/ClearButton.js +3 -3
  46. package/dist/components/clear-button/ClearButton.module.css +8 -7
  47. package/dist/components/code-block/CodeBlock.cjs +18 -0
  48. package/dist/components/code-block/CodeBlock.d.ts +6 -0
  49. package/dist/components/code-block/CodeBlock.js +12 -0
  50. package/dist/components/code-block/CodeBlock.module.css +60 -0
  51. package/dist/components/copy-button/CopyButton.cjs +35 -0
  52. package/dist/components/copy-button/CopyButton.d.ts +9 -0
  53. package/dist/components/copy-button/CopyButton.js +29 -0
  54. package/dist/components/copy-button/CopyButton.module.css +6 -0
  55. package/dist/components/datetime-picker/DateTimePicker.cjs +504 -0
  56. package/dist/components/datetime-picker/DateTimePicker.d.ts +39 -0
  57. package/dist/components/datetime-picker/DateTimePicker.js +498 -0
  58. package/dist/components/datetime-picker/DateTimePicker.module.css +144 -0
  59. package/dist/components/filter-field/FilterField.cjs +34 -19
  60. package/dist/components/filter-field/FilterField.d.ts +2 -2
  61. package/dist/components/filter-field/FilterField.js +35 -20
  62. package/dist/components/filter-field/FilterField.module.css +14 -20
  63. package/dist/components/headline/Headline.cjs +10 -4
  64. package/dist/components/headline/Headline.d.ts +9 -1
  65. package/dist/components/headline/Headline.js +10 -4
  66. package/dist/components/headline/Headline.module.css +32 -7
  67. package/dist/components/icon/Icon.module.css +10 -9
  68. package/dist/components/input/Input.cjs +60 -19
  69. package/dist/components/input/Input.d.ts +7 -2
  70. package/dist/components/input/Input.js +60 -19
  71. package/dist/components/input/Input.module.css +90 -43
  72. package/dist/components/link/Link.cjs +46 -0
  73. package/dist/components/link/Link.d.ts +9 -0
  74. package/dist/components/link/Link.js +21 -0
  75. package/dist/components/link/Link.module.css +32 -0
  76. package/dist/components/menu/Menu.module.css +10 -32
  77. package/dist/components/meta-bar/MetaBar.cjs +29 -0
  78. package/dist/components/meta-bar/MetaBar.d.ts +11 -0
  79. package/dist/components/meta-bar/MetaBar.js +22 -0
  80. package/dist/components/meta-bar/MetaBar.module.css +12 -0
  81. package/dist/components/modal/Modal.cjs +134 -0
  82. package/dist/components/modal/Modal.d.ts +21 -0
  83. package/dist/components/modal/Modal.js +128 -0
  84. package/dist/components/modal/Modal.module.css +66 -0
  85. package/dist/components/modal/provider/ModalProvider.cjs +80 -0
  86. package/dist/components/modal/provider/ModalProvider.d.ts +21 -0
  87. package/dist/components/modal/provider/ModalProvider.js +77 -0
  88. package/dist/components/multi-select/MultiSelect.cjs +12 -1
  89. package/dist/components/multi-select/MultiSelect.js +12 -1
  90. package/dist/components/nav-bar/NavBar.module.css +11 -16
  91. package/dist/components/page/Page.module.css +2 -2
  92. package/dist/components/page-layout/PageLayout.cjs +5 -22
  93. package/dist/components/page-layout/PageLayout.d.ts +1 -8
  94. package/dist/components/page-layout/PageLayout.js +5 -22
  95. package/dist/components/page-layout/PageLayout.module.css +4 -80
  96. package/dist/components/page-layout/components/page-layout-hero/PageLayoutHero.cjs +32 -0
  97. package/dist/components/page-layout/components/page-layout-hero/PageLayoutHero.d.ts +11 -0
  98. package/dist/components/page-layout/components/page-layout-hero/PageLayoutHero.js +25 -0
  99. package/dist/components/page-layout/components/page-layout-hero/PageLayoutHero.module.css +84 -0
  100. package/dist/components/pagination/Pagination.cjs +83 -67
  101. package/dist/components/pagination/Pagination.d.ts +3 -1
  102. package/dist/components/pagination/Pagination.js +84 -68
  103. package/dist/components/pagination/Pagination.module.css +11 -3
  104. package/dist/components/panel/Panel.module.css +5 -7
  105. package/dist/components/popover/Popover.cjs +25 -8
  106. package/dist/components/popover/Popover.d.ts +2 -1
  107. package/dist/components/popover/Popover.js +25 -8
  108. package/dist/components/popover/Popover.module.css +4 -6
  109. package/dist/components/search-box/SearchBox.cjs +50 -37
  110. package/dist/components/search-box/SearchBox.d.ts +10 -7
  111. package/dist/components/search-box/SearchBox.js +50 -37
  112. package/dist/components/search-box/SearchBox.module.css +0 -1
  113. package/dist/components/segmented-progress-bar/SegmentedProgressBar.cjs +12 -6
  114. package/dist/components/segmented-progress-bar/SegmentedProgressBar.js +12 -6
  115. package/dist/components/segmented-progress-bar/SegmentedProgressBar.module.css +5 -1
  116. package/dist/components/select/Select.cjs +82 -13
  117. package/dist/components/select/Select.d.ts +2 -1
  118. package/dist/components/select/Select.js +83 -14
  119. package/dist/components/sidebar/Sidebar.cjs +3 -30
  120. package/dist/components/sidebar/Sidebar.d.ts +2 -1
  121. package/dist/components/sidebar/Sidebar.js +4 -26
  122. package/dist/components/sidebar/components/SidebarItem.cjs +3 -1
  123. package/dist/components/sidebar/components/SidebarItem.js +3 -1
  124. package/dist/components/sidebar/components/expandable-sidebar-item/ExpandableSidebarItem.cjs +40 -14
  125. package/dist/components/sidebar/components/expandable-sidebar-item/ExpandableSidebarItem.d.ts +3 -1
  126. package/dist/components/sidebar/components/expandable-sidebar-item/ExpandableSidebarItem.js +40 -14
  127. package/dist/components/sidebar/components/expandable-sidebar-item/ExpandableSidebarItem.module.css +9 -38
  128. package/dist/components/sidebar/components/sidebar-container/SidebarContainer.cjs +50 -0
  129. package/dist/components/sidebar/components/sidebar-container/SidebarContainer.d.ts +8 -0
  130. package/dist/components/sidebar/components/sidebar-container/SidebarContainer.js +43 -0
  131. package/dist/components/sidebar/components/sidebar-container/SidebarContainer.module.css +155 -0
  132. package/dist/components/sidebar/components/sidebar-item-content/SidebarItemContent.cjs +16 -9
  133. package/dist/components/sidebar/components/sidebar-item-content/SidebarItemContent.d.ts +2 -1
  134. package/dist/components/sidebar/components/sidebar-item-content/SidebarItemContent.js +16 -9
  135. package/dist/components/sidebar/components/sidebar-item-content/SidebarItemContent.module.css +25 -12
  136. package/dist/components/sidebar/components/sidebar-items/SidebarItems.cjs +2 -1
  137. package/dist/components/sidebar/components/sidebar-items/SidebarItems.d.ts +1 -1
  138. package/dist/components/sidebar/components/sidebar-items/SidebarItems.js +2 -1
  139. package/dist/components/sidebar/components/sidenav-filteirng/SidenavFiltering.cjs +29 -2
  140. package/dist/components/sidebar/components/sidenav-filteirng/SidenavFiltering.js +25 -2
  141. package/dist/components/sidebar/providers/SidebarProvider.cjs +108 -10
  142. package/dist/components/sidebar/providers/SidebarProvider.d.ts +7 -3
  143. package/dist/components/sidebar/providers/SidebarProvider.js +109 -11
  144. package/dist/components/skeleton-loader/skeleton-loader-item/SkeletonLoaderItem.cjs +1 -1
  145. package/dist/components/skeleton-loader/skeleton-loader-item/SkeletonLoaderItem.js +1 -1
  146. package/dist/components/skeleton-loader/skeleton-loader-item/SkeletonLoaderItem.module.css +0 -12
  147. package/dist/components/split-pane/SplitPane.cjs +123 -0
  148. package/dist/components/split-pane/SplitPane.d.ts +34 -0
  149. package/dist/components/split-pane/SplitPane.js +114 -0
  150. package/dist/components/split-pane/SplitPane.module.css +106 -0
  151. package/dist/components/split-pane/provider/SplitPaneContext.cjs +87 -0
  152. package/dist/components/split-pane/provider/SplitPaneContext.d.ts +23 -0
  153. package/dist/components/split-pane/provider/SplitPaneContext.js +79 -0
  154. package/dist/components/table/Table.cjs +180 -112
  155. package/dist/components/table/Table.d.ts +22 -6
  156. package/dist/components/table/Table.js +181 -113
  157. package/dist/components/table/Table.module.css +74 -47
  158. package/dist/components/table/components/empty-state/EmptyState.cjs +52 -0
  159. package/dist/components/table/components/empty-state/EmptyState.d.ts +40 -0
  160. package/dist/components/table/components/empty-state/EmptyState.js +46 -0
  161. package/dist/components/table/components/empty-state/EmptyState.module.css +16 -0
  162. package/dist/components/table/components/table-settings/TableSettings.cjs +32 -0
  163. package/dist/components/table/components/table-settings/TableSettings.d.ts +7 -0
  164. package/dist/components/table/components/table-settings/TableSettings.js +30 -0
  165. package/dist/{tanstack.cjs → components/table/tanstack.cjs} +61 -99
  166. package/dist/components/table/tanstack.d.ts +14 -0
  167. package/dist/{tanstack.js → components/table/tanstack.js} +61 -99
  168. package/dist/components/tabs/Tabs.cjs +33 -17
  169. package/dist/components/tabs/Tabs.d.ts +6 -3
  170. package/dist/components/tabs/Tabs.js +33 -17
  171. package/dist/components/tabs/Tabs.module.css +9 -9
  172. package/dist/components/toast/Toast.cjs +47 -0
  173. package/dist/components/toast/Toast.d.ts +14 -0
  174. package/dist/components/toast/Toast.js +41 -0
  175. package/dist/components/toast/Toast.module.css +101 -0
  176. package/dist/components/toast/provider/ToastProvider.cjs +98 -0
  177. package/dist/components/toast/provider/ToastProvider.d.ts +23 -0
  178. package/dist/components/toast/provider/ToastProvider.js +91 -0
  179. package/dist/components/tooltip/Tooltip.cjs +134 -29
  180. package/dist/components/tooltip/Tooltip.js +135 -30
  181. package/dist/components/tooltip/Tooltip.module.css +25 -43
  182. package/dist/components/user-display/UserDisplay.module.css +2 -2
  183. package/dist/constants/severity.cjs +12 -12
  184. package/dist/constants/severity.js +12 -12
  185. package/dist/constants/sizes.cjs +1 -0
  186. package/dist/constants/sizes.d.ts +1 -1
  187. package/dist/constants/sizes.js +1 -0
  188. package/dist/hooks/usePagination.cjs +88 -0
  189. package/dist/hooks/usePagination.d.ts +33 -0
  190. package/dist/hooks/usePagination.js +86 -0
  191. package/dist/hooks/useSorting.cjs +118 -0
  192. package/dist/hooks/useSorting.d.ts +49 -0
  193. package/dist/hooks/useSorting.js +116 -0
  194. package/dist/hooks/useTableData.cjs +52 -0
  195. package/dist/hooks/useTableData.d.ts +40 -0
  196. package/dist/hooks/useTableData.js +50 -0
  197. package/dist/hooks/useTableSelection.cjs +130 -0
  198. package/dist/hooks/useTableSelection.d.ts +25 -0
  199. package/dist/hooks/useTableSelection.js +128 -0
  200. package/dist/hooks/useTableSettings.cjs +28 -0
  201. package/dist/hooks/useTableSettings.d.ts +7 -0
  202. package/dist/hooks/useTableSettings.js +26 -0
  203. package/dist/hooks/useTimeDuration.cjs +39 -0
  204. package/dist/hooks/useTimeDuration.d.ts +22 -0
  205. package/dist/hooks/useTimeDuration.js +37 -0
  206. package/dist/hooks/useViewportFill.js +1 -1
  207. package/dist/index.cjs +119 -0
  208. package/dist/index.d.ts +17 -0
  209. package/dist/index.js +17 -0
  210. package/dist/src/styles/styles.css +101 -8
  211. package/dist/styles/css-helper-classes/flex.css +97 -0
  212. package/dist/styles/css-helper-classes/typography.css +7 -0
  213. package/dist/styles/styles.css +101 -8
  214. package/dist/styles/themes/dbc/dark.css +206 -99
  215. package/dist/styles/themes/dbc/light.css +183 -89
  216. package/dist/types/sizes.types.d.ts +2 -2
  217. package/package.json +17 -11
  218. package/dist/components/data-summary/DataSummary.cjs +0 -49
  219. package/dist/components/data-summary/DataSummary.d.ts +0 -19
  220. package/dist/components/data-summary/DataSummary.js +0 -43
  221. package/dist/components/data-summary/DataSummary.module.css +0 -51
  222. package/dist/components/sidebar/Sidebar.module.css +0 -66
  223. package/dist/tanstack.d.ts +0 -25
@@ -1,43 +1,163 @@
1
1
  :root {
2
- --color-primary: #0c3ee3;
3
- --color-primary-hover: #0932b6;
4
- --color-secondary: #6b7280;
5
- --color-secondary-hover: #4b5563;
6
- --color-accent: #ec4899;
7
- --color-accent-hover: #be185d;
8
-
9
- --color-highlight: #3b6ff5;
10
- --color-hover: var(--opac-bg-light);
11
-
12
- --color-bg-selected: #e8edfd;
13
- --color-bg-selected-hover: #dce5fc;
14
- --color-border-selected: var(--color-primary);
15
-
16
- --color-background: #ffffff;
17
- --color-surface: #ffffff;
18
- --color-surface-hover: var(--opac-bg-light);
19
- --color-surface-pressed: var(--opac-bg-default);
20
- --color-surface-selected: var(--color-bg-selected);
21
-
22
- /* Text */
23
- --color-text: #1a1a1a;
24
- --color-text-secondary: #374151;
25
- --color-text-muted: #5f6368;
26
- --color-text-inverse: #ffffff;
27
- --color-text-on-primary: var(--color-text-inverse);
28
- --color-text-on-secondary: var(--color-text-inverse);
29
- --color-text-on-highlight: var(--color-text-inverse);
30
-
31
- /* Links */
32
- --color-link: #0c3ee3;
33
- --color-link-hover: #0932b6;
34
- --color-link-visited: #5b3ee3;
35
-
36
- /* Borders */
37
- --color-border: rgba(0, 0, 0, 0.12);
2
+ /* ==========================================================================
3
+ * PRIMITIVES (DBC)
4
+ * ======================================================================= */
5
+
6
+ /* Brand blues */
7
+ --dbc-blue-500: #0c3ee3;
8
+ --dbc-blue-600: #0932b6;
9
+ --dbc-blue-400: #3b6ff5;
10
+ --dbc-blue-300: #7ea5ff; /* used for focus ring */
11
+ --dbc-blue-100: #e8edfd;
12
+ --dbc-blue-150: #dce5fc;
13
+
14
+ /* Neutrals */
15
+ --dbc-neutral-900: #1a1a1a;
16
+ --dbc-neutral-700: #374151;
17
+ --dbc-neutral-600: #5f6368;
18
+ --dbc-neutral-200: #e5e7eb;
19
+ --dbc-neutral-100: #f3f4f6;
20
+
21
+ /* Accents */
22
+ --dbc-pink-500: #ec4899;
23
+ --dbc-pink-600: #be185d;
24
+
25
+ --dbc-gray-500: #6b7280;
26
+ --dbc-gray-600: #4b5563;
27
+
28
+ /* Status colors */
29
+ --dbc-green-500: #10b981;
30
+ --dbc-green-100: #e6f9f3;
31
+ --dbc-green-700: #065f46;
32
+ --dbc-green-300: #34d399;
33
+
34
+ --dbc-amber-700: #b45309;
35
+ --dbc-amber-100: #fff7ed;
36
+ --dbc-amber-800: #92400e;
37
+ --dbc-amber-400: #f59e0b;
38
+
39
+ --dbc-red-600: #dc2626;
40
+ --dbc-red-100: #fef2f2;
41
+ --dbc-red-800: #991b1b;
42
+ --dbc-red-300: #f87171;
43
+
44
+ --dbc-info-500: #0ea5e9;
45
+ --dbc-info-100: #e0f2fe;
46
+ --dbc-info-700: #075985;
47
+ --dbc-info-300: #38bdf8;
48
+
49
+ /* ==========================================================================
50
+ * SEMANTIC COLORS (HUE-AGNOSTIC – COMPONENTS USE THESE)
51
+ * ======================================================================= */
52
+
53
+ /* === Brand & accents === */
54
+ --color-brand: var(--dbc-blue-500);
55
+ --color-brand-hover: var(--dbc-blue-600);
56
+ --color-brand-strong: var(--dbc-blue-600); /* same as hover for this theme */
57
+
58
+ /* === Backgrounds & surfaces === */
59
+ --color-bg-page: #ffffff;
60
+ --color-bg-surface: #ffffff;
61
+ --color-bg-surface-subtle: rgba(0, 0, 0, 0.02);
62
+ --color-bg-surface-strong: #f9fafb;
63
+
64
+ --color-bg-contextual: #f4f2ee;
65
+ --color-bg-contextual-subtle: #faf8f5;
66
+
67
+ /* Interaction backgrounds */
68
+ --color-bg-hover-subtle: var(--opac-bg-light);
69
+ --color-bg-pressed-subtle: var(--opac-bg-default);
70
+
71
+ /* Selected */
72
+ --color-bg-selected: var(--dbc-blue-100);
73
+ --color-bg-selected-hover: var(--dbc-blue-150);
74
+
75
+ --color-neutral: var(--dbc-neutral-200);
76
+ --color-neutral-fg: #000000;
77
+ --color-neutral-strong: var(--dbc-neutral-600);
78
+ --color-neutral-strong-fg: #ffffff;
79
+ /* === Borders === */
80
+
81
+ --color-border-subtle: rgba(0, 0, 0, 0.12);
82
+ --color-border-default: rgba(0, 0, 0, 0.12);
38
83
  --color-border-strong: rgba(0, 0, 0, 0.24);
84
+ --color-border-selected: var(--color-brand);
85
+
86
+ /* Border widths */
39
87
  --border-width-thin: 1px;
40
- --border-width-thick: 2px;
88
+ --border-width-medium: 2px;
89
+ --border-width-thick: 4px;
90
+
91
+ /* === Text / foreground === */
92
+
93
+ --color-fg-default: var(--dbc-neutral-900);
94
+ --color-fg-muted: var(--dbc-neutral-700);
95
+ --color-fg-subtle: var(--dbc-neutral-600);
96
+
97
+ --color-fg-on-strong: #ffffff;
98
+ --color-fg-on-brand: #ffffff;
99
+
100
+ /* === Links === */
101
+
102
+ --color-link: var(--dbc-blue-500);
103
+ --color-link-hover: var(--dbc-blue-600);
104
+ --color-link-visited: #5b3ee3;
105
+
106
+ /* === Status / severity === */
107
+
108
+ --color-status-success: var(--dbc-green-500);
109
+ --color-status-success-bg: var(--dbc-green-100);
110
+ --color-status-success-border: var(--dbc-green-300);
111
+ --color-status-success-fg: var(--dbc-green-700);
112
+
113
+ --color-status-warning: var(--dbc-amber-700);
114
+ --color-status-warning-bg: var(--dbc-amber-100);
115
+ --color-status-warning-border: var(--dbc-amber-400);
116
+ --color-status-warning-fg: var(--dbc-amber-800);
117
+
118
+ --color-status-error: var(--dbc-red-600);
119
+ --color-status-error-bg: var(--dbc-red-100);
120
+ --color-status-error-border: var(--dbc-red-300);
121
+ --color-status-error-fg: var(--dbc-red-800);
122
+
123
+ --color-status-info: var(--dbc-info-500);
124
+ --color-status-info-bg: var(--dbc-info-100);
125
+ --color-status-info-border: var(--dbc-info-300);
126
+ --color-status-info-fg: var(--dbc-info-700);
127
+
128
+ /* === Disabled === */
129
+
130
+ --color-disabled-bg: var(--dbc-neutral-100);
131
+ --color-disabled-fg: #9ca3af;
132
+ --color-disabled-border: var(--dbc-neutral-200);
133
+
134
+ /* === Focus === */
135
+
136
+ --color-focus-ring: var(--dbc-blue-300);
137
+ --focus-ring: 0 0 0 3px rgba(12, 62, 227, 0.25);
138
+
139
+ /* ==========================================================================
140
+ * OPTIONAL COMPONENT-LEVEL TOKENS
141
+ * ======================================================================= */
142
+
143
+ /* Cards */
144
+ --card-bg-default: var(--color-bg-surface);
145
+ --card-bg-subtle: var(--color-bg-surface-subtle);
146
+ --card-bg-strong: var(--color-bg-surface-strong);
147
+
148
+ --card-fg-default: var(--color-fg-default);
149
+ --card-fg-on-strong: var(--color-fg-on-strong);
150
+ --card-fg-on-accent-1: var(--color-fg-on-accent-1);
151
+ --card-fg-on-accent-2: var(--color-fg-on-accent-2);
152
+
153
+ /* Buttons */
154
+ --button-bg-primary: var(--color-brand);
155
+ --button-bg-primary-hover: var(--color-brand-hover);
156
+ --button-fg-primary: var(--color-fg-on-brand);
157
+
158
+ /* ==========================================================================
159
+ * NON-COLOR SYSTEM TOKENS
160
+ * ======================================================================= */
41
161
 
42
162
  /* Opacities (light) */
43
163
  --opac-bg-light: rgba(0, 0, 0, 0.025);
@@ -48,38 +168,7 @@
48
168
  --opac-bg-default-invert: rgba(255, 255, 255, 0.05);
49
169
  --opac-bg-dark-invert: rgba(255, 255, 255, 0.1);
50
170
 
51
- /* Semantic (Status) */
52
- --color-success: #166534;
53
- --color-warning: #a05a00;
54
- --color-error: #b91c1c;
55
- --color-info: #075985;
56
-
57
- --color-bg-success: #ecfdf5;
58
- --color-bg-warning: #fff3d1;
59
- --color-bg-error: #fef2f2;
60
- --color-bg-info: #e0f2fe;
61
-
62
- --color-text-success: #166534;
63
- --color-text-warning: #a05a00;
64
- --color-text-error: #b91c1c;
65
- --color-text-info: #075985;
66
-
67
- --color-border-success: #16a34a;
68
- --color-border-warning: #d97706;
69
- --color-border-error: #ef4444;
70
- --color-border-info: #0284c7;
71
-
72
- /* Disabled */
73
- --color-disabled-bg: #f3f4f6;
74
- --color-disabled-text: #9ca3af;
75
- --color-disabled-border: #e5e7eb;
76
-
77
- /* Focus */
78
- --focus-ring-color: #7ea5ff; /* tuned for light backgrounds */
79
- --focus-ring: 0 0 0 3px rgba(12, 62, 227, 0.25);
80
-
81
171
  /* ===== Spacing & Layout ===== */
82
- /* 4px base scale */
83
172
  --spacing-2xs: 2px;
84
173
  --spacing-xxs: 4px;
85
174
  --spacing-xs: 8px;
@@ -91,7 +180,6 @@
91
180
  --spacing-3xl: 64px;
92
181
  --spacing-4xl: 96px;
93
182
 
94
- /* Gutters */
95
183
  --gutter-sm: 12px;
96
184
  --gutter-md: 16px;
97
185
  --gutter-lg: 24px;
@@ -110,14 +198,18 @@
110
198
  --container-xl: 1280px;
111
199
 
112
200
  /* ===== Sizing ===== */
113
- --icon-size: 20px;
201
+ --icon-size-sm: 16px;
202
+ --icon-size-md: 20px;
203
+ --icon-size-lg: 24px;
204
+
114
205
  --component-size-xs: 20px;
115
206
  --component-size-sm: 30px;
116
- --component-size-md: 40px;
117
- --component-size-lg: 48px;
118
- --component-size-xl: 64px;
207
+ --component-size-md: 36px;
208
+ --component-size-lg: 44px;
209
+ --component-size-xl: 435px;
210
+ --sidebar-width: 200px;
119
211
 
120
- /* Control paddings (horizontal/vertical) */
212
+ /* Control paddings */
121
213
  --control-padding-x: 12px;
122
214
  --control-padding-y: 8px;
123
215
 
@@ -131,15 +223,17 @@
131
223
  --border-radius-lg: 0.5rem;
132
224
  --border-radius-xl: 0.75rem;
133
225
 
134
- /* Density presets (add/subtract from heights/paddings) */
226
+ /* Density */
135
227
  --density-compact: -2px;
136
228
  --density-comfortable: 0px;
137
229
  --density-spacious: 4px;
138
230
 
139
- /* ===== Typography ===== */
231
+ /* Typography */
232
+ --text-max-width: 65ch;
140
233
  --font-family:
141
234
  Roboto, Inter, ui-sans-serif, system-ui, 'Segoe UI', 'Helvetica Neue', Arial,
142
235
  'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', sans-serif;
236
+
143
237
  --font-family-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, 'Liberation Mono', monospace;
144
238
 
145
239
  --font-size-xs: 12px;
@@ -149,11 +243,10 @@
149
243
  --font-size-xl: 24px;
150
244
  --font-size-2xl: 30px;
151
245
 
152
- /* Fluid helpers (optional) */
153
246
  --font-size-fluid-sm: clamp(14px, 1.2vw, 16px);
154
247
  --font-size-fluid-lg: clamp(18px, 1.6vw, 22px);
155
248
 
156
- --font-weight-regular: 400;
249
+ --font-weight-default: 400;
157
250
  --font-weight-medium: 500;
158
251
  --font-weight-semibold: 600;
159
252
  --font-weight-bold: 700;
@@ -171,7 +264,7 @@
171
264
  --breadcrumb-transform: none;
172
265
  --tab-label-transform: none;
173
266
 
174
- /* ===== Motion ===== */
267
+ /* Motion */
175
268
  --transition-fast: 150ms;
176
269
  --transition-normal: 250ms;
177
270
  --transition-slow: 400ms;
@@ -181,17 +274,17 @@
181
274
  --ease-decelerate: cubic-bezier(0, 0, 0.2, 1);
182
275
  --ease-accelerate: cubic-bezier(0.4, 0, 1, 1);
183
276
 
184
- /* ===== Elevation & Overlay ===== */
277
+ /* Elevation & Overlay */
185
278
  --shadow-xs: 0 1px 2px rgba(0, 0, 0, 0.05);
186
279
  --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.1);
187
- --shadow-md: 0 4px 6px rgba(0, 0, 0, 0.1);
280
+ --shadow-md: 0 2px 4px rgba(0, 0, 0, 0.08);
188
281
  --shadow-lg: 0 10px 15px rgba(0, 0, 0, 0.1);
189
282
  --shadow-xl: 0 20px 25px rgba(0, 0, 0, 0.1);
190
283
 
191
284
  --overlay-scrim: rgba(0, 0, 0, 0.5);
192
285
  --backdrop-blur: 8px;
193
286
 
194
- /* ===== Layers ===== */
287
+ /* Layers */
195
288
  --z-base: 0;
196
289
  --z-dropdown: 1000;
197
290
  --z-sticky: 1100;
@@ -202,7 +295,7 @@
202
295
  --z-tooltip: 1400;
203
296
  --z-toast: 1500;
204
297
 
205
- /* ===== Data Visualization (optional but handy for tags/charts) ===== */
298
+ /* Data viz */
206
299
  --viz-cat-1: #2563eb;
207
300
  --viz-cat-2: #16a34a;
208
301
  --viz-cat-3: #f59e0b;
@@ -214,17 +307,17 @@
214
307
  --viz-seq-mid: #60a5fa;
215
308
  --viz-seq-end: #1d4ed8;
216
309
 
217
- /* ===== Components: Skeletons & Loaders ===== */
310
+ /* Skeletons & loaders */
218
311
  --skeleton-base: #e5e7eb;
219
312
  --skeleton-pulse: #f3f4f6;
220
313
  --spinner-size: 16px;
221
314
  --spinner-stroke: 2px;
222
315
 
223
- /* ===== Directionality / Logical Spacing ===== */
224
- --space-inline-sm: 8px; /* use with margin-inline, padding-inline, etc. */
316
+ /* Logical spacing */
317
+ --space-inline-sm: 8px;
225
318
  }
226
319
 
227
- /* ===== Accessibility: Reduced Motion (light only) ===== */
320
+ /* Reduced motion */
228
321
  @media (prefers-reduced-motion: reduce) {
229
322
  :root {
230
323
  --transition-fast: 1ms;
@@ -237,9 +330,10 @@
237
330
  }
238
331
  }
239
332
 
240
- /* ===== Optional: High-Contrast Variant (still light) ===== */
333
+ /* High-contrast variant */
241
334
  :root[data-contrast='high'] {
242
- --color-border: #4b5563;
335
+ --color-border-subtle: #4b5563;
336
+ --color-border-default: #374151;
243
337
  --color-border-strong: #111827;
244
338
  --focus-ring: 0 0 0 3px #111827;
245
339
  }
@@ -1,2 +1,2 @@
1
- export type Size = "sm" | "md" | "lg" | "xl";
2
- export type SizeVariable = "var(--component-size-sm)" | "var(--component-size-md)" | "var(--component-size-lg)" | "var(--component-size-xl)";
1
+ export type Size = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
2
+ export type SizeVariable = 'var(--component-size-xs)' | 'var(--component-size-sm)' | 'var(--component-size-md)' | 'var(--component-size-lg)' | 'var(--component-size-xl)';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dbcdk/react-components",
3
- "version": "0.0.3",
3
+ "version": "0.0.5",
4
4
  "description": "Reusable React components for DBC projects",
5
5
  "license": "ISC",
6
6
  "author": "",
@@ -46,15 +46,14 @@
46
46
  "build:types": "tsc -p tsconfig.build.json",
47
47
  "build": "npm run build:js && npm run build:types",
48
48
  "dev": "tsup --watch",
49
- "test": "vitest",
49
+ "test": "jest",
50
50
  "lint": "eslint \"src/**/*.{ts,tsx}\" --max-warnings=0",
51
51
  "lint:fix": "eslint \"src/**/*.{ts,tsx}\" --fix",
52
- "storybook": "storybook dev -p 6006",
52
+ "storybook": "storybook dev -p 6006 --no-open",
53
53
  "build:storybook": "storybook build",
54
54
  "changeset": "changeset",
55
55
  "version-packages": "changeset version",
56
- "typecheck": "tsc --noEmit",
57
- "prepublishOnly": "npm run build && npm run typecheck",
56
+ "typecheck": "tsc -p tsconfig.build.json --noEmit",
58
57
  "pack-it": "npm run build && npm pack",
59
58
  "postbuild": "cpy \"src/**/*.css\" dist --parents && cpy \"src/styles/styles.css\" dist && cpy \"src/styles/fonts/**/*\" dist/styles/fonts",
60
59
  "yalc:publish": "npm run build && yalc publish --push",
@@ -62,10 +61,10 @@
62
61
  "yalc:watch": "chokidar 'src/**/*' -c 'npm run yalc:push'"
63
62
  },
64
63
  "peerDependencies": {
65
- "@tanstack/react-table": "^8.20.0",
66
- "lucide-react": "^0.542.0",
67
- "react": "^18.2.0 || ^19.0.0",
68
- "react-dom": "^18.2.0 || ^19.0.0"
64
+ "@tanstack/react-table": "^8.21.3",
65
+ "lucide-react": "^0.543.0",
66
+ "react": "^19.2.0 || ^19.0.0",
67
+ "react-dom": "^19.2.0 || ^19.0.0"
69
68
  },
70
69
  "peerDependenciesMeta": {
71
70
  "@tanstack/react-table": {
@@ -78,9 +77,12 @@
78
77
  "@storybook/addon-docs": "^9.1.3",
79
78
  "@storybook/addon-viewport": "^9.0.8",
80
79
  "@storybook/react-vite": "^9.1.3",
80
+ "@swc/core": "^1.15.11",
81
+ "@swc/jest": "^0.2.39",
81
82
  "@tanstack/react-table": "^8.20.0",
82
- "@testing-library/jest-dom": "^6.8.0",
83
- "@testing-library/react": "^16.3.0",
83
+ "@testing-library/jest-dom": "^6.9.1",
84
+ "@testing-library/react": "^16.3.2",
85
+ "@types/jest": "^30.0.0",
84
86
  "@types/react": "^18.2.48",
85
87
  "@types/react-dom": "^18.2.18",
86
88
  "@types/testing-library__jest-dom": "^6.0.0",
@@ -92,6 +94,9 @@
92
94
  "eslint": "^9.34.0",
93
95
  "eslint-plugin-react": "^7.37.5",
94
96
  "eslint-plugin-react-hooks": "^5.2.0",
97
+ "identity-obj-proxy": "^3.0.0",
98
+ "jest": "^30.2.0",
99
+ "jest-environment-jsdom": "^30.2.0",
95
100
  "jsdom": "^26.1.0",
96
101
  "prettier": "^3.2.4",
97
102
  "react": "18.2.0",
@@ -100,6 +105,7 @@
100
105
  "tsup": "^8.5.0",
101
106
  "typescript": "^5.9.2",
102
107
  "vite": "^6.3.5",
108
+ "vite-tsconfig-paths": "^6.0.5",
103
109
  "vitest": "^3.2.4"
104
110
  },
105
111
  "engines": {
@@ -1,49 +0,0 @@
1
- 'use strict';
2
-
3
- var jsxRuntime = require('react/jsx-runtime');
4
- var Headline = require('../headline/Headline');
5
- var styles = require('./DataSummary.module.css');
6
- var SkeletonLoaderItem = require('../skeleton-loader/skeleton-loader-item/SkeletonLoaderItem');
7
-
8
- function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
9
-
10
- var styles__default = /*#__PURE__*/_interopDefault(styles);
11
-
12
- function DataSummary({
13
- title,
14
- data,
15
- loading,
16
- variant = "default",
17
- headerMarker,
18
- headerIcon,
19
- severity,
20
- size
21
- }) {
22
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `${styles__default.default.container} ${styles__default.default[variant]}`, children: [
23
- /* @__PURE__ */ jsxRuntime.jsx(
24
- Headline.Headline,
25
- {
26
- severity,
27
- marker: headerMarker,
28
- icon: headerIcon,
29
- size: 2,
30
- disableMargin: true,
31
- children: title
32
- }
33
- ),
34
- loading && /* @__PURE__ */ jsxRuntime.jsx("table", { children: /* @__PURE__ */ jsxRuntime.jsx("tbody", { children: Array.from({ length: 4 }).map((_, index) => /* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
35
- /* @__PURE__ */ jsxRuntime.jsx("td", { children: /* @__PURE__ */ jsxRuntime.jsx(SkeletonLoaderItem.SkeletonLoaderItem, {}) }),
36
- /* @__PURE__ */ jsxRuntime.jsx("td", { children: /* @__PURE__ */ jsxRuntime.jsx(SkeletonLoaderItem.SkeletonLoaderItem, { width: "100%" }) })
37
- ] }, index)) }) }),
38
- data && data.length > 0 && /* @__PURE__ */ jsxRuntime.jsx("table", { children: /* @__PURE__ */ jsxRuntime.jsx("tbody", { children: data.map((item, index) => /* @__PURE__ */ jsxRuntime.jsxs("tr", { children: [
39
- /* @__PURE__ */ jsxRuntime.jsx("td", { children: /* @__PURE__ */ jsxRuntime.jsxs("span", { className: styles__default.default.label, children: [
40
- item.icon,
41
- item.label,
42
- ":"
43
- ] }) }, index),
44
- /* @__PURE__ */ jsxRuntime.jsx("td", { children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: styles__default.default.value, children: item.value }) })
45
- ] })) }) })
46
- ] });
47
- }
48
-
49
- exports.DataSummary = DataSummary;
@@ -1,19 +0,0 @@
1
- import { Severity } from '@/constants/severity.types';
2
- interface DataSummaryItem {
3
- label: string;
4
- value: React.ReactNode;
5
- icon?: React.ReactNode;
6
- }
7
- interface DataSummaryProps {
8
- title: string;
9
- value: string | number;
10
- data: DataSummaryItem[];
11
- loading?: boolean;
12
- variant?: 'default' | 'primary';
13
- headerMarker?: boolean;
14
- headerIcon?: React.ReactNode;
15
- severity?: Severity;
16
- size?: 'sm' | 'md' | 'lg';
17
- }
18
- export declare function DataSummary({ title, data, loading, variant, headerMarker, headerIcon, severity, size, }: DataSummaryProps): JSX.Element;
19
- export {};
@@ -1,43 +0,0 @@
1
- import { jsxs, jsx } from 'react/jsx-runtime';
2
- import { Headline } from '../headline/Headline';
3
- import styles from './DataSummary.module.css';
4
- import { SkeletonLoaderItem } from '../skeleton-loader/skeleton-loader-item/SkeletonLoaderItem';
5
-
6
- function DataSummary({
7
- title,
8
- data,
9
- loading,
10
- variant = "default",
11
- headerMarker,
12
- headerIcon,
13
- severity,
14
- size
15
- }) {
16
- return /* @__PURE__ */ jsxs("div", { className: `${styles.container} ${styles[variant]}`, children: [
17
- /* @__PURE__ */ jsx(
18
- Headline,
19
- {
20
- severity,
21
- marker: headerMarker,
22
- icon: headerIcon,
23
- size: 2,
24
- disableMargin: true,
25
- children: title
26
- }
27
- ),
28
- loading && /* @__PURE__ */ jsx("table", { children: /* @__PURE__ */ jsx("tbody", { children: Array.from({ length: 4 }).map((_, index) => /* @__PURE__ */ jsxs("tr", { children: [
29
- /* @__PURE__ */ jsx("td", { children: /* @__PURE__ */ jsx(SkeletonLoaderItem, {}) }),
30
- /* @__PURE__ */ jsx("td", { children: /* @__PURE__ */ jsx(SkeletonLoaderItem, { width: "100%" }) })
31
- ] }, index)) }) }),
32
- data && data.length > 0 && /* @__PURE__ */ jsx("table", { children: /* @__PURE__ */ jsx("tbody", { children: data.map((item, index) => /* @__PURE__ */ jsxs("tr", { children: [
33
- /* @__PURE__ */ jsx("td", { children: /* @__PURE__ */ jsxs("span", { className: styles.label, children: [
34
- item.icon,
35
- item.label,
36
- ":"
37
- ] }) }, index),
38
- /* @__PURE__ */ jsx("td", { children: /* @__PURE__ */ jsx("span", { className: styles.value, children: item.value }) })
39
- ] })) }) })
40
- ] });
41
- }
42
-
43
- export { DataSummary };
@@ -1,51 +0,0 @@
1
- .container {
2
- padding: var(--spacing-lg);
3
- display: inline-flex;
4
- flex-direction: column;
5
- gap: var(--spacing-sm);
6
- }
7
-
8
- .default {
9
- background-color: var(--opac-bg-default);
10
- }
11
-
12
- .primary {
13
- background-color: var(--color-primary);
14
- color: var(--color-text-on-primary);
15
- }
16
-
17
- .label {
18
- font-weight: 500;
19
- padding-right: var(--spacing-sm);
20
- color: var(--color-text-secondary);
21
- }
22
-
23
- .label,
24
- .value {
25
- display: flex;
26
- align-items: center;
27
- gap: 5px;
28
- }
29
-
30
- .container table td:first-child {
31
- width: 1px;
32
- white-space: nowrap;
33
- padding-right: 10px;
34
- }
35
- .container table td {
36
- vertical-align: top;
37
- padding: 5px 0px;
38
- }
39
-
40
- .container table ul {
41
- margin: 0;
42
- padding: 0;
43
- }
44
-
45
- .container ul li {
46
- list-style-position: inside;
47
- }
48
- .container svg {
49
- height: 14px;
50
- width: auto;
51
- }
@@ -1,66 +0,0 @@
1
- .container {
2
- flex-shrink: 1;
3
- height: 100%;
4
- overflow: auto;
5
- display: flex;
6
- flex-direction: column;
7
- gap: var(--spacing-lg);
8
- width: 240px;
9
- inline-size: 240px;
10
- box-sizing: border-box;
11
-
12
- border-inline-end: var(--border-width-thin) solid var(--color-border);
13
- padding: var(--spacing-lg) var(--spacing-md);
14
- }
15
-
16
- .container a {
17
- text-decoration: none;
18
- color: inherit;
19
- }
20
- .container button {
21
- background: none;
22
- border: 0;
23
- font-size: inherit;
24
- display: flex;
25
- padding: 0;
26
- }
27
-
28
- .container a:focus-visible,
29
- .container button:focus-visible {
30
- outline: none;
31
- box-shadow: var(--focus-ring);
32
- }
33
- .links {
34
- display: flex;
35
- flex-grow: 1;
36
- overflow: auto;
37
- flex-direction: column;
38
- font-size: var(--font-size-sm);
39
- }
40
-
41
- .header {
42
- flex: 0 0 auto;
43
- display: flex;
44
- flex-direction: column;
45
- gap: var(--spacing-sm);
46
- }
47
-
48
- .logo img,
49
- .logo svg {
50
- max-inline-size: 50px;
51
- block-size: auto;
52
- }
53
-
54
- .content {
55
- flex: 1 1 auto;
56
- overflow-y: auto;
57
- display: flex;
58
- flex-direction: column;
59
- position: relative;
60
- width: 100%;
61
- gap: var(--spacing-lg);
62
- }
63
-
64
- .footer {
65
- flex: 0 0 auto;
66
- }