@dmsi/wedgekit-react 0.0.414 → 0.0.417

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 (124) hide show
  1. package/dist/chunk-3HBYDOYE.js +114 -0
  2. package/dist/{chunk-JIMJIJOF.js → chunk-5TGP5EFM.js} +2 -2
  3. package/dist/{chunk-2HMCS25C.js → chunk-6LHBY2IH.js} +1 -1
  4. package/dist/{chunk-6I5LZ2ZC.js → chunk-7AXHAWJX.js} +3 -3
  5. package/dist/{chunk-MQX7GFLX.js → chunk-CAQWLY5V.js} +24 -6
  6. package/dist/{chunk-QQ5G773N.js → chunk-DCLNAUC4.js} +1 -1
  7. package/dist/{chunk-GB4ZTUQV.js → chunk-DTW7JCBR.js} +36 -0
  8. package/dist/{chunk-OBY5EH47.js → chunk-HYJIDHAK.js} +6 -6
  9. package/dist/{chunk-LZGYABCX.js → chunk-IMOIZFJZ.js} +8 -8
  10. package/dist/chunk-KBJZUVLM.js +65 -0
  11. package/dist/{chunk-AA6GE3TH.js → chunk-LUPHOXAQ.js} +1 -1
  12. package/dist/chunk-NRNWEQD7.js +66 -0
  13. package/dist/{chunk-44TDIHUP.js → chunk-P3MIP2FD.js} +1 -1
  14. package/dist/chunk-PQWWVBSR.js +61 -0
  15. package/dist/{chunk-ERW5DEIO.js → chunk-RQLWSLVE.js} +1 -1
  16. package/dist/chunk-TYAQWVIM.js +159 -0
  17. package/dist/{chunk-KZZKQLKF.js → chunk-W55J2KJZ.js} +1 -1
  18. package/dist/chunk-Y2GK27RX.js +79 -0
  19. package/dist/components/Accordion.cjs +74 -2
  20. package/dist/components/Accordion.js +3 -3
  21. package/dist/components/CalendarRange.cjs +232 -53
  22. package/dist/components/CalendarRange.css +178 -65
  23. package/dist/components/CalendarRange.js +25 -17
  24. package/dist/components/Card.cjs +38 -2
  25. package/dist/components/Card.js +1 -1
  26. package/dist/components/CompactImagesPreview.cjs +59 -5
  27. package/dist/components/CompactImagesPreview.js +2 -2
  28. package/dist/components/DataGrid/ColumnSelectorHeaderCell/ColumnSelectorMenuOption.cjs +190 -11
  29. package/dist/components/DataGrid/ColumnSelectorHeaderCell/ColumnSelectorMenuOption.css +178 -65
  30. package/dist/components/DataGrid/ColumnSelectorHeaderCell/ColumnSelectorMenuOption.js +25 -17
  31. package/dist/components/DataGrid/ColumnSelectorHeaderCell/index.cjs +200 -21
  32. package/dist/components/DataGrid/ColumnSelectorHeaderCell/index.css +178 -65
  33. package/dist/components/DataGrid/ColumnSelectorHeaderCell/index.js +25 -17
  34. package/dist/components/DataGrid/PinnedColumns.cjs +215 -36
  35. package/dist/components/DataGrid/PinnedColumns.css +178 -65
  36. package/dist/components/DataGrid/PinnedColumns.js +25 -17
  37. package/dist/components/DataGrid/TableBody/LoadingCell.cjs +191 -12
  38. package/dist/components/DataGrid/TableBody/LoadingCell.css +178 -65
  39. package/dist/components/DataGrid/TableBody/LoadingCell.js +25 -17
  40. package/dist/components/DataGrid/TableBody/TableBodyRow.cjs +197 -18
  41. package/dist/components/DataGrid/TableBody/TableBodyRow.css +178 -65
  42. package/dist/components/DataGrid/TableBody/TableBodyRow.js +25 -17
  43. package/dist/components/DataGrid/TableBody/index.cjs +212 -33
  44. package/dist/components/DataGrid/TableBody/index.css +178 -65
  45. package/dist/components/DataGrid/TableBody/index.js +25 -17
  46. package/dist/components/DataGrid/index.cjs +301 -122
  47. package/dist/components/DataGrid/index.css +178 -65
  48. package/dist/components/DataGrid/index.js +25 -17
  49. package/dist/components/DataGrid/utils.cjs +191 -12
  50. package/dist/components/DataGrid/utils.css +178 -65
  51. package/dist/components/DataGrid/utils.js +25 -17
  52. package/dist/components/DateInput.cjs +251 -72
  53. package/dist/components/DateInput.css +178 -65
  54. package/dist/components/DateInput.js +25 -17
  55. package/dist/components/DateRangeInput.cjs +251 -72
  56. package/dist/components/DateRangeInput.css +178 -65
  57. package/dist/components/DateRangeInput.js +25 -17
  58. package/dist/components/Grid.cjs +81 -76
  59. package/dist/components/Grid.js +1 -1
  60. package/dist/components/ListGroup.cjs +553 -0
  61. package/dist/components/ListGroup.js +11 -0
  62. package/dist/components/MobileDataGrid/ColumnList.cjs +36 -0
  63. package/dist/components/MobileDataGrid/ColumnList.js +3 -3
  64. package/dist/components/MobileDataGrid/ColumnSelector/index.cjs +198 -19
  65. package/dist/components/MobileDataGrid/ColumnSelector/index.css +178 -65
  66. package/dist/components/MobileDataGrid/ColumnSelector/index.js +25 -17
  67. package/dist/components/MobileDataGrid/MobileDataGridCard/index.cjs +36 -0
  68. package/dist/components/MobileDataGrid/MobileDataGridCard/index.js +2 -2
  69. package/dist/components/MobileDataGrid/MobileDataGridHeader.cjs +242 -27
  70. package/dist/components/MobileDataGrid/MobileDataGridHeader.css +178 -65
  71. package/dist/components/MobileDataGrid/MobileDataGridHeader.js +25 -17
  72. package/dist/components/MobileDataGrid/RowDetailModalProvider/ModalContent.cjs +36 -0
  73. package/dist/components/MobileDataGrid/RowDetailModalProvider/ModalContent.js +2 -2
  74. package/dist/components/MobileDataGrid/RowDetailModalProvider/index.cjs +36 -0
  75. package/dist/components/MobileDataGrid/RowDetailModalProvider/index.js +5 -5
  76. package/dist/components/MobileDataGrid/index.cjs +742 -527
  77. package/dist/components/MobileDataGrid/index.css +178 -65
  78. package/dist/components/MobileDataGrid/index.js +25 -17
  79. package/dist/components/Modal.js +2 -2
  80. package/dist/components/Notification.cjs +36 -0
  81. package/dist/components/Notification.js +1 -1
  82. package/dist/components/PDFViewer/PDFElement.cjs +36 -0
  83. package/dist/components/PDFViewer/PDFElement.js +2 -2
  84. package/dist/components/PDFViewer/PDFNavigation.cjs +36 -0
  85. package/dist/components/PDFViewer/PDFNavigation.js +2 -2
  86. package/dist/components/PDFViewer/index.cjs +36 -0
  87. package/dist/components/PDFViewer/index.js +8 -111
  88. package/dist/components/Pagination.cjs +427 -0
  89. package/dist/components/Pagination.js +10 -0
  90. package/dist/components/ProductImagePreview/index.cjs +139 -127
  91. package/dist/components/ProductImagePreview/index.js +5 -5
  92. package/dist/components/SideMenuGroup.cjs +36 -0
  93. package/dist/components/SideMenuGroup.js +1 -1
  94. package/dist/components/SideMenuItem.cjs +36 -0
  95. package/dist/components/SideMenuItem.js +1 -1
  96. package/dist/components/SimpleTable.cjs +521 -0
  97. package/dist/components/SimpleTable.js +10 -0
  98. package/dist/components/Stack.cjs +36 -0
  99. package/dist/components/Stack.js +1 -1
  100. package/dist/components/Swatch.cjs +36 -0
  101. package/dist/components/Swatch.js +1 -1
  102. package/dist/components/Time.cjs +36 -0
  103. package/dist/components/Time.js +1 -1
  104. package/dist/components/Tooltip.cjs +1 -1
  105. package/dist/components/Tooltip.js +1 -1
  106. package/dist/components/Upload.cjs +36 -0
  107. package/dist/components/Upload.js +1 -1
  108. package/dist/components/index.cjs +739 -131
  109. package/dist/components/index.css +178 -65
  110. package/dist/components/index.js +37 -17
  111. package/dist/index.css +178 -65
  112. package/package.json +1 -1
  113. package/src/components/Card.tsx +60 -2
  114. package/src/components/CompactImagesPreview.tsx +54 -30
  115. package/src/components/Grid.tsx +59 -91
  116. package/src/components/ListGroup.tsx +82 -0
  117. package/src/components/Pagination.tsx +182 -0
  118. package/src/components/SimpleTable.tsx +77 -0
  119. package/src/components/Stack.tsx +76 -0
  120. package/src/components/Tooltip.tsx +4 -3
  121. package/src/components/index.ts +4 -0
  122. package/dist/chunk-ER6RCOH3.js +0 -97
  123. package/dist/chunk-EZCH4PQS.js +0 -29
  124. package/dist/{chunk-D6YCMQPO.js → chunk-SBCFBHNG.js} +3 -3
