@greese/ui 1.0.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 (210) 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/PageTransition.css +12 -0
  24. package/dist/css/Radio.css +2 -2
  25. package/dist/css/ScrollCarousel.css +225 -0
  26. package/dist/css/SegmentedControl.css +2 -2
  27. package/dist/css/Select.css +3 -2
  28. package/dist/css/Slider.css +45 -5
  29. package/dist/css/Switch.css +6 -6
  30. package/dist/css/Text.css +14 -14
  31. package/dist/css/Textarea.css +1 -1
  32. package/dist/css/core.css +36 -6
  33. package/dist/css/resets.css +162 -0
  34. package/dist/css.d.ts +2 -0
  35. package/dist/css.js +2 -0
  36. package/dist/greese.css +990 -138
  37. package/dist/index.d.ts +2 -1
  38. package/dist/index.js +2 -1
  39. package/dist/scss/components/_Accordion.scss +2 -0
  40. package/dist/scss/components/_ActionSelect.scss +2 -0
  41. package/dist/scss/components/_Alert.scss +2 -0
  42. package/dist/scss/components/_AppBar.scss +2 -0
  43. package/dist/scss/components/_AspectRatio.scss +2 -0
  44. package/dist/scss/components/_AutoLayout.scss +2 -0
  45. package/dist/scss/components/_Avatar.scss +2 -0
  46. package/dist/scss/components/_Badge.scss +2 -0
  47. package/dist/scss/components/_Box.scss +2 -0
  48. package/dist/scss/components/_Breadcrumbs.scss +2 -0
  49. package/dist/scss/components/_Button.scss +2 -0
  50. package/dist/scss/components/_ButtonGroup.scss +2 -0
  51. package/dist/scss/components/_Card.scss +2 -0
  52. package/dist/scss/components/_Carousel.scss +2 -0
  53. package/dist/scss/components/_Center.scss +2 -0
  54. package/dist/scss/components/_ChatBubble.scss +2 -0
  55. package/dist/scss/components/_Checkbox.scss +2 -0
  56. package/dist/scss/components/_Chip.scss +2 -0
  57. package/dist/scss/components/_ChoiceGroup.scss +2 -0
  58. package/dist/scss/components/_Code.scss +2 -0
  59. package/dist/scss/components/_Collapsible.scss +2 -0
  60. package/dist/scss/components/_ColorPicker.scss +2 -0
  61. package/dist/scss/components/_Combobox.scss +2 -0
  62. package/dist/scss/components/_Container.scss +2 -0
  63. package/dist/scss/components/_Countdown.scss +2 -0
  64. package/dist/scss/components/_DateField.scss +2 -0
  65. package/dist/scss/components/_Dialog.scss +2 -0
  66. package/dist/scss/components/_Diff.scss +2 -0
  67. package/dist/scss/components/_Divider.scss +2 -0
  68. package/dist/scss/components/_Dock.scss +2 -0
  69. package/dist/scss/components/_EditableField.scss +2 -0
  70. package/dist/scss/components/_Field.scss +2 -0
  71. package/dist/scss/components/_Fieldset.scss +2 -0
  72. package/dist/scss/components/_FileInput.scss +2 -0
  73. package/dist/scss/components/_Footer.scss +2 -0
  74. package/dist/scss/components/_Grid.scss +2 -0
  75. package/dist/scss/components/_Header.scss +2 -0
  76. package/dist/scss/components/_Heading.scss +2 -0
  77. package/dist/scss/components/_Icon.scss +2 -0
  78. package/dist/scss/components/_IconButton.scss +2 -0
  79. package/dist/scss/components/_Image.scss +2 -0
  80. package/dist/scss/components/_Indicator.scss +2 -0
  81. package/dist/scss/components/_Input.scss +2 -0
  82. package/dist/scss/components/_Key.scss +2 -0
  83. package/dist/scss/components/_Link.scss +2 -0
  84. package/dist/scss/components/_List.scss +2 -0
  85. package/dist/scss/components/_Media.scss +2 -0
  86. package/dist/scss/components/_Menu.scss +2 -0
  87. package/dist/scss/components/_Motion.scss +2 -0
  88. package/dist/scss/components/_NumberField.scss +2 -0
  89. package/dist/scss/components/_NumberStepper.scss +2 -0
  90. package/dist/scss/components/_OtpField.scss +2 -0
  91. package/dist/scss/components/_PageTransition.scss +2 -0
  92. package/dist/scss/components/_Pagination.scss +2 -0
  93. package/dist/scss/components/_Popover.scss +2 -0
  94. package/dist/scss/components/_Progress.scss +2 -0
  95. package/dist/scss/components/_RadialProgress.scss +2 -0
  96. package/dist/scss/components/_Radio.scss +2 -0
  97. package/dist/scss/components/_Rating.scss +2 -0
  98. package/dist/scss/components/_ScrollCarousel.scss +2 -0
  99. package/dist/scss/components/_ScrollSpy.scss +2 -0
  100. package/dist/scss/components/_SegmentedControl.scss +2 -0
  101. package/dist/scss/components/_Select.scss +2 -0
  102. package/dist/scss/components/_Sidebar.scss +2 -0
  103. package/dist/scss/components/_Skeleton.scss +2 -0
  104. package/dist/scss/components/_Slider.scss +2 -0
  105. package/dist/scss/components/_Spacer.scss +2 -0
  106. package/dist/scss/components/_SpeedDial.scss +2 -0
  107. package/dist/scss/components/_Spinner.scss +2 -0
  108. package/dist/scss/components/_Stack.scss +2 -0
  109. package/dist/scss/components/_Stat.scss +2 -0
  110. package/dist/scss/components/_Status.scss +2 -0
  111. package/dist/scss/components/_Steps.scss +2 -0
  112. package/dist/scss/components/_Swap.scss +2 -0
  113. package/dist/scss/components/_Switch.scss +2 -0
  114. package/dist/scss/components/_Table.scss +2 -0
  115. package/dist/scss/components/_Tabs.scss +2 -0
  116. package/dist/scss/components/_Text.scss +2 -0
  117. package/dist/scss/components/_TextRotate.scss +2 -0
  118. package/dist/scss/components/_Textarea.scss +2 -0
  119. package/dist/scss/components/_ThemeProvider.scss +2 -0
  120. package/dist/scss/components/_Tile.scss +2 -0
  121. package/dist/scss/components/_Toast.scss +2 -0
  122. package/dist/scss/components/_ToggleButton.scss +2 -0
  123. package/dist/scss/components/_Tooltip.scss +2 -0
  124. package/dist/scss/components/_Type.scss +2 -0
  125. package/dist/scss/components/_Visibility.scss +2 -0
  126. package/dist/scss/components/_VisuallyHidden.scss +2 -0
  127. package/dist/shapes.d.ts +12 -1
  128. package/dist/shapes.js +11 -10
  129. package/dist/style-manifest.json +18837 -132
  130. package/dist/theme.js +6 -1
  131. package/dist/themeFiles/index.d.ts +9 -0
  132. package/dist/themeFiles/index.js +9 -0
  133. package/dist/themeFiles/scssModule.d.ts +100 -0
  134. package/dist/themeFiles/scssModule.js +384 -0
  135. package/dist/themeFiles/spec.d.ts +198 -0
  136. package/dist/themeFiles/spec.js +877 -0
  137. package/dist/tokens.css +30 -1
  138. package/dist/typography.js +1 -1
  139. package/dist/utilities.css +435 -0
  140. package/dist/utilities.d.ts +8 -0
  141. package/dist/utilities.js +75 -0
  142. package/package.json +20 -1
  143. package/src/components/AutoLayout/AutoLayout.scss +2 -26
  144. package/src/components/Carousel/Carousel.scss +122 -126
  145. package/src/components/Checkbox/Checkbox.scss +2 -2
  146. package/src/components/Chip/Chip.scss +63 -8
  147. package/src/components/ChoiceGroup/ChoiceGroup.scss +19 -1
  148. package/src/components/Collapsible/Collapsible.scss +3 -0
  149. package/src/components/ColorPicker/ColorPicker.scss +95 -0
  150. package/src/components/Combobox/Combobox.scss +4 -2
  151. package/src/components/Dialog/Dialog.scss +24 -7
  152. package/src/components/EditableField/EditableField.scss +275 -0
  153. package/src/components/Grid/Grid.scss +2 -70
  154. package/src/components/Input/Input.scss +29 -0
  155. package/src/components/Menu/Menu.scss +18 -0
  156. package/src/components/NumberField/NumberField.scss +56 -9
  157. package/src/components/NumberStepper/NumberStepper.scss +13 -0
  158. package/src/components/PageTransition/PageTransition.scss +29 -0
  159. package/src/components/Radio/Radio.scss +2 -2
  160. package/src/components/ScrollCarousel/ScrollCarousel.scss +142 -0
  161. package/src/components/Select/Select.scss +4 -0
  162. package/src/components/Slider/Slider.scss +51 -6
  163. package/src/components/Stack/Stack.scss +2 -48
  164. package/src/components/Switch/Switch.scss +9 -6
  165. package/src/components/Text/Text.scss +5 -2
  166. package/src/styles/_breakpoint-vars.scss +17 -11
  167. package/src/styles/_controls.scss +2 -2
  168. package/src/styles/_core.scss +1 -0
  169. package/src/styles/_kit.scss +483 -56
  170. package/src/styles/_layout-props.scss +197 -0
  171. package/src/styles/_manifest.scss +55 -25
  172. package/src/styles/_mixins.scss +53 -15
  173. package/src/styles/_slides.scss +112 -0
  174. package/src/styles/_utilities.scss +104 -0
  175. package/src/styles/breakpoints.test.ts +21 -1
  176. package/src/styles/entryPoints.test.ts +25 -2
  177. package/src/styles/index.scss +3 -1
  178. package/src/styles/kit.test.ts +171 -1
  179. package/src/styles/public/_breakpoints.scss +43 -0
  180. package/src/styles/public/_slides.scss +3 -0
  181. package/src/styles/public/_utilities.scss +3 -0
  182. package/src/styles/resets.scss +7 -0
  183. package/src/styles/utilities.test.ts +39 -0
  184. package/themes/bevel.css +187 -187
  185. package/themes/bevel.scss +960 -958
  186. package/themes/candy.css +87 -0
  187. package/themes/candy.scss +32 -0
  188. package/themes/extrude.css +42 -42
  189. package/themes/folio.css +200 -200
  190. package/themes/folio.scss +880 -878
  191. package/themes/forest.css +87 -0
  192. package/themes/forest.scss +32 -0
  193. package/themes/grape.css +87 -0
  194. package/themes/grape.scss +32 -0
  195. package/themes/greese.css +36 -0
  196. package/themes/greese.scss +21 -0
  197. package/themes/mono.css +87 -0
  198. package/themes/mono.scss +32 -0
  199. package/themes/ocean.css +87 -0
  200. package/themes/ocean.scss +32 -0
  201. package/themes/outline.css +18 -18
  202. package/themes/pebble.css +8 -8
  203. package/themes/ridge.css +188 -188
  204. package/themes/ridge.scss +820 -818
  205. package/themes/soft.css +11 -11
  206. package/themes/sunset.css +87 -0
  207. package/themes/sunset.scss +32 -0
  208. package/themes/ticket.css +180 -180
  209. package/themes/ticket.scss +881 -879
  210. package/themes/tilt.css +25 -25
