@donotdev/components 0.0.12 → 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 (151) 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 +15 -5
  19. package/dist/atomic/Calendar/index.d.ts.map +1 -1
  20. package/dist/atomic/Calendar/index.js +3 -2
  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 -2
  32. package/dist/atomic/Combobox/index.d.ts.map +1 -1
  33. package/dist/atomic/Combobox/index.js +4 -4
  34. package/dist/atomic/CommandDialog/index.d.ts.map +1 -1
  35. package/dist/atomic/CommandDialog/index.js +1 -1
  36. package/dist/atomic/ContextMenu/ContextMenuPrimitive.d.ts +1 -1
  37. package/dist/atomic/ContextMenu/ContextMenuPrimitive.d.ts.map +1 -1
  38. package/dist/atomic/ContextMenu/ContextMenuPrimitive.js +0 -1
  39. package/dist/atomic/ContextMenu/index.d.ts.map +1 -1
  40. package/dist/atomic/Dialog/DialogPrimitive.d.ts.map +1 -1
  41. package/dist/atomic/Dialog/index.d.ts.map +1 -1
  42. package/dist/atomic/Dialog/index.js +1 -1
  43. package/dist/atomic/DropdownMenu/index.d.ts.map +1 -1
  44. package/dist/atomic/DropdownMenu/index.js +17 -3
  45. package/dist/atomic/DualCard/index.d.ts +10 -2
  46. package/dist/atomic/DualCard/index.d.ts.map +1 -1
  47. package/dist/atomic/DualCard/index.js +3 -3
  48. package/dist/atomic/FeatureFallback/index.js +1 -1
  49. package/dist/atomic/HoverCard/HoverCardPrimitive.d.ts +1 -1
  50. package/dist/atomic/HoverCard/HoverCardPrimitive.d.ts.map +1 -1
  51. package/dist/atomic/HoverCard/HoverCardPrimitive.js +0 -1
  52. package/dist/atomic/HoverCard/index.js +1 -1
  53. package/dist/atomic/Input/index.d.ts.map +1 -1
  54. package/dist/atomic/Input/index.js +8 -1
  55. package/dist/atomic/Label/FloatingLabel.d.ts +24 -10
  56. package/dist/atomic/Label/FloatingLabel.d.ts.map +1 -1
  57. package/dist/atomic/Label/FloatingLabel.js +14 -14
  58. package/dist/atomic/Label/index.d.ts +1 -1
  59. package/dist/atomic/Label/index.d.ts.map +1 -1
  60. package/dist/atomic/Label/index.js +1 -1
  61. package/dist/atomic/List/index.d.ts +8 -0
  62. package/dist/atomic/List/index.d.ts.map +1 -1
  63. package/dist/atomic/List/index.js +1 -1
  64. package/dist/atomic/NavigationMenu/NavigationMenuPrimitive.d.ts +1 -1
  65. package/dist/atomic/NavigationMenu/NavigationMenuPrimitive.d.ts.map +1 -1
  66. package/dist/atomic/NavigationMenu/NavigationMenuPrimitive.js +0 -1
  67. package/dist/atomic/NavigationMenu/index.d.ts +1 -1
  68. package/dist/atomic/NavigationMenu/index.d.ts.map +1 -1
  69. package/dist/atomic/NavigationMenu/index.js +10 -1
  70. package/dist/atomic/Pagination/index.d.ts +1 -1
  71. package/dist/atomic/Pagination/index.d.ts.map +1 -1
  72. package/dist/atomic/PasswordInput/index.d.ts +1 -1
  73. package/dist/atomic/PasswordInput/index.d.ts.map +1 -1
  74. package/dist/atomic/PasswordInput/index.js +5 -1
  75. package/dist/atomic/Popover/index.d.ts +0 -8
  76. package/dist/atomic/Popover/index.d.ts.map +1 -1
  77. package/dist/atomic/Popover/index.js +1 -1
  78. package/dist/atomic/PortalButton/index.d.ts +8 -0
  79. package/dist/atomic/PortalButton/index.d.ts.map +1 -1
  80. package/dist/atomic/PortalButton/index.js +1 -1
  81. package/dist/atomic/Progress/ProgressPrimitive.d.ts +1 -1
  82. package/dist/atomic/Progress/ProgressPrimitive.d.ts.map +1 -1
  83. package/dist/atomic/Progress/ProgressPrimitive.js +0 -1
  84. package/dist/atomic/Progress/index.d.ts +8 -0
  85. package/dist/atomic/Progress/index.d.ts.map +1 -1
  86. package/dist/atomic/Progress/index.js +1 -1
  87. package/dist/atomic/RadioGroup/index.d.ts +0 -9
  88. package/dist/atomic/RadioGroup/index.d.ts.map +1 -1
  89. package/dist/atomic/RadioGroup/index.js +2 -2
  90. package/dist/atomic/ScrollArea/ScrollAreaPrimitive.d.ts +1 -1
  91. package/dist/atomic/ScrollArea/ScrollAreaPrimitive.d.ts.map +1 -1
  92. package/dist/atomic/ScrollArea/ScrollAreaPrimitive.js +0 -1
  93. package/dist/atomic/Section/index.d.ts +0 -32
  94. package/dist/atomic/Section/index.d.ts.map +1 -1
  95. package/dist/atomic/Section/index.js +4 -4
  96. package/dist/atomic/Select/SelectPrimitive.d.ts +1 -1
  97. package/dist/atomic/Select/SelectPrimitive.d.ts.map +1 -1
  98. package/dist/atomic/Select/SelectPrimitive.js +0 -1
  99. package/dist/atomic/Select/index.d.ts.map +1 -1
  100. package/dist/atomic/Select/index.js +2 -1
  101. package/dist/atomic/Separator/SeparatorPrimitive.d.ts +1 -1
  102. package/dist/atomic/Separator/SeparatorPrimitive.d.ts.map +1 -1
  103. package/dist/atomic/Separator/SeparatorPrimitive.js +0 -1
  104. package/dist/atomic/Separator/index.d.ts +1 -1
  105. package/dist/atomic/Separator/index.d.ts.map +1 -1
  106. package/dist/atomic/Separator/index.js +0 -1
  107. package/dist/atomic/Sheet/index.d.ts +3 -1
  108. package/dist/atomic/Sheet/index.d.ts.map +1 -1
  109. package/dist/atomic/Sheet/index.js +3 -3
  110. package/dist/atomic/Slider/SliderPrimitive.d.ts +1 -1
  111. package/dist/atomic/Slider/SliderPrimitive.d.ts.map +1 -1
  112. package/dist/atomic/Slider/SliderPrimitive.js +0 -1
  113. package/dist/atomic/Slider/index.d.ts +3 -2
  114. package/dist/atomic/Slider/index.d.ts.map +1 -1
  115. package/dist/atomic/Slider/index.js +2 -3
  116. package/dist/atomic/Slot/index.d.ts.map +1 -1
  117. package/dist/atomic/Stepper/index.js +1 -1
  118. package/dist/atomic/Switch/SwitchPrimitive.d.ts +1 -1
  119. package/dist/atomic/Switch/SwitchPrimitive.d.ts.map +1 -1
  120. package/dist/atomic/Switch/SwitchPrimitive.js +0 -1
  121. package/dist/atomic/Switch/index.d.ts +3 -2
  122. package/dist/atomic/Switch/index.d.ts.map +1 -1
  123. package/dist/atomic/Switch/index.js +2 -3
  124. package/dist/atomic/Table/index.d.ts +3 -1
  125. package/dist/atomic/Table/index.d.ts.map +1 -1
  126. package/dist/atomic/Table/index.js +13 -3
  127. package/dist/atomic/Tabs/TabsPrimitive.d.ts +1 -1
  128. package/dist/atomic/Tabs/TabsPrimitive.d.ts.map +1 -1
  129. package/dist/atomic/Tabs/TabsPrimitive.js +0 -1
  130. package/dist/atomic/Tabs/index.js +1 -1
  131. package/dist/atomic/Tag/index.d.ts +8 -0
  132. package/dist/atomic/Tag/index.d.ts.map +1 -1
  133. package/dist/atomic/Tag/index.js +1 -1
  134. package/dist/atomic/Text/index.js +1 -1
  135. package/dist/atomic/Textarea/index.d.ts.map +1 -1
  136. package/dist/atomic/ToggleGroup/ToggleGroupPrimitive.d.ts +1 -1
  137. package/dist/atomic/ToggleGroup/ToggleGroupPrimitive.d.ts.map +1 -1
  138. package/dist/atomic/Tooltip/TooltipPrimitive.d.ts +1 -1
  139. package/dist/atomic/Tooltip/TooltipPrimitive.d.ts.map +1 -1
  140. package/dist/atomic/Tooltip/TooltipPrimitive.js +0 -1
  141. package/dist/atomic/Tooltip/index.d.ts +6 -12
  142. package/dist/atomic/Tooltip/index.d.ts.map +1 -1
  143. package/dist/atomic/Tooltip/index.js +13 -23
  144. package/dist/atomic/VideoPlayer/index.js +1 -1
  145. package/dist/atomic/VisuallyHidden/VisuallyHiddenPrimitive.d.ts.map +1 -1
  146. package/dist/hooks/useToast.d.ts +1 -25
  147. package/dist/hooks/useToast.d.ts.map +1 -1
  148. package/dist/index.js +4 -4
  149. package/dist/styles/index.css +328 -48
  150. package/dist/utils/variants.d.ts.map +1 -1
  151. package/package.json +1 -1