package/dist/index.css CHANGED
@@ -668,6 +668,9 @@
668
668
  .ml-auto {
669
669
  margin-left: auto;
670
670
  }
671
+ .box-content {
672
+ box-sizing: content-box;
673
+ }
671
674
  .block {
672
675
  display: block;
673
676
  }
@@ -819,6 +822,9 @@
819
822
  .\!w-20 {
820
823
  width: calc(var(--spacing) * 20) !important;
821
824
  }
825
+ .w-2\/3 {
826
+ width: calc(2/3 * 100%);
827
+ }
822
828
  .w-3 {
823
829
  width: calc(var(--spacing) * 3);
824
830
  }
@@ -939,6 +945,9 @@
939
945
  .grow-0 {
940
946
  flex-grow: 0;
941
947
  }
948
+ .border-collapse {
949
+ border-collapse: collapse;
950
+ }
942
951
  .translate-x-0 {
943
952
  --tw-translate-x: calc(var(--spacing) * 0);
944
953
  translate: var(--tw-translate-x) var(--tw-translate-y);
@@ -974,6 +983,9 @@
974
983
  .cursor-grab {
975
984
  cursor: grab;
976
985
  }
986
+ .cursor-not-allowed {
987
+ cursor: not-allowed;
988
+ }
977
989
  .cursor-pointer {
978
990
  cursor: pointer;
979
991
  }
@@ -1052,6 +1064,9 @@
1052
1064
  .justify-start {
1053
1065
  justify-content: flex-start;
1054
1066
  }
1067
+ .gap-0 {
1068
+ gap: calc(var(--spacing) * 0);
1069
+ }
1055
1070
  .gap-0\.5 {
1056
1071
  gap: calc(var(--spacing) * 0.5);
1057
1072
  }
@@ -1262,6 +1277,10 @@
1262
1277
  border-inline-style: var(--tw-border-style);
1263
1278
  border-inline-width: 0px;
1264
1279
  }
