@harnessio/ui 1.3.24 → 1.3.27

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.
@@ -1986,7 +1986,26 @@ const ce = {
1986
1986
  },
1987
1987
  ".cn-dual-pane-stepper-content-header": {
1988
1988
  padding: "var(--cn-spacing-6) var(--cn-spacing-6) 0",
1989
- flexShrink: "0"
1989
+ flexShrink: "0",
1990
+ gap: "var(--cn-spacing-3)"
1991
+ },
1992
+ // Same v5 setup-head type as SinglePane. These classes own type — do not wrap
1993
+ // the nodes in Text (its font-* / text-cn-* utilities would force !important).
1994
+ // `--cn-line-height-20` / `-24` are not emitted. Title: `--cn-line-height-6-normal`
1995
+ // (24px). Intro: `--cn-line-height-6-tight` (20px).
1996
+ ".cn-dual-pane-stepper-content-title": {
1997
+ margin: "0",
1998
+ fontSize: "var(--cn-font-size-6)",
1999
+ fontWeight: "var(--cn-font-weight-default-normal-600)",
2000
+ lineHeight: "var(--cn-line-height-6-normal)",
2001
+ letterSpacing: "var(--cn-tracking-tight)",
2002
+ color: "var(--cn-text-1)"
2003
+ },
2004
+ ".cn-dual-pane-stepper-content-subtitle": {
2005
+ margin: "0",
2006
+ fontSize: "var(--cn-font-size-4)",
2007
+ lineHeight: "var(--cn-line-height-6-tight)",
2008
+ color: "var(--cn-text-2)"
1990
2009
  },
1991
2010
  ".cn-dual-pane-stepper-card-stack": {
1992
2011
  overflow: "auto",
@@ -2110,6 +2129,11 @@ const ce = {
2110
2129
  cursor: "default"
2111
2130
  }
2112
2131
  },
