@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 +1 -1
- package/src/home/AppHome.jsx +24 -23
- package/src/lib/creditDisplay.js +5 -4
package/package.json
CHANGED
package/src/home/AppHome.jsx
CHANGED
|
@@ -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
|
-
// +
|
|
39
|
-
// backend has a full
|
|
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
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
{
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
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
|
package/src/lib/creditDisplay.js
CHANGED
|
@@ -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
|
|
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
|
|
401
|
-
//
|
|
402
|
-
// are RED (they stop the app), trial-active is
|
|
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",
|