gwan-design-system 0.1.5 โ 0.1.7
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 +55 -17
- package/dist/index.d.mts +21 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.js +271 -203
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +271 -203
- package/dist/index.mjs.map +1 -1
- package/package.json +5 -4
package/README.md
CHANGED
|
@@ -1,13 +1,9 @@
|
|
|
1
|
-
#
|
|
1
|
+
# โก Gwan Design System โ A Component Library for Next.js โก
|
|
2
2
|
|
|
3
3
|

|
|
4
|
-

|
|
5
|
-

|
|
6
4
|
|
|
7
5
|
> ๐งช Reusable, composable, and beautifully crafted UI components built with ๐ Next.js โ supercharge your apps in minutes!
|
|
8
6
|
|
|
9
|
-
---
|
|
10
|
-
|
|
11
7
|
## ๐ฆ What is Gwan Design System?
|
|
12
8
|
|
|
13
9
|
**Gwan Design System** is a plug-and-play React component library tailored specifically for **Next.js** projects. Whether you're building a SaaS dashboard, marketing site, or internal tool โ we've got you covered.
|
|
@@ -22,32 +18,74 @@
|
|
|
22
18
|
|
|
23
19
|
### ๐ฅ Installation
|
|
24
20
|
|
|
25
|
-
Install via npm:
|
|
21
|
+
Install via npm: `npm install gwan-design-system`
|
|
26
22
|
|
|
27
|
-
or with Yarn:
|
|
23
|
+
or with Yarn: `yarn add gwan-design-system`
|
|
28
24
|
|
|
29
25
|
### ๐งฐ Usage
|
|
30
26
|
|
|
27
|
+
Include this in your `tailwind.config.ts`
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
content: [
|
|
31
|
+
"./src/app/**/*.{js,ts,jsx,tsx,mdx}",
|
|
32
|
+
"./src/templates/**/*.{js,ts,jsx,tsx,mdx}",
|
|
33
|
+
join(
|
|
34
|
+
dirname(require.resolve("gwan-design-system")),
|
|
35
|
+
"**/*.{js,ts,jsx,tsx,mdx}"
|
|
36
|
+
),
|
|
37
|
+
],
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Define your custom theme in your `tailwind.config.ts`
|
|
41
|
+
|
|
42
|
+
```
|
|
43
|
+
theme: {
|
|
44
|
+
extend: {
|
|
45
|
+
colors: {
|
|
46
|
+
primary: {
|
|
47
|
+
50: "#F2F3EE",
|
|
48
|
+
100: "#E1E3DA",
|
|
49
|
+
200: "#D0D3C6",
|
|
50
|
+
300: "#BEC3B2",
|
|
51
|
+
400: "#ADB39E",
|
|
52
|
+
500: "#9EA593",
|
|
53
|
+
600: "#8C9382",
|
|
54
|
+
700: "#787D6E",
|
|
55
|
+
800: "#64675A",
|
|
56
|
+
900: "#505146",
|
|
57
|
+
},
|
|
58
|
+
neutral: {...},
|
|
59
|
+
green: {...},
|
|
60
|
+
red: {...},
|
|
61
|
+
blue: {...},
|
|
62
|
+
yellow: {...}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
```
|
|
67
|
+
|
|
31
68
|
Import any component and use it right away!
|
|
32
69
|
|
|
33
70
|
```
|
|
34
71
|
"use client";
|
|
35
72
|
|
|
36
|
-
import { Button,
|
|
73
|
+
import { Button, BUTTON_VARIANTS } from "gwan-design-system";
|
|
37
74
|
|
|
38
75
|
export default function HomePage() {
|
|
39
76
|
return (
|
|
40
77
|
<main className="p-10">
|
|
41
78
|
<h1 className="text-2xl font-bold mb-6">๐ Welcome to Gwan UI</h1>
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
79
|
+
<Button
|
|
80
|
+
variant={BUTTON_VARIANTS.PRIMARY}
|
|
81
|
+
label="Primary"
|
|
82
|
+
onClick={() => handleClick()}
|
|
83
|
+
/>
|
|
47
84
|
</main>
|
|
48
85
|
);
|
|
49
86
|
}
|
|
50
87
|
```
|
|
88
|
+
|
|
51
89
|
### ๐งฑ Components
|
|
52
90
|
|
|
53
91
|
- ๐ Buttons
|
|
@@ -55,17 +93,17 @@ export default function HomePage() {
|
|
|
55
93
|
- ๐งพ Tables
|
|
56
94
|
- โ
Checkboxes
|
|
57
95
|
- โ๏ธ Radio Buttons
|
|
58
|
-
- ๐ฅ File
|
|
96
|
+
- ๐ฅ File Uploader
|
|
59
97
|
- ๐ฆ Cards
|
|
60
98
|
- ๐ Dropdowns
|
|
61
99
|
- ๐ Pagination
|
|
62
100
|
- ๐ Tags
|
|
63
101
|
- ๐ง States (Empty, Error, Loading, etc.)
|
|
64
|
-
- ๐
|
|
102
|
+
- ๐ Snackbar
|
|
65
103
|
- โจ Tooltips
|
|
66
104
|
- ๐งญ Navigation Bars
|
|
67
105
|
- ...and more!
|
|
68
|
-
> Want to see all available components? Visit ๐ [gwan-design-system](https://gwan-design-system.vercel.app) official website.
|
|
106
|
+
> Want to see all available components? Visit ๐ [gwan-design-system](https://gwan-design-system.vercel.app) official website.
|
|
69
107
|
|
|
70
108
|
### ๐ Customization
|
|
71
109
|
|
|
@@ -85,7 +123,7 @@ However, to keep the project stable and secure:
|
|
|
85
123
|
๐ Pull requests require review and approval before merging
|
|
86
124
|
|
|
87
125
|
Want to contribute?
|
|
88
|
-
Fork this repository
|
|
126
|
+
Fork this ๐ [repository](https://github.com/gwanfonseka/gwan-design-system)
|
|
89
127
|
|
|
90
128
|
- Create a feature branch: git checkout -b feature/my-feature
|
|
91
129
|
- Commit your changes and push: git push origin feature/my-feature
|
package/dist/index.d.mts
CHANGED
|
@@ -11,6 +11,7 @@ interface IAvatar {
|
|
|
11
11
|
email: string;
|
|
12
12
|
image?: string;
|
|
13
13
|
variant: string;
|
|
14
|
+
className?: string;
|
|
14
15
|
}
|
|
15
16
|
declare const Avatar: FC<IAvatar>;
|
|
16
17
|
|
|
@@ -22,6 +23,7 @@ interface IBanner {
|
|
|
22
23
|
contentPlacement?: "left" | "right";
|
|
23
24
|
backgroundImage?: string;
|
|
24
25
|
backgroundColor?: string;
|
|
26
|
+
className?: string;
|
|
25
27
|
}
|
|
26
28
|
declare const Banner: FC<IBanner>;
|
|
27
29
|
|
|
@@ -37,12 +39,14 @@ interface IButton {
|
|
|
37
39
|
icon?: ReactNode;
|
|
38
40
|
type?: "button" | "submit";
|
|
39
41
|
disabled?: boolean;
|
|
42
|
+
className?: string;
|
|
40
43
|
}
|
|
41
44
|
declare const Button: FC<IButton>;
|
|
42
45
|
|
|
43
46
|
interface ICarousel {
|
|
44
47
|
slides: IBanner[];
|
|
45
48
|
interval?: number;
|
|
49
|
+
className?: string;
|
|
46
50
|
}
|
|
47
51
|
declare const Carousel: FC<ICarousel>;
|
|
48
52
|
|
|
@@ -50,12 +54,14 @@ interface ICheckbox {
|
|
|
50
54
|
label: string;
|
|
51
55
|
checked: boolean;
|
|
52
56
|
onChange: (checked: boolean) => void;
|
|
57
|
+
className?: string;
|
|
53
58
|
}
|
|
54
59
|
declare const Checkbox: FC<ICheckbox>;
|
|
55
60
|
|
|
56
61
|
interface IChip {
|
|
57
62
|
label: string;
|
|
58
63
|
onClear: () => void;
|
|
64
|
+
className?: string;
|
|
59
65
|
}
|
|
60
66
|
declare const Chip: FC<IChip>;
|
|
61
67
|
|
|
@@ -71,6 +77,7 @@ interface ITooltip {
|
|
|
71
77
|
isVisible: boolean;
|
|
72
78
|
toolTipWidth?: string;
|
|
73
79
|
toolTipClass?: string;
|
|
80
|
+
className?: string;
|
|
74
81
|
}
|
|
75
82
|
declare const Tooltip: FC<ITooltip>;
|
|
76
83
|
|
|
@@ -78,6 +85,7 @@ interface IEllipsis {
|
|
|
78
85
|
label: string;
|
|
79
86
|
tooltipPosition?: TOOLTIP_POSITION;
|
|
80
87
|
tooltipWidth?: string;
|
|
88
|
+
className?: string;
|
|
81
89
|
}
|
|
82
90
|
declare const Ellipsis: FC<IEllipsis>;
|
|
83
91
|
|
|
@@ -87,6 +95,7 @@ interface IFileUploader {
|
|
|
87
95
|
subTitle2?: string;
|
|
88
96
|
handleAttachment: (file: File) => void;
|
|
89
97
|
accept?: string;
|
|
98
|
+
className?: string;
|
|
90
99
|
}
|
|
91
100
|
declare const FileUploader: FC<IFileUploader>;
|
|
92
101
|
|
|
@@ -101,6 +110,7 @@ interface IFilterCategory {
|
|
|
101
110
|
}
|
|
102
111
|
interface IFilter {
|
|
103
112
|
children: (closeDropdown: () => void) => React.ReactNode;
|
|
113
|
+
className?: string;
|
|
104
114
|
}
|
|
105
115
|
declare const FilterDropdown: FC<IFilter>;
|
|
106
116
|
|
|
@@ -112,6 +122,7 @@ interface IInput {
|
|
|
112
122
|
placeholder?: string;
|
|
113
123
|
inputClassName?: string;
|
|
114
124
|
required?: boolean;
|
|
125
|
+
className?: string;
|
|
115
126
|
}
|
|
116
127
|
declare const Input: FC<IInput>;
|
|
117
128
|
|
|
@@ -126,6 +137,7 @@ interface IModal {
|
|
|
126
137
|
children: React.ReactNode;
|
|
127
138
|
onClear: () => void;
|
|
128
139
|
size?: MODAL_SIZE;
|
|
140
|
+
className?: string;
|
|
129
141
|
}
|
|
130
142
|
declare const Modal: FC<IModal>;
|
|
131
143
|
|
|
@@ -148,6 +160,7 @@ interface INavBar {
|
|
|
148
160
|
menuHeightClass?: string;
|
|
149
161
|
isCollapsed?: boolean;
|
|
150
162
|
menuBackgroundColor?: string;
|
|
163
|
+
className?: string;
|
|
151
164
|
}
|
|
152
165
|
declare const NavBar: FC<INavBar>;
|
|
153
166
|
|
|
@@ -163,6 +176,7 @@ interface ISelectDropdown {
|
|
|
163
176
|
value: string;
|
|
164
177
|
onChange: (option: string) => void;
|
|
165
178
|
inputClassName?: string;
|
|
179
|
+
className?: string;
|
|
166
180
|
}
|
|
167
181
|
declare const SelectDropdown: FC<ISelectDropdown>;
|
|
168
182
|
|
|
@@ -174,6 +188,7 @@ interface IPaging {
|
|
|
174
188
|
interface IPagination extends IPaging {
|
|
175
189
|
options: ISelectDropdownOption[];
|
|
176
190
|
onChange: (paging: IPaging) => void;
|
|
191
|
+
className?: string;
|
|
177
192
|
}
|
|
178
193
|
declare const Pagination: FC<IPagination>;
|
|
179
194
|
|
|
@@ -182,6 +197,7 @@ interface IRadioButton {
|
|
|
182
197
|
value: string;
|
|
183
198
|
selectedValue?: string;
|
|
184
199
|
onChange?: (value: string) => void;
|
|
200
|
+
className?: string;
|
|
185
201
|
}
|
|
186
202
|
declare const RadioButton: FC<IRadioButton>;
|
|
187
203
|
|
|
@@ -196,6 +212,7 @@ interface ISnackBar {
|
|
|
196
212
|
type?: SNACK_BAR_TYPE;
|
|
197
213
|
message: string;
|
|
198
214
|
icon?: React.ReactNode;
|
|
215
|
+
className?: string;
|
|
199
216
|
}
|
|
200
217
|
declare const Snackbar: FC<ISnackBar>;
|
|
201
218
|
|
|
@@ -210,6 +227,7 @@ interface IStateBase {
|
|
|
210
227
|
subTitle: string;
|
|
211
228
|
imageWidth?: number;
|
|
212
229
|
imageHeight?: number;
|
|
230
|
+
className?: string;
|
|
213
231
|
}
|
|
214
232
|
type IState = ({
|
|
215
233
|
type: STATE_TYPE;
|
|
@@ -228,6 +246,7 @@ interface ITableColumn {
|
|
|
228
246
|
interface ITable {
|
|
229
247
|
columns: ITableColumn[];
|
|
230
248
|
data: any[];
|
|
249
|
+
className?: string;
|
|
231
250
|
}
|
|
232
251
|
declare const Table: FC<ITable>;
|
|
233
252
|
|
|
@@ -241,6 +260,7 @@ declare enum TAG_TYPE {
|
|
|
241
260
|
interface ITag {
|
|
242
261
|
type: TAG_TYPE;
|
|
243
262
|
label: string;
|
|
263
|
+
className?: string;
|
|
244
264
|
}
|
|
245
265
|
declare const Tag: FC<ITag>;
|
|
246
266
|
|
|
@@ -260,6 +280,7 @@ interface ILog {
|
|
|
260
280
|
}
|
|
261
281
|
interface ITimeLine {
|
|
262
282
|
logs: ILog[];
|
|
283
|
+
className?: string;
|
|
263
284
|
}
|
|
264
285
|
declare const TimeLine: FC<ITimeLine>;
|
|
265
286
|
|
package/dist/index.d.ts
CHANGED
|
@@ -11,6 +11,7 @@ interface IAvatar {
|
|
|
11
11
|
email: string;
|
|
12
12
|
image?: string;
|
|
13
13
|
variant: string;
|
|
14
|
+
className?: string;
|
|
14
15
|
}
|
|
15
16
|
declare const Avatar: FC<IAvatar>;
|
|
16
17
|
|
|
@@ -22,6 +23,7 @@ interface IBanner {
|
|
|
22
23
|
contentPlacement?: "left" | "right";
|
|
23
24
|
backgroundImage?: string;
|
|
24
25
|
backgroundColor?: string;
|
|
26
|
+
className?: string;
|
|
25
27
|
}
|
|
26
28
|
declare const Banner: FC<IBanner>;
|
|
27
29
|
|
|
@@ -37,12 +39,14 @@ interface IButton {
|
|
|
37
39
|
icon?: ReactNode;
|
|
38
40
|
type?: "button" | "submit";
|
|
39
41
|
disabled?: boolean;
|
|
42
|
+
className?: string;
|
|
40
43
|
}
|
|
41
44
|
declare const Button: FC<IButton>;
|
|
42
45
|
|
|
43
46
|
interface ICarousel {
|
|
44
47
|
slides: IBanner[];
|
|
45
48
|
interval?: number;
|
|
49
|
+
className?: string;
|
|
46
50
|
}
|
|
47
51
|
declare const Carousel: FC<ICarousel>;
|
|
48
52
|
|
|
@@ -50,12 +54,14 @@ interface ICheckbox {
|
|
|
50
54
|
label: string;
|
|
51
55
|
checked: boolean;
|
|
52
56
|
onChange: (checked: boolean) => void;
|
|
57
|
+
className?: string;
|
|
53
58
|
}
|
|
54
59
|
declare const Checkbox: FC<ICheckbox>;
|
|
55
60
|
|
|
56
61
|
interface IChip {
|
|
57
62
|
label: string;
|
|
58
63
|
onClear: () => void;
|
|
64
|
+
className?: string;
|
|
59
65
|
}
|
|
60
66
|
declare const Chip: FC<IChip>;
|
|
61
67
|
|
|
@@ -71,6 +77,7 @@ interface ITooltip {
|
|
|
71
77
|
isVisible: boolean;
|
|
72
78
|
toolTipWidth?: string;
|
|
73
79
|
toolTipClass?: string;
|
|
80
|
+
className?: string;
|
|
74
81
|
}
|
|
75
82
|
declare const Tooltip: FC<ITooltip>;
|
|
76
83
|
|
|
@@ -78,6 +85,7 @@ interface IEllipsis {
|
|
|
78
85
|
label: string;
|
|
79
86
|
tooltipPosition?: TOOLTIP_POSITION;
|
|
80
87
|
tooltipWidth?: string;
|
|
88
|
+
className?: string;
|
|
81
89
|
}
|
|
82
90
|
declare const Ellipsis: FC<IEllipsis>;
|
|
83
91
|
|
|
@@ -87,6 +95,7 @@ interface IFileUploader {
|
|
|
87
95
|
subTitle2?: string;
|
|
88
96
|
handleAttachment: (file: File) => void;
|
|
89
97
|
accept?: string;
|
|
98
|
+
className?: string;
|
|
90
99
|
}
|
|
91
100
|
declare const FileUploader: FC<IFileUploader>;
|
|
92
101
|
|
|
@@ -101,6 +110,7 @@ interface IFilterCategory {
|
|
|
101
110
|
}
|
|
102
111
|
interface IFilter {
|
|
103
112
|
children: (closeDropdown: () => void) => React.ReactNode;
|
|
113
|
+
className?: string;
|
|
104
114
|
}
|
|
105
115
|
declare const FilterDropdown: FC<IFilter>;
|
|
106
116
|
|
|
@@ -112,6 +122,7 @@ interface IInput {
|
|
|
112
122
|
placeholder?: string;
|
|
113
123
|
inputClassName?: string;
|
|
114
124
|
required?: boolean;
|
|
125
|
+
className?: string;
|
|
115
126
|
}
|
|
116
127
|
declare const Input: FC<IInput>;
|
|
117
128
|
|
|
@@ -126,6 +137,7 @@ interface IModal {
|
|
|
126
137
|
children: React.ReactNode;
|
|
127
138
|
onClear: () => void;
|
|
128
139
|
size?: MODAL_SIZE;
|
|
140
|
+
className?: string;
|
|
129
141
|
}
|
|
130
142
|
declare const Modal: FC<IModal>;
|
|
131
143
|
|
|
@@ -148,6 +160,7 @@ interface INavBar {
|
|
|
148
160
|
menuHeightClass?: string;
|
|
149
161
|
isCollapsed?: boolean;
|
|
150
162
|
menuBackgroundColor?: string;
|
|
163
|
+
className?: string;
|
|
151
164
|
}
|
|
152
165
|
declare const NavBar: FC<INavBar>;
|
|
153
166
|
|
|
@@ -163,6 +176,7 @@ interface ISelectDropdown {
|
|
|
163
176
|
value: string;
|
|
164
177
|
onChange: (option: string) => void;
|
|
165
178
|
inputClassName?: string;
|
|
179
|
+
className?: string;
|
|
166
180
|
}
|
|
167
181
|
declare const SelectDropdown: FC<ISelectDropdown>;
|
|
168
182
|
|
|
@@ -174,6 +188,7 @@ interface IPaging {
|
|
|
174
188
|
interface IPagination extends IPaging {
|
|
175
189
|
options: ISelectDropdownOption[];
|
|
176
190
|
onChange: (paging: IPaging) => void;
|
|
191
|
+
className?: string;
|
|
177
192
|
}
|
|
178
193
|
declare const Pagination: FC<IPagination>;
|
|
179
194
|
|
|
@@ -182,6 +197,7 @@ interface IRadioButton {
|
|
|
182
197
|
value: string;
|
|
183
198
|
selectedValue?: string;
|
|
184
199
|
onChange?: (value: string) => void;
|
|
200
|
+
className?: string;
|
|
185
201
|
}
|
|
186
202
|
declare const RadioButton: FC<IRadioButton>;
|
|
187
203
|
|
|
@@ -196,6 +212,7 @@ interface ISnackBar {
|
|
|
196
212
|
type?: SNACK_BAR_TYPE;
|
|
197
213
|
message: string;
|
|
198
214
|
icon?: React.ReactNode;
|
|
215
|
+
className?: string;
|
|
199
216
|
}
|
|
200
217
|
declare const Snackbar: FC<ISnackBar>;
|
|
201
218
|
|
|
@@ -210,6 +227,7 @@ interface IStateBase {
|
|
|
210
227
|
subTitle: string;
|
|
211
228
|
imageWidth?: number;
|
|
212
229
|
imageHeight?: number;
|
|
230
|
+
className?: string;
|
|
213
231
|
}
|
|
214
232
|
type IState = ({
|
|
215
233
|
type: STATE_TYPE;
|
|
@@ -228,6 +246,7 @@ interface ITableColumn {
|
|
|
228
246
|
interface ITable {
|
|
229
247
|
columns: ITableColumn[];
|
|
230
248
|
data: any[];
|
|
249
|
+
className?: string;
|
|
231
250
|
}
|
|
232
251
|
declare const Table: FC<ITable>;
|
|
233
252
|
|
|
@@ -241,6 +260,7 @@ declare enum TAG_TYPE {
|
|
|
241
260
|
interface ITag {
|
|
242
261
|
type: TAG_TYPE;
|
|
243
262
|
label: string;
|
|
263
|
+
className?: string;
|
|
244
264
|
}
|
|
245
265
|
declare const Tag: FC<ITag>;
|
|
246
266
|
|
|
@@ -260,6 +280,7 @@ interface ILog {
|
|
|
260
280
|
}
|
|
261
281
|
interface ITimeLine {
|
|
262
282
|
logs: ILog[];
|
|
283
|
+
className?: string;
|
|
263
284
|
}
|
|
264
285
|
declare const TimeLine: FC<ITimeLine>;
|
|
265
286
|
|