@acmekit/dashboard 2.13.22 → 2.13.24

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.
@@ -7,7 +7,7 @@ import {
7
7
  import {
8
8
  DateCell,
9
9
  PlaceholderCell
10
- } from "./chunk-RSLTE3VD.mjs";
10
+ } from "./chunk-QZOY6YYT.mjs";
11
11
  import {
12
12
  _DataTable,
13
13
  useDataTable
package/dist/app.js CHANGED
@@ -7264,7 +7264,7 @@ var init_placeholder_cell2 = __esm({
7264
7264
  });
7265
7265
 
7266
7266
  // src/components/table/table-cells/common/date-cell/date-cell.tsx
7267
- var import_ui53, import_react_i18next38, import_jsx_runtime72, DateCell, DateHeader;
7267
+ var import_ui53, import_react_i18next38, import_jsx_runtime72, DateCell;
7268
7268
  var init_date_cell = __esm({
7269
7269
  "src/components/table/table-cells/common/date-cell/date-cell.tsx"() {
7270
7270
  "use strict";
@@ -7290,10 +7290,6 @@ var init_date_cell = __esm({
7290
7290
  }
7291
7291
  ) });
7292
7292
  };
7293
- DateHeader = () => {
7294
- const { t: t3 } = (0, import_react_i18next38.useTranslation)();
7295
- return /* @__PURE__ */ (0, import_jsx_runtime72.jsx)("div", { className: "flex h-full w-full items-center", children: /* @__PURE__ */ (0, import_jsx_runtime72.jsx)("span", { className: "truncate", children: t3("fields.date") }) });
7296
- };
7297
7293
  }
7298
7294
  });
7299
7295
 
