@deepgram/styles 0.2.9 → 0.2.11

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.
@@ -11,6 +11,9 @@ tokens:
11
11
  "--dg-border-width": "0.125rem"
12
12
  "--dg-primary": "#13ef95"
13
13
  "--dg-secondary": "#149afb"
14
+ "--dg-syntax-keyword": "#f97583"
15
+ "--dg-syntax-variable": "#79b8ff"
16
+ "--dg-syntax-function": "#b392f0"
14
17
 
15
18
  colors:
16
19
  brand:
@@ -27,6 +30,7 @@ tokens:
27
30
  almost-black: "#050506"
28
31
  default: "#0b0b0c"
29
32
  charcoal: "#1a1a1f"
33
+ solid: "#ffffff"
30
34
  translucent: "rgba(0, 0, 0, 0.5)"
31
35
 
32
36
  border:
@@ -39,6 +43,7 @@ tokens:
39
43
  fog: "#edede2"
40
44
  platinum: "#e1e1e5"
41
45
  muted: "#949498"
46
+ on-solid: "#000000"
42
47
 
43
48
  status:
44
49
  success: "#12b76a"
@@ -49,12 +54,60 @@ tokens:
49
54
  start: "#008fc1"
50
55
  end: "#00f099"
51
56
 
57
+ light:
58
+ brand:
59
+ primary: "#047857"
60
+ secondary: "#0369a1"
61
+ background:
62
+ almost-black: "#f8f9fa"
63
+ default: "#ffffff"
64
+ charcoal: "#f3f4f6"
65
+ solid: "#000000"
66
+ translucent: "rgba(255, 255, 255, 0.5)"
67
+ border:
68
+ default: "#d1d5db"
69
+ pebble: "#9ca3af"
70
+ slate: "#6b7280"
71
+ text:
72
+ default: "#111827"
73
+ fog: "#1f2937"
74
+ platinum: "#374151"
75
+ muted: "#6b7280"
76
+ on-solid: "#ffffff"
77
+ status:
78
+ success: "#15803d"
79
+ warning: "#a16207"
80
+ danger: "#b91c1c"
81
+ gradient:
82
+ start: "#0369a1"
83
+ end: "#059669"
84
+
52
85
  fonts:
53
86
  sans:
54
- family: ["Inter", "-apple-system", "BlinkMacSystemFont", "Segoe UI", "Roboto", "Helvetica", "Arial", "sans-serif"]
87
+ family:
88
+ [
89
+ "Inter",
90
+ "-apple-system",
91
+ "BlinkMacSystemFont",
92
+ "Segoe UI",
93
+ "Roboto",
94
+ "Helvetica",
95
+ "Arial",
96
+ "sans-serif",
97
+ ]
55
98
  tailwind-key: "dg-sans"
56
99
  noto:
57
- family: ["Noto Sans", "-apple-system", "BlinkMacSystemFont", "Segoe UI", "Roboto", "Helvetica", "Arial", "sans-serif"]
100
+ family:
101
+ [
102
+ "Noto Sans",
103
+ "-apple-system",
104
+ "BlinkMacSystemFont",
105
+ "Segoe UI",
106
+ "Roboto",
107
+ "Helvetica",
108
+ "Arial",
109
+ "sans-serif",
110
+ ]
58
111
  tailwind-key: "dg-noto"
59
112
  mono:
60
113
  family: ["Fira Code", "Monaco", "Consolas", "Courier New", "monospace"]
@@ -81,8 +134,41 @@ tokens:
81
134
  lg: "0 0.625rem 0.9375rem -0.1875rem rgba(0, 0, 0, 0.1), 0 0.25rem 0.375rem -0.125rem rgba(0, 0, 0, 0.05)"
82
135
 
83
136
  logos:
84
- primary:
85
- path: "assets/deepgram-dark.svg"
137
+ wordmark:
138
+ path: "assets/logo/wordmark.svg"
139
+ alt: "Deepgram"
140
+ wordmark-light:
141
+ path: "assets/logo/wordmark-light.svg"
142
+ alt: "Deepgram"
143
+ wordmark-dark:
144
+ path: "assets/logo/wordmark-dark.svg"
145
+ alt: "Deepgram"
146
+ lettermark:
147
+ path: "assets/logo/lettermark.svg"
148
+ alt: "Deepgram"
149
+ lettermark-light:
150
+ path: "assets/logo/lettermark-light.svg"
151
+ alt: "Deepgram"
152
+ lettermark-dark:
153
+ path: "assets/logo/lettermark-dark.svg"
154
+ alt: "Deepgram"
155
+ lettermark-square:
156
+ path: "assets/logo/lettermark-square.svg"
157
+ alt: "Deepgram"
158
+ lettermark-square-light:
159
+ path: "assets/logo/lettermark-square-light.svg"
160
+ alt: "Deepgram"
161
+ lettermark-square-dark:
162
+ path: "assets/logo/lettermark-square-dark.svg"
163
+ alt: "Deepgram"
164
+ lettermark-circle:
165
+ path: "assets/logo/lettermark-circle.svg"
166
+ alt: "Deepgram"
167
+ lettermark-circle-light:
168
+ path: "assets/logo/lettermark-circle-light.svg"
169
+ alt: "Deepgram"
170
+ lettermark-circle-dark:
171
+ path: "assets/logo/lettermark-circle-dark.svg"
86
172
  alt: "Deepgram"
87
173
 
88
174
  # =============================================================================
@@ -150,13 +236,13 @@ base:
150
236
  utilities:
151
237
  ".dg-gradient-border":
152
238
  properties:
153
- backgroundImage: "linear-gradient(rgb(0, 0, 0), rgb(0, 0, 0)), linear-gradient(90deg, color-mix(in srgb, var(--dg-secondary, #149afb) 70%, #000), color-mix(in srgb, var(--dg-primary, #13ef95) 70%, #000), color-mix(in srgb, var(--dg-secondary, #149afb) 70%, #000), color-mix(in srgb, var(--dg-primary, #13ef95) 70%, #000))"
239
+ backgroundImage: "linear-gradient(var(--color-dg-on-solid), var(--color-dg-on-solid)), linear-gradient(90deg, color-mix(in srgb, var(--dg-secondary, #149afb) 70%, black), color-mix(in srgb, var(--dg-primary, #13ef95) 70%, black), color-mix(in srgb, var(--dg-secondary, #149afb) 70%, black), color-mix(in srgb, var(--dg-primary, #13ef95) 70%, black))"
154
240
  backgroundOrigin: "padding-box, border-box"
155
241
  backgroundClip: "padding-box, border-box"
156
242
  backgroundRepeat: "no-repeat"
157
243
  backgroundPosition: "center"
158
244
  backgroundSize: "100% 100%"
159
- backgroundColor: "rgb(0, 0, 0)"
245
+ backgroundColor: "var(--color-dg-on-solid)"
160
246
  ".dg-bg-reset":
161
247
  properties:
162
248
  backgroundImage: "none"
@@ -170,13 +256,471 @@ utilities:
170
256
  boxShadow: "color-mix(in srgb, var(--dg-primary, #13ef95) 20%, transparent) 0.375rem 0 0.9375rem 0, color-mix(in srgb, var(--dg-secondary, #149afb) 20%, transparent) -0.375rem 0 0.9375rem 0"
171
257
  ".dg-shadow-subtle":
172
258
  properties:
173
- boxShadow: "rgba(38, 44, 52, 0.05) 0 0.0625rem 0.125rem"
259
+ boxShadow: "color-mix(in srgb, var(--color-dg-pebble) 5%, transparent) 0 0.0625rem 0.125rem"
260
+
261
+ # =============================================================================
262
+ # CATEGORIES (navigation hierarchy)
263
+ # =============================================================================
264
+ categories:
265
+ brand:
266
+ name: "Brand"
267
+ description: "Design tokens, colors, typography, spacing, and visual identity"
268
+ icon: "fa-swatchbook"
269
+ manual: true
270
+ sections:
271
+ foundations:
272
+ name: "Foundations"
273
+ icon: "fa-layer-group"
274
+ skip: true
275
+ subsections:
276
+ colors:
277
+ name: "Colors"
278
+ description: "Brand palette, backgrounds, borders, text, status, and gradient tokens"
279
+ typography:
280
+ name: "Typography"
281
+ description: "Font families and type scale"
282
+ spacing:
283
+ name: "Spacing"
284
+ description: "Spacing scale for margins, padding, and gaps"
285
+ effects:
286
+ name: "Effects"
287
+ description: "Shadows and border radius tokens"
288
+ logos:
289
+ name: "Logos"
290
+ description: "Logo variants and usage"
291
+
292
+ application-ui:
293
+ name: "Application UI"
294
+ description: "Forms, tables, navigation, modals, and dashboard components"
295
+ icon: "fa-palette"
296
+ sections:
297
+ application-shells:
298
+ name: "Application Shells"
299
+ description: "Complete application layouts and page structures"
300
+ icon: "fa-window-maximize"
301
+ skip: true
302
+ subsections:
303
+ multi-column-layouts:
304
+ name: "Multi-Column Layouts"
305
+ description: "Multi-column layouts for complex interfaces"
306
+ stacked-layouts:
307
+ name: "Stacked Layouts"
308
+ description: "Vertically stacked headers, content, and footers"
309
+ sidebar-layouts:
310
+ name: "Sidebar Layouts"
311
+ description: "Layouts with fixed or collapsible sidebars"
312
+ headings:
313
+ name: "Headings"
314
+ description: "Page, card, and section heading components"
315
+ icon: "fa-heading"
316
+ subsections:
317
+ page-headings:
318
+ name: "Page Headings"
319
+ description: "Page headings with titles and actions"
320
+ card-headings:
321
+ name: "Card Headings"
322
+ description: "Card header components"
323
+ section-headings:
324
+ name: "Section Headings"
325
+ description: "Section divider headings"
326
+ data-display:
327
+ name: "Data Display"
328
+ description: "Components for displaying structured information"
329
+ icon: "fa-chart-bar"
330
+ subsections:
331
+ description-lists:
332
+ name: "Description Lists"
333
+ description: "Key-value pair displays"
334
+ stats:
335
+ name: "Stats"
336
+ description: "Statistics and metrics displays"
337
+ calendars:
338
+ name: "Calendars"
339
+ description: "Calendar and date picker components"
340
+ lists:
341
+ name: "Lists"
342
+ description: "Various list layouts for displaying collections"
343
+ icon: "fa-list"
344
+ subsections:
345
+ stacked-lists:
346
+ name: "Stacked Lists"
347
+ description: "Vertical lists with rich content"
348
+ tables:
349
+ name: "Tables"
350
+ description: "Data tables with sorting and filtering"
351
+ grid-lists:
352
+ name: "Grid Lists"
353
+ description: "Responsive grid layouts"
354
+ feeds:
355
+ name: "Feeds"
356
+ description: "Activity feeds and timelines"
357
+ forms:
358
+ name: "Forms"
359
+ description: "Form inputs and layouts for data collection"
360
+ icon: "fa-pen-to-square"
361
+ subsections:
362
+ form-layouts:
363
+ name: "Form Layouts"
364
+ description: "Complete form structures"
365
+ input-groups:
366
+ name: "Input Groups"
367
+ description: "Text inputs with labels and validation"
368
+ select-menus:
369
+ name: "Select Menus"
370
+ description: "Dropdown select components"
371
+ sign-in-and-registration:
372
+ name: "Sign-in and Registration"
373
+ description: "Authentication form layouts"
374
+ textareas:
375
+ name: "Textareas"
376
+ description: "Multi-line text inputs"
377
+ radio-groups:
378
+ name: "Radio Groups"
379
+ description: "Single-choice selection groups"
380
+ checkboxes:
381
+ name: "Checkboxes"
382
+ description: "Multi-select checkbox inputs"
383
+ toggles:
384
+ name: "Toggles"
385
+ description: "Binary toggle switches"
386
+ action-panels:
387
+ name: "Action Panels"
388
+ description: "Complex action and confirmation panels"
389
+ # comboboxes:
390
+ # name: "Comboboxes"
391
+ # description: "Searchable select components"
392
+ feedback:
393
+ name: "Feedback"
394
+ description: "Components for user feedback and empty states"
395
+ icon: "fa-comment"
396
+ subsections:
397
+ alerts:
398
+ name: "Alerts"
399
+ description: "Success, error, and warning messages"
400
+ empty-states:
401
+ name: "Empty States"
402
+ description: "Helpful empty state displays"
403
+ navigation:
404
+ name: "Navigation"
405
+ description: "Navigation components for wayfinding"
406
+ icon: "fa-compass"
407
+ subsections:
408
+ navbars:
409
+ name: "Navbars"
410
+ description: "Application navigation bars"
411
+ pagination:
412
+ name: "Pagination"
413
+ description: "Page navigation components"
414
+ tabs:
415
+ name: "Tabs"
416
+ description: "Tabbed content interfaces"
417
+ vertical-navigation:
418
+ name: "Vertical Navigation"
419
+ description: "Vertical navigation menus"
420
+ sidebar-navigation:
421
+ name: "Sidebar Navigation"
422
+ description: "Fixed sidebar navigation"
423
+ breadcrumbs:
424
+ name: "Breadcrumbs"
425
+ description: "Hierarchical breadcrumb trails"
426
+ progress-bars:
427
+ name: "Progress Bars"
428
+ description: "Progress and loading indicators"
429
+ command-palettes:
430
+ name: "Command Palettes"
431
+ description: "Keyboard-driven command menus"
432
+ overlays:
433
+ name: "Overlays"
434
+ description: "Modal dialogs, drawers, and notifications"
435
+ icon: "fa-layer-group"
436
+ subsections:
437
+ modal-dialogs:
438
+ name: "Modal Dialogs"
439
+ description: "Modal dialog components for focused interactions"
440
+ drawers:
441
+ name: "Drawers"
442
+ description: "Slide-out drawer panels for secondary content"
443
+ notifications:
444
+ name: "Notifications"
445
+ description: "Toast and notification components"
446
+ elements:
447
+ name: "Elements"
448
+ description: "Small reusable UI elements"
449
+ icon: "fa-cube"
450
+ subsections:
451
+ avatars:
452
+ name: "Avatars"
453
+ description: "User avatar components"
454
+ badges:
455
+ name: "Badges"
456
+ description: "Label and status badges"
457
+ dropdowns:
458
+ name: "Dropdowns"
459
+ description: "Dropdown action menus"
460
+ buttons:
461
+ name: "Buttons"
462
+ description: "Button components"
463
+ button-groups:
464
+ name: "Button Groups"
465
+ description: "Grouped button sets"
466
+ layout:
467
+ name: "Layout"
468
+ description: "Layout and container components"
469
+ icon: "fa-table-columns"
470
+ subsections:
471
+ containers:
472
+ name: "Containers"
473
+ description: "Page width containers"
474
+ cards:
475
+ name: "Cards"
476
+ description: "Card container components"
477
+ list-containers:
478
+ name: "List Containers"
479
+ description: "List-specific containers"
480
+ media-objects:
481
+ name: "Media Objects"
482
+ description: "Media object patterns"
483
+ dividers:
484
+ name: "Dividers"
485
+ description: "Content divider components"
486
+ page-examples:
487
+ name: "Page Examples"
488
+ description: "Complete page templates"
489
+ icon: "fa-file"
490
+ subsections:
491
+ home-screens:
492
+ name: "Home Screens"
493
+ description: "Dashboard and home pages"
494
+ detail-screens:
495
+ name: "Detail Screens"
496
+ description: "Detail and profile pages"
497
+ settings-screens:
498
+ name: "Settings Screens"
499
+ description: "Settings and preferences pages"
500
+
501
+ marketing:
502
+ name: "Marketing"
503
+ description: "Hero sections, CTAs, testimonials, pricing, and landing page components"
504
+ icon: "fa-bullseye"
505
+ sections:
506
+ page-sections:
507
+ name: "Page Sections"
508
+ description: "Complete sections for building marketing pages"
509
+ icon: "fa-puzzle-piece"
510
+ subsections:
511
+ hero-sections:
512
+ name: "Hero Sections"
513
+ description: "Large, attention-grabbing landing page sections"
514
+ feature-sections:
515
+ name: "Feature Sections"
516
+ description: "Showcase product features with layouts and icons"
517
+ cta-sections:
518
+ name: "CTA Sections"
519
+ description: "Drive conversions with compelling calls-to-action"
520
+ bento-grids:
521
+ name: "Bento Grids"
522
+ description: "Modern asymmetric grid layouts"
523
+ pricing-sections:
524
+ name: "Pricing Sections"
525
+ description: "Display pricing tiers and plan comparisons"
526
+ header-sections:
527
+ name: "Header Sections"
528
+ description: "Page headers with titles and breadcrumbs"
529
+ newsletter-sections:
530
+ name: "Newsletter Sections"
531
+ description: "Email signup forms to grow your list"
532
+ stats:
533
+ name: "Stats"
534
+ description: "Statistics and metrics displays"
535
+ testimonials:
536
+ name: "Testimonials"
537
+ description: "Customer reviews and social proof"
538
+ blog-sections:
539
+ name: "Blog Sections"
540
+ description: "Blog post listings and featured content"
541
+ contact-sections:
542
+ name: "Contact Sections"
543
+ description: "Contact forms and information"
544
+ team-sections:
545
+ name: "Team Sections"
546
+ description: "Showcase team members with photos and bios"
547
+ content-sections:
548
+ name: "Content Sections"
549
+ description: "Rich content for articles and documentation"
550
+ logo-clouds:
551
+ name: "Logo Clouds"
552
+ description: "Display client and partner logos"
553
+ faqs:
554
+ name: "FAQs"
555
+ description: "Frequently asked questions sections"
556
+ footers:
557
+ name: "Footers"
558
+ description: "Website footers with navigation and links"
559
+ elements:
560
+ name: "Elements"
561
+ description: "Marketing-specific UI elements"
562
+ icon: "fa-cube"
563
+ subsections:
564
+ headers:
565
+ name: "Headers"
566
+ description: "Navigation headers for websites"
567
+ flyout-menus:
568
+ name: "Flyout Menus"
569
+ description: "Dropdown navigation menus"
570
+ banners:
571
+ name: "Banners"
572
+ description: "Announcement and promotion banners"
573
+ feedback:
574
+ name: "Feedback"
575
+ description: "Error pages and status screens"
576
+ icon: "fa-comment"
577
+ subsections:
578
+ 404-pages:
579
+ name: "404 Pages"
580
+ description: "Creative error pages for missing content"
581
+ page-examples:
582
+ name: "Page Examples"
583
+ description: "Complete marketing page templates"
584
+ icon: "fa-file"
585
+ subsections:
586
+ landing-pages:
587
+ name: "Landing Pages"
588
+ description: "Full landing page examples"
589
+ pricing-pages:
590
+ name: "Pricing Pages"
591
+ description: "Complete pricing page templates"
592
+ about-pages:
593
+ name: "About Pages"
594
+ description: "Company story and team pages"
595
+
596
+ ecommerce:
597
+ name: "Ecommerce"
598
+ description: "Product displays, shopping carts, checkout flows, and reviews"
599
+ icon: "fa-shopping-cart"
600
+ sections:
601
+ components:
602
+ name: "Components"
603
+ description: "Essential ecommerce components for online stores"
604
+ icon: "fa-cube"
605
+ subsections:
606
+ product-overviews:
607
+ name: "Product Overviews"
608
+ description: "Product cards with images and pricing"
609
+ product-lists:
610
+ name: "Product Lists"
611
+ description: "Product grid and list layouts"
612
+ category-previews:
613
+ name: "Category Previews"
614
+ description: "Category navigation cards"
615
+ shopping-carts:
616
+ name: "Shopping Carts"
617
+ description: "Cart displays with line items"
618
+ category-filters:
619
+ name: "Category Filters"
620
+ description: "Filtering and sorting components"
621
+ product-quickviews:
622
+ name: "Product Quickviews"
623
+ description: "Modal product previews"
624
+ product-features:
625
+ name: "Product Features"
626
+ description: "Feature highlights and specs"
627
+ store-navigation:
628
+ name: "Store Navigation"
629
+ description: "Store navigation menus"
630
+ promo-sections:
631
+ name: "Promo Sections"
632
+ description: "Promotional banners and sales"
633
+ checkout-forms:
634
+ name: "Checkout Forms"
635
+ description: "Multi-step checkout forms"
636
+ reviews:
637
+ name: "Reviews"
638
+ description: "Product ratings and reviews"
639
+ order-summaries:
640
+ name: "Order Summaries"
641
+ description: "Order summary displays"
642
+ order-history:
643
+ name: "Order History"
644
+ description: "Past order listings"
645
+ incentives:
646
+ name: "Incentives"
647
+ description: "Promotional badges and offers"
648
+ page-examples:
649
+ name: "Page Examples"
650
+ description: "Complete ecommerce page templates"
651
+ icon: "fa-file"
652
+ subsections:
653
+ storefront-pages:
654
+ name: "Storefront Pages"
655
+ description: "Complete homepage templates"
656
+ product-pages:
657
+ name: "Product Pages"
658
+ description: "Product detail page templates"
659
+ category-pages:
660
+ name: "Category Pages"
661
+ description: "Category browse templates"
662
+ shopping-cart-pages:
663
+ name: "Shopping Cart Pages"
664
+ description: "Cart page templates"
665
+ checkout-pages:
666
+ name: "Checkout Pages"
667
+ description: "Checkout flow templates"
668
+ order-detail-pages:
669
+ name: "Order Detail Pages"
670
+ description: "Order confirmation templates"
671
+ order-history-pages:
672
+ name: "Order History Pages"
673
+ description: "Account order history templates"
674
+
675
+ custom:
676
+ name: "Custom"
677
+ description: "Deepgram-specific components that don't map to Tailwind Plus categories"
678
+ icon: "fa-puzzle-piece"
679
+ sections:
680
+ page-sections:
681
+ name: "Page Sections"
682
+ description: "Complete sections for building pages"
683
+ icon: "fa-puzzle-piece"
684
+ subsections:
685
+ hero-sections:
686
+ name: "Hero Sections"
687
+ description: "Large, attention-grabbing landing page sections"
688
+ footers:
689
+ name: "Footers"
690
+ description: "Simple footer components"
691
+ newsletter-sections:
692
+ name: "Newsletter Sections"
693
+ description: "Newsletter signup forms"
694
+ elements:
695
+ name: "Elements"
696
+ description: "Custom UI elements"
697
+ icon: "fa-cube"
698
+ subsections:
699
+ headers:
700
+ name: "Headers"
701
+ description: "Application headers with navigation"
702
+ text-utilities:
703
+ name: "Text Utilities"
704
+ description: "Text utility classes for consistent typography"
705
+ feedback:
706
+ name: "Feedback"
707
+ description: "Loading and status components"
708
+ icon: "fa-comment"
709
+ subsections:
710
+ loading:
711
+ name: "Loading"
712
+ description: "Loading spinners and skeleton screens"
713
+
714
+ documentation:
715
+ name: "Documentation"
716
+ description: "Getting started guide, CDN usage, npm installation, and CSS variables"
717
+ icon: "fa-book"
718
+ manual: true
174
719
 
