zurich_kotak/src/screens/screens.css
Yashas 9210681488 Wire the console to the platform and make it deployable
The scaffold had the brand right and nothing behind it: the login was a
600ms setTimeout with a TODO, and three pieces of the frontgen deploy
contract were missing.

- Sign in against POST /usr/login (org_id as a STRING — a number is
  rejected by the gateway) with the session in a provider; surface the
  gateway's own message rather than a generic "invalid credentials",
  because a wrong password and a user without access to this app look
  identical from here and are not.
- Runtime config: the API URL is read from the config.js the server
  writes at placement, never compiled in, and requireConfigValue throws
  so a build with no config.js fails loudly instead of calling whichever
  backend built it.
- base: './' plus a router basename taken from <base href>, so one build
  serves any mount path.
- Move the fonts and logo from public/ into src/assets/ — Vite rewrites
  bundled asset URLs to be relative, while a public/ file referenced as
  "/fonts/..." stays absolute and 404s under the /zurich-kotak/ mount.
- API client for recordview / detailview / form-screens / start /
  activity, and the pipeline shell whose sidebar is the state machine in
  the order a lead moves.

Queue and lead-file data wait on the record and detail views.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-24 15:20:13 +05:30

51 lines
2.4 KiB
CSS

.page__head {
display: flex; align-items: flex-start; justify-content: space-between;
gap: 24px; margin-bottom: 20px;
}
.page__title { margin: 0; font-size: 1.5rem; font-weight: 500; letter-spacing: -.01em; color: var(--zk-ink); }
.page__sub { margin: 3px 0 0; font-size: .84rem; color: var(--zk-muted); }
.page__count {
font-size: 1.35rem; font-weight: 500; color: var(--zk-blue);
background: var(--zk-white); border: 1px solid var(--zk-line);
border-radius: 6px; padding: 6px 16px; font-variant-numeric: tabular-nums;
}
.empty { color: var(--zk-muted); font-size: .88rem; padding: 28px 2px; }
.notice {
background: var(--zk-white); border: 1px solid var(--zk-line);
border-left: 3px solid var(--zk-blue); border-radius: 0 6px 6px 0; padding: 16px 20px;
max-width: 60ch;
}
.notice strong { display: block; font-weight: 500; margin-bottom: 6px; }
.notice p { margin: 0 0 6px; font-size: .86rem; color: var(--zk-muted); line-height: 1.55; }
.notice__detail { font-size: .76rem !important; color: var(--zk-grey) !important; }
.notice code {
font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: .8em;
background: var(--zk-tint); border: 1px solid var(--zk-line-soft);
border-radius: 3px; padding: 1px 4px;
}
.grid {
width: 100%; border-collapse: collapse; background: var(--zk-white);
border: 1px solid var(--zk-line); border-radius: 6px; overflow: hidden; font-size: .86rem;
}
.grid th {
text-align: left; font-size: .68rem; font-weight: 500; letter-spacing: .08em;
text-transform: uppercase; color: var(--zk-muted); padding: 10px 14px;
background: var(--zk-tint); border-bottom: 1px solid var(--zk-line); white-space: nowrap;
}
.grid td { padding: 11px 14px; border-bottom: 1px solid var(--zk-line-soft); vertical-align: top; }
.grid tbody tr:last-child td { border-bottom: none; }
.grid tbody tr:hover { background: var(--zk-tint); }
.grid .num { text-align: right; font-variant-numeric: tabular-nums; }
.grid__sub { font-size: .76rem; color: var(--zk-muted); margin-top: 2px; }
.grid__link { color: var(--zk-blue); text-decoration: none; font-weight: 500; }
.grid__link:hover { text-decoration: underline; }
.chip {
display: inline-block; font-size: .72rem; padding: 2px 8px; border-radius: 3px;
background: var(--zk-tint-blue); color: var(--zk-blue-dark); border: 1px solid var(--zk-blue-light);
}
.chip--warn { background: #fdf1e7; color: #93500f; border-color: #f0c69a; }