@robot-admin/naive-ui-components 0.13.8 → 0.14.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 (180) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/README.md +63 -5
  3. package/README_EN.md +63 -5
  4. package/dist/C_ActionBar.css +11 -10
  5. package/dist/C_AntV.css +206 -204
  6. package/dist/C_AudioPlayer.css +11 -10
  7. package/dist/C_AvatarGroup.css +7 -5
  8. package/dist/C_Barcode.css +3 -1
  9. package/dist/C_Breadcrumb.css +17 -16
  10. package/dist/C_Captcha.css +14 -13
  11. package/dist/C_Cascade.css +7 -5
  12. package/dist/C_Chat.css +9 -8
  13. package/dist/C_City.css +8 -6
  14. package/dist/C_Code.css +15 -14
  15. package/dist/C_CollapsePanel.css +12 -11
  16. package/dist/C_ContextMenu.css +28 -28
  17. package/dist/C_Cron.cjs +1 -1
  18. package/dist/C_Cron.css +472 -251
  19. package/dist/C_Cron.d.cts +2 -2
  20. package/dist/C_Cron.d.ts +2 -2
  21. package/dist/C_Cron.js +1 -1
  22. package/dist/C_Cron2.cjs +1 -1
  23. package/dist/C_Cron2.js +1 -1
  24. package/dist/C_Date.css +2 -1
  25. package/dist/C_Draggable.css +2 -1
  26. package/dist/C_Editor.css +2 -1
  27. package/dist/C_FilePreview.css +185 -184
  28. package/dist/C_Form.base.css +334 -332
  29. package/dist/C_Form.css +333 -332
  30. package/dist/C_FormModal.css +13 -11
  31. package/dist/C_FormSearch.css +2 -1
  32. package/dist/C_FormulaEditor.cjs +1 -1
  33. package/dist/C_FormulaEditor.css +430 -273
  34. package/dist/C_FormulaEditor.d.cts +2 -2
  35. package/dist/C_FormulaEditor.d.ts +2 -2
  36. package/dist/C_FormulaEditor.js +1 -1
  37. package/dist/C_FullCalendar.css +12 -11
  38. package/dist/C_GlobalSearch.css +13 -11
  39. package/dist/C_Guide.css +8 -8
  40. package/dist/C_Icon.css +9 -7
  41. package/dist/C_ImageCropper.css +70 -68
  42. package/dist/C_Language.css +8 -8
  43. package/dist/C_Loading.css +10 -8
  44. package/dist/C_Login.css +20 -21
  45. package/dist/C_Map.css +24 -22
  46. package/dist/C_Markdown.css +8 -6
  47. package/dist/C_Menu.css +2 -1
  48. package/dist/C_NotificationCenter.css +362 -360
  49. package/dist/C_OrgChart.css +6 -5
  50. package/dist/C_PageLoading.cjs +1 -0
  51. package/dist/C_PageLoading.css +153 -0
  52. package/dist/C_PageLoading.d.cts +2 -0
  53. package/dist/C_PageLoading.d.ts +2 -0
  54. package/dist/C_PageLoading.js +1 -0
  55. package/dist/C_Progress.css +1 -1
  56. package/dist/C_QRCode.css +7 -5
  57. package/dist/C_Signature.css +7 -5
  58. package/dist/C_Skeleton.css +8 -6
  59. package/dist/C_SplitPane.css +25 -23
  60. package/dist/C_Steps.css +7 -5
  61. package/dist/C_Table.base.css +536 -537
  62. package/dist/C_Table.css +536 -538
  63. package/dist/C_Tabs.css +78 -1
  64. package/dist/C_TagsView.css +8 -8
  65. package/dist/C_Theme.css +9 -7
  66. package/dist/C_Time.css +3 -1
  67. package/dist/C_Timeline.css +9 -8
  68. package/dist/C_Transfer.css +10 -9
  69. package/dist/C_Tree.css +2 -1
  70. package/dist/C_Upload.css +176 -174
  71. package/dist/C_VideoPlayer.css +186 -184
  72. package/dist/C_VtableGantt.css +2 -1
  73. package/dist/C_WaterFall.css +19 -17
  74. package/dist/C_WorkFlow.css +976 -976
  75. package/dist/constants.d.cts +15 -20
  76. package/dist/constants.d.ts +15 -20
  77. package/dist/constants2.d.cts +44 -19
  78. package/dist/constants2.d.ts +44 -19
  79. package/dist/constants3.d.cts +4 -4
  80. package/dist/constants3.d.ts +4 -4
  81. package/dist/constants4.d.cts +6 -6
  82. package/dist/constants4.d.ts +6 -6
  83. package/dist/constants5.d.cts +2 -2
  84. package/dist/constants5.d.ts +2 -2
  85. package/dist/createPageLoading.cjs +1 -0
  86. package/dist/createPageLoading.d.cts +32 -0
  87. package/dist/createPageLoading.d.ts +32 -0
  88. package/dist/createPageLoading.js +1 -0
  89. package/dist/data.d.cts +8 -8
  90. package/dist/data.d.ts +8 -8
  91. package/dist/index.cjs +1 -1
  92. package/dist/index.d.cts +24 -23
  93. package/dist/index.d.ts +24 -23
  94. package/dist/index.js +1 -1
  95. package/dist/index.vue.d.cts +4 -4
  96. package/dist/index.vue.d.ts +4 -4
  97. package/dist/index10.vue.d.cts +3 -3
  98. package/dist/index10.vue.d.ts +1 -1
  99. package/dist/index11.vue.d.cts +1 -1
  100. package/dist/index11.vue.d.ts +2 -2
  101. package/dist/index12.vue.d.cts +2 -2
  102. package/dist/index12.vue.d.ts +2 -2
  103. package/dist/index13.vue.d.cts +2 -2
  104. package/dist/index13.vue.d.ts +5 -5
  105. package/dist/index14.vue.d.cts +5 -5
  106. package/dist/index14.vue.d.ts +6 -6
  107. package/dist/index15.vue.d.cts +6 -6
  108. package/dist/index15.vue.d.ts +1 -1
  109. package/dist/index16.vue.d.cts +1 -1
  110. package/dist/index17.vue.d.ts +1 -1
  111. package/dist/index18.vue.d.cts +1 -1
  112. package/dist/index18.vue.d.ts +5 -5
  113. package/dist/index19.vue.d.cts +5 -5
  114. package/dist/index19.vue.d.ts +1 -1
  115. package/dist/index2.vue.d.cts +2 -2
  116. package/dist/index2.vue.d.ts +2 -2
  117. package/dist/index20.vue.d.cts +1 -1
  118. package/dist/index20.vue.d.ts +1 -1
  119. package/dist/index21.vue.d.cts +1 -1
  120. package/dist/index21.vue.d.ts +1 -1
  121. package/dist/index22.vue.d.cts +1 -1
  122. package/dist/index22.vue.d.ts +1 -1
  123. package/dist/index23.vue.d.cts +2 -2
  124. package/dist/index23.vue.d.ts +2 -2
  125. package/dist/index25.vue.d.cts +4 -4
  126. package/dist/index25.vue.d.ts +4 -4
  127. package/dist/index27.vue.d.cts +2 -2
  128. package/dist/index27.vue.d.ts +2 -2
  129. package/dist/index28.vue.d.cts +1 -1
  130. package/dist/index28.vue.d.ts +1 -1
  131. package/dist/index3.vue.d.cts +4 -4
  132. package/dist/index3.vue.d.ts +4 -4
  133. package/dist/index4.vue.d.cts +1 -1
  134. package/dist/index6.vue.d.ts +2 -2
  135. package/dist/index7.vue.d.cts +2 -2
  136. package/dist/index8.vue.d.ts +3 -3
  137. package/dist/index9.vue.d.cts +3 -3
  138. package/dist/index9.vue.d.ts +3 -3
  139. package/dist/mapUtils.d.cts +2 -2
  140. package/dist/mapUtils.d.ts +2 -2
  141. package/dist/presets.d.cts +1 -1
  142. package/dist/presets.d.ts +1 -1
  143. package/dist/resolver.cjs +1 -1
  144. package/dist/resolver.d.cts +1 -1
  145. package/dist/resolver.d.ts +1 -1
  146. package/dist/resolver.js +1 -1
  147. package/dist/style.css +9976 -9652
  148. package/dist/useCropperCore.d.cts +9 -9
  149. package/dist/useCropperCore.d.ts +9 -9
  150. package/dist/useDraggableLayout.d.cts +6 -6
  151. package/dist/useDraggableLayout.d.ts +6 -6
  152. package/dist/useDynamicFormState.d.cts +2 -2
  153. package/dist/useDynamicFormState.d.ts +2 -2
  154. package/dist/useEdgeInteraction.d.cts +2 -2
  155. package/dist/useEdgeInteraction.d.ts +2 -2
  156. package/dist/useFormulaEvaluator.cjs +2 -0
  157. package/dist/useFormulaEvaluator.js +2 -0
  158. package/dist/useInfiniteScroll.d.cts +2 -2
  159. package/dist/useInfiniteScroll.d.ts +2 -2
  160. package/dist/useQRCode.d.cts +4 -4
  161. package/dist/useQRCode.d.ts +4 -4
  162. package/dist/useSearchState.d.cts +8 -8
  163. package/dist/useSearchState.d.ts +8 -8
  164. package/dist/useSignatureHistory.d.cts +3 -3
  165. package/dist/useSignatureHistory.d.ts +3 -3
  166. package/dist/useSplitResize.d.cts +4 -4
  167. package/dist/useSplitResize.d.ts +4 -4
  168. package/dist/useTableQuery.d.cts +1 -1
  169. package/dist/useTableQuery.d.ts +1 -1
  170. package/dist/useTimeSelection.d.cts +1 -1
  171. package/dist/useTimeSelection.d.ts +1 -1
  172. package/dist/useTreeOperations.d.cts +5 -5
  173. package/dist/useTreeOperations.d.ts +5 -5
  174. package/dist/useWorkflowValidation.d.cts +4 -4
  175. package/dist/useWorkflowValidation.d.ts +4 -4
  176. package/dist/verification.d.cts +4 -4
  177. package/dist/verification.d.ts +4 -4
  178. package/package.json +1 -1
  179. package/dist/C_FormulaEditor2.cjs +0 -2
  180. package/dist/C_FormulaEditor2.js +0 -2
