@yuva-devlab/ui 2.2.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -1337,7 +1337,7 @@ var Checkpoint = React14.forwardRef(
1337
1337
  ...props
1338
1338
  }, ref) => {
1339
1339
  return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { ref, className: cn("dl-checkpoint", className), ...props, children: /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: "dl-checkpoint__content", children: [
1340
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_lucide_react6.History, { className: "size-3 text-muted-foreground" }),
1340
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_lucide_react6.History, { className: "dl-checkpoint__icon" }),
1341
1341
  /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { children: label }),
1342
1342
  onRestore && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1343
1343
  "button",
@@ -1621,11 +1621,11 @@ var CodeBlockCopyButton = React20.forwardRef(({ className, code = "", onClick, .
1621
1621
  });
1622
1622
  CodeBlockCopyButton.displayName = "CodeBlockCopyButton";
1623
1623
  var CodeBlockHeader = React20.forwardRef(({ className, filename, language, children, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { ref, className: cn("dl-code-block__header", className), ...props, children: [
1624
- /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "flex items-center gap-2", children: [
1624
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "dl-code-block__header-meta", children: [
1625
1625
  filename && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "dl-code-block__filename", children: filename }),
1626
1626
  language && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "dl-code-block__language", children: language })
1627
1627
  ] }),
1628
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: "flex items-center gap-1.5", children })
1628
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: "dl-code-block__header-actions", children })
1629
1629
  ] }));
1630
1630
  CodeBlockHeader.displayName = "CodeBlockHeader";
