@greese/ui 1.1.0 → 1.2.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 (194) hide show
  1. package/README.md +19 -14
  2. package/dist/_maps.scss +1 -1
  3. package/dist/_tokens-base.scss +30 -6
  4. package/dist/_tokens.scss +31 -2
  5. package/dist/_utilities-table.scss +1615 -0
  6. package/dist/clipboard.d.ts +18 -0
  7. package/dist/clipboard.js +62 -0
  8. package/dist/css/Button.css +2 -2
  9. package/dist/css/Carousel.css +145 -47
  10. package/dist/css/Checkbox.css +2 -2
  11. package/dist/css/Chip.css +38 -8
  12. package/dist/css/ChoiceGroup.css +42 -1
  13. package/dist/css/Collapsible.css +1 -0
  14. package/dist/css/ColorPicker.css +84 -0
  15. package/dist/css/Combobox.css +2 -2
  16. package/dist/css/Dialog.css +24 -22
  17. package/dist/css/EditableField.css +219 -0
  18. package/dist/css/Input.css +11 -2
  19. package/dist/css/Menu.css +9 -0
  20. package/dist/css/NumberField.css +53 -8
  21. package/dist/css/NumberStepper.css +9 -0
  22. package/dist/css/OtpField.css +1 -1
  23. package/dist/css/Radio.css +2 -2
  24. package/dist/css/ScrollCarousel.css +225 -0
  25. package/dist/css/SegmentedControl.css +2 -2
  26. package/dist/css/Select.css +3 -2
  27. package/dist/css/Slider.css +45 -5
  28. package/dist/css/Switch.css +6 -6
  29. package/dist/css/Text.css +14 -14
  30. package/dist/css/Textarea.css +1 -1
  31. package/dist/css/core.css +36 -6
  32. package/dist/css/resets.css +162 -0
  33. package/dist/css.d.ts +2 -0
  34. package/dist/css.js +2 -0
  35. package/dist/greese.css +978 -138
  36. package/dist/index.d.ts +2 -1
  37. package/dist/index.js +2 -1
  38. package/dist/scss/components/_Accordion.scss +2 -0
  39. package/dist/scss/components/_ActionSelect.scss +2 -0
  40. package/dist/scss/components/_Alert.scss +2 -0
  41. package/dist/scss/components/_AppBar.scss +2 -0
  42. package/dist/scss/components/_AspectRatio.scss +2 -0
  43. package/dist/scss/components/_AutoLayout.scss +2 -0
  44. package/dist/scss/components/_Avatar.scss +2 -0
  45. package/dist/scss/components/_Badge.scss +2 -0
  46. package/dist/scss/components/_Box.scss +2 -0
  47. package/dist/scss/components/_Breadcrumbs.scss +2 -0
  48. package/dist/scss/components/_Button.scss +2 -0
  49. package/dist/scss/components/_ButtonGroup.scss +2 -0
  50. package/dist/scss/components/_Card.scss +2 -0
  51. package/dist/scss/components/_Carousel.scss +2 -0
  52. package/dist/scss/components/_Center.scss +2 -0
  53. package/dist/scss/components/_ChatBubble.scss +2 -0
  54. package/dist/scss/components/_Checkbox.scss +2 -0
  55. package/dist/scss/components/_Chip.scss +2 -0
  56. package/dist/scss/components/_ChoiceGroup.scss +2 -0
  57. package/dist/scss/components/_Code.scss +2 -0
  58. package/dist/scss/components/_Collapsible.scss +2 -0
  59. package/dist/scss/components/_ColorPicker.scss +2 -0
  60. package/dist/scss/components/_Combobox.scss +2 -0
  61. package/dist/scss/components/_Container.scss +2 -0
  62. package/dist/scss/components/_Countdown.scss +2 -0
  63. package/dist/scss/components/_DateField.scss +2 -0
  64. package/dist/scss/components/_Dialog.scss +2 -0
  65. package/dist/scss/components/_Diff.scss +2 -0
  66. package/dist/scss/components/_Divider.scss +2 -0
  67. package/dist/scss/components/_Dock.scss +2 -0
  68. package/dist/scss/components/_EditableField.scss +2 -0
  69. package/dist/scss/components/_Field.scss +2 -0
  70. package/dist/scss/components/_Fieldset.scss +2 -0
  71. package/dist/scss/components/_FileInput.scss +2 -0
  72. package/dist/scss/components/_Footer.scss +2 -0
  73. package/dist/scss/components/_Grid.scss +2 -0
  74. package/dist/scss/components/_Header.scss +2 -0
  75. package/dist/scss/components/_Heading.scss +2 -0
  76. package/dist/scss/components/_Icon.scss +2 -0
  77. package/dist/scss/components/_IconButton.scss +2 -0
  78. package/dist/scss/components/_Image.scss +2 -0
  79. package/dist/scss/components/_Indicator.scss +2 -0
  80. package/dist/scss/components/_Input.scss +2 -0
  81. package/dist/scss/components/_Key.scss +2 -0
  82. package/dist/scss/components/_Link.scss +2 -0
  83. package/dist/scss/components/_List.scss +2 -0
  84. package/dist/scss/components/_Media.scss +2 -0
  85. package/dist/scss/components/_Menu.scss +2 -0
  86. package/dist/scss/components/_Motion.scss +2 -0
  87. package/dist/scss/components/_NumberField.scss +2 -0
  88. package/dist/scss/components/_NumberStepper.scss +2 -0
  89. package/dist/scss/components/_OtpField.scss +2 -0
  90. package/dist/scss/components/_PageTransition.scss +2 -0
  91. package/dist/scss/components/_Pagination.scss +2 -0
  92. package/dist/scss/components/_Popover.scss +2 -0
  93. package/dist/scss/components/_Progress.scss +2 -0
  94. package/dist/scss/components/_RadialProgress.scss +2 -0
  95. package/dist/scss/components/_Radio.scss +2 -0
  96. package/dist/scss/components/_Rating.scss +2 -0
  97. package/dist/scss/components/_ScrollCarousel.scss +2 -0
  98. package/dist/scss/components/_ScrollSpy.scss +2 -0
  99. package/dist/scss/components/_SegmentedControl.scss +2 -0
  100. package/dist/scss/components/_Select.scss +2 -0
  101. package/dist/scss/components/_Sidebar.scss +2 -0
  102. package/dist/scss/components/_Skeleton.scss +2 -0
  103. package/dist/scss/components/_Slider.scss +2 -0
  104. package/dist/scss/components/_Spacer.scss +2 -0
  105. package/dist/scss/components/_SpeedDial.scss +2 -0
  106. package/dist/scss/components/_Spinner.scss +2 -0
  107. package/dist/scss/components/_Stack.scss +2 -0
  108. package/dist/scss/components/_Stat.scss +2 -0
  109. package/dist/scss/components/_Status.scss +2 -0
  110. package/dist/scss/components/_Steps.scss +2 -0
  111. package/dist/scss/components/_Swap.scss +2 -0
  112. package/dist/scss/components/_Switch.scss +2 -0
  113. package/dist/scss/components/_Table.scss +2 -0
  114. package/dist/scss/components/_Tabs.scss +2 -0
  115. package/dist/scss/components/_Text.scss +2 -0
  116. package/dist/scss/components/_TextRotate.scss +2 -0
  117. package/dist/scss/components/_Textarea.scss +2 -0
  118. package/dist/scss/components/_ThemeProvider.scss +2 -0
  119. package/dist/scss/components/_Tile.scss +2 -0
  120. package/dist/scss/components/_Toast.scss +2 -0
  121. package/dist/scss/components/_ToggleButton.scss +2 -0
  122. package/dist/scss/components/_Tooltip.scss +2 -0
  123. package/dist/scss/components/_Type.scss +2 -0
  124. package/dist/scss/components/_Visibility.scss +2 -0
  125. package/dist/scss/components/_VisuallyHidden.scss +2 -0
  126. package/dist/shapes.d.ts +12 -1
  127. package/dist/shapes.js +11 -10
  128. package/dist/style-manifest.json +18830 -132
  129. package/dist/theme.js +6 -1
  130. package/dist/themeFiles/index.d.ts +9 -0
  131. package/dist/themeFiles/index.js +9 -0
  132. package/dist/themeFiles/scssModule.d.ts +100 -0
  133. package/dist/themeFiles/scssModule.js +384 -0
  134. package/dist/themeFiles/spec.d.ts +198 -0
  135. package/dist/themeFiles/spec.js +877 -0
  136. package/dist/tokens.css +30 -1
  137. package/dist/typography.js +1 -1
  138. package/dist/utilities.css +435 -0
  139. package/dist/utilities.d.ts +8 -0
  140. package/dist/utilities.js +75 -0
  141. package/package.json +20 -1
  142. package/src/components/AutoLayout/AutoLayout.scss +2 -26
  143. package/src/components/Carousel/Carousel.scss +122 -126
  144. package/src/components/Checkbox/Checkbox.scss +2 -2
  145. package/src/components/Chip/Chip.scss +63 -8
  146. package/src/components/ChoiceGroup/ChoiceGroup.scss +19 -1
  147. package/src/components/Collapsible/Collapsible.scss +3 -0
  148. package/src/components/ColorPicker/ColorPicker.scss +95 -0
  149. package/src/components/Combobox/Combobox.scss +4 -2
  150. package/src/components/Dialog/Dialog.scss +24 -7
  151. package/src/components/EditableField/EditableField.scss +275 -0
  152. package/src/components/Grid/Grid.scss +2 -70
  153. package/src/components/Input/Input.scss +29 -0
  154. package/src/components/Menu/Menu.scss +18 -0
  155. package/src/components/NumberField/NumberField.scss +56 -9
  156. package/src/components/NumberStepper/NumberStepper.scss +13 -0
  157. package/src/components/Radio/Radio.scss +2 -2
  158. package/src/components/ScrollCarousel/ScrollCarousel.scss +142 -0
  159. package/src/components/Select/Select.scss +4 -0
  160. package/src/components/Slider/Slider.scss +51 -6
  161. package/src/components/Stack/Stack.scss +2 -48
  162. package/src/components/Switch/Switch.scss +9 -6
  163. package/src/components/Text/Text.scss +5 -2
  164. package/src/styles/_breakpoint-vars.scss +17 -11
  165. package/src/styles/_controls.scss +2 -2
  166. package/src/styles/_core.scss +1 -0
  167. package/src/styles/_kit.scss +483 -56
  168. package/src/styles/_layout-props.scss +197 -0
  169. package/src/styles/_manifest.scss +53 -23
  170. package/src/styles/_mixins.scss +53 -15
  171. package/src/styles/_slides.scss +112 -0
  172. package/src/styles/_utilities.scss +104 -0
  173. package/src/styles/breakpoints.test.ts +21 -1
  174. package/src/styles/entryPoints.test.ts +25 -2
  175. package/src/styles/index.scss +3 -1
  176. package/src/styles/kit.test.ts +171 -1
  177. package/src/styles/public/_breakpoints.scss +43 -0
  178. package/src/styles/public/_slides.scss +3 -0
  179. package/src/styles/public/_utilities.scss +3 -0
  180. package/src/styles/resets.scss +7 -0
  181. package/src/styles/utilities.test.ts +39 -0
  182. package/themes/bevel.css +187 -187
  183. package/themes/bevel.scss +960 -958
  184. package/themes/extrude.css +42 -42
  185. package/themes/folio.css +200 -200
  186. package/themes/folio.scss +880 -878
  187. package/themes/outline.css +18 -18
  188. package/themes/pebble.css +8 -8
  189. package/themes/ridge.css +188 -188
  190. package/themes/ridge.scss +820 -818
  191. package/themes/soft.css +11 -11
  192. package/themes/ticket.css +180 -180
  193. package/themes/ticket.scss +881 -879
  194. package/themes/tilt.css +25 -25