2132
+ // Completed items already fade to 0.6 (see stepper.ts). inert is also 0.6, so without this
2133
+ // reset the body is 0.6×0.6. Hover-restore on the item would still leave the body darker.
2134
+ ".cn-stepper-step-item:has(.cn-stepper-step-completed) .cn-flow-stepper-card-content[inert]": {
2135
+ opacity: "1"
2136
+ },
2113
2137
  ".cn-flow-stepper-card-description": {
2114
2138
  paddingLeft: "calc(var(--cn-size-4) + var(--cn-spacing-3))",
2115
2139
  marginTop: "var(--cn-spacing-1)"
@@ -3812,7 +3836,7 @@ const tr = {
3812
3836
  height: "100%",
3813
3837
  flex: "1",
3814
3838
  minHeight: "0",
3815
- background: "var(--cn-bg-0)",
3839
+ background: "var(--cn-bg-2)",
3816
3840
  overflow: "hidden"
3817
3841
  },
3818
3842
  ".cn-single-pane-stepper-header": {
@@ -3837,7 +3861,33 @@ const tr = {
3837
3861
  }
3838
3862
  },
3839
3863
  ".cn-single-pane-stepper-content-header": {
3840
- marginBottom: "var(--cn-spacing-6)"
3864
+ // v5 title→intro is 10px. No 10px token. `--cn-spacing-3` is 12px (closest). Do not pass
3865
+ // a Layout gap prop: those utilities are @layer utilities and would override this.
3866
+ gap: "var(--cn-spacing-3)",
3867
+ // v5 intro-to-first-card is 8px. Do not use `--cn-spacing-6` (24px).
3868
+ marginBottom: "var(--cn-spacing-2)"
3869
+ },
3870
+ // v5 setup head: 16px/600 title, 13px/`--cn-text-2` intro.
3871
+ // Compiled line-height vars are `--cn-line-height-{fontSize}-{tightness}`, not the
3872
+ // 4px-grid names (`--cn-line-height-20` / `-24` are not emitted). Title uses
3873
+ // `--cn-line-height-6-normal` (fontSize.6 × 1.5 = 1.5rem = 24px). Intro uses
3874
+ // `--cn-line-height-6-tight` (× 1.25 = 1.25rem = 20px), closest to v5 13px/1.55.
3875
+ // No token between `--cn-text-2` and `--cn-text-3`. `--cn-text-3` was too dark on MFE.
3876
+ // These classes own type. Do not wrap the nodes in Text — its font-* / text-cn-*
3877
+ // utilities are @layer utilities and would win without !important.
3878
+ ".cn-single-pane-stepper-content-title": {
3879
+ margin: "0",
3880
+ fontSize: "var(--cn-font-size-6)",
3881
+ fontWeight: "var(--cn-font-weight-default-normal-600)",
3882
+ lineHeight: "var(--cn-line-height-6-normal)",
3883
+ letterSpacing: "var(--cn-tracking-tight)",
3884
+ color: "var(--cn-text-1)"
3885
+ },
3886
+ ".cn-single-pane-stepper-content-subtitle": {
3887
+ margin: "0",
3888
+ fontSize: "var(--cn-font-size-4)",
3889
+ lineHeight: "var(--cn-line-height-6-tight)",
3890
+ color: "var(--cn-text-2)"
3841
3891
  },
3842
3892
  ".cn-single-pane-stepper-card-stack": {
3843
3893
  overflow: "auto",
@@ -3877,9 +3927,9 @@ const tr = {
3877
3927
  // keep the active card in focus. SinglePane is a timeline: contentTitle
3878
3928
  // lives in this stack and should start at the top, and the last step
3879
3929
  // should end the scroll content. Do not copy those spacers here.
3880
- // Vertical padding matches YamlOutput's header (--cn-spacing-3 = 12px) so
3881
- // contentTitle lines up with the YAML pane title. Sides stay --cn-spacing-6.
3882
- padding: "var(--cn-spacing-3) var(--cn-spacing-6)"
3930
+ // UUI-3566 — v5 stack sides are 40px (`--cn-spacing-10`). Vertical 16px
3931
+ // (`--cn-spacing-4`) lines up with YAML chrome top after that header moved to 16px.
3932
+ padding: "var(--cn-spacing-4) var(--cn-spacing-10) var(--cn-spacing-4)"
3883
3933
  }
3884
3934
  }, pr = ["sm", "md", "lg", "xs"], gr = ["2xs", "xs", "sm", "md", "lg", "xl"], br = ["xs", "sm", "md", "lg"], vr = ["sm"];
3885
3935
  function hr() {
@@ -4392,13 +4442,28 @@ const mr = {
4392
4442
  display: "none"
4393
4443
  },
4394
4444
  "& .cn-stepper-connector": {
4395
- bottom: "var(--cn-spacing-4-half)"
4445
+ // Last item has no next ring. Default bottom is negative (extends into the next head
4446
+ // pad). Pin a 2px inset so the trunk stops just under this ring (UUI-3574).
4447
+ bottom: "var(--cn-spacing-half)"
4396
4448
  },
4397
4449
  // Stop the trunk where the elbow's rounded corner begins (radius above the branch arm)
4398
4450
  // so the vertical line doesn't poke past the bend on the last step.
4399
4451
  "&:has(.cn-stepper-nested-step-placeholder) .cn-stepper-connector": {
4400
4452
  bottom: "calc(var(--cn-size-8) + var(--cn-rounded-5))"
4401
4453
  }
4454
+ },
4455
+ // UUI-3585 — v5 `.pq-card[data-state="done"]` is opacity ~0.58 on the whole card. Canary used
4456
+ // to dim only `[inert]` card body. Opacity on `.cn-stepper-step-content` is a no-op because
4457
+ // that box is `display: contents`. Fade the item (rail head + body). No 0.58 token; 0.6
4458
+ // matches the inert opacity. Hover / completed-head focus-visible restore the way v5 does.
4459
+ "&:has(.cn-stepper-step-completed)": {
4460
+ opacity: "0.6",
4461
+ "&:hover": {
4462
+ opacity: "1"
4463
+ },
4464
+ "&:has(.cn-stepper-step-completed:focus-visible)": {
4465
+ opacity: "1"
4466
+ }
4402
4467
  }
4403
4468
  },
4404
4469
  /* Step Button */
