Skip to content

Commit 05bde49

Browse files
brenoliradevtulup-connerrluders
authored
feat(/lib/theme): add Tailwind CSS colors to <Alert>s (#586)
* feat(more colors to alert component): adds more possible colors to alert component (issue #473) #473 re #473 * feat(add more colors and check contrast): added gray and light + update dark add "gray" and "light" to add support to all FlowbiteColors re #473 * fix(linter): linter linter * fix(use flowbitecolors): changes AlertColors extends FlowbiteColors to just FlowbiteColors Since AlertColors now implement all colors from FlowbiteColors I had replaced it * docs(alert.stories.tsx): inline-radio with all FlowbiteColors on storybook * fix(/components/alert/alert.tsx): reverts "pink" default color to "info" * revert(/lib/theme): undo remove from `Alert` theme This was a mistake I made while merging their PR manually. * chore(/lib/components/alert): fix story refers to old theme --------- Co-authored-by: Conner Davis <conner@tulup.io> Co-authored-by: Ricardo Lüders <ricardo@luders.com.br>
1 parent 2f46d90 commit 05bde49

File tree

3 files changed

+39
-7
lines changed

3 files changed

+39
-7
lines changed

src/lib/components/Alert/Alert.stories.tsx

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,18 @@
11
import type { Meta, Story } from '@storybook/react/types-6-0';
22
import { HiEye, HiInformationCircle } from 'react-icons/hi';
3+
import theme from '../../theme/default';
34
import type { AlertProps } from './Alert';
45
import { Alert } from './Alert';
56

67
export default {
78
title: 'Components/Alert',
89
component: Alert,
10+
argTypes: {
11+
color: {
12+
options: Object.keys(theme.alert.color),
13+
control: { type: 'inline-radio' },
14+
},
15+
},
916
} as Meta;
1017

1118
const Template: Story<AlertProps> = (props) => <Alert {...props} />;

src/lib/components/Alert/Alert.tsx

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,25 +10,21 @@ export interface FlowbiteAlertTheme {
1010
base: string;
1111
borderAccent: string;
1212
closeButton: FlowbiteAlertCloseButtonTheme;
13-
color: AlertColors;
13+
color: FlowbiteColors;
1414
icon: string;
1515
rounded: string;
1616
wrapper: string;
1717
}
1818

1919
export interface FlowbiteAlertCloseButtonTheme {
2020
base: string;
21-
color: AlertColors;
21+
color: FlowbiteColors;
2222
icon: string;
2323
}
2424

25-
export interface AlertColors extends Pick<FlowbiteColors, 'failure' | 'gray' | 'info' | 'success' | 'warning'> {
26-
[key: string]: string;
27-
}
28-
2925
export interface AlertProps extends PropsWithChildren<Omit<ComponentProps<'div'>, 'color'>> {
3026
additionalContent?: ReactNode;
31-
color?: keyof AlertColors;
27+
color?: keyof FlowbiteColors;
3228
icon?: FC<ComponentProps<'svg'>>;
3329
onDismiss?: boolean | (() => void);
3430
rounded?: boolean;

src/lib/theme/default.ts

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,23 @@ const theme: FlowbiteTheme = {
4747
'bg-green-100 text-green-500 hover:bg-green-200 focus:ring-green-400 dark:bg-green-200 dark:text-green-600 dark:hover:bg-green-300',
4848
warning:
4949
'bg-yellow-100 text-yellow-500 hover:bg-yellow-200 focus:ring-yellow-400 dark:bg-yellow-200 dark:text-yellow-600 dark:hover:bg-yellow-300',
50+
red: 'bg-red-100 text-red-500 hover:bg-red-200 focus:ring-red-400 dark:bg-red-200 dark:text-red-600 dark:hover:bg-red-300',
51+
green:
52+
'bg-green-100 text-green-500 hover:bg-green-200 focus:ring-green-400 dark:bg-green-200 dark:text-green-600 dark:hover:bg-green-300',
53+
yellow:
54+
'bg-yellow-100 text-yellow-500 hover:bg-yellow-200 focus:ring-yellow-400 dark:bg-yellow-200 dark:text-yellow-600 dark:hover:bg-yellow-300',
55+
blue: 'bg-blue-100 text-blue-500 hover:bg-blue-200 focus:ring-blue-400 dark:bg-blue-200 dark:text-blue-600 dark:hover:bg-blue-300',
56+
cyan: 'bg-cyan-100 text-cyan-500 hover:bg-cyan-200 focus:ring-cyan-400 dark:bg-cyan-200 dark:text-cyan-600 dark:hover:bg-cyan-300',
57+
pink: 'bg-pink-100 text-pink-500 hover:bg-pink-200 focus:ring-pink-400 dark:bg-pink-200 dark:text-pink-600 dark:hover:bg-pink-300',
58+
lime: 'bg-lime-100 text-lime-500 hover:bg-lime-200 focus:ring-lime-400 dark:bg-lime-200 dark:text-lime-600 dark:hover:bg-lime-300',
59+
dark: 'bg-gray-100 text-gray-500 hover:bg-gray-200 focus:ring-gray-400 dark:bg-gray-200 dark:text-gray-600 dark:hover:bg-gray-300',
60+
indigo:
61+
'bg-indigo-100 text-indigo-500 hover:bg-indigo-200 focus:ring-indigo-400 dark:bg-indigo-200 dark:text-indigo-600 dark:hover:bg-indigo-300',
62+
purple:
63+
'bg-purple-100 text-purple-500 hover:bg-purple-200 focus:ring-purple-400 dark:bg-purple-200 dark:text-purple-600 dark:hover:bg-purple-300',
64+
teal: 'bg-teal-100 text-teal-500 hover:bg-teal-200 focus:ring-teal-400 dark:bg-teal-200 dark:text-teal-600 dark:hover:bg-teal-300',
65+
light:
66+
'bg-gray-50 text-gray-500 hover:bg-gray-100 focus:ring-gray-200 dark:bg-gray-600 dark:text-gray-200 dark:hover:bg-gray-700 dark:hover:text-white',
5067
},
5168
},
5269
color: {
@@ -55,6 +72,18 @@ const theme: FlowbiteTheme = {
5572
failure: 'text-red-700 bg-red-100 border-red-500 dark:bg-red-200 dark:text-red-800',
5673
success: 'text-green-700 bg-green-100 border-green-500 dark:bg-green-200 dark:text-green-800',
5774
warning: 'text-yellow-700 bg-yellow-100 border-yellow-500 dark:bg-yellow-200 dark:text-yellow-800',
75+
red: 'text-red-700 bg-red-100 border-red-500 dark:bg-red-200 dark:text-red-800',
76+
green: 'text-green-700 bg-green-100 border-green-500 dark:bg-green-200 dark:text-green-800',
77+
yellow: 'text-yellow-700 bg-yellow-100 border-yellow-500 dark:bg-yellow-200 dark:text-yellow-800',
78+
blue: 'text-blue-700 bg-blue-100 border-blue-500 dark:bg-blue-200 dark:text-blue-800',
79+
cyan: 'text-cyan-700 bg-cyan-100 border-cyan-500 dark:bg-cyan-200 dark:text-cyan-800',
80+
pink: 'text-pink-700 bg-pink-100 border-pink-500 dark:bg-pink-200 dark:text-pink-800',
81+
lime: 'text-lime-700 bg-lime-100 border-lime-500 dark:bg-lime-200 dark:text-lime-800',
82+
dark: 'text-gray-200 bg-gray-800 border-gray-600 dark:bg-gray-900 dark:text-gray-300',
83+
indigo: 'text-indigo-700 bg-indigo-100 border-indigo-500 dark:bg-indigo-200 dark:text-indigo-800',
84+
purple: 'text-purple-700 bg-purple-100 border-purple-500 dark:bg-purple-200 dark:text-purple-800',
85+
teal: 'text-teal-700 bg-teal-100 border-teal-500 dark:bg-teal-200 dark:text-teal-800',
86+
light: 'text-gray-600 bg-gray-50 border-gray-400 dark:bg-gray-500 dark:text-gray-200',
5887
},
5988
icon: 'mr-3 inline h-5 w-5 flex-shrink-0',
6089
rounded: 'rounded-lg',

0 commit comments

Comments
 (0)