package/dist/greese.css CHANGED
@@ -51,11 +51,6 @@
51
51
  --greese-easing-standard: cubic-bezier(0.2, 0, 0, 1);
52
52
  --greese-easing-enter: cubic-bezier(0, 0, 0, 1);
53
53
  --greese-easing-exit: cubic-bezier(0.3, 0, 1, 1);
54
- --greese-breakpoint-xs: 0px;
55
- --greese-breakpoint-sm: 600px;
56
- --greese-breakpoint-md: 900px;
57
- --greese-breakpoint-lg: 1200px;
58
- --greese-breakpoint-xl: 1536px;
59
54
  }
60
55
  :root,
61
56
  [data-greese-scheme=light],
@@ -166,6 +161,41 @@
166
161
  }
167
162
  }
168
163
  }
164
+ @layer greese.utilities {
165
+ [data-greese-motion=reduce],
166
+ [data-greese-motion=reduce] [data-greese-theme] {
167
+ --greese-duration-fast: 0.01ms;
168
+ --greese-duration-normal: 0.01ms;
169
+ --greese-duration-slow: 0.01ms;
170
+ }
171
+ [data-greese-motion=reduce],
172
+ [data-greese-motion=reduce] *,
173
+ [data-greese-motion=reduce] ::before,
174
+ [data-greese-motion=reduce] ::after {
175
+ animation-duration: 0.01ms;
176
+ animation-delay: 0s;
177
+ animation-iteration-count: 1;
178
+ transition-duration: 0.01ms;
179
+ transition-delay: 0s;
180
+ scroll-behavior: auto;
181
+ }
182
+ :root[data-greese-motion=reduce]::view-transition-group(*),
183
+ :root[data-greese-motion=reduce]::view-transition-old(*),
184
+ :root[data-greese-motion=reduce]::view-transition-new(*) {
185
+ animation-duration: 0.01ms;
186
+ animation-delay: 0s;
187
+ }
188
+ }
189
+ @layer greese.tokens {
190
+ :root {
191
+ --greese-breakpoint-xs: 0px;
192
+ --greese-breakpoint-sm: 600px;
193
+ --greese-breakpoint-md: 900px;
194
+ --greese-breakpoint-lg: 1200px;
195
+ --greese-breakpoint-xl: 1536px;
196
+ --greese-breakpoint-keys: xs sm md lg xl;
197
+ }
198
+ }
169
199
  @layer greese.tokens {
170
200
  :root {
171
201
  --greese-type-p1-font-size: 1.125rem;
@@ -223,7 +253,7 @@
223
253
  --greese-type-caption-line-height: 1.4;
224
254
  --greese-type-caption-letter-spacing: 0.02em;
225
255
  --greese-type-button-font-size: 0.9375rem;
226
- --greese-type-button-font-weight: 600;
256
+ --greese-type-button-font-weight: 700;
227
257
  --greese-type-button-line-height: 1.25;
228
258
  --greese-type-button-letter-spacing: 0;
229
259
  }
@@ -3304,8 +3334,8 @@
3304
3334
  );
3305
3335
  }
3306
3336
  .greese-Button--size-xs {
3307
- --greese-button-height: 1rem;
3308
- --greese-button-padding: var(--greese-space-1);
3337
+ --greese-button-height: 1.5rem;
3338
+ --greese-button-padding: var(--greese-space-2);
3309
3339
  font-size: var(--greese-type-p3-font-size);
3310
3340
  }
3311
3341
  .greese-Button--size-sm {
@@ -3545,6 +3575,7 @@
3545
3575
  gap: var(--greese-space-2);
3546
3576
  align-items: center;
3547
3577
  inline-size: 100%;
3578
+ min-inline-size: 0;
3548
3579
  min-block-size: var(--greese-input-height);
3549
3580
  padding-inline: var(--greese-input-padding);
3550
3581
  cursor: text;
@@ -3577,9 +3608,17 @@
3577
3608
  inline-size: 1.25em;
3578
3609
  block-size: 1.25em;
3579
3610
  }
3611
+ .greese-Input.greese-Input--measured {
3612
+ inline-size: fit-content;
3613
+ flex: none;
3614
+ }
3615
+ .greese-Input.greese-Input--measured .greese-Input-control {
3616
+ flex: none;
3617
+ inline-size: calc(var(--greese-input-size) * 1ch);
3618
+ }
3580
3619
  .greese-Input--size-xs {
3581
- --greese-input-height: 1rem;
3582
- --greese-input-padding: var(--greese-space-1);
3620
+ --greese-input-height: 1.5rem;
3621
+ --greese-input-padding: var(--greese-space-2);
3583
3622
  font-size: var(--greese-type-p3-font-size);
3584
3623
  }
3585
3624
  @media (pointer: coarse) {
@@ -3689,7 +3728,7 @@
3689
3728
  }
3690
3729
  }
3691
3730
  .greese-Textarea--size-xs {
3692
- --greese-textarea-padding: var(--greese-space-1);
3731
+ --greese-textarea-padding: var(--greese-space-2);
3693
3732
  font-size: var(--greese-type-p3-font-size);
3694
3733
  }
3695
3734
  @media (pointer: coarse) {
@@ -3771,6 +3810,7 @@
3771
3810
  min-inline-size: 0;
3772
3811
  padding-inline: var(--greese-select-padding) calc(var(--greese-select-padding) + 1.5em);
3773
3812
  font: inherit;
3813
+ line-height: 1.25;
3774
3814
  color: inherit;
3775
3815
  cursor: pointer;
3776
3816
  background: none;
@@ -3798,8 +3838,8 @@
3798
3838
  translate: 0 -0.15em;
3799
3839
  }
3800
3840
  .greese-Select--size-xs {
3801
- --greese-select-height: 1rem;
3802
- --greese-select-padding: var(--greese-space-1);
3841
+ --greese-select-height: 1.5rem;
3842
+ --greese-select-padding: var(--greese-space-2);
3803
3843
  font-size: var(--greese-type-p3-font-size);
3804
3844
  }
3805
3845
  @media (pointer: coarse) {
@@ -3886,19 +3926,60 @@
3886
3926
  cursor: not-allowed;
3887
3927
  opacity: 0.55;
3888
3928
  }
3929
+ .greese-Checkbox--size-xs,
3930
+ .greese-Radio--size-xs,
3931
+ .greese-Switch--size-xs,
3932
+ .greese-ChoiceGroup--size-xs {
3933
+ --greese-choice-font: var(--greese-type-p3-font-size);
3934
+ --greese-choice-gap: var(--greese-space-2);
3935
+ --greese-choice-box: calc(1.5rem * 0.45);
3936
+ }
3937
+ .greese-Checkbox--size-sm,
3938
+ .greese-Radio--size-sm,
3939
+ .greese-Switch--size-sm,
3940
+ .greese-ChoiceGroup--size-sm {
3941
+ --greese-choice-font: var(--greese-type-p3-font-size);
3942
+ --greese-choice-gap: var(--greese-space-3);
3943
+ --greese-choice-box: calc(2rem * 0.45);
3944
+ }
3945
+ .greese-Checkbox--size-md,
3946
+ .greese-Radio--size-md,
3947
+ .greese-Switch--size-md,
3948
+ .greese-ChoiceGroup--size-md {
3949
+ --greese-choice-font: var(--greese-type-p2-font-size);
3950
+ --greese-choice-gap: var(--greese-space-3);
3951
+ --greese-choice-box: calc(2.5rem * 0.45);
3952
+ }
3953
+ .greese-Checkbox--size-lg,
3954
+ .greese-Radio--size-lg,
3955
+ .greese-Switch--size-lg,
3956
+ .greese-ChoiceGroup--size-lg {
3957
+ --greese-choice-font: var(--greese-type-p2-font-size);
3958
+ --greese-choice-gap: var(--greese-space-4);
3959
+ --greese-choice-box: calc(3rem * 0.45);
3960
+ }
3961
+ .greese-Checkbox--size-xl,
3962
+ .greese-Radio--size-xl,
3963
+ .greese-Switch--size-xl,
3964
+ .greese-ChoiceGroup--size-xl {
3965
+ --greese-choice-font: var(--greese-type-p1-font-size);
3966
+ --greese-choice-gap: var(--greese-space-4);
3967
+ --greese-choice-box: calc(4rem * 0.45);
3968
+ }
3889
3969
  .greese-Checkbox-text {
3890
3970
  display: flex;
3891
3971
  flex-direction: column;
3892
3972
  gap: var(--greese-space-1);
3893
3973
  }
3894
3974
  .greese-Checkbox-label {
3975
+ font-size: var(--greese-choice-font, inherit);
3895
3976
  cursor: pointer;
3896
3977
  }
3897
3978
  [data-disabled] > .greese-Checkbox-text > .greese-Checkbox-label {
3898
3979
  cursor: not-allowed;
3899
3980
  }
3900
3981
  .greese-Checkbox-description {
3901
- font-size: var(--greese-type-p3-font-size);
3982
+ font-size: var(--greese-choice-description-font, var(--greese-type-p3-font-size));
3902
3983
  color: var(--greese-color-fg-muted);
3903
3984
  }
3904
3985
  .greese-Checkbox-box {
@@ -3923,8 +4004,8 @@
3923
4004
  }
3924
4005
  .greese-Checkbox-input {
3925
4006
  position: relative;
3926
- inline-size: 1.125rem;
3927
- block-size: 1.125rem;
4007
+ inline-size: var(--greese-choice-box, 1.125rem);
4008
+ block-size: var(--greese-choice-box, 1.125rem);
3928
4009
  margin: 0;
3929
4010
  cursor: pointer;
3930
4011
  background-color: var(--greese-color-canvas);
@@ -3987,8 +4068,8 @@
3987
4068
  }
3988
4069
  .greese-Radio-input {
3989
4070
  position: relative;
3990
- inline-size: 1.125rem;
3991
- block-size: 1.125rem;
4071
+ inline-size: var(--greese-choice-box, 1.125rem);
4072
+ block-size: var(--greese-choice-box, 1.125rem);
3992
4073
  margin: 0;
3993
4074
  cursor: pointer;
3994
4075
  background-color: var(--greese-color-canvas);
@@ -4019,8 +4100,8 @@
4019
4100
  display: inline-flex;
4020
4101
  flex-shrink: 0;
4021
4102
  align-items: center;
4022
- inline-size: 2.25rem;
4023
- block-size: 1.25rem;
4103
+ inline-size: calc(var(--greese-choice-box, 1.125rem) * 2);
4104
+ block-size: calc(var(--greese-choice-box, 1.125rem) * 1.111);
4024
4105
  margin-block: calc((1lh - 1.25rem) / 2);
4025
4106
  }
4026
4107
  @media (pointer: coarse) {
@@ -4062,8 +4143,8 @@
4062
4143
  }
4063
4144
  .greese-Switch-thumb {
4064
4145
  position: relative;
4065
- inline-size: 1rem;
4066
- block-size: 1rem;
4146
+ inline-size: calc(var(--greese-choice-box, 1.125rem) * 0.889);
4147
+ block-size: calc(var(--greese-choice-box, 1.125rem) * 0.889);
4067
4148
  margin-inline-start: 0.125rem;
4068
4149
  pointer-events: none;
4069
4150
  background-color: var(--greese-color-canvas);
@@ -4072,16 +4153,61 @@
4072
4153
  transition: translate var(--greese-duration-fast) var(--greese-easing-standard);
4073
4154
  }
4074
4155
  .greese-Switch-input:checked + .greese-Switch-thumb {
4075
- translate: 1rem 0;
4156
+ translate: calc(125% - 0.25rem) 0;
4076
4157
  }
4077
4158
  .greese-Switch-input:checked + .greese-Switch-thumb:dir(rtl) {
4078
- translate: -1rem 0;
4159
+ translate: calc(0.25rem - 125%) 0;
4079
4160
  }
4080
4161
  }
4081
4162
  /* stylelint-disable selector-no-vendor-prefix */
