@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.
- package/DESIGN.md +2 -2
- package/README.md +14 -6
- package/ai-skills/dreamtree-ui.md +3 -1
- package/bin/cli.mjs +72 -4
- package/dist/ai-schema.json +3 -2
- package/dist/charts/index.js +75 -47
- package/dist/components/charts/CartesianChart.d.ts.map +1 -1
- package/dist/components/charts/DonutChart.d.ts.map +1 -1
- package/dist/components/charts/Sparkline.d.ts.map +1 -1
- package/dist/components/charts/chartTheme.d.ts +13 -3
- package/dist/components/charts/chartTheme.d.ts.map +1 -1
- package/dist/components/core/Table/MobileCard.d.ts.map +1 -1
- package/dist/components/core/Table/MobileFilters.d.ts.map +1 -1
- package/dist/components/core/Table/Table.d.ts.map +1 -1
- package/dist/components/core/Table/TableRow.d.ts.map +1 -1
- package/dist/components/core/Table/helpers.d.ts +12 -0
- package/dist/components/core/Table/helpers.d.ts.map +1 -1
- package/dist/components/utility/Stepper.d.ts.map +1 -1
- package/dist/esm/components/blocks/StatCard.js +1 -1
- package/dist/esm/components/charts/CartesianChart.js +7 -2
- package/dist/esm/components/charts/DonutChart.js +4 -1
- package/dist/esm/components/charts/Sparkline.js +4 -1
- package/dist/esm/components/charts/chartTheme.js +65 -48
- package/dist/esm/components/core/Select.js +2 -2
- package/dist/esm/components/core/Table/ActionMenu.js +5 -5
- package/dist/esm/components/core/Table/ColumnMenu.js +1 -1
- package/dist/esm/components/core/Table/FieldInput.js +5 -5
- package/dist/esm/components/core/Table/MobileCard.js +14 -12
- package/dist/esm/components/core/Table/MobileFilters.js +11 -4
- package/dist/esm/components/core/Table/Pagination.js +1 -1
- package/dist/esm/components/core/Table/Table.js +22 -19
- package/dist/esm/components/core/Table/TableRow.js +10 -11
- package/dist/esm/components/core/Table/helpers.js +16 -1
- package/dist/esm/components/navigation/Dropdown.js +1 -1
- package/dist/esm/components/navigation/Navbar.js +21 -21
- package/dist/esm/components/navigation/Sidebar.js +12 -12
- package/dist/esm/components/utility/Card.js +5 -5
- package/dist/esm/components/utility/Stepper.js +6 -4
- package/dist/index.css +1 -1
- package/dist/index.esm.css +1 -1
- package/dist/index.esm.js +129 -101
- package/dist/index.js +129 -101
- package/dist/tokens/brands/practicepro.json +1 -0
- package/dist/tokens/brands/studio.json +1 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/mcp/catalog.snapshot.json +21 -21
- package/package.json +2 -1
- package/tokens/brand.schema.json +612 -0
- package/tokens/brands/practicepro.json +1 -0
- package/tokens/brands/studio.json +1 -0
- package/tokens/lib.cjs +131 -7
|
@@ -5,7 +5,7 @@ import React from 'react';
|
|
|
5
5
|
import { cn } from '../../../utils/cn.js';
|
|
6
6
|
import { Trash2, MoreVertical } from 'lucide-react';
|
|
7
7
|
import ActionMenu from './ActionMenu.js';
|
|
8
|
-
import { getRowKey, resolveActions, rowHasDetails, getActionLabelText } from './helpers.js';
|
|
8
|
+
import { getRowKey, resolveActions, rowHasDetails, getActionLabelText, getStripeProps } from './helpers.js';
|
|
9
9
|
|
|
10
10
|
/**
|
|
11
11
|
* Desktop table row component
|
|
@@ -86,6 +86,7 @@ function TableRow(_ref) {
|
|
|
86
86
|
var safeExtraRowClass = typeof extraRowClass === "string" ? extraRowClass.trim() : "";
|
|
87
87
|
var stripeColors = theme === null || theme === void 0 ? void 0 : theme.stripedColors;
|
|
88
88
|
var stripeBg = stripedRows && !isSelected && Array.isArray(stripeColors) && stripeColors.length > 0 ? stripeColors[globalIndex % stripeColors.length] : undefined;
|
|
89
|
+
var stripeProps = getStripeProps(stripeBg);
|
|
89
90
|
var rowKey = isNewRow ? row._key : key;
|
|
90
91
|
var isRowActive = interactive && (activeCell === null || activeCell === void 0 ? void 0 : activeCell.rowKey) === rowKey;
|
|
91
92
|
var effectiveRow = React.useMemo(function () {
|
|
@@ -94,10 +95,8 @@ function TableRow(_ref) {
|
|
|
94
95
|
}, [interactive, pendingEdits, rowKey, row]);
|
|
95
96
|
return jsxs(React.Fragment, {
|
|
96
97
|
children: [jsxs("tr", {
|
|
97
|
-
style:
|
|
98
|
-
|
|
99
|
-
} : undefined,
|
|
100
|
-
className: cn(theme !== null && theme !== void 0 && theme.rowHover ? ["hover:" + theme.rowHover] : [], {
|
|
98
|
+
style: stripeProps.style,
|
|
99
|
+
className: cn(stripeProps.className, theme !== null && theme !== void 0 && theme.rowHover ? ["hover:" + theme.rowHover] : [], {
|
|
101
100
|
"cursor-pointer": !!onRowClick,
|
|
102
101
|
"bg-primary-50": isSelected,
|
|
103
102
|
"bg-primary-50/20": isRowActive && !isSelected,
|
|
@@ -116,7 +115,7 @@ function TableRow(_ref) {
|
|
|
116
115
|
},
|
|
117
116
|
"aria-expanded": isExpanded,
|
|
118
117
|
"aria-label": isExpanded ? "Collapse row details" : "Expand row details",
|
|
119
|
-
className: "p-1 rounded hover:bg-gray-100",
|
|
118
|
+
className: "p-1 rounded hover:bg-gray-100 dark:hover:bg-gray-800",
|
|
120
119
|
children: isExpanded ? "▾" : "▸"
|
|
121
120
|
})
|
|
122
121
|
}), showSerial && jsx("td", {
|
|
@@ -152,9 +151,9 @@ function TableRow(_ref) {
|
|
|
152
151
|
title: isCellInvalid ? "Field \"".concat(column.label || column.key, "\" is required or invalid") : undefined,
|
|
153
152
|
className: cn("px-6 py-4 text-sm transition-all", wrapCell ? "whitespace-normal break-words" : "whitespace-nowrap", {
|
|
154
153
|
"ring-2 ring-error-500 ring-inset bg-error-50/40 relative z-10": isCellInvalid && !isCellEditing,
|
|
155
|
-
"ring-2 ring-error-600 ring-inset bg-
|
|
154
|
+
"ring-2 ring-error-600 ring-inset bg-surface p-1 z-20 relative": isCellEditing && isCellInvalid,
|
|
156
155
|
"ring-2 ring-primary-500 ring-inset bg-primary-50/50 relative z-10": isCellActive && !isCellEditing && !isCellInvalid,
|
|
157
|
-
"ring-2 ring-primary-600 ring-inset bg-
|
|
156
|
+
"ring-2 ring-primary-600 ring-inset bg-surface p-1 z-20 relative": isCellEditing && !isCellInvalid
|
|
158
157
|
}, safeExtraCellClass),
|
|
159
158
|
onClick: function onClick() {
|
|
160
159
|
if (interactive && onCellClick) {
|
|
@@ -201,7 +200,7 @@ function TableRow(_ref) {
|
|
|
201
200
|
if (action.disabled) return;
|
|
202
201
|
handleOnAction(action, row);
|
|
203
202
|
},
|
|
204
|
-
className: cn("p-1 rounded", action.disabled ? "opacity-50 cursor-not-allowed" : "hover:bg-gray-100"),
|
|
203
|
+
className: cn("p-1 rounded", action.disabled ? "opacity-50 cursor-not-allowed" : "hover:bg-gray-100 dark:hover:bg-gray-800"),
|
|
205
204
|
children: action.render ? action.render(row) : (_action$icon = action.icon) !== null && _action$icon !== void 0 ? _action$icon : jsx("span", {
|
|
206
205
|
className: "text-xs",
|
|
207
206
|
children: actionLabel
|
|
@@ -217,7 +216,7 @@ function TableRow(_ref) {
|
|
|
217
216
|
return toggleActions(e, actionCellKey, row);
|
|
218
217
|
},
|
|
219
218
|
"aria-expanded": activeActionRowKey === actionCellKey,
|
|
220
|
-
className: "p-1 rounded hover:bg-gray-100",
|
|
219
|
+
className: "p-1 rounded hover:bg-gray-100 dark:hover:bg-gray-800",
|
|
221
220
|
title: "Actions",
|
|
222
221
|
children: jsx(MoreVertical, {
|
|
223
222
|
className: "h-4 w-4"
|
|
@@ -241,7 +240,7 @@ function TableRow(_ref) {
|
|
|
241
240
|
colSpan: visibleCount,
|
|
242
241
|
className: cn(_defineProperty(_defineProperty({
|
|
243
242
|
"px-6 py-4": true
|
|
244
|
-
}, (_theme$accentColor = theme === null || theme === void 0 ? void 0 : theme.accentColor) !== null && _theme$accentColor !== void 0 ? _theme$accentColor : "bg-
|
|
243
|
+
}, (_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)),
|
|
245
244
|
children: jsx(DetailsComponent, {
|
|
246
245
|
row: row,
|
|
247
246
|
index: globalIndex
|
|
@@ -10,6 +10,21 @@ var getRowKey = function getRowKey(row, globalIndex) {
|
|
|
10
10
|
if (row._id !== undefined && row._id !== null) return String(row._id);
|
|
11
11
|
return String(globalIndex);
|
|
12
12
|
};
|
|
13
|
+
/**
|
|
14
|
+
* A `stripedColors` entry is either a CSS colour ("#f7fafc", "rgb(...)") applied as an
|
|
15
|
+
* inline background, or a Tailwind class ("bg-surface", "dark:bg-gray-900") applied as a
|
|
16
|
+
* className. Returns the props to spread onto the striped element.
|
|
17
|
+
*/
|
|
18
|
+
var getStripeProps = function getStripeProps(stripe) {
|
|
19
|
+
if (!stripe) return {};
|
|
20
|
+
return /(^|[\s:])bg-/.test(stripe) ? {
|
|
21
|
+
className: stripe
|
|
22
|
+
} : {
|
|
23
|
+
style: {
|
|
24
|
+
backgroundColor: stripe
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
};
|
|
13
28
|
/**
|
|
14
29
|
* Resolve a value that may be supplied directly or as a per-row producer.
|
|
15
30
|
* Used for an action's `label`, `icon`, `hidden` and `disabled`.
|
|
@@ -121,4 +136,4 @@ var resolveActions = function resolveActions(actions, row, index) {
|
|
|
121
136
|
};
|
|
122
137
|
};
|
|
123
138
|
|
|
124
|
-
export { getActionLabelText, getRowKey, mergeDefaultActions, resolveActions, rowHasDetails };
|
|
139
|
+
export { getActionLabelText, getRowKey, getStripeProps, mergeDefaultActions, resolveActions, rowHasDetails };
|
|
@@ -44,7 +44,7 @@ var Dropdown = function Dropdown(_ref) {
|
|
|
44
44
|
},
|
|
45
45
|
children: trigger
|
|
46
46
|
}), isOpen && jsx("div", {
|
|
47
|
-
className: "absolute z-50 bg-
|
|
47
|
+
className: "absolute z-50 bg-surface text-foreground border border-line rounded-md shadow-lg ".concat(placementClasses[placement], " min-w-48"),
|
|
48
48
|
children: children
|
|
49
49
|
})]
|
|
50
50
|
}));
|
|
@@ -67,7 +67,7 @@ var NotificationsDropdown = function NotificationsDropdown(_ref) {
|
|
|
67
67
|
// For simplicity, shows notifications in the dropdown, can be expanded
|
|
68
68
|
return jsx(Dropdown, {
|
|
69
69
|
trigger: jsxs("button", {
|
|
70
|
-
className: "relative rounded-md p-2 text-primary-400 hover:text-primary-500 hover:bg-gray-100",
|
|
70
|
+
className: "relative rounded-md p-2 text-primary-400 hover:text-primary-500 hover:bg-gray-100 dark:hover:bg-gray-800",
|
|
71
71
|
"aria-label": "notifications",
|
|
72
72
|
children: [jsx(Bell, {
|
|
73
73
|
className: "h-5 w-5"
|
|
@@ -80,9 +80,9 @@ var NotificationsDropdown = function NotificationsDropdown(_ref) {
|
|
|
80
80
|
children: jsxs("div", {
|
|
81
81
|
className: "py-2 min-w-56 max-h-80 overflow-y-auto",
|
|
82
82
|
children: [jsxs("div", {
|
|
83
|
-
className: "px-4 py-2 border-b border-
|
|
83
|
+
className: "px-4 py-2 border-b border-line flex items-center justify-between",
|
|
84
84
|
children: [jsx("span", {
|
|
85
|
-
className: "font-medium text-primary-800 text-sm",
|
|
85
|
+
className: "font-medium text-primary-800 dark:text-primary-100 text-sm",
|
|
86
86
|
children: "Notifications"
|
|
87
87
|
}), jsx("button", {
|
|
88
88
|
className: "text-xs text-primary-400 hover:text-error-600",
|
|
@@ -98,16 +98,16 @@ var NotificationsDropdown = function NotificationsDropdown(_ref) {
|
|
|
98
98
|
children: "No notifications"
|
|
99
99
|
}) : notifications.map(function (n) {
|
|
100
100
|
return jsxs("div", {
|
|
101
|
-
className: cn("flex items-start gap-3 px-4 py-2 hover:bg-gray-50 cursor-pointer group", !n.read ? "bg-primary-50" : ""),
|
|
101
|
+
className: cn("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" : ""),
|
|
102
102
|
onClick: function onClick() {
|
|
103
103
|
return onView();
|
|
104
104
|
},
|
|
105
105
|
children: [jsx("span", {
|
|
106
|
-
className: cn("h-2 w-2 mt-2 rounded-full", !n.read ? "bg-primary-500" : "bg-gray-300")
|
|
106
|
+
className: cn("h-2 w-2 mt-2 rounded-full", !n.read ? "bg-primary-500" : "bg-gray-300 dark:bg-gray-600")
|
|
107
107
|
}), jsxs("div", {
|
|
108
108
|
className: "flex-1",
|
|
109
109
|
children: [jsx("div", {
|
|
110
|
-
className: "text-sm text-primary-800",
|
|
110
|
+
className: "text-sm text-primary-800 dark:text-primary-100",
|
|
111
111
|
children: n.title
|
|
112
112
|
}), n.message && jsx("div", {
|
|
113
113
|
className: "text-xs text-primary-500",
|
|
@@ -159,10 +159,10 @@ var RightMenuContent = function RightMenuContent(_ref2) {
|
|
|
159
159
|
});
|
|
160
160
|
};
|
|
161
161
|
var styledClassNames = {
|
|
162
|
-
button: "rounded-md p-2 text-primary-400 hover:text-primary-500 hover:bg-gray-100",
|
|
162
|
+
button: "rounded-md p-2 text-primary-400 hover:text-primary-500 hover:bg-gray-100 dark:hover:bg-gray-800",
|
|
163
163
|
mobileItem: "md:hidden",
|
|
164
164
|
icon: "h-6 w-6",
|
|
165
|
-
dropdown: "w-56 rounded-md border border-
|
|
165
|
+
dropdown: "w-56 rounded-md border border-line bg-surface py-1 shadow-lg"
|
|
166
166
|
};
|
|
167
167
|
var Navbar = /*#__PURE__*/React.forwardRef(function (_ref3, ref) {
|
|
168
168
|
var emitter = _ref3.emitter,
|
|
@@ -247,7 +247,7 @@ var Navbar = /*#__PURE__*/React.forwardRef(function (_ref3, ref) {
|
|
|
247
247
|
},
|
|
248
248
|
className: cn("block w-full text-left px-4 py-2 text-sm", {
|
|
249
249
|
"text-primary-600": item.active,
|
|
250
|
-
"hover:bg-gray-50": !item.active
|
|
250
|
+
"hover:bg-gray-50 dark:hover:bg-gray-800": !item.active
|
|
251
251
|
}),
|
|
252
252
|
children: item.label
|
|
253
253
|
}, item.id);
|
|
@@ -262,7 +262,7 @@ var Navbar = /*#__PURE__*/React.forwardRef(function (_ref3, ref) {
|
|
|
262
262
|
};
|
|
263
263
|
return jsxs("nav", _objectSpread2(_objectSpread2({
|
|
264
264
|
ref: ref,
|
|
265
|
-
className: cn("bg-
|
|
265
|
+
className: cn("bg-surface text-foreground border-b border-line px-4 sm:px-6 lg:px-8", className)
|
|
266
266
|
}, props), {}, {
|
|
267
267
|
children: [jsxs("div", {
|
|
268
268
|
className: "flex h-16 min-w-0 items-center justify-between gap-2 sm:gap-4",
|
|
@@ -275,7 +275,7 @@ var Navbar = /*#__PURE__*/React.forwardRef(function (_ref3, ref) {
|
|
|
275
275
|
className: "flex min-w-0 items-center",
|
|
276
276
|
children: [leftIcon !== false && jsx("button", {
|
|
277
277
|
onClick: onLeftIconClick,
|
|
278
|
-
className: "shrink-0 md:hidden rounded-md p-2 text-primary-400 hover:text-primary-500 hover:bg-gray-100",
|
|
278
|
+
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",
|
|
279
279
|
"aria-label": "back",
|
|
280
280
|
children: leftIcon
|
|
281
281
|
}), logo && jsx("div", {
|
|
@@ -302,7 +302,7 @@ var Navbar = /*#__PURE__*/React.forwardRef(function (_ref3, ref) {
|
|
|
302
302
|
}), jsx("input", {
|
|
303
303
|
type: "text",
|
|
304
304
|
placeholder: "Search...",
|
|
305
|
-
className: "w-64 rounded-md border border-gray-300 bg-
|
|
305
|
+
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",
|
|
306
306
|
value: searchTerm,
|
|
307
307
|
onChange: function onChange(e) {
|
|
308
308
|
return setSearchTerm(e.target.value);
|
|
@@ -365,9 +365,9 @@ var Navbar = /*#__PURE__*/React.forwardRef(function (_ref3, ref) {
|
|
|
365
365
|
children: jsxs("div", {
|
|
366
366
|
className: styledClassNames.dropdown,
|
|
367
367
|
children: [jsxs("div", {
|
|
368
|
-
className: "px-4 py-2 border-b border-
|
|
368
|
+
className: "px-4 py-2 border-b border-line",
|
|
369
369
|
children: [jsx("p", {
|
|
370
|
-
className: "text-sm font-medium text-primary-900",
|
|
370
|
+
className: "text-sm font-medium text-primary-900 dark:text-primary-100",
|
|
371
371
|
children: user.name
|
|
372
372
|
}), jsx("p", {
|
|
373
373
|
className: "text-xs text-primary-500",
|
|
@@ -377,23 +377,23 @@ var Navbar = /*#__PURE__*/React.forwardRef(function (_ref3, ref) {
|
|
|
377
377
|
className: "py-1",
|
|
378
378
|
children: renderNavItems(true)
|
|
379
379
|
}), user.menuItems && user.menuItems.length > 0 && jsx("div", {
|
|
380
|
-
className: "border-t border-
|
|
380
|
+
className: "border-t border-line",
|
|
381
381
|
children: user.menuItems.map(function (mi) {
|
|
382
382
|
return jsx("button", {
|
|
383
383
|
onClick: function onClick(e) {
|
|
384
384
|
var _mi$onClick;
|
|
385
385
|
return mi === null || mi === void 0 || (_mi$onClick = mi.onClick) === null || _mi$onClick === void 0 ? void 0 : _mi$onClick.call(mi, e);
|
|
386
386
|
},
|
|
387
|
-
className: "block w-full px-4 py-2 text-left text-sm hover:bg-gray-100",
|
|
387
|
+
className: "block w-full px-4 py-2 text-left text-sm hover:bg-gray-100 dark:hover:bg-gray-800",
|
|
388
388
|
children: mi.label
|
|
389
389
|
}, mi.id);
|
|
390
390
|
})
|
|
391
391
|
}), jsx("div", {
|
|
392
|
-
className: "border-t border-
|
|
392
|
+
className: "border-t border-line sm:hidden",
|
|
393
393
|
children: jsxs("button", {
|
|
394
394
|
type: "button",
|
|
395
395
|
onClick: handleLogoutClick,
|
|
396
|
-
className: "flex w-full items-center gap-2 px-4 py-2 text-left text-sm hover:bg-gray-100",
|
|
396
|
+
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",
|
|
397
397
|
children: [jsx(LogOut, {
|
|
398
398
|
className: "h-4 w-4",
|
|
399
399
|
"aria-hidden": "true"
|
|
@@ -407,13 +407,13 @@ var Navbar = /*#__PURE__*/React.forwardRef(function (_ref3, ref) {
|
|
|
407
407
|
}), isMobileMenuOpen && !user && jsx("div", {
|
|
408
408
|
className: "md:hidden h-full",
|
|
409
409
|
children: jsx("div", {
|
|
410
|
-
className: "space-y-1 border-t border-
|
|
410
|
+
className: "space-y-1 border-t border-line px-2 pt-4 pb-3",
|
|
411
411
|
children: items.map(function (item) {
|
|
412
412
|
return jsx("a", {
|
|
413
413
|
href: item.href,
|
|
414
414
|
className: cn("block rounded-md px-3 py-2 text-base font-medium", {
|
|
415
|
-
"bg-primary-50 text-primary-700": item.active,
|
|
416
|
-
"hover:bg-gray-50": !item.active
|
|
415
|
+
"bg-primary-50 text-primary-700 dark:bg-primary-900/40 dark:text-primary-300": item.active,
|
|
416
|
+
"hover:bg-gray-50 dark:hover:bg-gray-800": !item.active
|
|
417
417
|
}),
|
|
418
418
|
children: item.label
|
|
419
419
|
}, item.id);
|
|
@@ -334,8 +334,8 @@ var Sidebar = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
334
334
|
}
|
|
335
335
|
}), {}, {
|
|
336
336
|
className: cn("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", {
|
|
337
|
-
"bg-primary-100 text-primary-700": isActive,
|
|
338
|
-
"hover:bg-gray-100": !isActive && !item.disabled,
|
|
337
|
+
"bg-primary-100 text-primary-700 dark:bg-primary-900/40 dark:text-primary-300": isActive,
|
|
338
|
+
"hover:bg-gray-100 dark:hover:bg-gray-800": !isActive && !item.disabled,
|
|
339
339
|
"cursor-pointer": !item.disabled,
|
|
340
340
|
"cursor-not-allowed opacity-50": item.disabled,
|
|
341
341
|
"justify-center": labelHidden
|
|
@@ -364,7 +364,7 @@ var Sidebar = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
364
364
|
})]
|
|
365
365
|
}) : item.badge
|
|
366
366
|
}), hasChildren && jsx("span", {
|
|
367
|
-
className: "ml-2 flex-shrink-0 rounded p-0.5 hover:bg-gray-200",
|
|
367
|
+
className: "ml-2 flex-shrink-0 rounded p-0.5 hover:bg-gray-200 dark:hover:bg-gray-700",
|
|
368
368
|
"aria-hidden": "true",
|
|
369
369
|
"data-sidebar-chevron": "",
|
|
370
370
|
onClick: hasHref ? function (e) {
|
|
@@ -414,7 +414,7 @@ var Sidebar = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
414
414
|
}),
|
|
415
415
|
"data-sidebar-section": section.key || "",
|
|
416
416
|
children: [effectiveCollapsed && idx > 0 && jsx("hr", {
|
|
417
|
-
className: "mx-2 my-2 border-
|
|
417
|
+
className: "mx-2 my-2 border-line",
|
|
418
418
|
"aria-hidden": "true"
|
|
419
419
|
}), section.key && (effectiveCollapsed ? jsx("span", {
|
|
420
420
|
id: headingId,
|
|
@@ -422,7 +422,7 @@ var Sidebar = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
422
422
|
children: section.key
|
|
423
423
|
}) : jsx("p", {
|
|
424
424
|
id: headingId,
|
|
425
|
-
className: "px-3 pb-1 pt-2 text-micro font-semibold uppercase tracking-wide text-
|
|
425
|
+
className: "px-3 pb-1 pt-2 text-micro font-semibold uppercase tracking-wide text-muted",
|
|
426
426
|
children: section.key
|
|
427
427
|
})), section.items.map(function (item) {
|
|
428
428
|
return _renderMenuItem(item, 0, pane);
|
|
@@ -461,7 +461,7 @@ var Sidebar = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
461
461
|
return jsx("button", {
|
|
462
462
|
type: "button",
|
|
463
463
|
onClick: handleUserClick,
|
|
464
|
-
className: cn(base, "cursor-pointer hover:bg-gray-100 transition-colors", "focus:outline-none focus-visible:ring-2 focus-visible:ring-primary-500"),
|
|
464
|
+
className: cn(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"),
|
|
465
465
|
"aria-label": effectiveCollapsed && !user.avatar ? user.name : undefined,
|
|
466
466
|
children: content
|
|
467
467
|
});
|
|
@@ -475,26 +475,26 @@ var Sidebar = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
475
475
|
}) : footer;
|
|
476
476
|
if (content === undefined || content === null || content === false) return null;
|
|
477
477
|
return jsx("div", {
|
|
478
|
-
className: "border-t border-
|
|
478
|
+
className: "border-t border-line p-4",
|
|
479
479
|
"data-sidebar-footer": "",
|
|
480
480
|
children: content
|
|
481
481
|
});
|
|
482
482
|
};
|
|
483
483
|
var renderSidebarContent = function renderSidebarContent(pane) {
|
|
484
484
|
return jsxs("div", {
|
|
485
|
-
className: cn("flex h-full flex-col bg-
|
|
485
|
+
className: cn("flex h-full flex-col bg-surface text-foreground border-r border-line shadow-sm", "w-64 transition-all duration-200", {
|
|
486
486
|
"w-16": effectiveCollapsed,
|
|
487
487
|
"w-64": !effectiveCollapsed
|
|
488
488
|
}),
|
|
489
489
|
children: [jsxs("div", {
|
|
490
|
-
className: "flex h-16 items-center justify-between border-b border-
|
|
490
|
+
className: "flex h-16 items-center justify-between border-b border-line px-4",
|
|
491
491
|
children: [!effectiveCollapsed && logo && jsx("div", {
|
|
492
492
|
className: "flex items-center",
|
|
493
493
|
children: logo
|
|
494
494
|
}), jsx("button", {
|
|
495
495
|
type: "button",
|
|
496
496
|
onClick: handleToggleClick,
|
|
497
|
-
className: "rounded-md p-1 hover:bg-gray-100",
|
|
497
|
+
className: "rounded-md p-1 hover:bg-gray-100 dark:hover:bg-gray-800",
|
|
498
498
|
"aria-label": effectiveCollapsed ? "Expand sidebar" : "Collapse sidebar",
|
|
499
499
|
children: effectiveCollapsed ? jsx(ChevronRight, {
|
|
500
500
|
className: "h-5 w-5"
|
|
@@ -503,10 +503,10 @@ var Sidebar = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
503
503
|
})
|
|
504
504
|
})]
|
|
505
505
|
}), jsx("nav", {
|
|
506
|
-
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",
|
|
506
|
+
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",
|
|
507
507
|
children: renderNavContent(pane)
|
|
508
508
|
}), renderFooter(pane), user && jsx("div", {
|
|
509
|
-
className: "border-t border-
|
|
509
|
+
className: "border-t border-line p-4",
|
|
510
510
|
children: jsx("div", {
|
|
511
511
|
className: "relative",
|
|
512
512
|
children: renderUserBlock()
|
|
@@ -18,7 +18,7 @@ var Card = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
18
18
|
props = _objectWithoutProperties(_ref, _excluded);
|
|
19
19
|
return jsx("div", _objectSpread2(_objectSpread2({
|
|
20
20
|
ref: ref,
|
|
21
|
-
className: cn('rounded-lg border border-
|
|
21
|
+
className: cn('rounded-lg border border-line bg-surface shadow-sm', {
|
|
22
22
|
'hover:shadow-md transition-shadow': hover
|
|
23
23
|
}, className)
|
|
24
24
|
}, props), {}, {
|
|
@@ -31,7 +31,7 @@ var CardHeader = function CardHeader(_ref2) {
|
|
|
31
31
|
className = _ref2.className,
|
|
32
32
|
props = _objectWithoutProperties(_ref2, _excluded2);
|
|
33
33
|
return jsx("div", _objectSpread2(_objectSpread2({
|
|
34
|
-
className: cn('px-6 py-4 border-b border-
|
|
34
|
+
className: cn('px-6 py-4 border-b border-line', className)
|
|
35
35
|
}, props), {}, {
|
|
36
36
|
children: children
|
|
37
37
|
}));
|
|
@@ -41,7 +41,7 @@ var CardTitle = function CardTitle(_ref3) {
|
|
|
41
41
|
className = _ref3.className,
|
|
42
42
|
props = _objectWithoutProperties(_ref3, _excluded3);
|
|
43
43
|
return jsx("h3", _objectSpread2(_objectSpread2({
|
|
44
|
-
className: cn('text-lg font-semibold text-primary-900', className)
|
|
44
|
+
className: cn('text-lg font-semibold text-primary-900 dark:text-primary-100', className)
|
|
45
45
|
}, props), {}, {
|
|
46
46
|
children: children
|
|
47
47
|
}));
|
|
@@ -51,7 +51,7 @@ var CardDescription = function CardDescription(_ref4) {
|
|
|
51
51
|
className = _ref4.className,
|
|
52
52
|
props = _objectWithoutProperties(_ref4, _excluded4);
|
|
53
53
|
return jsx("p", _objectSpread2(_objectSpread2({
|
|
54
|
-
className: cn('text-sm text-primary-600', className)
|
|
54
|
+
className: cn('text-sm text-primary-600 dark:text-primary-300', className)
|
|
55
55
|
}, props), {}, {
|
|
56
56
|
children: children
|
|
57
57
|
}));
|
|
@@ -71,7 +71,7 @@ var CardFooter = function CardFooter(_ref6) {
|
|
|
71
71
|
className = _ref6.className,
|
|
72
72
|
props = _objectWithoutProperties(_ref6, _excluded6);
|
|
73
73
|
return jsx("div", _objectSpread2(_objectSpread2({
|
|
74
|
-
className: cn('px-6 py-4 border-t border-
|
|
74
|
+
className: cn('px-6 py-4 border-t border-line', className)
|
|
75
75
|
}, props), {}, {
|
|
76
76
|
children: children
|
|
77
77
|
}));
|
|
@@ -34,9 +34,9 @@ var Stepper = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
34
34
|
text: 'text-primary-600'
|
|
35
35
|
},
|
|
36
36
|
upcoming: {
|
|
37
|
-
circle: 'bg-gray-300 text-
|
|
37
|
+
circle: 'bg-gray-300 text-gray-700',
|
|
38
38
|
line: 'bg-gray-300',
|
|
39
|
-
text: 'text-
|
|
39
|
+
text: 'text-muted'
|
|
40
40
|
}
|
|
41
41
|
};
|
|
42
42
|
return jsx("nav", _objectSpread2(_objectSpread2({
|
|
@@ -70,8 +70,10 @@ var Stepper = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
70
70
|
},
|
|
71
71
|
disabled: !onStepClick || stepIndex > currentStep,
|
|
72
72
|
"aria-current": status === 'current' ? 'step' : undefined,
|
|
73
|
+
"aria-label": "Step ".concat(stepIndex + 1).concat(step.title ? ": ".concat(step.title) : '').concat(status === 'completed' ? ' (completed)' : ''),
|
|
73
74
|
children: status === 'completed' ? jsx(Check, {
|
|
74
|
-
className: "h-4 w-4"
|
|
75
|
+
className: "h-4 w-4",
|
|
76
|
+
"aria-hidden": "true"
|
|
75
77
|
}) : stepIndex + 1
|
|
76
78
|
}), !isLast && jsx("div", {
|
|
77
79
|
className: cn('bg-gray-300', {
|
|
@@ -88,7 +90,7 @@ var Stepper = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
88
90
|
className: cn('text-sm font-medium', colors.text),
|
|
89
91
|
children: step.title
|
|
90
92
|
}), step.description && jsx("span", {
|
|
91
|
-
className: "text-xs text-
|
|
93
|
+
className: "text-xs text-muted",
|
|
92
94
|
children: step.description
|
|
93
95
|
})]
|
|
94
96
|
})]
|