orbcafe-ui 3.1.1 → 3.1.3

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.
package/dist/orbis.css CHANGED
@@ -2634,6 +2634,10 @@ button.orb-app-header-locale:hover,
2634
2634
 
2635
2635
  /* ---------- OMPHPanel ---------- */
2636
2636
  /* ORBIS tokens only. Working state is motion: pulse, spinner, shimmer. */
2637
+ /* ── 玻璃面默认值 ──
2638
+ 可见透光 = (1-不透明度) × 背景浓度:78%×13%≈3% 不可见,64% 起才有玻璃感;
2639
+ 磨砂靠 backdrop-filter 保可读;嵌套面必须透明(64%×64%≈87% 会变实心)。
2640
+ 素背景上玻璃≈实心(canvas 叠 canvas),设计背景(泛光/纹理)上即玻璃。 */
2637
2641
  .orb-omph-panel {
2638
2642
  --orb-omph-column: 800px;
2639
2643
  --orb-omph-process-max: 240px;
@@ -2649,7 +2653,9 @@ button.orb-app-header-locale:hover,
2649
2653
  overflow: hidden;
2650
2654
  border: 1px solid var(--orb-border);
2651
2655
  border-radius: var(--orb-shell-radius);
2652
- background: var(--orb-canvas);
2656
+ background: color-mix(in oklch, var(--orb-canvas) 64%, transparent);
2657
+ backdrop-filter: blur(28px);
2658
+ -webkit-backdrop-filter: blur(28px);
2653
2659
  box-shadow: var(--orb-shadow-1);
2654
2660
  color: var(--orb-fg);
2655
2661
  font-family: var(--orb-font);
@@ -2670,7 +2676,9 @@ button.orb-app-header-locale:hover,
2670
2676
  overflow: hidden;
2671
2677
  border: 1px solid var(--orb-warn);
2672
2678
  border-radius: var(--orb-shell-radius);
2673
- background: var(--orb-canvas);
2679
+ background: color-mix(in oklch, var(--orb-canvas) 64%, transparent);
2680
+ backdrop-filter: blur(28px);
2681
+ -webkit-backdrop-filter: blur(28px);
2674
2682
  box-shadow: var(--orb-shadow-2);
2675
2683
  }
2676
2684
 
@@ -2797,13 +2805,120 @@ button.orb-app-header-locale:hover,
2797
2805
  }
2798
2806
 
