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,81 @@
1
+ /*----------------------------*/
2
+ /* COMMAND */
3
+ /*----------------------------*/
4
+
5
+ @utility command {
6
+ @apply overflow-hidden rounded-2xl border bg-background-surface border-line-default;
7
+
8
+ > :where(:first-child, .command-search) {
9
+ @apply p-2 border-b border-line-default;
10
+ }
11
+
12
+ > :where(:first-child, .command-search) > :where(:first-child, .command-input) {
13
+ @apply input-control input-ghost input-rounded-md;
14
+ }
15
+
16
+ > :where(:last-child, .command-list) {
17
+ @apply overflow-y-auto p-1.5 max-h-72;
18
+
19
+ > :where(section, .command-group) {
20
+ @apply mb-2;
21
+
22
+ > h3 {
23
+ @apply px-2 pb-1 text-xs uppercase text-text-tertiary;
24
+ }
25
+
26
+ > :where(ul, .command-items) {
27
+ @apply menu menu-sm;
28
+
29
+ > li > :where(button, a, .command-item) {
30
+ @apply px-2 py-1.5 rounded-lg text-sm;
31
+ }
32
+
33
+ > li.is-active > :where(button, a, .command-item),
34
+ > li > :where(button, a, .command-item).is-active {
35
+ @apply include-hover-primary-active text-text-brand;
36
+ }
37
+ }
38
+ }
39
+
40
+ > :where(.is-empty, .command-empty) {
41
+ @apply p-4 text-sm text-text-tertiary text-center;
42
+ }
43
+ }
44
+ }
45
+
46
+ /* Compatibility aliases */
47
+ @utility command-search {
48
+ @apply p-2 border-b border-line-default;
49
+ }
50
+
51
+ @utility command-input {
52
+ @apply input-control input-ghost input-rounded-md;
53
+ }
54
+
55
+ @utility command-list {
56
+ @apply overflow-y-auto p-1.5 max-h-72;
57
+ }
58
+
59
+ @utility command-group {
60
+ @apply mb-2;
61
+
62
+ > h3 {
63
+ @apply px-2 pb-1 text-xs uppercase text-text-tertiary;
64
+ }
65
+
66
+ > ul {
67
+ @apply menu menu-sm;
68
+ }
69
+ }
70
+
71
+ @utility command-item {
72
+ @apply px-2 py-1.5 rounded-lg text-sm;
73
+
74
+ &.is-active {
75
+ @apply include-hover-primary-active text-text-brand;
76
+ }
77
+ }
78
+
79
+ @utility is-empty {
80
+ @apply p-4 text-sm text-text-tertiary text-center;
81
+ }
@@ -0,0 +1,227 @@
1
+ .site-header {
2
+ position: sticky;
3
+ top: 0;
4
+ z-index: 50;
5
+ background: rgba(9, 10, 12, 0.9);
6
+ backdrop-filter: blur(12px);
7
+ border-bottom: 1px solid var(--border-subtle);
8
+ }
9
+
10
+ .site-header-inner {
11
+ display: flex;
12
+ align-items: center;
13
+ justify-content: space-between;
14
+ gap: 2rem;
15
+ padding: 1.25rem 2.5rem;
16
+ max-width: 1200px;
17
+ margin: 0 auto;
18
+ }
19
+
20
+ .site-logo {
21
+ font-size: 1.25rem;
22
+ font-weight: 700;
23
+ letter-spacing: 0.04em;
24
+ text-transform: uppercase;
25
+ color: var(--text-primary);
26
+ }
27
+
28
+ .site-nav {
29
+ display: flex;
30
+ gap: 1.5rem;
31
+ font-size: 0.95rem;
32
+ color: var(--text-secondary);
33
+ }
34
+
35
+ .site-hero {
36
+ padding: 4rem 2.5rem 2rem;
37
+ max-width: 1200px;
38
+ margin: 0 auto;
39
+ }
40
+
41
+ .site-hero h1 {
42
+ font-size: clamp(2.5rem, 4vw, 3.5rem);
43
+ line-height: 1.05;
44
+ margin-bottom: 1rem;
45
+ }
46
+
47
+ .site-hero p {
48
+ max-width: 640px;
49
+ font-size: 1.1rem;
50
+ color: var(--text-secondary);
51
+ }
52
+
53
+ .contest-grid {
54
+ display: grid;
55
+ grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
56
+ gap: 1.5rem;
57
+ padding: 0 2.5rem 3rem;
58
+ max-width: 1200px;
59
+ margin: 0 auto;
60
+ }
61
+
62
+ .contest-card {
63
+ border: 1px solid var(--border-subtle);
64
+ border-radius: 1.25rem;
65
+ padding: 1.5rem;
66
+ background: linear-gradient(160deg, rgba(255, 255, 255, 0.04), rgba(255, 255, 255, 0));
67
+ display: grid;
68
+ gap: 1rem;
69
+ min-height: 220px;
70
+ }
71
+
72
+ .contest-card h3 {
73
+ font-size: 1.4rem;
74
+ }
75
+
76
+ .contest-card p {
77
+ color: var(--text-secondary);
78
+ }
79
+
80
+ .contest-meta {
81
+ font-size: 0.9rem;
82
+ color: var(--text-tertiary);
83
+ display: flex;
84
+ gap: 0.75rem;
85
+ flex-wrap: wrap;
86
+ }
87
+
88
+ .panel-page {
89
+ max-width: 1200px;
90
+ margin: 0 auto;
91
+ padding: 2.5rem;
92
+ }
93
+
94
+ .contest-layout {
95
+ display: grid;
96
+ grid-template-columns: minmax(0, 1fr) 320px;
97
+ gap: 2rem;
98
+ }
99
+
100
+ .contest-sidebar {
101
+ position: sticky;
102
+ top: 120px;
103
+ display: grid;
104
+ gap: 1.5rem;
105
+ align-self: start;
106
+ }
107
+
108
+ .contest-list {
109
+ display: grid;
110
+ gap: 1rem;
111
+ }
112
+
113
+ .contest-entry {
114
+ border: 1px solid var(--border-subtle);
115
+ border-radius: 1rem;
116
+ padding: 1.25rem;
117
+ background: rgba(255, 255, 255, 0.02);
118
+ display: grid;
119
+ gap: 0.75rem;
120
+ }
121
+
122
+ .contest-image {
123
+ width: 100%;
124
+ max-height: 240px;
125
+ object-fit: cover;
126
+ border-radius: 0.75rem;
127
+ border: 1px solid var(--border-subtle);
128
+ }
129
+
130
+ .upload-progress {
131
+ display: flex;
132
+ align-items: center;
133
+ gap: 0.75rem;
134
+ font-size: 0.85rem;
135
+ color: var(--text-tertiary);
136
+ }
137
+
138
+ .upload-progress progress {
139
+ width: 100%;
140
+ height: 10px;
141
+ border-radius: 999px;
142
+ overflow: hidden;
143
+ }
144
+
145
+ .upload-field {
146
+ display: grid;
147
+ gap: 0.5rem;
148
+ }
149
+
150
+ .upload-dropzone {
151
+ border: 1px dashed var(--border-subtle);
152
+ border-radius: 0.75rem;
153
+ padding: 1rem;
154
+ cursor: pointer;
155
+ transition: border-color 0.2s ease, background 0.2s ease;
156
+ background: rgba(255, 255, 255, 0.02);
157
+ }
158
+
159
+ .upload-dropzone.is-dragging {
160
+ border-color: var(--border-strong, #cbd5f5);
161
+ background: rgba(59, 130, 246, 0.08);
162
+ }
163
+
164
+ .contest-entry h4 {
165
+ font-size: 1.1rem;
166
+ }
167
+
168
+ .contest-entry .vote-count {
169
+ font-size: 0.85rem;
170
+ color: var(--text-tertiary);
171
+ }
172
+
173
+ .hero-surface {
174
+ border: 1px solid var(--border-subtle);
175
+ border-radius: 1.5rem;
176
+ padding: 2rem;
177
+ background: radial-gradient(circle at top left, rgba(255, 83, 160, 0.15), transparent 50%),
178
+ radial-gradient(circle at bottom right, rgba(56, 189, 248, 0.15), transparent 45%),
179
+ rgba(255, 255, 255, 0.02);
180
+ }
181
+
182
+ .admin-grid {
183
+ display: grid;
184
+ gap: 2rem;
185
+ }
186
+
187
+ .admin-grid form {
188
+ display: grid;
189
+ gap: 1rem;
190
+ }
191
+
192
+ .badge-status {
193
+ display: inline-flex;
194
+ align-items: center;
195
+ gap: 0.4rem;
196
+ padding: 0.3rem 0.6rem;
197
+ border-radius: 999px;
198
+ font-size: 0.75rem;
199
+ text-transform: uppercase;
200
+ letter-spacing: 0.08em;
201
+ background: rgba(34, 197, 94, 0.15);
202
+ color: #a7f3d0;
203
+ }
204
+
205
+ .badge-ended {
206
+ background: rgba(248, 113, 113, 0.18);
207
+ color: #fecaca;
208
+ }
209
+
210
+ @media (max-width: 900px) {
211
+ .site-header-inner {
212
+ flex-direction: column;
213
+ align-items: flex-start;
214
+ }
215
+
216
+ .site-nav {
217
+ flex-wrap: wrap;
218
+ }
219
+
220
+ .contest-layout {
221
+ grid-template-columns: 1fr;
222
+ }
223
+
224
+ .contest-sidebar {
225
+ position: static;
226
+ }
227
+ }
@@ -0,0 +1,65 @@
1
+ /*----------------------------*/
2
+ /* COUNTDOWN */
3
+ /*----------------------------*/
4
+
5
+ .countdown {
6
+ @apply
7
+ leading-[0]
8
+ inline-flex
9
+ items-baseline
10
+ ;
11
+ > * {
12
+ @apply
13
+ not-italic
14
+ ;
15
+ }
16
+
17
+ > i:not(:last-child) {
18
+ @apply
19
+ mr-0.5
20
+ ;
21
+ }
22
+ > span {
23
+ @apply
24
+ h-4
25
+ leading-none
26
+ inline-block
27
+ overflow-y-hidden
28
+ /* mx-auto */
29
+ ;
30
+ &::before {
31
+ @apply
32
+ relative
33
+ content-["00\a_01\a_02\a_03\a_04\a_05\a_06\a_07\a_08\a_09\a_10\a_11\a_12\a_13\a_14\a_15\a_16\a_17\a_18\a_19\a_20\a_21\a_22\a_23\a_24\a_25\a_26\a_27\a_28\a_29\a_30\a_31\a_32\a_33\a_34\a_35\a_36\a_37\a_38\a_39\a_40\a_41\a_42\a_43\a_44\a_45\a_46\a_47\a_48\a_49\a_50\a_51\a_52\a_53\a_54\a_55\a_56\a_57\a_58\a_59\a_60\a_61\a_62\a_63\a_64\a_65\a_66\a_67\a_68\a_69\a_70\a_71\a_72\a_73\a_74\a_75\a_76\a_77\a_78\a_79\a_80\a_81\a_82\a_83\a_84\a_85\a_86\a_87\a_88\a_89\a_90\a_91\a_92\a_93\a_94\a_95\a_96\a_97\a_98\a_99\a"]
34
+ whitespace-pre
35
+ text-center
36
+ transition-all
37
+ duration-1000
38
+ top-[calc(var(--value)_*_-1em)]
39
+ ease-[cubic-bezier(0.9,0,0.1,1)]
40
+ ;
41
+ }
42
+ }
43
+ }
44
+
45
+ .chip {
46
+ .countdown > span {
47
+ @apply
48
+ h-4
49
+ ;
50
+ }
51
+ &.chip-sm {
52
+ .countdown > span {
53
+ @apply
54
+ h-3
55
+ ;
56
+ }
57
+ }
58
+ &.chip-xs {
59
+ .countdown > span {
60
+ @apply
61
+ h-2
62
+ ;
63
+ }
64
+ }
65
+ }
@@ -0,0 +1,124 @@
1
+ /*----------------------------*/
2
+ /* DATEPICKER */
3
+ /*----------------------------*/
4
+
5
+ @utility datepicker {
6
+ @apply
7
+ flex
8
+ overflow-hidden
9
+ flex-col
10
+ w-80
11
+ surface
12
+ rounded-3xl
13
+ border
14
+ shadow-lg
15
+ p-3
16
+ space-y-0.5;
17
+
18
+ /* Add styles for ranges */
19
+ &.has-ranges {
20
+ @apply w-auto flex-row;
21
+
22
+ .datepicker-ranges {
23
+ @apply w-48 border-r border-line-default p-2;
24
+
25
+ button {
26
+ @apply w-full text-left px-3 py-2 rounded-lg text-text-secondary hover:text-text-default hover:bg-background-surface-sunken;
27
+
28
+ &.is-selected {
29
+ @apply text-text-default bg-background-surface-sunken;
30
+ }
31
+ }
32
+ }
33
+ }
34
+
35
+ > ul {
36
+ > li {
37
+ @apply flex items-center justify-center;
38
+
39
+ button {
40
+ @apply
41
+ flex
42
+ justify-center
43
+ items-center
44
+ m-px
45
+ text-sm
46
+ text-text-default
47
+ rounded-full
48
+ border
49
+ border-transparent
50
+ size-10
51
+ hover:border-background-brand-hover
52
+ hover:text-background-brand-hover
53
+ disabled:opacity-50
54
+ disabled:pointer-events-none
55
+ focus:outline-hidden
56
+ focus:border-background-brand
57
+ focus:text-text-brand
58
+ ;
59
+ }
60
+
61
+ &:has(.range-start) ~ li > div,
62
+ > div.range-start ~ div {
63
+ @apply bg-core-ui-200 dark:bg-core-ui-700;
64
+ }
65
+ &:has(.range-end) ~ li > div,
66
+ > div.range-end ~ div {
67
+ @apply bg-transparent dark:bg-transparent;
68
+ }
69
+
70
+ > div {
71
+ &.is-selected,
72
+ &.range-start,
73
+ &.range-end {
74
+ > button {
75
+ @apply text-text-inverted bg-background-brand;
76
+ }
77
+ }
78
+
79
+ &.range-start,
80
+ &.range-end {
81
+ @apply bg-core-ui-200 dark:bg-core-ui-700;
82
+ }
83
+
84
+ &.range-start {
85
+ @apply rounded-l-full;
86
+ }
87
+
88
+ &.range-end {
89
+ @apply rounded-r-full;
90
+ }
91
+ }
92
+
93
+
94
+ }
95
+ }
96
+ }
97
+
98
+ @utility datepicker-header {
99
+ @apply flex items-center justify-between pb-3 mx-1.5 text-sm gap-1;
100
+
101
+ select {
102
+ @apply
103
+ appearance-none
104
+ include-active
105
+ bg-transparent
106
+ px-1!
107
+ bg-none
108
+ rounded-sm
109
+ flex-1
110
+ font-medium
111
+ ;
112
+ &:first-of-type {
113
+ @apply text-right;
114
+ }
115
+ }
116
+ }
117
+
118
+ @utility datepicker-subheader {
119
+ @apply flex pb-1.5;
120
+
121
+ > span {
122
+ @apply block m-px w-10 text-sm text-center text-core-ui-500 dark:text-core-ui-400;
123
+ }
124
+ }
@@ -0,0 +1,72 @@
1
+ /*----------------------------*/
2
+ /* DIVIDER */
3
+ /*----------------------------*/
4
+
5
+ @utility divider {
6
+ @apply flex items-center w-full text-sm leading-none text-center text-text-tertiary justify-stretch min-w-fit;
7
+
8
+ /* Default horizontal divider */
9
+ @apply flex-row gap-4 py-4;
10
+
11
+ /* Lines using pseudo elements */
12
+ &::before,
13
+ &::after {
14
+ @apply content-[''] bg-line-default;
15
+ }
16
+
17
+ /* Horizontal divider lines */
18
+ &:not(.divider-vertical) {
19
+ &::before,
20
+ &::after {
21
+ @apply flex-1 h-px;
22
+ }
23
+ }
24
+
25
+ /* Vertical divider lines */
26
+ &.divider-vertical {
27
+ @apply flex-col py-0 mx-4 w-auto h-auto;
28
+
29
+ &::before,
30
+ &::after {
31
+ @apply w-px h-full;
32
+ }
33
+ }
34
+
35
+ /* Text alignment modifiers */
36
+ &.divider-start {
37
+ &::before {
38
+ @apply flex-[0.25];
39
+ }
40
+ &::after {
41
+ @apply flex-[1];
42
+ }
43
+ }
44
+
45
+ &.divider-end {
46
+ &::before {
47
+ @apply flex-[1];
48
+ }
49
+ &::after {
50
+ @apply flex-[0.25];
51
+ }
52
+ }
53
+
54
+ /* Empty divider (no content) */
55
+ &:empty {
56
+ @apply gap-0;
57
+ &::before {
58
+ @apply flex-1;
59
+ }
60
+ &::after {
61
+ @apply hidden;
62
+ }
63
+ }
64
+
65
+ /* Variants */
66
+ &.divider-highlight {
67
+ &::before,
68
+ &::after {
69
+ @apply bg-line-highlight;
70
+ }
71
+ }
72
+ }
@@ -0,0 +1,142 @@
1
+ /*----------------------------*/
2
+ /* DRAWER */
3
+ /*----------------------------*/
4
+
5
+ @utility drawer-container {
6
+ @apply relative w-full min-h-screen;
7
+ }
8
+
9
+ @utility drawer {
10
+ @apply relative w-full h-full;
11
+
12
+ .drawer-aside {
13
+ @apply flex fixed inset-0 z-40 w-72 transition-transform translate-x-0 pointer-events-auto;
14
+
15
+ > .drawer-button {
16
+ @apply absolute inset-0 rounded-3xl include-interactive;
17
+ &.drawer-button {
18
+ @apply -outline-offset-2 rounded-[calc(1rem*2.25)];
19
+ }
20
+ }
21
+ }
22
+
23
+ .drawer-body {
24
+ @apply relative
25
+ z-30
26
+ transition-[padding-left];
27
+
28
+ .drawer-content {
29
+ @apply mx-auto w-full;
30
+ }
31
+ }
32
+
33
+ .drawer-button,
34
+ .drawer-body,
35
+ .drawer-aside {
36
+ @apply ease-out-cubic;
37
+ }
38
+
39
+ &.is-closed {
40
+ > .drawer-aside {
41
+ @apply duration-300 -translate-x-64;
42
+
43
+ &:hover {
44
+ @apply -translate-x-60;
45
+ }
46
+
47
+ > .card > * {
48
+ @apply opacity-0 pointer-events-none;
49
+ }
50
+
51
+ > .drawer-button {
52
+ @apply absolute inset-0;
53
+ }
54
+ }
55
+
56
+ &:has(.drawer-aside:hover) {
57
+ .drawer-aside {
58
+ @apply -translate-x-60;
59
+ }
60
+ }
61
+
62
+ > .drawer-body {
63
+ @apply pl-0 duration-500;
64
+
65
+ /* .drawer-button {
66
+ @apply block;
67
+ } */
68
+
69
+ .drawer-content {
70
+ @apply pr-4
71
+ pl-8
72
+ max-w-[1600px];
73
+ }
74
+ }
75
+ }
76
+
77
+ &:not(.is-closed) {
78
+ > .drawer-aside {
79
+ @apply duration-500 translate-x-0 ease-out-quint;
80
+ > .drawer-button {
81
+ @apply pointer-events-none;
82
+ }
83
+ }
84
+
85
+ > .drawer-body {
86
+ @apply duration-200
87
+ pl-[17rem];
88
+
89
+ .drawer-button {
90
+ @apply hidden;
91
+ }
92
+
93
+ .drawer-content {
94
+ @apply px-4 max-w-7xl;
95
+ }
96
+ }
97
+ }
98
+
99
+ &.drawer-mobile {
100
+ @media (max-width: 768px) {
101
+ .drawer-body {
102
+ @apply pl-4;
103
+ }
104
+ }
105
+ }
106
+ /*
107
+ &.drawer-mobile {
108
+ @apply block;
109
+
110
+ > .drawer-aside {
111
+ @apply hidden lg:flex lg:translate-x-0 lg:pointer-events-auto lg:opacity-100 lg:fixed;
112
+
113
+ > .drawer-button {
114
+ @apply lg:hidden;
115
+ }
116
+
117
+ > .card > * {
118
+ @apply lg:pointer-events-auto lg:opacity-100;
119
+ }
120
+ }
121
+
122
+ > .drawer-body {
123
+ @apply pl-0
124
+ lg:pl-64
125
+ xl:pl-[17rem];
126
+
127
+ .drawer-button {
128
+ @apply block lg:hidden;
129
+ }
130
+ }
131
+
132
+ &.is-closed {
133
+ > .drawer-aside {
134
+ @apply lg:translate-x-0 lg:opacity-100;
135
+ }
136
+
137
+ > .drawer-body {
138
+ @apply lg:pl-64 xl:pl-[17rem];
139
+ }
140
+ }
141
+ } */
142
+ }
@@ -0,0 +1,22 @@
1
+ /*----------------------------*/
2
+ /* DROPDOWN */
3
+ /*----------------------------*/
4
+
5
+ @utility dropdown-menu {
6
+ @apply rounded-xl border divide-y shadow-xl border-line-default bg-core-white dark:bg-core-ui-800 divide-line-default;
7
+
8
+ > .dropdown-search {
9
+ @apply rounded-b-none;
10
+ }
11
+
12
+ > *:first-child {
13
+ @apply rounded-t-lg;
14
+ }
15
+ > *:last-child {
16
+ @apply rounded-b-lg;
17
+ }
18
+ }
19
+
20
+ @utility dropdown-options {
21
+ @apply overflow-y-auto overflow-x-hidden max-h-80 min-h-11;
22
+ }