@the-portland-company/shell 0.1.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 +16 -0
- package/README.md +72 -0
- package/dist/index.cjs +1353 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +190 -0
- package/dist/index.d.ts +190 -0
- package/dist/index.js +1331 -0
- package/dist/index.js.map +1 -0
- package/dist/shell-precache.worker.js +1 -0
- package/dist/view-transitions.css +16 -0
- package/package.json +69 -0
|
@@ -0,0 +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":["jsx","clsx","jsxs","Link","useEffect","useContext","Box","Text","Flex"],"mappings":"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","file":"index.js","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"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(()=>{var i="shell-precache-v1";self.addEventListener("install",t=>{self.skipWaiting()});self.addEventListener("activate",t=>{t.waitUntil((async()=>{let e=await caches.keys();await Promise.all(e.filter(s=>s!==i&&s.startsWith("shell-precache-")).map(s=>caches.delete(s))),await self.clients.claim()})())});self.addEventListener("fetch",t=>{let e=t.request;if(e.method!=="GET")return;let s=new URL(e.url);/\.[a-f0-9]{8,}\.(js|css|woff2?|svg|png|ico)$/i.test(s.pathname)&&t.respondWith((async()=>{let c=await caches.open(i),n=await c.match(e);if(n)return n;let a=await fetch(e);return a.ok&&c.put(e,a.clone()),a})())});})();
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Browser-native smooth fade between same-origin documents. Used to disguise
|
|
3
|
+
* hard-navigation transitions between separately-deployed Vite SPAs that
|
|
4
|
+
* share the @the-portland-company/shell chrome.
|
|
5
|
+
*
|
|
6
|
+
* Supported: Chromium 126+, Safari 18+. Graceful no-op elsewhere.
|
|
7
|
+
*/
|
|
8
|
+
@view-transition {
|
|
9
|
+
navigation: auto;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
::view-transition-old(root),
|
|
13
|
+
::view-transition-new(root) {
|
|
14
|
+
animation-duration: 180ms;
|
|
15
|
+
animation-timing-function: ease-in-out;
|
|
16
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@the-portland-company/shell",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Shared chrome (header, sidebar, footer, theme, auth) for politogy apps. Drop into any Vite SPA to inherit the politogy look and signed-in user.",
|
|
5
|
+
"license": "UNLICENSED",
|
|
6
|
+
"private": false,
|
|
7
|
+
"publishConfig": {
|
|
8
|
+
"access": "public"
|
|
9
|
+
},
|
|
10
|
+
"type": "module",
|
|
11
|
+
"main": "./dist/index.cjs",
|
|
12
|
+
"module": "./dist/index.js",
|
|
13
|
+
"types": "./dist/index.d.ts",
|
|
14
|
+
"exports": {
|
|
15
|
+
".": {
|
|
16
|
+
"types": "./dist/index.d.ts",
|
|
17
|
+
"import": "./dist/index.js",
|
|
18
|
+
"require": "./dist/index.cjs"
|
|
19
|
+
},
|
|
20
|
+
"./css": "./dist/view-transitions.css",
|
|
21
|
+
"./sw": "./dist/shell-precache.worker.js"
|
|
22
|
+
},
|
|
23
|
+
"files": [
|
|
24
|
+
"dist",
|
|
25
|
+
"README.md",
|
|
26
|
+
"CHANGELOG.md"
|
|
27
|
+
],
|
|
28
|
+
"sideEffects": [
|
|
29
|
+
"*.css"
|
|
30
|
+
],
|
|
31
|
+
"scripts": {
|
|
32
|
+
"build": "tsup",
|
|
33
|
+
"dev": "tsup --watch",
|
|
34
|
+
"test": "vitest run",
|
|
35
|
+
"test:watch": "vitest",
|
|
36
|
+
"type-check": "tsc --noEmit",
|
|
37
|
+
"prepublishOnly": "npm run type-check && npm run test && npm run build"
|
|
38
|
+
},
|
|
39
|
+
"dependencies": {
|
|
40
|
+
"clsx": "^2.1.0"
|
|
41
|
+
},
|
|
42
|
+
"peerDependencies": {
|
|
43
|
+
"@chakra-ui/react": "^2.8.0",
|
|
44
|
+
"@emotion/react": "^11.11.0",
|
|
45
|
+
"@emotion/styled": "^11.11.0",
|
|
46
|
+
"@supabase/supabase-js": "~2.95.3",
|
|
47
|
+
"react": "^18.0.0",
|
|
48
|
+
"react-dom": "^18.0.0",
|
|
49
|
+
"react-router-dom": "^6.0.0 || ^7.0.0"
|
|
50
|
+
},
|
|
51
|
+
"devDependencies": {
|
|
52
|
+
"@chakra-ui/react": "^2.8.2",
|
|
53
|
+
"@emotion/react": "^11.11.1",
|
|
54
|
+
"@emotion/styled": "^11.11.0",
|
|
55
|
+
"@supabase/supabase-js": "~2.95.3",
|
|
56
|
+
"@testing-library/jest-dom": "^6.5.0",
|
|
57
|
+
"@testing-library/react": "^16.0.0",
|
|
58
|
+
"@types/node": "~22.10.0",
|
|
59
|
+
"@types/react": "^18.3.0",
|
|
60
|
+
"@types/react-dom": "^18.3.0",
|
|
61
|
+
"jsdom": "^25.0.0",
|
|
62
|
+
"react": "^18.3.0",
|
|
63
|
+
"react-dom": "^18.3.0",
|
|
64
|
+
"react-router-dom": "^6.30.0",
|
|
65
|
+
"tsup": "^8.3.0",
|
|
66
|
+
"typescript": "~5.7.0",
|
|
67
|
+
"vitest": "^2.1.0"
|
|
68
|
+
}
|
|
69
|
+
}
|