@ctrl-ui/react 0.8.4 → 0.8.5

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 (134) hide show
  1. package/dist/audio-visualizer.js +1 -1
  2. package/dist/chat-composer-editor/extensions/mention.js +4 -0
  3. package/dist/chat-layout.d.ts +5 -0
  4. package/dist/chat-layout.js +61 -20
  5. package/dist/chat-message.d.ts +5 -0
  6. package/dist/chat-message.js +19 -2
  7. package/dist/context.js +0 -2
  8. package/dist/email/email-brand.d.ts +60 -0
  9. package/dist/email/email-brand.js +101 -0
  10. package/dist/email/email-code.d.ts +18 -0
  11. package/dist/email/email-code.js +172 -0
  12. package/dist/email/email-footer.d.ts +63 -0
  13. package/dist/email/email-footer.js +98 -0
  14. package/dist/email/email.d.ts +60 -11
  15. package/dist/email/email.js +155 -24
  16. package/dist/email/templates.d.ts +54 -9
  17. package/dist/email/templates.js +314 -116
  18. package/dist/email/theme.d.ts +13 -5
  19. package/dist/email/theme.js +30 -8
  20. package/dist/hooks/use-chat-message.d.ts +1 -0
  21. package/dist/hooks/use-chat-message.js +1 -0
  22. package/dist/hooks/use-chat-thread-scroll.d.ts +8 -0
  23. package/dist/hooks/use-chat-thread-scroll.js +66 -0
  24. package/dist/hooks/use-user-ask.d.ts +6 -4
  25. package/dist/hooks/use-user-ask.js +56 -17
  26. package/dist/inline-attachment.js +1 -1
  27. package/dist/knob-contracts/action-bar-knobs.d.ts +1 -1
  28. package/dist/knob-contracts/action-bar-knobs.js +1 -1
  29. package/dist/knob-contracts/activity-knobs.d.ts +1 -1
  30. package/dist/knob-contracts/activity-knobs.js +2 -1
  31. package/dist/knob-contracts/audio-visualizer-knobs.d.ts +1 -1
  32. package/dist/knob-contracts/audio-visualizer-knobs.js +1 -0
  33. package/dist/knob-contracts/chat-composer-attachment-knobs.d.ts +1 -1
  34. package/dist/knob-contracts/chat-composer-attachment-knobs.js +2 -0
  35. package/dist/knob-contracts/chat-composer-knobs.d.ts +1 -1
  36. package/dist/knob-contracts/chat-composer-knobs.js +1 -0
  37. package/dist/knob-contracts/chat-layout-knobs.d.ts +1 -1
  38. package/dist/knob-contracts/chat-layout-knobs.js +2 -1
  39. package/dist/knob-contracts/chat-message-knobs.d.ts +1 -1
  40. package/dist/knob-contracts/chat-message-knobs.js +3 -1
  41. package/dist/knob-contracts/context-knobs.d.ts +1 -1
  42. package/dist/knob-contracts/context-knobs.js +3 -0
  43. package/dist/knob-contracts/inline-attachment-knobs.d.ts +1 -1
  44. package/dist/knob-contracts/inline-attachment-knobs.js +4 -0
  45. package/dist/knob-contracts/inline-citation-knobs.d.ts +1 -1
  46. package/dist/knob-contracts/inline-citation-knobs.js +3 -1
  47. package/dist/knob-contracts/page-layout-knobs.d.ts +4 -0
  48. package/dist/knob-contracts/page-layout-knobs.js +15 -0
  49. package/dist/knob-contracts/table-of-contents-knobs.d.ts +1 -1
  50. package/dist/knob-contracts/table-of-contents-knobs.js +3 -3
  51. package/dist/knob-contracts/task-list-knobs.d.ts +1 -1
  52. package/dist/knob-contracts/task-list-knobs.js +4 -0
  53. package/dist/knob-contracts/user-ask-knobs.d.ts +1 -1
  54. package/dist/knob-contracts/user-ask-knobs.js +4 -0
  55. package/dist/lib/phone-input-format.js +1 -1
  56. package/dist/markdown-block.js +1 -1
  57. package/dist/styles/index.css +2 -1
  58. package/dist/styles/recipes/action-bar.css +37 -5
  59. package/dist/styles/recipes/activity.css +36 -3
  60. package/dist/styles/recipes/alert.css +2 -0
  61. package/dist/styles/recipes/audio-visualizer.css +8 -1
  62. package/dist/styles/recipes/button-group.css +8 -0
  63. package/dist/styles/recipes/button.css +15 -0
  64. package/dist/styles/recipes/calendar.css +21 -0
  65. package/dist/styles/recipes/card.css +2 -0
  66. package/dist/styles/recipes/chat-composer-attachment.css +33 -2
  67. package/dist/styles/recipes/chat-composer.css +16 -2
  68. package/dist/styles/recipes/chat-layout.css +25 -1
  69. package/dist/styles/recipes/chat-message.css +69 -2
  70. package/dist/styles/recipes/choice.css +12 -0
  71. package/dist/styles/recipes/code-diff.css +1 -0
  72. package/dist/styles/recipes/code.css +25 -0
  73. package/dist/styles/recipes/context.css +30 -18
  74. package/dist/styles/recipes/dynamic-notification-input.css +6 -0
  75. package/dist/styles/recipes/dynamic-notification.css +1 -0
  76. package/dist/styles/recipes/environment-variables.css +1 -0
  77. package/dist/styles/recipes/field-parts.css +2 -0
  78. package/dist/styles/recipes/field.css +6 -0
  79. package/dist/styles/recipes/gradient-editor.css +17 -0
  80. package/dist/styles/recipes/inline-attachment.css +57 -14
  81. package/dist/styles/recipes/inline-citation.css +44 -6
  82. package/dist/styles/recipes/item.css +3 -1
  83. package/dist/styles/recipes/markdown-block.css +1 -0
  84. package/dist/styles/recipes/markdown.css +7 -0
  85. package/dist/styles/recipes/page-layout.css +203 -0
  86. package/dist/styles/recipes/pagination.css +16 -0
  87. package/dist/styles/recipes/popup-drawer.css +3 -1
  88. package/dist/styles/recipes/popup-toast.css +2 -0
  89. package/dist/styles/recipes/popup.css +8 -12
  90. package/dist/styles/recipes/range.css +24 -2
  91. package/dist/styles/recipes/rich-tooltip.css +1 -0
  92. package/dist/styles/recipes/source-badge.css +20 -0
  93. package/dist/styles/recipes/table-of-contents.css +10 -10
  94. package/dist/styles/recipes/tabs.css +16 -0
  95. package/dist/styles/recipes/task-list.css +61 -8
  96. package/dist/styles/recipes/thread-rail.css +19 -13
  97. package/dist/styles/recipes/toolbar.css +21 -0
  98. package/dist/styles/recipes/transcript-divider.css +1 -0
  99. package/dist/styles/recipes/user-ask.css +59 -16
  100. package/dist/styles/theme.css +34 -0
  101. package/dist/thread-rail.js +1 -1
  102. package/dist/ui/alert-dialog.js +2 -2
  103. package/dist/ui/autocomplete.js +1 -1
  104. package/dist/ui/color-picker.js +4 -4
  105. package/dist/ui/combobox.js +1 -1
  106. package/dist/ui/command.d.ts +5 -3
  107. package/dist/ui/command.js +27 -3
  108. package/dist/ui/context-menu.js +2 -2
  109. package/dist/ui/dialog.js +2 -2
  110. package/dist/ui/drawer.js +2 -2
  111. package/dist/ui/dropdown-menu.js +1 -1
  112. package/dist/ui/dropzone.js +4 -1
  113. package/dist/ui/gradient-editor.js +2 -2
  114. package/dist/ui/hover-card.js +1 -1
  115. package/dist/ui/infinite-canvas.js +1 -0
  116. package/dist/ui/menubar.js +2 -2
  117. package/dist/ui/navigation-menu.js +1 -1
  118. package/dist/ui/number-field.js +1 -1
  119. package/dist/ui/page-layout.d.ts +44 -0
  120. package/dist/ui/page-layout.js +108 -0
  121. package/dist/ui/phone-input.js +4 -4
  122. package/dist/ui/popover.js +1 -1
  123. package/dist/ui/resizable.js +1 -1
  124. package/dist/ui/rich-tooltip.js +1 -1
  125. package/dist/ui/select.js +1 -1
  126. package/dist/ui/sheet.js +2 -2
  127. package/dist/ui/sidebar-resize-rail.js +1 -1
  128. package/dist/ui/slider.js +1 -1
  129. package/dist/ui/toast.js +2 -2
  130. package/dist/ui/tooltip.js +1 -1
  131. package/dist/ui/trigger-menu.js +1 -1
  132. package/dist/user-ask.d.ts +5 -3
  133. package/dist/user-ask.js +38 -13
  134. package/package.json +3 -2
