twntyx-css 1.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 (228) hide show
  1. package/README.md +105 -0
  2. package/llm/CHANGELOG.md +7 -0
  3. package/llm/components/ai-background.json +90 -0
  4. package/llm/components/ai-orb.json +91 -0
  5. package/llm/components/ai-perl.json +91 -0
  6. package/llm/components/all-components.json +104 -0
  7. package/llm/components/animation-references.json +84 -0
  8. package/llm/components/avatar.json +149 -0
  9. package/llm/components/badge.json +263 -0
  10. package/llm/components/banner-marketplace.json +81 -0
  11. package/llm/components/banner.json +120 -0
  12. package/llm/components/breadcrumb.json +169 -0
  13. package/llm/components/button-container.json +150 -0
  14. package/llm/components/button-feedback.json +155 -0
  15. package/llm/components/button.json +290 -0
  16. package/llm/components/card-assessment.json +93 -0
  17. package/llm/components/card-test.json +83 -0
  18. package/llm/components/card.json +94 -0
  19. package/llm/components/chat.json +155 -0
  20. package/llm/components/checkbox.json +186 -0
  21. package/llm/components/checkmark.json +175 -0
  22. package/llm/components/collapsible.json +100 -0
  23. package/llm/components/color-palette.json +79 -0
  24. package/llm/components/color-usage.json +83 -0
  25. package/llm/components/combobox.json +143 -0
  26. package/llm/components/command-palette.json +159 -0
  27. package/llm/components/countdown.json +113 -0
  28. package/llm/components/datepicker.json +151 -0
  29. package/llm/components/divider.json +104 -0
  30. package/llm/components/empty-state.json +80 -0
  31. package/llm/components/field.json +123 -0
  32. package/llm/components/fieldset.json +78 -0
  33. package/llm/components/file-upload.json +163 -0
  34. package/llm/components/form-example.json +82 -0
  35. package/llm/components/getting-started.json +70 -0
  36. package/llm/components/icons-reference.json +78 -0
  37. package/llm/components/illustrations-library.json +78 -0
  38. package/llm/components/input-group.json +94 -0
  39. package/llm/components/introduction.json +71 -0
  40. package/llm/components/join.json +105 -0
  41. package/llm/components/kbd.json +139 -0
  42. package/llm/components/key-value.json +86 -0
  43. package/llm/components/link.json +120 -0
  44. package/llm/components/loader.json +117 -0
  45. package/llm/components/logotype.json +75 -0
  46. package/llm/components/menu.json +192 -0
  47. package/llm/components/modal.json +167 -0
  48. package/llm/components/navbar.json +158 -0
  49. package/llm/components/pagination.json +122 -0
  50. package/llm/components/pie-chart.json +94 -0
  51. package/llm/components/popover.json +174 -0
  52. package/llm/components/progress-bullet.json +203 -0
  53. package/llm/components/progress-linear.json +129 -0
  54. package/llm/components/progress-radial.json +125 -0
  55. package/llm/components/radio.json +162 -0
  56. package/llm/components/range-slider.json +125 -0
  57. package/llm/components/scrollbar.json +96 -0
  58. package/llm/components/select-input.json +224 -0
  59. package/llm/components/shadows.json +107 -0
  60. package/llm/components/skeleton.json +84 -0
  61. package/llm/components/stacked-chart.json +100 -0
  62. package/llm/components/state.json +138 -0
  63. package/llm/components/stepper.json +95 -0
  64. package/llm/components/steps.json +177 -0
  65. package/llm/components/surface.json +181 -0
  66. package/llm/components/table.json +223 -0
  67. package/llm/components/tabs.json +147 -0
  68. package/llm/components/template-ai.json +80 -0
  69. package/llm/components/template-login.json +88 -0
  70. package/llm/components/template-stats.json +76 -0
  71. package/llm/components/text-input.json +275 -0
  72. package/llm/components/textarea.json +183 -0
  73. package/llm/components/timeline.json +142 -0
  74. package/llm/components/toast.json +164 -0
  75. package/llm/components/toggle.json +158 -0
  76. package/llm/components/tool-svg-to-base64.json +78 -0
  77. package/llm/components/tool-svg-to-icon-data.json +81 -0
  78. package/llm/components/tooltip.json +90 -0
  79. package/llm/examples/ai-background.html +1 -0
  80. package/llm/examples/ai-orb.html +1 -0
  81. package/llm/examples/ai-perl.html +1 -0
  82. package/llm/examples/all-components.html +1 -0
  83. package/llm/examples/animation-references.html +1 -0
  84. package/llm/examples/avatar.html +1 -0
  85. package/llm/examples/badge.html +1 -0
  86. package/llm/examples/banner-marketplace.html +1 -0
  87. package/llm/examples/banner.html +1 -0
  88. package/llm/examples/breadcrumb.html +1 -0
  89. package/llm/examples/button-container.html +1 -0
  90. package/llm/examples/button-feedback.html +1 -0
  91. package/llm/examples/button.html +3 -0
  92. package/llm/examples/card-assessment.html +1 -0
  93. package/llm/examples/card-test.html +1 -0
  94. package/llm/examples/card.html +1 -0
  95. package/llm/examples/chat.html +1 -0
  96. package/llm/examples/checkbox.html +1 -0
  97. package/llm/examples/checkmark.html +1 -0
  98. package/llm/examples/collapsible.html +1 -0
  99. package/llm/examples/color-palette.html +1 -0
  100. package/llm/examples/color-usage.html +1 -0
  101. package/llm/examples/combobox.html +1 -0
  102. package/llm/examples/command-palette.html +1 -0
  103. package/llm/examples/countdown.html +1 -0
  104. package/llm/examples/datepicker.html +1 -0
  105. package/llm/examples/divider.html +1 -0
  106. package/llm/examples/empty-state.html +1 -0
  107. package/llm/examples/field.html +1 -0
  108. package/llm/examples/fieldset.html +1 -0
  109. package/llm/examples/file-upload.html +1 -0
  110. package/llm/examples/form-example.html +1 -0
  111. package/llm/examples/getting-started.html +1 -0
  112. package/llm/examples/icons-reference.html +1 -0
  113. package/llm/examples/illustrations-library.html +1 -0
  114. package/llm/examples/input-group.html +1 -0
  115. package/llm/examples/introduction.html +1 -0
  116. package/llm/examples/join.html +1 -0
  117. package/llm/examples/kbd.html +1 -0
  118. package/llm/examples/key-value.html +1 -0
  119. package/llm/examples/link.html +1 -0
  120. package/llm/examples/loader.html +1 -0
  121. package/llm/examples/logotype.html +1 -0
  122. package/llm/examples/menu.html +1 -0
  123. package/llm/examples/modal.html +16 -0
  124. package/llm/examples/navbar.html +1 -0
  125. package/llm/examples/pagination.html +1 -0
  126. package/llm/examples/pie-chart.html +1 -0
  127. package/llm/examples/popover.html +1 -0
  128. package/llm/examples/progress-bullet.html +1 -0
  129. package/llm/examples/progress-linear.html +1 -0
  130. package/llm/examples/progress-radial.html +1 -0
  131. package/llm/examples/radio.html +1 -0
  132. package/llm/examples/range-slider.html +1 -0
  133. package/llm/examples/scrollbar.html +1 -0
  134. package/llm/examples/select-input.html +1 -0
  135. package/llm/examples/shadows.html +1 -0
  136. package/llm/examples/skeleton.html +1 -0
  137. package/llm/examples/stacked-chart.html +1 -0
  138. package/llm/examples/state.html +1 -0
  139. package/llm/examples/stepper.html +1 -0
  140. package/llm/examples/steps.html +1 -0
  141. package/llm/examples/surface.html +1 -0
  142. package/llm/examples/table.html +16 -0
  143. package/llm/examples/tabs.html +1 -0
  144. package/llm/examples/template-ai.html +1 -0
  145. package/llm/examples/template-login.html +1 -0
  146. package/llm/examples/template-stats.html +1 -0
  147. package/llm/examples/text-input.html +10 -0
  148. package/llm/examples/textarea.html +1 -0
  149. package/llm/examples/timeline.html +1 -0
  150. package/llm/examples/toast.html +5 -0
  151. package/llm/examples/toggle.html +1 -0
  152. package/llm/examples/tool-svg-to-base64.html +1 -0
  153. package/llm/examples/tool-svg-to-icon-data.html +1 -0
  154. package/llm/examples/tooltip.html +1 -0
  155. package/llm/index.json +1615 -0
  156. package/llm/llms.txt +18 -0
  157. package/llm/patterns.json +111 -0
  158. package/llm/rules.json +47 -0
  159. package/llm/schema.json +804 -0
  160. package/llm/tokens.json +3629 -0
  161. package/package.json +30 -0
  162. package/styles/ai.css +114 -0
  163. package/styles/animation.css +2493 -0
  164. package/styles/avatar.css +101 -0
  165. package/styles/background-ai.css +118 -0
  166. package/styles/badge.css +274 -0
  167. package/styles/banner.css +98 -0
  168. package/styles/breadcrumb.css +72 -0
  169. package/styles/button.css +621 -0
  170. package/styles/card.css +27 -0
  171. package/styles/chart-pie.css +39 -0
  172. package/styles/chart-stacked.css +91 -0
  173. package/styles/chat.css +506 -0
  174. package/styles/checkmark.css +105 -0
  175. package/styles/code.css +264 -0
  176. package/styles/collapsible.css +93 -0
  177. package/styles/colors.css +536 -0
  178. package/styles/combobox.css +66 -0
  179. package/styles/command.css +81 -0
  180. package/styles/contest.css +227 -0
  181. package/styles/countdown.css +65 -0
  182. package/styles/datepicker.css +124 -0
  183. package/styles/divider.css +72 -0
  184. package/styles/drawer.css +142 -0
  185. package/styles/dropdown.css +22 -0
  186. package/styles/empty-state.css +48 -0
  187. package/styles/field.css +47 -0
  188. package/styles/fieldset.css +24 -0
  189. package/styles/form-checkbox-radio-toggle.css +233 -0
  190. package/styles/form-fileupload.css +146 -0
  191. package/styles/form-rangeslider.css +106 -0
  192. package/styles/form-shared.css +41 -0
  193. package/styles/form-text-select.css +411 -0
  194. package/styles/form.css +86 -0
  195. package/styles/globals.css +66 -0
  196. package/styles/input-group.css +63 -0
  197. package/styles/join.css +141 -0
  198. package/styles/kbd.css +55 -0
  199. package/styles/key-value.css +44 -0
  200. package/styles/link.css +48 -0
  201. package/styles/loader.css +183 -0
  202. package/styles/logotype.css +13 -0
  203. package/styles/menu.css +317 -0
  204. package/styles/modal.css +172 -0
  205. package/styles/navbar.css +48 -0
  206. package/styles/package-quill.css +1001 -0
  207. package/styles/pagination.css +147 -0
  208. package/styles/panel.css +113 -0
  209. package/styles/popover.css +303 -0
  210. package/styles/prism.css +60 -0
  211. package/styles/progress.css +209 -0
  212. package/styles/scrollbar.css +17 -0
  213. package/styles/shadow.css +25 -0
  214. package/styles/shared.css +226 -0
  215. package/styles/skeleton.css +34 -0
  216. package/styles/state.css +150 -0
  217. package/styles/stepper.css +72 -0
  218. package/styles/steps.css +98 -0
  219. package/styles/surface.css +252 -0
  220. package/styles/tab.css +286 -0
  221. package/styles/table.css +243 -0
  222. package/styles/theme.css +126 -0
  223. package/styles/timeline.css +193 -0
  224. package/styles/toast.css +150 -0
  225. package/styles/tooltip.css +8 -0
  226. package/styles/typography.css +160 -0
  227. package/styles/utility.css +20 -0
  228. package/tailwind.config.cjs +9 -0
