niuma-ui 1.1.3 → 1.1.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.
@@ -20,9 +20,10 @@ export interface RsDialogOpenOptions {
20
20
  tone?: RsFeedbackTone
21
21
  /**
22
22
  * 布局。默认 window(工作窗)。
23
- * confirm 仅作历史兼容;新代码的确认/提示请用 rsConfirm / RsConfirmDialog。
23
+ * form:居中轻量表单/说明;confirm 仅作历史兼容(等同 form)。
24
+ * 确认/提示请用 rsConfirm / RsConfirmDialog。
24
25
  */
25
- layout?: 'window' | 'confirm'
26
+ layout?: 'window' | 'form' | 'confirm'
26
27
  showOverlay?: boolean
27
28
  /** 遮罩不透明度 0–1 */
28
29
  overlayOpacity?: number
@@ -79,6 +80,9 @@ function readDomLocale(): RsLocale {
79
80
  return value === 'en-US' || value === 'zh-CN' ? value : defaultLocale
80
81
  }
81
82
 
83
+ /** 命令式实例的销毁函数;测试收尾用 destroyAllRsDialogHosts 走正规 unmount。 */
84
+ const liveHosts = new Set<() => void>()
85
+
82
86
  function mountHost(
83
87
  render: () => unknown,
84
88
  config?: { theme?: RsThemeMode; locale?: RsLocale },
@@ -102,13 +106,48 @@ function mountHost(
102
106
  },
103
107
  })
104
108
  app.mount(container)
109
+ let destroyed = false
105
110
  const destroy = () => {
106
- app.unmount()
111
+ if (destroyed) return
112
+ destroyed = true
113
+ liveHosts.delete(destroy)
114
+ try {
115
+ app.unmount()
116
+ } catch {
117
+ // Teleport 节点可能已被外部从 DOM 摘掉(测试误删 portal、宿主提前清理)
118
+ }
107
119
  container.remove()
108
120
  }
121
+ liveHosts.add(destroy)
109
122
  return { app, container, destroy }
110
123
  }
111
124
 
125
+ const pendingDestroyTimers = new Set<number>()
126
+
127
+ function scheduleHostDestroy(destroy: () => void): number {
128
+ const timer = window.setTimeout(() => {
129
+ pendingDestroyTimers.delete(timer)
130
+ destroy()
131
+ }, 200)
132
+ pendingDestroyTimers.add(timer)
133
+ return timer
134
+ }
135
+
136
+ function clearHostDestroyTimer(timer: number | undefined): void {
137
+ if (timer == null) return
138
+ clearTimeout(timer)
139
+ pendingDestroyTimers.delete(timer)
140
+ }
141
+
142
+ /** 立即销毁所有命令式对话框宿主。测试 afterEach 使用,避免拆 DOM 后再延迟 unmount。 */
143
+ export function destroyAllRsDialogHosts(): void {
144
+ for (const timer of [...pendingDestroyTimers]) {
145
+ clearTimeout(timer)
146
+ pendingDestroyTimers.delete(timer)
147
+ }
148
+ for (const destroy of [...liveHosts]) destroy()
149
+ }
150
+
112
151
  function normalizeConfirmInput(
113
152
  options: RsConfirmInput | undefined,
114
153
  defaults: Partial<RsConfirmOptions>,
@@ -130,7 +169,15 @@ function rsConfirmCore(options: RsConfirmOptions = {}): Promise<RsConfirmResult>
130
169
  const loading = ref(options.confirmLoading ?? false)
131
170
  let settled = false
132
171
  let confirmed = false
172
+ let closeTimer: number | undefined
133
173
  const hasAsyncConfirm = typeof options.onConfirm === 'function'
174
+ let unmountHost = () => {}
175
+
176
+ const destroy = () => {
177
+ clearHostDestroyTimer(closeTimer)
178
+ closeTimer = undefined
179
+ unmountHost()
180
+ }
134
181
 
135
182
  const settle = (value: boolean) => {
136
183
  if (settled) return
@@ -138,11 +185,11 @@ function rsConfirmCore(options: RsConfirmOptions = {}): Promise<RsConfirmResult>
138
185
  open.value = false
139
186
  if (!value) options.onCancel?.()
140
187
  // 等关闭帧后再销毁,避免动画被硬切
141
- window.setTimeout(() => destroy(), 200)
188
+ closeTimer = scheduleHostDestroy(destroy)
142
189
  resolve(value)
143
190
  }
144
191
 
145
- const { destroy } = mountHost(
192
+ unmountHost = mountHost(
146
193
  () =>
147
194
  h(
148
195
  RsConfirmDialog,
@@ -200,7 +247,7 @@ function rsConfirmCore(options: RsConfirmOptions = {}): Promise<RsConfirmResult>
200
247
  : undefined,
201
248
  ),
202
249
  { theme: options.theme, locale: options.locale },
203
- )
250
+ ).destroy
204
251
  })
