import type { PartialTheme , ThemeResolver } from '@beamwind/types' ; const ratios = ( start , end ) : Record < string , string > => { const result = { } ; do { for ( let dividend = 1 ; dividend < start ; dividend ++ ) { result [ `${ dividend }/${ start }` ] = Number ( ( dividend / start * 100 ) . toFixed ( 6 ) ) + '%' ; } } while ( ++ start <= end ) ; return result ; } ; const exponential = ( stop , unit , start = 0 ) : Record < string , string > => { const result = { } ; for ( ; start <= stop ; start = ( start * 2 ) || 1 ) { result [ start ] = start + unit ; } return result ; } ; const linear = ( stop , unit = '' , divideBy = 1 , start = 0 , step = 1 ) : Record < string , string > => { const result = { } ; for ( ; start <= stop ; start += step ) { result [ start ] = ( start / divideBy ) + unit ; } return result ; } ; export const theme = { extend : { colors : { black : '#000' , white : '#fff' , 'gray-50' : '#f9fafb' , 'gray-100' : '#f3f4f6' , 'gray-200' : '#e5e7eb' , 'gray-300' : '#d1d5db' , 'gray-400' : '#9ca3af' , 'gray-500' : '#6b7280' , 'gray-600' : '#4b5563' , 'gray-700' : '#374151' , 'gray-800' : '#1f2937' , 'gray-900' : '#111827' , 'red-50' : '#fef2f2' , 'red-100' : '#fee2e2' , 'red-200' : '#fecaca' , 'red-300' : '#fca5a5' , 'red-400' : '#f87171' , 'red-500' : '#ef4444' , 'red-600' : '#dc2626' , 'red-700' : '#b91c1c' , 'red-800' : '#991b1b' , 'red-900' : '#7f1d1d' , 'yellow-50' : '#fffbeb' , 'yellow-100' : '#fef3c7' , 'yellow-200' : '#fde68a' , 'yellow-300' : '#fcd34d' , 'yellow-400' : '#fbbf24' , 'yellow-500' : '#f59e0b' , 'yellow-600' : '#d97706' , 'yellow-700' : '#b45309' , 'yellow-800' : '#92400e' , 'yellow-900' : '#78350f' , 'green-50' : '#ecfdf5' , 'green-100' : '#d1fae5' , 'green-200' : '#a7f3d0' , 'green-300' : '#6ee7b7' , 'green-400' : '#34d399' , 'green-500' : '#10b981' , 'green-600' : '#059669' , 'green-700' : '#047857' , 'green-800' : '#065f46' , 'green-900' : '#064e3b' , 'blue-50' : '#eff6ff' , 'blue-100' : '#dbeafe' , 'blue-200' : '#bfdbfe' , 'blue-300' : '#93c5fd' , 'blue-400' : '#60a5fa' , 'blue-500' : '#3b82f6' , 'blue-600' : '#2563eb' , 'blue-700' : '#1d4ed8' , 'blue-800' : '#1e40af' , 'blue-900' : '#1e3a8a' , 'indigo-50' : '#eef2ff' , 'indigo-100' : '#e0e7ff' , 'indigo-200' : '#c7d2fe' , 'indigo-300' : '#a5b4fc' , 'indigo-400' : '#818cf8' , 'indigo-500' : '#6366f1' , 'indigo-600' : '#4f46e5' , 'indigo-700' : '#4338ca' , 'indigo-800' : '#3730a3' , 'indigo-900' : '#312e81' , 'purple-50' : '#f5f3ff' , 'purple-100' : '#ede9fe' , 'purple-200' : '#ddd6fe' , 'purple-300' : '#c4b5fd' , 'purple-400' : '#a78bfa' , 'purple-500' : '#8b5cf6' , 'purple-600' : '#7c3aed' , 'purple-700' : '#6d28d9' , 'purple-800' : '#5b21b6' , 'purple-900' : '#4c1d95' , 'pink-50' : '#fdf2f8' , 'pink-100' : '#fce7f3' , 'pink-200' : '#fbcfe8' , 'pink-300' : '#f9a8d4' , 'pink-400' : '#f472b6' , 'pink-500' : '#ec4899' , 'pink-600' : '#db2777' , 'pink-700' : '#be185d' , 'pink-800' : '#9d174d' , 'pink-900' : '#831843' , } , spacing : { ... linear ( 4 , 'rem' , 4 , 0.5 , 0.5 ) , ... linear ( 12 , 'rem' , 4 , 5 ) , 14 : '3.5rem' , ... linear ( 64 , 'rem' , 4 , 16 , 4 ) , 72 : '18rem' , 80 : '20rem' , 96 : '24rem' , } , durations : { 75 : '75ms' , 100 : '100ms' , 150 : '150ms' , 200 : '200ms' , 300 : '300ms' , 500 : '500ms' , 700 : '700ms' , 1000 : '1000ms' , } , animation : { spin : [ '1s linear infinite' ] , ping : [ '1s cubic-bezier(0,0,0.2,1) infinite' ] , pulse : [ '2s cubic-bezier(0.4,0,0.6,1) infinite' ] , bounce : [ '1s infinite' ] , } , borderColor : { DEFAULT : ( theme ) : string => theme ( 'colors' , 'gray-200' , 'currentColor' ) , } , borderRadius : { sm : '0.125rem' , md : '0.375rem' , lg : '0.5rem' , xl : '0.75rem' , '2xl' : '1rem' , '3xl' : '1.5rem' , } , borderWidth : { DEFAULT : '1px' , ... exponential ( 8 , 'px' ) } , boxShadow : { sm : '0 1px 2px 0 rgba(0, 0, 0, 0.05)' , DEFAULT : '0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06)' , md : '0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)' , lg : '0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)' , xl : '0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)' , '2xl' : '0 25px 50px -12px rgba(0, 0, 0, 0.25)' , inner : 'inset 0 2px 4px 0 rgba(0, 0, 0, 0.06)' , } , fontFamily : { sans : 'ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"' , serif : 'ui-serif,Georgia,Cambria,"Times New Roman",Times,serif' , mono : 'ui-monospace,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace' , } , height : ratios ( 2 , 6 ) , inset : ratios ( 2 , 4 ) , keyframes : { spin : { from : { transform : 'rotate(0deg)' , } , to : { transform : 'rotate(360deg)' , } , } , ping : { '0%' : { transform : 'scale(1)' , opacity : '1' , } , '75%,100%' : { transform : 'scale(2)' , opacity : '0' , } , } , pulse : { '0%,100%' : { opacity : '1' , } , '50%' : { opacity : '.5' , } , } , bounce : { '0%, 100%' : { transform : 'translateY(-25%)' , 'animation-timing-function' : 'cubic-bezier(0.8,0,1,1)' , } , '50%' : { transform : 'none' , 'animation-timing-function' : 'cubic-bezier(0,0,0.2,1)' , } , } , } , lineHeight : linear ( 10 , 'rem' , 4 , 3 ) , maxWidth : { xs : '20rem' , sm : '24rem' , md : '28rem' , lg : '32rem' , xl : '36rem' , '2xl' : '42rem' , '3xl' : '48rem' , '4xl' : '56rem' , '5xl' : '64rem' , '6xl' : '72rem' , '7xl' : '80rem' , prose : '65ch' , } , opacity : { 5 : '0.05' , ... linear ( 90 , '' , 100 , 10 , 10 ) , 95 : '0.95' , } , order : linear ( 12 , '' , 1 , 1 ) , outline : { white : [ '2px dotted white' , '2px' ] , black : [ '2px dotted black' , '2px' ] , } , ringColor : { DEFAULT : ( theme ) : string => theme ( 'colors' , 'blue-500' , '#3b82f6' ) , } , ringOffsetWidth : exponential ( 8 , 'px' ) , ringWidth : exponential ( 8 , 'px' ) , rotate : { ... exponential ( 2 , 'deg' ) , ... exponential ( 12 , 'deg' , 3 ) , ... exponential ( 180 , 'deg' , 45 ) , } , scale : { 0 : '0' , 50 : '.5' , 75 : '.75' , ... linear ( 110 , '' , 100 , 90 , 5 ) , 125 : '1.25' , 150 : '1.5' , } , skew : { ... exponential ( 2 , 'deg' ) , ... exponential ( 12 , 'deg' , 3 ) , } , strokeWidth : linear ( 2 ) , transitionTimingFunction : { linear : 'linear' , in : 'cubic-bezier(0.4, 0, 1, 1)' , out : 'cubic-bezier(0, 0, 0.2, 1)' , 'in-out' : 'cubic-bezier(0.4, 0, 0.2, 1)' , } , translate : ratios ( 2 , 4 ) , width : { ... ratios ( 2 , 6 ) , ... ratios ( 12 , 12 ) , } , zIndex : linear ( 50 , '' , 1 , 0 , 10 ) , } , } ;