@admin-layout/tailwind-design-pro 12.2.4-alpha.1 → 12.2.4-alpha.100

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 (157) hide show
  1. package/README.md +80 -0
  2. package/lib/components/LanguageMenu/LanguageMenu.d.ts.map +1 -1
  3. package/lib/components/LanguageMenu/LanguageMenu.js +6 -2
  4. package/lib/components/LanguageMenu/LanguageMenu.js.map +1 -1
  5. package/lib/components/Layout/BasicLayout/index.d.ts +19 -0
  6. package/lib/components/Layout/BasicLayout/index.d.ts.map +1 -1
  7. package/lib/components/Layout/BasicLayout/index.js +63 -14
  8. package/lib/components/Layout/BasicLayout/index.js.map +1 -1
  9. package/lib/components/Layout/BasicLayout/utils.js +1 -1
  10. package/lib/components/Layout/BasicLayout/utils.js.map +1 -1
  11. package/lib/components/Layout/GlobalFooter/BottomMenuDropdown.js +1 -1
  12. package/lib/components/Layout/GlobalFooter/BottomMenuDropdown.js.map +1 -1
  13. package/lib/components/Layout/GlobalHeader/Header.d.ts.map +1 -1
  14. package/lib/components/Layout/GlobalHeader/Header.js +12 -4
  15. package/lib/components/Layout/GlobalHeader/Header.js.map +1 -1
  16. package/lib/components/Layout/GlobalHeader/MainHeader.d.ts.map +1 -1
  17. package/lib/components/Layout/GlobalHeader/MainHeader.js +2 -1
  18. package/lib/components/Layout/GlobalHeader/MainHeader.js.map +1 -1
  19. package/lib/components/Layout/GlobalHeader/NavbarSlotStrip.d.ts +12 -0
  20. package/lib/components/Layout/GlobalHeader/NavbarSlotStrip.d.ts.map +1 -0
  21. package/lib/components/Layout/GlobalHeader/NavbarSlotStrip.js +36 -0
  22. package/lib/components/Layout/GlobalHeader/NavbarSlotStrip.js.map +1 -0
  23. package/lib/components/Layout/GlobalHeader/RightContent.d.ts +1 -2
  24. package/lib/components/Layout/GlobalHeader/RightContent.d.ts.map +1 -1
  25. package/lib/components/Layout/GlobalHeader/RightContent.js +10 -72
  26. package/lib/components/Layout/GlobalHeader/RightContent.js.map +1 -1
  27. package/lib/components/Layout/GlobalHeader/RightMenu.d.ts.map +1 -1
  28. package/lib/components/Layout/GlobalHeader/RightMenu.js +16 -80
  29. package/lib/components/Layout/GlobalHeader/RightMenu.js.map +1 -1
  30. package/lib/components/Layout/GlobalHeader/SearchBar.d.ts +43 -0
  31. package/lib/components/Layout/GlobalHeader/SearchBar.d.ts.map +1 -1
  32. package/lib/components/Layout/GlobalHeader/SearchBar.js +380 -43
  33. package/lib/components/Layout/GlobalHeader/SearchBar.js.map +1 -1
  34. package/lib/components/Layout/GlobalHeader/index.d.ts +1 -0
  35. package/lib/components/Layout/GlobalHeader/index.d.ts.map +1 -1
  36. package/lib/components/Layout/ProTailwindLayout.d.ts +20 -8
  37. package/lib/components/Layout/ProTailwindLayout.d.ts.map +1 -1
  38. package/lib/components/Layout/ProTailwindLayout.js +255 -88
  39. package/lib/components/Layout/ProTailwindLayout.js.map +1 -1
  40. package/lib/components/Layout/Sidebar/BottomMenu.d.ts.map +1 -1
  41. package/lib/components/Layout/Sidebar/BottomMenu.js +55 -82
  42. package/lib/components/Layout/Sidebar/BottomMenu.js.map +1 -1
  43. package/lib/components/Layout/Sidebar/DynamicIcon.d.ts.map +1 -1
  44. package/lib/components/Layout/Sidebar/DynamicIcon.js +80 -19
  45. package/lib/components/Layout/Sidebar/DynamicIcon.js.map +1 -1
  46. package/lib/components/Layout/Sidebar/MainSidebar.d.ts.map +1 -1
  47. package/lib/components/Layout/Sidebar/MainSidebar.js +29 -24
  48. package/lib/components/Layout/Sidebar/MainSidebar.js.map +1 -1
  49. package/lib/components/Layout/Sidebar/MainSidebarMenu.d.ts.map +1 -1
  50. package/lib/components/Layout/Sidebar/MainSidebarMenu.js +213 -36
  51. package/lib/components/Layout/Sidebar/MainSidebarMenu.js.map +1 -1
  52. package/lib/components/Layout/Sidebar/MenuDynamicDialog.d.ts +12 -0
  53. package/lib/components/Layout/Sidebar/MenuDynamicDialog.d.ts.map +1 -0
  54. package/lib/components/Layout/Sidebar/MenuDynamicDialog.js +79 -0
  55. package/lib/components/Layout/Sidebar/MenuDynamicDialog.js.map +1 -0
  56. package/lib/components/Layout/Sidebar/PerplexSidebar.d.ts.map +1 -1
  57. package/lib/components/Layout/Sidebar/PerplexSidebar.js +42 -33
  58. package/lib/components/Layout/Sidebar/PerplexSidebar.js.map +1 -1
  59. package/lib/components/Layout/Sidebar/PerplexSidebarFlyoutContext.d.ts +25 -0
  60. package/lib/components/Layout/Sidebar/PerplexSidebarFlyoutContext.d.ts.map +1 -0
  61. package/lib/components/Layout/Sidebar/PerplexSidebarFlyoutContext.js +287 -0
  62. package/lib/components/Layout/Sidebar/PerplexSidebarFlyoutContext.js.map +1 -0
  63. package/lib/components/Layout/Sidebar/PerplexSidebarMenu.d.ts.map +1 -1
  64. package/lib/components/Layout/Sidebar/PerplexSidebarMenu.js +321 -43
  65. package/lib/components/Layout/Sidebar/PerplexSidebarMenu.js.map +1 -1
  66. package/lib/components/Layout/Sidebar/SidebarRailFX.d.ts +23 -0
  67. package/lib/components/Layout/Sidebar/SidebarRailFX.d.ts.map +1 -0
  68. package/lib/components/Layout/Sidebar/SidebarRailFX.js +229 -0
  69. package/lib/components/Layout/Sidebar/SidebarRailFX.js.map +1 -0
  70. package/lib/components/Layout/SidebarControlsContext.d.ts +17 -0
  71. package/lib/components/Layout/SidebarControlsContext.d.ts.map +1 -0
  72. package/lib/components/Layout/SidebarControlsContext.js +21 -0
  73. package/lib/components/Layout/SidebarControlsContext.js.map +1 -0
  74. package/lib/components/Layout/TailwindLayout.d.ts.map +1 -1
  75. package/lib/components/Layout/TailwindLayout.js +22 -3
  76. package/lib/components/Layout/TailwindLayout.js.map +1 -1
  77. package/lib/components/Layout/defaultPermissions.d.ts +134 -0
  78. package/lib/components/Layout/defaultPermissions.d.ts.map +1 -0
  79. package/lib/components/Layout/defaultPermissions.js +134 -0
  80. package/lib/components/Layout/defaultPermissions.js.map +1 -0
  81. package/lib/components/Layout/getPageTitle.js +2 -2
  82. package/lib/components/Layout/getPageTitle.js.map +1 -1
  83. package/lib/components/Layout/slot-fill/RightContent.d.ts +3 -1
  84. package/lib/components/Layout/slot-fill/RightContent.d.ts.map +1 -1
  85. package/lib/components/Layout/slot-fill/RightContent.js +4 -6
  86. package/lib/components/Layout/slot-fill/RightContent.js.map +1 -1
  87. package/lib/components/SettingDrawer/SettingDrawer.d.ts.map +1 -1
  88. package/lib/components/SettingDrawer/SettingDrawer.js +21 -18
  89. package/lib/components/SettingDrawer/SettingDrawer.js.map +1 -1
  90. package/lib/components/SettingDrawer/components/ApplyToAllRoutesToggle.d.ts.map +1 -1
  91. package/lib/components/SettingDrawer/components/ApplyToAllRoutesToggle.js +8 -14
  92. package/lib/components/SettingDrawer/components/ApplyToAllRoutesToggle.js.map +1 -1
  93. package/lib/components/SettingDrawer/components/CheckBoxTheme.js +2 -2
  94. package/lib/components/SettingDrawer/components/CheckBoxTheme.js.map +1 -1
  95. package/lib/components/SettingDrawer/components/DeviceTabs.js +2 -2
  96. package/lib/components/SettingDrawer/components/DeviceTabs.js.map +1 -1
  97. package/lib/components/SettingDrawer/components/InvitationSettings.d.ts.map +1 -1
  98. package/lib/components/SettingDrawer/components/InvitationSettings.js +7 -3
  99. package/lib/components/SettingDrawer/components/InvitationSettings.js.map +1 -1
  100. package/lib/components/SettingDrawer/components/LayoutChange.d.ts.map +1 -1
  101. package/lib/components/SettingDrawer/components/LayoutChange.js +8 -11
  102. package/lib/components/SettingDrawer/components/LayoutChange.js.map +1 -1
  103. package/lib/components/SettingDrawer/components/MenuVisibilitySettings.js +5 -5
  104. package/lib/components/SettingDrawer/components/MenuVisibilitySettings.js.map +1 -1
  105. package/lib/components/SettingDrawer/components/NavigationsModes.js +3 -3
  106. package/lib/components/SettingDrawer/components/NavigationsModes.js.map +1 -1
  107. package/lib/components/SettingDrawer/components/RegionalSettings.d.ts.map +1 -1
  108. package/lib/components/SettingDrawer/components/RegionalSettings.js +40 -97
  109. package/lib/components/SettingDrawer/components/RegionalSettings.js.map +1 -1
  110. package/lib/components/SettingDrawer/components/SettingsActions.d.ts.map +1 -1
  111. package/lib/components/SettingDrawer/components/SettingsActions.js +27 -25
  112. package/lib/components/SettingDrawer/components/SettingsActions.js.map +1 -1
  113. package/lib/components/SettingDrawer/components/SettingsDrawerHeader.d.ts.map +1 -1
  114. package/lib/components/SettingDrawer/components/SettingsDrawerHeader.js +4 -3
  115. package/lib/components/SettingDrawer/components/SettingsDrawerHeader.js.map +1 -1
  116. package/lib/components/SettingDrawer/components/Switch.js +2 -2
  117. package/lib/components/SettingDrawer/components/ThemeColor.js +1 -1
  118. package/lib/components/SettingDrawer/components/ThemeColor.js.map +1 -1
  119. package/lib/components/SettingDrawer/components/ThemeSelector.js +1 -1
  120. package/lib/components/SettingDrawer/components/WebFontsSelector.js +1 -1
  121. package/lib/components/SettingDrawer/hooks/useSettingsOperations.d.ts.map +1 -1
  122. package/lib/components/SettingDrawer/hooks/useSettingsOperations.js +13 -9
  123. package/lib/components/SettingDrawer/hooks/useSettingsOperations.js.map +1 -1
  124. package/lib/components/SettingDrawer/utils/constants.d.ts.map +1 -1
  125. package/lib/components/SettingDrawer/utils/constants.js +3 -0
  126. package/lib/components/SettingDrawer/utils/constants.js.map +1 -1
  127. package/lib/components/SettingDrawer/utils/helper.js +1 -1
  128. package/lib/components/SettingDrawer/utils/transformers.d.ts +16 -0
  129. package/lib/components/SettingDrawer/utils/transformers.d.ts.map +1 -1
  130. package/lib/components/SettingDrawer/utils/transformers.js +39 -2
  131. package/lib/components/SettingDrawer/utils/transformers.js.map +1 -1
  132. package/lib/components/SettingsThemeApplier/SettingsThemeApplier.d.ts +10 -0
  133. package/lib/components/SettingsThemeApplier/SettingsThemeApplier.d.ts.map +1 -0
  134. package/lib/components/SettingsThemeApplier/SettingsThemeApplier.js +23 -0
  135. package/lib/components/SettingsThemeApplier/SettingsThemeApplier.js.map +1 -0
  136. package/lib/components/SettingsThemeApplier/index.d.ts +2 -0
  137. package/lib/components/SettingsThemeApplier/index.d.ts.map +1 -0
  138. package/lib/components/index.js +1 -1
  139. package/lib/components/typings.d.ts +29 -0
  140. package/lib/components/typings.d.ts.map +1 -1
  141. package/lib/compute.js +2 -1
  142. package/lib/compute.js.map +1 -1
  143. package/lib/helpers/DynamicIcon.js +7 -1
  144. package/lib/helpers/DynamicIcon.js.map +1 -1
  145. package/lib/hooks/index.d.ts +1 -0
  146. package/lib/hooks/index.d.ts.map +1 -1
  147. package/lib/index.d.ts +3 -0
  148. package/lib/index.d.ts.map +1 -1
  149. package/lib/index.js +1 -1
  150. package/lib/index.js.map +1 -1
  151. package/lib/routes.json +6 -1
  152. package/lib/styles/index.css +321 -0
  153. package/lib/utils/settingsTheme.d.ts +40 -0
  154. package/lib/utils/settingsTheme.d.ts.map +1 -0
  155. package/lib/utils/settingsTheme.js +106 -0
  156. package/lib/utils/settingsTheme.js.map +1 -0
  157. 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,setSearchResult}from'../../../redux/searchReducer.js';const {
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 = async event => {
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
- dispatch(setSearchResult([]));
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 < searchResults.length - 1 ? prev + 1 : 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 > -1 ? prev - 1 : 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 >= 0 && searchResults[selectedIndex]) {
41
- const result = searchResults[selectedIndex];
42
- if (result) {
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
- setIsOpen(false);
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
- // Handle result click
67
- const handleResultClick = result => {
68
- if (result.url) {
69
- navigate(result.url);
70
- }
71
- setIsOpen(false);
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: "relative w-full focus-within:text-primary"
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
- })), React__default.createElement("input", {
83
- className: "w-full pl-8 pr-2 text-sm themed-input focus-themed",
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: () => setIsOpen(true),
394
+ onFocus: () => {
395
+ setIsOpen(true);
396
+ setDismissed(false);
397
+ },
91
398
  style: style
92
- })), isOpen && searchResults.length > 0 && React__default.createElement("div", {
93
- className: "absolute z-50 w-full mt-1 themed-dropdown"
94
- }, React__default.createElement("ul", {
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
- }, searchResults.map((result, index) => React__default.createElement("li", {
97
- key: result.id,
98
- className: `relative py-2 pl-3 pr-9 cursor-pointer select-none ${index === selectedIndex ? 'text-primary-foreground bg-primary' : 'text-foreground hover:bg-muted'}`,
99
- onClick: () => handleResultClick(result)
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
- }, result.title), result.type && React__default.createElement("span", {
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
- }, result.description))))));
109
- };export{SearchBar,SearchBar as default};//# sourceMappingURL=SearchBar.js.map
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,3 +1,4 @@
1
1
  export * from './MainHeader';
2
+ export * from './NavbarSlotStrip';
2
3
  export * from './RightMenu';
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -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 const ProTailwindLayout: React.FC<BasicLayoutProps & {
5
- loaderData?: any;
6
- }>;
7
- export default ProTailwindLayout;
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 const loader: (params: any) => Promise<{
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({ request, params, serverLoader }: {
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;AAO9B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGrD,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AA2E/B,QAAA,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,GAAG;IAAE,UAAU,CAAC,EAAE,GAAG,CAAA;CAAE,CAqDxE,CAAC;AACF,eAAe,iBAAiB,CAAC;AAEjC,eAAO,MAAM,MAAM;;CAElB,CAAC;AACF,eAAO,MAAM,KAAK,EAAE,aAA+D,CAAC;AAEpF,eAAO,MAAM,MAAM,GAAU,WAAM;;;EA0BlC,CAAC;AAEF,wBAAsB,YAAY,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE;;;;CAAA,gBAgBnE;AAED,eAAO,MAAM,gBAAgB,GAAI;;;CAA6B,YAE7D,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"}