@renge-ui/react 1.0.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/README.md +230 -0
- package/dist/index.d.mts +245 -0
- package/dist/index.d.ts +245 -0
- package/dist/index.js +1404 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +1349 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +44 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/provider.tsx","../src/context.ts","../src/hooks/useRenge.ts","../src/components/Stack.tsx","../src/components/Grid.tsx","../src/components/Text.tsx","../src/components/Heading.tsx","../src/components/Card.tsx","../src/components/Button.tsx","../src/components/Divider.tsx","../src/components/Section.tsx","../src/components/Badge.tsx","../src/components/Avatar.tsx","../src/components/Spinner.tsx","../src/components/Progress.tsx","../src/components/Input.tsx","../src/components/Chip.tsx","../src/components/Alert.tsx","../src/components/FormField.tsx","../src/components/Stat.tsx","../src/components/Navbar.tsx","../src/components/EnergyRing.tsx","../src/components/Pulse.tsx","../src/components/FlowField.tsx","../src/index.ts"],"sourcesContent":["import { useMemo, useInsertionEffect, type ReactNode } from 'react';\nimport { createRengeTheme } from '@renge-ui/tokens';\nimport type { RengeThemeConfig, RengeTheme } from '@renge-ui/tokens';\nimport { RengeContext } from './context';\nexport { useRenge } from './hooks';\n\nexport interface RengeProviderProps {\n children: ReactNode;\n config?: RengeThemeConfig;\n /** Inject theme CSS into document <head>. Default: true */\n injectCSS?: boolean;\n}\n\nexport function RengeProvider({\n children,\n config: {\n baseUnit,\n typeBase,\n scaleRatio,\n profile,\n variance,\n varianceSeed,\n includeReset,\n selector,\n } = {},\n injectCSS = true,\n}: RengeProviderProps) {\n const theme = useMemo(\n () => createRengeTheme({ baseUnit, typeBase, scaleRatio, profile, variance, varianceSeed, includeReset, selector }),\n [baseUnit, typeBase, scaleRatio, profile, variance, varianceSeed, includeReset, selector]\n );\n\n useInsertionEffect(() => {\n if (!injectCSS || typeof document === 'undefined') return;\n\n const styleId = 'renge-theme';\n let styleEl = document.getElementById(styleId) as HTMLStyleElement | null;\n\n if (!styleEl) {\n styleEl = document.createElement('style');\n styleEl.id = styleId;\n document.head.appendChild(styleEl);\n }\n\n styleEl.textContent = theme.css;\n }, [theme.css, injectCSS]);\n\n const value = useMemo(() => ({\n theme,\n profile: profile ?? 'ocean',\n }), [theme, profile]);\n\n return (\n <RengeContext.Provider value={value}>\n {children}\n </RengeContext.Provider>\n );\n}\n\n/** Access raw theme without a provider — for SSR or static export. */\nexport function useRengeTheme(config?: RengeThemeConfig): RengeTheme {\n return useMemo(() => createRengeTheme(config), [config]);\n}\n","import { createContext } from 'react';\nimport type { RengeTheme } from '@renge-ui/tokens';\n\nexport interface RengeContextValue {\n theme: RengeTheme;\n profile: string;\n}\n\nexport const RengeContext = createContext<RengeContextValue | null>(null);\n","import { useContext } from 'react';\nimport { RengeContext } from '../context';\nimport type { RengeContextValue } from '../context';\n\nexport function useRenge(): RengeContextValue {\n const context = useContext(RengeContext);\n if (!context) {\n throw new Error('useRenge must be used within a RengeProvider');\n }\n return context;\n}\n","// packages/react/src/components/Stack.tsx\n\nimport { forwardRef, type ElementType, type ComponentPropsWithoutRef } from 'react';\n\ntype SpaceKey = '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' | '10';\n\ninterface StackOwnProps {\n gap?: SpaceKey;\n direction?: 'vertical' | 'horizontal';\n align?: 'start' | 'center' | 'end' | 'stretch';\n justify?: 'start' | 'center' | 'end' | 'between' | 'around';\n as?: ElementType;\n}\n\ntype StackProps<T extends ElementType = 'div'> = StackOwnProps &\n Omit<ComponentPropsWithoutRef<T>, keyof StackOwnProps>;\n\nexport const Stack = forwardRef<HTMLDivElement, StackProps>(\n function Stack(\n {\n gap = '3',\n direction = 'vertical',\n align = 'stretch',\n justify = 'start',\n as: Component = 'div',\n style,\n children,\n ...props\n },\n ref\n ) {\n const alignMap = {\n start: 'flex-start',\n center: 'center',\n end: 'flex-end',\n stretch: 'stretch',\n };\n\n const justifyMap = {\n start: 'flex-start',\n center: 'center',\n end: 'flex-end',\n between: 'space-between',\n around: 'space-around',\n };\n\n return (\n <Component\n ref={ref}\n style={{\n display: 'flex',\n flexDirection: direction === 'vertical' ? 'column' : 'row',\n gap: `var(--renge-space-${gap})`,\n alignItems: alignMap[align],\n justifyContent: justifyMap[justify],\n ...style,\n }}\n {...props}\n >\n {children}\n </Component>\n );\n }\n);","// packages/react/src/components/Grid.tsx\n\nimport { forwardRef, type ComponentPropsWithoutRef } from 'react';\n\ntype SpaceKey = '0' | '1' | '2' | '3' | '4' | '5' | '6';\n\ninterface GridProps extends ComponentPropsWithoutRef<'div'> {\n columns?: number | string; // number for fixed, string for template\n rows?: number | string;\n gap?: SpaceKey;\n gapX?: SpaceKey;\n gapY?: SpaceKey;\n align?: 'start' | 'center' | 'end' | 'stretch';\n justify?: 'start' | 'center' | 'end' | 'stretch';\n}\n\nexport const Grid = forwardRef<HTMLDivElement, GridProps>(\n function Grid(\n {\n columns = 1,\n rows,\n gap = '3',\n gapX,\n gapY,\n align = 'stretch',\n justify = 'stretch',\n style,\n children,\n ...props\n },\n ref\n ) {\n const getTemplate = (value: number | string | undefined) => {\n if (value === undefined) return undefined;\n if (typeof value === 'number') return `repeat(${value}, 1fr)`;\n return value;\n };\n\n return (\n <div\n ref={ref}\n style={{\n display: 'grid',\n gridTemplateColumns: getTemplate(columns),\n gridTemplateRows: getTemplate(rows),\n columnGap: gapX ? `var(--renge-space-${gapX})` : `var(--renge-space-${gap})`,\n rowGap: gapY ? `var(--renge-space-${gapY})` : `var(--renge-space-${gap})`,\n alignItems: align,\n justifyItems: justify,\n ...style,\n }}\n {...props}\n >\n {children}\n </div>\n );\n }\n);","// packages/react/src/components/Text.tsx\n\nimport { forwardRef, type ElementType, type ComponentPropsWithoutRef } from 'react';\nimport type { AnimationName } from '@renge-ui/tokens';\n\ntype SizeKey = 'xs' | 'sm' | 'base' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl';\ntype ColorKey = 'fg' | 'fg-subtle' | 'fg-muted' | 'accent' | 'success' | 'warning' | 'danger';\n\ninterface TextOwnProps {\n size?: SizeKey;\n color?: ColorKey;\n weight?: 'normal' | 'medium' | 'semibold' | 'bold';\n align?: 'left' | 'center' | 'right';\n animation?: AnimationName;\n as?: ElementType;\n}\n\ntype TextProps<T extends ElementType = 'span'> = TextOwnProps &\n Omit<ComponentPropsWithoutRef<T>, keyof TextOwnProps>;\n\nexport const Text = forwardRef<HTMLSpanElement, TextProps>(\n function Text(\n {\n size = 'base',\n color = 'fg',\n weight = 'normal',\n align,\n animation,\n as: Component = 'span',\n style,\n children,\n ...props\n },\n ref\n ) {\n const weightMap = {\n normal: 400,\n medium: 500,\n semibold: 600,\n bold: 700,\n };\n\n return (\n <Component\n ref={ref}\n style={{\n fontSize: `var(--renge-font-size-${size})`,\n lineHeight: `var(--renge-line-height-${size})`,\n color: `var(--renge-color-${color})`,\n fontWeight: weightMap[weight],\n textAlign: align,\n animation: animation ? `var(--renge-animation-${animation})` : undefined,\n ...style,\n }}\n {...props}\n >\n {children}\n </Component>\n );\n }\n);","// packages/react/src/components/Heading.tsx\n\nimport { forwardRef, type ComponentPropsWithoutRef } from 'react';\nimport type { AnimationName } from '@renge-ui/tokens';\n\ntype Level = 1 | 2 | 3 | 4 | 5 | 6;\ntype SizeKey = 'lg' | 'xl' | '2xl' | '3xl' | '4xl';\n\ninterface HeadingProps extends Omit<ComponentPropsWithoutRef<'h1'>, 'color'> {\n level?: Level;\n size?: SizeKey;\n color?: 'fg' | 'fg-subtle' | 'accent';\n animation?: AnimationName;\n}\n\nconst defaultSizeForLevel: Record<Level, SizeKey> = {\n 1: '3xl',\n 2: '2xl',\n 3: 'xl',\n 4: 'lg',\n 5: 'lg',\n 6: 'lg',\n};\n\nexport const Heading = forwardRef<HTMLHeadingElement, HeadingProps>(\n function Heading(\n {\n level = 2,\n size,\n color = 'fg',\n animation,\n style,\n children,\n ...props\n },\n ref\n ) {\n const Component = `h${level}` as const;\n const resolvedSize = size ?? defaultSizeForLevel[level];\n\n return (\n <Component\n ref={ref}\n style={{\n fontSize: `var(--renge-font-size-${resolvedSize})`,\n lineHeight: `var(--renge-line-height-${resolvedSize})`,\n color: `var(--renge-color-${color})`,\n fontWeight: 600,\n margin: 0,\n animation: animation ? `var(--renge-animation-${animation})` : undefined,\n ...style,\n }}\n {...props}\n >\n {children}\n </Component>\n );\n }\n);","// packages/react/src/components/Card.tsx\n\nimport { forwardRef, type ComponentPropsWithoutRef } from 'react';\nimport type { AnimationName } from '@renge-ui/tokens';\n\ntype SpaceKey = '0' | '1' | '2' | '3' | '4' | '5' | '6';\ntype RadiusKey = 'none' | '1' | '2' | '3' | '4' | '5' | 'full';\n\ninterface CardProps extends ComponentPropsWithoutRef<'div'> {\n padding?: SpaceKey;\n radius?: RadiusKey;\n variant?: 'elevated' | 'outlined' | 'filled';\n animation?: AnimationName;\n}\n\nexport const Card = forwardRef<HTMLDivElement, CardProps>(\n function Card(\n {\n padding = '4',\n radius = '3',\n variant = 'elevated',\n animation,\n style,\n children,\n ...props\n },\n ref\n ) {\n const variantStyles: Record<string, React.CSSProperties> = {\n elevated: {\n backgroundColor: `var(--renge-color-bg)`,\n boxShadow: '0 1px 3px rgba(0,0,0,0.1), 0 1px 2px rgba(0,0,0,0.06)',\n },\n outlined: {\n backgroundColor: `var(--renge-color-bg)`,\n border: `1px solid var(--renge-color-border)`,\n },\n filled: {\n backgroundColor: `var(--renge-color-bg-subtle)`,\n },\n };\n\n return (\n <div\n ref={ref}\n style={{\n padding: `var(--renge-space-${padding})`,\n borderRadius: `var(--renge-radius-${radius})`,\n ...variantStyles[variant],\n animation: animation ? `var(--renge-animation-${animation})` : undefined,\n ...style,\n }}\n {...props}\n >\n {children}\n </div>\n );\n }\n);","// packages/react/src/components/Button.tsx\n\nimport { forwardRef, type ComponentPropsWithoutRef } from 'react';\nimport type { AnimationName } from '@renge-ui/tokens';\n\ntype SizeKey = 'sm' | 'md' | 'lg';\ntype Variant = 'solid' | 'outline' | 'ghost';\ntype ColorScheme = 'accent' | 'danger' | 'success';\n\ninterface ButtonProps extends ComponentPropsWithoutRef<'button'> {\n size?: SizeKey;\n variant?: Variant;\n colorScheme?: ColorScheme;\n fullWidth?: boolean;\n animation?: AnimationName;\n}\n\nconst sizeStyles: Record<SizeKey, React.CSSProperties> = {\n sm: {\n padding: 'var(--renge-space-1) var(--renge-space-2)',\n fontSize: 'var(--renge-font-size-sm)',\n },\n md: {\n padding: 'var(--renge-space-2) var(--renge-space-4)',\n fontSize: 'var(--renge-font-size-base)',\n },\n lg: {\n padding: 'var(--renge-space-3) var(--renge-space-5)',\n fontSize: 'var(--renge-font-size-lg)',\n },\n};\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n function Button(\n {\n size = 'md',\n variant = 'solid',\n colorScheme = 'accent',\n fullWidth = false,\n animation,\n style,\n children,\n ...props\n },\n ref\n ) {\n const getVariantStyles = (): React.CSSProperties => {\n switch (variant) {\n case 'solid':\n return {\n backgroundColor: `var(--renge-color-${colorScheme})`,\n color: 'var(--renge-color-fg-inverse)',\n border: 'none',\n };\n case 'outline':\n return {\n backgroundColor: 'transparent',\n color: `var(--renge-color-${colorScheme})`,\n border: `1px solid var(--renge-color-${colorScheme})`,\n };\n case 'ghost':\n return {\n backgroundColor: 'transparent',\n color: `var(--renge-color-${colorScheme})`,\n border: 'none',\n };\n }\n };\n\n return (\n <button\n ref={ref}\n style={{\n ...sizeStyles[size],\n ...getVariantStyles(),\n borderRadius: 'var(--renge-radius-2)',\n fontWeight: 500,\n cursor: 'pointer',\n transition: `all var(--renge-duration-2) var(--renge-easing-ease-out)`,\n width: fullWidth ? '100%' : undefined,\n animation: animation ? `var(--renge-animation-${animation})` : undefined,\n ...style,\n }}\n {...props}\n >\n {children}\n </button>\n );\n }\n);","// packages/react/src/components/Divider.tsx\n\nimport { forwardRef, type ComponentPropsWithoutRef } from 'react';\n\ntype SpaceKey = '0' | '1' | '2' | '3' | '4' | '5' | '6';\n\ninterface DividerProps extends ComponentPropsWithoutRef<'hr'> {\n orientation?: 'horizontal' | 'vertical';\n spacing?: SpaceKey;\n color?: 'border' | 'border-subtle';\n}\n\nexport const Divider = forwardRef<HTMLHRElement, DividerProps>(\n function Divider(\n {\n orientation = 'horizontal',\n spacing = '3',\n color = 'border-subtle',\n style,\n ...props\n },\n ref\n ) {\n const isHorizontal = orientation === 'horizontal';\n\n return (\n <hr\n ref={ref}\n style={{\n border: 'none',\n backgroundColor: `var(--renge-color-${color})`,\n ...(isHorizontal\n ? {\n height: '1px',\n width: '100%',\n marginBlock: `var(--renge-space-${spacing})`,\n }\n : {\n width: '1px',\n height: '100%',\n marginInline: `var(--renge-space-${spacing})`,\n }),\n ...style,\n }}\n {...props}\n />\n );\n }\n);","// packages/react/src/components/Section.tsx\n\nimport { forwardRef, type ElementType, type ComponentPropsWithoutRef } from 'react';\nimport type { AnimationName } from '@renge-ui/tokens';\n\ntype SpaceKey = '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8';\n\ninterface SectionOwnProps {\n padding?: SpaceKey;\n paddingX?: SpaceKey;\n paddingY?: SpaceKey;\n maxWidth?: 'sm' | 'md' | 'lg' | 'xl' | 'full' | 'none';\n center?: boolean;\n animation?: AnimationName;\n as?: ElementType;\n}\n\ntype SectionProps<T extends ElementType = 'section'> = SectionOwnProps &\n Omit<ComponentPropsWithoutRef<T>, keyof SectionOwnProps>;\n\nconst maxWidthMap = {\n sm: '640px',\n md: '768px',\n lg: '1024px',\n xl: '1280px',\n full: '100%',\n none: undefined,\n};\n\nexport const Section = forwardRef<HTMLElement, SectionProps>(\n function Section(\n {\n padding,\n paddingX = '4',\n paddingY = '6',\n maxWidth = 'lg',\n center = true,\n animation,\n as: Component = 'section',\n style,\n children,\n ...props\n },\n ref\n ) {\n return (\n <Component\n ref={ref}\n style={{\n paddingInline: padding ? `var(--renge-space-${padding})` : `var(--renge-space-${paddingX})`,\n paddingBlock: padding ? `var(--renge-space-${padding})` : `var(--renge-space-${paddingY})`,\n maxWidth: maxWidthMap[maxWidth],\n marginInline: center ? 'auto' : undefined,\n animation: animation ? `var(--renge-animation-${animation})` : undefined,\n ...style,\n }}\n {...props}\n >\n {children}\n </Component>\n );\n }\n);","import { forwardRef, type ComponentPropsWithoutRef, type CSSProperties } from 'react';\n\nexport type BadgeVariant = 'accent' | 'success' | 'warning' | 'danger' | 'info' | 'neutral';\nexport type BadgeSize = 'sm' | 'md' | 'lg';\n\nexport interface BadgeProps extends ComponentPropsWithoutRef<'span'> {\n variant?: BadgeVariant;\n size?: BadgeSize;\n}\n\nconst colorVars = (variant: BadgeVariant) => {\n if (variant === 'neutral') {\n return {\n background: 'var(--renge-color-bg-subtle)',\n color: 'var(--renge-color-fg-muted)',\n borderColor: 'var(--renge-color-border-subtle)',\n };\n }\n return {\n background: `var(--renge-color-${variant}-subtle)`,\n color: `var(--renge-color-${variant})`,\n borderColor: `var(--renge-color-${variant})`,\n };\n};\n\nconst sizeStyles: Record<BadgeSize, CSSProperties> = {\n sm: { padding: 'var(--renge-space-1) var(--renge-space-2)', fontSize: 'var(--renge-font-size-xs)' },\n md: { padding: 'var(--renge-space-1) var(--renge-space-3)', fontSize: 'var(--renge-font-size-xs)' },\n lg: { padding: 'var(--renge-space-2) var(--renge-space-3)', fontSize: 'var(--renge-font-size-sm)' },\n};\n\nexport const Badge = forwardRef<HTMLSpanElement, BadgeProps>(\n function Badge({ variant = 'neutral', size = 'md', style, children, ...props }, ref) {\n const { background, color, borderColor } = colorVars(variant);\n return (\n <span\n ref={ref}\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n lineHeight: 1,\n fontWeight: 500,\n borderRadius: 'var(--renge-radius-full)',\n border: `1px solid ${borderColor}`,\n background,\n color,\n ...sizeStyles[size],\n ...style,\n }}\n {...props}\n >\n {children}\n </span>\n );\n }\n);\n","import { forwardRef, type ComponentPropsWithoutRef } from 'react';\n\nexport type AvatarSize = '1' | '2' | '3' | '4' | '5';\nexport type AvatarShape = 'circle' | 'square';\n\nexport interface AvatarProps extends ComponentPropsWithoutRef<'div'> {\n src?: string;\n alt?: string;\n initials?: string;\n size?: AvatarSize;\n shape?: AvatarShape;\n}\n\n// True Fibonacci sizes: FIBONACCI[3..7] × 4px = 20, 32, 52, 84, 136\n// Consecutive ratios converge to φ: 32/20=1.6, 52/32=1.625, 84/52=1.615, 136/84=1.619\nconst sizePx: Record<AvatarSize, number> = {\n '1': 20,\n '2': 32,\n '3': 52,\n '4': 84,\n '5': 136,\n};\n\nconst fontSizeFor: Record<AvatarSize, string> = {\n '1': 'var(--renge-font-size-xs)',\n '2': 'var(--renge-font-size-sm)',\n '3': 'var(--renge-font-size-base)',\n '4': 'var(--renge-font-size-lg)',\n '5': 'var(--renge-font-size-xl)',\n};\n\nexport const Avatar = forwardRef<HTMLDivElement, AvatarProps>(\n function Avatar(\n { src, alt, initials, size = '3', shape = 'circle', style, ...props },\n ref\n ) {\n const px = sizePx[size];\n const radius = shape === 'circle' ? 'var(--renge-radius-full)' : 'var(--renge-radius-3)';\n const label = initials ? initials.slice(0, 2).toUpperCase() : undefined;\n\n return (\n <div\n ref={ref}\n aria-label={alt}\n role={alt ? 'img' : undefined}\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n width: px,\n height: px,\n borderRadius: radius,\n overflow: 'hidden',\n flexShrink: 0,\n background: src ? undefined : 'var(--renge-color-bg-muted)',\n color: 'var(--renge-color-fg-inverse)',\n fontSize: fontSizeFor[size],\n fontWeight: 600,\n userSelect: 'none',\n ...style,\n }}\n {...props}\n >\n {src ? (\n <img\n src={src}\n alt={alt ?? ''}\n style={{ width: '100%', height: '100%', objectFit: 'cover', display: 'block' }}\n />\n ) : (\n label\n )}\n </div>\n );\n }\n);\n","import { forwardRef, type ComponentPropsWithoutRef } from 'react';\n\n// Inject keyframe once when module loads\nif (typeof document !== 'undefined') {\n const id = 'renge-spinner-kf';\n if (!document.getElementById(id)) {\n const s = document.createElement('style');\n s.id = id;\n s.textContent = '@keyframes rengeSpinnerSpin { to { transform: rotate(360deg); } }';\n document.head.appendChild(s);\n }\n}\n\nexport type SpinnerSize = 'sm' | 'md' | 'lg';\nexport type SpinnerColor = 'accent' | 'fg' | 'fg-muted';\n\nexport interface SpinnerProps extends ComponentPropsWithoutRef<'span'> {\n size?: SpinnerSize;\n color?: SpinnerColor;\n label?: string;\n}\n\nconst sizePx: Record<SpinnerSize, number> = { sm: 16, md: 24, lg: 32 };\nconst borderWidth: Record<SpinnerSize, string> = { sm: '2px', md: '2px', lg: '3px' };\n\nexport const Spinner = forwardRef<HTMLSpanElement, SpinnerProps>(\n function Spinner({ size = 'md', color = 'accent', label = 'Loading', style, ...props }, ref) {\n const px = sizePx[size];\n const bw = borderWidth[size];\n return (\n <span\n ref={ref}\n role=\"status\"\n aria-label={label}\n style={{\n display: 'inline-block',\n width: px,\n height: px,\n borderRadius: 'var(--renge-radius-full)',\n border: `${bw} solid var(--renge-color-border-subtle)`,\n borderTopColor: `var(--renge-color-${color})`,\n animation: `rengeSpinnerSpin var(--renge-duration-3) linear infinite`,\n flexShrink: 0,\n ...style,\n }}\n {...props}\n />\n );\n }\n);\n","import { forwardRef, type ComponentPropsWithoutRef } from 'react';\n\nexport type ProgressColor = 'accent' | 'success' | 'warning' | 'danger';\nexport type ProgressSize = 'sm' | 'md' | 'lg';\n\nexport interface ProgressProps extends Omit<ComponentPropsWithoutRef<'div'>, 'children'> {\n value: number;\n color?: ProgressColor;\n size?: ProgressSize;\n radius?: 'none' | 'full';\n label?: string;\n}\n\nconst trackHeight: Record<ProgressSize, number> = { sm: 4, md: 8, lg: 12 };\n\nexport const Progress = forwardRef<HTMLDivElement, ProgressProps>(\n function Progress(\n { value, color = 'accent', size = 'md', radius = 'full', label, style, ...props },\n ref\n ) {\n const clamped = Math.min(100, Math.max(0, value));\n const borderRadius = radius === 'full' ? 'var(--renge-radius-full)' : '0px';\n const height = trackHeight[size];\n\n return (\n <div\n ref={ref}\n role=\"progressbar\"\n aria-valuenow={clamped}\n aria-valuemin={0}\n aria-valuemax={100}\n aria-label={label}\n style={{\n width: '100%',\n height,\n borderRadius,\n background: 'var(--renge-color-bg-muted)',\n overflow: 'hidden',\n ...style,\n }}\n {...props}\n >\n <div\n style={{\n height: '100%',\n width: `${clamped}%`,\n borderRadius,\n background: `var(--renge-color-${color})`,\n transition: `width var(--renge-duration-3) var(--renge-easing-ease-out)`,\n }}\n />\n </div>\n );\n }\n);\n","import { forwardRef, type ComponentPropsWithoutRef, type CSSProperties } from 'react';\n\nexport type InputSize = 'sm' | 'md' | 'lg';\nexport type InputState = 'default' | 'error' | 'success';\n\nexport interface InputProps extends Omit<ComponentPropsWithoutRef<'input'>, 'size'> {\n size?: InputSize;\n state?: InputState;\n fullWidth?: boolean;\n}\n\nconst sizeStyles: Record<InputSize, CSSProperties> = {\n sm: {\n padding: 'var(--renge-space-1) var(--renge-space-2)',\n fontSize: 'var(--renge-font-size-sm)',\n },\n md: {\n padding: 'var(--renge-space-2) var(--renge-space-3)',\n fontSize: 'var(--renge-font-size-base)',\n },\n lg: {\n padding: 'var(--renge-space-2) var(--renge-space-4)',\n fontSize: 'var(--renge-font-size-base)',\n },\n};\n\nconst stateColor: Record<InputState, string> = {\n default: 'var(--renge-color-border)',\n error: 'var(--renge-color-danger)',\n success: 'var(--renge-color-success)',\n};\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\n function Input({ size = 'md', state = 'default', fullWidth = false, style, ...props }, ref) {\n return (\n <input\n ref={ref}\n style={{\n ...sizeStyles[size],\n display: 'block',\n width: fullWidth ? '100%' : undefined,\n background: 'var(--renge-color-bg)',\n color: 'var(--renge-color-fg)',\n border: `1px solid ${stateColor[state]}`,\n borderRadius: 'var(--renge-radius-2)',\n outline: 'none',\n transition: `border-color var(--renge-duration-1) var(--renge-easing-ease-out)`,\n // Focus is handled via :focus-visible pseudo-class but inline styles can't do that.\n // We set a CSS custom property approach via box-shadow as focus ring instead.\n boxSizing: 'border-box',\n fontFamily: 'inherit',\n ...style,\n }}\n onFocus={(e) => {\n (e.currentTarget as HTMLInputElement).style.outline = `2px solid var(--renge-color-border-focus)`;\n (e.currentTarget as HTMLInputElement).style.outlineOffset = '2px';\n props.onFocus?.(e);\n }}\n onBlur={(e) => {\n (e.currentTarget as HTMLInputElement).style.outline = 'none';\n props.onBlur?.(e);\n }}\n {...props}\n />\n );\n }\n);\n","import { forwardRef, type ComponentPropsWithoutRef } from 'react';\n\nexport type ChipVariant = 'accent' | 'success' | 'warning' | 'danger' | 'info' | 'neutral';\n\nexport interface ChipProps extends ComponentPropsWithoutRef<'span'> {\n variant?: ChipVariant;\n onDismiss?: () => void;\n}\n\nconst colorVars = (variant: ChipVariant) => {\n if (variant === 'neutral') {\n return {\n background: 'var(--renge-color-bg-subtle)',\n color: 'var(--renge-color-fg-muted)',\n borderColor: 'var(--renge-color-border-subtle)',\n };\n }\n return {\n background: `var(--renge-color-${variant}-subtle)`,\n color: `var(--renge-color-${variant})`,\n borderColor: `var(--renge-color-${variant})`,\n };\n};\n\nexport const Chip = forwardRef<HTMLSpanElement, ChipProps>(\n function Chip({ variant = 'neutral', onDismiss, style, children, ...props }, ref) {\n const { background, color, borderColor } = colorVars(variant);\n return (\n <span\n ref={ref}\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n gap: 'var(--renge-space-2)',\n padding: 'var(--renge-space-2) var(--renge-space-3)',\n fontSize: 'var(--renge-font-size-sm)',\n fontWeight: 500,\n lineHeight: 1,\n borderRadius: 'var(--renge-radius-full)',\n border: `1px solid ${borderColor}`,\n background,\n color,\n ...style,\n }}\n {...props}\n >\n {children}\n {onDismiss && (\n <button\n onClick={onDismiss}\n aria-label=\"Dismiss\"\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n background: 'none',\n border: 'none',\n padding: 0,\n cursor: 'pointer',\n color: 'inherit',\n fontSize: 'var(--renge-font-size-sm)',\n lineHeight: 1,\n opacity: 0.7,\n }}\n >\n ×\n </button>\n )}\n </span>\n );\n }\n);\n","import { forwardRef, type ComponentPropsWithoutRef } from 'react';\n\nexport type AlertStatus = 'info' | 'success' | 'warning' | 'danger';\n\nexport interface AlertProps extends ComponentPropsWithoutRef<'div'> {\n status?: AlertStatus;\n title?: string;\n}\n\nexport const Alert = forwardRef<HTMLDivElement, AlertProps>(\n function Alert({ status = 'info', title, style, children, ...props }, ref) {\n return (\n <div\n ref={ref}\n role=\"alert\"\n style={{\n display: 'flex',\n flexDirection: 'column',\n gap: title && children ? 'var(--renge-space-1)' : undefined,\n padding: 'var(--renge-space-3) var(--renge-space-4)',\n borderRadius: 'var(--renge-radius-2)',\n borderLeft: `3px solid var(--renge-color-${status})`,\n background: `var(--renge-color-${status}-subtle)`,\n color: 'var(--renge-color-fg)',\n ...style,\n }}\n {...props}\n >\n {title && (\n <strong\n style={{\n fontSize: 'var(--renge-font-size-sm)',\n fontWeight: 600,\n color: 'var(--renge-color-fg)',\n }}\n >\n {title}\n </strong>\n )}\n {children && (\n <span style={{ fontSize: 'var(--renge-font-size-sm)', color: 'var(--renge-color-fg)' }}>\n {children}\n </span>\n )}\n </div>\n );\n }\n);\n","import { forwardRef, type ComponentPropsWithoutRef } from 'react';\n\nexport interface FormFieldProps extends ComponentPropsWithoutRef<'div'> {\n label: string;\n htmlFor?: string;\n helperText?: string;\n errorText?: string;\n required?: boolean;\n}\n\nexport const FormField = forwardRef<HTMLDivElement, FormFieldProps>(\n function FormField(\n { label, htmlFor, helperText, errorText, required, style, children, ...props },\n ref\n ) {\n const subText = errorText ?? helperText;\n const subColor = errorText ? 'var(--renge-color-danger)' : 'var(--renge-color-fg-muted)';\n\n return (\n <div\n ref={ref}\n style={{\n display: 'flex',\n flexDirection: 'column',\n gap: 'var(--renge-space-2)',\n ...style,\n }}\n {...props}\n >\n <label\n htmlFor={htmlFor}\n style={{\n fontSize: 'var(--renge-font-size-sm)',\n fontWeight: 500,\n color: 'var(--renge-color-fg)',\n display: 'flex',\n alignItems: 'center',\n gap: 'var(--renge-space-1)',\n }}\n >\n {label}\n {required && (\n <span aria-hidden=\"true\" style={{ color: 'var(--renge-color-danger)' }}>\n *\n </span>\n )}\n </label>\n {children}\n {subText && (\n <span\n style={{\n fontSize: 'var(--renge-font-size-xs)',\n color: subColor,\n }}\n >\n {subText}\n </span>\n )}\n </div>\n );\n }\n);\n","import { forwardRef, type ComponentPropsWithoutRef } from 'react';\n\nexport type TrendDirection = 'up' | 'down' | 'neutral';\n\nexport interface StatProps extends ComponentPropsWithoutRef<'div'> {\n value: string | number;\n label: string;\n trend?: TrendDirection;\n trendValue?: string;\n caption?: string;\n}\n\nconst trendColor: Record<TrendDirection, string> = {\n up: 'var(--renge-color-success)',\n down: 'var(--renge-color-danger)',\n neutral: 'var(--renge-color-fg-muted)',\n};\n\nconst trendBg: Record<TrendDirection, string> = {\n up: 'var(--renge-color-success-subtle)',\n down: 'var(--renge-color-danger-subtle)',\n neutral: 'var(--renge-color-bg-subtle)',\n};\n\nconst trendBorder: Record<TrendDirection, string> = {\n up: 'var(--renge-color-success)',\n down: 'var(--renge-color-danger)',\n neutral: 'var(--renge-color-border-subtle)',\n};\n\nconst trendSymbol: Record<TrendDirection, string> = {\n up: '↑',\n down: '↓',\n neutral: '—',\n};\n\nexport const Stat = forwardRef<HTMLDivElement, StatProps>(\n function Stat({ value, label, trend, trendValue, caption, style, ...props }, ref) {\n return (\n <div\n ref={ref}\n style={{\n display: 'flex',\n flexDirection: 'column',\n padding: 'var(--renge-space-4)',\n ...style,\n }}\n {...props}\n >\n <span\n style={{\n fontSize: 'var(--renge-font-size-xs)',\n color: 'var(--renge-color-fg-muted)',\n marginBottom: 'var(--renge-space-1)',\n fontWeight: 500,\n }}\n >\n {label}\n </span>\n <div\n style={{\n display: 'flex',\n alignItems: 'baseline',\n gap: 'var(--renge-space-3)',\n flexWrap: 'wrap',\n }}\n >\n <span\n style={{\n fontSize: 'var(--renge-font-size-3xl)',\n lineHeight: 1.2,\n fontWeight: 600,\n color: 'var(--renge-color-fg)',\n }}\n >\n {value}\n </span>\n {trend && trendValue && (\n <span\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n gap: 'var(--renge-space-1)',\n padding: 'var(--renge-space-1) var(--renge-space-2)',\n fontSize: 'var(--renge-font-size-xs)',\n fontWeight: 500,\n lineHeight: 1,\n borderRadius: 'var(--renge-radius-full)',\n border: `1px solid ${trendBorder[trend]}`,\n background: trendBg[trend],\n color: trendColor[trend],\n }}\n >\n {trendSymbol[trend]} {trendValue}\n </span>\n )}\n </div>\n {caption && (\n <span\n style={{\n fontSize: 'var(--renge-font-size-xs)',\n color: 'var(--renge-color-fg-muted)',\n marginTop: 'var(--renge-space-1)',\n }}\n >\n {caption}\n </span>\n )}\n </div>\n );\n }\n);\n","import { forwardRef, type ComponentPropsWithoutRef } from 'react';\n\ntype SpaceKey = '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8';\n\nexport interface NavbarProps extends ComponentPropsWithoutRef<'nav'> {\n sticky?: boolean;\n border?: boolean;\n height?: string;\n paddingX?: SpaceKey;\n}\n\nexport const Navbar = forwardRef<HTMLElement, NavbarProps>(\n function Navbar(\n { sticky = false, border = true, height = '56px', paddingX = '5', style, children, ...props },\n ref\n ) {\n return (\n <nav\n ref={ref}\n style={{\n display: 'flex',\n alignItems: 'center',\n minHeight: height,\n padding: `0 var(--renge-space-${paddingX})`,\n background: 'var(--renge-color-bg)',\n borderBottom: border ? '1px solid var(--renge-color-border-subtle)' : undefined,\n position: sticky ? 'sticky' : undefined,\n top: sticky ? 0 : undefined,\n zIndex: sticky ? 100 : undefined,\n boxSizing: 'border-box',\n ...style,\n }}\n {...props}\n >\n {children}\n </nav>\n );\n }\n);\n","/**\n * EnergyRing\n *\n * Circular SVG ring that shows an energy/progress level.\n * Self-similar at every size — a fractal component.\n * The small version is a precise mathematical miniature of the large.\n *\n * Stroke width, gap, and label scale by PHI with the ring size.\n * When pulse=true, the ring breathes at a rate tuned to the energy level.\n */\n\nimport { forwardRef, useEffect, type ComponentPropsWithoutRef } from \"react\";\n\n// ============================================================================\n// Keyframe injection (module-level, runs once)\n// ============================================================================\n\nconst KEYFRAMES = `\n@keyframes rengeRingPulse {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.382; }\n}\n`;\n\nif (typeof document !== \"undefined\") {\n const id = \"__renge-ring-keyframes__\";\n if (!document.getElementById(id)) {\n const style = document.createElement(\"style\");\n style.id = id;\n style.textContent = KEYFRAMES;\n document.head.appendChild(style);\n }\n}\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport type EnergyRingSize = \"sm\" | \"md\" | \"lg\" | \"xl\";\nexport type EnergyRingRate = \"rest\" | \"active\" | \"fire\";\nexport type EnergyRingColor = \"accent\" | \"success\" | \"warning\" | \"danger\";\n\nexport interface EnergyRingProps\n extends Omit<ComponentPropsWithoutRef<\"div\">, \"children\"> {\n /** Energy level 0–100 */\n value: number;\n size?: EnergyRingSize;\n /** Color channel — maps to semantic token */\n color?: EnergyRingColor;\n /** Whether to animate a breathing pulse */\n pulse?: boolean;\n /** Pulse speed — rest=slow, active=medium, fire=fast */\n rate?: EnergyRingRate;\n /** Center label. Defaults to \"{value}%\" */\n label?: string | null;\n}\n\n// ============================================================================\n// Size config — each step is prev × φ\n// sm:32 → md:52 → lg:84 → xl:136 (Fibonacci×4, approximating φ growth)\n// ============================================================================\n\nconst SIZE_CONFIG: Record<EnergyRingSize, { diameter: number; stroke: number; fontSize: string }> = {\n sm: { diameter: 32, stroke: 3, fontSize: \"var(--renge-font-size-xs)\" },\n md: { diameter: 52, stroke: 4, fontSize: \"var(--renge-font-size-xs)\" },\n lg: { diameter: 84, stroke: 5, fontSize: \"var(--renge-font-size-sm)\" },\n xl: { diameter: 136, stroke: 6, fontSize: \"var(--renge-font-size-base)\" },\n};\n\nconst PULSE_DURATION: Record<EnergyRingRate, string> = {\n rest: \"var(--renge-duration-7)\", // 2100ms — slow, resting breath\n active: \"var(--renge-duration-5)\", // 800ms — normal active pulse\n fire: \"var(--renge-duration-4)\", // 500ms — intense, rapid\n};\n\n// ============================================================================\n// Component\n// ============================================================================\n\nexport const EnergyRing = forwardRef<HTMLDivElement, EnergyRingProps>(\n function EnergyRing(\n {\n value,\n size = \"md\",\n color = \"accent\",\n pulse = false,\n rate = \"active\",\n label,\n style,\n ...props\n },\n ref\n ) {\n const { diameter, stroke, fontSize } = SIZE_CONFIG[size];\n const radius = (diameter - stroke) / 2;\n const circumference = 2 * Math.PI * radius;\n const clampedValue = Math.min(100, Math.max(0, value));\n const offset = circumference * (1 - clampedValue / 100);\n const center = diameter / 2;\n\n const colorVar = `var(--renge-color-${color})`;\n const colorSubtleVar = `var(--renge-color-${color}-subtle)`;\n\n const pulseStyle = pulse\n ? {\n animation: `rengeRingPulse ${PULSE_DURATION[rate]} var(--renge-easing-ease-in-out) infinite`,\n }\n : {};\n\n const showLabel = label !== null && (size === \"lg\" || size === \"xl\");\n const labelText = label !== undefined ? label : `${clampedValue}%`;\n\n return (\n <div\n ref={ref}\n role=\"progressbar\"\n aria-valuenow={clampedValue}\n aria-valuemin={0}\n aria-valuemax={100}\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: `${diameter}px`,\n height: `${diameter}px`,\n position: \"relative\",\n flexShrink: 0,\n ...style,\n }}\n {...props}\n >\n <svg\n width={diameter}\n height={diameter}\n viewBox={`0 0 ${diameter} ${diameter}`}\n style={{ position: \"absolute\", top: 0, left: 0, ...pulseStyle }}\n aria-hidden=\"true\"\n >\n {/* Track */}\n <circle\n cx={center}\n cy={center}\n r={radius}\n fill=\"none\"\n stroke={colorSubtleVar}\n strokeWidth={stroke}\n />\n {/* Fill — rotated so 0% starts at top */}\n <circle\n cx={center}\n cy={center}\n r={radius}\n fill=\"none\"\n stroke={colorVar}\n strokeWidth={stroke}\n strokeLinecap=\"round\"\n strokeDasharray={circumference}\n strokeDashoffset={offset}\n style={{\n transform: \"rotate(-90deg)\",\n transformOrigin: `${center}px ${center}px`,\n transition: `stroke-dashoffset var(--renge-duration-5) var(--renge-easing-ease-out)`,\n }}\n />\n </svg>\n {showLabel && (\n <span\n style={{\n fontSize,\n color: colorVar,\n fontVariantNumeric: \"tabular-nums\",\n lineHeight: 1,\n pointerEvents: \"none\",\n }}\n >\n {labelText}\n </span>\n )}\n </div>\n );\n }\n);\n","/**\n * Pulse\n *\n * A breathing dot — the minimal alive indicator.\n * Scales up to φ at peak and fades to 1/φ² opacity at rest.\n * Rate maps naturally to energy states: rest → active → fire.\n *\n * The small version has the exact same proportional logic as the large.\n * Only the scale changes. The rhythm is the same. This is the fractal property.\n */\n\nimport { forwardRef, type ComponentPropsWithoutRef } from \"react\";\n\n// ============================================================================\n// Keyframe injection\n// ============================================================================\n\nconst KEYFRAMES = `\n@keyframes rengePulseBreathe {\n 0%, 100% {\n transform: scale(1);\n opacity: 1;\n }\n 50% {\n transform: scale(1.618);\n opacity: 0.382;\n }\n}\n@keyframes rengePulseRipple {\n 0% { transform: scale(1); opacity: 0.5; }\n 100% { transform: scale(2.618); opacity: 0; }\n}\n`;\n\nif (typeof document !== \"undefined\") {\n const id = \"__renge-pulse-keyframes__\";\n if (!document.getElementById(id)) {\n const style = document.createElement(\"style\");\n style.id = id;\n style.textContent = KEYFRAMES;\n document.head.appendChild(style);\n }\n}\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport type PulseRate = \"rest\" | \"active\" | \"fire\";\nexport type PulseColor = \"accent\" | \"success\" | \"warning\" | \"danger\" | \"fg-muted\";\nexport type PulseSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface PulseProps extends ComponentPropsWithoutRef<\"span\"> {\n /** Energy rate — determines breath speed */\n rate?: PulseRate;\n color?: PulseColor;\n size?: PulseSize;\n /** Show expanding ripple ring */\n ripple?: boolean;\n}\n\n// ============================================================================\n// Config — sizes follow fractal scale (approx φ growth: 6 → 10 → 16px)\n// ============================================================================\n\nconst SIZE_PX: Record<PulseSize, number> = {\n sm: 6,\n md: 10,\n lg: 16,\n};\n\n// Durations map to heart-rate analogy via Fibonacci × 100ms\n// rest=2100ms (~29bpm, meditating), active=800ms (~75bpm), fire=500ms (~120bpm)\nconst RATE_DURATION: Record<PulseRate, string> = {\n rest: \"var(--renge-duration-7)\", // 2100ms\n active: \"var(--renge-duration-5)\", // 800ms\n fire: \"var(--renge-duration-4)\", // 500ms\n};\n\n// ============================================================================\n// Component\n// ============================================================================\n\nexport const Pulse = forwardRef<HTMLSpanElement, PulseProps>(\n function Pulse(\n {\n rate = \"active\",\n color = \"accent\",\n size = \"md\",\n ripple = false,\n style,\n ...props\n },\n ref\n ) {\n const diameter = SIZE_PX[size];\n const duration = RATE_DURATION[rate];\n const colorVar = `var(--renge-color-${color})`;\n\n return (\n <span\n ref={ref}\n aria-hidden=\"true\"\n style={{\n display: \"inline-flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n position: \"relative\",\n width: `${diameter}px`,\n height: `${diameter}px`,\n flexShrink: 0,\n ...style,\n }}\n {...props}\n >\n {/* Ripple ring */}\n {ripple && (\n <span\n style={{\n position: \"absolute\",\n inset: 0,\n borderRadius: \"9999px\",\n backgroundColor: colorVar,\n animation: `rengePulseRipple ${duration} var(--renge-easing-ease-out) infinite`,\n }}\n />\n )}\n {/* Core dot */}\n <span\n style={{\n width: `${diameter}px`,\n height: `${diameter}px`,\n borderRadius: \"9999px\",\n backgroundColor: colorVar,\n display: \"block\",\n animation: `rengePulseBreathe ${duration} var(--renge-easing-ease-in-out) infinite`,\n }}\n />\n </span>\n );\n }\n);\n","/**\n * FlowField\n *\n * A living phyllotaxis dot field. Energy flows through it.\n * Each dot is placed at a golden-angle position (phyllotaxis),\n * and pulses with a delay derived from its spiral index — creating\n * a wave that propagates outward from the center along the golden spiral.\n *\n * Energy level controls density, opacity, and pulse rate.\n * This is the Feng Shui principle made literal: intentional energetic\n * movement through digital space, governed by natural mathematics.\n */\n\nimport { forwardRef, useMemo, type ComponentPropsWithoutRef } from \"react\";\nimport { phyllotaxis } from \"@renge-ui/tokens\";\n\n// ============================================================================\n// Keyframe injection (module-level)\n// ============================================================================\n\nconst KEYFRAMES = `\n@keyframes rengeFlowPulse {\n 0%, 100% { opacity: var(--ff-base-opacity); r: var(--ff-base-r); }\n 50% { opacity: var(--ff-peak-opacity); r: var(--ff-peak-r); }\n}\n`;\n\nif (typeof document !== \"undefined\") {\n const id = \"__renge-flow-keyframes__\";\n if (!document.getElementById(id)) {\n const style = document.createElement(\"style\");\n style.id = id;\n style.textContent = KEYFRAMES;\n document.head.appendChild(style);\n }\n}\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport type FlowEnergy = \"void\" | \"rest\" | \"active\" | \"fire\";\nexport type FlowColor = \"accent\" | \"fg-muted\" | \"fg-subtle\";\n\nexport interface FlowFieldProps extends ComponentPropsWithoutRef<\"div\"> {\n /** Total dot count at full energy. Actual count scales with energy. */\n count?: number;\n /** Size of the field container in px */\n size?: number;\n /** Energy level — controls density, opacity, and pulse rate */\n energy?: FlowEnergy;\n /** Color channel */\n color?: FlowColor;\n}\n\n// ============================================================================\n// Energy config\n// Each energy state maps to a natural feel:\n// void = near-empty, barely breathing — like space before creation\n// rest = gentle, slow — seeds waiting in soil\n// active = alive, circulating — a flowering field in wind\n// fire = intense, fast — sparks rising from embers\n// ============================================================================\n\nconst ENERGY_CONFIG: Record<FlowEnergy, {\n density: number; // fraction of total count to show\n baseOpacity: number; // dot opacity at rest phase\n peakOpacity: number; // dot opacity at pulse peak\n baseR: number; // dot radius at rest (px)\n peakR: number; // dot radius at pulse peak (px)\n duration: string; // CSS var for animation duration\n}> = {\n void: { density: 0.2, baseOpacity: 0.06, peakOpacity: 0.15, baseR: 1.0, peakR: 1.4, duration: \"var(--renge-duration-8)\" }, // 3400ms\n rest: { density: 0.45, baseOpacity: 0.12, peakOpacity: 0.28, baseR: 1.2, peakR: 1.8, duration: \"var(--renge-duration-6)\" }, // 1300ms\n active: { density: 0.72, baseOpacity: 0.22, peakOpacity: 0.55, baseR: 1.4, peakR: 2.2, duration: \"var(--renge-duration-5)\" }, // 800ms\n fire: { density: 1.0, baseOpacity: 0.35, peakOpacity: 0.82, baseR: 1.6, peakR: 2.618,duration: \"var(--renge-duration-4)\" }, // 500ms\n};\n\n// ============================================================================\n// Component\n// ============================================================================\n\nexport const FlowField = forwardRef<HTMLDivElement, FlowFieldProps>(\n function FlowField(\n {\n count = 144,\n size = 400,\n energy = \"active\",\n color = \"accent\",\n style,\n ...props\n },\n ref\n ) {\n const cfg = ENERGY_CONFIG[energy];\n const visibleCount = Math.round(count * cfg.density);\n const colorVar = `var(--renge-color-${color})`;\n\n // Generate phyllotaxis points, centered in container\n const points = useMemo(() => {\n const spread = size / (2 * Math.sqrt(count)); // scale spread to container\n return phyllotaxis({ count, spread, scale: 1 });\n }, [count, size]);\n\n return (\n <div\n ref={ref}\n style={{\n width: `${size}px`,\n height: `${size}px`,\n position: \"relative\",\n overflow: \"hidden\",\n flexShrink: 0,\n // CSS vars for SVG animation — set at container level\n [\"--ff-base-opacity\" as string]: String(cfg.baseOpacity),\n [\"--ff-peak-opacity\" as string]: String(cfg.peakOpacity),\n [\"--ff-base-r\" as string]: `${cfg.baseR}px`,\n [\"--ff-peak-r\" as string]: `${cfg.peakR}px`,\n ...style,\n }}\n {...props}\n >\n <svg\n width={size}\n height={size}\n viewBox={`${-size / 2} ${-size / 2} ${size} ${size}`}\n aria-hidden=\"true\"\n style={{ display: \"block\" }}\n >\n {points.slice(0, visibleCount).map((pt) => {\n // Delay = index / count × full duration cycle\n // Creates a wave that travels along the golden spiral\n const delayFraction = pt.index / visibleCount;\n const delayMs = delayFraction * 2100; // spread over ~2100ms max\n\n return (\n <circle\n key={pt.index}\n cx={pt.x}\n cy={pt.y}\n r={cfg.baseR}\n fill={colorVar}\n style={{\n animation: `rengeFlowPulse ${cfg.duration} var(--renge-easing-ease-in-out) ${delayMs.toFixed(0)}ms infinite`,\n }}\n />\n );\n })}\n </svg>\n </div>\n );\n }\n);\n","// packages/react/src/index.ts\n\n// Provider & hooks\nexport { RengeProvider, useRenge, useRengeTheme } from './provider';\nexport type { RengeProviderProps } from './provider';\n\n// Components\nexport {\n Stack,\n Grid,\n Text,\n Heading,\n Card,\n Button,\n Divider,\n Section,\n // Atoms\n Badge,\n Avatar,\n Spinner,\n Progress,\n Input,\n Chip,\n // Molecules\n Alert,\n FormField,\n Stat,\n // Organisms\n Navbar,\n // State Components\n EnergyRing,\n Pulse,\n FlowField,\n} from './components';\nexport type {\n EnergyRingProps, EnergyRingSize, EnergyRingRate, EnergyRingColor,\n PulseProps, PulseRate, PulseColor, PulseSize,\n FlowFieldProps, FlowEnergy, FlowColor,\n BadgeProps, BadgeVariant, BadgeSize,\n AvatarProps, AvatarSize, AvatarShape,\n SpinnerProps, SpinnerSize, SpinnerColor,\n ProgressProps, ProgressColor, ProgressSize,\n InputProps, InputSize, InputState,\n ChipProps, ChipVariant,\n AlertProps, AlertStatus,\n FormFieldProps,\n StatProps, TrendDirection,\n NavbarProps,\n} from './components';\n\n// Re-export tokens for convenience\nexport { createRengeTheme, PHI, FIBONACCI, GOLDEN_ANGLE, ANIMATION_NAMES } from '@renge-ui/tokens';\nexport type { RengeThemeConfig, RengeTheme, ProfileName, ProfileMode, ProfileVariant, AnimationName } from '@renge-ui/tokens';"],"mappings":"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","names":["jsx","Stack","forwardRef","jsx","Grid","forwardRef","jsx","Text","forwardRef","jsx","Heading","forwardRef","jsx","Card","forwardRef","jsx","Button","forwardRef","jsx","Divider","forwardRef","jsx","Section","forwardRef","jsx","sizeStyles","Badge","forwardRef","jsx","Avatar","forwardRef","jsx","sizePx","Spinner","forwardRef","jsx","Progress","forwardRef","jsx","sizeStyles","Input","forwardRef","jsx","colorVars","Chip","forwardRef","jsx","jsxs","Alert","forwardRef","jsx","jsxs","FormField","forwardRef","jsx","jsxs","Stat","forwardRef","jsx","Navbar","forwardRef","jsx","jsxs","EnergyRing","forwardRef","jsx","jsxs","KEYFRAMES","Pulse","forwardRef","useMemo","jsx","KEYFRAMES","FlowField","createRengeTheme"]}
|
package/package.json
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@renge-ui/react",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "React component primitives for the Renge design system.",
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"module": "./dist/index.mjs",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.mjs",
|
|
12
|
+
"require": "./dist/index.js"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"files": ["dist"],
|
|
16
|
+
"scripts": {
|
|
17
|
+
"build": "tsup",
|
|
18
|
+
"dev": "tsup --watch",
|
|
19
|
+
"typecheck": "tsc --noEmit"
|
|
20
|
+
},
|
|
21
|
+
"keywords": ["design-system", "react", "components", "golden-ratio"],
|
|
22
|
+
"author": "Vanessa Martin",
|
|
23
|
+
"license": "MIT",
|
|
24
|
+
"publishConfig": { "access": "public" },
|
|
25
|
+
"repository": {
|
|
26
|
+
"type": "git",
|
|
27
|
+
"url": "https://github.com/vsm1996/renge-ui"
|
|
28
|
+
},
|
|
29
|
+
"packageManager": "pnpm@10.30.2",
|
|
30
|
+
"dependencies": {
|
|
31
|
+
"@renge-ui/tokens": "workspace:*"
|
|
32
|
+
},
|
|
33
|
+
"peerDependencies": {
|
|
34
|
+
"react": "^18.0.0 || ^19.0.0",
|
|
35
|
+
"react-dom": "^18.0.0 || ^19.0.0"
|
|
36
|
+
},
|
|
37
|
+
"devDependencies": {
|
|
38
|
+
"@types/react": "^19.2.14",
|
|
39
|
+
"react": "^19.2.4",
|
|
40
|
+
"react-dom": "^19.2.4",
|
|
41
|
+
"tsup": "^8.5.1",
|
|
42
|
+
"typescript": "^5.9.3"
|
|
43
|
+
}
|
|
44
|
+
}
|