175
720
  # =============================================================================
176
721
  # COMPONENTS
177
722
  # =============================================================================
178
723
  components:
179
-
180
724
  # ---------------------------------------------------------------------------
181
725
  # BUTTONS
182
726
  # ---------------------------------------------------------------------------
@@ -185,8 +729,8 @@ components:
185
729
  title: "Primary Button"
186
730
  description: "Main call-to-action button with primary brand color"
187
731
  category: "application-ui"
188
- section: "Elements"
189
- subsection: "Buttons"
732
+ section: "elements"
733
+ subsection: "buttons"
190
734
  tags: [button, primary, cta, action]
191
735
  css:
192
736
  ".dg-btn":
@@ -204,25 +748,25 @@ components:
204
748
  primary:
205
749
  css:
206
750
  ".dg-btn--primary":
207
- apply: "border border-transparent relative text-white dg-gradient-border dg-glow-cyan-green"
751
+ apply: "border border-transparent relative text-dg-solid dg-gradient-border dg-glow-cyan-green"
208
752
  ".dg-btn--primary:hover":
209
- apply: "border-transparent text-black dg-bg-reset bg-white dg-shadow-subtle"
753
+ apply: "border-transparent text-dg-on-solid dg-bg-reset bg-dg-solid dg-shadow-subtle"
210
754
  secondary:
211
755
  css:
212
756
  ".dg-btn--secondary":
213
- apply: "border border-transparent bg-white text-black"
757
+ apply: "border border-transparent bg-dg-solid text-dg-on-solid"
214
758
  ".dg-btn--secondary:hover":
215
- apply: "border border-white bg-black text-white"
759
+ apply: "border border-dg-solid bg-dg-on-solid text-dg-solid"
216
760
  ghost:
217
761
  css:
218
762
  ".dg-btn--ghost":
219
- apply: "border border-dg-slate bg-transparent text-white"
763
+ apply: "border border-dg-slate bg-transparent text-dg-solid"
220
764
  ".dg-btn--ghost:hover":
221
- apply: "border-transparent text-black dg-bg-reset bg-white dg-shadow-subtle"
765
+ apply: "border-transparent text-dg-on-solid dg-bg-reset bg-dg-solid dg-shadow-subtle"
222
766
  danger-ghost:
223
767
  css:
224
768
  ".dg-btn--danger-ghost":
225
- apply: "border border-dg-danger bg-transparent text-white"
769
+ apply: "border border-dg-danger bg-transparent text-dg-solid"
226
770
  ".dg-btn--danger-ghost:hover":
227
771
  apply: "border-transparent bg-dg-danger text-white"
228
772
  icon-only:
@@ -328,8 +872,8 @@ components:
328
872
  title: "Secondary Button"
329
873
  description: "Secondary action button with alternative styling"
330
874
  category: "application-ui"
331
- section: "Elements"
332
- subsection: "Buttons"
875
+ section: "elements"
876
+ subsection: "buttons"
333
877
  tags: [button, secondary, action]
334
878
  examples:
335
879
  - title: "Secondary Button"
@@ -398,8 +942,8 @@ components:
398
942
  title: "Ghost Button"
399
943
  description: "Minimal button with transparent background and border"
400
944
  category: "application-ui"
401
- section: "Elements"
402
- subsection: "Buttons"
945
+ section: "elements"
946
+ subsection: "buttons"
403
947
  tags: [button, ghost, minimal, tertiary]
404
948
  examples:
405
949
  - title: "Ghost Button"
@@ -468,8 +1012,8 @@ components:
468
1012
  title: "Danger Ghost Button"
469
1013
  description: "Destructive action button with ghost styling"
470
1014
  category: "application-ui"
471
- section: "Elements"
472
- subsection: "Buttons"
1015
+ section: "elements"
1016
+ subsection: "buttons"
473
1017
  tags: [button, danger, ghost, destructive, delete]
474
1018
  examples:
475
1019
  - title: "Danger Ghost Button"
@@ -521,8 +1065,8 @@ components:
521
1065
  title: "Icon Button"
522
1066
  description: "Icon-only button for compact actions"
523
1067
  category: "application-ui"
524
- section: "Elements"
525
- subsection: "Buttons"
1068
+ section: "elements"
1069
+ subsection: "buttons"
526
1070
  tags: [button, icon, compact]
527
1071
  examples:
528
1072
  - title: "Icon Button"
@@ -551,8 +1095,8 @@ components:
551
1095
  title: "Small Button"
552
1096
  description: "Compact button for tight spaces"
553
1097
  category: "application-ui"
554
- section: "Elements"
555
- subsection: "Buttons"
1098
+ section: "elements"
1099
+ subsection: "buttons"
556
1100
  tags: [button, small, compact]
557
1101
  examples:
558
1102
  - title: "Small Primary Button"
@@ -611,8 +1155,8 @@ components:
611
1155
  title: "Collapse Button"
612
1156
  description: "Responsive button that expands full-width on mobile"
613
1157
  category: "application-ui"
614
- section: "Elements"
615
- subsection: "Buttons"
1158
+ section: "elements"
1159
+ subsection: "buttons"
616
1160
  tags: [button, responsive, mobile]
617
1161
  examples:
618
1162
  - title: "Collapse Primary Button"
@@ -640,8 +1184,8 @@ components:
640
1184
  title: "Button Group"
641
1185
  description: "Horizontal group of buttons with consistent spacing"
642
1186
  category: "application-ui"
643
- section: "Elements"
644
- subsection: "Button Groups"
1187
+ section: "elements"
1188
+ subsection: "button-groups"
645
1189
  tags: [button, group, actions]
646
1190
  css:
647
1191
  ".dg-action-group":
@@ -728,8 +1272,8 @@ components:
728
1272
  title: "Section"
729
1273
  description: "Reusable content section with responsive padding"
730
1274
  category: "application-ui"
731
- section: "Layout"
732
- subsection: "Containers"
1275
+ section: "layout"
1276
+ subsection: "containers"
733
1277
  tags: [section, layout, container]
734
1278
  css:
735
1279
  ".dg-section":
@@ -819,8 +1363,8 @@ components:
819
1363
  title: "Card"
820
1364
  description: "Flexible card container with multiple variants"
821
1365
  category: "application-ui"
822
- section: "Layout"
823
- subsection: "Cards"
1366
+ section: "layout"
1367
+ subsection: "cards"
824
1368
  tags: [card, container, layout]
825
1369
  css:
826
1370
  ".dg-card":
@@ -870,24 +1414,24 @@ components:
870
1414
  padding: "1.25rem"
871
1415
  ".dg-card--selectable:hover":
872
1416
  apply: "border-dg-slate"
873
- ".dg-card--selectable:has(input[type=\"radio\"]:checked)":
1417
+ '.dg-card--selectable:has(input[type="radio"]:checked)':
874
1418
  apply: "border-dg-primary"
875
1419
  properties:
876
- background: "rgba(19, 239, 149, 0.05)"
1420
+ background: "color-mix(in srgb, var(--dg-primary) 5%, transparent)"
877
1421
  ".dg-sr-only":
878
1422
  apply: "sr-only"
879
- ".dg-card--selectable input[type=\"radio\"]":
1423
+ '.dg-card--selectable input[type="radio"]':
880
1424
  apply: "sr-only"
881
1425
  ".dg-card--selectable__indicator":
882
1426
  apply: "hidden"
883
1427
  ".dg-card--selectable__icon":
884
- apply: "text-white"
1428
+ apply: "text-dg-text"
885
1429
  properties:
886
1430
  margin-right: "0.5rem"
887
1431
  ".dg-card--selectable__content":
888
1432
  apply: "flex-1 flex flex-col gap-1"
889
1433
  ".dg-card--selectable .dg-item-title":
