nexa-ui-kit 0.11.4 → 0.11.6

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 (68) hide show
  1. package/dist/components/NAlert.js +20 -5
  2. package/dist/components/NAlert.nexa +20 -5
  3. package/dist/components/NAvatar.js +2 -0
  4. package/dist/components/NAvatar.nexa +2 -0
  5. package/dist/components/NBadge.js +5 -4
  6. package/dist/components/NBadge.nexa +5 -4
  7. package/dist/components/NBottomSheet.js +24 -22
  8. package/dist/components/NBottomSheet.nexa +9 -7
  9. package/dist/components/NButton.js +63 -18
  10. package/dist/components/NButton.nexa +63 -18
  11. package/dist/components/NCard.js +6 -5
  12. package/dist/components/NCard.nexa +6 -5
  13. package/dist/components/NCheckbox.js +62 -47
  14. package/dist/components/NCheckbox.nexa +46 -33
  15. package/dist/components/NDataTable.js +124 -100
  16. package/dist/components/NDataTable.nexa +39 -15
  17. package/dist/components/NInput.js +27 -6
  18. package/dist/components/NInput.nexa +27 -6
  19. package/dist/components/NModal.js +22 -9
  20. package/dist/components/NModal.nexa +22 -9
  21. package/dist/components/NMultiSelect.js +1 -1
  22. package/dist/components/NMultiSelect.nexa +1 -1
  23. package/dist/components/NPaginator.js +83 -1
  24. package/dist/components/NPaginator.nexa +83 -1
  25. package/dist/components/NProgressBar.js +11 -9
  26. package/dist/components/NProgressBar.nexa +11 -9
  27. package/dist/components/NRadio.js +24 -24
  28. package/dist/components/NRadio.nexa +11 -10
  29. package/dist/components/NSelect.js +38 -12
  30. package/dist/components/NSelect.nexa +38 -12
  31. package/dist/components/NSwitch.js +5 -3
  32. package/dist/components/NSwitch.nexa +5 -3
  33. package/dist/components/NTabs.js +14 -6
  34. package/dist/components/NTabs.nexa +14 -6
  35. package/dist/components/NTag.js +14 -5
  36. package/dist/components/NTag.nexa +14 -5
  37. package/dist/components/NToastContainer.js +11 -4
  38. package/dist/components/NToastContainer.nexa +11 -4
  39. package/dist/components/NTooltip.js +5 -4
  40. package/dist/components/NTooltip.nexa +5 -4
  41. package/dist/components/NTreeMenu.js +77 -34
  42. package/dist/components/NTreeMenu.nexa +55 -12
  43. package/dist/styles/theme.js +69 -55
  44. package/dist/styles/tokens.css +90 -74
  45. package/package.json +4 -4
  46. package/src/components/NAlert.nexa +20 -5
  47. package/src/components/NAvatar.nexa +2 -0
  48. package/src/components/NBadge.nexa +5 -4
  49. package/src/components/NBottomSheet.nexa +9 -7
  50. package/src/components/NButton.nexa +63 -18
  51. package/src/components/NCard.nexa +6 -5
  52. package/src/components/NCheckbox.nexa +46 -33
  53. package/src/components/NDataTable.nexa +39 -15
  54. package/src/components/NInput.nexa +27 -6
  55. package/src/components/NModal.nexa +22 -9
  56. package/src/components/NMultiSelect.nexa +1 -1
  57. package/src/components/NPaginator.nexa +83 -1
  58. package/src/components/NProgressBar.nexa +11 -9
  59. package/src/components/NRadio.nexa +11 -10
  60. package/src/components/NSelect.nexa +38 -12
  61. package/src/components/NSwitch.nexa +5 -3
  62. package/src/components/NTabs.nexa +14 -6
  63. package/src/components/NTag.nexa +14 -5
  64. package/src/components/NToastContainer.nexa +11 -4
  65. package/src/components/NTooltip.nexa +5 -4
  66. package/src/components/NTreeMenu.nexa +55 -12
  67. package/src/styles/theme.ts +69 -55
  68. package/src/styles/tokens.css +90 -74
