arekui 1.0.0 → 2.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 (99) hide show
  1. package/CHANGELOG.md +49 -0
  2. package/LICENSE +21 -21
  3. package/README.md +26 -198
  4. package/arekui.css +5930 -3279
  5. package/arekui.d.ts +328 -328
  6. package/arekui.js +817 -450
  7. package/assets/img/grunge-wall-texture-freepick-kues1.webp +0 -0
  8. package/assets/img/logo.png +0 -0
  9. package/dist/css/arekui.base.min.css +1 -0
  10. package/dist/css/arekui.broadsheet.min.css +1 -0
  11. package/dist/css/arekui.brutalist.min.css +1 -0
  12. package/dist/css/arekui.default.min.css +1 -0
  13. package/dist/css/arekui.full.min.css +1 -0
  14. package/dist/css/arekui.min.css +1 -0
  15. package/dist/css/arekui.neo.min.css +1 -0
  16. package/dist/css/arekui.pixel.min.css +1 -0
  17. package/dist/js/arekui.min.js +2 -0
  18. package/package.json +64 -57
  19. package/scripts/build-css.js +95 -0
  20. package/scripts/build-custom.js +287 -318
  21. package/scripts/build-js.js +68 -0
  22. package/scripts/clean.js +13 -0
  23. package/scripts/dev.js +97 -0
  24. package/scripts/imports.js +18 -0
  25. package/scripts/split.js +256 -0
  26. package/src/arekui.base.css +63 -0
  27. package/src/arekui.broadsheet.css +6 -0
  28. package/src/arekui.brutalist.css +8 -0
  29. package/src/arekui.core.css +64 -0
  30. package/src/arekui.css +22 -5
  31. package/src/arekui.default.css +6 -0
  32. package/src/arekui.neo.css +8 -0
  33. package/src/arekui.pixel.css +8 -0
  34. package/src/base/brutalist-overrides.css +254 -0
  35. package/src/base/neo-overrides.css +330 -315
  36. package/src/base/pixel-overrides.css +336 -0
  37. package/src/base/reset.css +179 -65
  38. package/src/base/theme-brutalist.css +111 -0
  39. package/src/base/theme-default.css +184 -0
  40. package/src/base/theme-neo.css +108 -0
  41. package/src/base/theme-pixel.css +111 -0
  42. package/src/base/tokens.css +59 -302
  43. package/src/components/accordion.css +32 -33
  44. package/src/components/alert.css +24 -25
  45. package/src/components/badge.css +31 -32
  46. package/src/components/breadcrumb.css +31 -32
  47. package/src/components/broadsheet.css +264 -0
  48. package/src/components/button.css +102 -101
  49. package/src/components/card.css +22 -23
  50. package/src/components/carousel.css +49 -13
  51. package/src/components/chat.css +77 -76
  52. package/src/components/description-list.css +34 -0
  53. package/src/components/docs.css +252 -0
  54. package/src/components/empty.css +36 -0
  55. package/src/components/file-upload.css +49 -50
  56. package/src/components/footer.css +40 -25
  57. package/src/components/forms.css +67 -68
  58. package/src/components/heading.css +27 -0
  59. package/src/components/hero.css +20 -21
  60. package/src/components/join.css +12 -13
  61. package/src/components/kbd.css +15 -0
  62. package/src/components/link.css +22 -23
  63. package/src/components/loading.css +109 -0
  64. package/src/components/menu.css +104 -54
  65. package/src/components/misc.css +94 -55
  66. package/src/components/modal.css +30 -31
  67. package/src/components/navbar.css +166 -36
  68. package/src/components/pagination.css +50 -45
  69. package/src/components/popover.css +68 -69
  70. package/src/components/progress.css +17 -18
  71. package/src/components/prose.css +78 -78
  72. package/src/components/rating.css +35 -36
  73. package/src/components/scroll-top.css +34 -34
  74. package/src/components/segmented.css +44 -0
  75. package/src/components/sidebar.css +377 -0
  76. package/src/components/skeleton.css +52 -52
  77. package/src/components/spinner.css +36 -0
  78. package/src/components/swap.css +43 -43
  79. package/src/components/table.css +20 -21
  80. package/src/components/tabs.css +22 -23
  81. package/src/components/tag.css +99 -99
  82. package/src/components/textured.css +52 -32
  83. package/src/components/timeline.css +32 -33
  84. package/src/components/toast.css +132 -132
  85. package/src/components/tooltip.css +22 -23
  86. package/src/utilities/borders.css +150 -150
  87. package/src/utilities/brutalist-utilities.css +49 -0
  88. package/src/utilities/colors.css +79 -71
  89. package/src/utilities/hover.css +31 -31
  90. package/src/utilities/layout.css +98 -98
  91. package/src/utilities/neo-utilities.css +86 -93
  92. package/src/utilities/pixel-utilities.css +88 -0
  93. package/src/utilities/responsive.css +131 -126
  94. package/src/utilities/sizing.css +98 -89
  95. package/src/utilities/spacing.css +132 -129
  96. package/src/utilities/typography.css +95 -92
  97. package/dist/arekui.min.css +0 -1
  98. package/dist/arekui.min.js +0 -2
  99. package/src/components/drawer.css +0 -53
