@the-portland-company/shell 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +22 -0
- package/dist/index.cjs +496 -8
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +119 -2
- package/dist/index.d.ts +119 -2
- package/dist/index.js +493 -12
- package/dist/index.js.map +1 -1
- package/package.json +2 -1
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/theme/colors.ts","../src/theme/components.ts","../src/theme/index.ts","../src/components/Card.tsx","../src/components/PageContainer.tsx","../src/components/PageHeader.tsx","../src/components/BreadcrumbBar.tsx","../src/components/HeaderTabBar.tsx","../src/providers/GlobalUiIdProvider.tsx","../src/providers/ShellProvider.tsx","../src/hooks/useShellAuth.ts","../src/hooks/useAppRegistry.ts","../src/components/Header.tsx","../src/components/Sidebar.tsx","../src/components/Footer.tsx","../src/components/AppLayout.tsx","../src/sw/registerShellPrecache.ts","../src/speculation/emitRules.ts"],"names":["extendTheme","jsxs","jsx","clsx","Link","Tooltip","useLocation","useEffect","createContext","useState","useMemo","ChakraProvider","useContext","Flex","Heading","Spacer","Box","Menu","MenuButton","Avatar","MenuList","MenuItem","VStack","Text"],"mappings":"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","file":"index.cjs","sourcesContent":["// Theme color definitions for light and dark modes\nexport const colors = {\n // Primary brand color - Politogy Red/Orange (Energy & Action)\n brand: {\n 50: '#fff5f0',\n 100: '#ffe8dc',\n 200: '#ffd0b8',\n 300: '#ffb088',\n 400: '#ff8c5a',\n 500: '#e86a3a', // Primary brand color - burnt orange/red\n 600: '#cc5429',\n 700: '#a6421f',\n 800: '#803317',\n 900: '#5c2410',\n },\n\n // Politogy Brand Colors\n politogy: {\n // Legacy Blue - kept for reference\n blue: {\n 50: '#e8f4fd',\n 100: '#bee3f8',\n 200: '#90cdf4',\n 300: '#63b3ed',\n 400: '#4299e1',\n 500: '#3182ce',\n 600: '#2b6cb0',\n 700: '#2c5282',\n 800: '#2a4365',\n 900: '#1a365d',\n },\n // Primary Red/Orange - Energy & Action (main brand color)\n red: {\n 50: '#fff5f0',\n 100: '#ffe8dc',\n 200: '#ffd0b8',\n 300: '#ffb088',\n 400: '#ff8c5a',\n 500: '#e86a3a',\n 600: '#cc5429',\n 700: '#a6421f',\n 800: '#803317',\n 900: '#5c2410',\n },\n // Navy - Professional & Authoritative\n navy: {\n 50: '#e8eef6',\n 100: '#c5d4e8',\n 200: '#9fb8d9',\n 300: '#789cca',\n 400: '#5b86be',\n 500: '#3e70b2',\n 600: '#325a8e',\n 700: '#26446a',\n 800: '#1a2e47',\n 900: '#0e1823',\n },\n // White & Off-white\n white: '#ffffff',\n offWhite: '#f8fafc',\n // Text colors\n text: {\n primary: '#1a202c',\n secondary: '#4a5568',\n muted: '#718096',\n light: '#a0aec0',\n },\n },\n\n // Semantic color tokens that will switch based on color mode\n gray: {\n 50: '#f7fafc',\n 100: '#edf2f7',\n 200: '#e2e8f0',\n 300: '#cbd5e0',\n 400: '#a0aec0',\n 500: '#718096',\n 600: '#4a5568',\n 700: '#2d3748',\n 800: '#1a202c',\n 900: '#171923',\n },\n};\n\n// Semantic tokens for automatic color mode switching\nexport const semanticTokens = {\n colors: {\n // Text colors\n 'text.primary': {\n default: 'gray.900',\n _dark: 'gray.50',\n },\n 'text.secondary': {\n default: 'gray.600',\n _dark: 'gray.400',\n },\n 'text.muted': {\n default: 'gray.500',\n _dark: 'gray.500',\n },\n\n // Background colors\n 'bg.primary': {\n default: 'white',\n _dark: 'gray.800',\n },\n 'bg.secondary': {\n default: 'gray.50',\n _dark: 'gray.900',\n },\n 'bg.surface': {\n default: 'white',\n _dark: 'gray.700',\n },\n 'bg.hover': {\n default: 'gray.50',\n _dark: 'gray.600',\n },\n\n // Border colors\n 'border.default': {\n default: 'gray.200',\n _dark: 'gray.600',\n },\n 'border.muted': {\n default: 'gray.100',\n _dark: 'gray.700',\n },\n\n // Component specific\n 'card.bg': {\n default: 'white',\n _dark: 'gray.700',\n },\n 'card.border': {\n default: 'gray.200',\n _dark: 'gray.600',\n },\n 'input.bg': {\n default: 'white',\n _dark: 'gray.700',\n },\n 'input.border': {\n default: 'gray.200',\n _dark: 'gray.600',\n },\n 'input.hover': {\n default: 'gray.400',\n _dark: 'gray.500',\n },\n\n // Navigation\n 'nav.bg': {\n default: 'white',\n _dark: 'gray.800',\n },\n 'nav.border': {\n default: 'gray.200',\n _dark: 'gray.700',\n },\n\n // Sidebar\n 'sidebar.bg': {\n default: 'gray.50',\n _dark: 'gray.900',\n },\n 'sidebar.hover': {\n default: 'gray.100',\n _dark: 'gray.800',\n },\n 'sidebar.active': {\n default: 'brand.50',\n _dark: 'brand.900',\n },\n\n // Status colors\n 'success.bg': {\n default: 'green.50',\n _dark: 'green.900',\n },\n 'error.bg': {\n default: 'red.50',\n _dark: 'red.900',\n },\n 'warning.bg': {\n default: 'yellow.50',\n _dark: 'yellow.900',\n },\n 'info.bg': {\n default: 'blue.50',\n _dark: 'blue.900',\n },\n },\n};\n","// Component style overrides for theme using Politogy brand colors\nexport const components = {\n Button: {\n baseStyle: {\n fontWeight: 'medium',\n },\n defaultProps: {\n colorScheme: 'brand',\n },\n variants: {\n primary: {\n bg: 'brand.500',\n color: 'white',\n _hover: {\n bg: 'brand.600',\n _disabled: {\n bg: 'brand.500',\n },\n },\n _active: {\n bg: 'brand.700',\n },\n },\n secondary: {\n borderWidth: '1px',\n borderColor: 'gray.300',\n bg: 'white',\n color: 'gray.700',\n _hover: {\n bg: 'gray.50',\n },\n },\n solid: (props: { colorScheme: string }) => {\n const { colorScheme: c } = props;\n // For brand colorScheme, use explicit colors\n if (c === 'brand') {\n return {\n bg: 'brand.500',\n color: 'white',\n _hover: {\n bg: 'brand.600',\n _disabled: {\n bg: 'brand.500',\n },\n },\n _active: {\n bg: 'brand.700',\n },\n };\n }\n // For other colorSchemes, use standard pattern with explicit bg and white text\n return {\n bg: `${c}.500`,\n color: 'white',\n _hover: {\n bg: `${c}.600`,\n _disabled: {\n bg: `${c}.500`,\n },\n },\n _active: {\n bg: `${c}.700`,\n },\n };\n },\n ghost: (props: { colorScheme: string }) => {\n const { colorScheme: c } = props;\n return {\n color: `${c}.600`,\n _hover: {\n bg: `${c}.50`,\n },\n };\n },\n outline: (props: { colorScheme: string }) => {\n const { colorScheme: c } = props;\n return {\n borderColor: `${c}.500`,\n color: `${c}.600`,\n _hover: {\n bg: `${c}.50`,\n },\n };\n },\n link: {\n color: 'brand.500',\n _hover: {\n color: 'brand.600',\n textDecoration: 'underline',\n },\n },\n },\n },\n\n Heading: {\n baseStyle: {\n color: 'politogy.navy.800',\n fontWeight: 'semibold',\n },\n },\n\n Card: {\n baseStyle: {\n container: {\n bg: 'card.bg',\n borderWidth: '1px',\n borderColor: 'card.border',\n borderRadius: 'lg',\n },\n },\n },\n\n Input: {\n baseStyle: {\n field: {\n bg: 'input.bg',\n borderColor: 'var(--mode-input-border-color)',\n _hover: {\n borderColor: 'var(--mode-input-hover-border-color)',\n },\n _focus: {\n borderColor: 'var(--mode-primary-color)',\n boxShadow: '0 0 0 1px var(--mode-input-focus-shadow-color)',\n },\n },\n },\n defaultProps: {\n variant: 'outline',\n },\n variants: {\n outline: {\n field: {\n borderColor: 'var(--mode-input-border-color)',\n _hover: {\n borderColor: 'var(--mode-input-hover-border-color)',\n },\n _focus: {\n borderColor: 'var(--mode-primary-color)',\n boxShadow: '0 0 0 1px var(--mode-input-focus-shadow-color)',\n },\n },\n },\n },\n },\n\n NumberInput: {\n defaultProps: {\n variant: 'outline',\n },\n variants: {\n outline: {\n field: {\n borderColor: 'var(--mode-input-border-color)',\n _hover: {\n borderColor: 'var(--mode-input-hover-border-color)',\n },\n _focus: {\n borderColor: 'var(--mode-primary-color)',\n boxShadow: '0 0 0 1px var(--mode-input-focus-shadow-color)',\n },\n },\n },\n },\n },\n\n Select: {\n baseStyle: {\n field: {\n bg: 'input.bg',\n borderColor: 'var(--mode-input-border-color)',\n _hover: {\n borderColor: 'var(--mode-input-hover-border-color)',\n },\n _focus: {\n borderColor: 'var(--mode-primary-color)',\n boxShadow: '0 0 0 1px var(--mode-input-focus-shadow-color)',\n },\n },\n },\n defaultProps: {\n variant: 'outline',\n },\n variants: {\n outline: {\n field: {\n borderColor: 'var(--mode-input-border-color)',\n _hover: {\n borderColor: 'var(--mode-input-hover-border-color)',\n },\n _focus: {\n borderColor: 'var(--mode-primary-color)',\n boxShadow: '0 0 0 1px var(--mode-input-focus-shadow-color)',\n },\n },\n },\n },\n },\n\n Textarea: {\n baseStyle: {\n bg: 'input.bg',\n borderColor: 'var(--mode-input-border-color)',\n _hover: {\n borderColor: 'var(--mode-input-hover-border-color)',\n },\n _focus: {\n borderColor: 'var(--mode-primary-color)',\n boxShadow: '0 0 0 1px var(--mode-input-focus-shadow-color)',\n },\n },\n defaultProps: {\n variant: 'outline',\n },\n variants: {\n outline: {\n borderColor: 'var(--mode-input-border-color)',\n _hover: {\n borderColor: 'var(--mode-input-hover-border-color)',\n },\n _focus: {\n borderColor: 'var(--mode-primary-color)',\n boxShadow: '0 0 0 1px var(--mode-input-focus-shadow-color)',\n },\n },\n },\n },\n\n Menu: {\n baseStyle: {\n list: {\n bg: 'bg.surface',\n borderColor: 'var(--mode-input-border-color)',\n boxShadow: 'lg',\n },\n item: {\n bg: 'transparent',\n _hover: {\n bg: 'bg.hover',\n },\n _focus: {\n bg: 'bg.hover',\n },\n },\n },\n },\n\n Modal: {\n baseStyle: {\n dialog: {\n bg: 'bg.surface',\n },\n overlay: {\n bg: 'blackAlpha.600',\n },\n },\n },\n\n Popover: {\n baseStyle: {\n content: {\n bg: 'bg.surface',\n borderColor: 'border.default',\n boxShadow: 'lg',\n },\n },\n },\n\n Drawer: {\n baseStyle: {\n dialog: {\n bg: 'bg.surface',\n },\n overlay: {\n bg: 'blackAlpha.600',\n },\n },\n },\n\n Tabs: {\n baseStyle: {\n root: {\n width: '100%',\n },\n tablist: {\n width: '100%',\n alignItems: 'flex-end',\n gap: 'var(--app-tab-gap)',\n },\n tabpanels: {\n width: '100%',\n },\n tabpanel: {\n width: '100%',\n },\n tab: {\n minHeight: 'var(--app-tab-height)',\n height: 'var(--app-tab-height)',\n lineHeight: 1,\n borderTopLeftRadius: 'var(--app-tab-radius)',\n borderTopRightRadius: 'var(--app-tab-radius)',\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0,\n color: 'text.secondary',\n _selected: {\n color: 'white',\n bg: 'brand.500',\n borderColor: 'brand.500',\n fontWeight: 'semibold',\n },\n _hover: {\n bg: 'gray.100',\n },\n },\n },\n variants: {\n enclosed: {\n tab: {\n color: 'gray.600',\n bg: 'transparent',\n borderColor: 'gray.200',\n _selected: {\n color: 'white',\n bg: 'brand.500',\n borderColor: 'brand.500',\n borderBottomColor: 'brand.500',\n },\n _hover: {\n bg: 'gray.100',\n },\n },\n },\n 'enclosed-colored': {\n tab: {\n color: 'gray.600',\n _selected: {\n color: 'white',\n bg: 'brand.500',\n },\n },\n },\n 'soft-rounded': {\n tab: {\n color: 'gray.600',\n _selected: {\n color: 'white',\n bg: 'brand.500',\n },\n },\n },\n 'solid-rounded': {\n tab: {\n color: 'gray.600',\n _selected: {\n color: 'white',\n bg: 'brand.500',\n },\n },\n },\n line: {\n tab: {\n color: 'gray.600',\n _selected: {\n color: 'white',\n bg: 'brand.500',\n borderColor: 'brand.500',\n },\n _hover: {\n bg: 'gray.100',\n },\n },\n },\n unstyled: {\n tab: {\n // Allow inline styles to take precedence for unstyled variant\n },\n },\n },\n defaultProps: {\n colorScheme: 'brand',\n },\n },\n\n Badge: {\n baseStyle: {\n borderRadius: 'md',\n px: 2,\n py: 1,\n fontWeight: 'medium',\n },\n defaultProps: {\n colorScheme: 'brand',\n },\n },\n\n Link: {\n baseStyle: {\n color: 'brand.500',\n _hover: {\n color: 'brand.600',\n textDecoration: 'underline',\n },\n },\n },\n\n Alert: {\n baseStyle: {\n container: {\n borderRadius: 'md',\n },\n },\n variants: {\n subtle: (props: { colorScheme: string }) => {\n const { colorScheme: c } = props;\n // Keep info alerts blue\n if (c === 'blue' || c === 'info') {\n return {\n container: {\n bg: 'blue.50',\n },\n icon: {\n color: 'blue.500',\n },\n title: {\n color: 'blue.800',\n },\n description: {\n color: 'blue.700',\n },\n };\n }\n return {};\n },\n 'left-accent': (props: { colorScheme: string }) => {\n const { colorScheme: c } = props;\n if (c === 'blue' || c === 'info') {\n return {\n container: {\n bg: 'blue.50',\n borderLeftColor: 'blue.500',\n },\n icon: {\n color: 'blue.500',\n },\n };\n }\n return {};\n },\n solid: (props: { colorScheme: string }) => {\n const { colorScheme: c } = props;\n if (c === 'blue' || c === 'info') {\n return {\n container: {\n bg: 'blue.500',\n color: 'white',\n },\n };\n }\n return {};\n },\n },\n },\n\n Table: {\n baseStyle: {\n table: {\n width: '100%',\n borderCollapse: 'collapse',\n borderSpacing: '0',\n borderColor: 'gray.200',\n },\n th: {\n borderColor: 'gray.200',\n borderBottom: 'none',\n bg: 'gray.200',\n color: 'text.secondary',\n fontWeight: 'semibold',\n px: 3,\n py: 2.5,\n minHeight: '44px',\n height: '44px',\n verticalAlign: 'middle',\n },\n td: {\n borderColor: 'gray.200',\n borderBottom: 'none',\n px: 3,\n py: 2.5,\n minHeight: '44px',\n height: '44px',\n verticalAlign: 'middle',\n },\n tr: {\n borderBottom: 'none',\n borderColor: 'transparent',\n _odd: {\n bg: 'white',\n },\n _even: {\n bg: 'gray.50',\n },\n _hover: {\n bg: 'gray.100',\n },\n },\n tbody: {\n tr: {\n _odd: {\n bg: 'white',\n },\n _even: {\n bg: 'gray.50',\n },\n _hover: {\n bg: 'blue.100',\n },\n },\n },\n },\n variants: {\n simple: {},\n striped: {},\n },\n defaultProps: {\n variant: 'striped',\n },\n },\n\n Divider: {\n baseStyle: {\n borderColor: 'border.default',\n },\n },\n};\n","import { extendTheme } from '@chakra-ui/react';\nimport { colors, semanticTokens } from './colors';\nimport { components } from './components';\n\n// Define the theme configuration\nconst config = {\n initialColorMode: 'light', // Always use light theme\n useSystemColorMode: false, // Disable system color mode detection\n};\n\n// Global styles\nconst styles = {\n global: () => ({\n body: {\n bg: 'white',\n color: 'gray.900',\n },\n ':root': {\n '--mode-primary-color': 'var(--app-color-brand-500)',\n '--mode-input-border-color': 'var(--app-color-brand-500)',\n '--mode-input-hover-border-color': 'var(--app-color-brand-600)',\n '--mode-input-focus-shadow-color': 'var(--app-color-brand-500)',\n },\n // Ensure non-Chakra/native text-like inputs follow mode border colors as well.\n 'input:not([type=\"checkbox\"]):not([type=\"radio\"]):not([type=\"range\"]):not([type=\"file\"]):not([type=\"color\"]), textarea, select':\n {\n borderColor: 'var(--mode-input-border-color)',\n },\n 'input:not([type=\"checkbox\"]):not([type=\"radio\"]):not([type=\"range\"]):not([type=\"file\"]):not([type=\"color\"]):hover, textarea:hover, select:hover':\n {\n borderColor: 'var(--mode-input-hover-border-color)',\n },\n 'input:not([type=\"checkbox\"]):not([type=\"radio\"]):not([type=\"range\"]):not([type=\"file\"]):not([type=\"color\"]):focus, textarea:focus, select:focus':\n {\n borderColor: 'var(--mode-primary-color)',\n boxShadow: '0 0 0 1px var(--mode-input-focus-shadow-color)',\n },\n }),\n};\n\n// Fonts\nconst fonts = {\n heading: '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Helvetica, Arial, sans-serif',\n body: '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Helvetica, Arial, sans-serif',\n mono: 'SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace',\n};\n\n// Create and export the theme\nexport const politogyTheme = extendTheme({\n config,\n colors,\n semanticTokens,\n components,\n styles,\n fonts,\n\n // Additional theme configurations\n shadows: {\n outline: '0 0 0 3px var(--app-color-brand-500)',\n },\n\n radii: {\n none: '0',\n sm: '0.125rem',\n base: '0.25rem',\n md: '0.375rem',\n lg: '0.5rem',\n xl: '0.75rem',\n '2xl': '1rem',\n '3xl': '1.5rem',\n full: '9999px',\n },\n});\n\nexport { politogyTheme as default };\n","import type { CSSProperties, ReactNode } from 'react';\ntype CardProps = {\n title?: string;\n children: ReactNode;\n minH?: string | number;\n className?: string;\n style?: CSSProperties;\n [key: string]: unknown;\n};\n\nexport default function Card({\n title,\n children,\n minH,\n className,\n style,\n ...props\n}: CardProps) {\n return (\n <div\n className={`rounded-lg border border-slate-200 bg-white p-6 shadow-sm ${className || ''}`}\n style={{ minHeight: minH, ...style }}\n {...props}\n >\n {title && <h3 className=\"mb-4 text-lg font-semibold\">{title}</h3>}\n {children}\n </div>\n );\n}\n","import type { ReactNode } from 'react';\nimport clsx from 'clsx';\n\ntype PageContainerProps = {\n children: ReactNode;\n maxW?: string;\n px?: number | string;\n py?: number | string;\n lockHeight?: boolean;\n};\n\nexport default function PageContainer({\n children,\n maxW = 'container.xl',\n px,\n py,\n lockHeight = true,\n}: PageContainerProps) {\n const isFullWidth = maxW === 'full';\n const effectivePx = isFullWidth ? 0 : px === undefined ? 4 : Number(px);\n const effectivePy = py === undefined ? (isFullWidth ? 0 : 4) : py;\n const pxValue = String(effectivePx);\n const pyValue = String(effectivePy);\n\n const maxWClass = isFullWidth\n ? 'max-w-none'\n : maxW === 'container.xl'\n ? 'max-w-7xl'\n : maxW === 'container.lg'\n ? 'max-w-6xl'\n : maxW === 'container.md'\n ? 'max-w-5xl'\n : typeof maxW === 'string' && /^(\\d+)px$/.test(maxW)\n ? ''\n : 'max-w-7xl';\n\n const pxClass =\n pxValue === '0'\n ? 'px-0'\n : pxValue === '1'\n ? 'px-1'\n : pxValue === '2'\n ? 'px-2'\n : pxValue === '3'\n ? 'px-3'\n : pxValue === '4'\n ? 'px-4'\n : 'px-4';\n\n const pyClass =\n pyValue === '0'\n ? 'py-0'\n : pyValue === '4'\n ? 'py-4'\n : pyValue === '5'\n ? 'py-5'\n : pyValue === '6'\n ? 'py-6'\n : 'py-6';\n\n const inlineMaxWStyle =\n typeof maxW === 'string' && /^(\\d+)px$/.test(maxW) ? { maxWidth: maxW } : undefined;\n\n return (\n <main\n className={lockHeight ? 'h-[calc(100vh-80px)] min-h-[calc(100vh-80px)]' : ''}\n style={{ background: 'var(--app-tab-content-bg)' }}\n >\n <div\n className={clsx(\n 'mx-auto w-full',\n maxWClass,\n pxClass,\n pyClass,\n lockHeight ? 'h-full' : 'h-auto'\n )}\n style={inlineMaxWStyle}\n >\n {children}\n </div>\n </main>\n );\n}\n","import { Link } from 'react-router-dom';\nimport clsx from 'clsx';\nimport type { ReactNode } from 'react';\n\ntype BreadcrumbItem = {\n label: string;\n href?: string;\n};\n\ntype PageHeaderProps = {\n title?: ReactNode;\n breadcrumbs?: BreadcrumbItem[];\n actions?: ReactNode;\n tabBar?: ReactNode;\n maxW?: string;\n hideSidebar?: boolean;\n};\n\nconst resolveMaxWidthClass = (maxW: string) => {\n if (maxW === 'full') return 'max-w-none';\n if (maxW === 'container.lg') return 'max-w-6xl';\n if (maxW === 'container.md') return 'max-w-5xl';\n return 'max-w-7xl';\n};\n\nexport default function PageHeader({\n title,\n breadcrumbs = [],\n actions = null,\n tabBar = null,\n maxW = 'full',\n hideSidebar = false,\n}: PageHeaderProps) {\n const maxWClass = resolveMaxWidthClass(maxW);\n const titleText = typeof title === 'string' ? title.trim() : '';\n const normalizedTitle = titleText.toLowerCase();\n const breadcrumbsWithoutCurrent = [...breadcrumbs];\n const last = breadcrumbsWithoutCurrent[breadcrumbsWithoutCurrent.length - 1];\n // Only remove a trailing breadcrumb that duplicates the page title when there's\n // still at least one breadcrumb left to show.\n if (\n breadcrumbsWithoutCurrent.length > 1 &&\n normalizedTitle &&\n last &&\n last.label.trim().toLowerCase() === normalizedTitle\n ) {\n breadcrumbsWithoutCurrent.pop();\n }\n\n // Avoid rendering an empty header bar (no title, no breadcrumbs, no actions, no tabs).\n if (!title && breadcrumbsWithoutCurrent.length === 0 && !actions && !tabBar) {\n return null;\n }\n\n return (\n <div\n style={{ backgroundColor: 'var(--app-tab-header-bg, #888888)' }}\n className={clsx('text-slate-100', tabBar ? 'pt-3 pb-0' : 'py-3 border-b border-gray-200', {\n 'md:ml-60': !hideSidebar,\n })}\n >\n <div className={clsx('w-full px-4', maxWClass)}>\n <div className=\"flex w-full flex-nowrap items-start justify-between gap-4\">\n <div className=\"min-w-0 flex-1\">\n {title ? (\n <div className=\"min-w-0\">\n <div className=\"truncate text-lg font-semibold text-white\">{title}</div>\n </div>\n ) : null}\n {breadcrumbsWithoutCurrent.length > 0 ? (\n <nav\n aria-label=\"Breadcrumb\"\n className={clsx('min-w-0 text-slate-100', title ? 'mt-1' : '')}\n >\n <ol className=\"flex flex-nowrap items-center gap-2 overflow-hidden text-sm text-gray-600\">\n {breadcrumbsWithoutCurrent.map((item, index) => (\n <li\n key={`${item.label}-${index}`}\n className=\"flex min-w-0 flex-shrink-0 items-center gap-2\"\n >\n {index > 0 ? <span className=\"text-gray-400\">></span> : null}\n {item.href ? (\n <Link to={item.href} className=\"truncate text-slate-100 hover:underline\">\n {item.label}\n </Link>\n ) : (\n <span className=\"truncate text-slate-100\">{item.label}</span>\n )}\n </li>\n ))}\n </ol>\n </nav>\n ) : null}\n </div>\n {actions ? <div className=\"flex-shrink-0\">{actions}</div> : null}\n </div>\n </div>\n {tabBar ? (\n <div className=\"m-0 w-full px-0\" style={{ backgroundColor: 'transparent' }}>\n {tabBar}\n </div>\n ) : null}\n </div>\n );\n}\n","import type { ReactNode } from 'react';\nimport { Link } from 'react-router-dom';\nimport clsx from 'clsx';\n\ntype BreadcrumbItem = {\n label: string;\n href?: string;\n};\n\ntype BreadcrumbBarProps = {\n breadcrumbs?: BreadcrumbItem[];\n actions?: ReactNode;\n maxW?: string;\n};\n\nexport default function BreadcrumbBar({\n breadcrumbs = [],\n actions = null,\n maxW = 'full',\n}: BreadcrumbBarProps) {\n if ((!breadcrumbs || breadcrumbs.length === 0) && !actions) {\n return null;\n }\n\n const maxWClass =\n maxW === 'full'\n ? 'max-w-none'\n : maxW === 'container.xl'\n ? 'max-w-7xl'\n : maxW === 'container.lg'\n ? 'max-w-6xl'\n : maxW === 'container.md'\n ? 'max-w-5xl'\n : 'max-w-7xl';\n\n return (\n <div\n className=\"ml-0 border-b border-gray-200 px-4 py-3 md:ml-60\"\n style={{ backgroundColor: 'var(--app-tab-header-bg, #888888)' }}\n >\n <div className={clsx('mx-auto w-full px-0', maxWClass)}>\n <div className=\"flex w-full items-center justify-between\">\n {breadcrumbs && breadcrumbs.length > 0 && (\n <nav aria-label=\"Breadcrumb\">\n <ol className=\"flex items-center gap-2 text-sm text-slate-100\">\n {breadcrumbs.map((item, index) => (\n <li key={index} className=\"flex items-center gap-2\">\n {index > 0 ? <span className=\"text-gray-400\">></span> : null}\n {item.href ? (\n <Link to={item.href} className=\"text-slate-100 hover:underline\">\n {item.label}\n </Link>\n ) : (\n <span className=\"text-slate-100\">{item.label}</span>\n )}\n </li>\n ))}\n </ol>\n </nav>\n )}\n {actions && <div>{actions}</div>}\n </div>\n </div>\n </div>\n );\n}\n","import clsx from 'clsx';\nimport type { ReactNode } from 'react';\nimport { Tooltip } from '@chakra-ui/react';\n\nexport type HeaderTabBarItem = {\n id: string;\n label: string;\n icon: ReactNode;\n disabled?: boolean;\n};\n\ntype HeaderTabBarProps = {\n items: HeaderTabBarItem[];\n activeId: string;\n onChange: (id: string) => void;\n className?: string;\n ariaLabel?: string;\n};\n\nexport default function HeaderTabBar({\n items,\n activeId,\n onChange,\n className,\n ariaLabel = 'Tabs',\n}: HeaderTabBarProps) {\n return (\n <div\n role=\"tablist\"\n aria-label={ariaLabel}\n className={clsx(\n // Header-wide tab strip: background + bottom border only (no outer box).\n 'app-header-tab-bar m-0 flex w-full bg-slate-100 p-0',\n 'border-b border-slate-200',\n className\n )}\n >\n {items.map((item, idx) => {\n const isActive = item.id === activeId;\n const isDisabled = Boolean(item.disabled);\n return (\n <Tooltip\n key={item.id}\n label={item.label}\n placement=\"top\"\n hasArrow\n bg=\"black\"\n color=\"white\"\n isDisabled={isDisabled}\n >\n <button\n type=\"button\"\n role=\"tab\"\n aria-selected={isActive}\n aria-label={item.label}\n disabled={isDisabled}\n onClick={() => onChange(item.id)}\n className={clsx(\n 'app-header-tab-button relative inline-flex flex-1 items-center justify-center',\n 'transition-colors',\n 'rounded-none',\n idx === 0 ? 'rounded-tl-lg' : null,\n idx === items.length - 1 ? 'rounded-tr-lg' : null,\n isActive\n ? 'text-white'\n : 'bg-transparent text-slate-600 hover:bg-white/60 hover:text-slate-900',\n isDisabled ? 'cursor-not-allowed opacity-50' : null\n )}\n style={{\n background: isActive\n ? 'var(--mode-primary-color, var(--app-btn-primary-bg))'\n : undefined,\n }}\n >\n <span className=\"inline-flex items-center justify-center text-[14px] leading-none\">\n {item.icon}\n </span>\n </button>\n </Tooltip>\n );\n })}\n </div>\n );\n}\n","import { useEffect } from 'react';\nimport { useLocation } from 'react-router-dom';\n\n// Inlined feature-flag check (originally in react/app/src/utils/runtimeFeatureFlags.ts).\n// The shell package is self-contained; keeping this helper local avoids a\n// cross-app import while preserving identical runtime behavior.\nconst FLAG_PREFIX = ['__', 'politogy', 'enable'].join('');\nconst GLOBAL_UI_IDS_FLAG = [FLAG_PREFIX, 'global', 'ui', 'ids'].join('_');\n\nfunction isFlagEnabled(name: string): boolean {\n if (typeof window === 'undefined') return false;\n\n try {\n const params = new URLSearchParams(window.location.search);\n if (params.get(name) === '1') return true;\n } catch {\n // Ignore malformed location access.\n }\n\n try {\n return window.localStorage.getItem(name) === '1';\n } catch {\n return false;\n }\n}\n\nfunction isGlobalUiIdsEnabled(): boolean {\n return isFlagEnabled(GLOBAL_UI_IDS_FLAG);\n}\n\nconst TARGET_SELECTOR = [\n 'main',\n 'header',\n 'footer',\n 'aside',\n 'nav',\n 'section',\n '[role=\"region\"]',\n '[role=\"banner\"]',\n '[role=\"main\"]',\n '[role=\"navigation\"]',\n '[role=\"complementary\"]',\n 'button',\n '[role=\"button\"]',\n 'a[role=\"button\"]',\n 'input',\n 'textarea',\n 'select',\n '[role=\"combobox\"]',\n '[role=\"listbox\"]',\n '[role=\"option\"]',\n '[role=\"textbox\"]',\n '[role=\"tablist\"]',\n '[role=\"tab\"]',\n '[role=\"tabpanel\"]',\n '[role=\"menu\"]',\n '[role=\"menuitem\"]',\n '[role=\"menuitemcheckbox\"]',\n '[role=\"menuitemradio\"]',\n 'svg',\n '[data-icon]',\n].join(',');\n\nfunction sanitizeToken(raw: string | null | undefined, fallback: string): string {\n if (!raw) return fallback;\n const cleaned = raw\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, '-')\n .replace(/^-+|-+$/g, '')\n .slice(0, 40);\n return cleaned || fallback;\n}\n\nfunction pageToken(pathname: string): string {\n if (!pathname || pathname === '/') return 'home';\n return sanitizeToken(pathname.replace(/\\//g, '-'), 'page');\n}\n\nfunction inferCategory(el: Element): string {\n const role = (el.getAttribute('role') || '').toLowerCase();\n const tag = el.tagName.toLowerCase();\n\n if (role.includes('tab') || tag === 'tabs') return 'tabs';\n if (role.startsWith('menu') || role === 'menu') return 'menu';\n if (tag === 'button' || role === 'button') return 'button';\n if (tag === 'input' || tag === 'textarea' || tag === 'select' || role === 'combobox')\n return 'field';\n if (tag === 'svg' || el.hasAttribute('data-icon')) return 'icon';\n if (\n ['main', 'header', 'footer', 'aside', 'nav', 'section'].includes(tag) ||\n ['region', 'banner', 'main', 'navigation', 'complementary'].includes(role)\n ) {\n return 'layout';\n }\n\n return 'ui';\n}\n\nfunction inferName(el: Element): string {\n const htmlEl = el as HTMLElement;\n return sanitizeToken(\n el.getAttribute('data-testid') ||\n el.getAttribute('aria-label') ||\n el.getAttribute('name') ||\n el.getAttribute('title') ||\n (htmlEl as HTMLInputElement).placeholder ||\n htmlEl.innerText ||\n el.getAttribute('class'),\n 'item'\n );\n}\n\nfunction assignUiIds(pathname: string): void {\n const used = new Set<string>();\n document.querySelectorAll('[id]').forEach((el) => {\n const id = el.id?.trim();\n if (id) used.add(id);\n });\n\n const counters: Record<string, number> = {};\n const page = pageToken(pathname);\n const elements = document.querySelectorAll(TARGET_SELECTOR);\n\n elements.forEach((el) => {\n const category = inferCategory(el);\n const name = inferName(el);\n const stableKey = `ui-${category}-${name}`;\n\n el.setAttribute('data-ui-category', category);\n el.setAttribute('data-ui-key', stableKey);\n el.setAttribute('data-ui-page', page);\n\n if (el.id) {\n return;\n }\n\n const counterKey = `${page}-${category}-${name}`;\n counters[counterKey] = (counters[counterKey] || 0) + 1;\n\n let nextId = `ui-${page}-${category}-${name}-${counters[counterKey]}`;\n while (used.has(nextId)) {\n counters[counterKey] += 1;\n nextId = `ui-${page}-${category}-${name}-${counters[counterKey]}`;\n }\n\n el.id = nextId;\n used.add(nextId);\n });\n}\n\nexport default function GlobalUiIdProvider() {\n const location = useLocation();\n const enabled = isGlobalUiIdsEnabled();\n\n useEffect(() => {\n if (!enabled) return;\n\n let rafId = 0;\n\n const schedule = () => {\n if (rafId) return;\n rafId = window.requestAnimationFrame(() => {\n rafId = 0;\n assignUiIds(location.pathname);\n });\n };\n\n schedule();\n\n const observer = new MutationObserver(() => {\n schedule();\n });\n\n observer.observe(document.body, {\n subtree: true,\n childList: true,\n attributes: true,\n attributeFilter: ['role', 'aria-label', 'name', 'title', 'placeholder', 'class', 'data-icon'],\n });\n\n return () => {\n if (rafId) window.cancelAnimationFrame(rafId);\n observer.disconnect();\n };\n }, [enabled, location.pathname]);\n\n return null;\n}\n","import { createContext, useEffect, useMemo, useState } from 'react'\nimport { ChakraProvider } from '@chakra-ui/react'\nimport type { Session } from '@supabase/supabase-js'\nimport { politogyTheme } from '../theme'\nimport type {\n AppRegistryEntry,\n ShellAuthStatus,\n ShellAuthValue,\n ShellProviderProps,\n ShellUser,\n} from '../types'\n\nexport const ShellAuthContext = createContext<ShellAuthValue | null>(null)\n\ninterface ShellMetaValue {\n currentApp: string\n appRegistry: AppRegistryEntry[]\n basename: string\n}\n\nexport const ShellMetaContext = createContext<ShellMetaValue | null>(null)\n\nfunction toShellUser(session: Session | null): ShellUser | null {\n if (!session?.user) return null\n const su = session.user\n const fullName = (su.user_metadata as { full_name?: string } | null)?.full_name ?? null\n return {\n id: su.id,\n email: su.email ?? null,\n displayName: fullName ?? su.email ?? null,\n raw: su,\n }\n}\n\nexport function ShellProvider({\n children,\n supabaseClient,\n currentApp,\n appRegistry,\n basename,\n}: ShellProviderProps) {\n const [status, setStatus] = useState<ShellAuthStatus>('loading')\n const [session, setSession] = useState<Session | null>(null)\n\n useEffect(() => {\n let cancelled = false\n supabaseClient.auth.getSession().then(({ data }) => {\n if (cancelled) return\n setSession(data.session)\n setStatus(data.session ? 'authenticated' : 'unauthenticated')\n })\n const sub = supabaseClient.auth.onAuthStateChange((_event, newSession) => {\n setSession(newSession)\n setStatus(newSession ? 'authenticated' : 'unauthenticated')\n })\n return () => {\n cancelled = true\n sub.data.subscription.unsubscribe()\n }\n }, [supabaseClient])\n\n const value = useMemo<ShellAuthValue>(\n () => ({\n status,\n session,\n user: toShellUser(session),\n signOut: async () => {\n await supabaseClient.auth.signOut()\n },\n }),\n [status, session, supabaseClient],\n )\n\n const meta = useMemo<ShellMetaValue>(\n () => ({\n currentApp,\n appRegistry: appRegistry ?? [],\n basename: basename ?? '',\n }),\n [currentApp, appRegistry, basename],\n )\n\n return (\n <ShellAuthContext.Provider value={value}>\n <ShellMetaContext.Provider value={meta}>\n <ChakraProvider theme={politogyTheme}>{children}</ChakraProvider>\n </ShellMetaContext.Provider>\n </ShellAuthContext.Provider>\n )\n}\n","import { useContext } from 'react'\nimport { ShellAuthContext } from '../providers/ShellProvider'\nimport type { ShellAuthValue } from '../types'\n\nexport function useShellAuth(): ShellAuthValue {\n const ctx = useContext(ShellAuthContext)\n if (!ctx) {\n throw new Error('useShellAuth must be used inside <ShellProvider>')\n }\n return ctx\n}\n","import { useContext } from 'react'\nimport { ShellMetaContext } from '../providers/ShellProvider'\nimport type { AppRegistryEntry } from '../types'\n\nexport function useAppRegistry(): AppRegistryEntry[] {\n const meta = useContext(ShellMetaContext)\n if (!meta) {\n throw new Error('useAppRegistry must be used inside <ShellProvider>')\n }\n return meta.appRegistry\n}\n\nexport function useCurrentApp(): string {\n const meta = useContext(ShellMetaContext)\n if (!meta) {\n throw new Error('useCurrentApp must be used inside <ShellProvider>')\n }\n return meta.currentApp\n}\n","import { Box, Flex, Heading, Spacer, Menu, MenuButton, MenuList, MenuItem, Avatar } from '@chakra-ui/react'\nimport type { ReactNode } from 'react'\nimport { useShellAuth } from '../hooks/useShellAuth'\n\nexport interface HeaderProps {\n extrasSlot?: ReactNode\n}\n\nexport function Header({ extrasSlot }: HeaderProps) {\n const { user, signOut, status } = useShellAuth()\n return (\n <Flex\n as=\"header\"\n align=\"center\"\n px={4}\n h=\"56px\"\n bg=\"white\"\n borderBottom=\"1px solid\"\n borderColor=\"gray.200\"\n >\n <Heading size=\"md\" color=\"brand.500\">politogy</Heading>\n <Spacer />\n {extrasSlot && <Box mr={3}>{extrasSlot}</Box>}\n {status === 'authenticated' && user && (\n <Menu>\n <MenuButton>\n <Avatar size=\"sm\" name={user.displayName ?? user.email ?? ''} />\n </MenuButton>\n <MenuList>\n <MenuItem onClick={() => signOut()}>Sign out</MenuItem>\n </MenuList>\n </Menu>\n )}\n </Flex>\n )\n}\n","import { Box, VStack, Link, Text } from '@chakra-ui/react'\nimport type { ReactNode } from 'react'\nimport type { AppRegistryEntry } from '../types'\n\nexport interface SidebarProps {\n entries: AppRegistryEntry[]\n currentApp: string\n footerSlot?: ReactNode\n}\n\nexport function Sidebar({ entries, currentApp, footerSlot }: SidebarProps) {\n return (\n <Box\n as=\"nav\"\n w=\"200px\"\n minH=\"100%\"\n bg=\"gray.50\"\n borderRight=\"1px solid\"\n borderColor=\"gray.200\"\n p={3}\n display=\"flex\"\n flexDirection=\"column\"\n >\n <VStack align=\"stretch\" spacing={1}>\n {entries.filter((e) => e.visible !== false).map((entry) => (\n <Link\n key={entry.id}\n href={entry.path}\n data-current={entry.id === currentApp}\n px={3}\n py={2}\n borderRadius=\"md\"\n fontWeight={entry.id === currentApp ? 'bold' : 'normal'}\n bg={entry.id === currentApp ? 'brand.50' : 'transparent'}\n _hover={{ bg: 'gray.100' }}\n >\n <Text>{entry.label}</Text>\n </Link>\n ))}\n </VStack>\n <Box flex=\"1\" />\n {footerSlot && <Box pt={3}>{footerSlot}</Box>}\n </Box>\n )\n}\n","import { Box, Text } from '@chakra-ui/react'\n\nexport interface FooterProps {\n buildInfo?: string\n}\n\nexport function Footer({ buildInfo }: FooterProps) {\n return (\n <Box\n as=\"footer\"\n px={4}\n py={2}\n borderTop=\"1px solid\"\n borderColor=\"gray.200\"\n fontSize=\"xs\"\n color=\"gray.500\"\n >\n <Text>politogy {buildInfo ? `· ${buildInfo}` : ''}</Text>\n </Box>\n )\n}\n","import { Box, Flex } from '@chakra-ui/react'\nimport type { ReactNode } from 'react'\nimport { Header } from './Header'\nimport { Sidebar } from './Sidebar'\nimport { Footer } from './Footer'\nimport { useAppRegistry, useCurrentApp } from '../hooks/useAppRegistry'\nimport type { ShellSlots } from '../types'\n\nexport interface AppLayoutProps extends ShellSlots {\n children: ReactNode\n buildInfo?: string\n}\n\nexport function AppLayout({\n children,\n buildInfo,\n headerExtrasSlot,\n modalsSlot,\n notificationsSlot,\n sidebarFooterSlot,\n overlaySlot,\n}: AppLayoutProps) {\n const currentApp = useCurrentApp()\n const entries = useAppRegistry()\n\n return (\n <Flex direction=\"column\" minH=\"100vh\">\n <Header extrasSlot={headerExtrasSlot} />\n <Flex flex=\"1\" minH={0}>\n <Sidebar entries={entries} currentApp={currentApp} footerSlot={sidebarFooterSlot} />\n <Box as=\"main\" flex=\"1\" overflow=\"auto\" position=\"relative\">\n {children}\n {notificationsSlot}\n </Box>\n </Flex>\n <Footer buildInfo={buildInfo} />\n {modalsSlot}\n {overlaySlot}\n </Flex>\n )\n}\n","export interface RegisterShellPrecacheOptions {\n /** Path the host app serves the SW from. Default: '/sw-shell.js'. */\n scriptUrl?: string\n /** Scope the SW controls. Default: '/'. */\n scope?: string\n}\n\n/**\n * Register the shell precache service worker. Silently no-ops in browsers that\n * don't support service workers (e.g., old Safari) and during SSR.\n *\n * Hosts must copy `node_modules/@the-portland-company/shell/dist/shell-precache.worker.js`\n * to the URL specified by `scriptUrl` (default `/sw-shell.js`) in their public\n * directory so the browser can fetch it at registration time.\n */\nexport async function registerShellPrecache(opts: RegisterShellPrecacheOptions = {}): Promise<void> {\n if (typeof window === 'undefined') return\n if (!('serviceWorker' in navigator)) return\n const scriptUrl = opts.scriptUrl ?? '/sw-shell.js'\n const scope = opts.scope ?? '/'\n try {\n await navigator.serviceWorker.register(scriptUrl, { scope })\n } catch (err) {\n // Registration failures are not user-visible. Log for ops, swallow.\n // eslint-disable-next-line no-console\n console.warn('[shell] precache SW registration failed:', err)\n }\n}\n","import type { AppRegistryEntry } from '../types'\n\n/**\n * Build a Speculation Rules JSON payload that prerenders other apps in the\n * registry on moderate eagerness. Returns null when there are no eligible\n * other apps to prerender (e.g., this is the only app in the registry).\n *\n * The host app is expected to render this as\n * `<script type=\"speculationrules\">{json}</script>` in <head> at runtime.\n */\nexport function buildSpeculationRules(\n currentApp: string,\n registry: AppRegistryEntry[],\n): string | null {\n const others = registry.filter(\n (entry) => entry.id !== currentApp && entry.visible !== false,\n )\n if (others.length === 0) return null\n const payload = {\n prerender: [\n {\n urls: others.map((entry) => entry.path),\n eagerness: 'moderate' as const,\n },\n ],\n }\n return JSON.stringify(payload)\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/theme/colors.ts","../src/theme/components.ts","../src/theme/index.ts","../src/components/Card.tsx","../src/components/PageContainer.tsx","../src/components/PageHeader.tsx","../src/components/BreadcrumbBar.tsx","../src/components/HeaderTabBar.tsx","../src/providers/GlobalUiIdProvider.tsx","../src/providers/ShellProvider.tsx","../src/hooks/useShellAuth.ts","../src/hooks/useAppRegistry.ts","../src/hooks/useShellOrganization.ts","../src/hooks/useShellLinkedAccounts.ts","../src/hooks/useShellSupport.ts","../src/hooks/useShellChrome.ts","../src/components/internal/orgBadge.tsx","../src/components/OrgSelector.tsx","../src/components/SupportRequestButton.tsx","../src/components/UserMenu.tsx","../src/components/Header.tsx","../src/components/Sidebar.tsx","../src/components/Footer.tsx","../src/components/AppLayout.tsx","../src/sw/registerShellPrecache.ts","../src/speculation/emitRules.ts"],"names":["extendTheme","jsxs","jsx","clsx","Link","Tooltip","useLocation","useEffect","createContext","useState","useMemo","ChakraProvider","useContext","Box","Image","Menu","MenuButton","HStack","Fragment","Text","Portal","MenuList","MenuItem","Flex","MenuDivider","useDisclosure","useToast","useCallback","IconButton","Modal","ModalOverlay","ModalContent","ModalHeader","ModalCloseButton","ModalBody","VStack","Textarea","ModalFooter","Button","useColorMode","Avatar","Heading","Spacer"],"mappings":"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","file":"index.cjs","sourcesContent":["// Theme color definitions for light and dark modes\nexport const colors = {\n // Primary brand color - Politogy Red/Orange (Energy & Action)\n brand: {\n 50: '#fff5f0',\n 100: '#ffe8dc',\n 200: '#ffd0b8',\n 300: '#ffb088',\n 400: '#ff8c5a',\n 500: '#e86a3a', // Primary brand color - burnt orange/red\n 600: '#cc5429',\n 700: '#a6421f',\n 800: '#803317',\n 900: '#5c2410',\n },\n\n // Politogy Brand Colors\n politogy: {\n // Legacy Blue - kept for reference\n blue: {\n 50: '#e8f4fd',\n 100: '#bee3f8',\n 200: '#90cdf4',\n 300: '#63b3ed',\n 400: '#4299e1',\n 500: '#3182ce',\n 600: '#2b6cb0',\n 700: '#2c5282',\n 800: '#2a4365',\n 900: '#1a365d',\n },\n // Primary Red/Orange - Energy & Action (main brand color)\n red: {\n 50: '#fff5f0',\n 100: '#ffe8dc',\n 200: '#ffd0b8',\n 300: '#ffb088',\n 400: '#ff8c5a',\n 500: '#e86a3a',\n 600: '#cc5429',\n 700: '#a6421f',\n 800: '#803317',\n 900: '#5c2410',\n },\n // Navy - Professional & Authoritative\n navy: {\n 50: '#e8eef6',\n 100: '#c5d4e8',\n 200: '#9fb8d9',\n 300: '#789cca',\n 400: '#5b86be',\n 500: '#3e70b2',\n 600: '#325a8e',\n 700: '#26446a',\n 800: '#1a2e47',\n 900: '#0e1823',\n },\n // White & Off-white\n white: '#ffffff',\n offWhite: '#f8fafc',\n // Text colors\n text: {\n primary: '#1a202c',\n secondary: '#4a5568',\n muted: '#718096',\n light: '#a0aec0',\n },\n },\n\n // Semantic color tokens that will switch based on color mode\n gray: {\n 50: '#f7fafc',\n 100: '#edf2f7',\n 200: '#e2e8f0',\n 300: '#cbd5e0',\n 400: '#a0aec0',\n 500: '#718096',\n 600: '#4a5568',\n 700: '#2d3748',\n 800: '#1a202c',\n 900: '#171923',\n },\n};\n\n// Semantic tokens for automatic color mode switching\nexport const semanticTokens = {\n colors: {\n // Text colors\n 'text.primary': {\n default: 'gray.900',\n _dark: 'gray.50',\n },\n 'text.secondary': {\n default: 'gray.600',\n _dark: 'gray.400',\n },\n 'text.muted': {\n default: 'gray.500',\n _dark: 'gray.500',\n },\n\n // Background colors\n 'bg.primary': {\n default: 'white',\n _dark: 'gray.800',\n },\n 'bg.secondary': {\n default: 'gray.50',\n _dark: 'gray.900',\n },\n 'bg.surface': {\n default: 'white',\n _dark: 'gray.700',\n },\n 'bg.hover': {\n default: 'gray.50',\n _dark: 'gray.600',\n },\n\n // Border colors\n 'border.default': {\n default: 'gray.200',\n _dark: 'gray.600',\n },\n 'border.muted': {\n default: 'gray.100',\n _dark: 'gray.700',\n },\n\n // Component specific\n 'card.bg': {\n default: 'white',\n _dark: 'gray.700',\n },\n 'card.border': {\n default: 'gray.200',\n _dark: 'gray.600',\n },\n 'input.bg': {\n default: 'white',\n _dark: 'gray.700',\n },\n 'input.border': {\n default: 'gray.200',\n _dark: 'gray.600',\n },\n 'input.hover': {\n default: 'gray.400',\n _dark: 'gray.500',\n },\n\n // Navigation\n 'nav.bg': {\n default: 'white',\n _dark: 'gray.800',\n },\n 'nav.border': {\n default: 'gray.200',\n _dark: 'gray.700',\n },\n\n // Sidebar\n 'sidebar.bg': {\n default: 'gray.50',\n _dark: 'gray.900',\n },\n 'sidebar.hover': {\n default: 'gray.100',\n _dark: 'gray.800',\n },\n 'sidebar.active': {\n default: 'brand.50',\n _dark: 'brand.900',\n },\n\n // Status colors\n 'success.bg': {\n default: 'green.50',\n _dark: 'green.900',\n },\n 'error.bg': {\n default: 'red.50',\n _dark: 'red.900',\n },\n 'warning.bg': {\n default: 'yellow.50',\n _dark: 'yellow.900',\n },\n 'info.bg': {\n default: 'blue.50',\n _dark: 'blue.900',\n },\n },\n};\n","// Component style overrides for theme using Politogy brand colors\nexport const components = {\n Button: {\n baseStyle: {\n fontWeight: 'medium',\n },\n defaultProps: {\n colorScheme: 'brand',\n },\n variants: {\n primary: {\n bg: 'brand.500',\n color: 'white',\n _hover: {\n bg: 'brand.600',\n _disabled: {\n bg: 'brand.500',\n },\n },\n _active: {\n bg: 'brand.700',\n },\n },\n secondary: {\n borderWidth: '1px',\n borderColor: 'gray.300',\n bg: 'white',\n color: 'gray.700',\n _hover: {\n bg: 'gray.50',\n },\n },\n solid: (props: { colorScheme: string }) => {\n const { colorScheme: c } = props;\n // For brand colorScheme, use explicit colors\n if (c === 'brand') {\n return {\n bg: 'brand.500',\n color: 'white',\n _hover: {\n bg: 'brand.600',\n _disabled: {\n bg: 'brand.500',\n },\n },\n _active: {\n bg: 'brand.700',\n },\n };\n }\n // For other colorSchemes, use standard pattern with explicit bg and white text\n return {\n bg: `${c}.500`,\n color: 'white',\n _hover: {\n bg: `${c}.600`,\n _disabled: {\n bg: `${c}.500`,\n },\n },\n _active: {\n bg: `${c}.700`,\n },\n };\n },\n ghost: (props: { colorScheme: string }) => {\n const { colorScheme: c } = props;\n return {\n color: `${c}.600`,\n _hover: {\n bg: `${c}.50`,\n },\n };\n },\n outline: (props: { colorScheme: string }) => {\n const { colorScheme: c } = props;\n return {\n borderColor: `${c}.500`,\n color: `${c}.600`,\n _hover: {\n bg: `${c}.50`,\n },\n };\n },\n link: {\n color: 'brand.500',\n _hover: {\n color: 'brand.600',\n textDecoration: 'underline',\n },\n },\n },\n },\n\n Heading: {\n baseStyle: {\n color: 'politogy.navy.800',\n fontWeight: 'semibold',\n },\n },\n\n Card: {\n baseStyle: {\n container: {\n bg: 'card.bg',\n borderWidth: '1px',\n borderColor: 'card.border',\n borderRadius: 'lg',\n },\n },\n },\n\n Input: {\n baseStyle: {\n field: {\n bg: 'input.bg',\n borderColor: 'var(--mode-input-border-color)',\n _hover: {\n borderColor: 'var(--mode-input-hover-border-color)',\n },\n _focus: {\n borderColor: 'var(--mode-primary-color)',\n boxShadow: '0 0 0 1px var(--mode-input-focus-shadow-color)',\n },\n },\n },\n defaultProps: {\n variant: 'outline',\n },\n variants: {\n outline: {\n field: {\n borderColor: 'var(--mode-input-border-color)',\n _hover: {\n borderColor: 'var(--mode-input-hover-border-color)',\n },\n _focus: {\n borderColor: 'var(--mode-primary-color)',\n boxShadow: '0 0 0 1px var(--mode-input-focus-shadow-color)',\n },\n },\n },\n },\n },\n\n NumberInput: {\n defaultProps: {\n variant: 'outline',\n },\n variants: {\n outline: {\n field: {\n borderColor: 'var(--mode-input-border-color)',\n _hover: {\n borderColor: 'var(--mode-input-hover-border-color)',\n },\n _focus: {\n borderColor: 'var(--mode-primary-color)',\n boxShadow: '0 0 0 1px var(--mode-input-focus-shadow-color)',\n },\n },\n },\n },\n },\n\n Select: {\n baseStyle: {\n field: {\n bg: 'input.bg',\n borderColor: 'var(--mode-input-border-color)',\n _hover: {\n borderColor: 'var(--mode-input-hover-border-color)',\n },\n _focus: {\n borderColor: 'var(--mode-primary-color)',\n boxShadow: '0 0 0 1px var(--mode-input-focus-shadow-color)',\n },\n },\n },\n defaultProps: {\n variant: 'outline',\n },\n variants: {\n outline: {\n field: {\n borderColor: 'var(--mode-input-border-color)',\n _hover: {\n borderColor: 'var(--mode-input-hover-border-color)',\n },\n _focus: {\n borderColor: 'var(--mode-primary-color)',\n boxShadow: '0 0 0 1px var(--mode-input-focus-shadow-color)',\n },\n },\n },\n },\n },\n\n Textarea: {\n baseStyle: {\n bg: 'input.bg',\n borderColor: 'var(--mode-input-border-color)',\n _hover: {\n borderColor: 'var(--mode-input-hover-border-color)',\n },\n _focus: {\n borderColor: 'var(--mode-primary-color)',\n boxShadow: '0 0 0 1px var(--mode-input-focus-shadow-color)',\n },\n },\n defaultProps: {\n variant: 'outline',\n },\n variants: {\n outline: {\n borderColor: 'var(--mode-input-border-color)',\n _hover: {\n borderColor: 'var(--mode-input-hover-border-color)',\n },\n _focus: {\n borderColor: 'var(--mode-primary-color)',\n boxShadow: '0 0 0 1px var(--mode-input-focus-shadow-color)',\n },\n },\n },\n },\n\n Menu: {\n baseStyle: {\n list: {\n bg: 'bg.surface',\n borderColor: 'var(--mode-input-border-color)',\n boxShadow: 'lg',\n },\n item: {\n bg: 'transparent',\n _hover: {\n bg: 'bg.hover',\n },\n _focus: {\n bg: 'bg.hover',\n },\n },\n },\n },\n\n Modal: {\n baseStyle: {\n dialog: {\n bg: 'bg.surface',\n },\n overlay: {\n bg: 'blackAlpha.600',\n },\n },\n },\n\n Popover: {\n baseStyle: {\n content: {\n bg: 'bg.surface',\n borderColor: 'border.default',\n boxShadow: 'lg',\n },\n },\n },\n\n Drawer: {\n baseStyle: {\n dialog: {\n bg: 'bg.surface',\n },\n overlay: {\n bg: 'blackAlpha.600',\n },\n },\n },\n\n Tabs: {\n baseStyle: {\n root: {\n width: '100%',\n },\n tablist: {\n width: '100%',\n alignItems: 'flex-end',\n gap: 'var(--app-tab-gap)',\n },\n tabpanels: {\n width: '100%',\n },\n tabpanel: {\n width: '100%',\n },\n tab: {\n minHeight: 'var(--app-tab-height)',\n height: 'var(--app-tab-height)',\n lineHeight: 1,\n borderTopLeftRadius: 'var(--app-tab-radius)',\n borderTopRightRadius: 'var(--app-tab-radius)',\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0,\n color: 'text.secondary',\n _selected: {\n color: 'white',\n bg: 'brand.500',\n borderColor: 'brand.500',\n fontWeight: 'semibold',\n },\n _hover: {\n bg: 'gray.100',\n },\n },\n },\n variants: {\n enclosed: {\n tab: {\n color: 'gray.600',\n bg: 'transparent',\n borderColor: 'gray.200',\n _selected: {\n color: 'white',\n bg: 'brand.500',\n borderColor: 'brand.500',\n borderBottomColor: 'brand.500',\n },\n _hover: {\n bg: 'gray.100',\n },\n },\n },\n 'enclosed-colored': {\n tab: {\n color: 'gray.600',\n _selected: {\n color: 'white',\n bg: 'brand.500',\n },\n },\n },\n 'soft-rounded': {\n tab: {\n color: 'gray.600',\n _selected: {\n color: 'white',\n bg: 'brand.500',\n },\n },\n },\n 'solid-rounded': {\n tab: {\n color: 'gray.600',\n _selected: {\n color: 'white',\n bg: 'brand.500',\n },\n },\n },\n line: {\n tab: {\n color: 'gray.600',\n _selected: {\n color: 'white',\n bg: 'brand.500',\n borderColor: 'brand.500',\n },\n _hover: {\n bg: 'gray.100',\n },\n },\n },\n unstyled: {\n tab: {\n // Allow inline styles to take precedence for unstyled variant\n },\n },\n },\n defaultProps: {\n colorScheme: 'brand',\n },\n },\n\n Badge: {\n baseStyle: {\n borderRadius: 'md',\n px: 2,\n py: 1,\n fontWeight: 'medium',\n },\n defaultProps: {\n colorScheme: 'brand',\n },\n },\n\n Link: {\n baseStyle: {\n color: 'brand.500',\n _hover: {\n color: 'brand.600',\n textDecoration: 'underline',\n },\n },\n },\n\n Alert: {\n baseStyle: {\n container: {\n borderRadius: 'md',\n },\n },\n variants: {\n subtle: (props: { colorScheme: string }) => {\n const { colorScheme: c } = props;\n // Keep info alerts blue\n if (c === 'blue' || c === 'info') {\n return {\n container: {\n bg: 'blue.50',\n },\n icon: {\n color: 'blue.500',\n },\n title: {\n color: 'blue.800',\n },\n description: {\n color: 'blue.700',\n },\n };\n }\n return {};\n },\n 'left-accent': (props: { colorScheme: string }) => {\n const { colorScheme: c } = props;\n if (c === 'blue' || c === 'info') {\n return {\n container: {\n bg: 'blue.50',\n borderLeftColor: 'blue.500',\n },\n icon: {\n color: 'blue.500',\n },\n };\n }\n return {};\n },\n solid: (props: { colorScheme: string }) => {\n const { colorScheme: c } = props;\n if (c === 'blue' || c === 'info') {\n return {\n container: {\n bg: 'blue.500',\n color: 'white',\n },\n };\n }\n return {};\n },\n },\n },\n\n Table: {\n baseStyle: {\n table: {\n width: '100%',\n borderCollapse: 'collapse',\n borderSpacing: '0',\n borderColor: 'gray.200',\n },\n th: {\n borderColor: 'gray.200',\n borderBottom: 'none',\n bg: 'gray.200',\n color: 'text.secondary',\n fontWeight: 'semibold',\n px: 3,\n py: 2.5,\n minHeight: '44px',\n height: '44px',\n verticalAlign: 'middle',\n },\n td: {\n borderColor: 'gray.200',\n borderBottom: 'none',\n px: 3,\n py: 2.5,\n minHeight: '44px',\n height: '44px',\n verticalAlign: 'middle',\n },\n tr: {\n borderBottom: 'none',\n borderColor: 'transparent',\n _odd: {\n bg: 'white',\n },\n _even: {\n bg: 'gray.50',\n },\n _hover: {\n bg: 'gray.100',\n },\n },\n tbody: {\n tr: {\n _odd: {\n bg: 'white',\n },\n _even: {\n bg: 'gray.50',\n },\n _hover: {\n bg: 'blue.100',\n },\n },\n },\n },\n variants: {\n simple: {},\n striped: {},\n },\n defaultProps: {\n variant: 'striped',\n },\n },\n\n Divider: {\n baseStyle: {\n borderColor: 'border.default',\n },\n },\n};\n","import { extendTheme } from '@chakra-ui/react';\nimport { colors, semanticTokens } from './colors';\nimport { components } from './components';\n\n// Define the theme configuration\nconst config = {\n initialColorMode: 'light', // Always use light theme\n useSystemColorMode: false, // Disable system color mode detection\n};\n\n// Global styles\nconst styles = {\n global: () => ({\n body: {\n bg: 'white',\n color: 'gray.900',\n },\n ':root': {\n '--mode-primary-color': 'var(--app-color-brand-500)',\n '--mode-input-border-color': 'var(--app-color-brand-500)',\n '--mode-input-hover-border-color': 'var(--app-color-brand-600)',\n '--mode-input-focus-shadow-color': 'var(--app-color-brand-500)',\n },\n // Ensure non-Chakra/native text-like inputs follow mode border colors as well.\n 'input:not([type=\"checkbox\"]):not([type=\"radio\"]):not([type=\"range\"]):not([type=\"file\"]):not([type=\"color\"]), textarea, select':\n {\n borderColor: 'var(--mode-input-border-color)',\n },\n 'input:not([type=\"checkbox\"]):not([type=\"radio\"]):not([type=\"range\"]):not([type=\"file\"]):not([type=\"color\"]):hover, textarea:hover, select:hover':\n {\n borderColor: 'var(--mode-input-hover-border-color)',\n },\n 'input:not([type=\"checkbox\"]):not([type=\"radio\"]):not([type=\"range\"]):not([type=\"file\"]):not([type=\"color\"]):focus, textarea:focus, select:focus':\n {\n borderColor: 'var(--mode-primary-color)',\n boxShadow: '0 0 0 1px var(--mode-input-focus-shadow-color)',\n },\n }),\n};\n\n// Fonts\nconst fonts = {\n heading: '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Helvetica, Arial, sans-serif',\n body: '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Helvetica, Arial, sans-serif',\n mono: 'SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace',\n};\n\n// Create and export the theme\nexport const politogyTheme = extendTheme({\n config,\n colors,\n semanticTokens,\n components,\n styles,\n fonts,\n\n // Additional theme configurations\n shadows: {\n outline: '0 0 0 3px var(--app-color-brand-500)',\n },\n\n radii: {\n none: '0',\n sm: '0.125rem',\n base: '0.25rem',\n md: '0.375rem',\n lg: '0.5rem',\n xl: '0.75rem',\n '2xl': '1rem',\n '3xl': '1.5rem',\n full: '9999px',\n },\n});\n\nexport { politogyTheme as default };\n","import type { CSSProperties, ReactNode } from 'react';\ntype CardProps = {\n title?: string;\n children: ReactNode;\n minH?: string | number;\n className?: string;\n style?: CSSProperties;\n [key: string]: unknown;\n};\n\nexport default function Card({\n title,\n children,\n minH,\n className,\n style,\n ...props\n}: CardProps) {\n return (\n <div\n className={`rounded-lg border border-slate-200 bg-white p-6 shadow-sm ${className || ''}`}\n style={{ minHeight: minH, ...style }}\n {...props}\n >\n {title && <h3 className=\"mb-4 text-lg font-semibold\">{title}</h3>}\n {children}\n </div>\n );\n}\n","import type { ReactNode } from 'react';\nimport clsx from 'clsx';\n\ntype PageContainerProps = {\n children: ReactNode;\n maxW?: string;\n px?: number | string;\n py?: number | string;\n lockHeight?: boolean;\n};\n\nexport default function PageContainer({\n children,\n maxW = 'container.xl',\n px,\n py,\n lockHeight = true,\n}: PageContainerProps) {\n const isFullWidth = maxW === 'full';\n const effectivePx = isFullWidth ? 0 : px === undefined ? 4 : Number(px);\n const effectivePy = py === undefined ? (isFullWidth ? 0 : 4) : py;\n const pxValue = String(effectivePx);\n const pyValue = String(effectivePy);\n\n const maxWClass = isFullWidth\n ? 'max-w-none'\n : maxW === 'container.xl'\n ? 'max-w-7xl'\n : maxW === 'container.lg'\n ? 'max-w-6xl'\n : maxW === 'container.md'\n ? 'max-w-5xl'\n : typeof maxW === 'string' && /^(\\d+)px$/.test(maxW)\n ? ''\n : 'max-w-7xl';\n\n const pxClass =\n pxValue === '0'\n ? 'px-0'\n : pxValue === '1'\n ? 'px-1'\n : pxValue === '2'\n ? 'px-2'\n : pxValue === '3'\n ? 'px-3'\n : pxValue === '4'\n ? 'px-4'\n : 'px-4';\n\n const pyClass =\n pyValue === '0'\n ? 'py-0'\n : pyValue === '4'\n ? 'py-4'\n : pyValue === '5'\n ? 'py-5'\n : pyValue === '6'\n ? 'py-6'\n : 'py-6';\n\n const inlineMaxWStyle =\n typeof maxW === 'string' && /^(\\d+)px$/.test(maxW) ? { maxWidth: maxW } : undefined;\n\n return (\n <main\n className={lockHeight ? 'h-[calc(100vh-80px)] min-h-[calc(100vh-80px)]' : ''}\n style={{ background: 'var(--app-tab-content-bg)' }}\n >\n <div\n className={clsx(\n 'mx-auto w-full',\n maxWClass,\n pxClass,\n pyClass,\n lockHeight ? 'h-full' : 'h-auto'\n )}\n style={inlineMaxWStyle}\n >\n {children}\n </div>\n </main>\n );\n}\n","import { Link } from 'react-router-dom';\nimport clsx from 'clsx';\nimport type { ReactNode } from 'react';\n\ntype BreadcrumbItem = {\n label: string;\n href?: string;\n};\n\ntype PageHeaderProps = {\n title?: ReactNode;\n breadcrumbs?: BreadcrumbItem[];\n actions?: ReactNode;\n tabBar?: ReactNode;\n maxW?: string;\n hideSidebar?: boolean;\n};\n\nconst resolveMaxWidthClass = (maxW: string) => {\n if (maxW === 'full') return 'max-w-none';\n if (maxW === 'container.lg') return 'max-w-6xl';\n if (maxW === 'container.md') return 'max-w-5xl';\n return 'max-w-7xl';\n};\n\nexport default function PageHeader({\n title,\n breadcrumbs = [],\n actions = null,\n tabBar = null,\n maxW = 'full',\n hideSidebar = false,\n}: PageHeaderProps) {\n const maxWClass = resolveMaxWidthClass(maxW);\n const titleText = typeof title === 'string' ? title.trim() : '';\n const normalizedTitle = titleText.toLowerCase();\n const breadcrumbsWithoutCurrent = [...breadcrumbs];\n const last = breadcrumbsWithoutCurrent[breadcrumbsWithoutCurrent.length - 1];\n // Only remove a trailing breadcrumb that duplicates the page title when there's\n // still at least one breadcrumb left to show.\n if (\n breadcrumbsWithoutCurrent.length > 1 &&\n normalizedTitle &&\n last &&\n last.label.trim().toLowerCase() === normalizedTitle\n ) {\n breadcrumbsWithoutCurrent.pop();\n }\n\n // Avoid rendering an empty header bar (no title, no breadcrumbs, no actions, no tabs).\n if (!title && breadcrumbsWithoutCurrent.length === 0 && !actions && !tabBar) {\n return null;\n }\n\n return (\n <div\n style={{ backgroundColor: 'var(--app-tab-header-bg, #888888)' }}\n className={clsx('text-slate-100', tabBar ? 'pt-3 pb-0' : 'py-3 border-b border-gray-200', {\n 'md:ml-60': !hideSidebar,\n })}\n >\n <div className={clsx('w-full px-4', maxWClass)}>\n <div className=\"flex w-full flex-nowrap items-start justify-between gap-4\">\n <div className=\"min-w-0 flex-1\">\n {title ? (\n <div className=\"min-w-0\">\n <div className=\"truncate text-lg font-semibold text-white\">{title}</div>\n </div>\n ) : null}\n {breadcrumbsWithoutCurrent.length > 0 ? (\n <nav\n aria-label=\"Breadcrumb\"\n className={clsx('min-w-0 text-slate-100', title ? 'mt-1' : '')}\n >\n <ol className=\"flex flex-nowrap items-center gap-2 overflow-hidden text-sm text-gray-600\">\n {breadcrumbsWithoutCurrent.map((item, index) => (\n <li\n key={`${item.label}-${index}`}\n className=\"flex min-w-0 flex-shrink-0 items-center gap-2\"\n >\n {index > 0 ? <span className=\"text-gray-400\">></span> : null}\n {item.href ? (\n <Link to={item.href} className=\"truncate text-slate-100 hover:underline\">\n {item.label}\n </Link>\n ) : (\n <span className=\"truncate text-slate-100\">{item.label}</span>\n )}\n </li>\n ))}\n </ol>\n </nav>\n ) : null}\n </div>\n {actions ? <div className=\"flex-shrink-0\">{actions}</div> : null}\n </div>\n </div>\n {tabBar ? (\n <div className=\"m-0 w-full px-0\" style={{ backgroundColor: 'transparent' }}>\n {tabBar}\n </div>\n ) : null}\n </div>\n );\n}\n","import type { ReactNode } from 'react';\nimport { Link } from 'react-router-dom';\nimport clsx from 'clsx';\n\ntype BreadcrumbItem = {\n label: string;\n href?: string;\n};\n\ntype BreadcrumbBarProps = {\n breadcrumbs?: BreadcrumbItem[];\n actions?: ReactNode;\n maxW?: string;\n};\n\nexport default function BreadcrumbBar({\n breadcrumbs = [],\n actions = null,\n maxW = 'full',\n}: BreadcrumbBarProps) {\n if ((!breadcrumbs || breadcrumbs.length === 0) && !actions) {\n return null;\n }\n\n const maxWClass =\n maxW === 'full'\n ? 'max-w-none'\n : maxW === 'container.xl'\n ? 'max-w-7xl'\n : maxW === 'container.lg'\n ? 'max-w-6xl'\n : maxW === 'container.md'\n ? 'max-w-5xl'\n : 'max-w-7xl';\n\n return (\n <div\n className=\"ml-0 border-b border-gray-200 px-4 py-3 md:ml-60\"\n style={{ backgroundColor: 'var(--app-tab-header-bg, #888888)' }}\n >\n <div className={clsx('mx-auto w-full px-0', maxWClass)}>\n <div className=\"flex w-full items-center justify-between\">\n {breadcrumbs && breadcrumbs.length > 0 && (\n <nav aria-label=\"Breadcrumb\">\n <ol className=\"flex items-center gap-2 text-sm text-slate-100\">\n {breadcrumbs.map((item, index) => (\n <li key={index} className=\"flex items-center gap-2\">\n {index > 0 ? <span className=\"text-gray-400\">></span> : null}\n {item.href ? (\n <Link to={item.href} className=\"text-slate-100 hover:underline\">\n {item.label}\n </Link>\n ) : (\n <span className=\"text-slate-100\">{item.label}</span>\n )}\n </li>\n ))}\n </ol>\n </nav>\n )}\n {actions && <div>{actions}</div>}\n </div>\n </div>\n </div>\n );\n}\n","import clsx from 'clsx';\nimport type { ReactNode } from 'react';\nimport { Tooltip } from '@chakra-ui/react';\n\nexport type HeaderTabBarItem = {\n id: string;\n label: string;\n icon: ReactNode;\n disabled?: boolean;\n};\n\ntype HeaderTabBarProps = {\n items: HeaderTabBarItem[];\n activeId: string;\n onChange: (id: string) => void;\n className?: string;\n ariaLabel?: string;\n};\n\nexport default function HeaderTabBar({\n items,\n activeId,\n onChange,\n className,\n ariaLabel = 'Tabs',\n}: HeaderTabBarProps) {\n return (\n <div\n role=\"tablist\"\n aria-label={ariaLabel}\n className={clsx(\n // Header-wide tab strip: background + bottom border only (no outer box).\n 'app-header-tab-bar m-0 flex w-full bg-slate-100 p-0',\n 'border-b border-slate-200',\n className\n )}\n >\n {items.map((item, idx) => {\n const isActive = item.id === activeId;\n const isDisabled = Boolean(item.disabled);\n return (\n <Tooltip\n key={item.id}\n label={item.label}\n placement=\"top\"\n hasArrow\n bg=\"black\"\n color=\"white\"\n isDisabled={isDisabled}\n >\n <button\n type=\"button\"\n role=\"tab\"\n aria-selected={isActive}\n aria-label={item.label}\n disabled={isDisabled}\n onClick={() => onChange(item.id)}\n className={clsx(\n 'app-header-tab-button relative inline-flex flex-1 items-center justify-center',\n 'transition-colors',\n 'rounded-none',\n idx === 0 ? 'rounded-tl-lg' : null,\n idx === items.length - 1 ? 'rounded-tr-lg' : null,\n isActive\n ? 'text-white'\n : 'bg-transparent text-slate-600 hover:bg-white/60 hover:text-slate-900',\n isDisabled ? 'cursor-not-allowed opacity-50' : null\n )}\n style={{\n background: isActive\n ? 'var(--mode-primary-color, var(--app-btn-primary-bg))'\n : undefined,\n }}\n >\n <span className=\"inline-flex items-center justify-center text-[14px] leading-none\">\n {item.icon}\n </span>\n </button>\n </Tooltip>\n );\n })}\n </div>\n );\n}\n","import { useEffect } from 'react';\nimport { useLocation } from 'react-router-dom';\n\n// Inlined feature-flag check (originally in react/app/src/utils/runtimeFeatureFlags.ts).\n// The shell package is self-contained; keeping this helper local avoids a\n// cross-app import while preserving identical runtime behavior.\nconst FLAG_PREFIX = ['__', 'politogy', 'enable'].join('');\nconst GLOBAL_UI_IDS_FLAG = [FLAG_PREFIX, 'global', 'ui', 'ids'].join('_');\n\nfunction isFlagEnabled(name: string): boolean {\n if (typeof window === 'undefined') return false;\n\n try {\n const params = new URLSearchParams(window.location.search);\n if (params.get(name) === '1') return true;\n } catch {\n // Ignore malformed location access.\n }\n\n try {\n return window.localStorage.getItem(name) === '1';\n } catch {\n return false;\n }\n}\n\nfunction isGlobalUiIdsEnabled(): boolean {\n return isFlagEnabled(GLOBAL_UI_IDS_FLAG);\n}\n\nconst TARGET_SELECTOR = [\n 'main',\n 'header',\n 'footer',\n 'aside',\n 'nav',\n 'section',\n '[role=\"region\"]',\n '[role=\"banner\"]',\n '[role=\"main\"]',\n '[role=\"navigation\"]',\n '[role=\"complementary\"]',\n 'button',\n '[role=\"button\"]',\n 'a[role=\"button\"]',\n 'input',\n 'textarea',\n 'select',\n '[role=\"combobox\"]',\n '[role=\"listbox\"]',\n '[role=\"option\"]',\n '[role=\"textbox\"]',\n '[role=\"tablist\"]',\n '[role=\"tab\"]',\n '[role=\"tabpanel\"]',\n '[role=\"menu\"]',\n '[role=\"menuitem\"]',\n '[role=\"menuitemcheckbox\"]',\n '[role=\"menuitemradio\"]',\n 'svg',\n '[data-icon]',\n].join(',');\n\nfunction sanitizeToken(raw: string | null | undefined, fallback: string): string {\n if (!raw) return fallback;\n const cleaned = raw\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, '-')\n .replace(/^-+|-+$/g, '')\n .slice(0, 40);\n return cleaned || fallback;\n}\n\nfunction pageToken(pathname: string): string {\n if (!pathname || pathname === '/') return 'home';\n return sanitizeToken(pathname.replace(/\\//g, '-'), 'page');\n}\n\nfunction inferCategory(el: Element): string {\n const role = (el.getAttribute('role') || '').toLowerCase();\n const tag = el.tagName.toLowerCase();\n\n if (role.includes('tab') || tag === 'tabs') return 'tabs';\n if (role.startsWith('menu') || role === 'menu') return 'menu';\n if (tag === 'button' || role === 'button') return 'button';\n if (tag === 'input' || tag === 'textarea' || tag === 'select' || role === 'combobox')\n return 'field';\n if (tag === 'svg' || el.hasAttribute('data-icon')) return 'icon';\n if (\n ['main', 'header', 'footer', 'aside', 'nav', 'section'].includes(tag) ||\n ['region', 'banner', 'main', 'navigation', 'complementary'].includes(role)\n ) {\n return 'layout';\n }\n\n return 'ui';\n}\n\nfunction inferName(el: Element): string {\n const htmlEl = el as HTMLElement;\n return sanitizeToken(\n el.getAttribute('data-testid') ||\n el.getAttribute('aria-label') ||\n el.getAttribute('name') ||\n el.getAttribute('title') ||\n (htmlEl as HTMLInputElement).placeholder ||\n htmlEl.innerText ||\n el.getAttribute('class'),\n 'item'\n );\n}\n\nfunction assignUiIds(pathname: string): void {\n const used = new Set<string>();\n document.querySelectorAll('[id]').forEach((el) => {\n const id = el.id?.trim();\n if (id) used.add(id);\n });\n\n const counters: Record<string, number> = {};\n const page = pageToken(pathname);\n const elements = document.querySelectorAll(TARGET_SELECTOR);\n\n elements.forEach((el) => {\n const category = inferCategory(el);\n const name = inferName(el);\n const stableKey = `ui-${category}-${name}`;\n\n el.setAttribute('data-ui-category', category);\n el.setAttribute('data-ui-key', stableKey);\n el.setAttribute('data-ui-page', page);\n\n if (el.id) {\n return;\n }\n\n const counterKey = `${page}-${category}-${name}`;\n counters[counterKey] = (counters[counterKey] || 0) + 1;\n\n let nextId = `ui-${page}-${category}-${name}-${counters[counterKey]}`;\n while (used.has(nextId)) {\n counters[counterKey] += 1;\n nextId = `ui-${page}-${category}-${name}-${counters[counterKey]}`;\n }\n\n el.id = nextId;\n used.add(nextId);\n });\n}\n\nexport default function GlobalUiIdProvider() {\n const location = useLocation();\n const enabled = isGlobalUiIdsEnabled();\n\n useEffect(() => {\n if (!enabled) return;\n\n let rafId = 0;\n\n const schedule = () => {\n if (rafId) return;\n rafId = window.requestAnimationFrame(() => {\n rafId = 0;\n assignUiIds(location.pathname);\n });\n };\n\n schedule();\n\n const observer = new MutationObserver(() => {\n schedule();\n });\n\n observer.observe(document.body, {\n subtree: true,\n childList: true,\n attributes: true,\n attributeFilter: ['role', 'aria-label', 'name', 'title', 'placeholder', 'class', 'data-icon'],\n });\n\n return () => {\n if (rafId) window.cancelAnimationFrame(rafId);\n observer.disconnect();\n };\n }, [enabled, location.pathname]);\n\n return null;\n}\n","import { createContext, useEffect, useMemo, useState } from 'react'\nimport type { ReactNode } from 'react'\nimport { ChakraProvider } from '@chakra-ui/react'\nimport type { Session } from '@supabase/supabase-js'\nimport { politogyTheme } from '../theme'\nimport type {\n AppRegistryEntry,\n ShellAuthStatus,\n ShellAuthValue,\n ShellLinkedAccountsValue,\n ShellOrganizationValue,\n ShellProviderProps,\n ShellSupportValue,\n ShellUser,\n} from '../types'\n\nexport const ShellAuthContext = createContext<ShellAuthValue | null>(null)\n\ninterface ShellMetaValue {\n currentApp: string\n appRegistry: AppRegistryEntry[]\n basename: string\n}\n\nexport const ShellMetaContext = createContext<ShellMetaValue | null>(null)\n\nexport const ShellOrgContext = createContext<ShellOrganizationValue | null>(null)\nexport const ShellLinkedAccountsContext = createContext<ShellLinkedAccountsValue | null>(null)\nexport const ShellSupportProviderContext = createContext<ShellSupportValue | null>(null)\n\ninterface ShellChromeValue {\n devNotesMenu: ReactNode | null\n myProfileHref: string\n}\n\nexport const ShellChromeContext = createContext<ShellChromeValue | null>(null)\n\nfunction toShellUser(session: Session | null): ShellUser | null {\n if (!session?.user) return null\n const su = session.user\n const fullName = (su.user_metadata as { full_name?: string } | null)?.full_name ?? null\n return {\n id: su.id,\n email: su.email ?? null,\n displayName: fullName ?? su.email ?? null,\n raw: su,\n }\n}\n\nexport function ShellProvider({\n children,\n supabaseClient,\n currentApp,\n appRegistry,\n basename,\n organization,\n linkedAccounts,\n support,\n devNotesMenu,\n myProfileHref,\n}: ShellProviderProps) {\n const [status, setStatus] = useState<ShellAuthStatus>('loading')\n const [session, setSession] = useState<Session | null>(null)\n\n useEffect(() => {\n let cancelled = false\n supabaseClient.auth.getSession().then(({ data }) => {\n if (cancelled) return\n setSession(data.session)\n setStatus(data.session ? 'authenticated' : 'unauthenticated')\n })\n const sub = supabaseClient.auth.onAuthStateChange((_event, newSession) => {\n setSession(newSession)\n setStatus(newSession ? 'authenticated' : 'unauthenticated')\n })\n return () => {\n cancelled = true\n sub.data.subscription.unsubscribe()\n }\n }, [supabaseClient])\n\n const value = useMemo<ShellAuthValue>(\n () => ({\n status,\n session,\n user: toShellUser(session),\n signOut: async () => {\n await supabaseClient.auth.signOut()\n },\n }),\n [status, session, supabaseClient],\n )\n\n const meta = useMemo<ShellMetaValue>(\n () => ({\n currentApp,\n appRegistry: appRegistry ?? [],\n basename: basename ?? '',\n }),\n [currentApp, appRegistry, basename],\n )\n\n const chrome = useMemo<ShellChromeValue>(\n () => ({\n devNotesMenu: devNotesMenu ?? null,\n myProfileHref: myProfileHref ?? '/my-profile',\n }),\n [devNotesMenu, myProfileHref],\n )\n\n return (\n <ShellAuthContext.Provider value={value}>\n <ShellMetaContext.Provider value={meta}>\n <ShellOrgContext.Provider value={organization ?? null}>\n <ShellLinkedAccountsContext.Provider value={linkedAccounts ?? null}>\n <ShellSupportProviderContext.Provider value={support ?? null}>\n <ShellChromeContext.Provider value={chrome}>\n <ChakraProvider theme={politogyTheme}>{children}</ChakraProvider>\n </ShellChromeContext.Provider>\n </ShellSupportProviderContext.Provider>\n </ShellLinkedAccountsContext.Provider>\n </ShellOrgContext.Provider>\n </ShellMetaContext.Provider>\n </ShellAuthContext.Provider>\n )\n}\n","import { useContext } from 'react'\nimport { ShellAuthContext } from '../providers/ShellProvider'\nimport type { ShellAuthValue } from '../types'\n\nexport function useShellAuth(): ShellAuthValue {\n const ctx = useContext(ShellAuthContext)\n if (!ctx) {\n throw new Error('useShellAuth must be used inside <ShellProvider>')\n }\n return ctx\n}\n","import { useContext } from 'react'\nimport { ShellMetaContext } from '../providers/ShellProvider'\nimport type { AppRegistryEntry } from '../types'\n\nexport function useAppRegistry(): AppRegistryEntry[] {\n const meta = useContext(ShellMetaContext)\n if (!meta) {\n throw new Error('useAppRegistry must be used inside <ShellProvider>')\n }\n return meta.appRegistry\n}\n\nexport function useCurrentApp(): string {\n const meta = useContext(ShellMetaContext)\n if (!meta) {\n throw new Error('useCurrentApp must be used inside <ShellProvider>')\n }\n return meta.currentApp\n}\n","import { useContext } from 'react'\nimport { ShellOrgContext } from '../providers/ShellProvider'\nimport type { ShellOrganizationValue } from '../types'\n\n/**\n * Returns the organization value supplied to ShellProvider, or null if the\n * host app didn't pass an `organization` prop. Returning null lets chrome\n * components (e.g., <OrgSelector />) render nothing instead of erroring.\n */\nexport function useShellOrganization(): ShellOrganizationValue | null {\n return useContext(ShellOrgContext)\n}\n","import { useContext } from 'react'\nimport { ShellLinkedAccountsContext } from '../providers/ShellProvider'\nimport type { ShellLinkedAccountsValue } from '../types'\n\n/**\n * Returns the linked-accounts value supplied to ShellProvider, or null if not\n * provided. UserMenu uses this to decide whether to render the\n * \"switch account\" section.\n */\nexport function useShellLinkedAccounts(): ShellLinkedAccountsValue | null {\n return useContext(ShellLinkedAccountsContext)\n}\n","import { useContext } from 'react'\nimport { ShellSupportProviderContext } from '../providers/ShellProvider'\nimport type { ShellSupportValue } from '../types'\n\n/**\n * Returns the support handler supplied to ShellProvider, or null if not\n * provided. SupportRequestButton uses this to decide whether to render.\n */\nexport function useShellSupport(): ShellSupportValue | null {\n return useContext(ShellSupportProviderContext)\n}\n","import { useContext } from 'react'\nimport type { ReactNode } from 'react'\nimport { ShellChromeContext } from '../providers/ShellProvider'\n\nexport interface ShellChromeValue {\n devNotesMenu: ReactNode | null\n myProfileHref: string\n}\n\n/**\n * Returns chrome-level options supplied to ShellProvider (devNotesMenu slot,\n * myProfileHref). Throws if used outside <ShellProvider>.\n */\nexport function useShellChrome(): ShellChromeValue {\n const ctx = useContext(ShellChromeContext)\n if (!ctx) {\n throw new Error('useShellChrome must be used inside <ShellProvider>')\n }\n return ctx\n}\n","import { Box, Image } from '@chakra-ui/react'\n\nconst HEX_COLOR_PATTERN = /^#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/\n\nexport function normalizeHexColor(value?: string | null) {\n const trimmed = value?.trim()\n if (!trimmed || !HEX_COLOR_PATTERN.test(trimmed)) return null\n if (trimmed.length === 7) return trimmed\n const [r, g, b] = trimmed.slice(1).split('')\n return `#${r}${r}${g}${g}${b}${b}`\n}\n\nexport function lightenHexColor(hex: string, amount: number) {\n const normalized = normalizeHexColor(hex)\n if (!normalized) return null\n\n const clamp = (value: number) => Math.max(0, Math.min(255, Math.round(value)))\n const blend = (channel: number) => clamp(channel + (255 - channel) * amount)\n\n const red = parseInt(normalized.slice(1, 3), 16)\n const green = parseInt(normalized.slice(3, 5), 16)\n const blue = parseInt(normalized.slice(5, 7), 16)\n\n return `#${blend(red).toString(16).padStart(2, '0')}${blend(green)\n .toString(16)\n .padStart(2, '0')}${blend(blue).toString(16).padStart(2, '0')}`\n}\n\nexport function getOrganizationBadgeLetters(name?: string | null) {\n const normalizedName = String(name || '')\n .trim()\n .replace(/[^a-zA-Z0-9\\s]+/g, ' ')\n const parts = normalizedName.split(/\\s+/).filter(Boolean)\n\n if (parts.length >= 2) {\n return `${parts[0][0] || ''}${parts[1][0] || ''}`.toUpperCase()\n }\n\n const compact = parts[0] || normalizedName.replace(/\\s+/g, '')\n return compact.slice(0, 2).toUpperCase() || 'OR'\n}\n\ninterface OrgBadgeProps {\n name?: string | null\n logoUrl?: string | null\n brandColor?: string | null\n /** Chakra boxSize value, e.g., '24px', 'sm'. */\n size: string\n}\n\nexport function OrgBadge({ name, logoUrl, brandColor, size }: OrgBadgeProps) {\n const normalizedColor = normalizeHexColor(brandColor)\n const badgeColor = normalizedColor || '#5a5a5a'\n const badgeLetters = getOrganizationBadgeLetters(name)\n\n return (\n <Box\n boxSize={size}\n borderRadius=\"full\"\n overflow=\"hidden\"\n border=\"1px solid white\"\n flexShrink={0}\n bg={logoUrl ? 'whiteAlpha.300' : badgeColor}\n color=\"white\"\n display=\"inline-flex\"\n alignItems=\"center\"\n justifyContent=\"center\"\n fontSize=\"xs\"\n fontWeight=\"bold\"\n letterSpacing=\"0.08em\"\n textTransform=\"uppercase\"\n >\n {logoUrl ? (\n <Image src={logoUrl} alt={`${name ?? 'Organization'} logo`} boxSize=\"full\" objectFit=\"cover\" />\n ) : (\n badgeLetters\n )}\n </Box>\n )\n}\n","import { Box, Flex, HStack, Menu, MenuButton, MenuDivider, MenuItem, MenuList, Portal, Text } from '@chakra-ui/react'\nimport { useShellOrganization } from '../hooks/useShellOrganization'\nimport { OrgBadge } from './internal/orgBadge'\n\n/**\n * Organization switcher rendered in the header. Reads from\n * useShellOrganization(); renders nothing when no `organization` prop was\n * supplied to ShellProvider.\n */\nexport function OrgSelector() {\n const org = useShellOrganization()\n if (!org) return null\n\n const { currentOrg, organizations, switchOrganization, createOrgHref } = org\n const others = organizations.filter((o) => o.id !== currentOrg?.id)\n\n return (\n <Menu placement=\"bottom-start\">\n <MenuButton\n as={Box}\n cursor=\"pointer\"\n px={2}\n py={1}\n borderRadius=\"md\"\n _hover={{ bg: 'gray.100' }}\n _active={{ bg: 'gray.200' }}\n aria-label=\"Switch organization\"\n >\n <HStack spacing={2} align=\"center\">\n {currentOrg ? (\n <>\n <OrgBadge\n name={currentOrg.name}\n logoUrl={currentOrg.logoUrl}\n brandColor={currentOrg.brandColor}\n size=\"24px\"\n />\n <Text fontSize=\"sm\" fontWeight=\"600\" color=\"gray.800\" noOfLines={1}>\n {currentOrg.name}\n </Text>\n </>\n ) : (\n <Text fontSize=\"sm\" color=\"gray.500\">\n Select organization\n </Text>\n )}\n {/* Chevron via unicode to avoid extra icon dependency */}\n <Text as=\"span\" fontSize=\"xs\" color=\"gray.500\" aria-hidden=\"true\">\n ▾\n </Text>\n </HStack>\n </MenuButton>\n <Portal>\n <MenuList zIndex={1500}>\n {others.length === 0 && (\n <MenuItem isDisabled>\n <Text fontSize=\"sm\" color=\"gray.500\">\n No other organizations\n </Text>\n </MenuItem>\n )}\n {others.map((o) => (\n <MenuItem\n key={o.id}\n onClick={() => {\n void switchOrganization(o.id)\n }}\n >\n <HStack spacing={2} align=\"center\">\n <OrgBadge name={o.name} logoUrl={o.logoUrl} brandColor={o.brandColor} size=\"20px\" />\n <Flex direction=\"column\">\n <Text fontSize=\"sm\" fontWeight=\"600\">\n {o.name}\n </Text>\n </Flex>\n </HStack>\n </MenuItem>\n ))}\n {createOrgHref && (\n <>\n <MenuDivider />\n <MenuItem as=\"a\" href={createOrgHref}>\n <Text fontSize=\"sm\" color=\"brand.500\" fontWeight=\"600\">\n Create organization\n </Text>\n </MenuItem>\n </>\n )}\n </MenuList>\n </Portal>\n </Menu>\n )\n}\n","import { useCallback, useEffect, useMemo, useState } from 'react'\nimport {\n Box,\n Button,\n IconButton,\n Modal,\n ModalBody,\n ModalCloseButton,\n ModalContent,\n ModalFooter,\n ModalHeader,\n ModalOverlay,\n Text,\n Textarea,\n VStack,\n useDisclosure,\n useToast,\n} from '@chakra-ui/react'\nimport { useShellAuth } from '../hooks/useShellAuth'\nimport { useShellOrganization } from '../hooks/useShellOrganization'\nimport { useShellSupport } from '../hooks/useShellSupport'\nimport type { ShellSupportContext, ShellUser } from '../types'\n\nconst SUPPORT_REQUEST_SUCCESS_MESSAGE = 'Your support request was sent to Politogy leadership.'\n\ninterface SupportProfile {\n firstName: string\n lastName: string\n email: string\n phone: string\n missingEmail: boolean\n missingPhone: boolean\n}\n\nfunction splitName(value?: string | null) {\n const trimmed = String(value ?? '').trim()\n if (!trimmed) return { firstName: '', lastName: '' }\n const [first, ...rest] = trimmed.split(/\\s+/)\n return { firstName: first ?? '', lastName: rest.join(' ') }\n}\n\nexport function resolveSupportProfile(user: ShellUser | null): SupportProfile {\n if (!user) {\n return { firstName: '', lastName: '', email: '', phone: '', missingEmail: true, missingPhone: true }\n }\n const meta = (user.raw.user_metadata ?? {}) as {\n full_name?: string\n name?: string\n phone?: string\n }\n const resolvedName =\n String(meta.full_name ?? meta.name ?? '').trim() ||\n String(user.email ?? '').split('@')[0] ||\n ''\n const { firstName, lastName } = splitName(resolvedName)\n const email = String(user.email ?? '').trim()\n const phone = String(meta.phone ?? '').trim()\n return {\n firstName,\n lastName,\n email,\n phone,\n missingEmail: email.length === 0,\n missingPhone: phone.length === 0,\n }\n}\n\nfunction formatTimestamp(date: Date) {\n return date.toLocaleString('en-US', {\n year: 'numeric',\n month: 'short',\n day: 'numeric',\n hour: 'numeric',\n minute: '2-digit',\n second: '2-digit',\n hour12: true,\n })\n}\n\nexport function buildSupportRequestMessage(input: {\n firstName: string\n lastName: string\n organizationName?: string\n email: string\n phone: string\n pathname: string\n search?: string\n pageTitle?: string\n submittedAt?: Date\n}) {\n const submittedAt = input.submittedAt ?? new Date()\n const iso = submittedAt.toISOString()\n const display = formatTimestamp(submittedAt)\n const trimmedSearch = String(input.search ?? '').trim()\n\n return [\n 'A user requested support.',\n '',\n `First Name: ${input.firstName.trim() || 'Unknown'}`,\n `Last Name: ${input.lastName.trim() || 'Unknown'}`,\n `Organization: ${(input.organizationName ?? '').trim() || 'Unknown'}`,\n `Email: ${input.email.trim()}`,\n `Phone: ${input.phone.trim()}`,\n `Submitted At (ISO): ${iso}`,\n `Submitted At (Local): ${display}`,\n `Page Path: ${input.pathname.trim() || '/'}`,\n `Page Title: ${(input.pageTitle ?? '').trim() || 'Unknown'}`,\n `Query String: ${trimmedSearch || 'None'}`,\n ].join('\\n')\n}\n\n/**\n * Support icon + modal rendered in the header. Reads auth, org, and support\n * handler from ShellProvider. Renders nothing when the host app didn't supply\n * a `support` prop.\n */\nexport function SupportRequestButton() {\n const support = useShellSupport()\n const { user } = useShellAuth()\n const org = useShellOrganization()\n const { isOpen, onOpen, onClose } = useDisclosure()\n const toast = useToast()\n\n const profile = useMemo(() => resolveSupportProfile(user), [user])\n const [email, setEmail] = useState('')\n const [phone, setPhone] = useState('')\n const [message, setMessage] = useState('')\n const [isSubmitting, setIsSubmitting] = useState(false)\n\n useEffect(() => {\n if (!isOpen) return\n setEmail(profile.email)\n setPhone(profile.phone)\n setMessage('')\n setIsSubmitting(false)\n }, [isOpen, profile.email, profile.phone])\n\n const handleClose = useCallback(() => {\n if (isSubmitting) return\n onClose()\n }, [isSubmitting, onClose])\n\n const handleSubmit = useCallback(async () => {\n if (!support) return\n const resolvedEmail = (profile.missingEmail ? email : profile.email).trim()\n const resolvedPhone = (profile.missingPhone ? phone : profile.phone).trim()\n\n if (!resolvedEmail) {\n toast({ title: 'Email required', status: 'error', duration: 4000, isClosable: true })\n return\n }\n if (!resolvedPhone) {\n toast({ title: 'Phone required', status: 'error', duration: 4000, isClosable: true })\n return\n }\n if (!user?.id) {\n toast({\n title: 'Unable to send support request',\n description: 'You must be signed in to request support.',\n status: 'error',\n duration: 4000,\n isClosable: true,\n })\n return\n }\n\n const context: ShellSupportContext = {\n pathname: typeof window !== 'undefined' ? window.location.pathname : '/',\n search: typeof window !== 'undefined' ? window.location.search : '',\n pageTitle: typeof document !== 'undefined' ? document.title : undefined,\n organizationName: org?.currentOrg?.name ?? undefined,\n }\n const formatted = buildSupportRequestMessage({\n firstName: profile.firstName,\n lastName: profile.lastName,\n organizationName: context.organizationName,\n email: resolvedEmail,\n phone: resolvedPhone,\n pathname: context.pathname,\n search: context.search,\n pageTitle: context.pageTitle,\n })\n\n try {\n setIsSubmitting(true)\n await support.submitSupportRequest({\n email: resolvedEmail,\n phone: resolvedPhone,\n message: message.trim() ? `${message.trim()}\\n\\n---\\n\\n${formatted}` : formatted,\n context,\n })\n toast({\n title: 'Support request sent',\n description: SUPPORT_REQUEST_SUCCESS_MESSAGE,\n status: 'success',\n duration: 5000,\n isClosable: true,\n })\n onClose()\n } catch (err: unknown) {\n const description =\n err instanceof Error ? err.message : 'Unable to send your support request.'\n toast({\n title: 'Failed to request support',\n description,\n status: 'error',\n duration: 5000,\n isClosable: true,\n })\n } finally {\n setIsSubmitting(false)\n }\n }, [support, profile, email, phone, message, toast, user?.id, onClose, org?.currentOrg?.name])\n\n if (!support) return null\n\n return (\n <>\n <IconButton\n aria-label=\"Request support\"\n icon={<LifebuoyIcon />}\n variant=\"ghost\"\n size=\"sm\"\n onClick={onOpen}\n />\n <Modal isOpen={isOpen} onClose={handleClose} isCentered>\n <ModalOverlay />\n <ModalContent>\n <ModalHeader>Support</ModalHeader>\n <ModalCloseButton isDisabled={isSubmitting} />\n <ModalBody>\n <VStack align=\"stretch\" spacing={4}>\n <Text fontSize=\"sm\" color=\"gray.600\">\n A message will be texted and emailed with your contact information and support will\n reply as soon as possible. If you are a beta customer that is typically within\n minutes.\n </Text>\n <Box rounded=\"md\" borderWidth=\"1px\" borderColor=\"gray.200\" bg=\"gray.50\" p={3}>\n <VStack align=\"stretch\" spacing={1}>\n <Text fontSize=\"sm\">\n <strong>Name:</strong>{' '}\n {[profile.firstName, profile.lastName].filter(Boolean).join(' ') || 'Unknown'}\n </Text>\n <Text fontSize=\"sm\">\n <strong>Organization:</strong> {org?.currentOrg?.name ?? 'Unknown'}\n </Text>\n <Text fontSize=\"sm\">\n <strong>Email:</strong>{' '}\n {(profile.missingEmail ? email : profile.email) || 'Missing'}\n </Text>\n <Text fontSize=\"sm\">\n <strong>Phone:</strong>{' '}\n {(profile.missingPhone ? phone : profile.phone) || 'Missing'}\n </Text>\n </VStack>\n </Box>\n {profile.missingEmail && (\n <Box>\n <Text fontSize=\"xs\" fontWeight=\"600\" color=\"gray.700\" mb={1}>\n Email\n </Text>\n <input\n type=\"email\"\n aria-label=\"Email\"\n value={email}\n onChange={(e) => setEmail(e.target.value)}\n placeholder=\"name@example.com\"\n style={{\n width: '100%',\n padding: '8px 12px',\n border: '1px solid #e2e8f0',\n borderRadius: '6px',\n fontSize: '14px',\n }}\n />\n </Box>\n )}\n {profile.missingPhone && (\n <Box>\n <Text fontSize=\"xs\" fontWeight=\"600\" color=\"gray.700\" mb={1}>\n Phone\n </Text>\n <input\n aria-label=\"Phone\"\n value={phone}\n onChange={(e) => setPhone(e.target.value)}\n placeholder=\"(503) 555-1212\"\n style={{\n width: '100%',\n padding: '8px 12px',\n border: '1px solid #e2e8f0',\n borderRadius: '6px',\n fontSize: '14px',\n }}\n />\n </Box>\n )}\n <Box>\n <Text fontSize=\"xs\" fontWeight=\"600\" color=\"gray.700\" mb={1}>\n Optional message\n </Text>\n <Textarea\n value={message}\n onChange={(e) => setMessage(e.target.value)}\n placeholder=\"What can we help you with?\"\n rows={3}\n />\n </Box>\n </VStack>\n </ModalBody>\n <ModalFooter>\n <Button variant=\"ghost\" mr={3} onClick={handleClose} isDisabled={isSubmitting}>\n Cancel\n </Button>\n <Button\n colorScheme=\"orange\"\n onClick={() => void handleSubmit()}\n isLoading={isSubmitting}\n loadingText=\"Sending\"\n >\n Request Support\n </Button>\n </ModalFooter>\n </ModalContent>\n </Modal>\n </>\n )\n}\n\n// Inline life-buoy icon — saves adding react-icons as a shell dep.\nfunction LifebuoyIcon() {\n return (\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <circle cx=\"12\" cy=\"12\" r=\"4\" />\n <line x1=\"4.93\" y1=\"4.93\" x2=\"9.17\" y2=\"9.17\" />\n <line x1=\"14.83\" y1=\"14.83\" x2=\"19.07\" y2=\"19.07\" />\n <line x1=\"14.83\" y1=\"9.17\" x2=\"19.07\" y2=\"4.93\" />\n <line x1=\"14.83\" y1=\"9.17\" x2=\"18.36\" y2=\"5.64\" />\n <line x1=\"4.93\" y1=\"19.07\" x2=\"9.17\" y2=\"14.83\" />\n </svg>\n )\n}\n","import {\n Avatar,\n Box,\n Flex,\n HStack,\n Menu,\n MenuButton,\n MenuDivider,\n MenuItem,\n MenuList,\n Portal,\n Text,\n useColorMode,\n} from '@chakra-ui/react'\nimport { useShellAuth } from '../hooks/useShellAuth'\nimport { useShellChrome } from '../hooks/useShellChrome'\nimport { useShellLinkedAccounts } from '../hooks/useShellLinkedAccounts'\n\nfunction avatarUrlFromUser(user: ReturnType<typeof useShellAuth>['user']): string | undefined {\n if (!user) return undefined\n const meta = user.raw.user_metadata as { avatar_url?: string } | null | undefined\n return meta?.avatar_url ?? undefined\n}\n\n/**\n * Avatar dropdown rendered at the right side of the header. Reads auth,\n * linked-accounts, and chrome context from ShellProvider.\n */\nexport function UserMenu() {\n const { user, status, signOut } = useShellAuth()\n const { myProfileHref } = useShellChrome()\n const linked = useShellLinkedAccounts()\n const { colorMode, toggleColorMode } = useColorMode()\n\n if (status !== 'authenticated' || !user) return null\n\n const displayName = user.displayName ?? user.email ?? 'User'\n const avatarUrl = avatarUrlFromUser(user)\n\n return (\n <Menu placement=\"bottom-end\">\n <MenuButton\n aria-label=\"Open account menu\"\n as={Box}\n cursor=\"pointer\"\n borderRadius=\"full\"\n _hover={{ opacity: 0.85 }}\n >\n <Avatar size=\"sm\" name={displayName} src={avatarUrl} />\n </MenuButton>\n <Portal>\n <MenuList zIndex={1500}>\n <Box px={3} py={2}>\n <Text fontSize=\"sm\" fontWeight=\"600\" noOfLines={1}>\n {displayName}\n </Text>\n {user.email && (\n <Text fontSize=\"xs\" color=\"gray.500\" noOfLines={1}>\n {user.email}\n </Text>\n )}\n </Box>\n <MenuDivider />\n <MenuItem as=\"a\" href={myProfileHref}>\n My Profile\n </MenuItem>\n <MenuItem onClick={toggleColorMode}>\n {colorMode === 'light' ? 'Switch to dark mode' : 'Switch to light mode'}\n </MenuItem>\n <MenuItem onClick={() => void signOut()}>Sign out</MenuItem>\n {linked && (\n <>\n <MenuDivider />\n <Box px={3} pt={1} pb={1}>\n <Text fontSize=\"xs\" textTransform=\"uppercase\" letterSpacing=\"0.08em\" color=\"gray.500\">\n Switch account\n </Text>\n </Box>\n {linked.linkedAccounts.length === 0 && (\n <MenuItem isDisabled>\n <Text fontSize=\"sm\" color=\"gray.500\">\n No linked accounts\n </Text>\n </MenuItem>\n )}\n {linked.linkedAccounts.map((acct) => (\n <MenuItem\n key={acct.id}\n onClick={() => {\n void linked.switchToAccount(acct.id)\n }}\n >\n <HStack spacing={2} align=\"center\">\n <Avatar\n size=\"xs\"\n name={acct.displayName ?? acct.email}\n src={acct.avatarUrl ?? undefined}\n />\n <Flex direction=\"column\" minW={0}>\n <Text fontSize=\"sm\" fontWeight=\"600\" noOfLines={1}>\n {acct.displayName ?? acct.email}\n </Text>\n {acct.displayName && (\n <Text fontSize=\"xs\" color=\"gray.500\" noOfLines={1}>\n {acct.email}\n </Text>\n )}\n </Flex>\n </HStack>\n </MenuItem>\n ))}\n <MenuItem onClick={linked.onAddAccount}>Add account</MenuItem>\n </>\n )}\n </MenuList>\n </Portal>\n </Menu>\n )\n}\n","import { Box, Flex, Heading, Spacer } from '@chakra-ui/react'\nimport type { ReactNode } from 'react'\nimport { useShellChrome } from '../hooks/useShellChrome'\nimport { OrgSelector } from './OrgSelector'\nimport { SupportRequestButton } from './SupportRequestButton'\nimport { UserMenu } from './UserMenu'\n\nexport interface HeaderProps {\n extrasSlot?: ReactNode\n}\n\nexport function Header({ extrasSlot }: HeaderProps) {\n const { devNotesMenu } = useShellChrome()\n return (\n <Flex\n as=\"header\"\n align=\"center\"\n px={4}\n h=\"56px\"\n bg=\"white\"\n borderBottom=\"1px solid\"\n borderColor=\"gray.200\"\n gap={3}\n >\n <Heading size=\"md\" color=\"brand.500\">\n politogy\n </Heading>\n <Box>\n <OrgSelector />\n </Box>\n <Spacer />\n {extrasSlot && <Box>{extrasSlot}</Box>}\n <SupportRequestButton />\n {devNotesMenu}\n <UserMenu />\n </Flex>\n )\n}\n","import { Box, VStack, Link, Text } from '@chakra-ui/react'\nimport type { ReactNode } from 'react'\nimport type { AppRegistryEntry } from '../types'\n\nexport interface SidebarProps {\n entries: AppRegistryEntry[]\n currentApp: string\n footerSlot?: ReactNode\n}\n\nexport function Sidebar({ entries, currentApp, footerSlot }: SidebarProps) {\n return (\n <Box\n as=\"nav\"\n w=\"200px\"\n minH=\"100%\"\n bg=\"gray.50\"\n borderRight=\"1px solid\"\n borderColor=\"gray.200\"\n p={3}\n display=\"flex\"\n flexDirection=\"column\"\n >\n <VStack align=\"stretch\" spacing={1}>\n {entries.filter((e) => e.visible !== false).map((entry) => (\n <Link\n key={entry.id}\n href={entry.path}\n data-current={entry.id === currentApp}\n px={3}\n py={2}\n borderRadius=\"md\"\n fontWeight={entry.id === currentApp ? 'bold' : 'normal'}\n bg={entry.id === currentApp ? 'brand.50' : 'transparent'}\n _hover={{ bg: 'gray.100' }}\n >\n <Text>{entry.label}</Text>\n </Link>\n ))}\n </VStack>\n <Box flex=\"1\" />\n {footerSlot && <Box pt={3}>{footerSlot}</Box>}\n </Box>\n )\n}\n","import { Box, Text } from '@chakra-ui/react'\n\nexport interface FooterProps {\n buildInfo?: string\n}\n\nexport function Footer({ buildInfo }: FooterProps) {\n return (\n <Box\n as=\"footer\"\n px={4}\n py={2}\n borderTop=\"1px solid\"\n borderColor=\"gray.200\"\n fontSize=\"xs\"\n color=\"gray.500\"\n >\n <Text>politogy {buildInfo ? `· ${buildInfo}` : ''}</Text>\n </Box>\n )\n}\n","import { Box, Flex } from '@chakra-ui/react'\nimport type { ReactNode } from 'react'\nimport { Header } from './Header'\nimport { Sidebar } from './Sidebar'\nimport { Footer } from './Footer'\nimport { useAppRegistry, useCurrentApp } from '../hooks/useAppRegistry'\nimport type { ShellSlots } from '../types'\n\nexport interface AppLayoutProps extends ShellSlots {\n children: ReactNode\n buildInfo?: string\n}\n\nexport function AppLayout({\n children,\n buildInfo,\n headerExtrasSlot,\n modalsSlot,\n notificationsSlot,\n sidebarFooterSlot,\n overlaySlot,\n}: AppLayoutProps) {\n const currentApp = useCurrentApp()\n const entries = useAppRegistry()\n\n return (\n <Flex direction=\"column\" minH=\"100vh\">\n <Header extrasSlot={headerExtrasSlot} />\n <Flex flex=\"1\" minH={0}>\n <Sidebar entries={entries} currentApp={currentApp} footerSlot={sidebarFooterSlot} />\n <Box as=\"main\" flex=\"1\" overflow=\"auto\" position=\"relative\">\n {children}\n {notificationsSlot}\n </Box>\n </Flex>\n <Footer buildInfo={buildInfo} />\n {modalsSlot}\n {overlaySlot}\n </Flex>\n )\n}\n","export interface RegisterShellPrecacheOptions {\n /** Path the host app serves the SW from. Default: '/sw-shell.js'. */\n scriptUrl?: string\n /** Scope the SW controls. Default: '/'. */\n scope?: string\n}\n\n/**\n * Register the shell precache service worker. Silently no-ops in browsers that\n * don't support service workers (e.g., old Safari) and during SSR.\n *\n * Hosts must copy `node_modules/@the-portland-company/shell/dist/shell-precache.worker.js`\n * to the URL specified by `scriptUrl` (default `/sw-shell.js`) in their public\n * directory so the browser can fetch it at registration time.\n */\nexport async function registerShellPrecache(opts: RegisterShellPrecacheOptions = {}): Promise<void> {\n if (typeof window === 'undefined') return\n if (!('serviceWorker' in navigator)) return\n const scriptUrl = opts.scriptUrl ?? '/sw-shell.js'\n const scope = opts.scope ?? '/'\n try {\n await navigator.serviceWorker.register(scriptUrl, { scope })\n } catch (err) {\n // Registration failures are not user-visible. Log for ops, swallow.\n // eslint-disable-next-line no-console\n console.warn('[shell] precache SW registration failed:', err)\n }\n}\n","import type { AppRegistryEntry } from '../types'\n\n/**\n * Build a Speculation Rules JSON payload that prerenders other apps in the\n * registry on moderate eagerness. Returns null when there are no eligible\n * other apps to prerender (e.g., this is the only app in the registry).\n *\n * The host app is expected to render this as\n * `<script type=\"speculationrules\">{json}</script>` in <head> at runtime.\n */\nexport function buildSpeculationRules(\n currentApp: string,\n registry: AppRegistryEntry[],\n): string | null {\n const others = registry.filter(\n (entry) => entry.id !== currentApp && entry.visible !== false,\n )\n if (others.length === 0) return null\n const payload = {\n prerender: [\n {\n urls: others.map((entry) => entry.path),\n eagerness: 'moderate' as const,\n },\n ],\n }\n return JSON.stringify(payload)\n}\n"]}
|