@uipath/apollo-vertex 0.1.0 → 0.4.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.
Files changed (120) hide show
  1. package/README.md +15 -21
  2. package/dist/entries/index.d.ts +102 -1
  3. package/dist/entries/index.js +77 -2
  4. package/dist/lib/i18n.d.ts +11 -0
  5. package/dist/lib/i18n.js +32 -2
  6. package/dist/lib/vertex-translation.d.ts +14 -0
  7. package/dist/lib/vertex-translation.js +4 -0
  8. package/dist/registry/ai-caveat/ai-caveat.js +2 -2
  9. package/dist/registry/ai-chat/charts/no-data-message.js +2 -2
  10. package/dist/registry/ai-chat/charts/tool-resolution-error.js +2 -2
  11. package/dist/registry/ai-chat/components/ai-chat-code-block.js +2 -2
  12. package/dist/registry/ai-chat/components/ai-chat-empty-state.js +2 -2
  13. package/dist/registry/ai-chat/components/ai-chat-error-banner.js +2 -2
  14. package/dist/registry/ai-chat/components/ai-chat-header.js +2 -2
  15. package/dist/registry/ai-chat/components/ai-chat-image-preview.js +2 -2
  16. package/dist/registry/ai-chat/components/ai-chat-input.js +2 -2
  17. package/dist/registry/ai-chat/components/ai-chat-loading.js +2 -2
  18. package/dist/registry/ai-chat/components/ai-chat-message-actions.js +3 -3
  19. package/dist/registry/ai-chat/components/ai-chat-message.js +2 -2
  20. package/dist/registry/ai-chat/components/ai-chat-pending-files.js +2 -2
  21. package/dist/registry/ai-chat/components/ai-chat-scroll-to-bottom-button.js +2 -2
  22. package/dist/registry/ai-chat/components/ai-chat-selection-menu.js +2 -2
  23. package/dist/registry/ai-chat/components/ai-chat.js +2 -2
  24. package/dist/registry/bar-chart/bar-chart-with-adapter.js +2 -2
  25. package/dist/registry/breadcrumb/breadcrumb.js +2 -2
  26. package/dist/registry/card/card.d.ts +3 -1
  27. package/dist/registry/card/card.js +4 -5
  28. package/dist/registry/carousel/carousel.js +3 -3
  29. package/dist/registry/charts-core/charts-core.d.ts +2 -2
  30. package/dist/registry/charts-core/error-boundary.js +2 -2
  31. package/dist/registry/combobox/combobox.js +2 -2
  32. package/dist/registry/confidence-signal/confidence-signal.js +2 -2
  33. package/dist/registry/data-fabric-adapter/contract.d.ts +1 -1
  34. package/dist/registry/data-fabric-adapter/schemas/query-schema.d.ts +2 -2
  35. package/dist/registry/data-table/data-table-expand-toggle.js +2 -2
  36. package/dist/registry/data-table/data-table-pagination.js +2 -2
  37. package/dist/registry/data-table/data-table-search.js +2 -2
  38. package/dist/registry/data-table/data-table-view-options.js +2 -2
  39. package/dist/registry/data-table/data-table.d.ts +1 -0
  40. package/dist/registry/data-table/data-table.js +2 -2
  41. package/dist/registry/date-picker/date-picker.js +2 -2
  42. package/dist/registry/dialog/dialog.js +2 -2
  43. package/dist/registry/distribution-chart/distribution-chart-with-adapter.js +2 -2
  44. package/dist/registry/filter-dropdown/filter-dropdown.js +2 -2
  45. package/dist/registry/form/use-translated-errors.js +2 -2
  46. package/dist/registry/form-wizard/form-wizard-nav.js +2 -2
  47. package/dist/registry/kpi-chart/kpi-chart-with-adapter.js +2 -2
  48. package/dist/registry/line-chart/line-chart-with-adapter.js +2 -2
  49. package/dist/registry/multi-line-chart/multi-line-chart-with-adapter.js +2 -2
  50. package/dist/registry/pagination/pagination.js +4 -4
  51. package/dist/registry/sheet/sheet.js +2 -2
  52. package/dist/registry/shell/group-membership-guard.js +1 -0
  53. package/dist/registry/shell/group-membership-screens.js +4 -3
  54. package/dist/registry/shell/shell-auth-provider.js +1 -0
  55. package/dist/registry/shell/shell-company.js +3 -3
  56. package/dist/registry/shell/shell-layout.js +1 -0
  57. package/dist/registry/shell/shell-locale-provider.js +3 -2
  58. package/dist/registry/shell/shell-login.js +3 -2
  59. package/dist/registry/shell/shell-sidebar.js +3 -2
  60. package/dist/registry/shell/shell-text.js +4 -2
  61. package/dist/registry/shell/shell-theme-provider.js +1 -0
  62. package/dist/registry/shell/shell-user-profile-menu-items.js +2 -2
  63. package/dist/registry/shell/shell-user-profile.js +2 -2
  64. package/dist/registry/shell/shell-user-provider.js +1 -0
  65. package/dist/registry/shell/shell.js +1 -0
  66. package/dist/registry/shell/use-group-id.js +1 -0
  67. package/dist/registry/shell/use-group-members.js +1 -0
  68. package/dist/registry/shell/use-is-group-member.js +1 -0
  69. package/dist/registry/sidebar/sidebar-trigger.js +2 -2
  70. package/dist/registry/sidebar/sidebar.js +2 -2
  71. package/dist/registry/solution-tests/baseline-compare.js +2 -2
  72. package/dist/registry/solution-tests/delete-confirm-dialog.js +2 -2
  73. package/dist/registry/solution-tests/evaluators/case-evaluation/case-evaluation-result.js +7 -7
  74. package/dist/registry/solution-tests/evaluators/generic-evaluator-result.js +2 -2
  75. package/dist/registry/solution-tests/evaluators/ixp-extraction/internal/document-row.js +3 -3
  76. package/dist/registry/solution-tests/evaluators/ixp-extraction/internal/field-group.js +2 -2
  77. package/dist/registry/solution-tests/evaluators/ixp-extraction/internal/provenance-bar.js +2 -2
  78. package/dist/registry/solution-tests/evaluators/ixp-extraction/internal/summary-bar.js +2 -2
  79. package/dist/registry/solution-tests/evaluators/ixp-extraction/internal/verdict-badge.js +2 -2
  80. package/dist/registry/solution-tests/evaluators/ixp-extraction/ixp-extraction-result.js +2 -2
  81. package/dist/registry/solution-tests/expanded-agents-view.js +2 -2
  82. package/dist/registry/solution-tests/expanded-run-tests-view.js +2 -2
  83. package/dist/registry/solution-tests/expanded-run-tests.js +2 -2
  84. package/dist/registry/solution-tests/hooks.d.ts +0 -1
  85. package/dist/registry/solution-tests/kpi-bar.js +2 -2
  86. package/dist/registry/solution-tests/outputs/case-evaluation/case-evaluation-output.js +3 -3
  87. package/dist/registry/solution-tests/outputs/ixp-extraction/ixp-output-result.js +5 -5
  88. package/dist/registry/solution-tests/process-results-viewer-dialog.js +2 -2
  89. package/dist/registry/solution-tests/result-expanded-content.js +2 -2
  90. package/dist/registry/solution-tests/run-confirm-dialog.js +2 -2
  91. package/dist/registry/solution-tests/run-details-agent-list.js +2 -2
  92. package/dist/registry/solution-tests/run-details-view.js +4 -4
  93. package/dist/registry/solution-tests/run-details.js +2 -2
  94. package/dist/registry/solution-tests/save-as-test-button.js +2 -2
  95. package/dist/registry/solution-tests/solution-tests-view.js +2 -2
  96. package/dist/registry/solution-tests/solution-tests.js +2 -2
  97. package/dist/registry/solution-tests/user-messages-view.js +3 -3
  98. package/dist/registry/solution-tests/version-delta-glyph.js +2 -2
  99. package/dist/registry/stepper/index.d.ts +1 -7
  100. package/dist/registry/stepper/index.js +1 -6
  101. package/dist/registry/table-chart/table-chart-view.js +2 -2
  102. package/dist/registry/table-chart/table-chart-with-adapter.js +2 -2
  103. package/package.json +27 -88
  104. package/skills/use-vertex-components/SKILL.md +168 -0
  105. package/dist/entries/ai-chat/index.d.ts +0 -17
  106. package/dist/entries/ai-chat/index.js +0 -14
  107. package/dist/entries/charts/index.d.ts +0 -10
  108. package/dist/entries/charts/index.js +0 -10
  109. package/dist/entries/feature-flags/index.d.ts +0 -5
  110. package/dist/entries/feature-flags/index.js +0 -5
  111. package/dist/entries/feature-flags/proteus.d.ts +0 -1
  112. package/dist/entries/feature-flags/proteus.js +0 -2
  113. package/dist/entries/shell/entities.d.ts +0 -6
  114. package/dist/entries/shell/entities.js +0 -8
  115. package/dist/entries/shell/index.d.ts +0 -14
  116. package/dist/entries/shell/index.js +0 -14
  117. package/dist/entries/solution-tests/data.d.ts +0 -6
  118. package/dist/entries/solution-tests/data.js +0 -6
  119. package/dist/entries/solution-tests/index.d.ts +0 -36
  120. package/dist/entries/solution-tests/index.js +0 -21
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
3
  import { ArrowLeftRight, Plus, Trash2 } from "lucide-react";