@@ -1,78 +1,79 @@
1
1
  /* CHAT BUBBLE */
2
- .ar-chat {
3
- display: flex;
4
- flex-direction: column;
5
- gap: var(--ar-s-3);
6
- max-width: 48rem;
7
- }
8
- .ar-chat-bubble {
9
- position: relative;
10
- padding: var(--ar-s-3) var(--ar-s-4);
11
- border-radius: var(--ar-radius-box);
12
- background: var(--ar-base-200);
13
- color: var(--ar-base-content);
14
- max-width: 80%;
15
- line-height: 1.5;
16
- word-wrap: break-word;
17
- }
18
- .ar-chat-start {
19
- align-self: flex-start;
20
- }
21
- .ar-chat-end {
22
- align-self: flex-end;
23
- }
24
- .ar-chat-start .ar-chat-bubble {
25
- border-bottom-left-radius: 0;
26
- }
27
- .ar-chat-end .ar-chat-bubble {
28
- background: var(--ar-primary);
29
- color: var(--ar-primary-content);
30
- border-bottom-right-radius: 0;
31
- }
32
- .ar-chat-avatar {
33
- width: 2.5rem;
34
- height: 2.5rem;
35
- border-radius: var(--ar-radius-pill);
36
- overflow: hidden;
37
- flex-shrink: 0;
38
- }
39
- .ar-chat-avatar img {
40
- width: 100%;
41
- height: 100%;
42
- object-fit: cover;
43
- }
44
- .ar-chat-start .ar-chat-header,
45
- .ar-chat-end .ar-chat-header {
46
- display: flex;
47
- align-items: center;
48
- gap: var(--ar-s-2);
49
- margin-bottom: var(--ar-s-1);
50
- font-size: 0.75rem;
51
- font-weight: 600;
52
- color: var(--ar-gray-600);
53
- }
54
- .ar-chat-end .ar-chat-header {
55
- justify-content: flex-end;
56
- }
57
- .ar-chat-footer {
58
- font-size: 0.7rem;
59
- color: var(--ar-gray-500);
60
- margin-top: var(--ar-s-1);
61
- }
62
- .ar-chat-start .ar-chat-footer {
63
- text-align: left;
64
- }
65
- .ar-chat-end .ar-chat-footer {
66
- text-align: right;
67
- }
68
- .ar-chat-sender {
69
- display: flex;
70
- align-items: flex-end;
71
- gap: var(--ar-s-2);
72
- }
73
- .ar-chat-receiver {
74
- display: flex;
75
- align-items: flex-end;
76
- gap: var(--ar-s-2);
77
- flex-direction: row-reverse;
2
+ .ar-chat {
3
+ display: flex;
4
+ flex-direction: column;
5
+ gap: var(--ar-s-3);
6
+ max-width: 48rem;
7
+ }
8
+ .ar-chat-bubble {
9
+ position: relative;
10
+ padding: var(--ar-s-3) var(--ar-s-4);
11
+ border-radius: var(--ar-radius-box);
12
+ background: var(--ar-base-200);
13
+ color: var(--ar-base-content);
14
+ max-width: 80%;
15
+ line-height: 1.5;
16
+ word-wrap: break-word;
17
+ }
18
+ .ar-chat-start {
19
+ align-self: flex-start;
20
+ }
21
+ .ar-chat-end {
22
+ align-self: flex-end;
23
+ }
24
+ .ar-chat-start .ar-chat-bubble {
25
+ border-bottom-left-radius: 0;
26
+ }
27
+ .ar-chat-end .ar-chat-bubble {
28
+ background: var(--ar-primary);
29
+ color: var(--ar-primary-content);
30
+ border-bottom-right-radius: 0;
31
+ }
32
+ .ar-chat-avatar {
33
+ width: 2.5rem;
34
+ height: 2.5rem;
35
+ border-radius: var(--ar-radius-pill);
36
+ overflow: hidden;
37
+ flex-shrink: 0;
38
+ }
39
+ .ar-chat-avatar img {
40
+ width: 100%;
41
+ height: 100%;
42
+ object-fit: cover;
43
+ }
44
+ .ar-chat-start .ar-chat-header,
45
+ .ar-chat-end .ar-chat-header {
46
+ display: flex;
47
+ align-items: center;
48
+ gap: var(--ar-s-2);
49
+ margin-bottom: var(--ar-s-1);
50
+ font-size: 0.75rem;
51
+ font-weight: 600;
52
+ color: var(--ar-base-content);
53
+ }
54
+ .ar-chat-end .ar-chat-header {
55
+ justify-content: flex-end;
56
+ }
57
+ .ar-chat-footer {
58
+ font-size: 0.7rem;
59
+ color: var(--ar-base-content);
60
+ opacity: 0.7;
61
+ margin-top: var(--ar-s-1);
62
+ }
63
+ .ar-chat-start .ar-chat-footer {
64
+ text-align: left;
65
+ }
66
+ .ar-chat-end .ar-chat-footer {
67
+ text-align: right;
68
+ }
69
+ .ar-chat-sender {
70
+ display: flex;
71
+ align-items: flex-end;
72
+ gap: var(--ar-s-2);
73
+ }
74
+ .ar-chat-receiver {
75
+ display: flex;
76
+ align-items: flex-end;
77
+ gap: var(--ar-s-2);
78
+ flex-direction: row-reverse;
78
79
  }
@@ -0,0 +1,34 @@
1
+ .ar-dl {
2
+ display: grid;
3
+ grid-template-columns: minmax(0, max-content) minmax(0, 1fr);
4
+ margin: 0;
5
+ }
6
+ .ar-dt {
7
+ padding: var(--ar-s-3) var(--ar-s-6) var(--ar-s-3) 0;
8
+ color: var(--ar-gray-600);
9
+ font-weight: 600;
10
+ border-bottom: var(--ar-border-width) solid var(--ar-base-300);
11
+ }
12
+ .ar-dd {
13
+ padding: var(--ar-s-3) 0;
14
+ margin: 0;
15
+ color: var(--ar-base-content);
16
+ border-bottom: var(--ar-border-width) solid var(--ar-base-300);
17
+ }
18
+ /* The last pair closes the list without a trailing rule: -n + 2 clears the
19
+ dt and dd of the final row in both the two-column and stacked layouts. */
20
+ .ar-dl > :nth-last-child(-n + 2) {
21
+ border-bottom: 0;
22
+ }
23
+ @media (max-width: 479px) {
24
+ .ar-dl {
25
+ grid-template-columns: 1fr;
26
+ }
27
+ .ar-dt {
28
+ padding: var(--ar-s-3) 0 0;
29
+ border-bottom: 0;
30
+ }
31
+ .ar-dd {
32
+ padding: var(--ar-s-1) 0 var(--ar-s-3);
33
+ }
34
+ }
@@ -0,0 +1,252 @@
1
+ /* DOCS (documentation-site patterns) */
2
+ .ar-docs-section {
3
+ scroll-margin-top: var(--ar-nav-h);
4
+ }
5
+ .ar-docs-main :is(h2, h3)[id] {
6
+ scroll-margin-top: var(--ar-nav-h);
7
+ }
8
+ .ar-docs-block {
9
+ border: 1px dashed var(--ar-base-300);
10
+ border-radius: var(--ar-radius-box);
11
+ padding: var(--ar-s-6);
12
+ }
13
+ .ar-docs-usage {
14
+ position: relative;
15
+ margin-top: var(--ar-s-4);
16
+ padding: var(--ar-s-4);
17
+ background: var(--ar-base-100);
18
+ border: 1px solid var(--ar-base-300);
19
+ border-left: 4px solid var(--ar-primary);
20
+ border-radius: var(--ar-radius-box);
21
+ }
22
+ .ar-docs-usage-tag {
23
+ display: inline-block;
24
+ margin-bottom: var(--ar-s-2);
25
+ font-size: 0.7rem;
26
+ font-weight: 700;
27
+ letter-spacing: 0.08em;
28
+ text-transform: uppercase;
29
+ color: var(--ar-primary-text);
30
+ }
31
+ .ar-docs-usage pre {
32
+ margin: 0;
33
+ padding: var(--ar-s-3);
34
+ background: var(--ar-base-200);
35
+ border: 1px solid var(--ar-base-300);
36
+ border-radius: var(--ar-radius-field);
37
+ overflow-x: auto;
38
+ font-size: 0.8rem;
39
+ line-height: 1.7;
40
+ }
41
+ .ar-docs-usage pre code {
42
+ background: transparent;
43
+ padding: 0;
44
+ border: 0;
45
+ border-radius: 0;
46
+ font-size: inherit;
47
+ }
48
+ .ar-docs-usage-hint {
49
+ margin: var(--ar-s-2) 0 0;
50
+ font-size: 0.8rem;
51
+ color: var(--ar-gray-600);
52
+ }
53
+ .ar-docs-usage .ar-docs-copy {
54
+ top: var(--ar-s-3);
55
+ right: var(--ar-s-3);
56
+ }
57
+ .ar-docs-lede {
58
+ margin-top: var(--ar-s-3);
59
+ max-width: 72ch;
60
+ font-size: 1.05rem;
61
+ line-height: 1.6;
62
+ color: var(--ar-gray-600);
63
+ }
64
+ .ar-docs-pager {
65
+ margin: var(--ar-s-8) 0;
66
+ }
67
+ .ar-docs-example {
68
+ position: relative;
69
+ margin-top: var(--ar-s-4);
70
+ background: var(--ar-base-100);
71
+ border: 1px solid var(--ar-base-300);
72
+ border-left: 4px solid var(--ar-primary);
73
+ border-radius: var(--ar-radius-box);
74
+ }
75
+ .ar-docs-example-head {
76
+ display: flex;
77
+ align-items: center;
78
+ justify-content: space-between;
79
+ flex-wrap: wrap;
80
+ gap: var(--ar-s-2);
81
+ padding: var(--ar-s-3) var(--ar-s-4) 0;
82
+ }
83
+ .ar-docs-example-head .ar-docs-usage-tag {
84
+ margin-bottom: 0;
85
+ }
86
+ .ar-docs-example-tabs {
87
+ display: inline-flex;
88
+ gap: var(--ar-s-1);
89
+ }
90
+ .ar-docs-example-tab {
91
+ font-size: 0.7rem;
92
+ font-weight: 700;
93
+ letter-spacing: 0.06em;
94
+ text-transform: uppercase;
95
+ padding: 0.25rem var(--ar-s-2);
96
+ color: var(--ar-gray-600);
97
+ background: transparent;
98
+ border: 1px solid transparent;
99
+ border-radius: var(--ar-radius-field);
100
+ cursor: pointer;
101
+ transition: color 0.15s ease, background-color 0.15s ease,
102
+ border-color 0.15s ease;
103
+ }
104
+ .ar-docs-example-tab:hover {
105
+ color: var(--ar-primary-text);
106
+ }
107
+ .ar-docs-example-tab[aria-selected="true"] {
108
+ color: var(--ar-primary-text);
109
+ background: var(--ar-base-200);
110
+ border-color: var(--ar-base-300);
111
+ }
112
+ .ar-docs-example-preview {
113
+ padding: var(--ar-s-4);
114
+ }
115
+ .ar-docs-example-code {
116
+ position: relative;
117
+ padding: 0 var(--ar-s-4) var(--ar-s-4);
118
+ }
119
+ .ar-docs-example-code pre {
120
+ margin: 0;
121
+ padding: var(--ar-s-3);
122
+ background: var(--ar-base-200);
123
+ border: 1px solid var(--ar-base-300);
124
+ border-radius: var(--ar-radius-field);
125
+ overflow-x: auto;
126
+ font-size: 0.8rem;
127
+ line-height: 1.7;
128
+ }
129
+ .ar-docs-example-code pre code {
130
+ background: transparent;
131
+ padding: 0;
132
+ border: 0;
133
+ border-radius: 0;
134
+ font-size: inherit;
135
+ }
136
+ .ar-docs-example-code .ar-docs-copy {
137
+ top: var(--ar-s-3);
138
+ right: calc(var(--ar-s-4) + var(--ar-s-2));
139
+ }
140
+ .ar-docs-options th {
141
+ white-space: nowrap;
142
+ }
143
+ .ar-docs-options td {
144
+ vertical-align: top;
145
+ }
146
+ .ar-docs-options td code {
147
+ word-break: normal;
148
+ overflow-wrap: normal;
149
+ }
150
+ .ar-docs-copy {
151
+ position: absolute;
152
+ top: var(--ar-s-2);
153
+ right: var(--ar-s-2);
154
+ padding: 0.25rem var(--ar-s-2);
155
+ font-size: 0.7rem;
156
+ font-weight: 700;
157
+ letter-spacing: 0.06em;
158
+ text-transform: uppercase;
159
+ line-height: 1.4;
160
+ color: var(--ar-base-content);
161
+ background: var(--ar-base-100);
162
+ border: 1px solid var(--ar-base-300);
163
+ border-radius: var(--ar-radius-field);
164
+ cursor: pointer;
165
+ transition: border-color 0.15s ease, background-color 0.15s ease,
166
+ color 0.15s ease;
167
+ }
168
+ .ar-docs-copy:hover {
169
+ border-color: var(--ar-primary);
170
+ }
171
+ .ar-docs-copy.is-done {
172
+ background: var(--ar-primary);
173
+ border-color: var(--ar-primary);
174
+ color: var(--ar-primary-content);
175
+ }
176
+ .ar-docs-shell {
177
+ display: flex;
178
+ align-items: flex-start;
179
+ }
180
+ .ar-docs-side {
181
+ display: contents;
182
+ }
183
+ .ar-docs-main {
184
+ flex: 1;
185
+ min-width: 0;
186
+ }
187
+ .ar-docs-side .ar-menu {
188
+ padding: var(--ar-s-1);
189
+ border: 1px solid var(--ar-base-300);
190
+ border-radius: var(--ar-radius-box);
191
+ }
192
+ .ar-docs-side .ar-menu li > a {
193
+ font-size: 0.875rem;
194
+ }
195
+ .ar-docs-versions .ar-docs-version {
196
+ display: block;
197
+ padding: var(--ar-s-1) var(--ar-s-2);
198
+ border-radius: var(--ar-radius-field);
199
+ font-size: 0.875rem;
200
+ }
201
+ a.ar-docs-version {
202
+ color: var(--ar-gray-700);
203
+ text-decoration: none;
204
+ }
205
+ a.ar-docs-version:hover {
206
+ background: var(--ar-base-200);
207
+ }
208
+ .ar-docs-version.is-current {
209
+ color: var(--ar-primary-text);
210
+ font-weight: 700;
211
+ }
212
+ .ar-docs-demo-img {
213
+ background: linear-gradient(135deg, var(--ar-base-300), var(--ar-base-200));
214
+ display: flex;
215
+ align-items: center;
216
+ justify-content: center;
217
+ color: var(--ar-gray-600);
218
+ }
219
+ @media (min-width: 1024px) {
220
+ .ar-docs-side {
221
+ display: block;
222
+ position: sticky;
223
+ top: var(--ar-nav-h);
224
+ width: 15rem;
225
+ flex-shrink: 0;
226
+ max-height: calc(100vh - 6rem);
227
+ overflow-y: auto;
228
+ padding: var(--ar-s-4);
229
+ border-right: 1px solid var(--ar-base-300);
230
+ }
231
+ .ar-docs-side > .ar-sidebar-panel > .ar-menu {
232
+ display: contents;
233
+ }
234
+ .ar-docs-side-norail {
235
+ display: none;
236
+ }
237
+ }
238
+ .ar-docs-demo-state .ar-sidebar-content {
239
+ transition: box-shadow 0.2s ease;
240
+ }
241
+ .ar-docs-demo-state .ar-menu {
242
+ transition: box-shadow 0.2s ease;
243
+ }
244
+ .ar-docs-demo-state.ar-sidebar-is-close .ar-sidebar-content {
245
+ box-shadow: inset 4px 0 0 var(--ar-base-300);
246
+ }
247
+ .ar-docs-demo-state.ar-sidebar-is-open .ar-sidebar-content {
248
+ box-shadow: inset 4px 0 0 var(--ar-primary);
249
+ }
250
+ .ar-docs-demo-state.ar-sidebar-is-open .ar-menu {
251
+ box-shadow: 6px 0 0 var(--ar-primary);
252
+ }
@@ -0,0 +1,36 @@
1
+ /* EMPTY STATE */
2
+ .ar-empty {
3
+ display: flex;
4
+ flex-direction: column;
5
+ align-items: center;
6
+ gap: var(--ar-s-2);
7
+ padding: var(--ar-s-10) var(--ar-s-4);
8
+ text-align: center;
9
+ color: var(--ar-gray-600);
10
+ }
11
+ .ar-empty-icon {
12
+ display: flex;
13
+ align-items: center;
14
+ justify-content: center;
15
+ width: 3rem;
16
+ height: 3rem;
17
+ border-radius: var(--ar-radius-pill);
18
+ background: var(--ar-base-200);
19
+ color: var(--ar-gray-500);
20
+ }
21
+ .ar-empty-icon svg {
22
+ width: 1.5rem;
23
+ height: 1.5rem;
24
+ }
25
+ .ar-empty-title {
26
+ font-size: 1.125rem;
27
+ font-weight: 700;
28
+ color: var(--ar-base-content);
29
+ }
30
+ .ar-empty-desc {
31
+ max-width: 42ch;
32
+ line-height: 1.6;
33
+ }
34
+ .ar-empty-action {
35
+ margin-top: var(--ar-s-2);
36
+ }
@@ -1,51 +1,50 @@
1
- /* FILE UPLOAD */
2
- .ar-file-upload {
3
- position: relative;
4
- display: flex;
5
- flex-direction: column;
6
- align-items: center;
7
- justify-content: center;
8
- gap: var(--ar-s-2);
9
- padding: var(--ar-s-8) var(--ar-s-4);
10
- border: 2px dashed var(--ar-base-300);
11
- border-radius: var(--ar-radius-box);
12
- background: var(--ar-base-200);
13
- color: var(--ar-gray-600);
14
- text-align: center;
15
- cursor: pointer;
16
- transition: all 0.2s ease;
17
- }
18
- .ar-file-upload:hover,
19
- .ar-file-upload.ar-file-upload-dragover {
20
- border-color: var(--ar-primary);
21
- background: var(--ar-base-300);
22
- color: var(--ar-base-content);
23
- }
24
- .ar-file-upload input[type="file"] {
25
- position: absolute;
26
- inset: 0;
27
- opacity: 0;
28
- cursor: pointer;
29
- }
30
- .ar-file-upload-icon {
31
- width: 2.5rem;
32
- height: 2.5rem;
33
- opacity: 0.5;
34
- }
35
- .ar-file-upload-text {
36
- font-size: 0.875rem;
37
- }
38
- .ar-file-upload-text strong {
39
- color: var(--ar-primary);
40
- }
41
- .ar-file-upload-hint {
42
- font-size: 0.75rem;
43
- opacity: 0.7;
44
- }
45
- .ar-file-upload-sm {
46
- padding: var(--ar-s-4) var(--ar-s-3);
47
- }
48
- .ar-file-upload-sm .ar-file-upload-icon {
49
- width: 1.5rem;
50
- height: 1.5rem;
1
+ .ar-file-upload {
2
+ position: relative;
3
+ display: flex;
4
+ flex-direction: column;
5
+ align-items: center;
6
+ justify-content: center;
7
+ gap: var(--ar-s-2);
8
+ padding: var(--ar-s-8) var(--ar-s-4);
9
+ border: 2px dashed var(--ar-base-300);
10
+ border-radius: var(--ar-radius-box);
11
+ background: var(--ar-base-200);
12
+ color: var(--ar-gray-600);
13
+ text-align: center;
14
+ cursor: pointer;
15
+ transition: all 0.2s ease;
16
+ }
17
+ .ar-file-upload:hover,
18
+ .ar-file-upload.ar-file-upload-dragover {
19
+ border-color: var(--ar-primary);
20
+ background: var(--ar-base-300);
21
+ color: var(--ar-base-content);
22
+ }
23
+ .ar-file-upload input[type="file"] {
24
+ position: absolute;
25
+ inset: 0;
26
+ opacity: 0;
27
+ cursor: pointer;
28
+ }
29
+ .ar-file-upload-icon {
30
+ width: 2.5rem;
31
+ height: 2.5rem;
32
+ opacity: 0.5;
33
+ }
34
+ .ar-file-upload-text {
35
+ font-size: 0.875rem;
36
+ }
37
+ .ar-file-upload-text strong {
38
+ color: var(--ar-primary-text);
39
+ }
40
+ .ar-file-upload-hint {
41
+ font-size: 0.75rem;
42
+ opacity: 0.7;
43
+ }
44
+ .ar-file-upload-sm {
45
+ padding: var(--ar-s-4) var(--ar-s-3);
46
+ }
47
+ .ar-file-upload-sm .ar-file-upload-icon {
48
+ width: 1.5rem;
49
+ height: 1.5rem;
51
50
  }
@@ -1,26 +1,41 @@
1
- /* FOOTER */
2
- .ar-footer {
3
- display: flex;
4
- flex-direction: column;
5
- align-items: center;
6
- gap: var(--ar-s-4);
7
- padding: var(--ar-s-10);
8
- background: var(--ar-base-200);
9
- border-top: var(--ar-border-width) solid var(--ar-base-300);
10
- }
11
- .ar-footer nav {
12
- display: flex;
13
- flex-wrap: wrap;
14
- justify-content: center;
15
- gap: var(--ar-s-4);
16
- }
17
- .ar-footer a {
18
- color: var(--ar-base-content);
19
- opacity: 0.8;
20
- }
21
- .ar-footer a:hover {
22
- opacity: 1;
23
- }
24
- .ar-footer-center {
25
- text-align: center;
1
+ .ar-footer {
2
+ display: flex;
3
+ flex-direction: column;
4
+ align-items: center;
5
+ gap: var(--ar-s-4);
6
+ padding: var(--ar-s-10);
7
+ background: var(--ar-base-200);
8
+ border-top: var(--ar-border-width) solid var(--ar-base-300);
9
+ }
10
+ .ar-footer nav {
11
+ display: flex;
12
+ flex-wrap: wrap;
13
+ justify-content: center;
14
+ gap: var(--ar-s-4);
15
+ }
16
+ .ar-footer a {
17
+ color: var(--ar-base-content);
18
+ opacity: 0.8;
19
+ }
20
+ .ar-footer a:hover {
21
+ opacity: 1;
22
+ }
23
+ .ar-footer-center {
24
+ text-align: center;
25
+ }
26
+ /* Sheet variant — colophon: stock ground, heavy ink rule, mono meta.
27
+ Opt in by adding .ar-footer-sheet to .ar-footer. */
28
+ .ar-footer-sheet {
29
+ background: var(--ar-base-100);
30
+ border-top: 3px solid var(--ar-base-content);
31
+ border-radius: 0;
32
+ font-family: var(--ar-font-mono);
33
+ font-size: 0.6875rem;
34
+ letter-spacing: 0.08em;
35
+ text-transform: uppercase;
36
+ padding: var(--ar-s-8) var(--ar-s-4);
37
+ }
38
+ .ar-footer-sheet a:hover {
39
+ text-decoration: underline;
40
+ text-underline-offset: 0.25em;
26
41
  }