@westpac/ui 0.47.0 → 0.48.0

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 (36) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/component-type.json +1 -1
  3. package/dist/components/accordion/accordion.component.js +4 -4
  4. package/dist/components/accordion/accordion.styles.d.ts +9 -0
  5. package/dist/components/accordion/accordion.styles.js +4 -1
  6. package/dist/components/accordion/components/accordion-item/accordion-item.component.d.ts +1 -1
  7. package/dist/components/accordion/components/accordion-item/accordion-item.component.js +7 -3
  8. package/dist/components/accordion/components/accordion-item/accordion-item.styles.d.ts +15 -0
  9. package/dist/components/accordion/components/accordion-item/accordion-item.styles.js +27 -5
  10. package/dist/components/accordion/components/accordion-item/accordion-item.types.d.ts +5 -0
  11. package/dist/components/alert/alert.styles.js +1 -1
  12. package/dist/components/field/field.component.js +1 -1
  13. package/dist/components/header/header.component.d.ts +1 -1
  14. package/dist/components/header/header.component.js +6 -2
  15. package/dist/components/header/header.types.d.ts +11 -1
  16. package/dist/components/modal/components/modal-backdrop/modal-backdrop.component.js +3 -2
  17. package/dist/components/modal/components/modal-backdrop/modal-backdrop.styles.js +1 -1
  18. package/dist/components/modal/modal.component.d.ts +1 -1
  19. package/dist/components/modal/modal.component.js +2 -1
  20. package/dist/components/modal/modal.types.d.ts +4 -0
  21. package/dist/css/westpac-ui.css +90 -40
  22. package/dist/css/westpac-ui.min.css +90 -40
  23. package/package.json +3 -3
  24. package/src/components/accordion/accordion.component.tsx +3 -3
  25. package/src/components/accordion/accordion.styles.ts +4 -1
  26. package/src/components/accordion/components/accordion-item/accordion-item.component.tsx +12 -2
  27. package/src/components/accordion/components/accordion-item/accordion-item.styles.ts +15 -6
  28. package/src/components/accordion/components/accordion-item/accordion-item.types.ts +6 -0
  29. package/src/components/alert/alert.styles.ts +1 -1
  30. package/src/components/field/field.component.tsx +5 -3
  31. package/src/components/header/header.component.tsx +4 -2
  32. package/src/components/header/header.types.ts +11 -1
  33. package/src/components/modal/components/modal-backdrop/modal-backdrop.component.tsx +2 -3
  34. package/src/components/modal/components/modal-backdrop/modal-backdrop.styles.ts +1 -1
  35. package/src/components/modal/modal.component.tsx +12 -2
  36. package/src/components/modal/modal.types.ts +4 -0