@@ -61,7 +61,7 @@
61
61
  background-color: var(--cui-popup-backdrop-background);
62
62
  -webkit-backdrop-filter: blur(var(--backdrop-blur-overlay));
63
63
  backdrop-filter: blur(var(--backdrop-blur-overlay));
64
- transition: opacity var(--duration-base) var(--ease-standard);
64
+ transition: opacity var(--duration-base) var(--ease-emphasized);
65
65
  }
66
66
  :where(.dark [data-control-family="popup"][data-popup-part="backdrop"]) {
67
67
  --cui-popup-backdrop-background: oklch(from var(--background) l c h / var(--overlay-opacity));
@@ -99,21 +99,21 @@
99
99
  font-weight: var(--font-weight-semibold);
100
100
  line-height: 1;
101
101
  letter-spacing: -0.025em;
102
+ text-wrap: balance;
102
103
  }
103
104
 
104
105
  :where([data-control-family="popup"][data-popup-kind="dialog"][data-slot="description"]),
105
- :where([data-control-family="popup"][data-popup-kind="alert-dialog"][data-slot="description"]) {
106
+ :where([data-control-family="popup"][data-popup-kind="alert-dialog"][data-slot="description"]),
107
+ :where([data-control-family="popup"][data-popup-kind="sheet"][data-slot="description"]),
108
+ :where([data-control-family="popup"][data-popup-kind="popover"][data-slot="description"]) {
106
109
  color: var(--muted-foreground);
107
110
  font-size: var(--text-body);
111
+ text-wrap: pretty;
108
112
  }
109
113
 
110
114
  :where([data-control-family="popup"][data-popup-kind="sheet"][data-slot="title"]) {
111
115
  font-weight: var(--font-weight-semibold);
112
- }
113
-
114
- :where([data-control-family="popup"][data-popup-kind="sheet"][data-slot="description"]) {
115
- color: var(--muted-foreground);
116
- font-size: var(--text-body);
116
+ text-wrap: balance;
117
117
  }
118
118
 
119
119
  :where([data-control-family="popup"][data-popup-kind="tooltip"][data-slot="arrow"]) {
@@ -242,11 +242,7 @@
242
242
  font-weight: var(--font-weight-semibold);
243
243
  line-height: 1;
244
244
  letter-spacing: -0.01em;
245
- }
246
-
247
- :where([data-control-family="popup"][data-popup-kind="popover"][data-slot="description"]) {
248
- color: var(--muted-foreground);
249
- font-size: var(--text-body);
245
+ text-wrap: balance;
250
246
  }
251
247
 
252
248
  :where([data-control-family="popup"][data-popup-kind="navigation-menu"][data-slot="positioner"]) {
@@ -34,6 +34,7 @@
34
34
 
35
35
  :where([data-control-family="range"][data-range-kind="slider"][data-slot="track"]) {
36
36
  block-size: calc(var(--spacing) * 1.5);
37
+ touch-action: pan-y;
37
38
  transition: background-color var(--duration-fast) var(--ease-standard);
38
39
  }
39
40
 
@@ -94,19 +95,24 @@
94
95
  background: var(--cui-range-thumb-background);
95
96
  box-shadow: var(--cui-range-thumb-shadow);
96
97
  outline: none;
98
+ touch-action: pan-y;
97
99
  transition-property: scale, box-shadow, height, width;
98
100
  transition-duration: var(--duration-fast);
101
+ transition-timing-function: var(--ease-standard);
99
102
  }
100
103
 
101
104
  :where([data-control-family="range"][data-range-kind="slider"][data-slot="thumb"]:focus-visible) {
102
105
  --cui-range-thumb-shadow: var(--shadow-sm);
103
106
  }
104
107
 
105
- :where([data-control-family="range"][data-range-kind="slider"][data-slot="thumb"]:where(:hover, [data-dragging])) {
106
- scale: 1.1;
108
+ @media (hover: hover) and (pointer: fine) {
109
+ :where([data-control-family="range"][data-range-kind="slider"][data-slot="thumb"]:hover) {
110
+ scale: 1.1;
111
+ }
107
112
  }
108
113
 
109
114
  :where([data-control-family="range"][data-range-kind="slider"][data-slot="thumb"][data-dragging]) {
115
+ scale: 1.1;
110
116
  box-shadow: var(--shadow-md);
111
117
  }
112
118
 
@@ -184,6 +190,11 @@
184
190
  padding-inline: 0;
185
191
  }
186
192
 
193
+ :where([data-control-family="range"][data-range-kind="slider"][data-orientation="vertical"][data-slot="track"]),
194
+ :where([data-control-family="range"][data-range-kind="slider"][data-orientation="vertical"][data-slot="thumb"]) {
195
+ touch-action: pan-x;
196
+ }
197
+
187
198
  :where([data-control-family="range"][data-range-kind="slider"][data-orientation="vertical"][data-slot="track"]) {
188
199
  inline-size: calc(var(--spacing) * 1.5);
189
200
  block-size: 100%;
@@ -257,6 +268,17 @@
257
268
  font-weight: var(--font-weight-medium);
258
269
  color: var(--foreground);
259
270
  }
271
+
272
+ @media (pointer: coarse) {
273
+ :where([data-control-family="range"][data-range-kind="slider"][data-slot="thumb"][data-variant="default"])::after {
274
+ content: "";
275
+ position: absolute;
276
+ inset: 50% 50%;
277
+ translate: -50% -50%;
278
+ inline-size: max(100%, 44px);
279
+ block-size: max(100%, 44px);
280
+ }
281
+ }
260
282
  }
