forked from AOSSIE-Org/SupportUsButton
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.ts
More file actions
155 lines (114 loc) · 3.41 KB
/
Copy pathindex.ts
File metadata and controls
155 lines (114 loc) · 3.41 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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
import type { ReactNode } from "react";
/* =========================
Theme
========================= */
export type Theme = "AOSSIE" | "light" | "dark" | "minimal" | "corporate";
/* =========================================================
Button Variant
========================================================= */
export type ButtonVariant = 'AOSSIE'| "primary" | "secondary" | "ghost" | "gradient";
/* =========================
IMAGE TYPE
========================= */
export type Image = {
src?: string;
alt?: string;
};
/* =========================
Hero SECTION
========================= */
export type Hero = {
/** Optional Hero background Image */
Image?: Image;
title: string;
description: string;
/** Label like: YOU'RE SPONSORING */
sponsorLabel?: string;
};
/* =========================
PROJECT INFORMATION
========================= */
export type projectInformation = {
name: string;
description: string;
};
/* =========================
ORGANIZATION INFORMATION
========================= */
export type organizationInformation = {
name: string;
description: string;
/** Organization logo */
logo?: Image | string;
projectInformation?: projectInformation;
};
/* =========================
SPONSOR TIERS
========================= */
export type Tier = "Platinum" | "Gold" | "Silver" | "Bronze";
/* =========================
SPONSOR CARD
========================= */
export type sponsor = {
name: string;
/** Sponsor logo or avatar */
logo?: string;
/** Sponsor website */
link?: string;
/** Sponsorship tier */
sponsorshipTier?: Tier;
};
/* =========================
CURRENT SPONSORS
========================= */
export type sponsors = sponsor[];
/* =========================
SPONSOR LINKS (CTA)
========================= */
export type sponsorLink = {
name: string;
url: string;
icon?: ReactNode;
className?: string;
/** open link in new tab */
newTab?: boolean;
};
/* =========================
CTA SECTION
========================= */
export type CTASection = {
title: string;
description: string;
sponsorLink: sponsorLink[];
};
/* =========================
BACKGROUND PATTERNS
========================= */
export type Pattern = "AOSSIE" | "dots" | "grid" | "none";
/* =========================
SUPPORT US COMPO PROPS
========================= */
export interface supportUsButtonProps {
// Theme for the button, can be one of "AOSSIE", "light", "dark", "minimal", or "corporate"
Theme?: Theme;
// Optional background pattern for the button, can be one of "dots", "grid", "stripes", or "none"
pattern?: Pattern;
// Information about the Hero section, including title, description, sponsor label, and optional background Image
hero: Hero;
// Information about the organization, including name, description, logo, and project information
organizationInformation: organizationInformation;
// List of current sponsors, each with name, optional logo, link, and sponsorship tier
sponsors?: sponsors;
// Information about the call-to-action section, including title, description, and sponsor links
ctaSection: CTASection;
// Optional class name for custom styling
classNames?: {
container?: string;
Hero?: string;
organizationInformation?: string;
sponsors?: string;
ctaSection?: string;
};
// Optional button variant for styling the call-to-action buttons
buttonVariant?: ButtonVariant;
}