arekui 1.0.2 → 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 (98) hide show
  1. package/CHANGELOG.md +49 -0
  2. package/README.md +16 -188
  3. package/arekui.css +3018 -367
  4. package/arekui.d.ts +47 -47
  5. package/arekui.js +402 -35
  6. package/assets/img/grunge-wall-texture-freepick-kues1.webp +0 -0
  7. package/assets/img/logo.png +0 -0
  8. package/dist/css/arekui.base.min.css +1 -0
  9. package/dist/css/arekui.broadsheet.min.css +1 -0
  10. package/dist/css/arekui.brutalist.min.css +1 -0
  11. package/dist/css/arekui.default.min.css +1 -0
  12. package/dist/css/arekui.full.min.css +1 -0
  13. package/dist/css/arekui.min.css +1 -0
  14. package/dist/css/arekui.neo.min.css +1 -0
  15. package/dist/css/arekui.pixel.min.css +1 -0
  16. package/dist/js/arekui.min.js +2 -0
  17. package/package.json +14 -9
  18. package/scripts/build-css.js +95 -0
  19. package/scripts/build-custom.js +65 -96
  20. package/scripts/build-js.js +68 -0
  21. package/scripts/clean.js +13 -0
  22. package/scripts/dev.js +97 -0
  23. package/scripts/imports.js +18 -0
  24. package/scripts/split.js +256 -0
  25. package/src/arekui.base.css +63 -0
  26. package/src/arekui.broadsheet.css +6 -0
  27. package/src/arekui.brutalist.css +8 -0
  28. package/src/arekui.core.css +64 -0
  29. package/src/arekui.css +73 -56
  30. package/src/arekui.default.css +6 -0
  31. package/src/arekui.neo.css +8 -0
  32. package/src/arekui.pixel.css +8 -0
  33. package/src/base/brutalist-overrides.css +254 -0
  34. package/src/base/neo-overrides.css +46 -31
  35. package/src/base/pixel-overrides.css +336 -0
  36. package/src/base/reset.css +118 -4
  37. package/src/base/theme-brutalist.css +111 -0
  38. package/src/base/theme-default.css +184 -0
  39. package/src/base/theme-neo.css +108 -0
  40. package/src/base/theme-pixel.css +111 -0
  41. package/src/base/tokens.css +10 -253
  42. package/src/components/accordion.css +1 -2
  43. package/src/components/alert.css +1 -2
  44. package/src/components/badge.css +1 -2
  45. package/src/components/breadcrumb.css +2 -3
  46. package/src/components/broadsheet.css +264 -0
  47. package/src/components/button.css +3 -2
  48. package/src/components/card.css +1 -2
  49. package/src/components/carousel.css +37 -1
  50. package/src/components/chat.css +5 -4
  51. package/src/components/description-list.css +34 -0
  52. package/src/components/docs.css +252 -0
  53. package/src/components/empty.css +36 -0
  54. package/src/components/file-upload.css +2 -3
  55. package/src/components/footer.css +16 -1
  56. package/src/components/forms.css +1 -2
  57. package/src/components/heading.css +27 -0
  58. package/src/components/hero.css +1 -2
  59. package/src/components/join.css +1 -2
  60. package/src/components/kbd.css +15 -0
  61. package/src/components/link.css +2 -3
  62. package/src/components/loading.css +109 -0
  63. package/src/components/menu.css +51 -1
  64. package/src/components/misc.css +40 -1
  65. package/src/components/modal.css +1 -2
  66. package/src/components/navbar.css +131 -1
  67. package/src/components/pagination.css +7 -2
  68. package/src/components/popover.css +5 -6
  69. package/src/components/progress.css +1 -2
  70. package/src/components/prose.css +2 -2
  71. package/src/components/rating.css +1 -2
  72. package/src/components/scroll-top.css +2 -2
  73. package/src/components/segmented.css +44 -0
  74. package/src/components/sidebar.css +377 -0
  75. package/src/components/skeleton.css +2 -2
  76. package/src/components/spinner.css +36 -0
  77. package/src/components/swap.css +2 -2
  78. package/src/components/table.css +1 -2
  79. package/src/components/tabs.css +2 -3
  80. package/src/components/tag.css +10 -10
  81. package/src/components/textured.css +22 -2
  82. package/src/components/timeline.css +1 -2
  83. package/src/components/toast.css +2 -2
  84. package/src/components/tooltip.css +1 -2
  85. package/src/utilities/borders.css +2 -2
  86. package/src/utilities/brutalist-utilities.css +49 -0
  87. package/src/utilities/colors.css +11 -3
  88. package/src/utilities/hover.css +2 -2
  89. package/src/utilities/layout.css +2 -2
  90. package/src/utilities/neo-utilities.css +2 -9
  91. package/src/utilities/pixel-utilities.css +88 -0
  92. package/src/utilities/responsive.css +7 -2
  93. package/src/utilities/sizing.css +16 -7
  94. package/src/utilities/spacing.css +5 -2
  95. package/src/utilities/typography.css +5 -2
  96. package/dist/arekui.min.css +0 -1
  97. package/dist/arekui.min.js +0 -2
  98. package/src/components/drawer.css +0 -53
