@canopy-iiif/app 0.8.2 → 0.8.4

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 (37) hide show
  1. package/lib/AGENTS.md +1 -1
  2. package/lib/build/build.js +10 -0
  3. package/lib/build/dev.js +87 -40
  4. package/lib/build/iiif.js +124 -43
  5. package/lib/build/mdx.js +14 -4
  6. package/lib/build/pages.js +23 -9
  7. package/lib/build/runtimes.js +6 -6
  8. package/lib/build/search.js +7 -10
  9. package/lib/build/verify.js +9 -9
  10. package/lib/components/featured.js +17 -3
  11. package/lib/components/navigation.js +308 -0
  12. package/lib/page-context.js +14 -0
  13. package/lib/search/search-app.jsx +2 -2
  14. package/lib/search/{command-runtime.js → search-form-runtime.js} +9 -9
  15. package/lib/search/search.js +2 -2
  16. package/package.json +1 -1
  17. package/ui/dist/index.mjs +76 -63
  18. package/ui/dist/index.mjs.map +3 -3
  19. package/ui/dist/server.mjs +170 -67
  20. package/ui/dist/server.mjs.map +4 -4
  21. package/ui/styles/base/_common.scss +19 -6
  22. package/ui/styles/base/_heading.scss +17 -0
  23. package/ui/styles/base/index.scss +2 -1
  24. package/ui/styles/components/_sub-navigation.scss +76 -0
  25. package/ui/styles/components/header/_header.scss +13 -0
  26. package/ui/styles/components/header/_logo.scss +20 -0
  27. package/ui/styles/components/header/_navbar.scss +15 -0
  28. package/ui/styles/components/header/index.scss +3 -0
  29. package/ui/styles/components/index.scss +5 -4
  30. package/ui/styles/components/search/_filters.scss +265 -0
  31. package/ui/styles/components/search/_form.scss +171 -0
  32. package/ui/styles/components/search/_results.scss +158 -0
  33. package/ui/styles/components/search/index.scss +3 -0
  34. package/ui/styles/index.css +584 -71
  35. package/ui/styles/variables.scss +15 -5
  36. package/ui/styles/components/_command.scss +0 -164
  37. package/ui/styles/components/_header.scss +0 -0
@@ -1,11 +1,34 @@
1
+ html,
2
+ body {
3
+ margin: 0;
4
+ padding: 0;
5
+ font-family: "DM Sans", "-apple-system", "Segoe UI", Roboto, Ubuntu, Helvetica, Arial, sans-serif;
6
+ }
7
+
1
8
  a {
2
9
  text-decoration: none;
3
- color: var(--color-brand-default);
10
+ color: #3358d4;
4
11
  }
5
12
  a:hover {
6
13
  text-decoration: underline;
7
14
  }
8
15
 
16
+ h1 {
17
+ font-family: "DM Serif Display", Georgia, "Times New Roman", serif;
18
+ font-size: 2.618rem;
19
+ line-height: 1.25;
20
+ margin: 0 0 1rem 0;
21
+ font-weight: 400;
22
+ }
23
+
24
+ h2 {
25
+ font-family: "DM Serif Display", Georgia, "Times New Roman", serif;
26
+ font-size: 1.618rem;
27
+ line-height: 1.25;
28
+ margin: 0 0 0.618rem 0;
29
+ font-weight: 400;
30
+ }
31
+
9
32
  /* Canopy Card component styles */
10
33
  .canopy-card {
11
34
  display: block;
@@ -64,7 +87,237 @@ a:hover {
64
87
  box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.07), 0 1px 2px 0 rgba(0, 0, 0, 0.07);
65
88
  }
66
89
 