890
- apply: "text-base font-semibold text-white"
1434
+ apply: "text-base font-semibold text-dg-text"
891
1435
  properties:
892
1436
  display: "flex"
893
1437
  align-items: "center"
@@ -919,20 +1463,20 @@ components:
919
1463
  padding: "1.25rem"
920
1464
  ".dg-card--file-upload:hover":
921
1465
  apply: "border-dg-slate"
922
- ".dg-card--file-upload:has(input[type=\"checkbox\"]:checked)":
1466
+ '.dg-card--file-upload:has(input[type="checkbox"]:checked)':
923
1467
  apply: "border-dg-primary border-solid"
924
1468
  properties:
925
- background: "rgba(19, 239, 149, 0.05)"
926
- ".dg-card--file-upload input[type=\"file\"], .dg-card--file-upload input[type=\"checkbox\"]":
1469
+ background: "color-mix(in srgb, var(--dg-primary) 5%, transparent)"
1470
+ '.dg-card--file-upload input[type="file"], .dg-card--file-upload input[type="checkbox"]':
927
1471
  apply: "sr-only"
928
1472
  ".dg-card--file-upload__icon":
929
- apply: "text-white"
1473
+ apply: "text-dg-text"
930
1474
  properties:
931
1475
  margin-right: "0.5rem"
932
1476
  ".dg-card--file-upload__content":
933
1477
  apply: "flex-1 flex flex-col gap-1"
934
1478
  ".dg-card--file-upload .dg-item-title":
935
- apply: "text-base font-semibold text-white"
1479
+ apply: "text-base font-semibold text-dg-text"
936
1480
  properties:
937
1481
  display: "flex"
938
1482
  align-items: "center"
@@ -1156,6 +1700,47 @@ components:
1156
1700
  children:
1157
1701
  - "Get Started"
1158
1702
 
1703
+ - title: "Link Card with Bordered Footer"
1704
+ description: "Structured card as a link with a bordered footer showing a CTA"
1705
+ ast:
1706
+ tag: a
1707
+ props:
1708
+ class: "dg-card dg-card--structured"
1709
+ href: "#"
1710
+ style: "max-width: 400px; text-decoration: none;"
1711
+ children:
1712
+ - tag: div
1713
+ props:
1714
+ class: "dg-card__header"
1715
+ children:
1716
+ - tag: h3
1717
+ props:
1718
+ class: "dg-card-heading"
1719
+ children:
1720
+ - "Documentation"
1721
+ - tag: div
1722
+ props:
1723
+ class: "dg-card__body"
1724
+ children:
1725
+ - tag: p
1726
+ props:
1727
+ class: "dg-prose"
1728
+ children:
1729
+ - "Getting started guides, API references, and integration tutorials."
1730
+ - tag: div
1731
+ props:
1732
+ class: "dg-card__footer dg-card__footer--bordered"
1733
+ children:
1734
+ - tag: span
1735
+ props:
1736
+ style: "font-size: 0.875rem; font-weight: 600; color: var(--color-dg-primary);"
1737
+ children:
1738
+ - "View docs"
1739
+ - tag: span
1740
+ props:
1741
+ style: "font-size: 1.5rem; color: var(--color-dg-primary); margin-left: auto;"
1742
+ text: "\u2192"
1743
+
1159
1744
  # ---------------------------------------------------------------------------
1160
1745
  # LAYOUT - CODE BLOCK
1161
1746
  # ---------------------------------------------------------------------------
@@ -1164,8 +1749,8 @@ components:
1164
1749
  title: "Code Block"
1165
1750
  description: "Preformatted code/text display with scrolling"
1166
1751
  category: "application-ui"
1167
- section: "Page Examples"
1168
- subsection: "Detail Screens"
1752
+ section: "page-examples"
1753
+ subsection: "detail-screens"
1169
1754
  tags: [code, pre, monospace]
1170
1755
  css:
1171
1756
  ".dg-code-block":
@@ -1227,9 +1812,9 @@ components:
1227
1812
  metadata:
1228
1813
  title: "Hero Section"
1229
1814
  description: "Large page header with title, subtitle, and call-to-action buttons"
1230
- category: "application-ui"
1231
- section: "Headings"
1232
- subsection: "Page Headings"
1815
+ category: "custom"
1816
+ section: "page-sections"
1817
+ subsection: "hero-sections"
1233
1818
  tags: [hero, header, heading, cta]
1234
1819
  css:
1235
1820
  ".dg-hero-title":
@@ -1237,7 +1822,7 @@ components:
1237
1822
  properties:
1238
1823
  -webkit-text-fill-color: "transparent"
1239
1824
  letter-spacing: "-0.02em"
1240
- font-feature-settings: "\"liga\" 0, \"dlig\" 0, \"hlig\" 0, \"ordn\" 0, \"ss09\", \"kern\""
1825
+ font-feature-settings: '"liga" 0, "dlig" 0, "hlig" 0, "ordn" 0, "ss09", "kern"'
1241
1826
  font-kerning: "normal"
1242
1827
  ".dg-hero":
1243
1828
  apply: "w-full text-center py-16 px-4"
@@ -1248,10 +1833,10 @@ components:
1248
1833
  ".dg-hero__announcement:hover":
1249
1834
  apply: "border-dg-primary -translate-y-0.5"
1250
1835
  properties:
1251
- background-color: "rgba(19, 239, 149, 0.1)"
1252
- box-shadow: "0 0.25rem 0.75rem rgba(19, 239, 149, 0.15)"
1836
+ background-color: "color-mix(in srgb, var(--dg-primary) 10%, transparent)"
1837
+ box-shadow: "0 0.25rem 0.75rem color-mix(in srgb, var(--dg-primary) 15%, transparent)"
1253
1838
  ".dg-hero__announcement-text":
1254
- apply: "text-white text-sm font-normal whitespace-nowrap"
1839
+ apply: "text-dg-text text-sm font-normal whitespace-nowrap"
1255
1840
  ".dg-hero__announcement-cta":
1256
1841
  apply: "inline-flex items-center text-dg-secondary text-sm font-semibold gap-2 transition-[gap] duration-200"
1257
1842
  ".dg-hero__announcement:hover .dg-hero__announcement-cta":
@@ -1399,12 +1984,12 @@ components:
1399
1984
  title: "Section Header"
1400
1985
  description: "Consistent section heading with multiple levels"
1401
1986
  category: "application-ui"
1402
- section: "Headings"
1403
- subsection: "Section Headings"
1987
+ section: "headings"
1988
+ subsection: "section-headings"
1404
1989
  tags: [heading, section, title]
1405
1990
  css:
1406
1991
  ".dg-section-heading":
1407
- apply: "font-semibold font-dg-noto text-2xl text-white mb-6 flex flex-wrap items-baseline gap-2"
1992
+ apply: "font-semibold font-dg-noto text-2xl text-dg-text mb-6 flex flex-wrap items-baseline gap-2"
1408
1993
  ".dg-section-heading small":
1409
1994
  apply: "font-normal text-base text-dg-muted"
1410
1995
  media:
@@ -1437,14 +2022,14 @@ components:
1437
2022
  title: "Page Heading"
1438
2023
  description: "Simple page heading with title and optional description"
1439
2024
  category: "application-ui"
1440
- section: "Headings"
1441
- subsection: "Page Headings"
2025
+ section: "headings"
2026
+ subsection: "page-headings"
1442
2027
  tags: [heading, page, title, description]
1443
2028
  css:
1444
2029
  ".dg-page-heading":
1445
2030
  apply: "mb-8"
1446
2031
  ".dg-page-heading__title":
1447
- apply: "font-semibold font-dg-noto text-4xl text-white mb-2 leading-tight"
2032
+ apply: "font-semibold font-dg-noto text-4xl text-dg-text mb-2 leading-tight"
1448
2033
  ".dg-page-heading__description":
1449
2034
  apply: "text-dg-muted text-lg leading-relaxed m-0 max-w-[65ch]"
1450
2035
  media:
@@ -1494,8 +2079,8 @@ components:
1494
2079
  title: "Page Headings"
1495
2080
  description: "Page heading with title and action buttons, responsive layout that stacks on mobile"
1496
2081
  category: "application-ui"
1497
- section: "Headings"
1498
- subsection: "Page Headings"
2082
+ section: "headings"
2083
+ subsection: "page-headings"
1499
2084
  tags: [heading, page, title, actions, buttons]
1500
2085
  css:
1501
2086
  ".dg-page-headings":
@@ -1503,7 +2088,7 @@ components:
1503
2088
  ".dg-page-headings__title-wrapper":
1504
2089
  apply: "min-w-0 flex-1"
1505
2090
  ".dg-page-headings__title":
1506
- apply: "text-2xl font-bold text-white sm:truncate sm:text-3xl sm:tracking-tight"
2091
+ apply: "text-2xl font-bold text-dg-text sm:truncate sm:text-3xl sm:tracking-tight"
1507
2092
  properties:
1508
2093
  line-height: "1.75"
1509
2094
  ".dg-page-headings__actions":
@@ -1512,7 +2097,7 @@ components:
1512
2097
  title:
1513
2098
  css:
1514
2099
  ".dg-page-headings__title":
1515
- apply: "text-2xl font-bold text-white sm:truncate sm:text-3xl sm:tracking-tight"
2100
+ apply: "text-2xl font-bold text-dg-text sm:truncate sm:text-3xl sm:tracking-tight"
1516
2101
  properties:
1517
2102
  line-height: "1.75"
1518
2103
  actions:
@@ -1600,12 +2185,12 @@ components:
1600
2185
  title: "Card Heading"
1601
2186
  description: "Heading for card components"
1602
2187
  category: "application-ui"
1603
- section: "Headings"
1604
- subsection: "Section Headings"
2188
+ section: "headings"
2189
+ subsection: "card-headings"
1605
2190
  tags: [heading, card, title]
1606
2191
  css:
1607
2192
  ".dg-card-heading":
1608
- apply: "font-medium font-dg-noto text-xl text-white mb-3 flex flex-wrap items-baseline gap-1.5"
2193
+ apply: "font-medium font-dg-noto text-xl text-dg-text mb-3 flex flex-wrap items-baseline gap-1.5"
1609
2194
  ".dg-card-heading small":
1610
2195
  apply: "font-normal text-sm text-dg-muted"
1611
2196
  examples:
@@ -1622,14 +2207,14 @@ components:
1622
2207
  title: "Card Headings"
1623
2208
  description: "Card heading container with bottom border and title"
1624
2209
  category: "application-ui"
1625
- section: "Headings"
1626
- subsection: "Card Headings"
2210
+ section: "headings"
2211
+ subsection: "card-headings"
1627
2212
  tags: [heading, card, title, border]
1628
2213
  css:
1629
2214
  ".dg-card-headings":
1630
2215
  apply: "border-b border-dg-border px-4 py-5 sm:px-6"
1631
2216
  ".dg-card-headings__title":
1632
- apply: "text-base font-semibold text-white"
2217
+ apply: "text-base font-semibold text-dg-text"
1633
2218
  examples:
1634
2219
  - title: "Simple Card Heading"
1635
2220
  description: "Basic card heading with bottom border"
@@ -1649,12 +2234,12 @@ components:
1649
2234
  title: "Item Title"
1650
2235
  description: "Title for list items and small components"
1651
2236
  category: "application-ui"
1652
- section: "Headings"
1653
- subsection: "Section Headings"
2237
+ section: "headings"
2238
+ subsection: "section-headings"
1654
2239
  tags: [heading, item, title]
1655
2240
  css:
1656
2241
  ".dg-item-title":
1657
- apply: "font-medium font-dg-noto text-base text-white mb-1 flex flex-wrap items-baseline gap-1"
2242
+ apply: "font-medium font-dg-noto text-base text-dg-text mb-1 flex flex-wrap items-baseline gap-1"
1658
2243
  ".dg-item-title small":
1659
2244
  apply: "font-normal text-xs text-dg-muted"
1660
2245
  examples:
@@ -1674,8 +2259,8 @@ components:
1674
2259
  title: "Prose"
1675
2260
  description: "Body text component with responsive sizing"
1676
2261
  category: "application-ui"
1677
- section: "Headings"
1678
- subsection: "Section Headings"
2262
+ section: "headings"
2263
+ subsection: "section-headings"
1679
2264
  tags: [text, prose, body, paragraph]
1680
2265
  css:
1681
2266
  ".dg-prose":
@@ -1723,12 +2308,12 @@ components:
1723
2308
  title: "Input Group"
1724
2309
  description: "Text input fields with labels, placeholders, and validation states"
1725
2310
  category: "application-ui"
1726
- section: "Forms"
1727
- subsection: "Input Groups"
2311
+ section: "forms"
2312
+ subsection: "input-groups"
1728
2313
  tags: [input, text, form, field, label]
1729
2314
  css:
1730
2315
  ".dg-input":
1731
- apply: "w-full px-4 py-3 rounded border border-dg-pebble bg-dg-charcoal text-white font-dg-sans text-sm outline-none transition-all duration-300 shadow-dg-sm"
2316
+ apply: "w-full px-4 py-3 rounded border border-dg-pebble bg-dg-charcoal text-dg-text font-dg-sans text-sm outline-none transition-all duration-300 shadow-dg-sm"
1732
2317
  properties:
1733
2318
  height: "2.75rem"
1734
2319
  ".dg-input::placeholder":
@@ -1750,10 +2335,10 @@ components:
1750
2335
  apply: "max-w-none"
1751
2336
  select:
1752
2337
  css:
1753
- ".dg-input[type=\"select\"], select.dg-input":
2338
+ '.dg-input[type="select"], select.dg-input':
1754
2339
  apply: "appearance-none"
1755
2340
  properties:
1756
- background-image: "url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='rgb(255,255,255)' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e\")"
2341
+ background-image: 'url("data:image/svg+xml,%3csvg xmlns=''http://www.w3.org/2000/svg'' fill=''none'' viewBox=''0 0 20 20''%3e%3cpath stroke=''rgb(255,255,255)'' stroke-linecap=''round'' stroke-linejoin=''round'' stroke-width=''1.5'' d=''M6 8l4 4 4-4''/%3e%3c/svg%3e")'
1757
2342
  background-position: "right 0.75rem center"
1758
2343
  background-repeat: "no-repeat"
1759
2344
  background-size: "1.5em 1.5em"
@@ -1823,12 +2408,12 @@ components:
1823
2408
  title: "Textarea"
1824
2409
  description: "Multi-line text input"
1825
2410
  category: "application-ui"
1826
- section: "Forms"
1827
- subsection: "Input Groups"
2411
+ section: "forms"
2412
+ subsection: "textareas"
1828
2413
  tags: [textarea, input, form]
1829
2414
  css:
1830
2415
  ".dg-textarea":
1831
- apply: "w-full px-4 py-3 rounded border border-dg-pebble bg-dg-charcoal text-white font-dg-sans text-sm outline-none transition-all duration-300 shadow-dg-sm"
2416
+ apply: "w-full px-4 py-3 rounded border border-dg-pebble bg-dg-charcoal text-dg-text font-dg-sans text-sm outline-none transition-all duration-300 shadow-dg-sm"
1832
2417
  properties:
1833
2418
  min-height: "6.25rem"
1834
2419
  resize: "vertical"
@@ -1855,8 +2440,8 @@ components:
1855
2440
  title: "Checkbox"
1856
2441
  description: "Checkbox inputs for multi-select options"
1857
2442
  category: "application-ui"