@@ -8549,24 +8545,13 @@ var init_use_workflow_execution_table_columns = __esm({
8549
8545
  const { t: t3 } = (0, import_react_i18next47.useTranslation)();
8550
8546
  return (0, import_react68.useMemo)(
8551
8547
  () => [
8552
- columnHelper5.accessor("id", {
8553
- header: t3("fields.id"),
8554
- cell: ({ row }) => {
8555
- const fullId = row.original.id;
8556
- const cleanId = fullId.replace("wf_exec_", "");
8557
- return /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)("div", { className: "flex items-center gap-x-1", children: [
8558
- /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { className: "truncate", children: cleanId }),
8559
- /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(import_ui65.Copy, { content: fullId, className: "text-ui-fg-muted" })
8560
- ] });
8561
- }
8562
- }),
8563
- columnHelper5.accessor("transaction_id", {
8564
- header: t3("workflowExecutions.transactionIdLabel"),
8548
+ columnHelper5.accessor("workflow_id", {
8549
+ header: t3("workflowExecutions.workflowIdLabel"),
8565
8550
  cell: ({ getValue: getValue2 }) => {
8566
- const transactionId = getValue2();
8551
+ const workflowId = getValue2();
8567
8552
  return /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)("div", { className: "flex items-center gap-x-1", children: [
8568
- /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(import_ui65.Badge, { size: "2xsmall", className: "truncate", children: transactionId }),
8569
- /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(import_ui65.Copy, { content: transactionId, className: "text-ui-fg-muted" })
8553
+ /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(import_ui65.Badge, { size: "2xsmall", className: "truncate", children: workflowId }),
8554
+ /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(import_ui65.Copy, { content: workflowId, className: "text-ui-fg-muted" })
8570
8555
  ] });
8571
8556
  }
8572
8557
  }),
@@ -8584,7 +8569,7 @@ var init_use_workflow_execution_table_columns = __esm({
8584
8569
  cell: ({ getValue: getValue2 }) => {
8585
8570
  const steps = getValue2()?.steps;
8586
8571
  if (!steps) {
8587
- return /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { className: "text-ui-fg-subtle", children: t3("workflowExecutions.stepsCompletedLabel", {
8572
+ return /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { className: "text-ui-fg-subtle whitespace-nowrap", children: t3("workflowExecutions.stepsCompletedLabel", {
8588
8573
  completed: 0,
8589
8574
  count: 0
8590
8575
  }) });
@@ -8599,12 +8584,17 @@ var init_use_workflow_execution_table_columns = __esm({
8599
8584
  /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("div", { className: "flex items-center gap-x-[3px]", children: actionableSteps.map((step) => /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(
8600
8585
  "div",
8601
8586
  {
8602
- className: "bg-ui-bg-switch-off shadow-details-switch-background h-3 w-1.5 rounded-full",
8587
+ className: (0, import_ui65.clx)(
8588
+ "bg-ui-bg-switch-off shadow-details-switch-background h-3 w-1.5 rounded-full",
8589
+ {
8590
+ "bg-ui-fg-muted": step.invoke.state === "done" /* DONE */
8591
+ }
8592
+ ),
8603
8593
  "data-completed": step.invoke.state === "done" /* DONE */
8604
8594
  },
8605
8595
  step.id
8606
8596
  )) }),
8607
- /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { className: "text-ui-fg-subtle", children: t3("workflowExecutions.stepsCompletedLabel", {
8597
+ /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { className: "text-ui-fg-subtle whitespace-nowrap", children: t3("workflowExecutions.stepsCompletedLabel", {
8608
8598
  completed: completedSteps.length,
8609
8599
  count: actionableSteps.length
8610
8600
  }) })
@@ -8638,49 +8628,25 @@ var init_use_workflow_execution_table_columns = __esm({
8638
8628
  label = `${hours}h ${minutes % 60}m`;
8639
8629
  } else if (minutes > 0) {
8640
8630
  label = `${minutes}m ${seconds % 60}s`;
8641
- } else {
8631
+ } else if (seconds > 0) {
8642
8632
  label = `${seconds}s`;
8633
+ } else if (ms > 0) {
8634
+ label = "<1s";
8635
+ } else {
8636
+ label = "0s";
8643
8637
  }
8644
8638
  return /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(import_ui65.Text, { size: "small", leading: "compact", className: "text-ui-fg-subtle", children: label });
8645
8639
  }
8646
8640
  }),
8647
- columnHelper5.accessor("execution", {
8648
- id: "last_step",
8649
- header: t3("workflowExecutions.lastStepLabel"),
8650
- cell: ({ getValue: getValue2 }) => {
8651
- const execution = getValue2();
8652
- const steps = execution?.steps;
8653
- if (!steps) {
8654
- return /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(import_ui65.Text, { size: "small", leading: "compact", className: "text-ui-fg-subtle", children: "-" });
8655
- }
8656
- const actionableSteps = Object.values(
8657
- steps
8658
- ).filter((step) => step.id !== ROOT_PREFIX);
8659
- if (!actionableSteps.length) {
8660
- return /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(import_ui65.Text, { size: "small", leading: "compact", className: "text-ui-fg-subtle", children: "-" });
8661
- }
8662
- const lastStep = actionableSteps.reduce((latest, current) => {
8663
- if (!latest) {
8664
- return current;
8665
- }
8666
- return current.startedAt > latest.startedAt ? current : latest;
8667
- }, void 0);
8668
- const lastStepId = lastStep?.id.split(".").pop();
8669
- if (!lastStep || !lastStepId) {
8670
- return /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(import_ui65.Text, { size: "small", leading: "compact", className: "text-ui-fg-subtle", children: "-" });
8671
- }
8672
- return /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(import_ui65.Text, { size: "small", leading: "compact", className: "text-ui-fg-subtle", children: lastStepId });
8673
- }
8674
- }),
8675
8641
  columnHelper5.accessor("created_at", {
8676
- header: () => /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(DateHeader, {}),
8642
+ header: t3("fields.createdAt"),
8677
8643
  cell: ({ getValue: getValue2 }) => {
8678
8644
  const date = getValue2();
8679
8645
  return /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(DateCell, { date });
8680
8646
  }
8681
8647
  }),
8682
8648
  columnHelper5.accessor("updated_at", {
8683
- header: () => /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(DateHeader, {}),
8649
+ header: t3("fields.updatedAt"),
8684
8650
  cell: ({ getValue: getValue2 }) => {
8685
8651
  const date = getValue2();
8686
8652
  return /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(DateCell, { date });
@@ -8952,7 +8918,6 @@ var init_workflow_execution_general_section = __esm({
8952
8918
  import_react_i18next50 = require("react-i18next");
8953
8919
  init_utils2();
8954
8920
  init_types();
8955
- init_date_cell();
8956
8921
  init_use_date();
8957
8922
  init_constants2();
8958
8923
  import_jsx_runtime93 = require("react/jsx-runtime");
@@ -9037,25 +9002,11 @@ var init_workflow_execution_general_section = __esm({
9037
9002
  ] }),
9038
9003
  /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)("div", { className: "text-ui-fg-subtle grid grid-cols-2 px-6 py-4", children: [
9039
9004
  /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(import_ui67.Text, { size: "small", leading: "compact", weight: "plus", children: t3("fields.createdAt") }),
9040
- /* @__PURE__ */ (0, import_jsx_runtime93.jsx)("div", { className: "flex items-center", children: /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(DateCell, { date: createdAt }) })
9005
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(import_ui67.Text, { size: "small", leading: "compact", children: createdAt ? getFullDate({ date: createdAt, includeTime: true }) : "-" })
9041
9006
  ] }),
9042
9007
  /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)("div", { className: "text-ui-fg-subtle grid grid-cols-2 px-6 py-4", children: [
9043
9008
  /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(import_ui67.Text, { size: "small", leading: "compact", weight: "plus", children: t3("fields.updatedAt") }),
9044
- /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)("div", { className: "flex flex-col", children: [
9045
- /* @__PURE__ */ (0, import_jsx_runtime93.jsx)("div", { className: "flex items-center", children: /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(DateCell, { date: updatedAt }) }),
9046
- updatedAt && /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
9047
- import_ui67.Text,
9048
- {
9049
- size: "xsmall",
9050
- leading: "compact",
9051
- className: "text-ui-fg-muted mt-1",
9052
- children: getFullDate({
9053
- date: updatedAt,
9054
- includeTime: true
9055
- })
9056
- }
9057
- )
9058
- ] })
9009
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(import_ui67.Text, { size: "small", leading: "compact", children: updatedAt ? getFullDate({ date: updatedAt, includeTime: true }) : "-" })
9059
9010
  ] })
9060
9011
  ] });
9061
9012
  };
@@ -29880,7 +29831,6 @@ var en_default = {
29880
29831
  transactionIdLabel: "Transaction ID",
29881
29832
  workflowIdLabel: "Workflow ID",
29882
29833
  progressLabel: "Progress",
29883
- lastStepLabel: "Last step",
29884
29834
  metrics: {
29885
29835
  stepsSummary: "{{completed}} of {{total}} steps",
29886
29836
  failedSteps: "{{count}} failed",
package/dist/app.mjs CHANGED
@@ -11881,7 +11881,6 @@ var en_default = {
11881
11881
  transactionIdLabel: "Transaction ID",
11882
11882
  workflowIdLabel: "Workflow ID",
11883
11883
  progressLabel: "Progress",
11884
- lastStepLabel: "Last step",
11885
11884
  metrics: {
11886
11885
  stepsSummary: "{{completed}} of {{total}} steps",
11887
11886
  failedSteps: "{{count}} failed",
@@ -95357,7 +95356,7 @@ var defaultSettingsRouteChildren = [
95357
95356
  children: [
95358
95357
  {
95359
95358
  path: "",
95360
- lazy: () => import("./api-key-management-list-UAKJG336.mjs"),
95359
+ lazy: () => import("./api-key-management-list-QK4Q7Y5I.mjs"),
95361
95360
  children: [
95362
95361
  {
95363
95362
  path: "create",
@@ -95399,7 +95398,7 @@ var defaultSettingsRouteChildren = [
95399
95398
  children: [
95400
95399
  {
95401
95400
  path: "",
95402
- lazy: () => import("./api-key-management-list-UAKJG336.mjs"),
95401
+ lazy: () => import("./api-key-management-list-QK4Q7Y5I.mjs"),
95403
95402
  children: [
95404
95403
  {
95405
95404
  path: "create",
@@ -95438,12 +95437,12 @@ var defaultSettingsRouteChildren = [
95438
95437
  children: [
95439
95438
  {
95440
95439
  path: "",
95441
- lazy: () => import("./workflow-execution-list-7QNA5LIH.mjs")
95440
+ lazy: () => import("./workflow-execution-list-DETG4MRT.mjs")
95442
95441
  },
95443
95442
  {
95444
95443
  path: ":id",
95445
95444
  lazy: async () => {
95446
- const { Component, Breadcrumb, loader } = await import("./workflow-execution-detail-AWIFZJSL.mjs");
95445
+ const { Component, Breadcrumb, loader } = await import("./workflow-execution-detail-5O5VCXL3.mjs");
95447
95446
  return {
95448
95447
  Component,
95449
95448
  loader,
@@ -31,13 +31,8 @@ var DateCell = ({ date }) => {
31
31
  }
32
32
  ) });
33
33
  };
34
- var DateHeader = () => {
35
- const { t } = useTranslation();
36
- return /* @__PURE__ */ jsx2("div", { className: "flex h-full w-full items-center", children: /* @__PURE__ */ jsx2("span", { className: "truncate", children: t("fields.date") }) });
37
- };
38
34
 
39
35
  export {
40
36
  PlaceholderCell,
41
- DateCell,
42
- DateHeader
37
+ DateCell
43
38
  };
package/dist/en.json CHANGED
@@ -2965,7 +2965,6 @@
2965
2965
  "transactionIdLabel": "Transaction ID",
2966
2966
  "workflowIdLabel": "Workflow ID",
2967
2967
  "progressLabel": "Progress",
2968
- "lastStepLabel": "Last step",
2969
2968
  "metrics": {
2970
2969
  "stepsSummary": "{{completed}} of {{total}} steps",
2971
2970
  "failedSteps": "{{count}} failed",
@@ -7,9 +7,6 @@ import {
7
7
  getTransactionState,
8
8
  getTransactionStateColor
9
9
  } from "./chunk-RPAL6FHW.mjs";
10
- import {
11
- DateCell
12
- } from "./chunk-RSLTE3VD.mjs";
13
10
  import {
14
11
  useDate
15
12
  } from "./chunk-DFFLVEZ5.mjs";
@@ -163,25 +160,11 @@ var WorkflowExecutionGeneralSection = ({
163
160
  ] }),
164
161
  /* @__PURE__ */ jsxs("div", { className: "text-ui-fg-subtle grid grid-cols-2 px-6 py-4", children: [
165
162
  /* @__PURE__ */ jsx2(Text, { size: "small", leading: "compact", weight: "plus", children: t("fields.createdAt") }),
166
- /* @__PURE__ */ jsx2("div", { className: "flex items-center", children: /* @__PURE__ */ jsx2(DateCell, { date: createdAt }) })
163
+ /* @__PURE__ */ jsx2(Text, { size: "small", leading: "compact", children: createdAt ? getFullDate({ date: createdAt, includeTime: true }) : "-" })
167
164
  ] }),
168
165
  /* @__PURE__ */ jsxs("div", { className: "text-ui-fg-subtle grid grid-cols-2 px-6 py-4", children: [
169
166
  /* @__PURE__ */ jsx2(Text, { size: "small", leading: "compact", weight: "plus", children: t("fields.updatedAt") }),
170
- /* @__PURE__ */ jsxs("div", { className: "flex flex-col", children: [
171
- /* @__PURE__ */ jsx2("div", { className: "flex items-center", children: /* @__PURE__ */ jsx2(DateCell, { date: updatedAt }) }),
172
- updatedAt && /* @__PURE__ */ jsx2(
173
- Text,
174
- {
175
- size: "xsmall",
176
- leading: "compact",
177
- className: "text-ui-fg-muted mt-1",
178
- children: getFullDate({
179
- date: updatedAt,
180
- includeTime: true
181
- })
182
- }
183
- )
184
- ] })
167
+ /* @__PURE__ */ jsx2(Text, { size: "small", leading: "compact", children: updatedAt ? getFullDate({ date: updatedAt, includeTime: true }) : "-" })
185
168
  ] })
186
169
  ] });
187
170
  };
@@ -1,11 +1,10 @@
1
+ import {
2
+ DateCell
3
+ } from "./chunk-QZOY6YYT.mjs";
1
4
  import {
2
5
  getTransactionState,
3
6
  getTransactionStateColor
4
7
  } from "./chunk-RPAL6FHW.mjs";
5
- import {
6
- DateCell,
7
- DateHeader
8
- } from "./chunk-RSLTE3VD.mjs";
9
8
  import {
10
9
  _DataTable,
11
10
  useDataTable
@@ -36,7 +35,7 @@ import { keepPreviousData } from "@tanstack/react-query";
36
35
  import { useTranslation as useTranslation3 } from "react-i18next";
37
36
 
38
37
  // src/routes/workflow-executions/workflow-execution-list/components/workflow-execution-list-table/use-workflow-execution-table-columns.tsx
39
- import { Badge, Copy, Text } from "@acmekit/ui";
38
+ import { Badge, Copy, Text, clx as clx2 } from "@acmekit/ui";
40
39
  import { createColumnHelper } from "@tanstack/react-table";
41
40
  import { useMemo } from "react";
42
41
  import { useTranslation } from "react-i18next";
@@ -83,24 +82,13 @@ var useWorkflowExecutionTableColumns = () => {
83
82
  const { t } = useTranslation();
84
83
  return useMemo(
85
84
  () => [
86
- columnHelper.accessor("id", {
87
- header: t("fields.id"),
88
- cell: ({ row }) => {
89
- const fullId = row.original.id;
90
- const cleanId = fullId.replace("wf_exec_", "");
91
- return /* @__PURE__ */ jsxs2("div", { className: "flex items-center gap-x-1", children: [
92
- /* @__PURE__ */ jsx2("span", { className: "truncate", children: cleanId }),
93
- /* @__PURE__ */ jsx2(Copy, { content: fullId, className: "text-ui-fg-muted" })
94
- ] });
95
- }
96
- }),
97
- columnHelper.accessor("transaction_id", {
98
- header: t("workflowExecutions.transactionIdLabel"),
85
+ columnHelper.accessor("workflow_id", {
86
+ header: t("workflowExecutions.workflowIdLabel"),
99
87
  cell: ({ getValue }) => {
100
- const transactionId = getValue();
88
+ const workflowId = getValue();
101
89
  return /* @__PURE__ */ jsxs2("div", { className: "flex items-center gap-x-1", children: [
102
- /* @__PURE__ */ jsx2(Badge, { size: "2xsmall", className: "truncate", children: transactionId }),
103
- /* @__PURE__ */ jsx2(Copy, { content: transactionId, className: "text-ui-fg-muted" })
90
+ /* @__PURE__ */ jsx2(Badge, { size: "2xsmall", className: "truncate", children: workflowId }),
91
+ /* @__PURE__ */ jsx2(Copy, { content: workflowId, className: "text-ui-fg-muted" })
104
92
  ] });
105
93
  }
106
94
  }),
@@ -118,7 +106,7 @@ var useWorkflowExecutionTableColumns = () => {
118
106
  cell: ({ getValue }) => {
119
107
  const steps = getValue()?.steps;
120
108
  if (!steps) {
121
- return /* @__PURE__ */ jsx2("span", { className: "text-ui-fg-subtle", children: t("workflowExecutions.stepsCompletedLabel", {
109
+ return /* @__PURE__ */ jsx2("span", { className: "text-ui-fg-subtle whitespace-nowrap", children: t("workflowExecutions.stepsCompletedLabel", {
122
110
  completed: 0,
123
111
  count: 0
124
112
  }) });
@@ -133,12 +121,17 @@ var useWorkflowExecutionTableColumns = () => {
133
121
  /* @__PURE__ */ jsx2("div", { className: "flex items-center gap-x-[3px]", children: actionableSteps.map((step) => /* @__PURE__ */ jsx2(
134
122
  "div",
135
123
  {
136
- className: "bg-ui-bg-switch-off shadow-details-switch-background h-3 w-1.5 rounded-full",
124
+ className: clx2(
125
+ "bg-ui-bg-switch-off shadow-details-switch-background h-3 w-1.5 rounded-full",
126
+ {
127
+ "bg-ui-fg-muted": step.invoke.state === "done" /* DONE */
128
+ }
129
+ ),
137
130
  "data-completed": step.invoke.state === "done" /* DONE */
138
131
  },
139
132
  step.id
140
133
  )) }),
141
- /* @__PURE__ */ jsx2("span", { className: "text-ui-fg-subtle", children: t("workflowExecutions.stepsCompletedLabel", {
134
+ /* @__PURE__ */ jsx2("span", { className: "text-ui-fg-subtle whitespace-nowrap", children: t("workflowExecutions.stepsCompletedLabel", {
142
135
  completed: completedSteps.length,
143
136
  count: actionableSteps.length
144
137
  }) })
@@ -172,49 +165,25 @@ var useWorkflowExecutionTableColumns = () => {
172
165
  label = `${hours}h ${minutes % 60}m`;
173
166
  } else if (minutes > 0) {
174
167
  label = `${minutes}m ${seconds % 60}s`;
175
- } else {
168
+ } else if (seconds > 0) {
176
169
  label = `${seconds}s`;
170
+ } else if (ms > 0) {
171
+ label = "<1s";
172
+ } else {
173
+ label = "0s";
177
174
  }
178
175
  return /* @__PURE__ */ jsx2(Text, { size: "small", leading: "compact", className: "text-ui-fg-subtle", children: label });
179
176
  }
180
177
  }),
181
- columnHelper.accessor("execution", {
182
- id: "last_step",
183
- header: t("workflowExecutions.lastStepLabel"),
184
- cell: ({ getValue }) => {
185
- const execution = getValue();
186
- const steps = execution?.steps;
187
- if (!steps) {
188
- return /* @__PURE__ */ jsx2(Text, { size: "small", leading: "compact", className: "text-ui-fg-subtle", children: "-" });
189
- }
190
- const actionableSteps = Object.values(
191
- steps
192
- ).filter((step) => step.id !== ROOT_PREFIX);
193
- if (!actionableSteps.length) {
194
- return /* @__PURE__ */ jsx2(Text, { size: "small", leading: "compact", className: "text-ui-fg-subtle", children: "-" });
195
- }
196
- const lastStep = actionableSteps.reduce((latest, current) => {
197
- if (!latest) {
198
- return current;
199
- }
200
- return current.startedAt > latest.startedAt ? current : latest;
201
- }, void 0);
202
- const lastStepId = lastStep?.id.split(".").pop();
203
- if (!lastStep || !lastStepId) {
204
- return /* @__PURE__ */ jsx2(Text, { size: "small", leading: "compact", className: "text-ui-fg-subtle", children: "-" });
205
- }
206
- return /* @__PURE__ */ jsx2(Text, { size: "small", leading: "compact", className: "text-ui-fg-subtle", children: lastStepId });
207
- }
208
- }),
209
178
  columnHelper.accessor("created_at", {
210
- header: () => /* @__PURE__ */ jsx2(DateHeader, {}),
179
+ header: t("fields.createdAt"),
211
180
  cell: ({ getValue }) => {
212
181
  const date = getValue();
213
182
  return /* @__PURE__ */ jsx2(DateCell, { date });
214
183
  }
215
184
  }),
216
185
  columnHelper.accessor("updated_at", {
217
- header: () => /* @__PURE__ */ jsx2(DateHeader, {}),
186
+ header: t("fields.updatedAt"),
218
187
  cell: ({ getValue }) => {
219
188
  const date = getValue();
220
189
  return /* @__PURE__ */ jsx2(DateCell, { date });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@acmekit/dashboard",
3
- "version": "2.13.22",
3
+ "version": "2.13.24",
4
4
  "scripts": {
5
5
  "generate:static": "node ./scripts/generate-currencies.js && prettier --write ./src/lib/currencies.ts",
6
6
  "dev": "../../../node_modules/.bin/vite",
@@ -39,10 +39,10 @@
39
39
  "dist"
40
40
  ],
41
41
  "dependencies": {
42
- "@acmekit/admin-shared": "2.13.22",
43
- "@acmekit/icons": "2.13.22",
44
- "@acmekit/js-sdk": "2.13.22",
45
- "@acmekit/ui": "4.1.18",
42
+ "@acmekit/admin-shared": "2.13.24",
43
+ "@acmekit/icons": "2.13.24",
44
+ "@acmekit/js-sdk": "2.13.24",
45
+ "@acmekit/ui": "4.1.20",
46
46
  "@ariakit/react": "^0.4.15",
47
47
  "@babel/runtime": "^7.26.10",
48
48
  "@dnd-kit/core": "^6.1.0",
@@ -80,10 +80,10 @@
80
80
  "zod": "3.25.76"
81
81
  },
82
82
  "devDependencies": {
83
- "@acmekit/admin-shared": "2.13.22",
84
- "@acmekit/admin-vite-plugin": "2.13.22",
85
- "@acmekit/types": "2.13.22",
86
- "@acmekit/ui-preset": "2.13.22"
83
+ "@acmekit/admin-shared": "2.13.24",
84
+ "@acmekit/admin-vite-plugin": "2.13.24",
85
+ "@acmekit/types": "2.13.24",
86
+ "@acmekit/ui-preset": "2.13.24"
87
87
  },
88
88
  "packageManager": "yarn@3.2.1"
89
89
  }
@@ -11032,9 +11032,6 @@
11032
11032
  "progressLabel": {
11033
11033
  "type": "string"
11034
11034
  },
11035
- "lastStepLabel": {
11036
- "type": "string"
11037
- },
11038
11035
  "stepsCompletedLabel_one": {
11039
11036
  "type": "string"
11040
11037
  },
@@ -11215,7 +11212,6 @@
11215
11212
  "progressLabel",
11216
11213
  "stepsCompletedLabel_one",
11217
11214
  "stepsCompletedLabel_other",
11218
- "lastStepLabel",
11219
11215
  "metrics",
11220
11216
  "list",
11221
11217
  "history",
@@ -2965,7 +2965,6 @@
2965
2965
  "transactionIdLabel": "Transaction ID",
2966
2966
  "workflowIdLabel": "Workflow ID",
2967
2967
  "progressLabel": "Progress",
2968
- "lastStepLabel": "Last step",
2969
2968
  "metrics": {
2970
2969
  "stepsSummary": "{{completed}} of {{total}} steps",
2971
2970
  "failedSteps": "{{count}} failed",
@@ -3,7 +3,6 @@ import { useTranslation } from "react-i18next"
3
3
  import { getTransactionState, getTransactionStateColor } from "../../../utils"
4
4
  import { HttpTypes } from "@acmekit/types"
5
5
  import { TransactionState, TransactionStepState } from "../../../types"
6
- import { DateCell } from "../../../../../components/table/table-cells/common/date-cell/date-cell"
7
6
  import { useDate } from "../../../../../hooks/use-date"
8
7
  import { STEP_ERROR_STATES, STEP_SKIPPED_STATES } from "../../../constants"
9
8
 
@@ -123,31 +122,21 @@ export const WorkflowExecutionGeneralSection = ({
123
122
  <Text size="small" leading="compact" weight="plus">
124
123
  {t("fields.createdAt")}
125
124
  </Text>
126
- <div className="flex items-center">
127
- <DateCell date={createdAt} />
128
- </div>
125
+ <Text size="small" leading="compact">
126
+ {createdAt
127
+ ? getFullDate({ date: createdAt, includeTime: true })
128
+ : "-"}
129
+ </Text>
129
130
  </div>
130
131
  <div className="text-ui-fg-subtle grid grid-cols-2 px-6 py-4">
131
132
  <Text size="small" leading="compact" weight="plus">
132
133
  {t("fields.updatedAt")}
133
134
  </Text>
134
- <div className="flex flex-col">
135
- <div className="flex items-center">
136
- <DateCell date={updatedAt} />
137
- </div>
138
- {updatedAt && (
139
- <Text
140
- size="xsmall"
141
- leading="compact"
142
- className="text-ui-fg-muted mt-1"
143
- >
144
- {getFullDate({
145
- date: updatedAt,
146
- includeTime: true,
147
- })}
148
- </Text>
149
- )}
150
- </div>
135
+ <Text size="small" leading="compact">
136
+ {updatedAt
137
+ ? getFullDate({ date: updatedAt, includeTime: true })
138
+ : "-"}
139
+ </Text>
151
140
  </div>
152
141
  </Container>
153
142
  )
@@ -1,11 +1,8 @@
1
- import { Badge, Copy, Text } from "@acmekit/ui"
1
+ import { Badge, Copy, Text, clx } from "@acmekit/ui"
2
2
  import { ColumnDef, createColumnHelper } from "@tanstack/react-table"
3
3
  import { useMemo } from "react"
4
4
  import { useTranslation } from "react-i18next"
5
- import {
6
- DateCell,
7
- DateHeader,
8
- } from "../../../../../components/table/table-cells/common/date-cell/date-cell"
5
+ import { DateCell } from "../../../../../components/table/table-cells/common/date-cell/date-cell"
9
6
  import { TransactionStepState } from "../../../types"
10
7
  import { getTransactionState, getTransactionStateColor } from "../../../utils"
11
8
  import { HttpTypes } from "@acmekit/types"
@@ -24,31 +21,17 @@ export const useWorkflowExecutionTableColumns = (): ColumnDef<
24
21
 
25
22
  return useMemo(
26
23
  () => [
27
- columnHelper.accessor("id", {
28
- header: t("fields.id"),
29
- cell: ({ row }) => {
30
- const fullId = row.original.id
31
- const cleanId = fullId.replace("wf_exec_", "")
32
-
33
- return (
34
- <div className="flex items-center gap-x-1">
35
- <span className="truncate">{cleanId}</span>
36
- <Copy content={fullId} className="text-ui-fg-muted" />
37
- </div>
38
- )
39
- },
40
- }),
41
- columnHelper.accessor("transaction_id", {
42
- header: t("workflowExecutions.transactionIdLabel"),
24
+ columnHelper.accessor("workflow_id", {
25
+ header: t("workflowExecutions.workflowIdLabel"),
43
26
  cell: ({ getValue }) => {
44
- const transactionId = getValue()
27
+ const workflowId = getValue()
45
28
 
46
29
  return (
47
30
  <div className="flex items-center gap-x-1">
48
31
  <Badge size="2xsmall" className="truncate">
49
- {transactionId}
32
+ {workflowId}
50
33
  </Badge>
51
- <Copy content={transactionId} className="text-ui-fg-muted" />
34
+ <Copy content={workflowId} className="text-ui-fg-muted" />
52
35
  </div>
53
36
  )
54
37
  },
@@ -77,7 +60,7 @@ export const useWorkflowExecutionTableColumns = (): ColumnDef<
77
60
 
78
61
  if (!steps) {
79
62
  return (
80
- <span className="text-ui-fg-subtle">
63
+ <span className="text-ui-fg-subtle whitespace-nowrap">
81
64
  {t("workflowExecutions.stepsCompletedLabel", {
82
65
  completed: 0,
83
66
  count: 0,
@@ -100,14 +83,20 @@ export const useWorkflowExecutionTableColumns = (): ColumnDef<
100
83
  {actionableSteps.map((step) => (
101
84
  <div
102
85
  key={step.id}
103
- className="bg-ui-bg-switch-off shadow-details-switch-background h-3 w-1.5 rounded-full"
86
+ className={clx(
87
+ "bg-ui-bg-switch-off shadow-details-switch-background h-3 w-1.5 rounded-full",
88
+ {
89
+ "bg-ui-fg-muted":
90
+ step.invoke.state === TransactionStepState.DONE,
91
+ }
92
+ )}
104
93
  data-completed={
105
94
  step.invoke.state === TransactionStepState.DONE
106
95
  }
107
96
  />
108
97
  ))}
109
98
  </div>
110
- <span className="text-ui-fg-subtle">
99
+ <span className="text-ui-fg-subtle whitespace-nowrap">
111
100
  {t("workflowExecutions.stepsCompletedLabel", {
112
101
  completed: completedSteps.length,
113
102
  count: actionableSteps.length,
@@ -168,8 +157,12 @@ export const useWorkflowExecutionTableColumns = (): ColumnDef<
168
157
  label = `${hours}h ${minutes % 60}m`
169
158
  } else if (minutes > 0) {
170
159
  label = `${minutes}m ${seconds % 60}s`
171
- } else {
160
+ } else if (seconds > 0) {
172
161
  label = `${seconds}s`
162
+ } else if (ms > 0) {
163
+ label = "<1s"
164
+ } else {
165
+ label = "0s"
173
166
  }
174
167
 
175
168
  return (
@@ -179,72 +172,15 @@ export const useWorkflowExecutionTableColumns = (): ColumnDef<
179
172
  )
180
173
  },
181
174
  }),
182
- columnHelper.accessor("execution", {
183
- id: "last_step",
184
- header: t("workflowExecutions.lastStepLabel"),
185
- cell: ({ getValue }) => {
186
- const execution = getValue() as
187
- | HttpTypes.AdminWorkflowExecutionExecution
188
- | undefined
189
-
190
- const steps = execution?.steps
191
-
192
- if (!steps) {
193
- return (
194
- <Text size="small" leading="compact" className="text-ui-fg-subtle">
195
- {"-"}
196
- </Text>
197
- )
198
- }
199
-
200
- const actionableSteps = Object.values(
201
- steps as Record<string, HttpTypes.AdminWorkflowExecutionStep>
202
- ).filter((step) => step.id !== ROOT_PREFIX)
203
-
204
- if (!actionableSteps.length) {
205
- return (
206
- <Text size="small" leading="compact" className="text-ui-fg-subtle">
207
- {"-"}
208
- </Text>
209
- )
210
- }
211
-
212
- const lastStep = actionableSteps.reduce<
213
- HttpTypes.AdminWorkflowExecutionStep | undefined
214
- >((latest, current) => {
215
- if (!latest) {
216
- return current
217
- }
218
-
219
- return current.startedAt > latest.startedAt ? current : latest
220
- }, undefined)
221
-
222
- const lastStepId = lastStep?.id.split(".").pop()
223
-
224
- if (!lastStep || !lastStepId) {
225
- return (
226
- <Text size="small" leading="compact" className="text-ui-fg-subtle">
227
- {"-"}
228
- </Text>
229
- )
230
- }
231
-
232
- return (
233
- <Text size="small" leading="compact" className="text-ui-fg-subtle">
234
- {lastStepId}
235
- </Text>
236
- )
237
- },
238
- }),
239
175
  columnHelper.accessor("created_at", {
240
- header: () => <DateHeader />,
176
+ header: t("fields.createdAt"),
241
177
  cell: ({ getValue }) => {
242
178
  const date = getValue()
243
179
  return <DateCell date={date} />
244
180
  },
245
181
  }),
246
182
  columnHelper.accessor("updated_at", {
247
- header: () => <DateHeader />,
183
+ header: t("fields.updatedAt"),
248
184
  cell: ({ getValue }) => {
249
185
  const date = getValue()
250
186
  return <DateCell date={date} />