@@ -4410,7 +4475,11 @@ const mr = {
4410
4475
  width: "100%",
4411
4476
  border: "none",
4412
4477
  background: "none",
4413
- padding: "0",
4478
+ // UUI-3574 — v5 `.pq-card__head` pad is 16px; signed-off closest token is 12px. Horizontal
4479
+ // stays 0 so the indicator column does not shift. This drops the circle, so the connector
4480
+ // `top` below must move by the same amount or the trunk paints through the number.
4481
+ paddingBlock: "var(--cn-spacing-3)",
4482
+ paddingInline: "0",
4414
4483
  cursor: "pointer",
4415
4484
  textAlign: "left",
4416
4485
  "&:disabled": {
@@ -4503,16 +4572,17 @@ const mr = {
4503
4572
  marginTop: "var(--cn-spacing-half)",
4504
4573
  minWidth: "0"
4505
4574
  },
4506
- // Step badge — opt-in "Step n/m" pill shown next to the step title (StepperStep `showStepBadge`).
4507
- // Values match the CDv2 prototype (pq-step-badge): neutral surface-2 background, subtle border,
4508
- // muted text — a de-emphasized progress indicator, not a status/theme tag.
4575
+ // Step badge — opt-in "Step n/m" chip next to the step title (StepperStep `showStepBadge`).
4576
+ // Prototype `.pq-step-badge` is radius 4px (`--cn-rounded-2`), not a pill. `--cn-tag-radius-default`
4577
+ // is `--cn-rounded-3` (6px) and `--cn-rounded-full` is 9999px. Do not use Tag: Tag-sm restyles
4578
+ // type and height (UUI-3585).
4509
4579
  ".cn-stepper-step-badge": {
4510
4580
  display: "inline-flex",
4511
4581
  alignItems: "center",
4512
4582
  flexShrink: "0",
4513
4583
  // Vertical padding matches --cn-spacing-half (2px) exactly.
4514
4584
  padding: "var(--cn-spacing-half) var(--cn-spacing-2)",
4515
- borderRadius: "var(--cn-rounded-full)",
4585
+ borderRadius: "var(--cn-rounded-2)",
4516
4586
  border: "var(--cn-spacing-px) solid var(--cn-border-2)",
4517
4587
  background: "var(--cn-bg-2)",
4518
4588
  color: "var(--cn-text-3)",
@@ -4523,11 +4593,13 @@ const mr = {
4523
4593
  fontWeight: "var(--cn-font-weight-default-normal-500)",
4524
4594
  lineHeight: "1.35"
4525
4595
  },
4526
- // Active row's badge gets a brand-tinted recolor to match the prototype's active-state badge (base/default case above already matches the prototype's neutral state)
4596
+ // Active row's badge matches v5 `--pq-step-accent` / fill / border (`--cn-set-blue-outline-*`).
4597
+ // Do not use `--cn-border-brand` / `--cn-set-brand-outline-*` — those read as a pill tint, not
4598
+ // the prototype's blue outline chip (UUI-3585).
4527
4599
  ".cn-stepper-step-active .cn-stepper-step-badge": {
4528
- borderColor: "var(--cn-border-brand)",
4529
- background: "var(--cn-set-brand-outline-bg)",
4530
- color: "var(--cn-text-brand)"
4600
+ borderColor: "var(--cn-set-blue-outline-border)",
4601
+ background: "var(--cn-set-blue-outline-bg)",
4602
+ color: "var(--cn-set-blue-outline-text)"
4531
4603
  },
4532
4604
  // Step Panel — container for arbitrary content rendered below a top-level Step (no StepGroup
4533
4605
  // ancestor). Mirrors `.cn-stepper-nested-step-panel`'s indent-under-the-title pattern, but without
@@ -4535,7 +4607,8 @@ const mr = {
4535
4607
  // column (--cn-size-5) plus its gap (--cn-spacing-4) so panel content lines up under the title text.
4536
4608
  ".cn-stepper-step-panel": {
4537
4609
  marginLeft: "calc(var(--cn-size-5) + var(--cn-spacing-4))",
4538
- marginTop: "var(--cn-spacing-2)",
4610
+ // UUI-3575 — v5 head-to-body gap is the head padding-block. Extra panel margin doubles it.
4611
+ marginTop: "0",
4539
4612
  minWidth: "0"
4540
4613
  },
4541
4614
  // Step-level collapse wrapper/trigger/icon/panel — parallel to the .cn-stepper-nested-step-collapse-*
@@ -4590,8 +4663,10 @@ const mr = {
4590
4663
  ".cn-stepper-connector": {
4591
4664
  position: "absolute",
4592
4665
  left: "calc((var(--cn-size-5) - var(--cn-spacing-px)) / 2)",
4593
- top: "var(--cn-size-5)",
4594
- bottom: "0",
4666
+ // v5 connector is `margin: 2px 0`. Offset by the 12px head pad plus that 2px inset so the
4667
+ // trunk misses the number and still meets the next ring (UUI-3574).
4668
+ top: "calc(var(--cn-spacing-3) + var(--cn-size-5) + var(--cn-spacing-half))",
4669
+ bottom: "calc(var(--cn-spacing-half) - var(--cn-spacing-3))",
4595
4670
  width: "var(--cn-spacing-px)",
4596
4671
  borderRadius: "var(--cn-rounded-1)",
4597
4672
  // The vertical trunk must sit ABOVE the nested-step branch elbows. The branch wires live in the