1858
- section: "Forms"
1859
- subsection: "Checkboxes"
2443
+ section: "forms"
2444
+ subsection: "checkboxes"
1860
2445
  tags: [checkbox, input, form, select]
1861
2446
  css:
1862
2447
  ".dg-checkbox":
@@ -1867,13 +2452,13 @@ components:
1867
2452
  apply: "bg-dg-primary border-dg-primary"
1868
2453
  ".dg-checkbox:checked::after":
1869
2454
  properties:
1870
- content: "\"\""
2455
+ content: '""'
1871
2456
  position: "absolute"
1872
2457
  left: "0.375rem"
1873
2458
  top: "0.125rem"
1874
2459
  width: "0.3125rem"
1875
2460
  height: "0.625rem"
1876
- border: "solid black"
2461
+ border: "solid var(--color-dg-almost-black)"
1877
2462
  border-width: "0 0.125rem 0.125rem 0"
1878
2463
  transform: "rotate(45deg)"
1879
2464
  ".dg-checkbox:focus":
@@ -1930,8 +2515,8 @@ components:
1930
2515
  title: "Form Section"
1931
2516
  description: "Form section container with optional heading"
1932
2517
  category: "application-ui"
1933
- section: "Forms"
1934
- subsection: "Form Layouts"
2518
+ section: "forms"
2519
+ subsection: "form-layouts"
1935
2520
  tags: [form, section, layout]
1936
2521
  css:
1937
2522
  ".dg-form-field":
@@ -1947,7 +2532,7 @@ components:
1947
2532
  ".dg-form-field--success .dg-form-helper":
1948
2533
  apply: "text-dg-success"
1949
2534
  ".dg-form-label":
1950
- apply: "text-sm font-medium text-white"
2535
+ apply: "text-sm font-medium text-dg-text"
1951
2536
  ".dg-form-error":
1952
2537
  apply: "text-xs text-dg-danger block"
1953
2538
  properties:
@@ -1983,8 +2568,8 @@ components:
1983
2568
  title: "File Upload Zone"
1984
2569
  description: "Drag-and-drop file upload area with click-to-browse"
1985
2570
  category: "application-ui"
1986
- section: "Forms"
1987
- subsection: "Input Groups"
2571
+ section: "forms"
2572
+ subsection: "input-groups"
1988
2573
  tags: [file, upload, drag-drop, input]
1989
2574
  css:
1990
2575
  ".dg-drag-drop-zone":
@@ -2003,7 +2588,7 @@ components:
2003
2588
  ".dg-drag-drop-zone:hover .dg-drag-drop-zone__icon":
2004
2589
  apply: "text-dg-primary"
2005
2590
  ".dg-drag-drop-zone__text":
2006
- apply: "text-base text-white font-medium"
2591
+ apply: "text-base text-dg-text font-medium"
2007
2592
  ".dg-drag-drop-zone__hint":
2008
2593
  apply: "text-sm text-dg-muted"
2009
2594
  examples:
@@ -2039,8 +2624,8 @@ components:
2039
2624
  title: "Status Banner"
2040
2625
  description: "Alert/notification banner with different status variants"
2041
2626
  category: "application-ui"
2042
- section: "Feedback"
2043
- subsection: "Alerts"
2627
+ section: "feedback"
2628
+ subsection: "alerts"
2044
2629
  tags: [alert, status, notification, banner]
2045
2630
  css:
2046
2631
  ".dg-status":
@@ -2122,15 +2707,15 @@ components:
2122
2707
  metadata:
2123
2708
  title: "Spinner"
2124
2709
  description: "Loading spinner animation"
2125
- category: "application-ui"
2126
- section: "Feedback"
2127
- subsection: "Alerts"
2710
+ category: "custom"
2711
+ section: "feedback"
2712
+ subsection: "loading"
2128
2713
  tags: [spinner, loading, progress]
2129
2714
  css:
2130
2715
  ".dg-spinner":
2131
2716
  apply: "rounded-full size-10 border-[3px] border-dg-pebble border-t-dg-primary mx-auto mb-3 animate-spin"
2132
2717
  ".dg-processing-title":
2133
- apply: "font-medium font-dg-noto text-xl text-white mb-1"
2718
+ apply: "font-medium font-dg-noto text-xl text-dg-text mb-1"
2134
2719
  examples:
2135
2720
  - title: "Spinner"
2136
2721
  ast:
@@ -2143,8 +2728,8 @@ components:
2143
2728
  title: "Modal"
2144
2729
  description: "Modal overlay with content"
2145
2730
  category: "application-ui"
2146
- section: "Feedback"
2147
- subsection: "Alerts"
2731
+ section: "overlays"
2732
+ subsection: "modal-dialogs"
2148
2733
  tags: [modal, overlay, dialog]
2149
2734
  css:
2150
2735
  ".dg-modal-overlay":
@@ -2182,8 +2767,8 @@ components:
2182
2767
  title: "Constrained Container"
2183
2768
  description: "Max-width container for readable content areas"
2184
2769
  category: "application-ui"
2185
- section: "Layout"
2186
- subsection: "Containers"
2770
+ section: "layout"
2771
+ subsection: "containers"
2187
2772
  tags: [container, layout, max-width]
2188
2773
  css:
2189
2774
  ".dg-constrain-width":
@@ -2212,8 +2797,8 @@ components:
2212
2797
  title: "Responsive Grid"
2213
2798
  description: "Grid that stacks on mobile and displays side-by-side on desktop"
2214
2799
  category: "application-ui"
2215
- section: "Layout"
2216
- subsection: "Containers"
2800
+ section: "layout"
2801
+ subsection: "containers"
2217
2802
  tags: [grid, responsive, layout]
2218
2803
  css:
2219
2804
  ".dg-grid-mobile-stack":
@@ -2252,10 +2837,10 @@ components:
2252
2837
  columns:
2253
2838
  metadata:
2254
2839
  title: "Three-Column Layout"
2255
- description: "A simple responsive three-column layout that stacks on mobile"
2840
+ description: "Responsive multi-column layout with flexbox (default) and fixed-sidebar app shell (--fixed) modes"
2256
2841
  category: "application-ui"
2257
- section: "Layout"
2258
- subsection: "Multi-Column Layouts"
2842
+ section: "application-shells"
2843
+ subsection: "multi-column-layouts"
2259
2844
  tags: [layout, three-column, sidebar, responsive]
2260
2845
  css:
2261
2846
  ".dg-columns":
@@ -2274,33 +2859,6 @@ components:
2274
2859
  "(min-width: 640px)":
2275
2860
  ".dg-column":
2276
2861
  apply: "px-6"
2277
- "(min-width: 768px)":
2278
- ".dg-columns":
2279
- apply: "flex-row"
2280
- "(min-width: 768px) and (max-width: 1279px)":
2281
- ".dg-column--sidebar-right":
2282
- properties:
2283
- position: "fixed"
2284
- top: "65px"
2285
- right: "0"
2286
- height: "calc(100vh - 65px)"
2287
- width: "16rem"
2288
- flex-shrink: "0"
2289
- transition: "transform 300ms ease"
2290
- z-index: "20"
2291
- box-shadow: "-4px 0 16px rgba(0, 0, 0, 0.5)"
2292
- ".dg-column--sidebar-right.dg-column--sm":
2293
- properties:
2294
- width: "20rem"
2295
- ".dg-column--sidebar-right.dg-column--lg":
2296
- properties:
2297
- width: "24rem"
2298
- ".dg-column--sidebar-right.dg-column--xl":
2299
- properties:
2300
- width: "32rem"
2301
- ".dg-column--sidebar-right.collapsed":
2302
- properties:
2303
- transform: "translateX(calc(100% - 2rem))"
2304
2862
  "(min-width: 1024px)":
2305
2863
  ".dg-columns__wrapper":
2306
2864
  apply: "flex-row"
@@ -2313,6 +2871,8 @@ components:
2313
2871
  ".dg-column--sidebar-left.dg-column--xl":
2314
2872
  apply: "w-128 flex-shrink-0"
2315
2873
  "(min-width: 1280px)":
2874
+ ".dg-columns":
2875
+ apply: "flex-row"
2316
2876
  ".dg-column--sidebar-right":
2317
2877
  properties:
2318
2878
  width: "16rem"
@@ -2329,13 +2889,148 @@ components:
2329
2889
  properties:
2330
2890
  width: "32rem"
2331
2891
  flex-shrink: "0"
2892
+ variants:
2893
+ fixed:
2894
+ css:
2895
+ ".dg-columns--fixed":
2896
+ properties:
2897
+ position: "relative"
2898
+ height: "100%"
2899
+ "--dg-sidebar-width": "18rem"
2900
+ "--dg-aside-width": "24rem"
2901
+ ".dg-columns--fixed .dg-column--sidebar-left":
2902
+ apply: "hidden"
2903
+ ".dg-columns--fixed .dg-column--sidebar-right":
2904
+ apply: "hidden"
2905
+ media:
2906
+ "(min-width: 1024px)":
2907
+ ".dg-columns--fixed .dg-column--sidebar-left":
2908
+ properties:
2909
+ display: "flex"
2910
+ flex-direction: "column"
2911
+ position: "fixed"
2912
+ top: "0"
2913
+ bottom: "0"
2914
+ left: "0"
2915
+ z-index: "50"
2916
+ width: "var(--dg-sidebar-width)"
2917
+ overflow-y: "auto"
2918
+ background: "var(--color-dg-almost-black)"
2919
+ border-right: "1px solid var(--color-dg-border)"
2920
+ ".dg-columns--fixed .dg-column--main":
2921
+ properties:
2922
+ padding-left: "var(--dg-sidebar-width)"
2923
+ ".dg-columns--fixed:has(.dg-column--sidebar-left.dg-column--sm)":
2924
+ properties:
2925
+ "--dg-sidebar-width": "16rem"
2926
+ ".dg-columns--fixed:has(.dg-column--sidebar-left.dg-column--lg)":
2927
+ properties:
2928
+ "--dg-sidebar-width": "24rem"
2929
+ ".dg-columns--fixed:has(.dg-column--sidebar-left.dg-column--xl)":
2930
+ properties:
2931
+ "--dg-sidebar-width": "32rem"
2932
+ "(min-width: 1280px)":
2933
+ ".dg-columns--fixed .dg-column--sidebar-right":
2934
+ properties:
2935
+ display: "flex"
2936
+ flex-direction: "column"
2937
+ position: "fixed"
2938
+ top: "0"
2939
+ bottom: "0"
2940
+ left: "var(--dg-sidebar-width)"
2941
+ width: "var(--dg-aside-width)"
2942
+ overflow-y: "auto"
2943
+ border-right: "1px solid var(--color-dg-border)"
2944
+ ".dg-columns--fixed:has(.dg-column--sidebar-right) .dg-column--main":
2945
+ properties:
2946
+ padding-left: "calc(var(--dg-sidebar-width) + var(--dg-aside-width))"
2947
+ ".dg-columns--fixed:has(.dg-column--sidebar-right.dg-column--sm)":
2948
+ properties:
2949
+ "--dg-aside-width": "20rem"
2950
+ ".dg-columns--fixed:has(.dg-column--sidebar-right.dg-column--lg)":
2951
+ properties:
2952
+ "--dg-aside-width": "28rem"
2953
+ ".dg-columns--fixed:has(.dg-column--sidebar-right.dg-column--xl)":
2954
+ properties:
2955
+ "--dg-aside-width": "32rem"
2956
+ elements:
2957
+ mobile-header:
2958
+ css:
2959
+ ".dg-columns__mobile-header":
2960
+ apply: "flex items-center gap-3 px-4 py-2"
2961
+ properties:
2962
+ position: "sticky"
2963
+ top: "0"
2964
+ z-index: "40"
2965
+ background: "var(--color-dg-almost-black)"
2966
+ border-bottom: "1px solid var(--color-dg-border)"
2967
+ media:
2968
+ "(min-width: 1024px)":
2969
+ ".dg-columns__mobile-header":
2970
+ apply: "hidden"
2971
+ sidebar-toggle:
2972
+ css:
2973
+ ".dg-columns__sidebar-toggle":
2974
+ apply: "inline-flex items-center justify-center -m-2.5 p-2.5"
2975
+ properties:
2976
+ color: "var(--color-dg-muted)"
2332
2977
  examples:
2333
2978
  - title: "Three-Column Layout"
2979
+ description: "Responsive layout with left sidebar, main content, and right sidebar"
2980
+ padding: "0"
2981
+
2982
+ styles: |
2983
+ .dg-column {
2984
+ display: flex;
2985
+ align-items: center;
2986
+ justify-content: center;
2987
+ padding-top: 2rem;
2988
+ padding-bottom: 2rem;
2989
+ }
2990
+ .dg-column--sidebar-left {
2991
+ background: var(--color-dg-charcoal);
2992
+ border-right: 1px solid var(--color-dg-border);
2993
+ border-bottom: 1px solid var(--color-dg-border);
2994
+ }
2995
+ .dg-column--sidebar-right {
2996
+ background: var(--color-dg-charcoal);
2997
+ border-left: 1px solid var(--color-dg-border);
2998
+ border-top: 1px solid var(--color-dg-border);
2999
+ }
3000
+ .dg-column--main {
3001
+ background-image: repeating-linear-gradient(
3002
+ -45deg,
3003
+ transparent,
3004
+ transparent 5px,
3005
+ color-mix(in srgb, white 3%, transparent) 5px,
3006
+ color-mix(in srgb, white 3%, transparent) 10px
3007
+ );
3008
+ }
3009
+ .dg-prose, .dg-prose--small {
3010
+ font-size: 0.6875rem;
3011
+ text-transform: uppercase;
3012
+ letter-spacing: 0.1em;
3013
+ color: var(--color-dg-pebble);
3014
+ font-weight: 600;
3015
+ }
3016
+ @media (min-width: 768px) {
3017
+ .dg-column--sidebar-right {
3018
+ border-top: none;
3019
+ }
3020
+ }
3021
+ @media (min-width: 1024px) {
3022
+ .dg-column {
3023
+ min-height: 18rem;
3024
+ }
3025
+ .dg-column--sidebar-left {
3026
+ border-bottom: none;
3027
+ }
3028
+ }
2334
3029
  ast:
2335
3030
  tag: div
2336
3031
  props:
2337
3032
  class: "dg-columns"
2338
- style: "min-height: 300px;"
3033
+ style: "width: 100%; max-width: 100%;"
2339
3034
  children:
2340
3035
  - tag: div
2341
3036
  props:
@@ -2344,32 +3039,755 @@ components:
2344
3039
  - tag: aside
2345
3040
  props:
2346
3041
  class: "dg-column dg-column--sidebar-left"
2347
- style: "background: rgba(255,255,255,0.03);"
2348
3042
  children:
2349
3043
  - tag: p
2350
3044
  props:
2351
- class: "dg-prose"
3045
+ class: "dg-prose dg-prose--small"
2352
3046
  children:
2353
- - "Left Sidebar"
3047
+ - "Left sidebar"
2354
3048
  - tag: main
2355
3049
  props:
2356
3050
  class: "dg-column dg-column--main"
2357
3051
  children:
2358
3052
  - tag: p
2359
3053
  props:
2360
- class: "dg-prose"
3054
+ class: "dg-prose dg-prose--small"
2361
3055
  children:
2362
- - "Main Content"
3056
+ - "Main content"
2363
3057
  - tag: aside
2364
3058
  props:
2365
3059
  class: "dg-column dg-column--sidebar-right"
