nexa-ui-kit 0.9.0 → 0.11.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.
Files changed (63) hide show
  1. package/dist/components/NAlert.js +48 -27
  2. package/dist/components/NAlert.nexa +12 -6
  3. package/dist/components/NAutocomplete.js +24 -19
  4. package/dist/components/NAutocomplete.nexa +3 -3
  5. package/dist/components/NBottomSheet.js +17 -17
  6. package/dist/components/NBottomSheet.nexa +2 -2
  7. package/dist/components/NButton.js +58 -58
  8. package/dist/components/NButton.nexa +10 -9
  9. package/dist/components/NCard.js +1 -1
  10. package/dist/components/NCard.nexa +1 -1
  11. package/dist/components/NCheckbox.js +22 -18
  12. package/dist/components/NCheckbox.nexa +2 -1
  13. package/dist/components/NChips.js +12 -9
  14. package/dist/components/NChips.nexa +1 -1
  15. package/dist/components/NDataTable.js +359 -41
  16. package/dist/components/NDataTable.nexa +318 -10
  17. package/dist/components/NDatepicker.js +51 -42
  18. package/dist/components/NDatepicker.nexa +3 -3
  19. package/dist/components/NInput.js +50 -40
  20. package/dist/components/NInput.nexa +4 -3
  21. package/dist/components/NInputNumber.js +17 -12
  22. package/dist/components/NInputNumber.nexa +2 -2
  23. package/dist/components/NModal.js +33 -27
  24. package/dist/components/NModal.nexa +4 -4
  25. package/dist/components/NMultiSelect.js +46 -37
  26. package/dist/components/NMultiSelect.nexa +3 -3
  27. package/dist/components/NPaginator.js +28 -20
  28. package/dist/components/NPaginator.nexa +4 -4
  29. package/dist/components/NPassword.js +60 -46
  30. package/dist/components/NPassword.nexa +5 -4
  31. package/dist/components/NProgressBar.js +4 -4
  32. package/dist/components/NProgressBar.nexa +4 -4
  33. package/dist/components/NSelect.js +67 -62
  34. package/dist/components/NSelect.nexa +4 -4
  35. package/dist/components/NTag.js +26 -23
  36. package/dist/components/NTag.nexa +6 -6
  37. package/dist/components/NToastContainer.js +64 -48
  38. package/dist/components/NToastContainer.nexa +6 -3
  39. package/dist/components/NTreeMenu.js +23 -21
  40. package/dist/components/NTreeMenu.nexa +1 -1
  41. package/dist/styles/tokens.css +18 -0
  42. package/package.json +4 -4
  43. package/src/components/NAlert.nexa +12 -6
  44. package/src/components/NAutocomplete.nexa +3 -3
  45. package/src/components/NBottomSheet.nexa +2 -2
  46. package/src/components/NButton.nexa +10 -9
  47. package/src/components/NCard.nexa +1 -1
  48. package/src/components/NCheckbox.nexa +2 -1
  49. package/src/components/NChips.nexa +1 -1
  50. package/src/components/NDataTable.nexa +318 -10
  51. package/src/components/NDatepicker.nexa +3 -3
  52. package/src/components/NInput.nexa +4 -3
  53. package/src/components/NInputNumber.nexa +2 -2
  54. package/src/components/NModal.nexa +4 -4
  55. package/src/components/NMultiSelect.nexa +3 -3
  56. package/src/components/NPaginator.nexa +4 -4
  57. package/src/components/NPassword.nexa +5 -4
  58. package/src/components/NProgressBar.nexa +4 -4
  59. package/src/components/NSelect.nexa +4 -4
  60. package/src/components/NTag.nexa +6 -6
  61. package/src/components/NToastContainer.nexa +6 -3
  62. package/src/components/NTreeMenu.nexa +1 -1
  63. package/src/styles/tokens.css +18 -0
@@ -1,7 +1,7 @@
1
1
  import { signal, computed, h, hText, effect, defineComponent, registerComponent, reloadComponent, injectStyle } from 'nexa-framework'
2
2
 
