@prasworld/flux-ui 0.0.1

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/index.js ADDED
@@ -0,0 +1,205 @@
1
+ // libs/flux-ui/src/tokens/index.ts
2
+ var tokens = {
3
+ /**
4
+ * COLOR TOKENS
5
+ * Primary brand colors, semantic colors for states, and functional colors
6
+ */
7
+ colors: {
8
+ primary: "var(--vi-color-primary)",
9
+ secondary: "var(--vi-color-secondary)",
10
+ success: "var(--vi-color-success)",
11
+ warning: "var(--vi-color-warning)",
12
+ error: "var(--vi-color-error)",
13
+ info: "var(--vi-color-info)",
14
+ // Neutral palette (grey aliases)
15
+ neutral: {
16
+ 100: "var(--vi-color-grey-100)",
17
+ 200: "var(--vi-color-grey-200)",
18
+ 300: "var(--vi-color-grey-300)",
19
+ 400: "var(--vi-color-grey-400)",
20
+ 500: "var(--vi-color-grey-500)",
21
+ 600: "var(--vi-color-grey-600)",
22
+ 700: "var(--vi-color-grey-700)",
23
+ 800: "var(--vi-color-grey-800)",
24
+ 900: "var(--vi-color-grey-900)"
25
+ },
26
+ // Color palettes
27
+ palettes: {
28
+ grey: {
29
+ 100: "var(--vi-color-grey-100)",
30
+ 200: "var(--vi-color-grey-200)",
31
+ 300: "var(--vi-color-grey-300)",
32
+ 400: "var(--vi-color-grey-400)",
33
+ 500: "var(--vi-color-grey-500)",
34
+ 600: "var(--vi-color-grey-600)",
35
+ 700: "var(--vi-color-grey-700)",
36
+ 800: "var(--vi-color-grey-800)",
37
+ 900: "var(--vi-color-grey-900)"
38
+ },
39
+ red: {
40
+ 100: "var(--vi-color-red-100)",
41
+ 200: "var(--vi-color-red-200)",
42
+ 300: "var(--vi-color-red-300)",
43
+ 400: "var(--vi-color-red-400)",
44
+ 500: "var(--vi-color-red-500)",
45
+ 600: "var(--vi-color-red-600)",
46
+ 700: "var(--vi-color-red-700)",
47
+ 800: "var(--vi-color-red-800)",
48
+ 900: "var(--vi-color-red-900)"
49
+ },
50
+ yellow: {
51
+ 100: "var(--vi-color-yellow-100)",
52
+ 200: "var(--vi-color-yellow-200)",
53
+ 300: "var(--vi-color-yellow-300)",
54
+ 400: "var(--vi-color-yellow-400)",
55
+ 500: "var(--vi-color-yellow-500)",
56
+ 600: "var(--vi-color-yellow-600)",
57
+ 700: "var(--vi-color-yellow-700)",
58
+ 800: "var(--vi-color-yellow-800)",
59
+ 900: "var(--vi-color-yellow-900)"
60
+ },
61
+ green: {
62
+ 100: "var(--vi-color-green-100)",
63
+ 200: "var(--vi-color-green-200)",
64
+ 300: "var(--vi-color-green-300)",
65
+ 400: "var(--vi-color-green-400)",
66
+ 500: "var(--vi-color-green-500)",
67
+ 600: "var(--vi-color-green-600)",
68
+ 700: "var(--vi-color-green-700)",
69
+ 800: "var(--vi-color-green-800)",
70
+ 900: "var(--vi-color-green-900)"
71
+ },
72
+ blue: {
73
+ 100: "var(--vi-color-blue-100)",
74
+ 200: "var(--vi-color-blue-200)",
75
+ 300: "var(--vi-color-blue-300)",
76
+ 400: "var(--vi-color-blue-400)",
77
+ 500: "var(--vi-color-blue-500)",
78
+ 600: "var(--vi-color-blue-600)",
79
+ 700: "var(--vi-color-blue-700)",
80
+ 800: "var(--vi-color-blue-800)",
81
+ 900: "var(--vi-color-blue-900)"
82
+ },
83
+ purple: {
84
+ 100: "var(--vi-color-purple-100)",
85
+ 200: "var(--vi-color-purple-200)",
86
+ 300: "var(--vi-color-purple-300)",
87
+ 400: "var(--vi-color-purple-400)",
88
+ 500: "var(--vi-color-purple-500)",
89
+ 600: "var(--vi-color-purple-600)",
90
+ 700: "var(--vi-color-purple-700)",
91
+ 800: "var(--vi-color-purple-800)",
92
+ 900: "var(--vi-color-purple-900)"
93
+ }
94
+ },
95
+ // Functional colors
96
+ background: "var(--vi-color-background)",
97
+ foreground: "var(--vi-color-foreground)",
98
+ border: "var(--vi-color-border)"
99
+ },
100
+ /**
101
+ * SPACING TOKENS
102
+ * 8px base unit system: xs (8px), sm (16px), md (24px), lg (32px), xl (40px), etc.
103
+ */
104
+ spacing: {
105
+ xs: "var(--vi-spacing-xs)",
106
+ sm: "var(--vi-spacing-sm)",
107
+ md: "var(--vi-spacing-md)",
108
+ lg: "var(--vi-spacing-lg)",
109
+ xl: "var(--vi-spacing-xl)",
110
+ "2xl": "var(--vi-spacing-2xl)",
111
+ "3xl": "var(--vi-spacing-3xl)"
112
+ },
113
+ /**
114
+ * TYPOGRAPHY TOKENS
115
+ * Font families, sizes, weights, and line heights
116
+ */
117
+ typography: {
118
+ fontFamily: {
119
+ base: "var(--vi-font-family-base)",
120
+ mono: "var(--vi-font-family-mono)"
121
+ },
122
+ fontSize: {
123
+ xs: "var(--vi-font-size-xs)",
124
+ sm: "var(--vi-font-size-sm)",
125
+ base: "var(--vi-font-size-base)",
126
+ lg: "var(--vi-font-size-lg)",
127
+ xl: "var(--vi-font-size-xl)",
128
+ "2xl": "var(--vi-font-size-2xl)",
129
+ "3xl": "var(--vi-font-size-3xl)"
130
+ },
131
+ fontWeight: {
132
+ light: 300,
133
+ normal: 400,
134
+ medium: 500,
135
+ semibold: 600,
136
+ bold: 700
137
+ },
138
+ lineHeight: {
139
+ tight: 1.2,
140
+ normal: 1.5,
141
+ relaxed: 1.75
142
+ }
143
+ },
144
+ /**
145
+ * SHADOW TOKENS
146
+ * Depth levels for elevation
147
+ */
148
+ shadows: {
149
+ sm: "var(--vi-shadow-sm)",
150
+ md: "var(--vi-shadow-md)",
151
+ lg: "var(--vi-shadow-lg)",
152
+ xl: "var(--vi-shadow-xl)"
153
+ },
154
+ /**
155
+ * BORDER TOKENS
156
+ * Border radius and widths
157
+ */
158
+ borders: {
159
+ radius: {
160
+ sm: "var(--vi-border-radius-sm)",
161
+ md: "var(--vi-border-radius-md)",
162
+ lg: "var(--vi-border-radius-lg)",
163
+ xl: "var(--vi-border-radius-xl)"
164
+ },
165
+ width: {
166
+ thin: "var(--vi-border-width-thin)",
167
+ base: "var(--vi-border-width-base)",
168
+ thick: "var(--vi-border-width-thick)"
169
+ }
170
+ },
171
+ /**
172
+ * BREAKPOINT TOKENS
173
+ * Responsive design breakpoints (raw pixel values, not CSS vars)
174
+ * Use in a JS template literal: `@media (min-width: ${tokens.breakpoints.sm})`
175
+ * Use in plain CSS: @media (min-width: 640px)
176
+ */
177
+ breakpoints: {
178
+ xs: "0",
179
+ sm: "640px",
180
+ md: "768px",
181
+ lg: "1024px",
182
+ xl: "1280px",
183
+ "2xl": "1536px"
184
+ },
185
+ /**
186
+ * Z-INDEX TOKENS
187
+ * Stacking context levels (raw integers, not CSS vars)
188
+ * Use in CSS: z-index: tokens.zIndex.modal (e.g. 1050)
189
+ */
190
+ zIndex: {
191
+ hide: -1,
192
+ auto: "auto",
193
+ base: 0,
194
+ dropdown: 1e3,
195
+ sticky: 1020,
196
+ fixed: 1030,
197
+ backdrop: 1040,
198
+ modal: 1050,
199
+ popover: 1060,
200
+ tooltip: 1070
201
+ }
202
+ };
203
+ export {
204
+ tokens
205
+ };
package/package.json ADDED
@@ -0,0 +1,37 @@
1
+ {
2
+ "name": "@prasworld/flux-ui",
3
+ "version": "0.0.1",
4
+ "type": "module",
5
+ "description": "Custom minimal CSS/SASS framework for microfrontend product",
6
+ "license": "MIT",
7
+ "module": "./index.js",
8
+ "types": "./index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "import": "./index.js",
12
+ "types": "./index.d.ts"
13
+ },
14
+ "./tokens": {
15
+ "import": "./tokens/index.js",
16
+ "types": "./tokens/index.d.ts"
17
+ },
18
+ "./styles": "./styles/_index.scss",
19
+ "./styles/*": "./styles/_*.scss",
20
+ "./components": "./components/_index.scss",
21
+ "./components/*": "./components/_*.scss",
22
+ "./flux-ui.css": "./flux-ui.css"
23
+ },
24
+ "files": [
25
+ "index.js",
26
+ "index.d.ts",
27
+ "index.js.map",
28
+ "index.d.ts.map",
29
+ "*.scss",
30
+ "styles/",
31
+ "components/",
32
+ "tokens/",
33
+ "flux-ui.css",
34
+ "flux-ui.css.map",
35
+ "README.md"
36
+ ]
37
+ }
@@ -0,0 +1,7 @@
1
+ // Forwards all global style modules in cascade order.
2
+ // Usage: @use '@vi/flux-ui/styles';
3
+ @forward 'root';
4
+ @forward 'reset';
5
+ @forward 'theme';
6
+ @forward 'layout';
7
+ @forward 'utilities';
@@ -0,0 +1,223 @@
1
+ /**
2
+ * Layout Utilities
3
+ * ================
4
+ * Flexbox and Grid utility styles for common layout patterns
5
+ */
6
+
7
+ @use './variables' as *;
8
+
9
+ @layer utilities {
10
+ // ============================================================================
11
+ // FLEXBOX
12
+ // ============================================================================
13
+
14
+ .flex {
15
+ display: flex;
16
+ }
17
+
18
+ .flex-col {
19
+ flex-direction: column;
20
+ }
21
+
22
+ .flex-row {
23
+ flex-direction: row;
24
+ }
25
+
26
+ .flex-wrap {
27
+ flex-wrap: wrap;
28
+ }
29
+
30
+ .flex-nowrap {
31
+ flex-wrap: nowrap;
32
+ }
33
+
34
+ .justify-start {
35
+ justify-content: flex-start;
36
+ }
37
+
38
+ .justify-center {
39
+ justify-content: center;
40
+ }
41
+
42
+ .justify-end {
43
+ justify-content: flex-end;
44
+ }
45
+
46
+ .justify-between {
47
+ justify-content: space-between;
48
+ }
49
+
50
+ .justify-around {
51
+ justify-content: space-around;
52
+ }
53
+
54
+ .items-start {
55
+ align-items: flex-start;
56
+ }
57
+
58
+ .items-center {
59
+ align-items: center;
60
+ }
61
+
62
+ .items-end {
63
+ align-items: flex-end;
64
+ }
65
+
66
+ .items-stretch {
67
+ align-items: stretch;
68
+ }
69
+
70
+ .gap-xs {
71
+ gap: $spacing-xs;
72
+ }
73
+
74
+ .gap-sm {
75
+ gap: $spacing-sm;
76
+ }
77
+
78
+ .gap-md {
79
+ gap: $spacing-md;
80
+ }
81
+
82
+ .gap-lg {
83
+ gap: $spacing-lg;
84
+ }
85
+
86
+ .gap-xl {
87
+ gap: $spacing-xl;
88
+ }
89
+
90
+ .flex-1 {
91
+ flex: 1;
92
+ }
93
+
94
+ .flex-grow {
95
+ flex-grow: 1;
96
+ }
97
+
98
+ .flex-shrink-0 {
99
+ flex-shrink: 0;
100
+ }
101
+
102
+ // ============================================================================
103
+ // GRID
104
+ // ============================================================================
105
+
106
+ .grid {
107
+ display: grid;
108
+ }
109
+
110
+ .grid-cols-1 {
111
+ grid-template-columns: repeat(1, minmax(0, 1fr));
112
+ }
113
+
114
+ .grid-cols-2 {
115
+ grid-template-columns: repeat(2, minmax(0, 1fr));
116
+ }
117
+
118
+ .grid-cols-3 {
119
+ grid-template-columns: repeat(3, minmax(0, 1fr));
120
+ }
121
+
122
+ .grid-cols-4 {
123
+ grid-template-columns: repeat(4, minmax(0, 1fr));
124
+ }
125
+
126
+ .grid-cols-auto-fit {
127
+ grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
128
+ }
129
+
130
+ // ============================================================================
131
+ // DISPLAY
132
+ // ============================================================================
133
+
134
+ .hidden {
135
+ display: none;
136
+ }
137
+
138
+ .block {
139
+ display: block;
140
+ }
141
+
142
+ .inline-block {
143
+ display: inline-block;
144
+ }
145
+
146
+ .inline {
147
+ display: inline;
148
+ }
149
+
150
+ // ============================================================================
151
+ // POSITIONING
152
+ // ============================================================================
153
+
154
+ .relative {
155
+ position: relative;
156
+ }
157
+
158
+ .absolute {
159
+ position: absolute;
160
+ }
161
+
162
+ .fixed {
163
+ position: fixed;
164
+ }
165
+
166
+ .static {
167
+ position: static;
168
+ }
169
+
170
+ .sticky {
171
+ position: sticky;
172
+ }
173
+
174
+ // ============================================================================
175
+ // SIZING
176
+ // ============================================================================
177
+
178
+ .w-full {
179
+ width: 100%;
180
+ }
181
+
182
+ .w-auto {
183
+ width: auto;
184
+ }
185
+
186
+ .h-full {
187
+ height: 100%;
188
+ }
189
+
190
+ .h-auto {
191
+ height: auto;
192
+ }
193
+
194
+ .min-h-screen {
195
+ min-height: 100vh;
196
+ }
197
+
198
+ .max-w-container {
199
+ max-width: 1200px;
200
+ margin-left: auto;
201
+ margin-right: auto;
202
+ }
203
+
204
+ // ============================================================================
205
+ // OVERFLOW
206
+ // ============================================================================
207
+
208
+ .overflow-hidden {
209
+ overflow: hidden;
210
+ }
211
+
212
+ .overflow-auto {
213
+ overflow: auto;
214
+ }
215
+
216
+ .overflow-x-auto {
217
+ overflow-x: auto;
218
+ }
219
+
220
+ .overflow-y-auto {
221
+ overflow-y: auto;
222
+ }
223
+ }
@@ -0,0 +1,192 @@
1
+ /**
2
+ * Reset Styles
3
+ * ============
4
+ * Minimal, MFE-safe reset that doesn't conflict with other frameworks.
5
+ * Uses CSS Layers for cascade management.
6
+ */
7
+
8
+ @use './variables' as *;
9
+
10
+ @layer reset {
11
+ // ============================================================================
12
+ // BOX MODEL
13
+ // ============================================================================
14
+
15
+ *,
16
+ *::before,
17
+ *::after {
18
+ box-sizing: border-box;
19
+ }
20
+
21
+ // ============================================================================
22
+ // DOCUMENT ROOT
23
+ // ============================================================================
24
+
25
+ html {
26
+ // Improve line spacing, prevent font size inflation
27
+ -webkit-text-size-adjust: 100%;
28
+ -ms-text-size-adjust: 100%;
29
+ }
30
+
31
+ // ============================================================================
32
+ // BODY
33
+ // ============================================================================
34
+
35
+ body {
36
+ margin: 0;
37
+ padding: 0;
38
+ font-family: $font-family-base;
39
+ font-size: $font-size-base;
40
+ line-height: $line-height-normal;
41
+ color: $color-foreground;
42
+ background-color: $color-background;
43
+ -webkit-font-smoothing: antialiased;
44
+ -moz-osx-font-smoothing: grayscale;
45
+ }
46
+
47
+ // ============================================================================
48
+ // TEXT ELEMENTS
49
+ // ============================================================================
50
+
51
+ p, h1, h2, h3, h4, h5, h6, ul, ol, dl {
52
+ margin: 0;
53
+ padding: 0;
54
+ }
55
+
56
+ h1, h2, h3, h4, h5, h6 {
57
+ font-weight: inherit;
58
+ font-size: inherit;
59
+ line-height: inherit;
60
+ }
61
+
62
+ ul, ol {
63
+ list-style: none;
64
+ }
65
+
66
+ // ============================================================================
67
+ // LINKS
68
+ // ============================================================================
69
+
70
+ a {
71
+ color: inherit;
72
+ text-decoration: none;
73
+ background-color: transparent;
74
+
75
+ &:active,
76
+ &:hover {
77
+ outline: 0;
78
+ }
79
+ }
80
+
81
+ // ============================================================================
82
+ // CODE
83
+ // ============================================================================
84
+
85
+ code, pre, samp {
86
+ font-family: $font-family-mono;
87
+ font-size: 1em;
88
+ }
89
+
90
+ pre {
91
+ margin: 0;
92
+ overflow: auto;
93
+ }
94
+
95
+ // ============================================================================
96
+ // FORM ELEMENTS
97
+ // ============================================================================
98
+
99
+ button,
100
+ input,
101
+ select,
102
+ textarea {
103
+ margin: 0;
104
+ padding: 0;
105
+ font-family: inherit;
106
+ font-size: 100%;
107
+ line-height: 1.15;
108
+ }
109
+
110
+ button,
111
+ input[type="button"],
112
+ input[type="reset"],
113
+ input[type="submit"] {
114
+ background: transparent;
115
+ border: 0;
116
+ cursor: pointer;
117
+ -webkit-appearance: button;
118
+
119
+ &::-moz-focus-inner {
120
+ padding: 0;
121
+ border: 0;
122
+ }
123
+ }
124
+
125
+ input[type="checkbox"] {
126
+ padding: 0;
127
+ -webkit-appearance: checkbox;
128
+ }
129
+
130
+ input[type="radio"] {
131
+ padding: 0;
132
+ -webkit-appearance: radio;
133
+ }
134
+
135
+ textarea {
136
+ overflow: auto;
137
+ resize: vertical;
138
+ }
139
+
140
+ // ============================================================================
141
+ // TABLES
142
+ // ============================================================================
143
+
144
+ table {
145
+ border-collapse: collapse;
146
+ border-spacing: 0;
147
+ }
148
+
149
+ td,
150
+ th {
151
+ padding: 0;
152
+ }
153
+
154
+ // ============================================================================
155
+ // IMAGES & MEDIA
156
+ // ============================================================================
157
+
158
+ img,
159
+ svg {
160
+ max-width: 100%;
161
+ height: auto;
162
+ display: block;
163
+ }
164
+
165
+ img {
166
+ border: 0;
167
+ vertical-align: middle;
168
+ }
169
+
170
+ // ============================================================================
171
+ // EMBEDDED CONTENT
172
+ // ============================================================================
173
+
174
+ iframe,
175
+ video {
176
+ max-width: 100%;
177
+ }
178
+
179
+ // ============================================================================
180
+ // MISCELLANEOUS
181
+ // ============================================================================
182
+
183
+ [hidden] {
184
+ display: none;
185
+ }
186
+
187
+ hr {
188
+ margin: 0;
189
+ border: 0;
190
+ border-top: 1px solid $color-border;
191
+ }
192
+ }