@@ -0,0 +1,225 @@
1
+ @import './core.css';
2
+ @layer greese.components {
3
+ .greese-ScrollCarousel {
4
+ box-sizing: border-box;
5
+ position: relative;
6
+ display: grid;
7
+ gap: var(--greese-space-3);
8
+ min-inline-size: 0;
9
+ }
10
+ .greese-ScrollCarousel-viewport {
11
+ --greese-scrollcarousel-per-view: 1;
12
+ --greese-scrollcarousel-gap: var(--greese-space-3);
13
+ display: flex;
14
+ gap: var(--greese-scrollcarousel-gap);
15
+ overflow-x: auto;
16
+ overscroll-behavior-x: contain;
17
+ scroll-snap-type: x mandatory;
18
+ scrollbar-width: none;
19
+ border-radius: var(--greese-corner-panel);
20
+ }
21
+ .greese-ScrollCarousel-viewport::-webkit-scrollbar {
22
+ display: none;
23
+ }
24
+ .greese-ScrollCarousel-viewport:focus-visible {
25
+ outline: 2px solid var(--greese-color-focus-ring);
26
+ outline-offset: 2px;
27
+ }
28
+ @media (prefers-reduced-motion: no-preference) {
29
+ .greese-ScrollCarousel-viewport {
30
+ scroll-behavior: smooth;
31
+ }
32
+ }
33
+ .greese-ScrollCarousel--vertical > .greese-ScrollCarousel-viewport {
34
+ flex-direction: column;
35
+ block-size: var(--greese-scrollcarousel-size, 20rem);
36
+ overflow: hidden auto;
37
+ overscroll-behavior: auto contain;
38
+ scroll-snap-type: y mandatory;
39
+ }
40
+ .greese-ScrollCarouselSlide {
41
+ --greese-scrollcarousel-gaps: calc(
42
+ (var(--greese-scrollcarousel-per-view) - 1) * var(--greese-scrollcarousel-gap)
43
+ );
44
+ flex: 0 0 calc((100% - var(--greese-scrollcarousel-gaps)) / var(--greese-scrollcarousel-per-view));
45
+ min-inline-size: 0;
46
+ scroll-snap-align: start;
47
+ }
48
+ .greese-ScrollCarousel-control {
49
+ position: absolute;
50
+ inset-block-start: calc(50% - 1.25rem - var(--greese-scrollcarousel-dots, 0px) / 2);
51
+ display: inline-grid;
52
+ place-items: center;
53
+ inline-size: 2.5rem;
54
+ block-size: 2.5rem;
55
+ padding: 0;
56
+ color: var(--greese-color-fg);
57
+ cursor: pointer;
58
+ background-color: color-mix(in oklab, var(--greese-color-surface-overlay) 88%, transparent);
59
+ border: 1px solid var(--greese-color-border);
60
+ border-radius: var(--greese-corner-round);
61
+ box-shadow: var(--greese-shadow-md);
62
+ translate: 0 -50%;
63
+ transition: opacity var(--greese-duration-fast) var(--greese-easing-standard);
64
+ }
65
+ .greese-ScrollCarousel-control:focus-visible {
66
+ outline: 2px solid var(--greese-color-focus-ring);
67
+ outline-offset: 2px;
68
+ }
69
+ @media (pointer: coarse) {
70
+ .greese-ScrollCarousel-control::after {
71
+ position: absolute;
72
+ top: 50%;
73
+ left: 50%;
74
+ inline-size: max(100%, 44px);
75
+ block-size: max(100%, 44px);
76
+ content: "";
77
+ translate: -50% -50%;
78
+ }
79
+ }
80
+ .greese-ScrollCarousel-control:disabled {
81
+ pointer-events: none;
82
+ cursor: default;
83
+ opacity: 0;
84
+ }
85
+ .greese-ScrollCarousel-control > svg {
86
+ inline-size: 1.125rem;
87
+ block-size: 1.125rem;
88
+ }
89
+ .greese-ScrollCarousel:has(.greese-ScrollCarousel-indicators) {
90
+ --greese-scrollcarousel-dots: calc(0.5rem + var(--greese-space-3));
91
+ }
92
+ .greese-ScrollCarousel-control--previous {
93
+ inset-inline-start: var(--greese-space-2);
94
+ }
95
+ .greese-ScrollCarousel-control--next {
96
+ inset-inline-end: var(--greese-space-2);
97
+ }
98
+ .greese-ScrollCarousel-control--next > svg {
99
+ scale: -1 1;
100
+ }
101
+ .greese-ScrollCarousel-control:dir(rtl) > svg {
102
+ scale: -1 1;
103
+ }
104
+ .greese-ScrollCarousel-control--next:dir(rtl) > svg {
105
+ scale: 1;
106
+ }
107
+ .greese-ScrollCarousel-indicators {
108
+ display: flex;
109
+ flex-wrap: wrap;
110
+ gap: var(--greese-space-1);
111
+ justify-content: center;
112
+ }
113
+ .greese-ScrollCarousel-indicator {
114
+ position: relative;
115
+ inline-size: 1.5rem;
116
+ block-size: 0.5rem;
117
+ padding: 0;
118
+ cursor: pointer;
119
+ background: none;
120
+ border: 0;
121
+ }
122
+ .greese-ScrollCarousel-indicator:focus-visible {
123
+ outline: 2px solid var(--greese-color-focus-ring);
124
+ outline-offset: 2px;
125
+ }
126
+ @media (pointer: coarse) {
127
+ .greese-ScrollCarousel-indicator::after {
128
+ position: absolute;
129
+ top: 50%;
130
+ left: 50%;
131
+ inline-size: max(100%, 24px);
132
+ block-size: max(100%, 24px);
133
+ content: "";
134
+ translate: -50% -50%;
135
+ }
136
+ }
137
+ .greese-ScrollCarousel-indicator::before {
138
+ position: absolute;
139
+ inset: 0;
140
+ content: "";
141
+ background-color: var(--greese-color-border-strong);
142
+ border-radius: var(--greese-corner-pill);
143
+ clip-path: inset(0 calc(50% - 0.25rem) round var(--greese-corner-pill));
144
+ transition: clip-path var(--greese-duration-normal) var(--greese-easing-standard), background-color var(--greese-duration-normal) var(--greese-easing-standard);
145
+ }
146
+ .greese-ScrollCarousel-indicator[aria-current=true]::before {
147
+ background-color: var(--greese-color-primary);
148
+ clip-path: inset(0 round var(--greese-corner-pill));
149
+ }
150
+ .greese-ScrollCarousel--vertical > .greese-ScrollCarousel-control {
151
+ inset-inline: 0;
152
+ margin-inline: auto;
153
+ translate: none;
154
+ }
155
+ .greese-ScrollCarousel--vertical > .greese-ScrollCarousel-control > svg {
156
+ rotate: 90deg;
157
+ scale: 1;
158
+ }
159
+ .greese-ScrollCarousel--vertical > .greese-ScrollCarousel-control--previous {
160
+ inset-block-start: var(--greese-space-2);
161
+ }
162
+ .greese-ScrollCarousel--vertical > .greese-ScrollCarousel-control--next {
163
+ inset-block: auto calc(var(--greese-space-2) + var(--greese-scrollcarousel-dots, 0px));
164
+ }
165
+ .greese-ScrollCarousel--vertical > .greese-ScrollCarousel-control--next > svg {
166
+ rotate: -90deg;
167
+ }
168
+ .greese-ScrollCarousel--strip {
169
+ gap: 0;
170
+ }
171
+ .greese-ScrollCarousel--strip > .greese-ScrollCarousel-viewport {
172
+ --greese-scrollcarousel-gap: var(--greese-space-1);
173
+ align-items: center;
174
+ scroll-snap-type: none;
175
+ border-radius: 0;
176
+ }
177
+ .greese-ScrollCarousel--strip > .greese-ScrollCarousel-control {
178
+ inset-block-start: 50%;
179
+ inline-size: 1.5rem;
180
+ block-size: 1.5rem;
181
+ box-shadow: var(--greese-shadow-sm);
182
+ }
183
+ .greese-ScrollCarousel--strip > .greese-ScrollCarousel-control > svg {
184
+ inline-size: 0.875rem;
185
+ block-size: 0.875rem;
186
+ }
187
+ .greese-ScrollCarousel--strip > .greese-ScrollCarousel-control--previous {
188
+ inset-inline-start: 0;
189
+ }
190
+ .greese-ScrollCarousel--strip > .greese-ScrollCarousel-control--next {
191
+ inset-inline-end: 0;
192
+ }
193
+ .greese-ScrollCarousel--strip > .greese-ScrollCarousel-viewport > .greese-ScrollCarouselSlide {
194
+ flex: none;
195
+ scroll-snap-align: none;
196
+ }
197
+ @media (hover: none) {
198
+ .greese-ScrollCarousel-control {
199
+ display: none;
200
+ }
201
+ }
202
+ .greese-ScrollCarousel--xs-per-view {
203
+ --greese-scrollcarousel-per-view: var(--greese-scrollcarousel-per-view-xs);
204
+ }
205
+ @media (width >= 600px) {
206
+ .greese-ScrollCarousel--sm-per-view {
207
+ --greese-scrollcarousel-per-view: var(--greese-scrollcarousel-per-view-sm);
208
+ }
209
+ }
210
+ @media (width >= 900px) {
211
+ .greese-ScrollCarousel--md-per-view {
212
+ --greese-scrollcarousel-per-view: var(--greese-scrollcarousel-per-view-md);
213
+ }
214
+ }
215
+ @media (width >= 1200px) {
216
+ .greese-ScrollCarousel--lg-per-view {
217
+ --greese-scrollcarousel-per-view: var(--greese-scrollcarousel-per-view-lg);
218
+ }
219
+ }
220
+ @media (width >= 1536px) {
221
+ .greese-ScrollCarousel--xl-per-view {
222
+ --greese-scrollcarousel-per-view: var(--greese-scrollcarousel-per-view-xl);
223
+ }
224
+ }
225
+ }
@@ -24,8 +24,8 @@
24
24
  border-radius: var(--greese-corner-control);