4082
4163
  @layer greese.components {
4164
+ .greese-Slider--size-xs {
4165
+ --greese-slider-thumb: calc(1.5rem * 0.5);
4166
+ }
4167
+ .greese-Slider--size-sm {
4168
+ --greese-slider-thumb: calc(2rem * 0.5);
4169
+ }
4170
+ .greese-Slider--size-md {
4171
+ --greese-slider-thumb: calc(2.5rem * 0.5);
4172
+ }
4173
+ .greese-Slider--size-lg {
4174
+ --greese-slider-thumb: calc(3rem * 0.5);
4175
+ }
4176
+ .greese-Slider--size-xl {
4177
+ --greese-slider-thumb: calc(4rem * 0.5);
4178
+ }
4179
+ .greese-Slider-wrap {
4180
+ --greese-slider-thumb: 1.25rem;
4181
+ }
4182
+ @media (pointer: coarse) {
4183
+ .greese-Slider-wrap {
4184
+ --greese-slider-thumb: 1.75rem;
4185
+ }
4186
+ }
4187
+ .greese-Slider-wrap {
4188
+ position: relative;
4189
+ display: block;
4190
+ }
4191
+ .greese-Slider-thumbAnchor {
4192
+ --greese-slider-travel: calc(100% - var(--greese-slider-thumb));
4193
+ --greese-slider-offset: calc(
4194
+ var(--greese-slider-travel) * var(--greese-slider-ratio, 0)
4195
+ );
4196
+ position: absolute;
4197
+ inset-block-start: 0;
4198
+ inset-inline-start: calc(var(--greese-slider-thumb) / 2 + var(--greese-slider-offset));
4199
+ inline-size: 0;
4200
+ block-size: var(--greese-slider-thumb);
4201
+ }
4083
4202
  .greese-Slider {
4084
4203
  --greese-slider-thumb: 1.25rem;
4204
+ }
4205
+ @media (pointer: coarse) {
4206
+ .greese-Slider {
4207
+ --greese-slider-thumb: 1.75rem;
4208
+ }
4209
+ }
4210
+ .greese-Slider {
4085
4211
  --greese-slider-towards: right;
4086
4212
  box-sizing: border-box;
4087
4213
  display: block;
@@ -4095,11 +4221,6 @@
4095
4221
  .greese-Slider:dir(rtl) {
4096
4222
  --greese-slider-towards: left;
4097
4223
  }
4098
- @media (pointer: coarse) {
4099
- .greese-Slider {
4100
- --greese-slider-thumb: 1.75rem;
4101
- }
4102
- }
4103
4224
  .greese-Slider:focus-visible {
4104
4225
  outline: none;
4105
4226
  }
@@ -4155,6 +4276,26 @@
4155
4276
  /* stylelint-disable selector-no-vendor-prefix */
4156
4277
  /* stylelint-disable color-no-hex, function-disallowed-list */
4157
4278
  @layer greese.components {
4279
+ .greese-ColorPicker--size-xs {
4280
+ --greese-colorpicker-font: var(--greese-type-p3-font-size);
4281
+ --greese-colorpicker-padding: var(--greese-space-2);
4282
+ }
4283
+ .greese-ColorPicker--size-sm {
4284
+ --greese-colorpicker-font: var(--greese-type-p3-font-size);
4285
+ --greese-colorpicker-padding: var(--greese-space-3);
4286
+ }
4287
+ .greese-ColorPicker--size-md {
4288
+ --greese-colorpicker-font: var(--greese-type-p2-font-size);
4289
+ --greese-colorpicker-padding: var(--greese-space-3);
4290
+ }
4291
+ .greese-ColorPicker--size-lg {
4292
+ --greese-colorpicker-font: var(--greese-type-p2-font-size);
4293
+ --greese-colorpicker-padding: var(--greese-space-4);
4294
+ }
4295
+ .greese-ColorPicker--size-xl {
4296
+ --greese-colorpicker-font: var(--greese-type-p1-font-size);
4297
+ --greese-colorpicker-padding: var(--greese-space-4);
4298
+ }
4158
4299
  .greese-ColorPicker {
4159
4300
  --greese-colorpicker-thumb: 1.125rem;
4160
4301
  box-sizing: border-box;
@@ -4306,8 +4447,72 @@
4306
4447
  .greese-ColorPicker-hue {
4307
4448
  direction: ltr;
4308
4449
  }
4450
+ .greese-ColorPicker-fields {
4451
+ display: flex;
4452
+ flex-wrap: wrap;
4453
+ gap: var(--greese-space-2);
4454
+ align-items: center;
4455
+ }
4309
4456
  .greese-ColorPicker-hex {
4457
+ flex: 1 1 7rem;
4458
+ min-inline-size: 0;
4459
+ font-family: var(--greese-font-mono);
4460
+ }
4461
+ .greese-ColorPicker-channels {
4462
+ display: flex;
4463
+ flex: 1 0 100%;
4464
+ gap: var(--greese-space-2);
4465
+ min-inline-size: 0;
4466
+ }
4467
+ .greese-ColorPicker-channel {
4468
+ flex: 1;
4469
+ min-inline-size: 0;
4470
+ padding-inline: var(--greese-space-1);
4471
+ }
4472
+ .greese-ColorPicker-channel .greese-Input-control {
4473
+ font-family: var(--greese-font-mono);
4474
+ text-align: end;
4475
+ appearance: textfield;
4476
+ }
4477
+ .greese-ColorPicker-channel .greese-Input-control::-webkit-outer-spin-button, .greese-ColorPicker-channel .greese-Input-control::-webkit-inner-spin-button {
4478
+ margin: 0;
4479
+ appearance: none;
4480
+ }
4481
+ .greese-ColorPicker-channel .greese-Input-adornment {
4310
4482
  font-family: var(--greese-font-mono);
4483
+ color: var(--greese-color-fg-muted);
4484
+ }
4485
+ .greese-ColorPicker-tool {
4486
+ display: inline-flex;
4487
+ flex: none;
4488
+ align-items: center;
4489
+ justify-content: center;
4490
+ inline-size: 1.75rem;
4491
+ block-size: 1.75rem;
4492
+ padding: 0;
4493
+ color: var(--greese-color-fg-muted);
4494
+ cursor: pointer;
4495
+ background: none;
4496
+ border: 0;
4497
+ border-radius: var(--greese-corner-inset);
4498
+ }
4499
+ @media (pointer: coarse) {
4500
+ .greese-ColorPicker-tool {
4501
+ inline-size: 2.25rem;
4502
+ block-size: 2.25rem;
4503
+ }
4504
+ }
4505
+ .greese-ColorPicker-tool:hover:not(:disabled) {
4506
+ color: var(--greese-color-fg);
4507
+ background: var(--greese-color-track);
4508
+ }
4509
+ .greese-ColorPicker-tool:focus-visible {
4510
+ outline: 2px solid var(--greese-color-focus-ring);
4511
+ outline-offset: 2px;
4512
+ }
4513
+ .greese-ColorPicker-tool:disabled {
4514
+ cursor: not-allowed;
4515
+ opacity: 0.5;
4311
4516
  }
4312
4517
  .greese-ColorPicker-swatches {
4313
4518
  display: flex;
@@ -4410,46 +4615,46 @@
4410
4615
  .greese-Text {
4411
4616
  margin: 0;
4412
4617
  }
4413
- .greese-Text--regular {
4618
+ .greese-Text.greese-Text--regular {
4414
4619
  font-weight: var(--greese-font-weight-regular);
4415
4620
  }
4416
- .greese-Text--medium {
4621
+ .greese-Text.greese-Text--medium {
4417
4622
  font-weight: var(--greese-font-weight-medium);
4418
4623
  }
4419
- .greese-Text--semibold {
4624
+ .greese-Text.greese-Text--semibold {
4420
4625
  font-weight: var(--greese-font-weight-semibold);
4421
4626
  }
4422
- .greese-Text--bold {
4627
+ .greese-Text.greese-Text--bold {
4423
4628
  font-weight: var(--greese-font-weight-bold);
4424
4629
  }
4425
- .greese-Text--neutral {
4630
+ .greese-Text.greese-Text--neutral {
4426
4631
  color: var(--greese-color-fg);
4427
4632
  }
4428
- .greese-Text--muted {
4633
+ .greese-Text.greese-Text--muted {
4429
4634
  color: var(--greese-color-fg-muted);
4430
4635
  }
4431
- .greese-Text--primary {
4636
+ .greese-Text.greese-Text--primary {
4432
4637
  color: var(--greese-color-primary);
4433
4638
  }
4434
- .greese-Text--secondary {
4639
+ .greese-Text.greese-Text--secondary {
4435
4640
  color: var(--greese-color-secondary);
4436
4641
  }
4437
- .greese-Text--tertiary {
4642
+ .greese-Text.greese-Text--tertiary {
4438
4643
  color: var(--greese-color-tertiary);
4439
4644
  }
4440
- .greese-Text--accent {
4645
+ .greese-Text.greese-Text--accent {
4441
4646
  color: var(--greese-color-accent);
4442
4647
  }
4443
- .greese-Text--positive {
4648
+ .greese-Text.greese-Text--positive {
4444
4649
  color: var(--greese-color-positive);
4445
4650
  }
4446
- .greese-Text--negative {
4651
+ .greese-Text.greese-Text--negative {
4447
4652
  color: var(--greese-color-negative);
4448
4653
  }
4449
- .greese-Text--warning {
4654
+ .greese-Text.greese-Text--warning {
4450
4655
  color: var(--greese-color-warning);
4451
4656
  }
4452
- .greese-Text--info {
4657
+ .greese-Text.greese-Text--info {
4453
4658
  color: var(--greese-color-info);
4454
4659
  }
4455
4660
  .greese-Text--truncate {
@@ -5161,6 +5366,7 @@
5161
5366
  transition: none;
5162
5367
  }
5163
5368
  .greese-Collapsible-content {
5369
+ display: flow-root;
5164
5370
  padding-block-end: var(--greese-space-4);
5165
5371
  color: var(--greese-color-fg-muted);
5166
5372
  }
@@ -5473,9 +5679,9 @@
5473
5679
  display: inline-flex;
5474
5680
  gap: var(--greese-space-1);
5475
5681
  align-items: center;
5476
- min-block-size: 2rem;
5477
- padding-inline: var(--greese-space-3);
5478
- font-size: var(--greese-type-p3-font-size);
5682
+ min-block-size: var(--greese-chip-height);
5683
+ padding-inline: var(--greese-chip-padding);
5684
+ font-size: var(--greese-chip-font);
5479
5685
  line-height: 1;
5480
5686
  color: var(--greese-color-fg);
5481
5687
  white-space: nowrap;
@@ -5489,6 +5695,36 @@
5489
5695
  .greese-Chip:has(.greese-Chip-remove) {
5490
5696
  padding-inline-end: var(--greese-space-1);
5491
5697
  }
5698
+ .greese-Chip--size-xs {
5699
+ --greese-chip-height: 1.25rem;
5700
+ --greese-chip-padding: var(--greese-space-1);
5701
+ --greese-chip-font: var(--greese-type-caption-font-size);
5702
+ --greese-chip-remove: 1rem;
5703
+ }
5704
+ .greese-Chip--size-sm {
5705
+ --greese-chip-height: 1.625rem;
5706
+ --greese-chip-padding: var(--greese-space-2);
5707
+ --greese-chip-font: var(--greese-type-caption-font-size);
5708
+ --greese-chip-remove: 1.25rem;
5709
+ }
5710
+ .greese-Chip--size-md {
5711
+ --greese-chip-height: 2rem;
5712
+ --greese-chip-padding: var(--greese-space-3);
5713
+ --greese-chip-font: var(--greese-type-p3-font-size);
5714
+ --greese-chip-remove: 1.5rem;
5715
+ }
5716
+ .greese-Chip--size-lg {
5717
+ --greese-chip-height: 2.5rem;
5718
+ --greese-chip-padding: var(--greese-space-4);
5719
+ --greese-chip-font: var(--greese-type-p2-font-size);
5720
+ --greese-chip-remove: 1.75rem;
5721
+ }
5722
+ .greese-Chip--size-xl {
5723
+ --greese-chip-height: 3rem;
5724
+ --greese-chip-padding: var(--greese-space-5);
5725
+ --greese-chip-font: var(--greese-type-p1-font-size);
5726
+ --greese-chip-remove: 2rem;
5727
+ }
5492
5728
  .greese-Chip--neutral {
5493
5729
  --greese-chip-tone: var(--greese-color-fg);
5494
5730
  --greese-chip-tone-on: var(--greese-color-canvas);
@@ -5570,19 +5806,19 @@
5570
5806
  }
5571
5807
  .greese-Chip-toggle {
5572
5808
  align-self: stretch;
5573
- padding-inline: var(--greese-space-3);
5809
+ padding-inline: var(--greese-chip-padding);
5574
5810
  border-radius: var(--greese-corner-pill);
5575
5811
  }
5576
5812
  .greese-Chip-remove {
5577
5813
  justify-content: center;
5578
- inline-size: 1.5rem;
5579
- block-size: 1.5rem;
5814
+ inline-size: var(--greese-chip-remove);
5815
+ block-size: var(--greese-chip-remove);
5580
5816
  color: var(--greese-color-fg-muted);
5581
5817
  border-radius: var(--greese-corner-round);
5582
5818
  }
5583
5819
  .greese-Chip-remove > svg {
5584
- inline-size: 0.875rem;
5585
- block-size: 0.875rem;
5820
+ inline-size: 0.6em;
5821
+ block-size: 0.6em;
5586
5822
  }
5587
5823
  @media (hover: hover) {
5588
5824
  .greese-Chip-remove:hover {
@@ -5872,7 +6108,7 @@
5872
6108
  inline-size: min(var(--greese-dialog-width, 32rem), 100vw - 2 * var(--greese-space-4));
5873
6109
  max-inline-size: none;
5874
6110
  max-block-size: calc(100dvh - 2 * var(--greese-space-4));
5875
- padding: var(--greese-space-5);
6111
+ padding: var(--greese-dialog-padding, var(--greese-space-5));
5876
6112
  overflow: hidden;
5877
6113
  border-radius: var(--greese-corner-surface);
5878
6114
  }
@@ -5914,7 +6150,7 @@
5914
6150
  inline-size: 100vw;
5915
6151
  max-block-size: 100dvh;
5916
6152
  block-size: 100dvh;
5917
- padding-block: max(var(--greese-space-5), env(safe-area-inset-top)) max(var(--greese-space-5), env(safe-area-inset-bottom));
6153
+ padding-block: var(--greese-dialog-padding, max(var(--greese-space-5), env(safe-area-inset-top))) var(--greese-dialog-padding, max(var(--greese-space-5), env(safe-area-inset-bottom)));
5918
6154
  border: 0;
5919
6155
  border-radius: 0;
5920
6156
  }
@@ -5944,6 +6180,8 @@
5944
6180
  .greese-Dialog-body {
5945
6181
  flex: 1 1 auto;
5946
6182
  min-block-size: 0;
6183
+ padding: 4px;
6184
+ margin: -4px;
5947
6185
  overflow: auto;
5948
6186
  overscroll-behavior: contain;
5949
6187
  }
@@ -6016,7 +6254,7 @@
6016
6254
  inline-size: min(24rem, 100vw - 3rem);
6017
6255
  block-size: 100dvh;
6018
6256
  max-block-size: none;
6019
- padding-block: max(var(--greese-space-5), env(safe-area-inset-top)) max(var(--greese-space-5), env(safe-area-inset-bottom));
6257
+ padding-block: var(--greese-dialog-padding, max(var(--greese-space-5), env(safe-area-inset-top))) var(--greese-dialog-padding, max(var(--greese-space-5), env(safe-area-inset-bottom)));
6020
6258
  border-start-start-radius: var(--greese-corner-surface);
6021
6259
  border-start-end-radius: 0;
6022
6260
  border-end-end-radius: 0;
@@ -6030,7 +6268,7 @@
6030
6268
  inline-size: min(24rem, 100vw - 3rem);
6031
6269
  block-size: 100dvh;
6032
6270
  max-block-size: none;
6033
- padding-block: max(var(--greese-space-5), env(safe-area-inset-top)) max(var(--greese-space-5), env(safe-area-inset-bottom));
6271
+ padding-block: var(--greese-dialog-padding, max(var(--greese-space-5), env(safe-area-inset-top))) var(--greese-dialog-padding, max(var(--greese-space-5), env(safe-area-inset-bottom)));
6034
6272
  border-start-start-radius: 0;
6035
6273
  border-start-end-radius: var(--greese-corner-surface);
6036
6274
  border-end-end-radius: var(--greese-corner-surface);
@@ -6044,7 +6282,7 @@
6044
6282
  inline-size: 100vw;
6045
6283
  block-size: auto;
6046
6284
  max-block-size: 85dvh;
6047
- padding-block: var(--greese-space-5) max(var(--greese-space-5), env(safe-area-inset-bottom));
6285
+ padding-block: var(--greese-dialog-padding, var(--greese-space-5)) var(--greese-dialog-padding, max(var(--greese-space-5), env(safe-area-inset-bottom)));
6048
6286
  border-start-start-radius: var(--greese-corner-surface);
6049
6287
  border-start-end-radius: var(--greese-corner-surface);
6050
6288
  border-end-end-radius: 0;
@@ -6058,7 +6296,7 @@
6058
6296
  inline-size: 100vw;
6059
6297
  block-size: auto;
6060
6298
  max-block-size: 85dvh;
6061
- padding-block: max(var(--greese-space-5), env(safe-area-inset-top)) var(--greese-space-5);
6299
+ padding-block: var(--greese-dialog-padding, max(var(--greese-space-5), env(safe-area-inset-top))) var(--greese-dialog-padding, var(--greese-space-5));
6062
6300
  border-start-start-radius: 0;
6063
6301
  border-start-end-radius: 0;
6064
6302
  border-end-end-radius: var(--greese-corner-surface);
@@ -6073,7 +6311,7 @@
6073
6311
  inline-size: min(24rem, 100vw - 3rem);
6074
6312
  block-size: 100dvh;
6075
6313
  max-block-size: none;
6076
- padding-block: max(var(--greese-space-5), env(safe-area-inset-top)) max(var(--greese-space-5), env(safe-area-inset-bottom));
6314
+ padding-block: var(--greese-dialog-padding, max(var(--greese-space-5), env(safe-area-inset-top))) var(--greese-dialog-padding, max(var(--greese-space-5), env(safe-area-inset-bottom)));
6077
6315
  border-start-start-radius: var(--greese-corner-surface);
6078
6316
  border-start-end-radius: 0;
6079
6317
  border-end-end-radius: 0;
@@ -6087,7 +6325,7 @@
6087
6325
  inline-size: min(24rem, 100vw - 3rem);
6088
6326
  block-size: 100dvh;
6089
6327
  max-block-size: none;
6090
- padding-block: max(var(--greese-space-5), env(safe-area-inset-top)) max(var(--greese-space-5), env(safe-area-inset-bottom));
6328
+ padding-block: var(--greese-dialog-padding, max(var(--greese-space-5), env(safe-area-inset-top))) var(--greese-dialog-padding, max(var(--greese-space-5), env(safe-area-inset-bottom)));
6091
6329
  border-start-start-radius: 0;
6092
6330
  border-start-end-radius: var(--greese-corner-surface);
6093
6331
  border-end-end-radius: var(--greese-corner-surface);
@@ -6101,7 +6339,7 @@
6101
6339
  inline-size: 100vw;
6102
6340
  block-size: auto;
6103
6341
  max-block-size: 85dvh;
6104
- padding-block: var(--greese-space-5) max(var(--greese-space-5), env(safe-area-inset-bottom));
6342
+ padding-block: var(--greese-dialog-padding, var(--greese-space-5)) var(--greese-dialog-padding, max(var(--greese-space-5), env(safe-area-inset-bottom)));
6105
6343
  border-start-start-radius: var(--greese-corner-surface);
6106
6344
  border-start-end-radius: var(--greese-corner-surface);
6107
6345
  border-end-end-radius: 0;
@@ -6115,7 +6353,7 @@
6115
6353
  inline-size: 100vw;
6116
6354
  block-size: auto;
6117
6355
  max-block-size: 85dvh;
6118
- padding-block: max(var(--greese-space-5), env(safe-area-inset-top)) var(--greese-space-5);
6356
+ padding-block: var(--greese-dialog-padding, max(var(--greese-space-5), env(safe-area-inset-top))) var(--greese-dialog-padding, var(--greese-space-5));
6119
6357
  border-start-start-radius: 0;
6120
6358
  border-start-end-radius: 0;
6121
6359
  border-end-end-radius: var(--greese-corner-surface);
@@ -6131,7 +6369,7 @@
6131
6369
  inline-size: min(24rem, 100vw - 3rem);
6132
6370
  block-size: 100dvh;
6133
6371
  max-block-size: none;
6134
- padding-block: max(var(--greese-space-5), env(safe-area-inset-top)) max(var(--greese-space-5), env(safe-area-inset-bottom));
6372
+ padding-block: var(--greese-dialog-padding, max(var(--greese-space-5), env(safe-area-inset-top))) var(--greese-dialog-padding, max(var(--greese-space-5), env(safe-area-inset-bottom)));
6135
6373
  border-start-start-radius: var(--greese-corner-surface);
6136
6374
  border-start-end-radius: 0;
6137
6375
  border-end-end-radius: 0;
@@ -6145,7 +6383,7 @@
6145
6383
  inline-size: min(24rem, 100vw - 3rem);
6146
6384
  block-size: 100dvh;
6147
6385
  max-block-size: none;
6148
- padding-block: max(var(--greese-space-5), env(safe-area-inset-top)) max(var(--greese-space-5), env(safe-area-inset-bottom));
6386
+ padding-block: var(--greese-dialog-padding, max(var(--greese-space-5), env(safe-area-inset-top))) var(--greese-dialog-padding, max(var(--greese-space-5), env(safe-area-inset-bottom)));
6149
6387
  border-start-start-radius: 0;
6150
6388
  border-start-end-radius: var(--greese-corner-surface);
6151
6389
  border-end-end-radius: var(--greese-corner-surface);
@@ -6159,7 +6397,7 @@
6159
6397
  inline-size: 100vw;
6160
6398
  block-size: auto;
6161
6399
  max-block-size: 85dvh;
6162
- padding-block: var(--greese-space-5) max(var(--greese-space-5), env(safe-area-inset-bottom));
6400
+ padding-block: var(--greese-dialog-padding, var(--greese-space-5)) var(--greese-dialog-padding, max(var(--greese-space-5), env(safe-area-inset-bottom)));
6163
6401
  border-start-start-radius: var(--greese-corner-surface);
6164
6402
  border-start-end-radius: var(--greese-corner-surface);
6165
6403
  border-end-end-radius: 0;
@@ -6173,7 +6411,7 @@
6173
6411
  inline-size: 100vw;
6174
6412
  block-size: auto;
6175
6413
  max-block-size: 85dvh;
6176
- padding-block: max(var(--greese-space-5), env(safe-area-inset-top)) var(--greese-space-5);
6414
+ padding-block: var(--greese-dialog-padding, max(var(--greese-space-5), env(safe-area-inset-top))) var(--greese-dialog-padding, var(--greese-space-5));
6177
6415
  border-start-start-radius: 0;
6178
6416
  border-start-end-radius: 0;
6179
6417
  border-end-end-radius: var(--greese-corner-surface);
@@ -6189,7 +6427,7 @@
6189
6427
  inline-size: min(24rem, 100vw - 3rem);
6190
6428
  block-size: 100dvh;
6191
6429
  max-block-size: none;
6192
- padding-block: max(var(--greese-space-5), env(safe-area-inset-top)) max(var(--greese-space-5), env(safe-area-inset-bottom));
6430
+ padding-block: var(--greese-dialog-padding, max(var(--greese-space-5), env(safe-area-inset-top))) var(--greese-dialog-padding, max(var(--greese-space-5), env(safe-area-inset-bottom)));
6193
6431
  border-start-start-radius: var(--greese-corner-surface);
6194
6432
  border-start-end-radius: 0;
6195
6433
  border-end-end-radius: 0;
@@ -6203,7 +6441,7 @@
6203
6441
  inline-size: min(24rem, 100vw - 3rem);
6204
6442
  block-size: 100dvh;
6205
6443
  max-block-size: none;
6206
- padding-block: max(var(--greese-space-5), env(safe-area-inset-top)) max(var(--greese-space-5), env(safe-area-inset-bottom));
6444
+ padding-block: var(--greese-dialog-padding, max(var(--greese-space-5), env(safe-area-inset-top))) var(--greese-dialog-padding, max(var(--greese-space-5), env(safe-area-inset-bottom)));
6207
6445
  border-start-start-radius: 0;
6208
6446
  border-start-end-radius: var(--greese-corner-surface);
6209
6447
  border-end-end-radius: var(--greese-corner-surface);
@@ -6217,7 +6455,7 @@
6217
6455
  inline-size: 100vw;
6218
6456
  block-size: auto;
6219
6457
  max-block-size: 85dvh;
6220
- padding-block: var(--greese-space-5) max(var(--greese-space-5), env(safe-area-inset-bottom));
6458
+ padding-block: var(--greese-dialog-padding, var(--greese-space-5)) var(--greese-dialog-padding, max(var(--greese-space-5), env(safe-area-inset-bottom)));
6221
6459
  border-start-start-radius: var(--greese-corner-surface);
6222
6460
  border-start-end-radius: var(--greese-corner-surface);
6223
6461
  border-end-end-radius: 0;
@@ -6231,7 +6469,7 @@
6231
6469
  inline-size: 100vw;
6232
6470
  block-size: auto;
6233
6471
  max-block-size: 85dvh;
6234
- padding-block: max(var(--greese-space-5), env(safe-area-inset-top)) var(--greese-space-5);
6472
+ padding-block: var(--greese-dialog-padding, max(var(--greese-space-5), env(safe-area-inset-top))) var(--greese-dialog-padding, var(--greese-space-5));
6235
6473
  border-start-start-radius: 0;
6236
6474
  border-start-end-radius: 0;
6237
6475
  border-end-end-radius: var(--greese-corner-surface);
@@ -6247,7 +6485,7 @@
6247
6485
  inline-size: min(24rem, 100vw - 3rem);
6248
6486
  block-size: 100dvh;
6249
6487
  max-block-size: none;
6250
- padding-block: max(var(--greese-space-5), env(safe-area-inset-top)) max(var(--greese-space-5), env(safe-area-inset-bottom));
6488
+ padding-block: var(--greese-dialog-padding, max(var(--greese-space-5), env(safe-area-inset-top))) var(--greese-dialog-padding, max(var(--greese-space-5), env(safe-area-inset-bottom)));
6251
6489
  border-start-start-radius: var(--greese-corner-surface);
6252
6490
  border-start-end-radius: 0;
6253
6491
  border-end-end-radius: 0;
@@ -6261,7 +6499,7 @@
6261
6499
  inline-size: min(24rem, 100vw - 3rem);
6262
6500
  block-size: 100dvh;
6263
6501
  max-block-size: none;
6264
- padding-block: max(var(--greese-space-5), env(safe-area-inset-top)) max(var(--greese-space-5), env(safe-area-inset-bottom));
6502
+ padding-block: var(--greese-dialog-padding, max(var(--greese-space-5), env(safe-area-inset-top))) var(--greese-dialog-padding, max(var(--greese-space-5), env(safe-area-inset-bottom)));
6265
6503
  border-start-start-radius: 0;
6266
6504
  border-start-end-radius: var(--greese-corner-surface);
6267
6505
  border-end-end-radius: var(--greese-corner-surface);
@@ -6275,7 +6513,7 @@
6275
6513
  inline-size: 100vw;
6276
6514
  block-size: auto;
6277
6515
  max-block-size: 85dvh;
6278
- padding-block: var(--greese-space-5) max(var(--greese-space-5), env(safe-area-inset-bottom));
6516
+ padding-block: var(--greese-dialog-padding, var(--greese-space-5)) var(--greese-dialog-padding, max(var(--greese-space-5), env(safe-area-inset-bottom)));
6279
6517
  border-start-start-radius: var(--greese-corner-surface);
6280
6518
  border-start-end-radius: var(--greese-corner-surface);
6281
6519
  border-end-end-radius: 0;
@@ -6289,7 +6527,7 @@
6289
6527
  inline-size: 100vw;
6290
6528
  block-size: auto;
6291
6529
  max-block-size: 85dvh;
6292
- padding-block: max(var(--greese-space-5), env(safe-area-inset-top)) var(--greese-space-5);
6530
+ padding-block: var(--greese-dialog-padding, max(var(--greese-space-5), env(safe-area-inset-top))) var(--greese-dialog-padding, var(--greese-space-5));
6293
6531
  border-start-start-radius: 0;
6294
6532
  border-start-end-radius: 0;
6295
6533
  border-end-end-radius: var(--greese-corner-surface);
@@ -6699,6 +6937,15 @@
6699
6937
  display: flex;
6700
6938
  flex-direction: column;
6701
6939
  }
6940
+ .greese-ContextMenu {
6941
+ min-inline-size: 0;
6942
+ }
6943
+ .greese-ContextMenu-point {
6944
+ position: fixed;
6945
+ inline-size: 0;
6946
+ block-size: 0;
6947
+ pointer-events: none;
6948
+ }
6702
6949
  .greese-Menu-viewport {
6703
6950
  min-block-size: 0;
6704
6951
  padding: var(--greese-space-1);
@@ -7401,8 +7648,8 @@
7401
7648
  border-radius: var(--greese-corner-control);
7402
7649
  }
7403
7650
  .greese-SegmentedControl--size-xs {
7404
- --greese-button-height: 1rem;
7405
- --greese-button-padding: var(--greese-space-1);
7651
+ --greese-button-height: 1.5rem;
7652
+ --greese-button-padding: var(--greese-space-2);
7406
7653
  font-size: var(--greese-type-p3-font-size);
7407
7654
  }
7408
7655
  .greese-SegmentedControl--size-sm {
@@ -7496,8 +7743,8 @@
7496
7743
  }
7497
7744
  .greese-NumberField-steppers {
7498
7745
  display: inline-flex;
7499
- gap: 2px;
7500
- margin-inline-end: calc(-1 * var(--greese-space-2));
7746
+ flex-direction: column;
7747
+ margin-inline-end: calc(-1 * var(--greese-space-1));
7501
7748
  }
7502
7749
  @media (pointer: coarse) {
7503
7750
  .greese-NumberField-step::after {
@@ -7514,8 +7761,6 @@
7514
7761
  position: relative;
7515
7762
  display: inline-grid;
7516
7763
  place-items: center;
7517
- inline-size: 1.75rem;
7518
- block-size: 1.75rem;
7519
7764
  padding: 0;
7520
7765
  color: var(--greese-color-fg-muted);
7521
7766
  cursor: pointer;
@@ -7523,10 +7768,6 @@
7523
7768
  border: 0;
7524
7769
  border-radius: var(--greese-corner-inset);
7525
7770
  }
7526
- .greese-NumberField-step > svg {
7527
- inline-size: 1rem;
7528
- block-size: 1rem;
7529
- }
7530
7771
  @media (hover: hover) {
7531
7772
  .greese-NumberField-step:hover {
7532
7773
  color: var(--greese-color-fg);
@@ -7537,6 +7778,65 @@
7537
7778
  cursor: not-allowed;
7538
7779
  opacity: 0.4;
7539
7780
  }
7781
+ .greese-NumberField-steppers .greese-NumberField-step {
7782
+ inline-size: 1.25rem;
7783
+ block-size: 0.875rem;
7784
+ }
7785
+ .greese-NumberField-steppers .greese-NumberField-step > svg {
7786
+ inline-size: 0.75rem;
7787
+ block-size: 0.75rem;
7788
+ }
7789
+ .greese-NumberField--split .greese-NumberField-step {
7790
+ inline-size: 1.5rem;
7791
+ block-size: 1.5rem;
7792
+ }
7793
+ .greese-NumberField--split .greese-NumberField-step > svg {
7794
+ inline-size: 0.875rem;
7795
+ block-size: 0.875rem;
7796
+ }
7797
+ @media (pointer: coarse) {
7798
+ .greese-NumberField-clear::after {
7799
+ position: absolute;
7800
+ top: 50%;
7801
+ left: 50%;
7802
+ inline-size: max(100%, 44px);
7803
+ block-size: max(100%, 44px);
7804
+ content: "";
7805
+ translate: -50% -50%;
7806
+ }
7807
+ }
7808
+ .greese-NumberField-clear {
7809
+ position: relative;
7810
+ display: inline-grid;
7811
+ flex: none;
7812
+ place-items: center;
7813
+ inline-size: 1.25rem;
7814
+ block-size: 1.25rem;
7815
+ padding: 0;
7816
+ color: var(--greese-color-fg-muted);
7817
+ cursor: pointer;
7818
+ background: none;
7819
+ border: 0;
7820
+ border-radius: var(--greese-corner-round);
7821
+ }
7822
+ @media (hover: hover) {
7823
+ .greese-NumberField-clear:hover {
7824
+ color: var(--greese-color-fg);
7825
+ background-color: color-mix(in oklab, var(--greese-color-fg) 8%, transparent);
7826
+ }
7827
+ }
7828
+ .greese-NumberField-clear > svg {
7829
+ inline-size: 0.75rem;
7830
+ block-size: 0.75rem;
7831
+ }
7832
+ }
7833
+ @layer greese.components {
7834
+ .greese-NumberStepper {
7835
+ --greese-numberstepper-gap: var(--greese-space-1);
7836
+ }
7837
+ .greese-NumberStepper .greese-Input-control {
7838
+ text-align: center;
7839
+ }
7540
7840
  }
7541
7841
  @layer greese.components {
7542
7842
  .greese-Table {
@@ -7822,8 +8122,8 @@
7822
8122
  position: relative;
7823
8123
  display: inline-grid;
7824
8124
  place-items: center;
7825
- inline-size: 1.75rem;
7826
- block-size: 1.75rem;
8125
+ inline-size: min(1.75rem, var(--greese-input-height, 1.75rem) - 2px);
8126
+ block-size: min(1.75rem, var(--greese-input-height, 1.75rem) - 2px);
7827
8127
  padding: 0;
7828
8128
  margin-inline-end: calc(-1 * var(--greese-space-2));
7829
8129
  color: var(--greese-color-fg-muted);
@@ -7896,47 +8196,54 @@
7896
8196
  }
7897
8197
  }
7898
8198
  @layer greese.components {
7899
- .greese-Carousel {
8199
+ .greese-ScrollCarousel {
7900
8200
  box-sizing: border-box;
7901
8201
  position: relative;
7902
8202
  display: grid;
7903
8203
  gap: var(--greese-space-3);
7904
8204
  min-inline-size: 0;
7905
8205
  }
7906
- .greese-Carousel-viewport {
7907
- --greese-carousel-per-view: 1;
7908
- --greese-carousel-gap: var(--greese-space-3);
8206
+ .greese-ScrollCarousel-viewport {
8207
+ --greese-scrollcarousel-per-view: 1;
8208
+ --greese-scrollcarousel-gap: var(--greese-space-3);
7909
8209
  display: flex;
7910
- gap: var(--greese-carousel-gap);
8210
+ gap: var(--greese-scrollcarousel-gap);
7911
8211
  overflow-x: auto;
7912
8212
  overscroll-behavior-x: contain;
7913
8213
  scroll-snap-type: x mandatory;
7914
8214
  scrollbar-width: none;
7915
8215
  border-radius: var(--greese-corner-panel);
7916
8216
  }
7917
- .greese-Carousel-viewport::-webkit-scrollbar {
8217
+ .greese-ScrollCarousel-viewport::-webkit-scrollbar {
7918
8218
  display: none;
7919
8219
  }
7920
- .greese-Carousel-viewport:focus-visible {
8220
+ .greese-ScrollCarousel-viewport:focus-visible {
7921
8221
  outline: 2px solid var(--greese-color-focus-ring);
7922
8222
  outline-offset: 2px;
7923
8223
  }
7924
8224
  @media (prefers-reduced-motion: no-preference) {
7925
- .greese-Carousel-viewport {
8225
+ .greese-ScrollCarousel-viewport {
7926
8226
  scroll-behavior: smooth;
7927
8227
  }
7928
8228
  }
7929
- .greese-CarouselSlide {
7930
- --greese-carousel-gaps: calc(
7931
- (var(--greese-carousel-per-view) - 1) * var(--greese-carousel-gap)
8229
+ .greese-ScrollCarousel--vertical > .greese-ScrollCarousel-viewport {
8230
+ flex-direction: column;
8231
+ block-size: var(--greese-scrollcarousel-size, 20rem);
8232
+ overflow: hidden auto;
8233
+ overscroll-behavior: auto contain;
8234
+ scroll-snap-type: y mandatory;
8235
+ }
8236
+ .greese-ScrollCarouselSlide {
8237
+ --greese-scrollcarousel-gaps: calc(
8238
+ (var(--greese-scrollcarousel-per-view) - 1) * var(--greese-scrollcarousel-gap)
7932
8239
  );
7933
- flex: 0 0 calc((100% - var(--greese-carousel-gaps)) / var(--greese-carousel-per-view));
8240
+ flex: 0 0 calc((100% - var(--greese-scrollcarousel-gaps)) / var(--greese-scrollcarousel-per-view));
7934
8241
  min-inline-size: 0;
7935
8242
  scroll-snap-align: start;
7936
8243
  }
7937
- .greese-Carousel-control {
8244
+ .greese-ScrollCarousel-control {
7938
8245
  position: absolute;
7939
- inset-block-start: calc(50% - 1.25rem - var(--greese-carousel-dots, 0px) / 2);
8246
+ inset-block-start: calc(50% - 1.25rem - var(--greese-scrollcarousel-dots, 0px) / 2);
7940
8247
  display: inline-grid;
7941
8248
  place-items: center;
7942
8249
  inline-size: 2.5rem;
@@ -7951,12 +8258,12 @@
7951
8258
  translate: 0 -50%;
7952
8259
  transition: opacity var(--greese-duration-fast) var(--greese-easing-standard);
7953
8260
  }
7954
- .greese-Carousel-control:focus-visible {
8261
+ .greese-ScrollCarousel-control:focus-visible {
7955
8262
  outline: 2px solid var(--greese-color-focus-ring);
7956
8263
  outline-offset: 2px;
7957
8264
  }
7958
8265
  @media (pointer: coarse) {
7959
- .greese-Carousel-control::after {
8266
+ .greese-ScrollCarousel-control::after {
7960
8267
  position: absolute;
7961
8268
  top: 50%;
7962
8269
  left: 50%;
@@ -7966,44 +8273,40 @@
7966
8273
  translate: -50% -50%;
7967
8274
  }
7968
8275
  }
7969
- .greese-Carousel-control:disabled {
8276
+ .greese-ScrollCarousel-control:disabled {
8277
+ pointer-events: none;
7970
8278
  cursor: default;
7971
8279
  opacity: 0;
7972
8280
  }
7973
- .greese-Carousel-control > svg {
8281
+ .greese-ScrollCarousel-control > svg {
7974
8282
  inline-size: 1.125rem;
7975
8283
  block-size: 1.125rem;
7976
8284
  }
7977
- .greese-Carousel:has(.greese-Carousel-indicators) {
7978
- --greese-carousel-dots: calc(0.5rem + var(--greese-space-3));
8285
+ .greese-ScrollCarousel:has(.greese-ScrollCarousel-indicators) {
8286
+ --greese-scrollcarousel-dots: calc(0.5rem + var(--greese-space-3));
7979
8287
  }
7980
- .greese-Carousel-control--previous {
8288
+ .greese-ScrollCarousel-control--previous {
7981
8289
  inset-inline-start: var(--greese-space-2);
7982
8290
  }
7983
- .greese-Carousel-control--next {
8291
+ .greese-ScrollCarousel-control--next {
7984
8292
  inset-inline-end: var(--greese-space-2);
7985
8293
  }
7986
- .greese-Carousel-control--next > svg {
8294
+ .greese-ScrollCarousel-control--next > svg {
7987
8295
  scale: -1 1;
7988
8296
  }
7989
- .greese-Carousel-control:dir(rtl) > svg {
8297
+ .greese-ScrollCarousel-control:dir(rtl) > svg {
7990
8298
  scale: -1 1;
7991
8299
  }
7992
- .greese-Carousel-control--next:dir(rtl) > svg {
8300
+ .greese-ScrollCarousel-control--next:dir(rtl) > svg {
7993
8301
  scale: 1;
7994
8302
  }
7995
- @media (hover: none) {
7996
- .greese-Carousel-control {
7997
- display: none;
7998
- }
7999
- }
8000
- .greese-Carousel-indicators {
8303
+ .greese-ScrollCarousel-indicators {
8001
8304
  display: flex;
8002
8305
  flex-wrap: wrap;
8003
8306
  gap: var(--greese-space-1);
8004
8307
  justify-content: center;
8005
8308
  }
8006
- .greese-Carousel-indicator {
8309
+ .greese-ScrollCarousel-indicator {
8007
8310
  position: relative;
8008
8311
  inline-size: 1.5rem;
8009
8312
  block-size: 0.5rem;
@@ -8012,12 +8315,12 @@
8012
8315
  background: none;
8013
8316
  border: 0;
8014
8317
  }
8015
- .greese-Carousel-indicator:focus-visible {
8318
+ .greese-ScrollCarousel-indicator:focus-visible {
8016
8319
  outline: 2px solid var(--greese-color-focus-ring);
8017
8320
  outline-offset: 2px;
8018
8321
  }
8019
8322
  @media (pointer: coarse) {
8020
- .greese-Carousel-indicator::after {
8323
+ .greese-ScrollCarousel-indicator::after {
8021
8324
  position: absolute;
8022
8325
  top: 50%;
8023
8326
  left: 50%;
@@ -8027,7 +8330,7 @@
8027
8330
  translate: -50% -50%;
8028
8331
  }
8029
8332
  }
8030
- .greese-Carousel-indicator::before {
8333
+ .greese-ScrollCarousel-indicator::before {
8031
8334
  position: absolute;
8032
8335
  inset: 0;
8033
8336
  content: "";
@@ -8036,41 +8339,360 @@
8036
8339
  clip-path: inset(0 calc(50% - 0.25rem) round var(--greese-corner-pill));
8037
8340
  transition: clip-path var(--greese-duration-normal) var(--greese-easing-standard), background-color var(--greese-duration-normal) var(--greese-easing-standard);
8038
8341
  }
8039
- .greese-Carousel-indicator[aria-current=true]::before {
8342
+ .greese-ScrollCarousel-indicator[aria-current=true]::before {
8040
8343
  background-color: var(--greese-color-primary);
8041
8344
  clip-path: inset(0 round var(--greese-corner-pill));
8042
8345
  }
8043
- .greese-Carousel--xs-per-view {
8044
- --greese-carousel-per-view: var(--greese-carousel-per-view-xs);
8346
+ .greese-ScrollCarousel--vertical > .greese-ScrollCarousel-control {
8347
+ inset-inline: 0;
8348
+ margin-inline: auto;
8349
+ translate: none;
8350
+ }
8351
+ .greese-ScrollCarousel--vertical > .greese-ScrollCarousel-control > svg {
8352
+ rotate: 90deg;
8353
+ scale: 1;
8354
+ }
8355
+ .greese-ScrollCarousel--vertical > .greese-ScrollCarousel-control--previous {
8356
+ inset-block-start: var(--greese-space-2);
8357
+ }
8358
+ .greese-ScrollCarousel--vertical > .greese-ScrollCarousel-control--next {
8359
+ inset-block: auto calc(var(--greese-space-2) + var(--greese-scrollcarousel-dots, 0px));
8360
+ }
8361
+ .greese-ScrollCarousel--vertical > .greese-ScrollCarousel-control--next > svg {
8362
+ rotate: -90deg;
8363
+ }
8364
+ .greese-ScrollCarousel--strip {
8365
+ gap: 0;
8366
+ }
8367
+ .greese-ScrollCarousel--strip > .greese-ScrollCarousel-viewport {
8368
+ --greese-scrollcarousel-gap: var(--greese-space-1);
8369
+ align-items: center;
8370
+ scroll-snap-type: none;
8371
+ border-radius: 0;
8372
+ }
8373
+ .greese-ScrollCarousel--strip > .greese-ScrollCarousel-control {
8374
+ inset-block-start: 50%;
8375
+ inline-size: 1.5rem;
8376
+ block-size: 1.5rem;
8377
+ box-shadow: var(--greese-shadow-sm);
8378
+ }
8379
+ .greese-ScrollCarousel--strip > .greese-ScrollCarousel-control > svg {
8380
+ inline-size: 0.875rem;
8381
+ block-size: 0.875rem;
8382
+ }
8383
+ .greese-ScrollCarousel--strip > .greese-ScrollCarousel-control--previous {
8384
+ inset-inline-start: 0;
8385
+ }
8386
+ .greese-ScrollCarousel--strip > .greese-ScrollCarousel-control--next {
8387
+ inset-inline-end: 0;
8388
+ }
8389
+ .greese-ScrollCarousel--strip > .greese-ScrollCarousel-viewport > .greese-ScrollCarouselSlide {
8390
+ flex: none;
8391
+ scroll-snap-align: none;
8392
+ }
8393
+ @media (hover: none) {
8394
+ .greese-ScrollCarousel-control {
8395
+ display: none;
8396
+ }
8397
+ }
8398
+ .greese-ScrollCarousel--xs-per-view {
8399
+ --greese-scrollcarousel-per-view: var(--greese-scrollcarousel-per-view-xs);
8045
8400
  }
8046
8401
  @media (width >= 600px) {
8047
- .greese-Carousel--sm-per-view {
8048
- --greese-carousel-per-view: var(--greese-carousel-per-view-sm);
8402
+ .greese-ScrollCarousel--sm-per-view {
8403
+ --greese-scrollcarousel-per-view: var(--greese-scrollcarousel-per-view-sm);
8049
8404
  }
8050
8405
  }
8051
8406
  @media (width >= 900px) {
8052
- .greese-Carousel--md-per-view {
8053
- --greese-carousel-per-view: var(--greese-carousel-per-view-md);
8407
+ .greese-ScrollCarousel--md-per-view {
8408
+ --greese-scrollcarousel-per-view: var(--greese-scrollcarousel-per-view-md);
8054
8409
  }
8055
8410
  }
8056
8411
  @media (width >= 1200px) {
8057
- .greese-Carousel--lg-per-view {
8058
- --greese-carousel-per-view: var(--greese-carousel-per-view-lg);
8412
+ .greese-ScrollCarousel--lg-per-view {
8413
+ --greese-scrollcarousel-per-view: var(--greese-scrollcarousel-per-view-lg);
8059
8414
  }
8060
8415
  }
8061
8416
  @media (width >= 1536px) {
8062
- .greese-Carousel--xl-per-view {
8063
- --greese-carousel-per-view: var(--greese-carousel-per-view-xl);
8417
+ .greese-ScrollCarousel--xl-per-view {
8418
+ --greese-scrollcarousel-per-view: var(--greese-scrollcarousel-per-view-xl);
8064
8419
  }
8065
8420
  }
8066
8421
  }
8067
8422
  @layer greese.components {
8068
- .greese-ChatBubble--neutral {
8069
- --greese-chat-tone: var(--greese-color-fg);
8070
- --greese-chat-tone-on: var(--greese-color-canvas);
8071
- }
8072
- .greese-ChatBubble--muted {
8073
- --greese-chat-tone: var(--greese-color-fg-muted);
8423
+ .greese-Carousel {
8424
+ box-sizing: border-box;
8425
+ --greese-carousel-way: 1;
8426
+ --greese-carousel-enter: var(--greese-motion-carousel, greese-carousel-in);
8427
+ --greese-carousel-duration: var(
8428
+ --greese-motion-carousel-duration,
8429
+ var(--greese-duration-normal)
8430
+ );
8431
+ --greese-carousel-exit-opacity: var(
8432
+ --greese-motion-carousel-exit-opacity,
8433
+ 1
8434
+ );
8435
+ --greese-carousel-exit-translate: var(
8436
+ --greese-motion-carousel-exit-translate,
8437
+ calc(-100% * var(--greese-carousel-way)) 0
8438
+ );
8439
+ --greese-carousel-exit-scale: var(
8440
+ --greese-motion-carousel-exit-scale,
8441
+ 1
8442
+ );
8443
+ --greese-carousel-exit-mask-image: var(
8444
+ --greese-motion-carousel-exit-mask-image,
8445
+ none
8446
+ );
8447
+ --greese-carousel-exit-mask-repeat: var(
8448
+ --greese-motion-carousel-exit-mask-repeat,
8449
+ no-repeat
8450
+ );
8451
+ --greese-carousel-exit-mask-position: var(
8452
+ --greese-motion-carousel-exit-mask-position,
8453
+ 50% 50%
8454
+ );
8455
+ --greese-carousel-exit-mask-size: var(
8456
+ --greese-motion-carousel-exit-mask-size,
8457
+ 100% 100%
8458
+ );
8459
+ --greese-carousel-exit-mask-from: var(
8460
+ --greese-motion-carousel-exit-mask-from,
8461
+ 100% 100%
8462
+ );
8463
+ --greese-carousel-exit-transform: var(
8464
+ --greese-motion-carousel-exit-transform,
8465
+ none
8466
+ );
8467
+ --greese-carousel-exit-transform-origin: var(
8468
+ --greese-motion-carousel-exit-transform-origin,
8469
+ 50% 50%
8470
+ );
8471
+ position: relative;
8472
+ display: grid;
8473
+ gap: var(--greese-space-3);
8474
+ min-inline-size: 0;
8475
+ }
8476
+ .greese-Carousel[data-direction=back] {
8477
+ --greese-carousel-way: -1;
8478
+ --greese-carousel-enter: var(
8479
+ --greese-motion-carousel-back,
8480
+ var(--greese-motion-carousel, greese-carousel-in)
8481
+ );
8482
+ --greese-carousel-exit-opacity: var(
8483
+ --greese-motion-carousel-back-exit-opacity,
8484
+ var(--greese-motion-carousel-exit-opacity, 1)
8485
+ );
8486
+ --greese-carousel-exit-translate: var(
8487
+ --greese-motion-carousel-back-exit-translate,
8488
+ var(--greese-motion-carousel-exit-translate, calc(-100% * var(--greese-carousel-way)) 0)
8489
+ );
8490
+ --greese-carousel-exit-scale: var(
8491
+ --greese-motion-carousel-back-exit-scale,
8492
+ var(--greese-motion-carousel-exit-scale, 1)
8493
+ );
8494
+ --greese-carousel-exit-mask-image: var(
8495
+ --greese-motion-carousel-back-exit-mask-image,
8496
+ var(--greese-motion-carousel-exit-mask-image, none)
8497
+ );
8498
+ --greese-carousel-exit-mask-repeat: var(
8499
+ --greese-motion-carousel-back-exit-mask-repeat,
8500
+ var(--greese-motion-carousel-exit-mask-repeat, no-repeat)
8501
+ );
8502
+ --greese-carousel-exit-mask-position: var(
8503
+ --greese-motion-carousel-back-exit-mask-position,
8504
+ var(--greese-motion-carousel-exit-mask-position, 50% 50%)
8505
+ );
8506
+ --greese-carousel-exit-mask-size: var(
8507
+ --greese-motion-carousel-back-exit-mask-size,
8508
+ var(--greese-motion-carousel-exit-mask-size, 100% 100%)
8509
+ );
8510
+ --greese-carousel-exit-mask-from: var(
8511
+ --greese-motion-carousel-back-exit-mask-from,
8512
+ var(--greese-motion-carousel-exit-mask-from, 100% 100%)
8513
+ );
8514
+ --greese-carousel-exit-transform: var(
8515
+ --greese-motion-carousel-back-exit-transform,
8516
+ var(--greese-motion-carousel-exit-transform, none)
8517
+ );
8518
+ --greese-carousel-exit-transform-origin: var(
8519
+ --greese-motion-carousel-back-exit-transform-origin,
8520
+ var(--greese-motion-carousel-exit-transform-origin, 50% 50%)
8521
+ );
8522
+ }
8523
+ .greese-Carousel:dir(rtl) {
8524
+ --greese-carousel-way: -1;
8525
+ }
8526
+ .greese-Carousel[data-direction=back]:dir(rtl) {
8527
+ --greese-carousel-way: 1;
8528
+ }
8529
+ .greese-Carousel-viewport {
8530
+ --greese-motion-exit-opacity: initial;
8531
+ --greese-motion-exit-translate: initial;
8532
+ --greese-motion-exit-scale: initial;
8533
+ --greese-motion-exit-mask-image: initial;
8534
+ --greese-motion-exit-mask-repeat: initial;
8535
+ --greese-motion-exit-mask-position: initial;
8536
+ --greese-motion-exit-mask-size: initial;
8537
+ --greese-motion-exit-mask-from: initial;
8538
+ --greese-motion-exit-transform: initial;
8539
+ --greese-motion-exit-transform-origin: initial;
8540
+ --greese-carousel-slide-enter: initial;
8541
+ display: grid;
8542
+ min-inline-size: 0;
8543
+ overflow: clip;
8544
+ border-radius: var(--greese-corner-panel);
8545
+ touch-action: pan-y;
8546
+ }
8547
+ .greese-Carousel-viewport:focus-visible {
8548
+ outline: 2px solid var(--greese-color-focus-ring);
8549
+ outline-offset: 2px;
8550
+ }
8551
+ .greese-CarouselSlide {
8552
+ grid-area: 1/1;
8553
+ min-inline-size: 0;
8554
+ mask-image: var(--greese-motion-exit-mask-image, var(--greese-carousel-exit-mask-image));
8555
+ mask-repeat: var(--greese-motion-exit-mask-repeat, var(--greese-carousel-exit-mask-repeat));
8556
+ mask-position: var(--greese-motion-exit-mask-position, var(--greese-carousel-exit-mask-position));
8557
+ mask-size: var(--greese-motion-exit-mask-from, var(--greese-carousel-exit-mask-from));
8558
+ transform-origin: var(--greese-motion-exit-transform-origin, var(--greese-carousel-exit-transform-origin));
8559
+ }
8560
+ .greese-CarouselSlide:not([data-active]) {
8561
+ visibility: hidden;
8562
+ opacity: var(--greese-motion-exit-opacity, var(--greese-carousel-exit-opacity));
8563
+ translate: var(--greese-motion-exit-translate, var(--greese-carousel-exit-translate));
8564
+ scale: var(--greese-motion-exit-scale, var(--greese-carousel-exit-scale));
8565
+ transform: var(--greese-motion-exit-transform, var(--greese-carousel-exit-transform));
8566
+ mask-size: var(--greese-motion-exit-mask-size, var(--greese-carousel-exit-mask-size));
8567
+ }
8568
+ @media (prefers-reduced-motion: no-preference) {
8569
+ .greese-Carousel[data-moved] > .greese-Carousel-viewport > .greese-CarouselSlide[data-active] {
8570
+ animation-name: var(--greese-carousel-slide-enter, var(--greese-carousel-enter));
8571
+ animation-duration: var(--greese-carousel-duration);
8572
+ animation-timing-function: var(--greese-easing-standard);
8573
+ animation-fill-mode: backwards;
8574
+ }
8575
+ .greese-Carousel[data-moved] > .greese-Carousel-viewport > .greese-CarouselSlide:not([data-active]) {
8576
+ transition-property: visibility, opacity, translate, scale, transform, mask-size, mask-position;
8577
+ transition-duration: var(--greese-carousel-duration);
8578
+ transition-timing-function: var(--greese-easing-standard);
8579
+ }
8580
+ }
8581
+ .greese-Carousel-control {
8582
+ position: absolute;
8583
+ inset-block-start: calc(50% - 1.25rem - var(--greese-carousel-dots, 0px) / 2);
8584
+ display: inline-grid;
8585
+ place-items: center;
8586
+ inline-size: 2.5rem;
8587
+ block-size: 2.5rem;
8588
+ padding: 0;
8589
+ color: var(--greese-color-fg);
8590
+ cursor: pointer;
8591
+ background-color: color-mix(in oklab, var(--greese-color-surface-overlay) 88%, transparent);
8592
+ border: 1px solid var(--greese-color-border);
8593
+ border-radius: var(--greese-corner-round);
8594
+ box-shadow: var(--greese-shadow-md);
8595
+ translate: 0 -50%;
8596
+ transition: opacity var(--greese-duration-fast) var(--greese-easing-standard);
8597
+ }
8598
+ .greese-Carousel-control:focus-visible {
8599
+ outline: 2px solid var(--greese-color-focus-ring);
8600
+ outline-offset: 2px;
8601
+ }
8602
+ @media (pointer: coarse) {
8603
+ .greese-Carousel-control::after {
8604
+ position: absolute;
8605
+ top: 50%;
8606
+ left: 50%;
8607
+ inline-size: max(100%, 44px);
8608
+ block-size: max(100%, 44px);
8609
+ content: "";
8610
+ translate: -50% -50%;
8611
+ }
8612
+ }
8613
+ .greese-Carousel-control:disabled {
8614
+ pointer-events: none;
8615
+ cursor: default;
8616
+ opacity: 0;
8617
+ }
8618
+ .greese-Carousel-control > svg {
8619
+ inline-size: 1.125rem;
8620
+ block-size: 1.125rem;
8621
+ }
8622
+ .greese-Carousel:has(.greese-Carousel-indicators) {
8623
+ --greese-carousel-dots: calc(0.5rem + var(--greese-space-3));
8624
+ }
8625
+ .greese-Carousel-control--previous {
8626
+ inset-inline-start: var(--greese-space-2);
8627
+ }
8628
+ .greese-Carousel-control--next {
8629
+ inset-inline-end: var(--greese-space-2);
8630
+ }
8631
+ .greese-Carousel-control--next > svg {
8632
+ scale: -1 1;
8633
+ }
8634
+ .greese-Carousel-control:dir(rtl) > svg {
8635
+ scale: -1 1;
8636
+ }
8637
+ .greese-Carousel-control--next:dir(rtl) > svg {
8638
+ scale: 1;
8639
+ }
8640
+ .greese-Carousel-indicators {
8641
+ display: flex;
8642
+ flex-wrap: wrap;
8643
+ gap: var(--greese-space-1);
8644
+ justify-content: center;
8645
+ }
8646
+ .greese-Carousel-indicator {
8647
+ position: relative;
8648
+ inline-size: 1.5rem;
8649
+ block-size: 0.5rem;
8650
+ padding: 0;
8651
+ cursor: pointer;
8652
+ background: none;
8653
+ border: 0;
8654
+ }
8655
+ .greese-Carousel-indicator:focus-visible {
8656
+ outline: 2px solid var(--greese-color-focus-ring);
8657
+ outline-offset: 2px;
8658
+ }
8659
+ @media (pointer: coarse) {
8660
+ .greese-Carousel-indicator::after {
8661
+ position: absolute;
8662
+ top: 50%;
8663
+ left: 50%;
8664
+ inline-size: max(100%, 24px);
8665
+ block-size: max(100%, 24px);
8666
+ content: "";
8667
+ translate: -50% -50%;
8668
+ }
8669
+ }
8670
+ .greese-Carousel-indicator::before {
8671
+ position: absolute;
8672
+ inset: 0;
8673
+ content: "";
8674
+ background-color: var(--greese-color-border-strong);
8675
+ border-radius: var(--greese-corner-pill);
8676
+ clip-path: inset(0 calc(50% - 0.25rem) round var(--greese-corner-pill));
8677
+ transition: clip-path var(--greese-duration-normal) var(--greese-easing-standard), background-color var(--greese-duration-normal) var(--greese-easing-standard);
8678
+ }
8679
+ .greese-Carousel-indicator[aria-current=true]::before {
8680
+ background-color: var(--greese-color-primary);
8681
+ clip-path: inset(0 round var(--greese-corner-pill));
8682
+ }
8683
+ @keyframes greese-carousel-in {
8684
+ from {
8685
+ translate: calc(100% * var(--greese-carousel-way)) 0;
8686
+ }
8687
+ }
8688
+ }
8689
+ @layer greese.components {
8690
+ .greese-ChatBubble--neutral {
8691
+ --greese-chat-tone: var(--greese-color-fg);
8692
+ --greese-chat-tone-on: var(--greese-color-canvas);
8693
+ }
8694
+ .greese-ChatBubble--muted {
8695
+ --greese-chat-tone: var(--greese-color-fg-muted);
8074
8696
  --greese-chat-tone-on: var(--greese-color-canvas);
8075
8697
  }
8076
8698
  .greese-ChatBubble--primary {
@@ -8407,6 +9029,224 @@
8407
9029
  white-space: nowrap;
8408
9030
  }
8409
9031
  }
9032
+ /* stylelint-disable color-no-hex */
9033
+ @layer greese.components {
9034
+ .greese-EditableField {
9035
+ --greese-editablefield-dial: 2.25rem;
9036
+ box-sizing: border-box;
9037
+ display: flex;
9038
+ gap: var(--greese-space-2);
9039
+ align-items: center;
9040
+ min-inline-size: 0;
9041
+ }
9042
+ .greese-EditableField[data-disabled] {
9043
+ opacity: 0.55;
9044
+ }
9045
+ .greese-EditableField--row {
9046
+ justify-content: space-between;
9047
+ }
9048
+ .greese-EditableField--column {
9049
+ flex-direction: column;
9050
+ align-items: stretch;
9051
+ }
9052
+ .greese-EditableField-label {
9053
+ flex: none;
9054
+ color: var(--greese-color-fg-muted);
9055
+ overflow: hidden;
9056
+ text-overflow: ellipsis;
9057
+ white-space: nowrap;
9058
+ }
9059
+ .greese-EditableField--column > .greese-EditableField-label {
9060
+ align-self: start;
9061
+ }
9062
+ .greese-EditableField-control {
9063
+ flex: 1 1 auto;
9064
+ min-inline-size: 0;
9065
+ }
9066
+ .greese-EditableField--checkbox > .greese-EditableField-control,
9067
+ .greese-EditableField--switch > .greese-EditableField-control,
9068
+ .greese-EditableField--radio > .greese-EditableField-control,
9069
+ .greese-EditableField--segmented > .greese-EditableField-control {
9070
+ flex: 0 0 auto;
9071
+ }
9072
+ .greese-EditableField-number,
9073
+ .greese-EditableField-range,
9074
+ .greese-EditableField-knob {
9075
+ display: flex;
9076
+ gap: var(--greese-space-2);
9077
+ align-items: center;
9078
+ }
9079
+ .greese-EditableField-number > .greese-NumberField,
9080
+ .greese-EditableField-range > .greese-Slider,
9081
+ .greese-EditableField-knob > .greese-NumberField {
9082
+ flex: 1;
9083
+ min-inline-size: 0;
9084
+ }
9085
+ @media (pointer: coarse) {
9086
+ .greese-EditableField-clear::after {
9087
+ position: absolute;
9088
+ top: 50%;
9089
+ left: 50%;
9090
+ inline-size: max(100%, 44px);
9091
+ block-size: max(100%, 44px);
9092
+ content: "";
9093
+ translate: -50% -50%;
9094
+ }
9095
+ }
9096
+ .greese-EditableField-clear {
9097
+ position: relative;
9098
+ display: inline-grid;
9099
+ flex: none;
9100
+ place-items: center;
9101
+ inline-size: 1.25rem;
9102
+ block-size: 1.25rem;
9103
+ padding: 0;
9104
+ color: var(--greese-color-fg-muted);
9105
+ cursor: pointer;
9106
+ background: none;
9107
+ border: 0;
9108
+ border-radius: var(--greese-corner-round);
9109
+ }
9110
+ @media (hover: hover) {
9111
+ .greese-EditableField-clear:hover {
9112
+ color: var(--greese-color-fg);
9113
+ background-color: color-mix(in oklab, var(--greese-color-fg) 8%, transparent);
9114
+ }
9115
+ }
9116
+ .greese-EditableField-clear > svg {
9117
+ inline-size: 0.75rem;
9118
+ block-size: 0.75rem;
9119
+ }
9120
+ .greese-EditableField-textarea {
9121
+ position: relative;
9122
+ }
9123
+ .greese-EditableField-textarea > .greese-EditableField-clear {
9124
+ position: absolute;
9125
+ inset-block-start: var(--greese-space-1);
9126
+ inset-inline-end: var(--greese-space-1);
9127
+ }
9128
+ .greese-EditableField-textarea:has(> .greese-EditableField-clear) .greese-Textarea-control {
9129
+ padding-inline-end: 1.75rem;
9130
+ }
9131
+ .greese-EditableField-unit,
9132
+ .greese-EditableField-value {
9133
+ flex: none;
9134
+ font-variant-numeric: tabular-nums;
9135
+ color: var(--greese-color-fg-muted);
9136
+ }
9137
+ .greese-EditableField-value {
9138
+ min-inline-size: 3ch;
9139
+ text-align: end;
9140
+ }
9141
+ .greese-EditableField-swatch {
9142
+ inline-size: 100%;
9143
+ padding: 0;
9144
+ cursor: pointer;
9145
+ background: linear-gradient(var(--greese-editablefield-swatch), var(--greese-editablefield-swatch)), repeating-conic-gradient(#c8ccd2 0% 25%, #fff 0% 50%) 0 0/0.5rem 0.5rem;
9146
+ border: 0;
9147
+ border-radius: var(--greese-corner-inset);
9148
+ box-shadow: inset 0 0 0 1px var(--greese-color-border-strong);
9149
+ position: relative;
9150
+ min-inline-size: var(--greese-editablefield-height, 1.75rem);
9151
+ block-size: var(--greese-editablefield-height, 1.75rem);
9152
+ }
9153
+ @media (pointer: coarse) {
9154
+ .greese-EditableField-swatch::after {
9155
+ position: absolute;
9156
+ top: 50%;
9157
+ left: 50%;
9158
+ inline-size: max(100%, 44px);
9159
+ block-size: max(100%, 44px);
9160
+ content: "";
9161
+ translate: -50% -50%;
9162
+ }
9163
+ }
9164
+ .greese-EditableField-swatch:focus-visible {
9165
+ outline: 2px solid var(--greese-color-focus-ring);
9166
+ outline-offset: 2px;
9167
+ }
9168
+ .greese-EditableField-swatch:disabled {
9169
+ cursor: not-allowed;
9170
+ }
9171
+ .greese-EditableField-swatch[data-none] {
9172
+ background: linear-gradient(to top right, transparent calc(50% - 1px), var(--greese-color-negative) calc(50% - 1px), var(--greese-color-negative) calc(50% + 1px), transparent calc(50% + 1px)), var(--greese-color-surface);
9173
+ }
9174
+ .greese-EditableField-swatch[data-mixed] {
9175
+ background: var(--greese-color-track);
9176
+ box-shadow: inset 0 0 0 1px var(--greese-color-border-strong);
9177
+ opacity: 0.7;
9178
+ }
9179
+ .greese-EditableField-picker:popover-open {
9180
+ display: grid;
9181
+ gap: var(--greese-space-3);
9182
+ }
9183
+ .greese-EditableField-none {
9184
+ padding: var(--greese-space-2);
9185
+ font: inherit;
9186
+ color: var(--greese-color-fg);
9187
+ cursor: pointer;
9188
+ background: var(--greese-color-surface);
9189
+ border: 1px solid var(--greese-color-border);
9190
+ border-radius: var(--greese-corner-inset);
9191
+ }
9192
+ .greese-EditableField-none:hover {
9193
+ background: var(--greese-color-track);
9194
+ }
9195
+ .greese-EditableField-none:focus-visible {
9196
+ outline: 2px solid var(--greese-color-focus-ring);
9197
+ outline-offset: 2px;
9198
+ }
9199
+ .greese-EditableField-dial {
9200
+ position: relative;
9201
+ flex: none;
9202
+ inline-size: var(--greese-editablefield-dial);
9203
+ block-size: var(--greese-editablefield-dial);
9204
+ cursor: grab;
9205
+ background: var(--greese-color-track);
9206
+ border: 1px solid var(--greese-color-border);
9207
+ border-radius: var(--greese-corner-round);
9208
+ touch-action: none;
9209
+ }
9210
+ .greese-EditableField-dial:focus-visible {
9211
+ outline: 2px solid var(--greese-color-focus-ring);
9212
+ outline-offset: 2px;
9213
+ }
9214
+ .greese-EditableField-dial[aria-disabled=true] {
9215
+ cursor: not-allowed;
9216
+ }
9217
+ .greese-EditableField-dialDot {
9218
+ position: absolute;
9219
+ inset: 0;
9220
+ display: block;
9221
+ rotate: var(--greese-editablefield-angle, 0deg);
9222
+ }
9223
+ .greese-EditableField-dialDot::after {
9224
+ position: absolute;
9225
+ inset-block-start: 0.125rem;
9226
+ inset-inline-start: 50%;
9227
+ inline-size: 0.375rem;
9228
+ block-size: 0.375rem;
9229
+ content: "";
9230
+ background: var(--greese-color-primary);
9231
+ border-radius: var(--greese-corner-round);
9232
+ translate: -50% 0;
9233
+ }
9234
+ .greese-EditableField--size-xs {
9235
+ --greese-editablefield-height: 1.5rem;
9236
+ }
9237
+ .greese-EditableField--size-sm {
9238
+ --greese-editablefield-height: 2rem;
9239
+ }
9240
+ .greese-EditableField--size-md {
9241
+ --greese-editablefield-height: 2.5rem;
9242
+ }
9243
+ .greese-EditableField--size-lg {
9244
+ --greese-editablefield-height: 3rem;
9245
+ }
9246
+ .greese-EditableField--size-xl {
9247
+ --greese-editablefield-height: 4rem;
9248
+ }
9249
+ }
8410
9250
  @layer greese.components {
8411
9251
  .greese-Fieldset {
8412
9252
  box-sizing: border-box;
@@ -8601,7 +9441,7 @@
8601
9441
  max-inline-size: 100%;
8602
9442
  }
8603
9443
  .greese-OtpField--size-xs {
8604
- --greese-otp-size: 1rem;
9444
+ --greese-otp-size: 1.5rem;
8605
9445
  font-size: max(16px, var(--greese-type-p3-font-size));
8606
9446
  }
8607
9447
  .greese-OtpField--size-sm {