67
- .canopy-cmdk .canopy-cmdk__trigger {
90
+ @layer components {
91
+ .canopy-header {
92
+ display: flex;
93
+ justify-content: space-between;
94
+ align-items: center;
95
+ gap: 1.618rem;
96
+ padding: 0.618rem 1rem;
97
+ box-shadow: 5px 5px 19px rgba(0, 0, 0, 0.2);
98
+ background: #fff;
99
+ }
100
+ }
101
+ .canopy-logo {
102
+ display: flex;
103
+ align-items: center;
104
+ gap: 0.618rem;
105
+ font-weight: 400;
106
+ font-size: 1.618rem;
107
+ font-family: "DM Serif Display", Georgia, "Times New Roman", serif;
108
+ color: #121418;
109
+ }
110
+ .canopy-logo img {
111
+ height: 1.618rem;
112
+ margin-bottom: -1px;
113
+ }
114
+ .canopy-logo:hover {
115
+ text-decoration: none;
116
+ }
117
+
118
+ .canopy-navbar {
119
+ display: flex;
120
+ align-items: center;
121
+ gap: 1rem;
122
+ font-size: 1rem;
123
+ }
124
+ .canopy-navbar a {
125
+ color: var(--color-primary);
126
+ text-decoration: none;
127
+ }
128
+ .canopy-navbar a:hover {
129
+ text-decoration: underline;
130
+ }
131
+
132
+ .canopy-hero {
133
+ padding: 0;
134
+ margin: 0;
135
+ }
136
+ .canopy-hero figcaption {
137
+ margin: 0;
138
+ padding: 1rem 0 0;
139
+ font-size: 1rem;
140
+ text-align: right;
141
+ }
142
+
143
+ .canopy-hero-link {
144
+ display: block;
145
+ color: inherit;
146
+ text-decoration: none;
147
+ }
148
+
149
+ .canopy-hero__media {
150
+ position: relative;
151
+ }
152
+
153
+ .canopy-search-form-shell {
154
+ --search-form-label-padding-x: 0.75rem;
155
+ --search-form-label-padding-y: 0.625rem;
156
+ position: relative;
157
+ backdrop-filter: blur(12px);
158
+ background-color: color-mix(in srgb, #fff 95%, transparent);
159
+ transition: box-shadow var(--duration-fast, 150ms) ease, background-color var(--duration-fast, 150ms) ease;
160
+ cursor: text;
161
+ padding-right: 0.4rem;
162
+ }
163
+ .canopy-search-form-shell::after {
164
+ content: attr(data-placeholder);
165
+ position: absolute;
166
+ left: calc(var(--search-form-label-padding-x) + 1.25rem + 0.5rem);
167
+ right: 5.5rem;
168
+ top: 50%;
169
+ transform: translateY(-50%);
170
+ color: rgba(148, 163, 184, 0.75);
171
+ opacity: 0.75;
172
+ pointer-events: none;
173
+ white-space: nowrap;
174
+ overflow: hidden;
175
+ text-overflow: ellipsis;
176
+ transition: opacity var(--duration-fast, 150ms) ease;
177
+ }
178
+ .canopy-search-form-shell:hover {
179
+ box-shadow: var(--shadow-md, 0 4px 6px rgba(0, 0, 0, 0.1), 0 2px 4px rgba(0, 0, 0, 0.06));
180
+ }
181
+ .canopy-search-form-shell:focus-within::after, .canopy-search-form-shell[data-has-value="1"]::after {
182
+ opacity: 0;
183
+ }
184
+ .canopy-search-form-shell input[data-canopy-search-form-input] {
185
+ width: 100%;
186
+ border: 0;
187
+ outline: none;
188
+ background: transparent;
189
+ box-shadow: none;
190
+ opacity: 0;
191
+ caret-color: transparent;
192
+ transition: opacity var(--duration-fast, 150ms) ease;
193
+ }
194
+ .canopy-search-form-shell:focus-within input[data-canopy-search-form-input], .canopy-search-form-shell[data-has-value="1"] input[data-canopy-search-form-input] {
195
+ opacity: 1;
196
+ caret-color: var(--color-gray-900, #121418);
197
+ }
198
+
199
+ .canopy-search-form {
200
+ display: flex;
201
+ align-items: center;
202
+ gap: 0.5rem;
203
+ border: 1px solid var(--color-gray-300, #cdced6);
204
+ border-radius: 0.75rem;
205
+ color: var(--color-gray-700, #60646c);
206
+ box-shadow: var(--shadow-sm, 0 1px 2px rgba(0, 0, 0, 0.05));
207
+ transition: border-color var(--duration-fast, 150ms) var(--easing-standard, ease), box-shadow var(--duration-fast, 150ms) var(--easing-standard, ease), background-color var(--duration-fast, 150ms) var(--easing-standard, ease);
208
+ }
209
+ .canopy-search-form:focus-within {
210
+ border-color: var(--color-brand-500, #3e63dd);
211
+ box-shadow: 0 0 0 2px color-mix(in srgb, var(--color-brand-500, #3e63dd) 45%, transparent), var(--shadow-sm, 0 1px 2px rgba(0, 0, 0, 0.05));
212
+ }
213
+ .canopy-search-form:focus-within .canopy-search-form__icon {
214
+ color: var(--color-brand-500, #3e63dd);
215
+ }
216
+ .canopy-search-form[data-has-value="1"] .canopy-search-form__icon {
217
+ color: var(--color-brand-500, #3e63dd);
218
+ }
219
+
220
+ .canopy-search-form__label {
221
+ flex: 1;
222
+ min-width: 0;
223
+ display: flex;
224
+ align-items: center;
225
+ gap: 0.5rem;
226
+ cursor: text;
227
+ padding: var(--search-form-label-padding-y) var(--search-form-label-padding-x);
228
+ }
229
+
230
+ .canopy-search-form__icon {
231
+ width: 1.25rem;
232
+ height: 1.25rem;
233
+ flex-shrink: 0;
234
+ color: var(--color-gray-400, #b9bbc6);
235
+ pointer-events: none;
236
+ transition: color var(--duration-fast, 150ms) var(--easing-standard, ease);
237
+ }
238
+
239
+ .canopy-search-form__input {
240
+ flex: 1;
241
+ min-width: 0;
242
+ padding: 0.125rem 0;
243
+ font-size: var(--font-size-base, 1rem);
244
+ line-height: var(--line-height-base, 1.5rem);
245
+ background: transparent;
246
+ border: 0;
247
+ color: inherit;
248
+ outline: none;
249
+ transition: opacity var(--duration-fast, 150ms) var(--easing-standard, ease), caret-color var(--duration-fast, 150ms) var(--easing-standard, ease);
250
+ }
251
+ .canopy-search-form__input::placeholder {
252
+ color: rgba(148, 163, 184, 0.75);
253
+ }
254
+
255
+ .canopy-search-form__submit {
256
+ display: inline-flex;
257
+ align-items: center;
258
+ gap: 0.382rem;
259
+ border-radius: 0.382rem;
260
+ border: 0;
261
+ background: #3358d4;
262
+ color: #fff;
263
+ font-weight: 400;
264
+ font-size: 1rem;
265
+ padding: 0.382rem 0.618rem;
266
+ transition: background-color var(--duration-fast, 150ms) var(--easing-standard, ease), transform var(--duration-fast, 150ms) var(--easing-standard, ease);
267
+ cursor: pointer;
268
+ }
269
+ .canopy-search-form__submit:hover, .canopy-search-form__submit:focus-visible {
270
+ background: #243c94;
271
+ box-shadow: var(--shadow-md, 0 4px 6px rgba(0, 0, 0, 0.1));
272
+ }
273
+ .canopy-search-form__submit:focus-visible {
274
+ outline: none;
275
+ box-shadow: 0 0 0 2px #fff, 0 0 0 4px color-mix(in srgb, var(--color-brand-500, #3e63dd) 65%, transparent);
276
+ }
277
+ .canopy-search-form__submit:active {
278
+ transform: translateY(1px);
279
+ }
280
+
281
+ .canopy-search-form__shortcut {
282
+ align-items: center;
283
+ color: inherit;
284
+ opacity: 0.7;
285
+ }
286
+
287
+ .canopy-search-tabs-wrapper {
288
+ display: flex;
289
+ flex-wrap: wrap;
290
+ align-items: center;
291
+ justify-content: space-between;
292
+ }
293
+
294
+ .canopy-search-results {
295
+ padding: 1.618rem;
296
+ }
297
+
298
+ .canopy-search-tabs {
299
+ display: flex;
300
+ align-items: center;
301
+ gap: 0.5rem;
302
+ margin-bottom: 1rem;
303
+ }
304
+ .canopy-search-tabs button {
305
+ background: none;
306
+ border: none;
307
+ padding: 0.382rem 0.618rem;
308
+ font-size: 1rem;
309
+ cursor: pointer;
310
+ color: #80838d;
311
+ transition: all 0.2s ease-in-out;
312
+ }
313
+ .canopy-search-tabs button.active, .canopy-search-tabs button:hover {
314
+ color: #3358d4;
315
+ background-color: #edf2fe;
316
+ border-radius: 0.382rem;
317
+ font-weight: 400;
318
+ }
319
+
320
+ .canopy-search-form-modal .canopy-search-form-modal__trigger {
68
321
  display: inline-flex;
69
322
  align-items: center;
70
323
  gap: 0.25rem;
@@ -75,7 +328,7 @@ a:hover {
75
328
  border-radius: 6px;
76
329
  cursor: pointer;
77
330
  }
78
- .canopy-cmdk .canopy-cmdk__overlay {
331
+ .canopy-search-form-modal .canopy-search-form-modal__overlay {
79
332
  position: fixed;
80
333
  inset: 0;
81
334
  display: none;
@@ -85,7 +338,7 @@ a:hover {
85
338
  z-index: 9999;
86
339
  padding-top: 10vh;
87
340
  }
88
- .canopy-cmdk .canopy-cmdk__panel {
341
+ .canopy-search-form-modal .canopy-search-form-modal__panel {
89
342
  position: relative;
90
343
  background: #fff;
91
344
  min-width: 320px;
@@ -96,7 +349,7 @@ a:hover {
96
349
  overflow: hidden;
97
350
  font-family: var(--canopy-font-sans, system-ui, -apple-system, "Segoe UI", "Helvetica Neue", Helvetica, Arial, sans-serif);
98
351
  }
99
- .canopy-cmdk .canopy-cmdk__close {
352
+ .canopy-search-form-modal .canopy-search-form-modal__close {
100
353
  position: absolute;
101
354
  top: 8px;
102
355
  right: 8px;
@@ -106,126 +359,386 @@ a:hover {
106
359
  padding: 2px 6px;
107
360
  cursor: pointer;
108
361
  }
109
- .canopy-cmdk .canopy-cmdk__inputWrap {
362
+ .canopy-search-form-modal .canopy-search-form-modal__inputWrap {
110
363
  padding: 10px 12px;
111
364
  border-bottom: 1px solid #e5e7eb;
112
365
  }
113
- .canopy-cmdk .canopy-cmdk__input {
366
+ .canopy-search-form-modal .canopy-search-form-modal__input {
114
367
  width: 100%;
115
368
  padding: 8px 10px;
116
369
  border: 1px solid #e5e7eb;
117
370
  border-radius: 6px;
118
371
  outline: none;
119
372
  }
120
- .canopy-cmdk .canopy-cmdk__list {
373
+ .canopy-search-form-modal .canopy-search-form-modal__list {
121
374
  max-height: 50vh;
122
375
  overflow: auto;
123
376
  padding: 6px 0;
124
377
  }
125
- .canopy-cmdk .canopy-cmdk__item {
378
+ .canopy-search-form-modal .canopy-search-form-modal__item {
126
379
  display: flex;
127
380
  align-items: center;
128
381
  gap: 8px;
129
382
  }
130
- .canopy-cmdk .canopy-cmdk__thumb {
383
+ .canopy-search-form-modal .canopy-search-form-modal__thumb {
131
384
  width: 40px;
132
385
  height: 40px;
133
386
  object-fit: cover;
134
387
  border-radius: 4px;
135
388
  }
389
+ .canopy-search-form-modal .canopy-search-form-modal__title {
390
+ font-size: var(--font-size-sm, 0.875rem);
391
+ line-height: var(--line-height-sm, 1.25rem);
392
+ color: var(--color-gray-900, #121418);
393
+ font-weight: 500;
394
+ }
136
395
 
137
- .canopy-cmdk-form {
138
- --cmdk-label-padding-x: 0.75rem;
139
- --cmdk-label-padding-y: 0.625rem;
140
- position: relative;
141
- backdrop-filter: blur(12px);
142
- background-color: color-mix(in srgb, #fff 95%, transparent);
143
- transition: box-shadow var(--duration-fast, 150ms) ease, background-color var(--duration-fast, 150ms) ease;
144
- cursor: text;
145
- padding-right: 0.4rem;
396
+ [data-canopy-search-form-panel] {
397
+ display: none;
146
398
  }
147
- .canopy-cmdk-form::after {
148
- content: attr(data-placeholder);
399
+
400
+ .canopy-search-teaser {
149
401
  position: absolute;
150
- left: calc(var(--cmdk-label-padding-x) + 1.25rem + 0.5rem);
151
- right: 5.5rem;
152
- top: 50%;
153
- transform: translateY(-50%);
154
- color: rgba(148, 163, 184, 0.75);
155
- opacity: 0.75;
156
- pointer-events: none;
157
- white-space: nowrap;
402
+ left: 0;
403
+ right: 0;
404
+ top: calc(100% + 4px);
405
+ background: #fff;
406
+ border: 1px solid #e5e7eb;
407
+ border-radius: 8px;
408
+ box-shadow: 0 10px 25px rgba(0, 0, 0, 0.12);
409
+ z-index: 1000;
410
+ overflow: auto;
411
+ max-height: 60vh;
412
+ padding: 0.5rem 0;
413
+ display: none;
414
+ }
415
+
416
+ .relative[data-canopy-search-form-auto="1"]:focus-within [data-canopy-search-form-panel] {
417
+ display: block;
418
+ }
419
+
420
+ .canopy-search-filters-overlay {
421
+ position: fixed;
422
+ inset: 0;
423
+ z-index: 1050;
424
+ display: flex;
425
+ align-items: flex-start;
426
+ justify-content: center;
427
+ background: rgba(15, 23, 42, 0.5);
428
+ padding: 2rem 1rem;
429
+ overflow-y: auto;
430
+ }
431
+
432
+ .canopy-search-filters {
433
+ width: 100%;
434
+ max-width: 48rem;
158
435
  overflow: hidden;
159
- text-overflow: ellipsis;
160
- transition: opacity var(--duration-fast, 150ms) ease;
436
+ border-radius: 0.75rem;
437
+ background: #fff;
438
+ box-shadow: 0 25px 50px -12px rgba(15, 23, 42, 0.4), 0 10px 20px rgba(15, 23, 42, 0.12);
439
+ display: flex;
440
+ flex-direction: column;
441
+ gap: 0;
161
442
  }
162
- .canopy-cmdk-form input[data-canopy-command-input] {
163
- opacity: 0;
164
- caret-color: transparent;
165
- transition: opacity var(--duration-fast, 150ms) ease;
166
- border: 0;
167
- outline: none;
443
+
444
+ .canopy-search-filters__header {
445
+ display: flex;
446
+ align-items: flex-start;
447
+ justify-content: space-between;
448
+ gap: 1rem;
449
+ border-bottom: 1px solid var(--color-gray-200, #e0e1e6);
450
+ padding: 1rem 1.5rem;
451
+ }
452
+
453
+ .canopy-search-filters__title {
454
+ margin: 0;
455
+ font-size: var(--font-size-lg, 1.125rem);
456
+ line-height: var(--line-height-lg, 1.75rem);
457
+ font-weight: 600;
458
+ color: var(--color-gray-900, #121418);
459
+ }
460
+
461
+ .canopy-search-filters__subtitle {
462
+ margin: 0.25rem 0 0;
463
+ font-size: var(--font-size-sm, 0.875rem);
464
+ line-height: var(--line-height-sm, 1.25rem);
465
+ color: var(--color-gray-500, #8b8d98);
466
+ }
467
+
468
+ .canopy-search-filters__close {
469
+ border-radius: 0.375rem;
470
+ border: 1px solid transparent;
168
471
  background: transparent;
169
- box-shadow: none;
472
+ padding: 0.25rem 0.5rem;
473
+ font-size: var(--font-size-sm, 0.875rem);
474
+ color: var(--color-gray-600, #80838d);
475
+ transition: background-color var(--duration-fast, 150ms) var(--easing-standard, ease), color var(--duration-fast, 150ms) var(--easing-standard, ease);
170
476
  }
171
- .canopy-cmdk-form input[data-canopy-command-input]:focus {
172
- outline: none;
173
- border: 0;
174
- box-shadow: none;
477
+ .canopy-search-filters__close:hover {
478
+ background: var(--color-gray-100, #f0f0f3);
479
+ color: var(--color-gray-900, #121418);
175
480
  }
176
- .canopy-cmdk-form:focus-within::after {
177
- opacity: 0;
481
+
482
+ .canopy-search-filters__body {
483
+ padding: 1.5rem;
484
+ display: grid;
485
+ gap: 1rem;
178
486
  }
179
- .canopy-cmdk-form:focus-within input[data-canopy-command-input] {
180
- opacity: 1;
181
- caret-color: inherit;
182
- outline: none;
183
- border: 0;
184
- box-shadow: none;
487
+
488
+ .canopy-search-filters__facets {
489
+ display: flex;
490
+ flex-direction: column;
491
+ gap: 0.75rem;
185
492
  }
186
- .canopy-cmdk-form:hover {
187
- box-shadow: var(--shadow-md, 0 4px 6px rgba(0, 0, 0, 0.1), 0 2px 4px rgba(0, 0, 0, 0.06));
493
+
494
+ .canopy-search-filters__empty {
495
+ font-size: var(--font-size-sm, 0.875rem);
496
+ line-height: var(--line-height-sm, 1.25rem);
497
+ color: var(--color-gray-500, #8b8d98);
498
+ }
499
+
500
+ .canopy-search-filters__facet {
501
+ border: 1px solid var(--color-gray-200, #e0e1e6);
502
+ border-radius: 0.75rem;
503
+ background: var(--color-gray-50, #fcfcfd);
504
+ overflow: hidden;
188
505
  }
189
- .canopy-cmdk-form button[data-canopy-command-trigger] {
506
+ .canopy-search-filters__facet[open] {
507
+ background: #fff;
508
+ }
509
+
510
+ .canopy-search-filters__facet-summary {
511
+ display: flex;
512
+ align-items: center;
513
+ justify-content: space-between;
514
+ gap: 0.75rem;
515
+ padding: 0.75rem 1rem;
516
+ font-size: var(--font-size-sm, 0.875rem);
517
+ font-weight: 600;
518
+ color: var(--color-gray-900, #121418);
190
519
  cursor: pointer;
520
+ list-style: none;
191
521
  }
192
522
 
193
- .canopy-cmdk-shortcut {
194
- display: inline-flex;
523
+ .canopy-search-filters__facet-summary::-webkit-details-marker {
524
+ display: none;
525
+ }
526
+
527
+ .canopy-search-filters__facet-count {
528
+ font-size: var(--font-size-xs, 0.75rem);
529
+ font-weight: 400;
530
+ color: var(--color-gray-500, #8b8d98);
531
+ }
532
+
533
+ .canopy-search-filters__facet-content {
534
+ border-top: 1px solid var(--color-gray-200, #e0e1e6);
535
+ background: #fff;
536
+ padding: 1rem;
537
+ max-height: 15rem;
538
+ overflow-y: auto;
539
+ }
540
+
541
+ .canopy-search-filters__quick {
542
+ display: flex;
195
543
  align-items: center;
196
- gap: 0.25rem;
197
- border: 1px solid color-mix(in srgb, #fff 40%, transparent);
198
- background-color: color-mix(in srgb, #fff 20%, transparent);
199
- border-radius: 0.375rem;
200
- padding: 0.125rem 0.5rem;
544
+ gap: 0.5rem;
545
+ margin-bottom: 0.75rem;
201
546
  }
202
547
 
203
- .canopy-cmdk-label {
548
+ .canopy-search-filters__quick-input {
204
549
  flex: 1;
205
550
  min-width: 0;
551
+ border-radius: 0.5rem;
552
+ border: 1px solid var(--color-gray-300, #cdced6);
553
+ padding: 0.375rem 0.75rem;
554
+ font-size: var(--font-size-sm, 0.875rem);
555
+ color: var(--color-gray-700, #60646c);
556
+ transition: border-color var(--duration-fast, 150ms) var(--easing-standard, ease), box-shadow var(--duration-fast, 150ms) var(--easing-standard, ease);
557
+ }
558
+ .canopy-search-filters__quick-input:focus {
559
+ outline: none;
560
+ border-color: var(--color-brand-500, #3e63dd);
561
+ box-shadow: 0 0 0 1px var(--color-brand-500, #3e63dd);
562
+ }
563
+
564
+ .canopy-search-filters__quick-clear {
565
+ border-radius: 0.375rem;
566
+ border: 1px solid var(--color-gray-200, #e0e1e6);
567
+ padding: 0.25rem 0.5rem;
568
+ font-size: var(--font-size-xs, 0.75rem);
569
+ color: var(--color-gray-600, #80838d);
570
+ background: #fff;
571
+ transition: background-color var(--duration-fast, 150ms) var(--easing-standard, ease), color var(--duration-fast, 150ms) var(--easing-standard, ease);
572
+ }
573
+ .canopy-search-filters__quick-clear:hover {
574
+ background: var(--color-gray-100, #f0f0f3);
575
+ color: var(--color-gray-900, #121418);
576
+ }
577
+
578
+ .canopy-search-filters__facet-list {
579
+ list-style: none;
580
+ margin: 0;
581
+ padding: 0;
582
+ display: flex;
583
+ flex-direction: column;
584
+ gap: 0.5rem;
585
+ font-size: var(--font-size-sm, 0.875rem);
586
+ color: var(--color-gray-700, #60646c);
587
+ }
588
+
589
+ .canopy-search-filters__facet-item {
590
+ display: flex;
591
+ align-items: flex-start;
592
+ gap: 0.5rem;
593
+ }
594
+
595
+ .canopy-search-filters__facet-checkbox {
596
+ margin-top: 0.25rem;
597
+ width: 1rem;
598
+ height: 1rem;
599
+ border-radius: 0.375rem;
600
+ border: 1px solid var(--color-gray-300, #cdced6);
601
+ color: var(--color-brand-500, #3e63dd);
602
+ accent-color: var(--color-brand-500, #3e63dd);
603
+ }
604
+
605
+ .canopy-search-filters__facet-label {
606
+ display: flex;
607
+ flex: 1;
608
+ flex-direction: column;
609
+ gap: 0.25rem;
610
+ }
611
+
612
+ .canopy-search-filters__facet-empty,
613
+ .canopy-search-filters__facet-notice {
614
+ font-size: var(--font-size-xs, 0.75rem);
615
+ color: rgba(148, 163, 184, 0.9);
616
+ }
617
+
618
+ .canopy-search-filters__footer {
619
+ display: flex;
620
+ align-items: center;
621
+ justify-content: space-between;
622
+ gap: 1rem;
623
+ border-top: 1px solid var(--color-gray-200, #e0e1e6);
624
+ padding: 1rem 1.5rem;
625
+ font-size: var(--font-size-sm, 0.875rem);
626
+ color: var(--color-gray-500, #8b8d98);
627
+ }
628
+
629
+ .canopy-search-filters__footer-actions {
206
630
  display: flex;
207
631
  align-items: center;
208
632
  gap: 0.5rem;
209
- padding: var(--cmdk-label-padding-y) var(--cmdk-label-padding-x);
210
633
  }
211
634
 
212
- .canopy-hero {
213
- padding: 0;
635
+ .canopy-search-filters__button {
636
+ border-radius: 0.5rem;
637
+ padding: 0.375rem 0.75rem;
638
+ font-size: var(--font-size-sm, 0.875rem);
639
+ font-weight: 500;
640
+ line-height: var(--line-height-sm, 1.25rem);
641
+ transition: background-color var(--duration-fast, 150ms) var(--easing-standard, ease), color var(--duration-fast, 150ms) var(--easing-standard, ease), box-shadow var(--duration-fast, 150ms) var(--easing-standard, ease);
642
+ }
643
+
644
+ .canopy-search-filters__button--secondary {
645
+ border: 1px solid var(--color-gray-200, #e0e1e6);
646
+ background: #fff;
647
+ color: var(--color-gray-600, #80838d);
648
+ }
649
+ .canopy-search-filters__button--secondary:hover:not([disabled]) {
650
+ background: var(--color-gray-100, #f0f0f3);
651
+ color: var(--color-gray-900, #121418);
652
+ }
653
+ .canopy-search-filters__button--secondary:disabled {
654
+ cursor: not-allowed;
655
+ color: rgba(148, 163, 184, 0.8);
656
+ }
657
+
658
+ .canopy-search-filters__button--primary {
659
+ border: 1px solid transparent;
660
+ background: var(--color-brand-500, #3e63dd);
661
+ color: #fff;
662
+ box-shadow: var(--shadow-sm, 0 1px 2px rgba(0, 0, 0, 0.05));
663
+ }
664
+ .canopy-search-filters__button--primary:hover {
665
+ background: var(--color-brand-700, #2c4bbd);
666
+ box-shadow: var(--shadow-md, 0 4px 6px rgba(0, 0, 0, 0.1));
667
+ }
668
+
669
+ .canopy-sub-navigation {
670
+ --sub-nav-indent: 0.85rem;
671
+ font-size: 0.95rem;
672
+ color: inherit;
673
+ }
674
+
675
+ .canopy-sub-navigation__heading {
676
+ font-weight: 600;
677
+ margin-bottom: 0.5rem;
678
+ }
679
+
680
+ .canopy-sub-navigation__list {
681
+ list-style: none;
214
682
  margin: 0;
683
+ padding: 0;
215
684
  }
216
- .canopy-hero figcaption {
685
+
686
+ .canopy-sub-navigation__item {
217
687
  margin: 0;
218
- padding: 1rem 0 0;
219
- font-size: 1rem;
220
- text-align: right;
688
+ padding: 0;
221
689
  }
222
690
 
223
- .canopy-hero-link {
691
+ .canopy-sub-navigation__link {
224
692
  display: block;
693
+ padding: 0.35rem 0.5rem;
694
+ border-radius: 0.375rem;
225
695
  color: inherit;
226
696
  text-decoration: none;
697
+ transition: background-color 120ms ease, color 120ms ease;
227
698
  }
228
699
 
229
- .canopy-hero__media {
230
- position: relative;
700
+ .canopy-sub-navigation__link:hover {
701
+ background-color: var(--sub-nav-hover, rgba(37, 99, 235, 0.08));
702
+ color: inherit;
703
+ }
704
+
705
+ .canopy-sub-navigation__link.is-label {
706
+ cursor: default;
707
+ color: var(--color-gray-600, #52525b);
708
+ }
709
+
710
+ .canopy-sub-navigation__link.is-active {
711
+ background-color: var(--sub-nav-active, rgba(37, 99, 235, 0.16));
712
+ color: var(--color-brand-900, #1d4ed8);
713
+ font-weight: 600;
714
+ }
715
+
716
+ .canopy-sub-navigation__list--nested {
717
+ margin: 0.35rem 0 0.35rem 0.5rem;
718
+ padding-left: 0.75rem;
719
+ border-left: 1px solid var(--color-gray-200, #e4e4e7);
720
+ }
721
+
722
+ .canopy-sub-navigation__link.depth-0 {
723
+ padding-left: 0.5rem;
724
+ }
725
+
726
+ .canopy-sub-navigation__link.depth-1 {
727
+ padding-left: calc(0.5rem + var(--sub-nav-indent));
728
+ }
729
+
730
+ .canopy-sub-navigation__link.depth-2 {
731
+ padding-left: calc(0.5rem + var(--sub-nav-indent) * 2);
732
+ }
733
+
734
+ .canopy-sub-navigation__link.depth-3 {
735
+ padding-left: calc(0.5rem + var(--sub-nav-indent) * 3);
736
+ }
737
+
738
+ .canopy-sub-navigation__link.depth-4 {
739
+ padding-left: calc(0.5rem + var(--sub-nav-indent) * 4);
740
+ }
741
+
742
+ .canopy-sub-navigation__link.depth-5 {
743
+ padding-left: calc(0.5rem + var(--sub-nav-indent) * 5);
231
744
  }