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