@@ -0,0 +1,91 @@
1
+ /*----------------------------*/
2
+ /* STACKED */
3
+ /*----------------------------*/
4
+
5
+ @utility chart-stacked {
6
+ @apply flex overflow-x-auto items-stretch w-full text-center min-h-60 child-animate-delay min-w-[420px];
7
+
8
+ > li {
9
+ @apply flex flex-col flex-1 max-w-20 animate-slide-in-right shrink-0;
10
+
11
+ &:nth-child(even) {
12
+ > span {
13
+ @apply text-transparent;
14
+ }
15
+ > div {
16
+ &::before {
17
+ @apply bg-transparent;
18
+ }
19
+ }
20
+ }
21
+
22
+ > span {
23
+ @apply order-2 p-1 text-sm border-t border-line-default text-text-tertiary;
24
+ }
25
+
26
+ > div {
27
+ @apply flex relative flex-col flex-1 order-1 gap-1 justify-end items-center p-1 shrink-0;
28
+
29
+ &::before {
30
+ @apply content-[''] absolute inset-y-0 bg-line-default/50 w-px left-1/2 -translate-x-1/2;
31
+ }
32
+
33
+ > * {
34
+ @apply relative z-10;
35
+ }
36
+ [class*="chart-result-"],
37
+ .avatar {
38
+ @apply w-full max-w-10 aspect-square shrink-0 min-w-8;
39
+ > * {
40
+ @apply w-full text-sm border aspect-square;
41
+ &[class*="surface"] {
42
+ @apply border-2 backdrop-blur-sm;
43
+ background-color: color-mix(in srgb, var(--tw-bg) 25%, transparent);
44
+ }
45
+ &:not([class*="surface"]):not(:has(img)) {
46
+ @apply border-line-default bg-line-subtle;
47
+ }
48
+ }
49
+ }
50
+ }
51
+ }
52
+
53
+ &.chart-stacked-result {
54
+ > li {
55
+ > div {
56
+ @apply -space-y-[30%];
57
+ }
58
+
59
+ &.chart-results-highlight {
60
+ > div {
61
+ @apply relative;
62
+ &::after {
63
+ @apply content-[''] absolute inset-0 z-0 bg-background-surface-elevated/50 border-x border-line-default;
64
+ }
65
+ }
66
+ }
67
+ }
68
+ }
69
+
70
+ [class*="chart-result-"] {
71
+ @apply border-2 backdrop-blur-sm;
72
+ }
73
+ .chart-result-success {
74
+ @apply rounded-full surface-success;
75
+ }
76
+ .chart-result-error {
77
+ @apply rounded-xl -rotate-45 surface-error;
78
+ }
79
+ .chart-result-warning {
80
+ @apply rounded-xl surface-warning;
81
+ }
82
+ .chart-result-info {
83
+ @apply rounded-full surface-info;
84
+ }
85
+ .chart-result-neutral {
86
+ @apply rounded-full surface-placeholder;
87
+ }
88
+ .chart-result-attention {
89
+ @apply rounded-xl surface-attention;
90
+ }
91
+ }
@@ -0,0 +1,506 @@
1
+ /*----------------------------*/
2
+ /* CHAT */
3
+ /*----------------------------*/
4
+
5
+ /* Base chat container */
6
+ .chat {
7
+ @apply
8
+ flex
9
+ /* overflow-x-hidden */
10
+ relative
11
+ flex-col
12
+ w-full
13
+ h-full;
14
+
15
+ &,
16
+ * {
17
+ scroll-behavior: smooth;
18
+ }
19
+ }
20
+
21
+ /* Chat feed - messages container */
22
+ @utility chat-feed {
23
+ @apply
24
+ flex-1
25
+ overflow-y-auto
26
+ overflow-x-hidden
27
+ mx-auto
28
+ bg-background-page
29
+ rounded-t-[inherit]
30
+ min-h-36
31
+ flex
32
+ flex-col
33
+ gap-6
34
+ p-4
35
+ w-full;
36
+ }
37
+
38
+ /* Message groups */
39
+ @utility chat-group {
40
+ @apply
41
+ flex
42
+ relative
43
+ gap-4
44
+ items-start
45
+ pt-3
46
+ w-full;
47
+
48
+ /* Author section with avatar and timestamp */
49
+ .chat-author {
50
+ @apply
51
+ flex
52
+ relative
53
+ flex-col
54
+ gap-2
55
+ items-center
56
+ shrink-0;
57
+
58
+ &,
59
+ .avatar,
60
+ .avatar > * {
61
+ @apply size-12;
62
+ }
63
+
64
+ time {
65
+ @apply
66
+ text-xs
67
+ leading-none
68
+ whitespace-nowrap
69
+ text-text-tertiary
70
+ transition-colors
71
+ duration-200
72
+ ease-in-out;
73
+ }
74
+ }
75
+
76
+ /* Messages container */
77
+ .chat-messages {
78
+ @apply
79
+ flex
80
+ flex-col
81
+ flex-1
82
+ gap-2
83
+ min-w-0
84
+ max-w-[calc(100%-5rem)]
85
+ lg:max-w-[60%];
86
+
87
+ .chat-name {
88
+ @apply
89
+ text-sm
90
+ font-medium
91
+ text-text-secondary;
92
+ }
93
+
94
+ /* Individual message */
95
+ .chat-message {
96
+ @apply
97
+ relative
98
+ max-w-full
99
+ w-fit
100
+ flex
101
+ gap-2
102
+ items-center
103
+ outline-hidden
104
+ focus-visible:outline
105
+ focus-visible:outline-2
106
+ focus-visible:outline-line-strong;
107
+ &:hover {
108
+ @apply z-20;
109
+
110
+ .chat-actions {
111
+ @apply
112
+ opacity-100
113
+ scale-100
114
+ pointer-events-auto
115
+ ;
116
+ }
117
+ }
118
+
119
+ .chat-bubble {
120
+ @apply
121
+ px-4
122
+ py-3
123
+ rounded-2xl
124
+ break-words
125
+ whitespace-pre-wrap
126
+ text-sm
127
+ surface
128
+ text-text-default
129
+ min-w-fit
130
+ max-w-[calc(100vw-8rem)];
131
+
132
+ /* Basic HTML markup styling */
133
+ /* p {
134
+ @apply
135
+ mb-4
136
+ last:mb-0;
137
+ } */
138
+
139
+ b,
140
+ strong {
141
+ @apply
142
+ font-semibold;
143
+ }
144
+
145
+ i,
146
+ em {
147
+ @apply
148
+ italic;
149
+ }
150
+
151
+ ul,
152
+ ol {
153
+ @apply
154
+ pl-6
155
+ mb-4
156
+ last:mb-0;
157
+ }
158
+
159
+ ul {
160
+ @apply
161
+ list-disc;
162
+ }
163
+
164
+ ol {
165
+ @apply
166
+ list-decimal;
167
+ }
168
+
169
+ li {
170
+ @apply
171
+ mb-2 last:mb-0;
172
+ }
173
+
174
+ a {
175
+ @apply
176
+ underline
177
+ text-text-link
178
+ hover:text-text-link-hover;
179
+ }
180
+
181
+ code {
182
+ @apply
183
+ px-1.5
184
+ py-0.5
185
+ text-xs
186
+ rounded
187
+ bg-background-surface-elevated;
188
+ }
189
+
190
+ pre {
191
+ @apply
192
+ overflow-x-auto
193
+ p-4
194
+ mb-4
195
+ rounded
196
+ last:mb-0
197
+ bg-background-surface-elevated;
198
+
199
+ code {
200
+ @apply
201
+ p-0 bg-transparent;
202
+ }
203
+ }
204
+
205
+ blockquote {
206
+ @apply
207
+ pl-4
208
+ my-4
209
+ italic
210
+ border-l-2
211
+ border-line-default;
212
+ }
213
+
214
+ .chat-bubble-actions {
215
+ @apply
216
+ flex
217
+ flex-wrap
218
+ gap-2;
219
+
220
+ /* &:has(button.is-active) {
221
+ @apply
222
+ pointer-events-none;
223
+ } */
224
+ /*
225
+ > :where(button, .button) {
226
+ @apply
227
+ opacity-0
228
+ animate-[bubble-action-in_0.5s_cubic-bezier(0.645,0.045,0.355,1)_forwards];
229
+
230
+ @apply
231
+ transition-all
232
+ duration-200
233
+ ease-in-out;
234
+
235
+ &:hover {
236
+ @apply
237
+ scale-105
238
+ opacity-100;
239
+ }
240
+
241
+ &:active {
242
+ @apply
243
+ scale-100
244
+ opacity-100;
245
+ }
246
+
247
+ &.is-active {
248
+ @apply
249
+ bg-core-black
250
+ text-core-white
251
+ border-core-black!
252
+ hover:bg-core-black
253
+ active:bg-core-black
254
+ hover:text-core-white
255
+ active:text-core-white;
256
+ }
257
+
258
+ &:nth-child(1) {
259
+ animation-delay: calc(0.2s * 1);
260
+ }
261
+ &:nth-child(2) {
262
+ animation-delay: calc(0.2s * 2);
263
+ }
264
+ &:nth-child(3) {
265
+ animation-delay: calc(0.2s * 3);
266
+ }
267
+ &:nth-child(4) {
268
+ animation-delay: calc(0.2s * 4);
269
+ }
270
+ } */
271
+ }
272
+ }
273
+
274
+ /* Message actions */
275
+ .chat-actions {
276
+ @apply
277
+ flex
278
+ absolute
279
+ right-0
280
+ -top-7
281
+ z-10
282
+ gap-1
283
+ p-1
284
+ rounded-full
285
+ shadow-sm
286
+ opacity-0
287
+ transition
288
+ duration-75
289
+ scale-90
290
+ pointer-events-none
291
+ ease-out-cubic
292
+ surface;
293
+
294
+ button {
295
+ @apply
296
+ border
297
+ button
298
+ include-border-secondary
299
+ bg-background-surface
300
+ text-text-tertiary
301
+ border-line-default/0
302
+ shrink-0;
303
+
304
+ &:hover {
305
+ @apply
306
+ border-line-default
307
+ text-text-default;
308
+ }
309
+
310
+ svg {
311
+ @apply
312
+ w-4
313
+ h-4;
314
+ }
315
+ }
316
+ }
317
+ }
318
+ }
319
+
320
+ /* Owner messages styling */
321
+ &.is-owner {
322
+ @apply
323
+ flex-row-reverse
324
+ text-right;
325
+
326
+ .chat-messages {
327
+ @apply items-end pr-4;
328
+
329
+ .chat-message {
330
+ @apply ml-auto;
331
+
332
+ .chat-bubble {
333
+ @apply
334
+ border-none
335
+ bg-core-black
336
+ dark:bg-core-white
337
+ text-core-white
338
+ dark:text-core-black
339
+ ;
340
+ }
341
+
342
+ .chat-actions {
343
+ @apply
344
+ left-0
345
+ right-auto;
346
+ }
347
+ }
348
+ }
349
+ }
350
+
351
+ &:last-child {
352
+ @apply pb-4;
353
+ }
354
+
355
+ &.is-loading {
356
+ .chat-bubble {
357
+ * {
358
+ @apply opacity-0 pointer-events-none;
359
+ }
360
+ &::before {
361
+ @apply
362
+ content-[attr(data-loading)]
363
+ absolute
364
+ top-0
365
+ md:top-3.5
366
+ left-0
367
+ animate-loading-text-gradient;
368
+ }
369
+ }
370
+ }
371
+ }
372
+
373
+ /* Chat input area */
374
+ @utility chat-footer {
375
+ @apply
376
+ sticky
377
+ right-0
378
+ bottom-0
379
+ left-0
380
+ z-10
381
+ p-4
382
+ border-t
383
+ border-line-default
384
+ bg-background-surface
385
+ rounded-b-[inherit];
386
+
387
+ .chat-input {
388
+ @apply
389
+ flex
390
+ gap-2
391
+ items-end
392
+ max-w-full;
393
+
394
+ .input-control {
395
+ @apply
396
+ overflow-y-auto
397
+ flex-1
398
+ min-w-0
399
+ max-h-32;
400
+
401
+ .input-textarea {
402
+ @apply
403
+ py-2
404
+ min-h-[40px]
405
+ max-h-full;
406
+ }
407
+ }
408
+
409
+ button {
410
+ @apply shrink-0;
411
+ }
412
+ }
413
+ }
414
+
415
+ /* AI Chat variant */
416
+ @utility chat-secondary {
417
+
418
+ .chat-feed {
419
+ @apply
420
+ bg-background-surface-sunken;
421
+ }
422
+ .chat-group {
423
+ @apply
424
+ flex-col
425
+ items-stretch
426
+ md:flex-row
427
+ md:items-start;
428
+ .chat-messages {
429
+ @apply
430
+ px-0
431
+ w-full
432
+ lg:w-auto
433
+ lg:max-w-full;
434
+
435
+ .chat-message {
436
+ @apply
437
+ items-start
438
+ w-full;
439
+
440
+ .chat-bubble {
441
+ @apply
442
+ py-2
443
+ space-y-2
444
+ w-full
445
+ max-w-fit;
446
+ }
447
+ .chat-actions {
448
+ @apply
449
+ top-auto
450
+ -bottom-5
451
+ left-auto
452
+ right-0;
453
+ }
454
+ }
455
+ }
456
+
457
+ &:not(.is-owner) {
458
+ .chat-message {
459
+ .chat-bubble {
460
+ @apply
461
+ p-0
462
+ bg-transparent
463
+ border-none;
464
+ }
465
+ }
466
+ }
467
+
468
+ &.is-owner {
469
+ @apply
470
+ text-left;
471
+
472
+ .chat-messages {
473
+ @apply
474
+ items-start;
475
+
476
+ .chat-message {
477
+ @apply
478
+ flex-row;
479
+ }
480
+ }
481
+ }
482
+ }
483
+ }
484
+
485
+ /* Loading animation */
486
+ @keyframes loading-gradient {
487
+ 0% {
488
+ background-position: 200% 0;
489
+ }
490
+ 100% {
491
+ background-position: -200% 0;
492
+ }
493
+ }
494
+
495
+ @keyframes bubble-action-in {
496
+ from {
497
+ opacity: 0;
498
+ filter: blur(4px);
499
+ transform: scale(1.1);
500
+ }
501
+ to {
502
+ opacity: 1;
503
+ filter: blur(0px);
504
+ transform: scale(1);
505
+ }
506
+ }
@@ -0,0 +1,105 @@
1
+ /*----------------------------*/
2
+ /* CHECKMARK */
3
+ /*----------------------------*/
4
+
5
+ @utility checkmark {
6
+ --checkmark-size: 3rem;
7
+ --checkmark-inset: 0.25rem;
8
+ --checkmark-icon-size: 1.25rem;
9
+
10
+ @apply relative
11
+ inline-flex
12
+ shrink-0
13
+ h-(--checkmark-size)
14
+ w-(--checkmark-size)
15
+ rounded-full
16
+ overflow-hidden
17
+ border
18
+ border-line-default
19
+ bg-background-surface-elevated
20
+ transition-[border-color,box-shadow,background-color]
21
+ duration-300
22
+ ease-in-out-quart
23
+ text-shadow-2xs
24
+ text-shadow-brand-strong/50
25
+ ;
26
+
27
+ &::before {
28
+ @apply content-['']
29
+ absolute
30
+ z-0
31
+ inset-(--checkmark-inset)
32
+ rounded-full
33
+ bg-linear-to-b
34
+ from-brand-default
35
+ to-brand-moderate
36
+ dark:from-brand-moderate
37
+ dark:to-brand-default
38
+ transition-transform
39
+ duration-700
40
+ ease-in-out-quart
41
+ border
42
+ border-line-brand;
43
+
44
+ transform: translateY(calc(100% + var(--checkmark-inset)));
45
+ }
46
+
47
+ &::after {
48
+ @apply content-['']
49
+ absolute
50
+ z-10
51
+ mask
52
+ mask-check
53
+ bg-text-inverted
54
+ transition-transform
55
+ duration-1000
56
+ ease-in-out-quart
57
+ ;
58
+
59
+ height: var(--checkmark-icon-size);
60
+ width: var(--checkmark-icon-size);
61
+ left: calc(50% - var(--checkmark-icon-size) / 2);
62
+ top: calc(50% - var(--checkmark-icon-size) / 2);
63
+ transform: translateY(calc(100% + var(--checkmark-icon-size)));
64
+ }
65
+
66
+ &.is-active {
67
+ @apply border-line-brand;
68
+
69
+
70
+ &::before,
71
+ &::after {
72
+ transform: translateY(0);
73
+ }
74
+ }
75
+
76
+ &[class*="text-"] {
77
+ &.is-active {
78
+ @apply border-current;
79
+
80
+
81
+ &::before {
82
+ @apply bg-current border-current;
83
+ background-image: none;
84
+ }
85
+ }
86
+ }
87
+
88
+ &.checkmark-sm {
89
+ --checkmark-size: 2.25rem;
90
+ --checkmark-inset: 0.1875rem;
91
+ --checkmark-icon-size: 0.875rem;
92
+ }
93
+
94
+ &.checkmark-xs {
95
+ --checkmark-size: 1.5rem;
96
+ --checkmark-inset: 0.125rem;
97
+ --checkmark-icon-size: 0.625rem;
98
+ --checkmark-ring-width: 1px;
99
+ }
100
+
101
+ &.checkmark-invisible:not(.is-active) {
102
+ @apply bg-background-surface/0 border-line-default/0;
103
+
104
+ }
105
+ }