@altruist03/ui 0.1.0 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (207) hide show
  1. package/assets/images/noData.webp +0 -0
  2. package/dist/index.js +15237 -650
  3. package/dist/index.js.map +1 -1
  4. package/dist/noData-XPRHKMFR.webp +0 -0
  5. package/package.json +21 -7
  6. package/src/ThemeProvider/ThemeContext.tsx +75 -0
  7. package/src/ThemeProvider/index.ts +7 -0
  8. package/src/assets/images/noData.webp +0 -0
  9. package/src/assets.d.ts +10 -0
  10. package/src/components/Accordion/Accordion.stories.tsx +64 -0
  11. package/src/components/Accordion/Accordion.tsx +219 -0
  12. package/src/components/Accordion/Accordion.types.ts +16 -0
  13. package/src/components/Avatar/Avatar.stories.tsx +304 -0
  14. package/src/components/Avatar/Avatar.tsx +211 -0
  15. package/src/components/Avatar/Avatar.types.ts +33 -0
  16. package/src/components/Badge/Badge.stories.tsx +143 -0
  17. package/src/components/Badge/Badge.tsx +138 -0
  18. package/src/components/Badge/Badge.types.ts +24 -0
  19. package/src/components/Breadcrumb/Breadcrumb.stories.tsx +114 -0
  20. package/src/components/Breadcrumb/Breadcrumb.tsx +120 -0
  21. package/src/components/Breadcrumb/Breadcrumb.types.ts +22 -0
  22. package/src/components/Button/Button.stories.tsx +457 -0
  23. package/src/components/Button/Button.tsx +202 -0
  24. package/src/components/Button/Button.types.ts +18 -0
  25. package/src/components/Checkbox/Checkbox.stories.tsx +254 -0
  26. package/src/components/Checkbox/Checkbox.tsx +352 -0
  27. package/src/components/Checkbox/Checkbox.types.ts +123 -0
  28. package/src/components/CloseButton/CloseButton.stories.tsx +100 -0
  29. package/src/components/CloseButton/CloseButton.tsx +117 -0
  30. package/src/components/CloseButton/CloseButton.types.ts +15 -0
  31. package/src/components/CollapsibleSearch/CollapsibleSearch.tsx +120 -0
  32. package/src/components/DataTable/DataTable.stories.tsx +233 -0
  33. package/src/components/DataTable/DataTable.tsx +968 -0
  34. package/src/components/DataTable/DataTable.types.ts +49 -0
  35. package/src/components/DatePicker/DatePicker.stories.tsx +341 -0
  36. package/src/components/DatePicker/DatePicker.tsx +669 -0
  37. package/src/components/DatePicker/DatePicker.types.ts +105 -0
  38. package/src/components/DatePicker/DateTimePicker.tsx +35 -0
  39. package/src/components/DateRangePicker/DateRangePicker.tsx +179 -0
  40. package/src/components/DateRangePicker/DateRangePicker.types.ts +34 -0
  41. package/src/components/Drawer/Drawer.stories.tsx +243 -0
  42. package/src/components/Drawer/Drawer.tsx +196 -0
  43. package/src/components/Drawer/Drawer.types.ts +60 -0
  44. package/src/components/FileUpload/FileUpload.stories.tsx +162 -0
  45. package/src/components/FileUpload/FileUpload.tsx +216 -0
  46. package/src/components/FileUpload/FileUpload.types.ts +80 -0
  47. package/src/components/FilterPopover/FilterPopover.stories.tsx +173 -0
  48. package/src/components/FilterPopover/FilterPopover.tsx +310 -0
  49. package/src/components/FilterPopover/FilterPopover.types.ts +26 -0
  50. package/src/components/ImageViewer/ImageViewerToolbar.jsx +81 -0
  51. package/src/components/ImageViewer/useImagePanRotate.js +102 -0
  52. package/src/components/IpWhitelistField/IpWhitelistField.stories.tsx +138 -0
  53. package/src/components/IpWhitelistField/IpWhitelistField.tsx +164 -0
  54. package/src/components/IpWhitelistField/IpWhitelistField.types.ts +42 -0
  55. package/src/components/Loader/Loader.stories.tsx +95 -0
  56. package/src/components/Loader/Loader.tsx +132 -0
  57. package/src/components/Loader/Loader.types.ts +6 -0
  58. package/src/components/Menu/Menu.tsx +143 -0
  59. package/src/components/Menu/Menu.types.ts +28 -0
  60. package/src/components/MenuButton/MenuButton.stories.tsx +140 -0
  61. package/src/components/MenuButton/MenuButton.tsx +45 -0
  62. package/src/components/MenuButton/MenuButton.types.ts +21 -0
  63. package/src/components/Modal/Modal.stories.tsx +266 -0
  64. package/src/components/Modal/Modal.tsx +399 -0
  65. package/src/components/Modal/index.ts +2 -0
  66. package/src/components/Modal/types.ts +126 -0
  67. package/src/components/Pagination/Pagination.stories.tsx +167 -0
  68. package/src/components/Pagination/Pagination.tsx +266 -0
  69. package/src/components/Pagination/Pagination.types.ts +20 -0
  70. package/src/components/PeriodSelector/PeriodSelector.stories.tsx +50 -0
  71. package/src/components/PeriodSelector/PeriodSelector.tsx +47 -0
  72. package/src/components/PeriodSelector/PeriodSelector.types.ts +10 -0
  73. package/src/components/PhoneField/PhoneField.stories.tsx +141 -0
  74. package/src/components/PhoneField/PhoneField.tsx +284 -0
  75. package/src/components/PhoneField/PhoneField.types.ts +89 -0
  76. package/src/components/PhoneField/countryCodes.ts +236 -0
  77. package/src/components/Progress/Progress.stories.tsx +83 -0
  78. package/src/components/Progress/Progress.tsx +91 -0
  79. package/src/components/Progress/Progress.types.ts +22 -0
  80. package/src/components/RadioButton/RadioButton.stories.tsx +332 -0
  81. package/src/components/RadioButton/RadioButton.tsx +427 -0
  82. package/src/components/RadioButton/RadioButton.types.ts +117 -0
  83. package/src/components/ReportCard/ReportCard.tsx +183 -0
  84. package/src/components/ReportCard/ReportCard.types.ts +17 -0
  85. package/src/components/SectionIcon/SectionIcon.tsx +87 -0
  86. package/src/components/SectionIcon/SectionIcon.types.ts +23 -0
  87. package/src/components/SegmentedInputField/SegmentedInputField.stories.tsx +165 -0
  88. package/src/components/SegmentedInputField/SegmentedInputField.tsx +174 -0
  89. package/src/components/SegmentedInputField/SegmentedInputField.types.ts +51 -0
  90. package/src/components/SelectScroll/SelectScroll.stories.tsx +336 -0
  91. package/src/components/SelectScroll/SelectScroll.tsx +1119 -0
  92. package/src/components/SelectScroll/SelectScroll.types.ts +60 -0
  93. package/src/components/Selector/Selector.stories.tsx +382 -0
  94. package/src/components/Selector/Selector.tsx +1310 -0
  95. package/src/components/Selector/Selector.types.ts +71 -0
  96. package/src/components/Skeleton/Skeleton.stories.tsx +133 -0
  97. package/src/components/Skeleton/Skeleton.tsx +20 -0
  98. package/src/components/Skeleton/Skeleton.types.ts +3 -0
  99. package/src/components/Spinner/Spinner.stories.tsx +84 -0
  100. package/src/components/Spinner/Spinner.tsx +79 -0
  101. package/src/components/Spinner/Spinner.types.ts +8 -0
  102. package/src/components/StatCard/StatCard.stories.tsx +125 -0
  103. package/src/components/StatCard/StatCard.tsx +167 -0
  104. package/src/components/StatCard/StatCard.types.ts +20 -0
  105. package/src/components/StatusBadge/StatusBadge.stories.tsx +179 -0
  106. package/src/components/StatusBadge/StatusBadge.tsx +74 -0
  107. package/src/components/StatusBadge/StatusBadge.types.ts +23 -0
  108. package/src/components/Stepper/Stepper.stories.tsx +85 -0
  109. package/src/components/Stepper/Stepper.tsx +138 -0
  110. package/src/components/Stepper/Stepper.types.ts +16 -0
  111. package/src/components/SubTabs/SubTabs.stories.tsx +128 -0
  112. package/src/components/SubTabs/SubTabs.tsx +279 -0
  113. package/src/components/SubTabs/SubTabs.types.ts +44 -0
  114. package/src/components/SummaryCard/SummaryCard.stories.tsx +100 -0
  115. package/src/components/SummaryCard/SummaryCard.tsx +141 -0
  116. package/src/components/SummaryCard/SummaryCard.types.ts +22 -0
  117. package/src/components/Switch/Switch.stories.tsx +59 -0
  118. package/src/components/Switch/Switch.tsx +217 -0
  119. package/src/components/Switch/Switch.types.ts +22 -0
  120. package/src/components/Tabs/Tabs.stories.tsx +178 -0
  121. package/src/components/Tabs/Tabs.tsx +197 -0
  122. package/src/components/Tabs/Tabs.types.ts +34 -0
  123. package/src/components/TextField/TextField.stories.tsx +249 -0
  124. package/src/components/TextField/TextField.tsx +462 -0
  125. package/src/components/TextField/TextField.types.ts +141 -0
  126. package/src/components/Toast/Toast.stories.tsx +237 -0
  127. package/src/components/Toast/Toast.tsx +246 -0
  128. package/src/components/Toast/Toast.types.ts +31 -0
  129. package/src/components/ToggleButton/ToggleButton.stories.tsx +105 -0
  130. package/src/components/ToggleButton/ToggleButton.tsx +267 -0
  131. package/src/components/ToggleButton/ToggleButton.types.ts +19 -0
  132. package/src/components/UploadDropzone/UploadDropzone.jsx +78 -0
  133. package/src/components/UploadDropzone2/UploadDropzone.stories.tsx +94 -0
  134. package/src/components/UploadDropzone2/UploadDropzone.tsx +222 -0
  135. package/src/components/UploadDropzone2/UploadDropzone.types.ts +54 -0
  136. package/src/components/ViewEditToggle/ViewEditToggle.stories.tsx +40 -0
  137. package/src/components/ViewEditToggle/ViewEditToggle.tsx +239 -0
  138. package/src/components/ViewEditToggle/ViewEditToggle.types.ts +27 -0
  139. package/src/components/index.ts +157 -0
  140. package/src/icons/ReportDollarIcon.tsx +71 -0
  141. package/src/icons/index.ts +27 -0
  142. package/src/index.ts +214 -0
  143. package/src/storybook/preview.tsx +64 -0
  144. package/src/theme/index.ts +4 -0
  145. package/src/theme/types.d.ts +1 -0
  146. package/src/themes/cpc.ts +4 -0
  147. package/src/themes/firebird.ts +4 -0
  148. package/src/tokens/brands/cpc/themes/dark.json +82 -0
  149. package/src/tokens/brands/cpc/themes/light.json +1 -0
  150. package/src/tokens/brands/default/brand.json +20 -0
  151. package/src/tokens/brands/firebird/themes/dark.json +28 -0
  152. package/src/tokens/brands/firebird/themes/light.json +20 -0
  153. package/src/tokens/button.ts +24 -0
  154. package/src/tokens/components/accordion.json +52 -0
  155. package/src/tokens/components/avatar.json +40 -0
  156. package/src/tokens/components/badge.json +41 -0
  157. package/src/tokens/components/breadcrumb.json +13 -0
  158. package/src/tokens/components/button.json +67 -0
  159. package/src/tokens/components/card.json +39 -0
  160. package/src/tokens/components/checkbox.json +64 -0
  161. package/src/tokens/components/closebutton.json +55 -0
  162. package/src/tokens/components/datatable.json +40 -0
  163. package/src/tokens/components/datepicker.json +99 -0
  164. package/src/tokens/components/drawer.json +23 -0
  165. package/src/tokens/components/field.json +29 -0
  166. package/src/tokens/components/fileupload.json +57 -0
  167. package/src/tokens/components/filterpopover.json +29 -0
  168. package/src/tokens/components/input.json +31 -0
  169. package/src/tokens/components/ipwhitelistfield.json +16 -0
  170. package/src/tokens/components/loader.json +15 -0
  171. package/src/tokens/components/menu.json +21 -0
  172. package/src/tokens/components/modal.json +25 -0
  173. package/src/tokens/components/pagination.json +45 -0
  174. package/src/tokens/components/phonefield.json +41 -0
  175. package/src/tokens/components/progress.json +12 -0
  176. package/src/tokens/components/radio.json +87 -0
  177. package/src/tokens/components/reportcard.json +17 -0
  178. package/src/tokens/components/selector.json +87 -0
  179. package/src/tokens/components/selectscroll.json +65 -0
  180. package/src/tokens/components/skeleton.json +6 -0
  181. package/src/tokens/components/stepper.json +38 -0
  182. package/src/tokens/components/subtabs.json +45 -0
  183. package/src/tokens/components/switch.json +55 -0
  184. package/src/tokens/components/tabs.json +38 -0
  185. package/src/tokens/components/textfield.json +59 -0
  186. package/src/tokens/components/togglebutton.json +48 -0
  187. package/src/tokens/components/uploaddropzone.json +61 -0
  188. package/src/tokens/drawer.ts +37 -0
  189. package/src/tokens/foundation/breakpoints.json +10 -0
  190. package/src/tokens/foundation/colors.json +122 -0
  191. package/src/tokens/foundation/opacity.json +16 -0
  192. package/src/tokens/foundation/radius.json +14 -0
  193. package/src/tokens/foundation/size.json +38 -0
  194. package/src/tokens/foundation/spacing.json +19 -0
  195. package/src/tokens/foundation/typography.json +43 -0
  196. package/src/tokens/index.ts +3665 -0
  197. package/src/tokens/modal.ts +42 -0
  198. package/src/tokens/semantic/color.json +148 -0
  199. package/src/tokens/semantic/field.json +28 -0
  200. package/src/tokens/semantic/opacity.json +5 -0
  201. package/src/tokens/semantic/size.json +722 -0
  202. package/src/tokens/semantic/spacing.json +27 -0
  203. package/src/tokens/semantic/typography.json +87 -0
  204. package/src/utils/scrollLock.ts +44 -0
  205. package/dist/index.css +0 -514
  206. package/dist/index.css.map +0 -1
  207. package/dist/index.d.ts +0 -289
