feature/project-redesign #28
97
src/shared/ui/TechText/TechText.stories.svelte
Normal file
97
src/shared/ui/TechText/TechText.stories.svelte
Normal file
@@ -0,0 +1,97 @@
|
|||||||
|
<script module>
|
||||||
|
import { defineMeta } from '@storybook/addon-svelte-csf';
|
||||||
|
import TechText from './TechText.svelte';
|
||||||
|
|
||||||
|
const { Story } = defineMeta({
|
||||||
|
title: 'Shared/TechText',
|
||||||
|
component: TechText,
|
||||||
|
tags: ['autodocs'],
|
||||||
|
parameters: {
|
||||||
|
docs: {
|
||||||
|
description: {
|
||||||
|
component: 'Monospace <code> element for technical values, measurements, identifiers.',
|
||||||
|
},
|
||||||
|
story: { inline: false },
|
||||||
|
},
|
||||||
|
layout: 'centered',
|
||||||
|
},
|
||||||
|
argTypes: {
|
||||||
|
variant: {
|
||||||
|
control: 'select',
|
||||||
|
options: ['default', 'accent', 'muted', 'success', 'warning', 'error'],
|
||||||
|
description: 'Text variant',
|
||||||
|
defaultValue: 'muted',
|
||||||
|
},
|
||||||
|
size: {
|
||||||
|
control: 'select',
|
||||||
|
options: ['xs', 'sm', 'md'],
|
||||||
|
description: 'Text size',
|
||||||
|
defaultValue: 'sm',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<Story
|
||||||
|
name="Default variant"
|
||||||
|
args={{ variant: 'default', size: 'sm' }}
|
||||||
|
>
|
||||||
|
{#snippet template()}
|
||||||
|
<TechText variant="default" size="sm">0x1F4A9</TechText>
|
||||||
|
{/snippet}
|
||||||
|
</Story>
|
||||||
|
|
||||||
|
<Story
|
||||||
|
name="Accent variant"
|
||||||
|
args={{ variant: 'accent', size: 'sm' }}
|
||||||
|
>
|
||||||
|
{#snippet template()}
|
||||||
|
<TechText variant="accent" size="sm">0x1F4A9</TechText>
|
||||||
|
{/snippet}
|
||||||
|
</Story>
|
||||||
|
|
||||||
|
<Story
|
||||||
|
name="Muted variant"
|
||||||
|
args={{ variant: 'muted', size: 'sm' }}
|
||||||
|
>
|
||||||
|
{#snippet template()}
|
||||||
|
<TechText variant="muted" size="sm">0x1F4A9</TechText>
|
||||||
|
{/snippet}
|
||||||
|
</Story>
|
||||||
|
|
||||||
|
<Story
|
||||||
|
name="Success variant"
|
||||||
|
args={{ variant: 'success', size: 'sm' }}
|
||||||
|
>
|
||||||
|
{#snippet template()}
|
||||||
|
<TechText variant="success" size="sm">0x1F4A9</TechText>
|
||||||
|
{/snippet}
|
||||||
|
</Story>
|
||||||
|
|
||||||
|
<Story
|
||||||
|
name="Warning variant"
|
||||||
|
args={{ variant: 'warning', size: 'sm' }}
|
||||||
|
>
|
||||||
|
{#snippet template()}
|
||||||
|
<TechText variant="warning" size="sm">0x1F4A9</TechText>
|
||||||
|
{/snippet}
|
||||||
|
</Story>
|
||||||
|
|
||||||
|
<Story
|
||||||
|
name="Error variant"
|
||||||
|
args={{ variant: 'error', size: 'sm' }}
|
||||||
|
>
|
||||||
|
{#snippet template()}
|
||||||
|
<TechText variant="error" size="sm">0x1F4A9</TechText>
|
||||||
|
{/snippet}
|
||||||
|
</Story>
|
||||||
|
|
||||||
|
<Story name="All sizes">
|
||||||
|
{#snippet template()}
|
||||||
|
<div class="flex flex-col gap-2">
|
||||||
|
<TechText variant="default" size="xs">XS: font-family-16px</TechText>
|
||||||
|
<TechText variant="default" size="sm">SM: font-family-16px</TechText>
|
||||||
|
<TechText variant="default" size="md">MD: font-family-16px</TechText>
|
||||||
|
</div>
|
||||||
|
{/snippet}
|
||||||
|
</Story>
|
||||||
39
src/shared/ui/TechText/TechText.svelte
Normal file
39
src/shared/ui/TechText/TechText.svelte
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
<!--
|
||||||
|
Component: TechnicalText
|
||||||
|
Monospace <code> element for technical values, measurements, identifiers.
|
||||||
|
-->
|
||||||
|
<script lang="ts">
|
||||||
|
import { cn } from '$shared/shadcn/utils/shadcn-utils';
|
||||||
|
import {
|
||||||
|
type LabelSize,
|
||||||
|
type LabelVariant,
|
||||||
|
labelSizeConfig,
|
||||||
|
labelVariantConfig,
|
||||||
|
} from '$shared/ui/Label/config';
|
||||||
|
import type { Snippet } from 'svelte';
|
||||||
|
|
||||||
|
interface Props {
|
||||||
|
variant?: LabelVariant;
|
||||||
|
size?: LabelSize;
|
||||||
|
children?: Snippet;
|
||||||
|
class?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
let {
|
||||||
|
variant = 'muted',
|
||||||
|
size = 'sm',
|
||||||
|
children,
|
||||||
|
class: className,
|
||||||
|
}: Props = $props();
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<code
|
||||||
|
class={cn(
|
||||||
|
"font-['Space_Mono'] tracking-tight tabular-nums",
|
||||||
|
labelSizeConfig[size],
|
||||||
|
labelVariantConfig[variant],
|
||||||
|
className,
|
||||||
|
)}
|
||||||
|
>
|
||||||
|
{#if children}{@render children()}{/if}
|
||||||
|
</code>
|
||||||
Reference in New Issue
Block a user