niuma-ui 1.0.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 (220) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/LICENSE +202 -0
  3. package/NOTICE +25 -0
  4. package/README.en.md +99 -0
  5. package/README.md +161 -0
  6. package/package.json +106 -0
  7. package/src/__tests__/RsBadge.spec.ts +40 -0
  8. package/src/__tests__/RsBreadcrumb.spec.ts +172 -0
  9. package/src/__tests__/RsButton.spec.ts +108 -0
  10. package/src/__tests__/RsCalendarGrid.spec.ts +82 -0
  11. package/src/__tests__/RsCard.spec.ts +97 -0
  12. package/src/__tests__/RsCheckbox.spec.ts +36 -0
  13. package/src/__tests__/RsCodeEditor.spec.ts +111 -0
  14. package/src/__tests__/RsConfirmDialog.spec.ts +158 -0
  15. package/src/__tests__/RsContainer.spec.ts +89 -0
  16. package/src/__tests__/RsContextMenu.spec.ts +118 -0
  17. package/src/__tests__/RsDatePicker.spec.ts +88 -0
  18. package/src/__tests__/RsDateTimePicker.spec.ts +69 -0
  19. package/src/__tests__/RsDialog.spec.ts +404 -0
  20. package/src/__tests__/RsDrawer.spec.ts +145 -0
  21. package/src/__tests__/RsDropdown.spec.ts +135 -0
  22. package/src/__tests__/RsEmpty.spec.ts +99 -0
  23. package/src/__tests__/RsForm.spec.ts +173 -0
  24. package/src/__tests__/RsIcon.spec.ts +244 -0
  25. package/src/__tests__/RsInput.spec.ts +269 -0
  26. package/src/__tests__/RsInputNumber.spec.ts +118 -0
  27. package/src/__tests__/RsLabel.spec.ts +106 -0
  28. package/src/__tests__/RsLink.spec.ts +49 -0
  29. package/src/__tests__/RsLoading.spec.ts +84 -0
  30. package/src/__tests__/RsMarkdown.spec.ts +143 -0
  31. package/src/__tests__/RsMenu.spec.ts +119 -0
  32. package/src/__tests__/RsNewComponents.spec.ts +17 -0
  33. package/src/__tests__/RsPagination.spec.ts +158 -0
  34. package/src/__tests__/RsPopover.spec.ts +126 -0
  35. package/src/__tests__/RsScrollbar.spec.ts +53 -0
  36. package/src/__tests__/RsSelect.spec.ts +291 -0
  37. package/src/__tests__/RsSidebar.spec.ts +119 -0
  38. package/src/__tests__/RsSplitPane.spec.ts +177 -0
  39. package/src/__tests__/RsStatCard.spec.ts +79 -0
  40. package/src/__tests__/RsSteps.spec.ts +125 -0
  41. package/src/__tests__/RsTable.perf.spec.ts +103 -0
  42. package/src/__tests__/RsTable.spec.ts +1135 -0
  43. package/src/__tests__/RsTabs.spec.ts +328 -0
  44. package/src/__tests__/RsTerminal.spec.ts +218 -0
  45. package/src/__tests__/RsTimePicker.spec.ts +77 -0
  46. package/src/__tests__/RsToaster.spec.ts +95 -0
  47. package/src/__tests__/RsToolbar.spec.ts +75 -0
  48. package/src/__tests__/RsTooltip.spec.ts +111 -0
  49. package/src/__tests__/RsTree.spec.ts +572 -0
  50. package/src/__tests__/RsUpload.spec.ts +160 -0
  51. package/src/__tests__/RsVirtualList.spec.ts +77 -0
  52. package/src/__tests__/date-picker-utils.spec.ts +70 -0
  53. package/src/__tests__/dialog-viewport.spec.ts +38 -0
  54. package/src/__tests__/iso-local-datetime.spec.ts +58 -0
  55. package/src/__tests__/rs-clipboard.spec.ts +142 -0
  56. package/src/__tests__/setup.ts +12 -0
  57. package/src/__tests__/split-pane-utils.spec.ts +136 -0
  58. package/src/__tests__/table-drag.spec.ts +35 -0
  59. package/src/__tests__/table-edit-utils.spec.ts +194 -0
  60. package/src/__tests__/table-utils.spec.ts +286 -0
  61. package/src/__tests__/theme.spec.ts +22 -0
  62. package/src/__tests__/tree-utils.spec.ts +234 -0
  63. package/src/__tests__/useTableCellTooltip.spec.ts +101 -0
  64. package/src/components/RsAvatar.vue +115 -0
  65. package/src/components/RsBadge.vue +59 -0
  66. package/src/components/RsBreadcrumb.vue +65 -0
  67. package/src/components/RsBreadcrumbItems.vue +36 -0
  68. package/src/components/RsButton.vue +393 -0
  69. package/src/components/RsCalendarGrid.vue +284 -0
  70. package/src/components/RsCard.vue +237 -0
  71. package/src/components/RsCheckbox.vue +189 -0
  72. package/src/components/RsCodeBlock.vue +278 -0
  73. package/src/components/RsCodeEditor.vue +597 -0
  74. package/src/components/RsConfigProvider.vue +92 -0
  75. package/src/components/RsConfirmDialog.vue +178 -0
  76. package/src/components/RsContainer.vue +235 -0
  77. package/src/components/RsContextMenu.vue +238 -0
  78. package/src/components/RsContextMenuItems.vue +77 -0
  79. package/src/components/RsDatePicker.vue +756 -0
  80. package/src/components/RsDateTimePicker.vue +42 -0
  81. package/src/components/RsDialog.vue +486 -0
  82. package/src/components/RsDrawer.vue +175 -0
  83. package/src/components/RsDropdown.vue +252 -0
  84. package/src/components/RsDropdownItems.vue +90 -0
  85. package/src/components/RsEmpty.vue +107 -0
  86. package/src/components/RsForm.vue +131 -0
  87. package/src/components/RsIcon.vue +104 -0
  88. package/src/components/RsInput.vue +1101 -0
  89. package/src/components/RsInputNumber.vue +532 -0
  90. package/src/components/RsLabel.vue +54 -0
  91. package/src/components/RsLink.vue +106 -0
  92. package/src/components/RsLoading.vue +171 -0
  93. package/src/components/RsMarkdown.vue +329 -0
  94. package/src/components/RsMenu.vue +256 -0
  95. package/src/components/RsMenuItems.vue +125 -0
  96. package/src/components/RsMonacoEditor.vue +541 -0
  97. package/src/components/RsPagination.vue +184 -0
  98. package/src/components/RsPopover.vue +77 -0
  99. package/src/components/RsProseEditor.vue +160 -0
  100. package/src/components/RsScrollbar.vue +171 -0
  101. package/src/components/RsSelect.vue +1045 -0
  102. package/src/components/RsSidebar.vue +121 -0
  103. package/src/components/RsSidebarGroup.vue +32 -0
  104. package/src/components/RsSidebarItem.vue +72 -0
  105. package/src/components/RsSplitPane.vue +619 -0
  106. package/src/components/RsStatCard.vue +85 -0
  107. package/src/components/RsSteps.vue +138 -0
  108. package/src/components/RsTable.vue +2664 -0
  109. package/src/components/RsTableColgroup.vue +17 -0
  110. package/src/components/RsTableHeaderRow.vue +30 -0
  111. package/src/components/RsTabs.vue +951 -0
  112. package/src/components/RsTerminal.vue +697 -0
  113. package/src/components/RsTimePicker.vue +554 -0
  114. package/src/components/RsTimePickerColumns.vue +226 -0
  115. package/src/components/RsToaster.vue +396 -0
  116. package/src/components/RsToolbar.vue +135 -0
  117. package/src/components/RsTooltip.vue +142 -0
  118. package/src/components/RsTooltipProvider.vue +20 -0
  119. package/src/components/RsTree.vue +1248 -0
  120. package/src/components/RsUpload.vue +279 -0
  121. package/src/components/RsVirtualList.vue +217 -0
  122. package/src/components/avatar-utils.ts +19 -0
  123. package/src/components/breadcrumb-utils.ts +19 -0
  124. package/src/components/class-utils.ts +29 -0
  125. package/src/components/code-editor-utils.ts +106 -0
  126. package/src/components/code-mirror-completion.ts +40 -0
  127. package/src/components/code-mirror-diagnostics.ts +52 -0
  128. package/src/components/code-mirror-ghost.ts +158 -0
  129. package/src/components/code-mirror-inline-edit.ts +55 -0
  130. package/src/components/code-mirror-intel.ts +81 -0
  131. package/src/components/code-mirror-lang.ts +128 -0
  132. package/src/components/context-menu-utils.ts +20 -0
  133. package/src/components/date-picker-utils.ts +284 -0
  134. package/src/components/date-range-validation.ts +29 -0
  135. package/src/components/date-validation.ts +38 -0
  136. package/src/components/dialog-viewport.ts +48 -0
  137. package/src/components/dialog-window.ts +253 -0
  138. package/src/components/dropdown-utils.ts +31 -0
  139. package/src/components/form-utils.ts +77 -0
  140. package/src/components/input-number-utils.ts +128 -0
  141. package/src/components/input-rules.ts +84 -0
  142. package/src/components/loading-utils.ts +8 -0
  143. package/src/components/markdown-utils.ts +126 -0
  144. package/src/components/menu-utils.ts +48 -0
  145. package/src/components/overlay-utils.ts +47 -0
  146. package/src/components/pagination-utils.ts +38 -0
  147. package/src/components/popover-utils.ts +8 -0
  148. package/src/components/reka.ts +106 -0
  149. package/src/components/resolve-radius.ts +22 -0
  150. package/src/components/resolve-size.ts +29 -0
  151. package/src/components/scrollbar-utils.ts +10 -0
  152. package/src/components/select-utils.ts +72 -0
  153. package/src/components/split-pane-utils.ts +187 -0
  154. package/src/components/steps-utils.ts +22 -0
  155. package/src/components/table/RsTableBodyRow.vue +287 -0
  156. package/src/components/table/RsTableCell.vue +239 -0
  157. package/src/components/table/RsTableCellContent.ts +18 -0
  158. package/src/components/table/RsTableCellEditor.vue +351 -0
  159. package/src/components/table/RsTableEditGutter.vue +54 -0
  160. package/src/components/table/RsTableHeaderFilter.vue +107 -0
  161. package/src/components/table/RsTableRowStatus.vue +69 -0
  162. package/src/components/table/rs-table.css +1141 -0
  163. package/src/components/table/table-context-menu.ts +53 -0
  164. package/src/components/table/table-edit-utils.ts +496 -0
  165. package/src/components/table/table-keys.ts +12 -0
  166. package/src/components/table-drag.ts +215 -0
  167. package/src/components/table-utils.ts +950 -0
  168. package/src/components/tabs-utils.ts +107 -0
  169. package/src/components/terminal-utils.ts +301 -0
  170. package/src/components/terminal-wheel.ts +49 -0
  171. package/src/components/time-picker-utils.ts +167 -0
  172. package/src/components/time-range-validation.ts +23 -0
  173. package/src/components/time-validation.ts +20 -0
  174. package/src/components/tree-utils.ts +518 -0
  175. package/src/components/upload-utils.ts +55 -0
  176. package/src/components/virtual-list-utils.ts +17 -0
  177. package/src/composables/useClickOutside.ts +22 -0
  178. package/src/composables/useRsConfig.ts +91 -0
  179. package/src/composables/useRsI18n.ts +22 -0
  180. package/src/composables/useRsTabsNav.ts +187 -0
  181. package/src/composables/useRsToast.ts +48 -0
  182. package/src/composables/useTableCellTooltip.ts +239 -0
  183. package/src/composables/useTableEdit.ts +271 -0
  184. package/src/composables/useTableRowHighlight.ts +50 -0
  185. package/src/dev/vite-codemirror-deps.ts +20 -0
  186. package/src/icons/custom/api.ts +54 -0
  187. package/src/icons/custom/clickhouse.ts +52 -0
  188. package/src/icons/custom/dameng.ts +83 -0
  189. package/src/icons/custom/ftp.ts +61 -0
  190. package/src/icons/custom/kingbase.ts +52 -0
  191. package/src/icons/custom/mongodb.ts +50 -0
  192. package/src/icons/custom/mysql.ts +51 -0
  193. package/src/icons/custom/oracle.ts +52 -0
  194. package/src/icons/custom/redis.ts +51 -0
  195. package/src/icons/custom/sqlite.ts +50 -0
  196. package/src/icons/custom/sqlserver.ts +52 -0
  197. package/src/icons/custom/vastbase.ts +57 -0
  198. package/src/icons/lucide.ts +78 -0
  199. package/src/icons/registry.ts +35 -0
  200. package/src/index.ts +425 -0
  201. package/src/lib/iso-local-datetime.ts +152 -0
  202. package/src/lib/rs-dayjs.ts +56 -0
  203. package/src/locale/messages.ts +362 -0
  204. package/src/locale/types.ts +5 -0
  205. package/src/monaco/debug-decorations.css +20 -0
  206. package/src/monaco/debug-decorations.ts +70 -0
  207. package/src/monaco/index.ts +22 -0
  208. package/src/monaco/languages/index.ts +21 -0
  209. package/src/monaco/languages/mongodb-shell.ts +125 -0
  210. package/src/monaco/languages/types.ts +55 -0
  211. package/src/monaco/setup.ts +101 -0
  212. package/src/styles.css +1040 -0
  213. package/src/theme/apply.ts +12 -0
  214. package/src/theme/brand.example.css +37 -0
  215. package/src/theme/presets.ts +69 -0
  216. package/src/theme/types.ts +81 -0
  217. package/src/utils/rs-clipboard.ts +272 -0
  218. package/src/vite-env.d.ts +7 -0
  219. package/vite-plugins/monaco-zh-nls.ts +101 -0
  220. package/vite-plugins/silence-antlr-parse-console.ts +29 -0
