hm-invoicesv1Dashboard.tsx2 matches
1/** @jsxImportSource https://esm.sh/react@18.2.0 */
23import React, { useState, useEffect } from "https://esm.sh/react@18.2.0";
4import { InvoiceStats } from "../../shared/types.ts";
5
hm-invoicesv1InvoiceList.tsx2 matches
1/** @jsxImportSource https://esm.sh/react@18.2.0 */
23import React, { useState, useMemo } from "https://esm.sh/react@18.2.0";
4import { InvoiceWithVendor, InvoiceStatus } from "../../shared/types.ts";
5import StatusBadge from "./StatusBadge.tsx";
hm-invoicesv1VAL-TOWN-RULES.md6 matches
149- **Imports:** Use `https://esm.sh` for npm and Deno dependencies to ensure compatibility on server and browser
150- **Storage Strategy:** Only use backend storage if explicitly required; prefer simple static client-side sites
151- **React Configuration:** When using React libraries, pin versions with `?deps=react@18.2.0,react-dom@18.2.0` and start the file with `/** @jsxImportSource https://esm.sh/react@18.2.0 */`
152- Ensure all React dependencies and sub-dependencies are pinned to the same version
153- **Styling:** Default to using TailwindCSS via `<script src="https://cdn.twind.style" crossorigin></script>` unless otherwise specified
154427- Always run table creation before querying
4284293. **React Configuration:**
430- All React dependencies must be pinned to 18.2.0
431- Always include `@jsxImportSource https://esm.sh/react@18.2.0` at the top of React files
432- Rendering issues often come from mismatched React versions
4334344. **File Handling:**
hm-invoicesv1StatusBadge.tsx2 matches
1/** @jsxImportSource https://esm.sh/react@18.2.0 */
23import React from "https://esm.sh/react@18.2.0";
4import { InvoiceStatus } from "../../shared/types.ts";
5
hm-invoicesv1index.tsx6 matches
1/** @jsxImportSource https://esm.sh/react@18.2.0 */
23import React from "https://esm.sh/react@18.2.0";
4import ReactDOM from "https://esm.sh/react-dom@18.2.0/client";
5import App from "./components/App.tsx";
67const root = ReactDOM.createRoot(document.getElementById("root"));
8root.render(
9<React.StrictMode>
10<App />
11</React.StrictMode>,
12);
hm-invoicesv1InvoiceForm.tsx3 matches
1/** @jsxImportSource https://esm.sh/react@18.2.0 */
23import React, { useState } from "https://esm.sh/react@18.2.0";
4import { Vendor, CreateInvoiceRequest, InvoiceType, DayOfWeek } from "../../shared/types.ts";
5import { CONFIG } from "../../shared/config.ts";
16const [invoiceDate, setInvoiceDate] = useState(new Date().toISOString().split("T")[0]);
1718const handleSubmit = (e: React.FormEvent) => {
19e.preventDefault();
20if (!vendorId) {
hm-invoicesv1db-tools.tsx3 matches
1/** @jsxImportSource https://esm.sh/react@18.2.0 */
2import React, { useState, useEffect } from "https://esm.sh/react@18.2.0";
3import {
4initializeDatabase,
83};
8485const handleCreateVendor = async (e: React.FormEvent) => {
86e.preventDefault();
87if (!newVendorName.trim()) return;
hm-invoicesv1db-viewer.tsx2 matches
1/** @jsxImportSource https://esm.sh/react@18.2.0 */
2import React, { useState, useEffect } from "https://esm.sh/react@18.2.0";
3import { sqlite } from "https://esm.town/v/std/sqlite";
4import { CONFIG } from '../shared/config.ts';
hm-invoicesv1val-town.mdc6 matches
154- **Imports:** Use `https://esm.sh` for npm and Deno dependencies to ensure compatibility on server and browser
155- **Storage Strategy:** Only use backend storage if explicitly required; prefer simple static client-side sites
156- **React Configuration:** When using React libraries, pin versions with `?deps=react@18.2.0,react-dom@18.2.0` and start the file with `/** @jsxImportSource https://esm.sh/react@18.2.0 */`
157- Ensure all React dependencies and sub-dependencies are pinned to the same version
158- **Styling:** Default to using TailwindCSS via `<script src="https://cdn.twind.style" crossorigin></script>` unless otherwise specified
159432- Always run table creation before querying
4334343. **React Configuration:**
435- All React dependencies must be pinned to 18.2.0
436- Always include `@jsxImportSource https://esm.sh/react@18.2.0` at the top of React files
437- Rendering issues often come from mismatched React versions
4384394. **File Handling:**
1011. **Frontend Setup**
102- Create `frontend/index.html` with TailwindCSS
103- Set up `frontend/index.tsx` as React entry point
104- Configure React with proper JSX imports
1051062. **Core Components**
116117### Deliverables:
118- Working React frontend with basic invoice display
119- Form for adding new invoices
120- Responsive layout with TailwindCSS
184- **Backend**: Hono.js for API routes
185- **Database**: SQLite with Val Town's sqlite service
186- **Frontend**: React 18.2.0 with TypeScript
187- **Styling**: TailwindCSS via CDN
188- **Utilities**: Val Town standard library utilities
2081. **Phase 1: Foundation & Database Setup** - Get the core database structure and admin tools working
2092. **Phase 2: Core Backend API** - Build the REST API endpoints for managing invoices and vendors
2103. **Phase 3: Frontend Foundation** - Create the basic React UI with invoice display and forms
2114. **Phase 4: Enhanced UI & Interactions** - Add advanced features like dashboard, filtering, and bulk operations
2125. **Phase 5: Polish & Optimization** - Add quality-of-life features, export/import, and performance improvements
224- SQLite database with proper schema and constraints
225- Hono.js backend with RESTful API design
226- React frontend with TailwindCSS for styling
227- Admin utilities for easy database management and seeding
2283101. **Frontend Setup**
311- Create `frontend/index.html` with TailwindCSS
312- Set up `frontend/index.tsx` as React entry point
313- Configure React with proper JSX imports
314315->
3171. **Frontend Setup**
318- Create `frontend/index.html` with DaisyUI and TailwindCSS
319- Set up `frontend/index.tsx` as React entry point
320- Configure React with proper JSX imports
321- Add `frontend/styles.css` with background styling
322```
324```markdown
325### Deliverables:
326- Working React frontend with basic invoice display
327- Form for adding new invoices
328- Responsive layout with TailwindCSS
331332### Deliverables:
333- Working React frontend with basic invoice display
334- Form for adding new invoices
335- Responsive layout with DaisyUI components and nord theme
355- **Backend**: Hono.js for API routes
356- **Database**: SQLite with Val Town's sqlite service
357- **Frontend**: React 18.2.0 with TypeScript
358- **Styling**: TailwindCSS via CDN
359- **Utilities**: Val Town standard library utilities
364- **Backend**: Hono.js for API routes
365- **Database**: SQLite with Val Town's sqlite service
366- **Frontend**: React 18.2.0 with TypeScript
367- **Styling**: DaisyUI + TailwindCSS with nord theme
368- **Icons**: Iconify v3 for consistent iconography