@@ -1,4 +1,3 @@
1
- /* ALERT */
2
1
  .ar-alert {
3
2
  display: flex;
4
3
  align-items: center;
@@ -23,4 +22,4 @@
23
22
  .ar-alert-error {
24
23
  background: var(--ar-error);
25
24
  color: var(--ar-error-content);
26
- }
25
+ }
@@ -1,4 +1,3 @@
1
- /* BADGE */
2
1
  .ar-badge {
3
2
  display: inline-flex;
4
3
  align-items: center;
@@ -30,4 +29,4 @@
30
29
  .ar-badge-xs {
31
30
  font-size: 0.55rem;
32
31
  padding: 0 0.375rem;
33
- }
32
+ }
@@ -1,4 +1,3 @@
1
- /* BREADCRUMB */
2
1
  .ar-breadcrumb {
3
2
  display: flex;
4
3
  flex-wrap: wrap;
@@ -20,7 +19,7 @@
20
19
  transition: color 0.2s ease;
21
20
  }
22
21
  .ar-breadcrumb-item a:hover {
23
- color: var(--ar-primary);
22
+ color: var(--ar-primary-text);
24
23
  }
25
24
  .ar-breadcrumb-item:not(:last-child)::after {
26
25
  content: "/";
@@ -30,4 +29,4 @@
30
29
  .ar-breadcrumb-item:last-child {
31
30
  color: var(--ar-base-content);
32
31
  font-weight: 600;
33
- }
32
+ }
@@ -0,0 +1,264 @@
1
+ /* The print sheet — an opt-in add-on, also shipped standalone as
2
+ dist/css/arekui.broadsheet.min.css (use it on top of any base bundle).
3
+ It sets a newspaper front page on framework tokens: nothing here renders
4
+ unless one of the classes below is used.
5
+
6
+ Two variable families. --ar-sheet-display/text/mono are the sheet's
7
+ faces; they default to the framework's own serif/mono stacks, so the
8
+ add-on works with zero setup — map them to hosted webfonts to set a
9
+ display face (the ArekUI docs map them to Bodoni Moda / Source Serif 4 /
10
+ Spline Sans Mono). The paper set (stock, ink, hairline, signal, tooth)
11
+ is pinned rather than derived from --ar-base-*: the framework's light
12
+ stock is pure white and its neutrals are tuned for white pages, while a
13
+ newspaper prints on paper. Each edition re-inks the whole set from
14
+ html[data-theme], so one sheet prints in all five themes.
15
+
16
+ Every edition's set is contrast-checked end to end (ink, soft, faint and
17
+ signal on both stocks, plus signal-as-fill): all eleven pairings clear
18
+ 4.5:1. The default stock #f2efe7 carries ink #121110 at 16.41:1 and
19
+ signal #9c1b1b at 7.07:1; then per edition:
20
+
21
+ NIGHT stock #16130f ink 16.11:1 soft 7.22:1 signal #e07a5f 6.28:1
22
+ NEO stock #e6f6fd ink 17.88:1 soft 9.43:1 signal #005f80 6.43:1
23
+ PIXEL stock #f4f1e8 ink 16.70:1 soft 9.25:1 signal #2c639e 5.49:1
24
+ BRUT. stock #f1efe9 ink 17.22:1 soft 9.08:1 signal #ad3508 5.55:1 */
25
+ :root {
26
+ /* Faces. The mono editions below re-set display and text to the mono
27
+ face for the whole paper. */
28
+ --ar-sheet-display: var(--ar-font-serif);
29
+ --ar-sheet-text: var(--ar-font-serif);
30
+ --ar-sheet-mono: var(--ar-font-mono);
31
+ /* Display weights. A serif display ships 700/900; a mono face usually
32
+ ships 400/600, so the mono editions drop these to what exists. */
33
+ --ar-sheet-weight-black: 900;
34
+ --ar-sheet-weight-bold: 700;
35
+ /* Nameplate and banner size their faces from these two — override them
36
+ to re-fit a fold contract. The mono editions re-set the banner because
37
+ a monospaced banner is ~15em wide and wraps two lines where the serif
38
+ holds one, which costs a front page its fold. */
39
+ --ar-sheet-nameplate-size: clamp(2.75rem, 13vw, 4.5rem);
40
+ --ar-sheet-banner-size: clamp(1.875rem, 7vw, 5.25rem);
41
+ /* Newsprint stock, one ink, one hairline, one signal. The signal is the
42
+ only saturated colour on the sheet, spent on live marks, section links,
43
+ step numbers and the active edition chip. */
44
+ --ar-sheet-paper: #f2efe7;
45
+ --ar-sheet-paper-2: #e9e5da;
46
+ --ar-sheet-ink: #121110;
47
+ --ar-sheet-ink-soft: #3f3f46;
48
+ --ar-sheet-ink-faint: #3f3f46;
49
+ --ar-sheet-rule: #c4bdae;
50
+ --ar-sheet-rule-strong: #121110;
51
+ --ar-sheet-signal: #9c1b1b;
52
+ /* Stock tooth: a fine halftone screen over the sheet, tuned per edition. */
53
+ --ar-sheet-grain: rgba(18, 17, 16, 0.14);
54
+ }
55
+ html[data-theme="dark"] {
56
+ --ar-sheet-paper: #16130f;
57
+ --ar-sheet-paper-2: #211d17;
58
+ --ar-sheet-ink: #f2efe7;
59
+ --ar-sheet-ink-soft: #a1a1aa;
60
+ --ar-sheet-ink-faint: #a1a1aa;
61
+ --ar-sheet-rule: #3a342b;
62
+ --ar-sheet-rule-strong: #f2efe7;
63
+ --ar-sheet-signal: #e07a5f;
64
+ --ar-sheet-grain: rgba(242, 239, 231, 0.1);
65
+ }
66
+ /* Neo prints on a pale cyan stock with the theme's own hue as the signal
67
+ and hard black rules — neobrutalism's poster, set in the same serif. */
68
+ html[data-theme="neo"] {
69
+ --ar-sheet-paper: #e6f6fd;
70
+ --ar-sheet-paper-2: #d2eefb;
71
+ --ar-sheet-ink: #0a0a0a;
72
+ --ar-sheet-ink-soft: #3f3f46;
73
+ --ar-sheet-ink-faint: #3f3f46;
74
+ --ar-sheet-rule: #a5cddd;
75
+ --ar-sheet-rule-strong: #0a0a0a;
76
+ --ar-sheet-signal: #005f80;
77
+ --ar-sheet-grain: rgba(10, 10, 10, 0.09);
78
+ }
79
+ /* Pixel and brutalist re-set the whole paper in the mono face: display and
80
+ body text go mono, the weights drop to the 400/600 the faces ship, and
81
+ the banner shrinks to keep its single line. */
82
+ html[data-theme="pixel"] {
83
+ --ar-sheet-display: var(--ar-sheet-mono);
84
+ --ar-sheet-text: var(--ar-sheet-mono);
85
+ --ar-sheet-weight-black: 600;
86
+ --ar-sheet-weight-bold: 600;
87
+ --ar-sheet-banner-size: clamp(1.875rem, 5.8vw, 4.75rem);
88
+ --ar-sheet-paper: #f4f1e8;
89
+ --ar-sheet-paper-2: #eae6d9;
90
+ --ar-sheet-rule: #cfc9b8;
91
+ --ar-sheet-signal: #2c639e;
92
+ }
93
+ html[data-theme="brutalist"] {
94
+ --ar-sheet-display: var(--ar-sheet-mono);
95
+ --ar-sheet-text: var(--ar-sheet-mono);
96
+ --ar-sheet-weight-black: 600;
97
+ --ar-sheet-weight-bold: 600;
98
+ --ar-sheet-banner-size: clamp(1.875rem, 5.8vw, 4.75rem);
99
+ --ar-sheet-paper: #f1efe9;
100
+ --ar-sheet-paper-2: #e5e2da;
101
+ --ar-sheet-rule: #121110;
102
+ --ar-sheet-rule-strong: #0a0a0a;
103
+ --ar-sheet-signal: #ad3508;
104
+ }
105
+
106
+ /* The printed double rule: a heavy line, a gap, then a hairline — the way
107
+ a front page rules its edges. A sheet carries three: above the masthead,
108
+ on the fold between the deck and the columns, and closing the page under
109
+ the footer (mirrored there: hairline over heavy). box-sizing is
110
+ border-box, so the height pays for both borders first:
111
+ 8px = 3px heavy + 4px of paper + 1px hairline. */
112
+ .ar-rule-double {
113
+ height: 0.5rem;
114
+ border-top: 3px solid var(--ar-sheet-rule-strong);
115
+ border-bottom: 1px solid var(--ar-sheet-rule-strong);
116
+ margin: var(--ar-s-2) 0;
117
+ }
118
+ .ar-rule-double-end {
119
+ border-top: 1px solid var(--ar-sheet-rule-strong);
120
+ border-bottom: 3px solid var(--ar-sheet-rule-strong);
121
+ margin-top: var(--ar-s-5);
122
+ margin-bottom: 0;
123
+ }
124
+
125
+ /* Masthead: the nameplate over the folio line — the order a front page
126
+ sets them. The nameplate's clamp is capped at 4.5rem: the nameplate,
127
+ banner, deck, facts, fold rule, columns and front-page footer rule all
128
+ close above a 900px fold, and a 13rem plate spends the budget on its own
129
+ ascenders. The display face is wide, so the 13vw term keeps it inside a
130
+ 390px viewport; the cap takes over from ~550px up. */
131
+ .ar-masthead {
132
+ text-align: center;
133
+ }
134
+ .ar-folio {
135
+ display: flex;
136
+ flex-wrap: wrap;
137
+ justify-content: space-between;
138
+ gap: var(--ar-s-2);
139
+ font-family: var(--ar-sheet-mono);
140
+ font-size: 0.6875rem;
141
+ letter-spacing: 0.08em;
142
+ text-transform: uppercase;
143
+ color: var(--ar-sheet-ink-soft);
144
+ border-bottom: 1px solid var(--ar-sheet-rule);
145
+ padding-bottom: var(--ar-s-2);
146
+ margin-bottom: var(--ar-s-2);
147
+ }
148
+ .ar-folio > span {
149
+ min-width: 0;
150
+ }
151
+ .ar-nameplate {
152
+ font-family: var(--ar-sheet-display);
153
+ font-weight: var(--ar-sheet-weight-black);
154
+ line-height: 0.86;
155
+ letter-spacing: -0.045em;
156
+ font-size: var(--ar-sheet-nameplate-size);
157
+ margin: 0;
158
+ }
159
+
160
+ /* Banner: the day's story. The face sizes its banner through
161
+ --ar-sheet-banner-size, so one mark re-fits the whole front page. */
162
+ .ar-banner {
163
+ font-family: var(--ar-sheet-display);
164
+ font-weight: var(--ar-sheet-weight-black);
165
+ letter-spacing: -0.03em;
166
+ line-height: 0.94;
167
+ font-size: var(--ar-sheet-banner-size);
168
+ margin: var(--ar-s-4) 0 var(--ar-s-2);
169
+ text-wrap: balance;
170
+ text-align: center;
171
+ overflow-wrap: break-word;
172
+ hyphens: auto;
173
+ }
174
+
175
+ /* Ruled column grid: an explicit, drawn grid. Grid children default to
176
+ min-width:auto, which lets one wide child stretch its track past the
177
+ viewport — let the columns shrink. Columns divide with hairlines; the
178
+ grid's own top rule is an .ar-rule-double above it. One column until
179
+ 640px, two until 1024px, three above. */
180
+ .ar-sheet-cols {
181
+ display: grid;
182
+ gap: 0;
183
+ grid-template-columns: minmax(0, 1fr);
184
+ }
185
+ .ar-sheet-col {
186
+ padding: var(--ar-s-2) 0 var(--ar-s-5);
187
+ border-bottom: 1px solid var(--ar-sheet-rule);
188
+ min-width: 0;
189
+ }
190
+ @media (min-width: 640px) {
191
+ .ar-sheet-cols {
192
+ grid-template-columns: repeat(2, minmax(0, 1fr));
193
+ column-gap: var(--ar-s-6);
194
+ }
195
+ .ar-sheet-col {
196
+ border-bottom: 0;
197
+ border-right: 1px solid var(--ar-sheet-rule);
198
+ padding-right: var(--ar-s-6);
199
+ }
200
+ .ar-sheet-col:nth-child(2n) {
201
+ border-right: 0;
202
+ padding-right: 0;
203
+ }
204
+ .ar-sheet-col:nth-child(n + 3) {
205
+ border-top: 1px solid var(--ar-sheet-rule);
206
+ margin-top: var(--ar-s-5);
207
+ padding-top: var(--ar-s-5);
208
+ }
209
+ }
210
+ @media (min-width: 1024px) {
211
+ .ar-sheet-cols {
212
+ grid-template-columns: repeat(3, minmax(0, 1fr));
213
+ }
214
+ .ar-sheet-col {
215
+ border-right: 1px solid var(--ar-sheet-rule);
216
+ padding-right: var(--ar-s-5);
217
+ }
218
+ .ar-sheet-col:nth-child(2n) {
219
+ border-right: 1px solid var(--ar-sheet-rule);
220
+ padding-right: var(--ar-s-5);
221
+ }
222
+ .ar-sheet-col:last-child {
223
+ border-right: 0;
224
+ padding-right: 0;
225
+ }
226
+ .ar-sheet-col:nth-child(n + 3) {
227
+ border-top: 0;
228
+ margin-top: 0;
229
+ padding-top: var(--ar-s-2);
230
+ }
231
+ }
232
+
233
+ /* Plate: a live component set as a printed specimen — label pinned
234
+ top-left, body below, the class string under the frame. */
235
+ .ar-plate {
236
+ border: 1px solid var(--ar-sheet-rule);
237
+ background: var(--ar-sheet-paper-2);
238
+ padding: var(--ar-s-3);
239
+ position: relative;
240
+ min-width: 0;
241
+ }
242
+ .ar-plate-label {
243
+ font-family: var(--ar-sheet-mono);
244
+ font-size: 0.625rem;
245
+ letter-spacing: 0.12em;
246
+ text-transform: uppercase;
247
+ color: var(--ar-sheet-ink-faint);
248
+ position: absolute;
249
+ top: var(--ar-s-2);
250
+ left: var(--ar-s-3);
251
+ }
252
+ .ar-plate-body {
253
+ margin-top: var(--ar-s-4);
254
+ min-width: 0;
255
+ }
256
+ .ar-plate-tag {
257
+ font-family: var(--ar-sheet-mono);
258
+ font-size: 0.6875rem;
259
+ color: var(--ar-sheet-ink-faint);
260
+ margin-top: var(--ar-s-2);
261
+ word-break: break-word;
262
+ overflow-wrap: anywhere;
263
+ min-width: 0;
264
+ }
@@ -1,4 +1,4 @@
1
- /* BUTTONS */
1
+ /* BUTTONS */
2
2
  .ar-btn {
3
3
  display: inline-flex;
4
4
  align-items: center;
@@ -29,6 +29,7 @@
29
29
  }
