- Node/Express/TypeScript API under /api/v1 with JWT auth (login, refresh, logout, /me) - Prisma schema: vendors, users, roles, products, categories, taxes, transactions - SQLite for local dev; Postgres via docker-compose for production - Full CRUD routes for vendors, users, categories, taxes, products with Zod validation and RBAC - Paginated list endpoints scoped per vendor; refresh token rotation - React/TypeScript admin SPA (Vite): login, protected routing, sidebar layout - Pages: Dashboard, Catalog (tabbed Products/Categories/Taxes), Users, Vendor Settings - Shared UI: Table, Modal, FormField, Btn, PageHeader components - Multi-stage Dockerfile; docker-compose with Postgres healthcheck - Seed script with demo vendor and owner account - INSTRUCTIONS.md, ROADMAP.md, .claude/launch.json for dev server config Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
32 lines
1.6 KiB
TypeScript
32 lines
1.6 KiB
TypeScript
import * as React from "react";
|
|
import type { Router as RemixRouter, StaticHandlerContext, CreateStaticHandlerOptions as RouterCreateStaticHandlerOptions, FutureConfig as RouterFutureConfig } from "@remix-run/router";
|
|
import type { FutureConfig, Location, RouteObject } from "react-router-dom";
|
|
export interface StaticRouterProps {
|
|
basename?: string;
|
|
children?: React.ReactNode;
|
|
location: Partial<Location> | string;
|
|
future?: Partial<FutureConfig>;
|
|
}
|
|
/**
|
|
* A `<Router>` that may not navigate to any other location. This is useful
|
|
* on the server where there is no stateful UI.
|
|
*/
|
|
export declare function StaticRouter({ basename, children, location: locationProp, future, }: StaticRouterProps): React.JSX.Element;
|
|
export { StaticHandlerContext };
|
|
export interface StaticRouterProviderProps {
|
|
context: StaticHandlerContext;
|
|
router: RemixRouter;
|
|
hydrate?: boolean;
|
|
nonce?: string;
|
|
}
|
|
/**
|
|
* A Data Router that may not navigate to any other location. This is useful
|
|
* on the server where there is no stateful UI.
|
|
*/
|
|
export declare function StaticRouterProvider({ context, router, hydrate, nonce, }: StaticRouterProviderProps): React.JSX.Element;
|
|
type CreateStaticHandlerOptions = Omit<RouterCreateStaticHandlerOptions, "detectErrorBoundary" | "mapRouteProperties">;
|
|
export declare function createStaticHandler(routes: RouteObject[], opts?: CreateStaticHandlerOptions): import("@remix-run/router").StaticHandler;
|
|
export declare function createStaticRouter(routes: RouteObject[], context: StaticHandlerContext, opts?: {
|
|
future?: Partial<Pick<RouterFutureConfig, "v7_partialHydration" | "v7_relativeSplatPath">>;
|
|
}): RemixRouter;
|