@farming-labs/theme 0.0.3-beta.2 → 0.0.3-beta.3

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@farming-labs/theme",
3
- "version": "0.0.3-beta.2",
3
+ "version": "0.0.3-beta.3",
4
4
  "description": "Theme package for @farming-labs/docs — layout, provider, MDX components, and styles",
5
5
  "keywords": [
6
6
  "docs",
@@ -98,7 +98,7 @@
98
98
  "next": ">=14.0.0",
99
99
  "tsdown": "^0.20.3",
100
100
  "typescript": "^5.9.3",
101
- "@farming-labs/docs": "0.0.3-beta.2"
101
+ "@farming-labs/docs": "0.0.3-beta.3"
102
102
  },
103
103
  "peerDependencies": {
104
104
  "@farming-labs/docs": ">=0.0.1",
package/styles/ai.css CHANGED
@@ -678,6 +678,7 @@
678
678
  color: var(--color-fd-muted-foreground, #71717a);
679
679
  cursor: pointer;
680
680
  font-size: 14px;
681
+ font-family: var(--fd-font-sans, system-ui, -apple-system, sans-serif);
681
682
  box-shadow: 0 1px 3px color-mix(in srgb, var(--color-fd-background, #000) 20%, transparent);
682
683
  transition:
683
684
  transform 150ms,
@@ -703,6 +704,12 @@
703
704
  animation: fd-ai-fade-in 300ms ease-out;
704
705
  }
705
706
 
707
+ /* Custom Ask AI trigger (e.g. triggerComponent): same base as .fd-ai-floating-btn so theme font applies */
708
+ .fd-ai-floating-trigger .ask-ai-trigger {
709
+ font-size: 14px;
710
+ font-family: var(--fd-font-sans, system-ui, -apple-system, sans-serif);
711
+ }
712
+
706
713
  /* ─── Markdown in AI responses ───────────────────────────────────── */
707
714
 
708
715
  .fd-ai-bubble-ai code {
package/styles/base.css CHANGED
@@ -233,7 +233,7 @@ figure.shiki:has(figcaption) figcaption {
233
233
 
234
234
  .fd-last-updated-inline {
235
235
  color: var(--color-fd-muted-foreground);
236
- font-size: 0.875rem;
236
+ font-size: 0.75rem;
237
237
  font-weight: 400;
238
238
  margin: 0 0 0.75rem;
239
239
  line-height: 1.5;
@@ -401,12 +401,12 @@ figure.shiki:has(figcaption) figcaption {
401
401
 
402
402
  .fd-last-updated {
403
403
  color: var(--color-fd-muted-foreground, hsl(0 0% 45%));
404
- font-size: 0.75rem;
404
+ font-size: 0.6875rem;
405
405
  }
406
406
 
407
407
  .fd-last-updated-footer {
408
408
  color: var(--color-fd-muted-foreground, hsl(0 0% 45%));
409
- font-size: 0.8125rem;
409
+ font-size: 0.75rem;
410
410
  margin-left: auto;
411
411
  }
412
412
 
@@ -150,20 +150,20 @@ code:not(pre code) {
150
150
  }
151
151
  }
152
152
 
153
- /* ─── Sidebar (better-auth style) ─────────────────────────────────── */
154
- /* Sidebar container: dark, subtle right border */
155
- .dark aside#nd-sidebar {
156
- background: hsl(0 0% 2%);
157
- border-color: hsl(0 0% 12%);
153
+ /* ─── Sidebar (better-auth style) light + dark ───────────────────── */
154
+ /* Sidebar container: use theme variables for both modes */
155
+ aside#nd-sidebar {
156
+ background: var(--color-fd-background);
157
+ border-color: var(--color-fd-border);
158
158
  }
159
159
 
160
160
  /* ── Full-width border separators between top-level items ─────────── */
161
- .dark aside .overscroll-contain > div {
161
+ aside .overscroll-contain > div {
162
162
  margin-top: -22px;
163
163
  }
164
164
 
165
- .dark aside .overscroll-contain > div > a[data-active] {
166
- border-top: 1px solid hsl(0 0% 12%);
165
+ aside .overscroll-contain > div > a[data-active] {
166
+ border-top: 1px solid var(--color-fd-border);
167
167
  margin-left: -1rem;
168
168
  margin-right: -1rem;
169
169
  padding-left: 1rem;
@@ -171,112 +171,112 @@ code:not(pre code) {
171
171
  padding-bottom: 0.75rem;
172
172
  }
173
173
 
174
- .dark aside .overscroll-contain > div > div {
175
- border-top: 1px solid hsl(0 0% 12%);
174
+ aside .overscroll-contain > div > div {
175
+ border-top: 1px solid var(--color-fd-border);
176
176
  margin-left: -1rem;
177
177
  margin-right: -1rem;
178
178
  padding: 0 !important;
179
179
  }
180
180
 
181
- .dark aside .overscroll-contain > div > a[data-active]:first-child,
182
- .dark aside .overscroll-contain > div > div:first-child {
181
+ aside .overscroll-contain > div > a[data-active]:first-child,
182
+ aside .overscroll-contain > div > div:first-child {
183
183
  border-top: none;
184
184
  }
185
185
 
186
- .dark aside .overscroll-contain > div > a[data-active]:last-child,
187
- .dark aside .overscroll-contain > div > div:last-child {
188
- border-bottom: 1px solid hsl(0 0% 12%);
186
+ aside .overscroll-contain > div > a[data-active]:last-child,
187
+ aside .overscroll-contain > div > div:last-child {
188
+ border-bottom: 1px solid var(--color-fd-border);
189
189
  }
190
190
 
191
191
  /* ── Sidebar links (all levels) ──────────────────────────────────── */
192
192
 
193
- .dark aside a[data-active] {
193
+ aside a[data-active] {
194
194
  font-size: 0.875rem;
195
195
  line-height: 1.6;
196
196
  border-radius: 0 !important;
197
197
  padding: 0.5rem 0.625rem !important;
198
198
  transition: color 0.15s ease;
199
- color: hsl(0 0% 50%);
199
+ color: var(--color-fd-muted-foreground);
200
200
  font-weight: 400;
201
201
  overflow: hidden;
202
202
  background-color: transparent !important;
203
203
  }
204
204
 
205
- .dark aside a[data-active="true"],
206
- .dark aside a[data-active="true"]:hover {
205
+ aside a[data-active="true"],
206
+ aside a[data-active="true"]:hover {
207
207
  background: transparent !important;
208
208
  background-color: transparent !important;
209
209
  color: var(--color-fd-primary) !important;
210
210
  font-weight: 600;
211
211
  }
212
212
 
213
- .dark aside a[data-active="false"]:hover {
213
+ aside a[data-active="false"]:hover {
214
214
  background: transparent !important;
215
215
  background-color: transparent !important;
216
- color: hsl(0 0% 80%);
216
+ color: var(--color-fd-foreground);
217
217
  }
218
218
 
219
219
  /* ── Child links inside collapsible folders ──────────────────────── */
220
220
 
221
- .dark aside div.overflow-hidden[data-state] a[data-active] {
221
+ aside div.overflow-hidden[data-state] a[data-active] {
222
222
  font-size: 0.785rem !important;
223
223
  padding-left: 2rem !important;
224
224
  padding-top: 0.25rem !important;
225
225
  padding-bottom: 0.25rem !important;
226
- color: hsl(0 0% 45%) !important;
226
+ color: var(--color-fd-muted-foreground) !important;
227
227
  overflow: hidden;
228
228
  }
229
229
 
230
- .dark aside div.overflow-hidden[data-state] a[data-active="true"],
231
- .dark aside div.overflow-hidden[data-state] a[data-active="true"]:hover {
230
+ aside div.overflow-hidden[data-state] a[data-active="true"],
231
+ aside div.overflow-hidden[data-state] a[data-active="true"]:hover {
232
232
  color: var(--color-fd-primary) !important;
233
233
  font-weight: 500 !important;
234
234
  }
235
235
 
236
- .dark aside div.overflow-hidden[data-state] a[data-active="false"]:hover {
237
- color: hsl(0 0% 75%) !important;
236
+ aside div.overflow-hidden[data-state] a[data-active="false"]:hover {
237
+ color: var(--color-fd-foreground) !important;
238
238
  }
239
239
 
240
240
  /* ── Folder toggle buttons (section headers) ─────────────────────── */
241
241
 
242
- .dark aside button.text-fd-muted-foreground {
243
- color: hsl(0 0% 90%);
242
+ aside button.text-fd-muted-foreground {
243
+ color: var(--color-fd-foreground);
244
244
  font-size: 0.875rem;
245
245
  font-weight: 500;
246
246
  letter-spacing: normal;
247
247
  text-transform: none;
248
248
  }
249
249
 
250
- .dark aside button.text-fd-muted-foreground:hover {
251
- color: hsl(0 0% 100%);
250
+ aside button.text-fd-muted-foreground:hover {
251
+ color: var(--color-fd-foreground);
252
252
  }
253
253
 
254
- .dark aside a[data-active="true"]::before {
254
+ aside a[data-active="true"]::before {
255
255
  background-color: var(--color-fd-primary) !important;
256
256
  width: 2px !important;
257
257
  margin-left: 0.6rem !important;
258
258
  inset-inline-start: 0.5rem !important;
259
259
  }
260
260
 
261
- .dark aside div.overflow-hidden[data-state]::before {
261
+ aside div.overflow-hidden[data-state]::before {
262
262
  margin-left: 0.5rem !important;
263
263
  height: calc(100% + 20px) !important;
264
264
  margin-top: -25px !important;
265
265
  }
266
266
 
267
- .dark aside div[data-state="open"] > :last-child {
267
+ aside div[data-state="open"] > :last-child {
268
268
  overflow: hidden;
269
269
  }
270
270
 
271
- /* ── Search button: full-width, border-y only ────────────────────── */
271
+ /* ── Search button: full-width, border-y only (light + dark) ───────── */
272
272
 
273
- .dark aside button[class*="bg-fd-secondary"] {
273
+ aside button[class*="bg-fd-secondary"] {
274
274
  background: transparent !important;
275
275
  border: none !important;
276
- border-top: 1px solid hsl(0 0% 12%) !important;
277
- border-bottom: 1px solid hsl(0 0% 12%) !important;
276
+ border-top: 1px solid var(--color-fd-border) !important;
277
+ border-bottom: 1px solid var(--color-fd-border) !important;
278
278
  border-radius: 0 !important;
279
- color: hsl(0 0% 45%);
279
+ color: var(--color-fd-muted-foreground);
280
280
  font-size: 0.8125rem;
281
281
  padding: 0.5rem 0 !important;
282
282
  width: calc(100% + 2rem) !important;
@@ -286,45 +286,45 @@ code:not(pre code) {
286
286
  padding-right: 1rem !important;
287
287
  }
288
288
 
289
- .dark aside button[class*="bg-fd-secondary"]:hover {
290
- background: hsl(0 0% 4%) !important;
291
- color: hsl(0 0% 65%);
289
+ aside button[class*="bg-fd-secondary"]:hover {
290
+ background: var(--color-fd-accent) !important;
291
+ color: var(--color-fd-foreground);
292
292
  }
293
293
 
294
- /* ── Theme toggle ────────────────────────────────────────────────── */
294
+ /* ── Theme toggle in sidebar (light + dark) ───────────────────────── */
295
295
 
296
- .dark aside button[class*="rounded-full"] {
297
- border-color: hsl(0 0% 12%);
296
+ aside button[class*="rounded-full"] {
297
+ border-color: var(--color-fd-border);
298
298
  }
299
299
 
300
- /* ─── Tables: visible borders, rounded wrapper ────────────────────── */
300
+ /* ─── Tables: visible borders, rounded-none (light + dark) ─────────── */
301
301
 
302
- .dark table {
303
- border: 1px solid hsl(0 0% 15%);
302
+ table {
303
+ border: 1px solid var(--color-fd-border);
304
304
  border-radius: 0 !important;
305
305
  overflow: hidden;
306
306
  }
307
307
 
308
- .dark th {
309
- background: hsl(0 0% 6%);
310
- color: hsl(0 0% 80%);
308
+ th {
309
+ background: var(--color-fd-muted);
310
+ color: var(--color-fd-foreground);
311
311
  font-weight: 500;
312
- border-color: hsl(0 0% 15%);
312
+ border-color: var(--color-fd-border);
313
313
  }
314
314
 
315
- .dark td {
316
- border-color: hsl(0 0% 12%);
315
+ td {
316
+ border-color: var(--color-fd-border);
317
317
  }
318
318
 
319
- .dark tr:last-child td {
319
+ tr:last-child td {
320
320
  border-bottom: none;
321
321
  }
322
322
 
323
- /* ─── Code blocks: single border only ─────────────────────────────── */
323
+ /* ─── Code blocks: single border, rounded-none (light + dark) ───────── */
324
324
 
325
325
  /* Target the fumadocs CodeBlock figure (shiki class) */
326
326
  figure.shiki {
327
- border: 1px solid hsl(0 0% 15%) !important;
327
+ border: 1px solid var(--color-fd-border) !important;
328
328
  border-radius: 0 !important;
329
329
  overflow: hidden;
330
330
  box-shadow: none !important;
@@ -340,23 +340,23 @@ figure.shiki > div:first-child {
340
340
  border-radius: 0 !important;
341
341
  }
342
342
 
343
- /* ─── Tabs (package manager / code tabs) ──────────────────────────── */
343
+ /* ─── Tabs (package manager / code tabs) light + dark ────────────── */
344
344
 
345
- .dark [role="tablist"] {
345
+ [role="tablist"] {
346
346
  border-radius: 0 !important;
347
347
  }
348
348
 
349
- .dark [role="tablist"] button,
350
- .dark [role="tab"] {
349
+ [role="tablist"] button,
350
+ [role="tab"] {
351
351
  border-radius: 0 !important;
352
352
  }
353
353
 
354
- .dark [role="tabpanel"] {
354
+ [role="tabpanel"] {
355
355
  border-radius: 0 !important;
356
356
  }
357
357
 
358
358
  /* Tabs container */
359
- .dark div:has(> [role="tablist"]) {
359
+ div:has(> [role="tablist"]) {
360
360
  border-radius: 0 !important;
361
361
  }
362
362
 
@@ -370,22 +370,22 @@ figure.shiki > div:first-child {
370
370
  padding: 0.125rem 0.375rem;
371
371
  } */
372
372
 
373
- /* ─── Callouts: visible border ────────────────────────────────────── */
373
+ /* ─── Callouts: visible border (light + dark) ──────────────────────── */
374
374
 
375
- .dark [class*="bg-fd-card"] {
376
- border-color: hsl(0 0% 15%);
375
+ [class*="bg-fd-card"] {
376
+ border-color: var(--color-fd-border);
377
377
  }
378
378
 
379
- /* ─── Nav cards (prev/next): visible border ───────────────────────── */
379
+ /* ─── Nav cards (prev/next): visible border, rounded-none ──────────── */
380
380
 
381
- .dark article a[class*="border"] {
382
- border-color: hsl(0 0% 15%);
381
+ article a[class*="border"] {
382
+ border-color: var(--color-fd-border);
383
383
  border-radius: 0 !important;
384
384
  }
385
385
 
386
- .dark article a[class*="border"]:hover {
387
- background: hsl(0 0% 6%);
388
- border-color: hsl(0 0% 22%);
386
+ article a[class*="border"]:hover {
387
+ background: var(--color-fd-muted);
388
+ border-color: var(--color-fd-ring);
389
389
  }
390
390
 
391
391
  /* ─── Search dialog ───────────────────────────────────────────────── */
@@ -394,17 +394,17 @@ figure.shiki > div:first-child {
394
394
  border-radius: 0 !important;
395
395
  }
396
396
 
397
- /* ─── TOC right panel ─────────────────────────────────────────────── */
397
+ /* ─── TOC right panel (light + dark) ───────────────────────────────── */
398
398
 
399
- .dark nav[class*="toc"],
400
- .dark [class*="fd-toc"] {
401
- border-color: hsl(0 0% 12%);
399
+ nav[class*="toc"],
400
+ [class*="fd-toc"] {
401
+ border-color: var(--color-fd-border);
402
402
  }
403
403
 
404
- /* ─── Separator/Divider (hr) ──────────────────────────────────────── */
404
+ /* ─── Separator/Divider (hr) light + dark ─────────────────────────── */
405
405
 
406
- .dark hr {
407
- border-color: hsl(0 0% 15%);
406
+ hr {
407
+ border-color: var(--color-fd-border);
408
408
  }
409
409
 
410
410
  /* ─── Breadcrumb (pixel-border overrides) ─────────────────────────── */