1631
1631
  var CodeBlockContent = React20.forwardRef(
@@ -2037,7 +2037,18 @@ var import_lucide_react14 = require("lucide-react");
2037
2037
  var React26 = __toESM(require("react"), 1);
2038
2038
  var import_jsx_runtime26 = require("react/jsx-runtime");
2039
2039
  var Table = React26.forwardRef(
2040
- ({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: "dl-table-wrapper", children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("table", { ref, className: cn("dl-table", className), ...props }) })
2040
+ ({ className, hoverable = false, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("div", { className: "dl-table-wrapper", children: /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
2041
+ "table",
2042
+ {
2043
+ ref,
2044
+ className: cn(
2045
+ "dl-table",
2046
+ hoverable && "dl-table--hoverable",
2047
+ className
2048
+ ),
2049
+ ...props
2050
+ }
2051
+ ) })
2041
2052
  );
2042
2053
  Table.displayName = "Table";
2043
2054
  var TableHeader = React26.forwardRef(
@@ -2053,7 +2064,18 @@ var TableFooter = React26.forwardRef(
2053
2064
  );
2054
2065
  TableFooter.displayName = "TableFooter";
2055
2066
  var TableRow = React26.forwardRef(
2056
- ({ className, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime26.jsx)("tr", { ref, className: cn("dl-table__row", className), ...props })
2067
+ ({ className, hoverable, ...props }, ref) => /* @__PURE__ */ (0, import_jsx_runtime26.jsx)(
2068
+ "tr",
2069
+ {
2070
+ ref,
2071
+ className: cn(
2072
+ "dl-table__row",
2073
+ hoverable && "dl-table__row--hoverable",
2074
+ className
2075
+ ),
2076
+ ...props
2077
+ }
2078
+ )
2057
2079
  );
2058
2080
  TableRow.displayName = "TableRow";
2059
2081
  var TableHead = React26.forwardRef(
@@ -2269,6 +2291,7 @@ function DataTable({
2269
2291
  loading = false,
2270
2292
  emptyState,
2271
2293
  onRowClick,
2294
+ hoverable = false,
2272
2295
  className
2273
2296
  }) {
2274
2297
  const [internalPage, setInternalPage] = React29.useState(1);
@@ -2334,7 +2357,7 @@ function DataTable({
2334
2357
  return typeof val === "string" || typeof val === "number" ? val : index;
2335
2358
  };
2336
2359
  return /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)("div", { className: cn("dl-data-table-container", className), children: [
2337
- /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { className: "dl-data-table-wrapper", children: /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(Table, { children: [
2360
+ /* @__PURE__ */ (0, import_jsx_runtime31.jsx)("div", { className: "dl-data-table-wrapper", children: /* @__PURE__ */ (0, import_jsx_runtime31.jsxs)(Table, { hoverable: hoverable || Boolean(onRowClick), children: [
2338
2361
  /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(TableHeader, { children: /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(TableRow, { children: columns.map((col) => {
2339
2362
  const isSorted = sortKey === col.key;
2340
2363
  return /* @__PURE__ */ (0, import_jsx_runtime31.jsx)(
@@ -3080,16 +3103,10 @@ var SearchInput = React42.forwardRef(
3080
3103
  onClick: onClear,
3081
3104
  "aria-label": "Clear search query",
3082
3105
  tabIndex: -1,
3083
- children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_lucide_react21.X, { className: "size-4", "aria-hidden": "true" })
3106
+ children: /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_lucide_react21.X, { className: "dl-search-icon", "aria-hidden": "true" })
3084
3107
  }
3085
3108
  ) : null;
3086
- const trailingIcon = loading ? /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
3087
- import_lucide_react21.Loader2,
3088
- {
3089
- className: "size-4 animate-spin text-muted-foreground",
3090
- "aria-hidden": "true"
3091
- }
3092
- ) : clearButton ?? endIcon;
3109
+ const trailingIcon = loading ? /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(import_lucide_react21.Loader2, { className: "dl-search-spinner", "aria-hidden": "true" }) : clearButton ?? endIcon;
3093
3110
  return /* @__PURE__ */ (0, import_jsx_runtime44.jsx)(
3094
3111
  Input,
3095
3112
  {
@@ -3423,7 +3440,7 @@ function MultiSelect({
3423
3440
  onClick: (e) => handleRemove(e, opt.value),
3424
3441
  "aria-label": `Remove ${opt.label}`,
3425
3442
  className: "dl-multi-select-chip__remove",
3426
- children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_lucide_react24.X, { className: "size-3" })
3443
+ children: /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_lucide_react24.X, { className: "dl-multi-select-chip__icon" })
3427
3444
  }
3428
3445
  )
3429
3446
  ] }, opt.value)),
@@ -3433,7 +3450,7 @@ function MultiSelect({
3433
3450
  " more"
3434
3451
  ] })
3435
3452
  ] }) }),
3436
- /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_lucide_react24.ChevronDown, { className: "size-4 shrink-0 text-muted-foreground" })
3453
+ /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(import_lucide_react24.ChevronDown, { className: "dl-multi-select-chevron" })
3437
3454
  ]
3438
3455
  }
3439
3456
  ) }),
@@ -5255,7 +5272,7 @@ var PromptInput = React74.forwardRef(
5255
5272
  ...props,
5256
5273
  children: [
5257
5274
  files.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime78.jsx)("div", { className: "dl-prompt-input__attachments", children: files.map((file) => /* @__PURE__ */ (0, import_jsx_runtime78.jsxs)("span", { className: "dl-prompt-input__chip", children: [
5258
- /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(import_lucide_react34.FileText, { className: "size-3 text-muted-foreground" }),
5275
+ /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(import_lucide_react34.FileText, { className: "dl-prompt-input__chip-icon" }),
5259
5276
  /* @__PURE__ */ (0, import_jsx_runtime78.jsx)("span", { className: "dl-prompt-input__chip-name", children: file.name }),
5260
5277
  /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(
5261
5278
  "button",
@@ -5264,7 +5281,7 @@ var PromptInput = React74.forwardRef(
5264
5281
  onClick: () => handleRemoveFile(file.id),
5265
5282
  "aria-label": `Remove ${file.name}`,
5266
5283
  className: "dl-prompt-input__chip-remove",
5267
- children: /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(import_lucide_react34.X, { className: "size-3" })
5284
+ children: /* @__PURE__ */ (0, import_jsx_runtime78.jsx)(import_lucide_react34.X, { className: "dl-prompt-input__chip-icon" })
5268
5285
  }
5269
5286
  )
5270
5287
  ] }, file.id)) }),
@@ -5510,18 +5527,18 @@ var TerminalHeader = React77.forwardRef(
5510
5527
  className: cn("dl-terminal__header", className),
5511
5528
  ...props,
5512
5529
  children: [
5513
- /* @__PURE__ */ (0, import_jsx_runtime81.jsxs)("div", { className: "flex items-center gap-2", children: [
5530
+ /* @__PURE__ */ (0, import_jsx_runtime81.jsxs)("div", { className: "dl-terminal__header-left", children: [
5514
5531
  windowControls && /* @__PURE__ */ (0, import_jsx_runtime81.jsxs)("div", { className: "dl-terminal__dots", "aria-hidden": "true", children: [
5515
5532
  /* @__PURE__ */ (0, import_jsx_runtime81.jsx)("span", { className: "dl-terminal__dot" }),
5516
5533
  /* @__PURE__ */ (0, import_jsx_runtime81.jsx)("span", { className: "dl-terminal__dot" }),
5517
5534
  /* @__PURE__ */ (0, import_jsx_runtime81.jsx)("span", { className: "dl-terminal__dot" })
5518
5535
  ] }),
5519
5536
  /* @__PURE__ */ (0, import_jsx_runtime81.jsxs)("div", { className: "dl-terminal__title", children: [
5520
- /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(import_lucide_react37.Terminal, { className: "size-3.5" }),
5537
+ /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(import_lucide_react37.Terminal, { className: "dl-terminal__icon" }),
5521
5538
  /* @__PURE__ */ (0, import_jsx_runtime81.jsx)("span", { children: command ?? "Terminal" })
5522
5539
  ] })
5523
5540
  ] }),
5524
- /* @__PURE__ */ (0, import_jsx_runtime81.jsxs)("div", { className: "flex items-center gap-1.5", children: [
5541
+ /* @__PURE__ */ (0, import_jsx_runtime81.jsxs)("div", { className: "dl-terminal__header-actions", children: [
5525
5542
  /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(
5526
5543
  "button",
5527
5544
  {
@@ -5529,7 +5546,13 @@ var TerminalHeader = React77.forwardRef(
5529
5546
  onClick: handleCopy,
5530
5547
  "aria-label": copied ? "Copied" : "Copy output",
5531
5548
  className: "dl-code-block__copy-btn",
5532
- children: copied ? /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(import_lucide_react37.Check, { className: "size-3.5 text-success" }) : /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(import_lucide_react37.Copy, { className: "size-3.5" })
5549
+ children: copied ? /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(
5550
+ import_lucide_react37.Check,
5551
+ {
5552
+ className: "dl-terminal__icon",
5553
+ style: { color: "var(--success, #22c55e)" }
5554
+ }
5555
+ ) : /* @__PURE__ */ (0, import_jsx_runtime81.jsx)(import_lucide_react37.Copy, { className: "dl-terminal__icon" })
5533
5556
  }
5534
5557
  ),
5535
5558
  children
@@ -5685,16 +5708,25 @@ var ModelSelector = React78.forwardRef(
5685
5708
  "aria-haspopup": "listbox",
5686
5709
  "aria-expanded": isOpen,
5687
5710
  children: [
5688
- /* @__PURE__ */ (0, import_jsx_runtime82.jsxs)("div", { className: "flex items-center gap-1.5", children: [
5689
- currentModel?.icon ?? /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(import_lucide_react38.Bot, { className: "size-3.5 text-primary" }),
5690
- /* @__PURE__ */ (0, import_jsx_runtime82.jsx)("span", { className: "font-semibold text-foreground", children: currentModel ? currentModel.name : placeholder })
5711
+ /* @__PURE__ */ (0, import_jsx_runtime82.jsxs)("div", { className: "dl-model-selector__trigger-label", children: [
5712
+ currentModel?.icon ?? /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
5713
+ import_lucide_react38.Bot,
5714
+ {
5715
+ style: {
5716
+ width: "0.875rem",
5717
+ height: "0.875rem",
5718
+ color: "var(--primary)"
5719
+ }
5720
+ }
5721
+ ),
5722
+ /* @__PURE__ */ (0, import_jsx_runtime82.jsx)("span", { style: { fontWeight: 600, color: "var(--foreground)" }, children: currentModel ? currentModel.name : placeholder })
5691
5723
  ] }),
5692
5724
  /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
5693
5725
  import_lucide_react38.ChevronDown,
5694
5726
  {
5695
5727
  className: cn(
5696
- "size-3 text-muted-foreground transition-transform duration-200",
5697
- isOpen && "rotate-180"
5728
+ "dl-model-selector__chevron",
5729
+ isOpen && "dl-model-selector__chevron--open"
5698
5730
  )
5699
5731
  }
5700
5732
  )
@@ -5702,8 +5734,8 @@ var ModelSelector = React78.forwardRef(
5702
5734
  }
5703
5735
  ),
5704
5736
  isOpen && /* @__PURE__ */ (0, import_jsx_runtime82.jsxs)("div", { className: "dl-model-selector__content", role: "listbox", children: [
5705
- models.length > 3 && /* @__PURE__ */ (0, import_jsx_runtime82.jsxs)("div", { className: "relative", children: [
5706
- /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(import_lucide_react38.Search, { className: "absolute left-2 top-2.5 size-3 text-muted-foreground" }),
5737
+ models.length > 3 && /* @__PURE__ */ (0, import_jsx_runtime82.jsxs)("div", { className: "dl-model-selector__search-wrapper", children: [
5738
+ /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(import_lucide_react38.Search, { className: "dl-model-selector__search-icon" }),
5707
5739
  /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
5708
5740
  "input",
5709
5741
  {
@@ -5711,12 +5743,13 @@ var ModelSelector = React78.forwardRef(
5711
5743
  placeholder: "Filter models...",
5712
5744
  value: query,
5713
5745
  onChange: (e) => setQuery(e.target.value),
5714
- className: "dl-model-selector__search w-full pl-7",
5746
+ className: "dl-model-selector__search",
5747
+ style: { width: "100%", paddingLeft: "1.75rem" },
5715
5748
  autoFocus: true
5716
5749
  }
5717
5750
  )
5718
5751
  ] }),
5719
- /* @__PURE__ */ (0, import_jsx_runtime82.jsx)("div", { className: "flex flex-col gap-0.5", children: filteredModels.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime82.jsx)("div", { className: "p-3 text-center text-xs text-muted-foreground", children: "No matching models found" }) : filteredModels.map((model) => {
5752
+ /* @__PURE__ */ (0, import_jsx_runtime82.jsx)("div", { className: "dl-model-selector__list", children: filteredModels.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime82.jsx)("div", { className: "dl-model-selector__empty", children: "No matching models found" }) : filteredModels.map((model) => {
5720
5753
  const isSelected = model.id === activeId;
5721
5754
  return /* @__PURE__ */ (0, import_jsx_runtime82.jsxs)(
5722
5755
  "div",
@@ -5728,14 +5761,24 @@ var ModelSelector = React78.forwardRef(
5728
5761
  className: cn(
5729
5762
  "dl-model-selector__item",
5730
5763
  isSelected && "dl-model-selector__item--active",
5731
- model.disabled && "opacity-50 cursor-not-allowed"
5764
+ model.disabled && "dl-cursor-not-allowed"
5732
5765
  ),
5766
+ style: model.disabled ? { opacity: 0.5 } : void 0,
5733
5767
  children: [
5734
5768
  /* @__PURE__ */ (0, import_jsx_runtime82.jsxs)("div", { className: "dl-model-selector__item-info", children: [
5735
5769
  /* @__PURE__ */ (0, import_jsx_runtime82.jsxs)("div", { className: "dl-model-selector__item-title", children: [
5736
- model.icon ?? /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(import_lucide_react38.Sparkles, { className: "size-3 text-primary" }),
5770
+ model.icon ?? /* @__PURE__ */ (0, import_jsx_runtime82.jsx)(
5771
+ import_lucide_react38.Sparkles,
5772
+ {
5773
+ style: {
5774
+ width: "0.75rem",
5775
+ height: "0.75rem",
5776
+ color: "var(--primary)"
5777
+ }
5778
+ }
5779
+ ),
5737
5780
  /* @__PURE__ */ (0, import_jsx_runtime82.jsx)("span", { children: model.name }),
5738
- /* @__PURE__ */ (0, import_jsx_runtime82.jsxs)("span", { className: "text-xs text-muted-foreground font-normal", children: [
5781
+ /* @__PURE__ */ (0, import_jsx_runtime82.jsxs)("span", { className: "dl-model-selector__provider", children: [
5739
5782
  "(",
5740
5783
  model.provider,
5741
5784
  ")"
@@ -5788,11 +5831,11 @@ var PlanHeader = React79.forwardRef(
5788
5831
  "span",
5789
5832
  {
5790
5833
  className: cn(
5791
- "px-2 py-0.5 rounded-full text-xs font-semibold uppercase tracking-wider",
5792
- status === "completed" && "bg-success/15 text-success",
5793
- status === "in-progress" && "bg-primary/15 text-primary",
5794
- status === "failed" && "bg-destructive/15 text-destructive",
5795
- status === "pending" && "bg-muted text-muted-foreground"
5834
+ "dl-plan__status-chip",
5835
+ status === "completed" && "dl-plan__status-chip--completed",
5836
+ status === "in-progress" && "dl-plan__status-chip--in-progress",
5837
+ status === "failed" && "dl-plan__status-chip--failed",
5838
+ status === "pending" && "dl-plan__status-chip--pending"
5796
5839
  ),
5797
5840
  children: status
5798
5841
  }
@@ -5817,14 +5860,47 @@ var PlanTask = React79.forwardRef(
5817
5860
  const renderIcon = () => {
5818
5861
  switch (status) {
5819
5862
  case "completed":
5820
- return /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(import_lucide_react39.CheckCircle2, { className: "size-4 text-success" });
5863
+ return /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(
5864
+ import_lucide_react39.CheckCircle2,
5865
+ {
5866
+ style: { width: "1rem", height: "1rem", color: "var(--success)" }
5867
+ }
5868
+ );
5821
5869
  case "running":
5822
- return /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(import_lucide_react39.Loader2, { className: "size-4 text-primary animate-spin" });
5870
+ return /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(
5871
+ import_lucide_react39.Loader2,
5872
+ {
5873
+ style: {
5874
+ width: "1rem",
5875
+ height: "1rem",
5876
+ color: "var(--primary)",
5877
+ animation: "spin 1s linear infinite"
5878
+ }
5879
+ }
5880
+ );
5823
5881
  case "failed":
5824
- return /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(import_lucide_react39.XCircle, { className: "size-4 text-destructive" });
5882
+ return /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(
5883
+ import_lucide_react39.XCircle,
5884
+ {
5885
+ style: {
5886
+ width: "1rem",
5887
+ height: "1rem",
5888
+ color: "var(--destructive)"
5889
+ }
5890
+ }
5891
+ );
5825
5892
  case "pending":
5826
5893
  default:
5827
- return /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(import_lucide_react39.Circle, { className: "size-4 text-muted-foreground" });
5894
+ return /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(
5895
+ import_lucide_react39.Circle,
5896
+ {
5897
+ style: {
5898
+ width: "1rem",
5899
+ height: "1rem",
5900
+ color: "var(--muted-foreground)"
5901
+ }
5902
+ }
5903
+ );
5828
5904
  }
5829
5905
  };
5830
5906
  return /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)(
@@ -5847,14 +5923,14 @@ var PlanTask = React79.forwardRef(
5847
5923
  /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("div", { className: "dl-plan__task-icon", children: renderIcon() }),
5848
5924
  /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)("div", { className: "dl-plan__task-body", children: [
5849
5925
  /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("span", { className: "dl-plan__task-title", children: title }),
5850
- description && !expanded && /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("span", { className: "dl-plan__task-desc line-clamp-1", children: description })
5926
+ description && !expanded && /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("span", { className: "dl-plan__task-desc dl-line-clamp-1", children: description })
5851
5927
  ] }),
5852
5928
  hasChildren && /* @__PURE__ */ (0, import_jsx_runtime83.jsx)(
5853
5929
  import_lucide_react39.ChevronRight,
5854
5930
  {
5855
5931
  className: cn(
5856
- "size-3.5 text-muted-foreground transition-transform shrink-0 mt-0.5",
5857
- expanded && "rotate-90"
5932
+ "dl-plan__chevron",
5933
+ expanded && "dl-plan__chevron--expanded"
5858
5934
  )
5859
5935
  }
5860
5936
  )
@@ -5862,7 +5938,7 @@ var PlanTask = React79.forwardRef(
5862
5938
  }
5863
5939
  ),
5864
5940
  expanded && hasChildren && /* @__PURE__ */ (0, import_jsx_runtime83.jsxs)("div", { className: "dl-plan__task-details", children: [
5865
- description && /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("div", { className: "mb-2 leading-relaxed", children: description }),
5941
+ description && /* @__PURE__ */ (0, import_jsx_runtime83.jsx)("div", { className: "dl-plan__desc-block", children: description }),
5866
5942
  children
5867
5943
  ] })
5868
5944
  ]
@@ -5940,9 +6016,9 @@ var SourceCard = React80.forwardRef(
5940
6016
  children: [
5941
6017
  /* @__PURE__ */ (0, import_jsx_runtime84.jsxs)("div", { className: "dl-source-card__meta", children: [
5942
6018
  /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("span", { className: "dl-source-card__index", children: source.index }),
5943
- /* @__PURE__ */ (0, import_jsx_runtime84.jsx)(import_lucide_react40.Globe, { className: "size-3 text-muted-foreground shrink-0" }),
6019
+ /* @__PURE__ */ (0, import_jsx_runtime84.jsx)(import_lucide_react40.Globe, { className: "dl-source-card__icon" }),
5944
6020
  /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("span", { className: "dl-source-card__domain", children: domain }),
5945
- /* @__PURE__ */ (0, import_jsx_runtime84.jsx)(import_lucide_react40.ExternalLink, { className: "size-2.5 ml-auto text-muted-foreground shrink-0 opacity-70" })
6021
+ /* @__PURE__ */ (0, import_jsx_runtime84.jsx)(import_lucide_react40.ExternalLink, { className: "dl-source-card__external" })
5946
6022
  ] }),
5947
6023
  /* @__PURE__ */ (0, import_jsx_runtime84.jsx)("div", { className: "dl-source-card__title", title: source.title, children: source.title })
5948
6024
  ]
@@ -5982,15 +6058,15 @@ var import_lucide_react41 = require("lucide-react");
5982
6058
  var import_jsx_runtime85 = require("react/jsx-runtime");
5983
6059
  var getFileIcon = (name) => {
5984
6060
  if (name.endsWith(".ts") || name.endsWith(".tsx") || name.endsWith(".js") || name.endsWith(".jsx")) {
5985
- return /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(import_lucide_react41.FileCode, { className: "size-3.5 text-primary" });
6061
+ return /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(import_lucide_react41.FileCode, { className: "dl-file-tree__glyph dl-file-tree__glyph--primary" });
5986
6062
  }
5987
6063
  if (name.endsWith(".json")) {
5988
- return /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(import_lucide_react41.FileJson, { className: "size-3.5 text-warning" });
6064
+ return /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(import_lucide_react41.FileJson, { className: "dl-file-tree__glyph dl-file-tree__glyph--warning" });
5989
6065
  }
5990
6066
  if (name.endsWith(".md") || name.endsWith(".mdx")) {
5991
- return /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(import_lucide_react41.FileText, { className: "size-3.5 text-info" });
6067
+ return /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(import_lucide_react41.FileText, { className: "dl-file-tree__glyph dl-file-tree__glyph--info" });
5992
6068
  }
5993
- return /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(import_lucide_react41.File, { className: "size-3.5 text-muted-foreground" });
6069
+ return /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(import_lucide_react41.File, { className: "dl-file-tree__glyph dl-file-tree__glyph--muted" });
5994
6070
  };
5995
6071
  var FileTreeNode = React81.forwardRef(
5996
6072
  ({ className, item, level = 0, selectedId, onSelect, ...props }, ref) => {
@@ -6004,7 +6080,7 @@ var FileTreeNode = React81.forwardRef(
6004
6080
  }
6005
6081
  onSelect?.(item);
6006
6082
  };
6007
- return /* @__PURE__ */ (0, import_jsx_runtime85.jsxs)("div", { ref, className: cn("flex flex-col", className), ...props, children: [
6083
+ return /* @__PURE__ */ (0, import_jsx_runtime85.jsxs)("div", { ref, className: cn("dl-file-tree__item", className), ...props, children: [
6008
6084
  /* @__PURE__ */ (0, import_jsx_runtime85.jsxs)(
6009
6085
  "div",
6010
6086
  {
@@ -6018,12 +6094,12 @@ var FileTreeNode = React81.forwardRef(
6018
6094
  import_lucide_react41.ChevronRight,
6019
6095
  {
6020
6096
  className: cn(
6021
- "size-3 text-muted-foreground transition-transform shrink-0",
6022
- isOpen && "rotate-90"
6097
+ "dl-file-tree__chevron",
6098
+ isOpen && "dl-file-tree__chevron--open"
6023
6099
  )
6024
6100
  }
6025
6101
  ),
6026
- /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("span", { className: "dl-file-tree__icon", children: isFolder ? isOpen ? /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(import_lucide_react41.FolderOpen, { className: "size-3.5 text-warning shrink-0" }) : /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(import_lucide_react41.Folder, { className: "size-3.5 text-warning shrink-0" }) : getFileIcon(item.name) }),
6102
+ /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("span", { className: "dl-file-tree__icon", children: isFolder ? isOpen ? /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(import_lucide_react41.FolderOpen, { className: "dl-file-tree__glyph dl-file-tree__glyph--warning" }) : /* @__PURE__ */ (0, import_jsx_runtime85.jsx)(import_lucide_react41.Folder, { className: "dl-file-tree__glyph dl-file-tree__glyph--warning" }) : getFileIcon(item.name) }),
6027
6103
  /* @__PURE__ */ (0, import_jsx_runtime85.jsx)("span", { className: "dl-file-tree__name", children: item.name })
6028
6104
  ]
6029
6105
  }
@@ -6098,13 +6174,13 @@ var StackFrame = React82.forwardRef(
6098
6174
  className: "dl-stack-frame__header",
6099
6175
  onClick: () => hasSnippet && setExpanded((prev) => !prev),
6100
6176
  children: [
6101
- /* @__PURE__ */ (0, import_jsx_runtime86.jsxs)("div", { className: "flex items-center gap-1.5 min-w-0", children: [
6177
+ /* @__PURE__ */ (0, import_jsx_runtime86.jsxs)("div", { className: "dl-stack-frame__fn-wrapper", children: [
6102
6178
  hasSnippet && /* @__PURE__ */ (0, import_jsx_runtime86.jsx)(
6103
6179
  import_lucide_react42.ChevronRight,
6104
6180
  {
6105
6181
  className: cn(
6106
- "size-3 text-muted-foreground transition-transform shrink-0",
6107
- expanded && "rotate-90"
6182
+ "dl-stack-frame__chevron",
6183
+ expanded && "dl-stack-frame__chevron--expanded"
6108
6184
  )
6109
6185
  }
6110
6186
  ),
@@ -6182,24 +6258,33 @@ var import_jsx_runtime87 = require("react/jsx-runtime");
6182
6258
  var getStatusBadge = (status) => {
6183
6259
  switch (status) {
6184
6260
  case "running":
6185
- return /* @__PURE__ */ (0, import_jsx_runtime87.jsxs)("span", { className: "flex items-center gap-1 text-xs text-primary font-medium", children: [
6186
- /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(import_lucide_react43.Loader2, { className: "size-3 animate-spin" }),
6261
+ return /* @__PURE__ */ (0, import_jsx_runtime87.jsxs)("span", { className: "dl-subagent__status dl-subagent__status--running", children: [
6262
+ /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(
6263
+ import_lucide_react43.Loader2,
6264
+ {
6265
+ style: {
6266
+ width: "0.75rem",
6267
+ height: "0.75rem",
6268
+ animation: "spin 1s linear infinite"
6269
+ }
6270
+ }
6271
+ ),
6187
6272
  /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("span", { children: "Running" })
6188
6273
  ] });
6189
6274
  case "completed":
6190
- return /* @__PURE__ */ (0, import_jsx_runtime87.jsxs)("span", { className: "flex items-center gap-1 text-xs text-success font-medium", children: [
6191
- /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(import_lucide_react43.CheckCircle2, { className: "size-3" }),
6275
+ return /* @__PURE__ */ (0, import_jsx_runtime87.jsxs)("span", { className: "dl-subagent__status dl-subagent__status--completed", children: [
6276
+ /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(import_lucide_react43.CheckCircle2, { style: { width: "0.75rem", height: "0.75rem" } }),
6192
6277
  /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("span", { children: "Done" })
6193
6278
  ] });
6194
6279
  case "failed":
6195
- return /* @__PURE__ */ (0, import_jsx_runtime87.jsxs)("span", { className: "flex items-center gap-1 text-xs text-destructive font-medium", children: [
6196
- /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(import_lucide_react43.XCircle, { className: "size-3" }),
6280
+ return /* @__PURE__ */ (0, import_jsx_runtime87.jsxs)("span", { className: "dl-subagent__status dl-subagent__status--failed", children: [
6281
+ /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(import_lucide_react43.XCircle, { style: { width: "0.75rem", height: "0.75rem" } }),
6197
6282
  /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("span", { children: "Failed" })
6198
6283
  ] });
6199
6284
  case "idle":
6200
6285
  default:
6201
- return /* @__PURE__ */ (0, import_jsx_runtime87.jsxs)("span", { className: "flex items-center gap-1 text-xs text-muted-foreground", children: [
6202
- /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(import_lucide_react43.Circle, { className: "size-3" }),
6286
+ return /* @__PURE__ */ (0, import_jsx_runtime87.jsxs)("span", { className: "dl-subagent__status dl-subagent__status--idle", children: [
6287
+ /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(import_lucide_react43.Circle, { style: { width: "0.75rem", height: "0.75rem" } }),
6203
6288
  /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("span", { children: "Idle" })
6204
6289
  ] });
6205
6290
  }
@@ -6233,8 +6318,8 @@ var Subagent = React83.forwardRef(
6233
6318
  ] })
6234
6319
  ] }),
6235
6320
  /* @__PURE__ */ (0, import_jsx_runtime87.jsxs)("div", { className: "dl-subagent__badges", children: [
6236
- model && /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("span", { className: "px-1.5 py-0.5 rounded text-[10px] font-mono bg-muted text-muted-foreground border border-border", children: model }),
6237
- conversationId && /* @__PURE__ */ (0, import_jsx_runtime87.jsxs)("span", { className: "px-1.5 py-0.5 rounded text-[10px] font-mono bg-muted text-muted-foreground", children: [
6321
+ model && /* @__PURE__ */ (0, import_jsx_runtime87.jsx)("span", { className: "dl-subagent__chip", children: model }),
6322
+ conversationId && /* @__PURE__ */ (0, import_jsx_runtime87.jsxs)("span", { className: "dl-subagent__chip", children: [
6238
6323
  "#",
6239
6324
  conversationId.slice(0, 6)
6240
6325
  ] }),
@@ -6243,8 +6328,8 @@ var Subagent = React83.forwardRef(
6243
6328
  import_lucide_react43.ChevronRight,
6244
6329
  {
6245
6330
  className: cn(
6246
- "size-3.5 text-muted-foreground transition-transform shrink-0 ml-1",
6247
- open && "rotate-90"
6331
+ "dl-subagent__chevron",
6332
+ open && "dl-subagent__chevron--open"
6248
6333
  )
6249
6334
  }
6250
6335
  )
@@ -6354,10 +6439,30 @@ var QueueItem = React85.forwardRef(
6354
6439
  case "active":
6355
6440
  return /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(import_lucide_react45.Loader2, { className: "size-3 text-primary animate-spin shrink-0" });
6356
6441
  case "paused":
6357
- return /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(import_lucide_react45.Pause, { className: "size-3 text-warning shrink-0" });
6442
+ return /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(
6443
+ import_lucide_react45.Pause,
6444
+ {
6445
+ style: {
6446
+ width: "0.75rem",
6447
+ height: "0.75rem",
6448
+ color: "var(--warning, #eab308)",
6449
+ flexShrink: 0
6450
+ }
6451
+ }
6452
+ );
6358
6453
  case "waiting":
6359
6454
  default:
6360
- return /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(import_lucide_react45.Clock, { className: "size-3 text-muted-foreground shrink-0" });
6455
+ return /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(
6456
+ import_lucide_react45.Clock,
6457
+ {
6458
+ style: {
6459
+ width: "0.75rem",
6460
+ height: "0.75rem",
6461
+ color: "var(--muted-foreground)",
6462
+ flexShrink: 0
6463
+ }
6464
+ }
6465
+ );
6361
6466
  }
6362
6467
  };
6363
6468
  return /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)("div", { ref, className: cn("dl-queue-item", className), ...props, children: [
@@ -6371,23 +6476,23 @@ var QueueItem = React85.forwardRef(
6371
6476
  "span",
6372
6477
  {
6373
6478
  className: cn(
6374
- "px-1.5 py-0.5 rounded text-[10px] font-semibold uppercase tracking-wider",
6375
- task.priority === "high" && "bg-destructive/15 text-destructive",
6376
- task.priority === "normal" && "bg-primary/15 text-primary",
6377
- task.priority === "low" && "bg-muted text-muted-foreground"
6479
+ "dl-queue-item__priority",
6480
+ task.priority === "high" && "dl-queue-item__priority--high",
6481
+ task.priority === "normal" && "dl-queue-item__priority--normal",
6482
+ task.priority === "low" && "dl-queue-item__priority--low"
6378
6483
  ),
6379
6484
  children: task.priority
6380
6485
  }
6381
6486
  ),
6382
- task.estimatedDuration && /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { className: "text-xs text-muted-foreground font-mono", children: task.estimatedDuration }),
6487
+ task.estimatedDuration && /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { className: "dl-queue-item__duration", children: task.estimatedDuration }),
6383
6488
  onRemove && /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(
6384
6489
  "button",
6385
6490
  {
6386
6491
  type: "button",
6387
6492
  onClick: onRemove,
6388
6493
  "aria-label": "Remove task",
6389
- className: "text-muted-foreground hover:text-foreground p-0.5 rounded",
6390
- children: /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(import_lucide_react45.X, { className: "size-3.5" })
6494
+ className: "dl-queue-item__remove-btn",
6495
+ children: /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(import_lucide_react45.X, { style: { width: "0.875rem", height: "0.875rem" } })
6391
6496
  }
6392
6497
  )
6393
6498
  ] })
@@ -6406,11 +6511,16 @@ var Queue = React85.forwardRef(
6406
6511
  }, ref) => {
6407
6512
  return /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)("div", { ref, className: cn("dl-queue", className), ...props, children: [
6408
6513
  /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)("div", { className: "dl-queue__header", children: [
6409
- /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)("div", { className: "flex items-center gap-1.5", children: [
6410
- /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(import_lucide_react45.ListOrdered, { className: "size-4 text-primary" }),
6514
+ /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)("div", { className: "dl-queue__header-left", children: [
6515
+ /* @__PURE__ */ (0, import_jsx_runtime89.jsx)(
6516
+ import_lucide_react45.ListOrdered,
6517
+ {
6518
+ style: { width: "1rem", height: "1rem", color: "var(--primary)" }
6519
+ }
6520
+ ),
6411
6521
  /* @__PURE__ */ (0, import_jsx_runtime89.jsx)("span", { children: title })
6412
6522
  ] }),
6413
- /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)("span", { className: "text-xs text-muted-foreground font-normal", children: [
6523
+ /* @__PURE__ */ (0, import_jsx_runtime89.jsxs)("span", { className: "dl-queue__header-count", children: [
6414
6524
  tasks.length,
6415
6525
  " item",
6416
6526
  tasks.length === 1 ? "" : "s"
@@ -6447,21 +6557,31 @@ var TestCase = React86.forwardRef(
6447
6557
  return /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(import_lucide_react46.XCircle, { className: "size-4 text-destructive shrink-0" });
6448
6558
  case "skipped":
6449
6559
  default:
6450
- return /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(import_lucide_react46.MinusCircle, { className: "size-4 text-muted-foreground shrink-0" });
6560
+ return /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(
6561
+ import_lucide_react46.MinusCircle,
6562
+ {
6563
+ style: {
6564
+ width: "1rem",
6565
+ height: "1rem",
6566
+ color: "var(--muted-foreground)",
6567
+ flexShrink: 0
6568
+ }
6569
+ }
6570
+ );
6451
6571
  }
6452
6572
  };
6453
6573
  return /* @__PURE__ */ (0, import_jsx_runtime90.jsxs)("div", { ref, className: cn("dl-test-case", className), ...props, children: [
6454
6574
  /* @__PURE__ */ (0, import_jsx_runtime90.jsxs)(
6455
6575
  "div",
6456
6576
  {
6457
- className: cn("dl-test-case__row", hasError && "cursor-pointer"),
6577
+ className: cn("dl-test-case__row", hasError && "dl-cursor-pointer"),
6458
6578
  onClick: () => hasError && setExpanded((prev) => !prev),
6459
6579
  children: [
6460
6580
  /* @__PURE__ */ (0, import_jsx_runtime90.jsxs)("div", { className: "dl-test-case__info", children: [
6461
6581
  renderIcon(),
6462
6582
  /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("span", { className: "dl-test-case__name", children: test.name })
6463
6583
  ] }),
6464
- /* @__PURE__ */ (0, import_jsx_runtime90.jsxs)("div", { className: "flex items-center gap-2", children: [
6584
+ /* @__PURE__ */ (0, import_jsx_runtime90.jsxs)("div", { className: "dl-test-case__meta", children: [
6465
6585
  test.durationMs !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime90.jsxs)("span", { className: "dl-test-case__duration", children: [
6466
6586
  test.durationMs,
6467
6587
  "ms"
@@ -6470,8 +6590,8 @@ var TestCase = React86.forwardRef(
6470
6590
  import_lucide_react46.ChevronRight,
6471
6591
  {
6472
6592
  className: cn(
6473
- "size-3 text-muted-foreground transition-transform",
6474
- expanded && "rotate-90"
6593
+ "dl-test-case__chevron",
6594
+ expanded && "dl-test-case__chevron--expanded"
6475
6595
  )
6476
6596
  }
6477
6597
  )
@@ -6498,10 +6618,15 @@ var TestResults = React86.forwardRef(
6498
6618
  const skipped = tests.filter((t) => t.status === "skipped").length;
6499
6619
  return /* @__PURE__ */ (0, import_jsx_runtime90.jsxs)("div", { ref, className: cn("dl-test-results", className), ...props, children: [
6500
6620
  /* @__PURE__ */ (0, import_jsx_runtime90.jsxs)("div", { className: "dl-test-results__header", children: [
6501
- /* @__PURE__ */ (0, import_jsx_runtime90.jsxs)("div", { className: "flex items-center gap-2", children: [
6502
- /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(import_lucide_react46.FlaskConical, { className: "size-4 text-primary" }),
6503
- /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("span", { className: "font-semibold text-foreground", children: title }),
6504
- duration && /* @__PURE__ */ (0, import_jsx_runtime90.jsxs)("span", { className: "text-xs text-muted-foreground font-mono", children: [
6621
+ /* @__PURE__ */ (0, import_jsx_runtime90.jsxs)("div", { className: "dl-test-results__header-left", children: [
6622
+ /* @__PURE__ */ (0, import_jsx_runtime90.jsx)(
6623
+ import_lucide_react46.FlaskConical,
6624
+ {
6625
+ style: { width: "1rem", height: "1rem", color: "var(--primary)" }
6626
+ }
6627
+ ),
6628
+ /* @__PURE__ */ (0, import_jsx_runtime90.jsx)("span", { className: "dl-test-results__title", children: title }),
6629
+ duration && /* @__PURE__ */ (0, import_jsx_runtime90.jsxs)("span", { className: "dl-test-results__duration", children: [
6505
6630
  "in ",
6506
6631
  duration
6507
6632
  ] })
@@ -6921,7 +7046,7 @@ var LegalFooter = React95.forwardRef(
6921
7046
  className: cn("dl-legal-footer dl-legal-footer--sidebar", className),
6922
7047
  ...props,
6923
7048
  children: [
6924
- /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("span", { children: appName ? `${appName} ${version ?? ""}`.trim() : version ?? "v1.0.0" }),
7049
+ /* @__PURE__ */ (0, import_jsx_runtime101.jsx)("span", { children: appName ? `${appName} ${version ?? ""}`.trim() : version ?? "" }),
6925
7050
  /* @__PURE__ */ (0, import_jsx_runtime101.jsxs)("span", { children: [
6926
7051
  "\xA9 ",
6927
7052
  currentYear,