@hanwenbo/x-web-pro-components 0.0.1

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 (150) hide show
  1. package/LICENSE +21 -0
  2. package/es/blocks/index.d.ts +1 -0
  3. package/es/blocks/index.js +2 -0
  4. package/es/blocks/shared.d.ts +24 -0
  5. package/es/blocks/shared.js +77 -0
  6. package/es/components/card/index.d.ts +82 -0
  7. package/es/components/card/index.js +361 -0
  8. package/es/components/descriptions/index.d.ts +31 -0
  9. package/es/components/descriptions/index.js +434 -0
  10. package/es/components/field/index.d.ts +75 -0
  11. package/es/components/field/index.js +761 -0
  12. package/es/components/form/captcha.d.ts +19 -0
  13. package/es/components/form/captcha.js +165 -0
  14. package/es/components/form/colorPicker.d.ts +7 -0
  15. package/es/components/form/colorPicker.js +73 -0
  16. package/es/components/form/fieldControls.d.ts +43 -0
  17. package/es/components/form/fieldControls.js +282 -0
  18. package/es/components/form/index.d.ts +285 -0
  19. package/es/components/form/index.js +2268 -0
  20. package/es/components/form/loginForm.d.ts +22 -0
  21. package/es/components/form/loginForm.js +159 -0
  22. package/es/components/form/schemaForm.d.ts +30 -0
  23. package/es/components/form/schemaForm.js +644 -0
  24. package/es/components/form/stepsForm.d.ts +26 -0
  25. package/es/components/form/stepsForm.js +183 -0
  26. package/es/components/form/uploadButton.d.ts +20 -0
  27. package/es/components/form/uploadButton.js +134 -0
  28. package/es/components/form/uploadDragger.d.ts +13 -0
  29. package/es/components/form/uploadDragger.js +144 -0
  30. package/es/components/index.d.ts +9 -0
  31. package/es/components/index.js +9 -0
  32. package/es/components/layout/components/Help/index.d.ts +72 -0
  33. package/es/components/layout/components/Help/index.js +350 -0
  34. package/es/components/layout/index.d.ts +182 -0
  35. package/es/components/layout/index.js +892 -0
  36. package/es/components/list/index.d.ts +80 -0
  37. package/es/components/list/index.js +431 -0
  38. package/es/components/provider/context.d.ts +7 -0
  39. package/es/components/provider/context.js +21 -0
  40. package/es/components/provider/index.d.ts +28 -0
  41. package/es/components/provider/index.js +117 -0
  42. package/es/components/provider/intl.d.ts +38 -0
  43. package/es/components/provider/intl.js +112 -0
  44. package/es/components/provider/types.d.ts +37 -0
  45. package/es/components/provider/types.js +1 -0
  46. package/es/components/provider/useStyle/index.d.ts +28 -0
  47. package/es/components/provider/useStyle/index.js +208 -0
  48. package/es/components/skeleton/index.d.ts +61 -0
  49. package/es/components/skeleton/index.js +388 -0
  50. package/es/components/table/dragSortTable.d.ts +8 -0
  51. package/es/components/table/dragSortTable.js +229 -0
  52. package/es/components/table/editableTable.d.ts +31 -0
  53. package/es/components/table/editableTable.js +507 -0
  54. package/es/components/table/index.d.ts +52 -0
  55. package/es/components/table/index.js +1554 -0
  56. package/es/components/table/listToolBar.d.ts +48 -0
  57. package/es/components/table/listToolBar.js +194 -0
  58. package/es/components/table/search.d.ts +5 -0
  59. package/es/components/table/search.js +13 -0
  60. package/es/index.d.ts +4 -0
  61. package/es/index.js +4 -0
  62. package/es/types.d.ts +219 -0
  63. package/es/types.js +1 -0
  64. package/es/utils/attachPropertiesToComponent.d.ts +1 -0
  65. package/es/utils/attachPropertiesToComponent.js +6 -0
  66. package/es/utils/getRequestParams.d.ts +19 -0
  67. package/es/utils/getRequestParams.js +57 -0
  68. package/es/utils/getTableListColumns.d.ts +20 -0
  69. package/es/utils/getTableListColumns.js +36 -0
  70. package/es/utils/index.d.ts +4 -0
  71. package/es/utils/index.js +4 -0
  72. package/es/utils/loading.d.ts +3 -0
  73. package/es/utils/loading.js +25 -0
  74. package/es/version.d.ts +2 -0
  75. package/es/version.js +2 -0
  76. package/lib/blocks/index.d.ts +1 -0
  77. package/lib/blocks/index.js +5 -0
  78. package/lib/blocks/shared.d.ts +24 -0
  79. package/lib/blocks/shared.js +83 -0
  80. package/lib/components/card/index.d.ts +82 -0
  81. package/lib/components/card/index.js +368 -0
  82. package/lib/components/descriptions/index.d.ts +31 -0
  83. package/lib/components/descriptions/index.js +440 -0
  84. package/lib/components/field/index.d.ts +75 -0
  85. package/lib/components/field/index.js +767 -0
  86. package/lib/components/form/captcha.d.ts +19 -0
  87. package/lib/components/form/captcha.js +172 -0
  88. package/lib/components/form/colorPicker.d.ts +7 -0
  89. package/lib/components/form/colorPicker.js +79 -0
  90. package/lib/components/form/fieldControls.d.ts +43 -0
  91. package/lib/components/form/fieldControls.js +288 -0
  92. package/lib/components/form/index.d.ts +285 -0
  93. package/lib/components/form/index.js +2332 -0
  94. package/lib/components/form/loginForm.d.ts +22 -0
  95. package/lib/components/form/loginForm.js +165 -0
  96. package/lib/components/form/schemaForm.d.ts +30 -0
  97. package/lib/components/form/schemaForm.js +651 -0
  98. package/lib/components/form/stepsForm.d.ts +26 -0
  99. package/lib/components/form/stepsForm.js +189 -0
  100. package/lib/components/form/uploadButton.d.ts +20 -0
  101. package/lib/components/form/uploadButton.js +141 -0
  102. package/lib/components/form/uploadDragger.d.ts +13 -0
  103. package/lib/components/form/uploadDragger.js +151 -0
  104. package/lib/components/index.d.ts +9 -0
  105. package/lib/components/index.js +104 -0
  106. package/lib/components/layout/components/Help/index.d.ts +72 -0
  107. package/lib/components/layout/components/Help/index.js +356 -0
  108. package/lib/components/layout/index.d.ts +182 -0
  109. package/lib/components/layout/index.js +930 -0
  110. package/lib/components/list/index.d.ts +80 -0
  111. package/lib/components/list/index.js +438 -0
  112. package/lib/components/provider/context.d.ts +7 -0
  113. package/lib/components/provider/context.js +27 -0
  114. package/lib/components/provider/index.d.ts +28 -0
  115. package/lib/components/provider/index.js +174 -0
  116. package/lib/components/provider/intl.d.ts +38 -0
  117. package/lib/components/provider/intl.js +118 -0
  118. package/lib/components/provider/types.d.ts +37 -0
  119. package/lib/components/provider/types.js +5 -0
  120. package/lib/components/provider/useStyle/index.d.ts +28 -0
  121. package/lib/components/provider/useStyle/index.js +217 -0
  122. package/lib/components/skeleton/index.d.ts +61 -0
  123. package/lib/components/skeleton/index.js +394 -0
  124. package/lib/components/table/dragSortTable.d.ts +8 -0
  125. package/lib/components/table/dragSortTable.js +236 -0
  126. package/lib/components/table/editableTable.d.ts +31 -0
  127. package/lib/components/table/editableTable.js +514 -0
  128. package/lib/components/table/index.d.ts +52 -0
  129. package/lib/components/table/index.js +1699 -0
  130. package/lib/components/table/listToolBar.d.ts +48 -0
  131. package/lib/components/table/listToolBar.js +200 -0
  132. package/lib/components/table/search.d.ts +5 -0
  133. package/lib/components/table/search.js +20 -0
  134. package/lib/index.d.ts +4 -0
  135. package/lib/index.js +49 -0
  136. package/lib/types.d.ts +219 -0
  137. package/lib/types.js +5 -0
  138. package/lib/utils/attachPropertiesToComponent.d.ts +1 -0
  139. package/lib/utils/attachPropertiesToComponent.js +12 -0
  140. package/lib/utils/getRequestParams.d.ts +19 -0
  141. package/lib/utils/getRequestParams.js +63 -0
  142. package/lib/utils/getTableListColumns.d.ts +20 -0
  143. package/lib/utils/getTableListColumns.js +42 -0
  144. package/lib/utils/index.d.ts +4 -0
  145. package/lib/utils/index.js +49 -0
  146. package/lib/utils/loading.d.ts +3 -0
  147. package/lib/utils/loading.js +31 -0
  148. package/lib/version.d.ts +2 -0
  149. package/lib/version.js +8 -0
  150. package/package.json +68 -0
