@growth-operations/ui-shared 1.37.1 → 1.37.3

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@growth-operations/ui-shared",
3
- "version": "1.37.1",
3
+ "version": "1.37.3",
4
4
  "description": "Shared HubSpot UI-extension modules (Home, Billing) for Growth Operations apps.",
5
5
  "license": "MIT",
6
6
  "private": false,
@@ -35,8 +35,10 @@ function ArchetypeTile({ state }) {
35
35
  // + <PlanFitBanner> (upgrade_recommended only)
36
36
  // + <OnboardingChecklist> (only if not complete)
37
37
  // + the archetype activity tile (sync_pulse)
38
- // + <PeriodComparison> (post-checklist, when the
39
- // backend has a full closed period)
38
+ // + the period chart (ungated since 2026-11-12:
39
+ // PeriodComparison when the backend has a full
40
+ // closed period, or the self-fetching
41
+ // BillingPeriodUsage explorer with usageExplorer)
40
42
  // + <FeatureUsage> (once the non-billing setup steps
41
43
  // are done; needs the backend's state.feature_usage
42
44
  // block)
@@ -129,27 +131,26 @@ export function AppHome({ state, onNavigate, appName, onRetry, helpfulLinks, usa
129
131
  usageExplorer hosts get the billing-period explorer instead (it
130
132
  self-fetches, so it renders its own empty state rather than gating
131
133
  on a closed period).
132
- Gated on setupStepsComplete, NOT onboardingComplete — Andrew
133
- 2026-11-11: the paid-gated "Choose a plan" step keeps
134
- onboarding.complete false for every free/trial install, so gating on
135
- it hid the per-action usage breakdown from exactly the trial
136
- audience asking for it (LIA trial portal never saw the explorer;
137
- paid ATS demo did). Same trap the FeatureUsage gate below calls
138
- out — the chart gets the same treatment. */}
139
- {setupStepsComplete &&
140
- (usageExplorer ? (
141
- <BillingPeriodUsage
142
- context={usageExplorer.context}
143
- basePath={usageExplorer.basePath}
144
- portalId={usageExplorer.portalId}
145
- appName={appName}
146
- title="Usage over time"
147
- titleAs="text"
148
- showStats={false}
149
- />
150
- ) : (
151
- <PeriodComparison state={state} />
152
- ))}
134
+ UNGATED — Jasper 2026-11-12: gating on setupStepsComplete still hid
135
+ the chart from trial installs with an open workflow step (LIA trial
136
+ portal 52109545, "Get started 1 of 3"), and the explorer's own empty
137
+ state ("No usage in this window") is the right thing to show there,
138
+ not nothing. The paid-step trap this gate grew out of (Andrew
139
+ 2026-11-11) is moot once there's no gate. FeatureUsage below keeps
140
+ the setupStepsComplete gate. */}
141
+ {usageExplorer ? (
142
+ <BillingPeriodUsage
143
+ context={usageExplorer.context}
144
+ basePath={usageExplorer.basePath}
145
+ portalId={usageExplorer.portalId}
146
+ appName={appName}
147
+ title="Usage over time"
148
+ titleAs="text"
149
+ showStats={false}
150
+ />
151
+ ) : (
152
+ <PeriodComparison state={state} />
153
+ )}
153
154
 
154
155
  {/* Most used / recommended-to-explore (state.feature_usage) — renders
155
156
  nothing on backends without the block or for legacy installs. Gated
@@ -383,7 +383,7 @@ function trialStateOf(ent, { appName } = {}) {
383
383
  // clockless free accounts keep the generic pre-top-up line.
384
384
  liveClock: daysLeft != null,
385
385
  title: "You're out of credits",
386
- body: `You have used ${used}/${granted} free credits. Select one of the plans below to continue use of ${name}.`,
386
+ body: `You have used ${used}/${granted} free credits. Select a paid plan to continue use of ${name}.`,
387
387
  };
388
388
  }
389
389
  if (daysLeft != null) {
@@ -397,9 +397,10 @@ function trialStateOf(ent, { appName } = {}) {
397
397
  }
398
398
 
399
399
  // Trial states map onto the banner shape with the shared support footer and a
400
- // Billing-tab CTA (the copy asks for a plan; on non-Home pages nothing is
401
- // "below", so the button routes to the picker). out-of-credits/trial-ended
402
- // are RED (they stop the app), trial-active is YELLOW — Andrew 2026-10-13.
400
+ // Billing-tab CTA (the copy asks for "a paid plan" — never "below": on Home
401
+ // there are no plans below the banner — so the button routes to the picker).
402
+ // out-of-credits/trial-ended are RED (they stop the app), trial-active is
403
+ // YELLOW — Andrew 2026-10-13.
403
404
  const TRIAL_STATE_VARIANT = {
404
405
  out_of_credits: "error",
405
406
  trial_ended: "error",