205
252
  }
206
253
 
@@ -267,11 +314,13 @@ export const rsConfirm: RsConfirmApi = Object.assign(rsConfirmCore, {
267
314
  /**
268
315
  * 命令式打开 RsDialog;适合临时表单/说明层。
269
316
  * 确认/危险提示请用 rsConfirm,不要传 layout: 'confirm'。
317
+ * 轻量表单/说明请用 layout: 'form'。
270
318
  * 复杂长期状态仍建议声明式使用组件。
271
319
  */
272
320
  export function openRsDialog(options: RsDialogOpenOptions = {}): RsDialogHandle {
273
321
  const open = ref(true)
274
322
  let destroyed = false
323
+ let closeTimer: number | undefined
275
324
  let dialogExpose: { close?: (reason?: RsDialogCloseReason) => Promise<boolean> } | null = null
276
325
  const layout = options.layout ?? 'window'
277
326
 
@@ -293,7 +342,7 @@ export function openRsDialog(options: RsDialogOpenOptions = {}): RsDialogHandle
293
342
  'onUpdate:open': (value: boolean) => {
294
343
  open.value = value
295
344
  if (!value && !destroyed) {
296
- window.setTimeout(() => destroy(), 200)
345
+ closeTimer = scheduleHostDestroy(destroy)
297
346
  }
298
347
  },
299
348
  title: options.title,
@@ -342,6 +391,8 @@ export function openRsDialog(options: RsDialogOpenOptions = {}): RsDialogHandle
342
391
  function destroy(): void {
343
392
  if (destroyed) return
344
393
  destroyed = true
394
+ clearHostDestroyTimer(closeTimer)
395
+ closeTimer = undefined
345
396
  unmount()
346
397
  }
347
398
 
@@ -105,7 +105,7 @@ export function useRsTableEditLayer<T extends RsTableRowData>(
105
105
  })
106
106
 
107
107
  function cellTooltipEnabled(column: RsTableColumn<T>, _rowIndex: number): boolean {
108
- return options.cellTooltip() && columnUsesSharedTooltip(column) && !options.hasColumnSlot(column.key)
108
+ return options.cellTooltip() && columnUsesSharedTooltip(column)
109
109
  }
110
110
 
111
111
  function cellTooltipMode(column: RsTableColumn<T>, rowIndex: number): string | undefined {
@@ -23,10 +23,11 @@ function isHeaderTipHost(host: HTMLElement): boolean {
23
23
  }
24
24
 
25
25
  function findTipHost(target: EventTarget | null): HTMLElement | null {
26
- if (!(target instanceof Element)) return null
27
- const header = target.closest(`[${RS_TABLE_HEADER_TIP_ATTR}]`)
26
+ const el = target instanceof Element ? target : target instanceof Node ? target.parentElement : null
27
+ if (!el) return null
28
+ const header = el.closest(`[${RS_TABLE_HEADER_TIP_ATTR}]`)
28
29
  if (header instanceof HTMLElement) return header
29
- const cell = target.closest(`[${RS_TABLE_TIP_ATTR}], .rs-table__cell-tip`)
30
+ const cell = el.closest(`[${RS_TABLE_TIP_ATTR}], .rs-table__cell-tip`)
30
31
  return cell instanceof HTMLElement ? cell : null
31
32
  }
32
33
 
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Vite optimizeDeps 扫描入口:在 dev server 启动时预构建 xterm,
3
+ * 避免 SSH / Redis / Mongo 控制台首次加载命中过期 hash 导致 504 (Outdated Optimize Dep)。
4
+ * CSS 一并扫描,防止 JS 预构建后样式副作用丢失。
5
+ */
6
+ import '@xterm/addon-fit'
7
+ import '@xterm/xterm'
8
+ import '@xterm/xterm/css/xterm.css'
@@ -0,0 +1,52 @@
1
+ import { defineComponent, h, type PropType } from 'vue'
2
+
3
+ /**
4
+ * PostgreSQL 官方大象(Slonik)品牌 mark(仅图形,不含字样)。
5
+ * 路径来自 Simple Icons postgresql.svg(CC0 1.0),已是 24×24。
6
+ * 来源:https://cdn.jsdelivr.net/npm/simple-icons@11.15.0/icons/postgresql.svg
7
+ * 品牌色:PostgreSQL 蓝 #336791。
8
+ */
9
+ const POSTGRES_MARK_PATH =
10
+ 'M23.5594 14.7228a.5269.5269 0 0 0-.0563-.1191c-.139-.2632-.4768-.3418-1.0074-.2321-1.6533.3411-2.2935.1312-2.5256-.0191 1.342-2.0482 2.445-4.522 3.0411-6.8297.2714-1.0507.7982-3.5237.1222-4.7316a1.5641 1.5641 0 0 0-.1509-.235C21.6931.9086 19.8007.0248 17.5099.0005c-1.4947-.0158-2.7705.3461-3.1161.4794a9.449 9.449 0 0 0-.5159-.0816 8.044 8.044 0 0 0-1.3114-.1278c-1.1822-.0184-2.2038.2642-3.0498.8406-.8573-.3211-4.7888-1.645-7.2219.0788C.9359 2.1526.3086 3.8733.4302 6.3043c.0409.818.5069 3.334 1.2423 5.7436.4598 1.5065.9387 2.7019 1.4334 3.582.553.9942 1.1259 1.5933 1.7143 1.7895.4474.1491 1.1327.1441 1.8581-.7279.8012-.9635 1.5903-1.8258 1.9446-2.2069.4351.2355.9064.3625 1.39.3772a.0569.0569 0 0 0 .0004.0041 11.0312 11.0312 0 0 0-.2472.3054c-.3389.4302-.4094.5197-1.5002.7443-.3102.064-1.1344.2339-1.1464.8115-.0025.1224.0329.2309.0919.3268.2269.4231.9216.6097 1.015.6331 1.3345.3335 2.5044.092 3.3714-.6787-.017 2.231.0775 4.4174.3454 5.0874.2212.5529.7618 1.9045 2.4692 1.9043.2505 0 .5263-.0291.8296-.0941 1.7819-.3821 2.5557-1.1696 2.855-2.9059.1503-.8707.4016-2.8753.5388-4.1012.0169-.0703.0357-.1207.057-.1362.0007-.0005.0697-.0471.4272.0307a.3673.3673 0 0 0 .0443.0068l.2539.0223.0149.001c.8468.0384 1.9114-.1426 2.5312-.4308.6438-.2988 1.8057-1.0323 1.5951-1.6698zM2.371 11.8765c-.7435-2.4358-1.1779-4.8851-1.2123-5.5719-.1086-2.1714.4171-3.6829 1.5623-4.4927 1.8367-1.2986 4.8398-.5408 6.108-.13-.0032.0032-.0066.0061-.0098.0094-2.0238 2.044-1.9758 5.536-1.9708 5.7495-.0002.0823.0066.1989.0162.3593.0348.5873.0996 1.6804-.0735 2.9184-.1609 1.1504.1937 2.2764.9728 3.0892.0806.0841.1648.1631.2518.2374-.3468.3714-1.1004 1.1926-1.9025 2.1576-.5677.6825-.9597.5517-1.0886.5087-.3919-.1307-.813-.5871-1.2381-1.3223-.4796-.839-.9635-2.0317-1.4155-3.5126zm6.0072 5.0871c-.1711-.0428-.3271-.1132-.4322-.1772.0889-.0394.2374-.0902.4833-.1409 1.2833-.2641 1.4815-.4506 1.9143-1.0002.0992-.126.2116-.2687.3673-.4426a.3549.3549 0 0 0 .0737-.1298c.1708-.1513.2724-.1099.4369-.0417.156.0646.3078.26.3695.4752.0291.1016.0619.2945-.0452.4444-.9043 1.2658-2.2216 1.2494-3.1676 1.0128zm2.094-3.988-.0525.141c-.133.3566-.2567.6881-.3334 1.003-.6674-.0021-1.3168-.2872-1.8105-.8024-.6279-.6551-.9131-1.5664-.7825-2.5004.1828-1.3079.1153-2.4468.079-3.0586-.005-.0857-.0095-.1607-.0122-.2199.2957-.2621 1.6659-.9962 2.6429-.7724.4459.1022.7176.4057.8305.928.5846 2.7038.0774 3.8307-.3302 4.7363-.084.1866-.1633.3629-.2311.5454zm7.3637 4.5725c-.0169.1768-.0358.376-.0618.5959l-.146.4383a.3547.3547 0 0 0-.0182.1077c-.0059.4747-.054.6489-.115.8693-.0634.2292-.1353.4891-.1794 1.0575-.11 1.4143-.8782 2.2267-2.4172 2.5565-1.5155.3251-1.7843-.4968-2.0212-1.2217a6.5824 6.5824 0 0 0-.0769-.2266c-.2154-.5858-.1911-1.4119-.1574-2.5551.0165-.5612-.0249-1.9013-.3302-2.6462.0044-.2932.0106-.5909.019-.8918a.3529.3529 0 0 0-.0153-.1126 1.4927 1.4927 0 0 0-.0439-.208c-.1226-.4283-.4213-.7866-.7797-.9351-.1424-.059-.4038-.1672-.7178-.0869.067-.276.1831-.5875.309-.9249l.0529-.142c.0595-.16.134-.3257.213-.5012.4265-.9476 1.0106-2.2453.3766-5.1772-.2374-1.0981-1.0304-1.6343-2.2324-1.5098-.7207.0746-1.3799.3654-1.7088.5321a5.6716 5.6716 0 0 0-.1958.1041c.0918-1.1064.4386-3.1741 1.7357-4.4823a4.0306 4.0306 0 0 1 .3033-.276.3532.3532 0 0 0 .1447-.0644c.7524-.5706 1.6945-.8506 2.802-.8325.4091.0067.8017.0339 1.1742.081 1.939.3544 3.2439 1.4468 4.0359 2.3827.8143.9623 1.2552 1.9315 1.4312 2.4543-1.3232-.1346-2.2234.1268-2.6797.779-.9926 1.4189.543 4.1729 1.2811 5.4964.1353.2426.2522.4522.2889.5413.2403.5825.5515.9713.7787 1.2552.0696.087.1372.1714.1885.245-.4008.1155-1.1208.3825-1.0552 1.717-.0123.1563-.0423.4469-.0834.8148-.0461.2077-.0702.4603-.0994.7662zm.8905-1.6211c-.0405-.8316.2691-.9185.5967-1.0105a2.8566 2.8566 0 0 0 .135-.0406 1.202 1.202 0 0 0 .1342.103c.5703.3765 1.5823.4213 3.0068.1344-.2016.1769-.5189.3994-.9533.6011-.4098.1903-1.0957.333-1.7473.3636-.7197.0336-1.0859-.0807-1.1721-.151zm.5695-9.2712c-.0059.3508-.0542.6692-.1054 1.0017-.055.3576-.112.7274-.1264 1.1762-.0142.4368.0404.8909.0932 1.3301.1066.887.216 1.8003-.2075 2.7014a3.5272 3.5272 0 0 1-.1876-.3856c-.0527-.1276-.1669-.3326-.3251-.6162-.6156-1.1041-2.0574-3.6896-1.3193-4.7446.3795-.5427 1.3408-.5661 2.1781-.463zm.2284 7.0137a12.3762 12.3762 0 0 0-.0853-.1074l-.0355-.0444c.7262-1.1995.5842-2.3862.4578-3.4385-.0519-.4318-.1009-.8396-.0885-1.2226.0129-.4061.0666-.7543.1185-1.0911.0639-.415.1288-.8443.1109-1.3505.0134-.0531.0188-.1158.0118-.1902-.0457-.4855-.5999-1.938-1.7294-3.253-.6076-.7073-1.4896-1.4972-2.6889-2.0395.5251-.1066 1.2328-.2035 2.0244-.1859 2.0515.0456 3.6746.8135 4.8242 2.2824a.908.908 0 0 1 .0667.1002c.7231 1.3556-.2762 6.2751-2.9867 10.5405zm-8.8166-6.1162c-.025.1794-.3089.4225-.6211.4225a.5821.5821 0 0 1-.0809-.0056c-.1873-.026-.3765-.144-.5059-.3156-.0458-.0605-.1203-.178-.1055-.2844.0055-.0401.0261-.0985.0925-.1488.1182-.0894.3518-.1226.6096-.0867.3163.0441.6426.1938.6113.4186zm7.9305-.4114c.0111.0792-.049.201-.1531.3102-.0683.0717-.212.1961-.4079.2232a.5456.5456 0 0 1-.075.0052c-.2935 0-.5414-.2344-.5607-.3717-.024-.1765.2641-.3106.5611-.352.297-.0414.6111.0088.6356.1851z'
11
+
12
+ /**
13
+ * NiuMa PostgreSQL —— 官方大象品牌 mark,单色填充,默认走 PG 蓝并随主题明暗自动调整对比度。
14
+ */
15
+ export const PostgresIcon = defineComponent({
16
+ name: 'PostgresIcon',
17
+ inheritAttrs: false,
18
+ props: {
19
+ size: { type: [Number, String] as PropType<number | string>, default: 24 },
20
+ strokeWidth: { type: [Number, String] as PropType<number | string>, default: 2 },
21
+ color: { type: String, default: 'currentColor' },
22
+ },
23
+ setup(props, { attrs }) {
24
+ return () => {
25
+ const size = Number(props.size) || 24
26
+ const { class: attrClass, style: attrStyle, ...restAttrs } = attrs
27
+ const accent = props.color && props.color !== 'currentColor' ? props.color : undefined
28
+ const style: Record<string, string> = {
29
+ ...(typeof attrStyle === 'object' && attrStyle && !Array.isArray(attrStyle)
30
+ ? (attrStyle as Record<string, string>)
31
+ : {}),
32
+ ...(accent ? { '--rs-icon-postgres-accent': accent } : {}),
33
+ }
34
+
35
+ return h(
36
+ 'svg',
37
+ {
38
+ ...restAttrs,
39
+ xmlns: 'http://www.w3.org/2000/svg',
40
+ width: size,
41
+ height: size,
42
+ viewBox: '0 0 24 24',
43
+ fill: 'none',
44
+ overflow: 'visible',
45
+ style: Object.keys(style).length > 0 ? style : undefined,
46
+ class: ['lucide', 'lucide-postgres-icon', attrClass].filter(Boolean),
47
+ },
48
+ [h('path', { class: 'postgres-icon__mark', d: POSTGRES_MARK_PATH })],
49
+ )
50
+ }
51
+ },
52
+ })
@@ -12,6 +12,7 @@ import { OracleIcon } from './custom/oracle'
12
12
  import { ClickhouseIcon } from './custom/clickhouse'
13
13
  import { KingbaseIcon } from './custom/kingbase'
14
14
  import { SqlserverIcon } from './custom/sqlserver'
15
+ import { PostgresIcon } from './custom/postgres'
15
16
 
16
17
  export const LUCIDE_LICENSE = 'ISC'
17
18
  export const LUCIDE_ATTRIBUTION =
@@ -31,6 +32,7 @@ const customIconMap = new Map<string, Component>([
31
32
  ['clickhouse', ClickhouseIcon],
32
33
  ['kingbase', KingbaseIcon],
33
34
  ['sqlserver', SqlserverIcon],
35
+ ['postgres', PostgresIcon],
34
36
  ])
35
37
 
36
38
  const lucideExports = LucideVue as Record<string, unknown>
package/src/index.ts CHANGED
@@ -157,6 +157,7 @@ export {
157
157
  MONACO_MYSQL_LANGUAGE,
158
158
  MONACO_DAMENG_LANGUAGE,
159
159
  MONACO_KINGBASE_LANGUAGE,
160
+ MONACO_POSTGRESQL_LANGUAGE,
160
161
  MONACO_SQLITE_LANGUAGE,
161
162
  RS_MONACO_DEBUG,
162
163
  setupMonacoWorkers,
@@ -196,6 +197,8 @@ export {
196
197
  export type {
197
198
  RsResolvedTerminalTheme,
198
199
  RsTerminalAction,
200
+ RsTerminalExpose,
201
+ RsTerminalGeometry,
199
202
  RsTerminalThemeMode,
200
203
  } from './components/terminal-utils'
201
204
 
@@ -11,6 +11,7 @@ export {
11
11
  MONACO_MYSQL_LANGUAGE,
12
12
  MONACO_DAMENG_LANGUAGE,
13
13
  MONACO_KINGBASE_LANGUAGE,
14
+ MONACO_POSTGRESQL_LANGUAGE,
14
15
  MONACO_PGSQL_LANGUAGE,
15
16
  MONACO_SQLITE_LANGUAGE,
16
17
  } from './languages'
@@ -8,6 +8,7 @@ export {
8
8
  MONACO_MYSQL_LANGUAGE,
9
9
  MONACO_DAMENG_LANGUAGE,
10
10
  MONACO_KINGBASE_LANGUAGE,
11
+ MONACO_POSTGRESQL_LANGUAGE,
11
12
  MONACO_CLICKHOUSE_LANGUAGE,
12
13
  MONACO_SQLITE_LSP_LANGUAGE,
13
14
  MONACO_SQLSERVER_LANGUAGE,
@@ -16,6 +16,7 @@ export type MonacoSqlLanguageId =
16
16
  | 'genericsql'
17
17
  | 'dameng'
18
18
  | 'kingbase'
19
+ | 'postgresql'
19
20
  | 'clickhouse'
20
21
  | 'sqlite'
21
22
  | 'sqlserver'
@@ -36,6 +37,9 @@ export const MONACO_DAMENG_LANGUAGE = 'dameng' as const
36
37
  /** Kingbase 在 Monaco 中的 languageId(Bridge LSP)。 */
37
38
  export const MONACO_KINGBASE_LANGUAGE = 'kingbase' as const
38
39
 
40
+ /** 官方 PostgreSQL 在 Monaco 中的 languageId(Bridge LSP;与 dialect family 对齐)。 */
41
+ export const MONACO_POSTGRESQL_LANGUAGE = 'postgresql' as const
42
+
39
43
  /** ClickHouse 在 Monaco 中的 languageId(Bridge LSP)。 */
40
44
  export const MONACO_CLICKHOUSE_LANGUAGE = 'clickhouse' as const
41
45
 
package/src/styles.css CHANGED
@@ -183,6 +183,9 @@
183
183
  /* SQL Server 品牌图标默认强调色(Simple Icons / 产品红) */
184
184
  --rs-icon-sqlserver-accent: #cc2927;
185
185
 
186
+ /* PostgreSQL 品牌图标默认强调色(官方大象蓝) */
187
+ --rs-icon-postgres-accent: #336791;
188
+
186
189
  /* macOS 风格原生滚动条(与 RsScrollbar 视觉一致) */
187
190
  --rs-scrollbar-size: 13px;
188
191
  --rs-scrollbar-padding: 2px;
@@ -309,6 +312,7 @@
309
312
  --rs-icon-clickhouse-accent: #ffe066;
310
313
  --rs-icon-kingbase-accent: #ff4d57;
311
314
  --rs-icon-sqlserver-accent: #ff5a57;
315
+ --rs-icon-postgres-accent: #6a9ec4;
312
316
  --rs-focus-border: var(--rs-primary);
313
317
  --rs-focus-ring: color-mix(in srgb, var(--rs-primary) 28%, transparent);
314
318
  --rs-focus-ring-width: 2px;
@@ -670,6 +674,7 @@
670
674
  --rs-icon-clickhouse-accent: #ffcc01;
671
675
  --rs-icon-kingbase-accent: #c9151e;
672
676
  --rs-icon-sqlserver-accent: #cc2927;
677
+ --rs-icon-postgres-accent: #336791;
673
678
  }
674
679
 
675
680
  /**
@@ -1347,3 +1352,13 @@ code {
1347
1352
  .rs-context-menu__item[data-state='open'] .lucide-sqlserver-icon .sqlserver-icon__mark {
1348
1353
  fill: rgb(255 255 255 / 0.95);
1349
1354
  }
1355
+
1356
+ /* PostgreSQL 自定义图标:官方大象(Slonik)mark,单色填充随主题调整明暗对比度 */
1357
+ .lucide-postgres-icon .postgres-icon__mark {
1358
+ fill: var(--rs-icon-postgres-accent);
1359
+ }
1360
+
1361
+ .rs-context-menu__item[data-highlighted] .lucide-postgres-icon .postgres-icon__mark,
1362
+ .rs-context-menu__item[data-state='open'] .lucide-postgres-icon .postgres-icon__mark {
1363
+ fill: rgb(255 255 255 / 0.95);
1364
+ }