- employee-dashboard: Headcount overview with stats - employee-detail: Full profile viewer - employee-directory: Searchable grid - org-chart: Hierarchy visualization - payroll-dashboard: Pay runs overview - payroll-detail: Single pay run breakdown - time-tracker: Time entries tracking - timesheet-approvals: Approval workflow - time-off-calendar: PTO calendar view - benefits-overview: Plans summary - benefits-enrollment: Enrollment details - ats-pipeline: Candidate kanban board - job-board: Open positions grid - candidate-detail: Individual candidate view - learning-dashboard: Course assignments - course-catalog: Available courses - device-inventory: Device tracker with filters - app-management: Installed apps overview - team-overview: Team structure - department-grid: Department breakdown All apps use dark theme (#0f172a/#1e293b), client-side state, and call Rippling MCP tools. Each app has App.tsx, index.html, main.tsx, vite.config.ts, and styles.css.
173 lines
2.5 KiB
CSS
173 lines
2.5 KiB
CSS
* { margin: 0; padding: 0; box-sizing: border-box; }
|
|
|
|
body {
|
|
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
|
|
background: #0f172a;
|
|
color: #e2e8f0;
|
|
}
|
|
|
|
.container {
|
|
max-width: 1200px;
|
|
margin: 0 auto;
|
|
padding: 2rem;
|
|
}
|
|
|
|
.header {
|
|
margin-bottom: 2rem;
|
|
}
|
|
|
|
.header h1 {
|
|
font-size: 2rem;
|
|
margin-bottom: 0.5rem;
|
|
color: #60a5fa;
|
|
}
|
|
|
|
.subtitle {
|
|
color: #94a3b8;
|
|
}
|
|
|
|
.search-bar {
|
|
display: flex;
|
|
gap: 1rem;
|
|
margin-bottom: 2rem;
|
|
}
|
|
|
|
.search-bar input {
|
|
flex: 1;
|
|
background: #1e293b;
|
|
border: 1px solid #334155;
|
|
color: #e2e8f0;
|
|
padding: 0.75rem 1rem;
|
|
border-radius: 8px;
|
|
font-size: 1rem;
|
|
}
|
|
|
|
.search-bar input:focus {
|
|
outline: none;
|
|
border-color: #60a5fa;
|
|
}
|
|
|
|
.search-bar button {
|
|
background: #60a5fa;
|
|
color: #0f172a;
|
|
border: none;
|
|
padding: 0.75rem 1.5rem;
|
|
border-radius: 8px;
|
|
font-weight: 600;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.search-bar button:hover:not(:disabled) {
|
|
background: #3b82f6;
|
|
}
|
|
|
|
.search-bar button:disabled {
|
|
opacity: 0.5;
|
|
cursor: not-allowed;
|
|
}
|
|
|
|
.error {
|
|
background: #7f1d1d;
|
|
color: #fca5a5;
|
|
padding: 1rem;
|
|
border-radius: 8px;
|
|
margin-bottom: 1rem;
|
|
}
|
|
|
|
.profile-container {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 2rem;
|
|
}
|
|
|
|
.profile-header {
|
|
display: flex;
|
|
gap: 1.5rem;
|
|
align-items: center;
|
|
background: #1e293b;
|
|
padding: 2rem;
|
|
border-radius: 8px;
|
|
}
|
|
|
|
.avatar {
|
|
width: 80px;
|
|
height: 80px;
|
|
border-radius: 50%;
|
|
background: #60a5fa;
|
|
color: #0f172a;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
font-size: 2rem;
|
|
font-weight: bold;
|
|
}
|
|
|
|
.profile-info h2 {
|
|
font-size: 1.75rem;
|
|
margin-bottom: 0.25rem;
|
|
}
|
|
|
|
.profile-title {
|
|
color: #94a3b8;
|
|
margin-bottom: 0.5rem;
|
|
}
|
|
|
|
.status-badge {
|
|
display: inline-block;
|
|
padding: 0.25rem 0.75rem;
|
|
border-radius: 12px;
|
|
font-size: 0.75rem;
|
|
font-weight: 600;
|
|
text-transform: uppercase;
|
|
}
|
|
|
|
.status-active {
|
|
background: #34d399;
|
|
color: #0f172a;
|
|
}
|
|
|
|
.status-inactive {
|
|
background: #64748b;
|
|
color: #0f172a;
|
|
}
|
|
|
|
.details-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
|
|
gap: 1.5rem;
|
|
}
|
|
|
|
.card {
|
|
background: #1e293b;
|
|
border-radius: 8px;
|
|
padding: 1.5rem;
|
|
border-left: 4px solid #60a5fa;
|
|
}
|
|
|
|
.card h3 {
|
|
color: #e2e8f0;
|
|
margin-bottom: 1rem;
|
|
font-size: 1.1rem;
|
|
}
|
|
|
|
.detail-item {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
padding: 0.75rem 0;
|
|
border-bottom: 1px solid #334155;
|
|
}
|
|
|
|
.detail-item:last-child {
|
|
border-bottom: none;
|
|
}
|
|
|
|
.label {
|
|
color: #94a3b8;
|
|
font-weight: 500;
|
|
}
|
|
|
|
.value {
|
|
color: #e2e8f0;
|
|
font-weight: 600;
|
|
}
|