@ctrl-ui/react 0.8.20 → 0.9.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 (161) hide show
  1. package/README.md +1 -0
  2. package/dist/action-bar.d.ts +1 -2
  3. package/dist/action-bar.js +7 -8
  4. package/dist/blocks/design-canvas-inspector.js +4 -1
  5. package/dist/blocks/file-explorer.js +1 -1
  6. package/dist/chat-message.js +4 -13
  7. package/dist/hooks/use-textarea-trigger-menu.d.ts +21 -3
  8. package/dist/hooks/use-textarea-trigger-menu.js +36 -40
  9. package/dist/hooks/use-user-ask.d.ts +1 -0
  10. package/dist/hooks/use-user-ask.js +5 -1
  11. package/dist/knob-contracts/audio-recorder-knobs.d.ts +1 -1
  12. package/dist/knob-contracts/audio-recorder-knobs.js +2 -1
  13. package/dist/knob-contracts/chart-knobs.d.ts +4 -0
  14. package/dist/knob-contracts/chart-knobs.js +24 -0
  15. package/dist/knob-contracts/choice-knobs.d.ts +1 -1
  16. package/dist/knob-contracts/choice-knobs.js +1 -0
  17. package/dist/knob-contracts/dockable-panel-knobs.d.ts +1 -1
  18. package/dist/knob-contracts/dockable-panel-knobs.js +2 -1
  19. package/dist/knob-contracts/emoji-picker-knobs.d.ts +1 -1
  20. package/dist/knob-contracts/emoji-picker-knobs.js +1 -0
  21. package/dist/knob-contracts/empty-knobs.d.ts +1 -1
  22. package/dist/knob-contracts/empty-knobs.js +2 -1
  23. package/dist/knob-contracts/icon-picker-knobs.d.ts +1 -1
  24. package/dist/knob-contracts/icon-picker-knobs.js +3 -1
  25. package/dist/knob-contracts/resizable-knobs.d.ts +1 -1
  26. package/dist/knob-contracts/resizable-knobs.js +2 -2
  27. package/dist/knob-contracts/sidebar-knobs.d.ts +1 -1
  28. package/dist/knob-contracts/sidebar-knobs.js +3 -1
  29. package/dist/knob-contracts/tabs-knobs.d.ts +1 -1
  30. package/dist/knob-contracts/tabs-knobs.js +2 -1
  31. package/dist/knob-contracts/tree-knobs.d.ts +1 -1
  32. package/dist/knob-contracts/tree-knobs.js +2 -1
  33. package/dist/lib/color.d.ts +2 -6
  34. package/dist/lib/color.js +45 -28
  35. package/dist/lib/contrast.d.ts +6 -0
  36. package/dist/lib/contrast.js +33 -1
  37. package/dist/lib/gradient.d.ts +17 -0
  38. package/dist/lib/gradient.js +69 -0
  39. package/dist/markdown-editor/drag-handle.js +73 -10
  40. package/dist/markdown-editor/drag-preview.d.ts +3 -0
  41. package/dist/markdown-editor/drag-preview.js +31 -0
  42. package/dist/markdown-editor/extensions.d.ts +2 -2
  43. package/dist/markdown-editor/extensions.js +25 -3
  44. package/dist/markdown-editor/suggestions.js +5 -5
  45. package/dist/markdown-editor/task-item.d.ts +3 -0
  46. package/dist/markdown-editor/task-item.js +50 -0
  47. package/dist/markdown-editor/toolbar.js +122 -63
  48. package/dist/markdown-editor.js +3 -3
  49. package/dist/skin.d.ts +0 -1
  50. package/dist/styles/index.css +3 -2
  51. package/dist/styles/recipes/action-bar.css +1 -1
  52. package/dist/styles/recipes/activity.css +1 -1
  53. package/dist/styles/recipes/alert.css +9 -10
  54. package/dist/styles/recipes/app-shell-header.css +2 -2
  55. package/dist/styles/recipes/audio-recorder.css +15 -4
  56. package/dist/styles/recipes/audio-visualizer.css +4 -4
  57. package/dist/styles/recipes/avatar.css +3 -3
  58. package/dist/styles/recipes/badge.css +2 -2
  59. package/dist/styles/recipes/button.css +2 -5
  60. package/dist/styles/recipes/card.css +0 -2
  61. package/dist/styles/recipes/chart.css +378 -0
  62. package/dist/styles/recipes/chat-composer-attachment.css +3 -3
  63. package/dist/styles/recipes/chat-composer.css +3 -3
  64. package/dist/styles/recipes/chat-layout.css +2 -2
  65. package/dist/styles/recipes/chat-message-social.css +1 -1
  66. package/dist/styles/recipes/chat-message.css +1 -1
  67. package/dist/styles/recipes/choice.css +9 -3
  68. package/dist/styles/recipes/code-diff.css +1 -1
  69. package/dist/styles/recipes/code.css +1 -1
  70. package/dist/styles/recipes/color-picker-details.css +17 -11
  71. package/dist/styles/recipes/color-picker-values.css +17 -7
  72. package/dist/styles/recipes/color-picker.css +88 -70
  73. package/dist/styles/recipes/context.css +2 -2
  74. package/dist/styles/recipes/dockable-panel.css +9 -2
  75. package/dist/styles/recipes/dynamic-notification-motion.css +1 -55
  76. package/dist/styles/recipes/dynamic-notification.css +0 -1
  77. package/dist/styles/recipes/emoji-picker.css +35 -19
  78. package/dist/styles/recipes/empty.css +19 -14
  79. package/dist/styles/recipes/field-parts.css +2 -2
  80. package/dist/styles/recipes/field.css +6 -4
  81. package/dist/styles/recipes/filter-bar.css +10 -10
  82. package/dist/styles/recipes/flow.css +5 -3
  83. package/dist/styles/recipes/gradient-editor.css +8 -0
  84. package/dist/styles/recipes/icon-picker.css +45 -10
  85. package/dist/styles/recipes/inline-attachment.css +4 -4
  86. package/dist/styles/recipes/inline-citation.css +2 -2
  87. package/dist/styles/recipes/item.css +4 -4
  88. package/dist/styles/recipes/markdown-editor.css +35 -24
  89. package/dist/styles/recipes/markdown.css +23 -27
  90. package/dist/styles/recipes/page-layout.css +13 -11
  91. package/dist/styles/recipes/popup-controls.css +2 -2
  92. package/dist/styles/recipes/popup-lists.css +3 -3
  93. package/dist/styles/recipes/popup.css +11 -9
  94. package/dist/styles/recipes/range.css +4 -5
  95. package/dist/styles/recipes/resizable.css +15 -10
  96. package/dist/styles/recipes/resize-handle.css +2 -2
  97. package/dist/styles/recipes/scroll-area.css +1 -1
  98. package/dist/styles/recipes/sidebar-menu.css +5 -15
  99. package/dist/styles/recipes/sidebar-mobile.css +4 -4
  100. package/dist/styles/recipes/sidebar-parts.css +26 -1
  101. package/dist/styles/recipes/sidebar.css +18 -31
  102. package/dist/styles/recipes/skeleton.css +10 -5
  103. package/dist/styles/recipes/stepper.css +1 -1
  104. package/dist/styles/recipes/switch.css +12 -11
  105. package/dist/styles/recipes/table-of-contents.css +6 -8
  106. package/dist/styles/recipes/table.css +4 -4
  107. package/dist/styles/recipes/tabs.css +10 -5
  108. package/dist/styles/recipes/task-list.css +3 -3
  109. package/dist/styles/recipes/tree.css +10 -3
  110. package/dist/styles/recipes/user-ask-details.css +5 -4
  111. package/dist/styles/recipes/user-ask.css +5 -5
  112. package/dist/styles/theme.css +158 -177
  113. package/dist/ui/chart-cartesian.d.ts +801 -0
  114. package/dist/ui/chart-cartesian.js +420 -0
  115. package/dist/ui/chart-colors.d.ts +7 -0
  116. package/dist/ui/chart-colors.js +27 -0
  117. package/dist/ui/chart-curves.d.ts +7 -0
  118. package/dist/ui/chart-curves.js +87 -0
  119. package/dist/ui/chart-marks.d.ts +68 -0
  120. package/dist/ui/chart-marks.js +227 -0
  121. package/dist/ui/chart-polar.d.ts +103 -0
  122. package/dist/ui/chart-polar.js +124 -0
  123. package/dist/ui/chart-series.d.ts +36 -0
  124. package/dist/ui/chart-series.js +71 -0
  125. package/dist/ui/chart.d.ts +32 -0
  126. package/dist/ui/chart.js +257 -0
  127. package/dist/ui/color-picker-area.d.ts +16 -0
  128. package/dist/ui/color-picker-area.js +175 -0
  129. package/dist/ui/color-picker-context.d.ts +27 -0
  130. package/dist/ui/color-picker-context.js +87 -0
  131. package/dist/ui/color-picker-contrast.d.ts +20 -0
  132. package/dist/ui/color-picker-contrast.js +129 -0
  133. package/dist/ui/color-picker-sliders.d.ts +15 -0
  134. package/dist/ui/color-picker-sliders.js +146 -0
  135. package/dist/ui/color-picker-swatches.d.ts +23 -0
  136. package/dist/ui/color-picker-swatches.js +94 -0
  137. package/dist/ui/color-picker-values.d.ts +59 -0
  138. package/dist/ui/color-picker-values.js +244 -0
  139. package/dist/ui/color-picker.d.ts +15 -110
  140. package/dist/ui/color-picker.js +30 -759
  141. package/dist/ui/emoji-picker.d.ts +10 -1
  142. package/dist/ui/emoji-picker.js +71 -14
  143. package/dist/ui/flow.js +1 -1
  144. package/dist/ui/gradient-editor-controls.d.ts +19 -0
  145. package/dist/ui/gradient-editor-controls.js +75 -0
  146. package/dist/ui/gradient-editor.d.ts +23 -22
  147. package/dist/ui/gradient-editor.js +77 -123
  148. package/dist/ui/icon-picker.d.ts +1 -1
  149. package/dist/ui/icon-picker.js +11 -6
  150. package/dist/ui/markdown-elements.d.ts +3 -1
  151. package/dist/ui/markdown-elements.js +62 -22
  152. package/dist/ui/markdown-heading.d.ts +9 -0
  153. package/dist/ui/markdown-heading.js +25 -0
  154. package/dist/ui/resizable.js +24 -9
  155. package/dist/ui/sidebar-provider.js +3 -12
  156. package/dist/ui/typography.d.ts +1 -0
  157. package/dist/ui/typography.js +12 -3
  158. package/dist/user-ask.js +4 -8
  159. package/package.json +7 -3
  160. package/dist/ui/emoji-icon-picker.d.ts +0 -13
  161. package/dist/ui/emoji-icon-picker.js +0 -50
