@donotdev/components 0.0.11 → 0.0.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (162) hide show
  1. package/dist/advanced/Bento/Bento.d.ts +0 -9
  2. package/dist/advanced/Bento/Bento.d.ts.map +1 -1
  3. package/dist/advanced/Bento/Bento.js +10 -0
  4. package/dist/advanced/Code/Code.d.ts +1 -9
  5. package/dist/advanced/Code/Code.d.ts.map +1 -1
  6. package/dist/atomic/Accordion/index.d.ts.map +1 -1
  7. package/dist/atomic/Accordion/index.js +1 -1
  8. package/dist/atomic/ActionButton/index.d.ts.map +1 -1
  9. package/dist/atomic/AlertDialog/AlertDialogPrimitive.d.ts.map +1 -1
  10. package/dist/atomic/AlertDialog/index.js +2 -2
  11. package/dist/atomic/Avatar/AvatarPrimitive.d.ts +1 -1
  12. package/dist/atomic/Avatar/AvatarPrimitive.d.ts.map +1 -1
  13. package/dist/atomic/Avatar/AvatarPrimitive.js +0 -1
  14. package/dist/atomic/Blockquote/index.d.ts +1 -9
  15. package/dist/atomic/Blockquote/index.d.ts.map +1 -1
  16. package/dist/atomic/Button/index.d.ts +18 -1
  17. package/dist/atomic/Button/index.d.ts.map +1 -1
  18. package/dist/atomic/Button/index.js +19 -6
  19. package/dist/atomic/Calendar/index.d.ts.map +1 -1
  20. package/dist/atomic/Calendar/index.js +4 -3
  21. package/dist/atomic/Checkbox/CheckboxPrimitive.d.ts +1 -1
  22. package/dist/atomic/Checkbox/CheckboxPrimitive.d.ts.map +1 -1
  23. package/dist/atomic/Checkbox/CheckboxPrimitive.js +0 -1
  24. package/dist/atomic/Checkbox/index.d.ts +1 -1
  25. package/dist/atomic/Checkbox/index.d.ts.map +1 -1
  26. package/dist/atomic/Checkbox/index.js +2 -2
  27. package/dist/atomic/Collapsible/CollapsiblePrimitive.d.ts +1 -1
  28. package/dist/atomic/Collapsible/CollapsiblePrimitive.d.ts.map +1 -1
  29. package/dist/atomic/Collapsible/CollapsiblePrimitive.js +0 -1
  30. package/dist/atomic/Collapsible/index.d.ts.map +1 -1
  31. package/dist/atomic/Collapsible/index.js +2 -6
  32. package/dist/atomic/Combobox/index.d.ts +9 -47
  33. package/dist/atomic/Combobox/index.d.ts.map +1 -1
  34. package/dist/atomic/Combobox/index.js +136 -88
  35. package/dist/atomic/CommandDialog/index.d.ts.map +1 -1
  36. package/dist/atomic/CommandDialog/index.js +1 -1
  37. package/dist/atomic/ContextMenu/ContextMenuPrimitive.d.ts +1 -1
  38. package/dist/atomic/ContextMenu/ContextMenuPrimitive.d.ts.map +1 -1
  39. package/dist/atomic/ContextMenu/ContextMenuPrimitive.js +0 -1
  40. package/dist/atomic/ContextMenu/index.d.ts.map +1 -1
  41. package/dist/atomic/Dialog/DialogPrimitive.d.ts.map +1 -1
  42. package/dist/atomic/Dialog/index.d.ts.map +1 -1
  43. package/dist/atomic/Dialog/index.js +2 -2
  44. package/dist/atomic/DropdownMenu/index.d.ts.map +1 -1
  45. package/dist/atomic/DropdownMenu/index.js +18 -4
  46. package/dist/atomic/DualCard/index.d.ts +10 -2
  47. package/dist/atomic/DualCard/index.d.ts.map +1 -1
  48. package/dist/atomic/DualCard/index.js +3 -3
  49. package/dist/atomic/FeatureFallback/index.js +1 -1
  50. package/dist/atomic/HoverCard/HoverCardPrimitive.d.ts +1 -1
  51. package/dist/atomic/HoverCard/HoverCardPrimitive.d.ts.map +1 -1
  52. package/dist/atomic/HoverCard/HoverCardPrimitive.js +0 -1
  53. package/dist/atomic/HoverCard/index.js +1 -1
  54. package/dist/atomic/Input/index.d.ts +1 -1
  55. package/dist/atomic/Input/index.d.ts.map +1 -1
  56. package/dist/atomic/Input/index.js +13 -22
  57. package/dist/atomic/Label/FloatingLabel.d.ts +45 -0
  58. package/dist/atomic/Label/FloatingLabel.d.ts.map +1 -0
  59. package/dist/atomic/Label/FloatingLabel.js +34 -0
  60. package/dist/atomic/Label/index.d.ts +5 -1
  61. package/dist/atomic/Label/index.d.ts.map +1 -1
  62. package/dist/atomic/Label/index.js +8 -2
  63. package/dist/atomic/List/index.d.ts +8 -0
  64. package/dist/atomic/List/index.d.ts.map +1 -1
  65. package/dist/atomic/List/index.js +1 -1
  66. package/dist/atomic/NavigationMenu/NavigationMenuPrimitive.d.ts +1 -1
  67. package/dist/atomic/NavigationMenu/NavigationMenuPrimitive.d.ts.map +1 -1
  68. package/dist/atomic/NavigationMenu/NavigationMenuPrimitive.js +0 -1
  69. package/dist/atomic/NavigationMenu/index.d.ts +1 -1
  70. package/dist/atomic/NavigationMenu/index.d.ts.map +1 -1
  71. package/dist/atomic/NavigationMenu/index.js +10 -1
  72. package/dist/atomic/Pagination/index.d.ts +1 -1
  73. package/dist/atomic/Pagination/index.d.ts.map +1 -1
  74. package/dist/atomic/PasswordInput/index.d.ts +9 -10
  75. package/dist/atomic/PasswordInput/index.d.ts.map +1 -1
  76. package/dist/atomic/PasswordInput/index.js +14 -30
  77. package/dist/atomic/Popover/index.d.ts +0 -8
  78. package/dist/atomic/Popover/index.d.ts.map +1 -1
  79. package/dist/atomic/Popover/index.js +1 -1
  80. package/dist/atomic/PortalButton/index.d.ts +8 -0
  81. package/dist/atomic/PortalButton/index.d.ts.map +1 -1
  82. package/dist/atomic/PortalButton/index.js +1 -1
  83. package/dist/atomic/Progress/ProgressPrimitive.d.ts +1 -1
  84. package/dist/atomic/Progress/ProgressPrimitive.d.ts.map +1 -1
  85. package/dist/atomic/Progress/ProgressPrimitive.js +0 -1
  86. package/dist/atomic/Progress/index.d.ts +8 -0
  87. package/dist/atomic/Progress/index.d.ts.map +1 -1
  88. package/dist/atomic/Progress/index.js +1 -1
  89. package/dist/atomic/RadioGroup/index.d.ts +0 -9
  90. package/dist/atomic/RadioGroup/index.d.ts.map +1 -1
  91. package/dist/atomic/RadioGroup/index.js +2 -2
  92. package/dist/atomic/ScrollArea/ScrollAreaPrimitive.d.ts +1 -1
  93. package/dist/atomic/ScrollArea/ScrollAreaPrimitive.d.ts.map +1 -1
  94. package/dist/atomic/ScrollArea/ScrollAreaPrimitive.js +0 -1
  95. package/dist/atomic/Section/index.d.ts +0 -32
  96. package/dist/atomic/Section/index.d.ts.map +1 -1
  97. package/dist/atomic/Section/index.js +6 -7
  98. package/dist/atomic/Select/SelectPrimitive.d.ts +1 -1
  99. package/dist/atomic/Select/SelectPrimitive.d.ts.map +1 -1
  100. package/dist/atomic/Select/SelectPrimitive.js +0 -1
  101. package/dist/atomic/Select/index.d.ts +3 -1
  102. package/dist/atomic/Select/index.d.ts.map +1 -1
  103. package/dist/atomic/Select/index.js +14 -24
  104. package/dist/atomic/Separator/SeparatorPrimitive.d.ts +1 -1
  105. package/dist/atomic/Separator/SeparatorPrimitive.d.ts.map +1 -1
  106. package/dist/atomic/Separator/SeparatorPrimitive.js +0 -1
  107. package/dist/atomic/Separator/index.d.ts +1 -1
  108. package/dist/atomic/Separator/index.d.ts.map +1 -1
  109. package/dist/atomic/Separator/index.js +0 -1
  110. package/dist/atomic/Sheet/index.d.ts +3 -1
  111. package/dist/atomic/Sheet/index.d.ts.map +1 -1
  112. package/dist/atomic/Sheet/index.js +3 -3
  113. package/dist/atomic/Skeleton/index.d.ts.map +1 -1
  114. package/dist/atomic/Skeleton/index.js +6 -3
  115. package/dist/atomic/Slider/SliderPrimitive.d.ts +1 -1
  116. package/dist/atomic/Slider/SliderPrimitive.d.ts.map +1 -1
  117. package/dist/atomic/Slider/SliderPrimitive.js +0 -1
  118. package/dist/atomic/Slider/index.d.ts +3 -2
  119. package/dist/atomic/Slider/index.d.ts.map +1 -1
  120. package/dist/atomic/Slider/index.js +2 -3
  121. package/dist/atomic/Slot/index.d.ts.map +1 -1
  122. package/dist/atomic/Stepper/index.js +1 -1
  123. package/dist/atomic/Switch/SwitchPrimitive.d.ts +1 -1
  124. package/dist/atomic/Switch/SwitchPrimitive.d.ts.map +1 -1
  125. package/dist/atomic/Switch/SwitchPrimitive.js +0 -1
  126. package/dist/atomic/Switch/index.d.ts +21 -6
  127. package/dist/atomic/Switch/index.d.ts.map +1 -1
  128. package/dist/atomic/Switch/index.js +27 -9
  129. package/dist/atomic/Table/index.d.ts +19 -7
  130. package/dist/atomic/Table/index.d.ts.map +1 -1
  131. package/dist/atomic/Table/index.js +25 -5
  132. package/dist/atomic/Tabs/TabsPrimitive.d.ts +1 -1
  133. package/dist/atomic/Tabs/TabsPrimitive.d.ts.map +1 -1
  134. package/dist/atomic/Tabs/TabsPrimitive.js +0 -1
  135. package/dist/atomic/Tabs/index.js +1 -1
  136. package/dist/atomic/Tag/index.d.ts +8 -0
  137. package/dist/atomic/Tag/index.d.ts.map +1 -1
  138. package/dist/atomic/Tag/index.js +1 -1
  139. package/dist/atomic/Text/index.js +1 -1
  140. package/dist/atomic/Textarea/index.d.ts.map +1 -1
  141. package/dist/atomic/ToggleGroup/ToggleGroupPrimitive.d.ts +1 -1
  142. package/dist/atomic/ToggleGroup/ToggleGroupPrimitive.d.ts.map +1 -1
  143. package/dist/atomic/Tooltip/TooltipPrimitive.d.ts +1 -1
  144. package/dist/atomic/Tooltip/TooltipPrimitive.d.ts.map +1 -1
  145. package/dist/atomic/Tooltip/TooltipPrimitive.js +0 -1
  146. package/dist/atomic/Tooltip/index.d.ts +6 -12
  147. package/dist/atomic/Tooltip/index.d.ts.map +1 -1
  148. package/dist/atomic/Tooltip/index.js +13 -23
  149. package/dist/atomic/VideoPlayer/index.js +1 -1
  150. package/dist/atomic/VisuallyHidden/VisuallyHiddenPrimitive.d.ts.map +1 -1
  151. package/dist/atomic/index.d.ts +2 -3
  152. package/dist/atomic/index.d.ts.map +1 -1
  153. package/dist/atomic/index.js +1 -2
  154. package/dist/hooks/useToast.d.ts +1 -25
  155. package/dist/hooks/useToast.d.ts.map +1 -1
  156. package/dist/index.js +4 -4
  157. package/dist/styles/index.css +627 -68
  158. package/dist/utils/variants.d.ts.map +1 -1
  159. package/package.json +1 -1
  160. package/dist/atomic/Combobox/ComboboxPrimitive.d.ts +0 -18
  161. package/dist/atomic/Combobox/ComboboxPrimitive.d.ts.map +0 -1
  162. package/dist/atomic/Combobox/ComboboxPrimitive.js +0 -14