1280
+ .border-x-1 {
1281
+ border-inline-style: var(--tw-border-style);
1282
+ border-inline-width: 1px;
1283
+ }
1265
1284
  .border-y {
1266
1285
  border-block-style: var(--tw-border-style);
1267
1286
  border-block-width: 1px;
@@ -1278,6 +1297,10 @@
1278
1297
  border-right-style: var(--tw-border-style);
1279
1298
  border-right-width: 0px;
1280
1299
  }
1300
+ .border-r-1 {
1301
+ border-right-style: var(--tw-border-style);
1302
+ border-right-width: 1px;
1303
+ }
1281
1304
  .border-b {
1282
1305
  border-bottom-style: var(--tw-border-style);
1283
1306
  border-bottom-width: 1px;
@@ -1286,6 +1309,10 @@
1286
1309
  border-left-style: var(--tw-border-style);
1287
1310
  border-left-width: 1px;
1288
1311
  }
1312
+ .border-l-1 {
1313
+ border-left-style: var(--tw-border-style);
1314
+ border-left-width: 1px;
1315
+ }
1289
1316
  .border-dashed {
1290
1317
  --tw-border-style: dashed;
1291
1318
  border-style: dashed;
@@ -1863,6 +1890,9 @@
1863
1890
  .\!p-0 {
1864
1891
  padding: calc(var(--spacing) * 0) !important;
1865
1892
  }
1893
+ .p-0 {
1894
+ padding: calc(var(--spacing) * 0);
1895
+ }
1866
1896
  .p-0\.5 {
1867
1897
  padding: calc(var(--spacing) * 0.5);
1868
1898
  }
@@ -1977,12 +2007,33 @@
1977
2007
  .pt-\[7px\] {
1978
2008
  padding-top: 7px;
1979
2009
  }
2010
+ .pt-mobile-component-padding {
2011
+ padding-top: var(--spacing-mobile-component-padding);
2012
+ }
2013
+ .pt-mobile-container-padding {
2014
+ padding-top: var(--spacing-mobile-container-padding);
2015
+ }
2016
+ .pt-mobile-layout-padding {
2017
+ padding-top: var(--spacing-mobile-layout-padding);
2018
+ }
2019
+ .pr-mobile-component-padding {
2020
+ padding-right: var(--spacing-mobile-component-padding);
2021
+ }
2022
+ .pr-mobile-container-padding {
2023
+ padding-right: var(--spacing-mobile-container-padding);
2024
+ }
2025
+ .pr-mobile-layout-padding {
2026
+ padding-right: var(--spacing-mobile-layout-padding);
2027
+ }
1980
2028
  .pb-2 {
1981
2029
  padding-bottom: calc(var(--spacing) * 2);
1982
2030
  }
1983
2031
  .pb-mobile-component-padding {
1984
2032
  padding-bottom: var(--spacing-mobile-component-padding);
1985
2033
  }
2034
+ .pb-mobile-container-padding {
2035
+ padding-bottom: var(--spacing-mobile-container-padding);
2036
+ }
1986
2037
  .pb-mobile-layout-padding {
1987
2038
  padding-bottom: var(--spacing-mobile-layout-padding);
1988
2039
  }
@@ -2004,6 +2055,12 @@
2004
2055
  .pl-mobile-component-padding {
2005
2056
  padding-left: var(--spacing-mobile-component-padding);
2006
2057
  }
2058
+ .pl-mobile-container-padding {
2059
+ padding-left: var(--spacing-mobile-container-padding);
2060
+ }
2061
+ .pl-mobile-layout-padding {
2062
+ padding-left: var(--spacing-mobile-layout-padding);
2063
+ }
2007
2064
  .text-center {
2008
2065
  text-align: center;
2009
2066
  }
@@ -2013,6 +2070,9 @@
2013
2070
  .text-right {
2014
2071
  text-align: right;
2015
2072
  }
2073
+ .align-middle {
2074
+ vertical-align: middle;
2075
+ }
2016
2076
  .font-sans {
2017
2077
  font-family: var(--font-sans);
2018
2078
  }
@@ -2221,6 +2281,9 @@
2221
2281
  .text-text-action-normal {
2222
2282
  color: var(--color-text-action-normal);
2223
2283
  }
2284
+ .text-text-action-primary-disabled {
2285
+ color: var(--color-text-action-primary-disabled);
2286
+ }
2224
2287
  .text-text-action-primary-normal {
2225
2288
  color: var(--color-text-action-primary-normal);
2226
2289
  }
@@ -2299,6 +2362,9 @@
2299
2362
  .opacity-40 {
2300
2363
  opacity: 40%;
2301
2364
  }
2365
+ .opacity-50 {
2366
+ opacity: 50%;
2367
+ }
2302
2368
  .opacity-70 {
2303
2369
  opacity: 70%;
2304
2370
  }
@@ -3038,6 +3104,13 @@
3038
3104
  }
