@donotdev/components 0.0.3 → 0.0.5

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.
@@ -10,9 +10,10 @@
10
10
  Used by: CSS @media queries, JavaScript hooks, responsive components
11
11
  Note: CSS variables don't work in @media, so we use hardcoded px values
12
12
  =========================== */
13
- --breakpoint-mobile: 768px;
14
- --breakpoint-tablet: 1024px; /* Key breakpoint, layout presets are based on mobile + tablet vs desktop+wide breakpoints */
15
- --breakpoint-desktop: 1440px;
13
+ --breakpoint-mobile: 768px; /* < 768 = mobile */
14
+ --breakpoint-tablet: 1024px; /* 768-1023 = tablet */
15
+ --breakpoint-laptop: 1440px; /* 1024-1439 = laptop (key layout split) */
16
+ --breakpoint-desktop: 1920px; /* 1440+ = desktop */
16
17
 
17
18
  /* ===========================
18
19
  INTERACTIVE ELEMENTS
@@ -277,28 +278,48 @@
277
278
  /* Compact (Admin/Data) - Dense, information-dense layouts - Minor Third (1.2×) */
278
279
 
279
280
  [data-density='compact'] {
280
- --font-size-base: 0.875rem; /* 14px */
281
- --font-size-lg: 1.05rem; /* base × 1.2¹ */
282
- --font-size-xl: 1.26rem; /* base × 1. */
283
- --font-size-2xl: 1.512rem; /* base × 1. */
284
- --font-size-3xl: 1.814rem; /* base × 1.2⁴ */
285
- --gap-sm: 0.375rem; /* 6px - tighter than standard */
286
- --gap-md: 0.75rem; /* 12px */
287
- --gap-lg: 1.5rem; /* 24px */
281
+ /* Base sizes: Fluid responsiveness for all text, zoom-safe */
282
+ --font-size-base: clamp(0.875rem, 0.8125rem + 0.25vw, 0.9375rem); /* 14-15px fluid */
283
+ --font-size-lg: clamp(1.05rem, 0.9375rem + 0.5vw, 1.125rem); /* 17-18px fluid */
284
+ --font-size-xl: clamp(1.26rem, 1.125rem + 0.75vw, 1.375rem); /* 20-22px fluid */
285
+ /* Display sizes: Musical scale + fluid responsiveness */
286
+ --font-size-2xl: clamp(
287
+ 1.512rem,
288
+ 1.375rem + 0.75vw,
289
+ 1.625rem
290
+ ); /* 24-26px fluid */
291
+ --font-size-3xl: clamp(
292
+ 1.814rem,
293
+ 1.625rem + 1vw,
294
+ 2rem
295
+ ); /* 29-32px fluid */
296
+ --gap-sm: clamp(0.375rem, 0.3125rem + 0.25vw, 0.5rem); /* 6-8px fluid */
297
+ --gap-md: clamp(0.75rem, 0.625rem + 0.5vw, 0.875rem); /* 12-14px fluid, zoom-safe */
298
+ --gap-lg: clamp(1.5rem, 1.25rem + 1vw, 1.75rem); /* 24-28px fluid, zoom-safe */
288
299
  --line-height: 1.2; /* Minor Third - All text */
289
300
  }
290
301
 
291
302
  /* Standard (Docs/SaaS) - DEFAULT, balanced for readability */
292
303
 