@@ -5,46 +5,49 @@ export function installTheme() {
5
5
  installed = true;
6
6
  const tokenCSS = `
7
7
  :root {
8
- --n-color-primary: #3b82f6;
9
- --n-color-primary-hover: #2563eb;
10
- --n-color-primary-active: #1d4ed8;
11
- --n-color-primary-light: rgba(59, 130, 246, 0.12);
12
- --n-color-primary-glow: rgba(59, 130, 246, 0.3);
8
+ -webkit-font-smoothing: antialiased;
9
+ -moz-osx-font-smoothing: grayscale;
10
+ --n-color-primary: #6366f1;
11
+ --n-color-primary-hover: #4f46e5;
12
+ --n-color-primary-active: #4338ca;
13
+ --n-color-primary-light: rgba(99, 102, 241, 0.1);
14
+ --n-color-primary-lighter: rgba(99, 102, 241, 0.06);
15
+ --n-color-primary-glow: rgba(99, 102, 241, 0.35);
13
16
  --n-color-success: #10b981;
14
17
  --n-color-success-hover: #059669;
15
- --n-color-success-light: rgba(16, 185, 129, 0.12);
18
+ --n-color-success-light: rgba(16, 185, 129, 0.1);
16
19
  --n-color-warning: #f59e0b;
17
20
  --n-color-warning-hover: #d97706;
18
- --n-color-warning-light: rgba(245, 158, 11, 0.12);
21
+ --n-color-warning-light: rgba(245, 158, 11, 0.1);
19
22
  --n-color-danger: #ef4444;
20
23
  --n-color-danger-hover: #dc2626;
21
- --n-color-danger-light: rgba(239, 68, 68, 0.12);
24
+ --n-color-danger-light: rgba(239, 68, 68, 0.1);
22
25
  --n-color-info: #06b6d4;
23
26
  --n-color-info-hover: #0891b2;
24
- --n-color-info-light: rgba(6, 182, 212, 0.12);
27
+ --n-color-info-light: rgba(6, 182, 212, 0.1);
25
28
  --n-color-surface: #0f172a;
26
29
  --n-color-surface-alt: #1e293b;
27
- --n-color-surface-hover: #334155;
30
+ --n-color-surface-hover: #1e293b;
28
31
  --n-color-surface-elevated: #1e293b;
29
32
  --n-color-bg: #020617;
30
33
  --n-color-bg-alt: #0f172a;
31
- --n-color-text: #f8fafc;
34
+ --n-color-text: #f1f5f9;
32
35
  --n-color-text-secondary: #94a3b8;
33
36
  --n-color-text-muted: #64748b;
34
37
  --n-color-text-inverse: #0f172a;
35
- --n-color-border: rgba(255, 255, 255, 0.08);
36
- --n-color-border-hover: rgba(255, 255, 255, 0.15);
37
- --n-color-border-active: rgba(255, 255, 255, 0.25);
38
- --n-color-overlay: rgba(2, 6, 17, 0.7);
39
- --n-color-glass: rgba(255, 255, 255, 0.04);
40
- --n-color-glass-border: rgba(255, 255, 255, 0.08);
41
- --n-color-glass-hover: rgba(255, 255, 255, 0.08);
42
- --n-font-sans: 'Outfit', 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
43
- --n-font-mono: 'JetBrains Mono', 'Fira Code', monospace;
38
+ --n-color-border: rgba(255, 255, 255, 0.06);
39
+ --n-color-border-hover: rgba(255, 255, 255, 0.12);
40
+ --n-color-border-active: rgba(255, 255, 255, 0.2);
41
+ --n-color-overlay: rgba(2, 6, 17, 0.6);
42
+ --n-color-glass: rgba(255, 255, 255, 0.03);
43
+ --n-color-glass-border: rgba(255, 255, 255, 0.06);
44
+ --n-color-glass-hover: rgba(255, 255, 255, 0.06);
45
+ --n-font-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
46
+ --n-font-mono: 'JetBrains Mono', 'Fira Code', 'Cascadia Code', monospace;
44
47
  --n-text-xs: 0.75rem;
45
- --n-text-sm: 0.875rem;
46
- --n-text-base: 1rem;
47
- --n-text-lg: 1.125rem;
48
+ --n-text-sm: 0.8125rem;
49
+ --n-text-base: 0.9375rem;
50
+ --n-text-lg: 1.0625rem;
48
51
  --n-text-xl: 1.25rem;
49
52
  --n-text-2xl: 1.5rem;
50
53
  --n-text-3xl: 2rem;
@@ -70,21 +73,26 @@ export function installTheme() {
70
73
  --n-space-12: 3rem;
71
74
  --n-space-16: 4rem;
72
75
  --n-radius-sm: 6px;
73
- --n-radius-md: 10px;
74
- --n-radius-lg: 14px;
75
- --n-radius-xl: 20px;
76
- --n-radius-2xl: 28px;
76
+ --n-radius-md: 8px;
77
+ --n-radius-lg: 12px;
78
+ --n-radius-xl: 16px;
79
+ --n-radius-2xl: 24px;
77
80
  --n-radius-full: 9999px;
78
- --n-shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.3);
79
- --n-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.2);
80
- --n-shadow-lg: 0 10px 25px -5px rgba(0, 0, 0, 0.3);
81
- --n-shadow-xl: 0 25px 50px -12px rgba(0, 0, 0, 0.5);
82
- --n-shadow-glow-primary: 0 4px 15px -3px rgba(37, 99, 235, 0.3);
83
- --n-shadow-glow-danger: 0 4px 15px -3px rgba(220, 38, 38, 0.3);
84
- --n-transition-fast: 0.15s ease;
85
- --n-transition-normal: 0.25s cubic-bezier(0.4, 0, 0.2, 1);
86
- --n-transition-slow: 0.4s cubic-bezier(0.4, 0, 0.2, 1);
87
- --n-transition-spring: 0.35s cubic-bezier(0.34, 1.56, 0.64, 1);
81
+ --n-shadow-xs: 0 1px 2px rgba(0, 0, 0, 0.4);
82
+ --n-shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.35), 0 1px 2px rgba(0, 0, 0, 0.2);
83
+ --n-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.3), 0 2px 4px -2px rgba(0, 0, 0, 0.15);
84
+ --n-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.35), 0 4px 6px -4px rgba(0, 0, 0, 0.2);
85
+ --n-shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.4), 0 8px 10px -6px rgba(0, 0, 0, 0.2);
86
+ --n-shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, 0.5);
87
+ --n-shadow-glow-primary: 0 4px 20px -4px rgba(99, 102, 241, 0.4);
88
+ --n-shadow-glow-success: 0 4px 20px -4px rgba(16, 185, 129, 0.4);
89
+ --n-shadow-glow-warning: 0 4px 20px -4px rgba(245, 158, 11, 0.4);
90
+ --n-shadow-glow-info: 0 4px 20px -4px rgba(6, 182, 212, 0.4);
91
+ --n-shadow-glow-danger: 0 4px 20px -4px rgba(239, 68, 68, 0.4);
92
+ --n-transition-fast: 0.15s cubic-bezier(0.16, 1, 0.3, 1);
93
+ --n-transition-normal: 0.25s cubic-bezier(0.16, 1, 0.3, 1);
94
+ --n-transition-slow: 0.4s cubic-bezier(0.16, 1, 0.3, 1);
95
+ --n-transition-spring: 0.5s cubic-bezier(0.34, 1.56, 0.64, 1);
88
96
  --n-z-dropdown: 100;
89
97
  --n-z-sticky: 200;
90
98
  --n-z-overlay: 500;
@@ -93,11 +101,12 @@ export function installTheme() {
93
101
  --n-z-tooltip: 1000;
94
102
  }
95
103
  [data-theme="light"] {
96
- --n-color-primary: #2563eb;
97
- --n-color-primary-hover: #1d4ed8;
98
- --n-color-primary-active: #1e40af;
99
- --n-color-primary-light: rgba(37, 99, 235, 0.08);
100
- --n-color-primary-glow: rgba(37, 99, 235, 0.2);
104
+ --n-color-primary: #4f46e5;
105
+ --n-color-primary-hover: #4338ca;
106
+ --n-color-primary-active: #3730a3;
107
+ --n-color-primary-light: rgba(79, 70, 229, 0.08);
108
+ --n-color-primary-lighter: rgba(79, 70, 229, 0.04);
109
+ --n-color-primary-glow: rgba(79, 70, 229, 0.2);
101
110
  --n-color-success: #059669;
102
111
  --n-color-success-light: rgba(5, 150, 105, 0.08);
103
112
  --n-color-warning: #d97706;
@@ -116,19 +125,24 @@ export function installTheme() {
116
125
  --n-color-text-secondary: #475569;
117
126
  --n-color-text-muted: #94a3b8;
118
127
  --n-color-text-inverse: #f8fafc;
119
- --n-color-border: rgba(0, 0, 0, 0.08);
120
- --n-color-border-hover: rgba(0, 0, 0, 0.15);
121
- --n-color-border-active: rgba(0, 0, 0, 0.25);
122
- --n-color-overlay: rgba(15, 23, 42, 0.5);
123
- --n-color-glass: rgba(255, 255, 255, 0.6);
124
- --n-color-glass-border: rgba(0, 0, 0, 0.06);
125
- --n-color-glass-hover: rgba(255, 255, 255, 0.8);
126
- --n-shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.08);
127
- --n-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.06);
128
- --n-shadow-lg: 0 10px 25px -5px rgba(0, 0, 0, 0.08);
129
- --n-shadow-xl: 0 25px 50px -12px rgba(0, 0, 0, 0.12);
130
- --n-shadow-glow-primary: 0 4px 15px -3px rgba(37, 99, 235, 0.2);
131
- --n-shadow-glow-danger: 0 4px 15px -3px rgba(220, 38, 38, 0.2);
128
+ --n-color-border: rgba(0, 0, 0, 0.06);
129
+ --n-color-border-hover: rgba(0, 0, 0, 0.12);
130
+ --n-color-border-active: rgba(0, 0, 0, 0.2);
131
+ --n-color-overlay: rgba(15, 23, 42, 0.4);
132
+ --n-color-glass: rgba(255, 255, 255, 0.7);
133
+ --n-color-glass-border: rgba(0, 0, 0, 0.04);
134
+ --n-color-glass-hover: rgba(255, 255, 255, 0.85);
135
+ --n-shadow-xs: 0 1px 2px rgba(0, 0, 0, 0.04);
136
+ --n-shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.06), 0 1px 2px rgba(0, 0, 0, 0.04);
137
+ --n-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.06), 0 2px 4px -2px rgba(0, 0, 0, 0.04);
138
+ --n-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.06), 0 4px 6px -4px rgba(0, 0, 0, 0.04);
139
+ --n-shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.08), 0 8px 10px -6px rgba(0, 0, 0, 0.04);
140
+ --n-shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, 0.12);
141
+ --n-shadow-glow-primary: 0 4px 20px -4px rgba(79, 70, 229, 0.25);
142
+ --n-shadow-glow-success: 0 4px 20px -4px rgba(5, 150, 105, 0.25);
143
+ --n-shadow-glow-warning: 0 4px 20px -4px rgba(217, 119, 6, 0.25);
144
+ --n-shadow-glow-info: 0 4px 20px -4px rgba(8, 145, 178, 0.25);
145
+ --n-shadow-glow-danger: 0 4px 20px -4px rgba(220, 38, 38, 0.25);
132
146
  }
133
147
  `;
134
148
  if (typeof document !== 'undefined') {
@@ -1,66 +1,75 @@
1
1
  :root {
2
+ -webkit-font-smoothing: antialiased;
3
+ -moz-osx-font-smoothing: grayscale;
4
+
2
5
  /* ─── Color Palette ─── */
3
- --n-color-primary: #3b82f6;
4
- --n-color-primary-hover: #2563eb;
5
- --n-color-primary-active: #1d4ed8;
6
- --n-color-primary-light: rgba(59, 130, 246, 0.12);
7
- --n-color-primary-glow: rgba(59, 130, 246, 0.3);
6
+ --n-color-primary: #6366f1;
7
+ --n-color-primary-hover: #4f46e5;
8
+ --n-color-primary-active: #4338ca;
9
+ --n-color-primary-light: rgba(99, 102, 241, 0.1);
10
+ --n-color-primary-lighter: rgba(99, 102, 241, 0.06);
11
+ --n-color-primary-glow: rgba(99, 102, 241, 0.35);
8
12
 
9
13
  --n-color-success: #10b981;
10
14
  --n-color-success-hover: #059669;
11
- --n-color-success-light: rgba(16, 185, 129, 0.12);
15
+ --n-color-success-light: rgba(16, 185, 129, 0.1);
12
16
 
13
17
  --n-color-warning: #f59e0b;
14
18
  --n-color-warning-hover: #d97706;
15
- --n-color-warning-light: rgba(245, 158, 11, 0.12);
19
+ --n-color-warning-light: rgba(245, 158, 11, 0.1);
16
20
 
17
21
  --n-color-danger: #ef4444;
18
22
  --n-color-danger-hover: #dc2626;
19
- --n-color-danger-light: rgba(239, 68, 68, 0.12);
23
+ --n-color-danger-light: rgba(239, 68, 68, 0.1);
20
24
 
21
25
  --n-color-info: #06b6d4;
22
26
  --n-color-info-hover: #0891b2;
23
- --n-color-info-light: rgba(6, 182, 212, 0.12);
27
+ --n-color-info-light: rgba(6, 182, 212, 0.1);
24
28
 
29
+ /* Surfaces — dark */
25
30
  --n-color-surface: #0f172a;
26
31
  --n-color-surface-alt: #1e293b;
27
- --n-color-surface-hover: #334155;
32
+ --n-color-surface-hover: #1e293b;
28
33
  --n-color-surface-elevated: #1e293b;
29
34
 
30
35
  --n-color-bg: #020617;
31
36
  --n-color-bg-alt: #0f172a;
32
37
 
33
- --n-color-text: #f8fafc;
38
+ /* Text */
39
+ --n-color-text: #f1f5f9;
34
40
  --n-color-text-secondary: #94a3b8;
35
41
  --n-color-text-muted: #64748b;
36
42
  --n-color-text-inverse: #0f172a;
37
43
 
38
- --n-color-border: rgba(255, 255, 255, 0.08);
39
- --n-color-border-hover: rgba(255, 255, 255, 0.15);
40
- --n-color-border-active: rgba(255, 255, 255, 0.25);
44
+ /* Borders */
45
+ --n-color-border: rgba(255, 255, 255, 0.06);
46
+ --n-color-border-hover: rgba(255, 255, 255, 0.12);
47
+ --n-color-border-active: rgba(255, 255, 255, 0.2);
41
48
 
42
- --n-color-overlay: rgba(2, 6, 17, 0.7);
43
- --n-color-glass: rgba(255, 255, 255, 0.04);
44
- --n-color-glass-border: rgba(255, 255, 255, 0.08);
45
- --n-color-glass-hover: rgba(255, 255, 255, 0.08);
49
+ /* Overlay / Glass */
50
+ --n-color-overlay: rgba(2, 6, 17, 0.6);
51
+ --n-color-glass: rgba(255, 255, 255, 0.03);
52
+ --n-color-glass-border: rgba(255, 255, 255, 0.06);
53
+ --n-color-glass-hover: rgba(255, 255, 255, 0.06);
46
54
 
47
- --n-color-primary-border: rgba(59, 130, 246, 0.2);
48
- --n-color-success-border: rgba(16, 185, 129, 0.2);
49
- --n-color-warning-border: rgba(245, 158, 11, 0.2);
50
- --n-color-danger-border: rgba(239, 68, 68, 0.2);
51
- --n-color-info-border: rgba(6, 182, 212, 0.2);
55
+ /* Semantic borders */
56
+ --n-color-primary-border: rgba(99, 102, 241, 0.15);
57
+ --n-color-success-border: rgba(16, 185, 129, 0.15);
58
+ --n-color-warning-border: rgba(245, 158, 11, 0.15);
59
+ --n-color-danger-border: rgba(239, 68, 68, 0.15);
60
+ --n-color-info-border: rgba(6, 182, 212, 0.15);
52
61
 
53
- --n-color-stripe: rgba(255, 255, 255, 0.12);
54
- --n-shadow-top-lg: 0 -10px 25px -5px rgba(0, 0, 0, 0.3);
62
+ --n-color-stripe: rgba(255, 255, 255, 0.04);
63
+ --n-shadow-top-lg: 0 -10px 25px -5px rgba(0, 0, 0, 0.5);
55
64
 
56
65
  /* ─── Typography ─── */
57
- --n-font-sans: 'Outfit', 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
58
- --n-font-mono: 'JetBrains Mono', 'Fira Code', monospace;
66
+ --n-font-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
67
+ --n-font-mono: 'JetBrains Mono', 'Fira Code', 'Cascadia Code', monospace;
59
68
 
60
69
  --n-text-xs: 0.75rem;
61
- --n-text-sm: 0.875rem;
62
- --n-text-base: 1rem;
63
- --n-text-lg: 1.125rem;
70
+ --n-text-sm: 0.8125rem;
71
+ --n-text-base: 0.9375rem;
72
+ --n-text-lg: 1.0625rem;
64
73
  --n-text-xl: 1.25rem;
65
74
  --n-text-2xl: 1.5rem;
66
75
  --n-text-3xl: 2rem;
@@ -93,28 +102,31 @@
93
102
 
94
103
  /* ─── Border Radius ─── */
95
104
  --n-radius-sm: 6px;
96
- --n-radius-md: 10px;
97
- --n-radius-lg: 14px;
98
- --n-radius-xl: 20px;
99
- --n-radius-2xl: 28px;
105
+ --n-radius-md: 8px;
106
+ --n-radius-lg: 12px;
107
+ --n-radius-xl: 16px;
108
+ --n-radius-2xl: 24px;
100
109
  --n-radius-full: 9999px;
101
110
 
102
111
  /* ─── Shadows ─── */
103
- --n-shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.3);
104
- --n-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.2);
105
- --n-shadow-lg: 0 10px 25px -5px rgba(0, 0, 0, 0.3);
106
- --n-shadow-xl: 0 25px 50px -12px rgba(0, 0, 0, 0.5);
107
- --n-shadow-glow-primary: 0 4px 15px -3px rgba(37, 99, 235, 0.3);
108
- --n-shadow-glow-success: 0 4px 15px -3px rgba(16, 185, 129, 0.3);
109
- --n-shadow-glow-warning: 0 4px 15px -3px rgba(245, 158, 11, 0.3);
110
- --n-shadow-glow-info: 0 4px 15px -3px rgba(6, 182, 212, 0.3);
111
- --n-shadow-glow-danger: 0 4px 15px -3px rgba(220, 38, 38, 0.3);
112
-
113
- /* ─── Transitions ─── */
114
- --n-transition-fast: 0.15s ease;
115
- --n-transition-normal: 0.25s cubic-bezier(0.4, 0, 0.2, 1);
116
- --n-transition-slow: 0.4s cubic-bezier(0.4, 0, 0.2, 1);
117
- --n-transition-spring: 0.35s cubic-bezier(0.34, 1.56, 0.64, 1);
112
+ --n-shadow-xs: 0 1px 2px rgba(0, 0, 0, 0.4);
113
+ --n-shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.35), 0 1px 2px rgba(0, 0, 0, 0.2);
114
+ --n-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.3), 0 2px 4px -2px rgba(0, 0, 0, 0.15);
115
+ --n-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.35), 0 4px 6px -4px rgba(0, 0, 0, 0.2);
116
+ --n-shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.4), 0 8px 10px -6px rgba(0, 0, 0, 0.2);
117
+ --n-shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, 0.5);
118
+
119
+ --n-shadow-glow-primary: 0 4px 20px -4px rgba(99, 102, 241, 0.4);
120
+ --n-shadow-glow-success: 0 4px 20px -4px rgba(16, 185, 129, 0.4);
121
+ --n-shadow-glow-warning: 0 4px 20px -4px rgba(245, 158, 11, 0.4);
122
+ --n-shadow-glow-info: 0 4px 20px -4px rgba(6, 182, 212, 0.4);
123
+ --n-shadow-glow-danger: 0 4px 20px -4px rgba(239, 68, 68, 0.4);
124
+
125
+ /* ─── Transitions (magnetic easing) ─── */
126
+ --n-transition-fast: 0.15s cubic-bezier(0.16, 1, 0.3, 1);
127
+ --n-transition-normal: 0.25s cubic-bezier(0.16, 1, 0.3, 1);
128
+ --n-transition-slow: 0.4s cubic-bezier(0.16, 1, 0.3, 1);
129
+ --n-transition-spring: 0.5s cubic-bezier(0.34, 1.56, 0.64, 1);
118
130
 
