diff --git a/platforms/metagram/src/lib/fragments/Header/Header.stories.ts b/platforms/metagram/src/lib/fragments/Header/Header.stories.ts new file mode 100644 index 00000000..9cc56dfd --- /dev/null +++ b/platforms/metagram/src/lib/fragments/Header/Header.stories.ts @@ -0,0 +1,52 @@ +import type { ComponentProps } from "svelte"; +import Header from "./Header.svelte"; + +export default { + title: "Fragments/Header", + component: Header, + tags: ["autodocs"], + render: (args: { + Component: Header; + props: ComponentProps; + }) => ({ + Component: Header, + props: args, + }), +}; + +export const Primary = { + args: { + variant: "primary", + heading: "metagram", + callback: () => alert("clicked"), + }, +}; + +export const PrimaryWithNoFlash = { + args: { + variant: "primary", + heading: "messages", + }, +}; + +export const Secondary = { + args: { + variant: "secondary", + heading: "Account", + }, +}; + +export const SecondaryWithMenu = { + args: { + variant: "secondary", + heading: "Account", + callback: () => alert("menu clicked"), + }, +}; + +export const Tertiary = { + args: { + variant: "tertiary", + callback: () => alert("clicked"), + }, +}; diff --git a/platforms/metagram/src/lib/fragments/Header/Header.svelte b/platforms/metagram/src/lib/fragments/Header/Header.svelte new file mode 100644 index 00000000..3b117c81 --- /dev/null +++ b/platforms/metagram/src/lib/fragments/Header/Header.svelte @@ -0,0 +1,108 @@ + + +
+ + {#if variant !== 'primary'} + + {/if} + {#if variant !== 'tertiary'} +

+ {heading} +

+ {/if} +
+ {#if callback} + + {/if} +
+ + diff --git a/platforms/metagram/src/lib/fragments/index.ts b/platforms/metagram/src/lib/fragments/index.ts index 2cb98ace..bcdc5e5d 100644 --- a/platforms/metagram/src/lib/fragments/index.ts +++ b/platforms/metagram/src/lib/fragments/index.ts @@ -1,3 +1,4 @@ +export { default as Header } from "./Header/Header.svelte"; export { default as BottomNav } from './BottomNav/BottomNav.svelte'; export { default as SettingsNavigationButton } from './SettingsNavigationButton/SettingsNavigationButton.svelte'; export { default as MessageInput } from './MessageInput/MessageInput.svelte'; diff --git a/platforms/metagram/src/lib/ui/Button/Button.svelte b/platforms/metagram/src/lib/ui/Button/Button.svelte index 16af6025..ae962d7a 100644 --- a/platforms/metagram/src/lib/ui/Button/Button.svelte +++ b/platforms/metagram/src/lib/ui/Button/Button.svelte @@ -3,7 +3,7 @@ import type { HTMLButtonAttributes } from 'svelte/elements'; interface IButtonProps extends HTMLButtonAttributes { - variant?: 'primary' | 'secondary'; + variant?: 'primary' | 'danger'; isLoading?: boolean; callback?: () => Promise | void; blockingClick?: boolean; @@ -39,29 +39,13 @@ }; const variantClasses = { - primary: { - background: 'bg-grey', - text: 'text-black-800', - border: 'border border-black-400' - }, - secondary: { - background: 'bg-brand-burnt-orange', - text: 'text-white', - border: 'border border-brand-burnt-orange-600' - } + primary: { background: 'bg-grey', text: 'text-black-800' }, + danger: { background: 'bg-red-500', text: 'text-white' } }; const disabledVariantClasses = { - primary: { - background: 'bg-grey/50', - text: 'text-black-800/50', - border: 'border border-black-400/50' - }, - secondary: { - background: 'bg-brand-burnt-orange/50', - text: 'text-white/50', - border: 'border border-brand-burnt-orange-600/50' - } + primary: { background: 'bg-grey/50', text: 'text-black-800/50' }, + danger: { background: 'bg-red-500/50', text: 'text-white/50' } }; const sizeVariant = { @@ -80,9 +64,6 @@ text: disabled ? disabledVariantClasses[variant].text || variantClasses[variant].text : variantClasses[variant].text, - border: disabled - ? disabledVariantClasses[variant].border || variantClasses[variant].border - : variantClasses[variant].border, disabled: 'cursor-not-allowed' }); @@ -94,7 +75,6 @@ classes.common, classes.background, classes.text, - classes.border, disabled && classes.disabled, restProps.class ].join(' ') @@ -118,12 +98,12 @@ -