4
- import { useTranslation } from "react-i18next";
4
+ import { useVertexTranslation } from "../../lib/vertex-translation.js";
5
5
  import { Badge } from "../badge/badge.js";
6
6
  import { Button } from "../button/button.js";
7
7
  import { Empty, EmptyDescription } from "../empty/empty.js";
@@ -17,7 +17,7 @@ import { RunResultStatus } from "./types.js";
17
17
  import { versionDelta } from "./utils.js";
18
18
  import { VersionDeltaGlyph } from "./version-delta-glyph.js";
19
19
  const RunDetailsView = ({ subjectLabel, run, results, isLoading, baselineJobMap, selectedResultId, selectedRowData, adoptingResultId, updatingResultId, removingBaselineId, onBack, onSelect, onAdopt, onUpdateBaseline, onRemoveBaseline })=>{
20
- const { t } = useTranslation();
20
+ const { t } = useVertexTranslation();
21
21
  const title = t("subject_run_results", {
22
22
  subject: subjectLabel
23
23
  });
@@ -118,7 +118,7 @@ const RunDetailsView = ({ subjectLabel, run, results, isLoading, baselineJobMap,
118
118
  });
119
119
  };
120
120
  const RunDetailsPane = ({ result, data, baselineJobMap, adoptPending, updatePending, removePendingId, onAdopt, onUpdateBaseline, onRemoveBaseline })=>{
121
- const { t } = useTranslation();
121
+ const { t } = useVertexTranslation();
122
122
  const status = result.Status;
123
123
  const showBaselineVersion = status !== RunResultStatus.NoBaseline;
124
124
  const showActualVersion = status !== RunResultStatus.Missing;
@@ -244,7 +244,7 @@ const ActionButton = ({ loading, icon, label, onClick })=>/*#__PURE__*/ jsxs(But
244
244
  ]
245
245
  });