@@ -2716,6 +2716,34 @@ em {
2716
2716
 
2717
2717
  /* Label styling moved to patterns.css (.dndev-interactive-label) */
2718
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
+
2719
2747
  /* packages/components/src/atomic/Calendar/Calendar.css */
2720
2748
 
2721
2749
  /**
@@ -4604,49 +4632,81 @@ em {
4604
4632
  margin-inline-start: var(--gap-sm);
4605
4633
  }
4606
4634
 
4607
- /* Floating Label - positioned absolutely at top of input fields */
4635
+ /* Floating Fieldset - native border-cutting via legend */
4608
4636
 
4609
- .dndev-floating-label {
4610
- position: absolute;
4611
- inset-inline-start: var(--gap-md);
4612
- top: calc(-1 * var(--font-size-xs) / 2 - 1px);
4613
- font-size: var(--font-size-xs);
4614
- font-weight: 500;
4615
- pointer-events: none;
4616
- z-index: 1;
4617
- background-color: var(--background);
4618
- padding: 0 var(--gap-sm);
4619
- line-height: 1;
4620
- color: var(--foreground);
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;
4621
4646
  }
4622
4647
 
4623
- /* Inherit background when inside floating containers (dropdowns, menus, popovers) */
4648
+ .dndev-floating-fieldset:hover {
4649
+ border-color: var(--ring);
4650
+ }
4624
4651
 
4625
- .dndev-floating .dndev-floating-label,
4626
- .dndev-menu-content .dndev-floating-label,
4627
- [class*='dndev-dropdown'] .dndev-floating-label,
4628
- [class*='dndev-navigation'] .dndev-floating-label {
4629
- background-color: var(--popover);
4630
- color: var(--popover-foreground);
4652
+ .dndev-floating-fieldset:focus-within {
4653
+ border-color: var(--ring);
4654
+ box-shadow: 0 0 0 2px var(--ring);
4631
4655
  }
4632
4656
 
4633
- /* When floating container has blank glow, use solid popover background */
4657
+ .dndev-floating-fieldset[data-disabled='true'] {
4658
+ opacity: var(--opacity-muted);
4659
+ cursor: not-allowed;
4660
+ }
4634
4661
 
4635
- .dndev-floating[data-glow='blank'] .dndev-floating-label {
4636
- background-color: var(--popover);
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);
4637
4671
  }
4638
4672
 
4639
- .dndev-floating-label[data-disabled='true'] {
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 {
4640
4681
  color: var(--muted-foreground);
4641
4682
  }
4642
4683
 
4643
- .dndev-floating-label[data-truncate='true'] {
4684
+ .dndev-floating-legend[data-truncate='true'] {
4644
4685
  max-width: calc(100% - var(--gap-md) * 2);
4645
4686
  overflow: hidden;
4646
4687
  text-overflow: ellipsis;
4647
4688
  white-space: nowrap;
4648
4689
  }
4649
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
+
4650
4710
  /* packages/components/src/atomic/List/List.css */
4651
4711
 
4652
4712
  .dndev-list {
@@ -5634,50 +5694,210 @@ em {
5634
5694
  display: flex;
5635
5695
  flex-direction: column;
5636
5696
  z-index: var(--z-modal);
5637
- 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;
5638
5707
 
5639
- /* Sheet positioning by side */
5708
+ /* Open state animation - "Heavy" ease for premium feel */
5640
5709
  }
5641
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
+
5642
5725
  .dndev-sheet-content[data-side='right'],.dndev-sheet-content[data-side='left'] {
5643
5726
  top: 0;
5644
5727
  bottom: 0;
5645
5728
  width: 80%;
5646
5729
  max-width: 56rem;
5730
+ /* Standard panel width */
5731
+ height: 100%;
5732
+ /* Full height */
5733
+ border-radius: 0;
5734
+ /* Square edges for panel metaphor */
5647
5735
  }
5648
5736
 
5649
5737
  .dndev-sheet-content[data-side='right'] {
5738
+ /* Physical positioning: right edge */
5650
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);
5651
5743
  }
5652
5744
 
5653
5745
  .dndev-sheet-content[data-side='left'] {
5746
+ /* Physical positioning: left edge */
5654
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);
5655
5751
  }
5656
5752
 
5753
+ /* TOP / BOTTOM (Mobile Cards) */
5754
+
5657
5755
  .dndev-sheet-content[data-side='top'],.dndev-sheet-content[data-side='bottom'] {
5658
5756
  left: 0;
5659
5757
  right: 0;
5660
- height: 80%;
5661
- max-height: 56rem;
5662
- 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 */
5663
5767
  }
5664
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 */
5776
+ }
5777
+ }
5778
+
5665
5779
  .dndev-sheet-content[data-side='top'] {
5666
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);
5667
5785
  }
