@orz/ui 0.0.0-stage → 0.0.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 (270) hide show
  1. package/LICENSE +29 -0
  2. package/README.md +541 -2
  3. package/dist/components/avatar.d.ts +14 -0
  4. package/dist/components/avatar.d.ts.map +1 -0
  5. package/dist/components/avatar.js +23 -0
  6. package/dist/components/avatar.js.map +1 -0
  7. package/dist/components/badge.d.ts +10 -0
  8. package/dist/components/badge.d.ts.map +1 -0
  9. package/dist/components/badge.js +26 -0
  10. package/dist/components/badge.js.map +1 -0
  11. package/dist/components/button.d.ts +11 -0
  12. package/dist/components/button.d.ts.map +1 -0
  13. package/dist/components/button.js +40 -0
  14. package/dist/components/button.js.map +1 -0
  15. package/dist/components/card.d.ts +12 -0
  16. package/dist/components/card.d.ts.map +1 -0
  17. package/dist/components/card.js +25 -0
  18. package/dist/components/card.js.map +1 -0
  19. package/dist/components/color-picker.d.ts +58 -0
  20. package/dist/components/color-picker.d.ts.map +1 -0
  21. package/dist/components/color-picker.js +950 -0
  22. package/dist/components/color-picker.js.map +1 -0
  23. package/dist/components/confirm-dialog.d.ts +26 -0
  24. package/dist/components/confirm-dialog.d.ts.map +1 -0
  25. package/dist/components/confirm-dialog.js +18 -0
  26. package/dist/components/confirm-dialog.js.map +1 -0
  27. package/dist/components/dialog.d.ts +26 -0
  28. package/dist/components/dialog.d.ts.map +1 -0
  29. package/dist/components/dialog.js +149 -0
  30. package/dist/components/dialog.js.map +1 -0
  31. package/dist/components/dropdown-menu.d.ts +30 -0
  32. package/dist/components/dropdown-menu.d.ts.map +1 -0
  33. package/dist/components/dropdown-menu.js +100 -0
  34. package/dist/components/dropdown-menu.js.map +1 -0
  35. package/dist/components/filter-menu.d.ts +98 -0
  36. package/dist/components/filter-menu.d.ts.map +1 -0
  37. package/dist/components/filter-menu.js +745 -0
  38. package/dist/components/filter-menu.js.map +1 -0
  39. package/dist/components/highlighted-input.d.ts +40 -0
  40. package/dist/components/highlighted-input.d.ts.map +1 -0
  41. package/dist/components/highlighted-input.js +95 -0
  42. package/dist/components/highlighted-input.js.map +1 -0
  43. package/dist/components/hover-card.d.ts +7 -0
  44. package/dist/components/hover-card.d.ts.map +1 -0
  45. package/dist/components/hover-card.js +22 -0
  46. package/dist/components/hover-card.js.map +1 -0
  47. package/dist/components/input.d.ts +4 -0
  48. package/dist/components/input.d.ts.map +1 -0
  49. package/dist/components/input.js +7 -0
  50. package/dist/components/input.js.map +1 -0
  51. package/dist/components/label.d.ts +5 -0
  52. package/dist/components/label.d.ts.map +1 -0
  53. package/dist/components/label.js +8 -0
  54. package/dist/components/label.js.map +1 -0
  55. package/dist/components/link-chip.d.ts +67 -0
  56. package/dist/components/link-chip.d.ts.map +1 -0
  57. package/dist/components/link-chip.js +71 -0
  58. package/dist/components/link-chip.js.map +1 -0
  59. package/dist/components/load-failure.d.ts +24 -0
  60. package/dist/components/load-failure.d.ts.map +1 -0
  61. package/dist/components/load-failure.js +27 -0
  62. package/dist/components/load-failure.js.map +1 -0
  63. package/dist/components/load-more.d.ts +15 -0
  64. package/dist/components/load-more.d.ts.map +1 -0
  65. package/dist/components/load-more.js +25 -0
  66. package/dist/components/load-more.js.map +1 -0
  67. package/dist/components/media-controls.d.ts +50 -0
  68. package/dist/components/media-controls.d.ts.map +1 -0
  69. package/dist/components/media-controls.js +71 -0
  70. package/dist/components/media-controls.js.map +1 -0
  71. package/dist/components/popover.d.ts +9 -0
  72. package/dist/components/popover.d.ts.map +1 -0
  73. package/dist/components/popover.js +82 -0
  74. package/dist/components/popover.js.map +1 -0
  75. package/dist/components/query-box.d.ts +78 -0
  76. package/dist/components/query-box.d.ts.map +1 -0
  77. package/dist/components/query-box.js +332 -0
  78. package/dist/components/query-box.js.map +1 -0
  79. package/dist/components/query-highlight.d.ts +14 -0
  80. package/dist/components/query-highlight.d.ts.map +1 -0
  81. package/dist/components/query-highlight.js +132 -0
  82. package/dist/components/query-highlight.js.map +1 -0
  83. package/dist/components/select.d.ts +19 -0
  84. package/dist/components/select.d.ts.map +1 -0
  85. package/dist/components/select.js +38 -0
  86. package/dist/components/select.js.map +1 -0
  87. package/dist/components/separator.d.ts +5 -0
  88. package/dist/components/separator.d.ts.map +1 -0
  89. package/dist/components/separator.js +9 -0
  90. package/dist/components/separator.js.map +1 -0
  91. package/dist/components/sheet.d.ts +16 -0
  92. package/dist/components/sheet.d.ts.map +1 -0
  93. package/dist/components/sheet.js +41 -0
  94. package/dist/components/sheet.js.map +1 -0
  95. package/dist/components/skeleton.d.ts +3 -0
  96. package/dist/components/skeleton.d.ts.map +1 -0
  97. package/dist/components/skeleton.js +7 -0
  98. package/dist/components/skeleton.js.map +1 -0
  99. package/dist/components/slider.d.ts +8 -0
  100. package/dist/components/slider.d.ts.map +1 -0
  101. package/dist/components/slider.js +14 -0
  102. package/dist/components/slider.js.map +1 -0
  103. package/dist/components/sonner.d.ts +4 -0
  104. package/dist/components/sonner.d.ts.map +1 -0
  105. package/dist/components/sonner.js +26 -0
  106. package/dist/components/sonner.js.map +1 -0
  107. package/dist/components/switch.d.ts +5 -0
  108. package/dist/components/switch.d.ts.map +1 -0
  109. package/dist/components/switch.js +8 -0
  110. package/dist/components/switch.js.map +1 -0
  111. package/dist/components/table.d.ts +11 -0
  112. package/dist/components/table.d.ts.map +1 -0
  113. package/dist/components/table.js +28 -0
  114. package/dist/components/table.js.map +1 -0
  115. package/dist/components/tabs.d.ts +8 -0
  116. package/dist/components/tabs.d.ts.map +1 -0
  117. package/dist/components/tabs.js +18 -0
  118. package/dist/components/tabs.js.map +1 -0
  119. package/dist/components/textarea.d.ts +4 -0
  120. package/dist/components/textarea.d.ts.map +1 -0
  121. package/dist/components/textarea.js +7 -0
  122. package/dist/components/textarea.js.map +1 -0
  123. package/dist/components/theme-editor/draft.d.ts +235 -0
  124. package/dist/components/theme-editor/draft.d.ts.map +1 -0
  125. package/dist/components/theme-editor/draft.js +638 -0
  126. package/dist/components/theme-editor/draft.js.map +1 -0
  127. package/dist/components/theme-editor/export-panel.d.ts +14 -0
  128. package/dist/components/theme-editor/export-panel.d.ts.map +1 -0
  129. package/dist/components/theme-editor/export-panel.js +39 -0
  130. package/dist/components/theme-editor/export-panel.js.map +1 -0
  131. package/dist/components/theme-editor/form.d.ts +69 -0
  132. package/dist/components/theme-editor/form.d.ts.map +1 -0
  133. package/dist/components/theme-editor/form.js +350 -0
  134. package/dist/components/theme-editor/form.js.map +1 -0
  135. package/dist/components/theme-editor/import-panel.d.ts +21 -0
  136. package/dist/components/theme-editor/import-panel.d.ts.map +1 -0
  137. package/dist/components/theme-editor/import-panel.js +117 -0
  138. package/dist/components/theme-editor/import-panel.js.map +1 -0
  139. package/dist/components/theme-editor/theme-list.d.ts +23 -0
  140. package/dist/components/theme-editor/theme-list.d.ts.map +1 -0
  141. package/dist/components/theme-editor/theme-list.js +42 -0
  142. package/dist/components/theme-editor/theme-list.js.map +1 -0
  143. package/dist/components/theme-editor/token-list.d.ts +30 -0
  144. package/dist/components/theme-editor/token-list.d.ts.map +1 -0
  145. package/dist/components/theme-editor/token-list.js +124 -0
  146. package/dist/components/theme-editor/token-list.js.map +1 -0
  147. package/dist/components/theme-editor/tokens.d.ts +37 -0
  148. package/dist/components/theme-editor/tokens.d.ts.map +1 -0
  149. package/dist/components/theme-editor/tokens.js +155 -0
  150. package/dist/components/theme-editor/tokens.js.map +1 -0
  151. package/dist/components/theme-editor.d.ts +26 -0
  152. package/dist/components/theme-editor.d.ts.map +1 -0
  153. package/dist/components/theme-editor.js +467 -0
  154. package/dist/components/theme-editor.js.map +1 -0
  155. package/dist/components/theme-menu.d.ts +28 -0
  156. package/dist/components/theme-menu.d.ts.map +1 -0
  157. package/dist/components/theme-menu.js +308 -0
  158. package/dist/components/theme-menu.js.map +1 -0
  159. package/dist/components/tooltip.d.ts +11 -0
  160. package/dist/components/tooltip.d.ts.map +1 -0
  161. package/dist/components/tooltip.js +18 -0
  162. package/dist/components/tooltip.js.map +1 -0
  163. package/dist/components/unsaved-changes-dialog.d.ts +39 -0
  164. package/dist/components/unsaved-changes-dialog.d.ts.map +1 -0
  165. package/dist/components/unsaved-changes-dialog.js +46 -0
  166. package/dist/components/unsaved-changes-dialog.js.map +1 -0
  167. package/dist/hooks/scroll-insets.d.ts +89 -0
  168. package/dist/hooks/scroll-insets.d.ts.map +1 -0
  169. package/dist/hooks/scroll-insets.js +265 -0
  170. package/dist/hooks/scroll-insets.js.map +1 -0
  171. package/dist/hooks/use-element-height.d.ts +11 -0
  172. package/dist/hooks/use-element-height.d.ts.map +1 -0
  173. package/dist/hooks/use-element-height.js +33 -0
  174. package/dist/hooks/use-element-height.js.map +1 -0
  175. package/dist/hooks/use-media-query.d.ts +22 -0
  176. package/dist/hooks/use-media-query.d.ts.map +1 -0
  177. package/dist/hooks/use-media-query.js +38 -0
  178. package/dist/hooks/use-media-query.js.map +1 -0
  179. package/dist/hooks/use-overlay-scrollbars.d.ts +31 -0
  180. package/dist/hooks/use-overlay-scrollbars.d.ts.map +1 -0
  181. package/dist/hooks/use-overlay-scrollbars.js +80 -0
  182. package/dist/hooks/use-overlay-scrollbars.js.map +1 -0
  183. package/dist/hooks/use-paged-append.d.ts +7 -0
  184. package/dist/hooks/use-paged-append.d.ts.map +1 -0
  185. package/dist/hooks/use-paged-append.js +53 -0
  186. package/dist/hooks/use-paged-append.js.map +1 -0
  187. package/dist/hooks/use-query-completion.d.ts +27 -0
  188. package/dist/hooks/use-query-completion.d.ts.map +1 -0
  189. package/dist/hooks/use-query-completion.js +100 -0
  190. package/dist/hooks/use-query-completion.js.map +1 -0
  191. package/dist/hooks/use-slash-shortcut.d.ts +9 -0
  192. package/dist/hooks/use-slash-shortcut.d.ts.map +1 -0
  193. package/dist/hooks/use-slash-shortcut.js +38 -0
  194. package/dist/hooks/use-slash-shortcut.js.map +1 -0
  195. package/dist/hooks/viewport-chrome.d.ts +50 -0
  196. package/dist/hooks/viewport-chrome.d.ts.map +1 -0
  197. package/dist/hooks/viewport-chrome.js +170 -0
  198. package/dist/hooks/viewport-chrome.js.map +1 -0
  199. package/dist/index.d.ts +2 -0
  200. package/dist/index.d.ts.map +1 -0
  201. package/dist/index.js +2 -0
  202. package/dist/index.js.map +1 -0
  203. package/dist/lib/cell-width-table.d.ts +3 -0
  204. package/dist/lib/cell-width-table.d.ts.map +1 -0
  205. package/dist/lib/cell-width-table.js +6 -0
  206. package/dist/lib/cell-width-table.js.map +1 -0
  207. package/dist/lib/cell-width.d.ts +7 -0
  208. package/dist/lib/cell-width.d.ts.map +1 -0
  209. package/dist/lib/cell-width.js +50 -0
  210. package/dist/lib/cell-width.js.map +1 -0
  211. package/dist/lib/clipboard.d.ts +8 -0
  212. package/dist/lib/clipboard.d.ts.map +1 -0
  213. package/dist/lib/clipboard.js +19 -0
  214. package/dist/lib/clipboard.js.map +1 -0
  215. package/dist/lib/color.d.ts +40 -0
  216. package/dist/lib/color.d.ts.map +1 -0
  217. package/dist/lib/color.js +177 -0
  218. package/dist/lib/color.js.map +1 -0
  219. package/dist/lib/scroll-map.d.ts +20 -0
  220. package/dist/lib/scroll-map.d.ts.map +1 -0
  221. package/dist/lib/scroll-map.js +46 -0
  222. package/dist/lib/scroll-map.js.map +1 -0
  223. package/dist/lib/text-metrics.d.ts +33 -0
  224. package/dist/lib/text-metrics.d.ts.map +1 -0
  225. package/dist/lib/text-metrics.js +89 -0
  226. package/dist/lib/text-metrics.js.map +1 -0
  227. package/dist/lib/theme-file.d.ts +51 -0
  228. package/dist/lib/theme-file.d.ts.map +1 -0
  229. package/dist/lib/theme-file.js +511 -0
  230. package/dist/lib/theme-file.js.map +1 -0
  231. package/dist/lib/unsaved-guard.d.ts +33 -0
  232. package/dist/lib/unsaved-guard.d.ts.map +1 -0
  233. package/dist/lib/unsaved-guard.js +37 -0
  234. package/dist/lib/unsaved-guard.js.map +1 -0
  235. package/dist/lib/utils.d.ts +3 -0
  236. package/dist/lib/utils.d.ts.map +1 -0
  237. package/dist/lib/utils.js +6 -0
  238. package/dist/lib/utils.js.map +1 -0
  239. package/dist/theme/custom.d.ts +8 -0
  240. package/dist/theme/custom.d.ts.map +1 -0
  241. package/dist/theme/custom.js +56 -0
  242. package/dist/theme/custom.js.map +1 -0
  243. package/dist/theme/index.d.ts +6 -0
  244. package/dist/theme/index.d.ts.map +1 -0
  245. package/dist/theme/index.js +5 -0
  246. package/dist/theme/index.js.map +1 -0
  247. package/dist/theme/paint-guard.d.ts +20 -0
  248. package/dist/theme/paint-guard.d.ts.map +1 -0
  249. package/dist/theme/paint-guard.js +120 -0
  250. package/dist/theme/paint-guard.js.map +1 -0
  251. package/dist/theme/picks.d.ts +22 -0
  252. package/dist/theme/picks.d.ts.map +1 -0
  253. package/dist/theme/picks.js +43 -0
  254. package/dist/theme/picks.js.map +1 -0
  255. package/dist/theme/pref.d.ts +39 -0
  256. package/dist/theme/pref.d.ts.map +1 -0
  257. package/dist/theme/pref.js +129 -0
  258. package/dist/theme/pref.js.map +1 -0
  259. package/dist/theme/provider.d.ts +41 -0
  260. package/dist/theme/provider.d.ts.map +1 -0
  261. package/dist/theme/provider.js +103 -0
  262. package/dist/theme/provider.js.map +1 -0
  263. package/dist/theme/store.d.ts +104 -0
  264. package/dist/theme/store.d.ts.map +1 -0
  265. package/dist/theme/store.js +509 -0
  266. package/dist/theme/store.js.map +1 -0
  267. package/package.json +94 -3
  268. package/styles.css +79 -0
  269. package/theme.css +186 -0
  270. package/vendor/shadcn-tailwind.css +664 -0
