nucleus-core-ts 0.10.135 → 0.10.136

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/.build-ok CHANGED
@@ -1 +1 @@
1
- 0.10.135
1
+ 0.10.136
@@ -357,6 +357,12 @@ export function PendingTab({ pendingAction, decideAction, uploadSignatureAction,
357
357
  */ const renderRevisionCard = (item)=>{
358
358
  const returned = returnedSentence(say, item);
359
359
  const confirming = withdrawingId === item.instance_id;
360
+ /*
361
+ * Round 1 of a chain that OPENS on the author's step — "the author confirms
362
+ * the draft, then the reviewers" — has sent nothing back. Measured on the
363
+ * running panel: the card said "returned to you for a correction" and
364
+ * offered "I fixed it, send again" for a record nobody had looked at yet.
365
+ */ const firstRound = (item.pass_no ?? 1) <= 1 && !item.sent_back;
360
366
  return /*#__PURE__*/ _jsxs("div", {
361
367
  className: "flex flex-wrap items-start justify-between gap-3",
362
368
  children: [
@@ -365,13 +371,14 @@ export function PendingTab({ pendingAction, decideAction, uploadSignatureAction,
365
371
  children: [
366
372
  /*#__PURE__*/ _jsx("p", {
367
373
  className: theme.pending.card.title,
368
- children: say.revisionCardTitle
374
+ children: firstRound ? say.revisionFirstTitle : say.revisionCardTitle
369
375
  }),
370
376
  /*#__PURE__*/ _jsxs("p", {
371
377
  className: theme.pending.card.subtitle,
372
378
  children: [
373
379
  say.pendingCardTitle(item.flow_name, item.step_order),
374
- item.step_name ? ` · ${item.step_name}` : null
380
+ item.step_name ? ` · ${item.step_name}` : null,
381
+ !firstRound && item.pass_no ? ` · ${say.pendingRound(item.pass_no, item.max_passes ?? item.pass_no)}` : null
375
382
  ]
376
383
  }),
377
384
  returned ? /*#__PURE__*/ _jsx("p", {
@@ -428,7 +435,7 @@ export function PendingTab({ pendingAction, decideAction, uploadSignatureAction,
428
435
  },
429
436
  "aria-describedby": `resubmit-hint-${item.instance_id}`,
430
437
  className: theme.pending.approveButton,
431
- children: say.resubmit
438
+ children: firstRound ? say.submitForReview : say.resubmit
432
439
  }),
433
440
  /*#__PURE__*/ _jsx("button", {
434
441
  type: "button",
@@ -446,7 +453,7 @@ export function PendingTab({ pendingAction, decideAction, uploadSignatureAction,
446
453
  /*#__PURE__*/ _jsx("p", {
447
454
  id: `resubmit-hint-${item.instance_id}`,
448
455
  className: theme.pending.card.decisionMeta,
449
- children: say.resubmitHint
456
+ children: firstRound ? say.submitForReviewHint : say.resubmitHint
450
457
  })
451
458
  ]
452
459
  })
@@ -480,6 +480,10 @@ export type VerificationFlowLabels = {
480
480
  maxPassesOutOfRange: string;
481
481
  /** The author's correction card — a correction step, not a review. */
482
482
  revisionCardTitle: string;
483
+ /** The same card on round 1, before anything has been sent back. */
484
+ revisionFirstTitle: string;
485
+ submitForReview: string;
486
+ submitForReviewHint: string;
483
487
  returnedBecause: (reason: string) => string;
484
488
  returnedNoReason: string;
485
489
  resubmit: string;
@@ -350,6 +350,9 @@
350
350
  liveFlowLocked: (n)=>`${n} review${n === 1 ? ' is' : 's are'} running under this flow, so its steps are locked. You can still rename steps and edit what they send.`,
351
351
  maxPassesOutOfRange: 'Between 1 and 20.',
352
352
  revisionCardTitle: 'Returned to you for a correction',
353
+ revisionFirstTitle: 'Check your record before the reviewers see it',
354
+ submitForReview: 'Send to the reviewers',
355
+ submitForReviewHint: 'Make any last changes on the record first; the reviewers read it as it is when you send it.',
353
356
  returnedBecause: (reason)=>`Why it came back: ${reason}`,
354
357
  returnedNoReason: 'The reviewer did not give a reason.',
355
358
  resubmit: 'Fixed — send back for review',
@@ -12,7 +12,11 @@
12
12
  */ const dark = {
13
13
  editor: {
14
14
  root: 'flex-1 min-h-0 flex flex-col bg-[#08080d]',
15
- scroll: 'flex-1 overflow-y-auto px-6 py-5',
15
+ // `relative`: the scroll box must be the positioning context. Without it the
16
+ // editor's `sr-only` labels (position: absolute) anchored to the page, not
17
+ // to this box, escaped its clipping and stretched the DOCUMENT to ~3000px —
18
+ // a second scrollbar, and the panel's sticky header sliding over Kaydet.
19
+ scroll: 'relative flex-1 overflow-y-auto px-6 py-5',
16
20
  header: 'flex-shrink-0 px-6 pt-5 pb-3 flex items-start justify-between gap-4',
17
21
  headerTitle: 'text-[13px] font-semibold text-white/90 tracking-tight',
18
22
  headerSubtitle: 'text-[11px] text-white/40 mt-1 leading-relaxed max-w-prose',
@@ -140,7 +144,11 @@
140
144
  const light = {
141
145
  editor: {
142
146
  root: 'flex-1 min-h-0 flex flex-col bg-slate-50',
143
- scroll: 'flex-1 overflow-y-auto px-6 py-5',
147
+ // `relative`: the scroll box must be the positioning context. Without it the
148
+ // editor's `sr-only` labels (position: absolute) anchored to the page, not
149
+ // to this box, escaped its clipping and stretched the DOCUMENT to ~3000px —
150
+ // a second scrollbar, and the panel's sticky header sliding over Kaydet.
151
+ scroll: 'relative flex-1 overflow-y-auto px-6 py-5',
144
152
  header: 'flex-shrink-0 px-6 pt-5 pb-3 flex items-start justify-between gap-4',
145
153
  headerTitle: 'text-[13px] font-semibold text-slate-800 tracking-tight',
146
154
  headerSubtitle: 'text-[11px] text-slate-500 mt-1 leading-relaxed max-w-prose',
@@ -47,7 +47,7 @@ export const verificationFlowPageTheme = {
47
47
  select: 'rounded-lg border border-white/[0.08] bg-white/[0.04] px-3 py-1.5 text-[11px] text-white/70 outline-none focus:border-white/20'
48
48
  },
49
49
  palette: {
50
- container: 'flex-1 overflow-auto p-4',
50
+ container: 'relative flex-1 overflow-auto p-4',
51
51
  title: 'text-[10px] font-bold uppercase tracking-[0.15em] text-white/30 mb-3 px-1',
52
52
  item: 'flex items-start gap-3 rounded-xl p-3 mb-2 cursor-grab active:cursor-grabbing transition-all border border-transparent hover:border-white/[0.08]',
53
53
  itemIcon: 'w-9 h-9 rounded-lg flex items-center justify-center flex-shrink-0',
@@ -107,7 +107,7 @@ export const verificationFlowPageTheme = {
107
107
  header: 'flex items-center justify-between px-4 py-3 border-b border-white/[0.06]',
108
108
  headerTitle: 'text-[12px] font-semibold text-white/80',
109
109
  closeButton: 'w-6 h-6 rounded-md flex items-center justify-center text-white/30 hover:text-white/60 hover:bg-white/[0.06] transition-all',
110
- body: 'flex-1 overflow-auto p-4 space-y-5',
110
+ body: 'relative flex-1 overflow-auto p-4 space-y-5',
111
111
  help: 'rounded-lg bg-white/[0.04] px-3 py-2.5 text-[11px] leading-relaxed text-white/50',
112
112
  readOnlyRow: 'flex items-baseline justify-between gap-3 rounded-lg bg-white/[0.04] px-3 py-2 text-[11px] text-white/50',
113
113
  readOnlyValue: 'text-[12px] font-semibold tabular-nums text-white/80',
@@ -193,7 +193,7 @@ export const verificationFlowPageTheme = {
193
193
  }
194
194
  },
195
195
  flowList: {
196
- container: 'flex-1 overflow-auto p-6',
196
+ container: 'relative flex-1 overflow-auto p-6',
197
197
  grid: 'grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4 max-w-6xl mx-auto',
198
198
  createButton: 'group flex flex-col items-center justify-center rounded-xl border-2 border-dashed border-white/[0.08] bg-white/[0.02] p-8 min-h-[180px] cursor-pointer hover:border-white/[0.15] hover:bg-white/[0.04] transition-all',
199
199
  createButtonIcon: 'text-white/20 group-hover:text-white/40 transition-colors mb-3',
@@ -274,7 +274,7 @@ export const verificationFlowPageLightTheme = {
274
274
  select: 'rounded-lg border border-gray-200 bg-gray-50 px-3 py-1.5 text-[11px] text-gray-600 outline-none focus:border-gray-400'
275
275
  },
276
276
  palette: {
277
- container: 'flex-1 overflow-auto p-4',
277
+ container: 'relative flex-1 overflow-auto p-4',
278
278
  title: 'text-[10px] font-bold uppercase tracking-[0.15em] text-gray-400 mb-3 px-1',
279
279
  item: 'flex items-start gap-3 rounded-xl p-3 mb-2 cursor-grab active:cursor-grabbing transition-all border border-transparent hover:border-gray-200',
280
280
  itemIcon: 'w-9 h-9 rounded-lg flex items-center justify-center flex-shrink-0',
@@ -343,7 +343,7 @@ export const verificationFlowPageLightTheme = {
343
343
  header: 'flex items-center justify-between px-4 py-3 border-b border-gray-200',
344
344
  headerTitle: 'text-[12px] font-semibold text-gray-800',
345
345
  closeButton: 'w-6 h-6 rounded-md flex items-center justify-center text-gray-400 hover:text-gray-600 hover:bg-gray-100 transition-all',
346
- body: 'flex-1 overflow-auto p-4 space-y-5',
346
+ body: 'relative flex-1 overflow-auto p-4 space-y-5',
347
347
  help: 'rounded-lg bg-gray-50 border border-gray-200 px-3 py-2.5 text-[11px] leading-relaxed text-gray-600',
348
348
  readOnlyRow: 'flex items-baseline justify-between gap-3 rounded-lg bg-gray-50 border border-gray-200 px-3 py-2 text-[11px] text-gray-500',
349
349
  readOnlyValue: 'text-[12px] font-semibold tabular-nums text-gray-800',
@@ -429,7 +429,7 @@ export const verificationFlowPageLightTheme = {
429
429
  }
430
430
  },
431
431
  flowList: {
432
- container: 'flex-1 overflow-auto p-6',
432
+ container: 'relative flex-1 overflow-auto p-6',
433
433
  grid: 'grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4 max-w-6xl mx-auto',
434
434
  createButton: 'group flex flex-col items-center justify-center rounded-xl border-2 border-dashed border-gray-300 bg-gray-50 p-8 min-h-[180px] cursor-pointer hover:border-gray-400 hover:bg-gray-100 transition-all',
435
435
  createButtonIcon: 'text-gray-400 group-hover:text-gray-600 transition-colors mb-3',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nucleus-core-ts",
3
- "version": "0.10.135",
3
+ "version": "0.10.136",
4
4
  "description": "Production-ready, enterprise-grade TypeScript framework for building multi-tenant APIs",
5
5
  "author": "Hidayet Can Özcan <hidayetcan@gmail.com>",
6
6
  "license": "SEE LICENSE IN LICENSE",