diff --git a/apps/hq-web/src/app.css b/apps/hq-web/src/app.css index 26ac478..18ce189 100644 --- a/apps/hq-web/src/app.css +++ b/apps/hq-web/src/app.css @@ -149,6 +149,10 @@ .dash-seg button { border: none; background: none; cursor: pointer; font: 600 12.5px var(--font); color: var(--text-dim); padding: 5px 14px; border-radius: 999px; } .dash-seg button.on { background: var(--bg-raised); color: var(--text); box-shadow: var(--shadow-md); } +/* Table pager: summary text on the left, Prev / page / Next grouped at the right end. */ +.wf-pager { display: flex; align-items: center; gap: 10px; margin-top: 10px; flex-wrap: wrap; font-size: 13px; color: var(--text-dim); } +.wf-pager > span:first-child { margin-right: auto; } + /* Section header shared by the queue block and the bento cards */ .dash-head { display: flex; align-items: center; gap: 10px; padding: 2px 0 10px; } .dash-head h3 { font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.07em; color: var(--text-dim); margin: 0; } diff --git a/apps/hq-web/src/pages/Modules.tsx b/apps/hq-web/src/pages/Modules.tsx index b8fee61..f5c0907 100644 --- a/apps/hq-web/src/pages/Modules.tsx +++ b/apps/hq-web/src/pages/Modules.tsx @@ -386,15 +386,13 @@ function ModuleDetails(props: { module: Module; isOwner: boolean; onSaved: () => setName(e.target.value)} /> setSac(e.target.value)} /> -
-
Billing kinds
-
- {ALL_KINDS.map((k) => ( - - ))} -
+
+ Billing kinds: + {ALL_KINDS.map((k) => ( + + ))}
@@ -545,6 +543,15 @@ function FieldSpecEditor(props: { module: Module; isOwner: boolean; onSaved: () <>

Fields — the details you record for each client on this module

+
+ What are these? The pieces of information you keep for every client on + the {props.module.name} module — e.g. for SMS: username, SMS balance, provider. + Define a field once here and it appears everywhere for that module, no developer needed. +
+ Where do they show up? On each client’s page → Modules tab + (fill them in per client), and side-by-side for all clients under Catalog → Module data. +
+ {fields.length === 0 ? ( No fields yet{props.isOwner ? ' — add the first with the button below.' : '.'} ) : (