Skip to content

Commit

Permalink
Merge pull request #4 from RuiOkazaki/chore/TSK-26
Browse files Browse the repository at this point in the history
[TSK-26] tailwindのテーマ設定をした
  • Loading branch information
RuiOkazaki authored May 1, 2024
2 parents 1ee2082 + 8a9d705 commit 1661b32
Show file tree
Hide file tree
Showing 6 changed files with 190 additions and 55 deletions.
Binary file modified bun.lockb
Binary file not shown.
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
"dependencies": {
"@auth0/nextjs-auth0": "^3.5.0",
"@formkit/tempo": "^0.1.1",
"@radix-ui/react-slot": "^1.0.2",
"class-variance-authority": "^0.7.0",
"clsx": "^2.1.1",
"lucide-react": "^0.376.0",
Expand Down
108 changes: 54 additions & 54 deletions src/app/globals.css
Original file line number Diff line number Diff line change
@@ -1,76 +1,76 @@
@tailwind base;
@tailwind components;
@tailwind utilities;
@tailwind components;
@tailwind utilities;

@layer base {
:root {
--background: 0 0% 100%;
--foreground: 222.2 84% 4.9%;
@layer base {
:root {
--background: 0 0% 0%;
--foreground: 0 0% 100%;

--card: 0 0% 100%;
--card-foreground: 222.2 84% 4.9%;
--card: 0 0% 0%;
--card-foreground: 0 0% 100%;

--popover: 0 0% 100%;
--popover-foreground: 222.2 84% 4.9%;
--popover: 0 0% 0%;
--popover-foreground: 0 0% 100%;

--primary: 222.2 47.4% 11.2%;
--primary-foreground: 210 40% 98%;
--primary: 263.4 70% 50.4%;
--primary-foreground: 210 40% 98%;

--secondary: 210 40% 96.1%;
--secondary-foreground: 222.2 47.4% 11.2%;
--secondary: 210 40% 96.1%;
--secondary-foreground: 263.4 70% 50.4%;

--muted: 210 40% 96.1%;
--muted-foreground: 215.4 16.3% 46.9%;
--muted: 210 40% 96.1%;
--muted-foreground: 215.4 16.3% 46.9%;

--accent: 210 40% 96.1%;
--accent-foreground: 222.2 47.4% 11.2%;
--accent: 210 40% 96.1%;
--accent-foreground: 263.4 70% 50.4%;

--destructive: 0 84.2% 60.2%;
--destructive-foreground: 210 40% 98%;
--destructive: 0 84.2% 60.2%;
--destructive-foreground: 210 40% 98%;

--border: 214.3 31.8% 91.4%;
--input: 214.3 31.8% 91.4%;
--ring: 222.2 84% 4.9%;
--border: 214.3 31.8% 91.4%;
--input: 214.3 31.8% 91.4%;
--ring: 0 0% 100%;

--radius: 0.5rem;
}
--radius: 0.5rem;
}

.dark {
--background: 222.2 84% 4.9%;
--foreground: 210 40% 98%;
.dark {
--background: 0 0% 100%;
--foreground: 210 40% 98%;

--card: 222.2 84% 4.9%;
--card-foreground: 210 40% 98%;
--card: 0 0% 100%;
--card-foreground: 210 40% 98%;

--popover: 222.2 84% 4.9%;
--popover-foreground: 210 40% 98%;
--popover: 0 0% 100%;
--popover-foreground: 210 40% 98%;

--primary: 210 40% 98%;
--primary-foreground: 222.2 47.4% 11.2%;
--primary: 210 40% 98%;
--primary-foreground: 263.4 70% 50.4%;

--secondary: 217.2 32.6% 17.5%;
--secondary-foreground: 210 40% 98%;
--secondary: 217.2 32.6% 17.5%;
--secondary-foreground: 210 40% 98%;

--muted: 217.2 32.6% 17.5%;
--muted-foreground: 215 20.2% 65.1%;
--muted: 217.2 32.6% 17.5%;
--muted-foreground: 215 20.2% 65.1%;

--accent: 217.2 32.6% 17.5%;
--accent-foreground: 210 40% 98%;
--accent: 217.2 32.6% 17.5%;
--accent-foreground: 210 40% 98%;

--destructive: 0 62.8% 30.6%;
--destructive-foreground: 210 40% 98%;
--destructive: 0 62.8% 30.6%;
--destructive-foreground: 210 40% 98%;

--border: 217.2 32.6% 17.5%;
--input: 217.2 32.6% 17.5%;
--ring: 212.7 26.8% 83.9%;
}
--border: 217.2 32.6% 17.5%;
--input: 217.2 32.6% 17.5%;
--ring: 212.7 26.8% 83.9%;
}
}

@layer base {
* {
@apply border-border;
}
body {
@apply bg-background text-foreground;
}
}
@layer base {
* {
@apply border-border;
}
body {
@apply bg-background text-foreground;
}
}
8 changes: 7 additions & 1 deletion src/page/page.tsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
import { ProfileClient } from '@/feature/profile-client';
import { Button } from '@/shared/ui/button';
import { Typography } from '@/shared/ui/typography';
import { getSession } from '@auth0/nextjs-auth0';

export default async function Home() {
Expand All @@ -9,7 +11,9 @@ export default async function Home() {
<a href='/api/auth/login'>Login</a>
<a href='/api/auth/logout'>Logout</a>
<div className='w-fit bg-orange-400'>
<h2>client render</h2>
<Typography variant='heading-m' weight='bold'>
client render
</Typography>
<ProfileClient />
</div>
<div className='w-fit bg-violet-400'>
Expand All @@ -22,6 +26,8 @@ export default async function Home() {
</div>
)}
</div>

<Button>on click!</Button>
</main>
);
}
56 changes: 56 additions & 0 deletions src/shared/ui/button.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
import { Slot } from '@radix-ui/react-slot';
import { type VariantProps, cva } from 'class-variance-authority';
import * as React from 'react';

import { cn } from '@/shared/libs/shadcn/utils';

const buttonVariants = cva(
'inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50',
{
variants: {
variant: {
default: 'bg-primary text-primary-foreground hover:bg-primary/90',
destructive:
'bg-destructive text-destructive-foreground hover:bg-destructive/90',
outline:
'border border-input bg-background hover:bg-accent hover:text-accent-foreground',
secondary:
'bg-secondary text-secondary-foreground hover:bg-secondary/80',
ghost: 'hover:bg-accent hover:text-accent-foreground',
link: 'text-primary underline-offset-4 hover:underline',
},
size: {
default: 'h-10 px-4 py-2',
sm: 'h-9 rounded-md px-3',
lg: 'h-11 rounded-md px-8',
icon: 'h-10 w-10',
},
},
defaultVariants: {
variant: 'default',
size: 'default',
},
},
);

export interface ButtonProps
extends React.ButtonHTMLAttributes<HTMLButtonElement>,
VariantProps<typeof buttonVariants> {
asChild?: boolean;
}

const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(
({ className, variant, size, asChild = false, ...props }, ref) => {
const Comp = asChild ? Slot : 'button';
return (
<Comp
className={cn(buttonVariants({ variant, size, className }))}
ref={ref}
{...props}
/>
);
},
);
Button.displayName = 'Button';

export { Button, buttonVariants };
72 changes: 72 additions & 0 deletions src/shared/ui/typography.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
import { cn } from '@/shared/libs/shadcn/utils';
import { Slot } from '@radix-ui/react-slot';
import { type VariantProps, cva } from 'class-variance-authority';
import * as React from 'react';

const typographyVariants = cva('', {
variants: {
variant: {
'body-s': 'text-xs leading-normal',
'body-m': 'text-sm leading-normal',
'body-l': 'text-base leading-normal',
'heading-m': 'text-2xl leading-normal',
},
weight: {
normal: 'font-normal',
bold: 'font-bold',
},
},
defaultVariants: {
variant: 'body-m',
weight: 'normal',
},
});

type VariantPropType = VariantProps<typeof typographyVariants>;

const variantElementMap: Record<
NonNullable<VariantPropType['variant']>,
string
> = {
'body-s': 'p',
'body-m': 'p',
'body-l': 'p',
'heading-m': 'h2',
};

export interface TypographyProps
extends React.HTMLAttributes<HTMLElement>,
VariantProps<typeof typographyVariants> {
asChild?: boolean;
as?: string;
}

const Typography = React.forwardRef<HTMLElement, TypographyProps>(
({ className, variant, weight, as, asChild, ...props }, ref) => {
const Comp = asChild
? Slot
: as ?? (variant ? variantElementMap[variant] : undefined) ?? 'div';
return (
<Comp
className={cn(typographyVariants({ variant, weight, className }))}
ref={ref}
{...props}
/>
);
},
);

Typography.displayName = 'Typography';

export { Typography, typographyVariants };

type TypographyVariantType = NonNullable<
VariantProps<typeof typographyVariants>['variant']
>;

interface VariantPropsTypographyWithoutVariant
extends Omit<VariantProps<typeof typographyVariants>, 'variant'> {
asChild?: boolean;
}

export type { VariantPropsTypographyWithoutVariant, TypographyVariantType };

0 comments on commit 1661b32

Please sign in to comment.