3
3
  const _sfc_main = defineComponent({
4
- __scopeId: 'data-v-76573beb',
4
+ __scopeId: 'data-v-72f6f577',
5
5
  __hmrId: 'NButton_nexa',
6
6
  props: {
7
7
  variant: { type: String, default: 'primary' },
@@ -45,29 +45,29 @@ const _sfc_main = defineComponent({
45
45
  // Injected render function
46
46
  _sfc_main.render = function(ctx) {
47
47
  let { ripple, handleClick, btnClass, $slots, emit, variant, size, type, disabled, loading, block, rounded, loadingText, Fragment: _ntc_Fragment } = ctx
48
- return h('button', { class: btnClass.value, type: type, disabled: disabled || loading, onClick: handleClick, "data-v-76573beb": "" }, [
48
+ return h('button', { class: btnClass.value, type: type, disabled: disabled || loading, "aria-busy": loading ? 'true' : undefined, onClick: handleClick, "data-v-72f6f577": "" }, [
49
49
  "\r\n ",
50
- (loading) ? h('span', { class: "n-btn-loader", "data-v-76573beb": "" }) : null,
51
- (loading && loadingText) ? h('span', { class: "n-btn-loading-text", "data-v-76573beb": "" }, [
50
+ (loading) ? h('span', { class: "n-btn-loader", "data-v-72f6f577": "" }) : null,
51
+ (loading && loadingText) ? h('span', { class: "n-btn-loading-text", "data-v-72f6f577": "" }, [
52
52
  loadingText
53
53
  ]) : null,
54
- (!loading || (loading && !loadingText)) ? h('span', { class: "n-btn-content", "data-v-76573beb": "" }, [
54
+ (!loading || (loading && !loadingText)) ? h('span', { class: "n-btn-content", "data-v-72f6f577": "" }, [
55
55
  "\r\n ",
56
56
  ctx.$slots.default ? ctx.$slots.default() : null,
57
57
  "\r\n "
58
58
  ]) : null,
59
59
  (ripple.value).map((r, index) =>
60
- h('span', { class: "n-btn-ripple", key: r.id, style: { left: r.x + 'px', top: r.y + 'px' }, "data-v-76573beb": "" })
60
+ h('span', { class: "n-btn-ripple", key: r.id, style: { left: r.x + 'px', top: r.y + 'px' }, "data-v-72f6f577": "" })
61
61
  ),
62
62
  "\r\n "
63
63
  ])
64
64
  }
65
- _sfc_main.__scopeId = 'data-v-76573beb'
65
+ _sfc_main.__scopeId = 'data-v-72f6f577'
66
66
  _sfc_main.__hmrId = 'NButton_nexa'
67
67
 
68
68
  export default _sfc_main
69
69
 
70
- const __style = `.n-btn[data-v-76573beb]{
70
+ const __style = `.n-btn[data-v-72f6f577]{
71
71
  position: relative;
72
72
  display: inline-flex;
73
73
  align-items: center;
@@ -88,137 +88,137 @@ const __style = `.n-btn[data-v-76573beb]{
88
88
  min-width: fit-content;
89
89
  }
90
90
 
91
- .n-btn[data-v-76573beb]:focus-visible{
91
+ .n-btn[data-v-72f6f577]:focus-visible{
92
92
  box-shadow: 0 0 0 3px var(--n-color-primary-light);
93
93
  }
94
94
 
95
95
  /* Sizes */
96
- .n-btn-sm[data-v-76573beb]{ padding: 0.5rem 1.25rem; font-size: var(--n-text-sm); gap: var(--n-space-1); border-radius: var(--n-radius-sm); min-height: 32px; }
97
- .n-btn-md[data-v-76573beb]{ padding: 0.65rem 1.75rem; font-size: var(--n-text-base); min-height: 40px; }
98
- .n-btn-lg[data-v-76573beb]{ padding: 0.85rem 2.5rem; font-size: var(--n-text-lg); border-radius: var(--n-radius-lg); min-height: 48px; }
96
+ .n-btn-sm[data-v-72f6f577]{ padding: 0.5rem 1.25rem; font-size: var(--n-text-sm); gap: var(--n-space-1); border-radius: var(--n-radius-sm); min-height: 32px; }
97
+ .n-btn-md[data-v-72f6f577]{ padding: 0.65rem 1.75rem; font-size: var(--n-text-base); min-height: 40px; }
98
+ .n-btn-lg[data-v-72f6f577]{ padding: 0.85rem 2.5rem; font-size: var(--n-text-lg); border-radius: var(--n-radius-lg); min-height: 48px; }
99
99
 
100
100
  /* Block */
101
- .is-block[data-v-76573beb]{ width: 100%; }
101
+ .is-block[data-v-72f6f577]{ width: 100%; }
102
102
 
103
103
  /* Rounded */
104
- .is-rounded[data-v-76573beb]{ border-radius: var(--n-radius-full); }
104
+ .is-rounded[data-v-72f6f577]{ border-radius: var(--n-radius-full); }
105
105
 
106
106
  /* Variant: Primary */
107
- .n-btn-primary[data-v-76573beb]{
107
+ .n-btn-primary[data-v-72f6f577]{
108
108
  background: linear-gradient(135deg, var(--n-color-primary) 0%, var(--n-color-primary-hover) 100%);
109
109
  color: white;
110
110
  box-shadow: var(--n-shadow-glow-primary);
111
111
  }
112
- .n-btn-primary[data-v-76573beb]:hover:not(:disabled){
112
+ .n-btn-primary[data-v-72f6f577]:hover:not(:disabled){
113
113
  transform: translateY(-2px);
114
114
  box-shadow: 0 8px 20px -3px var(--n-color-primary-glow);
115
115
  }
116
- .n-btn-primary[data-v-76573beb]:active:not(:disabled){
116
+ .n-btn-primary[data-v-72f6f577]:active:not(:disabled){
117
117
  transform: translateY(0) scale(0.97);
118
118
  }
119
119
 
120
120
  /* Variant: Secondary */
121
- .n-btn-secondary[data-v-76573beb]{
121
+ .n-btn-secondary[data-v-72f6f577]{
122
122
  background: var(--n-color-surface-alt);
123
123
  color: var(--n-color-text);
124
124
  border-color: var(--n-color-border);
125
125
  }
126
- .n-btn-secondary[data-v-76573beb]:hover:not(:disabled){
126
+ .n-btn-secondary[data-v-72f6f577]:hover:not(:disabled){
127
127
  background: var(--n-color-surface-hover);
128
128
  border-color: var(--n-color-border-hover);
129
129
  }
130
130
 
131
131
  /* Variant: Success */
132
- .n-btn-success[data-v-76573beb]{
132
+ .n-btn-success[data-v-72f6f577]{
133
133
  background: linear-gradient(135deg, var(--n-color-success) 0%, var(--n-color-success-hover) 100%);
134
134
  color: white;
135
- box-shadow: 0 4px 12px -2px rgba(16, 185, 129, 0.3);
135
+ box-shadow: var(--n-shadow-glow-success);
136
136
  }
137
- .n-btn-success[data-v-76573beb]:hover:not(:disabled){
137
+ .n-btn-success[data-v-72f6f577]:hover:not(:disabled){
138
138
  transform: translateY(-2px);
139
- box-shadow: 0 8px 20px -3px rgba(16, 185, 129, 0.4);
139
+ box-shadow: var(--n-shadow-glow-success);
140
140
  }
141
- .n-btn-success[data-v-76573beb]:active:not(:disabled){
141
+ .n-btn-success[data-v-72f6f577]:active:not(:disabled){
142
142
  transform: translateY(0) scale(0.97);
143
143
  }
144
144
 
145
145
  /* Variant: Warning */
146
- .n-btn-warning[data-v-76573beb]{
146
+ .n-btn-warning[data-v-72f6f577]{
147
147
  background: linear-gradient(135deg, var(--n-color-warning) 0%, var(--n-color-warning-hover) 100%);
148
148
  color: white;
149
- box-shadow: 0 4px 12px -2px rgba(245, 158, 11, 0.3);
149
+ box-shadow: var(--n-shadow-glow-warning);
150
150
  }
151
- .n-btn-warning[data-v-76573beb]:hover:not(:disabled){
151
+ .n-btn-warning[data-v-72f6f577]:hover:not(:disabled){
152
152
  transform: translateY(-2px);
153
- box-shadow: 0 8px 20px -3px rgba(245, 158, 11, 0.4);
153
+ box-shadow: var(--n-shadow-glow-warning);
154
154
  }
155
- .n-btn-warning[data-v-76573beb]:active:not(:disabled){
155
+ .n-btn-warning[data-v-72f6f577]:active:not(:disabled){
156
156
  transform: translateY(0) scale(0.97);
157
157
  }
158
158
 
159
159
  /* Variant: Info */
160
- .n-btn-info[data-v-76573beb]{
160
+ .n-btn-info[data-v-72f6f577]{
161
161
  background: linear-gradient(135deg, var(--n-color-info) 0%, var(--n-color-info-hover) 100%);
162
162
  color: white;
163
- box-shadow: 0 4px 12px -2px rgba(6, 182, 212, 0.3);
163
+ box-shadow: var(--n-shadow-glow-info);
164
164
  }
165
- .n-btn-info[data-v-76573beb]:hover:not(:disabled){
165
+ .n-btn-info[data-v-72f6f577]:hover:not(:disabled){
166
166
  transform: translateY(-2px);
167
- box-shadow: 0 8px 20px -3px rgba(6, 182, 212, 0.4);
167
+ box-shadow: var(--n-shadow-glow-info);
168
168
  }
169
- .n-btn-info[data-v-76573beb]:active:not(:disabled){
169
+ .n-btn-info[data-v-72f6f577]:active:not(:disabled){
170
170
  transform: translateY(0) scale(0.97);
171
171
  }
172
172
 
173
173
  /* Variant: Danger */
174
- .n-btn-danger[data-v-76573beb]{
174
+ .n-btn-danger[data-v-72f6f577]{
175
175
  background: linear-gradient(135deg, var(--n-color-danger) 0%, var(--n-color-danger-hover) 100%);
176
176
  color: white;
177
- box-shadow: 0 4px 12px -2px rgba(239, 68, 68, 0.3);
177
+ box-shadow: var(--n-shadow-glow-danger);
178
178
  }
179
- .n-btn-danger[data-v-76573beb]:hover:not(:disabled){
179
+ .n-btn-danger[data-v-72f6f577]:hover:not(:disabled){
180
180
  transform: translateY(-2px);
181
- box-shadow: 0 8px 20px -3px rgba(220, 38, 38, 0.4);
181
+ box-shadow: var(--n-shadow-glow-danger);
182
182
  }
183
- .n-btn-danger[data-v-76573beb]:active:not(:disabled){
183
+ .n-btn-danger[data-v-72f6f577]:active:not(:disabled){
184
184
  transform: translateY(0) scale(0.97);
185
185
  }
186
186
 
187
187
  /* Variant: Ghost */
188
- .n-btn-ghost[data-v-76573beb]{
188
+ .n-btn-ghost[data-v-72f6f577]{
189
189
  background: transparent;
190
190
  color: var(--n-color-text-secondary);
191
191
  }
192
- .n-btn-ghost[data-v-76573beb]:hover:not(:disabled){
192
+ .n-btn-ghost[data-v-72f6f577]:hover:not(:disabled){
193
193
  background: var(--n-color-glass);
194
194
  color: var(--n-color-text);
195
195
  }
196
196
 
197
197
  /* Variant: Outline */
198
- .n-btn-outline[data-v-76573beb]{
198
+ .n-btn-outline[data-v-72f6f577]{
199
199
  background: transparent;
200
200
  color: var(--n-color-primary);
201
201
  border-color: var(--n-color-primary);
202
202
  }
203
- .n-btn-outline[data-v-76573beb]:hover:not(:disabled){
203
+ .n-btn-outline[data-v-72f6f577]:hover:not(:disabled){
204
204
  background: var(--n-color-primary-light);
205
205
  border-color: var(--n-color-primary-hover);
206
206
  }
207
207
 
208
208
  /* Variant: Glass */
209
- .n-btn-glass[data-v-76573beb]{
209
+ .n-btn-glass[data-v-72f6f577]{
210
210
  background: var(--n-color-glass);
211
211
  backdrop-filter: blur(10px);
212
212
  border-color: var(--n-color-glass-border);
213
213
  color: var(--n-color-text);
214
214
  }
215
- .n-btn-glass[data-v-76573beb]:hover:not(:disabled){
215
+ .n-btn-glass[data-v-72f6f577]:hover:not(:disabled){
216
216
  background: var(--n-color-glass-hover);
217
217
  border-color: var(--n-color-border-hover);
218
218
  }
219
219
 
220
220
  /* Disabled */
221
- .n-btn[data-v-76573beb]:disabled{
221
+ .n-btn[data-v-72f6f577]:disabled{
222
222
  opacity: 0.45;
223
223
  cursor: not-allowed;
224
224
  transform: none !important;
@@ -226,7 +226,7 @@ const __style = `.n-btn[data-v-76573beb]{
226
226
  }
227
227
 
228
228
  /* Loader */
229
- .n-btn-loader[data-v-76573beb]{
229
+ .n-btn-loader[data-v-72f6f577]{
230
230
  width: 1rem;
231
231
  height: 1rem;
232
232
  border: 2px solid currentColor;
@@ -236,38 +236,38 @@ const __style = `.n-btn[data-v-76573beb]{
236
236
  flex-shrink: 0;
237
237
  }
238
238
 
239
- .n-btn-lg .n-btn-loader[data-v-76573beb]{
239
+ .n-btn-lg .n-btn-loader[data-v-72f6f577]{
240
240
  width: 1.25rem;
241
241
  height: 1.25rem;
242
242
  border-width: 2.5px;
243
243
  }
244
244
 
245
- .n-btn-sm .n-btn-loader[data-v-76573beb]{
245
+ .n-btn-sm .n-btn-loader[data-v-72f6f577]{
246
246
  width: 0.85rem;
247
247
  height: 0.85rem;
248
248
  }
249
249
 
250
- .n-btn-loading-text[data-v-76573beb]{
250
+ .n-btn-loading-text[data-v-72f6f577]{
251
251
  opacity: 0.8;
252
252
  font-weight: var(--n-weight-normal);
253
253
  }
254
254
 
255
- .n-btn-content[data-v-76573beb]{
255
+ .n-btn-content[data-v-72f6f577]{
256
256
  display: inline-flex;
257
257
  align-items: center;
258
258
  gap: var(--n-space-2);
259
259
  }
260
260
 
261
261
  @keyframes n-spin {
262
- from[data-v-76573beb]{ transform: rotate(0deg); }
263
- to[data-v-76573beb]{ transform: rotate(360deg); }
262
+ from[data-v-72f6f577]{ transform: rotate(0deg); }
263
+ to[data-v-72f6f577]{ transform: rotate(360deg); }
264
264
  }
265
265
 
266
266
  /* Ripple */
267
- .n-btn-ripple[data-v-76573beb]{
267
+ .n-btn-ripple[data-v-72f6f577]{
268
268
  position: absolute;
269
269
  border-radius: var(--n-radius-full);
270
- background: rgba(255, 255, 255, 0.35);
270
+ background: var(--n-color-glass);
271
271
  width: 20px;
272
272
  height: 20px;
273
273
  margin-left: -10px;
@@ -277,7 +277,7 @@ to[data-v-76573beb]{ transform: rotate(360deg); }
277
277
  }
278
278
 
279
279
  @keyframes n-ripple {
280
- from[data-v-76573beb]{ transform: scale(0); opacity: 1; }
281
- to[data-v-76573beb]{ transform: scale(8); opacity: 0; }
280
+ from[data-v-72f6f577]{ transform: scale(0); opacity: 1; }
281
+ to[data-v-72f6f577]{ transform: scale(8); opacity: 0; }
282
282
  }`
283
- injectStyle('data-v-76573beb', __style)
283
+ injectStyle('data-v-72f6f577', __style)
@@ -46,6 +46,7 @@ const btnClass = computed(() => {
46
46
  :class="btnClass.value"
47
47
  :type="type"
48
48
  :disabled="disabled || loading"
49
+ :aria-busy="loading ? 'true' : undefined"
49
50
  @click="handleClick"
50
51
  >
51
52
  <span v-if="loading" class="n-btn-loader"></span>
@@ -123,11 +124,11 @@ const btnClass = computed(() => {
123
124
  .n-btn-success {
124
125
  background: linear-gradient(135deg, var(--n-color-success) 0%, var(--n-color-success-hover) 100%);
125
126
  color: white;
126
- box-shadow: 0 4px 12px -2px rgba(16, 185, 129, 0.3);
127
+ box-shadow: var(--n-shadow-glow-success);
127
128
  }
128
129
  .n-btn-success:hover:not(:disabled) {
129
130
  transform: translateY(-2px);
130
- box-shadow: 0 8px 20px -3px rgba(16, 185, 129, 0.4);
131
+ box-shadow: var(--n-shadow-glow-success);
131
132
  }
132
133
  .n-btn-success:active:not(:disabled) {
133
134
  transform: translateY(0) scale(0.97);
@@ -137,11 +138,11 @@ const btnClass = computed(() => {
137
138
  .n-btn-warning {
138
139
  background: linear-gradient(135deg, var(--n-color-warning) 0%, var(--n-color-warning-hover) 100%);
139
140
  color: white;
140
- box-shadow: 0 4px 12px -2px rgba(245, 158, 11, 0.3);
141
+ box-shadow: var(--n-shadow-glow-warning);
141
142
  }
142
143
  .n-btn-warning:hover:not(:disabled) {
143
144
  transform: translateY(-2px);
144
- box-shadow: 0 8px 20px -3px rgba(245, 158, 11, 0.4);
145
+ box-shadow: var(--n-shadow-glow-warning);
145
146
  }
146
147
  .n-btn-warning:active:not(:disabled) {
147
148
  transform: translateY(0) scale(0.97);
@@ -151,11 +152,11 @@ const btnClass = computed(() => {
151
152
  .n-btn-info {
152
153
  background: linear-gradient(135deg, var(--n-color-info) 0%, var(--n-color-info-hover) 100%);
153
154
  color: white;
154
- box-shadow: 0 4px 12px -2px rgba(6, 182, 212, 0.3);
155
+ box-shadow: var(--n-shadow-glow-info);
155
156
  }
156
157
  .n-btn-info:hover:not(:disabled) {
157
158
  transform: translateY(-2px);
158
- box-shadow: 0 8px 20px -3px rgba(6, 182, 212, 0.4);
159
+ box-shadow: var(--n-shadow-glow-info);
159
160
  }
160
161
  .n-btn-info:active:not(:disabled) {
161
162
  transform: translateY(0) scale(0.97);
@@ -165,11 +166,11 @@ const btnClass = computed(() => {
165
166
  .n-btn-danger {
166
167
  background: linear-gradient(135deg, var(--n-color-danger) 0%, var(--n-color-danger-hover) 100%);
167
168
  color: white;
168
- box-shadow: 0 4px 12px -2px rgba(239, 68, 68, 0.3);
169
+ box-shadow: var(--n-shadow-glow-danger);
169
170
  }
170
171
  .n-btn-danger:hover:not(:disabled) {
171
172
  transform: translateY(-2px);
172
- box-shadow: 0 8px 20px -3px rgba(220, 38, 38, 0.4);
173
+ box-shadow: var(--n-shadow-glow-danger);
173
174
  }
174
175
  .n-btn-danger:active:not(:disabled) {
175
176
  transform: translateY(0) scale(0.97);
@@ -258,7 +259,7 @@ const btnClass = computed(() => {
258
259
  .n-btn-ripple {
259
260
  position: absolute;
260
261
  border-radius: var(--n-radius-full);
261
- background: rgba(255, 255, 255, 0.35);
262
+ background: var(--n-color-glass);
262
263
  width: 20px;
263
264
  height: 20px;
264
265
  margin-left: -10px;
@@ -123,7 +123,7 @@ const __style = `.n-card[data-v-28bb4c76]{
123
123
 
124
124
  .n-card-footer[data-v-28bb4c76]{
125
125
  padding: var(--n-space-4) var(--n-space-6);
126
- background: rgba(0, 0, 0, 0.15);
126
+ background: var(--n-color-glass);
127
127
  border-top: 1px solid var(--n-color-border);
128
128
  margin-top: auto;
129
129
  }`
@@ -102,7 +102,7 @@ const props = defineProps({
102
102
 
103
103
  .n-card-footer {
104
104
  padding: var(--n-space-4) var(--n-space-6);
105
- background: rgba(0, 0, 0, 0.15);
105
+ background: var(--n-color-glass);
106
106
  border-top: 1px solid var(--n-color-border);
107
107
  margin-top: auto;
108
108
  }
@@ -1,7 +1,7 @@
1
1
  import { h, hText, effect, defineComponent, registerComponent, reloadComponent, injectStyle } from 'nexa-framework'
2
2
 
3
3
  const _sfc_main = defineComponent({
4
- __scopeId: 'data-v-761e94fe',
4
+ __scopeId: 'data-v-1e350f9a',
5
5
  __hmrId: 'NCheckbox_nexa',
6
6
  props: {
7
7
  modelValue: { type: Boolean, default: false },
@@ -22,29 +22,33 @@ const _sfc_main = defineComponent({
22
22
  // Injected render function
23
23
  _sfc_main.render = function(ctx) {
24
24
  let { toggle, $slots, emit, modelValue, label, disabled, indeterminate, Fragment: _ntc_Fragment } = ctx
25
- return h('label', { class: ["n-checkbox", { 'is-checked': modelValue && !indeterminate, 'is-indeterminate': indeterminate, 'is-disabled': disabled }], "data-v-761e94fe": "" }, [
25
+ return h('label', { class: ["n-checkbox", { 'is-checked': modelValue && !indeterminate, 'is-indeterminate': indeterminate, 'is-disabled': disabled }], "data-v-1e350f9a": "" }, [
26
26
  "\n ",
27
- h('div', { class: "n-checkbox-box", onClick: toggle, "data-v-761e94fe": "" }, [
27
+ h('div', { class: "n-checkbox-box", onClick: toggle, "data-v-1e350f9a": "" }, [
28
28
  "\n ",
29
- h('span', { class: "n-checkbox-icon", "data-v-761e94fe": "" }, [
29
+ h('span', { class: "n-checkbox-icon", "data-v-1e350f9a": "" }, [
30
30
  "\n ",
31
- indeterminate ? '' : '✓',
31
+ (indeterminate) ? h('svg', { viewBox: "0 0 24 24", width: "14", height: "14", fill: "none", stroke: "currentColor", "stroke-width": "3", "stroke-linecap": "round", focusable: "false", "aria-hidden": "true", "data-v-1e350f9a": "" }, [
32
+ h('line', { x1: "4", y1: "12", x2: "20", y2: "12", "data-v-1e350f9a": "" })
33
+ ]) : (true) ? h('svg', { viewBox: "0 0 24 24", width: "14", height: "14", fill: "none", stroke: "currentColor", "stroke-width": "3", "stroke-linecap": "round", "stroke-linejoin": "round", focusable: "false", "aria-hidden": "true", "data-v-1e350f9a": "" }, [
34
+ h('path', { d: "M20 6L9 17l-5-5", "data-v-1e350f9a": "" })
35
+ ]) : null,
32
36
  "\n "
33
37
  ]),
34
38
  "\n "
35
39
  ]),
36
40
  "\n ",
37
- (label) ? h('span', { class: "n-checkbox-label", "data-v-761e94fe": "" }, [
41
+ (label) ? h('span', { class: "n-checkbox-label", "data-v-1e350f9a": "" }, [
38
42
  label
39
43
  ]) : null
40
44
  ])
41
45
  }
42
- _sfc_main.__scopeId = 'data-v-761e94fe'
46
+ _sfc_main.__scopeId = 'data-v-1e350f9a'
43
47
  _sfc_main.__hmrId = 'NCheckbox_nexa'
44
48
 
45
49
  export default _sfc_main
46
50
 
47
- const __style = `.n-checkbox[data-v-761e94fe]{
51
+ const __style = `.n-checkbox[data-v-1e350f9a]{
48
52
  display: inline-flex;
49
53
  align-items: center;
50
54
  gap: var(--n-space-3);
@@ -52,7 +56,7 @@ const __style = `.n-checkbox[data-v-761e94fe]{
52
56
  user-select: none;
53
57
  }
54
58
 
55
- .n-checkbox-box[data-v-761e94fe]{
59
+ .n-checkbox-box[data-v-1e350f9a]{
56
60
  width: 20px;
57
61
  height: 20px;
58
62
  border: 2px solid var(--n-color-border);
@@ -65,17 +69,17 @@ const __style = `.n-checkbox[data-v-761e94fe]{
65
69
  background: transparent;
66
70
  }
67
71
 
68
- .is-checked .n-checkbox-box[data-v-761e94fe]{
72
+ .is-checked .n-checkbox-box[data-v-1e350f9a]{
69
73
  background: var(--n-color-primary);
70
74
  border-color: var(--n-color-primary);
71
75
  }
72
76
 
73
- .is-indeterminate .n-checkbox-box[data-v-761e94fe]{
77
+ .is-indeterminate .n-checkbox-box[data-v-1e350f9a]{
74
78
  background: var(--n-color-primary);
75
79
  border-color: var(--n-color-primary);
76
80
  }
77
81
 
78
- .n-checkbox-icon[data-v-761e94fe]{
82
+ .n-checkbox-icon[data-v-1e350f9a]{
79
83
  color: white;
80
84
  font-size: 12px;
81
85
  font-weight: var(--n-weight-bold);
@@ -85,24 +89,24 @@ const __style = `.n-checkbox[data-v-761e94fe]{
85
89
  transition: all var(--n-transition-fast);
86
90
  }
87
91
 
88
- .is-checked .n-checkbox-icon[data-v-761e94fe],
89
- .is-indeterminate .n-checkbox-icon[data-v-761e94fe]{
92
+ .is-checked .n-checkbox-icon[data-v-1e350f9a],
93
+ .is-indeterminate .n-checkbox-icon[data-v-1e350f9a]{
90
94
  opacity: 1;
91
95
  transform: scale(1);
92
96
  }
93
97
 
94
- .n-checkbox-label[data-v-761e94fe]{
98
+ .n-checkbox-label[data-v-1e350f9a]{
95
99
  font-size: var(--n-text-sm);
96
100
  color: var(--n-color-text);
97
101
  font-weight: var(--n-weight-medium);
98
102
  }
99
103
 
100
- .is-disabled[data-v-761e94fe]{
104
+ .is-disabled[data-v-1e350f9a]{
101
105
  opacity: 0.5;
102
106
  cursor: not-allowed;
103
107
  }
104
108
 
105
- .n-checkbox[data-v-761e94fe]:hover:not(.is-disabled) .n-checkbox-box{
109
+ .n-checkbox[data-v-1e350f9a]:hover:not(.is-disabled) .n-checkbox-box{
106
110
  border-color: var(--n-color-primary);
107
111
  }`
108
- injectStyle('data-v-761e94fe', __style)
112
+ injectStyle('data-v-1e350f9a', __style)
@@ -18,7 +18,8 @@ const toggle = () => {
18
18
  <label class="n-checkbox" :class="{ 'is-checked': modelValue && !indeterminate, 'is-indeterminate': indeterminate, 'is-disabled': disabled }">
19
19
  <div class="n-checkbox-box" @click="toggle">
20
20
  <span class="n-checkbox-icon">
21
- {{ indeterminate ? '–' : '✓' }}
21
+ <svg v-if="indeterminate" viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" focusable="false" aria-hidden="true"><line x1="4" y1="12" x2="20" y2="12"/></svg>
22
+ <svg v-else viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" focusable="false" aria-hidden="true"><path d="M20 6L9 17l-5-5"/></svg>
22
23
  </span>
23
24
  </div>
24
25
  <span v-if="label" class="n-checkbox-label">{{ label }}</span>
@@ -1,7 +1,7 @@
1
1
  import { computed, h, hText, effect, defineComponent, registerComponent, reloadComponent, injectStyle } from 'nexa-framework'
2
2
 
3
3
  const _sfc_main = defineComponent({
4
- __scopeId: 'data-v-606f06fb',
4
+ __scopeId: 'data-v-205b217',
5
5
  __hmrId: 'NChips_nexa',
6
6
  props: {
7
7
  modelValue: { type: Array, default: () => [] },
@@ -46,27 +46,30 @@ const _sfc_main = defineComponent({
46
46
  // Injected render function
47
47
  _sfc_main.render = function(ctx) {
48
48
  let { resolvedModel, normalize, chips, removeAt, $slots, emit, modelValue, removable, disabled, Fragment: _ntc_Fragment } = ctx
49
- return h('div', { class: ["n-chips", { 'is-disabled': disabled }], "data-v-606f06fb": "" }, [
49
+ return h('div', { class: ["n-chips", { 'is-disabled': disabled }], "data-v-205b217": "" }, [
50
50
  "\n ",
51
51
  (chips.value).map((chip, i) =>
52
- h('div', { class: "n-chip", key: String(chip.value) + ':' + i, "data-v-606f06fb": "" }, [
52
+ h('div', { class: "n-chip", key: String(chip.value) + ':' + i, "data-v-205b217": "" }, [
53
53
  "\n ",
54
- h('span', { class: "n-chip-label", "data-v-606f06fb": "" }, [
54
+ h('span', { class: "n-chip-label", "data-v-205b217": "" }, [
55
55
  chip.label
56
56
  ]),
57
57
  "\n ",
58
- (removable) ? h('button', { class: "n-chip-remove", type: "button", disabled: disabled, "aria-label": "Remove", onClick: ($event) => { removeAt(i) }, "data-v-606f06fb": "" }, [
59
- ""
58
+ (removable) ? h('button', { class: "n-chip-remove", type: "button", disabled: disabled, "aria-label": "Remove", onClick: ($event) => { removeAt(i) }, "data-v-205b217": "" }, [
59
+ h('svg', { viewBox: "0 0 24 24", width: "12", height: "12", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round", focusable: "false", "aria-hidden": "true", "data-v-205b217": "" }, [
60
+ h('path', { d: "M18 6L6 18", "data-v-205b217": "" }),
61
+ h('path', { d: "M6 6l12 12", "data-v-205b217": "" })
62
+ ])
60
63
  ]) : null
61
64
  ])
62
65
  ),
63
66
  "\n "
64
67
  ])
65
68
  }
66
- _sfc_main.__scopeId = 'data-v-606f06fb'
69
+ _sfc_main.__scopeId = 'data-v-205b217'
67
70
  _sfc_main.__hmrId = 'NChips_nexa'
68
71
 
69
72
  export default _sfc_main
70
73
 
71
- const __style = `.n-chips[data-v-606f06fb]{display:flex;flex-wrap:wrap;gap:var(--n-space-2);align-items:center}.n-chip{display:inline-flex;align-items:center;gap:0.35rem;padding:0.25rem 0.5rem;border-radius:999px;background:var(--n-color-glass);border:1px solid var(--n-color-border);color:var(--n-color-text);font-size:var(--n-text-xs);line-height:1}.n-chip-remove{background:transparent;border:none;color:var(--n-color-text-muted);cursor:pointer;padding:0;border-radius:var(--n-radius-sm);line-height:1;display:flex;align-items:center}.n-chip-remove:hover:not(:disabled){color:var(--n-color-text)}.n-chip-remove:disabled{opacity:0.5;cursor:not-allowed}.is-disabled{opacity:0.6}`
72
- injectStyle('data-v-606f06fb', __style)
74
+ const __style = `.n-chips[data-v-205b217]{display:flex;flex-wrap:wrap;gap:var(--n-space-2);align-items:center}.n-chip{display:inline-flex;align-items:center;gap:0.35rem;padding:0.25rem 0.5rem;border-radius:999px;background:var(--n-color-glass);border:1px solid var(--n-color-border);color:var(--n-color-text);font-size:var(--n-text-xs);line-height:1}.n-chip-remove{background:transparent;border:none;color:var(--n-color-text-muted);cursor:pointer;padding:0;border-radius:var(--n-radius-sm);line-height:1;display:flex;align-items:center}.n-chip-remove:hover:not(:disabled){color:var(--n-color-text)}.n-chip-remove:disabled{opacity:0.5;cursor:not-allowed}.is-disabled{opacity:0.6}`
75
+ injectStyle('data-v-205b217', __style)
@@ -47,7 +47,7 @@ const removeAt = (index) => {
47
47
  <div class="n-chips" :class="{ 'is-disabled': disabled }">
48
48
  <div v-for="(chip, i) in chips.value" :key="String(chip.value) + ':' + i" class="n-chip">
49
49
  <span class="n-chip-label">{{ chip.label }}</span>
50
- <button v-if="removable" type="button" class="n-chip-remove" :disabled="disabled" aria-label="Remove" @click="removeAt(i)">✕</button>
50
+ <button v-if="removable" type="button" class="n-chip-remove" :disabled="disabled" aria-label="Remove" @click="removeAt(i)"><svg viewBox="0 0 24 24" width="12" height="12" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" focusable="false" aria-hidden="true"><path d="M18 6L6 18"/><path d="M6 6l12 12"/></svg></button>
51
51
  </div>
52
52
  </div>
53
53
  </template>