@@ -3356,9 +3356,6 @@ body {
3356
3356
  .z-10 {
3357
3357
  z-index: 10;
3358
3358
  }
3359
- .z-50 {
3360
- z-index: 50;
3361
- }
3362
3359
  .z-\[999\] {
3363
3360
  z-index: 999;
3364
3361
  }
@@ -3620,6 +3617,9 @@ body {
3620
3617
  .mt-\[0\.875rem\] {
3621
3618
  margin-top: 0.875rem;
3622
3619
  }
3620
+ .mt-\[1px\] {
3621
+ margin-top: 1px;
3622
+ }
3623
3623
  .mt-\[200px\] {
3624
3624
  margin-top: 200px;
3625
3625
  }
@@ -4655,10 +4655,6 @@ body {
4655
4655
  --tw-border-opacity: 1;
4656
4656
  border-bottom-color: rgb(255 255 255 / var(--tw-border-opacity, 1));
4657
4657
  }
4658
- .border-l-border {
4659
- --tw-border-opacity: 1;
4660
- border-left-color: rgba(var(--colors-border), var(--tw-border-opacity, 1));
4661
- }
4662
4658
  .border-l-hero {
4663
4659
  --tw-border-opacity: 1;
4664
4660
  border-left-color: rgba(var(--colors-hero), var(--tw-border-opacity, 1));
@@ -6287,9 +6283,9 @@ body {
6287
6283
  --tw-shadow-colored: 0 5px 10px var(--tw-shadow-color);
6288
6284
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
6289
6285
  }
6290
- .shadow-\[inset_0_1px_0_var\(--tw-shadow-color\)\] {
6291
- --tw-shadow: inset 0 1px 0 var(--tw-shadow-color);
6292
- --tw-shadow-colored: inset 0 1px 0 var(--tw-shadow-color);
6286
+ .shadow-\[inset_0px_1px_0_0_var\(--tw-shadow-color\)\2c inset_0_-1px_0_0_var\(--tw-shadow-color\)\] {
6287
+ --tw-shadow: inset 0px 1px 0 0 var(--tw-shadow-color),inset 0 -1px 0 0 var(--tw-shadow-color);
6288
+ --tw-shadow-colored: inset 0px 1px 0 0 var(--tw-shadow-color), inset 0 -1px 0 0 var(--tw-shadow-color);
6293
6289
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
6294
6290
  }
6295
6291
  .shadow-lg {
@@ -8190,10 +8186,17 @@ body {
8190
8186
  border-top-left-radius: 0.1875rem;
8191
8187
  border-bottom-left-radius: 0.1875rem;
8192
8188
  }
8189
+ .group:first-child .group-first\:rounded-t-sm {
8190
+ border-top-left-radius: 0.125rem;
8191
+ border-top-right-radius: 0.125rem;
8192
+ }
8193
8193
  .group\/add-on-before:first-child .group-first\/add-on-before\:\!border-x {
8194
8194
  border-left-width: 1px !important;
8195
8195
  border-right-width: 1px !important;
8196
8196
  }
8197
+ .group:first-child .group-first\:border-t-0 {
8198
+ border-top-width: 0px;
8199
+ }
8197
8200
  .group\/panel:first-child .group-first\/panel\:px-4 {
8198
8201
  padding-left: 1.5rem;
8199
8202
  padding-right: 1.5rem;
@@ -8201,6 +8204,9 @@ body {
8201
8204
  .group\/panel:first-child .group-first\/panel\:pt-4 {
8202
8205
  padding-top: 1.5rem;
8203
8206
  }
8207
+ .group:last-child .group-last\:rounded-none {
8208
+ border-radius: 0px;
8209
+ }
8204
8210
  .group\/add-on-after:last-child .group-last\/add-on-after\:\!rounded-r {
8205
8211
  border-top-right-radius: 0.1875rem !important;
8206
8212
  border-bottom-right-radius: 0.1875rem !important;
@@ -8213,6 +8219,10 @@ body {
8213
8219
  border-top-right-radius: 0.1875rem;
8214
8220
  border-bottom-right-radius: 0.1875rem;
8215
8221
  }
8222
+ .group:last-child .group-last\:rounded-b-sm {
8223
+ border-bottom-right-radius: 0.125rem;
8224
+ border-bottom-left-radius: 0.125rem;
8225
+ }
8216
8226
  .group\/add-on-after:last-child .group-last\/add-on-after\:\!border-x {
8217
8227
  border-left-width: 1px !important;
8218
8228
  border-right-width: 1px !important;
@@ -9014,9 +9024,6 @@ body {
9014
9024
  .xsl\:self-center {
9015
9025
  align-self: center;
9016
9026
  }
9017
- .xsl\:overflow-hidden {
9018
- overflow: hidden;
9019
- }
9020
9027
  .xsl\:truncate {
9021
9028
  overflow: hidden;
9022
9029
  text-overflow: ellipsis;
@@ -9111,6 +9118,9 @@ body {
9111
9118
  .xsl\:border-l-\[6px\] {
9112
9119
  border-left-width: 6px;
9113
9120
  }
9121
+ .xsl\:border-r {
9122
+ border-right-width: 1px;
9123
+ }
9114
9124
  .xsl\:border-r-0 {
9115
9125
  border-right-width: 0px;
9116
9126
  }
@@ -9543,9 +9553,9 @@ body {
9543
9553
  --tw-shadow-colored: inset 0 0 0 2px var(--tw-shadow-color);
9544
9554
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
9545
9555
  }
9546
- .xsl\:shadow-\[inset_0_1px_0_var\(--tw-shadow-color\)\] {
9547
- --tw-shadow: inset 0 1px 0 var(--tw-shadow-color);
9548
- --tw-shadow-colored: inset 0 1px 0 var(--tw-shadow-color);
9556
+ .xsl\:shadow-\[inset_0px_1px_0_0_var\(--tw-shadow-color\)\2c inset_0_-1px_0_0_var\(--tw-shadow-color\)\] {
9557
+ --tw-shadow: inset 0px 1px 0 0 var(--tw-shadow-color),inset 0 -1px 0 0 var(--tw-shadow-color);
9558
+ --tw-shadow-colored: inset 0px 1px 0 0 var(--tw-shadow-color), inset 0 -1px 0 0 var(--tw-shadow-color);
9549
9559
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
9550
9560
  }
9551
9561
  .xsl\:shadow-md {
@@ -9838,6 +9848,14 @@ body {
9838
9848
  --tw-bg-opacity: 1;
9839
9849
  background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));
9840
9850
  }
9851
+ .group:first-child .xsl\:group-first\:rounded-t-sm {
9852
+ border-top-left-radius: 0.125rem;
9853
+ border-top-right-radius: 0.125rem;
9854
+ }
9855
+ .group:last-child .xsl\:group-last\:rounded-b-sm {
9856
+ border-bottom-right-radius: 0.125rem;
9857
+ border-bottom-left-radius: 0.125rem;
9858
+ }
9841
9859
  @media (hover: hover) and (pointer: fine) {
9842
9860
  .group\/dualaction:hover .xsl\:group-hover\/dualaction\:text-primary {
9843
9861
  --tw-text-opacity: 1;
@@ -10549,9 +10567,6 @@ body {
10549
10567
  .sm\:self-center {
10550
10568
  align-self: center;
10551
10569
  }
10552
- .sm\:overflow-hidden {
10553
- overflow: hidden;
10554
- }
10555
10570
  .sm\:truncate {
10556
10571
  overflow: hidden;
10557
10572
  text-overflow: ellipsis;
@@ -10646,6 +10661,9 @@ body {
10646
10661
  .sm\:border-l-\[6px\] {
10647
10662
  border-left-width: 6px;
10648
10663
  }
10664
+ .sm\:border-r {
10665
+ border-right-width: 1px;
10666
+ }
10649
10667
  .sm\:border-r-0 {
10650
10668
  border-right-width: 0px;
10651
10669
  }
@@ -11101,9 +11119,9 @@ body {
11101
11119
  --tw-shadow-colored: inset 0 0 0 2px var(--tw-shadow-color);
11102
11120
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
11103
11121
  }
11104
- .sm\:shadow-\[inset_0_1px_0_var\(--tw-shadow-color\)\] {
11105
- --tw-shadow: inset 0 1px 0 var(--tw-shadow-color);
11106
- --tw-shadow-colored: inset 0 1px 0 var(--tw-shadow-color);
11122
+ .sm\:shadow-\[inset_0px_1px_0_0_var\(--tw-shadow-color\)\2c inset_0_-1px_0_0_var\(--tw-shadow-color\)\] {
11123
+ --tw-shadow: inset 0px 1px 0 0 var(--tw-shadow-color),inset 0 -1px 0 0 var(--tw-shadow-color);
11124
+ --tw-shadow-colored: inset 0px 1px 0 0 var(--tw-shadow-color), inset 0 -1px 0 0 var(--tw-shadow-color);
11107
11125
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
11108
11126
  }
11109
11127
  .sm\:shadow-md {
@@ -11396,6 +11414,14 @@ body {
11396
11414
  --tw-bg-opacity: 1;
11397
11415
  background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));
11398
11416
  }
11417
+ .group:first-child .sm\:group-first\:rounded-t-sm {
11418
+ border-top-left-radius: 0.125rem;
11419
+ border-top-right-radius: 0.125rem;
11420
+ }
11421
+ .group:last-child .sm\:group-last\:rounded-b-sm {
11422
+ border-bottom-right-radius: 0.125rem;
11423
+ border-bottom-left-radius: 0.125rem;
11424
+ }
11399
11425
  @media (hover: hover) and (pointer: fine) {
11400
11426
  .group\/checkbox-option:hover .sm\:group-hover\/checkbox-option\:translate-x-1 {
11401
11427
  --tw-translate-x: 0.375rem;
@@ -12178,9 +12204,6 @@ body {
12178
12204
  .md\:self-center {
12179
12205
  align-self: center;
12180
12206
  }
12181
- .md\:overflow-hidden {
12182
- overflow: hidden;
12183
- }
12184
12207
  .md\:truncate {
12185
12208
  overflow: hidden;
12186
12209
  text-overflow: ellipsis;
@@ -12278,6 +12301,9 @@ body {
12278
12301
  .md\:border-l-\[6px\] {
12279
12302
  border-left-width: 6px;
12280
12303
  }
12304
+ .md\:border-r {
12305
+ border-right-width: 1px;
12306
+ }
12281
12307
  .md\:border-r-0 {
12282
12308
  border-right-width: 0px;
12283
12309
  }
@@ -12741,9 +12767,9 @@ body {
12741
12767
  --tw-shadow-colored: inset 0 0 0 2px var(--tw-shadow-color);
12742
12768
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
12743
12769
  }
12744
- .md\:shadow-\[inset_0_1px_0_var\(--tw-shadow-color\)\] {
12745
- --tw-shadow: inset 0 1px 0 var(--tw-shadow-color);
12746
- --tw-shadow-colored: inset 0 1px 0 var(--tw-shadow-color);
12770
+ .md\:shadow-\[inset_0px_1px_0_0_var\(--tw-shadow-color\)\2c inset_0_-1px_0_0_var\(--tw-shadow-color\)\] {
12771
+ --tw-shadow: inset 0px 1px 0 0 var(--tw-shadow-color),inset 0 -1px 0 0 var(--tw-shadow-color);
12772
+ --tw-shadow-colored: inset 0px 1px 0 0 var(--tw-shadow-color), inset 0 -1px 0 0 var(--tw-shadow-color);
12747
12773
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
12748
12774
  }
12749
12775
  .md\:shadow-md {
@@ -13036,6 +13062,14 @@ body {
13036
13062
  --tw-bg-opacity: 1;
13037
13063
  background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));
13038
13064
  }
13065
+ .group:first-child .md\:group-first\:rounded-t-sm {
13066
+ border-top-left-radius: 0.125rem;
13067
+ border-top-right-radius: 0.125rem;
13068
+ }
13069
+ .group:last-child .md\:group-last\:rounded-b-sm {
13070
+ border-bottom-right-radius: 0.125rem;
13071
+ border-bottom-left-radius: 0.125rem;
13072
+ }
13039
13073
  @media (hover: hover) and (pointer: fine) {
13040
13074
  .group\/dualaction:hover .md\:group-hover\/dualaction\:text-primary {
13041
13075
  --tw-text-opacity: 1;
@@ -13800,9 +13834,6 @@ body {
13800
13834
  .lg\:self-center {
13801
13835
  align-self: center;
13802
13836
  }
13803
- .lg\:overflow-hidden {
13804
- overflow: hidden;
13805
- }
13806
13837
  .lg\:truncate {
13807
13838
  overflow: hidden;
13808
13839
  text-overflow: ellipsis;
@@ -13897,6 +13928,9 @@ body {
13897
13928
  .lg\:border-l-\[6px\] {
13898
13929
  border-left-width: 6px;
13899
13930
  }
13931
+ .lg\:border-r {
13932
+ border-right-width: 1px;
13933
+ }
13900
13934
  .lg\:border-r-0 {
13901
13935
  border-right-width: 0px;
13902
13936
  }
@@ -14341,9 +14375,9 @@ body {
14341
14375
  --tw-shadow-colored: inset 0 0 0 2px var(--tw-shadow-color);
14342
14376
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
14343
14377
  }
14344
- .lg\:shadow-\[inset_0_1px_0_var\(--tw-shadow-color\)\] {
14345
- --tw-shadow: inset 0 1px 0 var(--tw-shadow-color);
14346
- --tw-shadow-colored: inset 0 1px 0 var(--tw-shadow-color);
14378
+ .lg\:shadow-\[inset_0px_1px_0_0_var\(--tw-shadow-color\)\2c inset_0_-1px_0_0_var\(--tw-shadow-color\)\] {
14379
+ --tw-shadow: inset 0px 1px 0 0 var(--tw-shadow-color),inset 0 -1px 0 0 var(--tw-shadow-color);
14380
+ --tw-shadow-colored: inset 0px 1px 0 0 var(--tw-shadow-color), inset 0 -1px 0 0 var(--tw-shadow-color);
14347
14381
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
14348
14382
  }
14349
14383
  .lg\:shadow-md {
@@ -14636,6 +14670,14 @@ body {
14636
14670
  --tw-bg-opacity: 1;
14637
14671
  background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));
14638
14672
  }
14673
+ .group:first-child .lg\:group-first\:rounded-t-sm {
14674
+ border-top-left-radius: 0.125rem;
14675
+ border-top-right-radius: 0.125rem;
14676
+ }
14677
+ .group:last-child .lg\:group-last\:rounded-b-sm {
14678
+ border-bottom-right-radius: 0.125rem;
14679
+ border-bottom-left-radius: 0.125rem;
14680
+ }
14639
14681
  @media (hover: hover) and (pointer: fine) {
14640
14682
  .group\/dualaction:hover .lg\:group-hover\/dualaction\:text-primary {
14641
14683
  --tw-text-opacity: 1;
@@ -15346,9 +15388,6 @@ body {
15346
15388
  .xl\:self-center {
15347
15389
  align-self: center;
15348
15390
  }
15349
- .xl\:overflow-hidden {
15350
- overflow: hidden;
15351
- }
15352
15391
  .xl\:truncate {
15353
15392
  overflow: hidden;
15354
15393
  text-overflow: ellipsis;
@@ -15443,6 +15482,9 @@ body {
15443
15482
  .xl\:border-l-\[6px\] {
15444
15483
  border-left-width: 6px;
15445
15484
  }
15485
+ .xl\:border-r {
15486
+ border-right-width: 1px;
15487
+ }
15446
15488
  .xl\:border-r-0 {
15447
15489
  border-right-width: 0px;
15448
15490
  }
@@ -15869,9 +15911,9 @@ body {
15869
15911
  --tw-shadow-colored: inset 0 0 0 2px var(--tw-shadow-color);
15870
15912
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
15871
15913
  }
15872
- .xl\:shadow-\[inset_0_1px_0_var\(--tw-shadow-color\)\] {
15873
- --tw-shadow: inset 0 1px 0 var(--tw-shadow-color);
15874
- --tw-shadow-colored: inset 0 1px 0 var(--tw-shadow-color);
15914
+ .xl\:shadow-\[inset_0px_1px_0_0_var\(--tw-shadow-color\)\2c inset_0_-1px_0_0_var\(--tw-shadow-color\)\] {
15915
+ --tw-shadow: inset 0px 1px 0 0 var(--tw-shadow-color),inset 0 -1px 0 0 var(--tw-shadow-color);
15916
+ --tw-shadow-colored: inset 0px 1px 0 0 var(--tw-shadow-color), inset 0 -1px 0 0 var(--tw-shadow-color);
15875
15917
  box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
15876
15918
  }
15877
15919
  .xl\:shadow-md {
@@ -16164,6 +16206,14 @@ body {
16164
16206
  --tw-bg-opacity: 1;
16165
16207
  background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));
16166
16208
  }
16209
+ .group:first-child .xl\:group-first\:rounded-t-sm {
16210
+ border-top-left-radius: 0.125rem;
16211
+ border-top-right-radius: 0.125rem;
16212
+ }
16213
+ .group:last-child .xl\:group-last\:rounded-b-sm {
16214
+ border-bottom-right-radius: 0.125rem;
16215
+ border-bottom-left-radius: 0.125rem;
16216
+ }
16167
16217
  @media (hover: hover) and (pointer: fine) {
16168
16218
  .group\/dualaction:hover .xl\:group-hover\/dualaction\:text-primary {
16169
16219
  --tw-text-opacity: 1;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@westpac/ui",
3
- "version": "0.47.0",
3
+ "version": "0.48.0",
4
4
  "license": "MIT",
5
5
  "sideEffects": false,
6
6
  "type": "module",
@@ -229,7 +229,6 @@
229
229
  "@vitejs/plugin-react-swc": "^3.7.0",
230
230
  "@vitest/coverage-v8": "~3.2.4",
231
231
  "chokidar": "^3.5.3",
232
- "colorjs.io": "~0.4.5",
233
232
  "cross-env": "~7.0.3",
234
233
  "csstype": "~3.1.3",
235
234
  "eslint": "^9.32.0",
@@ -253,8 +252,8 @@
253
252
  "typescript": "^5.5.4",
254
253
  "vite": "^7.0.5",
255
254
  "vitest": "^3.2.4",
256
- "@westpac/eslint-config": "~1.0.1",
257
255
  "@westpac/test-config": "~0.0.0",
256
+ "@westpac/eslint-config": "~1.0.1",
258
257
  "@westpac/ts-config": "~0.0.0"
259
258
  },
260
259
  "dependencies": {
@@ -262,6 +261,7 @@
262
261
  "@react-aria/accordion": "3.0.0-alpha.37",
263
262
  "@react-aria/utils": "~3.29.1",
264
263
  "@react-spectrum/utils": "~3.11.5",
264
+ "colorjs.io": "~0.4.5",
265
265
  "clsx": "^1.2.1",
266
266
  "lodash.throttle": "~4.1.1",
267
267
  "motion": "~12.23.12",
@@ -50,11 +50,11 @@ function Accordion<T extends object>(
50
50
  {...filterDOMProps(finalProps as DOMProps)}
51
51
  {...accordionProps}
52
52
  ref={domRef}
53
- className={styles({ className, rounded })}
53
+ className={styles({ className, rounded, lego: look === 'lego' })}
54
54
  >
55
- <div className="-ml-px -mt-px">
55
+ <div>
56
56
  {[...state.collection].map(item => (
57
- <AccordionItemContent<T> key={item.key} item={item} state={state} look={look} />
57
+ <AccordionItemContent<T> key={item.key} item={item} rounded={rounded} state={state} look={look} />
58
58
  ))}
59
59
  </div>
60
60
  </div>
@@ -5,7 +5,10 @@ export const styles = tv(
5
5
  base: 'flex flex-col border border-border text-text',
6
6
  variants: {
7
7
  rounded: {
8
- true: 'overflow-hidden rounded',
8
+ true: 'rounded',
9
+ },
10
+ lego: {
11
+ true: 'border-0 border-b',
9
12
  },
10
13
  },
11
14
  },
@@ -16,6 +16,7 @@ export function AccordionItem<T = HTMLElement>({
16
16
  className,
17
17
  tag: Tag = 'div',
18
18
  look = 'soft',
19
+ rounded = true,
19
20
  ...props
20
21
  }: AccordionItemProps<T>) {
21
22
  const ref = useRef<HTMLButtonElement>(null);
@@ -26,7 +27,7 @@ export function AccordionItem<T = HTMLElement>({
26
27
  const isDisabled = state.disabledKeys.has(item.key);
27
28
  const { hoverProps } = useHover({ isDisabled });
28
29
  const { direction } = useLocale();
29
- const styles = accordionItemStyles({ isOpen, isDisabled, look, isFocusVisible });
30
+ const styles = accordionItemStyles({ isOpen, isDisabled, look, isFocusVisible, rounded });
30
31
 
31
32
  return (
32
33
  <Tag className={styles.base({ className })}>
@@ -61,7 +62,16 @@ export function AccordionItem<T = HTMLElement>({
61
62
  }}
62
63
  transition={{ duration: 0.3, ease: [0.25, 0.1, 0.25, 1.0] }}
63
64
  >
64
- <div className={styles.content()}>{item.props.children}</div>
65
+ <div
66
+ className={styles.content()}
67
+ // TODO: Remove below with updated accordion that uses disclosure as the issue doesn't happen with that version
68
+ // Need to call stopPropagation here as some events from children are bubbling up and focusing the accordion i.e. inputs
69
+ onBlur={e => {
70
+ e.stopPropagation();
71
+ }}
72
+ >
73
+ {item.props.children}
74
+ </div>
65
75
  </m.div>
66
76
  )}
67
77
  </AnimatePresence>
@@ -3,8 +3,8 @@ import { tv } from 'tailwind-variants';
3
3
  export const styles = tv(
4
4
  {
5
5
  slots: {
6
- base: 'relative',
7
- itemHeader: 'typography-body-9 flex w-full flex-1 items-center justify-between px-3 py-2',
6
+ base: 'group',
7
+ itemHeader: 'typography-body-9 flex w-full flex-1 items-center justify-between px-3 py-2 group-first:border-t-0',
8
8
  headerTitleWrapper: 'flex-1 pr-2 text-left',
9
9
  indicator: 'size-3 rotate-90',
10
10
  content: 'hidden',
@@ -16,12 +16,12 @@ export const styles = tv(
16
16
  },
17
17
  lego: {
18
18
  itemHeader:
19
- 'border-l-[0.375rem] border-border bg-light shadow-[inset_0_1px_0_var(--tw-shadow-color)] !shadow-border transition-colors',
19
+ 'mb-[-1px] border-l-[0.375rem] border-r border-border bg-light shadow-[inset_0px_1px_0_0_var(--tw-shadow-color),inset_0_-1px_0_0_var(--tw-shadow-color)] !shadow-border transition-colors',
20
20
  },
21
21
  },
22
22
  isOpen: {
23
23
  true: {
24
- content: 'block border-t border-border p-3',
24
+ content: 'block border-border p-3',
25
25
  },
26
26
  false: {
27
27
  base: '',
@@ -40,6 +40,7 @@ export const styles = tv(
40
40
  itemHeader: 'outline-none',
41
41
  },
42
42
  },
43
+ rounded: { true: { itemHeader: 'group-first:rounded-t-sm group-last:rounded-b-sm' } },
43
44
  },
44
45
  compoundSlots: [
45
46
  {
@@ -55,9 +56,17 @@ export const styles = tv(
55
56
  },
56
57
  {
57
58
  slots: ['content'],
58
- look: 'lego',
59
- className: 'border-l-[0.375rem] border-l-border',
59
+ look: 'soft',
60
+ isOpen: true,
61
+ className: 'border-t',
62
+ },
63
+ {
64
+ slots: ['itemHeader'],
65
+ isOpen: true,
66
+ rounded: true,
67
+ className: 'group-last:rounded-none',
60
68
  },
69
+ { slots: ['content'], isOpen: true, look: 'lego', className: 'mt-[1px] border-l-[0.375rem] border-r' },
61
70
  ],
62
71
  },
63
72
  { responsiveVariants: ['xsl', 'sm', 'md', 'lg', 'xl'] },
@@ -2,6 +2,8 @@ import { HTMLAttributes, ReactNode } from 'react';
2
2
  import { Node, TreeState } from 'react-stately';
3
3
  import { type VariantProps } from 'tailwind-variants';
4
4
 
5
+ import { AccordionProps } from '../../accordion.types.js';
6
+
5
7
  import { styles } from './accordion-item.styles.js';
6
8
 
7
9
  type Variants = VariantProps<typeof styles>;
@@ -19,6 +21,10 @@ export type AccordionItemProps<T = HTMLElement> = {
19
21
  * Look of the item
20
22
  */
21
23
  look?: Variants['look'];
24
+ /**
25
+ * Whether accordion is rounded
26
+ */
27
+ rounded?: AccordionProps['rounded'];
22
28
  /**
23
29
  * Tree state
24
30
  */
@@ -3,7 +3,7 @@ import { tv } from 'tailwind-variants';
3
3
  export const styles = tv(
4
4
  {
5
5
  slots: {
6
- base: 'typography-body-10 relative mb-4 xsl:flex',
6
+ base: 'typography-body-10 relative mb-5 xsl:flex',
7
7
  icon: 'float-left flex-none',
8
8
  body: 'relative flex-1 overflow-hidden xsl:top-[0.125rem] [&_a]:underline',
9
9
  heading: 'typography-body-9 mb-1 font-bold',
@@ -37,9 +37,11 @@ export function Field({
37
37
 
38
38
  return (
39
39
  <Tag className={styles({ className })} {...props}>
40
- <Label size={labelSize} {...labelProps}>
41
- {label}
42
- </Label>
40
+ {label && (
41
+ <Label size={labelSize} {...labelProps}>
42
+ {label}
43
+ </Label>
44
+ )}
43
45
  {hintMessage && <Hint {...descriptionProps}>{hintMessage}</Hint>}
44
46
  {errorMessage && <ErrorMessage {...errorMessageProps} message={errorMessage} />}
45
47
  {renderChildren()}
@@ -52,10 +52,12 @@ const logoMap = {
52
52
  };
53
53
 
54
54
  export function Header({
55
+ anchorTarget,
55
56
  brand,
56
57
  className,
57
58
  children,
58
59
  fixed = false,
60
+ fixedMaxWidth,
59
61
  isScrolled,
60
62
  leftIcon,
61
63
  leftOnClick,
@@ -97,7 +99,7 @@ export function Header({
97
99
 
98
100
  return (
99
101
  <header className={styles.base({ className })} {...props}>
100
- <div className={styles.inner()}>
102
+ <div className={styles.inner()} style={{ maxWidth: fixed ? fixedMaxWidth : undefined }}>
101
103
  {skipToContentId && <SkipLink href={skipToContentId}>{skipLinkContent}</SkipLink>}
102
104
  {leftIcon && (
103
105
  <div className={styles.leftContent()}>
@@ -113,7 +115,7 @@ export function Header({
113
115
  </div>
114
116
  )}
115
117
  {/* useFocusRing was causing this link to need two clicks to activate so focus-visible styling is used instead */}
116
- <a href={logoLink} className={styles.logoLink()} onClick={logoOnClick}>
118
+ <a href={logoLink} target={anchorTarget} className={styles.logoLink()} onClick={logoOnClick}>
117
119
  <SmallLogo align={logoAlignment} aria-label={logoAssistiveText} className={styles.smallLogo()} />
118
120
  <LargeLogo aria-label={logoAssistiveText} className={styles.largeLogo()} />
119
121
  </a>
@@ -1,8 +1,13 @@
1
- import { HTMLAttributes } from 'react';
1
+ import { Property } from 'csstype';
2
+ import { HTMLAttributeAnchorTarget, HTMLAttributes } from 'react';
2
3
 
3
4
  import { BrandKey } from '../../tailwind/index.js';
4
5
 
5
6
  export type HeaderProps = {
7
+ /**
8
+ * Target for the logo link
9
+ */
10
+ anchorTarget?: HTMLAttributeAnchorTarget;
6
11
  /**
7
12
  * Icon for brand
8
13
  */
@@ -11,6 +16,11 @@ export type HeaderProps = {
11
16
  * Enable fixed header
12
17
  */
13
18
  fixed?: boolean;
19
+ /**
20
+ * Set max width for fixed header for certain layouts
21
+ * NOTE: Using max-w in classname will work for non-fixed headers
22
+ */
23
+ fixedMaxWidth?: Property.MaxWidth;
14
24
  /**
15
25
  * Used with fixed to show drop shadow when something on screen is scrolled that should trigger drop shadow but doesn't
16
26
  */
@@ -1,5 +1,4 @@
1
1
  'use client';
2
-
3
2
  import React, { useMemo, useRef } from 'react';
4
3
  import { Overlay, useModalOverlay } from 'react-aria';
5
4
 
@@ -13,7 +12,7 @@ export function ModalBackdrop({ zIndex = 100, portalContainer, size, ...props }:
13
12
  const { children, state, className } = props;
14
13
 
15
14
  const ref = useRef(null);
16
- const styles = backdropStyles({ className, fullscreen: size === 'full', fluid: size === 'fluid' });
15
+ const styles = backdropStyles({ fullscreen: size === 'full', fluid: size === 'fluid' });
17
16
 
18
17
  const { modalProps, underlayProps } = useModalOverlay(props, state, ref);
19
18
 
@@ -33,7 +32,7 @@ export function ModalBackdrop({ zIndex = 100, portalContainer, size, ...props }:
33
32
 
34
33
  return (
35
34
  <Overlay portalContainer={portalContainer || brandContainer}>
36
- <div style={{ zIndex }} className={styles.base()} {...underlayProps}>
35
+ <div className={styles.base({ className })} style={{ zIndex }} {...underlayProps}>
37
36
  <div {...modalProps} ref={ref} className={styles.modal()}>
38
37
  {children}
39
38
  </div>
@@ -2,7 +2,7 @@ import { tv } from 'tailwind-variants';
2
2
 
3
3
  export const styles = tv({
4
4
  slots: {
5
- base: 'fixed inset-0 z-50 flex animate-fadeIn items-center justify-center overflow-y-auto bg-black/50 p-2',
5
+ base: 'fixed inset-0 flex animate-fadeIn items-center justify-center overflow-y-auto bg-black/50 p-2',
6
6
  modal: 'relative top-3 z-10 h-fit w-full animate-fadeInDown',
7
7
  },
8
8
  variants: {
@@ -5,9 +5,19 @@ import React from 'react';
5
5
  import { ModalBackdrop, ModalDialog } from './components/index.js';
6
6
  import { type ModalProps } from './modal.types.js';
7
7
 
8
- export function Modal({ children, title, role, body, size, className, fullscreen, ...props }: ModalProps) {
8
+ export function Modal({
9
+ children,
10
+ backdropStyle,
11
+ title,
12
+ role,
13
+ body,
14
+ size,
15
+ className,
16
+ fullscreen,
17
+ ...props
18
+ }: ModalProps) {
9
19
  return (
10
- <ModalBackdrop size={size} {...props}>
20
+ <ModalBackdrop size={size} className={backdropStyle} {...props}>
11
21
  <ModalDialog
12
22
  fullscreen={fullscreen}
13
23
  onClose={props.isDismissable ? () => props.state.close() : undefined}
@@ -1,6 +1,10 @@
1
1
  import { type ModalBackdropProps, ModalDialogProps } from './components/index.js';
2
2
 
3
3
  export type ModalProps = {
4
+ /**
5
+ * Provide inset styles for the backdrop for centering in certain containers
6
+ */
7
+ backdropStyle?: string;
4
8
  /**
5
9
  * Whether the modal is fullscreen
6
10
  */