3039
3105
  }
3040
3106
  }
3107
+ .hover\:bg-background-grouped-secondary-normal {
3108
+ &:hover {
3109
+ @media (hover: hover) {
3110
+ background-color: var(--color-background-grouped-secondary-normal);
3111
+ }
3112
+ }
3113
+ }
3041
3114
  .hover\:\!text-brand-text-on-action-primary-hover {
3042
3115
  &:hover {
3043
3116
  @media (hover: hover) {
@@ -3184,6 +3257,11 @@
3184
3257
  background-color: var(--color-background-action-secondary-hover);
3185
3258
  }
3186
3259
  }
3260
+ .focus\:bg-background-grouped-secondary-normal {
3261
+ &:focus {
3262
+ background-color: var(--color-background-grouped-secondary-normal);
3263
+ }
3264
+ }
3187
3265
  .focus\:text-text-action-critical-hover {
3188
3266
  &:focus {
3189
3267
  color: var(--color-text-action-critical-hover);
@@ -3394,6 +3472,11 @@
3394
3472
  pointer-events: none;
3395
3473
  }
3396
3474
  }
3475
+ .disabled\:cursor-default {
3476
+ &:disabled {
3477
+ cursor: default;
3478
+ }
3479
+ }
3397
3480
  .disabled\:\!border-border-primary-normal {
3398
3481
  &:disabled {
3399
3482
  border-color: var(--color-border-primary-normal) !important;
@@ -3700,11 +3783,6 @@
3700
3783
  width: 100%;
3701
3784
  }
3702
3785
  }
3703
- .sm\:grid-cols-2 {
3704
- @media (width >= 320px) {
3705
- grid-template-columns: repeat(2, minmax(0, 1fr));
3706
- }
3707
- }
3708
3786
  .md\:block {
3709
3787
  @media (width >= 768px) {
3710
3788
  display: block;
@@ -3735,66 +3813,6 @@
3735
3813
  gap: calc(var(--spacing) * 2);
3736
3814
  }
3737
3815
  }
3738
- .lg\:grid-cols-4 {
3739
- @media (width >= 1024px) {
3740
- grid-template-columns: repeat(4, minmax(0, 1fr));
3741
- }
3742
- }
3743
- .xl\:grid-cols-4 {
3744
- @media (width >= 1280px) {
3745
- grid-template-columns: repeat(4, minmax(0, 1fr));
3746
- }
3747
- }
3748
- .xl\:grid-cols-5 {
3749
- @media (width >= 1280px) {
3750
- grid-template-columns: repeat(5, minmax(0, 1fr));
3751
- }
3752
- }
3753
- .xl\:grid-cols-6 {
3754
- @media (width >= 1280px) {
3755
- grid-template-columns: repeat(6, minmax(0, 1fr));
3756
- }
3757
- }
3758
- .xl\:grid-cols-8 {
3759
- @media (width >= 1280px) {
3760
- grid-template-columns: repeat(8, minmax(0, 1fr));
3761
- }
3762
- }
3763
- .\32xl\:grid-cols-6 {
3764
- @media (width >= 1536px) {
3765
- grid-template-columns: repeat(6, minmax(0, 1fr));
3766
- }
3767
- }
3768
- .\32xl\:grid-cols-7 {
3769
- @media (width >= 1536px) {
3770
- grid-template-columns: repeat(7, minmax(0, 1fr));
3771
- }
3772
- }
3773
- .\32xl\:grid-cols-8 {
3774
- @media (width >= 1536px) {
3775
- grid-template-columns: repeat(8, minmax(0, 1fr));
3776
- }
3777
- }
3778
- .\32xl\:grid-cols-9 {
3779
- @media (width >= 1536px) {
3780
- grid-template-columns: repeat(9, minmax(0, 1fr));
3781
- }
3782
- }
3783
- .\32xl\:grid-cols-10 {
3784
- @media (width >= 1536px) {
3785
- grid-template-columns: repeat(10, minmax(0, 1fr));
3786
- }
3787
- }
3788
- .\32xl\:grid-cols-11 {
3789
- @media (width >= 1536px) {
3790
- grid-template-columns: repeat(11, minmax(0, 1fr));
3791
- }
3792
- }
3793
- .\32xl\:grid-cols-12 {
3794
- @media (width >= 1536px) {
3795
- grid-template-columns: repeat(12, minmax(0, 1fr));
3796
- }
3797
- }
3798
3816
  .compact\:mt-desktop-compact-component-gap {
3799
3817
  &:where([data-compact]) {
3800
3818
  margin-top: var(--spacing-desktop-compact-component-gap);
@@ -3900,11 +3918,46 @@
3900
3918
  padding-block: var(--spacing-desktop-compact-layout-padding);
3901
3919
  }
3902
3920
  }
3921
+ .compact\:pt-desktop-compact-component-padding {
3922
+ &:where([data-compact]) {
3923
+ padding-top: var(--spacing-desktop-compact-component-padding);
3924
+ }
3925
+ }
3926
+ .compact\:pt-desktop-compact-container-padding {
3927
+ &:where([data-compact]) {
3928
+ padding-top: var(--spacing-desktop-compact-container-padding);
3929
+ }
3930
+ }
3931
+ .compact\:pt-desktop-compact-layout-padding {
3932
+ &:where([data-compact]) {
3933
+ padding-top: var(--spacing-desktop-compact-layout-padding);
3934
+ }
3935
+ }
3936
+ .compact\:pr-desktop-compact-component-padding {
3937
+ &:where([data-compact]) {
3938
+ padding-right: var(--spacing-desktop-compact-component-padding);
3939
+ }
3940
+ }
3941
+ .compact\:pr-desktop-compact-container-padding {
3942
+ &:where([data-compact]) {
3943
+ padding-right: var(--spacing-desktop-compact-container-padding);
3944
+ }
3945
+ }
3946
+ .compact\:pr-desktop-compact-layout-padding {
3947
+ &:where([data-compact]) {
3948
+ padding-right: var(--spacing-desktop-compact-layout-padding);
3949
+ }
3950
+ }
3903
3951
  .compact\:pb-desktop-compact-component-padding {
3904
3952
  &:where([data-compact]) {
3905
3953
  padding-bottom: var(--spacing-desktop-compact-component-padding);
3906
3954
  }
3907
3955
  }
3956
+ .compact\:pb-desktop-compact-container-padding {
3957
+ &:where([data-compact]) {
3958
+ padding-bottom: var(--spacing-desktop-compact-container-padding);
3959
+ }
3960
+ }
3908
3961
  .compact\:pb-desktop-compact-layout-padding {
3909
3962
  &:where([data-compact]) {
3910
3963
  padding-bottom: var(--spacing-desktop-compact-layout-padding);
@@ -3915,6 +3968,16 @@
3915
3968
  padding-left: var(--spacing-desktop-compact-component-padding);
3916
3969
  }
3917
3970
  }
3971
+ .compact\:pl-desktop-compact-container-padding {
3972
+ &:where([data-compact]) {
3973
+ padding-left: var(--spacing-desktop-compact-container-padding);
3974
+ }
3975
+ }
3976
+ .compact\:pl-desktop-compact-layout-padding {
3977
+ &:where([data-compact]) {
3978
+ padding-left: var(--spacing-desktop-compact-layout-padding);
3979
+ }
3980
+ }
3918
3981
  .compact\:text-caption-desktop-compact {
3919
3982
  &:where([data-compact]) {
3920
3983
  font-size: var(--text-caption-desktop-compact);
@@ -4086,6 +4149,11 @@
4086
4149
  flex-grow: 0;
4087
4150
  }
4088
4151
  }
4152
+ .desktop\:grid-cols-4 {
4153
+ @container root (width >= 48rem) {
4154
+ grid-template-columns: repeat(4, minmax(0, 1fr));
4155
+ }
4156
+ }
4089
4157
  .desktop\:flex-col {
4090
4158
  @container root (width >= 48rem) {
4091
4159
  flex-direction: column;
@@ -4221,16 +4289,51 @@
4221
4289
  padding-block: var(--spacing-desktop-layout-padding);
4222
4290
  }
4223
4291
  }
4292
+ .desktop\:pt-desktop-component-padding {
4293
+ @container root (width >= 48rem) {
4294
+ padding-top: var(--spacing-desktop-component-padding);
4295
+ }
4296
+ }
4297
+ .desktop\:pt-desktop-container-padding {
4298
+ @container root (width >= 48rem) {
4299
+ padding-top: var(--spacing-desktop-container-padding);
4300
+ }
4301
+ }
4224
4302
  .desktop\:pt-desktop-layout-gap {
4225
4303
  @container root (width >= 48rem) {
4226
4304
  padding-top: var(--spacing-desktop-layout-gap);
4227
4305
  }
4228
4306
  }
4307
+ .desktop\:pt-desktop-layout-padding {
4308
+ @container root (width >= 48rem) {
4309
+ padding-top: var(--spacing-desktop-layout-padding);
4310
+ }
4311
+ }
4312
+ .desktop\:pr-desktop-component-padding {
4313
+ @container root (width >= 48rem) {
4314
+ padding-right: var(--spacing-desktop-component-padding);
4315
+ }
4316
+ }
4317
+ .desktop\:pr-desktop-container-padding {
4318
+ @container root (width >= 48rem) {
4319
+ padding-right: var(--spacing-desktop-container-padding);
4320
+ }
4321
+ }
4322
+ .desktop\:pr-desktop-layout-padding {
4323
+ @container root (width >= 48rem) {
4324
+ padding-right: var(--spacing-desktop-layout-padding);
4325
+ }
4326
+ }
4229
4327
  .desktop\:pb-desktop-component-padding {
4230
4328
  @container root (width >= 48rem) {
4231
4329
  padding-bottom: var(--spacing-desktop-component-padding);
4232
4330
  }
4233
4331
  }
4332
+ .desktop\:pb-desktop-container-padding {
4333
+ @container root (width >= 48rem) {
4334
+ padding-bottom: var(--spacing-desktop-container-padding);
4335
+ }
4336
+ }
4234
4337
  .desktop\:pb-desktop-layout-padding {
4235
4338
  @container root (width >= 48rem) {
4236
4339
  padding-bottom: var(--spacing-desktop-layout-padding);
@@ -4241,6 +4344,16 @@
4241
4344
  padding-left: var(--spacing-desktop-component-padding);
4242
4345
  }
4243
4346
  }
4347
+ .desktop\:pl-desktop-container-padding {
4348
+ @container root (width >= 48rem) {
4349
+ padding-left: var(--spacing-desktop-container-padding);
4350
+ }
4351
+ }
4352
+ .desktop\:pl-desktop-layout-padding {
4353
+ @container root (width >= 48rem) {
4354
+ padding-left: var(--spacing-desktop-layout-padding);
4355
+ }
4356
+ }
4244
4357
  .desktop\:text-caption-desktop {
4245
4358
  @container root (width >= 48rem) {
4246
4359
  font-size: var(--text-caption-desktop);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@dmsi/wedgekit-react",
3
3
  "private": false,
4
- "version": "0.0.414",
4
+ "version": "0.0.417",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "build": "tsup",
@@ -7,17 +7,75 @@ export function Card(
7
7
  selected?: boolean;
8
8
  testid?: string;
9
9
  as?: Tags;
10
+ /**
11
+ * When true applies both horizontal and vertical padding using layout spacing tokens.
12
+ * If none of padding / paddingX / paddingY are provided the original desktop-only padding class is applied for backward compatibility.
13
+ */
14
+ padding?: boolean;
15
+ /** Horizontal only padding (overrides padding for X axis if both supplied). */
16
+ paddingX?: boolean;
17
+ /** Vertical only padding (overrides padding for Y axis if both supplied). */
18
+ paddingY?: boolean;
19
+ /** Bottom only padding */
20
+ paddingBottom?: boolean;
21
+ /** Top only padding */
22
+ paddingTop?: boolean;
23
+ /** Left only padding */
24
+ paddingLeft?: boolean;
25
+ /** Right only padding */
26
+ paddingRight?: boolean;
10
27
  },
11
28
  ) {
12
- const { children, selected, testid, ...rest } = props;
29
+ const {
30
+ children,
31
+ selected,
32
+ testid,
33
+ padding,
34
+ paddingX,
35
+ paddingY,
36
+ paddingBottom,
37
+ paddingTop,
38
+ paddingLeft,
39
+ paddingRight,
40
+ ...rest
41
+ } = props;
13
42
 
14
43
  const CardComponent = props.as || "div";
44
+ const anyPaddingPropSpecified =
45
+ padding !== undefined ||
46
+ paddingX !== undefined ||
47
+ paddingY !== undefined ||
48
+ paddingBottom !== undefined ||
49
+ paddingTop !== undefined ||
50
+ paddingLeft !== undefined ||
51
+ paddingRight !== undefined;
52
+
53
+ const paddingClasses = clsx(
54
+ // Backward compatibility: if no new padding props provided keep existing class.
55
+ !anyPaddingPropSpecified && "p-desktop-layout-padding",
56
+ // New responsive spacing tokens (mirrors Stack for layout sizing)
57
+ padding &&
58
+ "p-mobile-layout-padding desktop:p-desktop-layout-padding compact:p-desktop-compact-layout-padding",
59
+ paddingX &&
60
+ "px-mobile-layout-padding desktop:px-desktop-layout-padding compact:px-desktop-compact-layout-padding",
61
+ paddingY &&
62
+ "py-mobile-layout-padding desktop:py-desktop-layout-padding compact:py-desktop-compact-layout-padding",
63
+ paddingBottom &&
64
+ "pb-mobile-layout-padding desktop:pb-desktop-layout-padding compact:pb-desktop-compact-layout-padding",
65
+ paddingTop &&
66
+ "pt-mobile-layout-padding desktop:pt-desktop-layout-padding compact:pt-desktop-compact-layout-padding",
67
+ paddingLeft &&
68
+ "pl-mobile-layout-padding desktop:pl-desktop-layout-padding compact:pl-desktop-compact-layout-padding",
69
+ paddingRight &&
70
+ "pr-mobile-layout-padding desktop:pr-desktop-layout-padding compact:pr-desktop-compact-layout-padding",
71
+ );
15
72
  return (
16
73
  <CardComponent
17
74
  {...rest}
18
75
  data-testid={testid}
19
76
  className={clsx(
20
- "rounded-sm p-desktop-layout-padding",
77
+ "rounded-sm",
78
+ paddingClasses,
21
79
  selected
22
80
  ? "border-2 border-border-primary-focus"
23
81
  : "border border-border-primary-normal",
@@ -9,12 +9,18 @@ type CompactImagesPreviewProps = {
9
9
  sources: ImageSource[];
10
10
  currentSourceIndex: number;
11
11
  placeholderImageUri?: string;
12
+ /**
13
+ * Optional alt text to use when falling back to the placeholder image due to an image load error
14
+ * or when there are no valid sources. Defaults to "placeholder image".
15
+ */
16
+ placeholderAlt?: string;
12
17
  activeImageWidth?: number | string;
13
18
  activeImageHeight?: number | string;
14
19
  thumbnailWidth?: number;
15
20
  thumbnailHeight?: number;
16
21
  enableThumbnailBorder?: boolean;
17
22
  onChangeSource: (newIndex: number) => void;
23
+ onMainImageClick?: () => void;
18
24
  };
19
25
  export function CompactImagesPreview(props: CompactImagesPreviewProps) {
20
26
  const {
@@ -26,11 +32,25 @@ export function CompactImagesPreview(props: CompactImagesPreviewProps) {
26
32
  thumbnailHeight = 30,
27
33
  enableThumbnailBorder = false,
28
34
  placeholderImageUri,
35
+ placeholderAlt = "placeholder image",
29
36
  onChangeSource,
37
+ onMainImageClick,
30
38
  } = props;
31
39
  const isMobile = useMatchesMobile();
32
40
  const imagesCount = sources.length;
33
41
 
42
+ const handleImgError = useCallback(
43
+ (e: React.SyntheticEvent<HTMLImageElement>) => {
44
+ if (!placeholderImageUri) return;
45
+ const img = e.currentTarget;
46
+ // Prevent infinite loop if placeholder also 404s
47
+ if (img.src === placeholderImageUri) return;
48
+ img.src = placeholderImageUri;
49
+ if (!img.alt) img.alt = placeholderAlt;
50
+ },
51
+ [placeholderImageUri, placeholderAlt],
52
+ );
53
+
34
54
  const handleThumbnailClick = useCallback(
35
55
  (newIndex: number) => {
36
56
  if (newIndex === currentSourceIndex) return;
@@ -55,13 +75,16 @@ export function CompactImagesPreview(props: CompactImagesPreviewProps) {
55
75
  objectFit: "cover",
56
76
  }}
57
77
  src={placeholderImageUri}
58
- alt={"placeholder image"}
78
+ alt={placeholderAlt}
79
+ onError={handleImgError}
80
+ onClick={onMainImageClick}
59
81
  />
60
82
  );
61
83
  const currentSource = sources[currentSourceIndex];
62
84
  return (
63
85
  <Stack sizing="layout">
64
86
  <img
87
+ className={clsx("object-center", onMainImageClick && "cursor-pointer")}
65
88
  style={{
66
89
  width: isMobile ? "100%" : activeImageWidth,
67
90
  height: activeImageHeight,
@@ -70,37 +93,38 @@ export function CompactImagesPreview(props: CompactImagesPreviewProps) {
70
93
  }}
71
94
  src={currentSource.uri}
72
95
  alt={currentSource.name}
96
+ onError={handleImgError}
97
+ onClick={onMainImageClick}
73
98
  />
74
- {sources.length > 1 && (
75
- <div className="flex flex-row flex-wrap items-center gap-3">
76
- {sources.map((source, index) => (
77
- <button
78
- key={`compact-image-${source.uri}-${index}`}
79
- onClick={(e) => {
80
- e.preventDefault();
81
- handleThumbnailClick(index);
99
+ <div className="flex flex-row flex-wrap items-center gap-3">
100
+ {sources.map((source, index) => (
101
+ <button
102
+ key={`compact-image-${source.uri}-${index}`}
103
+ onClick={(e) => {
104
+ e.preventDefault();
105
+ handleThumbnailClick(index);
106
+ }}
107
+ className={clsx(
108
+ "cursor-pointer",
109
+ currentSourceIndex === index && enableThumbnailBorder
110
+ ? "ring-2 ring-offset-2 ring-brand-400 transition-discrete duration-300"
111
+ : "ring-brand-400/0",
112
+ )}
113
+ >
114
+ <img
115
+ src={source.uri}
116
+ alt={source.name}
117
+ style={{
118
+ width: thumbnailWidth,
119
+ height: thumbnailHeight,
120
+ objectPosition: "center",
121
+ objectFit: "cover",
82
122
  }}
83
- className={clsx(
84
- "cursor-pointer",
85
- currentSourceIndex === index && enableThumbnailBorder
86
- ? "ring-2 ring-offset-2 ring-brand-400 transition-discrete duration-300"
87
- : "ring-brand-400/0",
88
- )}
89
- >
90
- <img
91
- src={source.uri}
92
- alt={source.name}
93
- style={{
94
- width: thumbnailWidth,
95
- height: thumbnailHeight,
96
- objectPosition: "center",
97
- objectFit: "cover",
98
- }}
99
- />
100
- </button>
101
- ))}
102
- </div>
103
- )}
123
+ onError={handleImgError}
124
+ />
125
+ </button>
126
+ ))}
127
+ </div>
104
128
  </Stack>
105
129
  );
106
130
  }