@@ -3,60 +3,64 @@ import path from "node:path";
3
3
4
4
import { fileURLToPath } from "node:url" ;
5
5
import React from "react" ;
6
+ import { Color } from "./color" ;
6
7
7
8
const __filename = fileURLToPath ( import . meta. url ) ;
8
9
const __dirname = path . dirname ( __filename ) ;
9
10
10
- const styles = await fs . readFile ( path . join ( __dirname , "../../node_modules/tailwindcss/theme.css" ) , "utf-8" ) ;
11
+ const styles = await fs . readFile (
12
+ path . join ( __dirname , "../../node_modules/tailwindcss/theme.css" ) ,
13
+ "utf-8" ,
14
+ ) ;
11
15
12
- let colors : Record < string , Record < string , string > > = { } ;
13
- for ( let line of styles . split ( "\n" ) ) {
14
- if ( line . startsWith ( " --color-" ) ) {
15
- const [ key , value ] = line . split ( ":" ) . map ( ( part ) => part . trim ( ) . replace ( ";" , "" ) ) ;
16
- const match = key . match ( / ^ - - c o l o r - ( [ a - z ] + ) - ( \d + ) $ / ) ;
16
+ const colors : Record < string , Record < string , string > > = { } ;
17
+ for ( const line of styles . split ( "\n" ) ) {
18
+ if ( line . startsWith ( " --color-" ) ) {
19
+ const [ key , value ] = line
20
+ . split ( ":" )
21
+ . map ( ( part ) => part . trim ( ) . replace ( ";" , "" ) ) ;
22
+ const match = key . match ( / ^ - - c o l o r - ( [ a - z ] + ) - ( \d + ) $ / ) ;
17
23
18
- if ( match ) {
19
- const [ , group , shade ] = match ;
24
+ if ( match ) {
25
+ const [ , group , shade ] = match ;
20
26
21
- if ( ! colors [ group ] ) {
22
- colors [ group ] = { } ;
23
- }
27
+ if ( ! colors [ group ] ) {
28
+ colors [ group ] = { } ;
29
+ }
24
30
25
- colors [ group ] [ shade ] = value ;
26
- }
27
- }
31
+ colors [ group ] [ shade ] = value ;
32
+ }
33
+ }
28
34
}
29
35
30
36
export function ColorPalette ( ) {
31
- return (
32
- < div className = "not-prose grid grid-cols-[auto_minmax(0,_1fr)] items-center gap-4" >
33
- < div className = "col-start-2 grid grid-cols-11 justify-items-center gap-1.5 font-medium text-gray-950 *:rotate-180 *:[writing-mode:vertical-lr] sm:gap-4 sm:*:rotate-0 sm:*:[writing-mode:horizontal-tb] dark:text-white" >
34
- < div > 50</ div >
35
- < div > 100</ div >
36
- < div > 200</ div >
37
- < div > 300</ div >
38
- < div > 400</ div >
39
- < div > 500</ div >
40
- < div > 600</ div >
41
- < div > 700</ div >
42
- < div > 800</ div >
43
- < div > 900</ div >
44
- < div > 950</ div >
45
- </ div >
46
- { Object . entries ( colors ) . map ( ( [ key , shades ] ) => (
47
- < React . Fragment key = { key } >
48
- < p className = "font-medium text-gray-950 capitalize sm:pr-12 dark:text-white" > { key } </ p >
49
- < div className = "grid grid-cols-11 gap-1.5 sm:gap-4" >
50
- { Object . keys ( shades ) . map ( ( shade , i ) => (
51
- < div
52
- key = { i }
53
- style = { { backgroundColor : `var(--color-${ key } -${ shade } )` } }
54
- className = "aspect-1/1 rounded-sm outline -outline-offset-1 outline-black/10 sm:rounded-md dark:outline-white/10"
55
- />
56
- ) ) }
57
- </ div >
58
- </ React . Fragment >
59
- ) ) }
60
- </ div >
61
- ) ;
37
+ return (
38
+ < div className = "not-prose grid grid-cols-[auto_minmax(0,_1fr)] items-center gap-4" >
39
+ < div className = "col-start-2 grid grid-cols-11 justify-items-center gap-1.5 font-medium text-gray-950 *:rotate-180 *:[writing-mode:vertical-lr] sm:gap-4 sm:*:rotate-0 sm:*:[writing-mode:horizontal-tb] dark:text-white" >
40
+ < div > 50</ div >
41
+ < div > 100</ div >
42
+ < div > 200</ div >
43
+ < div > 300</ div >
44
+ < div > 400</ div >
45
+ < div > 500</ div >
46
+ < div > 600</ div >
47
+ < div > 700</ div >
48
+ < div > 800</ div >
49
+ < div > 900</ div >
50
+ < div > 950</ div >
51
+ </ div >
52
+ { Object . entries ( colors ) . map ( ( [ key , shades ] ) => (
53
+ < React . Fragment key = { key } >
54
+ < p className = "font-medium text-gray-950 capitalize sm:pr-12 dark:text-white" >
55
+ { key }
56
+ </ p >
57
+ < div className = "grid grid-cols-11 gap-1.5 sm:gap-4" >
58
+ { Object . keys ( shades ) . map ( ( shade , i ) => (
59
+ < Color key = { i } name = { key } shade = { shade } />
60
+ ) ) }
61
+ </ div >
62
+ </ React . Fragment >
63
+ ) ) }
64
+ </ div >
65
+ ) ;
62
66
}
0 commit comments