nexa-ui-kit 0.10.0 → 0.11.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 (73) hide show
  1. package/dist/components/NAlert.js +49 -28
  2. package/dist/components/NAlert.nexa +12 -6
  3. package/dist/components/NAutocomplete.js +25 -20
  4. package/dist/components/NAutocomplete.nexa +3 -3
  5. package/dist/components/NAvatar.js +1 -1
  6. package/dist/components/NBadge.js +1 -1
  7. package/dist/components/NBottomSheet.js +17 -17
  8. package/dist/components/NBottomSheet.nexa +2 -2
  9. package/dist/components/NButton.js +59 -59
  10. package/dist/components/NButton.nexa +10 -9
  11. package/dist/components/NCard.js +2 -2
  12. package/dist/components/NCard.nexa +1 -1
  13. package/dist/components/NCheckbox.js +23 -19
  14. package/dist/components/NCheckbox.nexa +2 -1
  15. package/dist/components/NChips.js +13 -10
  16. package/dist/components/NChips.nexa +1 -1
  17. package/dist/components/NDataTable.js +360 -42
  18. package/dist/components/NDataTable.nexa +318 -10
  19. package/dist/components/NDatepicker.js +52 -43
  20. package/dist/components/NDatepicker.nexa +3 -3
  21. package/dist/components/NForm.js +1 -1
  22. package/dist/components/NFormField.js +1 -1
  23. package/dist/components/NInput.js +51 -41
  24. package/dist/components/NInput.nexa +4 -3
  25. package/dist/components/NInputNumber.js +18 -13
  26. package/dist/components/NInputNumber.nexa +2 -2
  27. package/dist/components/NModal.js +34 -28
  28. package/dist/components/NModal.nexa +4 -4
  29. package/dist/components/NMultiSelect.js +47 -38
  30. package/dist/components/NMultiSelect.nexa +3 -3
  31. package/dist/components/NPaginator.js +29 -21
  32. package/dist/components/NPaginator.nexa +4 -4
  33. package/dist/components/NPassword.js +61 -47
  34. package/dist/components/NPassword.nexa +5 -4
  35. package/dist/components/NProgressBar.js +5 -5
  36. package/dist/components/NProgressBar.nexa +4 -4
  37. package/dist/components/NRadio.js +1 -1
  38. package/dist/components/NScrollView.js +1 -1
  39. package/dist/components/NSelect.js +68 -63
  40. package/dist/components/NSelect.nexa +4 -4
  41. package/dist/components/NSkeleton.js +1 -1
  42. package/dist/components/NSwitch.js +1 -1
  43. package/dist/components/NTabs.js +1 -1
  44. package/dist/components/NTag.js +27 -24
  45. package/dist/components/NTag.nexa +6 -6
  46. package/dist/components/NToastContainer.js +65 -49
  47. package/dist/components/NToastContainer.nexa +6 -3
  48. package/dist/components/NTooltip.js +1 -1
  49. package/dist/components/NTreeMenu.js +74 -35
  50. package/dist/components/NTreeMenu.nexa +52 -15
  51. package/dist/styles/tokens.css +18 -0
  52. package/package.json +4 -4
  53. package/src/components/NAlert.nexa +12 -6
  54. package/src/components/NAutocomplete.nexa +3 -3
  55. package/src/components/NBottomSheet.nexa +2 -2
  56. package/src/components/NButton.nexa +10 -9
  57. package/src/components/NCard.nexa +1 -1
  58. package/src/components/NCheckbox.nexa +2 -1
  59. package/src/components/NChips.nexa +1 -1
  60. package/src/components/NDataTable.nexa +318 -10
  61. package/src/components/NDatepicker.nexa +3 -3
  62. package/src/components/NInput.nexa +4 -3
  63. package/src/components/NInputNumber.nexa +2 -2
  64. package/src/components/NModal.nexa +4 -4
  65. package/src/components/NMultiSelect.nexa +3 -3
  66. package/src/components/NPaginator.nexa +4 -4
  67. package/src/components/NPassword.nexa +5 -4
  68. package/src/components/NProgressBar.nexa +4 -4
  69. package/src/components/NSelect.nexa +4 -4
  70. package/src/components/NTag.nexa +6 -6
  71. package/src/components/NToastContainer.nexa +6 -3
  72. package/src/components/NTreeMenu.nexa +52 -15
  73. package/src/styles/tokens.css +18 -0
@@ -1,10 +1,10 @@
1
- import { signal, computed, effect, h, hText, onMounted, onUnmounted, defineComponent, registerComponent, reloadComponent, injectStyle } from 'nexa-framework'
1
+ import { signal, computed, effect, h, hText, defineComponent, registerComponent, reloadComponent, injectStyle } from 'nexa-framework'
2
2
  import NPaginator from './NPaginator.js'
3
3
 
