@donotdev/components 0.0.13 → 0.0.15

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 (209) hide show
  1. package/dist/advanced/Code/CodeContent.d.ts.map +1 -1
  2. package/dist/advanced/Code/CodeContent.js +5 -1
  3. package/dist/advanced/Code/CodeSkeleton.d.ts.map +1 -1
  4. package/dist/advanced/Code/CodeSkeleton.js +2 -1
  5. package/dist/advanced/ImageGallery/ImageGallery.d.ts +39 -0
  6. package/dist/advanced/ImageGallery/ImageGallery.d.ts.map +1 -0
  7. package/dist/advanced/ImageGallery/ImageGallery.js +138 -0
  8. package/dist/advanced/ImageGallery/index.d.ts +3 -0
  9. package/dist/advanced/ImageGallery/index.d.ts.map +1 -0
  10. package/dist/advanced/ImageGallery/index.js +2 -0
  11. package/dist/advanced/JsonViewer/JsonViewer.d.ts.map +1 -1
  12. package/dist/advanced/JsonViewer/JsonViewer.js +2 -1
  13. package/dist/advanced/index.d.ts +2 -0
  14. package/dist/advanced/index.d.ts.map +1 -1
  15. package/dist/advanced/index.js +1 -0
  16. package/dist/atomic/Accordion/AccordionPrimitive.d.ts +1 -1
  17. package/dist/atomic/Accordion/AccordionPrimitive.d.ts.map +1 -1
  18. package/dist/atomic/Accordion/AccordionPrimitive.js +1 -1
  19. package/dist/atomic/Accordion/index.d.ts.map +1 -1
  20. package/dist/atomic/Accordion/index.js +1 -1
  21. package/dist/atomic/AlertDialog/AlertDialogPrimitive.d.ts +1 -1
  22. package/dist/atomic/AlertDialog/AlertDialogPrimitive.d.ts.map +1 -1
  23. package/dist/atomic/AlertDialog/AlertDialogPrimitive.js +1 -1
  24. package/dist/atomic/AlertDialog/index.d.ts.map +1 -1
  25. package/dist/atomic/AlertDialog/index.js +1 -1
  26. package/dist/atomic/Avatar/AvatarPrimitive.d.ts +1 -2
  27. package/dist/atomic/Avatar/AvatarPrimitive.d.ts.map +1 -1
  28. package/dist/atomic/Avatar/AvatarPrimitive.js +1 -2
  29. package/dist/atomic/Avatar/index.d.ts +1 -1
  30. package/dist/atomic/Avatar/index.d.ts.map +1 -1
  31. package/dist/atomic/Avatar/index.js +1 -1
  32. package/dist/atomic/Badge/index.d.ts +1 -1
  33. package/dist/atomic/Button/index.d.ts +1 -1
  34. package/dist/atomic/Button/index.d.ts.map +1 -1
  35. package/dist/atomic/Checkbox/CheckboxPrimitive.d.ts +1 -1
  36. package/dist/atomic/Checkbox/CheckboxPrimitive.d.ts.map +1 -1
  37. package/dist/atomic/Checkbox/CheckboxPrimitive.js +1 -1
  38. package/dist/atomic/Checkbox/index.d.ts +17 -3
  39. package/dist/atomic/Checkbox/index.d.ts.map +1 -1
  40. package/dist/atomic/Checkbox/index.js +21 -5
  41. package/dist/atomic/Collapsible/CollapsiblePrimitive.d.ts +1 -2
  42. package/dist/atomic/Collapsible/CollapsiblePrimitive.d.ts.map +1 -1
  43. package/dist/atomic/Collapsible/CollapsiblePrimitive.js +1 -2
  44. package/dist/atomic/Collapsible/index.d.ts.map +1 -1
  45. package/dist/atomic/Collapsible/index.js +6 -2
  46. package/dist/atomic/ContextMenu/ContextMenuPrimitive.d.ts +1 -1
  47. package/dist/atomic/ContextMenu/ContextMenuPrimitive.d.ts.map +1 -1
  48. package/dist/atomic/ContextMenu/ContextMenuPrimitive.js +1 -1
  49. package/dist/atomic/ContextMenu/index.d.ts.map +1 -1
  50. package/dist/atomic/ContextMenu/index.js +1 -1
  51. package/dist/atomic/Dialog/DialogPrimitive.d.ts +1 -1
  52. package/dist/atomic/Dialog/DialogPrimitive.d.ts.map +1 -1
  53. package/dist/atomic/Dialog/DialogPrimitive.js +1 -1
  54. package/dist/atomic/DropdownMenu/DropdownMenuPrimitive.d.ts +1 -1
  55. package/dist/atomic/DropdownMenu/DropdownMenuPrimitive.d.ts.map +1 -1
  56. package/dist/atomic/DropdownMenu/DropdownMenuPrimitive.js +1 -1
  57. package/dist/atomic/DropdownMenu/index.d.ts.map +1 -1
  58. package/dist/atomic/DropdownMenu/index.js +1 -1
  59. package/dist/atomic/HoverCard/HoverCardPrimitive.d.ts +1 -1
  60. package/dist/atomic/HoverCard/HoverCardPrimitive.d.ts.map +1 -1
  61. package/dist/atomic/HoverCard/HoverCardPrimitive.js +1 -1
  62. package/dist/atomic/HoverCard/index.d.ts.map +1 -1
  63. package/dist/atomic/HoverCard/index.js +1 -1
  64. package/dist/atomic/Icons/Partner/providerIcons.d.ts.map +1 -1
  65. package/dist/atomic/Icons/Partner/providerIcons.js +17 -1
  66. package/dist/atomic/Input/index.d.ts +6 -1
  67. package/dist/atomic/Input/index.d.ts.map +1 -1
  68. package/dist/atomic/Input/index.js +10 -5
  69. package/dist/atomic/Label/FloatingLabel.d.ts +3 -1
  70. package/dist/atomic/Label/FloatingLabel.d.ts.map +1 -1
  71. package/dist/atomic/Label/FloatingLabel.js +2 -2
  72. package/dist/atomic/Label/LabelPrimitive.d.ts +1 -1
  73. package/dist/atomic/Label/LabelPrimitive.d.ts.map +1 -1
  74. package/dist/atomic/Label/LabelPrimitive.js +1 -1
  75. package/dist/atomic/Label/index.d.ts.map +1 -1
  76. package/dist/atomic/Label/index.js +1 -1
  77. package/dist/atomic/NavigationMenu/NavigationMenuPrimitive.d.ts +1 -1
  78. package/dist/atomic/NavigationMenu/NavigationMenuPrimitive.d.ts.map +1 -1
  79. package/dist/atomic/NavigationMenu/NavigationMenuPrimitive.js +1 -1
  80. package/dist/atomic/NavigationMenu/index.d.ts +1 -1
  81. package/dist/atomic/NavigationMenu/index.d.ts.map +1 -1
  82. package/dist/atomic/NavigationMenu/index.js +1 -1
  83. package/dist/atomic/Pagination/index.d.ts +7 -29
  84. package/dist/atomic/Pagination/index.d.ts.map +1 -1
  85. package/dist/atomic/Pagination/index.js +101 -71
  86. package/dist/atomic/PasswordInput/index.d.ts.map +1 -1
  87. package/dist/atomic/PasswordInput/index.js +1 -1
  88. package/dist/atomic/Popover/PopoverPrimitive.d.ts +1 -1
  89. package/dist/atomic/Popover/PopoverPrimitive.d.ts.map +1 -1
  90. package/dist/atomic/Popover/PopoverPrimitive.js +1 -1
  91. package/dist/atomic/Popover/index.d.ts.map +1 -1
  92. package/dist/atomic/Popover/index.js +1 -1
  93. package/dist/atomic/Portal/PortalPrimitive.d.ts +1 -1
  94. package/dist/atomic/Portal/PortalPrimitive.d.ts.map +1 -1
  95. package/dist/atomic/Portal/PortalPrimitive.js +1 -1
  96. package/dist/atomic/Portal/index.d.ts +1 -1
  97. package/dist/atomic/Portal/index.d.ts.map +1 -1
  98. package/dist/atomic/Portal/index.js +1 -1
  99. package/dist/atomic/Progress/ProgressPrimitive.d.ts +1 -1
  100. package/dist/atomic/Progress/ProgressPrimitive.d.ts.map +1 -1
  101. package/dist/atomic/Progress/ProgressPrimitive.js +1 -1
  102. package/dist/atomic/Progress/index.d.ts +1 -1
  103. package/dist/atomic/Progress/index.d.ts.map +1 -1
  104. package/dist/atomic/Progress/index.js +1 -1
  105. package/dist/atomic/RadioGroup/RadioGroupPrimitive.d.ts +1 -1
  106. package/dist/atomic/RadioGroup/RadioGroupPrimitive.d.ts.map +1 -1
  107. package/dist/atomic/RadioGroup/RadioGroupPrimitive.js +1 -1
  108. package/dist/atomic/RadioGroup/index.d.ts.map +1 -1
  109. package/dist/atomic/RadioGroup/index.js +1 -1
  110. package/dist/atomic/RangeInput/index.d.ts +45 -0
  111. package/dist/atomic/RangeInput/index.d.ts.map +1 -0
  112. package/dist/atomic/RangeInput/index.js +63 -0
  113. package/dist/atomic/Rating/index.d.ts +39 -0
  114. package/dist/atomic/Rating/index.d.ts.map +1 -0
  115. package/dist/atomic/Rating/index.js +115 -0
  116. package/dist/atomic/ScrollArea/ScrollAreaPrimitive.d.ts +1 -1
  117. package/dist/atomic/ScrollArea/ScrollAreaPrimitive.d.ts.map +1 -1
  118. package/dist/atomic/ScrollArea/ScrollAreaPrimitive.js +1 -1
  119. package/dist/atomic/ScrollArea/index.d.ts +1 -1
  120. package/dist/atomic/ScrollArea/index.d.ts.map +1 -1
  121. package/dist/atomic/ScrollArea/index.js +1 -1
  122. package/dist/atomic/Section/index.d.ts.map +1 -1
  123. package/dist/atomic/Section/index.js +1 -1
  124. package/dist/atomic/Select/SelectPrimitive.d.ts +1 -1
  125. package/dist/atomic/Select/SelectPrimitive.d.ts.map +1 -1
  126. package/dist/atomic/Select/SelectPrimitive.js +1 -1
  127. package/dist/atomic/Select/index.d.ts +2 -2
  128. package/dist/atomic/Select/index.d.ts.map +1 -1
  129. package/dist/atomic/Select/index.js +3 -3
  130. package/dist/atomic/Separator/SeparatorPrimitive.d.ts +1 -1
  131. package/dist/atomic/Separator/SeparatorPrimitive.d.ts.map +1 -1
  132. package/dist/atomic/Separator/SeparatorPrimitive.js +1 -1
  133. package/dist/atomic/Separator/index.d.ts +1 -1
  134. package/dist/atomic/Separator/index.d.ts.map +1 -1
  135. package/dist/atomic/Separator/index.js +1 -1
  136. package/dist/atomic/Sheet/SheetPrimitive.d.ts +1 -1
  137. package/dist/atomic/Sheet/SheetPrimitive.d.ts.map +1 -1
  138. package/dist/atomic/Sheet/SheetPrimitive.js +1 -1
  139. package/dist/atomic/Slider/SliderPrimitive.d.ts +1 -1
  140. package/dist/atomic/Slider/SliderPrimitive.d.ts.map +1 -1
  141. package/dist/atomic/Slider/SliderPrimitive.js +1 -1
  142. package/dist/atomic/Slider/index.d.ts +3 -2
  143. package/dist/atomic/Slider/index.d.ts.map +1 -1
  144. package/dist/atomic/Slider/index.js +9 -6
  145. package/dist/atomic/Stepper/index.d.ts +1 -1
  146. package/dist/atomic/Switch/SwitchPrimitive.d.ts +1 -1
  147. package/dist/atomic/Switch/SwitchPrimitive.d.ts.map +1 -1
  148. package/dist/atomic/Switch/SwitchPrimitive.js +1 -1
  149. package/dist/atomic/Switch/index.d.ts +1 -1
  150. package/dist/atomic/Switch/index.d.ts.map +1 -1
  151. package/dist/atomic/Switch/index.js +1 -1
  152. package/dist/atomic/Table/index.d.ts +18 -5
  153. package/dist/atomic/Table/index.d.ts.map +1 -1
  154. package/dist/atomic/Table/index.js +91 -31
  155. package/dist/atomic/Tabs/TabsPrimitive.d.ts +1 -2
  156. package/dist/atomic/Tabs/TabsPrimitive.d.ts.map +1 -1
  157. package/dist/atomic/Tabs/TabsPrimitive.js +1 -2
  158. package/dist/atomic/Tabs/index.d.ts +2 -2
  159. package/dist/atomic/Tabs/index.d.ts.map +1 -1
  160. package/dist/atomic/Tabs/index.js +1 -1
  161. package/dist/atomic/Text/index.d.ts +6 -0
  162. package/dist/atomic/Text/index.d.ts.map +1 -1
  163. package/dist/atomic/Text/index.js +2 -1
  164. package/dist/atomic/Textarea/index.d.ts +4 -0
  165. package/dist/atomic/Textarea/index.d.ts.map +1 -1
  166. package/dist/atomic/Textarea/index.js +3 -3
  167. package/dist/atomic/Toaster/Toast.types.d.ts +17 -0
  168. package/dist/atomic/Toaster/Toast.types.d.ts.map +1 -0
  169. package/dist/atomic/Toaster/Toast.types.js +2 -0
  170. package/dist/atomic/Toaster/ToastPrimitive.d.ts +2 -2
  171. package/dist/atomic/Toaster/ToastPrimitive.d.ts.map +1 -1
  172. package/dist/atomic/Toaster/ToastPrimitive.js +1 -1
  173. package/dist/atomic/Toaster/index.js +1 -1
  174. package/dist/atomic/Toggle/TogglePrimitive.d.ts +0 -1
  175. package/dist/atomic/Toggle/TogglePrimitive.d.ts.map +1 -1
  176. package/dist/atomic/Toggle/TogglePrimitive.js +0 -1
  177. package/dist/atomic/Toggle/index.d.ts +2 -2
  178. package/dist/atomic/Toggle/index.d.ts.map +1 -1
  179. package/dist/atomic/Toggle/index.js +1 -1
  180. package/dist/atomic/ToggleGroup/ToggleGroupPrimitive.d.ts +1 -1
  181. package/dist/atomic/ToggleGroup/ToggleGroupPrimitive.d.ts.map +1 -1
  182. package/dist/atomic/ToggleGroup/ToggleGroupPrimitive.js +1 -1
  183. package/dist/atomic/ToggleGroup/index.d.ts.map +1 -1
  184. package/dist/atomic/ToggleGroup/index.js +1 -1
  185. package/dist/atomic/Tooltip/TooltipPrimitive.d.ts +1 -1
  186. package/dist/atomic/Tooltip/TooltipPrimitive.d.ts.map +1 -1
  187. package/dist/atomic/Tooltip/TooltipPrimitive.js +1 -1
  188. package/dist/atomic/Tooltip/index.d.ts.map +1 -1
  189. package/dist/atomic/Tooltip/index.js +1 -1
  190. package/dist/atomic/VideoPlayer/index.d.ts +11 -1
  191. package/dist/atomic/VideoPlayer/index.d.ts.map +1 -1
  192. package/dist/atomic/VideoPlayer/index.js +6 -8
  193. package/dist/atomic/VisuallyHidden/VisuallyHiddenPrimitive.d.ts +0 -1
  194. package/dist/atomic/VisuallyHidden/VisuallyHiddenPrimitive.d.ts.map +1 -1
  195. package/dist/atomic/VisuallyHidden/VisuallyHiddenPrimitive.js +0 -1
  196. package/dist/atomic/index.d.ts +7 -0
  197. package/dist/atomic/index.d.ts.map +1 -1
  198. package/dist/atomic/index.js +5 -0
  199. package/dist/hooks/index.d.ts +2 -1
  200. package/dist/hooks/index.d.ts.map +1 -1
  201. package/dist/hooks/useToast.d.ts +1 -8
  202. package/dist/hooks/useToast.d.ts.map +1 -1
  203. package/dist/hooks/useToast.js +1 -0
  204. package/dist/index.d.ts +2 -0
  205. package/dist/index.d.ts.map +1 -1
  206. package/dist/index.js +4 -4
  207. package/dist/styles/index.css +365 -72
  208. package/dist/utils/variants.d.ts +1 -1
  209. package/package.json +5 -5