30
30
  .ar-btn-primary:hover {
31
31
  background: var(--ar-neutral);
32
+ color: var(--ar-neutral-content);
32
33
  }
33
34
  .ar-btn-outline {
34
35
  background: transparent;
@@ -100,4 +101,4 @@
100
101
  to {
101
102
  transform: rotate(360deg);
102
103
  }
103
- }
104
+ }
@@ -1,4 +1,3 @@
1
- /* CARD */
2
1
  .ar-card {
3
2
  display: flex;
4
3
  flex-direction: column;
@@ -21,4 +20,4 @@
21
20
  .ar-card-figure img {
22
21
  width: 100%;
23
22
  object-fit: cover;
24
- }
23
+ }
@@ -1,4 +1,3 @@
1
- /* CAROUSEL */
2
1
  .ar-carousel {
3
2
  display: flex;
4
3
  overflow-x: auto;
@@ -12,3 +11,40 @@
12
11
  .ar-carousel-item img {
13
12
  width: 100%;
14
13
  }
14
+ .ar-carousel-frame {
15
+ position: relative;
16
+ }
17
+ .ar-carousel-btn {
18
+ position: absolute;
19
+ top: 50%;
20
+ transform: translateY(-50%);
21
+ z-index: 2;
22
+ display: flex;
23
+ align-items: center;
24
+ justify-content: center;
25
+ width: 2.25rem;
26
+ height: 2.25rem;
27
+ padding: 0;
28
+ border: var(--ar-border-width) solid var(--ar-base-content);
29
+ border-radius: var(--ar-radius-pill);
30
+ background-color: var(--ar-base-100);
31
+ color: var(--ar-base-content);
32
+ font-size: 1.25rem;
33
+ line-height: 1;
34
+ cursor: pointer;
35
+ box-shadow: var(--ar-shadow-sm);
36
+ transition: all 0.2s ease;
37
+ }
38
+ .ar-carousel-btn:hover {
39
+ background-color: var(--ar-base-200);
40
+ }
41
+ .ar-carousel-btn:focus-visible {
42
+ outline: 2px solid var(--ar-primary);
43
+ outline-offset: 2px;
44
+ }
45
+ .ar-carousel-btn-prev {
46
+ left: var(--ar-s-2);
47
+ }
48
+ .ar-carousel-btn-next {
49
+ right: var(--ar-s-2);
50
+ }
@@ -1,4 +1,4 @@
1
- /* CHAT BUBBLE */
1
+ /* CHAT BUBBLE */
2
2
  .ar-chat {
3
3
  display: flex;
4
4
  flex-direction: column;
@@ -49,14 +49,15 @@
49
49
  margin-bottom: var(--ar-s-1);
50
50
  font-size: 0.75rem;
51
51
  font-weight: 600;
52
- color: var(--ar-gray-600);
52
+ color: var(--ar-base-content);
53
53
  }
54
54
  .ar-chat-end .ar-chat-header {
55
55
  justify-content: flex-end;
56
56
  }
57
57
  .ar-chat-footer {
58
58
  font-size: 0.7rem;
59
- color: var(--ar-gray-500);
59
+ color: var(--ar-base-content);
60
+ opacity: 0.7;
60
61
  margin-top: var(--ar-s-1);
61
62
  }
62
63
  .ar-chat-start .ar-chat-footer {
@@ -75,4 +76,4 @@
75
76
  align-items: flex-end;
76
77
  gap: var(--ar-s-2);
77
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
+ }