@admin-layout/tailwind-design-pro 12.2.4-alpha.1 → 12.2.4-alpha.101
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +80 -0
- package/lib/components/LanguageMenu/LanguageMenu.d.ts.map +1 -1
- package/lib/components/LanguageMenu/LanguageMenu.js +6 -2
- package/lib/components/LanguageMenu/LanguageMenu.js.map +1 -1
- package/lib/components/Layout/BasicLayout/index.d.ts +19 -0
- package/lib/components/Layout/BasicLayout/index.d.ts.map +1 -1
- package/lib/components/Layout/BasicLayout/index.js +63 -14
- package/lib/components/Layout/BasicLayout/index.js.map +1 -1
- package/lib/components/Layout/BasicLayout/utils.js +1 -1
- package/lib/components/Layout/BasicLayout/utils.js.map +1 -1
- package/lib/components/Layout/GlobalFooter/BottomMenuDropdown.js +1 -1
- package/lib/components/Layout/GlobalFooter/BottomMenuDropdown.js.map +1 -1
- package/lib/components/Layout/GlobalHeader/Header.d.ts.map +1 -1
- package/lib/components/Layout/GlobalHeader/Header.js +12 -4
- package/lib/components/Layout/GlobalHeader/Header.js.map +1 -1
- package/lib/components/Layout/GlobalHeader/MainHeader.d.ts.map +1 -1
- package/lib/components/Layout/GlobalHeader/MainHeader.js +2 -1
- package/lib/components/Layout/GlobalHeader/MainHeader.js.map +1 -1
- package/lib/components/Layout/GlobalHeader/NavbarSlotStrip.d.ts +12 -0
- package/lib/components/Layout/GlobalHeader/NavbarSlotStrip.d.ts.map +1 -0
- package/lib/components/Layout/GlobalHeader/NavbarSlotStrip.js +36 -0
- package/lib/components/Layout/GlobalHeader/NavbarSlotStrip.js.map +1 -0
- package/lib/components/Layout/GlobalHeader/RightContent.d.ts +1 -2
- package/lib/components/Layout/GlobalHeader/RightContent.d.ts.map +1 -1
- package/lib/components/Layout/GlobalHeader/RightContent.js +10 -72
- package/lib/components/Layout/GlobalHeader/RightContent.js.map +1 -1
- package/lib/components/Layout/GlobalHeader/RightMenu.d.ts.map +1 -1
- package/lib/components/Layout/GlobalHeader/RightMenu.js +16 -80
- package/lib/components/Layout/GlobalHeader/RightMenu.js.map +1 -1
- package/lib/components/Layout/GlobalHeader/SearchBar.d.ts +43 -0
- package/lib/components/Layout/GlobalHeader/SearchBar.d.ts.map +1 -1
- package/lib/components/Layout/GlobalHeader/SearchBar.js +380 -43
- package/lib/components/Layout/GlobalHeader/SearchBar.js.map +1 -1
- package/lib/components/Layout/GlobalHeader/index.d.ts +1 -0
- package/lib/components/Layout/GlobalHeader/index.d.ts.map +1 -1
- package/lib/components/Layout/ProTailwindLayout.d.ts +20 -8
- package/lib/components/Layout/ProTailwindLayout.d.ts.map +1 -1
- package/lib/components/Layout/ProTailwindLayout.js +255 -88
- package/lib/components/Layout/ProTailwindLayout.js.map +1 -1
- package/lib/components/Layout/Sidebar/BottomMenu.d.ts.map +1 -1
- package/lib/components/Layout/Sidebar/BottomMenu.js +55 -82
- package/lib/components/Layout/Sidebar/BottomMenu.js.map +1 -1
- package/lib/components/Layout/Sidebar/DynamicIcon.d.ts.map +1 -1
- package/lib/components/Layout/Sidebar/DynamicIcon.js +80 -19
- package/lib/components/Layout/Sidebar/DynamicIcon.js.map +1 -1
- package/lib/components/Layout/Sidebar/MainSidebar.d.ts.map +1 -1
- package/lib/components/Layout/Sidebar/MainSidebar.js +31 -26
- package/lib/components/Layout/Sidebar/MainSidebar.js.map +1 -1
- package/lib/components/Layout/Sidebar/MainSidebarMenu.d.ts.map +1 -1
- package/lib/components/Layout/Sidebar/MainSidebarMenu.js +228 -51
- package/lib/components/Layout/Sidebar/MainSidebarMenu.js.map +1 -1
- package/lib/components/Layout/Sidebar/MenuDynamicDialog.d.ts +12 -0
- package/lib/components/Layout/Sidebar/MenuDynamicDialog.d.ts.map +1 -0
- package/lib/components/Layout/Sidebar/MenuDynamicDialog.js +79 -0
- package/lib/components/Layout/Sidebar/MenuDynamicDialog.js.map +1 -0
- package/lib/components/Layout/Sidebar/PerplexSidebar.d.ts.map +1 -1
- package/lib/components/Layout/Sidebar/PerplexSidebar.js +45 -36
- package/lib/components/Layout/Sidebar/PerplexSidebar.js.map +1 -1
- package/lib/components/Layout/Sidebar/PerplexSidebarFlyoutContext.d.ts +25 -0
- package/lib/components/Layout/Sidebar/PerplexSidebarFlyoutContext.d.ts.map +1 -0
- package/lib/components/Layout/Sidebar/PerplexSidebarFlyoutContext.js +287 -0
- package/lib/components/Layout/Sidebar/PerplexSidebarFlyoutContext.js.map +1 -0
- package/lib/components/Layout/Sidebar/PerplexSidebarMenu.d.ts.map +1 -1
- package/lib/components/Layout/Sidebar/PerplexSidebarMenu.js +322 -45
- package/lib/components/Layout/Sidebar/PerplexSidebarMenu.js.map +1 -1
- package/lib/components/Layout/Sidebar/SidebarRailFX.d.ts +23 -0
- package/lib/components/Layout/Sidebar/SidebarRailFX.d.ts.map +1 -0
- package/lib/components/Layout/Sidebar/SidebarRailFX.js +229 -0
- package/lib/components/Layout/Sidebar/SidebarRailFX.js.map +1 -0
- package/lib/components/Layout/SidebarControlsContext.d.ts +17 -0
- package/lib/components/Layout/SidebarControlsContext.d.ts.map +1 -0
- package/lib/components/Layout/SidebarControlsContext.js +21 -0
- package/lib/components/Layout/SidebarControlsContext.js.map +1 -0
- package/lib/components/Layout/TailwindLayout.d.ts.map +1 -1
- package/lib/components/Layout/TailwindLayout.js +22 -3
- package/lib/components/Layout/TailwindLayout.js.map +1 -1
- package/lib/components/Layout/defaultPermissions.d.ts +134 -0
- package/lib/components/Layout/defaultPermissions.d.ts.map +1 -0
- package/lib/components/Layout/defaultPermissions.js +134 -0
- package/lib/components/Layout/defaultPermissions.js.map +1 -0
- package/lib/components/Layout/getPageTitle.js +2 -2
- package/lib/components/Layout/getPageTitle.js.map +1 -1
- package/lib/components/Layout/slot-fill/RightContent.d.ts +3 -1
- package/lib/components/Layout/slot-fill/RightContent.d.ts.map +1 -1
- package/lib/components/Layout/slot-fill/RightContent.js +4 -6
- package/lib/components/Layout/slot-fill/RightContent.js.map +1 -1
- package/lib/components/SettingDrawer/SettingDrawer.d.ts.map +1 -1
- package/lib/components/SettingDrawer/SettingDrawer.js +21 -18
- package/lib/components/SettingDrawer/SettingDrawer.js.map +1 -1
- package/lib/components/SettingDrawer/components/ApplyToAllRoutesToggle.d.ts.map +1 -1
- package/lib/components/SettingDrawer/components/ApplyToAllRoutesToggle.js +8 -14
- package/lib/components/SettingDrawer/components/ApplyToAllRoutesToggle.js.map +1 -1
- package/lib/components/SettingDrawer/components/CheckBoxTheme.js +2 -2
- package/lib/components/SettingDrawer/components/CheckBoxTheme.js.map +1 -1
- package/lib/components/SettingDrawer/components/DeviceTabs.js +2 -2
- package/lib/components/SettingDrawer/components/DeviceTabs.js.map +1 -1
- package/lib/components/SettingDrawer/components/InvitationSettings.d.ts.map +1 -1
- package/lib/components/SettingDrawer/components/InvitationSettings.js +7 -3
- package/lib/components/SettingDrawer/components/InvitationSettings.js.map +1 -1
- package/lib/components/SettingDrawer/components/LayoutChange.d.ts.map +1 -1
- package/lib/components/SettingDrawer/components/LayoutChange.js +8 -11
- package/lib/components/SettingDrawer/components/LayoutChange.js.map +1 -1
- package/lib/components/SettingDrawer/components/MenuVisibilitySettings.js +5 -5
- package/lib/components/SettingDrawer/components/MenuVisibilitySettings.js.map +1 -1
- package/lib/components/SettingDrawer/components/NavigationsModes.js +3 -3
- package/lib/components/SettingDrawer/components/NavigationsModes.js.map +1 -1
- package/lib/components/SettingDrawer/components/RegionalSettings.d.ts.map +1 -1
- package/lib/components/SettingDrawer/components/RegionalSettings.js +40 -97
- package/lib/components/SettingDrawer/components/RegionalSettings.js.map +1 -1
- package/lib/components/SettingDrawer/components/SettingsActions.d.ts.map +1 -1
- package/lib/components/SettingDrawer/components/SettingsActions.js +27 -25
- package/lib/components/SettingDrawer/components/SettingsActions.js.map +1 -1
- package/lib/components/SettingDrawer/components/SettingsDrawerHeader.d.ts.map +1 -1
- package/lib/components/SettingDrawer/components/SettingsDrawerHeader.js +4 -3
- package/lib/components/SettingDrawer/components/SettingsDrawerHeader.js.map +1 -1
- package/lib/components/SettingDrawer/components/Switch.js +2 -2
- package/lib/components/SettingDrawer/components/ThemeColor.js +1 -1
- package/lib/components/SettingDrawer/components/ThemeColor.js.map +1 -1
- package/lib/components/SettingDrawer/components/ThemeSelector.js +1 -1
- package/lib/components/SettingDrawer/components/WebFontsSelector.js +1 -1
- package/lib/components/SettingDrawer/hooks/useSettingsOperations.d.ts.map +1 -1
- package/lib/components/SettingDrawer/hooks/useSettingsOperations.js +13 -9
- package/lib/components/SettingDrawer/hooks/useSettingsOperations.js.map +1 -1
- package/lib/components/SettingDrawer/utils/constants.d.ts.map +1 -1
- package/lib/components/SettingDrawer/utils/constants.js +3 -0
- package/lib/components/SettingDrawer/utils/constants.js.map +1 -1
- package/lib/components/SettingDrawer/utils/helper.js +1 -1
- package/lib/components/SettingDrawer/utils/transformers.d.ts +16 -0
- package/lib/components/SettingDrawer/utils/transformers.d.ts.map +1 -1
- package/lib/components/SettingDrawer/utils/transformers.js +39 -2
- package/lib/components/SettingDrawer/utils/transformers.js.map +1 -1
- package/lib/components/SettingsThemeApplier/SettingsThemeApplier.d.ts +10 -0
- package/lib/components/SettingsThemeApplier/SettingsThemeApplier.d.ts.map +1 -0
- package/lib/components/SettingsThemeApplier/SettingsThemeApplier.js +23 -0
- package/lib/components/SettingsThemeApplier/SettingsThemeApplier.js.map +1 -0
- package/lib/components/SettingsThemeApplier/index.d.ts +2 -0
- package/lib/components/SettingsThemeApplier/index.d.ts.map +1 -0
- package/lib/components/index.js +1 -1
- package/lib/components/typings.d.ts +29 -0
- package/lib/components/typings.d.ts.map +1 -1
- package/lib/compute.js +2 -1
- package/lib/compute.js.map +1 -1
- package/lib/helpers/DynamicIcon.js +7 -1
- package/lib/helpers/DynamicIcon.js.map +1 -1
- package/lib/hooks/index.d.ts +1 -0
- package/lib/hooks/index.d.ts.map +1 -1
- package/lib/index.d.ts +3 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/routes.json +6 -1
- package/lib/styles/index.css +321 -0
- package/lib/utils/settingsTheme.d.ts +40 -0
- package/lib/utils/settingsTheme.d.ts.map +1 -0
- package/lib/utils/settingsTheme.js +106 -0
- package/lib/utils/settingsTheme.js.map +1 -0
- package/package.json +9 -7
|
@@ -1,53 +1,347 @@
|
|
|
1
|
-
import React__default,{useRef,useState,useEffect}from'react';import {useDispatch,useSelector}from'react-redux';import {useNavigate}from'@remix-run/react';import {icons}from'../../../icons.js';import {setSearchQuery
|
|
1
|
+
import React__default,{useRef,useState,useEffect}from'react';import {useDispatch,useSelector}from'react-redux';import {useNavigate}from'@remix-run/react';import {icons}from'../../../icons.js';import {setSearchQuery}from'../../../redux/searchReducer.js';const {
|
|
2
2
|
SearchIcon
|
|
3
3
|
} = icons;
|
|
4
|
+
function getTextValue(value) {
|
|
5
|
+
return typeof value === 'string' ? value.trim() : '';
|
|
6
|
+
}
|
|
7
|
+
function humanizeMenuKey(value) {
|
|
8
|
+
if (!value) return '';
|
|
9
|
+
let text = value.replace(/^menu\./i, '');
|
|
10
|
+
// Normalize separators
|
|
11
|
+
text = text.replace(/[-_.]/g, ' ');
|
|
12
|
+
// Split camelCase / PascalCase boundaries
|
|
13
|
+
text = text.replace(/([a-z0-9])([A-Z])/g, '$1 $2').replace(/([A-Z])([A-Z][a-z])/g, '$1 $2');
|
|
14
|
+
const tokens = text.split(/\s+/).map(token => token.trim()).filter(Boolean).filter(token => !/^menu$/i.test(token));
|
|
15
|
+
if (!tokens.length) {
|
|
16
|
+
tokens.push(value);
|
|
17
|
+
}
|
|
18
|
+
return tokens.map(token => token.charAt(0).toUpperCase() + token.slice(1).toLowerCase()).join(' ');
|
|
19
|
+
}
|
|
20
|
+
function getOrgNameFromPath() {
|
|
21
|
+
if (typeof window === 'undefined') return '';
|
|
22
|
+
const currentPath = window.location.pathname;
|
|
23
|
+
const orgNameMatch = currentPath.match(/\/o\/([^/]+)/);
|
|
24
|
+
return orgNameMatch ? orgNameMatch[1] : '';
|
|
25
|
+
}
|
|
26
|
+
function resolveDynamicUrl(url) {
|
|
27
|
+
if (!url || typeof url !== 'string') return url;
|
|
28
|
+
const orgName = getOrgNameFromPath();
|
|
29
|
+
if (orgName) {
|
|
30
|
+
url = url.replace(/:orgName/g, orgName);
|
|
31
|
+
}
|
|
32
|
+
return url;
|
|
33
|
+
}
|
|
34
|
+
function toSearchResult(item, fallbackId) {
|
|
35
|
+
if (!item || typeof item !== 'object') {
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
const rawName = getTextValue(item.title) || getTextValue(item.label) || getTextValue(item.locale) || getTextValue(item.name) || getTextValue(item.key) || getTextValue(item.path);
|
|
39
|
+
const title = rawName ? humanizeMenuKey(rawName) : '';
|
|
40
|
+
let url = getTextValue(item.url) || getTextValue(item.path) || getTextValue(item.to) || getTextValue(item.href);
|
|
41
|
+
url = resolveDynamicUrl(url);
|
|
42
|
+
if (!title || !url) {
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
id: getTextValue(item.id) || getTextValue(item.key) || fallbackId,
|
|
47
|
+
title,
|
|
48
|
+
description: getTextValue(item.description) || getTextValue(item.subtitle) || '',
|
|
49
|
+
url
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
function flattenNavigationItems(items, prefix = 'nav') {
|
|
53
|
+
if (!Array.isArray(items) || items.length === 0) {
|
|
54
|
+
return [];
|
|
55
|
+
}
|
|
56
|
+
const results = [];
|
|
57
|
+
function walk(nodes, parentPath) {
|
|
58
|
+
nodes.forEach((node, index) => {
|
|
59
|
+
const nodePath = `${parentPath}-${index}`;
|
|
60
|
+
const searchResult = toSearchResult(node, nodePath);
|
|
61
|
+
if (searchResult) {
|
|
62
|
+
results.push(searchResult);
|
|
63
|
+
}
|
|
64
|
+
const children = Array.isArray(node?.children) && node.children || Array.isArray(node?.routes) && node.routes || Array.isArray(node?.items) && node.items || [];
|
|
65
|
+
if (children.length > 0) {
|
|
66
|
+
walk(children, nodePath);
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
walk(items, prefix);
|
|
71
|
+
return results;
|
|
72
|
+
}
|
|
73
|
+
function getSearchableLinksFromDom() {
|
|
74
|
+
if (typeof document === 'undefined') {
|
|
75
|
+
return [];
|
|
76
|
+
}
|
|
77
|
+
const anchors = Array.from(document.querySelectorAll('aside a[href], nav a[href], [role="menu"] a[href], [data-menu] a[href], [data-testid="sidebar"] a[href]'));
|
|
78
|
+
return anchors.map((anchor, index) => {
|
|
79
|
+
const title = getTextValue(anchor.textContent);
|
|
80
|
+
const url = getTextValue(anchor.getAttribute('href'));
|
|
81
|
+
if (!title || !url || url.startsWith('#')) {
|
|
82
|
+
return null;
|
|
83
|
+
}
|
|
84
|
+
return {
|
|
85
|
+
id: `dom-${index}`,
|
|
86
|
+
title,
|
|
87
|
+
url,
|
|
88
|
+
type: 'Page'
|
|
89
|
+
};
|
|
90
|
+
}).filter(result => !!result);
|
|
91
|
+
}
|
|
92
|
+
function dedupeResults(results) {
|
|
93
|
+
const seen = new Set();
|
|
94
|
+
return results.filter(result => {
|
|
95
|
+
const title = (result.title || '').trim();
|
|
96
|
+
// Drop junk entries whose title is missing or a literal 'undefined'/'null'
|
|
97
|
+
// (e.g. a nav item with no label whose key humanizes to "Undefined").
|
|
98
|
+
if (!title || /^(undefined|null)$/i.test(title)) {
|
|
99
|
+
return false;
|
|
100
|
+
}
|
|
101
|
+
const key = `${title.toLowerCase()}::${(result.url || '').toLowerCase()}`;
|
|
102
|
+
if (seen.has(key)) {
|
|
103
|
+
return false;
|
|
104
|
+
}
|
|
105
|
+
seen.add(key);
|
|
106
|
+
return true;
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
function getRankedResults(results, query) {
|
|
110
|
+
const normalizedQuery = query.trim().toLowerCase();
|
|
111
|
+
if (!normalizedQuery) {
|
|
112
|
+
return [];
|
|
113
|
+
}
|
|
114
|
+
return results.map(result => {
|
|
115
|
+
const title = (result.title || '').toLowerCase();
|
|
116
|
+
const description = (result.description || '').toLowerCase();
|
|
117
|
+
const url = (result.url || '').toLowerCase();
|
|
118
|
+
let score = 0;
|
|
119
|
+
if (title.startsWith(normalizedQuery)) score += 5;
|
|
120
|
+
if (title.includes(normalizedQuery)) score += 3;
|
|
121
|
+
if (description.includes(normalizedQuery)) score += 2;
|
|
122
|
+
if (url.includes(normalizedQuery)) score += 1;
|
|
123
|
+
return {
|
|
124
|
+
result,
|
|
125
|
+
score
|
|
126
|
+
};
|
|
127
|
+
}).filter(entry => entry.score > 0).sort((a, b) => b.score - a.score || a.result.title.localeCompare(b.result.title)).slice(0, 12).map(entry => entry.result);
|
|
128
|
+
}
|
|
129
|
+
function normalizeScopeUrl(url) {
|
|
130
|
+
if (!url || typeof url !== 'string') return '';
|
|
131
|
+
let normalized = url.split(/[?#]/)[0].toLowerCase();
|
|
132
|
+
if (normalized.length > 1 && normalized.endsWith('/')) {
|
|
133
|
+
normalized = normalized.slice(0, -1);
|
|
134
|
+
}
|
|
135
|
+
return normalized;
|
|
136
|
+
}
|
|
137
|
+
/** Whether `resultUrl` is a sub-page of `pageUrl` (strictly below it). */
|
|
138
|
+
function isWithinPage(resultUrl, pageUrl) {
|
|
139
|
+
const result = normalizeScopeUrl(resultUrl);
|
|
140
|
+
const page = normalizeScopeUrl(pageUrl);
|
|
141
|
+
return !!result && !!page && result !== page && result.startsWith(`${page}/`);
|
|
142
|
+
}
|
|
4
143
|
const SearchBar = ({
|
|
5
144
|
className = '',
|
|
6
145
|
placeholder = 'Search',
|
|
7
|
-
style
|
|
146
|
+
style,
|
|
147
|
+
navigationItems,
|
|
148
|
+
showMetadata = false,
|
|
149
|
+
searchModules,
|
|
150
|
+
moduleSearch
|
|
8
151
|
}) => {
|
|
9
152
|
const dispatch = useDispatch();
|
|
10
153
|
const navigate = useNavigate();
|
|
11
154
|
const searchRef = useRef(null);
|
|
155
|
+
const inputRef = useRef(null);
|
|
156
|
+
const debounceRef = useRef(null);
|
|
157
|
+
const reqIdRef = useRef(0);
|
|
12
158
|
const [isOpen, setIsOpen] = useState(false);
|
|
159
|
+
const [dismissed, setDismissed] = useState(false);
|
|
13
160
|
const [selectedIndex, setSelectedIndex] = useState(-1);
|
|
14
161
|
const {
|
|
15
162
|
searchQuery,
|
|
16
|
-
searchResults,
|
|
17
163
|
isSearching
|
|
18
164
|
} = useSelector(state => state.search);
|
|
165
|
+
const [localResults, setLocalResults] = useState([]);
|
|
166
|
+
// Active scope (null = menu/nav search). When set, typing searches within
|
|
167
|
+
// the scoped page/module; Backspace on empty input clears it.
|
|
168
|
+
const [scope, setScope] = useState(null);
|
|
169
|
+
const [remoteResults, setRemoteResults] = useState([]);
|
|
170
|
+
const [remoteLoading, setRemoteLoading] = useState(false);
|
|
171
|
+
const searchIndex = React__default.useMemo(() => {
|
|
172
|
+
const menuDataResults = flattenNavigationItems(navigationItems, 'menu');
|
|
173
|
+
const routeConfigResults = typeof window !== 'undefined' ? flattenNavigationItems(window.__ROUTES_CONFIG__, 'routes-config') : [];
|
|
174
|
+
const domResults = getSearchableLinksFromDom();
|
|
175
|
+
return dedupeResults([...menuDataResults, ...routeConfigResults, ...domResults]);
|
|
176
|
+
}, [navigationItems]);
|
|
177
|
+
// All indexed pages that live under `pageUrl` (the page's section).
|
|
178
|
+
const pageResultsFor = React__default.useCallback(pageUrl => searchIndex.filter(entry => isWithinPage(entry.url, pageUrl)), [searchIndex]);
|
|
179
|
+
// The scope a nav result can be narrowed into, or null. A host-wired data
|
|
180
|
+
// module wins; otherwise any page with sub-pages is scopeable locally.
|
|
181
|
+
const scopeableFor = React__default.useCallback(result => {
|
|
182
|
+
if (!result) return null;
|
|
183
|
+
if (moduleSearch && searchModules?.length) {
|
|
184
|
+
const url = typeof result.url === 'string' ? result.url.toLowerCase() : '';
|
|
185
|
+
const mod = searchModules.find(m => m.match ? m.match(result) : m.routeIncludes ? url.includes(m.routeIncludes.toLowerCase()) : false);
|
|
186
|
+
if (mod) return {
|
|
187
|
+
label: mod.label,
|
|
188
|
+
module: mod
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
const pageUrl = typeof result.url === 'string' ? result.url : '';
|
|
192
|
+
if (pageUrl && pageResultsFor(pageUrl).length > 0) {
|
|
193
|
+
return {
|
|
194
|
+
label: result.title,
|
|
195
|
+
pageUrl
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
return null;
|
|
199
|
+
}, [moduleSearch, searchModules, pageResultsFor]);
|
|
200
|
+
const runModuleSearch = React__default.useCallback((mod, query) => {
|
|
201
|
+
if (!moduleSearch || !query.trim()) {
|
|
202
|
+
setRemoteResults([]);
|
|
203
|
+
setRemoteLoading(false);
|
|
204
|
+
return;
|
|
205
|
+
}
|
|
206
|
+
const id = ++reqIdRef.current; // guard against out-of-order responses
|
|
207
|
+
setRemoteLoading(true);
|
|
208
|
+
moduleSearch({
|
|
209
|
+
module: mod.module,
|
|
210
|
+
query
|
|
211
|
+
}).then(hits => {
|
|
212
|
+
if (id === reqIdRef.current) setRemoteResults(Array.isArray(hits) ? hits : []);
|
|
213
|
+
}).catch(() => {
|
|
214
|
+
if (id === reqIdRef.current) setRemoteResults([]);
|
|
215
|
+
}).finally(() => {
|
|
216
|
+
if (id === reqIdRef.current) setRemoteLoading(false);
|
|
217
|
+
});
|
|
218
|
+
}, [moduleSearch]);
|
|
219
|
+
const runMenuSearch = query => {
|
|
220
|
+
const matched = getRankedResults(searchIndex, query);
|
|
221
|
+
setLocalResults(matched);
|
|
222
|
+
setSelectedIndex(matched.length > 0 ? 0 : -1);
|
|
223
|
+
setIsOpen(true);
|
|
224
|
+
};
|
|
225
|
+
// Search within a scoped page's section; an empty query lists its pages.
|
|
226
|
+
const runPageSearch = React__default.useCallback((pageUrl, query) => {
|
|
227
|
+
const within = pageResultsFor(pageUrl);
|
|
228
|
+
const matched = query.trim() ? getRankedResults(within, query) : within.slice(0, 12);
|
|
229
|
+
setLocalResults(matched);
|
|
230
|
+
setSelectedIndex(matched.length > 0 ? 0 : -1);
|
|
231
|
+
}, [pageResultsFor]);
|
|
232
|
+
const enterScope = next => {
|
|
233
|
+
setScope(next);
|
|
234
|
+
dispatch(setSearchQuery(''));
|
|
235
|
+
setRemoteResults([]);
|
|
236
|
+
if (next.pageUrl) {
|
|
237
|
+
runPageSearch(next.pageUrl, '');
|
|
238
|
+
} else {
|
|
239
|
+
setLocalResults([]);
|
|
240
|
+
setSelectedIndex(-1);
|
|
241
|
+
}
|
|
242
|
+
setIsOpen(true);
|
|
243
|
+
setDismissed(false);
|
|
244
|
+
inputRef.current?.focus();
|
|
245
|
+
};
|
|
246
|
+
const exitScope = () => {
|
|
247
|
+
setScope(null);
|
|
248
|
+
setRemoteResults([]);
|
|
249
|
+
setRemoteLoading(false);
|
|
250
|
+
setSelectedIndex(-1);
|
|
251
|
+
if (searchQuery.trim()) {
|
|
252
|
+
runMenuSearch(searchQuery);
|
|
253
|
+
} else {
|
|
254
|
+
setLocalResults([]);
|
|
255
|
+
setIsOpen(false);
|
|
256
|
+
}
|
|
257
|
+
inputRef.current?.focus();
|
|
258
|
+
};
|
|
19
259
|
// Handle search input change
|
|
20
|
-
const handleSearchChange =
|
|
260
|
+
const handleSearchChange = event => {
|
|
21
261
|
const query = event.target.value;
|
|
22
262
|
dispatch(setSearchQuery(query));
|
|
263
|
+
setDismissed(false);
|
|
264
|
+
setIsOpen(true);
|
|
265
|
+
if (scope) {
|
|
266
|
+
if (debounceRef.current) clearTimeout(debounceRef.current);
|
|
267
|
+
const mod = scope.module;
|
|
268
|
+
if (mod && moduleSearch) {
|
|
269
|
+
setSelectedIndex(0);
|
|
270
|
+
if (!query.trim()) {
|
|
271
|
+
setRemoteResults([]);
|
|
272
|
+
setRemoteLoading(false);
|
|
273
|
+
return;
|
|
274
|
+
}
|
|
275
|
+
debounceRef.current = setTimeout(() => runModuleSearch(mod, query), 250);
|
|
276
|
+
} else if (scope.pageUrl) {
|
|
277
|
+
runPageSearch(scope.pageUrl, query);
|
|
278
|
+
}
|
|
279
|
+
return;
|
|
280
|
+
}
|
|
23
281
|
if (!query.trim()) {
|
|
24
|
-
|
|
282
|
+
setLocalResults([]);
|
|
283
|
+
setSelectedIndex(-1);
|
|
284
|
+
setIsOpen(false);
|
|
285
|
+
return;
|
|
25
286
|
}
|
|
287
|
+
runMenuSearch(query);
|
|
288
|
+
};
|
|
289
|
+
const closeDropdown = () => {
|
|
290
|
+
setIsOpen(false);
|
|
291
|
+
setDismissed(true);
|
|
292
|
+
};
|
|
293
|
+
const navigateToSearchResult = result => {
|
|
294
|
+
const targetUrl = result?.url;
|
|
295
|
+
if (targetUrl) navigate(targetUrl);
|
|
296
|
+
closeDropdown();
|
|
297
|
+
};
|
|
298
|
+
const navigateToUrl = url => {
|
|
299
|
+
if (url) navigate(url);
|
|
300
|
+
closeDropdown();
|
|
26
301
|
};
|
|
27
302
|
// Handle keyboard navigation
|
|
303
|
+
const isModuleScope = !!scope?.module;
|
|
304
|
+
const activeCount = isModuleScope ? remoteResults.length : localResults.length;
|
|
28
305
|
const handleKeyDown = event => {
|
|
29
306
|
switch (event.key) {
|
|
30
307
|
case 'ArrowDown':
|
|
31
308
|
event.preventDefault();
|
|
32
|
-
setSelectedIndex(prev => prev <
|
|
309
|
+
setSelectedIndex(prev => prev < activeCount - 1 ? prev + 1 : prev);
|
|
33
310
|
break;
|
|
34
311
|
case 'ArrowUp':
|
|
35
312
|
event.preventDefault();
|
|
36
|
-
setSelectedIndex(prev => prev >
|
|
313
|
+
setSelectedIndex(prev => prev > 0 ? prev - 1 : 0);
|
|
314
|
+
break;
|
|
315
|
+
case 'Tab':
|
|
316
|
+
{
|
|
317
|
+
// Scope into the highlighted menu result's module (if any).
|
|
318
|
+
if (!scope && selectedIndex >= 0) {
|
|
319
|
+
const mod = scopeableFor(localResults[selectedIndex]);
|
|
320
|
+
if (mod) {
|
|
321
|
+
event.preventDefault();
|
|
322
|
+
enterScope(mod);
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
break;
|
|
326
|
+
}
|
|
327
|
+
case 'Backspace':
|
|
328
|
+
// Empty input + active scope → clear the scope (back to menu search).
|
|
329
|
+
if (scope && searchQuery.length === 0) {
|
|
330
|
+
event.preventDefault();
|
|
331
|
+
exitScope();
|
|
332
|
+
}
|
|
37
333
|
break;
|
|
38
334
|
case 'Enter':
|
|
39
335
|
event.preventDefault();
|
|
40
|
-
if (selectedIndex
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
console.log('Search result selected:', result.title);
|
|
44
|
-
}
|
|
45
|
-
setIsOpen(false);
|
|
336
|
+
if (selectedIndex < 0 || activeCount === 0) {
|
|
337
|
+
closeDropdown();
|
|
338
|
+
break;
|
|
46
339
|
}
|
|
340
|
+
if (isModuleScope) navigateToUrl(remoteResults[selectedIndex]?.url);else navigateToSearchResult(localResults[selectedIndex]);
|
|
47
341
|
break;
|
|
48
342
|
case 'Escape':
|
|
49
343
|
event.preventDefault();
|
|
50
|
-
|
|
344
|
+
closeDropdown();
|
|
51
345
|
break;
|
|
52
346
|
}
|
|
53
347
|
};
|
|
@@ -56,6 +350,7 @@ const SearchBar = ({
|
|
|
56
350
|
const handleClickOutside = event => {
|
|
57
351
|
if (searchRef.current && !searchRef.current.contains(event.target)) {
|
|
58
352
|
setIsOpen(false);
|
|
353
|
+
setDismissed(true);
|
|
59
354
|
}
|
|
60
355
|
};
|
|
61
356
|
document.addEventListener('mousedown', handleClickOutside);
|
|
@@ -63,47 +358,89 @@ const SearchBar = ({
|
|
|
63
358
|
document.removeEventListener('mousedown', handleClickOutside);
|
|
64
359
|
};
|
|
65
360
|
}, []);
|
|
66
|
-
//
|
|
67
|
-
|
|
68
|
-
if (
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
};
|
|
361
|
+
// Clear any pending debounce on unmount.
|
|
362
|
+
useEffect(() => () => {
|
|
363
|
+
if (debounceRef.current) clearTimeout(debounceRef.current);
|
|
364
|
+
}, []);
|
|
365
|
+
const rowClass = index => `relative py-2 pl-3 pr-3 cursor-pointer select-none ${index === selectedIndex ? 'text-primary-foreground bg-primary' : 'text-foreground hover:bg-muted'}`;
|
|
366
|
+
const showDropdown = !dismissed && isOpen && (scope ? true : searchQuery.trim().length > 0);
|
|
73
367
|
return React__default.createElement("div", {
|
|
74
368
|
ref: searchRef,
|
|
75
369
|
className: `relative ${className}`
|
|
76
370
|
}, React__default.createElement("div", {
|
|
77
|
-
className: "
|
|
78
|
-
}, React__default.createElement("div", {
|
|
79
|
-
className: "absolute inset-y-0 flex items-center pl-2"
|
|
371
|
+
className: "flex items-center w-full pl-2 pr-2 themed-input focus-within:text-primary focus-themed"
|
|
80
372
|
}, React__default.createElement(SearchIcon, {
|
|
81
|
-
className: `w-4 h-4 ${isSearching ? 'animate-spin' : ''}`
|
|
82
|
-
})
|
|
83
|
-
className: "
|
|
373
|
+
className: `w-4 h-4 shrink-0 ${remoteLoading || isSearching ? 'animate-spin' : ''}`
|
|
374
|
+
}), scope && React__default.createElement("span", {
|
|
375
|
+
className: "ml-2 inline-flex items-center gap-1 whitespace-nowrap rounded-themed bg-muted text-muted-foreground px-2 py-0.5 text-xs font-medium"
|
|
376
|
+
}, scope.label, React__default.createElement("button", {
|
|
377
|
+
type: "button",
|
|
378
|
+
"aria-label": `Clear ${scope.label} filter`,
|
|
379
|
+
className: "leading-none opacity-70 hover:opacity-100",
|
|
380
|
+
onMouseDown: e => e.preventDefault(),
|
|
381
|
+
onClick: e => {
|
|
382
|
+
e.stopPropagation();
|
|
383
|
+
exitScope();
|
|
384
|
+
}
|
|
385
|
+
}, "\u00D7")), React__default.createElement("input", {
|
|
386
|
+
ref: inputRef,
|
|
387
|
+
className: "flex-1 min-w-0 bg-transparent border-0 py-1 pl-2 pr-1 text-sm outline-none focus:ring-0",
|
|
84
388
|
type: "text",
|
|
85
|
-
placeholder: placeholder,
|
|
389
|
+
placeholder: scope ? `Search ${scope.label}…` : placeholder,
|
|
86
390
|
"aria-label": "Search",
|
|
87
391
|
value: searchQuery,
|
|
88
392
|
onChange: handleSearchChange,
|
|
89
393
|
onKeyDown: handleKeyDown,
|
|
90
|
-
onFocus: () =>
|
|
394
|
+
onFocus: () => {
|
|
395
|
+
setIsOpen(true);
|
|
396
|
+
setDismissed(false);
|
|
397
|
+
},
|
|
91
398
|
style: style
|
|
92
|
-
})),
|
|
93
|
-
className: "absolute z-50 w-full mt-1 themed-dropdown"
|
|
94
|
-
}, React__default.createElement("
|
|
399
|
+
})), showDropdown && React__default.createElement("div", {
|
|
400
|
+
className: "absolute z-50 w-full mt-1 themed-dropdown bg-card text-card-foreground border border-border rounded-themed shadow-themed-md"
|
|
401
|
+
}, scope?.module ? remoteLoading ? React__default.createElement("div", {
|
|
402
|
+
className: "px-3 py-2 text-sm text-muted-foreground"
|
|
403
|
+
}, "Searching ", scope.label, "\u2026") : remoteResults.length > 0 ? React__default.createElement("ul", {
|
|
95
404
|
className: "py-1 overflow-auto text-base leading-6 rounded-themed shadow-themed-sm max-h-60 focus:outline-none sm:text-sm sm:leading-5"
|
|
96
|
-
},
|
|
97
|
-
key:
|
|
98
|
-
className:
|
|
99
|
-
onClick: () =>
|
|
100
|
-
}, React__default.createElement("div", {
|
|
101
|
-
className: "flex items-center"
|
|
405
|
+
}, remoteResults.map((hit, index) => React__default.createElement("li", {
|
|
406
|
+
key: hit.id,
|
|
407
|
+
className: rowClass(index),
|
|
408
|
+
onClick: () => navigateToUrl(hit.url)
|
|
102
409
|
}, React__default.createElement("span", {
|
|
103
410
|
className: "block truncate font-medium"
|
|
104
|
-
},
|
|
105
|
-
className: "ml-2 px-2 py-0.5 text-xs rounded-themed bg-muted text-muted-foreground"
|
|
106
|
-
}, result.type)), result.description && React__default.createElement("span", {
|
|
411
|
+
}, hit.title), hit.subtitle && React__default.createElement("span", {
|
|
107
412
|
className: "block text-sm text-muted-foreground truncate"
|
|
108
|
-
},
|
|
109
|
-
|
|
413
|
+
}, hit.subtitle)))) : searchQuery.trim() ? React__default.createElement("div", {
|
|
414
|
+
className: "px-3 py-2 text-sm text-muted-foreground"
|
|
415
|
+
}, "No ", scope.label.toLowerCase(), " found") : React__default.createElement("div", {
|
|
416
|
+
className: "px-3 py-2 text-sm text-muted-foreground"
|
|
417
|
+
}, "Type to search ", scope.label, "\u2026") : localResults.length > 0 ? React__default.createElement("ul", {
|
|
418
|
+
className: "py-1 overflow-auto text-base leading-6 rounded-themed shadow-themed-sm max-h-60 focus:outline-none sm:text-sm sm:leading-5"
|
|
419
|
+
}, localResults.map((result, index) => {
|
|
420
|
+
const scopeTarget = scope ? null : scopeableFor(result);
|
|
421
|
+
return React__default.createElement("li", {
|
|
422
|
+
key: result.id,
|
|
423
|
+
className: rowClass(index),
|
|
424
|
+
onClick: () => navigateToSearchResult(result)
|
|
425
|
+
}, React__default.createElement("div", {
|
|
426
|
+
className: "flex items-center justify-between gap-2"
|
|
427
|
+
}, React__default.createElement("div", {
|
|
428
|
+
className: "min-w-0"
|
|
429
|
+
}, React__default.createElement("span", {
|
|
430
|
+
className: "block truncate font-medium"
|
|
431
|
+
}, result.title), showMetadata && result.description && React__default.createElement("span", {
|
|
432
|
+
className: "block text-sm text-muted-foreground truncate"
|
|
433
|
+
}, result.description)), scopeTarget && React__default.createElement("button", {
|
|
434
|
+
type: "button",
|
|
435
|
+
title: `Search inside ${scopeTarget.label}`,
|
|
436
|
+
className: "shrink-0 rounded-themed border border-border px-1.5 py-0.5 text-xs text-muted-foreground opacity-70 hover:opacity-100",
|
|
437
|
+
onMouseDown: e => e.preventDefault(),
|
|
438
|
+
onClick: e => {
|
|
439
|
+
e.stopPropagation();
|
|
440
|
+
enterScope(scopeTarget);
|
|
441
|
+
}
|
|
442
|
+
}, "Tab \u21B5")));
|
|
443
|
+
})) : React__default.createElement("div", {
|
|
444
|
+
className: "px-3 py-2 text-sm text-muted-foreground"
|
|
445
|
+
}, scope ? `No results in ${scope.label}` : 'No results found')));
|
|
446
|
+
};export{SearchBar};//# sourceMappingURL=SearchBar.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchBar.js","sources":["../../../../src/components/Layout/GlobalHeader/SearchBar.tsx"],"sourcesContent":[null],"names":["React"],"mappings":"6QAMA,MAAM;AAQN,EAAA;AACI,CAAA,GAAA,KAAA;AACM,MAAA,SAAW,GAAA,CAAA;AACjB,EAAA;aACO,GAAA,QAAQ;;AAEf,CAAA,KAAA;QAEA,QAAA,GAAA,WAAA,EAAA;AACA,EAAA,MAAA,sBAAwB,EAAG;AACvB,EAAA,MAAA,YAAW,MAAG,CAAK,IAAC,CAAA;AACpB,EAAA,MAAA,CAAA,MAAA,EAAS,SAAA,CAAA,GAAA,QAAqB,CAAC,KAAC,CAAA;AAChC,EAAA,MAAA,CAAA,aAAW,EAAI,gBAAK,CAAA,GAAA,QAAA,CAAA,EAAA,CAAA;AAChB,EAAA,MAAA;eACH;AACL,IAAA,aAAE;IAEF;AACA,GAAA,GAAA,WAAM,CAAA,KAAa,IAAI,KAA0B,OAAI,CAAA;AACjD;AACI,EAAA,MAAA,kBAAK,GAAW,MAAA,KAAA,IAAA;kBACZ,KAAM,CAAA,MAAA,CAAA,KAAc;2BACpB,CAAA,KAAiB,CAAC,CAAA;mBAClB,EAAA,EAAM;AACV,MAAA,QAAA,CAAA,eAAc,CAAA,EAAA,CAAA,CAAA;;;;AAId,EAAA,MAAA,aAAK,GAAO,KAAA,IAAA;iBACR,CAAA,GAAK;sBACD;AACA,QAAA,KAAA,CAAA;wBACI,CAAA,IAAA,IAAS,IAAA,GAAA,aAAA,CAAA,MAAA,GAAA,CAAA,GAAA,IAAA,GAAA,CAAA,GAAA,IAAA,CAAA;;oBAEb;4BACA,EAAU;wBACb,CAAA,IAAA,IAAA,IAAA,GAAA,EAAA,GAAA,IAAA,GAAA,CAAA,GAAA,IAAA,CAAA;;AAEL,MAAA,KAAA,OAAK;4BACK,EAAA;yBACG,IAAC,CAAA,IAAO,aAAA,CAAA,aAAA,CAAA,EAAA;gBACjB,MAAM,GAAA,aAAA,CAAA,aAAA,CAAA;UACb,IAAA,MAAA,EAAA;AACL,YAAE,OAAA,CAAA,GAAA,CAAA,yBAAA,EAAA,MAAA,CAAA,KAAA,CAAA;UAEF;UACA,SAAe,CAAA,KAAA,CAAA;AACX,QAAA;AACI,QAAA;mBACI;aACH,CAAA,cAAA,EAAA;AACL,QAAA,SAAE,CAAA,KAAA,CAAA;AAEF,QAAA;AACA;AACI,EAAA,CAAA;AACJ;WACG,CAAA,MAAA;IAEP,MAAA,kBAAsB,GAAA,KAAA,IAAA;AACtB,MAAA,IAAM,SAAA,CAAA,OAAiB,IAAI,CAAA,SAAwB,CAAA,OAAA,CAAA,QAAA,CAAA,KAAA,CAAA,MAAA,CAAA,EAAA;AAC/C,QAAA,SAAI,CAAM,KAAI,CAAE;AACZ,MAAA;;YAEJ,CAAA,gBAAiB,CAAA,WAAA,EAAA,kBAAA,CAAA;AACrB,IAAA,OAAE,MAAA;MAEF,QACI,CAAA,mBAAA,CAAA,WAAU,EAAA,kBAAoB,CAAA;;;AAGlB;AAEJ,EAAA,MAAA,iBAAA,GAAA,MAAA,IAAA;QAcH,MAAM,CAAA,GAAI,EAAA;AAEH,MAAA,QAAA,CAAA,MAAA,CAAA,GAAA,CAAA;AAMoB,IAAA;AACA,IAAA,SAAA,CAAA,KAAA,CAAA;;AAKJ,EAAA,OAAAA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA;AACC,IAAA,GAAA,EAAA,SAAA;gBAMJ,oBAAkB,CAAA;AAYnD,GAAE,EAAAA,cAAA,CAAA,aAAA,CAAA,KAAA,EAAA;AAEF,IAAA,SAAA,EAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"SearchBar.js","sources":["../../../../src/components/Layout/GlobalHeader/SearchBar.tsx"],"sourcesContent":[null],"names":["React"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/Layout/GlobalHeader/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/Layout/GlobalHeader/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC"}
|
|
@@ -1,25 +1,37 @@
|
|
|
1
1
|
import { BasicLayoutProps } from '@admin-layout/client';
|
|
2
2
|
import type { LinksFunction } from '@remix-run/node';
|
|
3
3
|
import * as React from 'react';
|
|
4
|
-
declare
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
declare global {
|
|
5
|
+
interface Window {
|
|
6
|
+
__ROUTES_CONFIG__?: Array<{
|
|
7
|
+
position?: string;
|
|
8
|
+
key: string;
|
|
9
|
+
name: string;
|
|
10
|
+
path: string;
|
|
11
|
+
priority?: number;
|
|
12
|
+
hideInMenu?: boolean;
|
|
13
|
+
icon?: string;
|
|
14
|
+
isResourceRoute?: boolean;
|
|
15
|
+
routes?: any[];
|
|
16
|
+
}>;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
8
19
|
export declare const handle: {
|
|
9
20
|
i18n: string;
|
|
10
21
|
};
|
|
11
22
|
export declare const links: LinksFunction;
|
|
12
|
-
export declare
|
|
23
|
+
export declare function loader(params: any): Promise<{
|
|
13
24
|
newMenuData: import("@common-stack/client-react").IMenuData[];
|
|
14
25
|
apolloState: any;
|
|
26
|
+
permissions: any;
|
|
27
|
+
policies: any;
|
|
15
28
|
}>;
|
|
16
|
-
export declare function clientLoader({
|
|
17
|
-
request: any;
|
|
18
|
-
params: any;
|
|
29
|
+
export declare function clientLoader({ serverLoader }: {
|
|
19
30
|
serverLoader: any;
|
|
20
31
|
}): Promise<any>;
|
|
21
32
|
export declare const shouldRevalidate: ({ currentParams, nextParams }: {
|
|
22
33
|
currentParams: any;
|
|
23
34
|
nextParams: any;
|
|
24
35
|
}) => boolean;
|
|
36
|
+
export default function ProTailwindLayout(props: BasicLayoutProps): React.JSX.Element;
|
|
25
37
|
//# sourceMappingURL=ProTailwindLayout.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProTailwindLayout.d.ts","sourceRoot":"","sources":["../../../src/components/Layout/ProTailwindLayout.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEH,gBAAgB,EAMnB,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"ProTailwindLayout.d.ts","sourceRoot":"","sources":["../../../src/components/Layout/ProTailwindLayout.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEH,gBAAgB,EAMnB,MAAM,sBAAsB,CAAC;AAM9B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGrD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAa/B,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,MAAM;QACZ,iBAAiB,CAAC,EAAE,KAAK,CAAC;YACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,GAAG,EAAE,MAAM,CAAC;YACZ,IAAI,EAAE,MAAM,CAAC;YACb,IAAI,EAAE,MAAM,CAAC;YACb,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,UAAU,CAAC,EAAE,OAAO,CAAC;YACrB,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,eAAe,CAAC,EAAE,OAAO,CAAC;YAC1B,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC;SAClB,CAAC,CAAC;KACN;CACJ;AASD,eAAO,MAAM,MAAM;;CAElB,CAAC;AACF,eAAO,MAAM,KAAK,EAAE,aAA+D,CAAC;AAkEpF,wBAAsB,MAAM,CAAC,MAAM,KAAA;;;;;GAmClC;AACD,wBAAsB,YAAY,CAAC,EAAE,YAAY,EAAE;;CAAA,gBA6MlD;AAQD,eAAO,MAAM,gBAAgB,GAAI;;;CAA6B,YAE7D,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,qBA8DhE"}
|