@farming-labs/theme 0.0.2-beta.15 → 0.0.2-beta.18

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.
@@ -0,0 +1,261 @@
1
+ /* @farming-labs/theme — colorful theme CSS
2
+ * Fumadocs-inspired theme with warm yellow/amber accent colors.
3
+ */
4
+ @import "./presets/neutral.css";
5
+
6
+ /* ─── Colorful yellow accent overrides ────────────────────────────── */
7
+
8
+ :root {
9
+ --color-fd-primary: hsl(40, 96%, 40%);
10
+ --color-fd-primary-foreground: hsl(0, 0%, 100%);
11
+ --color-fd-ring: hsl(40, 80%, 50%);
12
+ }
13
+
14
+ .dark {
15
+ --color-fd-primary: hsl(45, 100%, 60%);
16
+ --color-fd-primary-foreground: hsl(0, 0%, 5%);
17
+ --color-fd-ring: hsl(45, 90%, 55%);
18
+ }
19
+
20
+ /* ─── Description under title ──────────────────────────────────────── */
21
+
22
+ .fd-page-description {
23
+ margin-bottom: 1rem;
24
+ font-size: 1.125rem;
25
+ line-height: 1.75;
26
+ color: var(--color-fd-muted-foreground);
27
+ }
28
+
29
+ /* ─── Page Actions (colorful theme) ─────────────────────────────────── */
30
+
31
+ .fd-page-action-btn {
32
+ border-radius: 0.375rem;
33
+ }
34
+
35
+ .fd-page-action-menu {
36
+ border-radius: 0.5rem;
37
+ }
38
+
39
+ .fd-page-action-menu-item {
40
+ border-radius: 0.25rem;
41
+ }
42
+
43
+ /* ─── AI Chat (colorful theme) ───────────────────────────────────────── */
44
+
45
+ .fd-ai-dialog {
46
+ border-radius: 12px;
47
+ box-shadow: 0 20px 60px rgba(180, 140, 20, 0.08), 0 8px 24px rgba(0, 0, 0, 0.12);
48
+ }
49
+
50
+ .fd-ai-bubble-user {
51
+ border-radius: 16px 16px 4px 16px;
52
+ }
53
+
54
+ .fd-ai-bubble-ai {
55
+ border-radius: 16px 16px 16px 4px;
56
+ }
57
+
58
+ .fd-ai-input-wrap {
59
+ border-radius: 10px;
60
+ }
61
+
62
+ .fd-ai-send-btn {
63
+ border-radius: 8px;
64
+ }
65
+
66
+ .fd-ai-floating-btn {
67
+ border-radius: 26px;
68
+ box-shadow: 0 8px 32px rgba(180, 140, 20, 0.3);
69
+ }
70
+
71
+ .fd-ai-floating-btn:hover {
72
+ box-shadow: 0 10px 40px rgba(180, 140, 20, 0.4);
73
+ }
74
+
75
+ .fd-ai-suggestion {
76
+ border-radius: 8px;
77
+ }
78
+
79
+ .fd-ai-result {
80
+ border-radius: 8px;
81
+ }
82
+
83
+ /* ─── Full-Modal ────────────────────────────────────────────────────── */
84
+
85
+ .fd-ai-fm-input-container {
86
+ border-radius: 12px;
87
+ }
88
+
89
+ .fd-ai-fm-send-btn {
90
+ border-radius: 9999px;
91
+ }
92
+
93
+ .fd-ai-fm-suggestion {
94
+ border-radius: 9999px;
95
+ }
96
+
97
+ .fd-ai-fm-trigger-btn {
98
+ border-radius: 16px;
99
+ }
100
+
101
+ .fd-ai-fm-close-btn {
102
+ border-radius: 9999px;
103
+ }
104
+
105
+ /* ─── Code blocks ───────────────────────────────────────────────────── */
106
+
107
+ .fd-ai-code-block {
108
+ border-radius: 8px;
109
+ }
110
+
111
+ .fd-ai-code-copy {
112
+ border-radius: 4px;
113
+ }
114
+
115
+ /* ─── Sidebar colorful overrides ────────────────────────────────────── */
116
+
117
+ .dark .fd-sidebar {
118
+ --color-fd-muted: hsl(0, 0%, 16%);
119
+ --color-fd-secondary: hsl(0, 0%, 18%);
120
+ --color-fd-muted-foreground: hsl(0, 0%, 72%);
121
+ }
122
+
123
+ /* ─── Cards (fumadocs style) ────────────────────────────────────────── */
124
+
125
+ .fd-card {
126
+ display: block;
127
+ border-radius: 0.75rem;
128
+ border: 1px solid var(--color-fd-border);
129
+ background: var(--color-fd-card);
130
+ padding: 1rem;
131
+ font-size: 0.875rem;
132
+ color: var(--color-fd-card-foreground);
133
+ box-shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1);
134
+ transition: background-color 150ms, border-color 150ms;
135
+ }
136
+
137
+ .fd-card:hover {
138
+ background: var(--color-fd-accent);
139
+ }
140
+
141
+ .fd-card-icon {
142
+ margin-bottom: 0.5rem;
143
+ width: fit-content;
144
+ border-radius: 0.375rem;
145
+ border: 1px solid var(--color-fd-border);
146
+ padding: 0.375rem;
147
+ color: var(--color-fd-muted-foreground);
148
+ }
149
+
150
+ .fd-card-title {
151
+ font-weight: 500;
152
+ }
153
+
154
+ .fd-card-description {
155
+ color: var(--color-fd-muted-foreground);
156
+ margin-top: 0.25rem;
157
+ }
158
+
159
+ /* ─── Cards grid ──────────────────────────────────────────────────── */
160
+
161
+ .fd-cards {
162
+ display: grid;
163
+ grid-template-columns: 1fr;
164
+ gap: 1rem;
165
+ }
166
+
167
+ @media (min-width: 640px) {
168
+ .fd-cards {
169
+ grid-template-columns: repeat(2, 1fr);
170
+ }
171
+ }
172
+
173
+ /* ─── Page nav cards (fumadocs style) ──────────────────────────────── */
174
+
175
+ .fd-page-nav-card {
176
+ border-radius: 0.75rem;
177
+ }
178
+
179
+ /* ─── Inline code ──────────────────────────────────────────────────── */
180
+
181
+ .fd-docs-content :not(pre) > code {
182
+ padding: 3px;
183
+ border: 1px solid var(--color-fd-border);
184
+ font-size: 13px;
185
+ border-radius: 5px;
186
+ background: var(--color-fd-muted);
187
+ }
188
+
189
+ /* ─── Links in prose ───────────────────────────────────────────────── */
190
+
191
+ .fd-docs-content a:not(.fd-page-nav-card):not([class]) {
192
+ text-decoration: underline;
193
+ text-underline-offset: 3.5px;
194
+ text-decoration-color: var(--color-fd-primary);
195
+ text-decoration-thickness: 1.5px;
196
+ font-weight: 500;
197
+ }
198
+
199
+ /* ─── Tables (rounded style) ───────────────────────────────────────── */
200
+
201
+ .fd-docs-content table {
202
+ border-collapse: separate;
203
+ border-spacing: 0;
204
+ background: var(--color-fd-card);
205
+ border-radius: 0.75rem;
206
+ border: 1px solid var(--color-fd-border);
207
+ overflow: hidden;
208
+ }
209
+
210
+ .fd-docs-content th {
211
+ background: var(--color-fd-muted);
212
+ font-weight: 600;
213
+ }
214
+
215
+ .fd-docs-content th,
216
+ .fd-docs-content td {
217
+ padding: 0.625rem;
218
+ border-bottom: 1px solid var(--color-fd-border);
219
+ }
220
+
221
+ .fd-docs-content tr:last-child td {
222
+ border-bottom: none;
223
+ }
224
+
225
+ /* ─── Blockquotes ──────────────────────────────────────────────────── */
226
+
227
+ .fd-docs-content blockquote {
228
+ border-left: 2px solid var(--color-fd-primary);
229
+ padding-left: 1rem;
230
+ color: var(--color-fd-foreground);
231
+ font-style: normal;
232
+ }
233
+
234
+ /* ─── Horizontal rule ──────────────────────────────────────────────── */
235
+
236
+ .fd-docs-content hr {
237
+ border-color: var(--color-fd-border);
238
+ }
239
+
240
+ /* ─── Omni Command Palette (colorful theme) ─────────────────────── */
241
+
242
+ .omni-content {
243
+ border-radius: 0.75rem;
244
+ border: 1px solid var(--color-fd-border);
245
+ background: var(--color-fd-popover);
246
+ box-shadow: 0 24px 60px -12px rgba(180, 140, 20, 0.12), 0 0 0 1px rgba(255, 255, 255, 0.04);
247
+ }
248
+
249
+ .omni-item-active {
250
+ background: color-mix(in srgb, var(--color-fd-primary) 15%, transparent);
251
+ }
252
+
253
+ .omni-highlight {
254
+ background: color-mix(in srgb, var(--color-fd-primary) 30%, transparent);
255
+ color: var(--color-fd-primary-foreground);
256
+ }
257
+
258
+ .omni-search-input:focus {
259
+ caret-color: var(--color-fd-primary);
260
+ }
261
+
@@ -113,19 +113,19 @@ code:not(pre code) {
113
113
  }
