@burdenoff/fluidgrids-fe-sdk 2026.1022.2 → 2026.1022.4

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 (30) hide show
  1. package/dist/{ExecutionDetailPage-NFZVCUCA.js → ExecutionDetailPage-GXP7V43B.js} +2 -2
  2. package/dist/{ExecutionsListPage-KSOHJU4T.js → ExecutionsListPage-7AZRFJJT.js} +2 -2
  3. package/dist/{MissingNodesInstallModal-ODVBW4X4.js → MissingNodesInstallModal-OSAJLIBE.js} +9 -9
  4. package/dist/{TemplateConfigurationModal-HUHXIL3K.js → TemplateConfigurationModal-SILENYXX.js} +9 -9
  5. package/dist/{TemplateDetailPanel-RZDJEXGG.js → TemplateDetailPanel-PP42MUM2.js} +6 -6
  6. package/dist/{WorkflowBuilder-FR3TUJ33.js → WorkflowBuilder-36X3QZTC.js} +5 -5
  7. package/dist/{WorkflowsList-BAYEP7TU.js → WorkflowsList-O3DFQM6S.js} +2 -2
  8. package/dist/{chunk-JG65547T.js → chunk-3FI4DCIY.js} +24 -24
  9. package/dist/{chunk-YPF7LVUZ.js → chunk-5QUAOGY7.js} +1 -1
  10. package/dist/{chunk-TWIORNPU.js → chunk-6CVZQJKW.js} +20 -13
  11. package/dist/{chunk-GDAFKRQO.js → chunk-BQXVT32O.js} +4 -4
  12. package/dist/{chunk-3XEIMQNT.js → chunk-HIXQIM22.js} +77 -77
  13. package/dist/{chunk-EU5ANGO4.js → chunk-M7FOQBCR.js} +3 -3
  14. package/dist/{chunk-6LMWVUD7.js → chunk-P3R3RFAC.js} +4 -4
  15. package/dist/{chunk-PBIN6ERJ.js → chunk-PVDKSM6Q.js} +7 -7
  16. package/dist/{chunk-FJHERSHE.js → chunk-QP62LB3V.js} +2 -2
  17. package/dist/{chunk-2HUSQTUK.js → chunk-T3UCFY7J.js} +189 -204
  18. package/dist/{chunk-CU23L6GP.js → chunk-TVTOVRGV.js} +7 -7
  19. package/dist/{chunk-EGYJKHAL.js → chunk-VI2RFS65.js} +4 -4
  20. package/dist/{chunk-7LSGGJ7D.js → chunk-YXMFRQYV.js} +1 -1
  21. package/dist/executions.js +3 -3
  22. package/dist/index.d.ts +14 -0
  23. package/dist/index.js +60 -40
  24. package/dist/nodes.js +1 -1
  25. package/dist/settings.js +2 -2
  26. package/dist/styles.css +1 -1
  27. package/dist/templates.js +5 -5
  28. package/dist/workflow-builder.js +6 -6
  29. package/dist/workflows-list.js +2 -2
  30. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
- export { ExecutionDetailPage } from './chunk-6LMWVUD7.js';
2
- import './chunk-3XEIMQNT.js';
1
+ export { ExecutionDetailPage } from './chunk-P3R3RFAC.js';
2
+ import './chunk-HIXQIM22.js';
3
3
  import './chunk-QBFAJNUC.js';
4
4
  import './chunk-ONVGFVNH.js';
5
5
  import './chunk-JL7CASN5.js';
@@ -1,5 +1,5 @@
1
- export { ExecutionsListPage } from './chunk-YPF7LVUZ.js';
2
- import './chunk-3XEIMQNT.js';
1
+ export { ExecutionsListPage } from './chunk-5QUAOGY7.js';
2
+ import './chunk-HIXQIM22.js';
3
3
  import './chunk-QBFAJNUC.js';
4
4
  import './chunk-HP3A6BPK.js';
5
5
  import './chunk-D3UWK7GY.js';
@@ -1,5 +1,5 @@
1
- import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogFooter } from './chunk-7LSGGJ7D.js';
2
- import { Badge, Button } from './chunk-GDAFKRQO.js';
1
+ import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogFooter } from './chunk-YXMFRQYV.js';
2
+ import { Badge, Button } from './chunk-BQXVT32O.js';
3
3
  import './chunk-JL7CASN5.js';