2799
2807
  .orb-omph-header {
2808
+ position: relative;
2809
+ z-index: 2;
2800
2810
  display: flex;
2801
2811
  align-items: center;
2802
2812
  gap: 10px;
2803
2813
  flex: none;
2804
2814
  padding: 12px 14px;
2805
2815
  border-bottom: 1px solid var(--orb-border);
2806
- background: var(--orb-canvas);
2816
+ background: color-mix(in oklch, var(--orb-canvas) 64%, transparent);
2817
+ backdrop-filter: blur(28px);
2818
+ -webkit-backdrop-filter: blur(28px);
2819
+ }
2820
+
2821
+ .orb-omph-header-actions {
2822
+ margin-left: auto;
2823
+ display: flex;
2824
+ flex: none;
2825
+ align-items: center;
2826
+ gap: 2px;
2827
+ }
2828
+
2829
+ .orb-omph-icon-btn {
2830
+ display: inline-flex;
2831
+ align-items: center;
2832
+ justify-content: center;
2833
+ width: 32px;
2834
+ height: 32px;
2835
+ border: 0;
2836
+ border-radius: 8px;
2837
+ background: transparent;
2838
+ color: var(--orb-muted);
2839
+ cursor: pointer;
2840
+ }
2841
+
2842
+ .orb-omph-icon-btn:hover,
2843
+ .orb-omph-icon-btn[aria-expanded="true"] {
2844
+ background: var(--orb-hover);
2845
+ color: var(--orb-primary);
2846
+ }
2847
+
2848
+ .orb-omph-icon-btn:focus-visible {
2849
+ outline: 2px solid var(--orb-focus-ring);
2850
+ outline-offset: 1px;
2851
+ }
2852
+
2853
+ .orb-omph-conversation-anchor {
2854
+ position: relative;
2855
+ }
2856
+
2857
+ .orb-omph-conversations {
2858
+ position: absolute;
2859
+ top: calc(100% + 8px);
2860
+ right: 0;
2861
+ z-index: 3;
2862
+ width: min(280px, calc(100vw - 48px));
2863
+ max-height: 320px;
2864
+ overflow: auto;
2865
+ padding: 6px;
2866
+ border: 1px solid var(--orb-border);
2867
+ border-radius: var(--orb-r);
2868
+ background: color-mix(in oklch, var(--orb-canvas) 72%, transparent);
2869
+ backdrop-filter: blur(28px);
2870
+ -webkit-backdrop-filter: blur(28px);
2871
+ box-shadow: var(--orb-shadow-1);
2872
+ }
2873
+
2874
+ .orb-omph-conversation {
2875
+ display: flex;
2876
+ flex-direction: column;
2877
+ align-items: flex-start;
2878
+ gap: 2px;
2879
+ width: 100%;
2880
+ min-width: 0;
2881
+ padding: 8px 10px;
2882
+ border: 0;
2883
+ border-radius: 8px;
2884
+ background: transparent;
2885
+ color: var(--orb-fg);
2886
+ text-align: left;
2887
+ cursor: pointer;
2888
+ }
2889
+
2890
+ .orb-omph-conversation:hover,
2891
+ .orb-omph-conversation[data-active="true"] {
2892
+ background: var(--orb-p50);
2893
+ }
2894
+
2895
+ .orb-omph-conversation:focus-visible {
2896
+ outline: 2px solid var(--orb-focus-ring);
2897
+ outline-offset: -2px;
2898
+ }
2899
+
2900
+ .orb-omph-conversation-title,
2901
+ .orb-omph-conversation-meta {
2902
+ width: 100%;
2903
+ overflow: hidden;
2904
+ text-overflow: ellipsis;
2905
+ white-space: nowrap;
2906
+ }
2907
+
2908
+ .orb-omph-conversation-title {
2909
+ font: 600 13px/1.3 var(--orb-font);
2910
+ }
2911
+
2912
+ .orb-omph-conversation-meta {
2913
+ font: 500 11px/1.3 var(--orb-font);
2914
+ color: var(--orb-muted);
2915
+ }
2916
+
2917
+ .orb-omph-conversation-empty {
2918
+ margin: 0;
2919
+ padding: 12px 10px;
2920
+ color: var(--orb-muted);
2921
+ font: 500 13px/1.4 var(--orb-font);
2807
2922
  }
2808
2923
 
2809
2924
  .orb-omph-avatar {
@@ -2951,11 +3066,12 @@ button.orb-app-header-locale:hover,
2951
3066
  }
2952
3067
 
2953
3068
  .orb-omph-process-chevron {
3069
+ transform: rotate(-90deg);
2954
3070
  transition: transform var(--orb-t-fast);
2955
3071
  }
2956
3072
 
2957
3073
  .orb-omph-process[data-open="true"] .orb-omph-process-chevron {
2958
- transform: rotate(180deg);
3074
+ transform: rotate(0deg);
2959
3075
  }
2960
3076
 
2961
3077
  .orb-omph-process-summary {
@@ -3067,7 +3183,9 @@ button.orb-app-header-locale:hover,
3067
3183
  .orb-omph-older,
3068
3184
  .orb-omph-to-bottom {
3069
3185
  border: 1px solid var(--orb-border);
3070
- background: var(--orb-canvas);
3186
+ background: color-mix(in oklch, var(--orb-canvas) 72%, transparent);
3187
+ backdrop-filter: blur(20px);
3188
+ -webkit-backdrop-filter: blur(20px);
3071
3189
  color: var(--orb-muted);
3072
3190
  cursor: pointer;
3073
3191
  }
@@ -3234,7 +3352,7 @@ button.orb-app-header-locale:hover,
3234
3352
  flex: none;
3235
3353
  padding: 12px 16px 16px;
3236
3354
  border-top: 1px solid var(--orb-border);
3237
- background: var(--orb-canvas);
3355
+ background: transparent;
3238
3356
  }
3239
3357
 
3240
3358
  .orb-omph-input {
@@ -3356,7 +3474,7 @@ button.orb-app-header-locale:hover,
3356
3474
  width: var(--orb-omph-pv-pref);
3357
3475
  display: flex;
3358
3476
  flex-direction: column;
3359
- background: var(--orb-canvas);
3477
+ background: transparent;
3360
3478
  }
3361
3479
 
3362
3480
  .orb-omph-preview[data-placement="overlay"] {
@@ -3511,6 +3629,15 @@ button.orb-app-header-locale:hover,
3511
3629
  overflow: hidden;
3512
3630
  }
