@shellui/core 0.0.4

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 (247) hide show
  1. package/README.md +17 -0
  2. package/dist/ContentView-CZG-ro_B.js +146 -0
  3. package/dist/ContentView-CZG-ro_B.js.map +1 -0
  4. package/dist/CookiePreferencesView-MhO9FO-4.js +213 -0
  5. package/dist/CookiePreferencesView-MhO9FO-4.js.map +1 -0
  6. package/dist/DefaultLayout-Dbb3uJED.js +394 -0
  7. package/dist/DefaultLayout-Dbb3uJED.js.map +1 -0
  8. package/dist/FullscreenLayout-1SgPHWw-.js +30 -0
  9. package/dist/FullscreenLayout-1SgPHWw-.js.map +1 -0
  10. package/dist/HomeView-DYU-O_Il.js +21 -0
  11. package/dist/HomeView-DYU-O_Il.js.map +1 -0
  12. package/dist/NotFoundView-CeYjJNg0.js +52 -0
  13. package/dist/NotFoundView-CeYjJNg0.js.map +1 -0
  14. package/dist/OverlayShell-pzbqQW25.js +642 -0
  15. package/dist/OverlayShell-pzbqQW25.js.map +1 -0
  16. package/dist/SettingsView-Bndrta44.js +2207 -0
  17. package/dist/SettingsView-Bndrta44.js.map +1 -0
  18. package/dist/ViewRoute-ChSPabOy.js +32 -0
  19. package/dist/ViewRoute-ChSPabOy.js.map +1 -0
  20. package/dist/WindowsLayout-CXGNPKoY.js +633 -0
  21. package/dist/WindowsLayout-CXGNPKoY.js.map +1 -0
  22. package/dist/app.d.ts +3 -0
  23. package/dist/app.d.ts.map +1 -0
  24. package/dist/components/ContentView.d.ts +10 -0
  25. package/dist/components/ContentView.d.ts.map +1 -0
  26. package/dist/components/HomeView.d.ts +2 -0
  27. package/dist/components/HomeView.d.ts.map +1 -0
  28. package/dist/components/LoadingOverlay.d.ts +2 -0
  29. package/dist/components/LoadingOverlay.d.ts.map +1 -0
  30. package/dist/components/NotFoundView.d.ts +2 -0
  31. package/dist/components/NotFoundView.d.ts.map +1 -0
  32. package/dist/components/RouteErrorBoundary.d.ts +2 -0
  33. package/dist/components/RouteErrorBoundary.d.ts.map +1 -0
  34. package/dist/components/ViewRoute.d.ts +7 -0
  35. package/dist/components/ViewRoute.d.ts.map +1 -0
  36. package/dist/components/ui/alert-dialog.d.ts +32 -0
  37. package/dist/components/ui/alert-dialog.d.ts.map +1 -0
  38. package/dist/components/ui/breadcrumb.d.ts +20 -0
  39. package/dist/components/ui/breadcrumb.d.ts.map +1 -0
  40. package/dist/components/ui/button-group.d.ts +7 -0
  41. package/dist/components/ui/button-group.d.ts.map +1 -0
  42. package/dist/components/ui/button.d.ts +12 -0
  43. package/dist/components/ui/button.d.ts.map +1 -0
  44. package/dist/components/ui/dialog.d.ts +24 -0
  45. package/dist/components/ui/dialog.d.ts.map +1 -0
  46. package/dist/components/ui/drawer.d.ts +38 -0
  47. package/dist/components/ui/drawer.d.ts.map +1 -0
  48. package/dist/components/ui/select.d.ts +5 -0
  49. package/dist/components/ui/select.d.ts.map +1 -0
  50. package/dist/components/ui/sidebar.d.ts +46 -0
  51. package/dist/components/ui/sidebar.d.ts.map +1 -0
  52. package/dist/components/ui/sonner.d.ts +6 -0
  53. package/dist/components/ui/sonner.d.ts.map +1 -0
  54. package/dist/components/ui/switch.d.ts +8 -0
  55. package/dist/components/ui/switch.d.ts.map +1 -0
  56. package/dist/constants/urls.d.ts +6 -0
  57. package/dist/constants/urls.d.ts.map +1 -0
  58. package/dist/constants/urls.js +8 -0
  59. package/dist/constants/urls.js.map +1 -0
  60. package/dist/features/alertDialog/DialogContext.d.ts +12 -0
  61. package/dist/features/alertDialog/DialogContext.d.ts.map +1 -0
  62. package/dist/features/config/ConfigProvider.d.ts +15 -0
  63. package/dist/features/config/ConfigProvider.d.ts.map +1 -0
  64. package/dist/features/config/types.d.ts +177 -0
  65. package/dist/features/config/types.d.ts.map +1 -0
  66. package/dist/features/config/useConfig.d.ts +8 -0
  67. package/dist/features/config/useConfig.d.ts.map +1 -0
  68. package/dist/features/cookieConsent/CookieConsentModal.d.ts +6 -0
  69. package/dist/features/cookieConsent/CookieConsentModal.d.ts.map +1 -0
  70. package/dist/features/cookieConsent/CookiePreferencesView.d.ts +2 -0
  71. package/dist/features/cookieConsent/CookiePreferencesView.d.ts.map +1 -0
  72. package/dist/features/cookieConsent/cookieConsent.d.ts +22 -0
  73. package/dist/features/cookieConsent/cookieConsent.d.ts.map +1 -0
  74. package/dist/features/cookieConsent/useCookieConsent.d.ts +15 -0
  75. package/dist/features/cookieConsent/useCookieConsent.d.ts.map +1 -0
  76. package/dist/features/drawer/DrawerContext.d.ts +24 -0
  77. package/dist/features/drawer/DrawerContext.d.ts.map +1 -0
  78. package/dist/features/layouts/AppLayout.d.ts +12 -0
  79. package/dist/features/layouts/AppLayout.d.ts.map +1 -0
  80. package/dist/features/layouts/DefaultLayout.d.ts +10 -0
  81. package/dist/features/layouts/DefaultLayout.d.ts.map +1 -0
  82. package/dist/features/layouts/FullscreenLayout.d.ts +9 -0
  83. package/dist/features/layouts/FullscreenLayout.d.ts.map +1 -0
  84. package/dist/features/layouts/LayoutProviders.d.ts +9 -0
  85. package/dist/features/layouts/LayoutProviders.d.ts.map +1 -0
  86. package/dist/features/layouts/OverlayShell.d.ts +10 -0
  87. package/dist/features/layouts/OverlayShell.d.ts.map +1 -0
  88. package/dist/features/layouts/WindowsLayout.d.ts +24 -0
  89. package/dist/features/layouts/WindowsLayout.d.ts.map +1 -0
  90. package/dist/features/layouts/utils.d.ts +16 -0
  91. package/dist/features/layouts/utils.d.ts.map +1 -0
  92. package/dist/features/modal/ModalContext.d.ts +20 -0
  93. package/dist/features/modal/ModalContext.d.ts.map +1 -0
  94. package/dist/features/sentry/initSentry.d.ts +14 -0
  95. package/dist/features/sentry/initSentry.d.ts.map +1 -0
  96. package/dist/features/settings/SettingsContext.d.ts +10 -0
  97. package/dist/features/settings/SettingsContext.d.ts.map +1 -0
  98. package/dist/features/settings/SettingsIcons.d.ts +22 -0
  99. package/dist/features/settings/SettingsIcons.d.ts.map +1 -0
  100. package/dist/features/settings/SettingsProvider.d.ts +5 -0
  101. package/dist/features/settings/SettingsProvider.d.ts.map +1 -0
  102. package/dist/features/settings/SettingsRoutes.d.ts +7 -0
  103. package/dist/features/settings/SettingsRoutes.d.ts.map +1 -0
  104. package/dist/features/settings/SettingsView.d.ts +2 -0
  105. package/dist/features/settings/SettingsView.d.ts.map +1 -0
  106. package/dist/features/settings/components/Advanced.d.ts +2 -0
  107. package/dist/features/settings/components/Advanced.d.ts.map +1 -0
  108. package/dist/features/settings/components/Appearance.d.ts +2 -0
  109. package/dist/features/settings/components/Appearance.d.ts.map +1 -0
  110. package/dist/features/settings/components/DataPrivacy.d.ts +2 -0
  111. package/dist/features/settings/components/DataPrivacy.d.ts.map +1 -0
  112. package/dist/features/settings/components/Develop.d.ts +2 -0
  113. package/dist/features/settings/components/Develop.d.ts.map +1 -0
  114. package/dist/features/settings/components/LanguageAndRegion.d.ts +2 -0
  115. package/dist/features/settings/components/LanguageAndRegion.d.ts.map +1 -0
  116. package/dist/features/settings/components/ServiceWorker.d.ts +2 -0
  117. package/dist/features/settings/components/ServiceWorker.d.ts.map +1 -0
  118. package/dist/features/settings/components/UpdateApp.d.ts +2 -0
  119. package/dist/features/settings/components/UpdateApp.d.ts.map +1 -0
  120. package/dist/features/settings/components/develop/DialogTestButtons.d.ts +2 -0
  121. package/dist/features/settings/components/develop/DialogTestButtons.d.ts.map +1 -0
  122. package/dist/features/settings/components/develop/DrawerTestButtons.d.ts +2 -0
  123. package/dist/features/settings/components/develop/DrawerTestButtons.d.ts.map +1 -0
  124. package/dist/features/settings/components/develop/ModalTestButtons.d.ts +2 -0
  125. package/dist/features/settings/components/develop/ModalTestButtons.d.ts.map +1 -0
  126. package/dist/features/settings/components/develop/ToastTestButtons.d.ts +2 -0
  127. package/dist/features/settings/components/develop/ToastTestButtons.d.ts.map +1 -0
  128. package/dist/features/settings/hooks/useSettings.d.ts +2 -0
  129. package/dist/features/settings/hooks/useSettings.d.ts.map +1 -0
  130. package/dist/features/sonner/SonnerContext.d.ts +29 -0
  131. package/dist/features/sonner/SonnerContext.d.ts.map +1 -0
  132. package/dist/features/theme/ThemeProvider.d.ts +11 -0
  133. package/dist/features/theme/ThemeProvider.d.ts.map +1 -0
  134. package/dist/features/theme/themes.d.ts +114 -0
  135. package/dist/features/theme/themes.d.ts.map +1 -0
  136. package/dist/features/theme/useTheme.d.ts +10 -0
  137. package/dist/features/theme/useTheme.d.ts.map +1 -0
  138. package/dist/i18n/I18nProvider.d.ts +9 -0
  139. package/dist/i18n/I18nProvider.d.ts.map +1 -0
  140. package/dist/i18n/config.d.ts +23 -0
  141. package/dist/i18n/config.d.ts.map +1 -0
  142. package/dist/i18n/translations/en/common.json.d.ts +19 -0
  143. package/dist/i18n/translations/en/cookieConsent.json.d.ts +53 -0
  144. package/dist/i18n/translations/en/settings.json.d.ts +358 -0
  145. package/dist/i18n/translations/fr/common.json.d.ts +19 -0
  146. package/dist/i18n/translations/fr/cookieConsent.json.d.ts +53 -0
  147. package/dist/i18n/translations/fr/settings.json.d.ts +358 -0
  148. package/dist/index-lmRk5L6z.js +2160 -0
  149. package/dist/index-lmRk5L6z.js.map +1 -0
  150. package/dist/index.d.ts +7 -0
  151. package/dist/index.d.ts.map +1 -0
  152. package/dist/index.js +12 -0
  153. package/dist/index.js.map +1 -0
  154. package/dist/lib/utils.d.ts +3 -0
  155. package/dist/lib/utils.d.ts.map +1 -0
  156. package/dist/lib/z-index.d.ts +29 -0
  157. package/dist/lib/z-index.d.ts.map +1 -0
  158. package/dist/router/router.d.ts +3 -0
  159. package/dist/router/router.d.ts.map +1 -0
  160. package/dist/router/routes.d.ts +4 -0
  161. package/dist/router/routes.d.ts.map +1 -0
  162. package/dist/sidebar-ClIeZ2zb.js +303 -0
  163. package/dist/sidebar-ClIeZ2zb.js.map +1 -0
  164. package/dist/style.css +1 -0
  165. package/dist/switch-8SzUJz7Q.js +44 -0
  166. package/dist/switch-8SzUJz7Q.js.map +1 -0
  167. package/dist/types.js +2 -0
  168. package/dist/types.js.map +1 -0
  169. package/package.json +93 -0
  170. package/postcss.config.js +6 -0
  171. package/src/app.tsx +119 -0
  172. package/src/components/ContentView.tsx +258 -0
  173. package/src/components/HomeView.tsx +19 -0
  174. package/src/components/LoadingOverlay.tsx +12 -0
  175. package/src/components/NotFoundView.tsx +84 -0
  176. package/src/components/RouteErrorBoundary.tsx +95 -0
  177. package/src/components/ViewRoute.tsx +47 -0
  178. package/src/components/ui/alert-dialog.tsx +181 -0
  179. package/src/components/ui/breadcrumb.tsx +155 -0
  180. package/src/components/ui/button-group.tsx +52 -0
  181. package/src/components/ui/button.tsx +51 -0
  182. package/src/components/ui/dialog.tsx +160 -0
  183. package/src/components/ui/drawer.tsx +200 -0
  184. package/src/components/ui/select.tsx +24 -0
  185. package/src/components/ui/sidebar.tsx +406 -0
  186. package/src/components/ui/sonner.tsx +36 -0
  187. package/src/components/ui/switch.tsx +45 -0
  188. package/src/constants/urls.ts +4 -0
  189. package/src/features/alertDialog/DialogContext.tsx +468 -0
  190. package/src/features/config/ConfigProvider.ts +96 -0
  191. package/src/features/config/types.ts +195 -0
  192. package/src/features/config/useConfig.ts +15 -0
  193. package/src/features/cookieConsent/CookieConsentModal.tsx +122 -0
  194. package/src/features/cookieConsent/CookiePreferencesView.tsx +328 -0
  195. package/src/features/cookieConsent/cookieConsent.ts +84 -0
  196. package/src/features/cookieConsent/useCookieConsent.ts +39 -0
  197. package/src/features/drawer/DrawerContext.tsx +116 -0
  198. package/src/features/layouts/AppLayout.tsx +63 -0
  199. package/src/features/layouts/DefaultLayout.tsx +625 -0
  200. package/src/features/layouts/FullscreenLayout.tsx +55 -0
  201. package/src/features/layouts/LayoutProviders.tsx +20 -0
  202. package/src/features/layouts/OverlayShell.tsx +171 -0
  203. package/src/features/layouts/WindowsLayout.tsx +860 -0
  204. package/src/features/layouts/utils.ts +99 -0
  205. package/src/features/modal/ModalContext.tsx +112 -0
  206. package/src/features/sentry/initSentry.ts +72 -0
  207. package/src/features/settings/SettingsContext.tsx +19 -0
  208. package/src/features/settings/SettingsIcons.tsx +452 -0
  209. package/src/features/settings/SettingsProvider.tsx +341 -0
  210. package/src/features/settings/SettingsRoutes.tsx +66 -0
  211. package/src/features/settings/SettingsView.tsx +327 -0
  212. package/src/features/settings/components/Advanced.tsx +128 -0
  213. package/src/features/settings/components/Appearance.tsx +306 -0
  214. package/src/features/settings/components/DataPrivacy.tsx +142 -0
  215. package/src/features/settings/components/Develop.tsx +174 -0
  216. package/src/features/settings/components/LanguageAndRegion.tsx +329 -0
  217. package/src/features/settings/components/ServiceWorker.tsx +363 -0
  218. package/src/features/settings/components/UpdateApp.tsx +206 -0
  219. package/src/features/settings/components/develop/DialogTestButtons.tsx +137 -0
  220. package/src/features/settings/components/develop/DrawerTestButtons.tsx +67 -0
  221. package/src/features/settings/components/develop/ModalTestButtons.tsx +30 -0
  222. package/src/features/settings/components/develop/ToastTestButtons.tsx +179 -0
  223. package/src/features/settings/hooks/useSettings.tsx +10 -0
  224. package/src/features/sonner/SonnerContext.tsx +286 -0
  225. package/src/features/theme/ThemeProvider.tsx +16 -0
  226. package/src/features/theme/themes.ts +561 -0
  227. package/src/features/theme/useTheme.tsx +71 -0
  228. package/src/i18n/I18nProvider.tsx +32 -0
  229. package/src/i18n/config.ts +107 -0
  230. package/src/i18n/translations/en/common.json +16 -0
  231. package/src/i18n/translations/en/cookieConsent.json +50 -0
  232. package/src/i18n/translations/en/settings.json +355 -0
  233. package/src/i18n/translations/fr/common.json +16 -0
  234. package/src/i18n/translations/fr/cookieConsent.json +50 -0
  235. package/src/i18n/translations/fr/settings.json +355 -0
  236. package/src/index.css +412 -0
  237. package/src/index.html +100 -0
  238. package/src/index.ts +31 -0
  239. package/src/lib/utils.ts +6 -0
  240. package/src/lib/z-index.ts +29 -0
  241. package/src/main.tsx +26 -0
  242. package/src/router/router.tsx +8 -0
  243. package/src/router/routes.tsx +115 -0
  244. package/src/service-worker/register.ts +1199 -0
  245. package/src/service-worker/sw-dev.ts +87 -0
  246. package/src/service-worker/sw.ts +105 -0
  247. package/tailwind.config.js +60 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WindowsLayout-CXGNPKoY.js","sources":["../src/features/layouts/WindowsLayout.tsx"],"sourcesContent":["import {\n useMemo,\n useState,\n useCallback,\n useRef,\n useEffect,\n type PointerEvent as ReactPointerEvent,\n} from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { shellui } from '@shellui/sdk';\nimport type { NavigationItem, NavigationGroup } from '../config/types';\nimport {\n flattenNavigationItems,\n resolveLocalizedString as resolveNavLabel,\n splitNavigationByPosition,\n} from './utils';\nimport { useSettings } from '../settings/hooks/useSettings';\nimport { LayoutProviders } from './LayoutProviders';\nimport { OverlayShell } from './OverlayShell';\nimport { ContentView } from '@/components/ContentView';\nimport { cn } from '@/lib/utils';\nimport { Z_INDEX } from '@/lib/z-index';\n\ninterface WindowsLayoutProps {\n title?: string;\n appIcon?: string;\n logo?: string;\n navigation: (NavigationItem | NavigationGroup)[];\n}\n\nconst getExternalFaviconUrl = (url: string): string | null => {\n try {\n const parsed = new URL(url);\n const hostname = parsed.hostname;\n if (!hostname) return null;\n return `https://icons.duckduckgo.com/ip3/${hostname}.ico`;\n } catch {\n return null;\n }\n};\n\n/** True when the icon is a local app icon (/icons/); apply theme (dark invert) so it matches foreground. */\nconst isAppIcon = (src: string) => src.startsWith('/icons/');\n\nconst genId = () => `win-${Date.now()}-${Math.random().toString(36).slice(2)}`;\n\nexport interface WindowState {\n id: string;\n path: string;\n pathname: string;\n baseUrl: string;\n label: string;\n icon: string | null;\n bounds: { x: number; y: number; w: number; h: number };\n}\n\nconst MIN_WIDTH = 280;\nconst MIN_HEIGHT = 200;\nconst DEFAULT_WIDTH = 720;\nconst DEFAULT_HEIGHT = 480;\nconst TASKBAR_HEIGHT = 48;\n\nfunction getMaximizedBounds(): WindowState['bounds'] {\n return {\n x: 0,\n y: 0,\n w: typeof window !== 'undefined' ? window.innerWidth : 800,\n h: typeof window !== 'undefined' ? window.innerHeight - TASKBAR_HEIGHT : 600,\n };\n}\n\nfunction buildFinalUrl(baseUrl: string, path: string, pathname: string): string {\n const pathPrefix = `/${path}`;\n const subPath = pathname.length > pathPrefix.length ? pathname.slice(pathPrefix.length + 1) : '';\n if (!subPath) return baseUrl;\n const base = baseUrl.endsWith('/') ? baseUrl : `${baseUrl}/`;\n return `${base}${subPath}`;\n}\n\n/** Single draggable/resizable window */\nfunction AppWindow({\n win,\n navItem,\n currentLanguage,\n isFocused,\n onFocus,\n onClose,\n onBoundsChange,\n maxZIndex,\n zIndex,\n}: {\n win: WindowState;\n navItem: NavigationItem;\n currentLanguage: string;\n isFocused: boolean;\n onFocus: () => void;\n onClose: () => void;\n onBoundsChange: (bounds: WindowState['bounds']) => void;\n maxZIndex: number;\n zIndex: number;\n}) {\n const windowLabel = resolveNavLabel(navItem.label, currentLanguage);\n const [bounds, setBounds] = useState(win.bounds);\n const [isMaximized, setIsMaximized] = useState(false);\n const boundsBeforeMaximizeRef = useRef<WindowState['bounds']>(bounds);\n const containerRef = useRef<HTMLDivElement>(null);\n const dragRef = useRef<{\n startX: number;\n startY: number;\n startBounds: WindowState['bounds'];\n lastDx: number;\n lastDy: number;\n } | null>(null);\n const resizeRef = useRef<{\n edge: string;\n startX: number;\n startY: number;\n startBounds: WindowState['bounds'];\n } | null>(null);\n const resizeRafRef = useRef<number | null>(null);\n const pendingResizeBoundsRef = useRef<WindowState['bounds'] | null>(null);\n\n useEffect(() => {\n setBounds(win.bounds);\n }, [win.bounds]);\n\n useEffect(() => {\n onBoundsChange(bounds);\n }, [bounds, onBoundsChange]);\n\n // When maximized, keep filling the viewport on window resize\n useEffect(() => {\n if (!isMaximized) return;\n const onResize = () => setBounds(getMaximizedBounds());\n window.addEventListener('resize', onResize);\n return () => window.removeEventListener('resize', onResize);\n }, [isMaximized]);\n\n const onPointerMove = useCallback((e: PointerEvent) => {\n if (!dragRef.current) return;\n const d = dragRef.current;\n const dx = e.clientX - d.startX;\n const dy = e.clientY - d.startY;\n d.lastDx = dx;\n d.lastDy = dy;\n const el = containerRef.current;\n if (el) {\n el.style.willChange = 'transform';\n el.style.transform = `translate(${dx}px, ${dy}px)`;\n }\n }, []);\n\n const onPointerUp = useCallback(\n (e: PointerEvent) => {\n const el = containerRef.current;\n if (el) {\n el.removeEventListener('pointermove', onPointerMove);\n el.removeEventListener('pointerup', onPointerUp as (e: Event) => void);\n el.releasePointerCapture(e.pointerId);\n }\n if (dragRef.current) {\n const d = dragRef.current;\n if (el) {\n el.style.transform = '';\n el.style.willChange = '';\n }\n const finalBounds: WindowState['bounds'] = {\n ...d.startBounds,\n x: Math.max(0, d.startBounds.x + d.lastDx),\n y: Math.max(0, d.startBounds.y + d.lastDy),\n };\n setBounds(finalBounds);\n dragRef.current = null;\n }\n },\n [onPointerMove],\n );\n\n const handleTitlePointerDown = useCallback(\n (e: ReactPointerEvent) => {\n if (e.button !== 0 || isMaximized) return;\n // Don't start drag when clicking a button (close, maximize) so their click handlers run\n if ((e.target as Element).closest('button')) return;\n e.preventDefault();\n onFocus();\n dragRef.current = {\n startX: e.clientX,\n startY: e.clientY,\n startBounds: { ...bounds },\n lastDx: 0,\n lastDy: 0,\n };\n const el = containerRef.current;\n if (el) {\n el.setPointerCapture(e.pointerId);\n el.addEventListener('pointermove', onPointerMove, { passive: true });\n el.addEventListener('pointerup', onPointerUp as (e: Event) => void);\n }\n },\n [bounds, isMaximized, onFocus, onPointerMove, onPointerUp],\n );\n\n const handleMaximizeToggle = useCallback(() => {\n if (isMaximized) {\n setBounds(boundsBeforeMaximizeRef.current);\n setIsMaximized(false);\n } else {\n boundsBeforeMaximizeRef.current = { ...bounds };\n setBounds(getMaximizedBounds());\n setIsMaximized(true);\n }\n }, [isMaximized, bounds]);\n\n const onResizePointerMove = useCallback((e: PointerEvent) => {\n if (!resizeRef.current) return;\n const { edge, startX, startY, startBounds } = resizeRef.current;\n const dx = e.clientX - startX;\n const dy = e.clientY - startY;\n const next: WindowState['bounds'] = { ...startBounds };\n if (edge.includes('e')) next.w = Math.max(MIN_WIDTH, startBounds.w + dx);\n if (edge.includes('w')) {\n const newW = Math.max(MIN_WIDTH, startBounds.w - dx);\n next.x = startBounds.x + startBounds.w - newW;\n next.w = newW;\n }\n if (edge.includes('s')) next.h = Math.max(MIN_HEIGHT, startBounds.h + dy);\n if (edge.includes('n')) {\n const newH = Math.max(MIN_HEIGHT, startBounds.h - dy);\n next.y = startBounds.y + startBounds.h - newH;\n next.h = newH;\n }\n pendingResizeBoundsRef.current = next;\n if (resizeRafRef.current === null) {\n resizeRafRef.current = requestAnimationFrame(() => {\n const pending = pendingResizeBoundsRef.current;\n resizeRafRef.current = null;\n pendingResizeBoundsRef.current = null;\n if (pending) setBounds(pending);\n });\n }\n }, []);\n\n const onResizePointerUp = useCallback(\n (e: PointerEvent) => {\n const el = containerRef.current;\n if (el) {\n el.removeEventListener('pointermove', onResizePointerMove as (e: Event) => void);\n el.removeEventListener('pointerup', onResizePointerUp as (e: Event) => void);\n el.releasePointerCapture(e.pointerId);\n }\n resizeRef.current = null;\n },\n [onResizePointerMove],\n );\n\n const handleResizePointerDown = useCallback(\n (e: ReactPointerEvent, edge: string) => {\n if (e.button !== 0) return;\n e.preventDefault();\n e.stopPropagation();\n onFocus();\n resizeRef.current = {\n edge,\n startX: e.clientX,\n startY: e.clientY,\n startBounds: { ...bounds },\n };\n const el = containerRef.current;\n if (el) {\n el.setPointerCapture(e.pointerId);\n el.addEventListener('pointermove', onResizePointerMove as (e: Event) => void, {\n passive: true,\n });\n el.addEventListener('pointerup', onResizePointerUp as (e: Event) => void);\n }\n },\n [bounds, onFocus, onResizePointerMove, onResizePointerUp],\n );\n\n const finalUrl = useMemo(\n () => buildFinalUrl(win.baseUrl, win.path, win.pathname),\n [win.baseUrl, win.path, win.pathname],\n );\n\n const z = isFocused ? maxZIndex : zIndex;\n\n return (\n <div\n ref={containerRef}\n className=\"absolute flex flex-col rounded-lg border border-border bg-card shadow-lg overflow-hidden\"\n style={{\n left: bounds.x,\n top: bounds.y,\n width: bounds.w,\n height: bounds.h,\n zIndex: z,\n }}\n onClick={onFocus}\n onMouseDown={onFocus}\n >\n {/* Title bar: pointer capture so drag continues when cursor is over iframe or outside window */}\n <div\n className=\"flex items-center gap-2 pl-2 pr-1 py-1 bg-muted/80 border-b border-border cursor-move select-none shrink-0\"\n onPointerDown={handleTitlePointerDown}\n >\n {win.icon && (\n <img\n src={win.icon}\n alt=\"\"\n className={cn(\n 'h-4 w-4 shrink-0 rounded-sm object-cover',\n isAppIcon(win.icon) && 'opacity-90 dark:opacity-100 dark:invert',\n )}\n />\n )}\n <span className=\"flex-1 text-sm font-medium truncate min-w-0\">{windowLabel}</span>\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n handleMaximizeToggle();\n }}\n className=\"p-1 rounded cursor-pointer text-muted-foreground hover:bg-sidebar-accent/50 hover:text-sidebar-foreground transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\"\n aria-label={isMaximized ? 'Restore' : 'Maximize'}\n >\n {isMaximized ? <RestoreIcon className=\"h-4 w-4\" /> : <MaximizeIcon className=\"h-4 w-4\" />}\n </button>\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n onClose();\n }}\n className=\"p-1 rounded cursor-pointer text-muted-foreground hover:bg-destructive/20 hover:text-destructive transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\"\n aria-label=\"Close\"\n >\n <CloseIcon className=\"h-4 w-4\" />\n </button>\n </div>\n {/* Content */}\n <div className=\"flex-1 min-h-0 relative bg-background\">\n {/* When not focused, overlay captures clicks to bring window to front */}\n {!isFocused && (\n <div\n className=\"absolute inset-0 z-10 cursor-pointer\"\n onClick={onFocus}\n onMouseDown={(e) => {\n e.stopPropagation();\n onFocus();\n }}\n aria-hidden\n />\n )}\n <ContentView\n url={finalUrl}\n pathPrefix={win.path}\n ignoreMessages={true}\n navItem={navItem}\n />\n </div>\n {/* Resize handles (hidden when maximized) */}\n {!isMaximized &&\n (['n', 's', 'e', 'w', 'ne', 'nw', 'se', 'sw'] as const).map((edge) => (\n <div\n key={edge}\n className={cn(\n 'absolute bg-transparent',\n edge.includes('n') && 'top-0 h-2 cursor-n-resize',\n edge.includes('s') && 'bottom-0 h-2 cursor-s-resize',\n edge.includes('e') && 'right-0 w-2 cursor-e-resize',\n edge.includes('w') && 'left-0 w-2 cursor-w-resize',\n edge === 'n' && 'left-2 right-2',\n edge === 's' && 'left-2 right-2',\n edge === 'e' && 'top-2 bottom-2',\n edge === 'w' && 'top-2 bottom-2',\n edge === 'ne' && 'top-0 right-0 w-2 h-2 cursor-ne-resize',\n edge === 'nw' && 'top-0 left-0 w-2 h-2 cursor-nw-resize',\n edge === 'se' && 'bottom-0 right-0 w-2 h-2 cursor-se-resize',\n edge === 'sw' && 'bottom-0 left-0 w-2 h-2 cursor-sw-resize',\n )}\n style={\n edge === 'n'\n ? { left: 8, right: 8 }\n : edge === 's'\n ? { left: 8, right: 8 }\n : edge === 'e'\n ? { top: 8, bottom: 8 }\n : edge === 'w'\n ? { top: 8, bottom: 8 }\n : undefined\n }\n onPointerDown={(e) => handleResizePointerDown(e, edge)}\n />\n ))}\n </div>\n );\n}\n\nfunction MaximizeIcon({ className }: { className?: string }) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={className}\n aria-hidden\n >\n <path d=\"M8 3H5a2 2 0 0 0-2 2v3\" />\n <path d=\"M21 8V5a2 2 0 0 0-2-2h-3\" />\n <path d=\"M3 16v3a2 2 0 0 0 2 2h3\" />\n <path d=\"M16 21h3a2 2 0 0 0 2-2v-3\" />\n </svg>\n );\n}\n\nfunction RestoreIcon({ className }: { className?: string }) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={className}\n aria-hidden\n >\n <rect\n x=\"3\"\n y=\"3\"\n width=\"10\"\n height=\"10\"\n rx=\"1\"\n />\n <rect\n x=\"11\"\n y=\"11\"\n width=\"10\"\n height=\"10\"\n rx=\"1\"\n />\n </svg>\n );\n}\n\nfunction CloseIcon({ className }: { className?: string }) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={className}\n aria-hidden\n >\n <path d=\"M18 6 6 18\" />\n <path d=\"m6 6 12 12\" />\n </svg>\n );\n}\n\n/** Start menu icon (Windows-style) */\nfunction StartIcon({ className }: { className?: string }) {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n className={className}\n aria-hidden\n >\n <path d=\"M3 3h8v8H3V3zm10 0h8v8h-8V3zM3 13h8v8H3v-8zm10 0h8v8h-8v-8z\" />\n </svg>\n );\n}\n\nfunction getBrowserTimezone(): string {\n if (typeof window !== 'undefined' && Intl.DateTimeFormat) {\n return Intl.DateTimeFormat().resolvedOptions().timeZone;\n }\n return 'UTC';\n}\n\nexport function WindowsLayout({\n title,\n appIcon: _appIcon,\n logo: _logo,\n navigation,\n}: WindowsLayoutProps) {\n const { i18n } = useTranslation();\n const { settings } = useSettings();\n const currentLanguage = i18n.language || 'en';\n const timeZone = settings.region?.timezone ?? getBrowserTimezone();\n const { startNavItems, endNavItems, navigationItems } = useMemo(() => {\n const { start, end } = splitNavigationByPosition(navigation);\n return {\n startNavItems: flattenNavigationItems(start),\n endNavItems: end,\n navigationItems: flattenNavigationItems(navigation),\n };\n }, [navigation]);\n\n const [windows, setWindows] = useState<WindowState[]>([]);\n /** Id of the window that is on top (first plan). Clicking a window or its taskbar button sets this. */\n const [frontWindowId, setFrontWindowId] = useState<string | null>(null);\n const [startMenuOpen, setStartMenuOpen] = useState(false);\n const [now, setNow] = useState(() => new Date());\n const startPanelRef = useRef<HTMLDivElement>(null);\n\n // Update date/time every second for taskbar clock\n useEffect(() => {\n const interval = setInterval(() => setNow(new Date()), 1000);\n return () => clearInterval(interval);\n }, []);\n\n /** Highest z-index: front window always gets this so it stays on top. */\n const maxZIndex = useMemo(\n () => Z_INDEX.WINDOWS_WINDOW_BASE + Math.max(windows.length, 1),\n [windows.length],\n );\n\n const openWindow = useCallback(\n (item: NavigationItem) => {\n const label =\n typeof item.label === 'string' ? item.label : resolveNavLabel(item.label, currentLanguage);\n const faviconUrl =\n item.openIn === 'external' && !item.icon ? getExternalFaviconUrl(item.url) : null;\n const icon = item.icon ?? faviconUrl ?? null;\n const id = genId();\n const bounds = {\n x: 60 + windows.length * 24,\n y: 60 + windows.length * 24,\n w: DEFAULT_WIDTH,\n h: DEFAULT_HEIGHT,\n };\n setWindows((prev) => [\n ...prev,\n {\n id,\n path: item.path,\n pathname: `/${item.path}`,\n baseUrl: item.url,\n label,\n icon,\n bounds,\n },\n ]);\n setFrontWindowId(id);\n setStartMenuOpen(false);\n },\n [currentLanguage, windows.length],\n );\n\n const closeWindow = useCallback((id: string) => {\n setWindows((prev) => prev.filter((w) => w.id !== id));\n setFrontWindowId((current) => (current === id ? null : current));\n }, []);\n\n // When front window is closed or missing, bring first window to front\n useEffect(() => {\n if (windows.length === 0) {\n setFrontWindowId(null);\n return;\n }\n const frontStillExists = frontWindowId !== null && windows.some((w) => w.id === frontWindowId);\n if (!frontStillExists) {\n setFrontWindowId(windows[0].id);\n }\n }, [windows, frontWindowId]);\n\n /** Bring the window to front (first plan). Used when clicking the window or its taskbar button. */\n const focusWindow = useCallback((id: string) => {\n setFrontWindowId(id);\n }, []);\n\n const updateWindowBounds = useCallback((id: string, bounds: WindowState['bounds']) => {\n setWindows((prev) => prev.map((w) => (w.id === id ? { ...w, bounds } : w)));\n }, []);\n\n // Close start menu on click outside\n useEffect(() => {\n if (!startMenuOpen) return;\n const onDocClick = (e: MouseEvent) => {\n if (startPanelRef.current && !startPanelRef.current.contains(e.target as Node)) {\n setStartMenuOpen(false);\n }\n };\n document.addEventListener('mousedown', onDocClick);\n return () => document.removeEventListener('mousedown', onDocClick);\n }, [startMenuOpen]);\n\n const handleNavClick = useCallback(\n (item: NavigationItem) => {\n if (item.openIn === 'modal') {\n shellui.openModal(item.url);\n setStartMenuOpen(false);\n return;\n }\n if (item.openIn === 'drawer') {\n shellui.openDrawer({ url: item.url, position: item.drawerPosition });\n setStartMenuOpen(false);\n return;\n }\n if (item.openIn === 'external') {\n window.open(item.url, '_blank', 'noopener,noreferrer');\n setStartMenuOpen(false);\n return;\n }\n openWindow(item);\n },\n [openWindow],\n );\n\n return (\n <LayoutProviders>\n <OverlayShell navigationItems={navigationItems}>\n <div\n className=\"fixed inset-0 bg-muted/30\"\n style={{ paddingBottom: TASKBAR_HEIGHT }}\n >\n {/* Desktop area: windows */}\n {windows.map((win, index) => {\n const navItem = navigationItems.find((n) => n.path === win.path);\n if (!navItem) return null;\n const isFocused = win.id === frontWindowId;\n const zIndex = Z_INDEX.WINDOWS_WINDOW_BASE + index;\n return (\n <AppWindow\n key={win.id}\n win={win}\n navItem={navItem}\n currentLanguage={currentLanguage}\n isFocused={isFocused}\n onFocus={() => focusWindow(win.id)}\n onClose={() => closeWindow(win.id)}\n onBoundsChange={(bounds) => updateWindowBounds(win.id, bounds)}\n maxZIndex={maxZIndex}\n zIndex={zIndex}\n />\n );\n })}\n </div>\n\n {/* Taskbar */}\n <div\n className=\"fixed left-0 right-0 bottom-0 flex items-center gap-1 px-2 border-t border-border bg-sidebar-background\"\n style={{\n height: TASKBAR_HEIGHT,\n zIndex: Z_INDEX.WINDOWS_TASKBAR,\n paddingBottom: 'env(safe-area-inset-bottom, 0px)',\n }}\n >\n {/* Start button */}\n <div\n className=\"relative shrink-0\"\n ref={startPanelRef}\n >\n <button\n type=\"button\"\n onClick={() => setStartMenuOpen((o) => !o)}\n className={cn(\n 'flex items-center gap-2 h-9 px-3 rounded cursor-pointer transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n startMenuOpen\n ? 'bg-sidebar-accent text-sidebar-accent-foreground'\n : 'text-sidebar-foreground hover:bg-sidebar-accent/50 hover:text-sidebar-foreground',\n )}\n aria-expanded={startMenuOpen}\n aria-haspopup=\"true\"\n aria-label=\"Start\"\n >\n <StartIcon className=\"h-5 w-5\" />\n <span className=\"font-semibold text-sm hidden sm:inline\">{title || 'Start'}</span>\n </button>\n {/* Start menu panel */}\n {startMenuOpen && (\n <div\n className=\"absolute bottom-full left-0 mb-1 w-64 max-h-[70vh] overflow-y-auto rounded-lg border border-border bg-popover shadow-lg py-2 z-[10001]\"\n style={{ zIndex: Z_INDEX.MODAL_CONTENT }}\n >\n <div className=\"px-2 pb-2 border-b border-border mb-2\">\n <span className=\"text-sm font-semibold text-popover-foreground\">\n {title || 'Applications'}\n </span>\n </div>\n <div className=\"grid gap-0.5\">\n {startNavItems\n .filter((item) => !item.hidden)\n .map((item) => {\n const label =\n typeof item.label === 'string'\n ? item.label\n : resolveNavLabel(item.label, currentLanguage);\n const icon =\n item.icon ??\n (item.openIn === 'external' ? getExternalFaviconUrl(item.url) : null);\n return (\n <button\n key={item.path}\n type=\"button\"\n onClick={() => handleNavClick(item)}\n className=\"flex items-center gap-3 w-full px-3 py-2 text-left text-sm cursor-pointer text-popover-foreground hover:bg-accent hover:text-accent-foreground rounded-none transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\"\n >\n {icon ? (\n <img\n src={icon}\n alt=\"\"\n className={cn(\n 'h-5 w-5 shrink-0 rounded-sm object-cover',\n isAppIcon(icon) && 'opacity-90 dark:opacity-100 dark:invert',\n )}\n />\n ) : (\n <span className=\"h-5 w-5 shrink-0 rounded-sm bg-muted\" />\n )}\n <span className=\"truncate\">{label}</span>\n </button>\n );\n })}\n </div>\n </div>\n )}\n </div>\n\n {/* Window list */}\n <div className=\"flex-1 flex items-center gap-1 min-w-0 overflow-x-auto\">\n {windows.map((win) => {\n const navItem = navigationItems.find((n) => n.path === win.path);\n const windowLabel = navItem\n ? resolveNavLabel(navItem.label, currentLanguage)\n : win.label;\n const isFocused = win.id === frontWindowId;\n return (\n <button\n key={win.id}\n type=\"button\"\n onClick={() => focusWindow(win.id)}\n onContextMenu={(e) => {\n e.preventDefault();\n closeWindow(win.id);\n }}\n className={cn(\n 'flex items-center gap-2 h-8 px-2 rounded min-w-0 max-w-[140px] shrink-0 cursor-pointer transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n isFocused\n ? 'bg-sidebar-accent text-sidebar-accent-foreground'\n : 'text-sidebar-foreground hover:bg-sidebar-accent/50 hover:text-sidebar-foreground',\n )}\n title={windowLabel}\n >\n {win.icon ? (\n <img\n src={win.icon}\n alt=\"\"\n className={cn(\n 'h-4 w-4 shrink-0 rounded-sm object-cover',\n isAppIcon(win.icon) && 'opacity-90 dark:opacity-100 dark:invert',\n )}\n />\n ) : (\n <span className=\"h-4 w-4 shrink-0 rounded-sm bg-muted\" />\n )}\n <span className=\"text-xs truncate\">{windowLabel}</span>\n </button>\n );\n })}\n </div>\n\n {/* End navigation items (right side of taskbar) */}\n {endNavItems.length > 0 && (\n <div className=\"flex items-center gap-0.5 shrink-0 border-l border-sidebar-border pl-2 ml-1\">\n {endNavItems.map((item) => {\n const label =\n typeof item.label === 'string'\n ? item.label\n : resolveNavLabel(item.label, currentLanguage);\n const icon =\n item.icon ??\n (item.openIn === 'external' ? getExternalFaviconUrl(item.url) : null);\n return (\n <button\n key={item.path}\n type=\"button\"\n onClick={() => handleNavClick(item)}\n className=\"flex items-center gap-2 h-8 px-2 rounded cursor-pointer text-sidebar-foreground hover:bg-sidebar-accent/50 hover:text-sidebar-foreground transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2\"\n title={label}\n >\n {icon ? (\n <img\n src={icon}\n alt=\"\"\n className={cn(\n 'h-4 w-4 shrink-0 rounded-sm object-cover',\n isAppIcon(icon) && 'opacity-90 dark:opacity-100 dark:invert',\n )}\n />\n ) : (\n <span className=\"h-4 w-4 shrink-0 rounded-sm bg-muted\" />\n )}\n <span className=\"text-xs truncate max-w-[100px]\">{label}</span>\n </button>\n );\n })}\n </div>\n )}\n\n {/* Date and time (extreme bottom right, OS-style); uses region timezone from settings */}\n <div\n className=\"flex flex-col items-end justify-center shrink-0 px-3 py-1 text-sidebar-foreground border-l border-sidebar-border ml-1 min-w-0\"\n style={{ paddingRight: 'max(0.75rem, env(safe-area-inset-right))' }}\n role=\"timer\"\n aria-live=\"off\"\n aria-label={new Intl.DateTimeFormat(currentLanguage, {\n timeZone,\n dateStyle: 'full',\n timeStyle: 'medium',\n }).format(now)}\n >\n <time\n dateTime={now.toISOString()}\n className=\"text-xs leading-tight tabular-nums whitespace-nowrap\"\n >\n {new Intl.DateTimeFormat(currentLanguage, {\n timeZone,\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit',\n }).format(now)}\n </time>\n <time\n dateTime={now.toISOString()}\n className=\"text-[10px] leading-tight whitespace-nowrap text-sidebar-foreground/90\"\n >\n {new Intl.DateTimeFormat(currentLanguage, {\n timeZone,\n weekday: 'short',\n day: 'numeric',\n month: 'short',\n }).format(now)}\n </time>\n </div>\n </div>\n </OverlayShell>\n </LayoutProviders>\n );\n}\n"],"names":["getExternalFaviconUrl","url","hostname","isAppIcon","src","genId","MIN_WIDTH","MIN_HEIGHT","DEFAULT_WIDTH","DEFAULT_HEIGHT","TASKBAR_HEIGHT","getMaximizedBounds","buildFinalUrl","baseUrl","path","pathname","pathPrefix","subPath","AppWindow","win","navItem","currentLanguage","isFocused","onFocus","onClose","onBoundsChange","maxZIndex","zIndex","windowLabel","resolveNavLabel","bounds","setBounds","useState","isMaximized","setIsMaximized","boundsBeforeMaximizeRef","useRef","containerRef","dragRef","resizeRef","resizeRafRef","pendingResizeBoundsRef","useEffect","onResize","onPointerMove","useCallback","e","d","dx","dy","el","onPointerUp","finalBounds","handleTitlePointerDown","handleMaximizeToggle","onResizePointerMove","edge","startX","startY","startBounds","next","newW","newH","pending","onResizePointerUp","handleResizePointerDown","finalUrl","useMemo","z","jsxs","jsx","cn","RestoreIcon","MaximizeIcon","CloseIcon","ContentView","className","StartIcon","getBrowserTimezone","WindowsLayout","title","_appIcon","_logo","navigation","i18n","useTranslation","settings","useSettings","timeZone","startNavItems","endNavItems","navigationItems","start","end","splitNavigationByPosition","flattenNavigationItems","windows","setWindows","frontWindowId","setFrontWindowId","startMenuOpen","setStartMenuOpen","now","setNow","startPanelRef","interval","Z_INDEX","openWindow","item","label","faviconUrl","icon","id","prev","closeWindow","w","current","focusWindow","updateWindowBounds","onDocClick","handleNavClick","shellui","LayoutProviders","OverlayShell","index","n","o"],"mappings":";;;;;;;AA8BA,MAAMA,IAAwB,CAACC,MAA+B;AAC5D,MAAI;AAEF,UAAMC,IADS,IAAI,IAAID,CAAG,EACF;AACxB,WAAKC,IACE,oCAAoCA,CAAQ,SAD7B;AAAA,EAExB,QAAQ;AACN,WAAO;AAAA,EACT;AACF,GAGMC,IAAY,CAACC,MAAgBA,EAAI,WAAW,SAAS,GAErDC,KAAQ,MAAM,OAAO,KAAK,KAAK,IAAI,KAAK,OAAA,EAAS,SAAS,EAAE,EAAE,MAAM,CAAC,CAAC,IAYtEC,IAAY,KACZC,KAAa,KACbC,KAAgB,KAChBC,KAAiB,KACjBC,IAAiB;AAEvB,SAASC,KAA4C;AACnD,SAAO;AAAA,IACL,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG,OAAO,SAAW,MAAc,OAAO,aAAa;AAAA,IACvD,GAAG,OAAO,SAAW,MAAc,OAAO,cAAcD,IAAiB;AAAA,EAAA;AAE7E;AAEA,SAASE,GAAcC,GAAiBC,GAAcC,GAA0B;AAC9E,QAAMC,IAAa,IAAIF,CAAI,IACrBG,IAAUF,EAAS,SAASC,EAAW,SAASD,EAAS,MAAMC,EAAW,SAAS,CAAC,IAAI;AAC9F,SAAKC,IAEE,GADMJ,EAAQ,SAAS,GAAG,IAAIA,IAAU,GAAGA,CAAO,GAC3C,GAAGI,CAAO,KAFHJ;AAGvB;AAGA,SAASK,GAAU;AAAA,EACjB,KAAAC;AAAA,EACA,SAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,WAAAC;AAAA,EACA,SAAAC;AAAA,EACA,SAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,WAAAC;AAAA,EACA,QAAAC;AACF,GAUG;AACD,QAAMC,IAAcC,EAAgBT,EAAQ,OAAOC,CAAe,GAC5D,CAACS,GAAQC,CAAS,IAAIC,EAASb,EAAI,MAAM,GACzC,CAACc,GAAaC,CAAc,IAAIF,EAAS,EAAK,GAC9CG,IAA0BC,EAA8BN,CAAM,GAC9DO,IAAeD,EAAuB,IAAI,GAC1CE,IAAUF,EAMN,IAAI,GACRG,IAAYH,EAKR,IAAI,GACRI,IAAeJ,EAAsB,IAAI,GACzCK,IAAyBL,EAAqC,IAAI;AAExE,EAAAM,EAAU,MAAM;AACd,IAAAX,EAAUZ,EAAI,MAAM;AAAA,EACtB,GAAG,CAACA,EAAI,MAAM,CAAC,GAEfuB,EAAU,MAAM;AACd,IAAAjB,EAAeK,CAAM;AAAA,EACvB,GAAG,CAACA,GAAQL,CAAc,CAAC,GAG3BiB,EAAU,MAAM;AACd,QAAI,CAACT,EAAa;AAClB,UAAMU,IAAW,MAAMZ,EAAUpB,IAAoB;AACrD,kBAAO,iBAAiB,UAAUgC,CAAQ,GACnC,MAAM,OAAO,oBAAoB,UAAUA,CAAQ;AAAA,EAC5D,GAAG,CAACV,CAAW,CAAC;AAEhB,QAAMW,IAAgBC,EAAY,CAACC,MAAoB;AACrD,QAAI,CAACR,EAAQ,QAAS;AACtB,UAAMS,IAAIT,EAAQ,SACZU,IAAKF,EAAE,UAAUC,EAAE,QACnBE,IAAKH,EAAE,UAAUC,EAAE;AACzB,IAAAA,EAAE,SAASC,GACXD,EAAE,SAASE;AACX,UAAMC,IAAKb,EAAa;AACxB,IAAIa,MACFA,EAAG,MAAM,aAAa,aACtBA,EAAG,MAAM,YAAY,aAAaF,CAAE,OAAOC,CAAE;AAAA,EAEjD,GAAG,CAAA,CAAE,GAECE,IAAcN;AAAA,IAClB,CAACC,MAAoB;AACnB,YAAMI,IAAKb,EAAa;AAMxB,UALIa,MACFA,EAAG,oBAAoB,eAAeN,CAAa,GACnDM,EAAG,oBAAoB,aAAaC,CAAiC,GACrED,EAAG,sBAAsBJ,EAAE,SAAS,IAElCR,EAAQ,SAAS;AACnB,cAAMS,IAAIT,EAAQ;AAClB,QAAIY,MACFA,EAAG,MAAM,YAAY,IACrBA,EAAG,MAAM,aAAa;AAExB,cAAME,IAAqC;AAAA,UACzC,GAAGL,EAAE;AAAA,UACL,GAAG,KAAK,IAAI,GAAGA,EAAE,YAAY,IAAIA,EAAE,MAAM;AAAA,UACzC,GAAG,KAAK,IAAI,GAAGA,EAAE,YAAY,IAAIA,EAAE,MAAM;AAAA,QAAA;AAE3C,QAAAhB,EAAUqB,CAAW,GACrBd,EAAQ,UAAU;AAAA,MACpB;AAAA,IACF;AAAA,IACA,CAACM,CAAa;AAAA,EAAA,GAGVS,IAAyBR;AAAA,IAC7B,CAACC,MAAyB;AAGxB,UAFIA,EAAE,WAAW,KAAKb,KAEjBa,EAAE,OAAmB,QAAQ,QAAQ,EAAG;AAC7C,MAAAA,EAAE,eAAA,GACFvB,EAAA,GACAe,EAAQ,UAAU;AAAA,QAChB,QAAQQ,EAAE;AAAA,QACV,QAAQA,EAAE;AAAA,QACV,aAAa,EAAE,GAAGhB,EAAA;AAAA,QAClB,QAAQ;AAAA,QACR,QAAQ;AAAA,MAAA;AAEV,YAAMoB,IAAKb,EAAa;AACxB,MAAIa,MACFA,EAAG,kBAAkBJ,EAAE,SAAS,GAChCI,EAAG,iBAAiB,eAAeN,GAAe,EAAE,SAAS,IAAM,GACnEM,EAAG,iBAAiB,aAAaC,CAAiC;AAAA,IAEtE;AAAA,IACA,CAACrB,GAAQG,GAAaV,GAASqB,GAAeO,CAAW;AAAA,EAAA,GAGrDG,IAAuBT,EAAY,MAAM;AAC7C,IAAIZ,KACFF,EAAUI,EAAwB,OAAO,GACzCD,EAAe,EAAK,MAEpBC,EAAwB,UAAU,EAAE,GAAGL,EAAA,GACvCC,EAAUpB,IAAoB,GAC9BuB,EAAe,EAAI;AAAA,EAEvB,GAAG,CAACD,GAAaH,CAAM,CAAC,GAElByB,IAAsBV,EAAY,CAACC,MAAoB;AAC3D,QAAI,CAACP,EAAU,QAAS;AACxB,UAAM,EAAE,MAAAiB,GAAM,QAAAC,GAAQ,QAAAC,GAAQ,aAAAC,EAAA,IAAgBpB,EAAU,SAClDS,IAAKF,EAAE,UAAUW,GACjBR,IAAKH,EAAE,UAAUY,GACjBE,IAA8B,EAAE,GAAGD,EAAA;AAEzC,QADIH,EAAK,SAAS,GAAG,MAAGI,EAAK,IAAI,KAAK,IAAItD,GAAWqD,EAAY,IAAIX,CAAE,IACnEQ,EAAK,SAAS,GAAG,GAAG;AACtB,YAAMK,IAAO,KAAK,IAAIvD,GAAWqD,EAAY,IAAIX,CAAE;AACnD,MAAAY,EAAK,IAAID,EAAY,IAAIA,EAAY,IAAIE,GACzCD,EAAK,IAAIC;AAAA,IACX;AAEA,QADIL,EAAK,SAAS,GAAG,MAAGI,EAAK,IAAI,KAAK,IAAIrD,IAAYoD,EAAY,IAAIV,CAAE,IACpEO,EAAK,SAAS,GAAG,GAAG;AACtB,YAAMM,IAAO,KAAK,IAAIvD,IAAYoD,EAAY,IAAIV,CAAE;AACpD,MAAAW,EAAK,IAAID,EAAY,IAAIA,EAAY,IAAIG,GACzCF,EAAK,IAAIE;AAAA,IACX;AACA,IAAArB,EAAuB,UAAUmB,GAC7BpB,EAAa,YAAY,SAC3BA,EAAa,UAAU,sBAAsB,MAAM;AACjD,YAAMuB,IAAUtB,EAAuB;AACvC,MAAAD,EAAa,UAAU,MACvBC,EAAuB,UAAU,MAC7BsB,OAAmBA,CAAO;AAAA,IAChC,CAAC;AAAA,EAEL,GAAG,CAAA,CAAE,GAECC,IAAoBnB;AAAA,IACxB,CAACC,MAAoB;AACnB,YAAMI,IAAKb,EAAa;AACxB,MAAIa,MACFA,EAAG,oBAAoB,eAAeK,CAAyC,GAC/EL,EAAG,oBAAoB,aAAac,CAAuC,GAC3Ed,EAAG,sBAAsBJ,EAAE,SAAS,IAEtCP,EAAU,UAAU;AAAA,IACtB;AAAA,IACA,CAACgB,CAAmB;AAAA,EAAA,GAGhBU,IAA0BpB;AAAA,IAC9B,CAACC,GAAsBU,MAAiB;AACtC,UAAIV,EAAE,WAAW,EAAG;AACpB,MAAAA,EAAE,eAAA,GACFA,EAAE,gBAAA,GACFvB,EAAA,GACAgB,EAAU,UAAU;AAAA,QAClB,MAAAiB;AAAA,QACA,QAAQV,EAAE;AAAA,QACV,QAAQA,EAAE;AAAA,QACV,aAAa,EAAE,GAAGhB,EAAA;AAAA,MAAO;AAE3B,YAAMoB,IAAKb,EAAa;AACxB,MAAIa,MACFA,EAAG,kBAAkBJ,EAAE,SAAS,GAChCI,EAAG,iBAAiB,eAAeK,GAA2C;AAAA,QAC5E,SAAS;AAAA,MAAA,CACV,GACDL,EAAG,iBAAiB,aAAac,CAAuC;AAAA,IAE5E;AAAA,IACA,CAAClC,GAAQP,GAASgC,GAAqBS,CAAiB;AAAA,EAAA,GAGpDE,IAAWC;AAAA,IACf,MAAMvD,GAAcO,EAAI,SAASA,EAAI,MAAMA,EAAI,QAAQ;AAAA,IACvD,CAACA,EAAI,SAASA,EAAI,MAAMA,EAAI,QAAQ;AAAA,EAAA,GAGhCiD,IAAI9C,IAAYI,IAAYC;AAElC,SACE,gBAAA0C;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAKhC;AAAA,MACL,WAAU;AAAA,MACV,OAAO;AAAA,QACL,MAAMP,EAAO;AAAA,QACb,KAAKA,EAAO;AAAA,QACZ,OAAOA,EAAO;AAAA,QACd,QAAQA,EAAO;AAAA,QACf,QAAQsC;AAAA,MAAA;AAAA,MAEV,SAAS7C;AAAA,MACT,aAAaA;AAAA,MAGb,UAAA;AAAA,QAAA,gBAAA8C;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAU;AAAA,YACV,eAAehB;AAAA,YAEd,UAAA;AAAA,cAAAlC,EAAI,QACH,gBAAAmD;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,KAAKnD,EAAI;AAAA,kBACT,KAAI;AAAA,kBACJ,WAAWoD;AAAA,oBACT;AAAA,oBACApE,EAAUgB,EAAI,IAAI,KAAK;AAAA,kBAAA;AAAA,gBACzB;AAAA,cAAA;AAAA,cAGJ,gBAAAmD,EAAC,QAAA,EAAK,WAAU,+CAA+C,UAAA1C,GAAY;AAAA,cAC3E,gBAAA0C;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,MAAK;AAAA,kBACL,SAAS,CAACxB,MAAM;AACd,oBAAAA,EAAE,gBAAA,GACFQ,EAAA;AAAA,kBACF;AAAA,kBACA,WAAU;AAAA,kBACV,cAAYrB,IAAc,YAAY;AAAA,kBAErC,UAAAA,sBAAeuC,IAAA,EAAY,WAAU,WAAU,IAAK,gBAAAF,EAACG,IAAA,EAAa,WAAU,UAAA,CAAU;AAAA,gBAAA;AAAA,cAAA;AAAA,cAEzF,gBAAAH;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,MAAK;AAAA,kBACL,SAAS,CAACxB,MAAM;AACd,oBAAAA,EAAE,gBAAA,GACFtB,EAAA;AAAA,kBACF;AAAA,kBACA,WAAU;AAAA,kBACV,cAAW;AAAA,kBAEX,UAAA,gBAAA8C,EAACI,IAAA,EAAU,WAAU,UAAA,CAAU;AAAA,gBAAA;AAAA,cAAA;AAAA,YACjC;AAAA,UAAA;AAAA,QAAA;AAAA,QAGF,gBAAAL,EAAC,OAAA,EAAI,WAAU,yCAEZ,UAAA;AAAA,UAAA,CAAC/C,KACA,gBAAAgD;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAU;AAAA,cACV,SAAS/C;AAAA,cACT,aAAa,CAACuB,MAAM;AAClB,gBAAAA,EAAE,gBAAA,GACFvB,EAAA;AAAA,cACF;AAAA,cACA,eAAW;AAAA,YAAA;AAAA,UAAA;AAAA,UAGf,gBAAA+C;AAAA,YAACK;AAAA,YAAA;AAAA,cACC,KAAKT;AAAA,cACL,YAAY/C,EAAI;AAAA,cAChB,gBAAgB;AAAA,cAChB,SAAAC;AAAA,YAAA;AAAA,UAAA;AAAA,QACF,GACF;AAAA,QAEC,CAACa,KACC,CAAC,KAAK,KAAK,KAAK,KAAK,MAAM,MAAM,MAAM,IAAI,EAAY,IAAI,CAACuB,MAC3D,gBAAAc;AAAA,UAAC;AAAA,UAAA;AAAA,YAEC,WAAWC;AAAA,cACT;AAAA,cACAf,EAAK,SAAS,GAAG,KAAK;AAAA,cACtBA,EAAK,SAAS,GAAG,KAAK;AAAA,cACtBA,EAAK,SAAS,GAAG,KAAK;AAAA,cACtBA,EAAK,SAAS,GAAG,KAAK;AAAA,cACtBA,MAAS,OAAO;AAAA,cAChBA,MAAS,OAAO;AAAA,cAChBA,MAAS,OAAO;AAAA,cAChBA,MAAS,OAAO;AAAA,cAChBA,MAAS,QAAQ;AAAA,cACjBA,MAAS,QAAQ;AAAA,cACjBA,MAAS,QAAQ;AAAA,cACjBA,MAAS,QAAQ;AAAA,YAAA;AAAA,YAEnB,OACEA,MAAS,MACL,EAAE,MAAM,GAAG,OAAO,EAAA,IAClBA,MAAS,MACP,EAAE,MAAM,GAAG,OAAO,EAAA,IAClBA,MAAS,MACP,EAAE,KAAK,GAAG,QAAQ,EAAA,IAClBA,MAAS,MACP,EAAE,KAAK,GAAG,QAAQ,MAClB;AAAA,YAEZ,eAAe,CAACV,MAAMmB,EAAwBnB,GAAGU,CAAI;AAAA,UAAA;AAAA,UA3BhDA;AAAA,QAAA,CA6BR;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGT;AAEA,SAASiB,GAAa,EAAE,WAAAG,KAAqC;AAC3D,SACE,gBAAAP;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,OAAM;AAAA,MACN,OAAM;AAAA,MACN,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,QAAO;AAAA,MACP,aAAY;AAAA,MACZ,eAAc;AAAA,MACd,gBAAe;AAAA,MACf,WAAAO;AAAA,MACA,eAAW;AAAA,MAEX,UAAA;AAAA,QAAA,gBAAAN,EAAC,QAAA,EAAK,GAAE,yBAAA,CAAyB;AAAA,QACjC,gBAAAA,EAAC,QAAA,EAAK,GAAE,2BAAA,CAA2B;AAAA,QACnC,gBAAAA,EAAC,QAAA,EAAK,GAAE,0BAAA,CAA0B;AAAA,QAClC,gBAAAA,EAAC,QAAA,EAAK,GAAE,4BAAA,CAA4B;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAG1C;AAEA,SAASE,GAAY,EAAE,WAAAI,KAAqC;AAC1D,SACE,gBAAAP;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,OAAM;AAAA,MACN,OAAM;AAAA,MACN,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,QAAO;AAAA,MACP,aAAY;AAAA,MACZ,eAAc;AAAA,MACd,gBAAe;AAAA,MACf,WAAAO;AAAA,MACA,eAAW;AAAA,MAEX,UAAA;AAAA,QAAA,gBAAAN;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,GAAE;AAAA,YACF,GAAE;AAAA,YACF,OAAM;AAAA,YACN,QAAO;AAAA,YACP,IAAG;AAAA,UAAA;AAAA,QAAA;AAAA,QAEL,gBAAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,GAAE;AAAA,YACF,GAAE;AAAA,YACF,OAAM;AAAA,YACN,QAAO;AAAA,YACP,IAAG;AAAA,UAAA;AAAA,QAAA;AAAA,MACL;AAAA,IAAA;AAAA,EAAA;AAGN;AAEA,SAASI,GAAU,EAAE,WAAAE,KAAqC;AACxD,SACE,gBAAAP;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,OAAM;AAAA,MACN,OAAM;AAAA,MACN,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,QAAO;AAAA,MACP,aAAY;AAAA,MACZ,eAAc;AAAA,MACd,gBAAe;AAAA,MACf,WAAAO;AAAA,MACA,eAAW;AAAA,MAEX,UAAA;AAAA,QAAA,gBAAAN,EAAC,QAAA,EAAK,GAAE,aAAA,CAAa;AAAA,QACrB,gBAAAA,EAAC,QAAA,EAAK,GAAE,aAAA,CAAa;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAG3B;AAGA,SAASO,GAAU,EAAE,WAAAD,KAAqC;AACxD,SACE,gBAAAN;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,OAAM;AAAA,MACN,OAAM;AAAA,MACN,QAAO;AAAA,MACP,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,WAAAM;AAAA,MACA,eAAW;AAAA,MAEX,UAAA,gBAAAN,EAAC,QAAA,EAAK,GAAE,8DAAA,CAA8D;AAAA,IAAA;AAAA,EAAA;AAG5E;AAEA,SAASQ,KAA6B;AACpC,SAAI,OAAO,SAAW,OAAe,KAAK,iBACjC,KAAK,iBAAiB,gBAAA,EAAkB,WAE1C;AACT;AAEO,SAASC,GAAc;AAAA,EAC5B,OAAAC;AAAA,EACA,SAASC;AAAA,EACT,MAAMC;AAAA,EACN,YAAAC;AACF,GAAuB;AACrB,QAAM,EAAE,MAAAC,EAAA,IAASC,GAAA,GACX,EAAE,UAAAC,EAAA,IAAaC,GAAA,GACflE,IAAkB+D,EAAK,YAAY,MACnCI,IAAWF,EAAS,QAAQ,YAAYR,GAAA,GACxC,EAAE,eAAAW,GAAe,aAAAC,GAAa,iBAAAC,EAAA,IAAoBxB,EAAQ,MAAM;AACpE,UAAM,EAAE,OAAAyB,GAAO,KAAAC,MAAQC,GAA0BX,CAAU;AAC3D,WAAO;AAAA,MACL,eAAeY,EAAuBH,CAAK;AAAA,MAC3C,aAAaC;AAAA,MACb,iBAAiBE,EAAuBZ,CAAU;AAAA,IAAA;AAAA,EAEtD,GAAG,CAACA,CAAU,CAAC,GAET,CAACa,GAASC,CAAU,IAAIjE,EAAwB,CAAA,CAAE,GAElD,CAACkE,GAAeC,CAAgB,IAAInE,EAAwB,IAAI,GAChE,CAACoE,GAAeC,CAAgB,IAAIrE,EAAS,EAAK,GAClD,CAACsE,GAAKC,CAAM,IAAIvE,EAAS,MAAM,oBAAI,MAAM,GACzCwE,IAAgBpE,EAAuB,IAAI;AAGjD,EAAAM,EAAU,MAAM;AACd,UAAM+D,IAAW,YAAY,MAAMF,sBAAW,KAAA,CAAM,GAAG,GAAI;AAC3D,WAAO,MAAM,cAAcE,CAAQ;AAAA,EACrC,GAAG,CAAA,CAAE;AAGL,QAAM/E,IAAYyC;AAAA,IAChB,MAAMuC,EAAQ,sBAAsB,KAAK,IAAIV,EAAQ,QAAQ,CAAC;AAAA,IAC9D,CAACA,EAAQ,MAAM;AAAA,EAAA,GAGXW,IAAa9D;AAAA,IACjB,CAAC+D,MAAyB;AACxB,YAAMC,IACJ,OAAOD,EAAK,SAAU,WAAWA,EAAK,QAAQ/E,EAAgB+E,EAAK,OAAOvF,CAAe,GACrFyF,IACJF,EAAK,WAAW,cAAc,CAACA,EAAK,OAAO5G,EAAsB4G,EAAK,GAAG,IAAI,MACzEG,IAAOH,EAAK,QAAQE,KAAc,MAClCE,IAAK3G,GAAA,GACLyB,IAAS;AAAA,QACb,GAAG,KAAKkE,EAAQ,SAAS;AAAA,QACzB,GAAG,KAAKA,EAAQ,SAAS;AAAA,QACzB,GAAGxF;AAAA,QACH,GAAGC;AAAA,MAAA;AAEL,MAAAwF,EAAW,CAACgB,MAAS;AAAA,QACnB,GAAGA;AAAA,QACH;AAAA,UACE,IAAAD;AAAA,UACA,MAAMJ,EAAK;AAAA,UACX,UAAU,IAAIA,EAAK,IAAI;AAAA,UACvB,SAASA,EAAK;AAAA,UACd,OAAAC;AAAA,UACA,MAAAE;AAAA,UACA,QAAAjF;AAAA,QAAA;AAAA,MACF,CACD,GACDqE,EAAiBa,CAAE,GACnBX,EAAiB,EAAK;AAAA,IACxB;AAAA,IACA,CAAChF,GAAiB2E,EAAQ,MAAM;AAAA,EAAA,GAG5BkB,IAAcrE,EAAY,CAACmE,MAAe;AAC9C,IAAAf,EAAW,CAACgB,MAASA,EAAK,OAAO,CAACE,MAAMA,EAAE,OAAOH,CAAE,CAAC,GACpDb,EAAiB,CAACiB,MAAaA,MAAYJ,IAAK,OAAOI,CAAQ;AAAA,EACjE,GAAG,CAAA,CAAE;AAGL,EAAA1E,EAAU,MAAM;AACd,QAAIsD,EAAQ,WAAW,GAAG;AACxB,MAAAG,EAAiB,IAAI;AACrB;AAAA,IACF;AAEA,IADyBD,MAAkB,QAAQF,EAAQ,KAAK,CAACmB,MAAMA,EAAE,OAAOjB,CAAa,KAE3FC,EAAiBH,EAAQ,CAAC,EAAE,EAAE;AAAA,EAElC,GAAG,CAACA,GAASE,CAAa,CAAC;AAG3B,QAAMmB,IAAcxE,EAAY,CAACmE,MAAe;AAC9C,IAAAb,EAAiBa,CAAE;AAAA,EACrB,GAAG,CAAA,CAAE,GAECM,IAAqBzE,EAAY,CAACmE,GAAYlF,MAAkC;AACpF,IAAAmE,EAAW,CAACgB,MAASA,EAAK,IAAI,CAACE,MAAOA,EAAE,OAAOH,IAAK,EAAE,GAAGG,GAAG,QAAArF,EAAA,IAAWqF,CAAE,CAAC;AAAA,EAC5E,GAAG,CAAA,CAAE;AAGL,EAAAzE,EAAU,MAAM;AACd,QAAI,CAAC0D,EAAe;AACpB,UAAMmB,IAAa,CAACzE,MAAkB;AACpC,MAAI0D,EAAc,WAAW,CAACA,EAAc,QAAQ,SAAS1D,EAAE,MAAc,KAC3EuD,EAAiB,EAAK;AAAA,IAE1B;AACA,oBAAS,iBAAiB,aAAakB,CAAU,GAC1C,MAAM,SAAS,oBAAoB,aAAaA,CAAU;AAAA,EACnE,GAAG,CAACnB,CAAa,CAAC;AAElB,QAAMoB,IAAiB3E;AAAA,IACrB,CAAC+D,MAAyB;AACxB,UAAIA,EAAK,WAAW,SAAS;AAC3B,QAAAa,EAAQ,UAAUb,EAAK,GAAG,GAC1BP,EAAiB,EAAK;AACtB;AAAA,MACF;AACA,UAAIO,EAAK,WAAW,UAAU;AAC5B,QAAAa,EAAQ,WAAW,EAAE,KAAKb,EAAK,KAAK,UAAUA,EAAK,gBAAgB,GACnEP,EAAiB,EAAK;AACtB;AAAA,MACF;AACA,UAAIO,EAAK,WAAW,YAAY;AAC9B,eAAO,KAAKA,EAAK,KAAK,UAAU,qBAAqB,GACrDP,EAAiB,EAAK;AACtB;AAAA,MACF;AACA,MAAAM,EAAWC,CAAI;AAAA,IACjB;AAAA,IACA,CAACD,CAAU;AAAA,EAAA;AAGb,SACE,gBAAArC,EAACoD,IAAA,EACC,UAAA,gBAAArD,EAACsD,IAAA,EAAa,iBAAAhC,GACZ,UAAA;AAAA,IAAA,gBAAArB;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,OAAO,EAAE,eAAe5D,EAAA;AAAA,QAGvB,UAAAsF,EAAQ,IAAI,CAAC7E,GAAKyG,MAAU;AAC3B,gBAAMxG,IAAUuE,EAAgB,KAAK,CAACkC,MAAMA,EAAE,SAAS1G,EAAI,IAAI;AAC/D,cAAI,CAACC,EAAS,QAAO;AACrB,gBAAME,IAAYH,EAAI,OAAO+E,GACvBvE,IAAS+E,EAAQ,sBAAsBkB;AAC7C,iBACE,gBAAAtD;AAAA,YAACpD;AAAA,YAAA;AAAA,cAEC,KAAAC;AAAA,cACA,SAAAC;AAAA,cACA,iBAAAC;AAAA,cACA,WAAAC;AAAA,cACA,SAAS,MAAM+F,EAAYlG,EAAI,EAAE;AAAA,cACjC,SAAS,MAAM+F,EAAY/F,EAAI,EAAE;AAAA,cACjC,gBAAgB,CAACW,MAAWwF,EAAmBnG,EAAI,IAAIW,CAAM;AAAA,cAC7D,WAAAJ;AAAA,cACA,QAAAC;AAAA,YAAA;AAAA,YATKR,EAAI;AAAA,UAAA;AAAA,QAYf,CAAC;AAAA,MAAA;AAAA,IAAA;AAAA,IAIH,gBAAAkD;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,OAAO;AAAA,UACL,QAAQ3D;AAAA,UACR,QAAQgG,EAAQ;AAAA,UAChB,eAAe;AAAA,QAAA;AAAA,QAIjB,UAAA;AAAA,UAAA,gBAAArC;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAU;AAAA,cACV,KAAKmC;AAAA,cAEL,UAAA;AAAA,gBAAA,gBAAAnC;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,MAAK;AAAA,oBACL,SAAS,MAAMgC,EAAiB,CAACyB,MAAM,CAACA,CAAC;AAAA,oBACzC,WAAWvD;AAAA,sBACT;AAAA,sBACA6B,IACI,qDACA;AAAA,oBAAA;AAAA,oBAEN,iBAAeA;AAAA,oBACf,iBAAc;AAAA,oBACd,cAAW;AAAA,oBAEX,UAAA;AAAA,sBAAA,gBAAA9B,EAACO,IAAA,EAAU,WAAU,UAAA,CAAU;AAAA,sBAC/B,gBAAAP,EAAC,QAAA,EAAK,WAAU,0CAA0C,eAAS,QAAA,CAAQ;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBAAA;AAAA,gBAG5E8B,KACC,gBAAA/B;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,WAAU;AAAA,oBACV,OAAO,EAAE,QAAQqC,EAAQ,cAAA;AAAA,oBAEzB,UAAA;AAAA,sBAAA,gBAAApC,EAAC,OAAA,EAAI,WAAU,yCACb,UAAA,gBAAAA,EAAC,UAAK,WAAU,iDACb,UAAAU,KAAS,eAAA,CACZ,EAAA,CACF;AAAA,sBACA,gBAAAV,EAAC,OAAA,EAAI,WAAU,gBACZ,YACE,OAAO,CAACsC,MAAS,CAACA,EAAK,MAAM,EAC7B,IAAI,CAACA,MAAS;AACb,8BAAMC,IACJ,OAAOD,EAAK,SAAU,WAClBA,EAAK,QACL/E,EAAgB+E,EAAK,OAAOvF,CAAe,GAC3C0F,IACJH,EAAK,SACJA,EAAK,WAAW,aAAa5G,EAAsB4G,EAAK,GAAG,IAAI;AAClE,+BACE,gBAAAvC;AAAA,0BAAC;AAAA,0BAAA;AAAA,4BAEC,MAAK;AAAA,4BACL,SAAS,MAAMmD,EAAeZ,CAAI;AAAA,4BAClC,WAAU;AAAA,4BAET,UAAA;AAAA,8BAAAG,IACC,gBAAAzC;AAAA,gCAAC;AAAA,gCAAA;AAAA,kCACC,KAAKyC;AAAA,kCACL,KAAI;AAAA,kCACJ,WAAWxC;AAAA,oCACT;AAAA,oCACApE,EAAU4G,CAAI,KAAK;AAAA,kCAAA;AAAA,gCACrB;AAAA,8BAAA,IAGF,gBAAAzC,EAAC,QAAA,EAAK,WAAU,uCAAA,CAAuC;AAAA,8BAEzD,gBAAAA,EAAC,QAAA,EAAK,WAAU,YAAY,UAAAuC,EAAA,CAAM;AAAA,4BAAA;AAAA,0BAAA;AAAA,0BAjB7BD,EAAK;AAAA,wBAAA;AAAA,sBAoBhB,CAAC,EAAA,CACL;AAAA,oBAAA;AAAA,kBAAA;AAAA,gBAAA;AAAA,cACF;AAAA,YAAA;AAAA,UAAA;AAAA,4BAKH,OAAA,EAAI,WAAU,0DACZ,UAAAZ,EAAQ,IAAI,CAAC7E,MAAQ;AACpB,kBAAMC,IAAUuE,EAAgB,KAAK,CAACkC,MAAMA,EAAE,SAAS1G,EAAI,IAAI,GACzDS,IAAcR,IAChBS,EAAgBT,EAAQ,OAAOC,CAAe,IAC9CF,EAAI,OACFG,IAAYH,EAAI,OAAO+E;AAC7B,mBACE,gBAAA7B;AAAA,cAAC;AAAA,cAAA;AAAA,gBAEC,MAAK;AAAA,gBACL,SAAS,MAAMgD,EAAYlG,EAAI,EAAE;AAAA,gBACjC,eAAe,CAAC2B,MAAM;AACpB,kBAAAA,EAAE,eAAA,GACFoE,EAAY/F,EAAI,EAAE;AAAA,gBACpB;AAAA,gBACA,WAAWoD;AAAA,kBACT;AAAA,kBACAjD,IACI,qDACA;AAAA,gBAAA;AAAA,gBAEN,OAAOM;AAAA,gBAEN,UAAA;AAAA,kBAAAT,EAAI,OACH,gBAAAmD;AAAA,oBAAC;AAAA,oBAAA;AAAA,sBACC,KAAKnD,EAAI;AAAA,sBACT,KAAI;AAAA,sBACJ,WAAWoD;AAAA,wBACT;AAAA,wBACApE,EAAUgB,EAAI,IAAI,KAAK;AAAA,sBAAA;AAAA,oBACzB;AAAA,kBAAA,IAGF,gBAAAmD,EAAC,QAAA,EAAK,WAAU,uCAAA,CAAuC;AAAA,kBAEzD,gBAAAA,EAAC,QAAA,EAAK,WAAU,oBAAoB,UAAA1C,EAAA,CAAY;AAAA,gBAAA;AAAA,cAAA;AAAA,cA3B3CT,EAAI;AAAA,YAAA;AAAA,UA8Bf,CAAC,EAAA,CACH;AAAA,UAGCuE,EAAY,SAAS,KACpB,gBAAApB,EAAC,OAAA,EAAI,WAAU,+EACZ,UAAAoB,EAAY,IAAI,CAACkB,MAAS;AACzB,kBAAMC,IACJ,OAAOD,EAAK,SAAU,WAClBA,EAAK,QACL/E,EAAgB+E,EAAK,OAAOvF,CAAe,GAC3C0F,IACJH,EAAK,SACJA,EAAK,WAAW,aAAa5G,EAAsB4G,EAAK,GAAG,IAAI;AAClE,mBACE,gBAAAvC;AAAA,cAAC;AAAA,cAAA;AAAA,gBAEC,MAAK;AAAA,gBACL,SAAS,MAAMmD,EAAeZ,CAAI;AAAA,gBAClC,WAAU;AAAA,gBACV,OAAOC;AAAA,gBAEN,UAAA;AAAA,kBAAAE,IACC,gBAAAzC;AAAA,oBAAC;AAAA,oBAAA;AAAA,sBACC,KAAKyC;AAAA,sBACL,KAAI;AAAA,sBACJ,WAAWxC;AAAA,wBACT;AAAA,wBACApE,EAAU4G,CAAI,KAAK;AAAA,sBAAA;AAAA,oBACrB;AAAA,kBAAA,IAGF,gBAAAzC,EAAC,QAAA,EAAK,WAAU,uCAAA,CAAuC;AAAA,kBAEzD,gBAAAA,EAAC,QAAA,EAAK,WAAU,kCAAkC,UAAAuC,EAAA,CAAM;AAAA,gBAAA;AAAA,cAAA;AAAA,cAlBnDD,EAAK;AAAA,YAAA;AAAA,UAqBhB,CAAC,EAAA,CACH;AAAA,UAIF,gBAAAvC;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAU;AAAA,cACV,OAAO,EAAE,cAAc,2CAAA;AAAA,cACvB,MAAK;AAAA,cACL,aAAU;AAAA,cACV,cAAY,IAAI,KAAK,eAAehD,GAAiB;AAAA,gBACnD,UAAAmE;AAAA,gBACA,WAAW;AAAA,gBACX,WAAW;AAAA,cAAA,CACZ,EAAE,OAAOc,CAAG;AAAA,cAEb,UAAA;AAAA,gBAAA,gBAAAhC;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,UAAUgC,EAAI,YAAA;AAAA,oBACd,WAAU;AAAA,oBAET,UAAA,IAAI,KAAK,eAAejF,GAAiB;AAAA,sBACxC,UAAAmE;AAAA,sBACA,MAAM;AAAA,sBACN,QAAQ;AAAA,sBACR,QAAQ;AAAA,oBAAA,CACT,EAAE,OAAOc,CAAG;AAAA,kBAAA;AAAA,gBAAA;AAAA,gBAEf,gBAAAhC;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,UAAUgC,EAAI,YAAA;AAAA,oBACd,WAAU;AAAA,oBAET,UAAA,IAAI,KAAK,eAAejF,GAAiB;AAAA,sBACxC,UAAAmE;AAAA,sBACA,SAAS;AAAA,sBACT,KAAK;AAAA,sBACL,OAAO;AAAA,oBAAA,CACR,EAAE,OAAOc,CAAG;AAAA,kBAAA;AAAA,gBAAA;AAAA,cACf;AAAA,YAAA;AAAA,UAAA;AAAA,QACF;AAAA,MAAA;AAAA,IAAA;AAAA,EACF,EAAA,CACF,EAAA,CACF;AAEJ;"}
package/dist/app.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ declare const App: () => import("react/jsx-runtime").JSX.Element | null;
2
+ export default App;
3
+ //# sourceMappingURL=app.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.tsx"],"names":[],"mappings":"AAWA,OAAO,8BAA8B,CAAC;AACtC,OAAO,eAAe,CAAC;AACvB,OAAO,aAAa,CAAC;AA6ErB,QAAA,MAAM,GAAG,sDA0BR,CAAC;AAEF,eAAe,GAAG,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { NavigationItem } from '../features/config/types';
2
+ interface ContentViewProps {
3
+ url: string;
4
+ pathPrefix: string;
5
+ ignoreMessages?: boolean;
6
+ navItem: NavigationItem;
7
+ }
8
+ export declare const ContentView: ({ url, pathPrefix, ignoreMessages, navItem, }: ContentViewProps) => import("react/jsx-runtime").JSX.Element;
9
+ export {};
10
+ //# sourceMappingURL=ContentView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContentView.d.ts","sourceRoot":"","sources":["../../src/components/ContentView.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAe9D,UAAU,gBAAgB;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,OAAO,EAAE,cAAc,CAAC;CACzB;AAED,eAAO,MAAM,WAAW,GAAI,+CAKzB,gBAAgB,4CAqOlB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const HomeView: () => import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=HomeView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HomeView.d.ts","sourceRoot":"","sources":["../../src/components/HomeView.tsx"],"names":[],"mappings":"AAGA,eAAO,MAAM,QAAQ,+CAepB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function LoadingOverlay(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=LoadingOverlay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoadingOverlay.d.ts","sourceRoot":"","sources":["../../src/components/LoadingOverlay.tsx"],"names":[],"mappings":"AAAA,wBAAgB,cAAc,4CAW7B"}
@@ -0,0 +1,2 @@
1
+ export declare const NotFoundView: () => import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=NotFoundView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NotFoundView.d.ts","sourceRoot":"","sources":["../../src/components/NotFoundView.tsx"],"names":[],"mappings":"AAiBA,eAAO,MAAM,YAAY,+CAkExB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function RouteErrorBoundary(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=RouteErrorBoundary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RouteErrorBoundary.d.ts","sourceRoot":"","sources":["../../src/components/RouteErrorBoundary.tsx"],"names":[],"mappings":"AA2CA,wBAAgB,kBAAkB,4CAmDjC"}
@@ -0,0 +1,7 @@
1
+ import { NavigationItem } from '../features/config/types';
2
+ interface ViewRouteProps {
3
+ navigation: NavigationItem[];
4
+ }
5
+ export declare const ViewRoute: ({ navigation }: ViewRouteProps) => import("react/jsx-runtime").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=ViewRoute.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ViewRoute.d.ts","sourceRoot":"","sources":["../../src/components/ViewRoute.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE/D,UAAU,cAAc;IACtB,UAAU,EAAE,cAAc,EAAE,CAAC;CAC9B;AAED,eAAO,MAAM,SAAS,GAAI,gBAAgB,cAAc,4CAqCvD,CAAC"}
@@ -0,0 +1,32 @@
1
+ import { ComponentPropsWithoutRef, HTMLAttributes } from 'react';
2
+ import { VariantProps } from 'class-variance-authority';
3
+ import { ButtonProps } from './button';
4
+ import * as AlertDialogPrimitive from '@radix-ui/react-alert-dialog';
5
+ declare const AlertDialog: import('react').FC<AlertDialogPrimitive.AlertDialogProps>;
6
+ declare const AlertDialogTrigger: import('react').ForwardRefExoticComponent<AlertDialogPrimitive.AlertDialogTriggerProps & import('react').RefAttributes<HTMLButtonElement>>;
7
+ declare const AlertDialogPortal: import('react').FC<AlertDialogPrimitive.AlertDialogPortalProps>;
8
+ declare const AlertDialogOverlay: import('react').ForwardRefExoticComponent<Omit<AlertDialogPrimitive.AlertDialogOverlayProps & import('react').RefAttributes<HTMLDivElement>, "ref"> & import('react').RefAttributes<HTMLDivElement>>;
9
+ declare const alertDialogContentVariants: (props?: ({
10
+ size?: "default" | "sm" | null | undefined;
11
+ } & import('class-variance-authority/types').ClassProp) | undefined) => string;
12
+ interface AlertDialogContentProps extends ComponentPropsWithoutRef<typeof AlertDialogPrimitive.Content>, VariantProps<typeof alertDialogContentVariants> {
13
+ }
14
+ declare const AlertDialogContent: import('react').ForwardRefExoticComponent<AlertDialogContentProps & import('react').RefAttributes<HTMLDivElement>>;
15
+ declare const AlertDialogHeader: {
16
+ ({ className, ...props }: HTMLAttributes<HTMLDivElement>): import("react/jsx-runtime").JSX.Element;
17
+ displayName: string;
18
+ };
19
+ declare const AlertDialogMedia: {
20
+ ({ className, ...props }: HTMLAttributes<HTMLDivElement>): import("react/jsx-runtime").JSX.Element;
21
+ displayName: string;
22
+ };
23
+ declare const AlertDialogFooter: {
24
+ ({ className, ...props }: HTMLAttributes<HTMLDivElement>): import("react/jsx-runtime").JSX.Element;
25
+ displayName: string;
26
+ };
27
+ declare const AlertDialogTitle: import('react').ForwardRefExoticComponent<Omit<AlertDialogPrimitive.AlertDialogTitleProps & import('react').RefAttributes<HTMLHeadingElement>, "ref"> & import('react').RefAttributes<HTMLHeadingElement>>;
28
+ declare const AlertDialogDescription: import('react').ForwardRefExoticComponent<Omit<AlertDialogPrimitive.AlertDialogDescriptionProps & import('react').RefAttributes<HTMLParagraphElement>, "ref"> & import('react').RefAttributes<HTMLParagraphElement>>;
29
+ declare const AlertDialogAction: import('react').ForwardRefExoticComponent<Omit<AlertDialogPrimitive.AlertDialogActionProps & import('react').RefAttributes<HTMLButtonElement>, "ref"> & Pick<ButtonProps, "variant" | "size"> & import('react').RefAttributes<HTMLButtonElement>>;
30
+ declare const AlertDialogCancel: import('react').ForwardRefExoticComponent<Omit<AlertDialogPrimitive.AlertDialogCancelProps & import('react').RefAttributes<HTMLButtonElement>, "ref"> & Pick<ButtonProps, "variant" | "size"> & import('react').RefAttributes<HTMLButtonElement>>;
31
+ export { AlertDialog, AlertDialogPortal, AlertDialogOverlay, AlertDialogTrigger, AlertDialogContent, AlertDialogHeader, AlertDialogMedia, AlertDialogFooter, AlertDialogTitle, AlertDialogDescription, AlertDialogAction, AlertDialogCancel, };
32
+ //# sourceMappingURL=alert-dialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alert-dialog.d.ts","sourceRoot":"","sources":["../../../src/components/ui/alert-dialog.tsx"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,wBAAwB,EAC7B,KAAK,cAAc,EACpB,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,oBAAoB,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAGlE,OAAO,EAAU,KAAK,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAElE,QAAA,MAAM,WAAW,2DAA4B,CAAC;AAE9C,QAAA,MAAM,kBAAkB,4IAA+B,CAAC;AAExD,QAAA,MAAM,iBAAiB,iEAA8B,CAAC;AAEtD,QAAA,MAAM,kBAAkB,sMAWtB,CAAC;AAGH,QAAA,MAAM,0BAA0B;;8EAa/B,CAAC;AAEF,UAAU,uBACR,SACE,wBAAwB,CAAC,OAAO,oBAAoB,CAAC,OAAO,CAAC,EAC7D,YAAY,CAAC,OAAO,0BAA0B,CAAC;CAAG;AAEtD,QAAA,MAAM,kBAAkB,oHAiBtB,CAAC;AAGH,QAAA,MAAM,iBAAiB;8BAA6B,cAAc,CAAC,cAAc,CAAC;;CAQjF,CAAC;AAGF,QAAA,MAAM,gBAAgB;8BAA6B,cAAc,CAAC,cAAc,CAAC;;CAQhF,CAAC;AAGF,QAAA,MAAM,iBAAiB;8BAA6B,cAAc,CAAC,cAAc,CAAC;;CAYjF,CAAC;AAGF,QAAA,MAAM,gBAAgB,4MASpB,CAAC;AAGH,QAAA,MAAM,sBAAsB,sNAS1B,CAAC;AAGH,QAAA,MAAM,iBAAiB,mPAcrB,CAAC;AAGH,QAAA,MAAM,iBAAiB,mPAcrB,CAAC;AAGH,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,GAClB,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { ComponentProps, ReactNode } from 'react';
2
+ declare const Breadcrumb: import('react').ForwardRefExoticComponent<Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLElement>, HTMLElement>, "ref"> & {
3
+ separator?: ReactNode;
4
+ } & import('react').RefAttributes<HTMLElement>>;
5
+ declare const BreadcrumbList: import('react').ForwardRefExoticComponent<Omit<import('react').DetailedHTMLProps<import('react').OlHTMLAttributes<HTMLOListElement>, HTMLOListElement>, "ref"> & import('react').RefAttributes<HTMLOListElement>>;
6
+ declare const BreadcrumbItem: import('react').ForwardRefExoticComponent<Omit<import('react').DetailedHTMLProps<import('react').LiHTMLAttributes<HTMLLIElement>, HTMLLIElement>, "ref"> & import('react').RefAttributes<HTMLLIElement>>;
7
+ declare const BreadcrumbLink: import('react').ForwardRefExoticComponent<Omit<import('react').DetailedHTMLProps<import('react').AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>, "ref"> & {
8
+ asChild?: boolean;
9
+ } & import('react').RefAttributes<HTMLAnchorElement>>;
10
+ declare const BreadcrumbPage: import('react').ForwardRefExoticComponent<Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "ref"> & import('react').RefAttributes<HTMLSpanElement>>;
11
+ declare const BreadcrumbSeparator: {
12
+ ({ children, className, ...props }: ComponentProps<"li">): import("react/jsx-runtime").JSX.Element;
13
+ displayName: string;
14
+ };
15
+ declare const BreadcrumbEllipsis: {
16
+ ({ className, ...props }: ComponentProps<"span">): import("react/jsx-runtime").JSX.Element;
17
+ displayName: string;
18
+ };
19
+ export { Breadcrumb, BreadcrumbList, BreadcrumbItem, BreadcrumbLink, BreadcrumbPage, BreadcrumbSeparator, BreadcrumbEllipsis, };
20
+ //# sourceMappingURL=breadcrumb.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"breadcrumb.d.ts","sourceRoot":"","sources":["../../../src/components/ui/breadcrumb.tsx"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,cAAc,EACnB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAIf,QAAA,MAAM,UAAU;gBAGA,SAAS;+CAQvB,CAAC;AAGH,QAAA,MAAM,cAAc,mNAWnB,CAAC;AAGF,QAAA,MAAM,cAAc,0MAQnB,CAAC;AAGF,QAAA,MAAM,cAAc;cAGN,OAAO;qDAYnB,CAAC;AAGH,QAAA,MAAM,cAAc,8MAWnB,CAAC;AAGF,QAAA,MAAM,mBAAmB;wCAAuC,cAAc,CAAC,IAAI,CAAC;;CAuBnF,CAAC;AAGF,QAAA,MAAM,kBAAkB;8BAA6B,cAAc,CAAC,MAAM,CAAC;;CAqC1E,CAAC;AAGF,OAAO,EACL,UAAU,EACV,cAAc,EACd,cAAc,EACd,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,kBAAkB,GACnB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { HTMLAttributes, ReactNode } from 'react';
2
+ export interface ButtonGroupProps extends HTMLAttributes<HTMLDivElement> {
3
+ children: ReactNode;
4
+ }
5
+ declare const ButtonGroup: import('react').ForwardRefExoticComponent<ButtonGroupProps & import('react').RefAttributes<HTMLDivElement>>;
6
+ export { ButtonGroup };
7
+ //# sourceMappingURL=button-group.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button-group.d.ts","sourceRoot":"","sources":["../../../src/components/ui/button-group.tsx"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,cAAc,EACnB,KAAK,SAAS,EAEf,MAAM,OAAO,CAAC;AAGf,MAAM,WAAW,gBAAiB,SAAQ,cAAc,CAAC,cAAc,CAAC;IACtE,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,QAAA,MAAM,WAAW,6GAiChB,CAAC;AAGF,OAAO,EAAE,WAAW,EAAE,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { ButtonHTMLAttributes } from 'react';
2
+ import { VariantProps } from 'class-variance-authority';
3
+ declare const buttonVariants: (props?: ({
4
+ variant?: "default" | "link" | "secondary" | "destructive" | "outline" | "ghost" | null | undefined;
5
+ size?: "default" | "sm" | "lg" | "icon" | null | undefined;
6
+ } & import('class-variance-authority/types').ClassProp) | undefined) => string;
7
+ export interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {
8
+ asChild?: boolean;
9
+ }
10
+ declare const Button: import('react').ForwardRefExoticComponent<ButtonProps & import('react').RefAttributes<HTMLButtonElement>>;
11
+ export { Button, buttonVariants };
12
+ //# sourceMappingURL=button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../../../src/components/ui/button.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAE9D,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAGlE,QAAA,MAAM,cAAc;;;8EAwBnB,CAAC;AAEF,MAAM,WAAW,WACf,SAAQ,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,YAAY,CAAC,OAAO,cAAc,CAAC;IACpF,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,QAAA,MAAM,MAAM,2GAWX,CAAC;AAGF,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { ComponentPropsWithoutRef, HTMLAttributes } from 'react';
2
+ import * as DialogPrimitive from '@radix-ui/react-dialog';
3
+ declare const Dialog: import('react').FC<DialogPrimitive.DialogProps>;
4
+ declare const DialogTrigger: import('react').ForwardRefExoticComponent<DialogPrimitive.DialogTriggerProps & import('react').RefAttributes<HTMLButtonElement>>;
5
+ declare const DialogPortal: import('react').FC<DialogPrimitive.DialogPortalProps>;
6
+ declare const DialogClose: import('react').ForwardRefExoticComponent<DialogPrimitive.DialogCloseProps & import('react').RefAttributes<HTMLButtonElement>>;
7
+ declare const DialogOverlay: import('react').ForwardRefExoticComponent<Omit<DialogPrimitive.DialogOverlayProps & import('react').RefAttributes<HTMLDivElement>, "ref"> & import('react').RefAttributes<HTMLDivElement>>;
8
+ interface DialogContentProps extends ComponentPropsWithoutRef<typeof DialogPrimitive.Content> {
9
+ /** When true, the default close (X) button is not rendered. Escape and overlay still close. */
10
+ hideCloseButton?: boolean;
11
+ }
12
+ declare const DialogContent: import('react').ForwardRefExoticComponent<DialogContentProps & import('react').RefAttributes<HTMLDivElement>>;
13
+ declare const DialogHeader: {
14
+ ({ className, ...props }: HTMLAttributes<HTMLDivElement>): import("react/jsx-runtime").JSX.Element;
15
+ displayName: string;
16
+ };
17
+ declare const DialogFooter: {
18
+ ({ className, ...props }: HTMLAttributes<HTMLDivElement>): import("react/jsx-runtime").JSX.Element;
19
+ displayName: string;
20
+ };
21
+ declare const DialogTitle: import('react').ForwardRefExoticComponent<Omit<DialogPrimitive.DialogTitleProps & import('react').RefAttributes<HTMLHeadingElement>, "ref"> & import('react').RefAttributes<HTMLHeadingElement>>;
22
+ declare const DialogDescription: import('react').ForwardRefExoticComponent<Omit<DialogPrimitive.DialogDescriptionProps & import('react').RefAttributes<HTMLParagraphElement>, "ref"> & import('react').RefAttributes<HTMLParagraphElement>>;
23
+ export { Dialog, DialogPortal, DialogOverlay, DialogClose, DialogTrigger, DialogContent, DialogHeader, DialogFooter, DialogTitle, DialogDescription, };
24
+ //# sourceMappingURL=dialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialog.d.ts","sourceRoot":"","sources":["../../../src/components/ui/dialog.tsx"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,wBAAwB,EAE7B,KAAK,cAAc,EACpB,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,eAAe,MAAM,wBAAwB,CAAC;AAI1D,QAAA,MAAM,MAAM,iDAAuB,CAAC;AAEpC,QAAA,MAAM,aAAa,kIAA0B,CAAC;AAE9C,QAAA,MAAM,YAAY,uDAAyB,CAAC;AAE5C,QAAA,MAAM,WAAW,gIAAwB,CAAC;AAE1C,QAAA,MAAM,aAAa,4LAWjB,CAAC;AAGH,UAAU,kBAAmB,SAAQ,wBAAwB,CAAC,OAAO,eAAe,CAAC,OAAO,CAAC;IAC3F,+FAA+F;IAC/F,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,QAAA,MAAM,aAAa,+GA0DlB,CAAC;AAGF,QAAA,MAAM,YAAY;8BAA6B,cAAc,CAAC,cAAc,CAAC;;CAS5E,CAAC;AAGF,QAAA,MAAM,YAAY;8BAA6B,cAAc,CAAC,cAAc,CAAC;;CAQ5E,CAAC;AAGF,QAAA,MAAM,WAAW,kMASf,CAAC;AAGH,QAAA,MAAM,iBAAiB,4MASrB,CAAC;AAGH,OAAO,EACL,MAAM,EACN,YAAY,EACZ,aAAa,EACb,WAAW,EACX,aAAa,EACb,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,iBAAiB,GAClB,CAAC"}
@@ -0,0 +1,38 @@
1
+ import { ComponentProps, ComponentPropsWithoutRef, ReactNode, CSSProperties, HTMLAttributes } from 'react';
2
+ import { Drawer as VaulDrawer } from 'vaul';
3
+ export type DrawerDirection = 'top' | 'bottom' | 'left' | 'right';
4
+ declare const Drawer: {
5
+ ({ open, onOpenChange, direction, ...props }: ComponentProps<typeof VaulDrawer.Root> & {
6
+ direction?: DrawerDirection;
7
+ }): import("react/jsx-runtime").JSX.Element;
8
+ displayName: string;
9
+ };
10
+ declare const DrawerTrigger: import('react').ForwardRefExoticComponent<import('@radix-ui/react-dialog').DialogTriggerProps & import('react').RefAttributes<HTMLButtonElement>>;
11
+ declare const DrawerPortal: typeof import('vaul').Portal;
12
+ declare const DrawerOverlay: import('react').ForwardRefExoticComponent<Omit<Omit<import('@radix-ui/react-dialog').DialogOverlayProps & import('react').RefAttributes<HTMLDivElement>, "ref"> & import('react').RefAttributes<HTMLDivElement>, "ref"> & import('react').RefAttributes<HTMLDivElement>>;
13
+ interface DrawerContentProps extends Omit<ComponentPropsWithoutRef<typeof VaulDrawer.Content>, 'direction'> {
14
+ direction?: DrawerDirection;
15
+ /** CSS length: height for top/bottom (e.g. "80vh", "400px"), width for left/right (e.g. "50vw", "320px") */
16
+ size?: string | null;
17
+ className?: string;
18
+ children?: ReactNode;
19
+ style?: CSSProperties;
20
+ }
21
+ declare const DrawerContent: import('react').ForwardRefExoticComponent<DrawerContentProps & import('react').RefAttributes<HTMLDivElement>>;
22
+ declare const DrawerClose: import('react').ForwardRefExoticComponent<import('@radix-ui/react-dialog').DialogCloseProps & import('react').RefAttributes<HTMLButtonElement>>;
23
+ declare const DrawerHeader: {
24
+ ({ className, ...props }: HTMLAttributes<HTMLDivElement>): import("react/jsx-runtime").JSX.Element;
25
+ displayName: string;
26
+ };
27
+ declare const DrawerFooter: {
28
+ ({ className, ...props }: HTMLAttributes<HTMLDivElement>): import("react/jsx-runtime").JSX.Element;
29
+ displayName: string;
30
+ };
31
+ declare const DrawerTitle: import('react').ForwardRefExoticComponent<Omit<import('@radix-ui/react-dialog').DialogTitleProps & import('react').RefAttributes<HTMLHeadingElement>, "ref"> & import('react').RefAttributes<HTMLHeadingElement>>;
32
+ declare const DrawerDescription: import('react').ForwardRefExoticComponent<Omit<import('@radix-ui/react-dialog').DialogDescriptionProps & import('react').RefAttributes<HTMLParagraphElement>, "ref"> & import('react').RefAttributes<HTMLParagraphElement>>;
33
+ declare const DrawerHandle: {
34
+ ({ className, ...props }: HTMLAttributes<HTMLDivElement>): import("react/jsx-runtime").JSX.Element;
35
+ displayName: string;
36
+ };
37
+ export { Drawer, DrawerTrigger, DrawerPortal, DrawerOverlay, DrawerContent, DrawerClose, DrawerHeader, DrawerFooter, DrawerTitle, DrawerDescription, DrawerHandle, };
38
+ //# sourceMappingURL=drawer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drawer.d.ts","sourceRoot":"","sources":["../../../src/components/ui/drawer.tsx"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,wBAAwB,EAE7B,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,cAAc,EACpB,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,MAAM,CAAC;AAI5C,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;AAElE,QAAA,MAAM,MAAM;kDAKT,cAAc,CAAC,OAAO,UAAU,CAAC,IAAI,CAAC,GAAG;QAC1C,SAAS,CAAC,EAAE,eAAe,CAAC;KAC7B;;CAOA,CAAC;AAGF,QAAA,MAAM,aAAa,mJAAqB,CAAC;AAGzC,QAAA,MAAM,YAAY,8BAAoB,CAAC;AAGvC,QAAA,MAAM,aAAa,0QAWjB,CAAC;AAYH,UAAU,kBAAmB,SAAQ,IAAI,CACvC,wBAAwB,CAAC,OAAO,UAAU,CAAC,OAAO,CAAC,EACnD,WAAW,CACZ;IACC,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,4GAA4G;IAC5G,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB;AAED,QAAA,MAAM,aAAa,+GAkDlB,CAAC;AAGF,QAAA,MAAM,WAAW,iJAAmB,CAAC;AAGrC,QAAA,MAAM,YAAY;8BAA6B,cAAc,CAAC,cAAc,CAAC;;CAS5E,CAAC;AAGF,QAAA,MAAM,YAAY;8BAA6B,cAAc,CAAC,cAAc,CAAC;;CAQ5E,CAAC;AAGF,QAAA,MAAM,WAAW,mNASf,CAAC;AAGH,QAAA,MAAM,iBAAiB,6NASrB,CAAC;AAGH,QAAA,MAAM,YAAY;8BAA6B,cAAc,CAAC,cAAc,CAAC;;CAM5E,CAAC;AAGF,OAAO,EACL,MAAM,EACN,aAAa,EACb,YAAY,EACZ,aAAa,EACb,aAAa,EACb,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,iBAAiB,EACjB,YAAY,GACb,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { SelectHTMLAttributes } from 'react';
2
+ export type SelectProps = SelectHTMLAttributes<HTMLSelectElement>;
3
+ declare const Select: import('react').ForwardRefExoticComponent<SelectProps & import('react').RefAttributes<HTMLSelectElement>>;
4
+ export { Select };
5
+ //# sourceMappingURL=select.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../../../src/components/ui/select.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAG9D,MAAM,MAAM,WAAW,GAAG,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;AAElE,QAAA,MAAM,MAAM,2GAeX,CAAC;AAGF,OAAO,EAAE,MAAM,EAAE,CAAC"}
@@ -0,0 +1,46 @@
1
+ import { ReactNode, HTMLAttributes, ButtonHTMLAttributes, AnchorHTMLAttributes } from 'react';
2
+ import { VariantProps } from 'class-variance-authority';
3
+ type SidebarContextValue = {
4
+ isCollapsed: boolean;
5
+ toggle: () => void;
6
+ };
7
+ declare const useSidebar: () => SidebarContextValue;
8
+ declare const SidebarProvider: ({ children }: {
9
+ children: ReactNode;
10
+ }) => import("react/jsx-runtime").JSX.Element;
11
+ declare const Sidebar: import('react').ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & import('react').RefAttributes<HTMLDivElement>>;
12
+ declare const SidebarTrigger: import('react').ForwardRefExoticComponent<ButtonHTMLAttributes<HTMLButtonElement> & import('react').RefAttributes<HTMLButtonElement>>;
13
+ declare const SidebarHeader: import('react').ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & import('react').RefAttributes<HTMLDivElement>>;
14
+ declare const SidebarContent: import('react').ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & import('react').RefAttributes<HTMLDivElement>>;
15
+ declare const SidebarFooter: import('react').ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & import('react').RefAttributes<HTMLDivElement>>;
16
+ declare const SidebarGroup: import('react').ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & import('react').RefAttributes<HTMLDivElement>>;
17
+ declare const SidebarGroupLabel: import('react').ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & import('react').RefAttributes<HTMLDivElement>>;
18
+ declare const SidebarGroupAction: import('react').ForwardRefExoticComponent<ButtonHTMLAttributes<HTMLButtonElement> & {
19
+ asChild?: boolean;
20
+ } & import('react').RefAttributes<HTMLButtonElement>>;
21
+ declare const SidebarGroupContent: import('react').ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & import('react').RefAttributes<HTMLDivElement>>;
22
+ declare const SidebarMenuButton: import('react').ForwardRefExoticComponent<ButtonHTMLAttributes<HTMLButtonElement> & VariantProps<(props?: ({
23
+ variant?: "default" | "outline" | null | undefined;
24
+ size?: "default" | "sm" | "lg" | null | undefined;
25
+ } & import('class-variance-authority/types').ClassProp) | undefined) => string> & {
26
+ asChild?: boolean;
27
+ isActive?: boolean;
28
+ } & import('react').RefAttributes<HTMLButtonElement>>;
29
+ declare const SidebarMenu: import('react').ForwardRefExoticComponent<HTMLAttributes<HTMLUListElement> & import('react').RefAttributes<HTMLUListElement>>;
30
+ declare const SidebarMenuItem: import('react').ForwardRefExoticComponent<HTMLAttributes<HTMLLIElement> & import('react').RefAttributes<HTMLLIElement>>;
31
+ declare const SidebarMenuAction: import('react').ForwardRefExoticComponent<ButtonHTMLAttributes<HTMLButtonElement> & {
32
+ asChild?: boolean;
33
+ } & import('react').RefAttributes<HTMLButtonElement>>;
34
+ declare const SidebarMenuBadge: import('react').ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & import('react').RefAttributes<HTMLDivElement>>;
35
+ declare const SidebarMenuSkeleton: import('react').ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & {
36
+ showIcon?: boolean;
37
+ } & import('react').RefAttributes<HTMLDivElement>>;
38
+ declare const SidebarMenuSub: import('react').ForwardRefExoticComponent<HTMLAttributes<HTMLUListElement> & import('react').RefAttributes<HTMLUListElement>>;
39
+ declare const SidebarMenuSubButton: import('react').ForwardRefExoticComponent<AnchorHTMLAttributes<HTMLAnchorElement> & {
40
+ asChild?: boolean;
41
+ size?: "sm" | "md" | "lg";
42
+ isActive?: boolean;
43
+ } & import('react').RefAttributes<HTMLAnchorElement>>;
44
+ declare const SidebarMenuSubItem: import('react').ForwardRefExoticComponent<HTMLAttributes<HTMLLIElement> & import('react').RefAttributes<HTMLLIElement>>;
45
+ export { Sidebar, SidebarProvider, SidebarTrigger, SidebarHeader, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupLabel, SidebarGroupAction, SidebarGroupContent, SidebarMenu, SidebarMenuButton, SidebarMenuItem, SidebarMenuAction, SidebarMenuBadge, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, useSidebar, };
46
+ //# sourceMappingURL=sidebar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sidebar.d.ts","sourceRoot":"","sources":["../../../src/components/ui/sidebar.tsx"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EAC1B,MAAM,OAAO,CAAC;AAEf,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAIlE,KAAK,mBAAmB,GAAG;IACzB,WAAW,EAAE,OAAO,CAAC;IACrB,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB,CAAC;AAIF,QAAA,MAAM,UAAU,2BAMf,CAAC;AAEF,QAAA,MAAM,eAAe,GAAI,cAAc;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,4CAU7D,CAAC;AAEF,QAAA,MAAM,OAAO,2HAkBZ,CAAC;AAGF,QAAA,MAAM,cAAc,uIAwBnB,CAAC;AAGF,QAAA,MAAM,aAAa,2HAUlB,CAAC;AAGF,QAAA,MAAM,cAAc,2HAUnB,CAAC;AAGF,QAAA,MAAM,aAAa,2HAUlB,CAAC;AAGF,QAAA,MAAM,YAAY,2HAUjB,CAAC;AAGF,QAAA,MAAM,iBAAiB,2HActB,CAAC;AAGF,QAAA,MAAM,kBAAkB;cAGV,OAAO;qDAcnB,CAAC;AAGH,QAAA,MAAM,mBAAmB,2HAUxB,CAAC;AAyBF,QAAA,MAAM,iBAAiB;;;;cAIP,OAAO;eACN,OAAO;qDAqBtB,CAAC;AAGH,QAAA,MAAM,WAAW,+HAUhB,CAAC;AAGF,QAAA,MAAM,eAAe,yHAUpB,CAAC;AAGF,QAAA,MAAM,iBAAiB;cAGT,OAAO;qDAcnB,CAAC;AAGH,QAAA,MAAM,gBAAgB,2HAarB,CAAC;AAGF,QAAA,MAAM,mBAAmB;eAGV,OAAO;kDAgBpB,CAAC;AAGH,QAAA,MAAM,cAAc,+HAanB,CAAC;AAGF,QAAA,MAAM,oBAAoB;cAGZ,OAAO;WACV,IAAI,GAAG,IAAI,GAAG,IAAI;eACd,OAAO;qDAmBpB,CAAC;AAGH,QAAA,MAAM,kBAAkB,yHAUvB,CAAC;AAGF,OAAO,EACL,OAAO,EACP,eAAe,EACf,cAAc,EACd,aAAa,EACb,cAAc,EACd,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,WAAW,EACX,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,UAAU,GACX,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { ComponentProps } from 'react';
2
+ import { Toaster as Sonner } from 'sonner';
3
+ type ToasterProps = ComponentProps<typeof Sonner>;
4
+ declare const Toaster: ({ ...props }: ToasterProps) => import("react/jsx-runtime").JSX.Element;
5
+ export { Toaster };
6
+ //# sourceMappingURL=sonner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sonner.d.ts","sourceRoot":"","sources":["../../../src/components/ui/sonner.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAE5C,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,QAAQ,CAAC;AAG3C,KAAK,YAAY,GAAG,cAAc,CAAC,OAAO,MAAM,CAAC,CAAC;AAElD,QAAA,MAAM,OAAO,GAAI,cAAc,YAAY,4CA0B1C,CAAC;AAEF,OAAO,EAAE,OAAO,EAAE,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { InputHTMLAttributes } from 'react';
2
+ export interface SwitchProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type'> {
3
+ checked?: boolean;
4
+ onCheckedChange?: (checked: boolean) => void;
5
+ }
6
+ declare const Switch: import('react').ForwardRefExoticComponent<SwitchProps & import('react').RefAttributes<HTMLInputElement>>;
7
+ export { Switch };
8
+ //# sourceMappingURL=switch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"switch.d.ts","sourceRoot":"","sources":["../../../src/components/ui/switch.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,mBAAmB,EAAoB,MAAM,OAAO,CAAC;AAG/E,MAAM,WAAW,WAAY,SAAQ,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACtF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;CAC9C;AAED,QAAA,MAAM,MAAM,0GAiCX,CAAC;AAGF,OAAO,EAAE,MAAM,EAAE,CAAC"}
@@ -0,0 +1,6 @@
1
+ declare const _default: {
2
+ settings: string;
3
+ cookiePreferences: string;
4
+ };
5
+ export default _default;
6
+ //# sourceMappingURL=urls.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"urls.d.ts","sourceRoot":"","sources":["../../src/constants/urls.ts"],"names":[],"mappings":";;;;AAAA,wBAGE"}
@@ -0,0 +1,8 @@
1
+ const e = {
2
+ settings: "/__settings",
3
+ cookiePreferences: "/__cookie-preferences"
4
+ };
5
+ export {
6
+ e as default
7
+ };
8
+ //# sourceMappingURL=urls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"urls.js","sources":["../../src/constants/urls.ts"],"sourcesContent":["export default {\n settings: '/__settings',\n cookiePreferences: '/__cookie-preferences',\n};\n"],"names":["urls"],"mappings":"AAAA,MAAAA,IAAe;AAAA,EACb,UAAU;AAAA,EACV,mBAAmB;AACrB;"}
@@ -0,0 +1,12 @@
1
+ import { DialogOptions } from '@shellui/sdk';
2
+ import { ReactNode } from 'react';
3
+ interface DialogContextValue {
4
+ dialog: (options: DialogOptions) => void;
5
+ }
6
+ export declare function useDialog(): DialogContextValue;
7
+ interface DialogProviderProps {
8
+ children: ReactNode;
9
+ }
10
+ export declare const DialogProvider: ({ children }: DialogProviderProps) => import("react/jsx-runtime").JSX.Element;
11
+ export {};
12
+ //# sourceMappingURL=DialogContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DialogContext.d.ts","sourceRoot":"","sources":["../../../src/features/alertDialog/DialogContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAgC,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAChF,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAiEf,UAAU,kBAAkB;IAC1B,MAAM,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,CAAC;CAC1C;AAID,wBAAgB,SAAS,uBAMxB;AAED,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,SAAS,CAAC;CACrB;AASD,eAAO,MAAM,cAAc,GAAI,cAAc,mBAAmB,4CAgX/D,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { createElement, ReactNode } from 'react';
2
+ import { ShellUIConfig } from './types';
3
+ export interface ConfigContextValue {
4
+ config: ShellUIConfig;
5
+ }
6
+ export declare const ConfigContext: import('react').Context<ConfigContextValue | null>;
7
+ export interface ConfigProviderProps {
8
+ children: ReactNode;
9
+ }
10
+ /**
11
+ * Loads ShellUI config from __SHELLUI_CONFIG__ (injected by Vite at build time)
12
+ * and provides it via context. Children can use useConfig() to read config.
13
+ */
14
+ export declare function ConfigProvider(props: ConfigProviderProps): ReturnType<typeof createElement>;
15
+ //# sourceMappingURL=ConfigProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfigProvider.d.ts","sourceRoot":"","sources":["../../../src/features/config/ConfigProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,aAAa,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAE/E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAI7C,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,aAAa,CAAC;CACvB;AAED,eAAO,MAAM,aAAa,oDAAiD,CAAC;AAE5E,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,SAAS,CAAC;CACrB;AAMD;;;GAGG;AAEH,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAsE3F"}