119
131
  /* ─── Z-Index Scale ─── */
120
132
  --n-z-dropdown: 100;
@@ -127,11 +139,12 @@
127
139
 
128
140
  /* ─── Light Theme ─── */
129
141
  [data-theme="light"] {
130
- --n-color-primary: #2563eb;
131
- --n-color-primary-hover: #1d4ed8;
132
- --n-color-primary-active: #1e40af;
133
- --n-color-primary-light: rgba(37, 99, 235, 0.08);
134
- --n-color-primary-glow: rgba(37, 99, 235, 0.2);
142
+ --n-color-primary: #4f46e5;
143
+ --n-color-primary-hover: #4338ca;
144
+ --n-color-primary-active: #3730a3;
145
+ --n-color-primary-light: rgba(79, 70, 229, 0.08);
146
+ --n-color-primary-lighter: rgba(79, 70, 229, 0.04);
147
+ --n-color-primary-glow: rgba(79, 70, 229, 0.2);
135
148
 
136
149
  --n-color-success: #059669;
137
150
  --n-color-success-light: rgba(5, 150, 105, 0.08);
@@ -158,31 +171,34 @@
158
171
  --n-color-text-muted: #94a3b8;
159
172
  --n-color-text-inverse: #f8fafc;
160
173
 
161
- --n-color-border: rgba(0, 0, 0, 0.08);
162
- --n-color-border-hover: rgba(0, 0, 0, 0.15);
163
- --n-color-border-active: rgba(0, 0, 0, 0.25);
174
+ --n-color-border: rgba(0, 0, 0, 0.06);
175
+ --n-color-border-hover: rgba(0, 0, 0, 0.12);
176
+ --n-color-border-active: rgba(0, 0, 0, 0.2);
164
177
 
165
- --n-color-overlay: rgba(15, 23, 42, 0.5);
166
- --n-color-glass: rgba(255, 255, 255, 0.6);
167
- --n-color-glass-border: rgba(0, 0, 0, 0.06);
168
- --n-color-glass-hover: rgba(255, 255, 255, 0.8);
178
+ --n-color-overlay: rgba(15, 23, 42, 0.4);
179
+ --n-color-glass: rgba(255, 255, 255, 0.7);
180
+ --n-color-glass-border: rgba(0, 0, 0, 0.04);
181
+ --n-color-glass-hover: rgba(255, 255, 255, 0.85);
169
182
 
170
- --n-color-primary-border: rgba(37, 99, 235, 0.2);
183
+ --n-color-primary-border: rgba(79, 70, 229, 0.2);
171
184
  --n-color-success-border: rgba(5, 150, 105, 0.2);
172
185
  --n-color-warning-border: rgba(217, 119, 6, 0.2);
173
186
  --n-color-danger-border: rgba(220, 38, 38, 0.2);
174
187
  --n-color-info-border: rgba(8, 145, 178, 0.2);
175
188
 
176
- --n-color-stripe: rgba(0, 0, 0, 0.08);
177
- --n-shadow-top-lg: 0 -10px 25px -5px rgba(0, 0, 0, 0.2);
178
-
179
- --n-shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.08);
180
- --n-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.06);
181
- --n-shadow-lg: 0 10px 25px -5px rgba(0, 0, 0, 0.08);
182
- --n-shadow-xl: 0 25px 50px -12px rgba(0, 0, 0, 0.12);
183
- --n-shadow-glow-primary: 0 4px 15px -3px rgba(37, 99, 235, 0.2);
184
- --n-shadow-glow-success: 0 4px 15px -3px rgba(5, 150, 105, 0.2);
185
- --n-shadow-glow-warning: 0 4px 15px -3px rgba(217, 119, 6, 0.2);
186
- --n-shadow-glow-info: 0 4px 15px -3px rgba(8, 145, 178, 0.2);
187
- --n-shadow-glow-danger: 0 4px 15px -3px rgba(220, 38, 38, 0.2);
189
+ --n-color-stripe: rgba(0, 0, 0, 0.04);
190
+ --n-shadow-top-lg: 0 -10px 25px -5px rgba(0, 0, 0, 0.15);
191
+
192
+ --n-shadow-xs: 0 1px 2px rgba(0, 0, 0, 0.04);
193
+ --n-shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.06), 0 1px 2px rgba(0, 0, 0, 0.04);
194
+ --n-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.06), 0 2px 4px -2px rgba(0, 0, 0, 0.04);
195
+ --n-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.06), 0 4px 6px -4px rgba(0, 0, 0, 0.04);
196
+ --n-shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.08), 0 8px 10px -6px rgba(0, 0, 0, 0.04);
197
+ --n-shadow-2xl: 0 25px 50px -12px rgba(0, 0, 0, 0.12);
198
+
199
+ --n-shadow-glow-primary: 0 4px 20px -4px rgba(79, 70, 229, 0.25);
200
+ --n-shadow-glow-success: 0 4px 20px -4px rgba(5, 150, 105, 0.25);
201
+ --n-shadow-glow-warning: 0 4px 20px -4px rgba(217, 119, 6, 0.25);
202
+ --n-shadow-glow-info: 0 4px 20px -4px rgba(8, 145, 178, 0.25);
203
+ --n-shadow-glow-danger: 0 4px 20px -4px rgba(220, 38, 38, 0.25);
188
204
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nexa-ui-kit",
3
- "version": "0.11.4",
3
+ "version": "0.11.6",
4
4
  "description": "Premium component library for Nexa Framework",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -22,12 +22,12 @@