4
4
  import './chunk-UULVIT25.js';
5
5
  import { Puzzle, Download, CheckCircle2, AlertTriangle, ShoppingCart, ExternalLink, Loader2 } from 'lucide-react';
@@ -47,7 +47,7 @@ function MissingNodesInstallModal({
47
47
  {
48
48
  className: "flex items-center gap-2 text-sm",
49
49
  children: [
50
- /* @__PURE__ */ jsx(CheckCircle2, { className: "size-4 text-green-500 shrink-0" }),
50
+ /* @__PURE__ */ jsx(CheckCircle2, { className: "size-4 text-status-success-text shrink-0" }),
51
51
  /* @__PURE__ */ jsxs("span", { children: [
52
52
  node.displayName || node.nodeType,
53
53
  " v",
@@ -63,7 +63,7 @@ function MissingNodesInstallModal({
63
63
  {
64
64
  className: "flex items-center gap-2 text-sm",
65
65
  children: [
66
- /* @__PURE__ */ jsx(Download, { className: "size-4 text-blue-500 shrink-0" }),
66
+ /* @__PURE__ */ jsx(Download, { className: "size-4 text-status-info-text shrink-0" }),
67
67
  /* @__PURE__ */ jsxs("span", { children: [
68
68
  node.displayName || node.nodeType,
69
69
  " v",
@@ -73,7 +73,7 @@ function MissingNodesInstallModal({
73
73
  Badge,
74
74
  {
75
75
  variant: "outline",
76
- className: "text-xs ml-auto border-blue-500/30 text-blue-500",
76
+ className: "text-xs ml-auto border-status-info-border text-status-info-text",
77
77
  children: "Not installed"
78
78
  }
79
79
  )
@@ -102,7 +102,7 @@ function MissingNodesInstallModal({
102
102
  {
103
103
  className: "flex items-center gap-2 text-sm",
104
104
  children: [
105
- /* @__PURE__ */ jsx(ShoppingCart, { className: "size-4 text-amber-500 shrink-0" }),
105
+ /* @__PURE__ */ jsx(ShoppingCart, { className: "size-4 text-status-warning-text shrink-0" }),
106
106
  /* @__PURE__ */ jsxs("span", { children: [
107
107
  node.displayName || node.nodeType,
108
108
  " v",
@@ -112,7 +112,7 @@ function MissingNodesInstallModal({
112
112
  Badge,
113
113
  {
114
114
  variant: "outline",
115
- className: "text-xs ml-auto border-amber-500/30 text-amber-500",
115
+ className: "text-xs ml-auto border-status-warning-border text-status-warning-text",
116
116
  children: "Purchase required"
117
117
  }
118
118
  )
@@ -139,7 +139,7 @@ function MissingNodesInstallModal({
139
139
  /* @__PURE__ */ jsx("p", { className: "mt-1 text-xs", children: "These nodes are not published to the store, so they cannot be installed from here. Open the workflow to review the steps that use them." })
140
140
  ] })
141
141
  ] }),
142
- hasPaidBlockers && /* @__PURE__ */ jsxs("div", { className: "rounded-lg bg-amber-500/10 border border-amber-500/30 p-3 text-sm text-amber-700 dark:text-amber-400 flex items-start gap-2", children: [
142
+ hasPaidBlockers && /* @__PURE__ */ jsxs("div", { className: "rounded-lg bg-status-warning-bg-subtle border border-status-warning-border p-3 text-sm text-status-warning-text flex items-start gap-2", children: [
143
143
  /* @__PURE__ */ jsx(AlertTriangle, { className: "size-4 mt-0.5 shrink-0" }),
144
144
  /* @__PURE__ */ jsxs("div", { children: [
145
145
  /* @__PURE__ */ jsx("p", { className: "font-medium", children: "Purchase required before installing" }),
@@ -149,7 +149,7 @@ function MissingNodesInstallModal({
149
149
  {
150
150
  variant: "link",
151
151
  size: "sm",
152
- className: "mt-1 h-auto p-0 text-xs text-amber-700 dark:text-amber-400 underline",
152
+ className: "mt-1 h-auto p-0 text-xs text-status-warning-text underline",
153
153
  onClick: () => window.open("/store", "_blank"),
154
154
  children: [
155
155
  /* @__PURE__ */ jsx(ExternalLink, { className: "size-3 mr-1" }),
@@ -1,7 +1,7 @@
1
1
  import { Label } from './chunk-VTQVPNUQ.js';
2
2
  import { Input } from './chunk-IEVSFCFS.js';
3
- import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogFooter } from './chunk-7LSGGJ7D.js';
4
- import { Badge, Button } from './chunk-GDAFKRQO.js';
3
+ import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogFooter } from './chunk-YXMFRQYV.js';
4
+ import { Badge, Button } from './chunk-BQXVT32O.js';
5
5
  import './chunk-JL7CASN5.js';
6
6
  import { useTr } from './chunk-UULVIT25.js';
7
7
  import { useState, useEffect, useMemo } from 'react';
@@ -155,7 +155,7 @@ function TemplateConfigurationModal({
155
155
  {
156
156
  className: "flex items-center gap-2 text-sm",
157
157
  children: [
158
- /* @__PURE__ */ jsx(CheckCircle2, { className: "size-4 text-green-500 shrink-0" }),
158
+ /* @__PURE__ */ jsx(CheckCircle2, { className: "size-4 text-status-success-text shrink-0" }),
159
159
  /* @__PURE__ */ jsxs("span", { children: [
160
160
  node.displayName || node.nodeType,
161
161
  " v",
@@ -174,7 +174,7 @@ function TemplateConfigurationModal({
174
174
  {
175
175
  className: "flex items-center gap-2 text-sm",
176
176
  children: [
177
- /* @__PURE__ */ jsx(Download, { className: "size-4 text-blue-500 shrink-0" }),
177
+ /* @__PURE__ */ jsx(Download, { className: "size-4 text-status-info-text shrink-0" }),
178
178
  /* @__PURE__ */ jsxs("span", { children: [
179
179
  node.displayName || node.nodeType,
180
180
  " v",
@@ -184,7 +184,7 @@ function TemplateConfigurationModal({
184
184
  Badge,
185
185
  {
186
186
  variant: "outline",
187
- className: "text-xs ml-auto border-blue-500/30 text-blue-500",
187
+ className: "text-xs ml-auto border-status-info-border text-status-info-text",
188
188
  children: tr(
189
189
  "fluidgrids.builder.templateConfigModal.willInstallBadge",
190
190
  "Will install"
@@ -200,7 +200,7 @@ function TemplateConfigurationModal({
200
200
  {
201
201
  className: "flex items-center gap-2 text-sm",
202
202
  children: [
203
- /* @__PURE__ */ jsx(ShoppingCart, { className: "size-4 text-amber-500 shrink-0" }),
203
+ /* @__PURE__ */ jsx(ShoppingCart, { className: "size-4 text-status-warning-text shrink-0" }),
204
204
  /* @__PURE__ */ jsxs("span", { children: [
205
205
  node.displayName || node.nodeType,
206
206
  " v",
@@ -210,7 +210,7 @@ function TemplateConfigurationModal({
210
210
  Badge,
211
211
  {
212
212
  variant: "outline",
213
- className: "text-xs ml-auto border-amber-500/30 text-amber-500",
213
+ className: "text-xs ml-auto border-status-warning-border text-status-warning-text",
214
214
  children: tr(
215
215
  "fluidgrids.builder.templateConfigModal.purchaseRequiredBadge",
216
216
  "Purchase required"
@@ -245,7 +245,7 @@ function TemplateConfigurationModal({
245
245
  /* @__PURE__ */ jsx("strong", { children: "DRAFT" }),
246
246
  ". You can review and edit it in the builder before activating."
247
247
  ] }) }),
248
- hasPaidBlockers && /* @__PURE__ */ jsxs("div", { className: "rounded-lg bg-amber-500/10 border border-amber-500/30 p-3 text-sm text-amber-700 dark:text-amber-400 flex items-start gap-2", children: [
248
+ hasPaidBlockers && /* @__PURE__ */ jsxs("div", { className: "rounded-lg bg-status-warning-bg-subtle border border-status-warning-border p-3 text-sm text-status-warning-text flex items-start gap-2", children: [
249
249
  /* @__PURE__ */ jsx(AlertTriangle, { className: "size-4 mt-0.5 shrink-0" }),
250
250
  /* @__PURE__ */ jsxs("div", { children: [
251
251
  /* @__PURE__ */ jsx("p", { className: "font-medium", children: tr(
@@ -261,7 +261,7 @@ function TemplateConfigurationModal({
261
261
  {
262
262
  variant: "link",
263
263
  size: "sm",
264
- className: "mt-1 h-auto p-0 text-xs text-amber-700 dark:text-amber-400 underline",
264
+ className: "mt-1 h-auto p-0 text-xs text-status-warning-text underline",
265
265
  onClick: () => window.open("/store", "_blank"),
266
266
  children: [
267
267
  /* @__PURE__ */ jsx(ExternalLink, { className: "size-3 mr-1" }),
@@ -1,4 +1,4 @@
1
- import { Button, Badge } from './chunk-GDAFKRQO.js';
1
+ import { Button, Badge } from './chunk-BQXVT32O.js';
2
2
  import './chunk-JL7CASN5.js';
3
3
  import { useTr } from './chunk-UULVIT25.js';
4
4
  import { X, Sparkles, Star, Download, Eye, User, Calendar, Tag, ExternalLink } from 'lucide-react';
@@ -63,14 +63,14 @@ function TemplateDetailPanel({
63
63
  Badge,
64
64
  {
65
65
  variant: "secondary",
66
- className: "bg-green-500 text-white border-0",
66
+ className: "bg-status-success-bg text-action-primary-text border-0",
67
67
  children: tr("fluidgrids.builder.templateDetailPanel.freeBadge", "Free")
68
68
  }
69
69
  ) : /* @__PURE__ */ jsxs(
70
70
  Badge,
71
71
  {
72
72
  variant: "default",
73
- className: "bg-blue-500 text-white border-0",
73
+ className: "bg-status-info-bg text-action-primary-text border-0",
74
74
  children: [
75
75
  "$",
76
76
  template.price?.toString() || "0"
@@ -81,9 +81,9 @@ function TemplateDetailPanel({
81
81
  Badge,
82
82
  {
83
83
  variant: "default",
84
- className: "bg-gradient-to-r from-yellow-500 to-orange-500 text-white border-0 shadow-lg",
84
+ className: "bg-status-warning-bg-subtle text-status-warning-text border border-status-warning-border shadow-lg",
85
85
  children: [
86
- /* @__PURE__ */ jsx(Star, { className: "size-3 mr-1 fill-white" }),
86
+ /* @__PURE__ */ jsx(Star, { className: "size-3 mr-1 fill-current" }),
87
87
  tr(
88
88
  "fluidgrids.builder.templateDetailPanel.featuredBadge",
89
89
  "Featured"
@@ -101,7 +101,7 @@ function TemplateDetailPanel({
101
101
  ] }),
102
102
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-4 text-sm text-muted-foreground", children: [
103
103
  template.rating && /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1", children: [
104
- /* @__PURE__ */ jsx(Star, { className: "size-4 fill-yellow-400 text-yellow-400" }),
104
+ /* @__PURE__ */ jsx(Star, { className: "size-4 fill-status-warning-bg text-status-warning-text" }),
105
105
  /* @__PURE__ */ jsx("span", { className: "font-medium text-foreground", children: template.rating.toFixed(1) }),
106
106
  /* @__PURE__ */ jsxs("span", { children: [
107
107
  "(",
@@ -1,10 +1,10 @@
1
- export { WorkflowBuilder } from './chunk-EU5ANGO4.js';
1
+ export { WorkflowBuilder } from './chunk-M7FOQBCR.js';
2
2
  import './chunk-6N27YGMB.js';
3
- import './chunk-2HUSQTUK.js';
3
+ import './chunk-T3UCFY7J.js';
4
4
  import './chunk-GEMNVFPK.js';
5
5
  import './chunk-IEVSFCFS.js';
6
- import './chunk-7LSGGJ7D.js';
7
- import './chunk-GDAFKRQO.js';
6
+ import './chunk-YXMFRQYV.js';
7
+ import './chunk-BQXVT32O.js';
8
8
  import './chunk-SYVLFHWV.js';
9
9
  import './chunk-PXIFUMLA.js';
10
10
  import './chunk-WBH2XEWO.js';
@@ -13,7 +13,7 @@ import './chunk-JL7CASN5.js';
13
13
  import './chunk-HP3A6BPK.js';
14
14
  import './chunk-UZG3ZIQM.js';
15
15
  import './chunk-5TW5JP5R.js';
16
- import './chunk-EGYJKHAL.js';
16
+ import './chunk-VI2RFS65.js';
17
17
  import './chunk-SAZVBFMO.js';
18
18
  import './chunk-4UAWCWS7.js';
19
19
  import './chunk-UULVIT25.js';
@@ -1,4 +1,4 @@
1
- export { WorkflowsList } from './chunk-FJHERSHE.js';
1
+ export { WorkflowsList } from './chunk-QP62LB3V.js';
2
2
  import './chunk-6N27YGMB.js';
3
3
  import './chunk-SYVLFHWV.js';
4
4
  import './chunk-ONVGFVNH.js';
@@ -7,7 +7,7 @@ import './chunk-HP3A6BPK.js';
7
7
  import './chunk-D3UWK7GY.js';
8
8
  import './chunk-UZG3ZIQM.js';
9
9
  import './chunk-PJAWNFJV.js';
10
- import './chunk-EGYJKHAL.js';
10
+ import './chunk-VI2RFS65.js';
11
11
  import './chunk-SAZVBFMO.js';
12
12
  import './chunk-4UAWCWS7.js';
13
13
  import './chunk-UULVIT25.js';
@@ -1,13 +1,14 @@
1
- import { FluidGridsProvider, Card, FluidGridsMark } from './chunk-2HUSQTUK.js';
1
+ import { FluidGridsProvider, Card, FluidGridsMark } from './chunk-T3UCFY7J.js';
2
2
  import { Input } from './chunk-IEVSFCFS.js';
3
- import { Button } from './chunk-GDAFKRQO.js';
3
+ import { Button } from './chunk-BQXVT32O.js';
4
4
  import { cn } from './chunk-JL7CASN5.js';
5
5
  import { useWorkflowDefinition } from './chunk-HP3A6BPK.js';
6
- import { useFlowStore } from './chunk-EGYJKHAL.js';
6
+ import { useFlowStore } from './chunk-VI2RFS65.js';
7
7
  import { useTr } from './chunk-UULVIT25.js';
8
8
  import { useState, useRef, useEffect, useCallback } from 'react';
9
9
  import { MarkerType, ReactFlowProvider, useReactFlow, ReactFlow, Background, Controls, MiniMap, Handle, Position } from '@xyflow/react';
10
10
  import { useShallow } from 'zustand/shallow';
11
+ import { edgeColor, nodeCategoryColor } from '@burdenoff/fe-libs/shared/utils';
11
12
  import '@xyflow/react/dist/style.css';
12
13
  import { ArrowLeft, Save, Play, Trash2 } from 'lucide-react';
13
14
  import { useTheme } from '@burdenoff/fe-libs/shared/hooks/shell';
@@ -43,41 +44,40 @@ var defaultEdgeOptions = {
43
44
  height: 21
44
45
  },
45
46
  style: {
46
- stroke: "#888"
47
+ stroke: edgeColor("default")
47
48
  }
48
49
  };
49
50
  var handleStyle = {
50
51
  width: 10,
51
52
  height: 10,
52
- background: "#3b82f6",
53
- // blue-500
54
- border: "2px solid white"
53
+ background: "var(--color-node-handle-connected)",
54
+ border: "2px solid var(--color-node-bg)"
55
55
  };
56
56
  var baseNodeStyle = {
57
57
  padding: "8px 16px",
58
58
  borderRadius: "8px",
59
59
  fontWeight: 500,
60
- boxShadow: "0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)",
60
+ boxShadow: "var(--shadow-elevation-2)",
61
61
  position: "relative",
62
- color: "white"
62
+ // Text on a solid node-category fill (white in every theme).
63
+ color: "var(--color-action-primary-text)"
63
64
  };
64
- var NODE_COLORS = {
65
- "trigger:api": "#22c55e",
66
- end: "#ef4444",
67
- "internal:if": "#8b5cf6",
68
- "internal:switch": "#8b5cf6",
69
- "internal:loop": "#f59e0b",
70
- "internal:merge": "#6366f1",
71
- "internal:set": "#3b82f6",
72
- "internal:filter": "#06b6d4",
73
- "internal:aggregate": "#0891b2",
74
- "internal:wait": "#64748b",
75
- "internal:noop": "#94a3b8",
76
- "internal:http": "#f97316",
77
- default: "#3b82f6"
65
+ var NODE_CATEGORY_BY_TYPE = {
66
+ "trigger:api": "trigger",
67
+ end: "end",
68
+ "internal:if": "logic",
69
+ "internal:switch": "logic",
70
+ "internal:loop": "loop",
71
+ "internal:merge": "utility",
72
+ "internal:set": "data",
73
+ "internal:filter": "data",
74
+ "internal:aggregate": "data",
75
+ "internal:wait": "utility",
76
+ "internal:noop": "utility",
77
+ "internal:http": "integration"
78
78
  };
79
79
  function getNodeColor(type) {
80
- return NODE_COLORS[type] ?? NODE_COLORS.default;
80
+ return nodeCategoryColor(NODE_CATEGORY_BY_TYPE[type] ?? "default");
81
81
  }
82
82
  function TriggerNode({ data }) {
83
83
  const tr = useTr();
@@ -1,4 +1,4 @@
1
- import { useExecutionsWithStore, useExecutionStats, useExecutionActions, useAutoRefresh, ExecutionStats, ExecutionFilters, ExecutionTable, ExecutionCards, ExecutionTimeline, Pagination } from './chunk-3XEIMQNT.js';
1
+ import { useExecutionsWithStore, useExecutionStats, useExecutionActions, useAutoRefresh, ExecutionStats, ExecutionFilters, ExecutionTable, ExecutionCards, ExecutionTimeline, Pagination } from './chunk-HIXQIM22.js';
2
2
  import { useWorkflowDefinitions } from './chunk-HP3A6BPK.js';
3
3
  import { useExecutionsStore } from './chunk-UZG3ZIQM.js';
4
4
  import { useTr } from './chunk-UULVIT25.js';
@@ -203,27 +203,27 @@ var NODE_CATEGORIES = [
203
203
  ];
204
204
  var STATUS_STYLES = {
205
205
  AVAILABLE: {
206
- className: "bg-emerald-500/15 text-emerald-400 border-emerald-500/30",
206
+ className: "bg-status-success-bg-subtle text-status-success-text border-status-success-border",
207
207
  label: "Available",
208
208
  icon: "mdi:check-circle"
209
209
  },
210
210
  DEPRECATED: {
211
- className: "bg-amber-500/15 text-amber-400 border-amber-500/30",
211
+ className: "bg-status-warning-bg-subtle text-status-warning-text border-status-warning-border",
212
212
  label: "Deprecated",
213
213
  icon: "mdi:alert"
214
214
  },
215
215
  DISABLED: {
216
- className: "bg-zinc-500/15 text-zinc-400 border-zinc-500/30",
216
+ className: "bg-bg-sunken text-text-muted border-border-strong",
217
217
  label: "Disabled",
218
218
  icon: "mdi:close-circle"
219
219
  }
220
220
  };
221
221
  var CATEGORY_COLORS = {
222
- integration: "bg-violet-500/15 text-violet-400 border-violet-500/30",
223
- data: "bg-blue-500/15 text-blue-400 border-blue-500/30",
224
- logic: "bg-cyan-500/15 text-cyan-400 border-cyan-500/30",
225
- "ai-ml": "bg-amber-500/15 text-amber-400 border-amber-500/30",
226
- communication: "bg-rose-500/15 text-rose-400 border-rose-500/30"
222
+ integration: "bg-chart-3/10 text-chart-3 border-chart-3/30",
223
+ data: "bg-status-info-bg-subtle text-status-info-text border-status-info-border",
224
+ logic: "bg-status-info-bg-subtle text-status-info-text border-status-info-border",
225
+ "ai-ml": "bg-status-warning-bg-subtle text-status-warning-text border-status-warning-border",
226
+ communication: "bg-status-error-bg-subtle text-status-error-text border-status-error-border"
227
227
  };
228
228
  function inferNodeCategory(node) {
229
229
  const text = [
@@ -297,7 +297,7 @@ function ErrorState({
297
297
  function NodeCard({ node, category }) {
298
298
  const tr = useTr();
299
299
  const status = STATUS_STYLES[node.status] ?? STATUS_STYLES.AVAILABLE;
300
- const catColor = CATEGORY_COLORS[category] ?? "bg-zinc-500/15 text-zinc-400 border-zinc-500/30";
300
+ const catColor = CATEGORY_COLORS[category] ?? "bg-bg-sunken text-text-muted border-border-strong";
301
301
  const catLabel = NODE_CATEGORIES.find((c) => c.value === category)?.label ?? tr("fluidgrids.nodes.nodeCard.categoryFallback", "Node");
302
302
  return /* @__PURE__ */ jsxs(Card, { className: "border border-border-secondary bg-background-secondary hover:border-border-primary transition-all duration-200 flex flex-col", children: [
303
303
  /* @__PURE__ */ jsxs(CardHeader, { className: "flex-1 pb-3", children: [
@@ -432,19 +432,26 @@ function NodesPage() {
432
432
  {
433
433
  icon: "mdi:check-circle",
434
434
  width: 18,
435
- className: "text-emerald-400"
435
+ className: "text-status-success-text"
436
436
  }
437
437
  ),
438
438
  /* @__PURE__ */ jsx("p", { className: "text-xs text-text-secondary", children: tr("fluidgrids.nodes.nodesPage.statActive", "Active") })
439
439
  ] }),
440
- /* @__PURE__ */ jsx("p", { className: "text-xl font-bold text-emerald-400 mt-1", children: loading ? "\u2014" : stats.active })
440
+ /* @__PURE__ */ jsx("p", { className: "text-xl font-bold text-status-success-text mt-1", children: loading ? "\u2014" : stats.active })
441
441
  ] }),
442
442
  /* @__PURE__ */ jsxs("div", { className: "p-3 rounded-lg bg-background-secondary border border-border-secondary", children: [
443
443
  /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
444
- /* @__PURE__ */ jsx(Icon, { icon: "mdi:alert", width: 18, className: "text-amber-400" }),
444
+ /* @__PURE__ */ jsx(
445
+ Icon,
446
+ {
447
+ icon: "mdi:alert",
448
+ width: 18,
449
+ className: "text-status-warning-text"
450
+ }
451
+ ),
445
452
  /* @__PURE__ */ jsx("p", { className: "text-xs text-text-secondary", children: tr("fluidgrids.nodes.nodesPage.statDeprecated", "Deprecated") })
446
453
  ] }),
447
- /* @__PURE__ */ jsx("p", { className: "text-xl font-bold text-amber-400 mt-1", children: loading ? "\u2014" : stats.deprecated })
454
+ /* @__PURE__ */ jsx("p", { className: "text-xl font-bold text-status-warning-text mt-1", children: loading ? "\u2014" : stats.deprecated })
448
455
  ] })
449
456
  ] }),
450
457
  /* @__PURE__ */ jsxs("div", { className: "relative max-w-md mb-6", children: [
@@ -9,7 +9,7 @@ var buttonVariants = cva(
9
9
  variants: {
10
10
  variant: {
11
11
  default: "bg-primary text-primary-foreground hover:bg-primary/90",
12
- destructive: "bg-destructive text-white hover:bg-destructive/90",
12
+ destructive: "bg-action-danger-bg text-action-danger-text hover:bg-action-danger-bgHover",
13
13
  outline: "border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground",
14
14
  secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
15
15
  ghost: "hover:bg-accent hover:text-accent-foreground",
@@ -59,9 +59,9 @@ var badgeVariants = cva(
59
59
  secondary: "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",
60
60
  destructive: "border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80",
61
61
  outline: "text-foreground",
62
- success: "border-transparent bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-100",
63
- warning: "border-transparent bg-yellow-100 text-yellow-800 dark:bg-yellow-900 dark:text-yellow-100",
64
- info: "border-transparent bg-blue-100 text-blue-800 dark:bg-blue-900 dark:text-blue-100"
62
+ success: "border-transparent bg-status-success-bg-subtle text-status-success-text",
63
+ warning: "border-transparent bg-status-warning-bg-subtle text-status-warning-text",
64
+ info: "border-transparent bg-status-info-bg-subtle text-status-info-text"
65
65
  }
66
66
  },
67
67
  defaultVariants: {