@@ -0,0 +1,121 @@
1
+ <script setup lang="ts">
2
+ export type RsSidebarOrientation = 'vertical' | 'horizontal'
3
+ export type RsSidebarPlacement = 'left' | 'right'
4
+
5
+ const collapsed = defineModel<boolean>('collapsed', { default: false })
6
+
7
+ withDefaults(
8
+ defineProps<{
9
+ title?: string
10
+ subtitle?: string
11
+ collapsible?: boolean
12
+ width?: 'sm' | 'md' | 'lg'
13
+ orientation?: RsSidebarOrientation
14
+ placement?: RsSidebarPlacement
15
+ }>(),
16
+ {
17
+ collapsible: false,
18
+ width: 'md',
19
+ orientation: 'vertical',
20
+ placement: 'left',
21
+ },
22
+ )
23
+ </script>
24
+
25
+ <template>
26
+ <aside
27
+ class="rs-sidebar"
28
+ :class="[
29
+ `rs-sidebar--${width}`,
30
+ `rs-sidebar--${orientation}`,
31
+ `rs-sidebar--${placement}`,
32
+ { 'rs-sidebar--collapsed': collapsed },
33
+ ]"
34
+ >
35
+ <header v-if="title || subtitle || collapsible || $slots.header" class="rs-sidebar__header">
36
+ <slot name="header">
37
+ <div class="rs-sidebar__title-wrap">
38
+ <strong v-if="title" class="rs-sidebar__title">{{ title }}</strong>
39
+ <span v-if="subtitle && !collapsed" class="rs-sidebar__subtitle">{{ subtitle }}</span>
40
+ </div>
41
+ <button
42
+ v-if="collapsible"
43
+ type="button"
44
+ class="rs-sidebar__collapse"
45
+ @click="collapsed = !collapsed"
46
+ >
47
+ {{ collapsed ? '>' : '<' }}
48
+ </button>
49
+ </slot>
50
+ </header>
51
+ <div class="rs-sidebar__body">
52
+ <slot :collapsed="collapsed" />
53
+ </div>
54
+ <footer v-if="$slots.footer" class="rs-sidebar__footer">
55
+ <slot name="footer" :collapsed="collapsed" />
56
+ </footer>
57
+ </aside>
58
+ </template>
59
+
60
+ <style scoped>
61
+ .rs-sidebar {
62
+ display: flex;
63
+ flex-direction: column;
64
+ min-height: 0;
65
+ border: 1px solid var(--rs-border-subtle);
66
+ background: color-mix(in srgb, var(--rs-surface) 88%, transparent);
67
+ color: var(--rs-text);
68
+ }
69
+ .rs-sidebar--sm {
70
+ width: 14rem;
71
+ }
72
+ .rs-sidebar--md {
73
+ width: 17rem;
74
+ }
75
+ .rs-sidebar--lg {
76
+ width: 21rem;
77
+ }
78
+ .rs-sidebar--collapsed {
79
+ width: 4rem;
80
+ }
81
+ .rs-sidebar__header,
82
+ .rs-sidebar__footer {
83
+ display: flex;
84
+ align-items: center;
85
+ justify-content: space-between;
86
+ gap: var(--rs-space-sm);
87
+ padding: var(--rs-space-md);
88
+ border-bottom: 1px solid var(--rs-border-subtle);
89
+ }
90
+ .rs-sidebar__footer {
91
+ border-top: 1px solid var(--rs-border-subtle);
92
+ border-bottom: 0;
93
+ }
94
+ .rs-sidebar__body {
95
+ flex: 1;
96
+ min-height: 0;
97
+ overflow: auto;
98
+ padding: var(--rs-space-sm);
99
+ }
100
+ .rs-sidebar__title-wrap {
101
+ min-width: 0;
102
+ }
103
+ .rs-sidebar__title,
104
+ .rs-sidebar__subtitle {
105
+ display: block;
106
+ overflow: hidden;
107
+ text-overflow: ellipsis;
108
+ white-space: nowrap;
109
+ }
110
+ .rs-sidebar__subtitle {
111
+ color: var(--rs-muted);
112
+ font-size: var(--rs-font-size-xs);
113
+ }
114
+ .rs-sidebar__collapse {
115
+ border: 1px solid var(--rs-border);
116
+ border-radius: var(--rs-radius-sm);
117
+ background: var(--rs-surface);
118
+ color: var(--rs-muted);
119
+ cursor: pointer;
120
+ }
121
+ </style>
@@ -0,0 +1,32 @@
1
+ <script setup lang="ts">
2
+ defineProps<{
3
+ title?: string
4
+ collapsed?: boolean
5
+ }>()
6
+ </script>
7
+
8
+ <template>
9
+ <section class="rs-sidebar-group">
10
+ <div v-if="title && !collapsed" class="rs-sidebar-group__title">{{ title }}</div>
11
+ <div class="rs-sidebar-group__body">
12
+ <slot />
13
+ </div>
14
+ </section>
15
+ </template>
16
+
17
+ <style scoped>
18
+ .rs-sidebar-group + .rs-sidebar-group {
19
+ margin-top: var(--rs-space-md);
20
+ }
21
+ .rs-sidebar-group__title {
22
+ padding: var(--rs-space-xs) var(--rs-space-sm);
23
+ color: var(--rs-muted);
24
+ font-size: var(--rs-font-size-xs);
25
+ font-weight: 600;
26
+ letter-spacing: 0.04em;
27
+ }
28
+ .rs-sidebar-group__body {
29
+ display: grid;
30
+ gap: var(--rs-space-xs);
31
+ }
32
+ </style>
@@ -0,0 +1,72 @@
1
+ <script setup lang="ts">
2
+ import RsIcon from './RsIcon.vue'
3
+
4
+ defineProps<{
5
+ label: string
6
+ icon?: string
7
+ active?: boolean
8
+ disabled?: boolean
9
+ collapsed?: boolean
10
+ }>()
11
+ </script>
12
+
13
+ <template>
14
+ <button
15
+ type="button"
16
+ class="rs-sidebar-item"
17
+ :class="{ 'rs-sidebar-item--active': active, 'rs-sidebar-item--collapsed': collapsed }"
18
+ :disabled="disabled"
19
+ :title="collapsed ? label : undefined"
20
+ >
21
+ <RsIcon v-if="icon" :name="icon" class="rs-sidebar-item__icon" />
22
+ <span v-if="!collapsed" class="rs-sidebar-item__label">{{ label }}</span>
23
+ <slot />
24
+ </button>
25
+ </template>
26
+
27
+ <style scoped>
28
+ .rs-sidebar-item {
29
+ display: flex;
30
+ align-items: center;
31
+ gap: var(--rs-space-sm);
32
+ width: 100%;
33
+ min-height: var(--rs-control-height-md);
34
+ box-sizing: border-box;
35
+ padding: 0 var(--rs-space-sm);
36
+ border: 1px solid transparent;
37
+ border-radius: var(--rs-radius-sm);
38
+ background: transparent;
39
+ color: var(--rs-muted);
40
+ font: inherit;
41
+ cursor: pointer;
42
+ transition:
43
+ background var(--rs-transition-fast),
44
+ border-color var(--rs-transition-fast),
45
+ color var(--rs-transition-fast);
46
+ }
47
+ .rs-sidebar-item:hover:not(:disabled) {
48
+ background: var(--rs-item-hover);
49
+ color: var(--rs-text);
50
+ }
51
+ .rs-sidebar-item--active {
52
+ background: color-mix(in srgb, var(--rs-primary) 12%, transparent);
53
+ color: var(--rs-primary);
54
+ }
55
+ .rs-sidebar-item--collapsed {
56
+ justify-content: center;
57
+ padding: 0;
58
+ }
59
+ .rs-sidebar-item:disabled {
60
+ opacity: 0.38;
61
+ cursor: not-allowed;
62
+ }
63
+ .rs-sidebar-item__icon {
64
+ flex: 0 0 auto;
65
+ }
66
+ .rs-sidebar-item__label {
67
+ min-width: 0;
68
+ overflow: hidden;
69
+ text-overflow: ellipsis;
70
+ white-space: nowrap;
71
+ }
72
+ </style>