@curvenote/theme-ui 1.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 (250) hide show
  1. package/dist/components/index.d.ts +4 -0
  2. package/dist/components/index.d.ts.map +1 -0
  3. package/dist/components/index.js +3 -0
  4. package/dist/components/layout/app-layout.d.ts +8 -0
  5. package/dist/components/layout/app-layout.d.ts.map +1 -0
  6. package/dist/components/layout/app-layout.js +24 -0
  7. package/dist/components/layout/app-sidebar.d.ts +2 -0
  8. package/dist/components/layout/app-sidebar.d.ts.map +1 -0
  9. package/dist/components/layout/app-sidebar.js +125 -0
  10. package/dist/components/layout/article-layout.d.ts +8 -0
  11. package/dist/components/layout/article-layout.d.ts.map +1 -0
  12. package/dist/components/layout/article-layout.js +20 -0
  13. package/dist/components/layout/grid.d.ts +2 -0
  14. package/dist/components/layout/grid.d.ts.map +1 -0
  15. package/dist/components/layout/grid.js +4 -0
  16. package/dist/components/layout/header.d.ts +5 -0
  17. package/dist/components/layout/header.d.ts.map +1 -0
  18. package/dist/components/layout/header.js +5 -0
  19. package/dist/components/layout/index.d.ts +7 -0
  20. package/dist/components/layout/index.d.ts.map +1 -0
  21. package/dist/components/layout/index.js +7 -0
  22. package/dist/components/layout/loading-bar.d.ts +12 -0
  23. package/dist/components/layout/loading-bar.d.ts.map +1 -0
  24. package/dist/components/layout/loading-bar.js +53 -0
  25. package/dist/components/layout/site-header.d.ts +8 -0
  26. package/dist/components/layout/site-header.d.ts.map +1 -0
  27. package/dist/components/layout/site-header.js +55 -0
  28. package/dist/components/layout/types.d.ts +6 -0
  29. package/dist/components/layout/types.d.ts.map +1 -0
  30. package/dist/components/layout/types.js +1 -0
  31. package/dist/components/providers/compute.d.ts +5 -0
  32. package/dist/components/providers/compute.d.ts.map +1 -0
  33. package/dist/components/providers/compute.js +6 -0
  34. package/dist/components/providers/connect.d.ts +24 -0
  35. package/dist/components/providers/connect.d.ts.map +1 -0
  36. package/dist/components/providers/connect.js +208 -0
  37. package/dist/components/providers/curvenote-providers.d.ts +52 -0
  38. package/dist/components/providers/curvenote-providers.d.ts.map +1 -0
  39. package/dist/components/providers/curvenote-providers.js +199 -0
  40. package/dist/components/providers/design.d.ts +39 -0
  41. package/dist/components/providers/design.d.ts.map +1 -0
  42. package/dist/components/providers/design.js +50 -0
  43. package/dist/components/providers/index.d.ts +10 -0
  44. package/dist/components/providers/index.d.ts.map +1 -0
  45. package/dist/components/providers/index.js +12 -0
  46. package/dist/components/providers/lightbox-provider.d.ts +31 -0
  47. package/dist/components/providers/lightbox-provider.d.ts.map +1 -0
  48. package/dist/components/providers/lightbox-provider.js +109 -0
  49. package/dist/components/providers/myst-providers.d.ts +6 -0
  50. package/dist/components/providers/myst-providers.d.ts.map +1 -0
  51. package/dist/components/providers/myst-providers.js +29 -0
  52. package/dist/components/providers/page-providers.d.ts +15 -0
  53. package/dist/components/providers/page-providers.d.ts.map +1 -0
  54. package/dist/components/providers/page-providers.js +28 -0
  55. package/dist/components/providers/ping-boundary.d.ts +40 -0
  56. package/dist/components/providers/ping-boundary.d.ts.map +1 -0
  57. package/dist/components/providers/ping-boundary.js +115 -0
  58. package/dist/components/providers/platform-providers.d.ts +18 -0
  59. package/dist/components/providers/platform-providers.d.ts.map +1 -0
  60. package/dist/components/providers/platform-providers.js +29 -0
  61. package/dist/components/providers/types.d.ts +30 -0
  62. package/dist/components/providers/types.d.ts.map +1 -0
  63. package/dist/components/providers/types.js +1 -0
  64. package/dist/components/ui/Callout.d.ts +10 -0
  65. package/dist/components/ui/Callout.d.ts.map +1 -0
  66. package/dist/components/ui/Callout.js +7 -0
  67. package/dist/components/ui/PageCards.d.ts +2 -0
  68. package/dist/components/ui/PageCards.d.ts.map +1 -0
  69. package/dist/components/ui/PageCards.js +11 -0
  70. package/dist/components/ui/abbreviations.d.ts +5 -0
  71. package/dist/components/ui/abbreviations.d.ts.map +1 -0
  72. package/dist/components/ui/abbreviations.js +31 -0
  73. package/dist/components/ui/abstract.d.ts +8 -0
  74. package/dist/components/ui/abstract.d.ts.map +1 -0
  75. package/dist/components/ui/abstract.js +9 -0
  76. package/dist/components/ui/accessibility-skip-to.d.ts +15 -0
  77. package/dist/components/ui/accessibility-skip-to.d.ts.map +1 -0
  78. package/dist/components/ui/accessibility-skip-to.js +31 -0
  79. package/dist/components/ui/acknowledgements.d.ts +4 -0
  80. package/dist/components/ui/acknowledgements.d.ts.map +1 -0
  81. package/dist/components/ui/acknowledgements.js +20 -0
  82. package/dist/components/ui/article-actions-downloads.d.ts +26 -0
  83. package/dist/components/ui/article-actions-downloads.d.ts.map +1 -0
  84. package/dist/components/ui/article-actions-downloads.js +143 -0
  85. package/dist/components/ui/article-actions-dropdown.d.ts +5 -0
  86. package/dist/components/ui/article-actions-dropdown.d.ts.map +1 -0
  87. package/dist/components/ui/article-actions-dropdown.js +68 -0
  88. package/dist/components/ui/article-actions-share.d.ts +5 -0
  89. package/dist/components/ui/article-actions-share.d.ts.map +1 -0
  90. package/dist/components/ui/article-actions-share.js +52 -0
  91. package/dist/components/ui/article-actions.d.ts +2 -0
  92. package/dist/components/ui/article-actions.d.ts.map +1 -0
  93. package/dist/components/ui/article-actions.js +20 -0
  94. package/dist/components/ui/article-bar.d.ts +8 -0
  95. package/dist/components/ui/article-bar.d.ts.map +1 -0
  96. package/dist/components/ui/article-bar.js +32 -0
  97. package/dist/components/ui/article-card.d.ts +12 -0
  98. package/dist/components/ui/article-card.d.ts.map +1 -0
  99. package/dist/components/ui/article-card.js +22 -0
  100. package/dist/components/ui/article-footer.d.ts +2 -0
  101. package/dist/components/ui/article-footer.d.ts.map +1 -0
  102. package/dist/components/ui/article-footer.js +7 -0
  103. package/dist/components/ui/author-popover.d.ts +7 -0
  104. package/dist/components/ui/author-popover.d.ts.map +1 -0
  105. package/dist/components/ui/author-popover.js +36 -0
  106. package/dist/components/ui/backmatter.d.ts +9 -0
  107. package/dist/components/ui/backmatter.d.ts.map +1 -0
  108. package/dist/components/ui/backmatter.js +49 -0
  109. package/dist/components/ui/badge.d.ts +10 -0
  110. package/dist/components/ui/badge.d.ts.map +1 -0
  111. package/dist/components/ui/badge.js +23 -0
  112. package/dist/components/ui/banner.d.ts +7 -0
  113. package/dist/components/ui/banner.d.ts.map +1 -0
  114. package/dist/components/ui/banner.js +44 -0
  115. package/dist/components/ui/bibliography.d.ts +6 -0
  116. package/dist/components/ui/bibliography.d.ts.map +1 -0
  117. package/dist/components/ui/bibliography.js +20 -0
  118. package/dist/components/ui/breadcrumb.d.ts +12 -0
  119. package/dist/components/ui/breadcrumb.d.ts.map +1 -0
  120. package/dist/components/ui/breadcrumb.js +28 -0
  121. package/dist/components/ui/button.d.ts +11 -0
  122. package/dist/components/ui/button.d.ts.map +1 -0
  123. package/dist/components/ui/button.js +33 -0
  124. package/dist/components/ui/citation.d.ts +7 -0
  125. package/dist/components/ui/citation.d.ts.map +1 -0
  126. package/dist/components/ui/citation.js +99 -0
  127. package/dist/components/ui/collapsible.d.ts +6 -0
  128. package/dist/components/ui/collapsible.d.ts.map +1 -0
  129. package/dist/components/ui/collapsible.js +12 -0
  130. package/dist/components/ui/cookie-banner.d.ts +8 -0
  131. package/dist/components/ui/cookie-banner.d.ts.map +1 -0
  132. package/dist/components/ui/cookie-banner.js +31 -0
  133. package/dist/components/ui/data-availability.d.ts +4 -0
  134. package/dist/components/ui/data-availability.d.ts.map +1 -0
  135. package/dist/components/ui/data-availability.js +20 -0
  136. package/dist/components/ui/dialog.d.ts +16 -0
  137. package/dist/components/ui/dialog.d.ts.map +1 -0
  138. package/dist/components/ui/dialog.js +36 -0
  139. package/dist/components/ui/document-outline.d.ts +8 -0
  140. package/dist/components/ui/document-outline.d.ts.map +1 -0
  141. package/dist/components/ui/document-outline.js +168 -0
  142. package/dist/components/ui/dropdown-menu.d.ts +26 -0
  143. package/dist/components/ui/dropdown-menu.d.ts.map +1 -0
  144. package/dist/components/ui/dropdown-menu.js +51 -0
  145. package/dist/components/ui/error-page.d.ts +9 -0
  146. package/dist/components/ui/error-page.d.ts.map +1 -0
  147. package/dist/components/ui/error-page.js +21 -0
  148. package/dist/components/ui/footer-links.d.ts +14 -0
  149. package/dist/components/ui/footer-links.d.ts.map +1 -0
  150. package/dist/components/ui/footer-links.js +18 -0
  151. package/dist/components/ui/footnotes.d.ts +4 -0
  152. package/dist/components/ui/footnotes.d.ts.map +1 -0
  153. package/dist/components/ui/footnotes.js +30 -0
  154. package/dist/components/ui/frontmatter-badges.d.ts +27 -0
  155. package/dist/components/ui/frontmatter-badges.d.ts.map +1 -0
  156. package/dist/components/ui/frontmatter-badges.js +60 -0
  157. package/dist/components/ui/frontmatter.d.ts +7 -0
  158. package/dist/components/ui/frontmatter.d.ts.map +1 -0
  159. package/dist/components/ui/frontmatter.js +6 -0
  160. package/dist/components/ui/image.d.ts +34 -0
  161. package/dist/components/ui/image.d.ts.map +1 -0
  162. package/dist/components/ui/image.js +83 -0
  163. package/dist/components/ui/index.d.ts +50 -0
  164. package/dist/components/ui/index.d.ts.map +1 -0
  165. package/dist/components/ui/index.js +56 -0
  166. package/dist/components/ui/input.d.ts +4 -0
  167. package/dist/components/ui/input.d.ts.map +1 -0
  168. package/dist/components/ui/input.js +7 -0
  169. package/dist/components/ui/license-description.d.ts +4 -0
  170. package/dist/components/ui/license-description.d.ts.map +1 -0
  171. package/dist/components/ui/license-description.js +63 -0
  172. package/dist/components/ui/license-frontmatter.d.ts +22 -0
  173. package/dist/components/ui/license-frontmatter.d.ts.map +1 -0
  174. package/dist/components/ui/license-frontmatter.js +37 -0
  175. package/dist/components/ui/lightbox-container.d.ts +11 -0
  176. package/dist/components/ui/lightbox-container.d.ts.map +1 -0
  177. package/dist/components/ui/lightbox-container.js +13 -0
  178. package/dist/components/ui/lightbox.d.ts +17 -0
  179. package/dist/components/ui/lightbox.d.ts.map +1 -0
  180. package/dist/components/ui/lightbox.js +129 -0
  181. package/dist/components/ui/link-card.d.ts +15 -0
  182. package/dist/components/ui/link-card.d.ts.map +1 -0
  183. package/dist/components/ui/link-card.js +28 -0
  184. package/dist/components/ui/popover.d.ts +8 -0
  185. package/dist/components/ui/popover.d.ts.map +1 -0
  186. package/dist/components/ui/popover.js +17 -0
  187. package/dist/components/ui/search.d.ts +9 -0
  188. package/dist/components/ui/search.d.ts.map +1 -0
  189. package/dist/components/ui/search.js +290 -0
  190. package/dist/components/ui/separator.d.ts +5 -0
  191. package/dist/components/ui/separator.d.ts.map +1 -0
  192. package/dist/components/ui/separator.js +8 -0
  193. package/dist/components/ui/sheet.d.ts +14 -0
  194. package/dist/components/ui/sheet.d.ts.map +1 -0
  195. package/dist/components/ui/sheet.js +40 -0
  196. package/dist/components/ui/sidebar.d.ts +67 -0
  197. package/dist/components/ui/sidebar.d.ts.map +1 -0
  198. package/dist/components/ui/sidebar.js +202 -0
  199. package/dist/components/ui/skeleton.d.ts +3 -0
  200. package/dist/components/ui/skeleton.d.ts.map +1 -0
  201. package/dist/components/ui/skeleton.js +6 -0
  202. package/dist/components/ui/sonner.d.ts +5 -0
  203. package/dist/components/ui/sonner.d.ts.map +1 -0
  204. package/dist/components/ui/sonner.js +13 -0
  205. package/dist/components/ui/theme-button.d.ts +2 -0
  206. package/dist/components/ui/theme-button.d.ts.map +1 -0
  207. package/dist/components/ui/theme-button.js +9 -0
  208. package/dist/components/ui/tooltip.d.ts +13 -0
  209. package/dist/components/ui/tooltip.d.ts.map +1 -0
  210. package/dist/components/ui/tooltip.js +20 -0
  211. package/dist/components/ui/types.d.ts +11 -0
  212. package/dist/components/ui/types.d.ts.map +1 -0
  213. package/dist/components/ui/types.js +10 -0
  214. package/dist/hooks/index.d.ts +5 -0
  215. package/dist/hooks/index.d.ts.map +1 -0
  216. package/dist/hooks/index.js +4 -0
  217. package/dist/hooks/use-hydrated.d.ts +2 -0
  218. package/dist/hooks/use-hydrated.d.ts.map +1 -0
  219. package/dist/hooks/use-hydrated.js +6 -0
  220. package/dist/hooks/use-image-load.d.ts +14 -0
  221. package/dist/hooks/use-image-load.d.ts.map +1 -0
  222. package/dist/hooks/use-image-load.js +41 -0
  223. package/dist/hooks/use-mobile.d.ts +2 -0
  224. package/dist/hooks/use-mobile.d.ts.map +1 -0
  225. package/dist/hooks/use-mobile.js +15 -0
  226. package/dist/hooks/use-theme.d.ts +6 -0
  227. package/dist/hooks/use-theme.d.ts.map +1 -0
  228. package/dist/hooks/use-theme.js +23 -0
  229. package/dist/index.d.ts +6 -0
  230. package/dist/index.d.ts.map +1 -0
  231. package/dist/index.js +5 -0
  232. package/dist/lib/checkMecaExport.d.ts +5 -0
  233. package/dist/lib/checkMecaExport.d.ts.map +1 -0
  234. package/dist/lib/checkMecaExport.js +4 -0
  235. package/dist/lib/index.d.ts +6 -0
  236. package/dist/lib/index.d.ts.map +1 -0
  237. package/dist/lib/index.js +6 -0
  238. package/dist/lib/knownParts.d.ts +12 -0
  239. package/dist/lib/knownParts.d.ts.map +1 -0
  240. package/dist/lib/knownParts.js +14 -0
  241. package/dist/lib/links.d.ts +3 -0
  242. package/dist/lib/links.d.ts.map +1 -0
  243. package/dist/lib/links.js +7 -0
  244. package/dist/lib/parse-date.d.ts +2 -0
  245. package/dist/lib/parse-date.d.ts.map +1 -0
  246. package/dist/lib/parse-date.js +7 -0
  247. package/dist/lib/utils.d.ts +3 -0
  248. package/dist/lib/utils.d.ts.map +1 -0
  249. package/dist/lib/utils.js +5 -0
  250. package/package.json +67 -0
