@marinae/nextgen-design-system 0.1.0

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 ADDED
@@ -0,0 +1,73 @@
1
+ # React + TypeScript + Vite
2
+
3
+ This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.
4
+
5
+ Currently, two official plugins are available:
6
+
7
+ - [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react) uses [Oxc](https://oxc.rs)
8
+ - [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react-swc) uses [SWC](https://swc.rs/)
9
+
10
+ ## React Compiler
11
+
12
+ The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see [this documentation](https://react.dev/learn/react-compiler/installation).
13
+
14
+ ## Expanding the ESLint configuration
15
+
16
+ If you are developing a production application, we recommend updating the configuration to enable type-aware lint rules:
17
+
18
+ ```js
19
+ export default defineConfig([
20
+ globalIgnores(['dist']),
21
+ {
22
+ files: ['**/*.{ts,tsx}'],
23
+ extends: [
24
+ // Other configs...
25
+
26
+ // Remove tseslint.configs.recommended and replace with this
27
+ tseslint.configs.recommendedTypeChecked,
28
+ // Alternatively, use this for stricter rules
29
+ tseslint.configs.strictTypeChecked,
30
+ // Optionally, add this for stylistic rules
31
+ tseslint.configs.stylisticTypeChecked,
32
+
33
+ // Other configs...
34
+ ],
35
+ languageOptions: {
36
+ parserOptions: {
37
+ project: ['./tsconfig.node.json', './tsconfig.app.json'],
38
+ tsconfigRootDir: import.meta.dirname,
39
+ },
40
+ // other options...
41
+ },
42
+ },
43
+ ])
44
+ ```
45
+
46
+ You can also install [eslint-plugin-react-x](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-x) and [eslint-plugin-react-dom](https://github.com/Rel1cx/eslint-react/tree/main/packages/plugins/eslint-plugin-react-dom) for React-specific lint rules:
47
+
48
+ ```js
49
+ // eslint.config.js
50
+ import reactX from 'eslint-plugin-react-x'
51
+ import reactDom from 'eslint-plugin-react-dom'
52
+
53
+ export default defineConfig([
54
+ globalIgnores(['dist']),
55
+ {
56
+ files: ['**/*.{ts,tsx}'],
57
+ extends: [
58
+ // Other configs...
59
+ // Enable lint rules for React
60
+ reactX.configs['recommended-typescript'],
61
+ // Enable lint rules for React DOM
62
+ reactDom.configs.recommended,
63
+ ],
64
+ languageOptions: {
65
+ parserOptions: {
66
+ project: ['./tsconfig.node.json', './tsconfig.app.json'],
67
+ tsconfigRootDir: import.meta.dirname,
68
+ },
69
+ // other options...
70
+ },
71
+ },
72
+ ])
73
+ ```
package/package.json ADDED
@@ -0,0 +1,12 @@
1
+ {
2
+ "name": "@marinae/nextgen-design-system",
3
+ "version": "0.1.0",
4
+ "private": false,
5
+ "files": [
6
+ "src/style"
7
+ ],
8
+ "exports": {
9
+ "./style": "./src/style/main.scss",
10
+ "./style/*": "./src/style/*"
11
+ }
12
+ }
@@ -0,0 +1,16 @@
1
+ @mixin typography($size, $weight: regular) {
2
+ font-family: var(--font-family-base);
3
+ font-size: var(--font-size-#{$size});
4
+ line-height: var(--line-height-#{$size});
5
+ font-weight: var(--font-weight-#{$weight});
6
+
7
+ @if $size == display-2xl or $size == display-xl or $size == display-lg or $size == display-md {
8
+ letter-spacing: var(--letter-spacing-#{$size});
9
+ }
10
+ }
11
+
12
+ @mixin container($size: xl) {
13
+ width: 100%;
14
+ max-width: var(--container-#{$size});
15
+ margin-inline: auto;
16
+ }
@@ -0,0 +1,55 @@
1
+ :root {
2
+ // Spacing system
3
+ // Base: 16px
4
+
5
+ --space-1: 0.25rem; // 4px
6
+ --space-2: 0.5rem; // 8px
7
+ --space-3: 0.75rem; // 12px
8
+ --space-4: 1rem; // 16px
9
+ --space-5: 1.25rem; // 20px
10
+ --space-6: 1.5rem; // 24px
11
+ --space-8: 2rem; // 32px
12
+ --space-10: 2.5rem; // 40px
13
+ --space-12: 3rem; // 48px
14
+ --space-16: 4rem; // 64px
15
+ --space-20: 5rem; // 80px
16
+ --space-24: 6rem; // 96px
17
+ --space-32: 8rem; // 128px
18
+ --space-40: 10rem; // 160px
19
+ --space-48: 12rem; // 192px
20
+ --space-56: 14rem; // 224px
21
+ --space-64: 16rem; // 256px
22
+
23
+ // Container widths
24
+ // Based on 16px root font size
25
+
26
+ --container-sm: 40rem; // 640px
27
+ --container-md: 48rem; // 768px
28
+ --container-lg: 64rem; // 1024px
29
+ --container-xl: 80rem; // 1280px
30
+
31
+ // Radius
32
+ --radius-sm: 0.25rem;
33
+ --radius-md: 0.5rem;
34
+ --radius-lg: 0.75rem;
35
+ --radius-pill: 999px;
36
+
37
+ // Shadows
38
+ --shadow-xs: 0px 1px 2px 0px rgba(10, 13, 18, 0.05);
39
+ --shadow-sm: 0px 1px 3px 0px rgba(10, 13, 18, 0.10);
40
+ --shadow-md: 0px 4px 8px -2px rgba(10, 13, 18, 0.10);
41
+ --shadow-lg: 0px 12px 16px -4px rgba(10, 13, 18, 0.08);
42
+ --shadow-xl: 0px 20px 24px -4px rgba(10, 13, 18, 0.08);
43
+ --shadow-2xl: 0px 24px 48px -12px rgba(10, 13, 18, 0.18);
44
+ --shadow-3xl: 0px 32px 64px -12px rgba(10, 13, 18, 0.14);
45
+
46
+ // Blurs
47
+ --blur-sm: blur(8px);
48
+ --blur-md: blur(16px);
49
+ --blur-lg: blur(24px);
50
+ --blur-xl: blur(40px);
51
+
52
+ // Transitions
53
+ --transition-fast: 150ms ease;
54
+ --transition-base: 220ms ease;
55
+ }
@@ -0,0 +1,209 @@
1
+ :root {
2
+
3
+ // PRIMARY COLORS
4
+
5
+ // Indico Gray
6
+ --indico-gray-50: #f5f5f6;
7
+ --indico-gray-100: #e5e6e8;
8
+ --indico-gray-200: #ced0d3;
9
+ --indico-gray-300: #abafb5;
10
+ --indico-gray-400: #81868f;
11
+ --indico-gray-500: #717680;
12
+ --indico-gray-600: #575a63;
13
+ --indico-gray-700: #4b4d53;
14
+ --indico-gray-800: #424448;
15
+ --indico-gray-900: #3a3b3f;
16
+ --indico-gray-950: #242528;
17
+
18
+ // Indico Primary Blue
19
+ --indico-primary-blue-50: #e7f8ff;
20
+ --indico-primary-blue-100: #def3ff;
21
+ --indico-primary-blue-200: #b6e9ff;
22
+ --indico-primary-blue-300: #75daff;
23
+ --indico-primary-blue-400: #2ccbff;
24
+ --indico-primary-blue-500: #00a4e4;
25
+ --indico-primary-blue-600: #008ed4;
26
+ --indico-primary-blue-700: #0071ab;
27
+ --indico-primary-blue-800: #005f8d;
28
+ --indico-primary-blue-900: #064f74;
29
+ --indico-primary-blue-950: #04324d;
30
+
31
+ // Indico Error
32
+ --indico-error-50: #ffefef;
33
+ --indico-error-100: #ffcdcc;
34
+ --indico-error-200: #ffbfbf;
35
+ --indico-error-300: #ff9292;
36
+ --indico-error-400: #ff5454;
37
+ --indico-error-500: #ff1f1f;
38
+ --indico-error-600: #ff0000;
39
+ --indico-error-700: #db0000;
40
+ --indico-error-800: #af0000;
41
+ --indico-error-900: #940808;
42
+ --indico-error-950: #520000;
43
+
44
+ // Indico Warning
45
+ --indico-warning-50: #fefaec;
46
+ --indico-warning-100: #fbf2ca;
47
+ --indico-warning-200: #f7e390;
48
+ --indico-warning-300: #f3d056;
49
+ --indico-warning-400: #f0bc2f;
50
+ --indico-warning-500: #e99e18;
51
+ --indico-warning-600: #ce7811;
52
+ --indico-warning-700: #ab5612;
53
+ --indico-warning-800: #8b4415;
54
+ --indico-warning-900: #733714;
55
+ --indico-warning-950: #421c06;
56
+
57
+ // Indico Success
58
+ --indico-success-50: #f1faeb;
59
+ --indico-success-100: #dff4d3;
60
+ --indico-success-200: #c2eaac;
61
+ --indico-success-300: #99dc7a;
62
+ --indico-success-400: #6cc644;
63
+ --indico-success-500: #57af33;
64
+ --indico-success-600: #418b25;
65
+ --indico-success-700: #336b20;
66
+ --indico-success-800: #2c551f;
67
+ --indico-success-900: #28491e;
68
+ --indico-success-950: #11280b;
69
+
70
+ //SECONDARY COLORS
71
+
72
+ // Indico Accent
73
+ --indico-accent-50: #fff6ed;
74
+ --indico-accent-100: #ffebd5;
75
+ --indico-accent-200: #ffd2a9;
76
+ --indico-accent-300: #feb273;
77
+ --indico-accent-400: #fd863a;
78
+ --indico-accent-500: #fb6514;
79
+ --indico-accent-600: #ec4a0a;
80
+ --indico-accent-700: #c4350a;
81
+ --indico-accent-800: #9b2b11;
82
+ --indico-accent-900: #7d2f11;
83
+ --indico-accent-950: #441006;
84
+
85
+ // Indico Blue Light
86
+ --indico-blue-light-50: #f0f9ff;
87
+ --indico-blue-light-100: #e0f2fe;
88
+ --indico-blue-light-200: #b9e6fe;
89
+ --indico-blue-light-300: #7bd3fe;
90
+ --indico-blue-light-400: #35bdfb;
91
+ --indico-blue-light-500: #0ba5ec;
92
+ --indico-blue-light-600: #0084ca;
93
+ --indico-blue-light-700: #0169a3;
94
+ --indico-blue-light-800: #055987;
95
+ --indico-blue-light-900: #0b496f;
96
+ --indico-blue-light-950: #072f4a;
97
+
98
+ // Indico Indigo
99
+ --indico-indigo-50: #faf4ff;
100
+ --indico-indigo-100: #f3e6ff;
101
+ --indico-indigo-200: #ead2ff;
102
+ --indico-indigo-300: #d9aeff;
103
+ --indico-indigo-400: #c27bff;
104
+ --indico-indigo-500: #ab49ff;
105
+ --indico-indigo-600: #9825f8;
106
+ --indico-indigo-700: #8315db;
107
+ --indico-indigo-800: #6f17b2;
108
+ --indico-indigo-900: #5b148f;
109
+ --indico-indigo-950: #4b0082;
110
+
111
+ // Indico Rosé
112
+ --indico-rose-50: #fff1f3;
113
+ --indico-rose-100: #ffe4e8;
114
+ --indico-rose-200: #fecdd6;
115
+ --indico-rose-300: #fea3b4;
116
+ --indico-rose-400: #fd6f8e;
117
+ --indico-rose-500: #f63d68;
118
+ --indico-rose-600: #e31b54;
119
+ --indico-rose-700: #c01048;
120
+ --indico-rose-800: #a11043;
121
+ --indico-rose-900: #89123e;
122
+ --indico-rose-950: #4d041d;
123
+
124
+ // GRADIENTS
125
+
126
+ // Gray gradients
127
+ --indico-gradient-gray-600: #575a63;
128
+
129
+ --indico-gradient-gray-600-500-90: linear-gradient(
130
+ 90deg,
131
+ #575a63 0%,
132
+ #717680 100%
133
+ );
134
+
135
+ --indico-gradient-gray-700-600-45: linear-gradient(
136
+ 45deg,
137
+ #414651 0%,
138
+ #535862 100%
139
+ );
140
+
141
+ --indico-gradient-gray-800-600-45: linear-gradient(
142
+ 45deg,
143
+ #252b37 0%,
144
+ #535862 100%
145
+ );
146
+
147
+ --indico-gradient-gray-800-600-90: linear-gradient(
148
+ 90deg,
149
+ #252b37 0%,
150
+ #535862 100%
151
+ );
152
+
153
+ --indico-gradient-gray-800-700-26: linear-gradient(
154
+ 26.5deg,
155
+ #252b37 0%,
156
+ #414651 100%
157
+ );
158
+
159
+ --indico-gradient-gray-900-600-45: linear-gradient(
160
+ 45deg,
161
+ #101828 0%,
162
+ #535862 100%
163
+ );
164
+
165
+ // Brand gradients
166
+ --indico-gradient-brand-600: #7f56d9;
167
+
168
+ --indico-gradient-brand-600-500-90: linear-gradient(
169
+ 90deg,
170
+ #7f56d9 0%,
171
+ #9e77ed 100%
172
+ );
173
+
174
+ --indico-gradient-brand-700-600-45: linear-gradient(
175
+ 45deg,
176
+ #6941c6 0%,
177
+ #7f56d9 100%
178
+ );
179
+
180
+ --indico-gradient-brand-800-600-45: linear-gradient(
181
+ 45deg,
182
+ #53389e 0%,
183
+ #7f56d9 100%
184
+ );
185
+
186
+ --indico-gradient-brand-800-600-90: linear-gradient(
187
+ 90deg,
188
+ #53389e 0%,
189
+ #7f56d9 100%
190
+ );
191
+
192
+ --indico-gradient-brand-800-700-26: linear-gradient(
193
+ 26.5deg,
194
+ #53389e 0%,
195
+ #6941c6 100%
196
+ );
197
+
198
+ --indico-gradient-brand-900-600-45: linear-gradient(
199
+ 45deg,
200
+ #42307d 0%,
201
+ #7f56d9 100%
202
+ );
203
+
204
+ --indico-gradient-indigo-500-blue-500-45: linear-gradient(
205
+ 45deg,
206
+ #ab49ff 0%,
207
+ #0ba5ec 100%
208
+ );
209
+ }
@@ -0,0 +1,10 @@
1
+ body {
2
+ min-height: 100vh;
3
+ font-family: var(--font-family-base);
4
+ color: var(--color-text);
5
+ background: var(--color-surface-soft);
6
+ }
7
+
8
+ a {
9
+ color: inherit;
10
+ }
@@ -0,0 +1,31 @@
1
+ *,
2
+ *::before,
3
+ *::after {
4
+ box-sizing: border-box;
5
+ }
6
+
7
+ body,
8
+ h1,
9
+ h2,
10
+ h3,
11
+ p {
12
+ margin: 0;
13
+ }
14
+
15
+ button,
16
+ input,
17
+ textarea,
18
+ select {
19
+ font: inherit;
20
+ }
21
+
22
+ button {
23
+ cursor: pointer;
24
+ }
25
+
26
+ img,
27
+ picture,
28
+ svg {
29
+ display: block;
30
+ max-width: 100%;
31
+ }
@@ -0,0 +1,58 @@
1
+ :root {
2
+ // Font family
3
+ --font-family-base: 'Noto Sans', sans-serif;
4
+
5
+ // Font weights
6
+ --font-weight-regular: 400;
7
+ --font-weight-medium: 500;
8
+ --font-weight-semibold: 600;
9
+ --font-weight-bold: 700;
10
+
11
+ // Display 2xl
12
+ --font-size-display-2xl: 4.5rem; // 72px
13
+ --line-height-display-2xl: 5.625rem; // 90px
14
+ --letter-spacing-display-2xl: -0.02em;
15
+
16
+ // Display xl
17
+ --font-size-display-xl: 3.75rem; // 60px
18
+ --line-height-display-xl: 4.5rem; // 72px
19
+ --letter-spacing-display-xl: -0.02em;
20
+
21
+ // Display lg
22
+ --font-size-display-lg: 3rem; // 48px
23
+ --line-height-display-lg: 3.75rem; // 60px
24
+ --letter-spacing-display-lg: -0.02em;
25
+
26
+ // Display md
27
+ --font-size-display-md: 2.25rem; // 36px
28
+ --line-height-display-md: 2.75rem; // 44px
29
+ --letter-spacing-display-md: -0.02em;
30
+
31
+ // Display sm
32
+ --font-size-display-sm: 1.875rem; // 30px
33
+ --line-height-display-sm: 2.375rem; // 38px
34
+
35
+ // Display xs
36
+ --font-size-display-xs: 1.5rem; // 24px
37
+ --line-height-display-xs: 2rem; // 32px
38
+
39
+ // Text xl
40
+ --font-size-text-xl: 1.25rem; // 20px
41
+ --line-height-text-xl: 1.875rem; // 30px
42
+
43
+ // Text lg
44
+ --font-size-text-lg: 1.125rem; // 18px
45
+ --line-height-text-lg: 1.75rem; // 28px
46
+
47
+ // Text md
48
+ --font-size-text-md: 1rem; // 16px
49
+ --line-height-text-md: 1.5rem; // 24px
50
+
51
+ // Text sm
52
+ --font-size-text-sm: 0.875rem; // 14px
53
+ --line-height-text-sm: 1.25rem; // 20px
54
+
55
+ // Text xs
56
+ --font-size-text-xs: 0.75rem; // 12px
57
+ --line-height-text-xs: 1.125rem; // 18px
58
+ }
@@ -0,0 +1,6 @@
1
+ @use './abstracts/mixins';
2
+
3
+ @use './base/colors';
4
+ @use './base/typography';
5
+ @use './base/reset';
6
+ @use './base/global';