22
22
  "src"
23
23
  ],
24
24
  "dependencies": {
25
- "nexa-framework": "0.11.4",
26
- "nexa-mobile": "0.11.4"
25
+ "nexa-framework": "0.11.6",
26
+ "nexa-mobile": "0.11.6"
27
27
  },
28
28
  "devDependencies": {
29
29
  "cpx": "^1.5.0",
30
- "nexa-compiler": "0.11.4"
30
+ "nexa-compiler": "0.11.6"
31
31
  },
32
32
  "scripts": {
33
33
  "build": "tsc && node scripts/compile-nexa.js && node scripts/patch-imports.js && cpx \"src/**/*.nexa\" dist && cpx \"src/styles/*.css\" dist/styles",
@@ -43,11 +43,16 @@ const icons = { success: '✓', error: '✕', warning: '⚡', info: 'ℹ' }
43
43
  align-items: flex-start;
44
44
  gap: var(--n-space-3);
45
45
  padding: var(--n-space-4) var(--n-space-5);
46
- border-radius: var(--n-radius-md);
47
- border: 1px solid transparent;
46
+ border-radius: var(--n-radius-lg);
47
+ border-style: solid;
48
+ border-width: 1px;
49
+ border-left-width: 4px;
50
+ border-color: transparent;
48
51
  font-size: var(--n-text-sm);
49
52
  line-height: var(--n-leading-normal);
50
- animation: n-alert-in 0.25s ease-out;
53
+ animation: n-alert-in 0.3s cubic-bezier(0.16, 1, 0.3, 1);
54
+ box-shadow: 0 4px 24px rgba(0,0,0,0.06);
55
+ backdrop-filter: blur(12px);
51
56
  }