25
25
  }
26
26
  .greese-SegmentedControl--size-xs {
27
- --greese-button-height: 1rem;
28
- --greese-button-padding: var(--greese-space-1);
27
+ --greese-button-height: 1.5rem;
28
+ --greese-button-padding: var(--greese-space-2);
29
29
  font-size: var(--greese-type-p3-font-size);
30
30
  }
31
31
  .greese-SegmentedControl--size-sm {
@@ -36,6 +36,7 @@
36
36
  min-inline-size: 0;
37
37
  padding-inline: var(--greese-select-padding) calc(var(--greese-select-padding) + 1.5em);
38
38
  font: inherit;
39
+ line-height: 1.25;
39
40
  color: inherit;
40
41
  cursor: pointer;
41
42
  background: none;
@@ -63,8 +64,8 @@
63
64
  translate: 0 -0.15em;
64
65
  }
65
66
  .greese-Select--size-xs {
66
- --greese-select-height: 1rem;
67
- --greese-select-padding: var(--greese-space-1);
67
+ --greese-select-height: 1.5rem;
68
+ --greese-select-padding: var(--greese-space-2);
68
69
  font-size: var(--greese-type-p3-font-size);
69
70
  }
70
71
  @media (pointer: coarse) {
@@ -1,8 +1,53 @@
1
1
  @import './core.css';
2
2
  /* stylelint-disable selector-no-vendor-prefix */
3
3
  @layer greese.components {
4
+ .greese-Slider--size-xs {
5
+ --greese-slider-thumb: calc(1.5rem * 0.5);
6
+ }
7
+ .greese-Slider--size-sm {
8
+ --greese-slider-thumb: calc(2rem * 0.5);
9
+ }
10
+ .greese-Slider--size-md {
11
+ --greese-slider-thumb: calc(2.5rem * 0.5);
12
+ }
13
+ .greese-Slider--size-lg {
14
+ --greese-slider-thumb: calc(3rem * 0.5);
15
+ }
16
+ .greese-Slider--size-xl {
17
+ --greese-slider-thumb: calc(4rem * 0.5);
18
+ }
19
+ .greese-Slider-wrap {
20
+ --greese-slider-thumb: 1.25rem;
21
+ }
22
+ @media (pointer: coarse) {
23
+ .greese-Slider-wrap {
24
+ --greese-slider-thumb: 1.75rem;
25
+ }
26
+ }
27
+ .greese-Slider-wrap {
28
+ position: relative;
29
+ display: block;
30
+ }
31
+ .greese-Slider-thumbAnchor {
32
+ --greese-slider-travel: calc(100% - var(--greese-slider-thumb));
33
+ --greese-slider-offset: calc(
34
+ var(--greese-slider-travel) * var(--greese-slider-ratio, 0)
35
+ );
36
+ position: absolute;
37
+ inset-block-start: 0;
38
+ inset-inline-start: calc(var(--greese-slider-thumb) / 2 + var(--greese-slider-offset));
39
+ inline-size: 0;
40
+ block-size: var(--greese-slider-thumb);
41
+ }
4
42
  .greese-Slider {
5
43
  --greese-slider-thumb: 1.25rem;
44
+ }
45
+ @media (pointer: coarse) {
46
+ .greese-Slider {
47
+ --greese-slider-thumb: 1.75rem;
48
+ }
49
+ }
50
+ .greese-Slider {
6
51
  --greese-slider-towards: right;
7
52
  box-sizing: border-box;
8
53
  display: block;
@@ -16,11 +61,6 @@
16
61
  .greese-Slider:dir(rtl) {
17
62
  --greese-slider-towards: left;
18
63
  }
19
- @media (pointer: coarse) {
20
- .greese-Slider {
21
- --greese-slider-thumb: 1.75rem;
22
- }
23
- }
24
64
  .greese-Slider:focus-visible {
25
65
  outline: none;
26
66
  }
@@ -5,8 +5,8 @@
5
5
  display: inline-flex;
6
6
  flex-shrink: 0;
7
7
  align-items: center;
8
- inline-size: 2.25rem;
9
- block-size: 1.25rem;
8
+ inline-size: calc(var(--greese-choice-box, 1.125rem) * 2);
9
+ block-size: calc(var(--greese-choice-box, 1.125rem) * 1.111);
10
10
  margin-block: calc((1lh - 1.25rem) / 2);
11
11
  }
12
12
  @media (pointer: coarse) {
@@ -48,8 +48,8 @@
48
48
  }
49
49
  .greese-Switch-thumb {
50
50
  position: relative;
51
- inline-size: 1rem;
52
- block-size: 1rem;
51
+ inline-size: calc(var(--greese-choice-box, 1.125rem) * 0.889);
52
+ block-size: calc(var(--greese-choice-box, 1.125rem) * 0.889);
53
53
  margin-inline-start: 0.125rem;
54
54
  pointer-events: none;
55
55
  background-color: var(--greese-color-canvas);
@@ -58,9 +58,9 @@
58
58
  transition: translate var(--greese-duration-fast) var(--greese-easing-standard);
59
59
  }
60
60
  .greese-Switch-input:checked + .greese-Switch-thumb {
61
- translate: 1rem 0;
61
+ translate: calc(125% - 0.25rem) 0;
62
62
  }
63
63
  .greese-Switch-input:checked + .greese-Switch-thumb:dir(rtl) {
64
- translate: -1rem 0;
64
+ translate: calc(0.25rem - 125%) 0;
65
65
  }
66
66
  }
package/dist/css/Text.css CHANGED
@@ -3,46 +3,46 @@
3
3
  .greese-Text {
4
4
  margin: 0;
5
5
  }
6
- .greese-Text--regular {
6
+ .greese-Text.greese-Text--regular {
7
7
  font-weight: var(--greese-font-weight-regular);
8
8
  }
9
- .greese-Text--medium {
9
+ .greese-Text.greese-Text--medium {
10
10
  font-weight: var(--greese-font-weight-medium);
11
11
  }
12
- .greese-Text--semibold {
12
+ .greese-Text.greese-Text--semibold {
13
13
  font-weight: var(--greese-font-weight-semibold);
14
14
  }
15
- .greese-Text--bold {
15
+ .greese-Text.greese-Text--bold {
16
16
  font-weight: var(--greese-font-weight-bold);
17
17
  }
18
- .greese-Text--neutral {
18
+ .greese-Text.greese-Text--neutral {
19
19
  color: var(--greese-color-fg);
20
20
  }
21
- .greese-Text--muted {
21
+ .greese-Text.greese-Text--muted {
22
22
  color: var(--greese-color-fg-muted);
23
23
  }
24
- .greese-Text--primary {
24
+ .greese-Text.greese-Text--primary {
25
25
  color: var(--greese-color-primary);
26
26
  }
27
- .greese-Text--secondary {
27
+ .greese-Text.greese-Text--secondary {
28
28
  color: var(--greese-color-secondary);
29
29
  }
30
- .greese-Text--tertiary {
30
+ .greese-Text.greese-Text--tertiary {
31
31
  color: var(--greese-color-tertiary);
32
32
  }
33
- .greese-Text--accent {
33
+ .greese-Text.greese-Text--accent {
34
34
  color: var(--greese-color-accent);
35
35
  }
36
- .greese-Text--positive {
36
+ .greese-Text.greese-Text--positive {
37
37
  color: var(--greese-color-positive);
38
38
  }
39
- .greese-Text--negative {
39
+ .greese-Text.greese-Text--negative {
40
40
  color: var(--greese-color-negative);
41
41
  }
42
- .greese-Text--warning {
42
+ .greese-Text.greese-Text--warning {
43
43
  color: var(--greese-color-warning);
44
44
  }
45
- .greese-Text--info {
45
+ .greese-Text.greese-Text--info {
46
46
  color: var(--greese-color-info);
47
47
  }
48
48
  .greese-Text--truncate {
@@ -60,7 +60,7 @@
60
60
  }
61
61
  }
62
62
  .greese-Textarea--size-xs {
63
- --greese-textarea-padding: var(--greese-space-1);
63
+ --greese-textarea-padding: var(--greese-space-2);
64
64
  font-size: var(--greese-type-p3-font-size);
65
65
  }
66
66
  @media (pointer: coarse) {
package/dist/css/core.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
  }
@@ -0,0 +1,162 @@
1
+ @layer greese.reset, greese.tokens, greese.theme, greese.base, greese.components, greese.overrides, greese.utilities;
2
+ @layer greese.overrides {
3
+ .greese-reset-color,
4
+ .greese-reset {
5
+ --greese-color-canvas: light-dark(#ffffff, #11171c);
6
+ --greese-color-surface: light-dark(#f5f7f9, #2a333c);
7
+ --greese-color-surface-overlay: light-dark(#ffffff, #3c4854);
8
+ --greese-color-fg: light-dark(#11171c, #e9edf2);
9
+ --greese-color-fg-muted: light-dark(#505e6d, #a3b3c4);
10
+ --greese-color-border: light-dark(#d7dfe7, #3c4854);
11
+ --greese-color-border-strong: light-dark(#a3b3c4, #505e6d);
12
+ --greese-color-track: light-dark(#d7dfe7, #687889);
13
+ --greese-color-primary: light-dark(#2771e0, #81b2ff);
14
+ --greese-color-primary-strong: light-dark(#1356b8, #aaccff);
15
+ --greese-color-primary-content: light-dark(#ffffff, #11171c);
16
+ --greese-color-secondary: light-dark(#7e5bd0, #b69fff);
17
+ --greese-color-secondary-strong: light-dark(#6443ab, #cdbfff);
18
+ --greese-color-secondary-content: light-dark(#ffffff, #11171c);
19
+ --greese-color-tertiary: light-dark(#007069, #5dcec5);
20
+ --greese-color-tertiary-strong: light-dark(#00544f, #94e1da);
21
+ --greese-color-tertiary-content: light-dark(#ffffff, #11171c);
22
+ --greese-color-accent: light-dark(#c13b7b, #ff81b6);
23
+ --greese-color-accent-strong: light-dark(#9c2661, #ffaecd);
24
+ --greese-color-accent-content: light-dark(#ffffff, #11171c);
25
+ --greese-color-focus-ring: light-dark(var(--greese-color-primary), var(--greese-color-primary-strong));
26
+ --greese-color-positive: light-dark(#007231, #61cf7e);
27
+ --greese-color-negative: light-dark(#ae0914, #ff8b7f);
28
+ --greese-color-negative-content: light-dark(#ffffff, #11171c);
29
+ --greese-color-warning: light-dark(#8a5f00, #feb93d);
30
+ --greese-color-info: light-dark(#00668f, #5ac0f7);
31
+ --greese-color-white: light-dark(#ffffff, #ffffff);
32
+ --greese-color-black: light-dark(#000000, #000000);
33
+ --greese-color-scrim: light-dark(color-mix(in srgb, var(--greese-color-black) 45%, transparent), color-mix(in srgb, var(--greese-color-black) 60%, transparent));
34
+ }
35
+ .greese-reset-shape,
36
+ .greese-reset {
37
+ --greese-radius-none: 0;
38
+ --greese-radius-sm: 4px;
39
+ --greese-radius-md: 8px;
40
+ --greese-radius-lg: 16px;
41
+ --greese-radius-xl: 24px;
42
+ --greese-radius-pill: 999px;
43
+ --greese-radius-round: 50%;
44
+ --greese-corner-control: var(--greese-radius-md);
45
+ --greese-corner-field: var(--greese-radius-md);
46
+ --greese-corner-surface: var(--greese-radius-lg);
47
+ --greese-corner-panel: var(--greese-radius-md);
48
+ --greese-corner-inset: var(--greese-radius-sm);
49
+ --greese-corner-pill: var(--greese-radius-pill);
50
+ --greese-corner-round: var(--greese-radius-round);
51
+ }
52
+ .greese-reset-motion,
53
+ .greese-reset {
54
+ --greese-motion-duration: initial;
55
+ --greese-motion-delay: initial;
56
+ --greese-motion-ease: initial;
57
+ --greese-motion-distance: initial;
58
+ --greese-motion-stagger: initial;
59
+ --greese-motion-theme: initial;
60
+ --greese-motion-content: initial;
61
+ --greese-motion-rows: initial;
62
+ --greese-motion-toast: initial;
63
+ --greese-motion-backdrop: initial;
64
+ --greese-motion-overlay: initial;
65
+ --greese-motion-dialog: initial;
66
+ --greese-motion-popover: initial;
67
+ --greese-motion-tooltip: initial;
68
+ --greese-motion-drawer: initial;
69
+ --greese-motion-carousel: initial;
70
+ --greese-motion-carousel-back: initial;
71
+ --greese-motion-overlay-exit-translate: initial;
72
+ --greese-motion-overlay-exit-scale: initial;
73
+ --greese-motion-overlay-exit-opacity: initial;
74
+ --greese-motion-overlay-exit-mask-image: initial;
75
+ --greese-motion-overlay-exit-transform: initial;
76
+ --greese-motion-overlay-exit-mask-size: initial;
77
+ --greese-motion-overlay-exit-mask-repeat: initial;
78
+ --greese-motion-overlay-exit-mask-position: initial;
79
+ --greese-motion-overlay-exit-mask-from: initial;
80
+ --greese-motion-overlay-exit-transform-origin: initial;
81
+ --greese-motion-dialog-exit-translate: initial;
82
+ --greese-motion-dialog-exit-scale: initial;
83
+ --greese-motion-dialog-exit-opacity: initial;
84
+ --greese-motion-dialog-exit-mask-image: initial;
85
+ --greese-motion-dialog-exit-transform: initial;
86
+ --greese-motion-dialog-exit-mask-size: initial;
87
+ --greese-motion-dialog-exit-mask-repeat: initial;
88
+ --greese-motion-dialog-exit-mask-position: initial;
89
+ --greese-motion-dialog-exit-mask-from: initial;
90
+ --greese-motion-dialog-exit-transform-origin: initial;
91
+ --greese-motion-popover-exit-translate: initial;
92
+ --greese-motion-popover-exit-scale: initial;
93
+ --greese-motion-popover-exit-opacity: initial;
94
+ --greese-motion-popover-exit-mask-image: initial;
95
+ --greese-motion-popover-exit-transform: initial;
96
+ --greese-motion-popover-exit-mask-size: initial;
97
+ --greese-motion-popover-exit-mask-repeat: initial;
98
+ --greese-motion-popover-exit-mask-position: initial;
99
+ --greese-motion-popover-exit-mask-from: initial;
100
+ --greese-motion-popover-exit-transform-origin: initial;
101
+ --greese-motion-tooltip-exit-translate: initial;
102
+ --greese-motion-tooltip-exit-scale: initial;
103
+ --greese-motion-tooltip-exit-opacity: initial;
104
+ --greese-motion-tooltip-exit-mask-image: initial;
105
+ --greese-motion-tooltip-exit-transform: initial;
106
+ --greese-motion-tooltip-exit-mask-size: initial;
107
+ --greese-motion-tooltip-exit-mask-repeat: initial;
108
+ --greese-motion-tooltip-exit-mask-position: initial;
109
+ --greese-motion-tooltip-exit-mask-from: initial;
110
+ --greese-motion-tooltip-exit-transform-origin: initial;
111
+ --greese-motion-drawer-exit-translate: initial;
112
+ --greese-motion-drawer-exit-scale: initial;
113
+ --greese-motion-drawer-exit-opacity: initial;
114
+ --greese-motion-drawer-exit-mask-image: initial;
115
+ --greese-motion-drawer-exit-transform: initial;
116
+ --greese-motion-drawer-exit-mask-size: initial;
117
+ --greese-motion-drawer-exit-mask-repeat: initial;
118
+ --greese-motion-drawer-exit-mask-position: initial;
119
+ --greese-motion-drawer-exit-mask-from: initial;
120
+ --greese-motion-drawer-exit-transform-origin: initial;
121
+ --greese-motion-carousel-exit-translate: initial;
122
+ --greese-motion-carousel-exit-scale: initial;
123
+ --greese-motion-carousel-exit-opacity: initial;
124
+ --greese-motion-carousel-exit-mask-image: initial;
125
+ --greese-motion-carousel-exit-transform: initial;
126
+ --greese-motion-carousel-exit-mask-size: initial;
127
+ --greese-motion-carousel-exit-mask-repeat: initial;
128
+ --greese-motion-carousel-exit-mask-position: initial;
129
+ --greese-motion-carousel-exit-mask-from: initial;
130
+ --greese-motion-carousel-exit-transform-origin: initial;
131
+ --greese-motion-carousel-back-exit-translate: initial;
132
+ --greese-motion-carousel-back-exit-scale: initial;
133
+ --greese-motion-carousel-back-exit-opacity: initial;
134
+ --greese-motion-carousel-back-exit-mask-image: initial;
135
+ --greese-motion-carousel-back-exit-transform: initial;
136
+ --greese-motion-carousel-back-exit-mask-size: initial;
137
+ --greese-motion-carousel-back-exit-mask-repeat: initial;
138
+ --greese-motion-carousel-back-exit-mask-position: initial;
139
+ --greese-motion-carousel-back-exit-mask-from: initial;
140
+ --greese-motion-carousel-back-exit-transform-origin: initial;
141
+ --greese-motion-content-duration: initial;
142
+ --greese-motion-rows-duration: initial;
143
+ --greese-motion-overlay-duration: initial;
144
+ --greese-motion-toast-duration: initial;
145
+ --greese-motion-backdrop-duration: initial;
146
+ --greese-motion-exit-duration: initial;
147
+ --greese-motion-carousel-duration: initial;
148
+ --greese-motion-page-duration: initial;
149
+ --greese-motion-share-duration: initial;
150
+ --greese-motion-enter-ease: initial;
151
+ --greese-motion-exit-ease: initial;
152
+ --greese-motion-page-ease: initial;
153
+ --greese-motion-share-ease: initial;
154
+ --greese-motion-page: initial;
155
+ --greese-motion-page-back: initial;
156
+ --greese-motion-page-exit: initial;
157
+ --greese-motion-page-back-exit: initial;
158
+ --greese-motion-page-stagger: initial;
159
+ --greese-motion-page-exit-order: initial;
160
+ --greese-motion-page-mode: initial;
161
+ }
162
+ }
package/dist/css.d.ts CHANGED
@@ -17,6 +17,8 @@ import { type ScalarGroup } from './tokens.ts';
17
17
  export declare const LAYER_ORDER = "@layer greese.reset, greese.tokens, greese.theme, greese.base, greese.components, greese.overrides, greese.utilities;";
18
18
  export declare const SCHEME_ATTR = "data-greese-scheme";
19
19
  export declare const THEME_ATTR = "data-greese-theme";
20
+ /** Set to `reduce` (ThemeProvider's `motion`), reduces motion in a subtree whatever the system says. */
21
+ export declare const MOTION_ATTR = "data-greese-motion";
20
22
  import { kebab } from './kebab.ts';
21
23
  export { kebab };
22
24
  /** The custom property for a token: `cssVar('lineHeight', 'tight')` -> `--greese-line-height-tight`. */
package/dist/css.js CHANGED
@@ -17,6 +17,8 @@ import { duration } from "./tokens.js";
17
17
  export const LAYER_ORDER = '@layer greese.reset, greese.tokens, greese.theme, greese.base, greese.components, greese.overrides, greese.utilities;';
18
18
  export const SCHEME_ATTR = 'data-greese-scheme';
19
19
  export const THEME_ATTR = 'data-greese-theme';
20
+ /** Set to `reduce` (ThemeProvider's `motion`), reduces motion in a subtree whatever the system says. */
21
+ export const MOTION_ATTR = 'data-greese-motion';
20
22
  import { kebab } from "./kebab.js";
21
23
  export { kebab };
22
24
  /** The custom property for a token: `cssVar('lineHeight', 'tight')` -> `--greese-line-height-tight`. */