261
283
 
262
284
  @property --cui-range-track-radius {
@@ -56,6 +56,7 @@
56
56
  line-height: var(--_rich-tooltip-title-line-height);
57
57
  --_rich-tooltip-title-letter-spacing: var(--_rich-tooltip-content-title-letter-spacing);
58
58
  letter-spacing: var(--_rich-tooltip-title-letter-spacing);
59
+ text-wrap: balance;
59
60
  }
60
61
 
61
62
  :where([data-control-family="popup"][data-popup-kind="rich-tooltip"][data-slot="content"]) {
@@ -22,6 +22,26 @@
22
22
  }
23
23
  }
24
24
 
25
+ :where([data-control-family="badge"][data-source-badge][data-slot="root"]:focus-visible) {
26
+ background: var(--cui-source-badge-hover-background);
27
+ color: var(--cui-source-badge-hover-foreground);
28
+ }
29
+
30
+ @media (pointer: coarse) {
31
+ :where([data-control-family="badge"][data-source-badge][data-slot="root"]) {
32
+ position: relative;
33
+ }
34
+
35
+ :where([data-control-family="badge"][data-source-badge][data-slot="root"])::after {
36
+ content: "";
37
+ position: absolute;
38
+ inset: 50% 50%;
39
+ translate: -50% -50%;
40
+ inline-size: 100%;
41
+ block-size: max(100%, 44px);
42
+ }
43
+ }
44
+
25
45
  :where([data-control-family="badge"][data-source-badge][data-slot="root"] [data-slot="label"]) {
26
46
  max-inline-size: calc(var(--spacing) * 44);
27
47
  }
