diff --git a/src/renderer/Generics/redesign/SelectCard/SelectCard.tsx b/src/renderer/Generics/redesign/SelectCard/SelectCard.tsx new file mode 100644 index 000000000..15b99fc78 --- /dev/null +++ b/src/renderer/Generics/redesign/SelectCard/SelectCard.tsx @@ -0,0 +1,79 @@ +/* eslint-disable jsx-a11y/click-events-have-key-events */ +import { NodeIconId } from 'renderer/assets/images/nodeIcons'; +import { NodeIcon } from '../NodeIcon'; +import { Tag } from '../Tag'; +import { + container, + descriptionStyle, + selectedContainer, + tagStyle, + textContainer, + titleStyle, +} from './selectCard.css'; + +export interface SelectCardProps { + /** + * Node title + */ + title: string; + /** + * Node info + */ + info?: string; + /** + * Which icon? // TODO: Change this to drop down eventually + */ + iconId: NodeIconId; + /** + * Is this selected + */ + isSelected?: boolean; + /** + * Is this a minority client? + */ + minority?: boolean; + /** + * Optional click handler + */ + onClick?: () => void; +} + +/** + * Primary UI component for user interaction + */ +const SelectCard = ({ + onClick, + title, + info, + iconId, + minority = false, + isSelected, +}: SelectCardProps) => { + const containerStyles = [container]; + if (isSelected) { + containerStyles.push(selectedContainer); + } + return ( +
{ + if (onClick) { + onClick(); + } + }} + > + +
+ {/* TODO: Fix height to 60px */} +
{title}
+
{info}
+
+ {minority && ( +
+ {' '} +
+ )} +
+ ); +}; +export default SelectCard; diff --git a/src/renderer/Generics/redesign/SelectCard/selectCard.css.ts b/src/renderer/Generics/redesign/SelectCard/selectCard.css.ts new file mode 100644 index 000000000..9d3942ef1 --- /dev/null +++ b/src/renderer/Generics/redesign/SelectCard/selectCard.css.ts @@ -0,0 +1,58 @@ +import { style } from '@vanilla-extract/css'; +import { vars } from '../theme.css'; + +export const container = style({ + margin: 5, + cursor: 'pointer', + width: 400, + display: 'flex', + flexDirection: 'row', + alignItems: 'center', + padding: '10px 12px', + gap: '12px', + borderRadius: '5px', + boxShadow: "inset 0px 0px 0px 4px rgba(255, 255, 255, 0.08)", + background: vars.color.background96, + ":hover": { background: vars.color.background92 } +}); + +export const selectedContainer = style({ + border: "2px solid #7a64ee", + background: vars.components.selectCardBackground, + ":hover": { background: vars.components.selectCardBackground } +}); + +export const textContainer = style({ + display: 'flex', + flexDirection: 'column', + alignItems: 'flex-start', + padding: '0px', + gap: '2px', + height: '100%', + justifyContent: 'center', + flex: 'none', + order: 0, + flexGrow: 0, +}); + +export const titleStyle = style({ + order: 0, + flex: 'none', + alignSelf: 'stretch', + flexGrow: 0, + fontWeight: 600, + // color: 'rgba(0, 0, 2, 0.85)', +}); + +export const descriptionStyle = style({ + order: 1, + flex: 'none', + alignSelf: 'stretch', + flexGrow: 0, + fontWeight: 400, + color: vars.color.font70, +}); + +export const tagStyle = style({ + marginLeft: 'auto' +}); diff --git a/src/renderer/Generics/redesign/theme.css.ts b/src/renderer/Generics/redesign/theme.css.ts index a7d6d1167..10bf419f9 100644 --- a/src/renderer/Generics/redesign/theme.css.ts +++ b/src/renderer/Generics/redesign/theme.css.ts @@ -32,6 +32,7 @@ export const [lightTheme, vars] = createTheme({ }, components: { buttonBoxShadow: '0px 1px 2px rgba(0, 0, 0, 0.08)', + selectCardBackground: 'rgba(115, 81, 235, 0.08)', }, }); @@ -56,5 +57,6 @@ export const darkTheme = createTheme(vars, { }, components: { buttonBoxShadow: '0px 1px 2px rgba(0, 0, 0, 0.24)', + selectCardBackground: 'rgba(130, 103, 239, 0.08)', }, }); diff --git a/src/stories/SelectCard.stories.tsx b/src/stories/SelectCard.stories.tsx index 7156ae885..21a60dfd7 100644 --- a/src/stories/SelectCard.stories.tsx +++ b/src/stories/SelectCard.stories.tsx @@ -1,7 +1,8 @@ import { ComponentStory, ComponentMeta } from '@storybook/react'; import { NodeIconId } from '../renderer/assets/images/nodeIcons'; -import { SelectCard } from '../renderer/Generics/redesign/SelectCard'; +import { SelectCard as OldSelectCard } from '../renderer/Generics/redesign/SelectCard'; +import SelectCard from '../renderer/Generics/redesign/SelectCard/SelectCard'; // More on default export: https://storybook.js.org/docs/react/writing-stories/introduction#default-export export default { @@ -75,7 +76,7 @@ const NetworksTemplate: ComponentStory = (args) => ( {networksCards.map((obj) => { const darkMode = args.darkMode; const { iconId, ...rest } = obj - return ; + return ; })} );