2366
- style: "background: rgba(255,255,255,0.03);"
2367
3060
  children:
2368
3061
  - tag: p
2369
3062
  props:
2370
- class: "dg-prose"
3063
+ class: "dg-prose dg-prose--small"
3064
+ children:
3065
+ - "Right sidebar"
3066
+
3067
+ - title: "Small Left Sidebar (--sm)"
3068
+ description: "Layout with small left sidebar (256px) using the --sm modifier"
3069
+ padding: "0"
3070
+
3071
+ styles: |
3072
+ .dg-column {
3073
+ display: flex;
3074
+ align-items: center;
3075
+ justify-content: center;
3076
+ padding-top: 2rem;
3077
+ padding-bottom: 2rem;
3078
+ }
3079
+ .dg-column--sidebar-left {
3080
+ background: var(--color-dg-charcoal);
3081
+ border-right: 1px solid var(--color-dg-border);
3082
+ border-bottom: 1px solid var(--color-dg-border);
3083
+ }
3084
+ .dg-column--sidebar-right {
3085
+ background: var(--color-dg-charcoal);
3086
+ border-left: 1px solid var(--color-dg-border);
3087
+ border-top: 1px solid var(--color-dg-border);
3088
+ }
3089
+ .dg-column--main {
3090
+ background-image: repeating-linear-gradient(
3091
+ -45deg,
3092
+ transparent,
3093
+ transparent 5px,
3094
+ color-mix(in srgb, white 3%, transparent) 5px,
3095
+ color-mix(in srgb, white 3%, transparent) 10px
3096
+ );
3097
+ }
3098
+ .dg-prose, .dg-prose--small {
3099
+ font-size: 0.6875rem;
3100
+ text-transform: uppercase;
3101
+ letter-spacing: 0.1em;
3102
+ color: var(--color-dg-pebble);
3103
+ font-weight: 600;
3104
+ }
3105
+ @media (min-width: 768px) {
3106
+ .dg-column--sidebar-right {
3107
+ border-top: none;
3108
+ }
3109
+ }
3110
+ @media (min-width: 1024px) {
3111
+ .dg-column {
3112
+ min-height: 18rem;
3113
+ }
3114
+ .dg-column--sidebar-left {
3115
+ border-bottom: none;
3116
+ }
3117
+ }
3118
+ ast:
3119
+ tag: div
3120
+ props:
3121
+ class: "dg-columns"
3122
+ style: "width: 100%; max-width: 100%;"
3123
+ children:
3124
+ - tag: div
3125
+ props:
3126
+ class: "dg-columns__wrapper"
3127
+ children:
3128
+ - tag: aside
3129
+ props:
3130
+ class: "dg-column dg-column--sidebar-left dg-column--sm"
3131
+ children:
3132
+ - tag: p
3133
+ props:
3134
+ class: "dg-prose dg-prose--small"
3135
+ children:
3136
+ - "Small (256px)"
3137
+ - tag: main
3138
+ props:
3139
+ class: "dg-column dg-column--main"
2371
3140
  children:
2372
- - "Right Sidebar"
3141
+ - tag: p
3142
+ props:
3143
+ class: "dg-prose dg-prose--small"
3144
+ children:
3145
+ - "Main content"
3146
+ - tag: aside
3147
+ props:
3148
+ class: "dg-column dg-column--sidebar-right"
3149
+ children:
3150
+ - tag: p
3151
+ props:
3152
+ class: "dg-prose dg-prose--small"
3153
+ children:
3154
+ - "Right sidebar"
3155
+
3156
+ - title: "Large Left Sidebar (--lg)"
3157
+ description: "Layout with large left sidebar (384px) using the --lg modifier"
3158
+ padding: "0"
3159
+
3160
+ styles: |
3161
+ .dg-column {
3162
+ display: flex;
3163
+ align-items: center;
3164
+ justify-content: center;
3165
+ padding-top: 2rem;
3166
+ padding-bottom: 2rem;
3167
+ }
3168
+ .dg-column--sidebar-left {
3169
+ background: var(--color-dg-charcoal);
3170
+ border-right: 1px solid var(--color-dg-border);
3171
+ border-bottom: 1px solid var(--color-dg-border);
3172
+ }
3173
+ .dg-column--sidebar-right {
3174
+ background: var(--color-dg-charcoal);
3175
+ border-left: 1px solid var(--color-dg-border);
3176
+ border-top: 1px solid var(--color-dg-border);
3177
+ }
3178
+ .dg-column--main {
3179
+ background-image: repeating-linear-gradient(
3180
+ -45deg,
3181
+ transparent,
3182
+ transparent 5px,
3183
+ color-mix(in srgb, white 3%, transparent) 5px,
3184
+ color-mix(in srgb, white 3%, transparent) 10px
3185
+ );
3186
+ }
3187
+ .dg-prose, .dg-prose--small {
3188
+ font-size: 0.6875rem;
3189
+ text-transform: uppercase;
3190
+ letter-spacing: 0.1em;
3191
+ color: var(--color-dg-pebble);
3192
+ font-weight: 600;
3193
+ }
3194
+ @media (min-width: 768px) {
3195
+ .dg-column--sidebar-right {
3196
+ border-top: none;
3197
+ }
3198
+ }
3199
+ @media (min-width: 1024px) {
3200
+ .dg-column {
3201
+ min-height: 18rem;
3202
+ }
3203
+ .dg-column--sidebar-left {
3204
+ border-bottom: none;
3205
+ }
3206
+ }
3207
+ ast:
3208
+ tag: div
3209
+ props:
3210
+ class: "dg-columns"
3211
+ style: "width: 100%; max-width: 100%;"
3212
+ children:
3213
+ - tag: div
3214
+ props:
3215
+ class: "dg-columns__wrapper"
3216
+ children:
3217
+ - tag: aside
3218
+ props:
3219
+ class: "dg-column dg-column--sidebar-left dg-column--lg"
3220
+ children:
3221
+ - tag: p
3222
+ props:
3223
+ class: "dg-prose dg-prose--small"
3224
+ children:
3225
+ - "Large (384px)"
3226
+ - tag: main
3227
+ props:
3228
+ class: "dg-column dg-column--main"
3229
+ children:
3230
+ - tag: p
3231
+ props:
3232
+ class: "dg-prose dg-prose--small"
3233
+ children:
3234
+ - "Main content"
3235
+ - tag: aside
3236
+ props:
3237
+ class: "dg-column dg-column--sidebar-right"
3238
+ children:
3239
+ - tag: p
3240
+ props:
3241
+ class: "dg-prose dg-prose--small"
3242
+ children:
3243
+ - "Right sidebar"
3244
+
3245
+ - title: "Extra Large Left Sidebar (--xl)"
3246
+ description: "Layout with extra large left sidebar (512px) using the --xl modifier"
3247
+ padding: "0"
3248
+
3249
+ styles: |
3250
+ .dg-column {
3251
+ display: flex;
3252
+ align-items: center;
3253
+ justify-content: center;
3254
+ padding-top: 2rem;
3255
+ padding-bottom: 2rem;
3256
+ }
3257
+ .dg-column--sidebar-left {
3258
+ background: var(--color-dg-charcoal);
3259
+ border-right: 1px solid var(--color-dg-border);
3260
+ border-bottom: 1px solid var(--color-dg-border);
3261
+ }
3262
+ .dg-column--sidebar-right {
3263
+ background: var(--color-dg-charcoal);
3264
+ border-left: 1px solid var(--color-dg-border);
3265
+ border-top: 1px solid var(--color-dg-border);
3266
+ }
3267
+ .dg-column--main {
3268
+ background-image: repeating-linear-gradient(
3269
+ -45deg,
3270
+ transparent,
3271
+ transparent 5px,
3272
+ color-mix(in srgb, white 3%, transparent) 5px,
3273
+ color-mix(in srgb, white 3%, transparent) 10px
3274
+ );
3275
+ }
3276
+ .dg-prose, .dg-prose--small {
3277
+ font-size: 0.6875rem;
3278
+ text-transform: uppercase;
3279
+ letter-spacing: 0.1em;
3280
+ color: var(--color-dg-pebble);
3281
+ font-weight: 600;
3282
+ }
3283
+ @media (min-width: 768px) {
3284
+ .dg-column--sidebar-right {
3285
+ border-top: none;
3286
+ }
3287
+ }
3288
+ @media (min-width: 1024px) {
3289
+ .dg-column {
3290
+ min-height: 18rem;
3291
+ }
3292
+ .dg-column--sidebar-left {
3293
+ border-bottom: none;
3294
+ }
3295
+ }
3296
+ ast:
3297
+ tag: div
3298
+ props:
3299
+ class: "dg-columns"
3300
+ style: "width: 100%; max-width: 100%;"
3301
+ children:
3302
+ - tag: div
3303
+ props:
3304
+ class: "dg-columns__wrapper"
3305
+ children:
3306
+ - tag: aside
3307
+ props:
3308
+ class: "dg-column dg-column--sidebar-left dg-column--xl"
3309
+ children:
3310
+ - tag: p
3311
+ props:
3312
+ class: "dg-prose dg-prose--small"
3313
+ children:
3314
+ - "Extra Large (512px)"
3315
+ - tag: main
3316
+ props:
3317
+ class: "dg-column dg-column--main"
3318
+ children:
3319
+ - tag: p
3320
+ props:
3321
+ class: "dg-prose dg-prose--small"
3322
+ children:
3323
+ - "Main content"
3324
+ - tag: aside
3325
+ props:
3326
+ class: "dg-column dg-column--sidebar-right"
3327
+ children:
3328
+ - tag: p
3329
+ props:
3330
+ class: "dg-prose dg-prose--small"
3331
+ children:
3332
+ - "Right sidebar"
3333
+
3334
+ - title: "Small Right Sidebar (--sm)"
3335
+ description: "Layout with small right sidebar (320px) using the --sm modifier"
3336
+ padding: "0"
3337
+
3338
+ styles: |
3339
+ .dg-column {
3340
+ display: flex;
3341
+ align-items: center;
3342
+ justify-content: center;
3343
+ padding-top: 2rem;
3344
+ padding-bottom: 2rem;
3345
+ }
3346
+ .dg-column--sidebar-left {
3347
+ background: var(--color-dg-charcoal);
3348
+ border-right: 1px solid var(--color-dg-border);
3349
+ border-bottom: 1px solid var(--color-dg-border);
3350
+ }
3351
+ .dg-column--sidebar-right {
3352
+ background: var(--color-dg-charcoal);
3353
+ border-left: 1px solid var(--color-dg-border);
3354
+ border-top: 1px solid var(--color-dg-border);
3355
+ }
3356
+ .dg-column--main {
3357
+ background-image: repeating-linear-gradient(
3358
+ -45deg,
3359
+ transparent,
3360
+ transparent 5px,
3361
+ color-mix(in srgb, white 3%, transparent) 5px,
3362
+ color-mix(in srgb, white 3%, transparent) 10px
3363
+ );
3364
+ }
3365
+ .dg-prose, .dg-prose--small {
3366
+ font-size: 0.6875rem;
3367
+ text-transform: uppercase;
3368
+ letter-spacing: 0.1em;
3369
+ color: var(--color-dg-pebble);
3370
+ font-weight: 600;
3371
+ }
3372
+ @media (min-width: 768px) {
3373
+ .dg-column--sidebar-right {
3374
+ border-top: none;
3375
+ }
3376
+ }
3377
+ @media (min-width: 1024px) {
3378
+ .dg-column {
3379
+ min-height: 18rem;
3380
+ }
3381
+ .dg-column--sidebar-left {
3382
+ border-bottom: none;
3383
+ }
3384
+ }
3385
+ ast:
3386
+ tag: div
3387
+ props:
3388
+ class: "dg-columns"
3389
+ style: "width: 100%; max-width: 100%;"
3390
+ children:
3391
+ - tag: div
3392
+ props:
3393
+ class: "dg-columns__wrapper"
3394
+ children:
3395
+ - tag: aside
3396
+ props:
3397
+ class: "dg-column dg-column--sidebar-left"
3398
+ children:
3399
+ - tag: p
3400
+ props:
3401
+ class: "dg-prose dg-prose--small"
3402
+ children:
3403
+ - "Left sidebar"
3404
+ - tag: main
3405
+ props:
3406
+ class: "dg-column dg-column--main"
3407
+ children:
3408
+ - tag: p
3409
+ props:
3410
+ class: "dg-prose dg-prose--small"
3411
+ children:
3412
+ - "Main content"
3413
+ - tag: aside
3414
+ props:
3415
+ class: "dg-column dg-column--sidebar-right dg-column--sm"
3416
+ children:
3417
+ - tag: p
3418
+ props:
3419
+ class: "dg-prose dg-prose--small"
3420
+ children:
3421
+ - "Small (320px)"
3422
+
3423
+ - title: "Large Right Sidebar (--lg)"
3424
+ description: "Layout with large right sidebar (384px) using the --lg modifier"
3425
+ padding: "0"
3426
+
3427
+ styles: |
3428
+ .dg-column {
3429
+ display: flex;
3430
+ align-items: center;
3431
+ justify-content: center;
3432
+ padding-top: 2rem;
3433
+ padding-bottom: 2rem;
3434
+ }
3435
+ .dg-column--sidebar-left {
3436
+ background: var(--color-dg-charcoal);
3437
+ border-right: 1px solid var(--color-dg-border);
3438
+ border-bottom: 1px solid var(--color-dg-border);
3439
+ }
3440
+ .dg-column--sidebar-right {
3441
+ background: var(--color-dg-charcoal);
3442
+ border-left: 1px solid var(--color-dg-border);
3443
+ border-top: 1px solid var(--color-dg-border);
3444
+ }
3445
+ .dg-column--main {
3446
+ background-image: repeating-linear-gradient(
3447
+ -45deg,
3448
+ transparent,
3449
+ transparent 5px,
3450
+ color-mix(in srgb, white 3%, transparent) 5px,
3451
+ color-mix(in srgb, white 3%, transparent) 10px
3452
+ );
3453
+ }
3454
+ .dg-prose, .dg-prose--small {
3455
+ font-size: 0.6875rem;
3456
+ text-transform: uppercase;
3457
+ letter-spacing: 0.1em;
3458
+ color: var(--color-dg-pebble);
3459
+ font-weight: 600;
3460
+ }
3461
+ @media (min-width: 768px) {
3462
+ .dg-column--sidebar-right {
3463
+ border-top: none;
3464
+ }
3465
+ }
3466
+ @media (min-width: 1024px) {
3467
+ .dg-column {
3468
+ min-height: 18rem;
3469
+ }
3470
+ .dg-column--sidebar-left {
3471
+ border-bottom: none;
3472
+ }
3473
+ }
3474
+ ast:
3475
+ tag: div
3476
+ props:
3477
+ class: "dg-columns"
3478
+ style: "width: 100%; max-width: 100%;"
3479
+ children:
3480
+ - tag: div
3481
+ props:
3482
+ class: "dg-columns__wrapper"
3483
+ children:
3484
+ - tag: aside
3485
+ props:
3486
+ class: "dg-column dg-column--sidebar-left"
3487
+ children:
3488
+ - tag: p
3489
+ props:
3490
+ class: "dg-prose dg-prose--small"
3491
+ children:
3492
+ - "Left sidebar"
3493
+ - tag: main
3494
+ props:
3495
+ class: "dg-column dg-column--main"
3496
+ children:
3497
+ - tag: p
3498
+ props:
3499
+ class: "dg-prose dg-prose--small"
3500
+ children:
3501
+ - "Main content"
3502
+ - tag: aside
3503
+ props:
3504
+ class: "dg-column dg-column--sidebar-right dg-column--lg"
3505
+ children:
3506
+ - tag: p
3507
+ props:
3508
+ class: "dg-prose dg-prose--small"
3509
+ children:
3510
+ - "Large (384px)"
3511
+
3512
+ - title: "Extra Large Right Sidebar (--xl)"
3513
+ description: "Layout with extra large right sidebar (512px) using the --xl modifier"
3514
+ padding: "0"
3515
+
3516
+ styles: |
3517
+ .dg-column {
3518
+ display: flex;
3519
+ align-items: center;
3520
+ justify-content: center;
3521
+ padding-top: 2rem;
3522
+ padding-bottom: 2rem;
3523
+ }
3524
+ .dg-column--sidebar-left {
3525
+ background: var(--color-dg-charcoal);
3526
+ border-right: 1px solid var(--color-dg-border);
3527
+ border-bottom: 1px solid var(--color-dg-border);
3528
+ }
3529
+ .dg-column--sidebar-right {
3530
+ background: var(--color-dg-charcoal);
3531
+ border-left: 1px solid var(--color-dg-border);
3532
+ border-top: 1px solid var(--color-dg-border);
3533
+ }
3534
+ .dg-column--main {
3535
+ background-image: repeating-linear-gradient(
3536
+ -45deg,
3537
+ transparent,
3538
+ transparent 5px,
3539
+ color-mix(in srgb, white 3%, transparent) 5px,
3540
+ color-mix(in srgb, white 3%, transparent) 10px
3541
+ );
3542
+ }
3543
+ .dg-prose, .dg-prose--small {
3544
+ font-size: 0.6875rem;
3545
+ text-transform: uppercase;
3546
+ letter-spacing: 0.1em;
3547
+ color: var(--color-dg-pebble);
3548
+ font-weight: 600;
3549
+ }
3550
+ @media (min-width: 768px) {
3551
+ .dg-column--sidebar-right {
3552
+ border-top: none;
3553
+ }
3554
+ }
3555
+ @media (min-width: 1024px) {
3556
+ .dg-column {
3557
+ min-height: 18rem;
3558
+ }
3559
+ .dg-column--sidebar-left {
3560
+ border-bottom: none;
3561
+ }
3562
+ }
3563
+ ast:
3564
+ tag: div
3565
+ props:
3566
+ class: "dg-columns"
3567
+ style: "width: 100%; max-width: 100%;"
3568
+ children:
3569
+ - tag: div
3570
+ props:
3571
+ class: "dg-columns__wrapper"
3572
+ children:
3573
+ - tag: aside
3574
+ props:
3575
+ class: "dg-column dg-column--sidebar-left"
3576
+ children:
3577
+ - tag: p
3578
+ props:
3579
+ class: "dg-prose dg-prose--small"
3580
+ children:
3581
+ - "Left sidebar"
3582
+ - tag: main
3583
+ props:
3584
+ class: "dg-column dg-column--main"
3585
+ children:
3586
+ - tag: p
3587
+ props:
3588
+ class: "dg-prose dg-prose--small"
3589
+ children:
3590
+ - "Main content"
3591
+ - tag: aside
3592
+ props:
3593
+ class: "dg-column dg-column--sidebar-right dg-column--xl"
3594
+ children:
3595
+ - tag: p
3596
+ props:
3597
+ class: "dg-prose dg-prose--small"
3598
+ children:
3599
+ - "Extra Large (512px)"
3600
+
3601
+ # columns-fixed:
3602
+ # metadata:
3603
+ # title: "Three-Column Layout v2"
3604
+ # description: "Fixed-sidebar app shell with collapsible mobile header. Left sidebar fixed at lg+, right aside fixed at xl+."
3605
+ # category: "application-ui"
3606
+ # section: "application-shells"
3607
+ # subsection: "multi-column-layouts"
3608
+ # tags: [layout, fixed-sidebar, app-shell, responsive]
3609
+ # examples:
3610
+ # - title: "Fixed Sidebar Layout"
3611
+ # description: "App shell with fixed left sidebar and collapsible mobile header"
3612
+ # padding: "0"
3613
+ # styles: |
3614
+ # .dg-column--sidebar-left {
3615
+ # background: var(--color-dg-charcoal);
3616
+ # border-right: 1px solid var(--color-dg-border);
3617
+ # }
3618
+ # .dg-column--main {
3619
+ # min-height: 18rem;
3620
+ # display: flex;
3621
+ # align-items: center;
3622
+ # justify-content: center;
3623
+ # background-image: repeating-linear-gradient(
3624
+ # -45deg,
3625
+ # transparent,
3626
+ # transparent 5px,
3627
+ # color-mix(in srgb, white 3%, transparent) 5px,
3628
+ # color-mix(in srgb, white 3%, transparent) 10px
3629
+ # );
3630
+ # }
3631
+ # .dg-column--main .dg-prose {
3632
+ # font-size: 0.6875rem;
3633
+ # text-transform: uppercase;
3634
+ # letter-spacing: 0.1em;
3635
+ # color: var(--color-dg-pebble);
3636
+ # font-weight: 600;
3637
+ # }
3638
+ # ast:
3639
+ # tag: div
3640
+ # props:
3641
+ # class: "dg-columns dg-columns--fixed"
3642
+ # style: "min-height: 400px;"
3643
+ # children:
3644
+ # - tag: div
3645
+ # props:
3646
+ # class: "dg-columns__mobile-header"
3647
+ # children:
3648
+ # - tag: button
3649
+ # props:
3650
+ # type: "button"
3651
+ # class: "dg-columns__sidebar-toggle"
3652
+ # children:
3653
+ # - tag: i
3654
+ # props:
3655
+ # class: "fa-solid fa-bars"
3656
+ # aria-hidden: "true"
3657
+ # - tag: span
3658
+ # props:
3659
+ # class: "text-sm font-semibold text-dg-text"
3660
+ # children:
3661
+ # - "Dashboard"
3662
+ # - tag: aside
3663
+ # props:
3664
+ # class: "dg-column dg-column--sidebar-left"
3665
+ # children:
3666
+ # - tag: nav
3667
+ # props:
3668
+ # class: "flex flex-col gap-2"
3669
+ # children:
3670
+ # - tag: a
3671
+ # props:
3672
+ # href: "#"
3673
+ # class: "text-dg-primary text-sm font-semibold"
3674
+ # children:
3675
+ # - "Dashboard"
3676
+ # - tag: a
3677
+ # props:
3678
+ # href: "#"
3679
+ # class: "text-dg-muted text-sm"
3680
+ # children:
3681
+ # - "Projects"
3682
+ # - tag: a
3683
+ # props:
3684
+ # href: "#"
3685
+ # class: "text-dg-muted text-sm"
3686
+ # children:
3687
+ # - "Settings"
3688
+ # - tag: main
3689
+ # props:
3690
+ # class: "dg-column dg-column--main"
3691
+ # children:
3692
+ # - tag: p
3693
+ # props:
3694
+ # class: "dg-prose"
3695
+ # children:
3696
+ # - "Main Content"
3697
+ # - title: "Fixed Sidebar with Aside"
3698
+ # description: "App shell with fixed left sidebar and right aside panel"
3699
+ # padding: "0"
3700
+ # styles: |
3701
+ # .dg-column--sidebar-left {
3702
+ # background: var(--color-dg-charcoal);
3703
+ # border-right: 1px solid var(--color-dg-border);
3704
+ # }
3705
+ # .dg-column--sidebar-right {
3706
+ # background: var(--color-dg-charcoal);
3707
+ # border-left: 1px solid var(--color-dg-border);
3708
+ # }
3709
+ # .dg-column--main {
3710
+ # min-height: 18rem;
3711
+ # display: flex;
3712
+ # align-items: center;
3713
+ # justify-content: center;
3714
+ # background-image: repeating-linear-gradient(
3715
+ # -45deg,
3716
+ # transparent,
3717
+ # transparent 5px,
3718
+ # color-mix(in srgb, white 3%, transparent) 5px,
3719
+ # color-mix(in srgb, white 3%, transparent) 10px
3720
+ # );
3721
+ # }
3722
+ # .dg-column--main .dg-prose {
3723
+ # font-size: 0.6875rem;
3724
+ # text-transform: uppercase;
3725
+ # letter-spacing: 0.1em;
3726
+ # color: var(--color-dg-pebble);
3727
+ # font-weight: 600;
3728
+ # }
3729
+ # ast:
3730
+ # tag: div
3731
+ # props:
3732
+ # class: "dg-columns dg-columns--fixed"
3733
+ # style: "min-height: 400px;"
3734
+ # children:
3735
+ # - tag: div
3736
+ # props:
3737
+ # class: "dg-columns__mobile-header"
3738
+ # children:
3739
+ # - tag: button
3740
+ # props:
3741
+ # type: "button"
3742
+ # class: "dg-columns__sidebar-toggle"
3743
+ # children:
3744
+ # - tag: i
3745
+ # props:
3746
+ # class: "fa-solid fa-bars"
3747
+ # aria-hidden: "true"
3748
+ # - tag: span
3749
+ # props:
3750
+ # class: "text-sm font-semibold text-dg-text"
3751
+ # children:
3752
+ # - "Dashboard"
3753
+ # - tag: aside
3754
+ # props:
3755
+ # class: "dg-column dg-column--sidebar-left"
3756
+ # children:
3757
+ # - tag: nav
3758
+ # props:
3759
+ # class: "flex flex-col gap-2"
3760
+ # children:
3761
+ # - tag: a
3762
+ # props:
3763
+ # href: "#"
3764
+ # class: "text-dg-primary text-sm font-semibold"
3765
+ # children:
3766
+ # - "Dashboard"
3767
+ # - tag: a
3768
+ # props:
3769
+ # href: "#"
3770
+ # class: "text-dg-muted text-sm"
3771
+ # children:
3772
+ # - "Projects"
3773
+ # - tag: aside
3774
+ # props:
3775
+ # class: "dg-column dg-column--sidebar-right"
3776
+ # children:
3777
+ # - tag: p
3778
+ # props:
3779
+ # class: "dg-prose"
3780
+ # children:
3781
+ # - "Activity Feed"
3782
+ # - tag: main
3783
+ # props:
3784
+ # class: "dg-column dg-column--main"
3785
+ # children:
3786
+ # - tag: p
3787
+ # props:
3788
+ # class: "dg-prose"
3789
+ # children:
3790
+ # - "Main Content"
2373
3791
 
