@donotdev/components 0.0.3 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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,40 @@ em {
2876
2888
  /* packages/components/src/atomic/CallToAction/CallToAction.css */
2877
2889
 
2878
2890
  .dndev-cta {
2879
- /* Full width gradient */
2891
+ /* Default gradient */
2880
2892
  background: linear-gradient(to right, var(--secondary), var(--background));
2881
2893
  color: var(--foreground);
2882
2894
  /* Padding for background - vertical only, horizontal handled by content */
2883
2895
  padding-block: var(--gap-lg);
2884
2896
  }
2885
2897
 
2898
+ /* Tone variants - leverage existing data-tone system */
2899
+
2900
+ .dndev-cta[data-tone='base'] {
2901
+ background: linear-gradient(to right, var(--secondary), var(--background));
2902
+ }
2903
+
2904
+ .dndev-cta[data-tone='muted'] {
2905
+ background: linear-gradient(to right, var(--muted), var(--background));
2906
+ }
2907
+
2908
+ .dndev-cta[data-tone='accent'] {
2909
+ background: linear-gradient(
2910
+ to right,
2911
+ color-mix(in oklab, var(--accent) 10%, transparent),
2912
+ var(--background)
2913
+ );
2914
+ }
2915
+
2916
+ .dndev-cta[data-tone='contrast'] {
2917
+ background: linear-gradient(to right, var(--foreground), var(--background));
2918
+ color: var(--background);
2919
+ }
2920
+
2921
+ .dndev-cta[data-tone='elevated'] {
2922
+ background: linear-gradient(to right, var(--secondary), var(--background));
2923
+ }
2924
+
2886
2925
  .dndev-cta-content {
2887
2926
  display: flex;
2888
2927
  flex-direction: column;
@@ -2963,19 +3002,35 @@ em {
2963
3002
  .dndev-card {
2964
3003
  display: grid;
2965
3004
  gap: var(--gap-md);
3005
+ text-align: start;
3006
+ align-content: start;
3007
+ }
3008
+
3009
+ .dndev-card-header {
3010
+ display: flex;
3011
+ flex-direction: column;
3012
+ }
3013
+
3014
+ .dndev-card-header > .dndev-stack {
3015
+ min-width: 0;
3016
+ }
3017
+
3018
+ .dndev-card-header > .dndev-stack > .dndev-card-title {
3019
+ flex: 1;
3020
+ min-width: 0;
2966
3021
  }
2967
3022
 
2968
3023
  .dndev-card-title {
2969
- font-size: var(--font-size-xl);
2970
- font-weight: 600;
2971
- color: inherit; /* Inherit from surface variant */
2972
3024
  margin: 0;
3025
+ min-width: 0;
3026
+ word-wrap: break-word;
2973
3027
  }
2974
3028
 
2975
3029
  .dndev-card-subtitle {
2976
- font-size: var(--font-size-base);
2977
- font-weight: 600;
2978
- color: inherit; /* Inherit from surface variant */
3030
+ margin-top: 0;
3031
+ margin-bottom: 0;
3032
+ min-width: 0;
3033
+ word-wrap: break-word;
2979
3034
  }
2980
3035
 
2981
3036
  /* packages/components/src/atomic/Checkbox/Checkbox.css */
@@ -3688,9 +3743,35 @@ em {
3688
3743
  display: grid;
3689
3744
  min-width: 0;
3690
3745
  width: 100%;
3746
+ /* Default: use mobile columns */
3747
+ grid-template-columns: repeat(var(--grid-cols-mobile, 1), 1fr);
3748
+ }
3749
+
3750
+ /* Responsive columns via media queries */
3751
+
3752
+ /* Tablet: 768px+ */
3753
+
3754
+ @media (min-width: 768px) {
3755
+ .dndev-grid-component {
3756
+ grid-template-columns: repeat(var(--grid-cols-tablet, 1), 1fr);
3757
+ }
3758
+ }
3759
+
3760
+ /* Laptop: 1024px+ (key layout split) */
3761
+
3762
+ @media (min-width: 1024px) {
3763
+ .dndev-grid-component {
3764
+ grid-template-columns: repeat(var(--grid-cols-laptop, 1), 1fr);
3765
+ }
3691
3766
  }
3692
3767
 
3693
- /* Grid template columns are set via inline styles for maximum flexibility */
3768
+ /* Desktop: 1440px+ */
3769
+
3770
+ @media (min-width: 1440px) {
3771
+ .dndev-grid-component {
3772
+ grid-template-columns: repeat(var(--grid-cols-desktop, 1), 1fr);
3773
+ }
3774
+ }
3694
3775
 
3695
3776
  /* Spacing from CSS variables */
3696
3777
 
@@ -3835,21 +3916,7 @@ em {
3835
3916
  }
3836
3917
 
3837
3918
  .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
- }
3919
+ font-size: var(--font-size-lg); /* 20px - muted via component */
3853
3920
  }
3854
3921
 
3855
3922
  /* packages/components/src/atomic/HoverCard/HoverCard.css */
@@ -4162,16 +4229,13 @@ em {
4162
4229
  .dndev-list {
4163
4230
  display: flex;
4164
4231
  flex-direction: column;
4165
- gap: var(--gap-none);
4232
+ gap: var(--gap-sm);
4166
4233
  padding-inline-start: 0; /* Controllable via parent/style prop */
4234
+ margin: 0;
4167
4235
  list-style-position: outside;
4168
- /* text-align: inherit from parent (removed hardcoded start) */
4236
+ text-align: start; /* Always start-aligned, even when parent is centered */
4169
4237
  }
4170
4238
 
4171
- .dndev-list[data-gap='none'] {
4172
- gap: var(--gap-none);
4173
- }
4174
-
4175
4239
  .dndev-list[data-gap='tight'] {
4176
4240
  gap: var(--gap-sm);
4177
4241
  }
@@ -4220,29 +4284,18 @@ em {
4220
4284
  font-size: var(--font-size-base);
4221
4285
  }
4222
4286
 
4223
- /* Default: native list items (no flex) - preserves markers */
4287
+ /* Always use flex layout for consistent alignment */
4224
4288
 
4225
4289
  .dndev-list .dndev-list-item {
4226
4290
  font-size: var(--font-size-sm);
4227
- /* No display: flex by default - allows native markers */
4228
-
4229
- /* Modern ::marker styling (2026 best practice) */
4291
+ display: flex;
4292
+ align-items: flex-start;
4293
+ gap: var(--gap-sm);
4294
+ list-style: none; /* Remove native marker */
4295
+ margin-block: 0;
4296
+ padding-inline-start: 0;
4230
4297
  }
4231
4298
 
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
4299
  :is(.dndev-list .dndev-list-item) .dndev-list-item-icon {
4247
4300
  display: flex;
4248
4301
  align-items: center;
@@ -4597,23 +4650,43 @@ em {
4597
4650
  margin-inline: auto; /* Self-center in parent */
4598
4651
  }
4599
4652
 
4600
- .dndev-radio-group[data-cols='2'] { grid-template-columns: repeat(2, auto); }
4653
+ .dndev-radio-group[data-cols='2'] {
4654
+ grid-template-columns: repeat(2, auto);
4655
+ }
4601
4656
 
4602
- .dndev-radio-group[data-cols='3'] { grid-template-columns: repeat(3, auto); }
4657
+ .dndev-radio-group[data-cols='3'] {
4658
+ grid-template-columns: repeat(3, auto);
4659
+ }
4603
4660
 
4604
- .dndev-radio-group[data-cols='4'] { grid-template-columns: repeat(4, auto); }
4661
+ .dndev-radio-group[data-cols='4'] {
4662
+ grid-template-columns: repeat(4, auto);
4663
+ }
4605
4664
 
4606
- .dndev-radio-group[data-cols='5'] { grid-template-columns: repeat(5, auto); }
4665
+ .dndev-radio-group[data-cols='5'] {
4666
+ grid-template-columns: repeat(5, auto);
4667
+ }
4607
4668
 
4608
- .dndev-radio-group[data-cols='6'] { grid-template-columns: repeat(6, auto); }
4669
+ .dndev-radio-group[data-cols='6'] {
4670
+ grid-template-columns: repeat(6, auto);
4671
+ }
4609
4672
 
4610
- .dndev-radio-group[data-cols='10'] { grid-template-columns: repeat(10, auto); }
4673
+ .dndev-radio-group[data-cols='10'] {
4674
+ grid-template-columns: repeat(10, auto);
4675
+ }
4611
4676
 
4612
- .dndev-radio-group[data-cols='12'] { grid-template-columns: repeat(12, auto); }
4677
+ .dndev-radio-group[data-cols='12'] {
4678
+ grid-template-columns: repeat(12, auto);
4679
+ }
4613
4680
 
4614
- .dndev-radio-group[data-cols='auto-fit'] { grid-template-columns: repeat(auto-fit, minmax(8rem, 1fr)); width: 100%; }
4681
+ .dndev-radio-group[data-cols='auto-fit'] {
4682
+ grid-template-columns: repeat(auto-fit, minmax(8rem, 1fr));
4683
+ width: 100%;
4684
+ }
4615
4685
 
4616
- .dndev-radio-group[data-cols='auto-fill'] { grid-template-columns: repeat(auto-fill, minmax(8rem, 1fr)); width: 100%; }
4686
+ .dndev-radio-group[data-cols='auto-fill'] {
4687
+ grid-template-columns: repeat(auto-fill, minmax(8rem, 1fr));
4688
+ width: 100%;
4689
+ }
4617
4690
 
4618
4691
  /* Variant colors for checked labels - override base pattern */
4619
4692
 
@@ -4883,23 +4956,13 @@ em {
4883
4956
  }
4884
4957
  }
4885
4958
 
4886
- /* Section title: LG, uppercase, accent pop color, tracking */
4959
+ /* Section title: uppercase, accent color, letter spacing */
4887
4960
 
4888
4961
  .dndev-section-title {
4889
- display: block;
4890
- font-size: var(--font-size-lg);
4891
- font-weight: var(--font-weight-semibold);
4892
4962
  text-transform: uppercase;
4893
4963
  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);
4964
+ color: var(--accent) !important;
4965
+ margin-block-end: var(--gap-md);
4903
4966
  }
4904
4967
 
4905
4968
  .dndev-section-full-width[data-text-align='start'] .dndev-section-content {
@@ -6080,7 +6143,7 @@ em {
6080
6143
  }
6081
6144
 
6082
6145
  .dndev-text-base {
6083
- font-weight: 500;
6146
+ font-weight: var(--font-weight-medium);
6084
6147
  line-height: var(--line-height);
6085
6148
  background-color: transparent; /* Text never has background, only color changes */
6086
6149
  }
@@ -6117,28 +6180,36 @@ em {
6117
6180
  color: var(--destructive);
6118
6181
  }
6119
6182
 
6183
+ .dndev-text-base[data-variant='code'] {
6184
+ font-family: var(--font-mono);
6185
+ font-size: 0.9em;
6186
+ background: var(--muted);
6187
+ padding: 0.1em 0.4em;
6188
+ border-radius: var(--radius-interactive);
6189
+ }
6190
+
6120
6191
  /* Level overrides */
6121
6192
 
6122
6193
  .dndev-text-base[data-level='h1'] {
6123
6194
  font-size: var(--font-size-3xl);
6124
- font-weight: 700;
6195
+ font-weight: var(--font-weight-bold);
6125
6196
  letter-spacing: -0.02em;
6126
6197
  }
6127
6198
 
6128
6199
  .dndev-text-base[data-level='h2'] {
6129
- font-size: var(--font-size-2xl);
6130
- font-weight: 700;
6131
- letter-spacing: -0.01em;
6200
+ font-size: var(--font-size-lg);
6201
+ font-weight: var(--font-weight-semibold);
6132
6202
  }
6133
6203
 
6134
6204
  .dndev-text-base[data-level='h3'] {
6135
- font-size: var(--font-size-xl);
6136
- font-weight: 600;
6205
+ font-size: var(--font-size-lg);
6206
+ font-weight: var(--font-weight-semibold);
6137
6207
  }
6138
6208
 
6139
6209
  .dndev-text-base[data-level='h4'] {
6140
- font-size: var(--font-size-lg);
6141
- font-weight: 600;
6210
+ font-size: var(--font-size-base);
6211
+ font-weight: var(--font-weight-medium);
6212
+ color: var(--muted-foreground);
6142
6213
  }
6143
6214
 
6144
6215
  .dndev-text-base[data-level='body'] {
@@ -7422,6 +7493,40 @@ h4[data-variant='code'] {
7422
7493
  border: 0;
7423
7494
  }
7424
7495
 
7496
+ /* ===========================
7497
+ PROSE - SEMANTIC TYPOGRAPHY FOR CONTENT PAGES
7498
+ Wrap docs/markdown/article content in .prose for semantic margins
7499
+ Components are unaffected - they own their own spacing
7500
+ =========================== */
7501
+
7502
+ .prose h1,.prose h2,.prose h3,.prose h4,.prose h5,.prose h6 {
7503
+ margin-block: var(--gap-md);
7504
+ }
7505
+
7506
+ .prose p {
7507
+ margin-block: var(--gap-md);
7508
+ }
7509
+
7510
+ .prose ul,.prose ol {
7511
+ padding-inline-start: var(--gap-lg);
7512
+ margin-block: var(--gap-md);
7513
+ }
7514
+
7515
+ .prose li {
7516
+ margin-block: var(--gap-sm);
7517
+ padding-inline-start: var(--gap-sm);
7518
+ }
7519
+
7520
+ /* First/last child: remove top/bottom margin for clean container edges */
7521
+
7522
+ .prose > :first-child {
7523
+ margin-block-start: 0;
7524
+ }
7525
+
7526
+ .prose > :last-child {
7527
+ margin-block-end: 0;
7528
+ }
7529
+
7425
7530
  /* ===========================
7426
7531
  SHADOW CONTROL (Universal)
7427
7532
  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.4",
4
4
  "type": "module",
5
5
  "private": false,
6
6
  "description": "Styled UI components for DoNotDev",