@justin_evo/evo-ui 1.2.0 → 1.2.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.
Files changed (77) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +70 -70
  3. package/dist/declarations.d.ts +6 -6
  4. package/package.json +52 -52
  5. package/src/Alert/Alert.tsx +49 -49
  6. package/src/AutoComplete/AutoComplete.tsx +810 -810
  7. package/src/Badge/Badge.tsx +53 -53
  8. package/src/Breadcrumb/Breadcrumb.tsx +53 -53
  9. package/src/Button/Button.tsx +125 -125
  10. package/src/Card/Card.tsx +257 -257
  11. package/src/Checkbox/Checkbox.tsx +59 -59
  12. package/src/CommandPalette/CommandPalette.tsx +185 -185
  13. package/src/Container/Container.tsx +31 -31
  14. package/src/Divider/Divider.tsx +31 -31
  15. package/src/Form/Form.tsx +185 -185
  16. package/src/Grid/Grid.tsx +66 -66
  17. package/src/ImageCropper/ImageCropper.tsx +911 -911
  18. package/src/Input/Input.tsx +74 -74
  19. package/src/Modal/Modal.tsx +77 -77
  20. package/src/Nav/Nav.tsx +708 -708
  21. package/src/Notification/Notification.tsx +1503 -1503
  22. package/src/Pagination/Pagination.tsx +76 -76
  23. package/src/Radio/Radio.tsx +69 -69
  24. package/src/RichTextArea/RichTextArea.tsx +886 -886
  25. package/src/Select/Select.tsx +515 -515
  26. package/src/Skeleton/Skeleton.tsx +70 -70
  27. package/src/Stack/Stack.tsx +52 -52
  28. package/src/Table/Table.tsx +335 -335
  29. package/src/Tabs/Tabs.tsx +90 -90
  30. package/src/Theme/ThemeProvider.tsx +253 -253
  31. package/src/Theme/ThemeToggle.tsx +79 -79
  32. package/src/Toggle/Toggle.tsx +48 -48
  33. package/src/Tooltip/Tooltip.tsx +38 -38
  34. package/src/TopNav/TopNav.tsx +1163 -1163
  35. package/src/TreeSelect/TreeSelect.tsx +825 -825
  36. package/src/css/alert.module.scss +93 -93
  37. package/src/css/autocomplete.module.scss +416 -416
  38. package/src/css/badge.module.scss +82 -82
  39. package/src/css/base/_color.scss +159 -159
  40. package/src/css/base/_theme.scss +237 -237
  41. package/src/css/base/_variables.scss +161 -161
  42. package/src/css/breadcrumb.module.scss +50 -50
  43. package/src/css/button.module.scss +385 -385
  44. package/src/css/card.module.scss +217 -217
  45. package/src/css/checkbox.module.scss +123 -123
  46. package/src/css/commandpalette.module.scss +211 -211
  47. package/src/css/container.module.scss +18 -18
  48. package/src/css/divider.module.scss +41 -41
  49. package/src/css/form.module.scss +245 -245
  50. package/src/css/imagecropper.module.scss +397 -397
  51. package/src/css/input.module.scss +89 -89
  52. package/src/css/modal.module.scss +105 -105
  53. package/src/css/nav.module.scss +494 -494
  54. package/src/css/notification.module.scss +691 -691
  55. package/src/css/pagination.module.scss +63 -63
  56. package/src/css/radio.module.scss +89 -89
  57. package/src/css/richtextarea.module.scss +307 -307
  58. package/src/css/select.module.scss +525 -525
  59. package/src/css/skeleton.module.scss +30 -30
  60. package/src/css/table.module.scss +386 -386
  61. package/src/css/tabs.module.scss +63 -63
  62. package/src/css/theme-toggle.module.scss +83 -83
  63. package/src/css/toggle.module.scss +54 -54
  64. package/src/css/tooltip.module.scss +97 -97
  65. package/src/css/topnav.module.scss +568 -568
  66. package/src/css/treeselect.module.scss +558 -558
  67. package/src/css/utilities/_borders.scss +111 -111
  68. package/src/css/utilities/_colors.scss +66 -66
  69. package/src/css/utilities/_effects.scss +216 -216
  70. package/src/css/utilities/_layout.scss +181 -181
  71. package/src/css/utilities/_position.scss +75 -75
  72. package/src/css/utilities/_sizing.scss +138 -138
  73. package/src/css/utilities/_spacing.scss +99 -99
  74. package/src/css/utilities/_typography.scss +121 -121
  75. package/src/css/utilities/index.scss +24 -24
  76. package/src/declarations.d.ts +6 -6
  77. package/src/index.ts +60 -60