@@ -20,12 +20,12 @@
20
20
  --cui-table-of-contents-item-root-font-weight: var(--font-weight-medium);
21
21
  --cui-table-of-contents-item-padding-block: calc(var(--spacing) * 1.5);
22
22
  --cui-table-of-contents-item-padding-inline: calc(var(--spacing) * 3);
23
- --cui-table-of-contents-item-indent: calc(var(--spacing) * 2);
23
+ --cui-table-of-contents-item-indent-size: calc(var(--spacing) * 2);
24
24
  --cui-table-of-contents-rail-background: var(--border);
25
- --cui-table-of-contents-rail-width: 1px;
25
+ --cui-table-of-contents-rail-size: 1px;
26
26
  --cui-table-of-contents-trail-background: var(--foreground);
27
- --cui-table-of-contents-trail-width: 2px;
28
- --cui-table-of-contents-trail-radius: var(--cui-table-of-contents-trail-width);
27
+ --cui-table-of-contents-trail-size: 2px;
28
+ --cui-table-of-contents-trail-radius: var(--cui-table-of-contents-trail-size);
29
29
  --cui-table-of-contents-highlight-radius: var(--radius-popup-item);
30
30
  --cui-table-of-contents-highlight-background: var(--active-fill);
31
31
  border: var(--cui-table-of-contents-border-width) solid var(--cui-table-of-contents-border-color);
@@ -47,7 +47,7 @@
47
47
  }
48
48
 
49
49
  :where([data-control-family="table-of-contents"][data-slot="rail"]) {
50
- inline-size: var(--cui-table-of-contents-rail-width);
50
+ inline-size: var(--cui-table-of-contents-rail-size);
51
51
  background-color: var(--cui-table-of-contents-rail-background);
52
52
  }
53
53
 
@@ -57,7 +57,7 @@
57
57
  padding-inline-start: calc(
58
58
  var(--cui-table-of-contents-item-padding-inline) +
59
59
  var(--_toc-depth) *
60
- var(--cui-table-of-contents-item-indent)
60
+ var(--cui-table-of-contents-item-indent-size)
61
61
  );
62
62
  color: var(--cui-table-of-contents-item-foreground);
63
63
  font-size: var(--cui-table-of-contents-item-font-size);
@@ -98,7 +98,7 @@
98
98
  }
99
99
 
100
100
  :where([data-control-family="table-of-contents"][data-slot="trail"]) {
101
- inline-size: var(--cui-table-of-contents-trail-width);
101
+ inline-size: var(--cui-table-of-contents-trail-size);
102
102
  border-radius: var(--cui-table-of-contents-trail-radius);
103
103
  background-color: var(--cui-table-of-contents-trail-background);
104
104
  }
@@ -224,7 +224,7 @@
224
224
  initial-value: 0px;
225
225
  }
226
226
 
