mcpengine/servers/gusto/src/ui/react-app/payroll-calendar.ts

38 lines
2.3 KiB
TypeScript

export const PAYROLL_CALENDAR_APP = {
id: 'payroll-calendar',
name: 'Payroll Calendar',
description: 'Calendar view of payroll schedule and upcoming deadlines',
html: `<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>Payroll Calendar</title>
<script crossorigin src="https://unpkg.com/react@18/umd/react.production.min.js"></script>
<script crossorigin src="https://unpkg.com/react-dom@18/umd/react-dom.production.min.js"></script>
<script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>
<style>* { margin: 0; padding: 0; box-sizing: border-box; }
body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; background: #f5f5f5; padding: 20px; }
.container { max-width: 1000px; margin: 0 auto; }
.header { background: white; padding: 24px; border-radius: 8px; margin-bottom: 24px; box-shadow: 0 1px 3px rgba(0,0,0,0.1); }
.calendar { background: white; padding: 24px; border-radius: 8px; box-shadow: 0 1px 3px rgba(0,0,0,0.1); }
.calendar-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 8px; margin-top: 16px; }
.day-header { text-align: center; font-weight: 600; padding: 8px; color: #666; }
.day { aspect-ratio: 1; border: 1px solid #eee; border-radius: 4px; padding: 8px; font-size: 14px; }
.day.has-payroll { background: #fff3e0; border-color: #ff6b35; }
.day-number { font-weight: 600; margin-bottom: 4px; }
.payroll-marker { font-size: 10px; color: #f57c00; }
</style></head><body><div id="root"></div>
<script type="text/babel">
function PayrollCalendar() {
const days = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
const payrollDates = [5, 20];
return (<div className="container"><div className="header"><h1>📅 Payroll Calendar</h1><p>January 2025 Payroll Schedule</p></div>
<div className="calendar"><div className="calendar-grid">{days.map(d => <div key={d} className="day-header">{d}</div>)}
{[...Array(31)].map((_, i) => {
const day = i + 1;
const hasPayroll = payrollDates.includes(day);
return (<div key={i} className={\`day \${hasPayroll ? 'has-payroll' : ''}\`}>
<div className="day-number">{day}</div>{hasPayroll && <div className="payroll-marker">💰 Payroll</div>}</div>);
})}</div></div></div>);
}
ReactDOM.render(<PayrollCalendar />, document.getElementById('root'));
</script></body></html>`,
};