@dreamtree-org/twreact-ui 1.3.2 → 1.3.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 (52) hide show
  1. package/DESIGN.md +2 -2
  2. package/README.md +14 -6
  3. package/ai-skills/dreamtree-ui.md +3 -1
  4. package/bin/cli.mjs +72 -4
  5. package/dist/ai-schema.json +3 -2
  6. package/dist/charts/index.js +75 -47
  7. package/dist/components/charts/CartesianChart.d.ts.map +1 -1
  8. package/dist/components/charts/DonutChart.d.ts.map +1 -1
  9. package/dist/components/charts/Sparkline.d.ts.map +1 -1
  10. package/dist/components/charts/chartTheme.d.ts +13 -3
  11. package/dist/components/charts/chartTheme.d.ts.map +1 -1
  12. package/dist/components/core/Table/MobileCard.d.ts.map +1 -1
  13. package/dist/components/core/Table/MobileFilters.d.ts.map +1 -1
  14. package/dist/components/core/Table/Table.d.ts.map +1 -1
  15. package/dist/components/core/Table/TableRow.d.ts.map +1 -1
  16. package/dist/components/core/Table/helpers.d.ts +12 -0
  17. package/dist/components/core/Table/helpers.d.ts.map +1 -1
  18. package/dist/components/utility/Stepper.d.ts.map +1 -1
  19. package/dist/esm/components/blocks/StatCard.js +1 -1
  20. package/dist/esm/components/charts/CartesianChart.js +7 -2
  21. package/dist/esm/components/charts/DonutChart.js +4 -1
  22. package/dist/esm/components/charts/Sparkline.js +4 -1
  23. package/dist/esm/components/charts/chartTheme.js +65 -48
  24. package/dist/esm/components/core/Select.js +2 -2
  25. package/dist/esm/components/core/Table/ActionMenu.js +5 -5
  26. package/dist/esm/components/core/Table/ColumnMenu.js +1 -1
  27. package/dist/esm/components/core/Table/FieldInput.js +5 -5
  28. package/dist/esm/components/core/Table/MobileCard.js +14 -12
  29. package/dist/esm/components/core/Table/MobileFilters.js +11 -4
  30. package/dist/esm/components/core/Table/Pagination.js +1 -1
  31. package/dist/esm/components/core/Table/Table.js +22 -19
  32. package/dist/esm/components/core/Table/TableRow.js +10 -11
  33. package/dist/esm/components/core/Table/helpers.js +16 -1
  34. package/dist/esm/components/navigation/Dropdown.js +1 -1
  35. package/dist/esm/components/navigation/Navbar.js +21 -21
  36. package/dist/esm/components/navigation/Sidebar.js +12 -12
  37. package/dist/esm/components/utility/Card.js +5 -5
  38. package/dist/esm/components/utility/Stepper.js +6 -4
  39. package/dist/index.css +1 -1
  40. package/dist/index.esm.css +1 -1
  41. package/dist/index.esm.js +129 -101
  42. package/dist/index.js +129 -101
  43. package/dist/tokens/brands/practicepro.json +1 -0
  44. package/dist/tokens/brands/studio.json +1 -0
  45. package/dist/types/index.d.ts +1 -0
  46. package/dist/types/index.d.ts.map +1 -1
  47. package/mcp/catalog.snapshot.json +21 -21
  48. package/package.json +2 -1
  49. package/tokens/brand.schema.json +612 -0
  50. package/tokens/brands/practicepro.json +1 -0
  51. package/tokens/brands/studio.json +1 -0
  52. package/tokens/lib.cjs +131 -7
package/dist/index.js CHANGED
@@ -3656,7 +3656,7 @@ var Select = /*#__PURE__*/React.forwardRef(function (_ref, forwardedRef) {
3656
3656
  onMenuItemRender = _ref.onMenuItemRender,
3657
3657
  className = _ref.className,
3658
3658
  _ref$allowClear = _ref.allowClear,
3659
- allowClear = _ref$allowClear === void 0 ? true : _ref$allowClear,
3659
+ allowClear = _ref$allowClear === void 0 ? false : _ref$allowClear,
3660
3660
  _ref$creatable = _ref.creatable,
3661
3661
  creatable = _ref$creatable === void 0 ? false : _ref$creatable,
3662
3662
  onCreateOption = _ref.onCreateOption,
@@ -4093,7 +4093,7 @@ var Select = /*#__PURE__*/React.forwardRef(function (_ref, forwardedRef) {
4093
4093
  }, opt.value);
4094
4094
  })
4095
4095
  }), jsxRuntime.jsxs("div", {
4096
- className: "text-xs text-primary-500",
4096
+ className: "text-xs text-primary-700",
4097
4097
  children: ["+", rest]
4098
4098
  })]
4099
4099
  });
@@ -4822,6 +4822,21 @@ var getRowKey = function getRowKey(row, globalIndex) {
4822
4822
  if (row._id !== undefined && row._id !== null) return String(row._id);
4823
4823
  return String(globalIndex);
4824
4824
  };
4825
+ /**
4826
+ * A `stripedColors` entry is either a CSS colour ("#f7fafc", "rgb(...)") applied as an
4827
+ * inline background, or a Tailwind class ("bg-surface", "dark:bg-gray-900") applied as a
4828
+ * className. Returns the props to spread onto the striped element.
4829
+ */
4830
+ var getStripeProps = function getStripeProps(stripe) {
4831
+ if (!stripe) return {};
4832
+ return /(^|[\s:])bg-/.test(stripe) ? {
4833
+ className: stripe
4834
+ } : {
4835
+ style: {
4836
+ backgroundColor: stripe
4837
+ }
4838
+ };
4839
+ };
4825
4840
  /**
4826
4841
  * Resolve a value that may be supplied directly or as a per-row producer.
4827
4842
  * Used for an action's `label`, `icon`, `hidden` and `disabled`.
@@ -4959,7 +4974,7 @@ function useClickOutside(refs, isActive, onClickOutside) {
4959
4974
  * Pagination controls component for the table
4960
4975
  * Supports both header (icon-only) and footer (with page numbers) variants
4961
4976
  */
4962
- var DEFAULT_ROW_HOVER$1 = "bg-gray-50";
4977
+ var DEFAULT_ROW_HOVER$1 = "bg-background";
4963
4978
  // Header pagination (compact, icon-based)
4964
4979
  function PaginationHeader(_ref) {
4965
4980
  var _theme$rowHover;
@@ -5104,7 +5119,7 @@ function PaginationFooter(_ref2) {
5104
5119
  });
5105
5120
  }
5106
5121
 
5107
- var DEFAULT_ROW_HOVER = "bg-gray-50";
5122
+ var DEFAULT_ROW_HOVER = "bg-background";
5108
5123
  /**
5109
5124
  * Column visibility toggle menu
5110
5125
  */
