スキル一覧に戻る
ruchernchong

design-language-system

by ruchernchong

Portfolio built with Contentlayer, Next.js, Tailwind CSS Typescript (T3 Stack), and deployed through Vercel

8🍴 2📅 2026年1月8日
GitHubで見るManusで実行

SKILL.md


name: design-language-system description: Maintains visual consistency across portfolio UI components. Use when creating or modifying components, styling pages, or ensuring design consistency. Includes coral colour tokens (OKLCH), typography scale, spacing rules, animations, and component patterns.

Design Language System

Use this guide when creating or modifying UI components to ensure visual consistency across the portfolio.


Colour Tokens

Base Palette

TokenOKLCHHexUsage
--backgroundoklch(0.985 0.005 90)#FAF9F7Page background (warm paper white)
--foregroundoklch(0.15 0.01 270)#1F1F23Primary text (deep charcoal)
--cardoklch(1 0 0)#FFFFFFCard backgrounds
--card-foregroundoklch(0.15 0.01 270)#1F1F23Card text
--mutedoklch(0.96 0.005 90)#F3F2F0Muted backgrounds
--muted-foregroundoklch(0.45 0.01 270)#6B6B73Secondary text
--borderoklch(0.90 0.005 90)#E5E4E2Borders

Coral Accent (Primary)

TokenOKLCHHexUsage
--primaryoklch(0.60 0.18 25)#E07356Primary buttons, links, accents
--primary-foregroundoklch(0.98 0.01 25)#FDF8F7Text on primary
--ringoklch(0.70 0.15 25)#EBA08AFocus rings, hover glows

Typography

Fonts

  • Sans (Body): Figtree via --font-sans
  • Mono (Code): Geist Mono via --font-mono

Scale

VariantClassUsage
h1text-5xl font-bold tracking-tightPage titles
h2text-3xl font-semibold tracking-tightSection headings
h3text-xl font-semiboldCard titles
body-lgtext-lg leading-relaxedIntroductions, emphasis
bodytext-baseDefault body text
body-smtext-smSecondary content
captiontext-sm text-muted-foregroundMetadata, dates
labeltext-xs font-medium uppercase tracking-widerLabels, categories

Heading Styles

  • Letter-spacing: -0.03em on h1, h2
  • Use tracking-tight class
  • Colour: text-foreground

Spacing

Rules

  • Use gap-* utilities for spacing between elements
  • Avoid margin-top, prefer margin-bottom or gap
  • Use even numbers only: gap-2, gap-4, gap-6, gap-8, gap-12
  • Use gap-* instead of gap-x-*/gap-y-* (cleaner, same behaviour in flex containers)

Spacing Scale (Even Numbers Only)

GapSizePurpose
gap-28pxMicro: icons + text, badges, inline elements
gap-416pxStandard: card content, grids, forms
gap-624pxSection: between related components
gap-832pxMacro: major page divisions, section separators
gap-1248pxPage: hero to content transitions

Guidelines

  • Default to gap-4 when unsure
  • Icon + heading pairs: gap-2
  • Card internal content: gap-4
  • Section containers: gap-6 or gap-8

Background Effects (Moderate)

Gradient Orbs

.gradient-orb {
  position: fixed;
  border-radius: 50%;
  filter: blur(120px);
  opacity: 0.15;
  pointer-events: none;
}
  • Colour: bg-rose-400
  • Primary orb: 600px, top-right
  • Secondary orb: 500px, bottom-left (opacity * 0.7)

Noise Texture

.noise-overlay {
  opacity: 0.04;
  mix-blend-mode: overlay;
  background-image: url("data:image/svg+xml,...");
}

Animations

Priority: CSS First

Use CSS for all simple animations. Only use motion/react for scroll-triggered or complex sequenced animations.

CSS Specs

AnimationDurationEasingProperties
Hover states200msease-outAll transitions
Page transitions250mscubic-bezier(0.4, 0, 0.2, 1)Opacity, transform
Card hover200msease-outtranslateY(-2px), box-shadow
Button hover200msease-outscale(1.02), box-shadow

Hover Effects

  • Cards: hover:-translate-y-0.5 + coral glow shadow
  • Buttons: hover:scale-[1.02] + shadow lift
  • Links: Underline slides in from left via ::after
  • Icons: hover:scale-110 or subtle rotation

When to Use motion/react

  • Scroll-triggered animations (fade-in on scroll)
  • Complex multi-step sequences
  • Gesture-based interactions

Component Patterns

Cards

className="rounded-2xl border border-border bg-card p-6 shadow-sm
           transition-all duration-200 hover:-translate-y-0.5"
// Add coral glow on hover via inline style or CSS

Buttons

// Primary
className="rounded-full bg-primary text-primary-foreground px-6 py-3
           font-medium transition-all duration-200 hover:scale-[1.02] hover:shadow-lg"

// Outline
className="rounded-full border-2 border-primary text-primary px-6 py-3
           font-medium transition-all duration-200 hover:scale-[1.02]"

Badges

className="rounded-full bg-primary text-primary-foreground px-4 py-1.5
           font-medium text-sm transition-all duration-200 hover:-translate-y-0.5"
className="fixed top-0 left-0 z-50 w-full border-b border-border
           bg-background/90 backdrop-blur-lg px-8 py-3"

Component Rules

  1. NEVER modify components/ui/* (shadcn/ui primitives)
  2. Use composition via components/shared/ wrappers
  3. Styling changes go in CSS or wrapper components
  4. Use cn() utility for conditional classes
  5. Use CVA for component variants

Quick Reference

Coral Glow Shadow

style={{ boxShadow: `0 8px 30px -10px oklch(0.60 0.18 25 / 0.4)` }}
// Or use: shadow-[0_8px_30px_-10px_theme(colors.primary/0.4)]

Semantic Colours

  • Primary text: text-foreground
  • Secondary text: text-muted-foreground
  • Accent: text-primary
  • Backgrounds: bg-background, bg-card, bg-muted
  • Borders: border-border

スコア

総合スコア

75/100

リポジトリの品質指標に基づく評価

SKILL.md

SKILL.mdファイルが含まれている

+20
LICENSE

ライセンスが設定されている

+10
説明文

100文字以上の説明がある

+10
人気

GitHub Stars 100以上

0/15
最近の活動

3ヶ月以内に更新

+5
フォーク

10回以上フォークされている

0/5
Issue管理

オープンIssueが50未満

+5
言語

プログラミング言語が設定されている

+5
タグ

1つ以上のタグが設定されている

+5

レビュー

💬

レビュー機能は近日公開予定です