@growth-operations/ui-shared 1.24.0 → 1.25.0

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.24.0",
3
+ "version": "1.25.0",
4
4
  "description": "Shared HubSpot UI-extension modules (Home, Billing) for Growth Operations apps.",
5
5
  "license": "MIT",
6
6
  "private": false,
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import { Flex, Tile, Text, LoadingSpinner } from "@hubspot/ui-extensions";
2
+ import { Flex, LoadingSpinner } from "@hubspot/ui-extensions";
3
3
  import { InstallProgress } from "./InstallProgress";
4
4
  import { HealthHero } from "./HealthHero";
5
5
  import { OnboardingChecklist } from "./OnboardingChecklist";
@@ -10,50 +10,16 @@ import { PeriodComparison } from "./PeriodComparison";
10
10
  import { FeatureNudges } from "./FeatureNudges";
11
11
  import { HelpfulLinks } from "./HelpfulLinks";
12
12
 
13
- // Minimal inline ATS tile (the `pipeline` block). Kept tiny here rather than a
14
- // separate file — it's the simplest of the three archetype tiles. Renders
15
- // nothing when there's no pipeline block.
16
- function PipelineTile({ pipeline }) {
17
- if (!pipeline) return null;
18
- const byStage = pipeline.applications_by_stage ?? {};
19
- return (
20
- <Tile>
21
- <Flex direction="column" gap="small">
22
- <Text format={{ fontWeight: "bold" }}>Pipeline</Text>
23
- <Flex direction="row" gap="large">
24
- <Flex direction="column" gap="extra-small">
25
- <Text format={{ fontWeight: "demibold" }}>Open jobs</Text>
26
- <Text>{pipeline.open_jobs ?? 0}</Text>
27
- </Flex>
28
- <Flex direction="column" gap="extra-small">
29
- <Text format={{ fontWeight: "demibold" }}>Outstanding scorecards</Text>
30
- <Text>{pipeline.outstanding_scorecards ?? 0}</Text>
31
- </Flex>
32
- </Flex>
33
- {Object.keys(byStage).length > 0 && (
34
- <Flex direction="row" gap="medium">
35
- {Object.entries(byStage).map(([stage, count]) => (
36
- <Flex key={stage} direction="column" gap="extra-small">
37
- <Text format={{ fontWeight: "demibold" }}>{stage}</Text>
38
- <Text>{count}</Text>
39
- </Flex>
40
- ))}
41
- </Flex>
42
- )}
43
- </Flex>
44
- </Tile>
45
- );
46
- }
47
-
48
13
  // Picks the single archetype activity tile (CONTRACT: at most ONE present).
49
- // sync_pulse -> SyncPulse; pipeline -> PipelineTile. The credit meter is
14
+ // sync_pulse -> SyncPulse. The credit meter is
50
15
  // deliberately NOT on Home anymore (Andrew's 2026-10 feedback) — it lives at
51
16
  // the top of the Usage tab; Home's credit story is the top BillingBanner's
52
17
  // trial states plus the post-checklist period comparison. Renders nothing
53
- // when no tile applies.
18
+ // when no tile applies. (The ATS `pipeline` tile was retired 2026-10-14 —
19
+ // product decision: it duplicated the dedicated Applications/Jobs/Scorecards
20
+ // tabs and its cold-started counters read wrong until churn.)
54
21
  function ArchetypeTile({ state }) {
55
22
  if (state.sync_pulse) return <SyncPulse syncPulse={state.sync_pulse} />;
56
- if (state.pipeline) return <PipelineTile pipeline={state.pipeline} />;
57
23
  return null;
58
24
  }
59
25
 
@@ -67,7 +33,7 @@ function ArchetypeTile({ state }) {
67
33
  // plan_fit says so)
68
34
  // + <PlanFitBanner> (upgrade_recommended only)
69
35
  // + <OnboardingChecklist> (only if not complete)
70
- // + the archetype activity tile (sync/pipeline)
36
+ // + the archetype activity tile (sync_pulse)
71
37
  // + <PeriodComparison> (post-checklist, when the
72
38
  // backend has a full closed period)
73
39
  // + <FeatureUsage> (once the non-billing setup steps