@@ -5166,20 +5181,23 @@ function MobileFilters(_ref) {
5166
5181
  visibleColumns = _ref.visibleColumns,
5167
5182
  filters = _ref.filters,
5168
5183
  handleFilter = _ref.handleFilter;
5184
+ var idPrefix = React.useId();
5169
5185
  return jsxRuntime.jsxs("div", {
5170
- className: "mb-4 p-3 bg-gray-50 rounded-lg",
5186
+ className: "mb-4 p-3 bg-background rounded-lg",
5171
5187
  children: [jsxRuntime.jsxs("div", {
5172
5188
  className: "flex items-center justify-between mb-3",
5173
5189
  children: [jsxRuntime.jsx("h3", {
5174
5190
  className: "text-sm font-medium",
5175
5191
  children: "Filters"
5176
5192
  }), jsxRuntime.jsx("button", {
5193
+ type: "button",
5177
5194
  onClick: function onClick() {
5178
5195
  return setShowMobileFilters(function (s) {
5179
5196
  return !s;
5180
5197
  });
5181
5198
  },
5182
- className: "text-xs text-primary-500",
5199
+ "aria-expanded": !!showMobileFilters,
5200
+ className: "text-xs font-medium text-primary-700",
5183
5201
  children: showMobileFilters ? "Hide" : "Show"
5184
5202
  })]
5185
5203
  }), showMobileFilters && jsxRuntime.jsxs("div", {
@@ -5189,6 +5207,7 @@ function MobileFilters(_ref) {
5189
5207
  children: [jsxRuntime.jsx("input", {
5190
5208
  type: "text",
5191
5209
  placeholder: "Search...",
5210
+ "aria-label": "Search",
5192
5211
  className: "w-full rounded-md border border-gray-300 px-4 py-2 text-sm",
5193
5212
  value: searchInput,
5194
5213
  onChange: function onChange(e) {
@@ -5196,14 +5215,17 @@ function MobileFilters(_ref) {
5196
5215
  },
5197
5216
  onKeyDown: onGlobalKeyDown
5198
5217
  }), jsxRuntime.jsx(Search, {
5199
- className: "absolute right-3 top-2.5 h-4 w-4 text-primary-400"
5218
+ className: "absolute right-3 top-2.5 h-4 w-4 text-primary-400",
5219
+ "aria-hidden": "true"
5200
5220
  })]
5201
5221
  }), filterable && visibleColumns.map(function (column) {
5202
5222
  return jsxRuntime.jsxs("div", {
5203
5223
  children: [jsxRuntime.jsx("label", {
5224
+ htmlFor: "".concat(idPrefix, "-filter-").concat(column.key),
5204
5225
  className: "block text-xs font-medium mb-1",
5205
5226
  children: column.label
5206
5227
  }), jsxRuntime.jsx("input", {
5228
+ id: "".concat(idPrefix, "-filter-").concat(column.key),
5207
5229
  type: "text",
5208
5230
  placeholder: "Filter ".concat(column.label),
5209
5231
  className: "w-full rounded-md border border-gray-300 px-3 py-2 text-sm",
@@ -5218,8 +5240,8 @@ function MobileFilters(_ref) {
5218
5240
  });
5219
5241
  }
5220
5242
 
5221
- var DEFAULT_MENU_BG = "bg-white border border-gray-100 shadow-xl";
5222
- var DEFAULT_MENU_ITEM_HOVER = "opacity-75 hover:opacity-100 hover:bg-gray-100/80 active:bg-gray-200/80";
5243
+ var DEFAULT_MENU_BG = "bg-surface border border-line shadow-xl";
5244
+ var DEFAULT_MENU_ITEM_HOVER = "opacity-75 hover:opacity-100 hover:bg-gray-100/80 active:bg-gray-200/80 dark:hover:bg-gray-800 dark:active:bg-gray-700";
5223
5245
  function ActionMenu(_ref) {
5224
5246
  var _theme$menuBg, _theme$menuItemHover;
5225
5247
  var _ref$actions = _ref.actions,
@@ -5423,7 +5445,7 @@ function ActionMenu(_ref) {
5423
5445
  children: jsxRuntime.jsx("div", {
5424
5446
  className: "p-1.5 space-y-0.5",
5425
5447
  children: !Array.isArray(actions) || actions.length === 0 ? jsxRuntime.jsx("div", {
5426
- className: "px-3 py-2 text-sm text-gray-400 italic",
5448
+ className: "px-3 py-2 text-sm text-muted italic",
5427
5449
  children: "No actions"
5428
5450
  }) : actions.map(function (action, idx) {
5429
5451
  var _action$name;
@@ -5434,7 +5456,7 @@ function ActionMenu(_ref) {
5434
5456
  type: "button",
5435
5457
  disabled: isDisabled,
5436
5458
  "aria-disabled": isDisabled || undefined,
5437
- className: cn$1("w-full text-left px-3 py-2 text-sm flex items-center gap-2.5 rounded-lg transition-colors font-medium", isDisabled ? "opacity-50 cursor-not-allowed text-gray-400" : ["text-gray-700 hover:text-gray-900", menuItemHover, isFocused ? "bg-gray-100 text-gray-900 ring-1 ring-gray-300" : ""]),
5459
+ className: cn$1("w-full text-left px-3 py-2 text-sm flex items-center gap-2.5 rounded-lg transition-colors font-medium", isDisabled ? "opacity-50 cursor-not-allowed text-muted" : ["text-foreground", menuItemHover, isFocused ? "bg-gray-100 text-gray-900 ring-1 ring-gray-300 dark:bg-gray-800 dark:text-foreground dark:ring-gray-600" : ""]),
5438
5460
  onMouseEnter: function onMouseEnter() {
5439
5461
  return !isDisabled && setFocusedIndex(idx);
5440
5462
  },
@@ -5446,7 +5468,7 @@ function ActionMenu(_ref) {
5446
5468
  },
5447
5469
  children: action.render ? action.render(row) : jsxRuntime.jsxs(jsxRuntime.Fragment, {
5448
5470
  children: [action.icon && jsxRuntime.jsx("span", {
5449
- className: "inline-flex text-gray-500 flex-shrink-0",
5471
+ className: "inline-flex text-muted flex-shrink-0",
5450
5472
  children: action.icon
5451
5473
  }), jsxRuntime.jsx("span", {
5452
5474
  className: "truncate",
@@ -5541,6 +5563,7 @@ function TableRow(_ref) {
5541
5563
  var safeExtraRowClass = typeof extraRowClass === "string" ? extraRowClass.trim() : "";
5542
5564
  var stripeColors = theme === null || theme === void 0 ? void 0 : theme.stripedColors;
5543
5565
  var stripeBg = stripedRows && !isSelected && Array.isArray(stripeColors) && stripeColors.length > 0 ? stripeColors[globalIndex % stripeColors.length] : undefined;
5566
+ var stripeProps = getStripeProps(stripeBg);
5544
5567
  var rowKey = isNewRow ? row._key : key;
5545
5568
  var isRowActive = interactive && (activeCell === null || activeCell === void 0 ? void 0 : activeCell.rowKey) === rowKey;
5546
5569
  var effectiveRow = React.useMemo(function () {
@@ -5549,10 +5572,8 @@ function TableRow(_ref) {
5549
5572
  }, [interactive, pendingEdits, rowKey, row]);
5550
5573
  return jsxRuntime.jsxs(React.Fragment, {
5551
5574
  children: [jsxRuntime.jsxs("tr", {
5552
- style: stripeBg ? {
5553
- backgroundColor: stripeBg
5554
- } : undefined,
5555
- className: cn$1(theme !== null && theme !== void 0 && theme.rowHover ? ["hover:" + theme.rowHover] : [], {
5575
+ style: stripeProps.style,
5576
+ className: cn$1(stripeProps.className, theme !== null && theme !== void 0 && theme.rowHover ? ["hover:" + theme.rowHover] : [], {
5556
5577
  "cursor-pointer": !!onRowClick,
5557
5578
  "bg-primary-50": isSelected,
5558
5579
  "bg-primary-50/20": isRowActive && !isSelected,
@@ -5571,7 +5592,7 @@ function TableRow(_ref) {
5571
5592
  },
5572
5593
  "aria-expanded": isExpanded,
5573
5594
  "aria-label": isExpanded ? "Collapse row details" : "Expand row details",
5574
- className: "p-1 rounded hover:bg-gray-100",
5595
+ className: "p-1 rounded hover:bg-gray-100 dark:hover:bg-gray-800",
5575
5596
  children: isExpanded ? "▾" : "▸"
5576
5597
  })
5577
5598
  }), showSerial && jsxRuntime.jsx("td", {
@@ -5607,9 +5628,9 @@ function TableRow(_ref) {
5607
5628
  title: isCellInvalid ? "Field \"".concat(column.label || column.key, "\" is required or invalid") : undefined,
5608
5629
  className: cn$1("px-6 py-4 text-sm transition-all", wrapCell ? "whitespace-normal break-words" : "whitespace-nowrap", {
5609
5630
  "ring-2 ring-error-500 ring-inset bg-error-50/40 relative z-10": isCellInvalid && !isCellEditing,
5610
- "ring-2 ring-error-600 ring-inset bg-white p-1 z-20 relative": isCellEditing && isCellInvalid,
5631
+ "ring-2 ring-error-600 ring-inset bg-surface p-1 z-20 relative": isCellEditing && isCellInvalid,
5611
5632
  "ring-2 ring-primary-500 ring-inset bg-primary-50/50 relative z-10": isCellActive && !isCellEditing && !isCellInvalid,
5612
- "ring-2 ring-primary-600 ring-inset bg-white p-1 z-20 relative": isCellEditing && !isCellInvalid
5633
+ "ring-2 ring-primary-600 ring-inset bg-surface p-1 z-20 relative": isCellEditing && !isCellInvalid
5613
5634
  }, safeExtraCellClass),
5614
5635
  onClick: function onClick() {
5615
5636
  if (interactive && onCellClick) {
@@ -5656,7 +5677,7 @@ function TableRow(_ref) {
5656
5677
  if (action.disabled) return;
5657
5678
  handleOnAction(action, row);
5658
5679
  },
5659
- className: cn$1("p-1 rounded", action.disabled ? "opacity-50 cursor-not-allowed" : "hover:bg-gray-100"),
5680
+ className: cn$1("p-1 rounded", action.disabled ? "opacity-50 cursor-not-allowed" : "hover:bg-gray-100 dark:hover:bg-gray-800"),
5660
5681
  children: action.render ? action.render(row) : (_action$icon = action.icon) !== null && _action$icon !== void 0 ? _action$icon : jsxRuntime.jsx("span", {
5661
5682
  className: "text-xs",
5662
5683
  children: actionLabel
@@ -5672,7 +5693,7 @@ function TableRow(_ref) {
5672
5693
  return toggleActions(e, actionCellKey, row);
5673
5694
  },
5674
5695
  "aria-expanded": activeActionRowKey === actionCellKey,
5675
- className: "p-1 rounded hover:bg-gray-100",
5696
+ className: "p-1 rounded hover:bg-gray-100 dark:hover:bg-gray-800",
5676
5697
  title: "Actions",
5677
5698
  children: jsxRuntime.jsx(MoreVertical, {
5678
5699
  className: "h-4 w-4"
@@ -5696,7 +5717,7 @@ function TableRow(_ref) {
5696
5717
  colSpan: visibleCount,
5697
5718
  className: cn$1(_defineProperty$4(_defineProperty$4({
5698
5719
  "px-6 py-4": true
5699
- }, (_theme$accentColor = theme === null || theme === void 0 ? void 0 : theme.accentColor) !== null && _theme$accentColor !== void 0 ? _theme$accentColor : "bg-gray-50", true), (_theme$rowHover = theme === null || theme === void 0 ? void 0 : theme.rowHover) !== null && _theme$rowHover !== void 0 ? _theme$rowHover : "bg-gray-50", true)),
5720
+ }, (_theme$accentColor = theme === null || theme === void 0 ? void 0 : theme.accentColor) !== null && _theme$accentColor !== void 0 ? _theme$accentColor : "bg-background", true), (_theme$rowHover = theme === null || theme === void 0 ? void 0 : theme.rowHover) !== null && _theme$rowHover !== void 0 ? _theme$rowHover : "bg-background", true)),
5700
5721
  children: jsxRuntime.jsx(DetailsComponent, {
5701
5722
  row: row,
5702
5723
  index: globalIndex
@@ -5761,11 +5782,10 @@ function MobileCard(_ref) {
5761
5782
  var hasActions = withAction && (inlineActions.length > 0 || menuActions.length > 0);
5762
5783
  var showHeader = showDetailsToggle || selectable || showSerial || hasActions;
5763
5784
  var stripeBg = stripedRows && !isSelected && Array.isArray(stripedColors) && stripedColors.length > 0 ? stripedColors[globalIndex % stripedColors.length] : undefined;
5785
+ var stripeProps = getStripeProps(stripeBg);
5764
5786
  return jsxRuntime.jsxs("div", {
5765
- style: stripeBg ? {
5766
- backgroundColor: stripeBg
5767
- } : undefined,
5768
- className: cn$1("border rounded-lg mb-3 shadow-sm overflow-hidden transition-all duration-200", {
5787
+ style: stripeProps.style,
5788
+ className: cn$1(stripeProps.className, "border border-line rounded-lg mb-3 shadow-sm overflow-hidden transition-all duration-200", {
5769
5789
  "cursor-pointer": !!onRowClick,
5770
5790
  "bg-primary-50 border-primary-200": isSelected,
5771
5791
  "hover:shadow-md": !isSelected
@@ -5774,7 +5794,7 @@ function MobileCard(_ref) {
5774
5794
  return onRowClick === null || onRowClick === void 0 ? void 0 : onRowClick(row, globalIndex);
5775
5795
  },
5776
5796
  children: [showHeader && jsxRuntime.jsxs("div", {
5777
- className: "flex items-center justify-between p-4 border-b bg-gray-50",
5797
+ className: "flex items-center justify-between p-4 border-b border-line bg-background",
5778
5798
  children: [jsxRuntime.jsxs("div", {
5779
5799
  className: "flex items-center gap-3",
5780
5800
  children: [showDetailsToggle && jsxRuntime.jsx("button", {
@@ -5785,7 +5805,7 @@ function MobileCard(_ref) {
5785
5805
  },
5786
5806
  "aria-expanded": isExpanded,
5787
5807
  "aria-label": isExpanded ? "Collapse row details" : "Expand row details",
5788
- className: "p-1 rounded hover:bg-gray-200",
5808
+ className: "p-1 rounded hover:bg-gray-200 dark:hover:bg-gray-700",
5789
5809
  children: isExpanded ? "▾" : "▸"
5790
5810
  }), selectable && jsxRuntime.jsx("input", {
5791
5811
  type: "checkbox",
@@ -5819,7 +5839,7 @@ function MobileCard(_ref) {
5819
5839
  if (action.disabled) return;
5820
5840
  handleOnAction(action, row);
5821
5841
  },
5822
- className: cn$1("p-1.5 rounded", action.disabled ? "opacity-50 cursor-not-allowed" : "hover:bg-gray-200"),
5842
+ className: cn$1("p-1.5 rounded", action.disabled ? "opacity-50 cursor-not-allowed" : "hover:bg-gray-200 dark:hover:bg-gray-700"),
5823
5843
  children: action.render ? action.render(row) : (_action$icon = action.icon) !== null && _action$icon !== void 0 ? _action$icon : jsxRuntime.jsx("span", {
5824
5844
  className: "text-xs",
5825
5845
  children: actionLabel
@@ -5828,6 +5848,7 @@ function MobileCard(_ref) {
5828
5848
  }), menuActions.length > 0 && jsxRuntime.jsxs("div", {
5829
5849
  className: "relative",
5830
5850
  children: [jsxRuntime.jsx("button", {
5851
+ type: "button",
5831
5852
  ref: function ref(el) {
5832
5853
  return registerActionButton === null || registerActionButton === void 0 ? void 0 : registerActionButton(actionCellKey, el);
5833
5854
  },
@@ -5835,10 +5856,12 @@ function MobileCard(_ref) {
5835
5856
  return toggleActions(e, actionCellKey, row);
5836
5857
  },
5837
5858
  "aria-expanded": activeActionRowKey === actionCellKey,
5838
- className: "p-1.5 rounded hover:bg-gray-200",
5859
+ className: "p-1.5 rounded hover:bg-gray-200 dark:hover:bg-gray-700",
5839
5860
  title: "Actions",
5861
+ "aria-label": "Actions",
5840
5862
  children: jsxRuntime.jsx(MoreVertical, {
5841
- className: "h-4 w-4"
5863
+ className: "h-4 w-4",
5864
+ "aria-hidden": "true"
5842
5865
  })
5843
5866
  }), activeActionRowKey === actionCellKey && jsxRuntime.jsx(ActionMenu, {
5844
5867
  actions: menuActions,
@@ -5866,7 +5889,7 @@ function MobileCard(_ref) {
5866
5889
  return jsxRuntime.jsxs("div", {
5867
5890
  className: cn$1("flex justify-between items-center flex-row py-2 border-b last:border-b-0", safeExtraCellClass),
5868
5891
  children: [jsxRuntime.jsx("div", {
5869
- className: "text-xs font-medium text-primary-500 uppercase tracking-wide mb-1 sm:mb-0 sm:w-1/3 sm:pr-2",
5892
+ className: "text-xs font-medium text-primary-700 uppercase tracking-wide mb-1 sm:mb-0 sm:w-1/3 sm:pr-2",
5870
5893
  children: column.label
5871
5894
  }), jsxRuntime.jsx("div", {
5872
5895
  className: "text-sm text-primary-900 sm:w-2/3 sm:pl-2 break-words",
@@ -5875,7 +5898,7 @@ function MobileCard(_ref) {
5875
5898
  }, column.key);
5876
5899
  })
5877
5900
  }), showDetailsToggle && isExpanded && DetailsComponent && jsxRuntime.jsx("div", {
5878
- className: "border-t bg-gray-50 p-4",
5901
+ className: "border-t border-line bg-background p-4",
5879
5902
  children: jsxRuntime.jsx(DetailsComponent, {
5880
5903
  row: row,
5881
5904
  index: globalIndex
@@ -5936,7 +5959,7 @@ function FieldInput(_ref) {
5936
5959
  onClick: stopProp,
5937
5960
  onMouseDown: stopProp,
5938
5961
  placeholder: "Enter ".concat(column.label || column.key, "..."),
5939
- className: cn$1("w-full px-2 py-1 text-sm border rounded outline-none transition-all focus:ring-2 focus:ring-primary-500 bg-white resize-y min-h-[2.5rem]", className)
5962
+ className: cn$1("w-full px-2 py-1 text-sm border rounded outline-none transition-all focus:ring-2 focus:ring-primary-500 bg-surface text-foreground resize-y min-h-[2.5rem]", className)
5940
5963
  });
5941
5964
  }
5942
5965
  // Select / Dropdown
@@ -5956,7 +5979,7 @@ function FieldInput(_ref) {
5956
5979
  onKeyDown: onKeyDown,
5957
5980
  onClick: stopProp,
5958
5981
  onMouseDown: stopProp,
5959
- className: cn$1("w-full px-2 py-1 text-sm border rounded outline-none focus:ring-2 focus:ring-primary-500 bg-white", className),
5982
+ className: cn$1("w-full px-2 py-1 text-sm border rounded outline-none focus:ring-2 focus:ring-primary-500 bg-surface text-foreground", className),
5960
5983
  children: [jsxRuntime.jsxs("option", {
5961
5984
  value: "",
5962
5985
  children: ["Select ", column.label || column.key]
@@ -5999,7 +6022,7 @@ function FieldInput(_ref) {
5999
6022
  onKeyDown: onKeyDown,
6000
6023
  onClick: stopProp,
6001
6024
  onMouseDown: stopProp,
6002
- className: cn$1("w-full px-2 py-1 text-sm border rounded outline-none focus:ring-2 focus:ring-primary-500 bg-white", className)
6025
+ className: cn$1("w-full px-2 py-1 text-sm border rounded outline-none focus:ring-2 focus:ring-primary-500 bg-surface text-foreground", className)
6003
6026
  });
6004
6027
  }
6005
6028
  // Number
@@ -6015,7 +6038,7 @@ function FieldInput(_ref) {
6015
6038
  onClick: stopProp,
6016
6039
  onMouseDown: stopProp,
6017
6040
  placeholder: "Enter ".concat(column.label || column.key, "..."),
6018
- className: cn$1("w-full px-2 py-1 text-sm border rounded outline-none focus:ring-2 focus:ring-primary-500 bg-white", className)
6041
+ className: cn$1("w-full px-2 py-1 text-sm border rounded outline-none focus:ring-2 focus:ring-primary-500 bg-surface text-foreground", className)
6019
6042
  });
6020
6043
  }
6021
6044
  // Default: Text
@@ -6030,7 +6053,7 @@ function FieldInput(_ref) {
6030
6053
  onClick: stopProp,
6031
6054
  onMouseDown: stopProp,
6032
6055
  placeholder: "Enter ".concat(column.label || column.key, "..."),
6033
- className: cn$1("w-full px-2 py-1 text-sm border rounded outline-none focus:ring-2 focus:ring-primary-500 bg-white", className)
6056
+ className: cn$1("w-full px-2 py-1 text-sm border rounded outline-none focus:ring-2 focus:ring-primary-500 bg-surface text-foreground", className)
6034
6057
  });
6035
6058
  }
6036
6059
 
@@ -6041,11 +6064,11 @@ function _objectSpread$P(e) { for (var r = 1; r < arguments.length; r++) { var t
6041
6064
  var DEFAULT_DATA = [];
6042
6065
  var DEFAULT_COLUMNS = [];
6043
6066
  var DEFAULT_THEME = {
6044
- stripedColors: ["bg-[#ffffff]", "bg-[#f7fafc]"],
6045
- rowHover: "bg-gray-50",
6046
- accentColor: "bg-gray-50",
6047
- menuBg: "bg-white",
6048
- menuItemHover: "hover:bg-gray-50"
6067
+ stripedColors: ["bg-surface", "bg-background"],
6068
+ rowHover: "bg-background",
6069
+ accentColor: "bg-background",
6070
+ menuBg: "bg-surface",
6071
+ menuItemHover: "hover:bg-background"
6049
6072
  };
6050
6073
  var Table = /*#__PURE__*/React.forwardRef(function Table(_ref, ref) {
6051
6074
  var _validationErrors$;
@@ -7200,10 +7223,13 @@ var Table = /*#__PURE__*/React.forwardRef(function Table(_ref, ref) {
7200
7223
  children: [showReloadButton && jsxRuntime.jsx(jsxRuntime.Fragment, {
7201
7224
  children: renderReloadButton ? typeof renderReloadButton === "function" ? renderReloadButton() : renderReloadButton : jsxRuntime.jsxs("button", {
7202
7225
  type: "button",
7226
+ "aria-label": "Reload",
7227
+ title: "Reload",
7203
7228
  className: "px-4 py-2 bg-primary-100 flex items-center gap-2 rounded-lg md:rounded text-primary-700 hover:bg-primary-200 transition-colors",
7204
7229
  onClick: onReload,
7205
7230
  children: [jsxRuntime.jsx(RefreshCcw, {
7206
- className: "size-4"
7231
+ className: "size-4",
7232
+ "aria-hidden": "true"
7207
7233
  }), jsxRuntime.jsx("span", {
7208
7234
  className: "hidden sm:inline",
7209
7235
  children: "Reload"
@@ -7257,7 +7283,7 @@ var Table = /*#__PURE__*/React.forwardRef(function Table(_ref, ref) {
7257
7283
  onClick: handleClearChanges,
7258
7284
  disabled: isSaving,
7259
7285
  title: "Discard all pending modifications",
7260
- className: "px-4 py-2 font-medium rounded-lg text-sm flex items-center gap-2 transition-all border border-primary-300 text-primary-700 bg-white hover:bg-primary-50 active:bg-primary-100 cursor-pointer shadow-sm disabled:opacity-50",
7286
+ className: "px-4 py-2 font-medium rounded-lg text-sm flex items-center gap-2 transition-all border border-primary-300 text-primary-700 bg-surface hover:bg-primary-50 dark:text-primary-300 dark:border-primary-700 dark:hover:bg-primary-900/40 active:bg-primary-100 cursor-pointer shadow-sm disabled:opacity-50",
7261
7287
  children: [jsxRuntime.jsx(X, {
7262
7288
  className: "w-4 h-4 text-primary-600"
7263
7289
  }), jsxRuntime.jsx("span", {
@@ -7301,7 +7327,7 @@ var Table = /*#__PURE__*/React.forwardRef(function Table(_ref, ref) {
7301
7327
  onKeyDown: onGlobalKeyDown
7302
7328
  }), jsxRuntime.jsx("button", {
7303
7329
  onClick: applyGlobalSearch,
7304
- className: "absolute right-2 top-1/2 transform -translate-y-1/2 p-2 rounded-lg hover:bg-gray-100",
7330
+ className: "absolute right-2 top-1/2 transform -translate-y-1/2 p-2 rounded-lg hover:bg-gray-100 dark:hover:bg-gray-800",
7305
7331
  title: "Search",
7306
7332
  children: jsxRuntime.jsx(Search, {
7307
7333
  className: "h-4 w-4 text-primary-400"
@@ -7312,7 +7338,7 @@ var Table = /*#__PURE__*/React.forwardRef(function Table(_ref, ref) {
7312
7338
  setSearchInput("");
7313
7339
  handleFilter("global", "");
7314
7340
  },
7315
- className: "whitespace-nowrap rounded-lg md:rounded-md border border-gray-300 px-4 py-3 md:py-2 text-sm hover:bg-gray-100 w-full sm:w-auto",
7341
+ className: "whitespace-nowrap rounded-lg md:rounded-md border border-gray-300 px-4 py-3 md:py-2 text-sm hover:bg-gray-100 dark:hover:bg-gray-800 w-full sm:w-auto",
7316
7342
  children: "Clear"
7317
7343
  })]
7318
7344
  })
@@ -7336,7 +7362,7 @@ var Table = /*#__PURE__*/React.forwardRef(function Table(_ref, ref) {
7336
7362
  }), !isMobileView && jsxRuntime.jsx("div", {
7337
7363
  className: "overflow-x-auto overflow-y-visible",
7338
7364
  children: jsxRuntime.jsxs("table", _objectSpread$P(_objectSpread$P({
7339
- className: cn$1("min-w-full divide-y divide-gray-200", className)
7365
+ className: cn$1("min-w-full divide-y divide-line", className)
7340
7366
  }, props), {}, {
7341
7367
  children: [jsxRuntime.jsxs("thead", {
7342
7368
  className: safeTheme.accentColor,
@@ -7344,7 +7370,7 @@ var Table = /*#__PURE__*/React.forwardRef(function Table(_ref, ref) {
7344
7370
  children: [hasDetailsColumn && jsxRuntime.jsx("th", {
7345
7371
  className: "w-8 px-4 py-3"
7346
7372
  }), showSerial && jsxRuntime.jsx("th", {
7347
- className: "w-8 px-4 py-3 text-left text-xs font-medium text-primary-500 uppercase tracking-wider",
7373
+ className: "w-8 px-4 py-3 text-left text-xs font-medium text-primary-700 uppercase tracking-wider",
7348
7374
  children: "#"
7349
7375
  }), selectable && jsxRuntime.jsx("th", {
7350
7376
  className: "w-12 px-6 py-3",
@@ -7357,8 +7383,8 @@ var Table = /*#__PURE__*/React.forwardRef(function Table(_ref, ref) {
7357
7383
  }), visibleColumns.map(function (column) {
7358
7384
  var _column$rules;
7359
7385
  return jsxRuntime.jsx("th", {
7360
- className: cn$1("px-6 py-3 text-left text-xs font-medium text-primary-500 uppercase tracking-wider", {
7361
- "cursor-pointer hover:bg-gray-100": sortable && column.sortable !== false
7386
+ className: cn$1("px-6 py-3 text-left text-xs font-medium text-primary-700 uppercase tracking-wider", {
7387
+ "cursor-pointer hover:bg-gray-100 dark:hover:bg-gray-800": sortable && column.sortable !== false
7362
7388
  }),
7363
7389
  onClick: function onClick() {
7364
7390
  return column.sortable !== false && handleSort(column.key);
@@ -7402,7 +7428,7 @@ var Table = /*#__PURE__*/React.forwardRef(function Table(_ref, ref) {
7402
7428
  return !s;
7403
7429
  });
7404
7430
  },
7405
- className: "p-1 rounded hover:bg-gray-100",
7431
+ className: "p-1 rounded hover:bg-gray-100 dark:hover:bg-gray-800",
7406
7432
  children: jsxRuntime.jsx(MoreVertical, {
7407
7433
  className: "h-4 w-4"
7408
7434
  })
@@ -7438,7 +7464,7 @@ var Table = /*#__PURE__*/React.forwardRef(function Table(_ref, ref) {
7438
7464
  })]
7439
7465
  })]
7440
7466
  }), jsxRuntime.jsx("tbody", {
7441
- className: "divide-y divide-gray-200",
7467
+ className: "divide-y divide-line",
7442
7468
  children: loading ? jsxRuntime.jsx("tr", {
7443
7469
  children: jsxRuntime.jsx("td", {
7444
7470
  colSpan: visibleCount,
@@ -7448,7 +7474,7 @@ var Table = /*#__PURE__*/React.forwardRef(function Table(_ref, ref) {
7448
7474
  children: [jsxRuntime.jsx("div", {
7449
7475
  className: "h-6 w-6 animate-spin rounded-full border-2 border-primary-600 border-t-transparent"
7450
7476
  }), jsxRuntime.jsx("span", {
7451
- className: "text-sm text-primary-500",
7477
+ className: "text-sm text-muted",
7452
7478
  children: "Loading..."
7453
7479
  })]
7454
7480
  })
@@ -7466,7 +7492,7 @@ var Table = /*#__PURE__*/React.forwardRef(function Table(_ref, ref) {
7466
7492
  className: "h-8 w-8"
7467
7493
  })
7468
7494
  }), jsxRuntime.jsx("span", {
7469
- className: "text-sm text-primary-500",
7495
+ className: "text-sm text-muted",
7470
7496
  children: "No results found."
7471
7497
  })]
7472
7498
  })
@@ -7511,7 +7537,7 @@ var Table = /*#__PURE__*/React.forwardRef(function Table(_ref, ref) {
7511
7537
  children: [jsxRuntime.jsx("div", {
7512
7538
  className: "h-6 w-6 animate-spin rounded-full border-2 border-primary-600 border-t-transparent"
7513
7539
  }), jsxRuntime.jsx("span", {
7514
- className: "text-sm text-primary-500",
7540
+ className: "text-sm text-muted",
7515
7541
  children: "Loading..."
7516
7542
  })]
7517
7543
  })
@@ -7525,7 +7551,7 @@ var Table = /*#__PURE__*/React.forwardRef(function Table(_ref, ref) {
7525
7551
  className: "h-8 w-8"
7526
7552
  })
7527
7553
  }), jsxRuntime.jsx("span", {
7528
- className: "text-sm text-primary-500",
7554
+ className: "text-sm text-muted",
7529
7555
  children: "No results found."
7530
7556
  })]
7531
7557
  })
@@ -20045,8 +20071,8 @@ var Sidebar = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
20045
20071
  }
20046
20072
  }), {}, {
20047
20073
  className: cn$1("flex items-center rounded-md px-3 py-2 text-sm font-medium transition-colors", "focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-500", {
20048
- "bg-primary-100 text-primary-700": isActive,
20049
- "hover:bg-gray-100": !isActive && !item.disabled,
20074
+ "bg-primary-100 text-primary-700 dark:bg-primary-900/40 dark:text-primary-300": isActive,
20075
+ "hover:bg-gray-100 dark:hover:bg-gray-800": !isActive && !item.disabled,
20050
20076
  "cursor-pointer": !item.disabled,
20051
20077
  "cursor-not-allowed opacity-50": item.disabled,
20052
20078
  "justify-center": labelHidden
@@ -20075,7 +20101,7 @@ var Sidebar = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
20075
20101
  })]
20076
20102
  }) : item.badge
20077
20103
  }), hasChildren && jsxRuntime.jsx("span", {
20078
- className: "ml-2 flex-shrink-0 rounded p-0.5 hover:bg-gray-200",
20104
+ className: "ml-2 flex-shrink-0 rounded p-0.5 hover:bg-gray-200 dark:hover:bg-gray-700",
20079
20105
  "aria-hidden": "true",
20080
20106
  "data-sidebar-chevron": "",
20081
20107
  onClick: hasHref ? function (e) {
@@ -20125,7 +20151,7 @@ var Sidebar = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
20125
20151
  }),
20126
20152
  "data-sidebar-section": section.key || "",
20127
20153
  children: [effectiveCollapsed && idx > 0 && jsxRuntime.jsx("hr", {
20128
- className: "mx-2 my-2 border-gray-200",
20154
+ className: "mx-2 my-2 border-line",
20129
20155
  "aria-hidden": "true"
20130
20156
  }), section.key && (effectiveCollapsed ? jsxRuntime.jsx("span", {
20131
20157
  id: headingId,
@@ -20133,7 +20159,7 @@ var Sidebar = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
20133
20159
  children: section.key
20134
20160
  }) : jsxRuntime.jsx("p", {
20135
20161
  id: headingId,
20136
- className: "px-3 pb-1 pt-2 text-micro font-semibold uppercase tracking-wide text-gray-500",
20162
+ className: "px-3 pb-1 pt-2 text-micro font-semibold uppercase tracking-wide text-muted",
20137
20163
  children: section.key
20138
20164
  })), section.items.map(function (item) {
20139
20165
  return _renderMenuItem(item, 0, pane);
@@ -20172,7 +20198,7 @@ var Sidebar = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
20172
20198
  return jsxRuntime.jsx("button", {
20173
20199
  type: "button",
20174
20200
  onClick: handleUserClick,
20175
- className: cn$1(base, "cursor-pointer hover:bg-gray-100 transition-colors", "focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-500"),
20201
+ className: cn$1(base, "cursor-pointer hover:bg-gray-100 dark:hover:bg-gray-800 transition-colors", "focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-500"),
20176
20202
  "aria-label": effectiveCollapsed && !user.avatar ? user.name : undefined,
20177
20203
  children: content
20178
20204
  });
@@ -20186,26 +20212,26 @@ var Sidebar = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
20186
20212
  }) : footer;
20187
20213
  if (content === undefined || content === null || content === false) return null;
20188
20214
  return jsxRuntime.jsx("div", {
20189
- className: "border-t border-gray-200 p-4",
20215
+ className: "border-t border-line p-4",
20190
20216
  "data-sidebar-footer": "",
20191
20217
  children: content
20192
20218
  });
20193
20219
  };
20194
20220
  var renderSidebarContent = function renderSidebarContent(pane) {
20195
20221
  return jsxRuntime.jsxs("div", {
20196
- className: cn$1("flex h-full flex-col bg-white border-r border-gray-200 shadow-sm", "w-64 transition-all duration-200", {
20222
+ className: cn$1("flex h-full flex-col bg-surface text-foreground border-r border-line shadow-sm", "w-64 transition-all duration-200", {
20197
20223
  "w-16": effectiveCollapsed,
20198
20224
  "w-64": !effectiveCollapsed
20199
20225
  }),
20200
20226
  children: [jsxRuntime.jsxs("div", {
20201
- className: "flex h-16 items-center justify-between border-b border-gray-200 px-4",
20227
+ className: "flex h-16 items-center justify-between border-b border-line px-4",
20202
20228
  children: [!effectiveCollapsed && logo && jsxRuntime.jsx("div", {
20203
20229
  className: "flex items-center",
20204
20230
  children: logo
20205
20231
  }), jsxRuntime.jsx("button", {
20206
20232
  type: "button",
20207
20233
  onClick: handleToggleClick,
20208
- className: "rounded-md p-1 hover:bg-gray-100",
20234
+ className: "rounded-md p-1 hover:bg-gray-100 dark:hover:bg-gray-800",
20209
20235
  "aria-label": effectiveCollapsed ? "Expand sidebar" : "Collapse sidebar",
20210
20236
  children: effectiveCollapsed ? jsxRuntime.jsx(ChevronRight, {
20211
20237
  className: "h-5 w-5"
@@ -20214,10 +20240,10 @@ var Sidebar = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
20214
20240
  })
20215
20241
  })]
20216
20242
  }), jsxRuntime.jsx("nav", {
20217
- className: "flex-1 space-y-1 overflow-y-auto p-4 [&::-webkit-scrollbar]:w-2\n [&::-webkit-scrollbar-track]:bg-gray-100\n [&::-webkit-scrollbar-thumb]:bg-gray-300\n hover:[&::-webkit-scrollbar-thumb]:bg-gray-400",
20243
+ className: "flex-1 space-y-1 overflow-y-auto p-4 [&::-webkit-scrollbar]:w-2\n [&::-webkit-scrollbar-track]:bg-gray-100 dark:[&::-webkit-scrollbar-track]:bg-gray-800\n [&::-webkit-scrollbar-thumb]:bg-gray-300 dark:[&::-webkit-scrollbar-thumb]:bg-gray-700\n hover:[&::-webkit-scrollbar-thumb]:bg-gray-400",
20218
20244
  children: renderNavContent(pane)
20219
20245
  }), renderFooter(pane), user && jsxRuntime.jsx("div", {
20220
- className: "border-t border-gray-200 p-4",
20246
+ className: "border-t border-line p-4",
20221
20247
  children: jsxRuntime.jsx("div", {
20222
20248
  className: "relative",
20223
20249
  children: renderUserBlock()
@@ -20318,7 +20344,7 @@ var Dropdown = function Dropdown(_ref) {
20318
20344
  },
20319
20345
  children: trigger
20320
20346
  }), isOpen && jsxRuntime.jsx("div", {
20321
- className: "absolute z-50 bg-white border border-gray-200 rounded-md shadow-lg ".concat(placementClasses[placement], " min-w-48"),
20347
+ className: "absolute z-50 bg-surface text-foreground border border-line rounded-md shadow-lg ".concat(placementClasses[placement], " min-w-48"),
20322
20348
  children: children
20323
20349
  })]
20324
20350
  }));
@@ -20468,7 +20494,7 @@ var NotificationsDropdown = function NotificationsDropdown(_ref) {
20468
20494
  // For simplicity, shows notifications in the dropdown, can be expanded
20469
20495
  return jsxRuntime.jsx(Dropdown, {
20470
20496
  trigger: jsxRuntime.jsxs("button", {
20471
- className: "relative rounded-md p-2 text-primary-400 hover:text-primary-500 hover:bg-gray-100",
20497
+ className: "relative rounded-md p-2 text-primary-400 hover:text-primary-500 hover:bg-gray-100 dark:hover:bg-gray-800",
20472
20498
  "aria-label": "notifications",
20473
20499
  children: [jsxRuntime.jsx(Bell, {
20474
20500
  className: "h-5 w-5"
@@ -20481,9 +20507,9 @@ var NotificationsDropdown = function NotificationsDropdown(_ref) {
20481
20507
  children: jsxRuntime.jsxs("div", {
20482
20508
  className: "py-2 min-w-56 max-h-80 overflow-y-auto",
20483
20509
  children: [jsxRuntime.jsxs("div", {
20484
- className: "px-4 py-2 border-b border-gray-100 flex items-center justify-between",
20510
+ className: "px-4 py-2 border-b border-line flex items-center justify-between",
20485
20511
  children: [jsxRuntime.jsx("span", {
20486
- className: "font-medium text-primary-800 text-sm",
20512
+ className: "font-medium text-primary-800 dark:text-primary-100 text-sm",
20487
20513
  children: "Notifications"
20488
20514
  }), jsxRuntime.jsx("button", {
20489
20515
  className: "text-xs text-primary-400 hover:text-error-600",
@@ -20499,16 +20525,16 @@ var NotificationsDropdown = function NotificationsDropdown(_ref) {
20499
20525
  children: "No notifications"
20500
20526
  }) : notifications.map(function (n) {
20501
20527
  return jsxRuntime.jsxs("div", {
20502
- className: cn$1("flex items-start gap-3 px-4 py-2 hover:bg-gray-50 cursor-pointer group", !n.read ? "bg-primary-50" : ""),
20528
+ className: cn$1("flex items-start gap-3 px-4 py-2 hover:bg-gray-50 dark:hover:bg-gray-800 cursor-pointer group", !n.read ? "bg-primary-50 dark:bg-primary-900/40" : ""),
20503
20529
  onClick: function onClick() {
20504
20530
  return onView();
20505
20531
  },
20506
20532
  children: [jsxRuntime.jsx("span", {
20507
- className: cn$1("h-2 w-2 mt-2 rounded-full", !n.read ? "bg-primary-500" : "bg-gray-300")
20533
+ className: cn$1("h-2 w-2 mt-2 rounded-full", !n.read ? "bg-primary-500" : "bg-gray-300 dark:bg-gray-600")
20508
20534
  }), jsxRuntime.jsxs("div", {
20509
20535
  className: "flex-1",
20510
20536
  children: [jsxRuntime.jsx("div", {
20511
- className: "text-sm text-primary-800",
20537
+ className: "text-sm text-primary-800 dark:text-primary-100",
20512
20538
  children: n.title
20513
20539
  }), n.message && jsxRuntime.jsx("div", {
20514
20540
  className: "text-xs text-primary-500",
@@ -20560,10 +20586,10 @@ var RightMenuContent = function RightMenuContent(_ref2) {
20560
20586
  });
20561
20587
  };
20562
20588
  var styledClassNames = {
20563
- button: "rounded-md p-2 text-primary-400 hover:text-primary-500 hover:bg-gray-100",
20589
+ button: "rounded-md p-2 text-primary-400 hover:text-primary-500 hover:bg-gray-100 dark:hover:bg-gray-800",
20564
20590
  mobileItem: "md:hidden",
20565
20591
  icon: "h-6 w-6",
20566
- dropdown: "w-56 rounded-md border border-gray-200 bg-white py-1 shadow-lg"
20592
+ dropdown: "w-56 rounded-md border border-line bg-surface py-1 shadow-lg"
20567
20593
  };
20568
20594
  var Navbar = /*#__PURE__*/React.forwardRef(function (_ref3, ref) {
20569
20595
  var emitter = _ref3.emitter,
@@ -20648,7 +20674,7 @@ var Navbar = /*#__PURE__*/React.forwardRef(function (_ref3, ref) {
20648
20674
  },
20649
20675
  className: cn$1("block w-full text-left px-4 py-2 text-sm", {
20650
20676
  "text-primary-600": item.active,
20651
- "hover:bg-gray-50": !item.active
20677
+ "hover:bg-gray-50 dark:hover:bg-gray-800": !item.active
20652
20678
  }),
20653
20679
  children: item.label
20654
20680
  }, item.id);
@@ -20663,7 +20689,7 @@ var Navbar = /*#__PURE__*/React.forwardRef(function (_ref3, ref) {
20663
20689
  };
20664
20690
  return jsxRuntime.jsxs("nav", _objectSpread$p(_objectSpread$p({
20665
20691
  ref: ref,
20666
- className: cn$1("bg-white border-b border-gray-200 px-4 sm:px-6 lg:px-8", className)
20692
+ className: cn$1("bg-surface text-foreground border-b border-line px-4 sm:px-6 lg:px-8", className)
20667
20693
  }, props), {}, {
20668
20694
  children: [jsxRuntime.jsxs("div", {
20669
20695
  className: "flex h-16 min-w-0 items-center justify-between gap-2 sm:gap-4",
@@ -20676,7 +20702,7 @@ var Navbar = /*#__PURE__*/React.forwardRef(function (_ref3, ref) {
20676
20702
  className: "flex min-w-0 items-center",
20677
20703
  children: [leftIcon !== false && jsxRuntime.jsx("button", {
20678
20704
  onClick: onLeftIconClick,
20679
- className: "shrink-0 md:hidden rounded-md p-2 text-primary-400 hover:text-primary-500 hover:bg-gray-100",
20705
+ className: "shrink-0 md:hidden rounded-md p-2 text-primary-400 hover:text-primary-500 hover:bg-gray-100 dark:hover:bg-gray-800",
20680
20706
  "aria-label": "back",
20681
20707
  children: leftIcon
20682
20708
  }), logo && jsxRuntime.jsx("div", {
@@ -20703,7 +20729,7 @@ var Navbar = /*#__PURE__*/React.forwardRef(function (_ref3, ref) {
20703
20729
  }), jsxRuntime.jsx("input", {
20704
20730
  type: "text",
20705
20731
  placeholder: "Search...",
20706
- className: "w-64 rounded-md border border-gray-300 bg-white pl-10 pr-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-primary-500 focus:border-transparent",
20732
+ className: "w-64 rounded-md border border-gray-300 bg-surface text-foreground dark:border-gray-700 pl-10 pr-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-primary-500 focus:border-transparent",
20707
20733
  value: searchTerm,
20708
20734
  onChange: function onChange(e) {
20709
20735
  return setSearchTerm(e.target.value);
@@ -20766,9 +20792,9 @@ var Navbar = /*#__PURE__*/React.forwardRef(function (_ref3, ref) {
20766
20792
  children: jsxRuntime.jsxs("div", {
20767
20793
  className: styledClassNames.dropdown,
20768
20794
  children: [jsxRuntime.jsxs("div", {
20769
- className: "px-4 py-2 border-b border-gray-200",
20795
+ className: "px-4 py-2 border-b border-line",
20770
20796
  children: [jsxRuntime.jsx("p", {
20771
- className: "text-sm font-medium text-primary-900",
20797
+ className: "text-sm font-medium text-primary-900 dark:text-primary-100",
20772
20798
  children: user.name
20773
20799
  }), jsxRuntime.jsx("p", {
20774
20800
  className: "text-xs text-primary-500",
@@ -20778,23 +20804,23 @@ var Navbar = /*#__PURE__*/React.forwardRef(function (_ref3, ref) {
20778
20804
  className: "py-1",
20779
20805
  children: renderNavItems(true)
20780
20806
  }), user.menuItems && user.menuItems.length > 0 && jsxRuntime.jsx("div", {
20781
- className: "border-t border-gray-100",
20807
+ className: "border-t border-line",
20782
20808
  children: user.menuItems.map(function (mi) {
20783
20809
  return jsxRuntime.jsx("button", {
20784
20810
  onClick: function onClick(e) {
20785
20811
  var _mi$onClick;
20786
20812
  return mi === null || mi === void 0 || (_mi$onClick = mi.onClick) === null || _mi$onClick === void 0 ? void 0 : _mi$onClick.call(mi, e);
20787
20813
  },
20788
- className: "block w-full px-4 py-2 text-left text-sm hover:bg-gray-100",
20814
+ className: "block w-full px-4 py-2 text-left text-sm hover:bg-gray-100 dark:hover:bg-gray-800",
20789
20815
  children: mi.label
20790
20816
  }, mi.id);
20791
20817
  })
20792
20818
  }), jsxRuntime.jsx("div", {
20793
- className: "border-t border-gray-100 sm:hidden",
20819
+ className: "border-t border-line sm:hidden",
20794
20820
  children: jsxRuntime.jsxs("button", {
20795
20821
  type: "button",
20796
20822
  onClick: handleLogoutClick,
20797
- className: "flex w-full items-center gap-2 px-4 py-2 text-left text-sm hover:bg-gray-100",
20823
+ className: "flex w-full items-center gap-2 px-4 py-2 text-left text-sm hover:bg-gray-100 dark:hover:bg-gray-800",
20798
20824
  children: [jsxRuntime.jsx(LogOut, {
20799
20825
  className: "h-4 w-4",
20800
20826
  "aria-hidden": "true"
@@ -20808,13 +20834,13 @@ var Navbar = /*#__PURE__*/React.forwardRef(function (_ref3, ref) {
20808
20834
  }), isMobileMenuOpen && !user && jsxRuntime.jsx("div", {
20809
20835
  className: "md:hidden h-full",
20810
20836
  children: jsxRuntime.jsx("div", {
20811
- className: "space-y-1 border-t border-gray-200 px-2 pt-4 pb-3",
20837
+ className: "space-y-1 border-t border-line px-2 pt-4 pb-3",
20812
20838
  children: items.map(function (item) {
20813
20839
  return jsxRuntime.jsx("a", {
20814
20840
  href: item.href,
20815
20841
  className: cn$1("block rounded-md px-3 py-2 text-base font-medium", {
20816
- "bg-primary-50 text-primary-700": item.active,
20817
- "hover:bg-gray-50": !item.active
20842
+ "bg-primary-50 text-primary-700 dark:bg-primary-900/40 dark:text-primary-300": item.active,
20843
+ "hover:bg-gray-50 dark:hover:bg-gray-800": !item.active
20818
20844
  }),
20819
20845
  children: item.label
20820
20846
  }, item.id);
@@ -22180,7 +22206,7 @@ var Card = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
22180
22206
  props = _objectWithoutProperties$1(_ref, _excluded$c);
22181
22207
  return jsxRuntime.jsx("div", _objectSpread$g(_objectSpread$g({
22182
22208
  ref: ref,
22183
- className: cn$1('rounded-lg border border-gray-200 bg-white shadow-sm', {
22209
+ className: cn$1('rounded-lg border border-line bg-surface shadow-sm', {
22184
22210
  'hover:shadow-md transition-shadow': hover
22185
22211
  }, className)
22186
22212
  }, props), {}, {
@@ -22193,7 +22219,7 @@ var CardHeader = function CardHeader(_ref2) {
22193
22219
  className = _ref2.className,
22194
22220
  props = _objectWithoutProperties$1(_ref2, _excluded2);
22195
22221
  return jsxRuntime.jsx("div", _objectSpread$g(_objectSpread$g({
22196
- className: cn$1('px-6 py-4 border-b border-gray-200', className)
22222
+ className: cn$1('px-6 py-4 border-b border-line', className)
22197
22223
  }, props), {}, {
22198
22224
  children: children
22199
22225
  }));
@@ -22203,7 +22229,7 @@ var CardTitle = function CardTitle(_ref3) {
22203
22229
  className = _ref3.className,
22204
22230
  props = _objectWithoutProperties$1(_ref3, _excluded3);
22205
22231
  return jsxRuntime.jsx("h3", _objectSpread$g(_objectSpread$g({
22206
- className: cn$1('text-lg font-semibold text-primary-900', className)
22232
+ className: cn$1('text-lg font-semibold text-primary-900 dark:text-primary-100', className)
22207
22233
  }, props), {}, {
22208
22234
  children: children
22209
22235
  }));
@@ -22213,7 +22239,7 @@ var CardDescription = function CardDescription(_ref4) {
22213
22239
  className = _ref4.className,
22214
22240
  props = _objectWithoutProperties$1(_ref4, _excluded4);
22215
22241
  return jsxRuntime.jsx("p", _objectSpread$g(_objectSpread$g({
22216
- className: cn$1('text-sm text-primary-600', className)
22242
+ className: cn$1('text-sm text-primary-600 dark:text-primary-300', className)
22217
22243
  }, props), {}, {
22218
22244
  children: children
22219
22245
  }));
@@ -22233,7 +22259,7 @@ var CardFooter = function CardFooter(_ref6) {
22233
22259
  className = _ref6.className,
22234
22260
  props = _objectWithoutProperties$1(_ref6, _excluded6);
22235
22261
  return jsxRuntime.jsx("div", _objectSpread$g(_objectSpread$g({
22236
- className: cn$1('px-6 py-4 border-t border-gray-200', className)
22262
+ className: cn$1('px-6 py-4 border-t border-line', className)
22237
22263
  }, props), {}, {
22238
22264
  children: children
22239
22265
  }));
@@ -22380,9 +22406,9 @@ var Stepper = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
22380
22406
  text: 'text-primary-600'
22381
22407
  },
22382
22408
  upcoming: {
22383
- circle: 'bg-gray-300 text-primary-500',
22409
+ circle: 'bg-gray-300 text-gray-700',
22384
22410
  line: 'bg-gray-300',
22385
- text: 'text-primary-500'
22411
+ text: 'text-muted'
22386
22412
  }
22387
22413
  };
22388
22414
  return jsxRuntime.jsx("nav", _objectSpread$e(_objectSpread$e({
@@ -22416,8 +22442,10 @@ var Stepper = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
22416
22442
  },
22417
22443
  disabled: !onStepClick || stepIndex > currentStep,
22418
22444
  "aria-current": status === 'current' ? 'step' : undefined,
22445
+ "aria-label": "Step ".concat(stepIndex + 1).concat(step.title ? ": ".concat(step.title) : '').concat(status === 'completed' ? ' (completed)' : ''),
22419
22446
  children: status === 'completed' ? jsxRuntime.jsx(Check, {
22420
- className: "h-4 w-4"
22447
+ className: "h-4 w-4",
22448
+ "aria-hidden": "true"
22421
22449
  }) : stepIndex + 1
22422
22450
  }), !isLast && jsxRuntime.jsx("div", {
22423
22451
  className: cn$1('bg-gray-300', {
@@ -22434,7 +22462,7 @@ var Stepper = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
22434
22462
  className: cn$1('text-sm font-medium', colors.text),
22435
22463
  children: step.title
22436
22464
  }), step.description && jsxRuntime.jsx("span", {
22437
- className: "text-xs text-primary-500",
22465
+ className: "text-xs text-muted",
22438
22466
  children: step.description
22439
22467
  })]
22440
22468
  })]
@@ -23506,7 +23534,7 @@ var StatCard = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
23506
23534
  }), change && !loading && jsxRuntime.jsxs("p", {
23507
23535
  className: "mt-1 flex items-center gap-1 text-xs text-muted",
23508
23536
  children: [jsxRuntime.jsxs("span", {
23509
- className: cn$1('inline-flex items-center gap-0.5 font-semibold', good ? 'text-success-600' : 'text-error-600'),
23537
+ className: cn$1('inline-flex items-center gap-0.5 font-semibold', good ? 'text-success-700 dark:text-success-400' : 'text-error-700 dark:text-error-400'),
23510
23538
  children: [up ? jsxRuntime.jsx(ArrowUp, {
23511
23539
  className: "h-3.5 w-3.5",
23512
23540
  "aria-hidden": "true"