@@ -0,0 +1,157 @@
1
+ export { Button } from './Button/Button';
2
+ export type { ButtonProps, ButtonVariant, ButtonSize, ButtonShape } from './Button/Button.types';
3
+
4
+ export { TextField } from './TextField/TextField';
5
+ export type { TextFieldProps } from './TextField/TextField.types';
6
+
7
+ export { IpWhitelistField } from './IpWhitelistField/IpWhitelistField';
8
+ export type {
9
+ IpWhitelistFieldProps,
10
+ IpWhitelistRow,
11
+ IpWhitelistOctet,
12
+ } from './IpWhitelistField/IpWhitelistField.types';
13
+
14
+ export { SegmentedInputField } from './SegmentedInputField/SegmentedInputField';
15
+ export type {
16
+ SegmentedInputFieldProps,
17
+ SegmentedInputChangeContext,
18
+ } from './SegmentedInputField/SegmentedInputField.types';
19
+
20
+ export { DatePicker, ExampleCustomInput } from './DatePicker/DatePicker';
21
+ export type { DatePickerProps } from './DatePicker/DatePicker.types';
22
+ export type { ExampleCustomInputProps } from './DatePicker/DatePicker';
23
+ export { DateTimePicker } from './DatePicker/DateTimePicker';
24
+ export type { DateTimePickerProps } from './DatePicker/DateTimePicker';
25
+
26
+ export { DateRangePicker } from './DateRangePicker/DateRangePicker';
27
+ export type {
28
+ DateRangePickerProps,
29
+ DateRangePickerSize,
30
+ } from './DateRangePicker/DateRangePicker.types';
31
+
32
+ export { RadioButton, RadioButtonGroup } from './RadioButton/RadioButton';
33
+ export type { RadioButtonProps, RadioButtonGroupProps } from './RadioButton/RadioButton.types';
34
+
35
+ export { Checkbox, CheckboxGroup } from './Checkbox/Checkbox';
36
+ export type { CheckboxProps, CheckboxGroupProps } from './Checkbox/Checkbox.types';
37
+
38
+ export { Pagination } from './Pagination/Pagination';
39
+ export type { PaginationProps, PaginationSize } from './Pagination/Pagination.types';
40
+
41
+ export { CloseButton } from './CloseButton/CloseButton';
42
+ export type {
43
+ CloseButtonProps,
44
+ CloseButtonSize,
45
+ CloseButtonVariant,
46
+ } from './CloseButton/CloseButton.types';
47
+
48
+ export { Avatar } from './Avatar/Avatar';
49
+ export type {
50
+ AvatarProps,
51
+ AvatarShape,
52
+ AvatarVariant,
53
+ AvatarIconType,
54
+ } from './Avatar/Avatar.types';
55
+
56
+ export { Tabs } from './Tabs/Tabs';
57
+ export type { TabsProps, TabsOption } from './Tabs/Tabs.types';
58
+
59
+ export { SubTabs, normalizeSubTabValue } from './SubTabs/SubTabs';
60
+ export type {
61
+ SubTabsProps,
62
+ SubTabsOption,
63
+ SubTabsVariant,
64
+ SubTabsColor,
65
+ SubTabsSize,
66
+ } from './SubTabs/SubTabs.types';
67
+
68
+ export { ToggleButton } from './ToggleButton/ToggleButton';
69
+ export type { ToggleButtonProps, ToggleButtonOption } from './ToggleButton/ToggleButton.types';
70
+
71
+ export { ViewEditToggle } from './ViewEditToggle/ViewEditToggle';
72
+ export type {
73
+ ViewEditToggleProps,
74
+ ViewEditMode,
75
+ ViewEditToggleSpotlightProps,
76
+ } from './ViewEditToggle/ViewEditToggle.types';
77
+
78
+ export { Switch } from './Switch/Switch';
79
+ export type { SwitchProps, SwitchSize } from './Switch/Switch.types';
80
+
81
+ export { MenuButton } from './MenuButton/MenuButton';
82
+ export type { MenuButtonProps } from './MenuButton/MenuButton.types';
83
+
84
+ export { Menu } from './Menu/Menu';
85
+ export type { MenuProps, MenuItem } from './Menu/Menu.types';
86
+
87
+ export { FileUpload } from './FileUpload/FileUpload';
88
+ export type { FileUploadProps, FileUploadSize } from './FileUpload/FileUpload.types';
89
+
90
+ export { UploadDropzone } from './UploadDropzone2/UploadDropzone';
91
+ export type { UploadDropzoneProps } from './UploadDropzone2/UploadDropzone.types';
92
+
93
+ export { PhoneField } from './PhoneField/PhoneField';
94
+ export type { PhoneFieldProps, CountryCodeOption } from './PhoneField/PhoneField.types';
95
+
96
+ export { Badge } from './Badge/Badge';
97
+ export type { BadgeProps } from './Badge/Badge.types';
98
+
99
+ export { FilterPopover } from './FilterPopover/FilterPopover';
100
+ export type { FilterPopoverProps } from './FilterPopover/FilterPopover.types';
101
+
102
+ export { Breadcrumb } from './Breadcrumb/Breadcrumb';
103
+ export type { BreadcrumbProps, BreadcrumbOption } from './Breadcrumb/Breadcrumb.types';
104
+
105
+ export { Loader } from './Loader/Loader';
106
+ export type { LoaderProps } from './Loader/Loader.types';
107
+
108
+ export { DataTable } from './DataTable/DataTable';
109
+ export type { DataTableProps } from './DataTable/DataTable.types';
110
+
111
+ export { default as Modal } from './Modal/Modal';
112
+ export type { ModalProps } from './Modal/types';
113
+
114
+ export { Drawer } from './Drawer/Drawer';
115
+ export type { DrawerProps, DrawerAnchor, DrawerSize } from './Drawer/Drawer.types';
116
+
117
+ export { Spinner } from './Spinner/Spinner';
118
+ export type { SpinnerProps } from './Spinner/Spinner.types';
119
+
120
+ export { Progress } from './Progress/Progress';
121
+ export type { ProgressProps } from './Progress/Progress.types';
122
+
123
+ export { Skeleton } from './Skeleton/Skeleton';
124
+ export type { SkeletonProps, SkeletonStyleProps } from './Skeleton/Skeleton.types';
125
+
126
+ export { Stepper } from './Stepper/Stepper';
127
+ export type { StepperProps, StepperStep } from './Stepper/Stepper.types';
128
+
129
+ export { Accordion } from './Accordion/Accordion';
130
+ export type { AccordionProps } from './Accordion/Accordion.types';
131
+
132
+ export { StatCard } from './StatCard/StatCard';
133
+ export type { StatCardProps } from './StatCard/StatCard.types';
134
+
135
+ export { SummaryCard, SummaryCardGrid } from './SummaryCard/SummaryCard';
136
+ export type { SummaryCardProps, SummaryCardGridProps } from './SummaryCard/SummaryCard.types';
137
+
138
+ export { SectionIcon } from './SectionIcon/SectionIcon';
139
+ export type {
140
+ SectionIconProps,
141
+ SectionIconSize,
142
+ SectionIconVariant,
143
+ } from './SectionIcon/SectionIcon.types';
144
+
145
+ export { CollapsibleSearch } from './CollapsibleSearch/CollapsibleSearch';
146
+ export type {
147
+ CollapsibleSearchProps,
148
+ CollapsibleSearchSize,
149
+ } from './CollapsibleSearch/CollapsibleSearch';
150
+ export { Toast, ToastProvider, useToastDS } from './Toast/Toast';
151
+ export type {
152
+ ToastProps,
153
+ ToastVariant,
154
+ ToastPosition,
155
+ ToastContainerProps,
156
+ ToastContextValue,
157
+ } from './Toast/Toast.types';
@@ -0,0 +1,71 @@
1
+ import { forwardRef } from 'react';
2
+ import type { SVGProps } from 'react';
3
+
4
+ export interface ReportDollarIconProps extends SVGProps<SVGSVGElement> {
5
+ /** Icon size in px. Defaults to 24. */
6
+ size?: number | string;
7
+ /** Fill colour of the document body. Inherits from `currentColor` by default. */
8
+ color?: string;
9
+ /** Colour of the `$` glyph and inner strokes. Defaults to white. */
10
+ glyphColor?: string;
11
+ /**
12
+ * Optional MUI-style `sx` prop. Only `fontSize` is consumed so the icon
13
+ * composes seamlessly with `SectionIcon`, which sets sizing via `sx`.
14
+ */
15
+ sx?: { fontSize?: number | string };
16
+ }
17
+
18
+ /**
19
+ * ReportDollarIcon
20
+ *
21
+ * A filled "document with dollar sign" mark used for financial / expense
22
+ * report section headers (e.g. Summary Report, Details Report on the fuel
23
+ * page). Mirrors the visual weight of the MUI icon set so it composes well
24
+ * with `SectionIcon`.
25
+ */
26
+ export const ReportDollarIcon = forwardRef<SVGSVGElement, ReportDollarIconProps>(
27
+ function ReportDollarIcon(
28
+ { size, color = 'currentColor', glyphColor = '#FFFFFF', style, sx, ...rest },
29
+ ref
30
+ ) {
31
+ const resolvedSize = size ?? sx?.fontSize ?? 24;
32
+ return (
33
+ <svg
34
+ ref={ref}
35
+ width={resolvedSize}
36
+ height={resolvedSize}
37
+ viewBox="0 0 24 24"
38
+ fill="none"
39
+ xmlns="http://www.w3.org/2000/svg"
40
+ aria-hidden
41
+ style={style}
42
+ {...rest}
43
+ >
44
+ <path
45
+ d="M6.5 2.25h7.25a1.5 1.5 0 0 1 1.06.44l4 4a1.5 1.5 0 0 1 .44 1.06v12.5A2.25 2.25 0 0 1 17 22.5H7A2.25 2.25 0 0 1 4.75 20.25V4.5A2.25 2.25 0 0 1 7 2.25Z"
46
+ fill={color}
47
+ />
48
+ <path
49
+ d="M14.25 2.75v3.5a1.5 1.5 0 0 0 1.5 1.5h3.25"
50
+ stroke={glyphColor}
51
+ strokeWidth="1.4"
52
+ strokeLinecap="round"
53
+ strokeLinejoin="round"
54
+ fill="none"
55
+ opacity="0.85"
56
+ />
57
+ <text
58
+ x="12"
59
+ y="16.6"
60
+ textAnchor="middle"
61
+ fontFamily="Roboto, Arial, sans-serif"
62
+ fontSize="9.5"
63
+ fontWeight="700"
64
+ fill={glyphColor}
65
+ >
66
+ $
67
+ </text>
68
+ </svg>
69
+ );
70
+ }
71
+ );
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Centralized icon exports for the design system.
3
+ *
4
+ * Re-exports the MUI icons that are used across product surfaces so consumers
5
+ * import them via the design-system entry point. This keeps icon choices
6
+ * consistent and lets us swap the underlying icon library in one place later.
7
+ */
8
+
9
+ export { default as DescriptionOutlinedIcon } from '@mui/icons-material/DescriptionOutlined';
10
+ export { default as DownloadOutlinedIcon } from '@mui/icons-material/DownloadOutlined';
11
+ export { default as DownloadIcon } from '@mui/icons-material/Download';
12
+ export { default as UploadIcon } from '@mui/icons-material/Upload';
13
+ export { default as SearchIcon } from '@mui/icons-material/Search';
14
+ export { default as RefreshIcon } from '@mui/icons-material/Refresh';
15
+ export { default as VisibilityOutlinedIcon } from '@mui/icons-material/VisibilityOutlined';
16
+ export { default as CheckIcon } from '@mui/icons-material/Check';
17
+ export { default as ScheduleIcon } from '@mui/icons-material/Schedule';
18
+ export { default as ErrorOutlineIcon } from '@mui/icons-material/ErrorOutline';
19
+ export { default as ArrowForwardIcon } from '@mui/icons-material/ArrowForward';
20
+ export { default as ArrowBackIcon } from '@mui/icons-material/ArrowBack';
21
+ export { default as AddIcon } from '@mui/icons-material/Add';
22
+ export { default as EditOutlinedIcon } from '@mui/icons-material/EditOutlined';
23
+
24
+ export { ReportDollarIcon } from './ReportDollarIcon';
25
+ export type { ReportDollarIconProps } from './ReportDollarIcon';
26
+
27
+ export type { SvgIconProps } from '@mui/material/SvgIcon';
package/src/index.ts ADDED
@@ -0,0 +1,214 @@
1
+ // Components
2
+ export { Button } from './components/Button/Button';
3
+ export type {
4
+ ButtonProps,
5
+ ButtonVariant,
6
+ ButtonSize,
7
+ ButtonShape,
8
+ } from './components/Button/Button.types';
9
+
10
+ export { TextField } from './components/TextField/TextField';
11
+ export type { TextFieldProps } from './components/TextField/TextField.types';
12
+
13
+ export { DatePicker } from './components/DatePicker/DatePicker';
14
+ export type { DatePickerProps } from './components/DatePicker/DatePicker.types';
15
+ export { DateTimePicker } from './components/DatePicker/DateTimePicker';
16
+ export type { DateTimePickerProps } from './components/DatePicker/DateTimePicker';
17
+
18
+ export { DateRangePicker } from './components/DateRangePicker/DateRangePicker';
19
+ export type {
20
+ DateRangePickerProps,
21
+ DateRangePickerSize,
22
+ } from './components/DateRangePicker/DateRangePicker.types';
23
+
24
+ export { RadioButton, RadioButtonGroup } from './components/RadioButton/RadioButton';
25
+ export type {
26
+ RadioButtonProps,
27
+ RadioButtonGroupProps,
28
+ RadioButtonSize,
29
+ } from './components/RadioButton/RadioButton.types';
30
+
31
+ export { Checkbox, CheckboxGroup } from './components/Checkbox/Checkbox';
32
+ export type { CheckboxProps, CheckboxGroupProps } from './components/Checkbox/Checkbox.types';
33
+
34
+ export { CloseButton } from './components/CloseButton/CloseButton';
35
+ export type {
36
+ CloseButtonProps,
37
+ CloseButtonSize,
38
+ CloseButtonVariant,
39
+ } from './components/CloseButton/CloseButton.types';
40
+
41
+ export { Avatar } from './components/Avatar/Avatar';
42
+ export type {
43
+ AvatarProps,
44
+ AvatarShape,
45
+ AvatarVariant,
46
+ AvatarIconType,
47
+ } from './components/Avatar/Avatar.types';
48
+
49
+ export { Tabs } from './components/Tabs/Tabs';
50
+ export type { TabsProps, TabsOption } from './components/Tabs/Tabs.types';
51
+
52
+ export { ToggleButton } from './components/ToggleButton/ToggleButton';
53
+ export type {
54
+ ToggleButtonProps,
55
+ ToggleButtonOption,
56
+ } from './components/ToggleButton/ToggleButton.types';
57
+
58
+ export { ViewEditToggle } from './components/ViewEditToggle/ViewEditToggle';
59
+ export type {
60
+ ViewEditToggleProps,
61
+ ViewEditMode,
62
+ ViewEditToggleSpotlightProps,
63
+ } from './components/ViewEditToggle/ViewEditToggle.types';
64
+
65
+ export { Switch } from './components/Switch/Switch';
66
+ export type { SwitchProps, SwitchSize } from './components/Switch/Switch.types';
67
+
68
+ export { MenuButton } from './components/MenuButton/MenuButton';
69
+ export type { MenuButtonProps } from './components/MenuButton/MenuButton.types';
70
+
71
+ export { Menu } from './components/Menu/Menu';
72
+ export type { MenuProps, MenuItem } from './components/Menu/Menu.types';
73
+
74
+ export { default as Selector } from './components/Selector/Selector';
75
+ export type { SelectorProps } from './components/Selector/Selector.types';
76
+
77
+ export { FileUpload } from './components/FileUpload/FileUpload';
78
+ export type { FileUploadProps, FileUploadSize } from './components/FileUpload/FileUpload.types';
79
+
80
+ export { UploadDropzone } from './components/UploadDropzone2/UploadDropzone';
81
+ export type { UploadDropzoneProps } from './components/UploadDropzone2/UploadDropzone.types';
82
+
83
+ export { PhoneField } from './components/PhoneField/PhoneField';
84
+ export type { PhoneFieldProps, CountryCodeOption } from './components/PhoneField/PhoneField.types';
85
+
86
+ export { Badge } from './components/Badge/Badge';
87
+ export type { BadgeProps } from './components/Badge/Badge.types';
88
+
89
+ export { StatusBadge } from './components/StatusBadge/StatusBadge';
90
+ export type {
91
+ StatusBadgeProps,
92
+ StatusBadgeSize,
93
+ StatusBadgeVariant,
94
+ } from './components/StatusBadge/StatusBadge.types';
95
+
96
+ export { FilterPopover } from './components/FilterPopover/FilterPopover';
97
+ export type { FilterPopoverProps } from './components/FilterPopover/FilterPopover.types';
98
+
99
+ export { Breadcrumb } from './components/Breadcrumb/Breadcrumb';
100
+ export type { BreadcrumbProps, BreadcrumbOption } from './components/Breadcrumb/Breadcrumb.types';
101
+
102
+ export { Loader } from './components/Loader/Loader';
103
+ export type { LoaderProps } from './components/Loader/Loader.types';
104
+
105
+ export { DataTable } from './components/DataTable/DataTable';
106
+ export type { DataTableProps } from './components/DataTable/DataTable.types';
107
+
108
+ export { Skeleton } from './components/Skeleton/Skeleton';
109
+ export type { SkeletonProps, SkeletonStyleProps } from './components/Skeleton/Skeleton.types';
110
+
111
+ export { Stepper } from './components/Stepper/Stepper';
112
+ export type { StepperProps, StepperStep } from './components/Stepper/Stepper.types';
113
+
114
+ export { Accordion } from './components/Accordion/Accordion';
115
+ export type { AccordionProps } from './components/Accordion/Accordion.types';
116
+
117
+ export { StatCard } from './components/StatCard/StatCard';
118
+ export type { StatCardProps } from './components/StatCard/StatCard.types';
119
+
120
+ export { ReportCard } from './components/ReportCard/ReportCard';
121
+ export type { ReportCardProps, ReportCardItem } from './components/ReportCard/ReportCard.types';
122
+
123
+ export { SummaryCard, SummaryCardGrid } from './components/SummaryCard/SummaryCard';
124
+ export type {
125
+ SummaryCardProps,
126
+ SummaryCardGridProps,
127
+ } from './components/SummaryCard/SummaryCard.types';
128
+
129
+ export { SectionIcon } from './components/SectionIcon/SectionIcon';
130
+ export type {
131
+ SectionIconProps,
132
+ SectionIconSize,
133
+ SectionIconVariant,
134
+ } from './components/SectionIcon/SectionIcon.types';
135
+
136
+ export { CollapsibleSearch } from './components/CollapsibleSearch/CollapsibleSearch';
137
+ export type {
138
+ CollapsibleSearchProps,
139
+ CollapsibleSearchSize,
140
+ } from './components/CollapsibleSearch/CollapsibleSearch';
141
+
142
+ export { default as Modal } from './components/Modal/Modal';
143
+ export type { ModalProps } from './components/Modal/types';
144
+
145
+ export { Drawer } from './components/Drawer/Drawer';
146
+ export type { DrawerProps, DrawerAnchor, DrawerSize } from './components/Drawer/Drawer.types';
147
+
148
+ export { Pagination } from './components/Pagination/Pagination';
149
+ export type { PaginationProps, PaginationSize } from './components/Pagination/Pagination.types';
150
+
151
+ export { PeriodSelector } from './components/PeriodSelector/PeriodSelector';
152
+ export type { PeriodSelectorProps } from './components/PeriodSelector/PeriodSelector.types';
153
+
154
+ export { default as SelectScroll } from './components/SelectScroll/SelectScroll';
155
+ export type { SelectScrollProps } from './components/SelectScroll/SelectScroll';
156
+
157
+ export { Spinner } from './components/Spinner/Spinner';
158
+ export type { SpinnerProps } from './components/Spinner/Spinner.types';
159
+
160
+ export { Progress } from './components/Progress/Progress';
161
+ export type { ProgressProps } from './components/Progress/Progress.types';
162
+
163
+ export { IpWhitelistField } from './components/IpWhitelistField/IpWhitelistField';
164
+ export type {
165
+ IpWhitelistFieldProps,
166
+ IpWhitelistRow,
167
+ IpWhitelistOctet,
168
+ } from './components/IpWhitelistField/IpWhitelistField.types';
169
+
170
+ export { SegmentedInputField } from './components/SegmentedInputField/SegmentedInputField';
171
+ export type {
172
+ SegmentedInputFieldProps,
173
+ SegmentedInputChangeContext,
174
+ } from './components/SegmentedInputField/SegmentedInputField.types';
175
+
176
+ export { SubTabs, normalizeSubTabValue } from './components/SubTabs/SubTabs';
177
+ export type {
178
+ SubTabsProps,
179
+ SubTabsOption,
180
+ SubTabsVariant,
181
+ SubTabsColor,
182
+ SubTabsSize,
183
+ } from './components/SubTabs/SubTabs.types';
184
+
185
+ export { Toast, ToastProvider, useToastDS } from './components/Toast/Toast';
186
+ export type {
187
+ ToastProps,
188
+ ToastVariant,
189
+ ToastPosition,
190
+ ToastContainerProps,
191
+ ToastContextValue,
192
+ } from './components/Toast/Toast.types';
193
+
194
+ // Icons
195
+ export * from './icons';
196
+
197
+ // Tokens
198
+ export * from './tokens';
199
+
200
+ // ThemeProvider (mode + brand → getTokens)
201
+ export {
202
+ DesignSystemThemeProvider,
203
+ useTokens,
204
+ ThemeContext,
205
+ type ThemeContextValue,
206
+ type DesignSystemThemeProviderProps,
207
+ } from './ThemeProvider';
208
+
209
+ // Themes (token-only; no MUI)
210
+ export * from './themes/firebird';
211
+ export * from './themes/cpc';
212
+
213
+ // Legacy theme export (resolved tokens; no MUI)
214
+ export * from './theme';
@@ -0,0 +1,64 @@
1
+ import React from "react";
2
+ import type { Preview } from "@storybook/react";
3
+ import { DesignSystemThemeProvider } from "../ThemeProvider";
4
+ import type { BrandKey, ThemeMode } from "../tokens";
5
+
6
+ const preview: Preview = {
7
+ parameters: {
8
+ controls: {
9
+ matchers: {
10
+ color: /(background|color)$/i,
11
+ date: /Date$/i,
12
+ },
13
+ },
14
+ backgrounds: {
15
+ default: "light",
16
+ values: [
17
+ { name: "light", value: "#FFFFFF" },
18
+ { name: "dark", value: "#111827" },
19
+ { name: "gray", value: "#F3F4F6" },
20
+ ],
21
+ },
22
+ },
23
+ globalTypes: {
24
+ brand: {
25
+ name: "Brand",
26
+ description: "Design system brand (firebird / cpc)",
27
+ defaultValue: "cpc",
28
+ toolbar: {
29
+ icon: "paintbrush",
30
+ items: [
31
+ { value: "firebird", title: "Firebird" },
32
+ { value: "cpc", title: "CPC" },
33
+ ],
34
+ },
35
+ },
36
+ mode: {
37
+ name: "Mode",
38
+ description: "Light / dark theme",
39
+ defaultValue: "light",
40
+ toolbar: {
41
+ icon: "circlehollow",
42
+ items: [
43
+ { value: "light", title: "Light" },
44
+ { value: "dark", title: "Dark" },
45
+ ],
46
+ },
47
+ },
48
+ },
49
+ decorators: [
50
+ (Story, context) => {
51
+ const brand = (context.globals?.brand as BrandKey) ?? "cpc";
52
+ const mode = (context.globals?.mode as ThemeMode) ?? "light";
53
+ return (
54
+ <DesignSystemThemeProvider brand={brand} mode={mode}>
55
+ <div style={{ fontFamily: "system-ui, sans-serif" }}>
56
+ <Story />
57
+ </div>
58
+ </DesignSystemThemeProvider>
59
+ );
60
+ },
61
+ ],
62
+ };
63
+
64
+ export default preview;
@@ -0,0 +1,4 @@
1
+ import { getTokens } from "../tokens";
2
+
3
+ /** Legacy theme export – resolved tokens (CPC light). No MUI. Use DesignSystemThemeProvider + useTokens() in app. */
4
+ export const theme = getTokens({ brand: "cpc", mode: "light" });
@@ -0,0 +1 @@
1
+ /** Design system theme types. Theme is token-based (ResolvedTokens); no MUI theme. */
@@ -0,0 +1,4 @@
1
+ import { getTokens } from "../tokens";
2
+
3
+ /** CPC brand theme (light mode). Resolved tokens only – no MUI. Use DesignSystemThemeProvider for context. */
4
+ export const cpcTheme = getTokens({ brand: "cpc", mode: "light" });
@@ -0,0 +1,4 @@
1
+ import { getTokens } from "../tokens";
2
+
3
+ /** Firebird brand theme (light mode). Resolved tokens only – no MUI. Use DesignSystemThemeProvider for context. */
4
+ export const firebirdTheme = getTokens({ brand: "firebird", mode: "light" });
@@ -0,0 +1,82 @@
1
+ {
2
+ "color": {
3
+ "primary": {
4
+ "default": "{colors.yellow.1000}",
5
+ "hover": "{colors.yellow.1100}",
6
+ "active": "{colors.yellow.800}"
7
+ },
8
+ "border": {
9
+ "transparent": "{colors.transparent}",
10
+ "default": "{colors.gray.850}",
11
+ "active": "{colors.gray.650}",
12
+ "disabled": "{colors.gray.600}",
13
+ "closeButton": "{colors.white}",
14
+ "radioActive": "{colors.white}",
15
+ "tableHeaderPartition": "{colors.white}",
16
+ "tableBorder": "{colors.gray.1100}"
17
+ },
18
+ "background": {
19
+ "default": "{colors.gray.1100}",
20
+ "secondary": "{colors.gray.800}",
21
+ "tertiary": "{colors.gray.700}",
22
+ "disabled": "{colors.gray.600}",
23
+ "badge": "{colors.gray.850}",
24
+ "warm": "{colors.gray.1500}",
25
+ "chip": "{colors.gray.850}",
26
+ "checkbox": "{colors.gray.1200}",
27
+ "closeButton": "{colors.gray.1400}",
28
+ "dropdown": "{colors.gray.1100}",
29
+ "filterpopover": "{colors.gray.850}",
30
+ "tabsBackground": "{colors.gray.850}",
31
+ "tableHeader": "{colors.gray.750}",
32
+ "tableRow": "{colors.gray.1100}",
33
+ "tableRowStripe": "{colors.gray.850}",
34
+ "tableRowHover": "{colors.gray.1500}",
35
+ "modalHeader": "{colors.gray.1500}",
36
+ "selectBox": "{colors.gray.850}"
37
+ },
38
+ "text": {
39
+ "primary": "{colors.white}",
40
+ "secondary": "{colors.white}",
41
+ "tertiary": "{colors.white}",
42
+ "disabled": "{colors.gray.500}",
43
+ "inverse": "{colors.white}",
44
+ "fileupload": "{colors.white}",
45
+ "badge": "{colors.white}",
46
+ "description": "{colors.white}",
47
+ "cross": "{colors.gray.850}",
48
+ "tableHeader": "{colors.white}"
49
+ },
50
+ "neutral": {
51
+ "default": "{colors.gray.1200}",
52
+ "hover": "{colors.gray.1300}"
53
+ },
54
+ "checkbox": {
55
+ "color": {
56
+ "active": "{colors.yellow.1000}",
57
+ "inactive": "{colors.gray.1200}"
58
+ }
59
+ },
60
+ "radio": {
61
+ "color": {
62
+ "active": "{colors.white}",
63
+ "inactive": "{colors.white}",
64
+ "dot": "{colors.white}"
65
+ },
66
+ "label": {
67
+ "color": {
68
+ "active": "{colors.white}",
69
+ "inactive": "{colors.white}"
70
+ }
71
+ },
72
+ "background": "{colors.transparent}"
73
+ },
74
+ "badge": {
75
+ "background": "{colors.gray.1100}"
76
+ },
77
+ "icon": {
78
+ "default": "{colors.white}",
79
+ "caption": "{colors.white}"
80
+ }
81
+ }
82
+ }
@@ -0,0 +1,20 @@
1
+ {
2
+ "brand": {
3
+ "color": {
4
+ "primary": {
5
+ "default": "{colors.gray.600}",
6
+ "hover": "{colors.gray.700}",
7
+ "active": "{colors.gray.800}"
8
+ },
9
+ "background": {
10
+ "default": "{colors.white}"
11
+ },
12
+ "border": {
13
+ "default": "#C4C4C4",
14
+ "active": "{colors.gray.600}",
15
+ "error": "{colors.red.700}",
16
+ "disabled": "{colors.gray.200}"
17
+ }
18
+ }
19
+ }
20
+ }