—
로딩…
AI 에이전트가 웹 UI를 구현할 때 이 컴포넌트 가이드를 따른다.
모든 컴포넌트는 design-system.md의 CSS 변수를 사용한다.
.btn-primary {
background-color: var(--color-primary);
color: #fff;
border: none;
border-radius: var(--radius-md);
padding: var(--space-sm) var(--space-lg);
font-size: var(--font-size-base);
font-weight: 600;
cursor: pointer;
transition: background-color 0.2s;
}
.btn-primary:hover {
background-color: var(--color-primary-dark);
}
.btn-secondary {
background-color: transparent;
color: var(--color-primary);
border: 1px solid var(--color-primary);
border-radius: var(--radius-md);
padding: var(--space-sm) var(--space-lg);
font-size: var(--font-size-base);
font-weight: 600;
cursor: pointer;
transition: all 0.2s;
}
.btn-secondary:hover {
background-color: var(--color-primary-light);
}
| 크기 | padding | font-size |
|---|---|---|
| sm | 4px 12px | 0.875rem |
| md (기본) | 8px 24px | 1rem |
| lg | 12px 32px | 1.125rem |
.card {
background: var(--color-bg-white);
border: 1px solid var(--color-border);
border-radius: var(--radius-md);
padding: var(--space-lg);
box-shadow: var(--shadow-sm);
transition: box-shadow 0.2s;
}
.card:hover {
box-shadow: var(--shadow-md);
}
.card-title {
font-size: 1.25rem;
font-weight: 600;
color: var(--color-text-heading);
margin-bottom: var(--space-sm);
}
.card-body {
color: var(--color-text);
line-height: var(--line-height-base);
}
.input {
width: 100%;
padding: var(--space-sm) var(--space-md);
border: 1px solid var(--color-border);
border-radius: var(--radius-sm);
font-size: var(--font-size-base);
font-family: var(--font-family);
color: var(--color-text);
background: var(--color-bg-white);
transition: border-color 0.2s;
}
.input:focus {
outline: none;
border-color: var(--color-primary);
box-shadow: 0 0 0 3px var(--color-primary-light);
}
.input::placeholder {
color: var(--color-text-disabled);
}
.label {
display: block;
font-size: 0.875rem;
font-weight: 600;
color: var(--color-text);
margin-bottom: var(--space-xs);
}
.navbar {
display: flex;
align-items: center;
justify-content: space-between;
padding: var(--space-md) var(--space-xl);
background: var(--color-bg-white);
border-bottom: 1px solid var(--color-border);
max-width: var(--container-max);
margin: 0 auto;
}
.navbar-brand {
font-size: 1.25rem;
font-weight: 700;
color: var(--color-primary);
text-decoration: none;
}
.navbar-links a {
color: var(--color-text);
text-decoration: none;
margin-left: var(--space-lg);
font-weight: 500;
transition: color 0.2s;
}
.navbar-links a:hover {
color: var(--color-primary);
}
.table {
width: 100%;
border-collapse: collapse;
}
.table th {
text-align: left;
padding: var(--space-sm) var(--space-md);
background: var(--color-bg);
border-bottom: 2px solid var(--color-border);
font-weight: 600;
color: var(--color-text-heading);
}
.table td {
padding: var(--space-sm) var(--space-md);
border-bottom: 1px solid var(--color-border);
color: var(--color-text);
}
.table tr:hover {
background: var(--color-primary-light);
}
.alert {
padding: var(--space-md);
border-radius: var(--radius-sm);
margin-bottom: var(--space-md);
font-size: 0.875rem;
}
.alert-success { background: #d1e7dd; color: #0f5132; border: 1px solid #badbcc; }
.alert-warning { background: #fff3cd; color: #664d03; border: 1px solid #ffecb5; }
.alert-danger { background: #f8d7da; color: #842029; border: 1px solid #f5c2c7; }
.alert-info { background: #cff4fc; color: #055160; border: 1px solid #b6effb; }
.badge {
display: inline-block;
padding: 2px 8px;
border-radius: var(--radius-full, 9999px);
font-size: 0.75rem;
font-weight: 600;
}
.badge-primary { background: var(--color-primary-light); color: var(--color-primary); }
.badge-success { background: #d1e7dd; color: #0f5132; }
.badge-warning { background: #fff3cd; color: #664d03; }
.badge-danger { background: #f8d7da; color: #842029; }