@@ -1,294 +1,171 @@
1
- /* unplugin-vue-components disabled */.notification-badge[data-v-51516250] {
2
- position: relative;
1
+ :root{--c-primary: var(--primary-color, #2080f0);--c-primary-hover: var(--primary-color-hover, #4098fc);--c-primary-pressed: var(--primary-color-pressed, #1060c9);--c-success: var(--success-color, #18a058);--c-warning: var(--warning-color, #f0a020);--c-error: var(--error-color, #d03050);--c-info: var(--info-color, #2080f0);--c-bg-body: var(--body-color, #ffffff);--c-bg-card: var(--card-color, #ffffff);--c-bg-surface: var(--popover-color, #ffffff);--c-text-1: var(--text-color-1, #262626);--c-text-2: var(--text-color-2, #525252);--c-text-3: var(--text-color-3, #a3a3a3);--c-text-4: var(--text-color-4, #c0c0c0);--c-border: var(--border-color, #e5e7eb);--c-radius-sm: var(--border-radius-small, 4px);--c-radius: var(--border-radius, 6px);--c-transition-fast: 0.15s cubic-bezier(0.4, 0, 0.2, 1);--c-transition-base: 0.3s cubic-bezier(0.4, 0, 0.2, 1);--c-shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.08);--c-shadow-md: 0 4px 6px rgba(0, 0, 0, 0.1);--c-shadow-lg: 0 10px 15px rgba(0, 0, 0, 0.1)}
2
+
3
+ /* unplugin-vue-components disabled */.c-notification-center[data-v-a06c4b3a] {
3
4
  display: inline-flex;
4
5
  align-items: center;
5
6
  }
6
- .notification-badge__trigger[data-v-51516250] {
7
- appearance: none;
8
- border: 0;
9
- background: transparent;
10
- color: inherit;
11
- font: inherit;
12
- position: relative;
13
- display: inline-flex;
7
+ .c-notification-center__panel[data-v-a06c4b3a] {
8
+ display: flex;
9
+ flex-direction: column;
10
+ max-height: 560px;
11
+ }
12
+ .c-notification-center__header[data-v-a06c4b3a] {
13
+ display: flex;
14
14
  align-items: center;
15
- justify-content: center;
16
- cursor: pointer;
17
- padding: 4px;
18
- border-radius: 6px;
19
- transition: all var(--c-transition, 0.2s ease);
15
+ justify-content: space-between;
16
+ padding: 14px 16px 10px;
17
+ border-bottom: 1px solid var(--c-border);
20
18
  }
21
- .notification-badge__trigger[data-v-51516250]:hover {
22
- background-color: var(--c-border);
19
+ .c-notification-center__title[data-v-a06c4b3a] {
20
+ font-size: 15px;
21
+ font-weight: 600;
22
+ color: var(--c-text-1);
23
23
  }
24
- .notification-badge__trigger:hover .notification-badge__icon[data-v-51516250] {
25
- color: var(--c-primary);
24
+ .c-notification-center__header-extra[data-v-a06c4b3a] {
25
+ display: flex;
26
+ align-items: center;
27
+ gap: 8px;
26
28
  }
27
- .notification-badge__trigger[data-v-51516250]:focus-visible {
28
- outline: 2px solid var(--c-primary);
29
- outline-offset: 2px;
29
+ .c-notification-center__ws-dot[data-v-a06c4b3a] {
30
+ width: 8px;
31
+ height: 8px;
32
+ border-radius: 50%;
33
+ transition: background-color var(--c-transition, 0.2s ease);
30
34
  }
31
- .notification-badge__icon[data-v-51516250] {
32
- color: var(--c-text-2);
33
- transition: color var(--c-transition, 0.2s ease);
35
+ .c-notification-center__ws-dot--connected[data-v-a06c4b3a] {
36
+ background: #52c41a;
37
+ box-shadow: 0 0 4px rgba(82, 196, 26, 0.5);
34
38
  }
35
- .notification-badge__count[data-v-51516250] {
36
- position: absolute;
37
- top: -2px;
38
- right: -4px;
39
- min-width: 16px;
40
- height: 16px;
41
- padding: 0 4px;
42
- border-radius: 8px;
43
- background: #f5222d;
44
- color: #fff;
45
- font-size: 10px;
46
- font-weight: 600;
47
- line-height: 16px;
48
- text-align: center;
49
- white-space: nowrap;
50
- pointer-events: none;
51
- box-shadow: 0 0 0 2px var(--c-bg);
39
+ .c-notification-center__ws-dot--connecting[data-v-a06c4b3a], .c-notification-center__ws-dot--reconnecting[data-v-a06c4b3a] {
40
+ background: #faad14;
41
+ animation: status-blink-a06c4b3a 1s ease-in-out infinite;
52
42
  }
53
- .notification-badge__pulse[data-v-51516250] {
54
- position: absolute;
55
- top: -2px;
56
- right: -4px;
57
- width: 16px;
58
- height: 16px;
59
- border-radius: 50%;
60
- background: rgba(245, 34, 45, 0.4);
61
- animation: pulse-ring-51516250 1.5s cubic-bezier(0.215, 0.61, 0.355, 1) infinite;
62
- pointer-events: none;
43
+ .c-notification-center__ws-dot--disconnected[data-v-a06c4b3a] {
44
+ background: var(--c-text-4);
63
45
  }
64
- @keyframes pulse-ring-51516250 {
65
- 0% {
66
- transform: scale(0.8);
46
+ @keyframes status-blink-a06c4b3a {
47
+ 0%, 100% {
67
48
  opacity: 1;
68
49
  }
69
- 100% {
70
- transform: scale(2.2);
71
- opacity: 0;
50
+ 50% {
51
+ opacity: 0.3;
72
52
  }
73
53
  }
74
- .badge-bounce-enter-active[data-v-51516250] {
75
- animation: badge-in-51516250 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275);
54
+ /* ─── 切换过渡 ───────────────────────────────── */
55
+ .slide-fade-enter-active[data-v-a06c4b3a] {
56
+ transition: all 0.25s ease-out;
76
57
  }
77
- .badge-bounce-leave-active[data-v-51516250] {
78
- animation: badge-in-51516250 0.2s ease reverse;
58
+ .slide-fade-leave-active[data-v-a06c4b3a] {
59
+ transition: all 0.2s ease-in;
79
60
  }
80
- @keyframes badge-in-51516250 {
81
- 0% {
82
- transform: scale(0);
83
- opacity: 0;
61
+ .slide-fade-enter-from[data-v-a06c4b3a] {
62
+ opacity: 0;
63
+ transform: translateY(8px);
84
64
  }
85
- 100% {
86
- transform: scale(1);
87
- opacity: 1;
65
+ .slide-fade-leave-to[data-v-a06c4b3a] {
66
+ opacity: 0;
67
+ transform: translateY(-8px);
88
68
  }
69
+ /* unplugin-vue-components disabled *//*
70
+ * NPopover 的 content-class 样式需要在组件外部生效,
71
+ * 因为 NPopover 将内容渲染到 teleport 容器中,scoped 样式无法覆盖。
72
+ */
73
+ .c-notification-center__popover {
74
+ /*
75
+ * Popover 被 Teleport 到 body 后无法继承触发器作用域内的 --c-*。
76
+ * 直接桥接 NPopover 自身随主题注入的变量,确保明暗主题自动适配。
77
+ */
78
+ --c-bg-card: var(--n-color, #fff);
79
+ --c-bg-surface: var(--n-color, #fff);
80
+ --c-text-1: var(--n-text-color, #262626);
81
+ --c-text-2: color-mix(
82
+ in srgb,
83
+ var(--n-text-color, #262626) 68%,
84
+ transparent
85
+ );
86
+ --c-text-3: color-mix(
87
+ in srgb,
88
+ var(--n-text-color, #262626) 50%,
89
+ transparent
90
+ );
91
+ --c-text-4: color-mix(
92
+ in srgb,
93
+ var(--n-text-color, #262626) 36%,
94
+ transparent
95
+ );
96
+ --c-border: color-mix(
97
+ in srgb,
98
+ var(--n-text-color, #262626) 14%,
99
+ transparent
100
+ );
101
+ color: var(--n-text-color);
102
+ background-color: var(--n-color);
103
+ padding: 0 !important;
104
+ border-radius: 12px !important;
105
+ overflow: hidden;
106
+ box-shadow: var(--c-shadow, 0 12px 32px rgba(0, 0, 0, 0.1)) !important;
89
107
  }
90
108
  /* unplugin-vue-components disabled */
91
109
  /* layer: default */
92
- .absolute[data-v-51516250]{position:absolute;}
93
- .relative[data-v-51516250]{position:relative;}
94
- .inline-flex[data-v-51516250]{display:inline-flex;}
95
- .transform[data-v-51516250]{transform:translateX(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotateZ(var(--un-rotate-z)) skewX(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z));}
96
- .border[data-v-51516250]{border-width:1px;}
97
- .outline[data-v-51516250]{outline-style:solid;}
98
- .transition[data-v-51516250]{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;}
99
- .ease[data-v-51516250]{transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);}
110
+ .flex[data-v-a06c4b3a]{display:flex;}
111
+ .inline-flex[data-v-a06c4b3a]{display:inline-flex;}
112
+ .transform[data-v-a06c4b3a]{transform:translateX(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotateZ(var(--un-rotate-z)) skewX(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z));}
113
+ .transition[data-v-a06c4b3a]{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;}
114
+ .ease-in[data-v-a06c4b3a]{transition-timing-function:cubic-bezier(0.4, 0, 1, 1);}
115
+ .ease-in-out[data-v-a06c4b3a]{transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);}
116
+ .ease-out[data-v-a06c4b3a]{transition-timing-function:cubic-bezier(0, 0, 0.2, 1);}
100
117
 
101
- /* unplugin-vue-components disabled */.notification-item[data-v-2f1c8e96] {
118
+ /* unplugin-vue-components disabled */
119
+ /* layer: default */
120
+ .absolute[data-v-d366768f]{position:absolute;}
121
+ .relative[data-v-d366768f]{position:relative;}
122
+ .flex[data-v-d366768f]{display:flex;}
123
+ .px[data-v-d366768f]{padding-left:1rem;padding-right:1rem;}
124
+ .tab[data-v-d366768f]{-moz-tab-size:4;-o-tab-size:4;tab-size:4;}
125
+ .transition[data-v-d366768f]{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;}
126
+
127
+ /* unplugin-vue-components disabled */
128
+ /* layer: default */
129
+ .flex[data-v-8e02b6cd]{display:flex;}
130
+ .flex-wrap[data-v-8e02b6cd]{flex-wrap:wrap;}
131
+ .px[data-v-8e02b6cd]{padding-left:1rem;padding-right:1rem;}
132
+
133
+ /* unplugin-vue-components disabled */.notification-list__tabs[data-v-d366768f] {
102
134
  display: flex;
103
- align-items: flex-start;
104
- gap: 10px;
105
- padding: 12px 16px;
106
- cursor: pointer;
107
- transition: background-color var(--c-transition, 0.2s ease);
108
135
  border-bottom: 1px solid var(--c-border);
136
+ padding: 0 4px;
109
137
  }
110
- .notification-item[data-v-2f1c8e96]:last-child {
111
- border-bottom: none;
112
- }
113
- .notification-item[data-v-2f1c8e96]:hover {
114
- background-color: var(--c-bg-card);
115
- }
116
- .notification-item:hover .notification-item__actions[data-v-2f1c8e96] {
117
- opacity: 1;
118
- }
119
- .notification-item--unread[data-v-2f1c8e96] {
120
- background-color: color-mix(in srgb, var(--c-primary) 4%, transparent);
121
- }
122
- .notification-item--unread[data-v-2f1c8e96]:hover {
123
- background-color: color-mix(in srgb, var(--c-primary) 8%, transparent);
124
- }
125
- .notification-item--urgent[data-v-2f1c8e96] {
126
- border-left: 3px solid #f5222d;
127
- padding-left: 13px;
128
- }
129
- .notification-item[data-v-2f1c8e96] {
130
- /* ─── 子元素 ──────────────────────────── */
131
- }
132
- .notification-item__indicator[data-v-2f1c8e96] {
133
- flex-shrink: 0;
134
- width: 8px;
138
+ .notification-list__tab[data-v-d366768f] {
139
+ position: relative;
135
140
  display: flex;
136
141
  align-items: center;
137
- padding-top: 14px;
142
+ gap: 4px;
143
+ padding: 10px 12px;
144
+ font-size: 13px;
145
+ color: var(--c-text-2);
146
+ cursor: pointer;
147
+ transition: all var(--c-transition, 0.2s ease);
148
+ user-select: none;
138
149
  }
139
- .notification-item__dot[data-v-2f1c8e96] {
140
- width: 6px;
141
- height: 6px;
142
- border-radius: 50%;
143
- background: var(--c-primary);
150
+ .notification-list__tab[data-v-d366768f]::after {
151
+ content: "";
152
+ position: absolute;
153
+ bottom: 0;
154
+ left: 12px;
155
+ right: 12px;
156
+ height: 2px;
157
+ background: transparent;
158
+ border-radius: 1px;
159
+ transition: background var(--c-transition, 0.2s ease);
144
160
  }
145
- .notification-item__dot--urgent[data-v-2f1c8e96] {
146
- background: #f5222d;
147
- box-shadow: 0 0 4px rgba(245, 34, 45, 0.5);
161
+ .notification-list__tab[data-v-d366768f]:hover {
162
+ color: var(--c-text-1);
148
163
  }
149
- .notification-item__dot--high[data-v-2f1c8e96] {
150
- background: #fa8c16;
164
+ .notification-list__tab--active[data-v-d366768f] {
165
+ color: var(--c-primary);
166
+ font-weight: 500;
151
167
  }
152
- .notification-item__dot--normal[data-v-2f1c8e96] {
153
- background: var(--c-primary);
154
- }
155
- .notification-item__dot--low[data-v-2f1c8e96] {
156
- background: var(--c-text-4);
157
- }
158
- .notification-item__avatar[data-v-2f1c8e96] {
159
- flex-shrink: 0;
160
- }
161
- .notification-item__avatar-placeholder[data-v-2f1c8e96] {
162
- width: 36px;
163
- height: 36px;
164
- border-radius: 50%;
165
- display: flex;
166
- align-items: center;
167
- justify-content: center;
168
- font-size: 16px;
169
- color: #fff;
170
- }
171
- .notification-item__avatar-placeholder--system[data-v-2f1c8e96] {
172
- background: linear-gradient(135deg, #667eea, #764ba2);
173
- }
174
- .notification-item__avatar-placeholder--business[data-v-2f1c8e96] {
175
- background: linear-gradient(135deg, #43e97b, #38f9d7);
176
- color: #0d1425;
177
- }
178
- .notification-item__avatar-placeholder--alarm[data-v-2f1c8e96] {
179
- background: linear-gradient(135deg, #f093fb, #f5576c);
180
- }
181
- .notification-item__body[data-v-2f1c8e96] {
182
- flex: 1;
183
- min-width: 0;
184
- }
185
- .notification-item__header[data-v-2f1c8e96] {
186
- display: flex;
187
- align-items: center;
188
- gap: 6px;
189
- margin-bottom: 4px;
190
- }
191
- .notification-item__title[data-v-2f1c8e96] {
192
- font-size: 13px;
193
- font-weight: 500;
194
- color: var(--c-text-1);
195
- line-height: 1.4;
196
- overflow: hidden;
197
- text-overflow: ellipsis;
198
- white-space: nowrap;
199
- }
200
- .notification-item__summary[data-v-2f1c8e96] {
201
- font-size: 12px;
202
- color: var(--c-text-2);
203
- line-height: 1.5;
204
- display: -webkit-box;
205
- -webkit-line-clamp: 2;
206
- line-clamp: 2;
207
- -webkit-box-orient: vertical;
208
- overflow: hidden;
209
- }
210
- .notification-item__meta[data-v-2f1c8e96] {
211
- display: flex;
212
- align-items: center;
213
- gap: 8px;
214
- margin-top: 6px;
215
- }
216
- .notification-item__time[data-v-2f1c8e96], .notification-item__sender[data-v-2f1c8e96] {
217
- font-size: 11px;
218
- color: var(--c-text-4);
219
- }
220
- .notification-item__sender[data-v-2f1c8e96]::before {
221
- content: "·";
222
- margin-right: 8px;
223
- }
224
- .notification-item__actions[data-v-2f1c8e96] {
225
- flex-shrink: 0;
226
- display: flex;
227
- align-items: center;
228
- gap: 4px;
229
- opacity: 0;
230
- transition: opacity var(--c-transition, 0.2s ease);
231
- }
232
- .notification-item__action[data-v-2f1c8e96] {
233
- display: inline-flex;
234
- align-items: center;
235
- justify-content: center;
236
- width: 24px;
237
- height: 24px;
238
- padding: 2px;
239
- border-radius: 4px;
240
- cursor: pointer;
241
- color: var(--c-text-4);
242
- transition: all var(--c-transition, 0.2s ease);
243
- }
244
- .notification-item__action[data-v-2f1c8e96]:hover {
245
- color: var(--c-primary);
246
- background-color: var(--c-border);
247
- }
248
- /* unplugin-vue-components disabled */
249
- /* layer: default */
250
- .hidden[data-v-2f1c8e96]{display:none;}
251
- .flex[data-v-2f1c8e96]{display:flex;}
252
- .inline-flex[data-v-2f1c8e96]{display:inline-flex;}
253
- .flex-shrink[data-v-2f1c8e96]{flex-shrink:1;}
254
- .transition[data-v-2f1c8e96]{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;}
255
-
256
- /* unplugin-vue-components disabled */.notification-list__tabs[data-v-d366768f] {
257
- display: flex;
258
- border-bottom: 1px solid var(--c-border);
259
- padding: 0 4px;
260
- }
261
- .notification-list__tab[data-v-d366768f] {
262
- position: relative;
263
- display: flex;
264
- align-items: center;
265
- gap: 4px;
266
- padding: 10px 12px;
267
- font-size: 13px;
268
- color: var(--c-text-2);
269
- cursor: pointer;
270
- transition: all var(--c-transition, 0.2s ease);
271
- user-select: none;
272
- }
273
- .notification-list__tab[data-v-d366768f]::after {
274
- content: "";
275
- position: absolute;
276
- bottom: 0;
277
- left: 12px;
278
- right: 12px;
279
- height: 2px;
280
- background: transparent;
281
- border-radius: 1px;
282
- transition: background var(--c-transition, 0.2s ease);
283
- }
284
- .notification-list__tab[data-v-d366768f]:hover {
285
- color: var(--c-text-1);
286
- }
287
- .notification-list__tab--active[data-v-d366768f] {
288
- color: var(--c-primary);
289
- font-weight: 500;
290
- }
291
- .notification-list__tab--active[data-v-d366768f]::after {
168
+ .notification-list__tab--active[data-v-d366768f]::after {
292
169
  background: var(--c-primary);
293
170
  }
294
171
  .notification-list__tab-count[data-v-d366768f] {
@@ -358,12 +235,14 @@
358
235
  }
359
236
  /* unplugin-vue-components disabled */
360
237
  /* layer: default */
361
- .absolute[data-v-d366768f]{position:absolute;}
362
- .relative[data-v-d366768f]{position:relative;}
363
- .flex[data-v-d366768f]{display:flex;}
364
- .px[data-v-d366768f]{padding-left:1rem;padding-right:1rem;}
365
- .tab[data-v-d366768f]{-moz-tab-size:4;-o-tab-size:4;tab-size:4;}
366
- .transition[data-v-d366768f]{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;}
238
+ .absolute[data-v-51516250]{position:absolute;}
239
+ .relative[data-v-51516250]{position:relative;}
240
+ .inline-flex[data-v-51516250]{display:inline-flex;}
241
+ .transform[data-v-51516250]{transform:translateX(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotateZ(var(--un-rotate-z)) skewX(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z));}
242
+ .border[data-v-51516250]{border-width:1px;}
243
+ .outline[data-v-51516250]{outline-style:solid;}
244
+ .transition[data-v-51516250]{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;}
245
+ .ease[data-v-51516250]{transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);}
367
246
 
368
247
  /* unplugin-vue-components disabled */.notification-detail[data-v-8e02b6cd] {
369
248
  display: flex;
@@ -435,124 +314,247 @@
435
314
  display: flex;
436
315
  justify-content: flex-end;
437
316
  }
438
- /* unplugin-vue-components disabled */
439
- /* layer: default */
440
- .flex[data-v-8e02b6cd]{display:flex;}
441
- .flex-wrap[data-v-8e02b6cd]{flex-wrap:wrap;}
442
- .px[data-v-8e02b6cd]{padding-left:1rem;padding-right:1rem;}
443
-
444
- /* unplugin-vue-components disabled */.c-notification-center[data-v-a06c4b3a] {
317
+ /* unplugin-vue-components disabled */.notification-badge[data-v-51516250] {
318
+ position: relative;
445
319
  display: inline-flex;
446
320
  align-items: center;
447
321
  }
448
- .c-notification-center__panel[data-v-a06c4b3a] {
449
- display: flex;
450
- flex-direction: column;
451
- max-height: 560px;
322
+ .notification-badge__trigger[data-v-51516250] {
323
+ appearance: none;
324
+ border: 0;
325
+ background: transparent;
326
+ color: inherit;
327
+ font: inherit;
328
+ position: relative;
329
+ display: inline-flex;
330
+ align-items: center;
331
+ justify-content: center;
332
+ cursor: pointer;
333
+ padding: 4px;
334
+ border-radius: 6px;
335
+ transition: all var(--c-transition, 0.2s ease);
452
336
  }
453
- .c-notification-center__header[data-v-a06c4b3a] {
337
+ .notification-badge__trigger[data-v-51516250]:hover {
338
+ background-color: var(--c-border);
339
+ }
340
+ .notification-badge__trigger:hover .notification-badge__icon[data-v-51516250] {
341
+ color: var(--c-primary);
342
+ }
343
+ .notification-badge__trigger[data-v-51516250]:focus-visible {
344
+ outline: 2px solid var(--c-primary);
345
+ outline-offset: 2px;
346
+ }
347
+ .notification-badge__icon[data-v-51516250] {
348
+ color: var(--c-text-2);
349
+ transition: color var(--c-transition, 0.2s ease);
350
+ }
351
+ .notification-badge__count[data-v-51516250] {
352
+ position: absolute;
353
+ top: -2px;
354
+ right: -4px;
355
+ min-width: 16px;
356
+ height: 16px;
357
+ padding: 0 4px;
358
+ border-radius: 8px;
359
+ background: #f5222d;
360
+ color: #fff;
361
+ font-size: 10px;
362
+ font-weight: 600;
363
+ line-height: 16px;
364
+ text-align: center;
365
+ white-space: nowrap;
366
+ pointer-events: none;
367
+ box-shadow: 0 0 0 2px var(--c-bg);
368
+ }
369
+ .notification-badge__pulse[data-v-51516250] {
370
+ position: absolute;
371
+ top: -2px;
372
+ right: -4px;
373
+ width: 16px;
374
+ height: 16px;
375
+ border-radius: 50%;
376
+ background: rgba(245, 34, 45, 0.4);
377
+ animation: pulse-ring-51516250 1.5s cubic-bezier(0.215, 0.61, 0.355, 1) infinite;
378
+ pointer-events: none;
379
+ }
380
+ @keyframes pulse-ring-51516250 {
381
+ 0% {
382
+ transform: scale(0.8);
383
+ opacity: 1;
384
+ }
385
+ 100% {
386
+ transform: scale(2.2);
387
+ opacity: 0;
388
+ }
389
+ }
390
+ .badge-bounce-enter-active[data-v-51516250] {
391
+ animation: badge-in-51516250 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275);
392
+ }
393
+ .badge-bounce-leave-active[data-v-51516250] {
394
+ animation: badge-in-51516250 0.2s ease reverse;
395
+ }
396
+ @keyframes badge-in-51516250 {
397
+ 0% {
398
+ transform: scale(0);
399
+ opacity: 0;
400
+ }
401
+ 100% {
402
+ transform: scale(1);
403
+ opacity: 1;
404
+ }
405
+ }
406
+ /* unplugin-vue-components disabled */
407
+ /* layer: default */
408
+ .hidden[data-v-2f1c8e96]{display:none;}
409
+ .flex[data-v-2f1c8e96]{display:flex;}
410
+ .inline-flex[data-v-2f1c8e96]{display:inline-flex;}
411
+ .flex-shrink[data-v-2f1c8e96]{flex-shrink:1;}
412
+ .transition[data-v-2f1c8e96]{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;}
413
+
414
+ /* unplugin-vue-components disabled */.notification-item[data-v-2f1c8e96] {
454
415
  display: flex;
455
- align-items: center;
456
- justify-content: space-between;
457
- padding: 14px 16px 10px;
416
+ align-items: flex-start;
417
+ gap: 10px;
418
+ padding: 12px 16px;
419
+ cursor: pointer;
420
+ transition: background-color var(--c-transition, 0.2s ease);
458
421
  border-bottom: 1px solid var(--c-border);
459
422
  }
460
- .c-notification-center__title[data-v-a06c4b3a] {
461
- font-size: 15px;
462
- font-weight: 600;
463
- color: var(--c-text-1);
423
+ .notification-item[data-v-2f1c8e96]:last-child {
424
+ border-bottom: none;
464
425
  }
465
- .c-notification-center__header-extra[data-v-a06c4b3a] {
426
+ .notification-item[data-v-2f1c8e96]:hover {
427
+ background-color: var(--c-bg-card);
428
+ }
429
+ .notification-item:hover .notification-item__actions[data-v-2f1c8e96] {
430
+ opacity: 1;
431
+ }
432
+ .notification-item--unread[data-v-2f1c8e96] {
433
+ background-color: color-mix(in srgb, var(--c-primary) 4%, transparent);
434
+ }
435
+ .notification-item--unread[data-v-2f1c8e96]:hover {
436
+ background-color: color-mix(in srgb, var(--c-primary) 8%, transparent);
437
+ }
438
+ .notification-item--urgent[data-v-2f1c8e96] {
439
+ border-left: 3px solid #f5222d;
440
+ padding-left: 13px;
441
+ }
442
+ .notification-item[data-v-2f1c8e96] {
443
+ /* ─── 子元素 ──────────────────────────── */
444
+ }
445
+ .notification-item__indicator[data-v-2f1c8e96] {
446
+ flex-shrink: 0;
447
+ width: 8px;
466
448
  display: flex;
467
449
  align-items: center;
468
- gap: 8px;
450
+ padding-top: 14px;
469
451
  }
470
- .c-notification-center__ws-dot[data-v-a06c4b3a] {
471
- width: 8px;
472
- height: 8px;
452
+ .notification-item__dot[data-v-2f1c8e96] {
453
+ width: 6px;
454
+ height: 6px;
473
455
  border-radius: 50%;
474
- transition: background-color var(--c-transition, 0.2s ease);
456
+ background: var(--c-primary);
475
457
  }
476
- .c-notification-center__ws-dot--connected[data-v-a06c4b3a] {
477
- background: #52c41a;
478
- box-shadow: 0 0 4px rgba(82, 196, 26, 0.5);
458
+ .notification-item__dot--urgent[data-v-2f1c8e96] {
459
+ background: #f5222d;
460
+ box-shadow: 0 0 4px rgba(245, 34, 45, 0.5);
479
461
  }
480
- .c-notification-center__ws-dot--connecting[data-v-a06c4b3a], .c-notification-center__ws-dot--reconnecting[data-v-a06c4b3a] {
481
- background: #faad14;
482
- animation: status-blink-a06c4b3a 1s ease-in-out infinite;
462
+ .notification-item__dot--high[data-v-2f1c8e96] {
463
+ background: #fa8c16;
483
464
  }
484
- .c-notification-center__ws-dot--disconnected[data-v-a06c4b3a] {
465
+ .notification-item__dot--normal[data-v-2f1c8e96] {
466
+ background: var(--c-primary);
467
+ }
468
+ .notification-item__dot--low[data-v-2f1c8e96] {
485
469
  background: var(--c-text-4);
486
470
  }
487
- @keyframes status-blink-a06c4b3a {
488
- 0%, 100% {
489
- opacity: 1;
471
+ .notification-item__avatar[data-v-2f1c8e96] {
472
+ flex-shrink: 0;
490
473
  }
491
- 50% {
492
- opacity: 0.3;
474
+ .notification-item__avatar-placeholder[data-v-2f1c8e96] {
475
+ width: 36px;
476
+ height: 36px;
477
+ border-radius: 50%;
478
+ display: flex;
479
+ align-items: center;
480
+ justify-content: center;
481
+ font-size: 16px;
482
+ color: #fff;
493
483
  }
484
+ .notification-item__avatar-placeholder--system[data-v-2f1c8e96] {
485
+ background: linear-gradient(135deg, #667eea, #764ba2);
494
486
  }
495
- /* ─── 切换过渡 ───────────────────────────────── */
496
- .slide-fade-enter-active[data-v-a06c4b3a] {
497
- transition: all 0.25s ease-out;
487
+ .notification-item__avatar-placeholder--business[data-v-2f1c8e96] {
488
+ background: linear-gradient(135deg, #43e97b, #38f9d7);
489
+ color: #0d1425;
498
490
  }
499
- .slide-fade-leave-active[data-v-a06c4b3a] {
500
- transition: all 0.2s ease-in;
491
+ .notification-item__avatar-placeholder--alarm[data-v-2f1c8e96] {
492
+ background: linear-gradient(135deg, #f093fb, #f5576c);
501
493
  }
502
- .slide-fade-enter-from[data-v-a06c4b3a] {
503
- opacity: 0;
504
- transform: translateY(8px);
494
+ .notification-item__body[data-v-2f1c8e96] {
495
+ flex: 1;
496
+ min-width: 0;
505
497
  }
506
- .slide-fade-leave-to[data-v-a06c4b3a] {
507
- opacity: 0;
508
- transform: translateY(-8px);
498
+ .notification-item__header[data-v-2f1c8e96] {
499
+ display: flex;
500
+ align-items: center;
501
+ gap: 6px;
502
+ margin-bottom: 4px;
509
503
  }
510
- /* unplugin-vue-components disabled *//*
511
- * NPopover 的 content-class 样式需要在组件外部生效,
512
- * 因为 NPopover 将内容渲染到 teleport 容器中,scoped 样式无法覆盖。
513
- */
514
- .c-notification-center__popover {
515
- /*
516
- * Popover 被 Teleport 到 body 后无法继承触发器作用域内的 --c-*。
517
- * 直接桥接 NPopover 自身随主题注入的变量,确保明暗主题自动适配。
518
- */
519
- --c-bg-card: var(--n-color, #fff);
520
- --c-bg-surface: var(--n-color, #fff);
521
- --c-text-1: var(--n-text-color, #262626);
522
- --c-text-2: color-mix(
523
- in srgb,
524
- var(--n-text-color, #262626) 68%,
525
- transparent
526
- );
527
- --c-text-3: color-mix(
528
- in srgb,
529
- var(--n-text-color, #262626) 50%,
530
- transparent
531
- );
532
- --c-text-4: color-mix(
533
- in srgb,
534
- var(--n-text-color, #262626) 36%,
535
- transparent
536
- );
537
- --c-border: color-mix(
538
- in srgb,
539
- var(--n-text-color, #262626) 14%,
540
- transparent
541
- );
542
- color: var(--n-text-color);
543
- background-color: var(--n-color);
544
- padding: 0 !important;
545
- border-radius: 12px !important;
504
+ .notification-item__title[data-v-2f1c8e96] {
505
+ font-size: 13px;
506
+ font-weight: 500;
507
+ color: var(--c-text-1);
508
+ line-height: 1.4;
546
509
  overflow: hidden;
547
- box-shadow: var(--c-shadow, 0 12px 32px rgba(0, 0, 0, 0.1)) !important;
510
+ text-overflow: ellipsis;
511
+ white-space: nowrap;
548
512
  }
549
- /* unplugin-vue-components disabled */
550
- /* layer: default */
551
- .flex[data-v-a06c4b3a]{display:flex;}
552
- .inline-flex[data-v-a06c4b3a]{display:inline-flex;}
553
- .transform[data-v-a06c4b3a]{transform:translateX(var(--un-translate-x)) translateY(var(--un-translate-y)) translateZ(var(--un-translate-z)) rotate(var(--un-rotate)) rotateX(var(--un-rotate-x)) rotateY(var(--un-rotate-y)) rotateZ(var(--un-rotate-z)) skewX(var(--un-skew-x)) skewY(var(--un-skew-y)) scaleX(var(--un-scale-x)) scaleY(var(--un-scale-y)) scaleZ(var(--un-scale-z));}
554
- .transition[data-v-a06c4b3a]{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;}
555
- .ease-in[data-v-a06c4b3a]{transition-timing-function:cubic-bezier(0.4, 0, 1, 1);}
556
- .ease-in-out[data-v-a06c4b3a]{transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);}
557
- .ease-out[data-v-a06c4b3a]{transition-timing-function:cubic-bezier(0, 0, 0.2, 1);}
558
-
513
+ .notification-item__summary[data-v-2f1c8e96] {
514
+ font-size: 12px;
515
+ color: var(--c-text-2);
516
+ line-height: 1.5;
517
+ display: -webkit-box;
518
+ -webkit-line-clamp: 2;
519
+ line-clamp: 2;
520
+ -webkit-box-orient: vertical;
521
+ overflow: hidden;
522
+ }
523
+ .notification-item__meta[data-v-2f1c8e96] {
524
+ display: flex;
525
+ align-items: center;
526
+ gap: 8px;
527
+ margin-top: 6px;
528
+ }
529
+ .notification-item__time[data-v-2f1c8e96], .notification-item__sender[data-v-2f1c8e96] {
530
+ font-size: 11px;
531
+ color: var(--c-text-4);
532
+ }
533
+ .notification-item__sender[data-v-2f1c8e96]::before {
534
+ content: "·";
535
+ margin-right: 8px;
536
+ }
537
+ .notification-item__actions[data-v-2f1c8e96] {
538
+ flex-shrink: 0;
539
+ display: flex;
540
+ align-items: center;
541
+ gap: 4px;
542
+ opacity: 0;
543
+ transition: opacity var(--c-transition, 0.2s ease);
544
+ }
545
+ .notification-item__action[data-v-2f1c8e96] {
546
+ display: inline-flex;
547
+ align-items: center;
548
+ justify-content: center;
549
+ width: 24px;
550
+ height: 24px;
551
+ padding: 2px;
552
+ border-radius: 4px;
553
+ cursor: pointer;
554
+ color: var(--c-text-4);
555
+ transition: all var(--c-transition, 0.2s ease);
556
+ }
557
+ .notification-item__action[data-v-2f1c8e96]:hover {
558
+ color: var(--c-primary);
559
+ background-color: var(--c-border);
560
+ }