@shellui/core 0.0.11 → 0.0.13

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 (172) hide show
  1. package/README.md +0 -11
  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-Bb3hFqw1.js +213 -0
  5. package/dist/CookiePreferencesView-Bb3hFqw1.js.map +1 -0
  6. package/dist/DefaultLayout-D3IpgS4j.js +406 -0
  7. package/dist/DefaultLayout-D3IpgS4j.js.map +1 -0
  8. package/dist/FullscreenLayout-Do9vAfl8.js +30 -0
  9. package/dist/FullscreenLayout-Do9vAfl8.js.map +1 -0
  10. package/dist/HomeView-DwckTuxz.js +21 -0
  11. package/dist/HomeView-DwckTuxz.js.map +1 -0
  12. package/dist/NotFoundView-DD7azhz-.js +52 -0
  13. package/dist/NotFoundView-DD7azhz-.js.map +1 -0
  14. package/dist/OverlayShell-kDY56DaN.js +642 -0
  15. package/dist/OverlayShell-kDY56DaN.js.map +1 -0
  16. package/dist/SettingsView-Bt4I-KDT.js +2207 -0
  17. package/dist/SettingsView-Bt4I-KDT.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-CEqkRKyk.js +633 -0
  21. package/dist/WindowsLayout-CEqkRKyk.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-CfvdAI_Y.js +2168 -0
  149. package/dist/index-CfvdAI_Y.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-Dt-gibIZ.js +336 -0
  163. package/dist/sidebar-Dt-gibIZ.js.map +1 -0
  164. package/dist/style.css +1 -0
  165. package/dist/switch-CuKXfl3x.js +44 -0
  166. package/dist/switch-CuKXfl3x.js.map +1 -0
  167. package/dist/types.js +2 -0
  168. package/dist/types.js.map +1 -0
  169. package/package.json +16 -14
  170. package/src/features/config/ConfigProvider.ts +20 -5
  171. package/src/features/config/useConfig.ts +14 -1
  172. package/src/index.ts +2 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WindowsLayout-CEqkRKyk.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":"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"}
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;AA6CF,QAAA,MAAM,cAAc,uIAoBnB,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,CAqF3F"}