52
57
 
53
58
  @keyframes n-alert-in {
@@ -58,24 +63,28 @@ const icons = { success: '✓', error: '✕', warning: '⚡', info: 'ℹ' }
58
63
  .is-info {
59
64
  background: var(--n-color-primary-light);
60
65
  border-color: var(--n-color-primary-border);
66
+ border-left-color: var(--n-color-primary);
61
67
  color: var(--n-color-primary);
62
68
  }
63
69
 
64
70
  .is-success {
65
71
  background: var(--n-color-success-light);
66
72
  border-color: var(--n-color-success-border);
73
+ border-left-color: var(--n-color-success);
67
74
  color: var(--n-color-success);
68
75
  }
69
76
 
70
77
  .is-warning {
71
78
  background: var(--n-color-warning-light);
72
79
  border-color: var(--n-color-warning-border);
80
+ border-left-color: var(--n-color-warning);
73
81
  color: var(--n-color-warning);
74
82
  }
75
83
 
76
84
  .is-error {
77
85
  background: var(--n-color-danger-light);
78
86
  border-color: var(--n-color-danger-border);
87
+ border-left-color: var(--n-color-danger);
79
88
  color: var(--n-color-danger);
80
89
  }
81
90
 
@@ -83,7 +92,13 @@ const icons = { success: '✓', error: '✕', warning: '⚡', info: 'ℹ' }
83
92
  font-size: var(--n-text-base);
84
93
  font-weight: var(--n-weight-bold);
85
94
  flex-shrink: 0;
86
- line-height: 1.4;
95
+ line-height: 1;
96
+ display: flex;
97
+ align-items: center;
98
+ justify-content: center;
99
+ width: 20px;
100
+ height: 20px;
101
+ margin-top: 2px;
87
102
  }