246
246
  const BaselineStateLabel = ({ isBaselineSource, inBaseline, hadBaseline })=>{
247
- const { t } = useTranslation();
247
+ const { t } = useVertexTranslation();
248
248
  if (isBaselineSource) return /*#__PURE__*/ jsx("span", {
249
249
  className: "text-xs font-medium text-info",
250
250
  children: t("current_baseline")
@@ -2,7 +2,7 @@
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
3
  import { useQuery } from "@tanstack/react-query";
4
4
  import { useEffect, useMemo, useState } from "react";
5
- import { useTranslation } from "react-i18next";
5
+ import { useVertexTranslation } from "../../lib/vertex-translation.js";
6
6
  import { toast } from "sonner";
7
7
  import { Button } from "../button/button.js";
8
8
  import { Empty, EmptyContent, EmptyDescription, EmptyHeader, EmptyTitle } from "../empty/empty.js";
@@ -37,7 +37,7 @@ async function fetchResultAttachments(result, attachment, showDebug) {
37
37
  return {};
38
38
  }
39
39
  const RunDetails = ({ runId, onBack })=>{
40
- const { t } = useTranslation();
40
+ const { t } = useVertexTranslation();
41
41
  const { showDebug, track } = useSolutionTestsConfig();
42
42
  const { runs, isLoading: runsLoading } = useSolutionTestRuns();
43
43
  const { tests } = useSolutionTests();
@@ -1,11 +1,11 @@
1
1
  "use client";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
3
  import { Check, FlaskConical } from "lucide-react";
4
- import { useTranslation } from "react-i18next";
4
+ import { useVertexTranslation } from "../../lib/vertex-translation.js";
5
5
  import { Button } from "../button/button.js";
6
6
  import { Spinner } from "../spinner/spinner.js";
7
7
  const SaveAsTestButton = ({ isSaved, isSaving, onSave, disabled = false })=>{
8
- const { t } = useTranslation();
8
+ const { t } = useVertexTranslation();
9
9
  return /*#__PURE__*/ jsxs(Button, {
10
10
  type: "button",
11
11
  variant: "outline",
@@ -3,7 +3,7 @@ import { jsx, jsxs } from "react/jsx-runtime";
3
3
  import { Link } from "@tanstack/react-router";
4
4
  import { ChevronRightIcon, Play, PlayCircle, Square, Trash2 } from "lucide-react";
5
5
  import { useState } from "react";
6
- import { useTranslation } from "react-i18next";
6
+ import { useVertexTranslation } from "../../lib/vertex-translation.js";
7
7
  import { Alert, AlertDescription } from "../alert/alert.js";
8
8
  import { Badge } from "../badge/badge.js";
9
9
  import { Button } from "../button/button.js";
@@ -56,7 +56,7 @@ function useControlledTable(initialSorting = []) {
56
56
  };
57
57
  }
58
58
  const SolutionTestsView = ({ tests, batchRuns, loading, error, hasActiveRuns, runningAll, runningSelected, runningTestId, togglingTestId, isDeleting, forceStoppingBatchId, deleteConfirmId, setDeleteConfirmId, runConfirm, setRunConfirm, onConfirmRun, onToggleActive, onDeleteTest, onForceStopBatch, renderExpandedTest, renderExpandedRun, activeTab: activeTabProp, onTabChange })=>{
59
- const { t } = useTranslation();
59
+ const { t } = useVertexTranslation();
60
60
  const config = useSolutionTestsConfig();
61
61
  const [internalTab, setInternalTab] = useState("cases");
62
62
  const activeTab = activeTabProp ?? internalTab;
@@ -3,7 +3,7 @@ import { jsx } from "react/jsx-runtime";
3
3
  import { useNavigate, useSearch } from "@tanstack/react-router";
4
4
  import { useState } from "react";
5
5
  import { toast } from "sonner";
6
- import { useTranslation } from "react-i18next";
6
+ import { useVertexTranslation } from "../../lib/vertex-translation.js";
7
7
  import { normalizeTab } from "./tabs.js";
8
8
  import { RunStatus } from "./types.js";
9
9
  import { useDeleteTest, useForceStopBatch, useRunTests, useSolutionTestBatchRuns, useSolutionTestRuns, useSolutionTests, useToggleTestActive } from "./hooks.js";
@@ -14,7 +14,7 @@ function getRunsForBatch(batchId, allRuns) {
14
14
  return allRuns.filter((r)=>r.RunBatchId === batchId);
15
15
  }
16
16
  const SolutionTests = ()=>{
17
- const { t } = useTranslation();
17
+ const { t } = useVertexTranslation();
18
18
  const { tests, isLoading: testsLoading } = useSolutionTests();
19
19
  const { batchRuns, isLoading: batchLoading } = useSolutionTestBatchRuns();
20
20
  const { runs: allRuns } = useSolutionTestRuns();
@@ -1,11 +1,11 @@
1
1
  "use client";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
- import { useTranslation } from "react-i18next";
3
+ import { useVertexTranslation } from "../../lib/vertex-translation.js";
4
4
  import { Info } from "lucide-react";
5
5
  import { Tooltip, TooltipContent, TooltipTrigger } from "../tooltip/tooltip.js";
6
6
  import { categoryBorderStyles, parseUserMessages, severityColors, severityIcons, worstSeverity } from "./user-messages.js";
7
7
  const UserMessagesView = ({ messages })=>{
8
- const { t } = useTranslation();
8
+ const { t } = useVertexTranslation();
9
9
  const parsed = parseUserMessages(messages);
10
10
  if (0 === parsed.length) return null;
11
11
  return /*#__PURE__*/ jsx("div", {
@@ -21,7 +21,7 @@ const UserMessagesView = ({ messages })=>{
21
21
  });
22
22
  };
23
23
  const UserMessagesIcon = ({ messages })=>{
24
- const { t } = useTranslation();
24
+ const { t } = useVertexTranslation();
25
25
  const parsed = parseUserMessages(messages);
26
26
  const severity = worstSeverity(parsed);
27
27
  if (!severity) return null;
@@ -1,9 +1,9 @@
1
1
  "use client";
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
- import { useTranslation } from "react-i18next";
3
+ import { useVertexTranslation } from "../../lib/vertex-translation.js";
4
4
  import { Tooltip, TooltipContent, TooltipTrigger } from "../tooltip/tooltip.js";
5
5
  const VersionDeltaGlyph = ({ direction, baseline })=>{
6
- const { t } = useTranslation();
6
+ const { t } = useVertexTranslation();
7
7
  if (0 === direction) return null;
8
8
  const label = t("version_differs_from_baseline");
9
9
  return /*#__PURE__*/ jsxs(Tooltip, {
@@ -1,7 +1 @@
1
- export { Stepper, type StepperProps, stepperVariants } from "./stepper";
2
- export { StepperContent, StepperDescription, StepperTitle, } from "./stepper-content";
3
- export type { StepperItemState, StepperOrientation, } from "./stepper-context";
4
- export { StepperIndicator } from "./stepper-indicator";
5
- export { StepperItem, type StepperItemProps, stepperItemVariants, } from "./stepper-item";
6
- export { StepperSeparator } from "./stepper-separator";
7
- export { StepperTrigger } from "./stepper-trigger";
1
+ export { Stepper, StepperContent, StepperDescription, StepperIndicator, StepperItem, type StepperItemProps, type StepperItemState, type StepperOrientation, type StepperProps, StepperSeparator, StepperTitle, StepperTrigger, stepperItemVariants, stepperVariants, } from "./stepper";
@@ -1,7 +1,2 @@
1
- import { Stepper, stepperVariants } from "./stepper.js";
2
- import { StepperContent, StepperDescription, StepperTitle } from "./stepper-content.js";
3
- import { StepperIndicator } from "./stepper-indicator.js";
4
- import { StepperItem, stepperItemVariants } from "./stepper-item.js";
5
- import { StepperSeparator } from "./stepper-separator.js";
6
- import { StepperTrigger } from "./stepper-trigger.js";
1
+ import { Stepper, StepperContent, StepperDescription, StepperIndicator, StepperItem, StepperSeparator, StepperTitle, StepperTrigger, stepperItemVariants, stepperVariants } from "./stepper.js";
7
2
  export { Stepper, StepperContent, StepperDescription, StepperIndicator, StepperItem, StepperSeparator, StepperTitle, StepperTrigger, stepperItemVariants, stepperVariants };
@@ -2,10 +2,10 @@
2
2
  import { jsx, jsxs } from "react/jsx-runtime";
3
3
  import { flexRender, getCoreRowModel, useReactTable } from "@tanstack/react-table";
4
4
  import { useMemo, useState } from "react";
5
- import { useTranslation } from "react-i18next";
5
+ import { useVertexTranslation } from "../../lib/vertex-translation.js";
6
6
  import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "../table/table.js";
7
7
  function TableChart({ columns, rows, sort, onSortChange }) {
8
- const { t } = useTranslation();
8
+ const { t } = useVertexTranslation();
9
9
  const [sorting, setSorting] = useState(()=>sort ? [
10
10
  {
11
11
  id: sort.field,
@@ -1,7 +1,7 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
2
  import { useIsFetching, useSuspenseQuery } from "@tanstack/react-query";
3
3
  import { useDeferredValue } from "react";
4
- import { useTranslation } from "react-i18next";
4
+ import { useVertexTranslation } from "../../lib/vertex-translation.js";
5
5
  import { ChartLoadingBoundary, SpinnerWithChildren, dataTypeAlignment, format } from "../charts-core/charts-core.js";
6
6
  import { TableChart } from "./table-chart-view.js";
7
7
  const DEFAULT_TABLE_STATE = {
@@ -21,7 +21,7 @@ function TableChartWithAdapter({ configuration, dataModel, dataAdapter, state =
21
21
  });
22
22
  }
23
23
  function TableChartResolver({ configuration, dataModel, dataAdapter, state = DEFAULT_TABLE_STATE, onStateChange }) {
24
- const { i18n: { language } } = useTranslation();
24
+ const { i18n: { language } } = useVertexTranslation();
25
25
  const deferrableProps = useDeferredValue({
26
26
  configuration,
27
27
  dataModel,
package/package.json CHANGED
@@ -1,8 +1,11 @@
1
1
  {
2
2
  "name": "@uipath/apollo-vertex",
3
- "version": "0.1.0",
3
+ "version": "0.4.0",
4
4
  "description": "UiPath Apollo Vertex design system components",
5
5
  "license": "MIT",
6
+ "keywords": [
7
+ "tanstack-intent"
8
+ ],
6
9
  "type": "module",
7
10
  "main": "./dist/entries/index.js",
8
11
  "types": "./dist/entries/index.d.ts",
@@ -14,50 +17,19 @@
14
17
  "types": "./dist/entries/index.d.ts",
15
18
  "default": "./dist/entries/index.js"
16
19
  },
17
- "./charts": {
18
- "types": "./dist/entries/charts/index.d.ts",
19
- "default": "./dist/entries/charts/index.js"
20
- },
21
- "./shell": {
22
- "types": "./dist/entries/shell/index.d.ts",
23
- "default": "./dist/entries/shell/index.js"
24
- },
25
- "./shell/entities": {
26
- "types": "./dist/entries/shell/entities.d.ts",
27
- "default": "./dist/entries/shell/entities.js"
28
- },
29
- "./feature-flags": {
30
- "types": "./dist/entries/feature-flags/index.d.ts",
31
- "default": "./dist/entries/feature-flags/index.js"
32
- },
33
- "./feature-flags/proteus": {
34
- "types": "./dist/entries/feature-flags/proteus.d.ts",
35
- "default": "./dist/entries/feature-flags/proteus.js"
36
- },
37
- "./solution-tests": {
38
- "types": "./dist/entries/solution-tests/index.d.ts",
39
- "default": "./dist/entries/solution-tests/index.js"
40
- },
41
- "./solution-tests/data": {
42
- "types": "./dist/entries/solution-tests/data.d.ts",
43
- "default": "./dist/entries/solution-tests/data.js"
44
- },
45
- "./ai-chat": {
46
- "types": "./dist/entries/ai-chat/index.d.ts",
47
- "default": "./dist/entries/ai-chat/index.js"
48
- },
49
20
  "./theme.css": "./dist/theme.css",
50
21
  "./tailwind.css": "./dist/tailwind.css",
51
22
  "./locales/*": "./dist/locales/*"
52
23
  },
53
24
  "files": [
54
- "dist"
25
+ "dist",
26
+ "skills"
55
27
  ],
56
28
  "dependencies": {
57
29
  "@dnd-kit/core": "^6.3.1",
58
30
  "@dnd-kit/sortable": "^10.0.0",
59
31
  "@dnd-kit/utilities": "^3.2.2",
60
- "@mantine/hooks": "^9.0.0",
32
+ "@mantine/hooks": "^9.6.3",
61
33
  "@radix-ui/react-accordion": "^1.2.12",
62
34
  "@radix-ui/react-alert-dialog": "^1.1.15",
63
35
  "@radix-ui/react-aspect-ratio": "^1.1.8",
@@ -84,7 +56,7 @@
84
56
  "@radix-ui/react-toggle": "^1.1.10",
85
57
  "@radix-ui/react-toggle-group": "^1.1.11",
86
58
  "@radix-ui/react-tooltip": "^1.2.8",
87
- "@tanstack/react-form": "^1.33.0",
59
+ "@tanstack/react-form": "^1.33.5",
88
60
  "@tanstack/react-store": "^0.11.0",
89
61
  "@tanstack/react-table": "^8.21.3",
90
62
  "@types/luxon": "^3.7.1",
@@ -93,13 +65,11 @@
93
65
  "cmdk": "^1.1.1",
94
66
  "embla-carousel-react": "^8.6.0",
95
67
  "framer-motion": "^13.1.0",
96
- "i18next": "^25.8.1",
97
68
  "input-otp": "^1.4.2",
98
69
  "lucide-react": "^0.577.0",
99
70
  "luxon": "^3.7.1",
100
71
  "next-themes": "^0.4.6",
101
72
  "react-day-picker": "^9.13.0",
102
- "react-i18next": "^16.5.4",
103
73
  "react-joyride": "^3.0.2",
104
74
  "react-resizable-panels": "^4.7.3",
105
75
  "sonner": "^2.0.7",
@@ -117,11 +87,13 @@
117
87
  "@uipath/uipath-typescript": "^1.7.1",
118
88
  "eventsource-parser": "^3.0.6",
119
89
  "highlight.js": "^11.11.1",
90
+ "i18next": "^25.8.1 || ^26.0.0",
120
91
  "jwt-decode": "^4.0.0",
121
92
  "pkce-challenge": "^6.0.0",
122
93
  "react": ">=19.2.0",
123
94
  "react-dom": ">=19.2.0",
124
95
  "react-error-boundary": "^6.0.0",
96
+ "react-i18next": "^16.5.4 || ^17.0.0",
125
97
  "react-markdown": "^10.1.0",
126
98
  "recharts": "^2.15.4",
127
99
  "remark-breaks": "^4.0.0",
@@ -129,59 +101,14 @@
129
101
  "tailwindcss": "^4.0.0"
130
102
  },
131
103
  "peerDependenciesMeta": {
132
- "@tanstack/ai": {
133
- "optional": true
134
- },
135
- "@tanstack/ai-client": {
136
- "optional": true
137
- },
138
104
  "@tanstack/react-db": {
139
105
  "optional": true
140
106
  },
141
- "@tanstack/react-query": {
142
- "optional": true
143
- },
144
- "@tanstack/react-router": {
145
- "optional": true
146
- },
147
- "@ts-rest/core": {
148
- "optional": true
149
- },
150
107
  "@uipath/proteus-client": {
151
108
  "optional": true
152
109
  },
153
- "@uipath/uipath-typescript": {
154
- "optional": true
155
- },
156
110
  "@uipath/vs-core": {
157
111
  "optional": true
158
- },
159
- "eventsource-parser": {
160
- "optional": true
161
- },
162
- "highlight.js": {
163
- "optional": true
164
- },
165
- "jwt-decode": {
166
- "optional": true
167
- },
168
- "pkce-challenge": {
169
- "optional": true
170
- },
171
- "react-error-boundary": {
172
- "optional": true
173
- },
174
- "react-markdown": {
175
- "optional": true
176
- },
177
- "recharts": {
178
- "optional": true
179
- },
180
- "remark-breaks": {
181
- "optional": true
182
- },
183
- "remark-gfm": {
184
- "optional": true
185
112
  }
186
113
  },
187
114
  "devDependencies": {
@@ -190,17 +117,23 @@
190
117
  "@rslib/core": "^0.19.6",
191
118
  "@tanstack/ai": "0.14.0",
192
119
  "@tanstack/ai-client": "0.8.0",
193
- "@tanstack/react-query": "^5.90.21",
194
- "@tanstack/react-router": "^1.132.31",
120
+ "@tanstack/intent": "0.4.0",
121
+ "@tanstack/react-query": "^5.104.0",
122
+ "@tanstack/react-router": "^1.170.40",
123
+ "@testing-library/dom": "^10.4.1",
124
+ "@testing-library/react": "^16.3.0",
195
125
  "@ts-rest/core": "^3.53.0-rc.1",
196
126
  "@types/node": "^24.10.1",
197
127
  "@types/react": "^19.2.6",
198
128
  "@types/react-dom": "^19.2.2",
199
- "@uipath/uipath-typescript": "^1.7.1",
129
+ "@uipath/uipath-typescript": "^1.8.0",
130
+ "@vitest/coverage-v8": "^4.1.5",
200
131
  "dependency-cruiser": "^17.3.6",
201
132
  "eslint-plugin-react": "^7.37.5",
202
133
  "eventsource-parser": "^3.0.6",
203
134
  "highlight.js": "^11.11.1",
135
+ "i18next": "^26.4.2",
136
+ "jsdom": "^27.2.0",
204
137
  "jwt-decode": "^4.0.0",
205
138
  "oxlint": "^1.38.0",
206
139
  "oxlint-tsgolint": "^0.18.1",
@@ -208,11 +141,14 @@
208
141
  "react": "19.2.3",
209
142
  "react-dom": "19.2.3",
210
143
  "react-error-boundary": "^6.0.0",
144
+ "react-i18next": "^17.0.15",
211
145
  "react-markdown": "^10.1.0",
212
146
  "recharts": "2.15.4",
213
147
  "remark-breaks": "^4.0.0",
214
148
  "remark-gfm": "^4.0.1",
215
- "tailwindcss": "^4.1.17"
149
+ "tailwindcss": "^4.1.17",
150
+ "typescript": "^5.9.3",
151
+ "vitest": "^4.1.11"
216
152
  },
217
153
  "publishConfig": {
218
154
  "access": "public"
@@ -233,6 +169,9 @@
233
169
  "lint": "oxlint --type-aware",
234
170
  "lint:fix": "oxlint --fix --type-aware",
235
171
  "lint:deps": "depcruise registry --config .dependency-cruiser.cjs",
236
- "typecheck": "tsc --noEmit"
172
+ "typecheck": "tsc --noEmit",
173
+ "lint:skills": "intent validate skills",
174
+ "test": "vitest run",
175
+ "test:coverage": "vitest run --coverage"
237
176
  }
238
177
  }
@@ -0,0 +1,168 @@
1
+ ---
2
+ name: use-vertex-components
3
+ description: >
4
+ Build all new UI from @uipath/apollo-vertex components instead of writing
5
+ new ones. Covers which Vertex component to use for common needs (buttons,
6
+ forms, dialogs, tables, page headers, empty states, charts, toasts), how to
7
+ adapt them with variants, className and composition, and what not to do:
8
+ hand-rolled primitives, raw Radix or other UI libraries, or copied shadcn
9
+ code. Load before building or changing any UI in an app that uses Apollo
10
+ Vertex.
11
+ metadata:
12
+ type: core
13
+ library: '@uipath/apollo-vertex'
14
+ sources:
15
+ - 'UiPath/apollo-ui:packages/apollo-vertex/entries/index.ts'
16
+ - 'UiPath/apollo-ui:packages/apollo-vertex/registry/**/*.tsx'
17
+ ---
18
+
19
+ # Use Apollo Vertex components
20
+
21
+ Apollo Vertex is the component library for this app. Build every new screen,
22
+ form and widget out of its components. Do not write replacements for Vertex
23
+ components.
24
+
25
+ ## Rules
26
+
27
+ 1. Before writing any markup that renders a control, surface or feedback
28
+ element, find the Vertex component for it and import it from
29
+ `@uipath/apollo-vertex`.
30
+ 2. If a Vertex component almost fits, adapt it with its props, `variant`,
31
+ `size`, `className` or `asChild`. Do not fork or copy it.
32
+ 3. If no single component fits, compose several Vertex components. A new
33
+ app-level component is fine only when it is built from Vertex components
34
+ and adds app logic, not new styling of basic elements.
35
+ 4. Never build your own button, input, select, dialog, menu, tooltip, table,
36
+ tabs, card or similar primitive. Never add another UI library (MUI, Chakra,
37
+ Ant Design, Headless UI) or raw Radix primitives, and never copy shadcn/ui
38
+ source into the app.
39
+ 5. If you are sure Vertex has nothing for the need, stop and tell the user what
40
+ is missing before building it.
41
+
42
+ ## Pick the component
43
+
44
+ | Need | Use |
45
+ | --- | --- |
46
+ | Actions | `Button`, `ButtonGroup`, `Toggle`, `ToggleGroup` |
47
+ | Text and choice inputs | `Input`, `InputGroup`, `Textarea`, `Select`, `Combobox`, `Checkbox`, `RadioGroup`, `Switch`, `Slider`, `InputOTP` |
48
+ | Dates | `DatePicker`, `Calendar` |
49
+ | Form layout, labels and errors | `Field`, `FieldGroup`, `FieldLabel`, `FieldDescription`, `FieldError`, `Label` |
50
+ | Multi-step forms | `FormWizard`, `Stepper` |
51
+ | Overlays | `Dialog`, `AlertDialog`, `Sheet`, `Drawer`, `Popover`, `HoverCard`, `Tooltip` |
52
+ | Menus | `DropdownMenu`, `ContextMenu`, `Menubar`, `Command`, `NavigationMenu` |
53
+ | Page structure | `PageHeader`, `Breadcrumb`, `Tabs`, `Card`, `Separator`, `ResizablePanelGroup`, `ScrollArea`, `Sidebar` |
54
+ | Lists and tables | `DataTable` with `useDataTable`, `Table`, `Item`, `Pagination` |
55
+ | Status and feedback | `Badge`, `Alert`, `Toaster`, `Progress`, `Spinner`, `Skeleton`, `Empty` |
56
+ | Metrics and charts | `MetricCard`, plus `BarChart`, `LineChart`, `KpiChart` and the other charts |
57
+ | AI content | `AiMark`, `AiGlow`, `AiCaveat`, `ConfidenceSignal`, `FeedbackVoteWidget` |
58
+ | Misc | `Avatar`, `Accordion`, `Collapsible`, `Carousel`, `TimelineRowLayout`, `Kbd`, `AspectRatio` |
59
+
60
+ Import all of them from `@uipath/apollo-vertex`.
61
+
62
+ ## Adapting a component
63
+
64
+ Use the built-in variants first:
65
+
66
+ ```tsx
67
+ import { Button } from "@uipath/apollo-vertex";
68
+
69
+ <Button variant="destructive-outline" size="sm">Delete</Button>
70
+ ```
71
+
72
+ Use `className` for layout and spacing, and `cn()` from the package when classes
73
+ must merge or override:
74
+
75
+ ```tsx
76
+ import { Card, CardContent, cn } from "@uipath/apollo-vertex";
77
+
78
+ <Card className={cn("w-full", isSelected && "border-primary")}>
79
+ <CardContent>...</CardContent>
80
+ </Card>
81
+ ```
82
+
83
+ Use `asChild` to give a router link the look of a Vertex component:
84
+
85
+ ```tsx
86
+ <Button asChild variant="link">
87
+ <Link to="/invoices">Invoices</Link>
88
+ </Button>
89
+ ```
90
+
91
+ Use the theme's semantic tokens (`bg-primary`, `text-muted-foreground`,
92
+ `border-destructive`) rather than raw colors such as `bg-blue-500` or hex values.
93
+
94
+ ## Common Mistakes
95
+
96
+ ### CRITICAL Writing a new primitive
97
+
98
+ Wrong:
99
+
100
+ ```tsx
101
+ function PrimaryButton({ children, ...props }: React.ComponentProps<"button">) {
102
+ return (
103
+ <button className="rounded-md bg-blue-600 px-4 py-2 text-white" {...props}>
104
+ {children}
105
+ </button>
106
+ );
107
+ }
108
+ ```
109
+
110
+ Correct:
111
+
112
+ ```tsx
113
+ import { Button } from "@uipath/apollo-vertex";
114
+
115
+ <Button>Save</Button>
116
+ ```
117
+
118
+ A hand-rolled control drifts from the design system and misses its focus,
119
+ dark mode and accessibility behavior.
120
+
121
+ ### CRITICAL Bringing in another UI library or raw Radix
122
+
123
+ Wrong:
124
+
125
+ ```tsx
126
+ import * as DialogPrimitive from "@radix-ui/react-dialog";
127
+ ```
128
+
129
+ Correct:
130
+
131
+ ```tsx
132
+ import { Dialog, DialogContent, DialogTitle, DialogTrigger } from "@uipath/apollo-vertex";
133
+ ```
134
+
135
+ The raw primitive has none of the Vertex styling.
136
+
137
+ ### HIGH Copying a Vertex or shadcn component to change it
138
+
139
+ Wrong: copying the `Badge` source into `src/components/my-badge.tsx` to add a
140
+ color.
141
+
142
+ Correct: use an existing `variant`, or pass `className`. If neither is enough,
143
+ tell the user the variant is missing.
144
+
145
+ A copy stops getting fixes and theme updates from the package.
146
+
147
+ ### HIGH Building an empty or loading state by hand
148
+
149
+ Wrong:
150
+
151
+ ```tsx
152
+ <div className="flex flex-col items-center p-8 text-gray-500">No invoices yet</div>
153
+ ```
154
+
155
+ Correct:
156
+
157
+ ```tsx
158
+ import { Empty, EmptyDescription, EmptyHeader, EmptyTitle } from "@uipath/apollo-vertex";
159
+
160
+ <Empty>
161
+ <EmptyHeader>
162
+ <EmptyTitle>No invoices yet</EmptyTitle>
163
+ <EmptyDescription>Invoices you create appear here.</EmptyDescription>
164
+ </EmptyHeader>
165
+ </Empty>
166
+ ```
167
+
168
+ Use `Skeleton` or `Spinner` for loading and `Alert` for errors in the same way.
@@ -1,17 +0,0 @@
1
- export { createAgentHubConnection } from "../../registry/ai-chat/adapters/agenthub/adapter";
2
- export type { AgentHubAdapterConfig, AgentHubVendor, } from "../../registry/ai-chat/adapters/agenthub/adapter";
3
- export { createConversationalAgentConnection } from "../../registry/ai-chat/adapters/conversational-agent/adapter";
4
- export type { ConversationalAgentAdapterConfig } from "../../registry/ai-chat/adapters/conversational-agent/adapter";
5
- export { AiChat } from "../../registry/ai-chat/components/ai-chat";
6
- export { AiChatEmptyState } from "../../registry/ai-chat/components/ai-chat-empty-state";
7
- export { AutopilotGradientIcon } from "../../registry/ai-chat/components/icons/autopilot-gradient";
8
- export * from "../../registry/ai-chat/tools/choices";
9
- export type { Entity } from "../../registry/ai-chat/tools/data-fabric/util/entities";
10
- export * from "../../registry/ai-chat/tools/data-fabric-bar";
11
- export * from "../../registry/ai-chat/tools/data-fabric-distribution";
12
- export * from "../../registry/ai-chat/tools/data-fabric-kpi";
13
- export * from "../../registry/ai-chat/tools/data-fabric-line";
14
- export * from "../../registry/ai-chat/tools/data-fabric-multi-line";
15
- export * from "../../registry/ai-chat/tools/data-fabric-table";
16
- export * from "../../registry/ai-chat/tools/data-fabric";
17
- export type { MessageFeedbackType } from "../../registry/ai-chat/types";
@@ -1,14 +0,0 @@
1
- import { createAgentHubConnection } from "../../registry/ai-chat/adapters/agenthub/adapter.js";
2
- import { createConversationalAgentConnection } from "../../registry/ai-chat/adapters/conversational-agent/adapter.js";
3
- import { AiChat } from "../../registry/ai-chat/components/ai-chat.js";
4
- import { AiChatEmptyState } from "../../registry/ai-chat/components/ai-chat-empty-state.js";
5
- import { AutopilotGradientIcon } from "../../registry/ai-chat/components/icons/autopilot-gradient.js";
6
- export * from "../../registry/ai-chat/tools/choices/index.js";
7
- export * from "../../registry/ai-chat/tools/data-fabric-bar/index.js";
8
- export * from "../../registry/ai-chat/tools/data-fabric-distribution/index.js";
9
- export * from "../../registry/ai-chat/tools/data-fabric-kpi/index.js";
10
- export * from "../../registry/ai-chat/tools/data-fabric-line/index.js";
11
- export * from "../../registry/ai-chat/tools/data-fabric-multi-line/index.js";
12
- export * from "../../registry/ai-chat/tools/data-fabric-table/index.js";
13
- export * from "../../registry/ai-chat/tools/data-fabric/index.js";
14
- export { AiChat, AiChatEmptyState, AutopilotGradientIcon, createAgentHubConnection, createConversationalAgentConnection };
@@ -1,10 +0,0 @@
1
- export * from "../../registry/chart/chart";
2
- export * from "../../registry/bar-chart/bar-chart";
3
- export * from "../../registry/distribution-chart/distribution-chart";
4
- export * from "../../registry/kpi-chart/kpi-chart";
5
- export * from "../../registry/line-chart/line-chart";
6
- export * from "../../registry/multi-line-chart/multi-line-chart";
7
- export * from "../../registry/table-chart/table-chart";
8
- export * from "../../registry/charts-core/charts-core";
9
- export * from "../../registry/data-fabric-adapter/data-fabric-adapter";
10
- export * from "../../registry/insights-adapter/insights-adapter";
@@ -1,10 +0,0 @@
1
- export * from "../../registry/chart/chart.js";
2
- export * from "../../registry/bar-chart/bar-chart.js";
3
- export * from "../../registry/distribution-chart/distribution-chart.js";
4
- export * from "../../registry/kpi-chart/kpi-chart.js";
5
- export * from "../../registry/line-chart/line-chart.js";
6
- export * from "../../registry/multi-line-chart/multi-line-chart.js";
7
- export * from "../../registry/table-chart/table-chart.js";
8
- export * from "../../registry/charts-core/charts-core.js";
9
- export * from "../../registry/data-fabric-adapter/data-fabric-adapter.js";
10
- export * from "../../registry/insights-adapter/insights-adapter.js";
@@ -1,5 +0,0 @@
1
- export { FeatureFlagContext, FeatureFlagProvider, useFeatureFlagProvider, } from "../../registry/feature-flag-provider/feature-flag-provider";
2
- export { FeatureFlagGuard } from "../../registry/feature-flag-guard/feature-flag-guard";
3
- export { ProtectedFeatureRoute } from "../../registry/protected-feature-route/protected-feature-route";
4
- export { useFeatureFlag } from "../../registry/use-feature-flag/use-feature-flag";
5
- export type { FeatureFlagProviderConfig, FeatureFlagUserContext, } from "../../registry/feature-flag-provider/types";
@@ -1,5 +0,0 @@
1
- import { FeatureFlagContext, FeatureFlagProvider, useFeatureFlagProvider } from "../../registry/feature-flag-provider/feature-flag-provider.js";
2
- import { FeatureFlagGuard } from "../../registry/feature-flag-guard/feature-flag-guard.js";
3
- import { ProtectedFeatureRoute } from "../../registry/protected-feature-route/protected-feature-route.js";
4
- import { useFeatureFlag } from "../../registry/use-feature-flag/use-feature-flag.js";
5
- export { FeatureFlagContext, FeatureFlagGuard, FeatureFlagProvider, ProtectedFeatureRoute, useFeatureFlag, useFeatureFlagProvider };