@@ -145,7 +145,7 @@
145
145
  --font-headline: var(--font-sans);
146
146
 
147
147
  --font-mono:
148
- ui-monospace, 'SF Mono', 'Cascadia Code', 'Roboto Mono', Consolas, Monaco,
148
+ ui-monospace, 'SF Mono', 'Cascadia Code', Consolas, Monaco,
149
149
  'Liberation Mono', monospace;
150
150
 
151
151
  /* Typography Scale - Musical Scale System (STANDARD density defaults - Major Third 1.25×) */
@@ -702,6 +702,16 @@ em {
702
702
 
703
703
  /* packages/components/src/styles/patterns.css */
704
704
 
705
+ /* Menu scroll area pattern - shared by DropdownMenu, Select, Combobox */
706
+
707
+ .dndev-menu-scroll-area {
708
+ max-height: 50dvh;
709
+ }
710
+
711
+ .dndev-menu-scroll-area .dndev-scroll-area-viewport {
712
+ max-height: 50dvh;
713
+ }
714
+
705
715
  /* ===========================
706
716
  FORM COMPONENTS (BASE)
707
717
  =========================== */
@@ -896,6 +906,9 @@ em {
896
906
  border-radius: var(--radius-surface);
897
907
  box-shadow: var(--shadow-md);
898
908
  padding: var(--gap-md); /* 1rem / 16px default */
909
+ padding-block-start: calc(
910
+ var(--gap-md) + var(--gap-sm)
911
+ ); /* Extra top padding for FloatingLabels */
899
912
  position: relative;
900
913
  overflow: hidden;
901
914
  contain: layout style;
@@ -1146,6 +1159,9 @@ em {
1146
1159
  border-radius: var(--radius-floating);
1147
1160
  box-shadow: var(--shadow-md);
1148
1161
  padding: var(--gap-md); /* 1rem / 16px default */
1162
+ padding-block-start: calc(
1163
+ var(--gap-md) + var(--gap-sm)
1164
+ ); /* Extra top padding for FloatingLabels */
1149
1165
  position: relative;
1150
1166
  overflow: hidden;
1151
1167
  contain: layout style;
@@ -2076,8 +2092,9 @@ em {
2076
2092
  display: flex;
2077
2093
  flex-direction: column;
2078
2094
  overflow-y: auto;
2079
- overflow-x: hidden;
2095
+ overflow-x: visible;
2080
2096
  min-height: 0;
2097
+ padding-block-start: var(--gap-sm);
2081
2098
  }
2082
2099
 
2083
2100
  .dndev-modal-title {
@@ -2136,6 +2153,60 @@ em {
2136
2153
  flex-direction: column;
2137
2154
  }
2138
2155
 
2156
+ /* ===========================
2157
+ AUTH FORM PATTERNS
2158
+ =========================== */
2159
+
2160
+ /* Auth form step indicator */
2161
+
2162
+ .dndev-auth-step {
2163
+ display: inline-flex;
2164
+ align-items: center;
2165
+ justify-content: center;
2166
+ min-width: 1.5em;
2167
+ padding: var(--gap-sm);
2168
+ border-radius: var(--radius-sm);
2169
+ font-weight: var(--font-weight-semibold);
2170
+ transition: all var(--dur-fast) var(--ease-in-out);
2171
+ }
2172
+
2173
+ .dndev-auth-step[data-state='active'] {
2174
+ background-color: var(--primary);
2175
+ color: var(--primary-foreground);
2176
+ }
2177
+
2178
+ .dndev-auth-step[data-state='pending'] {
2179
+ background-color: var(--muted);
2180
+ color: var(--muted-foreground);
2181
+ }
2182
+
2183
+ .dndev-auth-step[data-state='completed'] {
2184
+ background-color: var(--success);
2185
+ color: var(--success-foreground);
2186
+ }
2187
+
2188
+ /* Opacity data attribute */
2189
+
2190
+ [data-opacity='50'] {
2191
+ opacity: 0.5;
2192
+ }
2193
+
2194
+ [data-opacity='70'] {
2195
+ opacity: 0.7;
2196
+ }
2197
+
2198
+ /* Inset data attribute - indent content */
2199
+
2200
+ [data-inset='true'] {
2201
+ padding-inline-start: var(--gap-md);
2202
+ }
2203
+
2204
+ /* Password strength bar height override */
2205
+
2206
+ .dndev-password-strength-bar {
2207
+ height: 4px;
2208
+ }
2209
+
2139
2210
  /* 5. Individual Component Styles */
2140
2211
 
2141
2212
  /* packages/components/src/atomic/Accordion/Accordion.css */
@@ -2645,6 +2716,34 @@ em {
2645
2716
 
2646
2717
  /* Label styling moved to patterns.css (.dndev-interactive-label) */
2647
2718
 
2719
+ /* Loading state */
2720
+
2721
+ [data-loading] {
2722
+ cursor: wait;
2723
+ pointer-events: none;
2724
+ }
2725
+
2726
+ /* Button spinner - inherits size from button font-size */
2727
+
2728
+ .dndev-button-spinner {
2729
+ flex-shrink: 0;
2730
+ }
2731
+
2732
+ /* Progress ring for upload percentage */
2733
+
2734
+ .dndev-button-progress {
2735
+ display: inline-flex;
2736
+ align-items: center;
2737
+ justify-content: center;
2738
+ flex-shrink: 0;
2739
+ }
2740
+
2741
+ .dndev-progress-ring {
2742
+ width: 1em;
2743
+ height: 1em;
2744
+ transform: rotate(-90deg);
2745
+ }
2746
+
2648
2747
  /* packages/components/src/atomic/Calendar/Calendar.css */
2649
2748
 
2650
2749
  /**
@@ -3343,7 +3442,7 @@ em {
3343
3442
  .dndev-combobox-content {
3344
3443
  width: var(--radix-popover-trigger-width);
3345
3444
  min-width: var(--radix-popover-trigger-width);
3346
- max-height: 300px;
3445
+ max-width: var(--radix-popover-trigger-width);
3347
3446
  display: flex;
3348
3447
  flex-direction: column;
3349
3448
  padding: 0;
@@ -3358,14 +3457,6 @@ em {
3358
3457
  width: 100%;
3359
3458
  }
3360
3459
 
3361
- .dndev-combobox-list {
3362
- overflow-y: auto;
3363
- padding: var(--gap-tight);
3364
- display: flex;
3365
- flex-direction: column;
3366
- gap: var(--gap-none);
3367
- }
3368
-
3369
3460
  .dndev-combobox-option {
3370
3461
  all: unset;
3371
3462
  display: flex;
@@ -3422,6 +3513,30 @@ em {
3422
3513
  color: var(--muted-foreground);
3423
3514
  }
3424
3515
 
3516
+ /* Creatable option styling */
3517
+
3518
+ .dndev-combobox-option-create {
3519
+ color: var(--primary);
3520
+ font-style: italic;
3521
+ }
3522
+
3523
+ .dndev-combobox-option-create-icon {
3524
+ width: var(--icon-md);
3525
+ height: var(--icon-md);
3526
+ margin-inline-end: var(--gap-sm);
3527
+ flex-shrink: 0;
3528
+ }
3529
+
3530
+ .dndev-combobox-open .dndev-input-with-trailing-icon .dndev-input-icon svg,
3531
+ .dndev-combobox-open .dndev-input-with-trailing-icon .dndev-input-icon > * {
3532
+ transform: rotate(180deg);
3533
+ }
3534
+
3535
+ .dndev-input-with-trailing-icon .dndev-input-icon svg,
3536
+ .dndev-input-with-trailing-icon .dndev-input-icon > * {
3537
+ transition: transform var(--dur-fast) var(--ease-in-out);
3538
+ }
3539
+
3425
3540
  /* packages/components/src/atomic/DualCard/DualCard.css */
3426
3541
 
3427
3542
  .dndev-dual-card {
@@ -3608,13 +3723,15 @@ em {
3608
3723
  text-align: start;
3609
3724
  display: block;
3610
3725
  line-height: 1.5; /* Match line numbers */
3726
+ font-size: var(--font-size-sm); /* Explicit match with line numbers */
3611
3727
  }
3612
3728
 
3613
- /* Ensure shiki-generated code respects line-height */
3729
+ /* Ensure shiki-generated code respects line-height AND font-size */
3614
3730
 
3615
3731
  .dndev-code-code pre,
3616
3732
  .dndev-code-code code {
3617
3733
  line-height: inherit;
3734
+ font-size: inherit; /* Match parent font-size */
3618
3735
  }
3619
3736
 
3620
3737
  /* packages/components/src/atomic/Command/Command.css */
@@ -3992,16 +4109,6 @@ em {
3992
4109
  padding: var(--gap-sm);
3993
4110
  }
3994
4111
 
3995
- /* Dropdown scroll area - constrain height to 50dvh */
3996
-
3997
- .dndev-dropdown-scroll-area {
3998
- max-height: 50dvh;
3999
- }
4000
-
4001
- .dndev-dropdown-scroll-area .dndev-scroll-area-viewport {
4002
- max-height: 50dvh;
4003
- }
4004
-
4005
4112
  /* Checked state styling */
4006
4113
 
4007
4114
  .dndev-interactive[data-role='menu-item'][data-state='checked'] {
@@ -4525,6 +4632,81 @@ em {
4525
4632
  margin-inline-start: var(--gap-sm);
4526
4633
  }
4527
4634
 
4635
+ /* Floating Fieldset - native border-cutting via legend */
4636
+
4637
+ .dndev-floating-fieldset {
4638
+ position: relative;
4639
+ border: var(--border-hairline) solid var(--line-2);
4640
+ border-radius: var(--radius-interactive);
4641
+ margin: 0;
4642
+ padding: 0;
4643
+ background-color: transparent;
4644
+ transition: all var(--dur-normal) var(--ease-in-out);
4645
+ text-align: start;
4646
+ }
4647
+
4648
+ .dndev-floating-fieldset:hover {
4649
+ border-color: var(--ring);
4650
+ }
4651
+
4652
+ .dndev-floating-fieldset:focus-within {
4653
+ border-color: var(--ring);
4654
+ box-shadow: 0 0 0 2px var(--ring);
4655
+ }
4656
+
4657
+ .dndev-floating-fieldset[data-disabled='true'] {
4658
+ opacity: var(--opacity-muted);
4659
+ cursor: not-allowed;
4660
+ }
4661
+
4662
+ /* Legend sits on border - browser natively cuts border */
4663
+
4664
+ .dndev-floating-legend {
4665
+ margin-inline-start: var(--gap-sm);
4666
+ padding: 0 var(--gap-sm);
4667
+ font-size: var(--font-size-xs);
4668
+ font-weight: 500;
4669
+ line-height: 1;
4670
+ color: var(--foreground);
4671
+ }
4672
+
4673
+ .dndev-floating-legend label {
4674
+ cursor: default;
4675
+ display: inline-flex;
4676
+ align-items: center;
4677
+ gap: var(--gap-tight);
4678
+ }
4679
+
4680
+ .dndev-floating-fieldset[data-disabled='true'] .dndev-floating-legend {
4681
+ color: var(--muted-foreground);
4682
+ }
4683
+
4684
+ .dndev-floating-legend[data-truncate='true'] {
4685
+ max-width: calc(100% - var(--gap-md) * 2);
4686
+ overflow: hidden;
4687
+ text-overflow: ellipsis;
4688
+ white-space: nowrap;
4689
+ }
4690
+
4691
+ /* Remove border from inner input since fieldset has it */
4692
+
4693
+ .dndev-floating-fieldset .dndev-input {
4694
+ border: none;
4695
+ border-radius: var(--radius-interactive);
4696
+ box-shadow: none;
4697
+ }
4698
+
4699
+ .dndev-floating-fieldset .dndev-input:hover {
4700
+ border-color: transparent;
4701
+ }
4702
+
4703
+ .dndev-floating-fieldset .dndev-input:focus,
4704
+ .dndev-floating-fieldset .dndev-input:focus-visible {
4705
+ border-color: transparent;
4706
+ box-shadow: none;
4707
+ outline: none;
4708
+ }
4709
+
4528
4710
  /* packages/components/src/atomic/List/List.css */
4529
4711
 
4530
4712
  .dndev-list {
@@ -4833,20 +5015,41 @@ em {
4833
5015
  /* packages/components/src/atomic/PasswordInput/PasswordInput.css */
4834
5016
 
4835
5017
  .dndev-password-input-with-toggle {
4836
- padding-inline-end: var(--gap-lg);
5018
+ padding-inline-end: calc(var(--gap-xl) + var(--gap-md)) !important;
4837
5019
  }
4838
5020
 
5021
+ /* Eye icon toggle - ALWAYS at end, cannot be overridden */
5022
+
4839
5023
  .dndev-password-toggle-button {
4840
- position: absolute;
4841
- inset-inline-end: 0;
4842
- top: 0;
4843
- height: 100%;
4844
- padding-inline-start: var(--gap-md);
4845
- padding-inline-end: var(--gap-md);
5024
+ position: absolute !important;
5025
+ top: 50% !important;
5026
+ transform: translateY(-50%) !important;
5027
+ inset-inline-end: var(--gap-sm) !important;
5028
+ inset-inline-start: unset !important;
5029
+ background: none !important;
5030
+ border: none !important;
5031
+ cursor: pointer !important;
5032
+ padding: var(--gap-tight) !important;
5033
+ display: flex !important;
5034
+ align-items: center !important;
5035
+ opacity: var(--opacity-muted) !important;
5036
+ transition: opacity var(--dur-fast) var(--ease-in-out) !important;
5037
+ -webkit-user-select: none !important;
5038
+ -moz-user-select: none !important;
5039
+ user-select: none !important;
5040
+ z-index: 1 !important;
5041
+ }
5042
+
5043
+ .dndev-password-toggle-button:hover,
5044
+ .dndev-password-toggle-button:focus {
5045
+ opacity: 1 !important;
5046
+ outline: none !important;
4846
5047
  }
4847
5048
 
4848
5049
  .dndev-password-toggle-icon {
4849
5050
  color: var(--muted-foreground);
5051
+ width: var(--icon-sm);
5052
+ height: var(--icon-sm);
4850
5053
  }
4851
5054
 
4852
5055
  /* packages/components/src/atomic/Pagination/Pagination.css */
@@ -4938,9 +5141,32 @@ em {
4938
5141
  height: 100%;
4939
5142
  width: 100%;
4940
5143
  flex: 1;
5144
+ background-color: var(--primary);
4941
5145
  transition: transform var(--dur-normal) var(--ease-in-out);
5146
+
5147
+ /* Variant colors */
4942
5148
  }
4943
5149
 
5150
+ [data-variant='default']:is(.dndev-progress [data-radix-progress-indicator]) {
5151
+ background-color: var(--primary);
5152
+ }
5153
+
5154
+ [data-variant='accent']:is(.dndev-progress [data-radix-progress-indicator]) {
5155
+ background-color: var(--accent);
5156
+ }
5157
+
5158
+ [data-variant='success']:is(.dndev-progress [data-radix-progress-indicator]) {
5159
+ background-color: var(--success);
5160
+ }
5161
+
5162
+ [data-variant='warning']:is(.dndev-progress [data-radix-progress-indicator]) {
5163
+ background-color: var(--warning);
5164
+ }
5165
+
5166
+ [data-variant='destructive']:is(.dndev-progress [data-radix-progress-indicator]) {
5167
+ background-color: var(--destructive);
5168
+ }
5169
+
4944
5170
  /* packages/components/src/atomic/RadioGroup/RadioGroup.css */
4945
5171
 
4946
5172
  /* Uses shared .dndev-control-group pattern from patterns.css */
@@ -5146,7 +5372,6 @@ em {
5146
5372
  display: flex;
5147
5373
  flex-direction: column;
5148
5374
  padding: 0;
5149
- overflow-y: auto;
5150
5375
  }
5151
5376
 
5152
5377
  .dndev-interactive[data-radix-select-item] {
@@ -5268,6 +5493,7 @@ em {
5268
5493
  letter-spacing: 0.2em;
5269
5494
  color: var(--accent) !important;
5270
5495
  margin-block-end: var(--gap-md);
5496
+ text-align: center; /* DEFAULT - works without attribute selector */
5271
5497
  }
5272
5498
 
5273
5499
  .dndev-section-full-width[data-text-align='start'] .dndev-section-title {
@@ -5313,11 +5539,13 @@ em {
5313
5539
  transition: transform var(--dur-normal) var(--ease-in-out);
5314
5540
  }
5315
5541
 
5316
- .dndev-section-full-width[data-text-align='start'] .dndev-section-title-trigger {
5542
+ .dndev-section-full-width[data-text-align='start']
5543
+ .dndev-section-title-trigger {
5317
5544
  justify-content: flex-start;
5318
5545
  }
5319
5546
 
5320
- .dndev-section-full-width[data-text-align='center'] .dndev-section-title-trigger {
5547
+ .dndev-section-full-width[data-text-align='center']
5548
+ .dndev-section-title-trigger {
5321
5549
  justify-content: center;
5322
5550
  }
5323
5551
 
@@ -5466,50 +5694,210 @@ em {
5466
5694
  display: flex;
5467
5695
  flex-direction: column;
5468
5696
  z-index: var(--z-modal);
5469
- border-radius: var(--radius-floating); /* Square like floating panels */
5697
+ background: var(--card);
5698
+ /* Ensure background is opaque */
5699
+ color: var(--card-foreground);
5700
+ box-shadow: var(--shadow-xl);
5701
+ /* Focus Tunnel: Deep elevation */
5702
+ overflow: hidden;
5703
+ /* Scroll Trap: Container clips overflow */
5704
+
5705
+ /* Motion Physics: Base state */
5706
+ will-change: transform, opacity;
5470
5707
 
5471
- /* Sheet positioning by side */
5708
+ /* Open state animation - "Heavy" ease for premium feel */
5472
5709
  }
5473
5710
 
5711
+ .dndev-sheet-content[data-state='open'] {
5712
+ animation: sheet-slide-in var(--dur-heavy) var(--ease-heavy);
5713
+ }
5714
+
5715
+ /* Closed state animation */
5716
+
5717
+ .dndev-sheet-content[data-state='closed'] {
5718
+ animation: sheet-slide-out var(--dur-normal) var(--ease-in-out);
5719
+ }
5720
+
5721
+ /* Sheet positioning by side - SPATIAL METAPHOR */
5722
+
5723
+ /* RIGHT / LEFT (Desktop Panels) */
5724
+
5474
5725
  .dndev-sheet-content[data-side='right'],.dndev-sheet-content[data-side='left'] {
5475
5726
  top: 0;
5476
5727
  bottom: 0;
5477
5728
  width: 80%;
5478
5729
  max-width: 56rem;
5730
+ /* Standard panel width */
5731
+ height: 100%;
5732
+ /* Full height */
5733
+ border-radius: 0;
5734
+ /* Square edges for panel metaphor */
5479
5735
  }
5480
5736
 
5481
5737
  .dndev-sheet-content[data-side='right'] {
5738
+ /* Physical positioning: right edge */
5482
5739
  right: 0;
5740
+ left: auto;
5741
+ /* Border on logical start (left in LTR, right in RTL) */
5742
+ border-inline-start: var(--border-hairline) solid var(--line-1);
5483
5743
  }
5484
5744
 
5485
5745
  .dndev-sheet-content[data-side='left'] {
5746
+ /* Physical positioning: left edge */
5486
5747
  left: 0;
5748
+ right: auto;
5749
+ /* Border on logical end (right in LTR, left in RTL) */
5750
+ border-inline-end: var(--border-hairline) solid var(--line-1);
5487
5751
  }
5488
5752
 
5753
+ /* TOP / BOTTOM (Mobile Cards) */
5754
+
5489
5755
  .dndev-sheet-content[data-side='top'],.dndev-sheet-content[data-side='bottom'] {
5490
5756
  left: 0;
5491
5757
  right: 0;
5492
- height: 80%;
5493
- max-height: 56rem;
5494
- overflow: hidden;
5758
+ /* Card metaphor: Detached from opposite edge */
5759
+ height: auto;
5760
+ max-height: 92dvh;
5761
+ /* Never touch top edge */
5762
+ width: 100%;
5763
+ margin-left: auto;
5764
+ margin-right: auto;
5765
+
5766
+ /* On larger screens, constrain width */
5767
+ }
5768
+
5769
+ @media (width >=768px) {
5770
+
5771
+ .dndev-sheet-content[data-side='top'],.dndev-sheet-content[data-side='bottom'] {
5772
+ max-width: 56rem;
5773
+ width: 90%;
5774
+ border-radius: var(--radius-lg);
5775
+ /* Fully rounded card on desktop */
5495
5776
  }
5777
+ }
5496
5778
 
5497
5779
  .dndev-sheet-content[data-side='top'] {
5498
5780
  top: 0;
5781
+ border-bottom: var(--border-hairline) solid var(--line-1);
5782
+ /* Rounded bottom corners only */
5783
+ border-bottom-left-radius: var(--radius-lg);
5784
+ border-bottom-right-radius: var(--radius-lg);
5499
5785
  }
5500
5786
 
5501
5787
  .dndev-sheet-content[data-side='bottom'] {
5502
5788
  bottom: 0;
5789
+ border-top: var(--border-hairline) solid var(--line-1);
5790
+ /* Rounded top corners only */
5791
+ border-top-left-radius: var(--radius-lg);
5792
+ border-top-right-radius: var(--radius-lg);
5793
+ }
5794
+
5795
+ /* DRAG HANDLE PILL - Visual affordance for draggable sheets */
5796
+
5797
+ .dndev-sheet-drag-handle {
5798
+ width: 2.5rem;
5799
+ height: 0.25rem;
5800
+ background: var(--line-2);
5801
+ border-radius: var(--radius-full);
5802
+ margin: var(--gap-sm) auto 0;
5803
+ flex-shrink: 0;
5804
+ cursor: grab;
5805
+ transition: background-color var(--dur-fast) var(--ease-in-out);
5806
+ }
5807
+
5808
+ .dndev-sheet-drag-handle:active {
5809
+ cursor: grabbing;
5503
5810
  }
5504
5811
 
5812
+ /* Positioning for bottom sheets */
5813
+
5814
+ .dndev-sheet-content[data-side='bottom'] > .dndev-sheet-drag-handle {
5815
+ margin-top: var(--gap-sm);
5816
+ margin-bottom: 0;
5817
+ }
5818
+
5819
+ /* Positioning for top sheets */
5820
+
5821
+ .dndev-sheet-content[data-side='top'] > .dndev-sheet-drag-handle {
5822
+ margin-top: max(var(--gap-sm), env(safe-area-inset-top));
5823
+ margin-bottom: 0;
5824
+ }
5825
+
5826
+ /* HEADER - Pinned, No Padding (Tight Layout) */
5827
+
5828
+ /* Industry standard: Title always on start, X always on end (consistent across all sides) */
5829
+
5505
5830
  .dndev-sheet-header {
5506
5831
  display: flex;
5507
5832
  align-items: center;
5508
5833
  justify-content: space-between;
5509
5834
  gap: var(--gap-md);
5510
5835
  flex-shrink: 0;
5836
+ /* Never shrink */
5511
5837
  min-height: var(--touch-target);
5512
- margin-bottom: var(--gap-md);
5838
+ /* No padding - tight layout: [ Title X ] */
5839
+ padding-block: 0;
5840
+ /* RTL-aware: padding on logical start only */
5841
+ padding-inline-start: var(--gap-md);
5842
+ padding-inline-end: 0; /* X button has its own spacing */
5843
+ border-bottom: var(--border-hairline) solid var(--line-1);
5844
+ /* Separator */
5845
+
5846
+ /* Thumb Ergonomics: Top Safe Area (only for top sheets) */
5847
+ }
5848
+
5849
+ .dndev-sheet-content[data-side='top'] .dndev-sheet-header {
5850
+ padding-top: max(0, env(safe-area-inset-top));
5851
+ }
5852
+
5853
+ /* Adjust header padding when drag handle is present (sibling selector) */
5854
+
5855
+ .dndev-sheet-content[data-side='bottom'] .dndev-sheet-drag-handle ~ .dndev-sheet-header,
5856
+ .dndev-sheet-content[data-side='top'] .dndev-sheet-drag-handle ~ .dndev-sheet-header {
5857
+ padding-top: 0;
5858
+ }
5859
+
5860
+ /* BODY - Scrollable */
5861
+
5862
+ .dndev-sheet-body {
5863
+ flex: 1;
5864
+ /* Consumes available space */
5865
+ overflow-y: auto;
5866
+ /* Independent scroll */
5867
+ overflow-x: hidden;
5868
+ padding: var(--gap-md);
5869
+ overscroll-behavior: contain;
5870
+ /* Prevent body scroll chaining */
5871
+ }
5872
+
5873
+ /* FOOTER - Pinned */
5874
+
5875
+ .dndev-sheet-footer {
5876
+ flex-shrink: 0;
5877
+ /* Never shrink */
5878
+ padding: var(--gap-md);
5879
+ border-top: var(--border-hairline) solid var(--line-1);
5880
+ /* Separator */
5881
+ display: flex;
5882
+ flex-direction: column-reverse;
5883
+ /* Mobile-first stacking */
5884
+ gap: var(--gap-sm);
5885
+
5886
+ /* Desktop: Row layout */
5887
+ }
5888
+
5889
+ @media (width >=640px) {
5890
+
5891
+ .dndev-sheet-footer {
5892
+ flex-direction: row;
5893
+ justify-content: flex-end;
5894
+ }
5895
+ }
5896
+
5897
+ .dndev-sheet-footer {
5898
+
5899
+ /* Thumb Ergonomics: Bottom Safe Area (Home Indicator) */
5900
+ padding-bottom: max(var(--gap-md), env(safe-area-inset-bottom));
5513
5901
  }
5514
5902
 
5515
5903
  .dndev-sheet-title {
@@ -5519,19 +5907,72 @@ em {
5519
5907
  }
5520
5908
 
5521
5909
  .dndev-sheet-close {
5522
- position: absolute;
5523
- top: var(--gap-md);
5524
- inset-inline-end: var(--gap-md);
5910
+ /* Position relative - flex handles alignment */
5911
+ position: relative;
5912
+ margin-inline-start: auto;
5913
+ /* Push to end (RTL-aware: end = right in LTR, left in RTL) */
5525
5914
  opacity: var(--opacity-muted);
5915
+ /* No padding - tight spacing */
5916
+ padding: 0;
5917
+ /* RTL-aware: padding on logical end only */
5918
+ padding-inline-end: var(--gap-md);
5919
+ padding-inline-start: 0;
5526
5920
  }
5527
5921
 
5528
5922
  .dndev-sheet-close:hover {
5529
5923
  opacity: 1;
5530
5924
  }
5531
5925
 
5532
- .dndev-sheet-footer {
5533
- flex-shrink: 0;
5534
- margin-top: var(--gap-md);
5926
+ /* ===========================
5927
+ ANIMATIONS (Motion Physics)
5928
+ =========================== */
5929
+
5930
+ /* Slide In/Out Keyframes - Context Aware */
5931
+
5932
+ @keyframes sheet-slide-in {
5933
+ from {
5934
+ opacity: 0;
5935
+ transform: var(--slide-enter-transform);
5936
+ }
5937
+
5938
+ to {
5939
+ opacity: 1;
5940
+ transform: translate(0, 0);
5941
+ }
5942
+ }
5943
+
5944
+ @keyframes sheet-slide-out {
5945
+ from {
5946
+ opacity: 1;
5947
+ transform: translate(0, 0);
5948
+ }
5949
+
5950
+ to {
5951
+ opacity: 0;
5952
+ transform: var(--slide-exit-transform);
5953
+ }
5954
+ }
5955
+
5956
+ /* Define Transforms based on Side */
5957
+
5958
+ .dndev-sheet-content[data-side='right'] {
5959
+ --slide-enter-transform: translateX(100%);
5960
+ --slide-exit-transform: translateX(100%);
5961
+ }
5962
+
5963
+ .dndev-sheet-content[data-side='left'] {
5964
+ --slide-enter-transform: translateX(-100%);
5965
+ --slide-exit-transform: translateX(-100%);
5966
+ }
5967
+
5968
+ .dndev-sheet-content[data-side='bottom'] {
5969
+ --slide-enter-transform: translateY(100%);
5970
+ --slide-exit-transform: translateY(100%);
5971
+ }
5972
+
5973
+ .dndev-sheet-content[data-side='top'] {
5974
+ --slide-enter-transform: translateY(-100%);
5975
+ --slide-exit-transform: translateY(-100%);
5535
5976
  }
5536
5977
 
5537
5978
  /* packages/components/src/atomic/Skeleton/Skeleton.css */
@@ -6187,6 +6628,61 @@ em {
6187
6628
  transform: translateX(calc(2.75rem - 1.25rem - 0.125rem));
6188
6629
  }
6189
6630
 
6631
+ /* Switch with labels container */
6632
+
6633
+ .dndev-switch-with-labels {
6634
+ display: inline-flex;
6635
+ align-items: center;
6636
+ gap: var(--gap-sm);
6637
+ flex-wrap: wrap;
6638
+ }
6639
+
6640
+ /* Labels - keep switch and its labels on one line when possible */
6641
+
6642
+ .dndev-switch-with-labels > .dndev-switch {
6643
+ flex-shrink: 0;
6644
+ }
6645
+
6646
+ .dndev-switch-label {
6647
+ font-size: var(--font-size-sm);
6648
+ transition:
6649
+ color var(--dur-normal) var(--ease-in-out),
6650
+ font-weight var(--dur-normal) var(--ease-in-out);
6651
+ white-space: nowrap;
6652
+ }
6653
+
6654
+ /* Unchecked label - active when switch is unchecked */
6655
+
6656
+ .dndev-switch-with-labels:not(:has(.dndev-switch[data-state='checked']))
6657
+ .dndev-switch-label-unchecked,
6658
+ .dndev-switch-with-labels[data-checked='false'] .dndev-switch-label-unchecked {
6659
+ color: var(--foreground);
6660
+ font-weight: var(--font-weight-medium);
6661
+ }
6662
+
6663
+ .dndev-switch-with-labels:has(.dndev-switch[data-state='checked'])
6664
+ .dndev-switch-label-unchecked,
6665
+ .dndev-switch-with-labels[data-checked='true'] .dndev-switch-label-unchecked {
6666
+ color: var(--muted-foreground);
6667
+ font-weight: var(--font-weight-normal);
6668
+ }
6669
+
6670
+ /* Checked label - active when switch is checked */
6671
+
6672
+ .dndev-switch-with-labels:has(.dndev-switch[data-state='checked'])
6673
+ .dndev-switch-label-checked,
6674
+ .dndev-switch-with-labels[data-checked='true'] .dndev-switch-label-checked {
6675
+ color: var(--foreground);
6676
+ font-weight: var(--font-weight-medium);
6677
+ }
6678
+
6679
+ .dndev-switch-with-labels:not(:has(.dndev-switch[data-state='checked']))
6680
+ .dndev-switch-label-checked,
6681
+ .dndev-switch-with-labels[data-checked='false'] .dndev-switch-label-checked {
6682
+ color: var(--muted-foreground);
6683
+ font-weight: var(--font-weight-normal);
6684
+ }
6685
+
6190
6686
  /* packages/components/src/atomic/Table/Table.css */
6191
6687
 
6192
6688
  .dndev-table-wrapper {
@@ -6223,6 +6719,12 @@ em {
6223
6719
  background-color: color-mix(in oklab, var(--accent) 15%, transparent);
6224
6720
  }
6225
6721
 
6722
+ /* Cursor pointer for clickable rows */
6723
+
6724
+ .dndev-table-row.dndev-cursor-pointer {
6725
+ cursor: pointer;
6726
+ }
6727
+
6226
6728
  /* Zebra striping for data tables */
6227
6729
 
6228
6730
  .dndev-table-body .dndev-table-row:nth-child(even) {
@@ -6252,7 +6754,7 @@ em {
6252
6754
  /* Table head (th) styles */
6253
6755
 
6254
6756
  .dndev-table-head {
6255
- text-align: left;
6757
+ text-align: start;
6256
6758
  vertical-align: middle;
6257
6759
  font-weight: 500;
6258
6760
  color: var(--muted-foreground);
@@ -6269,12 +6771,12 @@ em {
6269
6771
  text-align: center;
6270
6772
  }
6271
6773
 
6272
- .dndev-table-head[data-align='right'] {
6273
- text-align: right;
6774
+ .dndev-table-head[data-align='end'] {
6775
+ text-align: end;
6274
6776
  }
6275
6777
 
6276
- .dndev-table-head[data-align='left'] {
6277
- text-align: left;
6778
+ .dndev-table-head[data-align='start'] {
6779
+ text-align: start;
6278
6780
  }
6279
6781
 
6280
6782
  /* Table cell (td) styles */
@@ -6290,14 +6792,48 @@ em {
6290
6792
  text-align: center;
6291
6793
  }
6292
6794
 
6293
- .dndev-table-cell[data-align='right'] {
6294
- text-align: right;
6795
+ .dndev-table-cell[data-align='end'] {
6796
+ text-align: end;
6295
6797
  }
6296
6798
 
6297
- .dndev-table-cell[data-align='left'] {
6298
- text-align: left;
6799
+ .dndev-table-cell[data-align='start'] {
6800
+ text-align: start;
6299
6801
  }
6300
6802
 
6803
+ /* Excel-like grid lines variant */
6804
+
6805
+ .dndev-table-grid .dndev-table-head,
6806
+ .dndev-table-grid .dndev-table-cell {
6807
+ border: 1px solid var(--border);
6808
+ padding: 0;
6809
+ }
6810
+
6811
+ .dndev-table-grid .dndev-table-row {
6812
+ border-bottom: 1px solid var(--border);
6813
+ }
6814
+
6815
+ .dndev-table-grid .dndev-table-row:last-child {
6816
+ border-bottom: 1px solid var(--border);
6817
+ }
6818
+
6819
+ /* Input components inside grid cells should be borderless and fit snugly */
6820
+
6821
+ .dndev-table-grid .dndev-table-cell .dndev-input,
6822
+ .dndev-table-grid .dndev-table-cell input[type='text'],
6823
+ .dndev-table-grid .dndev-table-cell input[type='number'] {
6824
+ border: none;
6825
+ background: transparent;
6826
+ width: 100%;
6827
+ height: 100%;
6828
+ box-shadow: none;
6829
+ }
6830
+
6831
+ .dndev-table-grid .dndev-table-cell .dndev-input:focus,
6832
+ .dndev-table-grid .dndev-table-cell input:focus {
6833
+ outline: 2px solid var(--primary);
6834
+ outline-offset: -2px;
6835
+ }
6836
+
6301
6837
  /* Table caption styles */
6302
6838
 
6303
6839
  .dndev-table-caption {
@@ -6314,7 +6850,7 @@ em {
6314
6850
 
6315
6851
  .dndev-table-search-icon {
6316
6852
  position: absolute;
6317
- left: var(--gap-md);
6853
+ inset-inline-start: var(--gap-md);
6318
6854
  top: 50%;
6319
6855
  transform: translateY(-50%);
6320
6856
  width: var(--icon-md);
@@ -6481,7 +7017,7 @@ em {
6481
7017
  .dndev-tag {
6482
7018
  display: inline-flex;
6483
7019
  align-items: center;
6484
- gap: var(--gap-xs);
7020
+ gap: var(--gap-sm);
6485
7021
  border-radius: var(--radius-full);
6486
7022
  border: 1px solid transparent;
6487
7023
  font-size: var(--font-size-sm);
@@ -6611,8 +7147,18 @@ em {
6611
7147
  font-weight: var(--font-weight-medium);
6612
7148
  line-height: var(--line-height);
6613
7149
  background-color: transparent; /* Text never has background, only color changes */
7150
+
7151
+ /* Respect semantic HTML elements */
6614
7152
  }
6615
7153
 
7154
+ .dndev-text-base:is(strong) {
7155
+ font-weight: var(--font-weight-semibold);
7156
+ }
7157
+
7158
+ .dndev-text-base:is(em) {
7159
+ font-style: italic;
7160
+ }
7161
+
6616
7162
  .dndev-text-base[data-variant='default'] {
6617
7163
  color: inherit;
6618
7164
  }
@@ -7560,7 +8106,7 @@ em {
7560
8106
  align-items: stretch;
7561
8107
  }
7562
8108
 
7563
- @media (width <= 699px) {
8109
+ @media (width <=699px) {
7564
8110
 
7565
8111
  [data-cols='2'] {
7566
8112
  grid-template-columns: repeat(1, minmax(350px, 1fr));
@@ -7572,14 +8118,14 @@ em {
7572
8118
  align-items: stretch;
7573
8119
  }
7574
8120
 
7575
- @media (width <= 1049px) {
8121
+ @media (width <=1049px) {
7576
8122
 
7577
8123
  [data-cols='3'] {
7578
8124
  grid-template-columns: repeat(2, minmax(350px, 1fr));
7579
8125
  }
7580
8126
  }
7581
8127
 
7582
- @media (width <= 699px) {
8128
+ @media (width <=699px) {
7583
8129
 
7584
8130
  [data-cols='3'] {
7585
8131
  grid-template-columns: repeat(1, minmax(350px, 1fr));
@@ -7593,21 +8139,21 @@ em {
7593
8139
  /* Responsive: reduce columns when container is narrow */
7594
8140
  }
7595
8141
 
7596
- @media (width <= 1399px) {
8142
+ @media (width <=1399px) {
7597
8143
 
7598
8144
  [data-cols='4'] {
7599
8145
  grid-template-columns: repeat(3, minmax(0, 1fr));
7600
8146
  }
7601
8147
  }
7602
8148
 
7603
- @media (width <= 1049px) {
8149
+ @media (width <=1049px) {
7604
8150
 
7605
8151
  [data-cols='4'] {
7606
8152
  grid-template-columns: repeat(2, minmax(0, 1fr));
7607
8153
  }
7608
8154
  }
7609
8155
 
7610
- @media (width <= 699px) {
8156
+ @media (width <=699px) {
7611
8157
 
7612
8158
  [data-cols='4'] {
7613
8159
  grid-template-columns: repeat(1, minmax(0, 1fr));
@@ -7674,18 +8220,22 @@ em {
7674
8220
 
7675
8221
  code {
7676
8222
  font-family: var(--font-mono);
7677
- font-size: inherit; /* Inherit parent size */
7678
- font-weight: inherit; /* Inherit parent weight */
8223
+ font-size: inherit;
8224
+ /* Inherit parent size */
8225
+ font-weight: inherit;
8226
+ /* Inherit parent weight */
7679
8227
  line-height: inherit;
7680
8228
  color: inherit;
7681
- background: transparent; /* No background by default */
8229
+ background: transparent;
8230
+ /* No background by default */
7682
8231
  }
7683
8232
 
7684
8233
  /* Code variant - visual styling (background, padding, can apply to any element) */
7685
8234
 
7686
8235
  [data-variant='code'] {
7687
8236
  font-family: var(--font-mono);
7688
- font-size: var(--font-size-sm); /* Default small size */
8237
+ font-size: var(--font-size-sm);
8238
+ /* Default small size */
7689
8239
  background: var(--muted);
7690
8240
  color: var(--muted-foreground);
7691
8241
  padding: var(--gap-sm) var(--gap-md);
@@ -7780,7 +8330,8 @@ h4[data-variant='code'] {
7780
8330
 
7781
8331
  .dndev-relative {
7782
8332
  position: relative;
7783
- min-width: 0; /* Allow flex items to shrink below content size */
8333
+ min-width: 0;
8334
+ /* Allow flex items to shrink below content size */
7784
8335
  }
7785
8336
 
7786
8337
  .dndev-absolute {
@@ -7872,6 +8423,10 @@ h4[data-variant='code'] {
7872
8423
  pointer-events: auto;
7873
8424
  }
7874
8425
 
8426
+ .dndev-cursor-pointer {
8427
+ cursor: pointer;
8428
+ }
8429
+
7875
8430
  .dndev-aspect-video {
7876
8431
  aspect-ratio: 16 / 9;
7877
8432
  }
@@ -7885,7 +8440,7 @@ h4[data-variant='code'] {
7885
8440
  RESPONSIVE DISPLAY
7886
8441
  =========================== */
7887
8442
 
7888
- @media (width >= 768px) {
8443
+ @media (width >=768px) {
7889
8444
  .dndev-md\:block {
7890
8445
  display: block;
7891
8446
  }
@@ -7911,7 +8466,7 @@ h4[data-variant='code'] {
7911
8466
  }
7912
8467
  }
7913
8468
 
7914
- @media (width >= 1024px) {
8469
+ @media (width >=1024px) {
7915
8470
  .dndev-lg\:block {
7916
8471
  display: block;
7917
8472
  }
@@ -7971,6 +8526,10 @@ h4[data-variant='code'] {
7971
8526
  Components are unaffected - they own their own spacing
7972
8527
  =========================== */
7973
8528
 
8529
+ .prose {
8530
+ text-align: start;
8531
+ }
8532
+
7974
8533
  .prose h1,.prose h2,.prose h3,.prose h4,.prose h5,.prose h6 {
7975
8534
  margin-block: var(--gap-md);
7976
8535
  }