2374
3792
  # ---------------------------------------------------------------------------
2375
3793
  # APPLICATION SHELLS
@@ -2378,17 +3796,17 @@ components:
2378
3796
  metadata:
2379
3797
  title: "Header"
2380
3798
  description: "Application header with logo and navigation"
2381
- category: "application-ui"
2382
- section: "Application Shells"
2383
- subsection: "Stacked Layouts"
3799
+ category: "custom"
3800
+ section: "elements"
3801
+ subsection: "headers"
2384
3802
  tags: [header, navigation, layout]
2385
3803
  css:
2386
3804
  ".dg-header":
2387
3805
  apply: "w-full"
2388
3806
  properties:
2389
- background: "#050506"
3807
+ background: "var(--color-dg-almost-black)"
2390
3808
  padding: "1rem 1.5rem"
2391
- border-bottom: "1px solid rgba(255, 255, 255, 0.1)"
3809
+ border-bottom: "1px solid color-mix(in srgb, white 10%, transparent)"
2392
3810
  ".dg-header__container":
2393
3811
  apply: "flex items-center justify-between max-w-screen-2xl mx-auto"
2394
3812
  ".dg-header__logo":
@@ -2396,13 +3814,13 @@ components:
2396
3814
  ".dg-header__logo-image":
2397
3815
  apply: "h-8 w-auto"
2398
3816
  ".dg-header__logo-text":
2399
- apply: "font-dg-noto font-bold text-xl text-white"
3817
+ apply: "font-dg-noto font-bold text-xl text-dg-text"
2400
3818
  ".dg-header__nav":
2401
3819
  apply: "flex items-center gap-4"
2402
3820
  ".dg-header__profile-link":
2403
3821
  apply: "-m-1.5 p-1.5 block"
2404
3822
  ".dg-header__profile-avatar":
2405
- apply: "size-8 rounded-full bg-gray-800 outline -outline-offset-1 outline-white/10"
3823
+ apply: "size-8 rounded-full bg-dg-charcoal outline -outline-offset-1 outline-white/10"
2406
3824
  media:
2407
3825
  "(max-width: 768px)":
2408
3826
  ".dg-header":
@@ -2470,9 +3888,9 @@ components:
2470
3888
  metadata:
2471
3889
  title: "Footer"
2472
3890
  description: "Simple footer for page layouts"
2473
- category: "application-ui"
2474
- section: "Application Shells"
2475
- subsection: "Stacked Layouts"
3891
+ category: "custom"
3892
+ section: "page-sections"
3893
+ subsection: "footers"
2476
3894
  tags: [footer, layout]
2477
3895
  css:
2478
3896
  ".dg-footer":
@@ -2537,8 +3955,8 @@ components:
2537
3955
  title: "Link"
2538
3956
  description: "Primary link with hover effect"
2539
3957
  category: "application-ui"
2540
- section: "Navigation"
2541
- subsection: "Navbars"
3958
+ section: "navigation"
3959
+ subsection: "navbars"
2542
3960
  tags: [link, navigation]
2543
3961
  css:
2544
3962
  ".dg-link":
@@ -2566,9 +3984,9 @@ components:
2566
3984
  metadata:
2567
3985
  title: "Text Utilities"
2568
3986
  description: "Text color and typography utility classes"
2569
- category: "application-ui"
2570
- section: "Elements"
2571
- subsection: "Buttons"
3987
+ category: "custom"
3988
+ section: "elements"
3989
+ subsection: "text-utilities"
2572
3990
  tags: [text, color, utility]
2573
3991
  css:
2574
3992
  ".dg-text-center":
@@ -2634,9 +4052,9 @@ components:
2634
4052
  metadata:
2635
4053
  title: "Newsletter Signup"
2636
4054
  description: "Newsletter subscription form with email input and privacy checkbox"
2637
- category: "application-ui"
2638
- section: "Forms"
2639
- subsection: "Form Layouts"
4055
+ category: "custom"
4056
+ section: "page-sections"
4057
+ subsection: "newsletter-sections"
2640
4058
  tags: [newsletter, form, email, signup, subscription]
2641
4059
  css:
2642
4060
  ".dg-newsletter-container":
@@ -2731,8 +4149,8 @@ components:
2731
4149
  title: "Alerts"
2732
4150
  description: "Feedback banners for warnings, errors, success, and informational messages"
2733
4151
  category: "application-ui"
2734
- section: "Feedback"
2735
- subsection: "Alerts"
4152
+ section: "feedback"
4153
+ subsection: "alerts"
2736
4154
  tags: [alert, feedback, notification, banner, warning, error, success, info]
2737
4155
  css:
2738
4156
  ".dg-alert":
@@ -2818,7 +4236,7 @@ components:
2818
4236
  dismiss:
2819
4237
  css:
2820
4238
  ".dg-alert__dismiss":
2821
- apply: "ml-auto pl-3 shrink-0"
4239
+ apply: "ml-auto pl-3 shrink-0 -my-1.5 -mr-1.5"
2822
4240
  ".dg-alert__dismiss button":
