Socialify

Folder ..

Viewing configType.ts
87 lines (74 loc) • 1.6 KB

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
/* eslint-disable no-unused-vars */
enum Theme {
  light = 'Light',
  dark = 'Dark'
}

enum Pattern {
  signal = 'Signal',
  charlieBrown = 'Charlie Brown',
  formalInvitation = 'Formal Invitation',
  plus = 'Plus',
  circuitBoard = 'Circuit Board',
  overlappingHexagons = 'Overlapping Hexagons',
  brickWall = 'Brick Wall',
  floatingCogs = 'Floating Cogs',
  diagonalStripes = 'Diagonal Stripes',
  solid = 'Solid'
}

enum Font {
  inter = 'Inter',
  bitter = 'Bitter',
  raleway = 'Raleway',
  rokkitt = 'Rokkitt',
  sourceCodePro = 'Source Code Pro',
  koHo = 'KoHo',
  jost = 'Jost'
}

export type RequiredConfigs = {
  logo: string

  font: Font
  theme: Theme
  pattern: Pattern
}

const OptionalConfigKeyStrings = {
  owner: true,
  name: true,
  description: true,
  language: true,
  language2: true
}

const OptionalConfigKeyNumbers = {
  stargazers: true,
  forks: true,
  issues: true,
  pulls: true
}

export const RequiredConfigsKeys = {
  logo: true,
  font: true,
  theme: true,
  pattern: true
}

export const OptionalConfigsKeys = {
  ...OptionalConfigKeyStrings,
  ...OptionalConfigKeyNumbers
}

type OptionalConfigStringElement = {
  [name in keyof typeof OptionalConfigKeyStrings]?: {
    state: boolean
    value: string
    editable?: boolean
  }
}
type OptionalConfigNumberElement = {
  [name in keyof typeof OptionalConfigKeyNumbers]?: {
    state: boolean
    value: number
    editable?: boolean
  }
}

export type OptionalConfigs = OptionalConfigStringElement &
  OptionalConfigNumberElement

type Configuration = RequiredConfigs & OptionalConfigs

export default Configuration

export { Theme, Pattern, Font }