Skip to content

Commit

Permalink
Merge branch 'main' into ListComponentContinuation
Browse files Browse the repository at this point in the history
  • Loading branch information
knownotunknown committed Feb 14, 2024
2 parents f957363 + fa1d737 commit 776cab9
Show file tree
Hide file tree
Showing 5 changed files with 128 additions and 10 deletions.
26 changes: 26 additions & 0 deletions .github/workflows/chromatic.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
name: "Chromatic"

on: [push, pull_request_target]

jobs:
chromatic:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup pnpm
uses: pnpm/action-setup@v3
with:
version: 8

- name: Install dependencies
run: pnpm install

- name: Publish to Chromatic
uses: chromaui/action@latest
with:
projectToken: ${{ secrets.CHROMATIC_PROJECT_TOKEN }}
exitZeroOnChanges: true
autoAcceptChanges: "main"
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@
"@unocss/transformer-directives": "^0.58.5",
"@unocss/transformer-variant-group": "^0.58.5",
"@vitejs/plugin-react-swc": "^3.6.0",
"chromatic": "^10.9.1",
"cssnano": "^6.0.3",
"cssnano-preset-advanced": "^6.0.3",
"dotenv": "^16.4.1",
Expand Down
27 changes: 17 additions & 10 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

48 changes: 48 additions & 0 deletions src/stories/components/CourseStatus.stories.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
import React from 'react';

import { Status } from '@shared/types/Course';
import { Meta, StoryObj } from '@storybook/react';
import CourseStatus from '@views/components/common/CourseStatus/CourseStatus';

const meta = {
title: 'Components/Common/CourseStatus',
component: CourseStatus,
parameters: {
layout: 'centered',
},
tags: ['autodocs'],
args: {
status: Status.WAITLISTED,
size: 'small',
},
argTypes: {
status: {
options: Object.values(Status),
mapping: Object.values(Status),
control: {
type: 'select',
labels: Object.keys(Status),
},
},
size: {
options: ['small', 'mini'],
control: {
type: 'radio',
},
},
},
} satisfies Meta<typeof CourseStatus>;
export default meta;

type Story = StoryObj<typeof meta>;

export const Default: Story = {};

export const Variants: Story = {
render: args => (
<div className='flex flex-col gap-4 items-center'>
<CourseStatus {...args} size='small' />
<CourseStatus {...args} size='mini' />
</div>
),
};
36 changes: 36 additions & 0 deletions src/views/components/common/CourseStatus/CourseStatus.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
import { Status } from '@shared/types/Course';
import { StatusIcon } from '@shared/util/icons';
import clsx from 'clsx';
import React from 'react';
import Text from '../Text/Text';

type SizeType = 'small' | 'mini';

/**
* Props for CourseStatus
*/
export interface CourseStatusProps {
status: Status;
size: SizeType;
}

/**
* The CourseStatus component as per the Labels and Details Figma section
*
* @param props CourseStatusProps
*/
export default function CourseStatus({ status, size }: CourseStatusProps): JSX.Element {
const statusIconSizeClass = clsx({
'h-5 w-5': size === 'small',
'h-4 w-4': size === 'mini',
});

return (
<div className={`inline-flex items-center ${size === 'small' ? 'gap-2' : 'gap-1.5'}`}>
<div className='ml-1 flex items-center justify-center rounded bg-slate-700 p-1px text-white'>
<StatusIcon status={status} className={statusIconSizeClass} />
</div>
<Text variant={size}>{status}</Text>
</div>
);
}

0 comments on commit 776cab9

Please sign in to comment.