2823
4241
  apply: "inline-flex rounded-md p-1.5 text-dg-muted cursor-pointer"
2824
4242
  ".dg-alert__dismiss button:hover":
@@ -3109,399 +4527,399 @@ components:
3109
4527
  props:
3110
4528
  d: "M6.28 5.22a.75.75 0 0 0-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 1 0 1.06 1.06L10 11.06l3.72 3.72a.75.75 0 1 0 1.06-1.06L11.06 10l3.72-3.72a.75.75 0 0 0-1.06-1.06L10 8.94 6.28 5.22Z"
3111
4529
 
3112
- combobox:
3113
- metadata:
3114
- title: "Comboboxes"
3115
- description: "Autocomplete combobox inputs with filterable dropdown options"
3116
- category: "application-ui"
3117
- section: "Forms"
3118
- subsection: "Comboboxes"
3119
- tags: [combobox, autocomplete, select, search, dropdown, form]
3120
- css:
3121
- ".dg-combobox":
3122
- apply: "relative block"
3123
- ".dg-combobox__label":
3124
- apply: "block text-sm font-medium text-white"
3125
- properties:
3126
- line-height: "1.5rem"
3127
- ".dg-combobox__wrapper":
3128
- apply: "relative mt-2 block"
3129
- ".dg-combobox__input":
3130
- apply: "block w-full rounded-md bg-white/5 py-1.5 pr-12 pl-3 text-base text-white outline-1 -outline-offset-1 outline-white/10 placeholder:text-dg-slate sm:text-sm"
3131
- properties:
3132
- line-height: "1.5rem"
3133
- ".dg-combobox__input:focus":
3134
- apply: "outline-2 -outline-offset-2 outline-dg-primary"
3135
- ".dg-combobox__toggle":
3136
- apply: "absolute inset-y-0 right-0 flex items-center rounded-r-md px-2"
3137
- ".dg-combobox__toggle-icon":
3138
- apply: "size-5 text-dg-muted"
3139
- ".dg-combobox__options":
3140
- apply: "max-h-60 overflow-auto rounded-md bg-dg-charcoal py-1 text-base shadow-lg sm:text-sm"
3141
- properties:
3142
- outline: "1px solid rgba(255, 255, 255, 0.1)"
3143
- outline-offset: "-1px"
3144
- ".dg-combobox__option":
3145
- apply: "block truncate px-3 py-2 text-dg-platinum select-none cursor-pointer"
3146
- ".dg-combobox__option:hover":
3147
- apply: "bg-dg-primary text-white"
3148
- ".dg-combobox__option.selected":
3149
- apply: "bg-dg-primary text-white"
3150
- ".dg-combobox__option-text":
3151
- apply: "block truncate"
3152
- ".dg-combobox__check":
3153
- apply: "absolute inset-y-0 right-0 flex items-center pr-4 text-white"
3154
- ".dg-combobox__check-icon":
3155
- apply: "size-5"
3156
- variants:
3157
- with-check:
3158
- css:
3159
- ".dg-combobox--with-check .dg-combobox__option":
3160
- apply: "relative pr-9"
3161
- ".dg-combobox--with-check .dg-combobox__option.selected .dg-combobox__check":
3162
- apply: "flex"
3163
- with-avatar:
3164
- css:
3165
- ".dg-combobox--with-avatar .dg-combobox__option":
3166
- apply: "flex items-center"
3167
- properties:
3168
- gap: "0.5rem"
3169
- ".dg-combobox__avatar":
3170
- apply: "size-6 shrink-0 rounded-full"
3171
- with-status:
3172
- css:
3173
- ".dg-combobox--with-status .dg-combobox__option":
3174
- apply: "flex items-center"
3175
- properties:
3176
- gap: "0.5rem"
3177
- ".dg-combobox__status":
3178
- apply: "inline-block size-2 shrink-0 rounded-full"
3179
- ".dg-combobox__status--online":
3180
- apply: "bg-dg-success"
3181
- ".dg-combobox__status--offline":
3182
- apply: "bg-dg-muted"
3183
- examples:
3184
- - title: "Simple Combobox"
3185
- description: "Basic autocomplete combobox with text options"
3186
- ast:
3187
- tag: div
3188
- props:
3189
- class: "dg-combobox"
3190
- children:
3191
- - tag: label
3192
- props:
3193
- class: "dg-combobox__label"
3194
- for: "combobox-simple"
3195
- children:
3196
- - "Assigned to"
3197
- - tag: div
3198
- props:
3199
- class: "dg-combobox__wrapper"
3200
- children:
3201
- - tag: input
3202
- props:
3203
- id: "combobox-simple"
3204
- type: text
3205
- class: "dg-combobox__input"
3206
- - tag: button
3207
- props:
3208
- type: button
3209
- class: "dg-combobox__toggle"
3210
- children:
3211
- - tag: svg
3212
- props:
3213
- class: "dg-combobox__toggle-icon"
3214
- viewBox: "0 0 20 20"
3215
- fill: "currentColor"
3216
- aria-hidden: "true"
3217
- children:
3218
- - tag: path
3219
- props:
3220
- fill-rule: "evenodd"
3221
- clip-rule: "evenodd"
3222
- d: "M5.22 8.22a.75.75 0 0 1 1.06 0L10 11.94l3.72-3.72a.75.75 0 1 1 1.06 1.06l-4.25 4.25a.75.75 0 0 1-1.06 0L5.22 9.28a.75.75 0 0 1 0-1.06Z"
3223
- - tag: ul
3224
- props:
3225
- class: "dg-combobox__options"
3226
- role: "listbox"
3227
- children:
3228
- - tag: li
3229
- props:
3230
- class: "dg-combobox__option"
3231
- role: "option"
3232
- children:
3233
- - "Leslie Alexander"
3234
- - tag: li
3235
- props:
3236
- class: "dg-combobox__option"
3237
- role: "option"
3238
- children:
3239
- - "Michael Foster"
3240
- - tag: li
3241
- props:
3242
- class: "dg-combobox__option selected"
3243
- role: "option"
3244
- children:
3245
- - "Dries Vincent"
3246
- - title: "Combobox with Check Indicator"
3247
- description: "Combobox showing a checkmark on the selected option"
3248
- ast:
3249
- tag: div
3250
- props:
3251
- class: "dg-combobox dg-combobox--with-check"
3252
- children:
3253
- - tag: label
3254
- props:
3255
- class: "dg-combobox__label"
3256
- for: "combobox-check"
3257
- children:
3258
- - "Assigned to"
3259
- - tag: div
3260
- props:
3261
- class: "dg-combobox__wrapper"
3262
- children:
3263
- - tag: input
3264
- props:
3265
- id: "combobox-check"
3266
- type: text
3267
- class: "dg-combobox__input"
3268
- - tag: button
3269
- props:
3270
- type: button
3271
- class: "dg-combobox__toggle"
3272
- children:
3273
- - tag: svg
3274
- props:
3275
- class: "dg-combobox__toggle-icon"
3276
- viewBox: "0 0 20 20"
3277
- fill: "currentColor"
3278
- aria-hidden: "true"
3279
- children:
3280
- - tag: path
3281
- props:
3282
- fill-rule: "evenodd"
3283
- clip-rule: "evenodd"
3284
- d: "M5.22 8.22a.75.75 0 0 1 1.06 0L10 11.94l3.72-3.72a.75.75 0 1 1 1.06 1.06l-4.25 4.25a.75.75 0 0 1-1.06 0L5.22 9.28a.75.75 0 0 1 0-1.06Z"
3285
- - tag: ul
3286
- props:
3287
- class: "dg-combobox__options"
3288
- role: "listbox"
3289
- children:
3290
- - tag: li
3291
- props:
3292
- class: "dg-combobox__option"
3293
- role: "option"
3294
- children:
3295
- - tag: span
3296
- props:
3297
- class: "dg-combobox__option-text"
3298
- children:
3299
- - "Leslie Alexander"
3300
- - tag: li
3301
- props:
3302
- class: "dg-combobox__option selected"
3303
- role: "option"
3304
- children:
3305
- - tag: span
3306
- props:
3307
- class: "dg-combobox__option-text"
3308
- children:
3309
- - "Tom Cook"
3310
- - tag: span
3311
- props:
3312
- class: "dg-combobox__check"
3313
- children:
3314
- - tag: svg
3315
- props:
3316
- class: "dg-combobox__check-icon"
3317
- viewBox: "0 0 20 20"
3318
- fill: "currentColor"
3319
- aria-hidden: "true"
3320
- children:
3321
- - tag: path
3322
- props:
3323
- fill-rule: "evenodd"
3324
- clip-rule: "evenodd"
3325
- d: "M16.704 4.153a.75.75 0 0 1 .143 1.052l-8 10.5a.75.75 0 0 1-1.127.075l-4.5-4.5a.75.75 0 0 1 1.06-1.06l3.894 3.893 7.48-9.817a.75.75 0 0 1 1.05-.143Z"
3326
- - tag: li
3327
- props:
3328
- class: "dg-combobox__option"
3329
- role: "option"
3330
- children:
3331
- - tag: span
3332
- props:
3333
- class: "dg-combobox__option-text"
3334
- children:
3335
- - "Whitney Francis"
3336
- - title: "Combobox with Avatars"
3337
- description: "Combobox with user avatars next to each option"
3338
- ast:
3339
- tag: div
3340
- props:
3341
- class: "dg-combobox dg-combobox--with-avatar"
3342
- children:
3343
- - tag: label
3344
- props:
3345
- class: "dg-combobox__label"
3346
- for: "combobox-avatar"
3347
- children:
3348
- - "Assigned to"
3349
- - tag: div
3350
- props:
3351
- class: "dg-combobox__wrapper"
3352
- children:
3353
- - tag: input
3354
- props:
3355
- id: "combobox-avatar"
3356
- type: text
3357
- class: "dg-combobox__input"
3358
- - tag: button
3359
- props:
3360
- type: button
3361
- class: "dg-combobox__toggle"
3362
- children:
3363
- - tag: svg
3364
- props:
3365
- class: "dg-combobox__toggle-icon"
3366
- viewBox: "0 0 20 20"
3367
- fill: "currentColor"
3368
- aria-hidden: "true"
3369
- children:
3370
- - tag: path
3371
- props:
3372
- fill-rule: "evenodd"
3373
- clip-rule: "evenodd"
3374
- d: "M5.22 8.22a.75.75 0 0 1 1.06 0L10 11.94l3.72-3.72a.75.75 0 1 1 1.06 1.06l-4.25 4.25a.75.75 0 0 1-1.06 0L5.22 9.28a.75.75 0 0 1 0-1.06Z"
3375
- - tag: ul
3376
- props:
3377
- class: "dg-combobox__options"
3378
- role: "listbox"
3379
- children:
3380
- - tag: li
3381
- props:
3382
- class: "dg-combobox__option"
3383
- role: "option"
3384
- children:
3385
- - tag: img
3386
- props:
3387
- class: "dg-combobox__avatar"
3388
- src: "https://images.unsplash.com/photo-1494790108377-be9c29b29330?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80"
3389
- alt: ""
3390
- - tag: span
3391
- props:
3392
- class: "dg-combobox__option-text"
3393
- children:
3394
- - "Leslie Alexander"
3395
- - tag: li
3396
- props:
3397
- class: "dg-combobox__option selected"
3398
- role: "option"
3399
- children:
3400
- - tag: img
3401
- props:
3402
- class: "dg-combobox__avatar"
3403
- src: "https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80"
3404
- alt: ""
3405
- - tag: span
3406
- props:
3407
- class: "dg-combobox__option-text"
3408
- children:
3409
- - "Tom Cook"
3410
- - tag: li
3411
- props:
3412
- class: "dg-combobox__option"
3413
- role: "option"
3414
- children:
3415
- - tag: img
3416
- props:
3417
- class: "dg-combobox__avatar"
3418
- src: "https://images.unsplash.com/photo-1517365830460-955ce3ccd263?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80"
3419
- alt: ""
3420
- - tag: span
3421
- props:
3422
- class: "dg-combobox__option-text"
3423
- children:
3424
- - "Whitney Francis"
3425
- - title: "Combobox with Status Indicators"
3426
- description: "Combobox with online/offline status indicators"
3427
- ast:
3428
- tag: div
3429
- props:
3430
- class: "dg-combobox dg-combobox--with-status"
3431
- children:
3432
- - tag: label
3433
- props:
3434
- class: "dg-combobox__label"
3435
- for: "combobox-status"
3436
- children:
3437
- - "Assigned to"
3438
- - tag: div
3439
- props:
3440
- class: "dg-combobox__wrapper"
3441
- children:
3442
- - tag: input
3443
- props:
3444
- id: "combobox-status"
3445
- type: text
3446
- class: "dg-combobox__input"
3447
- - tag: button
3448
- props:
3449
- type: button
3450
- class: "dg-combobox__toggle"
3451
- children:
3452
- - tag: svg
3453
- props:
3454
- class: "dg-combobox__toggle-icon"
3455
- viewBox: "0 0 20 20"
3456
- fill: "currentColor"
3457
- aria-hidden: "true"
3458
- children:
3459
- - tag: path
3460
- props:
3461
- fill-rule: "evenodd"
3462
- clip-rule: "evenodd"
3463
- d: "M5.22 8.22a.75.75 0 0 1 1.06 0L10 11.94l3.72-3.72a.75.75 0 1 1 1.06 1.06l-4.25 4.25a.75.75 0 0 1-1.06 0L5.22 9.28a.75.75 0 0 1 0-1.06Z"
3464
- - tag: ul
3465
- props:
3466
- class: "dg-combobox__options"
3467
- role: "listbox"
3468
- children:
3469
- - tag: li
3470
- props:
3471
- class: "dg-combobox__option"
3472
- role: "option"
3473
- children:
3474
- - tag: span
3475
- props:
3476
- class: "dg-combobox__status dg-combobox__status--online"
3477
- - tag: span
3478
- props:
3479
- class: "dg-combobox__option-text"
3480
- children:
3481
- - "Leslie Alexander"
3482
- - tag: li
3483
- props:
3484
- class: "dg-combobox__option"
3485
- role: "option"
3486
- children:
3487
- - tag: span
3488
- props:
3489
- class: "dg-combobox__status dg-combobox__status--offline"
3490
- - tag: span
3491
- props:
3492
- class: "dg-combobox__option-text"
3493
- children:
3494
- - "Michael Foster"
3495
- - tag: li
3496
- props:
3497
- class: "dg-combobox__option selected"
3498
- role: "option"
3499
- children:
3500
- - tag: span
3501
- props:
3502
- class: "dg-combobox__status dg-combobox__status--online"
3503
- - tag: span
3504
- props:
3505
- class: "dg-combobox__option-text"
3506
- children:
3507
- - "Dries Vincent"
4530
+ # combobox:
4531
+ # metadata:
4532
+ # title: "Comboboxes"
4533
+ # description: "Autocomplete combobox inputs with filterable dropdown options"
4534
+ # category: "application-ui"
4535
+ # section: "forms"
4536
+ # subsection: "comboboxes"
4537
+ # tags: [combobox, autocomplete, select, search, dropdown, form]
4538
+ # css:
4539
+ # ".dg-combobox":
4540
+ # apply: "relative block bg-transparent p-0 border-0 rounded-none"
4541
+ # ".dg-combobox__label":
4542
+ # apply: "block text-sm font-medium text-dg-text"
4543
+ # properties:
4544
+ # line-height: "1.5rem"
4545
+ # ".dg-combobox__wrapper":
4546
+ # apply: "relative mt-2 block"
4547
+ # ".dg-combobox__input":
4548
+ # apply: "block w-full rounded-md bg-white/5 py-1.5 pr-12 pl-3 text-base text-dg-text outline-1 -outline-offset-1 outline-white/10 placeholder:text-dg-slate sm:text-sm"
4549
+ # properties:
4550
+ # line-height: "1.5rem"
4551
+ # ".dg-combobox__input:focus":
4552
+ # apply: "outline-2 -outline-offset-2 outline-dg-primary"
4553
+ # ".dg-combobox__toggle":
4554
+ # apply: "absolute inset-y-0 right-0 flex items-center rounded-r-md px-2"
4555
+ # ".dg-combobox__toggle-icon":
4556
+ # apply: "size-5 text-dg-muted"
4557
+ # ".dg-combobox__options":
4558
+ # apply: "max-h-60 overflow-auto rounded-md bg-dg-charcoal py-1 text-base shadow-lg sm:text-sm"
4559
+ # properties:
4560
+ # outline: "1px solid color-mix(in srgb, white 10%, transparent)"
4561
+ # outline-offset: "-1px"
4562
+ # ".dg-combobox__option":
4563
+ # apply: "block truncate px-3 py-2 text-dg-platinum select-none cursor-pointer"
4564
+ # ".dg-combobox__option:hover":
4565
+ # apply: "bg-dg-primary text-dg-text"
4566
+ # ".dg-combobox__option.selected":
4567
+ # apply: "bg-dg-primary text-dg-text"
4568
+ # ".dg-combobox__option-text":
4569
+ # apply: "block truncate"
4570
+ # ".dg-combobox__check":
4571
+ # apply: "absolute inset-y-0 right-0 flex items-center pr-4 text-dg-text"
4572
+ # ".dg-combobox__check-icon":
4573
+ # apply: "size-5"
4574
+ # variants:
4575
+ # with-check:
4576
+ # css:
4577
+ # ".dg-combobox--with-check .dg-combobox__option":
4578
+ # apply: "relative pr-9"
4579
+ # ".dg-combobox--with-check .dg-combobox__option.selected .dg-combobox__check":
4580
+ # apply: "flex"
4581
+ # with-avatar:
4582
+ # css:
4583
+ # ".dg-combobox--with-avatar .dg-combobox__option":
4584
+ # apply: "flex items-center"
4585
+ # properties:
4586
+ # gap: "0.5rem"
4587
+ # ".dg-combobox__avatar":
4588
+ # apply: "size-6 shrink-0 rounded-full"
4589
+ # with-status:
4590
+ # css:
4591
+ # ".dg-combobox--with-status .dg-combobox__option":
4592
+ # apply: "flex items-center"
4593
+ # properties:
4594
+ # gap: "0.5rem"
4595
+ # ".dg-combobox__status":
4596
+ # apply: "inline-block size-2 shrink-0 rounded-full"
4597
+ # ".dg-combobox__status--online":
4598
+ # apply: "bg-dg-success"
4599
+ # ".dg-combobox__status--offline":
4600
+ # apply: "bg-dg-muted"
4601
+ # examples:
4602
+ # - title: "Simple Combobox"
4603
+ # description: "Basic autocomplete combobox with text options"
4604
+ # ast:
4605
+ # tag: div
4606
+ # props:
4607
+ # class: "dg-combobox"
4608
+ # children:
4609
+ # - tag: label
4610
+ # props:
4611
+ # class: "dg-combobox__label"
4612
+ # for: "combobox-simple"
4613
+ # children:
4614
+ # - "Assigned to"
4615
+ # - tag: div
4616
+ # props:
4617
+ # class: "dg-combobox__wrapper"
4618
+ # children:
4619
+ # - tag: input
4620
+ # props:
4621
+ # id: "combobox-simple"
4622
+ # type: text
4623
+ # class: "dg-combobox__input"
4624
+ # - tag: button
4625
+ # props:
4626
+ # type: button
4627
+ # class: "dg-combobox__toggle"
4628
+ # children:
4629
+ # - tag: svg
4630
+ # props:
4631
+ # class: "dg-combobox__toggle-icon"
4632
+ # viewBox: "0 0 20 20"
4633
+ # fill: "currentColor"
4634
+ # aria-hidden: "true"
4635
+ # children:
4636
+ # - tag: path
4637
+ # props:
4638
+ # fill-rule: "evenodd"
4639
+ # clip-rule: "evenodd"
4640
+ # d: "M5.22 8.22a.75.75 0 0 1 1.06 0L10 11.94l3.72-3.72a.75.75 0 1 1 1.06 1.06l-4.25 4.25a.75.75 0 0 1-1.06 0L5.22 9.28a.75.75 0 0 1 0-1.06Z"
4641
+ # - tag: ul
4642
+ # props:
4643
+ # class: "dg-combobox__options"
4644
+ # role: "listbox"
4645
+ # children:
4646
+ # - tag: li
4647
+ # props:
4648
+ # class: "dg-combobox__option"
4649
+ # role: "option"
4650
+ # children:
4651
+ # - "Leslie Alexander"
4652
+ # - tag: li
4653
+ # props:
4654
+ # class: "dg-combobox__option"
4655
+ # role: "option"
4656
+ # children:
4657
+ # - "Michael Foster"
4658
+ # - tag: li
4659
+ # props:
4660
+ # class: "dg-combobox__option selected"
4661
+ # role: "option"
4662
+ # children:
4663
+ # - "Dries Vincent"
4664
+ # - title: "Combobox with Check Indicator"
4665
+ # description: "Combobox showing a checkmark on the selected option"
4666
+ # ast:
4667
+ # tag: div
4668
+ # props:
4669
+ # class: "dg-combobox dg-combobox--with-check"
4670
+ # children:
4671
+ # - tag: label
4672
+ # props:
4673
+ # class: "dg-combobox__label"
4674
+ # for: "combobox-check"
4675
+ # children:
4676
+ # - "Assigned to"
4677
+ # - tag: div
4678
+ # props:
4679
+ # class: "dg-combobox__wrapper"
4680
+ # children:
4681
+ # - tag: input
4682
+ # props:
4683
+ # id: "combobox-check"
4684
+ # type: text
4685
+ # class: "dg-combobox__input"
4686
+ # - tag: button
4687
+ # props:
4688
+ # type: button
4689
+ # class: "dg-combobox__toggle"
4690
+ # children:
4691
+ # - tag: svg
4692
+ # props:
4693
+ # class: "dg-combobox__toggle-icon"
4694
+ # viewBox: "0 0 20 20"
4695
+ # fill: "currentColor"
4696
+ # aria-hidden: "true"
4697
+ # children:
4698
+ # - tag: path
4699
+ # props:
4700
+ # fill-rule: "evenodd"
4701
+ # clip-rule: "evenodd"
4702
+ # d: "M5.22 8.22a.75.75 0 0 1 1.06 0L10 11.94l3.72-3.72a.75.75 0 1 1 1.06 1.06l-4.25 4.25a.75.75 0 0 1-1.06 0L5.22 9.28a.75.75 0 0 1 0-1.06Z"
4703
+ # - tag: ul
4704
+ # props:
4705
+ # class: "dg-combobox__options"
4706
+ # role: "listbox"
4707
+ # children:
4708
+ # - tag: li
4709
+ # props:
4710
+ # class: "dg-combobox__option"
4711
+ # role: "option"
4712
+ # children:
4713
+ # - tag: span
4714
+ # props:
4715
+ # class: "dg-combobox__option-text"
4716
+ # children:
4717
+ # - "Leslie Alexander"
4718
+ # - tag: li
4719
+ # props:
4720
+ # class: "dg-combobox__option selected"
4721
+ # role: "option"
4722
+ # children:
4723
+ # - tag: span
4724
+ # props:
4725
+ # class: "dg-combobox__option-text"
4726
+ # children:
4727
+ # - "Tom Cook"
4728
+ # - tag: span
4729
+ # props:
4730
+ # class: "dg-combobox__check"
4731
+ # children:
4732
+ # - tag: svg
4733
+ # props:
4734
+ # class: "dg-combobox__check-icon"
4735
+ # viewBox: "0 0 20 20"
4736
+ # fill: "currentColor"
4737
+ # aria-hidden: "true"
4738
+ # children:
4739
+ # - tag: path
4740
+ # props:
4741
+ # fill-rule: "evenodd"
4742
+ # clip-rule: "evenodd"
4743
+ # d: "M16.704 4.153a.75.75 0 0 1 .143 1.052l-8 10.5a.75.75 0 0 1-1.127.075l-4.5-4.5a.75.75 0 0 1 1.06-1.06l3.894 3.893 7.48-9.817a.75.75 0 0 1 1.05-.143Z"
4744
+ # - tag: li
4745
+ # props:
4746
+ # class: "dg-combobox__option"
4747
+ # role: "option"
4748
+ # children:
4749
+ # - tag: span
4750
+ # props:
4751
+ # class: "dg-combobox__option-text"
4752
+ # children:
4753
+ # - "Whitney Francis"
4754
+ # - title: "Combobox with Avatars"
4755
+ # description: "Combobox with user avatars next to each option"
4756
+ # ast:
4757
+ # tag: div
4758
+ # props:
4759
+ # class: "dg-combobox dg-combobox--with-avatar"
4760
+ # children:
4761
+ # - tag: label
4762
+ # props:
4763
+ # class: "dg-combobox__label"
4764
+ # for: "combobox-avatar"
4765
+ # children:
4766
+ # - "Assigned to"
4767
+ # - tag: div
4768
+ # props:
4769
+ # class: "dg-combobox__wrapper"
4770
+ # children:
4771
+ # - tag: input
4772
+ # props:
4773
+ # id: "combobox-avatar"
4774
+ # type: text
4775
+ # class: "dg-combobox__input"
4776
+ # - tag: button
4777
+ # props:
4778
+ # type: button
4779
+ # class: "dg-combobox__toggle"
4780
+ # children:
4781
+ # - tag: svg
4782
+ # props:
4783
+ # class: "dg-combobox__toggle-icon"
4784
+ # viewBox: "0 0 20 20"
4785
+ # fill: "currentColor"
4786
+ # aria-hidden: "true"
4787
+ # children:
4788
+ # - tag: path
4789
+ # props:
4790
+ # fill-rule: "evenodd"
4791
+ # clip-rule: "evenodd"
4792
+ # d: "M5.22 8.22a.75.75 0 0 1 1.06 0L10 11.94l3.72-3.72a.75.75 0 1 1 1.06 1.06l-4.25 4.25a.75.75 0 0 1-1.06 0L5.22 9.28a.75.75 0 0 1 0-1.06Z"
4793
+ # - tag: ul
4794
+ # props:
4795
+ # class: "dg-combobox__options"
4796
+ # role: "listbox"
4797
+ # children:
4798
+ # - tag: li
4799
+ # props:
4800
+ # class: "dg-combobox__option"
4801
+ # role: "option"
4802
+ # children:
4803
+ # - tag: img
4804
+ # props:
4805
+ # class: "dg-combobox__avatar"
4806
+ # src: "https://images.unsplash.com/photo-1494790108377-be9c29b29330?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80"
4807
+ # alt: ""
4808
+ # - tag: span
4809
+ # props:
4810
+ # class: "dg-combobox__option-text"
4811
+ # children:
4812
+ # - "Leslie Alexander"
4813
+ # - tag: li
4814
+ # props:
4815
+ # class: "dg-combobox__option selected"
4816
+ # role: "option"
4817
+ # children:
4818
+ # - tag: img
4819
+ # props:
4820
+ # class: "dg-combobox__avatar"
4821
+ # src: "https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80"
4822
+ # alt: ""
4823
+ # - tag: span
4824
+ # props:
4825
+ # class: "dg-combobox__option-text"
4826
+ # children:
4827
+ # - "Tom Cook"
4828
+ # - tag: li
4829
+ # props:
4830
+ # class: "dg-combobox__option"
4831
+ # role: "option"
4832
+ # children:
4833
+ # - tag: img
4834
+ # props:
4835
+ # class: "dg-combobox__avatar"
4836
+ # src: "https://images.unsplash.com/photo-1517365830460-955ce3ccd263?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80"
4837
+ # alt: ""
4838
+ # - tag: span
4839
+ # props:
4840
+ # class: "dg-combobox__option-text"
4841
+ # children:
4842
+ # - "Whitney Francis"
4843
+ # - title: "Combobox with Status Indicators"
4844
+ # description: "Combobox with online/offline status indicators"
4845
+ # ast:
4846
+ # tag: div
4847
+ # props:
4848
+ # class: "dg-combobox dg-combobox--with-status"
4849
+ # children:
4850
+ # - tag: label
4851
+ # props:
4852
+ # class: "dg-combobox__label"
4853
+ # for: "combobox-status"
4854
+ # children:
4855
+ # - "Assigned to"
4856
+ # - tag: div
4857
+ # props:
4858
+ # class: "dg-combobox__wrapper"
4859
+ # children:
4860
+ # - tag: input
4861
+ # props:
4862
+ # id: "combobox-status"
4863
+ # type: text
4864
+ # class: "dg-combobox__input"
4865
+ # - tag: button
4866
+ # props:
4867
+ # type: button
4868
+ # class: "dg-combobox__toggle"
4869
+ # children:
4870
+ # - tag: svg
4871
+ # props:
4872
+ # class: "dg-combobox__toggle-icon"
4873
+ # viewBox: "0 0 20 20"
4874
+ # fill: "currentColor"
4875
+ # aria-hidden: "true"
4876
+ # children:
4877
+ # - tag: path
4878
+ # props:
4879
+ # fill-rule: "evenodd"
4880
+ # clip-rule: "evenodd"
4881
+ # d: "M5.22 8.22a.75.75 0 0 1 1.06 0L10 11.94l3.72-3.72a.75.75 0 1 1 1.06 1.06l-4.25 4.25a.75.75 0 0 1-1.06 0L5.22 9.28a.75.75 0 0 1 0-1.06Z"
4882
+ # - tag: ul
4883
+ # props:
4884
+ # class: "dg-combobox__options"
4885
+ # role: "listbox"
4886
+ # children:
4887
+ # - tag: li
4888
+ # props:
4889
+ # class: "dg-combobox__option"
4890
+ # role: "option"
4891
+ # children:
4892
+ # - tag: span
4893
+ # props:
4894
+ # class: "dg-combobox__status dg-combobox__status--online"
4895
+ # - tag: span
4896
+ # props:
4897
+ # class: "dg-combobox__option-text"
4898
+ # children:
4899
+ # - "Leslie Alexander"
4900
+ # - tag: li
4901
+ # props:
4902
+ # class: "dg-combobox__option"
4903
+ # role: "option"
4904
+ # children:
4905
+ # - tag: span
4906
+ # props:
4907
+ # class: "dg-combobox__status dg-combobox__status--offline"
4908
+ # - tag: span
4909
+ # props:
4910
+ # class: "dg-combobox__option-text"
4911
+ # children:
4912
+ # - "Michael Foster"
4913
+ # - tag: li
4914
+ # props:
4915
+ # class: "dg-combobox__option selected"
4916
+ # role: "option"
4917
+ # children:
4918
+ # - tag: span
4919
+ # props:
4920
+ # class: "dg-combobox__status dg-combobox__status--online"
4921
+ # - tag: span
4922
+ # props:
4923
+ # class: "dg-combobox__option-text"
4924
+ # children:
4925
+ # - "Dries Vincent"