@@ -0,0 +1,664 @@
1
+ /*
2
+ * Vendored from shadcn@4.22.1 (dist/tailwind.css, exported as "shadcn/tailwind.css"),
3
+ * so consumers of @orz/ui do not install the shadcn CLI to get it.
4
+ *
5
+ * MIT License
6
+ *
7
+ * Copyright (c) 2023 shadcn
8
+ *
9
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
10
+ * of this software and associated documentation files (the "Software"), to deal
11
+ * in the Software without restriction, including without limitation the rights
12
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
13
+ * copies of the Software, and to permit persons to whom the Software is
14
+ * furnished to do so, subject to the following conditions:
15
+ *
16
+ * The above copyright notice and this permission notice shall be included in all
17
+ * copies or substantial portions of the Software.
18
+ *
19
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
24
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
25
+ * SOFTWARE.
26
+ */
27
+
28
+ @theme inline {
29
+ @keyframes accordion-down {
30
+ from {
31
+ height: 0;
32
+ }
33
+ to {
34
+ height: var(
35
+ --radix-accordion-content-height,
36
+ var(--accordion-panel-height, auto)
37
+ );
38
+ }
39
+ }
40
+
41
+ @keyframes accordion-up {
42
+ from {
43
+ height: var(
44
+ --radix-accordion-content-height,
45
+ var(--accordion-panel-height, auto)
46
+ );
47
+ }
48
+ to {
49
+ height: 0;
50
+ }
51
+ }
52
+ }
53
+
54
+ /* Custom variants */
55
+ @custom-variant data-open {
56
+ &:where([data-state="open"]),
57
+ &:where([data-open]:not([data-open="false"])) {
58
+ @slot;
59
+ }
60
+ }
61
+
62
+ @custom-variant data-closed {
63
+ &:where([data-state="closed"]),
64
+ &:where([data-closed]:not([data-closed="false"])) {
65
+ @slot;
66
+ }
67
+ }
68
+
69
+ @custom-variant data-checked {
70
+ &:where([data-state="checked"]),
71
+ &:where([data-checked]:not([data-checked="false"])) {
72
+ @slot;
73
+ }
74
+ }
75
+
76
+ @custom-variant data-unchecked {
77
+ &:where([data-state="unchecked"]),
78
+ &:where([data-unchecked]:not([data-unchecked="false"])) {
79
+ @slot;
80
+ }
81
+ }
82
+
83
+ @custom-variant data-selected {
84
+ &:where([data-selected="true"]) {
85
+ @slot;
86
+ }
87
+ }
88
+
89
+ @custom-variant data-disabled {
90
+ &:where([data-disabled="true"]),
91
+ &:where([data-disabled]:not([data-disabled="false"])) {
92
+ @slot;
93
+ }
94
+ }
95
+
96
+ @custom-variant data-active {
97
+ &:where([data-state="active"]),
98
+ &:where([data-active]:not([data-active="false"])) {
99
+ @slot;
100
+ }
101
+ }
102
+
103
+ @custom-variant data-horizontal {
104
+ &:where([data-orientation="horizontal"]) {
105
+ @slot;
106
+ }
107
+ }
108
+
109
+ @custom-variant data-vertical {
110
+ &:where([data-orientation="vertical"]) {
111
+ @slot;
112
+ }
113
+ }
114
+
115
+ @utility no-scrollbar {
116
+ -ms-overflow-style: none;
117
+ scrollbar-width: none;
118
+
119
+ &::-webkit-scrollbar {
120
+ display: none;
121
+ }
122
+ }
123
+
124
+ /* scroll-fade */
125
+ @property --scroll-fade-t {
126
+ syntax: "<length-percentage>";
127
+ inherits: false;
128
+ initial-value: 0px;
129
+ }
130
+ @property --scroll-fade-b {
131
+ syntax: "<length-percentage>";
132
+ inherits: false;
133
+ initial-value: 0px;
134
+ }
135
+ @property --scroll-fade-s {
136
+ syntax: "<length-percentage>";
137
+ inherits: false;
138
+ initial-value: 0px;
139
+ }
140
+ @property --scroll-fade-e {
141
+ syntax: "<length-percentage>";
142
+ inherits: false;
143
+ initial-value: 0px;
144
+ }
145
+ @property --scroll-fade-mask {
146
+ syntax: "*";
147
+ inherits: false;
148
+ }
149
+
150
+ @theme inline {
151
+ @keyframes scroll-fade-reveal-t {
152
+ from {
153
+ --scroll-fade-t: 0px;
154
+ }
155
+ to {
156
+ --scroll-fade-t: var(--_scroll-fade-size-t, var(--scroll-fade-size, min(12%, calc(var(--spacing) * 10))));
157
+ }
158
+ }
159
+ @keyframes scroll-fade-reveal-b {
160
+ from {
161
+ --scroll-fade-b: var(--_scroll-fade-size-b, var(--scroll-fade-size, min(12%, calc(var(--spacing) * 10))));
162
+ }
163
+ to {
164
+ --scroll-fade-b: 0px;
165
+ }
166
+ }
167
+ @keyframes scroll-fade-reveal-s {
168
+ from {
169
+ --scroll-fade-s: 0px;
170
+ }
171
+ to {
172
+ --scroll-fade-s: var(--_scroll-fade-size-s, var(--scroll-fade-size, min(12%, calc(var(--spacing) * 10))));
173
+ }
174
+ }
175
+ @keyframes scroll-fade-reveal-e {
176
+ from {
177
+ --scroll-fade-e: var(--_scroll-fade-size-e, var(--scroll-fade-size, min(12%, calc(var(--spacing) * 10))));
178
+ }
179
+ to {
180
+ --scroll-fade-e: 0px;
181
+ }
182
+ }
183
+ }
184
+
185
+ @utility scroll-fade {
186
+ --_scroll-fade-size-t: var(
187
+ --scroll-fade-t-size,
188
+ var(--scroll-fade-size, min(12%, calc(var(--spacing) * 10)))
189
+ );
190
+ --_scroll-fade-size-b: var(
191
+ --scroll-fade-b-size,
192
+ var(--scroll-fade-size, min(12%, calc(var(--spacing) * 10)))
193
+ );
194
+ --scroll-fade-block: linear-gradient(
195
+ to bottom,
196
+ transparent 0,
197
+ #000 var(--scroll-fade-t, 0px),
198
+ #000 calc(100% - var(--scroll-fade-b, 0px)),
199
+ transparent 100%
200
+ );
201
+ -webkit-mask-image: var(--scroll-fade-mask, var(--scroll-fade-block));
202
+ mask-image: var(--scroll-fade-mask, var(--scroll-fade-block));
203
+ -webkit-mask-composite: source-in;
204
+ mask-composite: intersect;
205
+ -webkit-mask-repeat: no-repeat;
206
+ mask-repeat: no-repeat;
207
+
208
+ @supports (animation-timeline: scroll()) {
209
+ animation:
210
+ scroll-fade-reveal-t 1ms ease-in-out,
211
+ scroll-fade-reveal-b 1ms ease-in-out;
212
+ animation-timeline: scroll(self y), scroll(self y);
213
+ animation-range:
214
+ 0 var(--scroll-fade-reveal, calc(var(--spacing) * 24)),
215
+ calc(100% - var(--scroll-fade-reveal, calc(var(--spacing) * 24))) 100%;
216
+ animation-fill-mode: both;
217
+ }
218
+
219
+ @supports not (animation-timeline: scroll()) {
220
+ --scroll-fade-t: var(--_scroll-fade-size-t);
221
+ --scroll-fade-b: var(--_scroll-fade-size-b);
222
+ }
223
+ }
224
+
225
+ @utility scroll-fade-y {
226
+ --_scroll-fade-size-t: var(
227
+ --scroll-fade-t-size,
228
+ var(--scroll-fade-size, min(12%, calc(var(--spacing) * 10)))
229
+ );
230
+ --_scroll-fade-size-b: var(
231
+ --scroll-fade-b-size,
232
+ var(--scroll-fade-size, min(12%, calc(var(--spacing) * 10)))
233
+ );
234
+ --scroll-fade-block: linear-gradient(
235
+ to bottom,
236
+ transparent 0,
237
+ #000 var(--scroll-fade-t, 0px),
238
+ #000 calc(100% - var(--scroll-fade-b, 0px)),
239
+ transparent 100%
240
+ );
241
+ -webkit-mask-image: var(--scroll-fade-mask, var(--scroll-fade-block));
242
+ mask-image: var(--scroll-fade-mask, var(--scroll-fade-block));
243
+ -webkit-mask-composite: source-in;
244
+ mask-composite: intersect;
245
+ -webkit-mask-repeat: no-repeat;
246
+ mask-repeat: no-repeat;
247
+
248
+ @supports (animation-timeline: scroll()) {
249
+ animation:
250
+ scroll-fade-reveal-t 1ms ease-in-out,
251
+ scroll-fade-reveal-b 1ms ease-in-out;
252
+ animation-timeline: scroll(self y), scroll(self y);
253
+ animation-range:
254
+ 0 var(--scroll-fade-reveal, calc(var(--spacing) * 24)),
255
+ calc(100% - var(--scroll-fade-reveal, calc(var(--spacing) * 24))) 100%;
256
+ animation-fill-mode: both;
257
+ }
258
+
259
+ @supports not (animation-timeline: scroll()) {
260
+ --scroll-fade-t: var(--_scroll-fade-size-t);
261
+ --scroll-fade-b: var(--_scroll-fade-size-b);
262
+ }
263
+ }
264
+
265
+ @utility scroll-fade-x {
266
+ --_scroll-fade-size-s: var(
267
+ --scroll-fade-s-size,
268
+ var(--scroll-fade-size, min(12%, calc(var(--spacing) * 10)))
269
+ );
270
+ --_scroll-fade-size-e: var(
271
+ --scroll-fade-e-size,
272
+ var(--scroll-fade-size, min(12%, calc(var(--spacing) * 10)))
273
+ );
274
+ --scroll-fade-inline: linear-gradient(
275
+ to right,
276
+ transparent 0,
277
+ #000 var(--scroll-fade-s, 0px),
278
+ #000 calc(100% - var(--scroll-fade-e, 0px)),
279
+ transparent 100%
280
+ );
281
+ &:where([dir="rtl"], [dir="rtl"] *) {
282
+ --scroll-fade-inline: linear-gradient(
283
+ to left,
284
+ transparent 0,
285
+ #000 var(--scroll-fade-s, 0px),
286
+ #000 calc(100% - var(--scroll-fade-e, 0px)),
287
+ transparent 100%
288
+ );
289
+ }
290
+ -webkit-mask-image: var(--scroll-fade-mask, var(--scroll-fade-inline));
291
+ mask-image: var(--scroll-fade-mask, var(--scroll-fade-inline));
292
+ -webkit-mask-composite: source-in;
293
+ mask-composite: intersect;
294
+ -webkit-mask-repeat: no-repeat;
295
+ mask-repeat: no-repeat;
296
+
297
+ @supports (animation-timeline: scroll()) {
298
+ animation:
299
+ scroll-fade-reveal-s 1ms ease-in-out,
300
+ scroll-fade-reveal-e 1ms ease-in-out;
301
+ animation-timeline: scroll(self inline), scroll(self inline);
302
+ animation-range:
303
+ 0 var(--scroll-fade-reveal, calc(var(--spacing) * 24)),
304
+ calc(100% - var(--scroll-fade-reveal, calc(var(--spacing) * 24))) 100%;
305
+ animation-fill-mode: both;
306
+ }
307
+
308
+ @supports not (animation-timeline: scroll()) {
309
+ --scroll-fade-s: var(--_scroll-fade-size-s);
310
+ --scroll-fade-e: var(--_scroll-fade-size-e);
311
+ }
312
+ }
313
+
314
+ @utility scroll-fade-t {
315
+ --_scroll-fade-size-t: var(
316
+ --scroll-fade-t-size,
317
+ var(--scroll-fade-size, min(12%, calc(var(--spacing) * 10)))
318
+ );
319
+ --scroll-fade-mask: linear-gradient(
320
+ to bottom,
321
+ transparent 0,
322
+ #000 var(--scroll-fade-t, 0px),
323
+ #000 100%
324
+ );
325
+ -webkit-mask-image: var(--scroll-fade-mask);
326
+ mask-image: var(--scroll-fade-mask);
327
+ -webkit-mask-composite: source-in;
328
+ mask-composite: intersect;
329
+ -webkit-mask-repeat: no-repeat;
330
+ mask-repeat: no-repeat;
331
+
332
+ @supports (animation-timeline: scroll()) {
333
+ animation: scroll-fade-reveal-t 1ms ease-in-out;
334
+ animation-timeline: scroll(self y);
335
+ animation-range: 0 var(--scroll-fade-reveal, calc(var(--spacing) * 24));
336
+ animation-fill-mode: both;
337
+ }
338
+
339
+ @supports not (animation-timeline: scroll()) {
340
+ --scroll-fade-t: var(--_scroll-fade-size-t);
341
+ }
342
+ }
343
+
344
+ @utility scroll-fade-b {
345
+ --_scroll-fade-size-b: var(
346
+ --scroll-fade-b-size,
347
+ var(--scroll-fade-size, min(12%, calc(var(--spacing) * 10)))
348
+ );
349
+ --scroll-fade-mask: linear-gradient(
350
+ to bottom,
351
+ #000 0,
352
+ #000 calc(100% - var(--scroll-fade-b, 0px)),
353
+ transparent 100%
354
+ );
355
+ -webkit-mask-image: var(--scroll-fade-mask);
356
+ mask-image: var(--scroll-fade-mask);
357
+ -webkit-mask-composite: source-in;
358
+ mask-composite: intersect;
359
+ -webkit-mask-repeat: no-repeat;
360
+ mask-repeat: no-repeat;
361
+
362
+ @supports (animation-timeline: scroll()) {
363
+ animation: scroll-fade-reveal-b 1ms ease-in-out;
364
+ animation-timeline: scroll(self y);
365
+ animation-range: calc(
366
+ 100% - var(--scroll-fade-reveal, calc(var(--spacing) * 24))
367
+ )
368
+ 100%;
369
+ animation-fill-mode: both;
370
+ }
371
+
372
+ @supports not (animation-timeline: scroll()) {
373
+ --scroll-fade-b: var(--_scroll-fade-size-b);
374
+ }
375
+ }
376
+
377
+ @utility scroll-fade-l {
378
+ --_scroll-fade-size-s: var(
379
+ --scroll-fade-s-size,
380
+ var(--scroll-fade-size, min(12%, calc(var(--spacing) * 10)))
381
+ );
382
+ --scroll-fade-mask: linear-gradient(
383
+ to right,
384
+ transparent 0,
385
+ #000 var(--scroll-fade-s, 0px),
386
+ #000 100%
387
+ );
388
+ -webkit-mask-image: var(--scroll-fade-mask);
389
+ mask-image: var(--scroll-fade-mask);
390
+ -webkit-mask-composite: source-in;
391
+ mask-composite: intersect;
392
+ -webkit-mask-repeat: no-repeat;
393
+ mask-repeat: no-repeat;
394
+
395
+ @supports (animation-timeline: scroll()) {
396
+ animation: scroll-fade-reveal-s 1ms ease-in-out;
397
+ animation-timeline: scroll(self x);
398
+ animation-range: 0 var(--scroll-fade-reveal, calc(var(--spacing) * 24));
399
+ animation-fill-mode: both;
400
+ }
401
+
402
+ @supports not (animation-timeline: scroll()) {
403
+ --scroll-fade-s: var(--_scroll-fade-size-s);
404
+ }
405
+ }
406
+
407
+ @utility scroll-fade-r {
408
+ --_scroll-fade-size-e: var(
409
+ --scroll-fade-e-size,
410
+ var(--scroll-fade-size, min(12%, calc(var(--spacing) * 10)))
411
+ );
412
+ --scroll-fade-mask: linear-gradient(
413
+ to right,
414
+ #000 0,
415
+ #000 calc(100% - var(--scroll-fade-e, 0px)),
416
+ transparent 100%
417
+ );
418
+ -webkit-mask-image: var(--scroll-fade-mask);
419
+ mask-image: var(--scroll-fade-mask);
420
+ -webkit-mask-composite: source-in;
421
+ mask-composite: intersect;
422
+ -webkit-mask-repeat: no-repeat;
423
+ mask-repeat: no-repeat;
424
+
425
+ @supports (animation-timeline: scroll()) {
426
+ animation: scroll-fade-reveal-e 1ms ease-in-out;
427
+ animation-timeline: scroll(self x);
428
+ animation-range: calc(
429
+ 100% - var(--scroll-fade-reveal, calc(var(--spacing) * 24))
430
+ )
431
+ 100%;
432
+ animation-fill-mode: both;
433
+ }
434
+
435
+ @supports not (animation-timeline: scroll()) {
436
+ --scroll-fade-e: var(--_scroll-fade-size-e);
437
+ }
438
+ }
439
+
440
+ @utility scroll-fade-s {
441
+ --_scroll-fade-size-s: var(
442
+ --scroll-fade-s-size,
443
+ var(--scroll-fade-size, min(12%, calc(var(--spacing) * 10)))
444
+ );
445
+ --scroll-fade-mask: linear-gradient(
446
+ to right,
447
+ transparent 0,
448
+ #000 var(--scroll-fade-s, 0px),
449
+ #000 100%
450
+ );
451
+ &:where([dir="rtl"], [dir="rtl"] *) {
452
+ --scroll-fade-mask: linear-gradient(
453
+ to left,
454
+ transparent 0,
455
+ #000 var(--scroll-fade-s, 0px),
456
+ #000 100%
457
+ );
458
+ }
459
+ -webkit-mask-image: var(--scroll-fade-mask);
460
+ mask-image: var(--scroll-fade-mask);
461
+ -webkit-mask-composite: source-in;
462
+ mask-composite: intersect;
463
+ -webkit-mask-repeat: no-repeat;
464
+ mask-repeat: no-repeat;
465
+
466
+ @supports (animation-timeline: scroll()) {
467
+ animation: scroll-fade-reveal-s 1ms ease-in-out;
468
+ animation-timeline: scroll(self inline);
469
+ animation-range: 0 var(--scroll-fade-reveal, calc(var(--spacing) * 24));
470
+ animation-fill-mode: both;
471
+ }
472
+
473
+ @supports not (animation-timeline: scroll()) {
474
+ --scroll-fade-s: var(--_scroll-fade-size-s);
475
+ }
476
+ }
477
+
478
+ @utility scroll-fade-e {
479
+ --_scroll-fade-size-e: var(
480
+ --scroll-fade-e-size,
481
+ var(--scroll-fade-size, min(12%, calc(var(--spacing) * 10)))
482
+ );
483
+ --scroll-fade-mask: linear-gradient(
484
+ to right,
485
+ #000 0,
486
+ #000 calc(100% - var(--scroll-fade-e, 0px)),
487
+ transparent 100%
488
+ );
489
+ &:where([dir="rtl"], [dir="rtl"] *) {
490
+ --scroll-fade-mask: linear-gradient(
491
+ to left,
492
+ #000 0,
493
+ #000 calc(100% - var(--scroll-fade-e, 0px)),
494
+ transparent 100%
495
+ );
496
+ }
497
+ -webkit-mask-image: var(--scroll-fade-mask);
498
+ mask-image: var(--scroll-fade-mask);
499
+ -webkit-mask-composite: source-in;
500
+ mask-composite: intersect;
501
+ -webkit-mask-repeat: no-repeat;
502
+ mask-repeat: no-repeat;
503
+
504
+ @supports (animation-timeline: scroll()) {
505
+ animation: scroll-fade-reveal-e 1ms ease-in-out;
506
+ animation-timeline: scroll(self inline);
507
+ animation-range: calc(
508
+ 100% - var(--scroll-fade-reveal, calc(var(--spacing) * 24))
509
+ )
510
+ 100%;
511
+ animation-fill-mode: both;
512
+ }
513
+
514
+ @supports not (animation-timeline: scroll()) {
515
+ --scroll-fade-e: var(--_scroll-fade-size-e);
516
+ }
517
+ }
518
+
519
+ @utility scroll-fade-* {
520
+ --scroll-fade-size: calc(var(--spacing) * --value(integer));
521
+ --scroll-fade-size: --value([length], [percentage]);
522
+ }
523
+
524
+ @utility scroll-fade-t-* {
525
+ --scroll-fade-t-size: calc(var(--spacing) * --value(integer));
526
+ --scroll-fade-t-size: --value([length], [percentage]);
527
+ }
528
+
529
+ @utility scroll-fade-b-* {
530
+ --scroll-fade-b-size: calc(var(--spacing) * --value(integer));
531
+ --scroll-fade-b-size: --value([length], [percentage]);
532
+ }
533
+
534
+ @utility scroll-fade-s-* {
535
+ --scroll-fade-s-size: calc(var(--spacing) * --value(integer));
536
+ --scroll-fade-s-size: --value([length], [percentage]);
537
+ }
538
+
539
+ @utility scroll-fade-e-* {
540
+ --scroll-fade-e-size: calc(var(--spacing) * --value(integer));
541
+ --scroll-fade-e-size: --value([length], [percentage]);
542
+ }
543
+
544
+ @utility scroll-fade-none {
545
+ --scroll-fade-mask: none;
546
+ }
547
+
548
+ /* shimmer */
549
+ @property --shimmer-angle {
550
+ syntax: "<angle>";
551
+ inherits: true;
552
+ initial-value: 20deg;
553
+ }
554
+ @property --shimmer-image {
555
+ syntax: "*";
556
+ inherits: false;
557
+ }
558
+ @property --shimmer-text-fill {
559
+ syntax: "*";
560
+ inherits: false;
561
+ }
562
+
563
+ @theme inline {
564
+ @keyframes tw-shimmer {
565
+ from {
566
+ background-position: 100% 0;
567
+ }
568
+ to {
569
+ background-position: 0 0;
570
+ }
571
+ }
572
+ }
573
+
574
+ @utility shimmer {
575
+ --_spread: var(--shimmer-spread, calc(3ch + 40px));
576
+ --_base: currentColor;
577
+ --_highlight: var(
578
+ --shimmer-color,
579
+ oklch(from currentColor l c h / calc(alpha* 0.2))
580
+ );
581
+
582
+ background-image: var(
583
+ --shimmer-image,
584
+ linear-gradient(
585
+ calc(90deg + var(--shimmer-angle)),
586
+ var(--_base) calc(50% - var(--_spread)),
587
+ color-mix(in oklch, var(--_highlight), var(--_base) 50%)
588
+ calc(50% - var(--_spread) * 0.5),
589
+ var(--_highlight) 50%,
590
+ color-mix(in oklch, var(--_highlight), var(--_base) 50%)
591
+ calc(50% + var(--_spread) * 0.5),
592
+ var(--_base) calc(50% + var(--_spread))
593
+ )
594
+ );
595
+ background-repeat: no-repeat;
596
+ background-size: calc(200% + var(--_spread) * 2) 100%;
597
+ background-position: 0 0;
598
+ background-clip: text;
599
+ -webkit-background-clip: text;
600
+ -webkit-text-fill-color: var(--shimmer-text-fill, transparent);
601
+ animation: tw-shimmer var(--shimmer-duration, 2s) linear infinite;
602
+
603
+ @variant dark {
604
+ --_highlight: var(
605
+ --shimmer-color,
606
+ oklch(from currentColor max(0.8, calc(l + 0.4)) c h / calc(alpha + 0.4))
607
+ );
608
+ }
609
+
610
+ &:where([dir="rtl"], [dir="rtl"] *) {
611
+ animation-direction: reverse;
612
+ }
613
+
614
+ @media (prefers-reduced-motion: reduce) {
615
+ animation: none;
616
+ background-image: none;
617
+ -webkit-text-fill-color: currentColor;
618
+ }
619
+ }
620
+
621
+ @utility shimmer-once {
622
+ animation-iteration-count: 1;
623
+ }
624
+
625
+ @utility shimmer-reverse {
626
+ animation-direction: reverse;
627
+ }
628
+
629
+ @utility shimmer-none {
630
+ --shimmer-image: none;
631
+ --shimmer-text-fill: currentColor;
632
+ }
633
+
634
+ @utility shimmer-color-* {
635
+ --shimmer-color: --value(--color, [color]);
636
+ --shimmer-color: color-mix(
637
+ in oklch,
638
+ --value(--color, [color]) calc(--modifier(integer) * 1%),
639
+ transparent
640
+ );
641
+ }
642
+
643
+ @utility shimmer-duration-* {
644
+ --shimmer-duration: calc(--value(integer) * 1ms);
645
+ }
646
+
647
+ @utility shimmer-spread-* {
648
+ --shimmer-spread: calc(var(--spacing) * --value(integer));
649
+ --shimmer-spread: --value([length], [percentage]);
650
+ }
651
+
652
+ @utility shimmer-angle-* {
653
+ --shimmer-angle: calc(--value(integer) * 1deg);
654
+ }
655
+
656
+ /* Kept for backwards compatibility. Unlayered, so it still wins over other
657
+ utilities on a plain .shimmer element. Variants are handled in the utility. */
658
+ @media (prefers-reduced-motion: reduce) {
659
+ .shimmer {
660
+ animation: none;
661
+ background-image: none;
662
+ -webkit-text-fill-color: currentColor;
663
+ }
664
+ }