@@ -2201,6 +2201,20 @@ em {
2201
2201
  padding-inline-start: var(--gap-md);
2202
2202
  }
2203
2203
 
2204
+ /* Bare mode - no visual chrome, used inside FloatingLabel or custom wrappers */
2205
+
2206
+ [data-bare] {
2207
+ border: none !important;
2208
+ box-shadow: none !important;
2209
+ background: transparent !important;
2210
+ }
2211
+
2212
+ [data-bare]:hover,[data-bare]:focus,[data-bare]:focus-visible {
2213
+ border-color: transparent !important;
2214
+ box-shadow: none !important;
2215
+ outline: none !important;
2216
+ }
2217
+
2204
2218
  /* Password strength bar height override */
2205
2219
 
2206
2220
  .dndev-password-strength-bar {
@@ -3302,6 +3316,7 @@ em {
3302
3316
 
3303
3317
  .dndev-collapsible-content[data-state='open'] {
3304
3318
  animation: slideDown var(--dur-normal) var(--ease-in-out);
3319
+ overflow: visible; /* Allow dropdowns/overlays to escape when open */
3305
3320
  }
3306
3321
 
3307
3322
  .dndev-collapsible-content[data-state='closed'] {
@@ -4432,8 +4447,181 @@ em {
4432
4447
  padding-block: var(--gap-lg);
4433
4448
  }
4434
4449
 
4450
+ /* packages/components/src/advanced/ImageGallery/ImageGallery.css */
4451
+
4452
+ .image-gallery {
4453
+ display: flex;
4454
+ flex-direction: column;
4455
+ gap: var(--gap-md);
4456
+ outline: none;
4457
+ }
4458
+
4459
+ .image-gallery:focus-visible {
4460
+ outline: 2px solid var(--primary);
4461
+ outline-offset: 2px;
4462
+ border-radius: var(--radius-lg);
4463
+ }
4464
+
4465
+ /* Empty state */
4466
+
4467
+ .image-gallery--empty {
4468
+ display: flex;
4469
+ align-items: center;
4470
+ justify-content: center;
4471
+ background-color: var(--muted);
4472
+ border-radius: var(--radius-lg);
4473
+ }
4474
+
4475
+ .image-gallery__placeholder {
4476
+ color: var(--muted-foreground);
4477
+ font-size: var(--font-size-sm);
4478
+ }
4479
+
4480
+ /* Main image container */
4481
+
4482
+ .image-gallery__main {
4483
+ position: relative;
4484
+ width: 100%;
4485
+ overflow: hidden;
4486
+ border-radius: var(--radius-surface);
4487
+ background-color: var(--muted);
4488
+ }
4489
+
4490
+ .image-gallery__main-image {
4491
+ width: 100%;
4492
+ height: 100%;
4493
+ -o-object-fit: cover;
4494
+ object-fit: cover;
4495
+ display: block;
4496
+ position: relative;
4497
+ }
4498
+
4499
+ /* Navigation arrows */
4500
+
4501
+ .image-gallery__nav {
4502
+ position: absolute;
4503
+ top: 50%;
4504
+ transform: translateY(-50%);
4505
+ display: flex;
4506
+ align-items: center;
4507
+ justify-content: center;
4508
+ width: 44px;
4509
+ height: 44px;
4510
+ border: none;
4511
+ border-radius: var(--radius-full);
4512
+ background-color: var(--background);
4513
+ color: var(--foreground);
4514
+ cursor: pointer;
4515
+ opacity: 0;
4516
+ transition:
4517
+ opacity 0.2s ease,
4518
+ background-color 0.2s ease;
4519
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
4520
+ z-index: 2;
4521
+ }
4522
+
4523
+ .image-gallery__main:hover .image-gallery__nav,
4524
+ .image-gallery:focus-within .image-gallery__nav {
4525
+ opacity: 1;
4526
+ }
4527
+
4528
+ .image-gallery__nav:hover {
4529
+ background-color: var(--primary);
4530
+ color: var(--primary-foreground);
4531
+ }
4532
+
4533
+ .image-gallery__nav:focus-visible {
4534
+ opacity: 1;
4535
+ outline: 2px solid var(--primary);
4536
+ outline-offset: 2px;
4537
+ }
4538
+
4539
+ .image-gallery__nav--prev {
4540
+ inset-inline-start: var(--gap-md);
4541
+ }
4542
+
4543
+ .image-gallery__nav--next {
4544
+ inset-inline-end: var(--gap-md);
4545
+ }
4546
+
4547
+ /* Thumbnails */
4548
+
4549
+ .image-gallery__thumbnails {
4550
+ display: flex;
4551
+ flex-wrap: wrap;
4552
+ gap: var(--gap-sm);
4553
+ }
4554
+
4555
+ .image-gallery__thumbnail {
4556
+ flex: 0 0 auto;
4557
+ width: 80px;
4558
+ height: 60px;
4559
+ padding: 0;
4560
+ border: 2px solid transparent;
4561
+ border-radius: var(--radius-surface);
4562
+ overflow: hidden;
4563
+ cursor: pointer;
4564
+ background: none;
4565
+ transition:
4566
+ border-color 0.2s ease,
4567
+ transform 0.2s ease;
4568
+ }
4569
+
4570
+ .image-gallery__thumbnail:hover {
4571
+ border-color: var(--muted-foreground);
4572
+ }
4573
+
4574
+ .image-gallery__thumbnail:focus-visible {
4575
+ outline: 2px solid var(--primary);
4576
+ outline-offset: 2px;
4577
+ }
4578
+
4579
+ .image-gallery__thumbnail--selected {
4580
+ border-color: var(--primary);
4581
+ }
4582
+
4583
+ .image-gallery__thumbnail-image {
4584
+ width: 100%;
4585
+ height: 100%;
4586
+ -o-object-fit: cover;
4587
+ object-fit: cover;
4588
+ display: block;
4589
+ }
4590
+
4591
+ /* Responsive adjustments */
4592
+
4593
+ @media (max-width: 640px) {
4594
+ .image-gallery__thumbnail {
4595
+ width: 60px;
4596
+ height: 45px;
4597
+ }
4598
+
4599
+ .image-gallery__nav {
4600
+ width: 36px;
4601
+ height: 36px;
4602
+ opacity: 0.8;
4603
+ }
4604
+
4605
+ .image-gallery__nav svg {
4606
+ width: 20px;
4607
+ height: 20px;
4608
+ }
4609
+ }
4610
+
4435
4611
  /* packages/components/src/atomic/Input/Input.css */
4436
4612
 
4613
+ /* Hide number input spinners - cleaner UI for price/range inputs */
4614
+
4615
+ input[type='number']::-webkit-inner-spin-button,
4616
+ input[type='number']::-webkit-outer-spin-button {
4617
+ -webkit-appearance: none;
4618
+ margin: 0;
4619
+ }
4620
+
4621
+ input[type='number'] {
4622
+ -moz-appearance: textfield;
4623
+ }
4624
+
4437
4625
  /* Input with leading icon (search, etc.) */
4438
4626
 
4439
4627
  .dndev-input-with-leading-icon {
@@ -4643,6 +4831,9 @@ em {
4643
4831
  background-color: transparent;
4644
4832
  transition: all var(--dur-normal) var(--ease-in-out);
4645
4833
  text-align: start;
4834
+ /* Flex-aware: allow fieldset to shrink in flex containers */
4835
+ min-width: 0;
4836
+ width: 100%;
4646
4837
  }
4647
4838
 
4648
4839
  .dndev-floating-fieldset:hover {
@@ -4651,7 +4842,6 @@ em {
4651
4842
 
4652
4843
  .dndev-floating-fieldset:focus-within {
4653
4844
  border-color: var(--ring);
4654
- box-shadow: 0 0 0 2px var(--ring);
4655
4845
  }
4656
4846
 
4657
4847
  .dndev-floating-fieldset[data-disabled='true'] {
@@ -4668,6 +4858,11 @@ em {
4668
4858
  font-weight: 500;
4669
4859
  line-height: 1;
4670
4860
  color: var(--foreground);
4861
+ /* Ellipsis by default */
4862
+ max-width: 100%;
4863
+ overflow: hidden;
4864
+ text-overflow: ellipsis;
4865
+ white-space: nowrap;
4671
4866
  }
4672
4867
 
4673
4868
  .dndev-floating-legend label {
@@ -4681,30 +4876,23 @@ em {
4681
4876
  color: var(--muted-foreground);
4682
4877
  }
4683
4878
 
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 */
4879
+ /* Disable truncation when explicitly set to false */
4692
4880
 
4693
- .dndev-floating-fieldset .dndev-input {
4694
- border: none;
4695
- border-radius: var(--radius-interactive);
4696
- box-shadow: none;
4881
+ .dndev-floating-legend[data-truncate='false'] {
4882
+ max-width: none;
4883
+ overflow: visible;
4884
+ text-overflow: clip;
4885
+ white-space: normal;
4697
4886
  }
4698
4887
 
4699
- .dndev-floating-fieldset .dndev-input:hover {
4700
- border-color: transparent;
4701
- }
4888
+ /* Input inside fieldset uses bare mode via data-bare attribute (set by Input component) */
4702
4889
 
4703
- .dndev-floating-fieldset .dndev-input:focus,
4704
- .dndev-floating-fieldset .dndev-input:focus-visible {
4705
- border-color: transparent;
4890
+ /* This rule is kept for non-Input children that might need border removal */
4891
+
4892
+ .dndev-floating-fieldset > .dndev-input:not([data-bare]) {
4893
+ border: none;
4706
4894
  box-shadow: none;
4707
- outline: none;
4895
+ background: transparent;
4708
4896
  }
4709
4897
 
4710
4898
  /* packages/components/src/atomic/List/List.css */
@@ -5055,11 +5243,33 @@ em {
5055
5243
  /* packages/components/src/atomic/Pagination/Pagination.css */
5056
5244
 
5057
5245
  .dndev-pagination {
5246
+ display: flex;
5247
+ flex-direction: row;
5248
+ align-items: center;
5249
+ justify-content: space-between;
5250
+ gap: var(--gap-md);
5251
+ width: 100%;
5252
+ }
5253
+
5254
+ .dndev-pagination-info {
5255
+ display: none;
5256
+ }
5257
+
5258
+ .dndev-pagination-size {
5259
+ display: flex;
5260
+ align-items: center;
5261
+ }
5262
+
5263
+ .dndev-pagination-size-label {
5264
+ display: none;
5265
+ }
5266
+
5267
+ .dndev-pagination-nav {
5058
5268
  display: flex;
5059
5269
  align-items: center;
5060
5270
  justify-content: center;
5061
5271
  gap: var(--gap-sm);
5062
- flex-wrap: wrap;
5272
+ width: 100%;
5063
5273
  }
5064
5274
 
5065
5275
  .dndev-pagination-list {
@@ -5071,57 +5281,36 @@ em {
5071
5281
  margin: 0;
5072
5282
  }
5073
5283
 
5074
- .dndev-pagination-item {
5075
- display: flex;
5076
- align-items: center;
5077
- justify-content: center;
5078
- }
5079
-
5080
5284
  .dndev-pagination-button {
5081
- min-width: var(--touch-target);
5285
+ width: var(--touch-target);
5082
5286
  height: var(--touch-target);
5083
- display: flex;
5287
+ padding: 0;
5288
+ flex-shrink: 0;
5289
+ display: inline-flex;
5084
5290
  align-items: center;
5085
5291
  justify-content: center;
5086
- gap: var(--gap-sm);
5087
- border-radius: var(--radius-interactive);
5088
- font-weight: 500;
5089
- transition: var(--transition-fast);
5090
- cursor: pointer;
5091
- border: var(--border-hairline) solid var(--line-2);
5092
- background: transparent;
5093
- color: var(--foreground);
5094
- padding: var(--gap-sm) var(--gap-md);
5095
5292
  }
5096
5293
 
5097
- .dndev-pagination-button:hover:not(:disabled) {
5098
- background: var(--accent);
5099
- color: var(--accent-foreground);
5100
- }
5294
+ /* Desktop: Show all elements in one row */
5101
5295
 
5102
- .dndev-pagination-button:focus-visible {
5103
- outline: 2px solid var(--ring);
5104
- outline-offset: 2px;
5296
+ @media (min-width: 768px) {
5297
+ .dndev-pagination-info,
5298
+ .dndev-pagination-size {
5299
+ display: flex;
5300
+ align-items: center;
5301
+ white-space: nowrap;
5105
5302
  }
5106
5303
 
5107
- .dndev-pagination-button:disabled {
5108
- opacity: var(--opacity-muted);
5109
- cursor: not-allowed;
5304
+ .dndev-pagination-size-label {
5305
+ margin-right: var(--gap-sm);
5110
5306
  }
5111
5307
 
5112
- .dndev-pagination-button[aria-current='page'] {
5113
- background: var(--primary);
5114
- color: var(--primary-foreground);
5115
- border-color: var(--primary);
5308
+ .dndev-pagination-nav {
5309
+ justify-content: flex-end;
5310
+ width: auto;
5311
+ margin-left: auto;
5312
+ /* Push to right */
5116
5313
  }
5117
-
5118
- .dndev-pagination-ellipsis {
5119
- display: flex;
5120
- align-items: center;
5121
- justify-content: center;
5122
- width: var(--touch-target);
5123
- height: var(--touch-target);
5124
- color: var(--muted-foreground);
5125
5314
  }
5126
5315
 
5127
5316
  /* packages/components/src/atomic/Popover/Popover.css */
@@ -5852,8 +6041,12 @@ em {
5852
6041
 
5853
6042
  /* Adjust header padding when drag handle is present (sibling selector) */
5854
6043
 
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 {
6044
+ .dndev-sheet-content[data-side='bottom']
6045
+ .dndev-sheet-drag-handle
6046
+ ~ .dndev-sheet-header,
6047
+ .dndev-sheet-content[data-side='top']
6048
+ .dndev-sheet-drag-handle
6049
+ ~ .dndev-sheet-header {
5857
6050
  padding-top: 0;
5858
6051
  }
5859
6052
 
@@ -5911,12 +6104,9 @@ em {
5911
6104
  position: relative;
5912
6105
  margin-inline-start: auto;
5913
6106
  /* Push to end (RTL-aware: end = right in LTR, left in RTL) */
6107
+ margin-inline-end: var(--gap-sm);
6108
+ /* Spacing from edge - use margin not padding to keep icon centered */
5914
6109
  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;
5920
6110
  }
5921
6111
 
5922
6112
  .dndev-sheet-close:hover {
@@ -6701,7 +6891,21 @@ em {
6701
6891
  }
6702
6892
 
6703
6893
  .dndev-table-header {
6704
- /* Base header styles */
6894
+ background-color: var(--accent);
6895
+ }
6896
+
6897
+ /* Filter row above header */
6898
+
6899
+ .dndev-table-filter-row {
6900
+ border: 1px solid var(--border);
6901
+ border-bottom: none;
6902
+ }
6903
+
6904
+ .dndev-table-filter-row .dndev-table-head {
6905
+ background-color: var(--muted);
6906
+ padding: var(--gap-xs);
6907
+ height: auto;
6908
+ min-height: auto;
6705
6909
  }
6706
6910
 
6707
6911
  .dndev-table-body {
@@ -6763,22 +6967,34 @@ em {
6763
6967
  padding-block: var(--gap-sm);
6764
6968
  }
6765
6969
 
6766
- .dndev-table-head[data-sortable='true'] {
6970
+ /* Header cells use accent foreground for contrast */
6971
+
6972
+ .dndev-table-header .dndev-table-head {
6973
+ color: var(--accent-foreground);
6974
+ }
6975
+
6976
+ [data-sortable='true']:is(.dndev-table-header .dndev-table-head) {
6767
6977
  cursor: pointer;
6768
6978
  }
6769
6979
 
6770
- .dndev-table-head[data-align='center'] {
6980
+ [data-align='center']:is(.dndev-table-header .dndev-table-head) {
6771
6981
  text-align: center;
6772
6982
  }
6773
6983
 
6774
- .dndev-table-head[data-align='end'] {
6984
+ [data-align='end']:is(.dndev-table-header .dndev-table-head) {
6775
6985
  text-align: end;
6776
6986
  }
6777
6987
 
6778
- .dndev-table-head[data-align='start'] {
6988
+ [data-align='start']:is(.dndev-table-header .dndev-table-head) {
6779
6989
  text-align: start;
6780
6990
  }
6781
6991
 
6992
+ /* Active filter indicator */
6993
+
6994
+ .dndev-table-filter-active {
6995
+ color: var(--primary);
6996
+ }
6997
+
6782
6998
  /* Table cell (td) styles */
6783
6999
 
6784
7000
  .dndev-table-cell {
@@ -6786,6 +7002,7 @@ em {
6786
7002
  padding-inline: var(--gap-md);
6787
7003
  padding-block: var(--gap-sm);
6788
7004
  min-height: var(--touch-target);
7005
+ line-height: 1.5; /* Ensure consistent line height for empty cells */
6789
7006
  }
6790
7007
 
6791
7008
  .dndev-table-cell[data-align='center'] {
@@ -6864,6 +7081,64 @@ em {
6864
7081
  padding-inline-start: calc(var(--gap-md) + var(--icon-md) + var(--gap-sm));
6865
7082
  }
6866
7083
 
7084
+ /* Skeleton rows - apply standard skeleton pulse animation to entire rows */
7085
+
7086
+ /* Keep existing background colors (zebra striping) - just add opacity pulse */
7087
+
7088
+ .dndev-table-body .dndev-table-row.dndev-skeleton-row {
7089
+ animation: dndev-pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
7090
+ pointer-events: none;
7091
+
7092
+ /* Keep hover state but disabled (pointer-events: none prevents hover) */
7093
+ }
7094
+
7095
+ :is(.dndev-table-body .dndev-table-row.dndev-skeleton-row):hover {
7096
+ /* Inherit from parent .dndev-table-row hover styles */
7097
+ }
7098
+
7099
+ /* Even rows keep their var(--muted) background, just pulse */
7100
+
7101
+ .dndev-table-body .dndev-table-row.dndev-skeleton-row:nth-child(even) {
7102
+ animation: dndev-pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
7103
+ }
7104
+
7105
+ :is(.dndev-table-body .dndev-table-row.dndev-skeleton-row:nth-child(even)):hover {
7106
+ /* Inherit from parent .dndev-table-row:nth-child(even) hover styles */
7107
+ }
7108
+
7109
+ /* Skeleton bars inside cells - adapt to row background for visibility */
7110
+
7111
+ /* Odd rows (transparent background): use default var(--muted) skeleton */
7112
+
7113
+ /* Even rows (var(--muted) background): use lighter skeleton for contrast */
7114
+
7115
+ .dndev-table-body .dndev-table-row.dndev-skeleton-row .dndev-skeleton {
7116
+ background-color: var(--muted);
7117
+ }
7118
+
7119
+ .dndev-table-body
7120
+ .dndev-table-row.dndev-skeleton-row:nth-child(even)
7121
+ .dndev-skeleton {
7122
+ /* Even rows have var(--muted) background, so skeleton should be lighter for contrast */
7123
+ background-color: color-mix(
7124
+ in oklab,
7125
+ var(--muted) 60%,
7126
+ var(--foreground) 40%
7127
+ );
7128
+ }
7129
+
7130
+ /* Use the same pulse animation as standard skeleton (from Skeleton.css) */
7131
+
7132
+ @keyframes dndev-pulse {
7133
+ 0%,
7134
+ 100% {
7135
+ opacity: 1;
7136
+ }
7137
+ 50% {
7138
+ opacity: var(--opacity-muted);
7139
+ }
7140
+ }
7141
+
6867
7142
  /* packages/components/src/atomic/Tabs/Tabs.css */
6868
7143
 
6869
7144
  /* Tabs list: use flexbox for natural wrapping, not grid */
@@ -7234,6 +7509,24 @@ em {
7234
7509
  font-size: var(--font-size-sm);
7235
7510
  }
7236
7511
 
7512
+ /* Font weight overrides (after level rules, so weight prop overrides level defaults) */
7513
+
7514
+ .dndev-text-base[data-font-weight='normal'] {
7515
+ font-weight: var(--font-weight-normal);
7516
+ }
7517
+
7518
+ .dndev-text-base[data-font-weight='medium'] {
7519
+ font-weight: var(--font-weight-medium);
7520
+ }
7521
+
7522
+ .dndev-text-base[data-font-weight='semibold'] {
7523
+ font-weight: var(--font-weight-semibold);
7524
+ }
7525
+
7526
+ .dndev-text-base[data-font-weight='bold'] {
7527
+ font-weight: var(--font-weight-bold);
7528
+ }
7529
+
7237
7530
  /* packages/components/src/atomic/Toaster/Toaster.css */
7238
7531
 
7239
7532
  .dndev-toast-viewport {
@@ -9,7 +9,7 @@ import { type VariantProps } from 'class-variance-authority';
9
9
  * Used by: Card, DualCard, StackedCards, Dialog, Sheet, Alert
10
10
  */
11
11
  export declare const surfaceVariants: (props?: ({
12
- variant?: "default" | "outline" | "warning" | "success" | "muted" | "primary" | "secondary" | "accent" | "destructive" | "glass" | null | undefined;
12
+ variant?: "default" | "outline" | "primary" | "destructive" | "warning" | "success" | "muted" | "secondary" | "accent" | "glass" | null | undefined;
13
13
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
14
14
  export type SurfaceVariantProps = VariantProps<typeof surfaceVariants>;
15
15
  //# sourceMappingURL=variants.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@donotdev/components",
3
- "version": "0.0.13",
3
+ "version": "0.0.15",
4
4
  "type": "module",
5
5
  "private": false,
6
6
  "description": "Styled UI components for DoNotDev",
@@ -80,10 +80,10 @@
80
80
  "react-day-picker": "^9.6.4"
81
81
  },
82
82
  "peerDependencies": {
83
- "lucide-react": "^0.562.0",
84
- "react": "^19.2.3",
85
- "react-dom": "^19.2.3",
86
- "shiki": "^3.20.0"
83
+ "lucide-react": "^0.563.0",
84
+ "react": "^19.2.4",
85
+ "react-dom": "^19.2.4",
86
+ "shiki": "^3.22.0"
87
87
  },
88
88
  "peerDependenciesMeta": {
89
89
  "shiki": {