114
114
 
115
115
  /* ═══════════════════════════════════════════════════════════════════
116
- * Global sharp radius — override all rounded Tailwind utilities
116
+ * Sharp radius — scoped to docs layout only
117
117
  * ═══════════════════════════════════════════════════════════════════ */
118
118
 
119
- [class*="rounded-lg"] {
119
+ #nd-docs-layout [class*="rounded-lg"] {
120
120
  border-radius: 0.2rem !important;
121
121
  }
122
122
 
123
- [class*="rounded-md"] {
123
+ #nd-docs-layout [class*="rounded-md"] {
124
124
  border-radius: 0.1rem !important;
125
125
  }
126
126
 
127
- [class*="rounded-xl"],
128
- [class*="rounded-2xl"] {
127
+ #nd-docs-layout [class*="rounded-xl"],
128
+ #nd-docs-layout [class*="rounded-2xl"] {
129
129
  border-radius: 0.2rem !important;
130
130
  }
131
131
 
@@ -431,3 +431,20 @@ article a[class*="text-fd-muted-foreground"] {
431
431
  .fd-ai-code-copy {
432
432
  border-radius: 2px;
433
433
  }
434
+
435
+ /* ─── Omni Command Palette (darksharp theme) ────────────────────── */
436
+
437
+ .omni-content {
438
+ border-radius: 0.5rem;
439
+ border: 1px solid var(--color-fd-border);
440
+ background: var(--color-fd-popover);
441
+ box-shadow: 0 4px 24px hsl(0 0% 0% / 0.4);
442
+ }
443
+
444
+ .omni-item {
445
+ border-radius: 0.25rem;
446
+ }
447
+
448
+ .omni-highlight {
449
+ background: color-mix(in srgb, var(--color-fd-primary) 30%, transparent);
450
+ }
@@ -86,3 +86,20 @@
86
86
  .fd-ai-code-copy {
87
87
  border-radius: 4px;
88
88
  }
89
+
90
+ /* ─── Omni Command Palette (default theme) ──────────────────────── */
91
+
92
+ .omni-content {
93
+ border-radius: 0.75rem;
94
+ border: 1px solid var(--color-fd-border, #262626);
95
+ background: var(--color-fd-popover, hsl(0 0% 5%));
96
+ box-shadow: 0 24px 60px -12px rgba(0, 0, 0, 0.3), 0 0 0 1px rgba(255, 255, 255, 0.04);
97
+ }
98
+
99
+ .omni-item {
100
+ border-radius: 0.375rem;
101
+ }
102
+
103
+ .omni-highlight {
104
+ background: color-mix(in srgb, var(--color-fd-primary, #6366f1) 25%, transparent);
105
+ }
@@ -0,0 +1,318 @@
1
+ /* ═══════════════════════════════════════════════════════════════════
2
+ * Omni Command Palette — core styles
3
+ * Uses fumadocs CSS variables so it auto-adapts to every theme.
4
+ * ═══════════════════════════════════════════════════════════════════ */
5
+
6
+ @keyframes omni-fade-in {
7
+ from { opacity: 0; }
8
+ to { opacity: 1; }
9
+ }
10
+ @keyframes omni-fade-out {
11
+ from { opacity: 1; }
12
+ to { opacity: 0; }
13
+ }
14
+ @keyframes omni-scale-in {
15
+ from { opacity: 0; transform: translateX(-50%) scale(0.96) translateY(-4px); }
16
+ to { opacity: 1; transform: translateX(-50%) scale(1) translateY(0); }
17
+ }
18
+ @keyframes omni-scale-out {
19
+ from { opacity: 1; transform: translateX(-50%) scale(1) translateY(0); }
20
+ to { opacity: 0; transform: translateX(-50%) scale(0.96) translateY(-4px); }
21
+ }
22
+
23
+ @keyframes omni-spin {
24
+ from { transform: rotate(0deg); }
25
+ to { transform: rotate(360deg); }
26
+ }
27
+
28
+ .omni-spin {
29
+ animation: omni-spin 1s linear infinite;
30
+ }
31
+
32
+ .omni-overlay {
33
+ position: fixed;
34
+ inset: 0;
35
+ z-index: 100;
36
+ background: rgba(0, 0, 0, 0.55);
37
+ backdrop-filter: blur(4px);
38
+ animation: omni-fade-in 150ms ease-out;
39
+ }
40
+
41
+ .omni-content {
42
+ position: fixed;
43
+ z-index: 101;
44
+ top: 18%;
45
+ left: 50%;
46
+ transform: translateX(-50%);
47
+ width: min(720px, calc(100% - 32px));
48
+ border-radius: var(--radius, 0.75rem);
49
+ border: 1px solid var(--color-fd-border, #262626);
50
+ background: var(--color-fd-popover, #0c0c0c);
51
+ color: var(--color-fd-foreground, #fafafa);
52
+ box-shadow:
53
+ 0 24px 60px -12px rgba(0, 0, 0, 0.5),
54
+ 0 0 0 1px rgba(255, 255, 255, 0.04);
55
+ outline: none;
56
+ overflow: hidden;
57
+ animation: omni-scale-in 200ms cubic-bezier(0.16, 1, 0.3, 1);
58
+ }
59
+
60
+ @media (max-width: 639px) {
61
+ .omni-content {
62
+ top: 10%;
63
+ width: calc(100% - 24px);
64
+ max-height: 75vh;
65
+ }
66
+ .omni-kbd {
67
+ display: none;
68
+ }
69
+ }
70
+
71
+ /* Header */
72
+ .omni-header {
73
+ border-bottom: 1px solid var(--color-fd-border, #262626);
74
+ }
75
+ .omni-search-row {
76
+ display: flex;
77
+ align-items: center;
78
+ gap: 0.5rem;
79
+ padding: 0.625rem 0.875rem;
80
+ }
81
+ .omni-search-icon {
82
+ color: var(--color-fd-muted-foreground, #a3a3a3);
83
+ flex-shrink: 0;
84
+ }
85
+ .omni-search-input {
86
+ flex: 1;
87
+ background: transparent;
88
+ outline: none;
89
+ font-size: 0.875rem;
90
+ line-height: 1.25rem;
91
+ color: var(--color-fd-foreground, #fafafa);
92
+ border: none;
93
+ }
94
+ .omni-search-input::placeholder {
95
+ color: var(--color-fd-muted-foreground, #a3a3a3);
96
+ }
97
+ .omni-kbd {
98
+ border-radius: 0.25rem;
99
+ background: var(--color-fd-muted, #262626);
100
+ padding: 0.125rem 0.375rem;
101
+ font-size: 10px;
102
+ color: var(--color-fd-muted-foreground, #a3a3a3);
103
+ font-family: inherit;
104
+ line-height: 1.4;
105
+ }
106
+ .omni-close-btn {
107
+ margin-left: 0.25rem;
108
+ border-radius: 0.25rem;
109
+ padding: 0.25rem;
110
+ color: var(--color-fd-muted-foreground, #a3a3a3);
111
+ transition: background 120ms;
112
+ cursor: pointer;
113
+ border: none;
114
+ background: none;
115
+ }
116
+ .omni-close-btn:hover {
117
+ background: var(--color-fd-muted, #262626);
118
+ }
119
+
120
+ /* Body / listbox */
121
+ .omni-body {
122
+ max-height: 60vh;
123
+ overflow: auto;
124
+ padding: 0.25rem;
125
+ }
126
+ .omni-body::-webkit-scrollbar { width: 6px; }
127
+ .omni-body::-webkit-scrollbar-track { background: transparent; }
128
+ .omni-body::-webkit-scrollbar-thumb {
129
+ background: var(--color-fd-muted, #262626);
130
+ border-radius: 3px;
131
+ }
132
+
133
+ /* Loading */
134
+ .omni-loading {
135
+ display: flex;
136
+ align-items: center;
137
+ gap: 0.5rem;
138
+ padding: 0.5rem 0.75rem;
139
+ color: var(--color-fd-muted-foreground, #a3a3a3);
140
+ font-size: 0.75rem;
141
+ }
142
+
143
+ /* Groups */
144
+ .omni-group { padding: 0.25rem 0; }
145
+ .omni-group-label {
146
+ padding: 0.25rem 0.75rem;
147
+ font-size: 10px;
148
+ text-transform: uppercase;
149
+ letter-spacing: 0.06em;
150
+ color: var(--color-fd-muted-foreground, #a3a3a3);
151
+ font-weight: 500;
152
+ }
153
+ .omni-group-items { display: flex; flex-direction: column; }
154
+
155
+ /* Items */
156
+ .omni-item {
157
+ display: flex;
158
+ width: 100%;
159
+ align-items: center;
160
+ gap: 0.75rem;
161
+ border-radius: calc(var(--radius, 0.75rem) - 4px);
162
+ padding: 0.5rem 0.75rem;
163
+ text-align: left;
164
+ font-size: 0.875rem;
165
+ line-height: 1.25rem;
166
+ cursor: pointer;
167
+ border: none;
168
+ background: transparent;
169
+ color: var(--color-fd-foreground, #fafafa);
170
+ transition: background 80ms;
171
+ }
172
+ .omni-item:hover,
173
+ .omni-item-active {
174
+ background: color-mix(in srgb, var(--color-fd-accent, #262626) 60%, transparent);
175
+ }
176
+ .omni-item-active {
177
+ color: var(--color-fd-accent-foreground, #fafafa);
178
+ }
179
+ .omni-item-disabled {
180
+ opacity: 0.5;
181
+ cursor: not-allowed;
182
+ }
183
+
184
+ .omni-item-icon {
185
+ flex-shrink: 0;
186
+ color: var(--color-fd-muted-foreground, #a3a3a3);
187
+ }
188
+ .omni-item-active .omni-item-icon {
189
+ color: var(--color-fd-accent-foreground, #fafafa);
190
+ }
191
+ .omni-item-text {
192
+ flex: 1;
193
+ min-width: 0;
194
+ }
195
+ .omni-item-label {
196
+ overflow: hidden;
197
+ text-overflow: ellipsis;
198
+ white-space: nowrap;
199
+ }
200
+ .omni-item-subtitle {
201
+ overflow: hidden;
202
+ text-overflow: ellipsis;
203
+ white-space: nowrap;
204
+ font-size: 0.75rem;
205
+ color: var(--color-fd-muted-foreground, #a3a3a3);
206
+ opacity: 0.8;
207
+ }
208
+ .omni-item-active .omni-item-subtitle {
209
+ color: var(--color-fd-accent-foreground, #fafafa);
210
+ opacity: 0.7;
211
+ }
212
+ .omni-item-badge {
213
+ color: var(--color-fd-muted-foreground, #a3a3a3);
214
+ flex-shrink: 0;
215
+ }
216
+ .omni-item-ext {
217
+ position: relative;
218
+ z-index: 2;
219
+ display: inline-flex;
220
+ align-items: center;
221
+ justify-content: center;
222
+ padding: 0.25rem;
223
+ border-radius: 0.25rem;
224
+ color: var(--color-fd-muted-foreground, #a3a3a3);
225
+ flex-shrink: 0;
226
+ transition: color 100ms, background 100ms;
227
+ text-decoration: none;
228
+ }
229
+ .omni-item-ext:hover {
230
+ color: var(--color-fd-foreground, #fafafa);
231
+ background: var(--color-fd-muted, #262626);
232
+ }
233
+ .omni-item-shortcuts {
234
+ display: none;
235
+ align-items: center;
236
+ gap: 0.25rem;
237
+ font-size: 10px;
238
+ color: var(--color-fd-muted-foreground, #a3a3a3);
239
+ }
240
+ @media (min-width: 640px) {
241
+ .omni-item-shortcuts { display: flex; }
242
+ }
243
+ .omni-kbd-sm {
244
+ border-radius: 0.25rem;
245
+ background: var(--color-fd-muted, #262626);
246
+ padding: 0.125rem 0.25rem;
247
+ font-family: inherit;
248
+ }
249
+ .omni-item-chevron {
250
+ width: 0.875rem;
251
+ height: 0.875rem;
252
+ margin-left: 0.25rem;
253
+ color: var(--color-fd-muted-foreground, #a3a3a3);
254
+ opacity: 0;
255
+ transition: opacity 120ms;
256
+ flex-shrink: 0;
257
+ }
258
+ .omni-item:hover .omni-item-chevron { opacity: 1; }
259
+
260
+ /* Highlight */
261
+ .omni-highlight {
262
+ border-radius: 2px;
263
+ background: color-mix(in srgb, var(--color-fd-primary, #6366f1) 30%, transparent);
264
+ padding: 0 2px;
265
+ color: inherit;
266
+ }
267
+
268
+ /* Empty states */
269
+ .omni-empty-group {
270
+ padding: 0.5rem 0.75rem;
271
+ font-size: 0.75rem;
272
+ color: var(--color-fd-muted-foreground, #a3a3a3);
273
+ }
274
+ .omni-empty {
275
+ padding: 2rem 0.75rem;
276
+ text-align: center;
277
+ font-size: 0.875rem;
278
+ color: var(--color-fd-muted-foreground, #a3a3a3);
279
+ }
280
+ .omni-empty-icon {
281
+ width: 2rem;
282
+ height: 2rem;
283
+ margin: 0 auto 0.5rem;
284
+ display: flex;
285
+ align-items: center;
286
+ justify-content: center;
287
+ border-radius: 9999px;
288
+ background: var(--color-fd-muted, #262626);
289
+ }
290
+
291
+ /* Footer */
292
+ .omni-footer {
293
+ border-top: 1px solid var(--color-fd-border, #262626);
294
+ }
295
+ .omni-footer-inner {
296
+ display: flex;
297
+ align-items: center;
298
+ justify-content: space-between;
299
+ padding: 0.5rem 0.75rem;
300
+ font-size: 0.75rem;
301
+ color: var(--color-fd-muted-foreground, #a3a3a3);
302
+ }
303
+ .omni-footer-hints {
304
+ display: flex;
305
+ align-items: center;
306
+ gap: 1rem;
307
+ }
308
+ .omni-footer-hint {
309
+ display: flex;
310
+ align-items: center;
311
+ gap: 0.25rem;
312
+ }
313
+ .omni-footer-hint-desktop {
314
+ display: none;
315
+ }
316
+ @media (min-width: 640px) {
317
+ .omni-footer-hint-desktop { display: flex; }
318
+ }