forked from cerc-io/snowballtools-base
Merge remote-tracking branch 'origin/andrehadianto/design-system-components' into andrehadianto/T-4869-toast
This commit is contained in:
@@ -7,7 +7,11 @@ import {
|
||||
} from './renders/checkbox';
|
||||
import { avatars, avatarsFallback } from './renders/avatar';
|
||||
import { renderBadges } from './renders/badge';
|
||||
import { renderButtonIcons, renderButtons } from './renders/button';
|
||||
import {
|
||||
renderButtonIcons,
|
||||
renderButtons,
|
||||
renderLinks,
|
||||
} from './renders/button';
|
||||
import {
|
||||
renderTabWithBadges,
|
||||
renderTabs,
|
||||
@@ -15,6 +19,11 @@ import {
|
||||
} from './renders/tabs';
|
||||
import { useToast } from 'components/shared/Toast/useToast';
|
||||
import { Button } from 'components/shared/Button';
|
||||
import {
|
||||
renderInlineNotificationWithDescriptions,
|
||||
renderInlineNotifications,
|
||||
} from './renders/inlineNotifications';
|
||||
import { renderInputs } from './renders/input';
|
||||
|
||||
const Page = () => {
|
||||
const { toast } = useToast();
|
||||
@@ -24,7 +33,7 @@ const Page = () => {
|
||||
|
||||
return (
|
||||
<div className="relative h-full min-h-full">
|
||||
<div className="flex flex-col items-center justify-center max-w-7xl mx-auto px-20 py-20">
|
||||
<div className="flex flex-col items-center justify-center container mx-auto px-20 py-20">
|
||||
<h1 className="text-4xl font-bold">Manual Storybook</h1>
|
||||
<p className="mt-4 text-lg text-center text-gray-500">
|
||||
Get started by editing{' '}
|
||||
@@ -44,6 +53,11 @@ const Page = () => {
|
||||
</div>
|
||||
{/* Button */}
|
||||
<div className="flex flex-col gap-10 items-center justify-between">
|
||||
<h1 className="text-2xl font-bold">Input</h1>
|
||||
<div className="flex w-full flex-col gap-10">{renderInputs()}</div>
|
||||
|
||||
<div className="w-full h border border-gray-200 px-20 my-10" />
|
||||
|
||||
<h1 className="text-2xl font-bold">Button</h1>
|
||||
<div className="flex flex-col gap-10">
|
||||
{renderButtons()}
|
||||
@@ -123,6 +137,29 @@ const Page = () => {
|
||||
<h1 className="text-2xl font-bold">Vertical Tabs</h1>
|
||||
{renderVerticalTabs()}
|
||||
</div>
|
||||
|
||||
<div className="w-full h border border-gray-200 px-20 my-10" />
|
||||
|
||||
{/* Inline notification */}
|
||||
<div className="flex flex-col gap-10 items-center justify-between">
|
||||
<h1 className="text-2xl font-bold">Inline Notification</h1>
|
||||
<div className="flex gap-1 flex-wrap">
|
||||
{renderInlineNotifications()}
|
||||
</div>
|
||||
<div className="flex gap-1 flex-wrap">
|
||||
{renderInlineNotificationWithDescriptions()}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div className="w-full h border border-gray-200 px-20 my-10" />
|
||||
|
||||
{/* Link */}
|
||||
<div className="flex flex-col gap-10 items-center justify-between">
|
||||
<h1 className="text-2xl font-bold">Link</h1>
|
||||
<div className="flex gap-4 items-center justify-center">
|
||||
{renderLinks()}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -47,3 +47,19 @@ export const renderButtonIcons = () => {
|
||||
</div>
|
||||
));
|
||||
};
|
||||
|
||||
export const renderLinks = () => {
|
||||
return ['link', 'link-emphasized', 'disabled'].map((variant) => (
|
||||
<Button
|
||||
variant={
|
||||
variant !== 'disabled' ? (variant as ButtonTheme['variant']) : 'link'
|
||||
}
|
||||
key={variant}
|
||||
leftIcon={<PlusIcon />}
|
||||
rightIcon={<PlusIcon />}
|
||||
disabled={variant === 'disabled'}
|
||||
>
|
||||
Link
|
||||
</Button>
|
||||
));
|
||||
};
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
import { InlineNotification } from 'components/shared/InlineNotification';
|
||||
import { InlineNotificationTheme } from 'components/shared/InlineNotification/InlineNotification.theme';
|
||||
import React from 'react';
|
||||
|
||||
const inlineNotificationVariants = [
|
||||
'info',
|
||||
'danger',
|
||||
'warning',
|
||||
'success',
|
||||
'generic',
|
||||
];
|
||||
const inlineNotificationSizes = ['md', 'sm'];
|
||||
|
||||
export const renderInlineNotifications = () => {
|
||||
return inlineNotificationVariants.map((variant) => (
|
||||
<div className="space-y-2" key={variant}>
|
||||
{inlineNotificationSizes.map((size) => (
|
||||
<InlineNotification
|
||||
size={size as InlineNotificationTheme['size']}
|
||||
variant={variant as InlineNotificationTheme['variant']}
|
||||
key={`${variant}-${size}`}
|
||||
title="Notification title goes here"
|
||||
/>
|
||||
))}
|
||||
</div>
|
||||
));
|
||||
};
|
||||
|
||||
export const renderInlineNotificationWithDescriptions = () => {
|
||||
return inlineNotificationVariants.map((variant) => (
|
||||
<div className="space-y-2" key={variant}>
|
||||
{inlineNotificationSizes.map((size) => (
|
||||
<InlineNotification
|
||||
size={size as InlineNotificationTheme['size']}
|
||||
variant={variant as InlineNotificationTheme['variant']}
|
||||
key={`${variant}-${size}`}
|
||||
title="Notification title goes here"
|
||||
description="Description goes here"
|
||||
/>
|
||||
))}
|
||||
</div>
|
||||
));
|
||||
};
|
||||
@@ -0,0 +1,57 @@
|
||||
import React from 'react';
|
||||
import { Input } from 'components/shared/Input';
|
||||
import { SearchIcon, CrossIcon } from 'components/shared/CustomIcon';
|
||||
|
||||
export const renderInputs = () => {
|
||||
return (
|
||||
<>
|
||||
<div className="flex w-full gap-10">
|
||||
<Input
|
||||
label="Label"
|
||||
description="Additional information or context"
|
||||
leftIcon={<SearchIcon />}
|
||||
rightIcon={<CrossIcon />}
|
||||
placeholder="Placeholder text"
|
||||
/>
|
||||
<Input
|
||||
disabled
|
||||
label="Label"
|
||||
description="Additional information or context"
|
||||
placeholder="Placeholder text"
|
||||
/>
|
||||
<Input
|
||||
state="error"
|
||||
label="Label"
|
||||
description="Additional information or context"
|
||||
placeholder="Placeholder text"
|
||||
helperText="The error goes here"
|
||||
/>
|
||||
</div>
|
||||
<div className="flex w-full gap-10">
|
||||
<Input
|
||||
label="Label"
|
||||
leftIcon={<SearchIcon />}
|
||||
rightIcon={<CrossIcon />}
|
||||
description="Additional information or context"
|
||||
placeholder="Placeholder text"
|
||||
size="sm"
|
||||
/>
|
||||
<Input
|
||||
disabled
|
||||
label="Label"
|
||||
description="Additional information or context"
|
||||
placeholder="Placeholder text"
|
||||
size="sm"
|
||||
/>
|
||||
<Input
|
||||
state="error"
|
||||
label="Label"
|
||||
description="Additional information or context"
|
||||
placeholder="Placeholder text"
|
||||
size="sm"
|
||||
helperText="The error goes here"
|
||||
/>
|
||||
</div>
|
||||
</>
|
||||
);
|
||||
};
|
||||
Reference in New Issue
Block a user