4
4
  const _sfc_main = defineComponent({
5
- __scopeId: 'data-v-5251de24',
5
+ __scopeId: 'data-v-12cb4cef',
6
6
  __hmrId: 'NDataTable_nexa',
7
- props: { value: { type: Array, default: () => [] }, columns: { type: Array, default: () => [] }, stripedRows: { type: Boolean, default: false }, hoverRows: { type: Boolean, default: true }, size: { type: String, default: 'md' }, scrollable: { type: Boolean, default: true }, paginator: { type: Boolean, default: true }, rows: { type: Number, default: 10 }, first: { type: Number, default: 0 }, rowsPerPageOptions: { type: Array, default: () => [10, 20, 50] }, selectionMode: { type: String, default: '' }, selection: { type: null, default: null }, dataKey: { type: String, default: '' }, sortField: { type: String, default: '' }, sortOrder: { type: Number, default: 1 }, resizableColumns: { type: Boolean, default: true }, columnResizeMode: { type: String, default: 'fit' }, filterDisplay: { type: String, default: 'row' }, globalFilter: { type: String, default: '' }, globalFilterFields: { type: Array, default: null }, filters: { type: null, default: null }, lazy: { type: Boolean, default: false }, totalRecords: { type: Number, default: 0 }, emptyMessage: { type: String, default: 'No records found' }, showGridlines: { type: Boolean, default: false } },
7
+ props: { value: { type: Array, default: () => [] }, columns: { type: Array, default: () => [] }, stripedRows: { type: Boolean, default: false }, hoverRows: { type: Boolean, default: true }, size: { type: String, default: 'md' }, scrollable: { type: Boolean, default: true }, paginator: { type: Boolean, default: true }, rows: { type: Number, default: 10 }, first: { type: Number, default: 0 }, rowsPerPageOptions: { type: Array, default: () => [10, 20, 50] }, selectionMode: { type: String, default: '' }, selection: { type: null, default: null }, dataKey: { type: String, default: '' }, sortField: { type: String, default: '' }, sortOrder: { type: Number, default: 1 }, resizableColumns: { type: Boolean, default: true }, columnResizeMode: { type: String, default: 'fit' }, filterDisplay: { type: String, default: 'row' }, globalFilter: { type: String, default: '' }, globalFilterFields: { type: Array, default: null }, filters: { type: null, default: null }, lazy: { type: Boolean, default: false }, totalRecords: { type: Number, default: 0 }, emptyMessage: { type: String, default: 'No records found' }, showGridlines: { type: Boolean, default: false }, searchPlaceholder: { type: String, default: 'Search...' }, filterPlaceholder: { type: String, default: 'Filter' }, loading: { type: Boolean, default: false } },
8
8
  emits: ['update:first', 'update:rows', 'update:selection', 'update:sortField', 'update:sortOrder', 'update:globalFilter', 'update:filters', 'updateFirst', 'updateRows', 'updateSelection', 'updateSortField', 'updateSortOrder', 'updateGlobalFilter', 'updateFilters', 'page', 'rowSelect', 'rowUnselect', 'sort', 'filter'],
9
9
  setup(props, setupContext) {
10
10
  const { emit, slots, slots: $slots } = setupContext
@@ -166,72 +166,100 @@ const _sfc_main = defineComponent({
166
166
  })
167
167
  // Injected render function
168
168
  _sfc_main.render = function(ctx) {
169
- let { internalFirst, internalRows, internalSortField, internalSortOrder, internalFilters, effectiveFilters, columnWidths, resizing, internalSelection, lastPropGlobal, lastPropSelection, normalizeColumns, getRowKey, effectiveSelection, isRowSelected, toggleRowSelection, allVisibleSelected, toggleAllVisible, getHeaderContent, getRawValue, getCellContent, matchFilter, filteredRows, sortedRows, totalRecords, visibleRows, setSort, onSortClick, setGlobal, setColumnFilter, onColumnFilterInput, onPage, getWidth, startResize, NPaginator: _ntc_NPaginator, $slots, emit, value, columns, stripedRows, hoverRows, size, scrollable, paginator, rows, first, rowsPerPageOptions, selectionMode, selection, dataKey, sortField, sortOrder, resizableColumns, columnResizeMode, filterDisplay, globalFilter, globalFilterFields, filters, lazy, emptyMessage, showGridlines, Fragment: _ntc_Fragment } = ctx
170
- return h('div', { class: ["n-dt", [`n-dt-${size}`, showGridlines ? 'is-grid' : '', scrollable ? 'is-scroll' : '']], "data-v-5251de24": "" }, [
171
- "\r\n ",
172
- h('div', { class: "n-dt-toolbar", "data-v-5251de24": "" }, [
173
- h('div', { class: "n-dt-global", "data-v-5251de24": "" }, [
174
- h('input', { class: "n-dt-global-input", value: effectiveFilters.value.__global || '', placeholder: "Search...", onInput: setGlobal, "data-v-5251de24": "" })
175
- ])
169
+ let { internalFirst, internalRows, internalSortField, internalSortOrder, internalFilters, effectiveFilters, columnWidths, resizing, internalSelection, lastPropGlobal, lastPropSelection, normalizeColumns, getRowKey, effectiveSelection, isRowSelected, toggleRowSelection, allVisibleSelected, toggleAllVisible, getHeaderContent, getRawValue, getCellContent, matchFilter, filteredRows, sortedRows, totalRecords, visibleRows, setSort, onSortClick, setGlobal, setColumnFilter, onColumnFilterInput, onPage, getWidth, startResize, NPaginator: _ntc_NPaginator, $slots, emit, value, columns, stripedRows, hoverRows, size, scrollable, paginator, rows, first, rowsPerPageOptions, selectionMode, selection, dataKey, sortField, sortOrder, resizableColumns, columnResizeMode, filterDisplay, globalFilter, globalFilterFields, filters, lazy, emptyMessage, showGridlines, searchPlaceholder, filterPlaceholder, loading, Fragment: _ntc_Fragment } = ctx
170
+ return h('div', { class: ["n-dt", [`n-dt-${size}`, showGridlines ? 'is-grid' : '', scrollable ? 'is-scroll' : '']], "aria-busy": loading ? 'true' : undefined, "data-v-12cb4cef": "" }, [
171
+ "\n ",
172
+ h('div', { class: "n-dt-toolbar", "data-v-12cb4cef": "" }, [
173
+ "\r\n ",
174
+ h('div', { class: "n-dt-global", "data-v-12cb4cef": "" }, [
175
+ "\r\n ",
176
+ h('svg', { viewBox: "0 0 24 24", width: "16", height: "16", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round", focusable: "false", "aria-hidden": "true", "data-v-12cb4cef": "" }, [
177
+ h('circle', { cx: "11", cy: "11", r: "8", "data-v-12cb4cef": "" }),
178
+ h('line', { x1: "21", y1: "21", x2: "16.65", y2: "16.65", "data-v-12cb4cef": "" })
179
+ ]),
180
+ "\r\n ",
181
+ h('input', { class: "n-dt-global-input", value: effectiveFilters.value.__global || '', placeholder: searchPlaceholder, onInput: setGlobal, "data-v-12cb4cef": "" }),
182
+ "\r\n "
183
+ ]),
184
+ "\r\n "
176
185
  ]),
177
186
  "\r\n ",
178
- h('div', { class: "n-dt-wrapper", "data-v-5251de24": "" }, [
187
+ h('div', { class: "n-dt-wrapper", "data-v-12cb4cef": "" }, [
179
188
  "\r\n ",
180
- h('table', { class: ["n-dt-table", { 'is-striped': stripedRows, 'is-hover': hoverRows }], "data-v-5251de24": "" }, [
189
+ h('table', { class: ["n-dt-table", { 'is-striped': stripedRows, 'is-hover': hoverRows }], "data-v-12cb4cef": "" }, [
181
190
  "\r\n ",
182
- h('thead', { class: "n-dt-thead", "data-v-5251de24": "" }, [
191
+ h('thead', { class: "n-dt-thead", "data-v-12cb4cef": "" }, [
183
192
  "\r\n ",
184
- h('tr', { class: "n-dt-head-row", "data-v-5251de24": "" }, [
193
+ h('tr', { class: "n-dt-head-row", "data-v-12cb4cef": "" }, [
185
194
  "\r\n ",
186
- (selectionMode) ? h('th', { class: "n-dt-th is-selection", "data-v-5251de24": "" }, [
187
- (selectionMode === 'multiple') ? h('input', { class: "n-dt-selectbox", type: "checkbox", checked: allVisibleSelected.value, onClick: ($event) => { $event.stopPropagation(); (toggleAllVisible)($event) }, "data-v-5251de24": "" }) : null
195
+ (selectionMode) ? h('th', { class: "n-dt-th is-selection", "data-v-12cb4cef": "" }, [
196
+ "\r\n ",
197
+ (selectionMode === 'multiple') ? h('button', { class: ["n-dt-selectbox", { 'is-checked': allVisibleSelected.value }], type: "button", onClick: ($event) => { $event.stopPropagation(); (toggleAllVisible)($event) }, "aria-label": allVisibleSelected.value ? 'Deselect all' : 'Select all', "data-v-12cb4cef": "" }, [
198
+ "\r\n ",
199
+ 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-12cb4cef": "" }, [
200
+ h('path', { d: "M20 6L9 17l-5-5", "data-v-12cb4cef": "" })
201
+ ]),
202
+ "\r\n "
203
+ ]) : null
188
204
  ]) : null,
189
205
  (normalizeColumns.value).map((col, index) =>
190
- h('th', { class: ["n-dt-th", [`is-${col.align}`, col.sortable ? 'is-sortable' : '']], key: col.field, style: { width: getWidth(col) || undefined, minWidth: col.minWidth }, "data-field": col.field, onClick: onSortClick, "data-v-5251de24": "" }, [
206
+ h('th', { class: ["n-dt-th", [`is-${col.align}`, col.sortable ? 'is-sortable' : '']], key: col.field, style: { width: getWidth(col) || undefined, minWidth: col.minWidth }, "data-field": col.field, onClick: onSortClick, "data-v-12cb4cef": "" }, [
191
207
  "\r\n ",
192
- h('div', { class: "n-dt-th-content", "data-v-5251de24": "" }, [
208
+ h('div', { class: "n-dt-th-content", "data-v-12cb4cef": "" }, [
193
209
  "\r\n ",
194
- h('span', { class: "n-dt-th-text", "data-v-5251de24": "" }, [
210
+ h('span', { class: "n-dt-th-text", "data-v-12cb4cef": "" }, [
195
211
  $slots.value && $slots.value[`header-${col.field}`] ? $slots[`header-${col.field}`]({ column: col }) : getHeaderContent(col)
196
212
  ]),
197
213
  "\r\n ",
198
- (col.sortable) ? h('span', { class: ["n-dt-sort", { 'is-active': internalSortField.value === col.field }], "data-v-5251de24": "" }, [
214
+ (col.sortable) ? h('span', { class: ["n-dt-sort", { 'is-active': internalSortField.value === col.field }], "data-v-12cb4cef": "" }, [
199
215
  "\r\n ",
200
- (internalSortField.value !== col.field) ? h('span', { class: "n-dt-sort-icon", "data-v-5251de24": "" }, [
201
- ""
202
- ]) : (true) ? h('span', { class: "n-dt-sort-icon", "data-v-5251de24": "" }, [
203
- internalSortOrder.value === 1 ? '↑' : '↓'
204
- ]) : null,
216
+ h('svg', { class: ["n-dt-sort-arrow n-dt-sort-arrow-up", { 'is-on': internalSortField.value === col.field && internalSortOrder.value === 1 }], viewBox: "0 0 24 24", width: "16", height: "16", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round", focusable: "false", "aria-hidden": "true", "data-v-12cb4cef": "" }, [
217
+ h('path', { d: "M12 19V5M5 12l7-7 7 7", "data-v-12cb4cef": "" })
218
+ ]),
219
+ "\r\n ",
220
+ h('svg', { class: ["n-dt-sort-arrow n-dt-sort-arrow-down", { 'is-on': internalSortField.value === col.field && internalSortOrder.value === -1 }], viewBox: "0 0 24 24", width: "16", height: "16", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round", focusable: "false", "aria-hidden": "true", "data-v-12cb4cef": "" }, [
221
+ h('path', { d: "M12 5v14M19 12l-7 7-7-7", "data-v-12cb4cef": "" })
222
+ ]),
205
223
  "\r\n "
206
224
  ]) : null
207
225
  ]),
208
226
  "\r\n ",
209
- (resizableColumns) ? h('span', { class: "n-dt-resizer", "data-field": col.field, onMousedown: startResize, "data-v-5251de24": "" }) : null
227
+ (resizableColumns) ? h('span', { class: "n-dt-resizer", "data-field": col.field, onMousedown: startResize, "data-v-12cb4cef": "" }) : null
210
228
  ])
211
229
  ),
212
230
  "\r\n "
213
231
  ]),
214
232
  "\r\n ",
215
- (filterDisplay === 'row') ? h('tr', { class: "n-dt-filter-row", "data-v-5251de24": "" }, [
216
- (selectionMode) ? h('th', { class: "n-dt-th is-selection", "data-v-5251de24": "" }) : null,
233
+ (filterDisplay === 'row') ? h('tr', { class: "n-dt-filter-row", "data-v-12cb4cef": "" }, [
234
+ "\r\n ",
235
+ (selectionMode) ? h('th', { class: "n-dt-th is-selection", "data-v-12cb4cef": "" }) : null,
217
236
  (normalizeColumns.value).map((col, index) =>
218
- h('th', { class: ["n-dt-th", `is-${col.align}`], key: col.field, style: { width: getWidth(col) || undefined, minWidth: col.minWidth }, "data-v-5251de24": "" }, [
219
- (col.filterable) ? h('input', { class: "n-dt-filter", "data-field": col.field, value: (effectiveFilters.value[col.field]?.value) || '', placeholder: "Filter", onInput: onColumnFilterInput, "data-v-5251de24": "" }) : null
237
+ h('th', { class: ["n-dt-th", `is-${col.align}`], key: col.field, style: { width: getWidth(col) || undefined, minWidth: col.minWidth }, "data-v-12cb4cef": "" }, [
238
+ "\r\n ",
239
+ (col.filterable) ? h('input', { class: "n-dt-filter", "data-field": col.field, value: (effectiveFilters.value[col.field]?.value) || '', placeholder: filterPlaceholder, onInput: onColumnFilterInput, "data-v-12cb4cef": "" }) : null
220
240
  ])
221
- )
241
+ ),
242
+ "\r\n "
222
243
  ]) : null
223
244
  ]),
224
245
  "\r\n ",
225
- h('tbody', { class: "n-dt-tbody", "data-v-5251de24": "" }, [
246
+ h('tbody', { class: "n-dt-tbody", "data-v-12cb4cef": "" }, [
226
247
  "\r\n ",
227
248
  (visibleRows.value).map((row, i) =>
228
- h('tr', { class: ["n-dt-row", { 'is-selected': isRowSelected(row, i + internalFirst.value) }], key: getRowKey(row, i + internalFirst.value), onClick: ($event) => { toggleRowSelection(row, i + internalFirst.value) }, "data-v-5251de24": "" }, [
249
+ h('tr', { class: ["n-dt-row", { 'is-selected': isRowSelected(row, i + internalFirst.value) }], key: getRowKey(row, i + internalFirst.value), onClick: ($event) => { toggleRowSelection(row, i + internalFirst.value) }, "data-v-12cb4cef": "" }, [
229
250
  "\r\n ",
230
- (selectionMode) ? h('td', { class: "n-dt-td is-selection", "data-v-5251de24": "" }, [
231
- h('input', { class: "n-dt-selectbox", type: "checkbox", checked: isRowSelected(row, i + internalFirst.value), onClick: ($event) => { $event.stopPropagation(); (($event) => { toggleRowSelection(row, i + internalFirst.value) })($event) }, "data-v-5251de24": "" })
251
+ (selectionMode) ? h('td', { class: "n-dt-td is-selection", "data-v-12cb4cef": "" }, [
252
+ "\r\n ",
253
+ (selectionMode === 'multiple') ? h('button', { class: ["n-dt-selectbox", { 'is-checked': isRowSelected(row, i + internalFirst.value) }], type: "button", onClick: ($event) => { $event.stopPropagation(); (($event) => { toggleRowSelection(row, i + internalFirst.value) })($event) }, "aria-label": isRowSelected(row, i + internalFirst.value) ? 'Deselect row' : 'Select row', "data-v-12cb4cef": "" }, [
254
+ "\r\n ",
255
+ 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-12cb4cef": "" }, [
256
+ h('path', { d: "M20 6L9 17l-5-5", "data-v-12cb4cef": "" })
257
+ ]),
258
+ "\r\n "
259
+ ]) : null
232
260
  ]) : null,
233
261
  (normalizeColumns.value).map((col, index) =>
234
- h('td', { class: ["n-dt-td", `is-${col.align}`], key: col.field, style: { width: getWidth(col) || undefined, minWidth: col.minWidth }, "data-v-5251de24": "" }, [
262
+ h('td', { class: ["n-dt-td", `is-${col.align}`], key: col.field, style: { width: getWidth(col) || undefined, minWidth: col.minWidth }, "data-v-12cb4cef": "" }, [
235
263
  "\r\n ",
236
264
  $slots.value && $slots.value[`body-${col.field}`] ? $slots[`body-${col.field}`]({ data: row, column: col, index: i + internalFirst.value }) : getCellContent(row, col, i + internalFirst.value),
237
265
  "\r\n "
@@ -241,8 +269,8 @@ _sfc_main.render = function(ctx) {
241
269
  ])
242
270
  ),
243
271
  "\r\n ",
244
- (visibleRows.value.length === 0) ? h('tr', { class: "n-dt-empty-row", "data-v-5251de24": "" }, [
245
- h('td', { class: "n-dt-empty", colspan: normalizeColumns.value.length + (selectionMode ? 1 : 0), "data-v-5251de24": "" }, [
272
+ (visibleRows.value.length === 0) ? h('tr', { class: "n-dt-empty-row", "data-v-12cb4cef": "" }, [
273
+ h('td', { class: "n-dt-empty", colspan: normalizeColumns.value.length + (selectionMode ? 1 : 0), "data-v-12cb4cef": "" }, [
246
274
  emptyMessage
247
275
  ])
248
276
  ]) : null
@@ -252,13 +280,303 @@ _sfc_main.render = function(ctx) {
252
280
  "\r\n "
253
281
  ]),
254
282
  "\r\n ",
255
- (paginator) ? h(_ntc_NPaginator, { first: internalFirst.value, rows: internalRows.value, totalRecords: totalRecords.value, rowsPerPageOptions: rowsPerPageOptions, onPage: onPage, "data-v-5251de24": "" }) : null
283
+ (paginator) ? h(_ntc_NPaginator, { first: internalFirst.value, rows: internalRows.value, totalRecords: totalRecords.value, rowsPerPageOptions: rowsPerPageOptions, onPage: onPage, "data-v-12cb4cef": "" }) : null
256
284
  ])
257
285
  }
258
- _sfc_main.__scopeId = 'data-v-5251de24'
286
+ _sfc_main.__scopeId = 'data-v-12cb4cef'
259
287
  _sfc_main.__hmrId = 'NDataTable_nexa'
260
288
 
261
289
  export default _sfc_main
262
290
 
263
- const __style = `.n-dt[data-v-5251de24]{border:1px solid var(--n-color-border);border-radius:var(--n-radius-lg);background:var(--n-color-surface);overflow:hidden;font-family:var(--n-font-sans)}.n-dt-toolbar{display:flex;align-items:center;justify-content:space-between;padding:var(--n-space-3) var(--n-space-4);border-bottom:1px solid var(--n-color-border);background:linear-gradient(180deg,rgba(255,255,255,.04),rgba(0,0,0,.08))}.n-dt-global{display:flex;align-items:center;gap:var(--n-space-2)}.n-dt-global-input{width:280px;max-width:100%;background:var(--n-color-bg);border:1px solid var(--n-color-border);border-radius:var(--n-radius-md);padding:0.55rem 0.75rem;color:var(--n-color-text);font-size:var(--n-text-sm);outline:none;box-sizing:border-box}.n-dt-global-input:focus{border-color:var(--n-color-primary);box-shadow:0 0 0 3px var(--n-color-primary-light)}.n-dt-wrapper{width:100%;overflow:auto}.n-dt-table{width:100%;border-collapse:separate;border-spacing:0;table-layout:fixed}.n-dt-thead{background:var(--n-color-surface)}.n-dt-th,.n-dt-td{padding:0.75rem 0.9rem;border-bottom:1px solid var(--n-color-border);color:var(--n-color-text);font-size:var(--n-text-sm);vertical-align:middle}.n-dt-th{position:relative;overflow:hidden;background:rgba(0,0,0,.10);color:var(--n-color-text-secondary);font-weight:var(--n-weight-semibold);user-select:none}.n-dt-th.is-sortable{cursor:pointer}.n-dt-th-content{display:flex;align-items:center;justify-content:space-between;gap:0.5rem}.n-dt-sort{display:inline-flex;align-items:center;gap:0.25rem;color:var(--n-color-text-muted)}.n-dt-sort.is-active{color:var(--n-color-primary)}.n-dt-resizer{position:absolute;right:0;top:0;bottom:0;width:8px;cursor:col-resize}.n-dt-filter-row .n-dt-th{background:rgba(0,0,0,.06)}.n-dt-filter{width:100%;max-width:100%;display:block;background:var(--n-color-bg);border:1px solid var(--n-color-border);border-radius:var(--n-radius-sm);padding:0.35rem 0.5rem;color:var(--n-color-text);font-size:var(--n-text-xs);outline:none;box-sizing:border-box}.n-dt-filter:focus{border-color:var(--n-color-primary)}.n-dt-td{background:transparent;color:var(--n-color-text)}.n-dt-row.is-selected .n-dt-td{background:rgba(59,130,246,.12)}.n-dt-table.is-striped .n-dt-row:nth-child(even) .n-dt-td{background:rgba(0,0,0,.06)}.n-dt-table.is-hover .n-dt-row:hover .n-dt-td{background:rgba(255,255,255,.06)}.n-dt-empty{text-align:center;color:var(--n-color-text-muted);padding:1.25rem}.is-left{text-align:left}.is-right{text-align:right}.is-center{text-align:center}.is-selection{width:44px;min-width:44px;max-width:44px;text-align:center}.n-dt-selectbox{width:16px;height:16px;accent-color:var(--n-color-primary)}.n-dt-check{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:4px;border:1px solid var(--n-color-border);color:var(--n-color-primary)}.is-grid .n-dt-td,.is-grid .n-dt-th{border-right:1px solid var(--n-color-border)}.is-grid .n-dt-td:last-child,.is-grid .n-dt-th:last-child{border-right:none}.n-dt-sm .n-dt-th,.n-dt-sm .n-dt-td{padding:0.55rem 0.7rem}.n-dt-lg .n-dt-th,.n-dt-lg .n-dt-td{padding:0.9rem 1rem}`
264
- injectStyle('data-v-5251de24', __style)
291
+ const __style = `.n-dt[data-v-12cb4cef]{
292
+ border: 1px solid var(--n-color-border);
293
+ border-radius: var(--n-radius-lg);
294
+ background: var(--n-color-surface);
295
+ overflow: hidden;
296
+ font-family: var(--n-font-sans);
297
+ }
298
+
299
+ .n-dt.is-grid[data-v-12cb4cef]{
300
+ border-color: var(--n-color-border);
301
+ }
302
+
303
+ .n-dt.is-grid .n-dt-th[data-v-12cb4cef],
304
+ .n-dt.is-grid .n-dt-td[data-v-12cb4cef]{
305
+ border: 1px solid var(--n-color-border);
306
+ }
307
+
308
+ .n-dt-toolbar[data-v-12cb4cef]{
309
+ display: flex;
310
+ align-items: center;
311
+ justify-content: space-between;
312
+ padding: 0.75rem 1rem;
313
+ border-bottom: 1px solid var(--n-color-border);
314
+ }
315
+
316
+ .n-dt-global[data-v-12cb4cef]{
317
+ display: flex;
318
+ align-items: center;
319
+ gap: 0.5rem;
320
+ color: var(--n-color-text-muted);
321
+ }
322
+
323
+ .n-dt-global-input[data-v-12cb4cef]{
324
+ width: 260px;
325
+ max-width: 100%;
326
+ background: transparent;
327
+ border: 1px solid var(--n-color-border);
328
+ border-radius: var(--n-radius-md);
329
+ padding: 0.45rem 0.75rem;
330
+ color: var(--n-color-text);
331
+ font-size: var(--n-text-sm);
332
+ outline: none;
333
+ box-sizing: border-box;
334
+ transition: border-color 0.15s ease;
335
+ }
336
+
337
+ .n-dt-global-input[data-v-12cb4cef]:focus{
338
+ border-color: var(--n-color-primary);
339
+ }
340
+
341
+ .n-dt-wrapper[data-v-12cb4cef]{
342
+ width: 100%;
343
+ overflow: auto;
344
+ }
345
+
346
+ .n-dt-table[data-v-12cb4cef]{
347
+ width: 100%;
348
+ border-collapse: collapse;
349
+ table-layout: fixed;
350
+ }
351
+
352
+ .n-dt-thead[data-v-12cb4cef]{
353
+ background: var(--n-color-surface);
354
+ }
355
+
356
+ .n-dt-th[data-v-12cb4cef]{
357
+ position: relative;
358
+ padding: 0.65rem 0.85rem;
359
+ border-bottom: 2px solid var(--n-color-border);
360
+ color: var(--n-color-text-secondary);
361
+ font-size: var(--n-text-sm);
362
+ font-weight: var(--n-weight-semibold);
363
+ user-select: none;
364
+ vertical-align: middle;
365
+ text-align: left;
366
+ background: var(--n-color-surface);
367
+ transition: background 0.15s ease;
368
+ }
369
+
370
+ .n-dt-th.is-sortable[data-v-12cb4cef]{
371
+ cursor: pointer;
372
+ }
373
+
374
+ .n-dt-th.is-sortable[data-v-12cb4cef]:hover{
375
+ background: var(--n-color-glass);
376
+ }
377
+
378
+ .n-dt-th.is-right[data-v-12cb4cef]{
379
+ text-align: right;
380
+ }
381
+
382
+ .n-dt-th.is-center[data-v-12cb4cef]{
383
+ text-align: center;
384
+ }
385
+
386
+ .n-dt-th.is-selection[data-v-12cb4cef]{
387
+ width: 3rem;
388
+ text-align: center;
389
+ }
390
+
391
+ .n-dt-th-content[data-v-12cb4cef]{
392
+ display: flex;
393
+ align-items: center;
394
+ gap: 0.35rem;
395
+ }
396
+
397
+ .n-dt-th.is-right .n-dt-th-content[data-v-12cb4cef]{
398
+ justify-content: flex-end;
399
+ }
400
+
401
+ .n-dt-th.is-center .n-dt-th-content[data-v-12cb4cef]{
402
+ justify-content: center;
403
+ }
404
+
405
+ .n-dt-th-text[data-v-12cb4cef]{
406
+ overflow: hidden;
407
+ text-overflow: ellipsis;
408
+ white-space: nowrap;
409
+ }
410
+
411
+ .n-dt-sort[data-v-12cb4cef]{
412
+ display: inline-flex;
413
+ flex-direction: column;
414
+ align-items: center;
415
+ gap: 0;
416
+ line-height: 1;
417
+ margin-left: auto;
418
+ flex-shrink: 0;
419
+ }
420
+
421
+ .n-dt-sort-arrow[data-v-12cb4cef]{
422
+ display: block;
423
+ color: var(--n-color-border);
424
+ transition: color 0.15s ease;
425
+ margin: -3px 0;
426
+ }
427
+
428
+ .n-dt-sort-arrow-up.is-on[data-v-12cb4cef]{
429
+ color: var(--n-color-primary);
430
+ }
431
+
432
+ .n-dt-sort-arrow-down.is-on[data-v-12cb4cef]{
433
+ color: var(--n-color-primary);
434
+ }
435
+
436
+ .n-dt-th.is-sortable[data-v-12cb4cef]:hover .n-dt-sort-arrow{
437
+ color: var(--n-color-text-muted);
438
+ }
439
+
440
+ .n-dt-resizer[data-v-12cb4cef]{
441
+ position: absolute;
442
+ right: 0;
443
+ top: 0;
444
+ bottom: 0;
445
+ width: 6px;
446
+ cursor: col-resize;
447
+ background: transparent;
448
+ transition: background 0.15s ease;
449
+ }
450
+
451
+ .n-dt-resizer[data-v-12cb4cef]:hover{
452
+ background: var(--n-color-primary);
453
+ opacity: 0.4;
454
+ }
455
+
456
+ .n-dt-filter-row .n-dt-th[data-v-12cb4cef]{
457
+ border-bottom: 1px solid var(--n-color-border);
458
+ padding: 0.5rem 0.6rem;
459
+ background: var(--n-color-surface);
460
+ }
461
+
462
+ .n-dt-filter[data-v-12cb4cef]{
463
+ width: 100%;
464
+ max-width: 100%;
465
+ display: block;
466
+ background: var(--n-color-bg);
467
+ border: 1px solid var(--n-color-border);
468
+ border-radius: var(--n-radius-sm);
469
+ padding: 0.3rem 0.45rem;
470
+ color: var(--n-color-text);
471
+ font-size: var(--n-text-xs);
472
+ outline: none;
473
+ box-sizing: border-box;
474
+ transition: border-color 0.15s ease;
475
+ }
476
+
477
+ .n-dt-filter[data-v-12cb4cef]:focus{
478
+ border-color: var(--n-color-primary);
479
+ }
480
+
481
+ .n-dt-tbody .n-dt-row{
482
+ transition: background 0.15s ease;
483
+ }
484
+
485
+ .n-dt-tbody .n-dt-row.is-hover:hover{
486
+ background: var(--n-color-glass);
487
+ }
488
+
489
+ .n-dt-tbody .n-dt-row.is-selected{
490
+ background: var(--n-color-primary-light);
491
+ outline: none;
492
+ }
493
+
494
+ .n-dt-tbody .n-dt-row.is-hover.is-selected:hover{
495
+ background: var(--n-color-primary-light);
496
+ filter: brightness(0.96);
497
+ }
498
+
499
+ .n-dt-table.is-striped .n-dt-tbody .n-dt-row:nth-child(even){
500
+ background: var(--n-color-glass);
501
+ }
502
+
503
+ .n-dt-table.is-striped .n-dt-tbody .n-dt-row:nth-child(even).is-selected{
504
+ background: var(--n-color-primary-light);
505
+ }
506
+
507
+ .n-dt-td[data-v-12cb4cef]{
508
+ padding: 0.6rem 0.85rem;
509
+ border-bottom: 1px solid var(--n-color-border);
510
+ color: var(--n-color-text);
511
+ font-size: var(--n-text-sm);
512
+ vertical-align: middle;
513
+ text-align: left;
514
+ }
515
+
516
+ .n-dt-td.is-right[data-v-12cb4cef]{
517
+ text-align: right;
518
+ }
519
+
520
+ .n-dt-td.is-center[data-v-12cb4cef]{
521
+ text-align: center;
522
+ }
523
+
524
+ .n-dt-td.is-selection[data-v-12cb4cef]{
525
+ width: 3rem;
526
+ text-align: center;
527
+ }
528
+
529
+ .n-dt-selectbox[data-v-12cb4cef]{
530
+ width: 20px;
531
+ height: 20px;
532
+ border: 2px solid var(--n-color-border);
533
+ border-radius: var(--n-radius-sm);
534
+ background: transparent;
535
+ cursor: pointer;
536
+ display: inline-flex;
537
+ align-items: center;
538
+ justify-content: center;
539
+ padding: 0;
540
+ transition: all 0.15s ease;
541
+ color: transparent;
542
+ }
543
+
544
+ .n-dt-selectbox.is-checked[data-v-12cb4cef]{
545
+ background: var(--n-color-primary);
546
+ border-color: var(--n-color-primary);
547
+ color: white;
548
+ }
549
+
550
+ .n-dt-selectbox[data-v-12cb4cef]:hover:not(.is-checked){
551
+ border-color: var(--n-color-primary);
552
+ }
553
+
554
+ .n-dt-selectbox svg[data-v-12cb4cef]{
555
+ display: block;
556
+ opacity: 0;
557
+ transition: opacity 0.1s ease;
558
+ }
559
+
560
+ .n-dt-selectbox.is-checked svg[data-v-12cb4cef]{
561
+ opacity: 1;
562
+ }
563
+
564
+ .n-dt-empty-row .n-dt-empty[data-v-12cb4cef]{
565
+ padding: 2rem 1rem;
566
+ text-align: center;
567
+ color: var(--n-color-text-muted);
568
+ font-size: var(--n-text-sm);
569
+ }
570
+
571
+ .n-dt-sm .n-dt-th[data-v-12cb4cef],
572
+ .n-dt-sm .n-dt-td[data-v-12cb4cef]{
573
+ padding: 0.4rem 0.6rem;
574
+ font-size: var(--n-text-xs);
575
+ }
576
+
577
+ .n-dt-lg .n-dt-th[data-v-12cb4cef],
578
+ .n-dt-lg .n-dt-td[data-v-12cb4cef]{
579
+ padding: 0.85rem 1rem;
580
+ font-size: var(--n-text-base);
581
+ }`
582
+ injectStyle('data-v-12cb4cef', __style)