@@ -0,0 +1,290 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useState, useMemo, useCallback, useRef } from 'react';
3
+ import { cn } from '@curvenote/react-utils';
4
+ import * as Dialog from './dialog';
5
+ import { SPACE_OR_PUNCTUATION, rankResults } from '@myst-theme/search';
6
+ import { useSearchFactory, useLinkProvider, withBaseurl, useBaseurl, useNavigateProvider, } from '@myst-theme/providers';
7
+ import useSWR from 'swr';
8
+ import { Search as SearchIcon } from 'lucide-react';
9
+ /**
10
+ * Loading bar component that shows at the top of the dialog
11
+ */
12
+ function LoadingBar() {
13
+ return (_jsx("div", { className: "overflow-hidden absolute top-0 right-0 left-0 h-1 bg-gray-200 dark:bg-gray-700", children: _jsx("div", { className: "h-full bg-gradient-to-r from-transparent via-blue-500 to-transparent bg-[length:200%_100%] animate-[loading-bar_2s_ease-in-out_infinite] dark:via-blue-400" }) }));
14
+ }
15
+ /**
16
+ * Shim for string.matchAll
17
+ *
18
+ * @param text - text to repeatedly match with pattern
19
+ * @param pattern - global pattern
20
+ */
21
+ function matchAll(text, pattern) {
22
+ const matches = [];
23
+ let match;
24
+ while ((match = pattern.exec(text))) {
25
+ matches.push(match);
26
+ }
27
+ return matches;
28
+ }
29
+ /**
30
+ * Highlight a text string with an array of match words
31
+ *
32
+ * @param text - text to highlight
33
+ * @param matches - regular expression patterns to match against
34
+ * @param limit - limit to the number of characters after first match
35
+ * @param classname - CSS classname to use
36
+ */
37
+ function MarkedText({ text, matches, limit, className, }) {
38
+ // Split by delimeter, but _keep_ delimeter!
39
+ const splits = matchAll(text, SPACE_OR_PUNCTUATION);
40
+ const tokens = [];
41
+ let start = 0;
42
+ for (const splitMatch of splits) {
43
+ tokens.push(text.slice(start, splitMatch.index));
44
+ tokens.push(splitMatch[0]);
45
+ start = splitMatch.index + splitMatch[0].length;
46
+ }
47
+ tokens.push(text.slice(start));
48
+ // Build RegExp matching all highlight matches
49
+ const allTerms = matches.join('|');
50
+ const pattern = new RegExp(`^(${allTerms})`, 'i'); // Match prefix and total pattern, case-insensitively
51
+ const renderToken = (token) => pattern.test(token) ? (_jsx(_Fragment, { children: _jsx("mark", { className: "text-blue-600 bg-inherit dark:text-blue-400 group-aria-selected:text-white group-aria-selected:underline", children: token }) })) : (token);
52
+ let firstIndex;
53
+ let lastIndex;
54
+ const hasLimit = limit !== undefined;
55
+ if (!hasLimit) {
56
+ firstIndex = 0;
57
+ lastIndex = tokens.length;
58
+ }
59
+ else {
60
+ firstIndex = tokens.findIndex((token) => pattern.test(token));
61
+ let numChars = 0;
62
+ for (lastIndex = firstIndex + 1; lastIndex < tokens.length - 1 && numChars + tokens[lastIndex].length <= limit; lastIndex++) {
63
+ numChars += tokens[lastIndex].length;
64
+ }
65
+ }
66
+ if (tokens.length === 0) {
67
+ return _jsxs("span", { className: className, children: [...tokens] });
68
+ }
69
+ else {
70
+ const firstRenderer = renderToken(tokens[firstIndex]);
71
+ const remainingTokens = tokens.slice(firstIndex + 1, lastIndex);
72
+ const remainingRenderers = remainingTokens.map((token) => renderToken(token));
73
+ return (_jsxs("span", { className: cn(className, {
74
+ "before:content-['..._']": hasLimit,
75
+ "after:content-['_...']": hasLimit,
76
+ }, 'truncate', 'w-full'), children: [firstRenderer, ...remainingRenderers] }));
77
+ }
78
+ }
79
+ /**
80
+ * Return true if the client is a Mac, false if not, or undefined if running on the server
81
+ */
82
+ function isMac() {
83
+ if (typeof window === 'undefined') {
84
+ return undefined;
85
+ }
86
+ else {
87
+ const hostIsMac = /mac/i.test(window.navigator.userAgentData?.platform ?? window.navigator.userAgent);
88
+ return hostIsMac;
89
+ }
90
+ }
91
+ /**
92
+ * Renderer for a single search result
93
+ */
94
+ function SearchResultItem({ result, closeSearch, charLimit, }) {
95
+ const { hierarchy, type, url, queries } = result;
96
+ const baseurl = useBaseurl();
97
+ const Link = useLinkProvider();
98
+ // Generic "this document matched"
99
+ const title = result.type === 'content' ? result['content'] : hierarchy[type];
100
+ const matches = useMemo(() => queries.flatMap((query) => Object.keys(query.matches)), [queries]);
101
+ // Render the title, i.e. content or heading
102
+ const titleRenderer = (_jsx(MarkedText, { text: title, matches: matches, limit: type === 'content' ? charLimit : undefined, className: "text-sm" }));
103
+ // Render the subtitle i.e. file name
104
+ let subtitleRenderer;
105
+ if (result.type === 'lvl1') {
106
+ subtitleRenderer = undefined;
107
+ }
108
+ else {
109
+ const subtitle = result.hierarchy.lvl1;
110
+ subtitleRenderer = _jsx(MarkedText, { text: subtitle, matches: matches, className: "text-xs" });
111
+ }
112
+ return (_jsx(Link, { className: "block px-4 py-2 text-gray-700 dark:text-white group-aria-selected:bg-blue-600 group-aria-selected:text-white dark:shadow-none dark:bg-stone-800", to: withBaseurl(url, baseurl),
113
+ // Close the main search on click
114
+ onClick: closeSearch, children: _jsx("div", { className: "flex flex-row h-11", children: _jsxs("div", { className: "flex flex-col justify-center truncate grow", children: [titleRenderer, subtitleRenderer] }) }) }));
115
+ }
116
+ function SearchResults({ searchResults, searchListID, searchLabelID, charLimit, className, selectedIndex, onHoverSelect, closeSearch, }) {
117
+ // Array of search item refs
118
+ const itemsRef = useRef([]);
119
+ // Ref to assign items
120
+ const setItemRef = useCallback((elem) => {
121
+ if (!elem) {
122
+ return;
123
+ }
124
+ const index = parseInt(elem.dataset.index);
125
+ itemsRef.current[index] = elem;
126
+ }, [itemsRef]);
127
+ // Keep activeDescendent in sync wth selected index
128
+ const activeDescendent = useMemo(() => {
129
+ const item = itemsRef.current[selectedIndex];
130
+ if (!item) {
131
+ return '';
132
+ }
133
+ else {
134
+ return item.id;
135
+ }
136
+ }, [selectedIndex, itemsRef]);
137
+ // If the select item changes, bring it into view
138
+ useEffect(() => {
139
+ const item = itemsRef.current[selectedIndex];
140
+ item?.scrollIntoView({ block: 'nearest' });
141
+ }, [selectedIndex]);
142
+ // Handle mouse movement events that set the current hovered element
143
+ const handleMouseMove = useCallback((event) => {
144
+ const index = parseInt(event.currentTarget.dataset.index);
145
+ onHoverSelect(index);
146
+ }, [onHoverSelect]);
147
+ return (_jsx("div", { className: "overflow-y-auto mt-4 max-h-[60vh]", children: searchResults.length ? (_jsx("ul", {
148
+ // Accessibility:
149
+ // indicate that this is a select-box
150
+ role: "listbox", id: searchListID, "aria-label": "Search results", "aria-labelledby": searchLabelID, "aria-orientation": "vertical", "aria-activedescendant": activeDescendent, className: cn('flex overflow-hidden flex-col rounded-sm border', className), children: searchResults.map((result, index) => (_jsx("li", { ref: setItemRef, "data-index": index,
151
+ // Accessibility:
152
+ // Indicate that this is an option
153
+ role: "option", "aria-selected": selectedIndex === index,
154
+ // Allow for nested-highlighting
155
+ className: "border-b border-gray-200 group dark:border-gray-700 last:border-b-0",
156
+ // Trigger selection on movement, so that scrolling doesn't trigger handler
157
+ onMouseMove: handleMouseMove, children: _jsx(SearchResultItem, { result: result, closeSearch: closeSearch, charLimit: charLimit }) }, result.id))) })) : (_jsx("span", { children: "No results found." })) }));
158
+ }
159
+ /**
160
+ * Build search implementation by requesting search index from server
161
+ */
162
+ function useSearch(shouldLoad = true) {
163
+ const baseURL = useBaseurl();
164
+ const [enabled, setEnabled] = useState(true);
165
+ // SWR fetcher function
166
+ const fetcher = useCallback(async (url) => {
167
+ const response = await fetch(url);
168
+ if (!response.ok) {
169
+ throw new Error('Failed to fetch search index');
170
+ }
171
+ return response.json();
172
+ }, []);
173
+ // Load search index using SWR only when shouldLoad is true
174
+ const searchURL = withBaseurl('/myst.search.json', baseURL);
175
+ const { data: searchIndex, error, isLoading, } = useSWR(shouldLoad ? searchURL : null, fetcher, {
176
+ revalidateOnFocus: false,
177
+ revalidateOnReconnect: false,
178
+ dedupingInterval: 60000, // 1 minute
179
+ });
180
+ const searchFactory = useSearchFactory();
181
+ const search = useMemo(() => {
182
+ if (!searchIndex || !searchFactory || error) {
183
+ if (error) {
184
+ setEnabled(false);
185
+ }
186
+ return undefined;
187
+ }
188
+ else {
189
+ if (searchIndex?.version && searchIndex?.records) {
190
+ return searchFactory(searchIndex);
191
+ }
192
+ setEnabled(false);
193
+ return undefined;
194
+ }
195
+ }, [searchFactory, searchIndex, error, setEnabled]);
196
+ // Implement pass-through
197
+ return { search, enabled: enabled && !isLoading, loading: isLoading };
198
+ }
199
+ function SearchForm({ debounceTime, searchResults, setSearchResults, searchInputID, searchListID, searchLabelID, selectedIndex, setSelectedIndex, closeSearch, loading, shouldLoad, }) {
200
+ const [query, setQuery] = useState('');
201
+ const { search: doSearch, enabled } = useSearch(shouldLoad);
202
+ // Debounce user input
203
+ useEffect(() => {
204
+ const timeoutId = setTimeout(() => {
205
+ if (query != undefined && !!doSearch) {
206
+ doSearch(query).then((rawResults) => {
207
+ setSearchResults(rawResults &&
208
+ rankResults(rawResults)
209
+ // Filter duplicates by URL
210
+ .filter((result, index, array) => result.url !== array[index - 1]?.url));
211
+ });
212
+ }
213
+ }, debounceTime);
214
+ return () => clearTimeout(timeoutId);
215
+ }, [doSearch, query, debounceTime]);
216
+ // Handle user input
217
+ const handleSearchChange = useCallback((event) => {
218
+ setQuery(event.target.value);
219
+ }, []);
220
+ // Handle item selection
221
+ const navigate = useNavigateProvider();
222
+ const baseurl = useBaseurl();
223
+ // Handle item selection and navigation
224
+ const handleSearchKeyPress = useCallback((event) => {
225
+ // Ignore modifiers
226
+ if (event.ctrlKey || event.altKey || event.shiftKey) {
227
+ return;
228
+ }
229
+ if (!searchResults) {
230
+ return;
231
+ }
232
+ // Item selection
233
+ if (event.key === 'Enter') {
234
+ event.preventDefault();
235
+ const url = searchResults[selectedIndex]?.url;
236
+ if (url) {
237
+ navigate(withBaseurl(url, baseurl));
238
+ closeSearch?.();
239
+ }
240
+ }
241
+ // Item navigation
242
+ else if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {
243
+ event.preventDefault();
244
+ if (event.key === 'ArrowUp') {
245
+ setSelectedIndex(selectedIndex > 0 ? selectedIndex - 1 : 0);
246
+ }
247
+ else {
248
+ setSelectedIndex(selectedIndex < searchResults.length - 1 ? selectedIndex + 1 : searchResults.length - 1);
249
+ }
250
+ }
251
+ }, [searchResults, selectedIndex]); // Our form doesn't use the submit function
252
+ const onSubmit = useCallback((event) => {
253
+ event.preventDefault();
254
+ }, []);
255
+ return (_jsxs(_Fragment, { children: [_jsx("form", { onSubmit: onSubmit, children: _jsxs("div", { className: "flex relative w-full h-10 flow-row", children: [_jsx("label", { id: searchListID, htmlFor: searchInputID, children: _jsx(SearchIcon, { className: "absolute text-gray-400 inset-y-0 start-0 h-10 w-10 p-2.5 aspect-square flex items-center pointer-events-none" }) }), _jsx("input", { autoComplete: "off", spellCheck: "false", disabled: !enabled, autoCapitalize: "false", className: cn('block flex-grow p-2 placeholder-gray-400 ps-10', 'border border-gray-300 dark:border-gray-600', 'bg-gray-50 rounded-sm dark:bg-gray-700', 'focus:ring-blue-500 dark:focus:ring-blue-500', 'focus:border-blue-500 dark:focus:border-blue-500', 'dark:placeholder-gray-400', { 'border-red-500': !enabled && !loading }), id: searchInputID, "aria-labelledby": searchLabelID, "aria-controls": searchListID, placeholder: "Search", type: "search", required: true, onChange: handleSearchChange, onKeyDown: handleSearchKeyPress })] }) }), !enabled && !loading && (_jsx("div", { className: "mx-2 mt-4 text-sm text-gray-500", children: "Search is not enabled for this site." }))] }));
256
+ }
257
+ /**
258
+ * Component that implements a basic search interface
259
+ */
260
+ export function SearchDialog({ debounceTime = 500, charLimit = 64, children, }) {
261
+ const [open, setOpen] = useState(false);
262
+ const [searchResults, setSearchResults] = useState();
263
+ const [selectedIndex, setSelectedIndex] = useState(0);
264
+ const { loading } = useSearch(open);
265
+ // Clear search state on close
266
+ useEffect(() => {
267
+ if (!open) {
268
+ setSearchResults(undefined);
269
+ setSelectedIndex(0);
270
+ }
271
+ }, [open]);
272
+ // Trigger modal on keypress
273
+ const handleDocumentKeyPress = useCallback((event) => {
274
+ if (event.key === 'k' && (isMac() ? event.metaKey : event.ctrlKey)) {
275
+ setOpen(true);
276
+ event.preventDefault();
277
+ }
278
+ }, []);
279
+ // Mount the document event handlers
280
+ useEffect(() => {
281
+ // attach the event listener
282
+ document.addEventListener('keydown', handleDocumentKeyPress);
283
+ // remove the event listener
284
+ return () => {
285
+ document.removeEventListener('keydown', handleDocumentKeyPress);
286
+ };
287
+ }, [handleDocumentKeyPress]);
288
+ const triggerClose = useCallback(() => setOpen(false), [setOpen]);
289
+ return (_jsxs(Dialog.Dialog, { open: open, onOpenChange: setOpen, children: [_jsx(Dialog.DialogTrigger, { asChild: true, children: _jsx("div", { className: "cursor-pointer", children: children }) }), _jsxs(Dialog.DialogPortal, { children: [_jsx(Dialog.DialogOverlay, {}), _jsx(Dialog.DialogContent, { className: "fixed top-4 sm:top-[10vh] left-1/2 -translate-x-1/2 w-[90vw] max-w-screen-sm max-h-[calc(100vh-2rem)] sm:max-h-[70vh] overflow-hidden translate-y-0 p-0", showCloseButton: false, children: _jsxs("div", { className: "flex overflow-hidden relative flex-col gap-0 p-4", children: [_jsx(Dialog.DialogTitle, { className: "sr-only", children: "Search Website" }), _jsx(Dialog.DialogDescription, { className: "sr-only", children: "Search articles and their contents using fuzzy-search and prefix-matching" }), _jsx("div", { className: "flex-shrink-0", children: _jsx(SearchForm, { searchListID: "search-list", searchLabelID: "search-label", searchInputID: "search-input", debounceTime: debounceTime, searchResults: searchResults, setSearchResults: setSearchResults, selectedIndex: selectedIndex, setSelectedIndex: setSelectedIndex, closeSearch: triggerClose, loading: loading, shouldLoad: open }) }), searchResults && (_jsx("div", { className: "overflow-hidden flex-1", children: _jsx(SearchResults, { searchListID: "search-list", searchLabelID: "search-label", className: "overflow-y-auto h-full", searchResults: searchResults, selectedIndex: selectedIndex, onHoverSelect: setSelectedIndex, closeSearch: triggerClose, charLimit: charLimit }) }))] }) })] })] }));
290
+ }
@@ -0,0 +1,5 @@
1
+ import * as React from 'react';
2
+ import * as SeparatorPrimitive from '@radix-ui/react-separator';
3
+ declare function Separator({ className, orientation, decorative, ...props }: React.ComponentProps<typeof SeparatorPrimitive.Root>): import("react/jsx-runtime").JSX.Element;
4
+ export { Separator };
5
+ //# sourceMappingURL=separator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"separator.d.ts","sourceRoot":"","sources":["../../../src/components/ui/separator.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,kBAAkB,MAAM,2BAA2B,CAAC;AAIhE,iBAAS,SAAS,CAAC,EACjB,SAAS,EACT,WAA0B,EAC1B,UAAiB,EACjB,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,kBAAkB,CAAC,IAAI,CAAC,2CAatD;AAED,OAAO,EAAE,SAAS,EAAE,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import * as React from 'react';
3
+ import * as SeparatorPrimitive from '@radix-ui/react-separator';
4
+ import { cn } from '../../lib/utils';
5
+ function Separator({ className, orientation = 'horizontal', decorative = true, ...props }) {
6
+ return (_jsx(SeparatorPrimitive.Root, { "data-slot": "separator", decorative: decorative, orientation: orientation, className: cn('bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px', className), ...props }));
7
+ }
8
+ export { Separator };
@@ -0,0 +1,14 @@
1
+ import * as React from 'react';
2
+ import * as SheetPrimitive from '@radix-ui/react-dialog';
3
+ declare function Sheet({ ...props }: React.ComponentProps<typeof SheetPrimitive.Root>): import("react/jsx-runtime").JSX.Element;
4
+ declare function SheetTrigger({ ...props }: React.ComponentProps<typeof SheetPrimitive.Trigger>): import("react/jsx-runtime").JSX.Element;
5
+ declare function SheetClose({ ...props }: React.ComponentProps<typeof SheetPrimitive.Close>): import("react/jsx-runtime").JSX.Element;
6
+ declare function SheetContent({ className, children, side, ...props }: React.ComponentProps<typeof SheetPrimitive.Content> & {
7
+ side?: 'top' | 'right' | 'bottom' | 'left';
8
+ }): import("react/jsx-runtime").JSX.Element;
9
+ declare function SheetHeader({ className, ...props }: React.ComponentProps<'div'>): import("react/jsx-runtime").JSX.Element;
10
+ declare function SheetFooter({ className, ...props }: React.ComponentProps<'div'>): import("react/jsx-runtime").JSX.Element;
11
+ declare function SheetTitle({ className, ...props }: React.ComponentProps<typeof SheetPrimitive.Title>): import("react/jsx-runtime").JSX.Element;
12
+ declare function SheetDescription({ className, ...props }: React.ComponentProps<typeof SheetPrimitive.Description>): import("react/jsx-runtime").JSX.Element;
13
+ export { Sheet, SheetTrigger, SheetClose, SheetContent, SheetHeader, SheetFooter, SheetTitle, SheetDescription, };
14
+ //# sourceMappingURL=sheet.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sheet.d.ts","sourceRoot":"","sources":["../../../src/components/ui/sheet.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,cAAc,MAAM,wBAAwB,CAAC;AAKzD,iBAAS,KAAK,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,cAAc,CAAC,IAAI,CAAC,2CAE5E;AAED,iBAAS,YAAY,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,cAAc,CAAC,OAAO,CAAC,2CAEtF;AAED,iBAAS,UAAU,CAAC,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,cAAc,CAAC,KAAK,CAAC,2CAElF;AAsBD,iBAAS,YAAY,CAAC,EACpB,SAAS,EACT,QAAQ,EACR,IAAc,EACd,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,cAAc,CAAC,OAAO,CAAC,GAAG;IACvD,IAAI,CAAC,EAAE,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;CAC5C,2CA4BA;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAQxE;AAED,iBAAS,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,2CAQxE;AAED,iBAAS,UAAU,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,cAAc,CAAC,KAAK,CAAC,2CAQ7F;AAED,iBAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,cAAc,CAAC,WAAW,CAAC,2CAQzD;AAED,OAAO,EACL,KAAK,EACL,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,WAAW,EACX,WAAW,EACX,UAAU,EACV,gBAAgB,GACjB,CAAC"}
@@ -0,0 +1,40 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import * as React from 'react';
3
+ import * as SheetPrimitive from '@radix-ui/react-dialog';
4
+ import { XIcon } from 'lucide-react';
5
+ import { cn } from '../../lib/utils';
6
+ function Sheet({ ...props }) {
7
+ return _jsx(SheetPrimitive.Root, { "data-slot": "sheet", ...props });
8
+ }
9
+ function SheetTrigger({ ...props }) {
10
+ return _jsx(SheetPrimitive.Trigger, { "data-slot": "sheet-trigger", ...props });
11
+ }
12
+ function SheetClose({ ...props }) {
13
+ return _jsx(SheetPrimitive.Close, { "data-slot": "sheet-close", ...props });
14
+ }
15
+ function SheetPortal({ ...props }) {
16
+ return _jsx(SheetPrimitive.Portal, { "data-slot": "sheet-portal", ...props });
17
+ }
18
+ function SheetOverlay({ className, ...props }) {
19
+ return (_jsx(SheetPrimitive.Overlay, { "data-slot": "sheet-overlay", className: cn('data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50', className), ...props }));
20
+ }
21
+ function SheetContent({ className, children, side = 'right', ...props }) {
22
+ return (_jsxs(SheetPortal, { children: [_jsx(SheetOverlay, {}), _jsxs(SheetPrimitive.Content, { "data-slot": "sheet-content", className: cn('bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500', side === 'right' &&
23
+ 'data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm', side === 'left' &&
24
+ 'data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm', side === 'top' &&
25
+ 'data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b', side === 'bottom' &&
26
+ 'data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t', className), ...props, children: [children, _jsxs(SheetPrimitive.Close, { className: "ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none", children: [_jsx(XIcon, { className: "size-4" }), _jsx("span", { className: "sr-only", children: "Close" })] })] })] }));
27
+ }
28
+ function SheetHeader({ className, ...props }) {
29
+ return (_jsx("div", { "data-slot": "sheet-header", className: cn('flex flex-col gap-1.5 p-4', className), ...props }));
30
+ }
31
+ function SheetFooter({ className, ...props }) {
32
+ return (_jsx("div", { "data-slot": "sheet-footer", className: cn('mt-auto flex flex-col gap-2 p-4', className), ...props }));
33
+ }
34
+ function SheetTitle({ className, ...props }) {
35
+ return (_jsx(SheetPrimitive.Title, { "data-slot": "sheet-title", className: cn('text-foreground font-semibold', className), ...props }));
36
+ }
37
+ function SheetDescription({ className, ...props }) {
38
+ return (_jsx(SheetPrimitive.Description, { "data-slot": "sheet-description", className: cn('text-muted-foreground text-sm', className), ...props }));
39
+ }
40
+ export { Sheet, SheetTrigger, SheetClose, SheetContent, SheetHeader, SheetFooter, SheetTitle, SheetDescription, };
@@ -0,0 +1,67 @@
1
+ import * as React from 'react';
2
+ import { type VariantProps } from 'class-variance-authority';
3
+ import { Button, Input, Separator, TooltipContent } from '.';
4
+ type SidebarContextProps = {
5
+ state: 'expanded' | 'collapsed';
6
+ open: boolean;
7
+ setOpen: (open: boolean) => void;
8
+ openMobile: boolean;
9
+ setOpenMobile: (open: boolean) => void;
10
+ isMobile: boolean;
11
+ toggleSidebar: () => void;
12
+ };
13
+ declare function useSidebar(): SidebarContextProps | null;
14
+ declare function SidebarProvider({ defaultOpen, open: openProp, onOpenChange: setOpenProp, className, style, children, ...props }: React.ComponentProps<'div'> & {
15
+ defaultOpen?: boolean;
16
+ open?: boolean;
17
+ onOpenChange?: (open: boolean) => void;
18
+ }): import("react/jsx-runtime").JSX.Element;
19
+ declare function Sidebar({ side, variant, collapsible, className, children, ...props }: React.ComponentProps<'div'> & {
20
+ side?: 'left' | 'right';
21
+ variant?: 'sidebar' | 'floating' | 'inset';
22
+ collapsible?: 'offcanvas' | 'icon' | 'none';
23
+ }): import("react/jsx-runtime").JSX.Element;
24
+ declare function SidebarTrigger({ className, onClick, ...props }: React.ComponentProps<typeof Button>): import("react/jsx-runtime").JSX.Element;
25
+ declare function SidebarRail({ className, ...props }: React.ComponentProps<'button'>): import("react/jsx-runtime").JSX.Element;
26
+ declare function SidebarInset({ className, ...props }: React.ComponentProps<'main'>): import("react/jsx-runtime").JSX.Element;
27
+ declare function SidebarInput({ className, ...props }: React.ComponentProps<typeof Input>): import("react/jsx-runtime").JSX.Element;
28
+ declare function SidebarHeader({ className, ...props }: React.ComponentProps<'div'>): import("react/jsx-runtime").JSX.Element;
29
+ declare function SidebarFooter({ className, ...props }: React.ComponentProps<'div'>): import("react/jsx-runtime").JSX.Element;
30
+ declare function SidebarSeparator({ className, ...props }: React.ComponentProps<typeof Separator>): import("react/jsx-runtime").JSX.Element;
31
+ declare function SidebarContent({ className, ...props }: React.ComponentProps<'div'>): import("react/jsx-runtime").JSX.Element;
32
+ declare function SidebarGroup({ className, ...props }: React.ComponentProps<'div'>): import("react/jsx-runtime").JSX.Element;
33
+ declare function SidebarGroupLabel({ className, asChild, ...props }: React.ComponentProps<'div'> & {
34
+ asChild?: boolean;
35
+ }): import("react/jsx-runtime").JSX.Element;
36
+ declare function SidebarGroupAction({ className, asChild, ...props }: React.ComponentProps<'button'> & {
37
+ asChild?: boolean;
38
+ }): import("react/jsx-runtime").JSX.Element;
39
+ declare function SidebarGroupContent({ className, ...props }: React.ComponentProps<'div'>): import("react/jsx-runtime").JSX.Element;
40
+ declare function SidebarMenu({ className, ...props }: React.ComponentProps<'ul'>): import("react/jsx-runtime").JSX.Element;
41
+ declare function SidebarMenuItem({ className, ...props }: React.ComponentProps<'li'>): import("react/jsx-runtime").JSX.Element;
42
+ declare const sidebarMenuButtonVariants: (props?: ({
43
+ variant?: "default" | "outline" | null | undefined;
44
+ size?: "default" | "sm" | "lg" | null | undefined;
45
+ } & import("class-variance-authority/types").ClassProp) | undefined) => string;
46
+ declare function SidebarMenuButton({ asChild, isActive, variant, size, tooltip, className, ...props }: React.ComponentProps<'button'> & {
47
+ asChild?: boolean;
48
+ isActive?: boolean;
49
+ tooltip?: string | React.ComponentProps<typeof TooltipContent>;
50
+ } & VariantProps<typeof sidebarMenuButtonVariants>): import("react/jsx-runtime").JSX.Element;
51
+ declare function SidebarMenuAction({ className, asChild, showOnHover, ...props }: React.ComponentProps<'button'> & {
52
+ asChild?: boolean;
53
+ showOnHover?: boolean;
54
+ }): import("react/jsx-runtime").JSX.Element;
55
+ declare function SidebarMenuBadge({ className, ...props }: React.ComponentProps<'div'>): import("react/jsx-runtime").JSX.Element;
56
+ declare function SidebarMenuSkeleton({ className, showIcon, ...props }: React.ComponentProps<'div'> & {
57
+ showIcon?: boolean;
58
+ }): import("react/jsx-runtime").JSX.Element;
59
+ declare function SidebarMenuSub({ className, ...props }: React.ComponentProps<'ul'>): import("react/jsx-runtime").JSX.Element;
60
+ declare function SidebarMenuSubItem({ className, ...props }: React.ComponentProps<'li'>): import("react/jsx-runtime").JSX.Element;
61
+ declare function SidebarMenuSubButton({ asChild, size, isActive, className, ...props }: React.ComponentProps<'a'> & {
62
+ asChild?: boolean;
63
+ size?: 'sm' | 'md';
64
+ isActive?: boolean;
65
+ }): import("react/jsx-runtime").JSX.Element;
66
+ export { Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, useSidebar, };
67
+ //# sourceMappingURL=sidebar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sidebar.d.ts","sourceRoot":"","sources":["../../../src/components/ui/sidebar.tsx"],"names":[],"mappings":"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"}