@@ -1,7 +1,7 @@
1
1
  @layer components {
2
2
  :where([data-control-family="color-picker"][data-slot="trigger"]) {
3
- inline-size: calc(var(--spacing) * 8);
4
- block-size: calc(var(--spacing) * 8);
3
+ inline-size: var(--control-h-sm);
4
+ block-size: var(--control-h-sm);
5
5
  }
6
6
 
7
7
  :where(
@@ -20,17 +20,43 @@
20
20
  padding: var(--_color-picker-surface-padding);
21
21
  }
22
22
 
23
- :where([data-control-family="color-picker"][data-slot="hue-track"]),
24
- :where([data-control-family="color-picker"][data-slot="alpha-track"]) {
25
- block-size: calc(var(--spacing) * 3);
23
+ :where([data-control-family="color-picker"][data-slot="slider-track"]),
24
+ :where([data-control-family="color-picker"][data-slot="trigger-checker"]),
25
+ :where([data-control-family="color-picker"][data-slot="swatch-checker"]),
26
+ :where([data-control-family="color-picker"][data-slot="output-checker"]) {
27
+ --_color-picker-checker-image: repeating-conic-gradient(var(--border) 0 25%, transparent 0 50%);
28
+ --_color-picker-checker-size: calc(var(--spacing) * 2.5) calc(var(--spacing) * 2.5);
29
+ background-image: var(--_color-picker-checker-image);
30
+ background-size: var(--_color-picker-checker-size);
31
+ }
32
+
33
+ :where([data-control-family="color-picker"][data-slot="slider-track"]) {
34
+ block-size: var(--_color-picker-thumb-size);
35
+ border-radius: 9999px;
36
+ background-image: var(--_color-picker-slider-track-image), var(--_color-picker-checker-image);
37
+ background-size: auto, var(--_color-picker-checker-size);
38
+ box-shadow: inset 0 0 0 var(--control-rim-width) oklch(from var(--foreground) l c h / 0.1);
39
+ }
40
+
41
+ :where([data-control-family="color-picker"][data-slot="slider-thumb"]),
42
+ :where([data-control-family="color-picker"][data-slot="area-thumb"]),
43
+ :where([data-control-family="color-picker"][data-slot="wheel-thumb"]) {
44
+ inline-size: var(--_color-picker-thumb-size);
45
+ block-size: var(--_color-picker-thumb-size);
46
+ border: 2px solid oklch(1 0 0);
47
+ --_color-picker-thumb-elevation: var(--shadow-sm);
48
+ box-shadow:
49
+ inset 0 0 0 1px oklch(0 0 0 / 0.15),
50
+ 0 0 0 1px oklch(0 0 0 / 0.15),
51
+ var(--_color-picker-thumb-elevation);
52
+ transition-property: scale, box-shadow;
53
+ transition-duration: var(--duration-fast);
54
+ transition-timing-function: var(--ease-standard);
26
55
  }
27
56
 
28
- :where([data-control-family="color-picker"][data-slot="hue-thumb"]),
29
- :where([data-control-family="color-picker"][data-slot="alpha-thumb"]),
30
57
  :where([data-control-family="color-picker"][data-slot="area-thumb"]),
31
58
  :where([data-control-family="color-picker"][data-slot="wheel-thumb"]) {
32
- inline-size: calc(var(--spacing) * 4);
33
- block-size: calc(var(--spacing) * 4);
59
+ border-radius: 9999px;
34
60
  }
35
61
 
36
62
  :where([data-control-family="color-picker"][data-slot="swatch"]),
@@ -54,96 +80,88 @@
54
80
 
55
81
  :where([data-control-family="color-picker"][data-slot="trigger"]),
56
82
  :where([data-control-family="color-picker"][data-slot="area"]),
57
- :where([data-control-family="color-picker"][data-slot="hue"]),
58
- :where([data-control-family="color-picker"][data-slot="alpha"]),
83
+ :where([data-control-family="color-picker"][data-slot="slider"]),
59
84
  :where([data-control-family="color-picker"][data-slot="wheel"]),
60
85
  :where([data-control-family="color-picker"][data-slot="swatch"]),
61
86
  :where([data-control-family="color-picker"][data-slot="output"]) {
62
87
  --cui-color-picker-area-radius: var(--radius-field);
63
88
  --cui-color-picker-output-swatch-radius: var(--radius-md);
64
89
  --cui-color-picker-slider-thumb-background: transparent;
65
- --cui-color-picker-slider-thumb-radius: calc(infinity * 1px);
90
+ --cui-color-picker-slider-thumb-radius: 9999px;
66
91
  --cui-color-picker-swatch-radius: var(--radius-md);
67
92
  --cui-color-picker-trigger-radius: var(--radius-control);
68
- --cui-color-picker-trigger-shadow: inset 0 0 0 1px var(--border);
69
- }
70
- :where([data-control-family="color-picker"][data-slot="hue"]),
71
- :where([data-control-family="color-picker"][data-slot="alpha"]) {
72
- block-size: calc(var(--spacing) * 4);
73
- --_color-picker-slider-thumb-scale: 1;
74
- --_color-picker-slider-thumb-transition-property: scale;
93
+ --cui-color-picker-trigger-shadow: inset 0 0 0 var(--control-rim-width) var(--control-rim);
94
+ --_color-picker-thumb-size: calc(var(--spacing) * 4);
75
95
  }
76
96
 
77
- :where([data-control-family="color-picker"][data-slot="hue-thumb"]),
78
- :where([data-control-family="color-picker"][data-slot="alpha-thumb"]) {
79
- border-radius: var(--cui-color-picker-slider-thumb-radius);
80
- border-width: 2px;
81
- border-style: solid;
82
- border-color: var(--color-white);
83
- background: var(--cui-color-picker-slider-thumb-background);
84
- box-shadow: 0 0 0 1px oklch(from var(--foreground) l c h / 0.35);
85
- transition-property: var(--_color-picker-slider-thumb-transition-property);
86
- transition-duration: var(--duration-fast);
87
- transition-timing-function: var(--ease-standard);
88
- scale: var(--_color-picker-slider-thumb-scale);
97
+ :where([data-control-family="color-picker"][data-slot="slider"]) {
98
+ block-size: var(--_color-picker-thumb-size);
99
+ min-inline-size: calc(var(--spacing) * 24);
89
100
  }
90
101
 
91
- :where([data-control-family="color-picker"][data-slot="hue-thumb"][data-dragging]),
92
- :where([data-control-family="color-picker"][data-slot="alpha-thumb"][data-dragging]) {
93
- --_color-picker-slider-thumb-scale: 110% 110%;
102
+ :where([data-control-family="color-picker"][data-slot="slider"][data-disabled]) {
103
+ opacity: var(--disabled-opacity);
94
104
  }
95
105
 
96
- @media (pointer: coarse) {
97
- :where([data-control-family="color-picker"]:is([data-slot="hue-thumb"], [data-slot="alpha-thumb"], [data-slot="swatch-add"]))::after {
98
- content: "";
99
- position: absolute;
100
- inset: 50%;
101
- translate: -50% -50%;
102
- inline-size: max(100%, var(--touch-target));
103
- block-size: max(100%, var(--touch-target));
104
- }
106
+ :where([data-control-family="color-picker"][data-slot="slider-thumb"]) {
107
+ border-radius: var(--cui-color-picker-slider-thumb-radius);
108
+ background: var(--cui-color-picker-slider-thumb-background);
105
109
  }
106
110
 
107
- :where([data-control-family="color-picker"][data-slot="wheel-thumb"]) {
108
- border-radius: calc(infinity * 1px);
109
- border-style: solid;
110
- border-width: 2px;
111
- border-color: var(--color-white);
112
- box-shadow: var(--_color-picker-wheel-thumb-shadow);
111
+ @media (hover: hover) and (pointer: fine) {
112
+ :where([data-control-family="color-picker"][data-slot="slider-thumb"]:hover:not([data-disabled])) {
113
+ scale: 1.1;
114
+ }
113
115
  }
114
116
 
115
- :where([data-control-family="color-picker"][data-slot="wheel"]) {
116
- border-radius: calc(infinity * 1px);
117
- box-shadow: inset 0 0 0 1px color-mix(in oklab, var(--border) 60%, transparent);
118
- --_color-picker-wheel-thumb-shadow: 0 0 0 1px oklch(from var(--foreground) l c h / 0.4);
117
+ :where([data-control-family="color-picker"][data-slot="slider-thumb"][data-dragging]),
118
+ :where(
119
+ [data-control-family="color-picker"][data-slot="area"][data-dragging] [data-control-family="color-picker"][data-slot="area-thumb"]
120
+ ),
121
+ :where(
122
+ [data-control-family="color-picker"][data-slot="wheel"][data-dragging] [data-control-family="color-picker"][data-slot="wheel-thumb"]
123
+ ) {
124
+ scale: 1.1;
125
+ --_color-picker-thumb-elevation: var(--shadow-md);
119
126
  }
120
127
 
121
- :where([data-control-family="color-picker"][data-slot="alpha-track"]) {
122
- border-radius: calc(infinity * 1px);
123
- box-shadow: inset 0 0 0 1px color-mix(in oklab, var(--border) 50%, transparent);
128
+ :where([data-control-family="color-picker"]:is([data-slot="slider-thumb"], [data-slot="swatch-add"]))::after {
129
+ content: "";
130
+ position: absolute;
131
+ inset: 50%;
132
+ translate: -50% -50%;
133
+ inline-size: max(100%, var(--target-min));
134
+ block-size: max(100%, var(--target-min));
124
135
  }
125
136
 
126
- :where([data-control-family="color-picker"][data-slot="hue-track"]) {
127
- border-radius: calc(infinity * 1px);
128
- box-shadow: inset 0 0 0 1px color-mix(in oklab, var(--border) 50%, transparent);
137
+ @media (pointer: coarse) {
138
+ :where([data-control-family="color-picker"]:is([data-slot="slider-thumb"], [data-slot="swatch-add"]))::after {
139
+ inline-size: max(100%, var(--touch-target));
140
+ block-size: max(100%, var(--touch-target));
141
+ }
129
142
  }
130
143
 
131
- :where([data-control-family="color-picker"][data-slot="area-thumb"]) {
132
- border-radius: calc(infinity * 1px);
133
- border-style: solid;
134
- border-width: 2px;
135
- border-color: var(--color-white);
136
- transition-property: box-shadow;
137
- transition-timing-function: var(--ease-standard);
138
- transition-duration: var(--duration-fast);
139
- box-shadow: var(--_color-picker-area-thumb-shadow);
144
+ :where([data-control-family="color-picker"][data-slot="wheel"]) {
145
+ border-radius: 9999px;
146
+ background-image:
147
+ linear-gradient(oklch(0 0 0 / var(--_color-picker-wheel-shade, 0)) 0 0),
148
+ radial-gradient(closest-side in srgb, oklch(1 0 0), oklch(1 0 0 / 0)),
149
+ conic-gradient(
150
+ from 90deg,
151
+ hsl(0 100% 50%),
152
+ hsl(60 100% 50%),
153
+ hsl(120 100% 50%),
154
+ hsl(180 100% 50%),
155
+ hsl(240 100% 50%),
156
+ hsl(300 100% 50%),
157
+ hsl(360 100% 50%)
158
+ );
159
+ box-shadow: inset 0 0 0 var(--control-rim-width) oklch(from var(--foreground) l c h / 0.1);
140
160
  }
141
161
 
142
162
  :where([data-control-family="color-picker"][data-slot="area"]) {
143
163
  block-size: calc(var(--spacing) * 40);
144
164
  border-radius: min(var(--cui-color-picker-area-radius), var(--_color-picker-area-radius-cap, 9999px));
145
- box-shadow: inset 0 0 0 1px color-mix(in oklab, var(--border) 60%, transparent);
146
- --_color-picker-area-thumb-shadow: 0 0 0 1px oklch(from var(--foreground) l c h / 0.4);
147
165
  }
148
166
  }
149
167
 
@@ -183,13 +183,13 @@
183
183
  }
184
184
 
185
185
  @property --cui-context-graph-radius {
186
- syntax: "<length>";
186
+ syntax: "<length-percentage>";
187
187
  inherits: true;
188
188
  initial-value: 0px;
189
189
  }
190
190
 
191
191
  @property --cui-context-legend-indicator-radius {
192
- syntax: "<length>";
192
+ syntax: "<length-percentage>";
193
193
  inherits: true;
194
194
  initial-value: 0px;
195
195
  }
@@ -11,6 +11,7 @@
11
11
  --cui-dockable-panel-border-color: oklch(from var(--border) l c h / 0.8);
12
12
  --cui-dockable-panel-border-width: var(--control-rim-width);
13
13
  --cui-dockable-panel-shadow: var(--shadow-pop);
14
+ --cui-dockable-panel-drop-zone-background: oklch(from var(--background) l c h / 0.12);
14
15
  --cui-dockable-panel-drop-zone-active-background: oklch(from var(--primary) l c h / 0.12);
15
16
  --cui-dockable-panel-drop-zone-active-border-color: oklch(from var(--primary) l c h / 0.55);
16
17
  border: var(--cui-dockable-panel-border-width) solid var(--cui-dockable-panel-border-color);
@@ -21,7 +22,7 @@
21
22
  }
22
23
 
23
24
  :where([data-control-family="dockable-panel"][data-slot="root"][data-dragging]) {
24
- box-shadow: var(--shadow-modal);
25
+ --cui-dockable-panel-shadow: var(--shadow-modal);
25
26
  }
26
27
 
27
28
  :where([data-control-family="dockable-panel"][data-slot="header"]) {
@@ -61,7 +62,7 @@
61
62
 
62
63
  :where([data-control-family="dockable-panel"][data-slot="drop-zone"]) {
63
64
  border-radius: var(--radius-panel);
64
- background-color: oklch(from var(--background) l c h / 0.12);
65
+ background-color: var(--cui-dockable-panel-drop-zone-background);
65
66
  box-shadow: 0 0 0 1px oklch(from var(--foreground) l c h / 0.2);
66
67
  transition-property: background-color, box-shadow;
67
68
  transition-duration: var(--duration-fast);
@@ -122,3 +123,9 @@
122
123
  inherits: true;
123
124
  initial-value: transparent;
124
125
  }
126
+
127
+ @property --cui-dockable-panel-drop-zone-background {
128
+ syntax: "<color>";
129
+ inherits: true;
130
+ initial-value: transparent;
131
+ }
@@ -222,68 +222,14 @@
222
222
  @property --cui-dynamic-notification-content-easing {
223
223
  syntax: "*";
224
224
  inherits: true;
225
- initial-value: linear(
226
- 0,
227
- 0.0553 4.55%,
228
- 0.1795 9.09%,
229
- 0.328 13.64%,
230
- 0.4745 18.18%,
231
- 0.6054 22.73%,
232
- 0.7148 27.27%,
233
- 0.8017 31.82%,
234
- 0.868 36.36%,
235
- 0.9166 40.91%,
236
- 0.9509 45.45%,
237
- 0.9741 50%,
238
- 0.9891 54.55%,
239
- 0.9982 59.09%,
240
- 1.0032 63.64%,
241
- 1.0056 68.18%,
242
- 1.0063 72.73%,
243
- 1.006 77.27%,
244
- 1.0053 81.82%,
245
- 1.0044 86.36%,
246
- 1.0034 90.91%,
247
- 1.0026 95.45%,
248
- 1
249
- );
250
225
  }
251
226
 
252
227
  @property --cui-dynamic-notification-expanded-radius {
253
- syntax: "<length>";
228
+ syntax: "<length-percentage>";
254
229
  inherits: true;
255
230
  initial-value: 0px;
256
231
  }
257
232
  @property --cui-dynamic-notification-morph-easing {
258
233
  syntax: "*";
259
234
  inherits: true;
260
- initial-value: linear(
261
- 0,
262
- 0.0568 3.85%,
263
- 0.1888 7.69%,
264
- 0.351 11.54%,
265
- 0.5142 15.38%,
266
- 0.6608 19.23%,
267
- 0.7824 23.08%,
268
- 0.8767 26.92%,
269
- 0.9449 30.77%,
270
- 0.9908 34.62%,
271
- 1.0187 38.46%,
272
- 1.0332 42.31%,
273
- 1.0382 46.15%,
274
- 1.0372 50%,
275
- 1.0327 53.85%,
276
- 1.0266 57.69%,
277
- 1.0203 61.54%,
278
- 1.0145 65.38%,
279
- 1.0095 69.23%,
280
- 1.0056 73.08%,
281
- 1.0027 76.92%,
282
- 1.0008 80.77%,
283
- 0.9995 84.62%,
284
- 0.9988 88.46%,
285
- 0.9986 92.31%,
286
- 0.9985 96.15%,
287
- 1
288
- );
289
235
  }
@@ -205,7 +205,6 @@
205
205
  @property --cui-dynamic-notification-liquid-text-shadow {
206
206
  syntax: "*";
207
207
  inherits: true;
208
- initial-value: none;
209
208
  }
210
209
 
211
210
  @property --cui-dynamic-notification-surface-background {
@@ -2,10 +2,12 @@
2
2
  :where([data-control-family="emoji-picker"][data-slot="root"]) {
3
3
  --cui-emoji-picker-cell-size: calc(var(--spacing) * 10);
4
4
  --cui-emoji-picker-cell-radius: var(--radius-control);
5
+ --cui-emoji-picker-glyph-size: 1.25rem;
5
6
  --cui-emoji-picker-active-background: var(--accent);
6
7
  --cui-emoji-picker-header-background: var(--popover);
7
8
  --cui-emoji-picker-header-foreground: var(--muted-foreground);
8
9
  --cui-emoji-picker-height: 22rem;
10
+ --_emoji-picker-recent-block-size: 0px;
9
11
  }
10
12
  :where([data-control-family="emoji-picker"][data-slot="root"]:not([data-variant="reactions"])) {
11
13
  inline-size: calc(var(--_emoji-picker-columns) * var(--cui-emoji-picker-cell-size) + var(--spacing) * 4);
@@ -30,6 +32,9 @@
30
32
  border-radius: var(--cui-emoji-picker-cell-radius);
31
33
  color: var(--muted-foreground);
32
34
  cursor: pointer;
35
+ transition:
36
+ color var(--duration-fast) var(--ease-standard),
37
+ background-color var(--duration-fast) var(--ease-standard);
33
38
  }
34
39
  :where([data-control-family="emoji-picker"][data-slot="category"]:hover) {
35
40
  color: var(--foreground);
@@ -39,18 +44,26 @@
39
44
  inline-size: calc(var(--spacing) * 4);
40
45
  block-size: calc(var(--spacing) * 4);
41
46
  }
42
- :where([data-control-family="emoji-picker"][data-slot="recent"]) {
43
- padding-inline: calc(var(--spacing) * 2);
44
- padding-block: calc(var(--spacing) * 1);
45
- }
46
47
  :where([data-control-family="emoji-picker"][data-slot="recent-label"]) {
47
- color: var(--muted-foreground);
48
- font-size: var(--text-caption);
49
- padding-inline: calc(var(--spacing) * 1);
48
+ position: sticky;
49
+ inset-block-start: 0;
50
+ z-index: 1;
51
+ box-sizing: border-box;
52
+ block-size: var(--frimousse-category-header-height, auto);
50
53
  }
51
54
  :where([data-control-family="emoji-picker"]:is([data-slot="recent-grid"], [data-variant="reactions"])) {
52
55
  display: flex;
53
56
  }
57
+ :where([data-control-family="emoji-picker"][data-slot="recent-grid"]) {
58
+ block-size: var(--frimousse-row-height, auto);
59
+ padding-inline: calc(var(--spacing) * 1.5);
60
+ }
61
+ :where([data-control-family="emoji-picker"][data-slot="root"]:has([data-slot="recent"])) {
62
+ --_emoji-picker-recent-block-size: calc(var(--frimousse-category-header-height) + var(--frimousse-row-height));
63
+ }
64
+ :where([data-control-family="emoji-picker"][data-slot="root"]:has(input:not(:placeholder-shown))) {
65
+ --_emoji-picker-recent-block-size: 0px;
66
+ }
54
67
  :where(
55
68
  [data-control-family="emoji-picker"][data-slot="root"]:has(input:not(:placeholder-shown))
56
69
  :is([data-slot="categories"], [data-slot="recent"])
@@ -104,12 +117,6 @@
104
117
  color: var(--muted-foreground);
105
118
  }
106
119
 
107
- :where([data-control-family="emoji-picker"][data-slot="content"]) {
108
- overflow-y: auto;
109
- overscroll-behavior: contain;
110
- scrollbar-width: thin;
111
- }
112
-
113
120
  :where([data-control-family="emoji-picker"][data-slot="loading"]),
114
121
  :where([data-control-family="emoji-picker"][data-slot="empty"]) {
115
122
  color: var(--muted-foreground);
@@ -120,7 +127,7 @@
120
127
  padding-block-end: calc(var(--spacing) * 1);
121
128
  }
122
129
 
123
- :where([data-control-family="emoji-picker"][data-slot="category-header"]) {
130
+ :where([data-control-family="emoji-picker"]:is([data-slot="category-header"], [data-slot="recent-label"])) {
124
131
  padding: calc(var(--spacing) * 1.5) calc(var(--spacing) * 2.5) calc(var(--spacing) * 1);
125
132
  background: var(--cui-emoji-picker-header-background);
126
133
  color: var(--cui-emoji-picker-header-foreground);
@@ -130,6 +137,7 @@
130
137
 
131
138
  :where([data-control-family="emoji-picker"][data-slot="row"]) {
132
139
  padding-inline: calc(var(--spacing) * 1.5);
140
+ scroll-margin-block: var(--spacing) calc(var(--spacing) + var(--_emoji-picker-recent-block-size));
133
141
  }
134
142
 
135
143
  :where([data-control-family="emoji-picker"][data-slot="emoji"]) {
@@ -137,12 +145,14 @@
137
145
  block-size: var(--cui-emoji-picker-cell-size);
138
146
  border-radius: var(--cui-emoji-picker-cell-radius);
139
147
  background: transparent;
140
- font-size: 1.25rem;
148
+ font-size: var(--cui-emoji-picker-glyph-size);
141
149
  line-height: 1;
142
150
  cursor: default;
151
+ transition: background-color var(--duration-fast) var(--ease-standard);
143
152
  }
144
153
 
145
- :where([data-control-family="emoji-picker"][data-slot="emoji"][data-active]) {
154
+ :where([data-control-family="emoji-picker"][data-slot="emoji"][data-active]),
155
+ :where([data-control-family="emoji-picker"][data-variant="reactions"] > [data-slot="emoji"]:hover) {
146
156
  background: var(--cui-emoji-picker-active-background);
147
157
  }
148
158
 
@@ -156,7 +166,7 @@
156
166
  }
157
167
 
158
168
  :where([data-control-family="emoji-picker"][data-slot="footer-emoji"]) {
159
- font-size: 1.25rem;
169
+ font-size: var(--cui-emoji-picker-glyph-size);
160
170
  line-height: 1;
161
171
  }
162
172
 
@@ -179,13 +189,13 @@
179
189
  }
180
190
 
181
191
  @property --cui-emoji-picker-cell-size {
182
- syntax: "<length>";
192
+ syntax: "<length-percentage>";
183
193
  inherits: true;
184
194
  initial-value: 0px;
185
195
  }
186
196
 
187
197
  @property --cui-emoji-picker-height {
188
- syntax: "<length>";
198
+ syntax: "<length-percentage>";
189
199
  inherits: true;
190
200
  initial-value: 0px;
191
201
  }
@@ -196,6 +206,12 @@
196
206
  initial-value: 0px;
197
207
  }
198
208
 
209
+ @property --cui-emoji-picker-glyph-size {
210
+ syntax: "<length-percentage>";
211
+ inherits: true;
212
+ initial-value: 0px;
213
+ }
214
+
199
215
  @property --cui-emoji-picker-active-background {
200
216
  syntax: "<color>";
201
217
  inherits: true;
@@ -7,6 +7,7 @@
7
7
  --cui-empty-border-style: solid;
8
8
  --cui-empty-media-radius: var(--radius-lg);
9
9
  --cui-empty-media-background: var(--muted);
10
+ --cui-empty-media-background-image: none;
10
11
  --cui-empty-shadow: none;
11
12
  --cui-empty-foreground: var(--foreground);
12
13
  --cui-empty-description-foreground: var(--muted-foreground);
@@ -36,7 +37,8 @@
36
37
  inline-size: var(--cui-empty-media-size);
37
38
  block-size: var(--cui-empty-media-size);
38
39
  border-radius: var(--cui-empty-media-radius);
39
- background: var(--cui-empty-media-background);
40
+ background-color: var(--cui-empty-media-background);
41
+ background-image: var(--cui-empty-media-background-image);
40
42
  color: var(--cui-empty-media-foreground);
41
43
  }
42
44
 
@@ -84,7 +86,7 @@
84
86
  }
85
87
 
86
88
  @property --cui-empty-background {
87
- syntax: "*";
89
+ syntax: "<color>";
88
90
  inherits: true;
89
91
  initial-value: transparent;
90
92
  }
@@ -104,7 +106,6 @@
104
106
  @property --cui-empty-border-style {
105
107
  syntax: "*";
106
108
  inherits: true;
107
- initial-value: solid;
108
109
  }
109
110
 
110
111
  @property --cui-empty-media-radius {
@@ -114,7 +115,7 @@
114
115
  }
115
116
 
116
117
  @property --cui-empty-media-background {
117
- syntax: "*";
118
+ syntax: "<color>";
118
119
  inherits: true;
119
120
  initial-value: transparent;
120
121
  }
@@ -122,7 +123,6 @@
122
123
  @property --cui-empty-shadow {
123
124
  syntax: "*";
124
125
  inherits: true;
125
- initial-value: none;
126
126
  }
127
127
 
128
128
  @property --cui-empty-foreground {
@@ -144,49 +144,49 @@
144
144
  }
145
145
 
146
146
  @property --cui-empty-padding {
147
- syntax: "<length>";
147
+ syntax: "<length-percentage>";
148
148
  inherits: true;
149
149
  initial-value: 0px;
150
150
  }
151
151
 
152
152
  @property --cui-empty-gap {
153
- syntax: "<length>";
153
+ syntax: "<length-percentage>";
154
154
  inherits: true;
155
155
  initial-value: 0px;
156
156
  }
157
157
 
158
158
  @property --cui-empty-header-gap {
159
- syntax: "<length>";
159
+ syntax: "<length-percentage>";
160
160
  inherits: true;
161
161
  initial-value: 0px;
162
162
  }
163
163
 
164
164
  @property --cui-empty-content-gap {
165
- syntax: "<length>";
165
+ syntax: "<length-percentage>";
166
166
  inherits: true;
167
167
  initial-value: 0px;
168
168
  }
169
169
 
170
170
  @property --cui-empty-content-size {
171
- syntax: "<length>";
171
+ syntax: "<length-percentage>";
172
172
  inherits: true;
173
173
  initial-value: 0px;
174
174
  }
175
175
 
176
176
  @property --cui-empty-media-size {
177
- syntax: "<length>";
177
+ syntax: "<length-percentage>";
178
178
  inherits: true;
179
179
  initial-value: 0px;
180
180
  }
181
181
 
182
182
  @property --cui-empty-media-icon-size {
183
- syntax: "<length>";
183
+ syntax: "<length-percentage>";
184
184
  inherits: true;
185
185
  initial-value: 0px;
186
186
  }
187
187
 
188
188
  @property --cui-empty-font-size {
189
- syntax: "<length>";
189
+ syntax: "<length-percentage>";
190
190
  inherits: true;
191
191
  initial-value: 0px;
192
192
  }
@@ -194,5 +194,10 @@
194
194
  @property --cui-empty-title-font-weight {
195
195
  syntax: "<number>";
196
196
  inherits: true;
197
- initial-value: 500;
197
+ initial-value: 400;
198
+ }
199
+
200
+ @property --cui-empty-media-background-image {
201
+ syntax: "*";
202
+ inherits: true;
198
203
  }
@@ -13,7 +13,7 @@
13
13
 
14
14
  :where([data-control-family="field"][data-slot="root"][data-control="true"]:is(button, a)) {
15
15
  cursor: pointer;
16
- color: var(--muted-foreground);
16
+ --cui-field-foreground: var(--muted-foreground);
17
17
  text-align: start;
18
18
  }
19
19
 
@@ -25,7 +25,7 @@
25
25
  [aria-disabled="true"]
26
26
  )
27
27
  ) {
28
- color: var(--foreground);
28
+ --cui-field-foreground: var(--foreground);
29
29
  }
30
30
  }
31
31
 
@@ -235,13 +235,15 @@
235
235
  }
236
236
 
237
237
  @property --cui-field-background {
238
- syntax: "*";
238
+ syntax: "<color>";
239
239
  inherits: true;
240
+ initial-value: transparent;
240
241
  }
241
242
 
242
243
  @property --cui-field-hover-background {
243
- syntax: "*";
244
+ syntax: "<color>";
244
245
  inherits: true;
246
+ initial-value: transparent;
245
247
  }
246
248
 
247
249
  @property --cui-field-affordance-background {
@@ -258,7 +260,7 @@
258
260
  @property --cui-field-affordance-foreground {
259
261
  syntax: "<color>";
260
262
  inherits: true;
261
- initial-value: currentcolor;
263
+ initial-value: transparent;
262
264
  }
263
265
 
264
266
  @property --cui-field-affordance-hover-background {
@@ -310,5 +312,5 @@
310
312
  @property --cui-field-font-size {
311
313
  syntax: "<length-percentage>";
312
314
  inherits: true;
313
- initial-value: 1rem;
315
+ initial-value: 0px;
314
316
  }