Initial kitchen scaffold — Phase 1 kitchen port (build-verified 2026-07-11)
FastAPI backend (Python 3.11, MSSQL ODBC for SambaPOS, Azure DI OCR),
kitchen_db on central PG. React/TS/Vite frontend with navy sidebar layout.
Backend: auth.py (APP_SLUG=kitchen, SimpleNamespace — archive routes use
.kitchen_id/.is_admin without modification), main.py (51 migrations, scheduler,
internal router for KDS bookings feed), api/internal.py, full archive API
(31 routers: invoices, recipes, menus, sambapos, resos, newbook, disputes,
purchase_orders, etc.), models, migrations, OCR pipeline.
kitchen_id pinned to 1 (B1 — single hotel).
Frontend: AuthGate (app=kitchen, token shim for archive compat — B5b pending),
Layout (navy sidebar, 6 sections, Lucide icons, teal --app-primary),
App.tsx (Outlet pattern, UploadApp outside Layout), index.css (full :root block).
strict: false — archive components have type issues; build clean.
Note: 45 archive components call fetch('/api/...') without /kitchen/ prefix
(B5b). Runtime 404s; deferred until after initial testing.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
commit
8d688b459d
10003 changed files with 1928395 additions and 0 deletions
87
frontend/node_modules/chart.js/dist/elements/element.line.d.ts
generated
vendored
Normal file
87
frontend/node_modules/chart.js/dist/elements/element.line.d.ts
generated
vendored
Normal file
|
|
@ -0,0 +1,87 @@
|
|||
export default class LineElement extends Element<import("../types/basic.js").AnyObject, import("../types/basic.js").AnyObject> {
|
||||
static id: string;
|
||||
/**
|
||||
* @type {any}
|
||||
*/
|
||||
static defaults: any;
|
||||
static descriptors: {
|
||||
_scriptable: boolean;
|
||||
_indexable: (name: any) => boolean;
|
||||
};
|
||||
constructor(cfg: any);
|
||||
animated: boolean;
|
||||
options: any;
|
||||
_chart: any;
|
||||
_loop: any;
|
||||
_fullLoop: any;
|
||||
_path: any;
|
||||
_points: any;
|
||||
_segments: import("../helpers/helpers.segment.js").Segment[];
|
||||
_decimated: boolean;
|
||||
_pointsUpdated: boolean;
|
||||
_datasetIndex: any;
|
||||
updateControlPoints(chartArea: any, indexAxis: any): void;
|
||||
set points(arg: any);
|
||||
get points(): any;
|
||||
get segments(): import("../helpers/helpers.segment.js").Segment[];
|
||||
/**
|
||||
* First non-skipped point on this line
|
||||
* @returns {PointElement|undefined}
|
||||
*/
|
||||
first(): PointElement | undefined;
|
||||
/**
|
||||
* Last non-skipped point on this line
|
||||
* @returns {PointElement|undefined}
|
||||
*/
|
||||
last(): PointElement | undefined;
|
||||
/**
|
||||
* Interpolate a point in this line at the same value on `property` as
|
||||
* the reference `point` provided
|
||||
* @param {PointElement} point - the reference point
|
||||
* @param {string} property - the property to match on
|
||||
* @returns {PointElement|undefined}
|
||||
*/
|
||||
interpolate(point: PointElement, property: string): PointElement | undefined;
|
||||
/**
|
||||
* Append a segment of this line to current path.
|
||||
* @param {CanvasRenderingContext2D} ctx
|
||||
* @param {object} segment
|
||||
* @param {number} segment.start - start index of the segment, referring the points array
|
||||
* @param {number} segment.end - end index of the segment, referring the points array
|
||||
* @param {boolean} segment.loop - indicates that the segment is a loop
|
||||
* @param {object} params
|
||||
* @param {boolean} params.move - move to starting point (vs line to it)
|
||||
* @param {boolean} params.reverse - path the segment from end to start
|
||||
* @param {number} params.start - limit segment to points starting from `start` index
|
||||
* @param {number} params.end - limit segment to points ending at `start` + `count` index
|
||||
* @returns {undefined|boolean} - true if the segment is a full loop (path should be closed)
|
||||
*/
|
||||
pathSegment(ctx: CanvasRenderingContext2D, segment: {
|
||||
start: number;
|
||||
end: number;
|
||||
loop: boolean;
|
||||
}, params: {
|
||||
move: boolean;
|
||||
reverse: boolean;
|
||||
start: number;
|
||||
end: number;
|
||||
}): undefined | boolean;
|
||||
/**
|
||||
* Append all segments of this line to current path.
|
||||
* @param {CanvasRenderingContext2D|Path2D} ctx
|
||||
* @param {number} [start]
|
||||
* @param {number} [count]
|
||||
* @returns {undefined|boolean} - true if line is a full loop (path should be closed)
|
||||
*/
|
||||
path(ctx: CanvasRenderingContext2D | Path2D, start?: number, count?: number): undefined | boolean;
|
||||
/**
|
||||
* Draw
|
||||
* @param {CanvasRenderingContext2D} ctx
|
||||
* @param {object} chartArea
|
||||
* @param {number} [start]
|
||||
* @param {number} [count]
|
||||
*/
|
||||
draw(ctx: CanvasRenderingContext2D, chartArea: object, start?: number, count?: number): void;
|
||||
}
|
||||
export type PointElement = import('./element.point.js').default;
|
||||
import Element from "../core/core.element.js";
|
||||
Loading…
Add table
Add a link
Reference in a new issue