3513
3631
 
3632
+ /* embed 文档(PDF 等):iframe 吃满内容区,原生查看器负责滚动 */
3633
+ .orb-omph-pv-embed {
3634
+ flex: 1;
3635
+ width: 100%;
3636
+ min-height: 0;
3637
+ border: 0;
3638
+ background: var(--orb-canvas);
3639
+ }
3640
+
3514
3641
  .orb-omph-pv-note {
3515
3642
  padding: 12px 20px;
3516
3643
  color: var(--orb-muted);
@@ -3899,3 +4026,159 @@ button.orb-app-header-locale:hover,
3899
4026
  animation: none;
3900
4027
  }
3901
4028
  }
4029
+
4030
+ /* ═══════════════════════════════════════════════════════════════
4031
+ OMPHPanel 边缘泛光外壳(orb-omph-bloom)
4032
+
4033
+ 宿主结构:bloom > backdrop + center > panel(> glow + card) + composer。
4034
+ 状态机制:OMPHPanel 根节点自带 data-status;外壳经 :has() 自动联动——
4035
+ 静息 = CI 四色泛光 + 背景环境光;running/pending = 四周泛金光,
4036
+ 环境光(backdrop::before,宿主自绘)整体淡出,金光成为唯一光源。
4037
+ 宿主也可手动加 .is-working 类驱动(等价)。宿主只负责:
4038
+ ① backdrop::before 画自己的环境光洗 ② backdrop 本体画纹理
4039
+ ③ center 内摆放 bloom-panel(glow + card)与 bloom-composer。
4040
+ ═══════════════════════════════════════════════════════════════ */
4041
+
4042
+ .orb-omph-bloom {
4043
+ --orb-bloom-spread: 168px;
4044
+ --orb-bloom-blur: 64px;
4045
+ --orb-bloom-backdrop: 18px;
4046
+ --orb-bloom-breathe: 2.6s;
4047
+ --orb-bloom-petrol: color-mix(in oklch, #00a3a3 58%, transparent);
4048
+ --orb-bloom-blue: color-mix(in oklch, #00488a 58%, transparent);
4049
+ --orb-bloom-pink: color-mix(in oklch, #db3360 48%, transparent);
4050
+ position: absolute;
4051
+ inset: 0;
4052
+ z-index: 1;
4053
+ overflow: hidden;
4054
+ pointer-events: none;
4055
+ }
4056
+
4057
+ html.orb-dark .orb-omph-bloom,
4058
+ html[data-orb-mode="dark"] .orb-omph-bloom {
4059
+ --orb-bloom-petrol: color-mix(in oklch, #00a3a3 70%, transparent);
4060
+ --orb-bloom-blue: color-mix(in oklch, #00488a 72%, transparent);
4061
+ --orb-bloom-pink: color-mix(in oklch, #db3360 64%, transparent);
4062
+ }
4063
+
4064
+ .orb-omph-bloom-backdrop {
4065
+ position: absolute;
4066
+ inset: 0;
4067
+ pointer-events: auto;
4068
+ background: color-mix(in oklch, var(--orb-canvas) 42%, transparent);
4069
+ backdrop-filter: blur(var(--orb-bloom-backdrop));
4070
+ -webkit-backdrop-filter: blur(var(--orb-bloom-backdrop));
4071
+ }
4072
+
4073
+ /* 环境光层:库只给壳(定位 + 淡出过渡),宿主在其 background 上画光洗 */
4074
+ .orb-omph-bloom-backdrop::before {
4075
+ content: "";
4076
+ position: absolute;
4077
+ inset: 0;
4078
+ pointer-events: none;
4079
+ transition: opacity 0.6s ease;
4080
+ }
4081
+
4082
+ .orb-omph-bloom-center {
4083
+ position: relative;
4084
+ z-index: 1;
4085
+ display: flex;
4086
+ flex-direction: column;
4087
+ align-items: center;
4088
+ justify-content: center;
4089
+ gap: 12px;
4090
+ box-sizing: border-box;
4091
+ height: 100%;
4092
+ min-height: 0;
4093
+ padding: 20px 24px 24px;
4094
+ pointer-events: none;
4095
+ }
4096
+
4097
+ .orb-omph-bloom-panel {
4098
+ position: relative;
4099
+ display: flex;
4100
+ flex-direction: column;
4101
+ flex: 1 1 0;
4102
+ min-height: 0;
4103
+ overflow: visible;
4104
+ width: min(100%, var(--orb-bloom-width));
4105
+ pointer-events: auto;
4106
+ }
4107
+
4108
+ .orb-omph-bloom-glow {
4109
+ position: absolute;
4110
+ z-index: 0;
4111
+ inset: calc(var(--orb-bloom-spread) * -1);
4112
+ pointer-events: none;
4113
+ background:
4114
+ radial-gradient(ellipse 70% 48% at 50% 0%, var(--orb-bloom-petrol), transparent 68%),
4115
+ radial-gradient(ellipse 48% 70% at 0% 50%, var(--orb-bloom-petrol), transparent 68%),
4116
+ radial-gradient(ellipse 48% 70% at 100% 50%, var(--orb-bloom-blue), transparent 68%),
4117
+ radial-gradient(ellipse 70% 48% at 50% 100%, var(--orb-bloom-pink), transparent 68%);
4118
+ filter: blur(var(--orb-bloom-blur));
4119
+ animation: orb-omph-bloom-breathe var(--orb-bloom-breathe) ease-in-out infinite;
4120
+ }
4121
+
4122
+ .orb-omph-bloom-card {
4123
+ position: relative;
4124
+ z-index: 1;
4125
+ display: flex;
4126
+ flex: 1 1 0;
4127
+ flex-direction: column;
4128
+ min-height: 0;
4129
+ width: 100%;
4130
+ }
4131
+
4132
+ /* bloom 美学:面板去边框,泛光负责边缘;嵌套浮层透明靠外层玻璃 */
4133
+ .orb-omph-bloom-card .orb-omph-panel {
4134
+ border-color: transparent;
4135
+ box-shadow: none;
4136
+ }
4137
+
4138
+ .orb-omph-bloom-card .orb-omph-pv,
4139
+ .orb-omph-bloom-card .orb-omph-approval-other {
4140
+ background: transparent;
4141
+ }
4142
+
4143
+ .orb-omph-bloom-composer {
4144
+ position: relative;
4145
+ z-index: 2;
4146
+ flex: 0 1 auto;
4147
+ width: min(100%, var(--orb-bloom-width));
4148
+ max-height: 46%;
4149
+ min-height: 0;
4150
+ overflow: auto;
4151
+ pointer-events: auto;
4152
+ }
4153
+
4154
+ /* ── AI 工作态:四周泛金光 + 环境光隐退 ──
4155
+ 面板 data-status 自动联动(:has),或宿主手动 .is-working;
4156
+ 金色为产品显式要求,超出 CI 色板。 */
4157
+ .orb-omph-bloom.is-working,
4158
+ .orb-omph-bloom:has(.orb-omph-panel[data-status="running"]),
4159
+ .orb-omph-bloom:has(.orb-omph-panel[data-status="pending"]),
4160
+ html.orb-dark .orb-omph-bloom.is-working,
4161
+ html[data-orb-mode="dark"] .orb-omph-bloom.is-working {
4162
+ --orb-bloom-petrol: color-mix(in oklch, #d4af37 66%, transparent);
4163
+ --orb-bloom-blue: color-mix(in oklch, #d4af37 66%, transparent);
4164
+ --orb-bloom-pink: color-mix(in oklch, #e6c35c 60%, transparent);
4165
+ }
4166
+
4167
+ .orb-omph-bloom.is-working .orb-omph-bloom-backdrop::before,
4168
+ .orb-omph-bloom:has(.orb-omph-panel[data-status="running"]) .orb-omph-bloom-backdrop::before,
4169
+ .orb-omph-bloom:has(.orb-omph-panel[data-status="pending"]) .orb-omph-bloom-backdrop::before {
4170
+ opacity: 0;
4171
+ }
4172
+
4173
+ @keyframes orb-omph-bloom-breathe {
4174
+ 0%,
4175
+ 100% { opacity: 0.78; }
4176
+ 50% { opacity: 1; }
4177
+ }
4178
+
4179
+ @media (prefers-reduced-motion: reduce) {
4180
+ .orb-omph-bloom-glow {
4181
+ animation: none;
4182
+ opacity: 1;
4183
+ }
4184
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "orbcafe-ui",
3
- "version": "3.1.1",
3
+ "version": "3.1.3",
4
4
  "description": "ORBCAFE UI components — ORBIS brand system, MUI-free",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",