@@ -1,211 +1,211 @@
1
- @use 'base/variables' as *;
2
- @use 'base/color' as *;
3
-
4
- .overlay {
5
- position: fixed;
6
- inset: 0;
7
- background: $color-backdrop;
8
- backdrop-filter: blur(4px);
9
- -webkit-backdrop-filter: blur(4px);
10
- z-index: 9999;
11
- display: flex;
12
- align-items: flex-start;
13
- justify-content: center;
14
- padding-top: 14vh;
15
- animation: overlayIn $transition-fast forwards;
16
- }
17
-
18
- @keyframes overlayIn {
19
- from { opacity: 0; }
20
- to { opacity: 1; }
21
- }
22
-
23
- .palette {
24
- background: $color-surface-elevated;
25
- border: 1px solid $color-border;
26
- border-radius: $radius-lg;
27
- width: min(580px, calc(100vw - 2rem));
28
- max-height: 68vh;
29
- display: flex;
30
- flex-direction: column;
31
- box-shadow: 0 32px 64px rgb(0 0 0 / 0.30);
32
- overflow: hidden;
33
- animation: paletteIn $transition-fast forwards;
34
- }
35
-
36
- @keyframes paletteIn {
37
- from { opacity: 0; transform: translateY(-8px) scale(0.98); }
38
- to { opacity: 1; transform: translateY(0) scale(1); }
39
- }
40
-
41
- // --- Search row ---
42
-
43
- .searchRow {
44
- display: flex;
45
- align-items: center;
46
- gap: 0.625rem;
47
- padding: 0.875rem 1rem;
48
- border-bottom: 1px solid $color-border;
49
- }
50
-
51
- .searchIconWrap {
52
- display: flex;
53
- align-items: center;
54
- color: $color-text-muted;
55
- flex-shrink: 0;
56
- }
57
-
58
- .searchInput {
59
- flex: 1;
60
- background: none;
61
- border: none;
62
- outline: none;
63
- font-family: $font-sans;
64
- font-size: $text-base;
65
- color: $color-text-primary;
66
- caret-color: $evo-primary-color;
67
-
68
- &::placeholder {
69
- color: $color-text-muted;
70
- }
71
- }
72
-
73
- .escBadge {
74
- font-size: $text-xs;
75
- padding: 0.125rem 0.4rem;
76
- background: $color-surface-sunken;
77
- border: 1px solid $color-border;
78
- border-radius: $radius-sm;
79
- color: $color-text-muted;
80
- font-family: $font-sans;
81
- flex-shrink: 0;
82
- }
83
-
84
- // --- Results area ---
85
-
86
- .results {
87
- flex: 1;
88
- overflow-y: auto;
89
- padding: 0.375rem 0.5rem;
90
-
91
- &::-webkit-scrollbar {
92
- width: 4px;
93
- }
94
- &::-webkit-scrollbar-track {
95
- background: transparent;
96
- }
97
- &::-webkit-scrollbar-thumb {
98
- background: $color-border;
99
- border-radius: 4px;
100
- }
101
- }
102
-
103
- .empty {
104
- padding: 2.5rem 1rem;
105
- text-align: center;
106
- font-size: $text-sm;
107
- color: $color-text-muted;
108
- }
109
-
110
- .group {
111
- margin-bottom: 0.25rem;
112
- }
113
-
114
- .groupLabel {
115
- font-size: $text-xs;
116
- font-weight: 600;
117
- text-transform: uppercase;
118
- letter-spacing: 0.06em;
119
- color: $color-text-muted;
120
- padding: 0.375rem 0.625rem 0.25rem;
121
- }
122
-
123
- .resultItem {
124
- display: flex;
125
- align-items: center;
126
- gap: 0.625rem;
127
- width: 100%;
128
- padding: 0.5625rem 0.75rem;
129
- border: none;
130
- border-radius: $radius-sm;
131
- background: transparent;
132
- cursor: pointer;
133
- font-family: $font-sans;
134
- transition: background-color $transition-fast;
135
-
136
- &.resultActive {
137
- background: $color-surface-hover;
138
- }
139
- }
140
-
141
- .resultIcon {
142
- display: flex;
143
- align-items: center;
144
- color: $color-text-secondary;
145
- flex-shrink: 0;
146
- width: 1.25rem;
147
- height: 1.25rem;
148
- font-size: 1.1rem;
149
- }
150
-
151
- .resultLabel {
152
- font-size: $text-sm;
153
- font-weight: 500;
154
- color: $color-text-primary;
155
- flex: 1;
156
- text-align: left;
157
- }
158
-
159
- .resultDesc {
160
- font-size: $text-xs;
161
- color: $color-text-muted;
162
- flex-shrink: 0;
163
- }
164
-
165
- .resultShortcut {
166
- display: flex;
167
- gap: 0.2rem;
168
- flex-shrink: 0;
169
-
170
- kbd {
171
- font-size: $text-xs;
172
- padding: 0.125rem 0.375rem;
173
- background: $color-surface-sunken;
174
- border: 1px solid $color-border;
175
- border-radius: $radius-sm;
176
- color: $color-text-muted;
177
- font-family: $font-sans;
178
- }
179
- }
180
-
181
- // --- Footer ---
182
-
183
- .footer {
184
- display: flex;
185
- align-items: center;
186
- gap: 1.25rem;
187
- padding: 0.5rem 1rem;
188
- border-top: 1px solid $color-border;
189
- font-size: $text-xs;
190
- color: $color-text-muted;
191
-
192
- span {
193
- display: flex;
194
- align-items: center;
195
- gap: 0.25rem;
196
- }
197
-
198
- kbd {
199
- padding: 0.1rem 0.35rem;
200
- background: $color-surface-sunken;
201
- border: 1px solid $color-border;
202
- border-radius: $radius-sm;
203
- font-family: $font-sans;
204
- font-size: $text-xs;
205
- color: $color-text-muted;
206
- }
207
- }
208
-
209
- .footerRight {
210
- margin-left: auto;
211
- }
1
+ @use 'base/variables' as *;
2
+ @use 'base/color' as *;
3
+
4
+ .overlay {
5
+ position: fixed;
6
+ inset: 0;
7
+ background: $color-backdrop;
8
+ backdrop-filter: blur(4px);
9
+ -webkit-backdrop-filter: blur(4px);
10
+ z-index: 9999;
11
+ display: flex;
12
+ align-items: flex-start;
13
+ justify-content: center;
14
+ padding-top: 14vh;
15
+ animation: overlayIn $transition-fast forwards;
16
+ }
17
+
18
+ @keyframes overlayIn {
19
+ from { opacity: 0; }
20
+ to { opacity: 1; }
21
+ }
22
+
23
+ .palette {
24
+ background: $color-surface-elevated;
25
+ border: 1px solid $color-border;
26
+ border-radius: $radius-lg;
27
+ width: min(580px, calc(100vw - 2rem));
28
+ max-height: 68vh;
29
+ display: flex;
30
+ flex-direction: column;
31
+ box-shadow: 0 32px 64px rgb(0 0 0 / 0.30);
32
+ overflow: hidden;
33
+ animation: paletteIn $transition-fast forwards;
34
+ }
35
+
36
+ @keyframes paletteIn {
37
+ from { opacity: 0; transform: translateY(-8px) scale(0.98); }
38
+ to { opacity: 1; transform: translateY(0) scale(1); }
39
+ }
40
+
41
+ // --- Search row ---
42
+
43
+ .searchRow {
44
+ display: flex;
45
+ align-items: center;
46
+ gap: 0.625rem;
47
+ padding: 0.875rem 1rem;
48
+ border-bottom: 1px solid $color-border;
49
+ }
50
+
51
+ .searchIconWrap {
52
+ display: flex;
53
+ align-items: center;
54
+ color: $color-text-muted;
55
+ flex-shrink: 0;
56
+ }
57
+
58
+ .searchInput {
59
+ flex: 1;
60
+ background: none;
61
+ border: none;
62
+ outline: none;
63
+ font-family: $font-sans;
64
+ font-size: $text-base;
65
+ color: $color-text-primary;
66
+ caret-color: $evo-primary-color;
67
+
68
+ &::placeholder {
69
+ color: $color-text-muted;
70
+ }
71
+ }
72
+
73
+ .escBadge {
74
+ font-size: $text-xs;
75
+ padding: 0.125rem 0.4rem;
76
+ background: $color-surface-sunken;
77
+ border: 1px solid $color-border;
78
+ border-radius: $radius-sm;
79
+ color: $color-text-muted;
80
+ font-family: $font-sans;
81
+ flex-shrink: 0;
82
+ }
83
+
84
+ // --- Results area ---
85
+
86
+ .results {
87
+ flex: 1;
88
+ overflow-y: auto;
89
+ padding: 0.375rem 0.5rem;
90
+
91
+ &::-webkit-scrollbar {
92
+ width: 4px;
93
+ }
94
+ &::-webkit-scrollbar-track {
95
+ background: transparent;
96
+ }
97
+ &::-webkit-scrollbar-thumb {
98
+ background: $color-border;
99
+ border-radius: 4px;
100
+ }
101
+ }
102
+
103
+ .empty {
104
+ padding: 2.5rem 1rem;
105
+ text-align: center;
106
+ font-size: $text-sm;
107
+ color: $color-text-muted;
108
+ }
109
+
110
+ .group {
111
+ margin-bottom: 0.25rem;
112
+ }
113
+
114
+ .groupLabel {
115
+ font-size: $text-xs;
116
+ font-weight: 600;
117
+ text-transform: uppercase;
118
+ letter-spacing: 0.06em;
119
+ color: $color-text-muted;
120
+ padding: 0.375rem 0.625rem 0.25rem;
121
+ }
122
+
123
+ .resultItem {
124
+ display: flex;
125
+ align-items: center;
126
+ gap: 0.625rem;
127
+ width: 100%;
128
+ padding: 0.5625rem 0.75rem;
129
+ border: none;
130
+ border-radius: $radius-sm;
131
+ background: transparent;
132
+ cursor: pointer;
133
+ font-family: $font-sans;
134
+ transition: background-color $transition-fast;
135
+
136
+ &.resultActive {
137
+ background: $color-surface-hover;
138
+ }
139
+ }
140
+
141
+ .resultIcon {
142
+ display: flex;
143
+ align-items: center;
144
+ color: $color-text-secondary;
145
+ flex-shrink: 0;
146
+ width: 1.25rem;
147
+ height: 1.25rem;
148
+ font-size: 1.1rem;
149
+ }
150
+
151
+ .resultLabel {
152
+ font-size: $text-sm;
153
+ font-weight: 500;
154
+ color: $color-text-primary;
155
+ flex: 1;
156
+ text-align: left;
157
+ }
158
+
159
+ .resultDesc {
160
+ font-size: $text-xs;
161
+ color: $color-text-muted;
162
+ flex-shrink: 0;
163
+ }
164
+
165
+ .resultShortcut {
166
+ display: flex;
167
+ gap: 0.2rem;
168
+ flex-shrink: 0;
169
+
170
+ kbd {
171
+ font-size: $text-xs;
172
+ padding: 0.125rem 0.375rem;
173
+ background: $color-surface-sunken;
174
+ border: 1px solid $color-border;
175
+ border-radius: $radius-sm;
176
+ color: $color-text-muted;
177
+ font-family: $font-sans;
178
+ }
179
+ }
180
+
181
+ // --- Footer ---
182
+
183
+ .footer {
184
+ display: flex;
185
+ align-items: center;
186
+ gap: 1.25rem;
187
+ padding: 0.5rem 1rem;
188
+ border-top: 1px solid $color-border;
189
+ font-size: $text-xs;
190
+ color: $color-text-muted;
191
+
192
+ span {
193
+ display: flex;
194
+ align-items: center;
195
+ gap: 0.25rem;
196
+ }
197
+
198
+ kbd {
199
+ padding: 0.1rem 0.35rem;
200
+ background: $color-surface-sunken;
201
+ border: 1px solid $color-border;
202
+ border-radius: $radius-sm;
203
+ font-family: $font-sans;
204
+ font-size: $text-xs;
205
+ color: $color-text-muted;
206
+ }
207
+ }
208
+
209
+ .footerRight {
210
+ margin-left: auto;
211
+ }
@@ -1,18 +1,18 @@
1
- @use 'base/variables' as *;
2
-
3
- .container {
4
- width: 100%;
5
- padding-left: 1rem;
6
- padding-right: 1rem;
7
- }
8
-
9
- .centered {
10
- margin-left: auto;
11
- margin-right: auto;
12
- }
13
-
14
- .sm { max-width: 640px; }
15
- .md { max-width: 768px; }
16
- .lg { max-width: 1024px; }
17
- .xl { max-width: 1280px; }
18
- .full { max-width: 100%; }
1
+ @use 'base/variables' as *;
2
+
3
+ .container {
4
+ width: 100%;
5
+ padding-left: 1rem;
6
+ padding-right: 1rem;
7
+ }
8
+
9
+ .centered {
10
+ margin-left: auto;
11
+ margin-right: auto;
12
+ }
13
+
14
+ .sm { max-width: 640px; }
15
+ .md { max-width: 768px; }
16
+ .lg { max-width: 1024px; }
17
+ .xl { max-width: 1280px; }
18
+ .full { max-width: 100%; }
@@ -1,41 +1,41 @@
1
- @use 'base/variables' as *;
2
- @use 'base/color' as *;
3
-
4
- .divider {
5
- border: none;
6
- flex-shrink: 0;
7
- }
8
-
9
- .horizontal {
10
- height: 1px;
11
- width: 100%;
12
- background-color: $color-border;
13
- display: block;
14
- }
15
-
16
- .vertical {
17
- width: 1px;
18
- align-self: stretch;
19
- background-color: $color-border;
20
- display: inline-block;
21
- }
22
-
23
- .labeled {
24
- display: flex;
25
- align-items: center;
26
- gap: 0.75rem;
27
- width: 100%;
28
- }
29
-
30
- .line {
31
- flex: 1;
32
- height: 1px;
33
- background-color: $color-border;
34
- }
35
-
36
- .labelText {
37
- font-size: $text-sm;
38
- color: $color-text-muted;
39
- white-space: nowrap;
40
- font-family: $font-sans;
41
- }
1
+ @use 'base/variables' as *;
2
+ @use 'base/color' as *;
3
+
4
+ .divider {
5
+ border: none;
6
+ flex-shrink: 0;
7
+ }
8
+
9
+ .horizontal {
10
+ height: 1px;
11
+ width: 100%;
12
+ background-color: $color-border;
13
+ display: block;
14
+ }
15
+
16
+ .vertical {
17
+ width: 1px;
18
+ align-self: stretch;
19
+ background-color: $color-border;
20
+ display: inline-block;
21
+ }
22
+
23
+ .labeled {
24
+ display: flex;
25
+ align-items: center;
26
+ gap: 0.75rem;
27
+ width: 100%;
28
+ }
29
+
30
+ .line {
31
+ flex: 1;
32
+ height: 1px;
33
+ background-color: $color-border;
34
+ }
35
+
36
+ .labelText {
37
+ font-size: $text-sm;
38
+ color: $color-text-muted;
39
+ white-space: nowrap;
40
+ font-family: $font-sans;
41
+ }