227
- @property --cui-table-of-contents-item-indent {
227
+ @property --cui-table-of-contents-item-indent-size {
228
228
  syntax: "<length>";
229
229
  inherits: true;
230
230
  initial-value: 0px;
@@ -236,7 +236,7 @@
236
236
  initial-value: transparent;
237
237
  }
238
238
 
239
- @property --cui-table-of-contents-rail-width {
239
+ @property --cui-table-of-contents-rail-size {
240
240
  syntax: "<length>";
241
241
  inherits: true;
242
242
  initial-value: 0px;
@@ -248,7 +248,7 @@
248
248
  initial-value: transparent;
249
249
  }
250
250
 
251
- @property --cui-table-of-contents-trail-width {
251
+ @property --cui-table-of-contents-trail-size {
252
252
  syntax: "<length>";
253
253
  inherits: true;
254
254
  initial-value: 0px;
@@ -178,6 +178,22 @@
178
178
  border-bottom-right-radius: 0;
179
179
  border-bottom-left-radius: 0;
180
180
  }
181
+
182
+ @media (pointer: coarse) {
183
+ :where([data-control-family="tabs"][data-slot="list"]:not([data-single="true"]) [data-slot="tab"])::after {
184
+ content: "";
185
+ position: absolute;
186
+ inset: 50% 50%;
187
+ translate: -50% -50%;
188
+ inline-size: 100%;
189
+ block-size: max(100%, 44px);
190
+ }
191
+
192
+ :where([data-control-family="tabs"][data-slot="list"][data-orientation="vertical"]:not([data-single="true"]) [data-slot="tab"])::after {
193
+ inline-size: max(100%, 44px);
194
+ block-size: 100%;
195
+ }
196
+ }
181
197
  }
182
198
 
183
199
  @property --cui-tabs-trigger-radius {
@@ -2,20 +2,27 @@
2
2
  :where([data-control-family="task-list"][data-slot="root"]) {
3
3
  --cui-task-list-background: oklch(from var(--card) l c h / 0.9);
4
4
  --cui-task-list-border-color: var(--border);
5
- --cui-task-list-border-width: 1px;
5
+ --cui-task-list-border-width: var(--control-rim-width);
6
6
  --cui-task-list-foreground: var(--foreground);
7
7
  --cui-task-list-radius: var(--radius-field);
8
+ --cui-task-list-ring-color: oklch(from var(--foreground) l c h / 0.04);
8
9
  --cui-task-list-shadow: var(--shadow-md);
9
10
  --cui-task-list-indicator-active-foreground: var(--primary-text);
10
11
  --cui-task-list-indicator-foreground: oklch(from var(--muted-foreground) l c h / 0.7);
11
12
  --cui-task-list-item-foreground: var(--foreground);
12
13
  --cui-task-list-item-pending-foreground: var(--muted-foreground);
14
+ --cui-task-list-items-padding: calc(var(--spacing) * 2);
15
+ --cui-task-list-item-radius: max(
16
+ var(--radius-sm),
17
+ min(var(--radius-popup-item-fit), calc(var(--cui-task-list-radius) - var(--cui-task-list-items-padding)))
18
+ );
19
+ --cui-task-list-trigger-hover-background: oklch(from var(--muted) l c h / 0.4);
13
20
  border: var(--cui-task-list-border-width) solid var(--cui-task-list-border-color);
14
21
  border-radius: var(--cui-task-list-radius);
15
22
  background: var(--cui-task-list-background);
16
23
  color: var(--cui-task-list-foreground);
17
24
  box-shadow:
18
- inset 0 0 0 1px oklch(from var(--foreground) l c h / 0.04),
25
+ inset 0 0 0 var(--control-rim-width) var(--cui-task-list-ring-color),
19
26
  var(--cui-task-list-shadow);
20
27
  backdrop-filter: blur(var(--backdrop-blur-popover));
21
28
  font-size: var(--text-body);
@@ -25,13 +32,31 @@
25
32
  gap: calc(var(--spacing) * 2);
26
33
  padding-inline: calc(var(--spacing) * 3);
27
34
  padding-block: calc(var(--spacing) * 2);
28
- font-size: var(--text-sm);
29
35
  text-align: left;
30
36
  }
31
37
 
32
38
  @media (hover: hover) {
33
39
  :where([data-control-family="task-list"][data-slot="trigger"]:hover) {
34
- background: oklch(from var(--muted) l c h / 0.4);
40
+ background: var(--cui-task-list-trigger-hover-background);
41
+ }
42
+ }
43
+
44
+ :where([data-control-family="task-list"][data-slot="trigger"]:focus-visible) {
45
+ background: var(--cui-task-list-trigger-hover-background);
46
+ }
47
+
48
+ @media (pointer: coarse) {
49
+ :where([data-control-family="task-list"][data-slot="trigger"]) {
50
+ position: relative;
51
+ }
52
+
53
+ :where([data-control-family="task-list"][data-slot="trigger"])::after {
54
+ content: "";
55
+ position: absolute;
56
+ inset: 50% 50%;
57
+ translate: -50% -50%;
58
+ inline-size: 100%;
59
+ block-size: max(100%, 44px);
35
60
  }
36
61
  }
37
62
 
@@ -46,21 +71,25 @@
46
71
  :where([data-control-family="task-list"][data-slot="chevron"]) {
47
72
  inline-size: calc(var(--spacing) * 3.5);
48
73
  block-size: calc(var(--spacing) * 3.5);
74
+ transition: rotate var(--duration-base) var(--ease-standard);
75
+ }
76
+
77
+ :where([data-control-family="task-list"][data-slot="trigger"][data-state="open"] [data-slot="chevron"]) {
78
+ rotate: 90deg;
49
79
  }
50
80
 
51
81
  :where([data-control-family="task-list"][data-slot="items"]) {
52
82
  gap: calc(var(--spacing) * 0.5);
53
- padding-inline: calc(var(--spacing) * 2);
54
- padding-block-end: calc(var(--spacing) * 2);
83
+ padding-inline: var(--cui-task-list-items-padding);
84
+ padding-block-end: var(--cui-task-list-items-padding);
55
85
  }
56
86
 
57
87
  :where([data-control-family="task-list"][data-slot="item"]) {
58
88
  gap: calc(var(--spacing) * 2);
59
89
  padding-inline: calc(var(--spacing) * 1.5);
60
90
  padding-block: calc(var(--spacing) * 1);
61
- border-radius: var(--radius-popup-item);
91
+ border-radius: var(--cui-task-list-item-radius);
62
92
  color: var(--cui-task-list-item-foreground);
63
- font-size: var(--text-sm);
64
93
  }
65
94
 
66
95
  :where([data-control-family="task-list"][data-slot="item"][data-status="pending"]) {
@@ -98,6 +127,30 @@
98
127
  initial-value: 0px;
99
128
  }
100
129
 
130
+ @property --cui-task-list-ring-color {
131
+ syntax: "<color>";
132
+ inherits: true;
133
+ initial-value: transparent;
134
+ }
135
+
136
+ @property --cui-task-list-items-padding {
137
+ syntax: "<length>";
138
+ inherits: true;
139
+ initial-value: 0px;
140
+ }
141
+
142
+ @property --cui-task-list-item-radius {
143
+ syntax: "<length>";
144
+ inherits: true;
145
+ initial-value: 0px;
146
+ }
147
+
148
+ @property --cui-task-list-trigger-hover-background {
149
+ syntax: "<color>";
150
+ inherits: true;
151
+ initial-value: transparent;
152
+ }
153
+
101
154
  @property --cui-task-list-background {
102
155
  syntax: "<color>";
103
156
  inherits: true;
@@ -6,11 +6,11 @@
6
6
  --cui-thread-rail-popover-radius: var(--radius-popover);
7
7
  --cui-thread-rail-popover-background: var(--popover);
8
8
  --cui-thread-rail-popover-border-color: var(--border);
9
- --cui-thread-rail-popover-border-width: 1px;
9
+ --cui-thread-rail-popover-border-width: var(--control-rim-width);
10
10
  --cui-thread-rail-popover-shadow: var(--shadow-pop);
11
11
  --cui-thread-rail-popover-backdrop-blur: var(--backdrop-blur-popover);
12
- --aui-rail-pitch: 9px;
13
- --aui-rail-inset: 12.5px;
12
+ --_thread-rail-pitch: calc(var(--spacing) * 2 + 1px);
13
+ --_thread-rail-inset: calc(var(--spacing) * 2 + var(--_thread-rail-pitch) / 2);
14
14
  position: relative;
15
15
  inline-size: calc(var(--spacing) * 4);
16
16
  }
@@ -63,7 +63,7 @@
63
63
  }
64
64
 
65
65
  :where([data-control-family="thread-rail"][data-slot="item"][data-rail-current] [data-control-family="thread-rail"][data-slot="line"]) {
66
- anchor-name: --aui-rail-active;
66
+ anchor-name: --_thread-rail-active;
67
67
  }
68
68
 
69
69
  :where([data-control-family="thread-rail"][data-slot="popover"]) {
@@ -71,7 +71,8 @@
71
71
  inset-inline-start: 100%;
72
72
  margin-inline-start: calc(var(--spacing) * 3);
73
73
  top: 0;
74
- translate: 0 calc(var(--aui-rail-inset) + var(--aui-rail-active-index, 0) * var(--aui-rail-pitch) - 50%);
74
+ translate: 0 calc(var(--_thread-rail-inset) + var(--_thread-rail-active-index, 0) * var(--_thread-rail-pitch) - 50%);
75
+ transform-origin: left center;
75
76
  scale: 0.98;
76
77
  opacity: 0;
77
78
  border-radius: var(--cui-thread-rail-popover-radius);
@@ -89,14 +90,19 @@
89
90
  height var(--duration-slow) var(--ease-standard),
90
91
  opacity var(--duration-base) var(--ease-standard),
91
92
  scale var(--duration-base) var(--ease-standard);
92
- will-change: top, translate, height, opacity, scale;
93
93
  text-align: left;
94
94
  }
95
95
 
96
- :where(
97
- [data-control-family="thread-rail"][data-slot="root"]:has([data-control-family="thread-rail"][data-slot="item"]:hover)
98
- [data-control-family="thread-rail"][data-slot="popover"]
99
- ),
96
+ @media (hover: hover) and (pointer: fine) {
97
+ :where(
98
+ [data-control-family="thread-rail"][data-slot="root"]:has([data-control-family="thread-rail"][data-slot="item"]:hover)
99
+ [data-control-family="thread-rail"][data-slot="popover"]
100
+ ) {
101
+ scale: 1;
102
+ opacity: 1;
103
+ }
104
+ }
105
+
100
106
  :where([data-control-family="thread-rail"][data-slot="root"]:focus-within [data-control-family="thread-rail"][data-slot="popover"]) {
101
107
  scale: 1;
102
108
  opacity: 1;
@@ -113,9 +119,9 @@
113
119
  }
114
120
  }
115
121
 
116
- @supports (top: anchor(--aui-rail-active center)) {
122
+ @supports (top: anchor(--_thread-rail-active center)) {
117
123
  :where([data-control-family="thread-rail"][data-slot="popover"]) {
118
- top: anchor(--aui-rail-active center);
124
+ top: anchor(--_thread-rail-active center);
119
125
  translate: 0 -50%;
120
126
  }
121
127
  }
@@ -180,7 +186,7 @@
180
186
  margin-block-start: calc(var(--spacing) * 3);
181
187
  gap: calc(var(--spacing) * 2);
182
188
  padding-block-start: calc(var(--spacing) * 2.5);
183
- border-block-start: 1px solid oklch(from var(--border) l c h / 0.6);
189
+ border-block-start: var(--control-rim-width) solid oklch(from var(--border) l c h / 0.6);
184
190
  }
185
191
 
186
192
  :where([data-control-family="thread-rail"][data-slot="summary"]) {
@@ -177,6 +177,27 @@
177
177
  :where([data-control-family="toolbar"][data-slot="button"]) {
178
178
  outline-style: none;
179
179
  }
180
+
181
+ @media (pointer: coarse) {
182
+ :where([data-control-family="toolbar"][data-slot="button"]),
183
+ :where([data-control-family="toolbar"][data-slot="link"]) {
184
+ position: relative;
185
+ }
186
+
187
+ :where([data-control-family="toolbar"][data-slot="button"])::after,
188
+ :where([data-control-family="toolbar"][data-slot="link"])::after {
189
+ content: "";
190
+ position: absolute;
191
+ inset: 50% 50%;
192
+ translate: -50% -50%;
193
+ inline-size: 100%;
194
+ block-size: max(100%, 44px);
195
+ }
196
+
197
+ :where([data-control-family="toolbar"][data-slot="input"]) {
198
+ font-size: max(16px, var(--text-label));
199
+ }
200
+ }
180
201
  }
181
202
 
182
203
  @property --cui-toolbar-radius {
@@ -18,6 +18,7 @@
18
18
 
19
19
  :where([data-control-family="transcript-divider"][data-slot="label"]) {
20
20
  padding-inline: calc(var(--spacing) * 2);
21
+ font-variant-numeric: tabular-nums;
21
22
  }
22
23
 
23
24
  :where([data-control-family="transcript-divider"][data-slot="root"][data-tone="success"]) {
@@ -1,27 +1,34 @@
1
1
  @layer components {
2
2
  :where([data-control-family="user-ask"][data-slot="root"]) {
3
- --cui-user-ask-background: oklch(from var(--card) l c h / 0.9);
4
- --cui-user-ask-border-color: var(--border);
5
- --cui-user-ask-border-width: 1px;
6
- --cui-user-ask-foreground: var(--foreground);
7
- --cui-user-ask-radius: var(--radius-field);
8
- --cui-user-ask-shadow: var(--shadow-md);
3
+ --cui-user-ask-background: var(--popover);
4
+ --cui-user-ask-backdrop-filter: blur(var(--backdrop-blur-popover));
5
+ --cui-user-ask-border-color: var(--control-rim);
6
+ --cui-user-ask-border-width: var(--control-rim-width);
7
+ --cui-user-ask-foreground: var(--popover-foreground);
8
+ --cui-user-ask-padding: calc(var(--spacing) * 3);
9
+ --cui-user-ask-radius: var(--radius-popover);
10
+ --cui-user-ask-shadow: var(--shadow-pop);
9
11
  --cui-user-ask-indicator-background: var(--muted);
10
12
  --cui-user-ask-indicator-foreground: var(--muted-foreground);
13
+ --cui-user-ask-indicator-radius: 9999px;
14
+ --cui-user-ask-indicator-multiple-radius: var(--radius-sm);
11
15
  --cui-user-ask-input-background: transparent;
12
16
  --cui-user-ask-input-foreground: var(--foreground);
13
- --cui-user-ask-option-hover-background: oklch(from var(--muted) l c h / 0.5);
14
- --cui-user-ask-option-radius: var(--radius-popup-item);
15
- --cui-user-ask-option-selected-background: oklch(from var(--muted) l c h / 0.7);
16
- border: var(--cui-user-ask-border-width) solid var(--cui-user-ask-border-color);
17
+ --cui-user-ask-option-hover-background: var(--hover-fill);
18
+ --cui-user-ask-option-radius: max(
19
+ var(--radius-sm),
20
+ min(var(--radius-popup-item-fit), calc(var(--cui-user-ask-radius) - var(--cui-user-ask-padding)))
21
+ );
22
+ --cui-user-ask-option-selected-background: var(--active-fill);
17
23
  border-radius: var(--cui-user-ask-radius);
18
24
  background: var(--cui-user-ask-background);
19
25
  color: var(--cui-user-ask-foreground);
20
26
  box-shadow:
21
- inset 0 0 0 1px oklch(from var(--foreground) l c h / 0.04),
27
+ inset 0 0 0 var(--cui-user-ask-border-width) var(--cui-user-ask-border-color),
22
28
  var(--cui-user-ask-shadow);
23
- backdrop-filter: blur(var(--backdrop-blur-popover));
24
- padding: calc(var(--spacing) * 3);
29
+ -webkit-backdrop-filter: var(--cui-user-ask-backdrop-filter);
30
+ backdrop-filter: var(--cui-user-ask-backdrop-filter);
31
+ padding: var(--cui-user-ask-padding);
25
32
  font-size: var(--text-body);
26
33
  transition-property: opacity, translate;
27
34
  transition-duration: var(--duration-base);
@@ -43,7 +50,7 @@
43
50
 
44
51
  :where([data-control-family="user-ask"][data-slot="title"]) {
45
52
  color: var(--foreground);
46
- font-size: var(--text-sm);
53
+ font-size: var(--text-body);
47
54
  }
48
55
 
49
56
  :where([data-control-family="user-ask"][data-slot="pagination"]) {
@@ -61,7 +68,6 @@
61
68
  padding-inline: calc(var(--spacing) * 2);
62
69
  padding-block: calc(var(--spacing) * 1.5);
63
70
  border-radius: var(--cui-user-ask-option-radius);
64
- font-size: var(--text-sm);
65
71
  text-align: left;
66
72
  }
67
73
 
@@ -75,6 +81,16 @@
75
81
  }
76
82
  }
77
83
 
84
+ :where([data-control-family="user-ask"][data-slot="option"]:focus-visible) {
85
+ background: var(--cui-user-ask-option-hover-background);
86
+ }
87
+
88
+ @media (pointer: coarse) {
89
+ :where([data-control-family="user-ask"][data-slot="option"]) {
90
+ min-block-size: 44px;
91
+ }
92
+ }
93
+
78
94
  :where([data-control-family="user-ask"][data-slot="option"]:disabled) {
79
95
  opacity: 0.5;
80
96
  }
@@ -83,7 +99,7 @@
83
99
  margin-block-start: 1px;
84
100
  inline-size: calc(var(--spacing) * 5);
85
101
  block-size: calc(var(--spacing) * 5);
86
- border-radius: var(--radius-control);
102
+ border-radius: var(--cui-user-ask-indicator-radius);
87
103
  background: var(--cui-user-ask-indicator-background);
88
104
  color: var(--cui-user-ask-indicator-foreground);
89
105
  font-size: var(--text-micro);
@@ -94,6 +110,10 @@
94
110
  color: var(--primary-foreground);
95
111
  }
96
112
 
113
+ :where([data-control-family="user-ask"][data-slot="option-indicator"][data-multiple]) {
114
+ border-radius: var(--cui-user-ask-indicator-multiple-radius);
115
+ }
116
+
97
117
  :where([data-control-family="user-ask"][data-slot="option-label"]) {
98
118
  color: var(--foreground);
99
119
  }
@@ -136,6 +156,29 @@
136
156
  initial-value: 0px;
137
157
  }
138
158
 
159
+ @property --cui-user-ask-padding {
160
+ syntax: "<length>";
161
+ inherits: true;
162
+ initial-value: 0px;
163
+ }
164
+
165
+ @property --cui-user-ask-backdrop-filter {
166
+ syntax: "*";
167
+ inherits: true;
168
+ }
169
+
170
+ @property --cui-user-ask-indicator-radius {
171
+ syntax: "<length>";
172
+ inherits: true;
173
+ initial-value: 0px;
174
+ }
175
+
176
+ @property --cui-user-ask-indicator-multiple-radius {
177
+ syntax: "<length>";
178
+ inherits: true;
179
+ initial-value: 0px;
180
+ }
181
+
139
182
  @property --cui-user-ask-background {
140
183
  syntax: "<color>";
141
184
  inherits: true;
@@ -49,6 +49,11 @@
49
49
  --duration-slow: 300ms;
50
50
  --ease-standard: cubic-bezier(0.2, 0, 0, 1);
51
51
  --ease-emphasized: cubic-bezier(0.16, 1, 0.3, 1);
52
+ --z-overlay: 70;
53
+ --z-modal: 71;
54
+ --z-popup: 80;
55
+ --z-tooltip: 90;
56
+ --z-toast: 95;
52
57
  --popover-padding: 0.25rem;
53
58
  --font-body: var(--font-sans);
54
59
  --font-display: var(--font-sans);
@@ -459,6 +464,35 @@
459
464
  }
460
465
  }
461
466
  }
467
+
468
+ body {
469
+ font-synthesis: none;
470
+ -webkit-font-smoothing: antialiased;
471
+ -moz-osx-font-smoothing: grayscale;
472
+ }
473
+
474
+ :where(
475
+ [data-control-family]:is(
476
+ a[href],
477
+ button,
478
+ input,
479
+ label,
480
+ select,
481
+ summary,
482
+ textarea,
483
+ [role="button"],
484
+ [role="checkbox"],
485
+ [role="menuitem"],
486
+ [role="menuitemcheckbox"],
487
+ [role="menuitemradio"],
488
+ [role="option"],
489
+ [role="radio"],
490
+ [role="switch"],
491
+ [role="tab"]
492
+ )
493
+ ) {
494
+ touch-action: manipulation;
495
+ }
462
496
  }
463
497
 
464
498
  @layer components {
@@ -35,7 +35,7 @@ function ThreadRail({ className, children, style, ...props }) {
35
35
  }, [hovered]);
36
36
  const railStyle = {
37
37
  ...style,
38
- "--aui-rail-active-index": hovered
38
+ "--_thread-rail-active-index": hovered
39
39
  };
40
40
  return /* @__PURE__ */ jsx(RailContext.Provider, {
41
41
  value: {