gwan-design-system 0.1.6 โ†’ 0.1.8

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 CHANGED
@@ -1,13 +1,9 @@
1
- # ๐ŸŒˆ Gwan Design System โ€“ The Ultimate UI Library for Next.js โšก
1
+ # โšก Gwan Design System โ€“ A Component Library for Next.js โšก
2
2
 
3
3
  ![npm](https://img.shields.io/npm/v/gwan-design-system.svg)
4
- ![License](https://img.shields.io/github/license/gwanfonseka/gwan-design-system)
5
- ![CI](https://img.shields.io/github/actions/workflow/status/gwanfonseka/gwan-design-system/publish.yml?branch=main)
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: ```npm install gwan-design-system```
21
+ Install via npm: `npm install gwan-design-system`
26
22
 
27
- or with Yarn: ```yarn add gwan-design-system```
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, Card, Modal } from "gwan-design-system";
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
- <Card>
43
- <h2 className="text-xl">Reusable UI</h2>
44
- <p>Start using ready-made components!</p>
45
- <Button onClick={() => alert("๐ŸŽ‰ Clicked!")}>Click Me</Button>
46
- </Card>
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 Uploaders
96
+ - ๐Ÿ“ฅ File Uploader
59
97
  - ๐Ÿ“ฆ Cards
60
98
  - ๐ŸŽ› Dropdowns
61
99
  - ๐Ÿ“Š Pagination
62
100
  - ๐Ÿ“Ž Tags
63
101
  - ๐Ÿง  States (Empty, Error, Loading, etc.)
64
- - ๐Ÿ”” Snackbars
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
 
@@ -275,6 +296,8 @@ declare const Covers: () => ReactNode;
275
296
 
276
297
  declare const Colors: () => ReactNode;
277
298
 
299
+ declare const SignIn: () => ReactNode;
300
+
278
301
  declare const SignOut: () => ReactNode;
279
302
 
280
303
  declare const Filter: () => ReactNode;
@@ -289,6 +312,8 @@ declare const ChevLeft: () => ReactNode;
289
312
 
290
313
  declare const ChevRight: () => ReactNode;
291
314
 
315
+ declare const ChevUp: () => ReactNode;
316
+
292
317
  declare const Check: () => ReactNode;
293
318
 
294
319
  declare const Circle: () => ReactNode;
@@ -297,8 +322,10 @@ declare const Upload: () => ReactNode;
297
322
 
298
323
  declare const ArrowLeft: () => ReactNode;
299
324
 
325
+ declare const ArrowRight: () => ReactNode;
326
+
300
327
  declare namespace index {
301
- export { ArrowLeft as ArrowLeftSVG, Check as CheckSVG, ChevDown as ChevDownSVG, ChevLeft as ChevLeftSVG, ChevRight as ChevRightSVG, Circle as CircleSVG, Colors as ColorsSVG, Covers as CoversSVG, Cross as CrossSVG, Dashboard as DashboardSVG, Filter as FilterSVG, OrderInfo as OrderInfoSVG, Orders as OrdersSVG, Products as ProductsSVG, SignOut as SignOutSVG, Templates as TemplatesSVG, Upload as UploadSVG };
328
+ export { ArrowLeft as ArrowLeftSVG, ArrowRight as ArrowRightSVG, Check as CheckSVG, ChevDown as ChevDownSVG, ChevLeft as ChevLeftSVG, ChevRight as ChevRightSVG, ChevUp as ChevUpSVG, Circle as CircleSVG, Colors as ColorsSVG, Covers as CoversSVG, Cross as CrossSVG, Dashboard as DashboardSVG, Filter as FilterSVG, OrderInfo as OrderInfoSVG, Orders as OrdersSVG, Products as ProductsSVG, SignIn as SignInSVG, SignOut as SignOutSVG, Templates as TemplatesSVG, Upload as UploadSVG };
302
329
  }
303
330
 
304
331
  export { AVATAR_VARIANT, Avatar, BUTTON_VARIANTS, Banner, Button, Carousel, Checkbox, Chip, Ellipsis, FileUploader, FilterDropdown, type IAvatar, type IBanner, type IButton, type ICarousel, type ICheckbox, type IChip, type IEllipsis, type IFileUploader, type IFilter, type IFilterCategory, type IFilterOption, type IInput, type ILog, type IMenuItem, type IModal, type INavBar, type IPagination, type IPaging, type IRadioButton, type ISelectDropdown, type ISelectDropdownOption, type ISnackBar, type IState, type IStateBase, type ITable, type ITableColumn, type ITag, type ITimeLine, type ITooltip, index as Icons, Input, MODAL_SIZE, Modal, NavBar, Pagination, RadioButton, SNACK_BAR_TYPE, STATE_TYPE, SelectDropdown, Snackbar, State as States, TAG_TYPE, TOOLTIP_POSITION, Table, Tag, TimeLine, Tooltip };
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
 
@@ -275,6 +296,8 @@ declare const Covers: () => ReactNode;
275
296
 
276
297
  declare const Colors: () => ReactNode;
277
298
 
299
+ declare const SignIn: () => ReactNode;
300
+
278
301
  declare const SignOut: () => ReactNode;
279
302
 
280
303
  declare const Filter: () => ReactNode;
@@ -289,6 +312,8 @@ declare const ChevLeft: () => ReactNode;
289
312
 
290
313
  declare const ChevRight: () => ReactNode;
291
314
 
315
+ declare const ChevUp: () => ReactNode;
316
+
292
317
  declare const Check: () => ReactNode;
293
318
 
294
319
  declare const Circle: () => ReactNode;
@@ -297,8 +322,10 @@ declare const Upload: () => ReactNode;
297
322
 
298
323
  declare const ArrowLeft: () => ReactNode;
299
324
 
325
+ declare const ArrowRight: () => ReactNode;
326
+
300
327
  declare namespace index {
301
- export { ArrowLeft as ArrowLeftSVG, Check as CheckSVG, ChevDown as ChevDownSVG, ChevLeft as ChevLeftSVG, ChevRight as ChevRightSVG, Circle as CircleSVG, Colors as ColorsSVG, Covers as CoversSVG, Cross as CrossSVG, Dashboard as DashboardSVG, Filter as FilterSVG, OrderInfo as OrderInfoSVG, Orders as OrdersSVG, Products as ProductsSVG, SignOut as SignOutSVG, Templates as TemplatesSVG, Upload as UploadSVG };
328
+ export { ArrowLeft as ArrowLeftSVG, ArrowRight as ArrowRightSVG, Check as CheckSVG, ChevDown as ChevDownSVG, ChevLeft as ChevLeftSVG, ChevRight as ChevRightSVG, ChevUp as ChevUpSVG, Circle as CircleSVG, Colors as ColorsSVG, Covers as CoversSVG, Cross as CrossSVG, Dashboard as DashboardSVG, Filter as FilterSVG, OrderInfo as OrderInfoSVG, Orders as OrdersSVG, Products as ProductsSVG, SignIn as SignInSVG, SignOut as SignOutSVG, Templates as TemplatesSVG, Upload as UploadSVG };
302
329
  }
303
330
 
304
331
  export { AVATAR_VARIANT, Avatar, BUTTON_VARIANTS, Banner, Button, Carousel, Checkbox, Chip, Ellipsis, FileUploader, FilterDropdown, type IAvatar, type IBanner, type IButton, type ICarousel, type ICheckbox, type IChip, type IEllipsis, type IFileUploader, type IFilter, type IFilterCategory, type IFilterOption, type IInput, type ILog, type IMenuItem, type IModal, type INavBar, type IPagination, type IPaging, type IRadioButton, type ISelectDropdown, type ISelectDropdownOption, type ISnackBar, type IState, type IStateBase, type ITable, type ITableColumn, type ITag, type ITimeLine, type ITooltip, index as Icons, Input, MODAL_SIZE, Modal, NavBar, Pagination, RadioButton, SNACK_BAR_TYPE, STATE_TYPE, SelectDropdown, Snackbar, State as States, TAG_TYPE, TOOLTIP_POSITION, Table, Tag, TimeLine, Tooltip };