@@ -0,0 +1,892 @@
1
+ var _excluded = ["className", "children"],
2
+ _excluded2 = ["title", "logo", "content", "actions", "breadcrumb", "collapsed", "collapsedButtonRender", "contentStyle", "currentMenu", "contentWidth", "fixedHeader", "fixSiderbar", "layout", "location", "menuData", "menuDataRender", "menuFooterRender", "menuItemRender", "menuRender", "navTheme", "onMenuHeaderClick", "siderWidth", "splitMenus", "headerRender", "token", "className", "children"];
3
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
+ function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
5
+ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
6
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
7
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
8
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
9
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
10
+ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
11
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
12
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
13
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
14
+ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
15
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
16
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
17
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
18
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
19
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); }
20
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
21
+ import React, { createContext, useContext, useMemo, useState } from 'react';
22
+ import { ChevronRight, Loader2, Settings2 } from 'lucide-react';
23
+ import { Button } from '@hanwenbo/x-web-ui/button';
24
+ import { Card } from '@hanwenbo/x-web-ui/card';
25
+ import { cn } from '@hanwenbo/x-web-ui/utils/cn';
26
+ import { jsx as _jsx } from "react/jsx-runtime";
27
+ import { jsxs as _jsxs } from "react/jsx-runtime";
28
+ import { Fragment as _Fragment } from "react/jsx-runtime";
29
+ export * from "./components/Help";
30
+ export var RouteContext = /*#__PURE__*/createContext({});
31
+ var defaultLayoutSettings = {
32
+ layout: 'side',
33
+ navTheme: 'light',
34
+ contentWidth: 'Fluid',
35
+ fixedHeader: true,
36
+ fixSiderbar: false,
37
+ colorWeak: false,
38
+ splitMenus: false
39
+ };
40
+ var LAYOUT_SECTION_SPACE = 'var(--x-space-4)';
41
+ var getPrimaryForeground = function getPrimaryForeground(color) {
42
+ if (!color || !/^#?[0-9a-f]{3,8}$/i.test(color)) {
43
+ return '255 255 255';
44
+ }
45
+ var raw = color.replace('#', '');
46
+ var normalized = raw.length === 3 ? raw.split('').map(function (char) {
47
+ return char + char;
48
+ }).join('') : raw.length >= 6 ? raw.slice(0, 6) : '';
49
+ if (!normalized) {
50
+ return '255 255 255';
51
+ }
52
+ var r = parseInt(normalized.slice(0, 2), 16);
53
+ var g = parseInt(normalized.slice(2, 4), 16);
54
+ var b = parseInt(normalized.slice(4, 6), 16);
55
+ var luminance = (r * 299 + g * 587 + b * 114) / 1000;
56
+ return luminance > 160 ? '17 24 39' : '255 255 255';
57
+ };
58
+ var getLayoutThemeStyle = function getLayoutThemeStyle(settings) {
59
+ if (!(settings !== null && settings !== void 0 && settings.colorPrimary)) {
60
+ return undefined;
61
+ }
62
+ return {
63
+ '--primary': settings.colorPrimary,
64
+ '--ring': settings.colorPrimary,
65
+ '--primary-foreground': "rgb(".concat(getPrimaryForeground(settings.colorPrimary), ")")
66
+ };
67
+ };
68
+ export var LayoutSettingsContext = /*#__PURE__*/createContext(undefined);
69
+ var matchPathPattern = function matchPathPattern(pattern, pathname) {
70
+ if (!pattern || pattern.startsWith('http')) {
71
+ return false;
72
+ }
73
+ var normalizedPattern = pattern.replace(/\/+$/, '') || '/';
74
+ var normalizedPath = pathname.replace(/\/+$/, '') || '/';
75
+ if (normalizedPattern === normalizedPath) {
76
+ return true;
77
+ }
78
+ var escapedPattern = normalizedPattern.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
79
+ var matcher = new RegExp("^".concat(escapedPattern.replace(/:([^/]+)/g, '[^/]+'), "$"));
80
+ return matcher.test(normalizedPath);
81
+ };
82
+ var createBreadcrumbMap = function createBreadcrumbMap(items) {
83
+ var accumulator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
84
+ items.forEach(function (item) {
85
+ var _item$children;
86
+ if (item.path) {
87
+ accumulator[item.path] = item;
88
+ }
89
+ if ((_item$children = item.children) !== null && _item$children !== void 0 && _item$children.length) {
90
+ createBreadcrumbMap(item.children, accumulator);
91
+ }
92
+ });
93
+ return accumulator;
94
+ };
95
+ export var getMenuData = function getMenuData() {
96
+ var routes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
97
+ var menuDataRender = arguments.length > 1 ? arguments[1] : undefined;
98
+ var normalizedRoutes = routes.filter(function (item) {
99
+ return !item.hideInMenu;
100
+ }).map(function (item) {
101
+ var _ref, _item$key, _item$name, _item$children2;
102
+ return _objectSpread(_objectSpread({}, item), {}, {
103
+ key: (_ref = (_item$key = item.key) !== null && _item$key !== void 0 ? _item$key : item.path) !== null && _ref !== void 0 ? _ref : String((_item$name = item.name) !== null && _item$name !== void 0 ? _item$name : ''),
104
+ children: (_item$children2 = item.children) !== null && _item$children2 !== void 0 && _item$children2.length ? getMenuData(item.children).menuData : undefined
105
+ });
106
+ });
107
+ var menuData = menuDataRender ? menuDataRender(normalizedRoutes) : normalizedRoutes;
108
+ return {
109
+ menuData: menuData,
110
+ breadcrumb: createBreadcrumbMap(menuData)
111
+ };
112
+ };
113
+ export var getPageTitle = function getPageTitle(_ref2, ignoreTitle) {
114
+ var title = _ref2.title,
115
+ pageName = _ref2.pageName,
116
+ appList = _ref2.appList,
117
+ breadcrumb = _ref2.breadcrumb,
118
+ breadcrumbMap = _ref2.breadcrumbMap,
119
+ formatMessage = _ref2.formatMessage,
120
+ _ref2$menu = _ref2.menu,
121
+ menu = _ref2$menu === void 0 ? {
122
+ locale: false
123
+ } : _ref2$menu,
124
+ pathname = _ref2.pathname;
125
+ return getPageTitleInfo({
126
+ appList: appList,
127
+ breadcrumb: breadcrumb,
128
+ breadcrumbMap: breadcrumbMap,
129
+ formatMessage: formatMessage,
130
+ menu: menu,
131
+ pageName: pageName,
132
+ pathname: pathname,
133
+ title: title
134
+ }, ignoreTitle).title;
135
+ };
136
+ export var getPageTitleInfo = function getPageTitleInfo(_ref3, ignoreTitle) {
137
+ var _find, _Object$entries$find, _appList$;
138
+ var title = _ref3.title,
139
+ pageName = _ref3.pageName,
140
+ appList = _ref3.appList,
141
+ breadcrumb = _ref3.breadcrumb,
142
+ breadcrumbMap = _ref3.breadcrumbMap,
143
+ formatMessage = _ref3.formatMessage,
144
+ _ref3$menu = _ref3.menu,
145
+ menu = _ref3$menu === void 0 ? {
146
+ locale: false
147
+ } : _ref3$menu,
148
+ _ref3$pathname = _ref3.pathname,
149
+ pathname = _ref3$pathname === void 0 ? '/' : _ref3$pathname;
150
+ var directMatch = ((_find = _toConsumableArray((breadcrumbMap === null || breadcrumbMap === void 0 ? void 0 : breadcrumbMap.entries()) || []).find(function (_ref4) {
151
+ var _ref5 = _slicedToArray(_ref4, 1),
152
+ path = _ref5[0];
153
+ return matchPathPattern(path, pathname);
154
+ })) === null || _find === void 0 ? void 0 : _find[1]) || ((_Object$entries$find = Object.entries(breadcrumb || {}).find(function (_ref6) {
155
+ var _ref7 = _slicedToArray(_ref6, 1),
156
+ path = _ref7[0];
157
+ return matchPathPattern(path, pathname);
158
+ })) === null || _Object$entries$find === void 0 ? void 0 : _Object$entries$find[1]);
159
+ var resolvedPageName = pageName || (directMatch !== null && directMatch !== void 0 && directMatch.locale && menu.locale !== false && formatMessage ? formatMessage({
160
+ id: directMatch.locale,
161
+ defaultMessage: String(directMatch.name || '')
162
+ }) : directMatch === null || directMatch === void 0 ? void 0 : directMatch.name) || (appList === null || appList === void 0 || (_appList$ = appList[0]) === null || _appList$ === void 0 ? void 0 : _appList$.title) || undefined;
163
+ if (resolvedPageName == null) {
164
+ resolvedPageName = title;
165
+ }
166
+ var plainPageName = resolvedPageName == null ? '' : String(resolvedPageName);
167
+ var plainTitle = title == null ? '' : String(title);
168
+ if (ignoreTitle || !plainTitle) {
169
+ return {
170
+ id: directMatch !== null && directMatch !== void 0 && directMatch.locale ? String(directMatch.locale) : '',
171
+ pageName: plainPageName,
172
+ title: plainPageName
173
+ };
174
+ }
175
+ if (!plainPageName) {
176
+ return {
177
+ id: directMatch !== null && directMatch !== void 0 && directMatch.locale ? String(directMatch.locale) : '',
178
+ pageName: plainTitle,
179
+ title: plainTitle
180
+ };
181
+ }
182
+ return {
183
+ id: directMatch !== null && directMatch !== void 0 && directMatch.locale ? String(directMatch.locale) : '',
184
+ pageName: plainPageName,
185
+ title: "".concat(plainPageName, " - ").concat(plainTitle)
186
+ };
187
+ };
188
+ export var ProBreadcrumb = function ProBreadcrumb(_ref8) {
189
+ var items = _ref8.items;
190
+ if (!(items !== null && items !== void 0 && items.length)) {
191
+ return null;
192
+ }
193
+ return /*#__PURE__*/_jsx("div", {
194
+ className: "flex flex-wrap items-center gap-2 text-sm text-muted-foreground",
195
+ children: items.map(function (item, index) {
196
+ return /*#__PURE__*/_jsxs(React.Fragment, {
197
+ children: [index > 0 ? /*#__PURE__*/_jsx(ChevronRight, {
198
+ className: "h-4 w-4"
199
+ }) : null, item.href ? /*#__PURE__*/_jsx("a", {
200
+ href: item.href,
201
+ className: "transition-colors hover:text-foreground",
202
+ children: item.title
203
+ }) : /*#__PURE__*/_jsx("span", {
204
+ children: item.title
205
+ })]
206
+ }, "".concat(item.title, "-").concat(index));
207
+ })
208
+ });
209
+ };
210
+ export var PageLoading = function PageLoading(_ref9) {
211
+ var _ref9$tip = _ref9.tip,
212
+ tip = _ref9$tip === void 0 ? '加载中...' : _ref9$tip;
213
+ return /*#__PURE__*/_jsxs("div", {
214
+ className: "flex min-h-[50vh] w-full flex-col items-center justify-center gap-3",
215
+ children: [/*#__PURE__*/_jsx(Loader2, {
216
+ className: "h-6 w-6 animate-spin text-primary"
217
+ }), /*#__PURE__*/_jsx("div", {
218
+ className: "text-sm text-muted-foreground",
219
+ children: tip
220
+ })]
221
+ });
222
+ };
223
+ export var GridContent = function GridContent(_ref10) {
224
+ var className = _ref10.className,
225
+ children = _ref10.children,
226
+ rest = _objectWithoutProperties(_ref10, _excluded);
227
+ return /*#__PURE__*/_jsx("div", _objectSpread(_objectSpread({
228
+ className: cn('w-full', className)
229
+ }, rest), {}, {
230
+ children: children
231
+ }));
232
+ };
233
+ export var WrapContent = GridContent;
234
+ export var AppList = function AppList(_ref11) {
235
+ var _ref11$apps = _ref11.apps,
236
+ apps = _ref11$apps === void 0 ? [] : _ref11$apps,
237
+ className = _ref11.className;
238
+ if (!apps.length) {
239
+ return null;
240
+ }
241
+ return /*#__PURE__*/_jsx("div", {
242
+ className: cn('grid gap-3 sm:grid-cols-2 xl:grid-cols-3', className),
243
+ children: apps.map(function (app) {
244
+ var content = /*#__PURE__*/_jsx(Card, {
245
+ className: "h-full",
246
+ children: /*#__PURE__*/_jsxs("div", {
247
+ className: "flex items-start gap-3",
248
+ children: [app.icon ? /*#__PURE__*/_jsx("div", {
249
+ className: "bg-primary/10 flex h-10 w-10 shrink-0 items-center justify-center rounded-xl text-primary",
250
+ children: app.icon
251
+ }) : null, /*#__PURE__*/_jsxs("div", {
252
+ className: "min-w-0 space-y-1",
253
+ children: [/*#__PURE__*/_jsx("div", {
254
+ className: "text-sm font-medium text-foreground",
255
+ children: app.title
256
+ }), app.desc ? /*#__PURE__*/_jsx("div", {
257
+ className: "text-sm text-muted-foreground",
258
+ children: app.desc
259
+ }) : null]
260
+ })]
261
+ })
262
+ }, String(app.title));
263
+ return app.url ? /*#__PURE__*/_jsx("a", {
264
+ href: app.url,
265
+ className: "block transition-transform hover:-translate-y-0.5",
266
+ children: content
267
+ }, String(app.title)) : /*#__PURE__*/_jsx("div", {
268
+ children: content
269
+ }, String(app.title));
270
+ })
271
+ });
272
+ };
273
+ export var FooterToolbar = function FooterToolbar(_ref12) {
274
+ var children = _ref12.children,
275
+ extra = _ref12.extra,
276
+ className = _ref12.className;
277
+ return /*#__PURE__*/_jsxs("div", {
278
+ className: cn('bg-card/90 sticky bottom-4 z-20 flex items-center justify-between rounded-2xl border border-border p-4 shadow-lg backdrop-blur', className),
279
+ children: [/*#__PURE__*/_jsx("div", {
280
+ children: extra
281
+ }), /*#__PURE__*/_jsx("div", {
282
+ className: "flex flex-wrap items-center gap-3",
283
+ children: children
284
+ })]
285
+ });
286
+ };
287
+ export var DefaultFooter = function DefaultFooter(_ref13) {
288
+ var _ref13$links = _ref13.links,
289
+ links = _ref13$links === void 0 ? [] : _ref13$links,
290
+ copyright = _ref13.copyright,
291
+ className = _ref13.className;
292
+ return /*#__PURE__*/_jsxs("div", {
293
+ className: cn('flex flex-col items-center justify-center gap-3 py-6 text-center text-sm text-muted-foreground', className),
294
+ children: [links.length ? /*#__PURE__*/_jsx("div", {
295
+ className: "flex flex-wrap items-center justify-center gap-3",
296
+ children: links.map(function (link) {
297
+ var _link$key, _link$key2;
298
+ return link.href ? /*#__PURE__*/_jsx("a", {
299
+ href: link.href,
300
+ className: "transition-colors hover:text-foreground",
301
+ children: link.title
302
+ }, String((_link$key = link.key) !== null && _link$key !== void 0 ? _link$key : link.title)) : /*#__PURE__*/_jsx("span", {
303
+ children: link.title
304
+ }, String((_link$key2 = link.key) !== null && _link$key2 !== void 0 ? _link$key2 : link.title));
305
+ })
306
+ }) : null, copyright ? /*#__PURE__*/_jsx("div", {
307
+ children: copyright
308
+ }) : null]
309
+ });
310
+ };
311
+ export var TopNavHeader = function TopNavHeader(_ref14) {
312
+ var title = _ref14.title,
313
+ subTitle = _ref14.subTitle,
314
+ logo = _ref14.logo,
315
+ content = _ref14.content,
316
+ actions = _ref14.actions,
317
+ _ref14$fixed = _ref14.fixed,
318
+ fixed = _ref14$fixed === void 0 ? true : _ref14$fixed,
319
+ _ref14$navTheme = _ref14.navTheme,
320
+ navTheme = _ref14$navTheme === void 0 ? 'light' : _ref14$navTheme,
321
+ className = _ref14.className;
322
+ var darkMode = navTheme === 'dark';
323
+ var hasBrand = Boolean(logo || title || subTitle);
324
+ return /*#__PURE__*/_jsx("header", {
325
+ className: cn(fixed ? 'sticky top-0 z-30' : 'relative', darkMode ? 'bg-slate-950/95 backdrop-blur' : 'bg-background/90 backdrop-blur', className),
326
+ children: /*#__PURE__*/_jsxs(GridContent, {
327
+ className: "flex min-h-16 flex-wrap items-center gap-4 py-2",
328
+ style: {
329
+ paddingInline: "var(--x-pro-layout-content-padding, ".concat(LAYOUT_SECTION_SPACE, ")")
330
+ },
331
+ children: [hasBrand ? /*#__PURE__*/_jsxs("div", {
332
+ className: "flex min-w-0 items-center gap-3",
333
+ children: [logo ? /*#__PURE__*/_jsx("div", {
334
+ className: "shrink-0",
335
+ children: typeof logo === 'string' ? /*#__PURE__*/_jsx("img", {
336
+ src: logo,
337
+ alt: title ? String(title) : 'logo',
338
+ className: "h-8 w-8 rounded-lg object-contain"
339
+ }) : logo
340
+ }) : null, /*#__PURE__*/_jsxs("div", {
341
+ className: "min-w-0",
342
+ children: [/*#__PURE__*/_jsx("div", {
343
+ className: cn('text-lg font-semibold', darkMode ? 'text-white' : 'text-foreground'),
344
+ children: title || 'X Mobile Pro'
345
+ }), subTitle ? /*#__PURE__*/_jsx("div", {
346
+ className: cn('text-sm', darkMode ? 'text-slate-300' : 'text-muted-foreground'),
347
+ children: subTitle
348
+ }) : null]
349
+ })]
350
+ }) : null, content ? /*#__PURE__*/_jsx("div", {
351
+ className: "min-w-0 flex-1",
352
+ children: content
353
+ }) : /*#__PURE__*/_jsx("div", {
354
+ className: "flex-1"
355
+ }), /*#__PURE__*/_jsx("div", {
356
+ className: "ml-auto flex shrink-0 flex-wrap items-center justify-end gap-3",
357
+ children: actions
358
+ })]
359
+ })
360
+ });
361
+ };
362
+ export var DefaultHeader = TopNavHeader;
363
+ export var SettingDrawer = function SettingDrawer(_ref15) {
364
+ var _ref16;
365
+ var children = _ref15.children,
366
+ className = _ref15.className,
367
+ collapse = _ref15.collapse,
368
+ onCollapseChange = _ref15.onCollapseChange,
369
+ onOpenChange = _ref15.onOpenChange,
370
+ onSettingChange = _ref15.onSettingChange,
371
+ open = _ref15.open,
372
+ settings = _ref15.settings;
373
+ var parentSettings = useContext(LayoutSettingsContext);
374
+ var _useState = useState(false),
375
+ _useState2 = _slicedToArray(_useState, 2),
376
+ innerOpen = _useState2[0],
377
+ setInnerOpen = _useState2[1];
378
+ var _useState3 = useState(settings || parentSettings || defaultLayoutSettings),
379
+ _useState4 = _slicedToArray(_useState3, 2),
380
+ innerSettings = _useState4[0],
381
+ setInnerSettings = _useState4[1];
382
+ var mergedOpen = (_ref16 = open !== null && open !== void 0 ? open : collapse) !== null && _ref16 !== void 0 ? _ref16 : innerOpen;
383
+ var mergedSettings = settings !== null && settings !== void 0 ? settings : innerSettings;
384
+ React.useEffect(function () {
385
+ if (settings !== undefined) {
386
+ setInnerSettings(settings);
387
+ return;
388
+ }
389
+ if (parentSettings) {
390
+ setInnerSettings(function (prev) {
391
+ return _objectSpread(_objectSpread(_objectSpread({}, defaultLayoutSettings), prev), parentSettings);
392
+ });
393
+ }
394
+ }, [parentSettings, settings]);
395
+ var updateOpen = function updateOpen(nextOpen) {
396
+ if (open === undefined) {
397
+ setInnerOpen(nextOpen);
398
+ }
399
+ onOpenChange === null || onOpenChange === void 0 || onOpenChange(nextOpen);
400
+ onCollapseChange === null || onCollapseChange === void 0 || onCollapseChange(nextOpen);
401
+ };
402
+ var updateSettings = function updateSettings(patch) {
403
+ var nextSettings = _objectSpread(_objectSpread({}, mergedSettings), patch);
404
+ if (settings === undefined) {
405
+ setInnerSettings(nextSettings);
406
+ }
407
+ onSettingChange === null || onSettingChange === void 0 || onSettingChange(nextSettings);
408
+ };
409
+ return /*#__PURE__*/_jsx(LayoutSettingsContext.Provider, {
410
+ value: mergedSettings,
411
+ children: /*#__PURE__*/_jsxs(_Fragment, {
412
+ children: [children, /*#__PURE__*/_jsx("div", {
413
+ className: "fixed bottom-6 right-6 z-40",
414
+ children: mergedOpen ? /*#__PURE__*/_jsx(Card, {
415
+ className: cn('w-[320px] shadow-xl', className),
416
+ title: "\u5E03\u5C40\u8BBE\u7F6E",
417
+ extra: /*#__PURE__*/_jsx(Button, {
418
+ variant: "ghost",
419
+ size: "small",
420
+ onClick: function onClick() {
421
+ return updateOpen(false);
422
+ },
423
+ children: "\u6536\u8D77"
424
+ }),
425
+ children: /*#__PURE__*/_jsxs("div", {
426
+ className: "space-y-4",
427
+ children: [/*#__PURE__*/_jsxs("div", {
428
+ className: "space-y-2",
429
+ children: [/*#__PURE__*/_jsx("div", {
430
+ className: "text-sm font-medium text-foreground",
431
+ children: "\u5E03\u5C40\u6A21\u5F0F"
432
+ }), /*#__PURE__*/_jsx("div", {
433
+ className: "flex flex-wrap gap-2",
434
+ children: ['side', 'top', 'mix'].map(function (item) {
435
+ return /*#__PURE__*/_jsx(Button, {
436
+ size: "small",
437
+ variant: mergedSettings.layout === item ? 'default' : 'outline',
438
+ onClick: function onClick() {
439
+ return updateSettings({
440
+ layout: item
441
+ });
442
+ },
443
+ children: item
444
+ }, item);
445
+ })
446
+ })]
447
+ }), /*#__PURE__*/_jsxs("div", {
448
+ className: "space-y-2",
449
+ children: [/*#__PURE__*/_jsx("div", {
450
+ className: "text-sm font-medium text-foreground",
451
+ children: "\u5BFC\u822A\u4E3B\u9898"
452
+ }), /*#__PURE__*/_jsx("div", {
453
+ className: "flex flex-wrap gap-2",
454
+ children: ['light', 'dark'].map(function (item) {
455
+ return /*#__PURE__*/_jsx(Button, {
456
+ size: "small",
457
+ variant: mergedSettings.navTheme === item ? 'default' : 'outline',
458
+ onClick: function onClick() {
459
+ return updateSettings({
460
+ navTheme: item
461
+ });
462
+ },
463
+ children: item
464
+ }, item);
465
+ })
466
+ })]
467
+ }), /*#__PURE__*/_jsxs("div", {
468
+ className: "space-y-2",
469
+ children: [/*#__PURE__*/_jsx("div", {
470
+ className: "text-sm font-medium text-foreground",
471
+ children: "\u5185\u5BB9\u5BBD\u5EA6"
472
+ }), /*#__PURE__*/_jsx("div", {
473
+ className: "flex flex-wrap gap-2",
474
+ children: ['Fluid', 'Fixed'].map(function (item) {
475
+ return /*#__PURE__*/_jsx(Button, {
476
+ size: "small",
477
+ variant: mergedSettings.contentWidth === item ? 'default' : 'outline',
478
+ onClick: function onClick() {
479
+ return updateSettings({
480
+ contentWidth: item
481
+ });
482
+ },
483
+ children: item
484
+ }, item);
485
+ })
486
+ })]
487
+ }), /*#__PURE__*/_jsxs("div", {
488
+ className: "space-y-2",
489
+ children: [/*#__PURE__*/_jsx("div", {
490
+ className: "text-sm font-medium text-foreground",
491
+ children: "\u5F3A\u8C03\u8272"
492
+ }), /*#__PURE__*/_jsx("input", {
493
+ "aria-label": "colorPrimary",
494
+ type: "color",
495
+ value: mergedSettings.colorPrimary || '#1677ff',
496
+ className: "h-10 w-full cursor-pointer rounded-xl border border-border bg-background px-2 py-1",
497
+ onChange: function onChange(event) {
498
+ return updateSettings({
499
+ colorPrimary: event.target.value
500
+ });
501
+ }
502
+ })]
503
+ }), /*#__PURE__*/_jsxs("div", {
504
+ className: "bg-muted/20 flex items-center justify-between rounded-xl border border-border px-3 py-2",
505
+ children: [/*#__PURE__*/_jsxs("div", {
506
+ children: [/*#__PURE__*/_jsx("div", {
507
+ className: "text-sm font-medium text-foreground",
508
+ children: "\u56FA\u5B9A\u5934\u90E8"
509
+ }), /*#__PURE__*/_jsx("div", {
510
+ className: "text-xs text-muted-foreground",
511
+ children: "\u5207\u6362\u9875\u9762\u5934\u90E8\u5438\u9876"
512
+ })]
513
+ }), /*#__PURE__*/_jsx(Button, {
514
+ size: "small",
515
+ variant: mergedSettings.fixedHeader ? 'default' : 'outline',
516
+ onClick: function onClick() {
517
+ return updateSettings({
518
+ fixedHeader: !mergedSettings.fixedHeader
519
+ });
520
+ },
521
+ children: mergedSettings.fixedHeader ? '开启' : '关闭'
522
+ })]
523
+ }), /*#__PURE__*/_jsxs("div", {
524
+ className: "bg-muted/20 flex items-center justify-between rounded-xl border border-border px-3 py-2",
525
+ children: [/*#__PURE__*/_jsxs("div", {
526
+ children: [/*#__PURE__*/_jsx("div", {
527
+ className: "text-sm font-medium text-foreground",
528
+ children: "\u56FA\u5B9A\u4FA7\u8FB9\u680F"
529
+ }), /*#__PURE__*/_jsx("div", {
530
+ className: "text-xs text-muted-foreground",
531
+ children: "\u5207\u6362\u4FA7\u8FB9\u5BFC\u822A\u5438\u9876"
532
+ })]
533
+ }), /*#__PURE__*/_jsx(Button, {
534
+ size: "small",
535
+ variant: mergedSettings.fixSiderbar ? 'default' : 'outline',
536
+ onClick: function onClick() {
537
+ return updateSettings({
538
+ fixSiderbar: !mergedSettings.fixSiderbar
539
+ });
540
+ },
541
+ children: mergedSettings.fixSiderbar ? '开启' : '关闭'
542
+ })]
543
+ }), /*#__PURE__*/_jsxs("div", {
544
+ className: "bg-muted/20 flex items-center justify-between rounded-xl border border-border px-3 py-2",
545
+ children: [/*#__PURE__*/_jsxs("div", {
546
+ children: [/*#__PURE__*/_jsx("div", {
547
+ className: "text-sm font-medium text-foreground",
548
+ children: "\u81EA\u52A8\u5206\u5272\u83DC\u5355"
549
+ }), /*#__PURE__*/_jsx("div", {
550
+ className: "text-xs text-muted-foreground",
551
+ children: "Mix \u6A21\u5F0F\u4E0B\u62C6\u5206\u9876\u7EA7\u83DC\u5355\u548C\u5B50\u83DC\u5355"
552
+ })]
553
+ }), /*#__PURE__*/_jsx(Button, {
554
+ size: "small",
555
+ variant: mergedSettings.splitMenus ? 'default' : 'outline',
556
+ onClick: function onClick() {
557
+ return updateSettings({
558
+ splitMenus: !mergedSettings.splitMenus
559
+ });
560
+ },
561
+ children: mergedSettings.splitMenus ? '开启' : '关闭'
562
+ })]
563
+ }), /*#__PURE__*/_jsxs("div", {
564
+ className: "bg-muted/20 flex items-center justify-between rounded-xl border border-border px-3 py-2",
565
+ children: [/*#__PURE__*/_jsxs("div", {
566
+ children: [/*#__PURE__*/_jsx("div", {
567
+ className: "text-sm font-medium text-foreground",
568
+ children: "\u8272\u5F31\u6A21\u5F0F"
569
+ }), /*#__PURE__*/_jsx("div", {
570
+ className: "text-xs text-muted-foreground",
571
+ children: "\u4E3A\u6574\u9875\u589E\u52A0\u7070\u5EA6\u6EE4\u955C"
572
+ })]
573
+ }), /*#__PURE__*/_jsx(Button, {
574
+ size: "small",
575
+ variant: mergedSettings.colorWeak ? 'default' : 'outline',
576
+ onClick: function onClick() {
577
+ return updateSettings({
578
+ colorWeak: !mergedSettings.colorWeak
579
+ });
580
+ },
581
+ children: mergedSettings.colorWeak ? '开启' : '关闭'
582
+ })]
583
+ })]
584
+ })
585
+ }) : /*#__PURE__*/_jsx(Button, {
586
+ variant: "default",
587
+ size: "small",
588
+ icon: /*#__PURE__*/_jsx(Settings2, {
589
+ className: "h-4 w-4"
590
+ }),
591
+ onClick: function onClick() {
592
+ return updateOpen(true);
593
+ },
594
+ children: "\u5E03\u5C40\u8BBE\u7F6E"
595
+ })
596
+ })]
597
+ })
598
+ });
599
+ };
600
+ export var PageContainer = function PageContainer(_ref17) {
601
+ var title = _ref17.title,
602
+ subTitle = _ref17.subTitle,
603
+ extra = _ref17.extra,
604
+ content = _ref17.content,
605
+ footer = _ref17.footer,
606
+ children = _ref17.children,
607
+ breadcrumb = _ref17.breadcrumb,
608
+ _ref17$ghost = _ref17.ghost,
609
+ ghost = _ref17$ghost === void 0 ? false : _ref17$ghost,
610
+ _ref17$loading = _ref17.loading,
611
+ loading = _ref17$loading === void 0 ? false : _ref17$loading,
612
+ tabList = _ref17.tabList,
613
+ tabActiveKey = _ref17.tabActiveKey,
614
+ onTabChange = _ref17.onTabChange,
615
+ className = _ref17.className,
616
+ style = _ref17.style,
617
+ bodyClassName = _ref17.bodyClassName,
618
+ bodyStyle = _ref17.bodyStyle;
619
+ var routeContext = useContext(RouteContext);
620
+ var resolvedTitle = title !== null && title !== void 0 ? title : routeContext.title;
621
+ var resolvedBreadcrumb = breadcrumb !== null && breadcrumb !== void 0 ? breadcrumb : routeContext.breadcrumb;
622
+ if (loading) {
623
+ return /*#__PURE__*/_jsx(PageLoading, {});
624
+ }
625
+ return /*#__PURE__*/_jsxs("div", {
626
+ className: "space-y-5",
627
+ children: [/*#__PURE__*/_jsxs(Card, {
628
+ variant: ghost ? 'ghost' : 'default',
629
+ className: cn(ghost && 'border-transparent bg-transparent shadow-none', className),
630
+ style: style,
631
+ bodyClassName: bodyClassName,
632
+ bodyStyle: bodyStyle,
633
+ title: /*#__PURE__*/_jsxs("div", {
634
+ className: "space-y-2",
635
+ children: [/*#__PURE__*/_jsx(ProBreadcrumb, {
636
+ items: resolvedBreadcrumb
637
+ }), resolvedTitle ? /*#__PURE__*/_jsx("div", {
638
+ className: "text-2xl font-semibold text-foreground",
639
+ children: resolvedTitle
640
+ }) : null, subTitle ? /*#__PURE__*/_jsx("div", {
641
+ className: "text-sm text-muted-foreground",
642
+ children: subTitle
643
+ }) : null]
644
+ }),
645
+ extra: extra,
646
+ children: [content ? /*#__PURE__*/_jsx("div", {
647
+ className: "mb-5 text-sm text-muted-foreground",
648
+ children: content
649
+ }) : null, tabList !== null && tabList !== void 0 && tabList.length ? /*#__PURE__*/_jsx("div", {
650
+ className: "mb-5 flex flex-wrap items-center gap-2 border-b border-border pb-4",
651
+ children: tabList.map(function (item) {
652
+ return /*#__PURE__*/_jsx(Button, {
653
+ variant: tabActiveKey === item.key ? 'default' : 'outline',
654
+ size: "small",
655
+ onClick: function onClick() {
656
+ return onTabChange === null || onTabChange === void 0 ? void 0 : onTabChange(item.key);
657
+ },
658
+ children: item.tab
659
+ }, item.key);
660
+ })
661
+ }) : null, /*#__PURE__*/_jsx("div", {
662
+ children: children
663
+ })]
664
+ }), footer]
665
+ });
666
+ };
667
+ export var ProPageHeader = PageContainer;
668
+ export var PageHeader = PageContainer;
669
+ var renderMenuItems = function renderMenuItems(menuData, currentMenu, menuItemRender) {
670
+ var mode = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'side';
671
+ var navTheme = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 'light';
672
+ var items = menuData.filter(function (item) {
673
+ return !item.hideInMenu;
674
+ });
675
+ var darkMode = navTheme === 'dark';
676
+ return /*#__PURE__*/_jsx("div", {
677
+ className: cn(mode === 'top' ? 'flex flex-wrap items-center gap-2' : 'space-y-1'),
678
+ children: items.map(function (item) {
679
+ var _ref18, _item$key2;
680
+ var active = currentMenu !== null && currentMenu !== void 0 && currentMenu.path && item.path ? currentMenu.path === item.path : (currentMenu === null || currentMenu === void 0 ? void 0 : currentMenu.key) === item.key;
681
+ var defaultDom = item.path ? /*#__PURE__*/_jsxs("a", {
682
+ href: item.path,
683
+ className: cn('flex items-center gap-2 rounded-xl px-3 py-2 text-sm transition-colors', active ? 'bg-primary/10 text-primary' : darkMode ? 'text-slate-300 hover:bg-slate-800/70 hover:text-white' : 'hover:bg-muted/30 text-muted-foreground hover:text-foreground'),
684
+ children: [item.icon, /*#__PURE__*/_jsx("span", {
685
+ children: item.name
686
+ })]
687
+ }) : /*#__PURE__*/_jsxs("div", {
688
+ className: cn('flex items-center gap-2 rounded-xl px-3 py-2 text-sm transition-colors', active ? 'bg-primary/10 text-primary' : darkMode ? 'text-slate-300 hover:bg-slate-800/70 hover:text-white' : 'hover:bg-muted/30 text-muted-foreground hover:text-foreground'),
689
+ children: [item.icon, /*#__PURE__*/_jsx("span", {
690
+ children: item.name
691
+ })]
692
+ });
693
+ return /*#__PURE__*/_jsx("div", {
694
+ children: menuItemRender ? menuItemRender(item, defaultDom) : defaultDom
695
+ }, String((_ref18 = (_item$key2 = item.key) !== null && _item$key2 !== void 0 ? _item$key2 : item.path) !== null && _ref18 !== void 0 ? _ref18 : item.name));
696
+ })
697
+ });
698
+ };
699
+ export var ProLayout = function ProLayout(_ref19) {
700
+ var _layoutSettings$layou, _layoutSettings$navTh, _layoutSettings$fixed, _layoutSettings$fixSi, _layoutSettings$conte, _layoutSettings$split, _layoutSettings$color, _currentMenu$children;
701
+ var title = _ref19.title,
702
+ logo = _ref19.logo,
703
+ content = _ref19.content,
704
+ actions = _ref19.actions,
705
+ breadcrumb = _ref19.breadcrumb,
706
+ collapsed = _ref19.collapsed,
707
+ _collapsedButtonRender = _ref19.collapsedButtonRender,
708
+ _contentStyle = _ref19.contentStyle,
709
+ currentMenu = _ref19.currentMenu,
710
+ _ref19$contentWidth = _ref19.contentWidth,
711
+ contentWidth = _ref19$contentWidth === void 0 ? 'Fluid' : _ref19$contentWidth,
712
+ _ref19$fixedHeader = _ref19.fixedHeader,
713
+ fixedHeader = _ref19$fixedHeader === void 0 ? true : _ref19$fixedHeader,
714
+ _ref19$fixSiderbar = _ref19.fixSiderbar,
715
+ fixSiderbar = _ref19$fixSiderbar === void 0 ? false : _ref19$fixSiderbar,
716
+ _ref19$layout = _ref19.layout,
717
+ layout = _ref19$layout === void 0 ? 'side' : _ref19$layout,
718
+ _location = _ref19.location,
719
+ _ref19$menuData = _ref19.menuData,
720
+ menuData = _ref19$menuData === void 0 ? [] : _ref19$menuData,
721
+ _menuDataRender = _ref19.menuDataRender,
722
+ menuFooterRender = _ref19.menuFooterRender,
723
+ menuItemRender = _ref19.menuItemRender,
724
+ menuRender = _ref19.menuRender,
725
+ _ref19$navTheme = _ref19.navTheme,
726
+ navTheme = _ref19$navTheme === void 0 ? 'light' : _ref19$navTheme,
727
+ onMenuHeaderClick = _ref19.onMenuHeaderClick,
728
+ _ref19$siderWidth = _ref19.siderWidth,
729
+ siderWidth = _ref19$siderWidth === void 0 ? 240 : _ref19$siderWidth,
730
+ _ref19$splitMenus = _ref19.splitMenus,
731
+ splitMenus = _ref19$splitMenus === void 0 ? false : _ref19$splitMenus,
732
+ headerRender = _ref19.headerRender,
733
+ _token = _ref19.token,
734
+ className = _ref19.className,
735
+ children = _ref19.children,
736
+ rest = _objectWithoutProperties(_ref19, _excluded2);
737
+ var layoutSettings = useContext(LayoutSettingsContext);
738
+ var mergedLayout = (_layoutSettings$layou = layoutSettings === null || layoutSettings === void 0 ? void 0 : layoutSettings.layout) !== null && _layoutSettings$layou !== void 0 ? _layoutSettings$layou : layout;
739
+ var mergedNavTheme = (_layoutSettings$navTh = layoutSettings === null || layoutSettings === void 0 ? void 0 : layoutSettings.navTheme) !== null && _layoutSettings$navTh !== void 0 ? _layoutSettings$navTh : navTheme;
740
+ var mergedFixedHeader = (_layoutSettings$fixed = layoutSettings === null || layoutSettings === void 0 ? void 0 : layoutSettings.fixedHeader) !== null && _layoutSettings$fixed !== void 0 ? _layoutSettings$fixed : fixedHeader;
741
+ var mergedFixSiderbar = (_layoutSettings$fixSi = layoutSettings === null || layoutSettings === void 0 ? void 0 : layoutSettings.fixSiderbar) !== null && _layoutSettings$fixSi !== void 0 ? _layoutSettings$fixSi : fixSiderbar;
742
+ var mergedContentWidth = (_layoutSettings$conte = layoutSettings === null || layoutSettings === void 0 ? void 0 : layoutSettings.contentWidth) !== null && _layoutSettings$conte !== void 0 ? _layoutSettings$conte : contentWidth;
743
+ var mergedSplitMenus = (_layoutSettings$split = layoutSettings === null || layoutSettings === void 0 ? void 0 : layoutSettings.splitMenus) !== null && _layoutSettings$split !== void 0 ? _layoutSettings$split : splitMenus;
744
+ var mergedColorWeak = (_layoutSettings$color = layoutSettings === null || layoutSettings === void 0 ? void 0 : layoutSettings.colorWeak) !== null && _layoutSettings$color !== void 0 ? _layoutSettings$color : false;
745
+ var mergedThemeStyle = getLayoutThemeStyle(layoutSettings);
746
+ var routeContextValue = useMemo(function () {
747
+ return {
748
+ breadcrumb: breadcrumb,
749
+ collapsed: collapsed,
750
+ currentMenu: currentMenu,
751
+ title: title
752
+ };
753
+ }, [breadcrumb, collapsed, currentMenu, title]);
754
+ var topMenuData = menuData;
755
+ var sideMenuData = mergedLayout === 'mix' && mergedSplitMenus && currentMenu !== null && currentMenu !== void 0 && (_currentMenu$children = currentMenu.children) !== null && _currentMenu$children !== void 0 && _currentMenu$children.length ? currentMenu.children : menuData;
756
+ var showSideMenu = mergedLayout === 'side' || mergedLayout === 'mix';
757
+ var headerDom = /*#__PURE__*/_jsx(TopNavHeader, {
758
+ title: showSideMenu ? undefined : title,
759
+ logo: showSideMenu ? undefined : logo,
760
+ content: content,
761
+ actions: actions,
762
+ fixed: mergedFixedHeader,
763
+ navTheme: mergedNavTheme
764
+ });
765
+ var topMenuDom = renderMenuItems(topMenuData, currentMenu, menuItemRender, 'top', mergedNavTheme);
766
+ var sideMenuDom = renderMenuItems(sideMenuData, currentMenu, menuItemRender, mergedLayout === 'top' ? 'top' : 'side', mergedNavTheme);
767
+ var renderedHeader = headerRender ? headerRender(_objectSpread({
768
+ title: title,
769
+ actions: actions,
770
+ breadcrumb: breadcrumb,
771
+ collapsed: collapsed,
772
+ currentMenu: currentMenu,
773
+ contentWidth: mergedContentWidth,
774
+ fixedHeader: mergedFixedHeader,
775
+ fixSiderbar: mergedFixSiderbar,
776
+ layout: mergedLayout,
777
+ menuData: menuData,
778
+ menuFooterRender: menuFooterRender,
779
+ menuItemRender: menuItemRender,
780
+ menuRender: menuRender,
781
+ navTheme: mergedNavTheme,
782
+ siderWidth: siderWidth,
783
+ splitMenus: mergedSplitMenus,
784
+ headerRender: headerRender,
785
+ className: className,
786
+ children: children
787
+ }, rest), headerDom) : headerDom;
788
+ var renderedMenu = menuRender ? menuRender(_objectSpread({
789
+ title: title,
790
+ actions: actions,
791
+ breadcrumb: breadcrumb,
792
+ collapsed: collapsed,
793
+ currentMenu: currentMenu,
794
+ contentWidth: mergedContentWidth,
795
+ fixedHeader: mergedFixedHeader,
796
+ fixSiderbar: mergedFixSiderbar,
797
+ layout: mergedLayout,
798
+ menuData: menuData,
799
+ menuFooterRender: menuFooterRender,
800
+ menuItemRender: menuItemRender,
801
+ menuRender: menuRender,
802
+ navTheme: mergedNavTheme,
803
+ siderWidth: siderWidth,
804
+ splitMenus: mergedSplitMenus,
805
+ headerRender: headerRender,
806
+ className: className,
807
+ children: children
808
+ }, rest), mergedLayout === 'top' ? topMenuDom : sideMenuDom) : mergedLayout === 'top' ? topMenuDom : sideMenuDom;
809
+ var topMenuBar = mergedLayout === 'top' && menuData.length || mergedLayout === 'mix' && mergedSplitMenus && topMenuData.length ? /*#__PURE__*/_jsx("div", {
810
+ className: cn('border-b', mergedNavTheme === 'dark' ? 'border-slate-800 bg-slate-950/90' : 'bg-card/40 border-border'),
811
+ children: /*#__PURE__*/_jsx(GridContent, {
812
+ className: "px-6 py-3",
813
+ children: mergedLayout === 'top' ? renderedMenu : topMenuDom
814
+ })
815
+ }) : null;
816
+ return /*#__PURE__*/_jsx(RouteContext.Provider, {
817
+ value: routeContextValue,
818
+ children: /*#__PURE__*/_jsxs("div", _objectSpread(_objectSpread({
819
+ "data-pro-layout-root": "true",
820
+ className: cn(showSideMenu ? 'flex min-h-screen bg-background' : 'min-h-screen bg-background', className),
821
+ style: _objectSpread(_objectSpread({}, mergedThemeStyle || {}), mergedColorWeak ? {
822
+ filter: 'grayscale(80%)'
823
+ } : undefined)
824
+ }, rest), {}, {
825
+ children: [showSideMenu && menuData.length ? /*#__PURE__*/_jsxs("aside", {
826
+ className: cn('sticky top-0 flex h-screen shrink-0 flex-col overflow-hidden border-r bg-card'),
827
+ style: {
828
+ width: collapsed ? 84 : siderWidth,
829
+ borderRightColor: 'var(--x-sidebar-divider-color)'
830
+ },
831
+ children: [logo || title ? /*#__PURE__*/_jsxs("button", {
832
+ type: "button",
833
+ onClick: onMenuHeaderClick,
834
+ className: cn('flex min-h-16 items-center gap-3 px-4 py-2 text-left transition-colors', onMenuHeaderClick && 'hover:bg-muted/40'),
835
+ children: [logo ? typeof logo === 'string' ? /*#__PURE__*/_jsx("img", {
836
+ src: logo,
837
+ alt: title ? String(title) : 'logo',
838
+ className: "h-8 w-8 rounded-lg object-contain"
839
+ }) : /*#__PURE__*/_jsx("div", {
840
+ className: "flex h-8 w-8 items-center justify-center",
841
+ children: logo
842
+ }) : null, title ? /*#__PURE__*/_jsx("div", {
843
+ className: "min-w-0 truncate text-lg font-semibold text-foreground",
844
+ children: title
845
+ }) : null]
846
+ }) : null, /*#__PURE__*/_jsx("div", {
847
+ className: "min-h-0 flex-1 overflow-y-auto",
848
+ children: renderedMenu
849
+ }), menuFooterRender ? /*#__PURE__*/_jsx("div", {
850
+ className: "border-t border-[var(--sidebar-border)]",
851
+ children: menuFooterRender(_objectSpread({
852
+ title: title,
853
+ actions: actions,
854
+ breadcrumb: breadcrumb,
855
+ collapsed: collapsed,
856
+ currentMenu: currentMenu,
857
+ contentWidth: mergedContentWidth,
858
+ fixedHeader: mergedFixedHeader,
859
+ fixSiderbar: mergedFixSiderbar,
860
+ layout: mergedLayout,
861
+ menuData: menuData,
862
+ menuFooterRender: menuFooterRender,
863
+ menuItemRender: menuItemRender,
864
+ menuRender: menuRender,
865
+ navTheme: mergedNavTheme,
866
+ siderWidth: siderWidth,
867
+ splitMenus: mergedSplitMenus,
868
+ headerRender: headerRender,
869
+ className: className,
870
+ children: children
871
+ }, rest))
872
+ }) : null]
873
+ }) : null, /*#__PURE__*/_jsxs("div", {
874
+ className: cn('min-w-0 flex-1', showSideMenu && 'flex min-h-screen flex-col'),
875
+ children: [renderedHeader, topMenuBar, /*#__PURE__*/_jsxs("div", {
876
+ className: cn(showSideMenu ? 'min-w-0 flex-1 bg-[var(--backgroundSecondary)]' : 'bg-[var(--backgroundSecondary)]'),
877
+ "data-pro-layout-content": "true",
878
+ style: {
879
+ padding: "var(--x-pro-layout-content-padding, ".concat(LAYOUT_SECTION_SPACE, ")")
880
+ },
881
+ children: [mergedLayout === 'mix' && menuData.length ? /*#__PURE__*/_jsx("div", {
882
+ className: "mb-4 rounded-2xl border border-border bg-card px-4 py-3",
883
+ children: sideMenuDom
884
+ }) : null, showSideMenu ? children : /*#__PURE__*/_jsx(GridContent, {
885
+ children: children
886
+ })]
887
+ })]
888
+ })]
889
+ }))
890
+ });
891
+ };
892
+ export default ProLayout;