293
304
  [data-density='standard'] {
294
- --font-size-base: 1rem; /* 16px */
295
- --font-size-lg: 1.25rem; /* 20px - base × 1.25¹ */
296
- --font-size-xl: 1.563rem; /* 25px - base × 1.25² */
297
- --font-size-2xl: 1.953rem; /* 31px - base × 1.25³ */
298
- --font-size-3xl: 2.441rem; /* 39px - base × 1.25⁴ - hero text */
299
- --gap-sm: 0.5rem; /* 8px - explicit default */
300
- --gap-md: 1rem; /* 16px */
301
- --gap-lg: 2rem; /* 32px */
305
+ /* Base sizes: Fluid responsiveness for all text, zoom-safe */
306
+ --font-size-base: clamp(1rem, 0.9375rem + 0.25vw, 1.0625rem); /* 16-17px fluid */
307
+ --font-size-lg: clamp(1.25rem, 1.125rem + 0.5vw, 1.375rem); /* 20-22px fluid */
308
+ --font-size-xl: clamp(1.563rem, 1.375rem + 0.75vw, 1.75rem); /* 25-28px fluid */
309
+ /* Display sizes: Musical scale + fluid responsiveness */
310
+ --font-size-2xl: clamp(
311
+ 1.953rem,
312
+ 1.75rem + 1vw,
313
+ 2.25rem
314
+ ); /* 31-36px fluid */
315
+ --font-size-3xl: clamp(
316
+ 2.441rem,
317
+ 2rem + 1.5vw,
318
+ 3rem
319
+ ); /* 39-48px fluid - hero text */
320
+ --gap-sm: clamp(0.5rem, 0.4375rem + 0.25vw, 0.625rem); /* 8-10px fluid */
321
+ --gap-md: clamp(1rem, 0.875rem + 0.5vw, 1.25rem); /* 16-20px fluid, zoom-safe */
322
+ --gap-lg: clamp(2rem, 1.75rem + 1vw, 2.5rem); /* 32-40px fluid, zoom-safe */
302
323
  --line-height: 1.25; /* Major Third - All text */
303
324
  }
304
325
 
@@ -530,49 +551,16 @@ a:focus-visible {
530
551
  border-radius: var(--radius-interactive);
531
552
  }
532
553
 
533
- /* ===========================
534
- BASE LIST STYLING
535
- Use text-base styles for lists
536
- =========================== */
537
-
538
- /* Content lists only - not navigation menus */
539
-
540
- main ul,
541
- main ol,
542
- article ul,
543
- article ol {
544
- font-weight: 500;
545
- line-height: var(--line-height);
546
- color: var(--foreground);
547
- background: transparent !important;
548
- list-style-position: outside;
549
- padding-inline-start: var(--gap-lg);
550
- margin-block: var(--gap-md);
551
- }
552
-
553
- main ul,
554
- article ul {
555
- list-style-type: disc;
556
- }
557
-
558
- main ol,
559
- article ol {
560
- list-style-type: decimal;
561
- }
554
+ /* Main element - no focus outline (programmatic focus for keyboard nav) */
562
555
 