88
103
 
89
104
  .n-alert-body {
@@ -112,7 +127,7 @@ const icons = { success: '✓', error: '✕', warning: '⚡', info: 'ℹ' }
112
127
  padding: 0;
113
128
  line-height: 1;
114
129
  flex-shrink: 0;
115
- transition: color var(--n-transition-fast);
130
+ transition: color 0.2s cubic-bezier(0.16, 1, 0.3, 1);
116
131
  }
117
132
 
118
133
  .n-alert-close:hover {
@@ -43,6 +43,8 @@ const initials = computed(() => {
43
43
  color: var(--n-color-text);
44
44
  user-select: none;
45
45
  transition: all var(--n-transition-fast);
46
+ border: 1px solid var(--n-color-border);
47
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06), 0 1px 2px rgba(0, 0, 0, 0.04);
46
48
  }
47
49
 
48
50
  .is-sm { width: 32px; height: 32px; font-size: var(--n-text-xs); }
@@ -22,13 +22,14 @@ const props = defineProps({
22
22
  justify-content: center;
23
23
  padding: 0.25rem 0.6rem;
24
24
  font-size: var(--n-text-xs);
25
- font-weight: var(--n-weight-bold);
26
- border-radius: var(--n-radius-sm);
25
+ font-weight: var(--n-weight-semibold);
26
+ border-radius: var(--n-radius-full);
27
27
  line-height: 1;
28
28
  font-family: var(--n-font-sans);
29
29
  text-transform: uppercase;
30
- letter-spacing: var(--n-tracking-wide);
30
+ letter-spacing: 0.03em;
31
31
  transition: all var(--n-transition-fast);
32
+ box-shadow: inset 0 1px 3px rgba(0,0,0,0.2);
32
33
  }
33
34
 
34
35
  .n-badge-primary { background: var(--n-color-primary); color: white; }
@@ -36,7 +37,7 @@ const props = defineProps({
36
37
  .n-badge-danger { background: var(--n-color-danger); color: white; }
37
38
  .n-badge-warning { background: var(--n-color-warning); color: white; }
38
39
  .n-badge-info { background: var(--n-color-info); color: white; }
39
- .n-badge-secondary { background: var(--n-color-surface-hover); color: var(--n-color-text-secondary); }
40
+ .n-badge-secondary { background: var(--n-color-surface-hover); color: var(--n-color-text); }
40
41
 
41
42
  .n-badge-sm { padding: 0.15rem 0.4rem; font-size: 0.65rem; }
42
43
  .n-badge-lg { padding: 0.4rem 0.8rem; font-size: var(--n-text-sm); }
@@ -74,7 +74,7 @@ const overlayOpacity = computed(() => {
74
74
  class="n-bottom-sheet-container"
75
75
  :style="{
76
76
  transform: `translateY(${translateY.value})`,
77
- transition: isDragging.value ? 'none' : 'transform var(--n-transition-slow)'
77
+ transition: isDragging.value ? 'none' : 'transform 0.4s cubic-bezier(0.16, 1, 0.3, 1)'
78
78
  }"
79
79
  >
80
80
  <div class="n-bottom-sheet-handle"></div>
@@ -110,8 +110,8 @@ const overlayOpacity = computed(() => {
110
110
  width: 100%;
111
111
  height: 100%;
112
112
  background: var(--n-color-overlay);
113
- backdrop-filter: blur(4px);
114
- transition: opacity 0.3s ease;
113
+ backdrop-filter: blur(8px);
114
+ transition: opacity 0.35s cubic-bezier(0.16, 1, 0.3, 1);
115
115
  }
116
116
 
117
117
  .n-bottom-sheet-container {
@@ -121,20 +121,22 @@ const overlayOpacity = computed(() => {
121
121
  background: var(--n-color-surface);
122
122
  border-top: 1px solid var(--n-color-border);
123
123
  border-radius: var(--n-radius-2xl) var(--n-radius-2xl) 0 0;
124
- box-shadow: var(--n-shadow-top-lg);
124
+ box-shadow: var(--n-shadow-top-lg), 0 -8px 32px rgba(0, 0, 0, 0.08);
125
125
  padding-bottom: env(safe-area-inset-bottom, 20px);
126
126
  touch-action: none;
127
127
  display: flex;
128
128
  flex-direction: column;
129
+ transition: transform 0.4s cubic-bezier(0.16, 1, 0.3, 1);
129
130
  }
130
131
 
131
132
  .n-bottom-sheet-handle {
132
- width: 40px;
133
- height: 4px;
134
- background: var(--n-color-surface-hover);
133
+ width: 48px;
134
+ height: 5px;
135
+ background: var(--n-color-text-muted);
135
136
  border-radius: var(--n-radius-full);
136
137
  margin: var(--n-space-3) auto;
137
138
  flex-shrink: 0;
139
+ opacity: 0.3;
138
140
  }
139
141
 
140
142
  .n-bottom-sheet-inner {