5668
5786
 
5669
5787
  .dndev-sheet-content[data-side='bottom'] {
5670
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);
5671
5793
  }
5672
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;
5810
+ }
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
+
5673
5830
  .dndev-sheet-header {
5674
5831
  display: flex;
5675
5832
  align-items: center;
5676
5833
  justify-content: space-between;
5677
5834
  gap: var(--gap-md);
5678
5835
  flex-shrink: 0;
5836
+ /* Never shrink */
5679
5837
  min-height: var(--touch-target);
5680
- 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));
5681
5901
  }
5682
5902
 
5683
5903
  .dndev-sheet-title {
@@ -5687,19 +5907,72 @@ em {
5687
5907
  }
5688
5908
 
5689
5909
  .dndev-sheet-close {
5690
- position: absolute;
5691
- top: var(--gap-md);
5692
- 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) */
5693
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;
5694
5920
  }
5695
5921
 
5696
5922
  .dndev-sheet-close:hover {
5697
5923
  opacity: 1;
5698
5924
  }
5699
5925
 
5700
- .dndev-sheet-footer {
5701
- flex-shrink: 0;
5702
- 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%);
5703
5976
  }
5704
5977
 
5705
5978
  /* packages/components/src/atomic/Skeleton/Skeleton.css */
@@ -6372,7 +6645,8 @@ em {
6372
6645
 
6373
6646
  .dndev-switch-label {
6374
6647
  font-size: var(--font-size-sm);
6375
- transition: color var(--dur-normal) var(--ease-in-out),
6648
+ transition:
6649
+ color var(--dur-normal) var(--ease-in-out),
6376
6650
  font-weight var(--dur-normal) var(--ease-in-out);
6377
6651
  white-space: nowrap;
6378
6652
  }
@@ -6381,16 +6655,14 @@ em {
6381
6655
 
6382
6656
  .dndev-switch-with-labels:not(:has(.dndev-switch[data-state='checked']))
6383
6657
  .dndev-switch-label-unchecked,
6384
- .dndev-switch-with-labels[data-checked='false']
6385
- .dndev-switch-label-unchecked {
6658
+ .dndev-switch-with-labels[data-checked='false'] .dndev-switch-label-unchecked {
6386
6659
  color: var(--foreground);
6387
6660
  font-weight: var(--font-weight-medium);
6388
6661
  }
6389
6662
 
6390
6663
  .dndev-switch-with-labels:has(.dndev-switch[data-state='checked'])
6391
6664
  .dndev-switch-label-unchecked,
6392
- .dndev-switch-with-labels[data-checked='true']
6393
- .dndev-switch-label-unchecked {
6665
+ .dndev-switch-with-labels[data-checked='true'] .dndev-switch-label-unchecked {
6394
6666
  color: var(--muted-foreground);
6395
6667
  font-weight: var(--font-weight-normal);
6396
6668
  }
@@ -6399,16 +6671,14 @@ em {
6399
6671
 
6400
6672
  .dndev-switch-with-labels:has(.dndev-switch[data-state='checked'])
6401
6673
  .dndev-switch-label-checked,
6402
- .dndev-switch-with-labels[data-checked='true']
6403
- .dndev-switch-label-checked {
6674
+ .dndev-switch-with-labels[data-checked='true'] .dndev-switch-label-checked {
6404
6675
  color: var(--foreground);
6405
6676
  font-weight: var(--font-weight-medium);
6406
6677
  }
6407
6678
 
6408
6679
  .dndev-switch-with-labels:not(:has(.dndev-switch[data-state='checked']))
6409
6680
  .dndev-switch-label-checked,
6410
- .dndev-switch-with-labels[data-checked='false']
6411
- .dndev-switch-label-checked {
6681
+ .dndev-switch-with-labels[data-checked='false'] .dndev-switch-label-checked {
6412
6682
  color: var(--muted-foreground);
6413
6683
  font-weight: var(--font-weight-normal);
6414
6684
  }
@@ -6449,6 +6719,12 @@ em {
6449
6719
  background-color: color-mix(in oklab, var(--accent) 15%, transparent);
6450
6720
  }
6451
6721
 
6722
+ /* Cursor pointer for clickable rows */
6723
+
6724
+ .dndev-table-row.dndev-cursor-pointer {
6725
+ cursor: pointer;
6726
+ }
6727
+
6452
6728
  /* Zebra striping for data tables */
6453
6729
 
6454
6730
  .dndev-table-body .dndev-table-row:nth-child(even) {
@@ -6543,8 +6819,8 @@ em {
6543
6819
  /* Input components inside grid cells should be borderless and fit snugly */
6544
6820
 
6545
6821
  .dndev-table-grid .dndev-table-cell .dndev-input,
6546
- .dndev-table-grid .dndev-table-cell input[type="text"],
6547
- .dndev-table-grid .dndev-table-cell input[type="number"] {
6822
+ .dndev-table-grid .dndev-table-cell input[type='text'],
6823
+ .dndev-table-grid .dndev-table-cell input[type='number'] {
6548
6824
  border: none;
6549
6825
  background: transparent;
6550
6826
  width: 100%;
@@ -8147,6 +8423,10 @@ h4[data-variant='code'] {
8147
8423
  pointer-events: auto;
8148
8424
  }
8149
8425
 
8426
+ .dndev-cursor-pointer {
8427
+ cursor: pointer;
8428
+ }
8429
+
8150
8430
  .dndev-aspect-video {
8151
8431
  aspect-ratio: 16 / 9;
8152
8432
  }
@@ -1 +1 @@
1
- {"version":3,"file":"variants.d.ts","sourceRoot":"","sources":["../../src/utils/variants.ts"],"names":[],"mappings":"AAEA;;;GAGG;AAEH,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAGlE;;;;GAIG;AACH,eAAO,MAAM,eAAe;;8EAkB1B,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,YAAY,CAAC,OAAO,eAAe,CAAC,CAAC"}
1
+ {"version":3,"file":"variants.d.ts","sourceRoot":"","sources":["../../src/utils/variants.ts"],"names":[],"mappings":"AAEA;;;GAGG;AAEH,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAIlE;;;;GAIG;AACH,eAAO,MAAM,eAAe;;8EAkB1B,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,YAAY,CAAC,OAAO,eAAe,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@donotdev/components",
3
- "version": "0.0.12",
3
+ "version": "0.0.13",
4
4
  "type": "module",
5
5
  "private": false,
6
6
  "description": "Styled UI components for DoNotDev",