563
- main li,
564
- article li {
565
- font-weight: 500;
566
- line-height: var(--line-height);
567
- color: var(--foreground);
568
- background: transparent !important;
569
- margin-block: var(--gap-sm);
570
- padding-inline-start: var(--gap-sm);
556
+ main:focus-visible {
557
+ outline: none;
571
558
  }
572
559
 
573
560
  /* ===========================
574
- BASE TYPOGRAPHY STYLING
575
- Use text-base styles for headings and paragraphs
561
+ BASE TYPOGRAPHY - RESET ONLY
562
+ Zero margins, components own their spacing
563
+ Use .prose wrapper for content pages (docs, markdown)
576
564
  =========================== */
577
565
 
578
566
  h1,
@@ -581,49 +569,71 @@ h3,
581
569
  h4,
582
570
  h5,
583
571
  h6 {
584
- font-weight: 500;
572
+ font-weight: var(--font-weight-medium);
585
573
  line-height: var(--line-height);
586
574
  color: var(--foreground);
587
575
  background: transparent;
588
- margin-block: var(--gap-md);
589
576
  }
590
577
 
591
578
  h1 {
592
579
  font-family: var(--font-headline);
593
580
  font-size: var(--font-size-3xl);
594
- font-weight: 700;
581
+ font-weight: var(--font-weight-bold);
595
582
  letter-spacing: -0.02em;
596
583
  }
597
584
 
598
585
  h2 {
599
586
  font-family: var(--font-headline);
600
587
  font-size: var(--font-size-2xl);
601
- font-weight: 700;
588
+ font-weight: var(--font-weight-bold);
602
589
  letter-spacing: -0.01em;
603
590
  }
604
591
 
605
592
  h3 {
606
593
  font-size: var(--font-size-xl);
607
- font-weight: 600;
594
+ font-weight: var(--font-weight-semibold);
608
595
  }
609
596
 
610
597
  h4 {
611
598
  font-size: var(--font-size-lg);
612
- font-weight: 600;
599
+ font-weight: var(--font-weight-semibold);
613
600
  }
614
601
 
615
602
  h5,
616
603
  h6 {
617
604
  font-size: var(--font-size-base);
618
- font-weight: 600;
605
+ font-weight: var(--font-weight-semibold);
619
606
  }
620
607
 
621
608
  p {
622
- font-weight: 500;
609
+ font-weight: var(--font-weight-medium);
610
+ line-height: var(--line-height);
611
+ color: var(--foreground);
612
+ background: transparent;
613
+ }
614
+
615
+ ul,
616
+ ol {
617
+ font-weight: var(--font-weight-medium);
618
+ line-height: var(--line-height);
619
+ color: var(--foreground);
620
+ background: transparent;
621
+ list-style-position: outside;
622
+ }
623
+
624
+ ul {
625
+ list-style-type: disc;
626
+ }
627
+
628
+ ol {
629
+ list-style-type: decimal;
630
+ }
631
+
632
+ li {
633
+ font-weight: var(--font-weight-medium);
623
634
  line-height: var(--line-height);
624
635
  color: var(--foreground);
625
636
  background: transparent;
626
- margin-block: var(--gap-md);
627
637
  }
628
638
 
629
639
  /* Semantic HTML - strong and em */
@@ -2357,14 +2367,15 @@ em {
2357
2367
  margin-top: var(--gap-md);
2358
2368
  }
2359
2369
 
2360
- /* Tech card */
2370
+ /* Tech card - override Card's grid layout for centered content */
2361
2371
 
2362
2372
  .dndev-tech-card {
2363
2373
  height: 100%;
2364
2374
  min-height: 120px;
2365
- display: flex;
2375
+ display: flex !important; /* Override Card's grid layout */
2366
2376
  align-items: center;
2367
2377
  justify-content: center;
2378
+ align-content: center; /* Override Card's align-content: start */
2368
2379
  transition:
2369
2380
  border-color 0.2s ease,
2370
2381
  box-shadow 0.2s ease;
@@ -2474,7 +2485,8 @@ em {
2474
2485
  border-inline-end: none;
2475
2486
  border-block-start: none;
2476
2487
  border-block-end: none;
2477
- border-radius: var(--radius-interactive) var(--radius-surface) var(--radius-surface) var(--radius-interactive);
2488
+ border-radius: var(--radius-interactive) var(--radius-surface)
2489
+ var(--radius-surface) var(--radius-interactive);
2478
2490
  overflow: hidden;
2479
2491
  }
2480
2492
 
@@ -2876,13 +2888,41 @@ em {
2876
2888
  /* packages/components/src/atomic/CallToAction/CallToAction.css */
2877
2889
 
2878
2890
  .dndev-cta {
2879
- /* Full width gradient */
2880
- background: linear-gradient(to right, var(--secondary), var(--background));
2881
2891
  color: var(--foreground);
2882
2892
  /* Padding for background - vertical only, horizontal handled by content */
2883
2893
  padding-block: var(--gap-lg);
2884
2894
  }
2885
2895
 
2896
+ /* Tone variants - leverage existing data-tone system */
2897
+
2898
+ /* Ghost (default) - no background */
2899
+
2900
+ .dndev-cta[data-tone='ghost'],
2901
+ .dndev-cta:not([data-tone]) {
2902
+ background: transparent;
2903
+ }
2904
+
2905
+ .dndev-cta[data-tone='base'] {
2906
+ background: linear-gradient(to right, var(--secondary), var(--background));
2907
+ }
2908
+
2909
+ .dndev-cta[data-tone='muted'] {
2910
+ background: linear-gradient(to right, var(--muted), var(--background));
2911
+ }
2912
+
2913
+ .dndev-cta[data-tone='accent'] {
2914
+ background: linear-gradient(to right, var(--accent), var(--muted));
2915
+ }
2916
+
2917
+ .dndev-cta[data-tone='contrast'] {
2918
+ background: linear-gradient(to right, var(--foreground), var(--background));
2919
+ color: var(--background);
2920
+ }
2921
+
2922
+ .dndev-cta[data-tone='elevated'] {
2923
+ background: linear-gradient(to right, var(--secondary), var(--background));
2924
+ }
2925
+
2886
2926
  .dndev-cta-content {
2887
2927
  display: flex;
2888
2928
  flex-direction: column;
@@ -2963,19 +3003,35 @@ em {
2963
3003
  .dndev-card {
2964
3004
  display: grid;
2965
3005
  gap: var(--gap-md);
3006
+ text-align: start;
3007
+ align-content: start;
3008
+ }
3009
+
3010
+ .dndev-card-header {
3011
+ display: flex;
3012
+ flex-direction: column;
3013
+ }
3014
+
3015
+ .dndev-card-header > .dndev-stack {
3016
+ min-width: 0;
3017
+ }
3018
+
3019
+ .dndev-card-header > .dndev-stack > .dndev-card-title {
3020
+ flex: 1;
3021
+ min-width: 0;
2966
3022
  }
2967
3023
 
2968
3024
  .dndev-card-title {
2969
- font-size: var(--font-size-xl);
2970
- font-weight: 600;
2971
- color: inherit; /* Inherit from surface variant */
2972
3025
  margin: 0;
3026
+ min-width: 0;
3027
+ word-wrap: break-word;
2973
3028
  }
2974
3029
 
2975
3030
  .dndev-card-subtitle {
2976
- font-size: var(--font-size-base);
2977
- font-weight: 600;
2978
- color: inherit; /* Inherit from surface variant */
3031
+ margin-top: 0;
3032
+ margin-bottom: 0;
3033
+ min-width: 0;
3034
+ word-wrap: break-word;
2979
3035
  }
2980
3036
 
2981
3037
  /* packages/components/src/atomic/Checkbox/Checkbox.css */
@@ -3688,9 +3744,35 @@ em {
3688
3744
  display: grid;
3689
3745
  min-width: 0;
3690
3746
  width: 100%;
3747
+ /* Default: use mobile columns */
3748
+ grid-template-columns: repeat(var(--grid-cols-mobile, 1), 1fr);
3691
3749
  }
3692
3750
 
3693
- /* Grid template columns are set via inline styles for maximum flexibility */
3751
+ /* Responsive columns via media queries */
3752
+
3753
+ /* Tablet: 768px+ */
3754
+
3755
+ @media (min-width: 768px) {
3756
+ .dndev-grid-component {
3757
+ grid-template-columns: repeat(var(--grid-cols-tablet, 1), 1fr);
3758
+ }
3759
+ }
3760
+
3761
+ /* Laptop: 1024px+ (key layout split) */
3762
+
3763
+ @media (min-width: 1024px) {
3764
+ .dndev-grid-component {
3765
+ grid-template-columns: repeat(var(--grid-cols-laptop, 1), 1fr);
3766
+ }
3767
+ }
3768
+
3769
+ /* Desktop: 1440px+ */
3770
+
3771
+ @media (min-width: 1440px) {
3772
+ .dndev-grid-component {
3773
+ grid-template-columns: repeat(var(--grid-cols-desktop, 1), 1fr);
3774
+ }
3775
+ }
3694
3776
 
3695
3777
  /* Spacing from CSS variables */
3696
3778
 
@@ -3835,21 +3917,7 @@ em {
3835
3917
  }
3836
3918
 
3837
3919
  .dndev-hero-subtitle {
3838
- font-size: var(--font-size-xl);
3839
- }
3840
-
3841
- /* Responsive Content Visibility */
3842
-
3843
- @media (width < 1024px) {
3844
- .dndev-hero-section .dndev-desktop-only {
3845
- display: none !important;
3846
- }
3847
- }
3848
-
3849
- @media (width >= 1024px) {
3850
- .dndev-hero-section .dndev-mobile-only {
3851
- display: none !important;
3852
- }
3920
+ font-size: var(--font-size-lg); /* 20px - muted via component */
3853
3921
  }
3854
3922
 
3855
3923
  /* packages/components/src/atomic/HoverCard/HoverCard.css */
@@ -4162,10 +4230,11 @@ em {
4162
4230
  .dndev-list {
4163
4231
  display: flex;
4164
4232
  flex-direction: column;
4165
- gap: var(--gap-none);
4233
+ gap: var(--gap-sm);
4166
4234
  padding-inline-start: 0; /* Controllable via parent/style prop */
4235
+ margin: 0;
4167
4236
  list-style-position: outside;
4168
- /* text-align: inherit from parent (removed hardcoded start) */
4237
+ text-align: start; /* Always start-aligned, even when parent is centered */
4169
4238
  }
4170
4239
 
4171
4240
  .dndev-list[data-gap='none'] {
@@ -4220,29 +4289,18 @@ em {
4220
4289
  font-size: var(--font-size-base);
4221
4290
  }
4222
4291
 
4223
- /* Default: native list items (no flex) - preserves markers */
4292
+ /* Always use flex layout for consistent alignment */
4224
4293
 
4225
4294
  .dndev-list .dndev-list-item {
4226
4295
  font-size: var(--font-size-sm);
4227
- /* No display: flex by default - allows native markers */
4228
-
4229
- /* Modern ::marker styling (2026 best practice) */
4296
+ display: flex;
4297
+ align-items: flex-start;
4298
+ gap: var(--gap-sm);
4299
+ list-style: none; /* Remove native marker */
4300
+ margin-block: 0;
4301
+ padding-inline-start: 0;
4230
4302
  }
4231
4303
 
4232
- :is(.dndev-list .dndev-list-item)::marker {
4233
- color: currentColor;
4234
- }
4235
-
4236
- /* Only use flex when icon is present */
4237
-
4238
- :is(.dndev-list .dndev-list-item):has(.dndev-list-item-icon) {
4239
- display: flex;
4240
- align-items: center; /* Center vertically */
4241
- gap: var(--gap-sm);
4242
- list-style: none; /* Remove native marker when using icon */
4243
- padding-inline-start: 0; /* Reset padding when flex */
4244
- }
4245
-
4246
4304
  :is(.dndev-list .dndev-list-item) .dndev-list-item-icon {
4247
4305
  display: flex;
4248
4306
  align-items: center;
@@ -4597,23 +4655,43 @@ em {
4597
4655
  margin-inline: auto; /* Self-center in parent */
4598
4656
  }
4599
4657
 
4600
- .dndev-radio-group[data-cols='2'] { grid-template-columns: repeat(2, auto); }
4658
+ .dndev-radio-group[data-cols='2'] {
4659
+ grid-template-columns: repeat(2, auto);
4660
+ }
4601
4661
 
4602
- .dndev-radio-group[data-cols='3'] { grid-template-columns: repeat(3, auto); }
4662
+ .dndev-radio-group[data-cols='3'] {
4663
+ grid-template-columns: repeat(3, auto);
4664
+ }
4603
4665
 
4604
- .dndev-radio-group[data-cols='4'] { grid-template-columns: repeat(4, auto); }
4666
+ .dndev-radio-group[data-cols='4'] {
4667
+ grid-template-columns: repeat(4, auto);
4668
+ }
4605
4669
 
4606
- .dndev-radio-group[data-cols='5'] { grid-template-columns: repeat(5, auto); }
4670
+ .dndev-radio-group[data-cols='5'] {
4671
+ grid-template-columns: repeat(5, auto);
4672
+ }
4607
4673
 
4608
- .dndev-radio-group[data-cols='6'] { grid-template-columns: repeat(6, auto); }
4674
+ .dndev-radio-group[data-cols='6'] {
4675
+ grid-template-columns: repeat(6, auto);
4676
+ }
4609
4677
 
4610
- .dndev-radio-group[data-cols='10'] { grid-template-columns: repeat(10, auto); }
4678
+ .dndev-radio-group[data-cols='10'] {
4679
+ grid-template-columns: repeat(10, auto);
4680
+ }
4611
4681
 
4612
- .dndev-radio-group[data-cols='12'] { grid-template-columns: repeat(12, auto); }
4682
+ .dndev-radio-group[data-cols='12'] {
4683
+ grid-template-columns: repeat(12, auto);
4684
+ }
4613
4685
 
4614
- .dndev-radio-group[data-cols='auto-fit'] { grid-template-columns: repeat(auto-fit, minmax(8rem, 1fr)); width: 100%; }
4686
+ .dndev-radio-group[data-cols='auto-fit'] {
4687
+ grid-template-columns: repeat(auto-fit, minmax(8rem, 1fr));
4688
+ width: 100%;
4689
+ }
4615
4690
 
4616
- .dndev-radio-group[data-cols='auto-fill'] { grid-template-columns: repeat(auto-fill, minmax(8rem, 1fr)); width: 100%; }
4691
+ .dndev-radio-group[data-cols='auto-fill'] {
4692
+ grid-template-columns: repeat(auto-fill, minmax(8rem, 1fr));
4693
+ width: 100%;
4694
+ }
4617
4695
 
4618
4696
  /* Variant colors for checked labels - override base pattern */
4619
4697
 
@@ -4883,23 +4961,13 @@ em {
4883
4961
  }
4884
4962
  }
4885
4963
 
4886
- /* Section title: LG, uppercase, accent pop color, tracking */
4964
+ /* Section title: uppercase, accent color, letter spacing */
4887
4965
 
4888
4966
  .dndev-section-title {
4889
- display: block;
4890
- font-size: var(--font-size-lg);
4891
- font-weight: var(--font-weight-semibold);
4892
4967
  text-transform: uppercase;
4893
4968
  letter-spacing: 0.2em;
4894
- color: var(--accent);
4895
- margin-bottom: var(--gap-lg);
4896
- }
4897
-
4898
- /* Grid container with default gap */
4899
-
4900
- .dndev-section-grid {
4901
- display: grid;
4902
- gap: var(--gap-md);
4969
+ color: var(--accent) !important;
4970
+ margin-block-end: var(--gap-md);
4903
4971
  }
4904
4972
 
4905
4973
  .dndev-section-full-width[data-text-align='start'] .dndev-section-content {
@@ -6080,7 +6148,7 @@ em {
6080
6148
  }
6081
6149
 
6082
6150
  .dndev-text-base {
6083
- font-weight: 500;
6151
+ font-weight: var(--font-weight-medium);
6084
6152
  line-height: var(--line-height);
6085
6153
  background-color: transparent; /* Text never has background, only color changes */
6086
6154
  }
@@ -6117,28 +6185,36 @@ em {
6117
6185
  color: var(--destructive);
6118
6186
  }
6119
6187
 
6188
+ .dndev-text-base[data-variant='code'] {
6189
+ font-family: var(--font-mono);
6190
+ font-size: 0.9em;
6191
+ background: var(--muted);
6192
+ padding: 0.1em 0.4em;
6193
+ border-radius: var(--radius-interactive);
6194
+ }
6195
+
6120
6196
  /* Level overrides */
6121
6197
 
6122
6198
  .dndev-text-base[data-level='h1'] {
6123
6199
  font-size: var(--font-size-3xl);
6124
- font-weight: 700;
6200
+ font-weight: var(--font-weight-bold);
6125
6201
  letter-spacing: -0.02em;
6126
6202
  }
6127
6203
 
6128
6204
  .dndev-text-base[data-level='h2'] {
6129
- font-size: var(--font-size-2xl);
6130
- font-weight: 700;
6131
- letter-spacing: -0.01em;
6205
+ font-size: var(--font-size-lg);
6206
+ font-weight: var(--font-weight-semibold);
6132
6207
  }
6133
6208
 
6134
6209
  .dndev-text-base[data-level='h3'] {
6135
- font-size: var(--font-size-xl);
6136
- font-weight: 600;
6210
+ font-size: var(--font-size-lg);
6211
+ font-weight: var(--font-weight-semibold);
6137
6212
  }
6138
6213
 
6139
6214
  .dndev-text-base[data-level='h4'] {
6140
- font-size: var(--font-size-lg);
6141
- font-weight: 600;
6215
+ font-size: var(--font-size-base);
6216
+ font-weight: var(--font-weight-medium);
6217
+ color: var(--muted-foreground);
6142
6218
  }
6143
6219
 
6144
6220
  .dndev-text-base[data-level='body'] {
@@ -7422,6 +7498,40 @@ h4[data-variant='code'] {
7422
7498
  border: 0;
7423
7499
  }
7424
7500
 
7501
+ /* ===========================
7502
+ PROSE - SEMANTIC TYPOGRAPHY FOR CONTENT PAGES
7503
+ Wrap docs/markdown/article content in .prose for semantic margins
7504
+ Components are unaffected - they own their own spacing
7505
+ =========================== */
7506
+
7507
+ .prose h1,.prose h2,.prose h3,.prose h4,.prose h5,.prose h6 {
7508
+ margin-block: var(--gap-md);
7509
+ }
7510
+
7511
+ .prose p {
7512
+ margin-block: var(--gap-md);
7513
+ }
7514
+
7515
+ .prose ul,.prose ol {
7516
+ padding-inline-start: var(--gap-lg);
7517
+ margin-block: var(--gap-md);
7518
+ }
7519
+
7520
+ .prose li {
7521
+ margin-block: var(--gap-sm);
7522
+ padding-inline-start: var(--gap-sm);
7523
+ }
7524
+
7525
+ /* First/last child: remove top/bottom margin for clean container edges */
7526
+
7527
+ .prose > :first-child {
7528
+ margin-block-start: 0;
7529
+ }
7530
+
7531
+ .prose > :last-child {
7532
+ margin-block-end: 0;
7533
+ }
7534
+
7425
7535
  /* ===========================
7426
7536
  SHADOW CONTROL (Universal)
7427
7537
  Works with any element
package/dist/types.d.ts CHANGED
@@ -34,8 +34,8 @@ export type ComponentData = {
34
34
  subtitle?: string;
35
35
  /** Optional description paragraph */
36
36
  description?: string;
37
- /** Optional content items (bullet points, features, etc.) - can be single string or array of strings */
38
- content?: string | string[];
37
+ /** Optional content items - string, string[], or ReactNode for full control */
38
+ content?: string | string[] | ReactNode;
39
39
  /** Optional unique identifier */
40
40
  id?: string;
41
41
  /** Optional URL for linking */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEtD;;;;;;GAMG;AACH,MAAM,MAAM,QAAQ,GAAG,aAAa,CAAC,WAAW,CAAC,GAAG,MAAM,GAAG,SAAS,CAAC;AAEvE;;;;;;;GAOG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,uDAAuD;IACvD,IAAI,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC5B,yBAAyB;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qCAAqC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wGAAwG;IACxG,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC5B,iCAAiC;IACjC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,+BAA+B;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6BAA6B;IAC7B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,wCAAwC;IACxC,GAAG,CAAC,EAAE;QACJ,kBAAkB;QAClB,IAAI,EAAE,MAAM,CAAC;QACb,2BAA2B;QAC3B,OAAO,CAAC,EAAE,aAAa,CAAC;QACxB,mCAAmC;QACnC,IAAI,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;KAC7B,CAAC;CACH,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEtD;;;;;;GAMG;AACH,MAAM,MAAM,QAAQ,GAAG,aAAa,CAAC,WAAW,CAAC,GAAG,MAAM,GAAG,SAAS,CAAC;AAEvE;;;;;;;GAOG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B,uDAAuD;IACvD,IAAI,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC5B,yBAAyB;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qCAAqC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+EAA+E;IAC/E,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC;IACxC,iCAAiC;IACjC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,+BAA+B;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6BAA6B;IAC7B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,wCAAwC;IACxC,GAAG,CAAC,EAAE;QACJ,kBAAkB;QAClB,IAAI,EAAE,MAAM,CAAC;QACb,2BAA2B;QAC3B,OAAO,CAAC,EAAE,aAAa,CAAC;QACxB,mCAAmC;QACnC,IAAI,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;KAC7B,CAAC;CACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@donotdev/components",
3
- "version": "0.0.3",
3
+ "version": "0.0.5",
4
4
  "type": "module",
5
5
  "private": false,
6
6
  "description": "Styled UI components for DoNotDev",