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
67
frontend/node_modules/postcss/lib/processor.js
generated
vendored
Normal file
67
frontend/node_modules/postcss/lib/processor.js
generated
vendored
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
'use strict'
|
||||
|
||||
let Document = require('./document')
|
||||
let LazyResult = require('./lazy-result')
|
||||
let NoWorkResult = require('./no-work-result')
|
||||
let Root = require('./root')
|
||||
|
||||
class Processor {
|
||||
constructor(plugins = []) {
|
||||
this.version = '8.5.16'
|
||||
this.plugins = this.normalize(plugins)
|
||||
}
|
||||
|
||||
normalize(plugins) {
|
||||
let normalized = []
|
||||
for (let i of plugins) {
|
||||
if (i.postcss === true) {
|
||||
i = i()
|
||||
} else if (i.postcss) {
|
||||
i = i.postcss
|
||||
}
|
||||
|
||||
if (typeof i === 'object' && Array.isArray(i.plugins)) {
|
||||
normalized = normalized.concat(i.plugins)
|
||||
} else if (typeof i === 'object' && i.postcssPlugin) {
|
||||
normalized.push(i)
|
||||
} else if (typeof i === 'function') {
|
||||
normalized.push(i)
|
||||
} else if (typeof i === 'object' && (i.parse || i.stringify)) {
|
||||
if (process.env.NODE_ENV !== 'production') {
|
||||
throw new Error(
|
||||
'PostCSS syntaxes cannot be used as plugins. Instead, please use ' +
|
||||
'one of the syntax/parser/stringifier options as outlined ' +
|
||||
'in your PostCSS runner documentation.'
|
||||
)
|
||||
}
|
||||
} else {
|
||||
throw new Error(i + ' is not a PostCSS plugin')
|
||||
}
|
||||
}
|
||||
return normalized
|
||||
}
|
||||
|
||||
process(css, opts = {}) {
|
||||
if (
|
||||
!this.plugins.length &&
|
||||
!opts.parser &&
|
||||
!opts.stringifier &&
|
||||
!opts.syntax
|
||||
) {
|
||||
return new NoWorkResult(this, css, opts)
|
||||
} else {
|
||||
return new LazyResult(this, css, opts)
|
||||
}
|
||||
}
|
||||
|
||||
use(plugin) {
|
||||
this.plugins = this.plugins.concat(this.normalize([plugin]))
|
||||
return this
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Processor
|
||||
Processor.default = Processor
|
||||
|
||||
Root.registerProcessor(Processor)
|
||||
Document.registerProcessor(Processor)
|
||||
Loading…
Add table
Add a link
Reference in a new issue