@westpac/ui 0.52.0 → 0.53.2

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 (87) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/dist/component-type.json +1 -1
  3. package/dist/components/accordion/components/accordion-item/accordion-item.styles.js +1 -1
  4. package/dist/components/alert/alert.styles.js +1 -1
  5. package/dist/components/autocomplete/autocomplete.styles.js +1 -1
  6. package/dist/components/badge/badge.styles.d.ts +2 -2
  7. package/dist/components/badge/badge.styles.js +2 -2
  8. package/dist/components/bottom-sheet/components/bottom-sheet-dialog/bottom-sheet-dialog.styles.js +2 -2
  9. package/dist/components/breadcrumb/components/breadcrumb-item/breadcrumb-item.component.js +1 -1
  10. package/dist/components/button/button.styles.js +1 -1
  11. package/dist/components/button-dropdown/button-dropdown.component.d.ts +1 -1
  12. package/dist/components/button-dropdown/button-dropdown.component.js +5 -3
  13. package/dist/components/button-dropdown/button-dropdown.types.d.ts +7 -2
  14. package/dist/components/button-dropdown/components/button-dropdown-panel/button-dropdown-panel.styles.js +1 -1
  15. package/dist/components/collapsible/collapsible.styles.js +1 -1
  16. package/dist/components/compacta/compacta.styles.js +1 -1
  17. package/dist/components/date-picker-beta/components/calendar/components/calendar-grid/calendar-grid.component.js +1 -1
  18. package/dist/components/date-picker-beta/components/date-field/components/date-segment/date-segment.styles.d.ts +2 -2
  19. package/dist/components/date-picker-beta/components/date-field/components/date-segment/date-segment.styles.js +1 -1
  20. package/dist/components/date-picker-beta/components/popover/popover.styles.js +1 -1
  21. package/dist/components/filter/components/filter-buttons/filter-buttons.component.js +2 -3
  22. package/dist/components/filter/components/filter-buttons/filter-buttons.styles.js +5 -5
  23. package/dist/components/filter/filter.component.js +1 -1
  24. package/dist/components/flexi-cell/components/flexi-cell-body/flexi-cell-body.styles.d.ts +2 -2
  25. package/dist/components/flexi-cell/components/flexi-cell-body/flexi-cell-body.styles.js +1 -1
  26. package/dist/components/flexi-cell/flexi-cell.styles.js +1 -1
  27. package/dist/components/footer/footer.styles.js +1 -1
  28. package/dist/components/header/header.styles.js +1 -1
  29. package/dist/components/input-group/components/input-group-add-ons/input-group-add-ons.styles.d.ts +2 -2
  30. package/dist/components/input-group/components/input-group-add-ons/input-group-add-ons.styles.js +3 -3
  31. package/dist/components/input-group/input-group.component.js +3 -1
  32. package/dist/components/modal/components/modal-dialog/modal-dialog.styles.js +1 -1
  33. package/dist/components/pagination/components/pagination-item/pagination-item.component.js +8 -2
  34. package/dist/components/pagination/components/pagination-item/pagination-item.styles.d.ts +12 -0
  35. package/dist/components/pagination/components/pagination-item/pagination-item.styles.js +5 -1
  36. package/dist/components/pagination/components/pagination-presentational/pagination-presentational.styles.js +1 -1
  37. package/dist/components/panel/components/panel-footer/panel-footer.styles.js +1 -1
  38. package/dist/components/panel/panel.styles.js +1 -1
  39. package/dist/components/popover/components/panel/panel.styles.js +2 -2
  40. package/dist/components/progress-rope/components/progress-rope-group-step/progress-rope-group-step.component.js +37 -19
  41. package/dist/components/repeater/repeater.styles.js +1 -1
  42. package/dist/components/table/table.styles.js +1 -1
  43. package/dist/components/tabs/components/tabs-tab/tabs-tab.styles.js +1 -1
  44. package/dist/components/tabs/components/tabs-tab-panel/tabs-tab-panel.styles.d.ts +2 -2
  45. package/dist/components/tabs/components/tabs-tab-panel/tabs-tab-panel.styles.js +1 -1
  46. package/dist/components/well/well.styles.d.ts +2 -2
  47. package/dist/components/well/well.styles.js +1 -1
  48. package/dist/css/westpac-ui.css +59 -9
  49. package/dist/css/westpac-ui.min.css +59 -9
  50. package/package.json +2 -2
  51. package/src/components/accordion/components/accordion-item/accordion-item.styles.ts +1 -1
  52. package/src/components/alert/alert.styles.ts +1 -1
  53. package/src/components/autocomplete/autocomplete.styles.ts +1 -1
  54. package/src/components/badge/badge.styles.ts +2 -2
  55. package/src/components/bottom-sheet/components/bottom-sheet-dialog/bottom-sheet-dialog.styles.ts +2 -2
  56. package/src/components/breadcrumb/components/breadcrumb-item/breadcrumb-item.component.tsx +1 -1
  57. package/src/components/button/button.styles.ts +1 -1
  58. package/src/components/button-dropdown/button-dropdown.component.tsx +8 -1
  59. package/src/components/button-dropdown/button-dropdown.types.ts +7 -2
  60. package/src/components/button-dropdown/components/button-dropdown-panel/button-dropdown-panel.styles.ts +1 -1
  61. package/src/components/collapsible/collapsible.styles.ts +1 -1
  62. package/src/components/compacta/compacta.styles.ts +1 -1
  63. package/src/components/date-picker-beta/components/calendar/components/calendar-grid/calendar-grid.component.tsx +1 -1
  64. package/src/components/date-picker-beta/components/date-field/components/date-segment/date-segment.styles.ts +1 -1
  65. package/src/components/date-picker-beta/components/popover/popover.styles.ts +1 -1
  66. package/src/components/filter/components/filter-buttons/filter-buttons.component.tsx +1 -2
  67. package/src/components/filter/components/filter-buttons/filter-buttons.styles.ts +5 -5
  68. package/src/components/filter/filter.component.tsx +1 -1
  69. package/src/components/flexi-cell/components/flexi-cell-body/flexi-cell-body.styles.ts +1 -1
  70. package/src/components/flexi-cell/flexi-cell.styles.ts +1 -1
  71. package/src/components/footer/footer.styles.ts +1 -1
  72. package/src/components/header/header.styles.ts +1 -1
  73. package/src/components/input-group/components/input-group-add-ons/input-group-add-ons.styles.ts +3 -3
  74. package/src/components/input-group/input-group.component.tsx +3 -0
  75. package/src/components/modal/components/modal-dialog/modal-dialog.styles.ts +1 -1
  76. package/src/components/pagination/components/pagination-item/pagination-item.component.tsx +9 -2
  77. package/src/components/pagination/components/pagination-item/pagination-item.styles.ts +5 -1
  78. package/src/components/pagination/components/pagination-presentational/pagination-presentational.styles.ts +1 -1
  79. package/src/components/panel/components/panel-footer/panel-footer.styles.ts +1 -1
  80. package/src/components/panel/panel.styles.ts +1 -1
  81. package/src/components/popover/components/panel/panel.styles.ts +2 -2
  82. package/src/components/progress-rope/components/progress-rope-group-step/progress-rope-group-step.component.tsx +62 -38
  83. package/src/components/repeater/repeater.styles.ts +1 -1
  84. package/src/components/table/table.styles.ts +1 -1
  85. package/src/components/tabs/components/tabs-tab/tabs-tab.styles.ts +1 -1
  86. package/src/components/tabs/components/tabs-tab-panel/tabs-tab-panel.styles.ts +1 -1
  87. package/src/components/well/well.styles.ts +1 -1
@@ -5,7 +5,7 @@ export const styles = tv({
5
5
  itemHeader: 'typography-body-9 flex w-full flex-1 items-center justify-between px-3 py-2 group-first:border-t-0',
6
6
  headerTitleWrapper: 'flex-1 pr-2 text-left',
7
7
  indicator: 'size-3 rotate-90',
8
- content: '',
8
+ content: '[&_:focus-visible]:focus-outline',
9
9
  motionContent: ''
10
10
  },
11
11
  variants: {
@@ -3,7 +3,7 @@ export const styles = tv({
3
3
  slots: {
4
4
  base: 'typography-body-10 relative mb-5 xsl:flex',
5
5
  icon: 'float-left flex-none',
6
- body: 'relative flex-1 overflow-hidden xsl:top-[0.125rem] [&_a]:underline',
6
+ body: 'relative flex-1 xsl:top-[0.125rem] [&_:focus-visible]:focus-outline [&_a]:underline',
7
7
  heading: 'typography-body-9 mb-1 font-bold',
8
8
  close: 'absolute right-0.5 top-0.5 h-5.5 p-1 hover:opacity-80'
9
9
  },
@@ -3,7 +3,7 @@ export const styles = tv({
3
3
  slots: {
4
4
  base: 'relative flex flex-1 flex-col',
5
5
  label: 'block text-left text-sm font-medium text-text',
6
- outerWrapper: 'form-control relative flex flex-1 flex-row items-stretch overflow-hidden pr-2 disabled:form-control-disabled group-[.input-group-after]:rounded-r-none group-[.input-group-before]:rounded-l-none group-[.input-group-after]:border-r-0 group-[.input-group-before]:border-l-0',
6
+ outerWrapper: 'form-control relative flex flex-1 flex-row items-stretch pr-2 disabled:form-control-disabled group-[.input-group-after]:rounded-r-none group-[.input-group-before]:rounded-l-none group-[.input-group-after]:border-r-0 group-[.input-group-before]:border-l-0',
7
7
  input: 'appearance-none bg-[transparent] outline-none',
8
8
  clearButton: 'flex cursor-default items-center justify-center text-text-50 hover:text-border-60',
9
9
  iconWrapper: 'flex flex-col justify-center'
@@ -25,7 +25,7 @@ export declare const styles: import("tailwind-variants").TVReturnType<{
25
25
  soft: {
26
26
  true: string;
27
27
  };
28
- }, undefined, "inline-block w-fit whitespace-nowrap border text-center", {
28
+ }, undefined, "inline-block w-fit whitespace-nowrap border text-center [&_:focus-visible]:focus-outline", {
29
29
  responsiveVariants: string[];
30
30
  }, {
31
31
  color: {
@@ -81,6 +81,6 @@ export declare const styles: import("tailwind-variants").TVReturnType<{
81
81
  soft: {
82
82
  true: string;
83
83
  };
84
- }, undefined, "inline-block w-fit whitespace-nowrap border text-center", {
84
+ }, undefined, "inline-block w-fit whitespace-nowrap border text-center [&_:focus-visible]:focus-outline", {
85
85
  responsiveVariants: string[];
86
86
  }, unknown, unknown, undefined>>;
@@ -1,6 +1,6 @@
1
1
  import { tv } from 'tailwind-variants';
2
2
  export const styles = tv({
3
- base: 'inline-block w-fit whitespace-nowrap border text-center',
3
+ base: 'inline-block w-fit whitespace-nowrap border text-center [&_:focus-visible]:focus-outline',
4
4
  variants: {
5
5
  color: {
6
6
  danger: 'border-danger bg-danger text-white',
@@ -22,7 +22,7 @@ export const styles = tv({
22
22
  'warning-inverted': 'border-none bg-white text-warning'
23
23
  },
24
24
  type: {
25
- pill: 'typography-body-10 flex h-4 min-w-4 w-fit items-center justify-center rounded-xl px-[0.4375rem] font-medium leading-none',
25
+ pill: 'typography-body-10 inline-flex h-4 w-fit min-w-4 items-center justify-center rounded-xl px-[0.4375rem] font-medium leading-none',
26
26
  default: 'h-[1.25rem] rounded-sm px-1 text-[0.75rem] leading-[1.125rem]'
27
27
  },
28
28
  soft: {
@@ -1,9 +1,9 @@
1
1
  import { tv } from 'tailwind-variants';
2
2
  export const styles = tv({
3
3
  slots: {
4
- base: 'relative flex max-h-screen max-w-full flex-1 flex-col overflow-hidden rounded-t-md bg-white shadow-sm md:w-[37.5rem] md:rounded-md',
4
+ base: 'relative flex max-h-screen max-w-full flex-1 flex-col overflow-hidden rounded-t-md bg-white shadow-sm focus-visible:focus-outline md:w-[37.5rem] md:rounded-md',
5
5
  title: 'typography-body-7 p-7 pb-4 pt-9 font-bold text-text max-md:px-5',
6
- body: 'flex-1 overflow-auto px-7 pb-7 text-text max-md:px-5',
6
+ body: 'flex-1 overflow-auto px-7 pb-7 text-text max-md:px-5 [&_:focus-visible]:focus-outline',
7
7
  closeBtn: 'absolute right-3 top-3 p-0',
8
8
  buttonWrapper: '-mt-2 flex gap-1 px-7 pb-7 max-md:flex-col max-md:px-5 max-md:pb-5',
9
9
  primaryBtn: '',
@@ -14,7 +14,7 @@ export function BaseBreadcrumbItem({ className, isDisabled = false, isCurrent =
14
14
  elementType: FinalTag
15
15
  }, ref);
16
16
  return React.createElement("li", {
17
- className: "inline-flex items-center"
17
+ className: "inline-flex items-center [&_:focus-visible]:focus-outline"
18
18
  }, React.createElement(FinalTag, {
19
19
  ...{
20
20
  ...itemProps,
@@ -33,7 +33,7 @@ export const styles = tv({
33
33
  base: 'border border-borderDark bg-light text-muted hover:bg-white active:bg-white'
34
34
  },
35
35
  link: {
36
- base: 'text-link underline'
36
+ base: 'px-0 text-link underline'
37
37
  },
38
38
  unstyled: {
39
39
  base: 'p-0 text-left'
@@ -1,2 +1,2 @@
1
1
  import { type ButtonDropdownProps } from './button-dropdown.types.js';
2
- export declare function ButtonDropdown({ className, dropdownSize, iconBefore: IconBefore, open, text, children, size, look, soft, block, shouldFlip, }: ButtonDropdownProps): import("react/jsx-runtime").JSX.Element;
2
+ export declare function ButtonDropdown({ className, dropdownSize, iconBefore: IconBefore, open, text, children, size, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelBy, look, soft, block, dropDownIcon: Icon, shouldFlip, }: ButtonDropdownProps): import("react/jsx-runtime").JSX.Element;
@@ -6,7 +6,7 @@ import { Button } from '../button/index.js';
6
6
  import { DropDownIcon } from '../icon/index.js';
7
7
  import { styles as buttonDropdownStyles } from './button-dropdown.styles.js';
8
8
  import { ButtonDropdownPanel } from './components/button-dropdown-panel/button-dropdown-panel.component.js';
9
- export function ButtonDropdown({ className, dropdownSize = 'medium', iconBefore: IconBefore, open = false, text, children, size, look = 'hero', soft = false, block = false, shouldFlip }) {
9
+ export function ButtonDropdown({ className, dropdownSize = 'medium', iconBefore: IconBefore, open = false, text, children, size, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelBy, look = 'hero', soft = false, block = false, dropDownIcon: Icon = DropDownIcon, shouldFlip }) {
10
10
  const ref = useRef(null);
11
11
  const panelId = useId();
12
12
  const styles = buttonDropdownStyles({
@@ -35,15 +35,17 @@ export function ButtonDropdown({ className, dropdownSize = 'medium', iconBefore:
35
35
  ]);
36
36
  return React.createElement(React.Fragment, null, React.createElement(Button, {
37
37
  ref: ref,
38
- iconAfter: (props)=>React.createElement(DropDownIcon, {
38
+ iconAfter: !(look === 'link' || look === 'unstyled') ? (props)=>React.createElement(Icon, {
39
39
  "aria-hidden": true,
40
40
  ...props
41
- }),
41
+ }) : undefined,
42
42
  iconBefore: IconBefore,
43
43
  size: size,
44
44
  look: look,
45
45
  soft: soft,
46
46
  block: block,
47
+ "aria-label": ariaLabel,
48
+ "aria-labelledby": ariaLabelBy,
47
49
  "aria-expanded": state.isOpen,
48
50
  "aria-controls": panelId,
49
51
  className: styles.base(),
@@ -1,6 +1,7 @@
1
1
  import { ButtonHTMLAttributes, ReactNode } from 'react';
2
2
  import { type VariantProps } from 'tailwind-variants';
3
3
  import { ButtonProps } from '../button/index.js';
4
+ import { IconProps } from '../icon/icon.types.js';
4
5
  import { styles } from './button-dropdown.styles.js';
5
6
  import { ButtonDropdownPanelProps } from './components/button-dropdown-panel/button-dropdown-panel.types.js';
6
7
  type Variants = VariantProps<typeof styles>;
@@ -16,7 +17,7 @@ export type ButtonDropdownProps = {
16
17
  /**
17
18
  * Look for button
18
19
  */
19
- look?: 'primary' | 'hero' | 'faint';
20
+ look?: 'primary' | 'hero' | 'faint' | 'unstyled' | 'link';
20
21
  /**
21
22
  * State of whether the Popover is open
22
23
  */
@@ -28,6 +29,10 @@ export type ButtonDropdownProps = {
28
29
  /**
29
30
  * Button text
30
31
  */
31
- text: string;
32
+ text?: ReactNode;
33
+ /**
34
+ * Dropdown icon
35
+ */
36
+ dropDownIcon?: (props: IconProps) => ReactNode;
32
37
  } & ButtonHTMLAttributes<Element> & Pick<ButtonProps, 'size' | 'iconBefore' | 'block'> & Pick<ButtonDropdownPanelProps, 'shouldFlip'>;
33
38
  export {};
@@ -2,7 +2,7 @@ import { tv } from 'tailwind-variants';
2
2
  export const styles = tv({
3
3
  slots: {
4
4
  base: 'my-0.5 rounded border border-border bg-white p-2 shadow-[0_0.375rem_0.75rem_rgba(0,0,0,0.175)]',
5
- dialog: ''
5
+ dialog: '[&_:focus-visible]:focus-outline'
6
6
  },
7
7
  variants: {
8
8
  isFocused: {
@@ -2,7 +2,7 @@ import { tv } from 'tailwind-variants';
2
2
  export const styles = tv({
3
3
  slots: {
4
4
  base: 'px-0 text-text no-underline hover:underline',
5
- content: 'typography-body-10 mb-2 block'
5
+ content: 'typography-body-10 mb-2 block [&_:focus-visible]:focus-outline'
6
6
  },
7
7
  variants: {
8
8
  open: {
@@ -12,7 +12,7 @@ export const styles = tv({
12
12
  addBtn: 'h-auto p-0 no-underline hover:underline',
13
13
  toggleBtn: 'p-0',
14
14
  collapsible: '',
15
- content: 'px-3 pb-5 pt-0 md:px-9',
15
+ content: 'px-3 pb-5 pt-0 md:px-9 [&_:focus-visible]:focus-outline',
16
16
  footer: '',
17
17
  titlePrimary: 'typography-body-9 font-bold',
18
18
  titleSecondary: 'mt-1 items-center',
@@ -11,7 +11,7 @@ export function CalendarGrid({ state, weekdayStyle = 'short', ...props }) {
11
11
  ...gridProps
12
12
  }, React.createElement("thead", headerProps, React.createElement("tr", null, weekDays.map((day, index)=>React.createElement("th", {
13
13
  key: index,
14
- className: "text-text size-6 text-center text-[0.75rem] font-semibold leading-9"
14
+ className: "size-6 text-center text-[0.75rem] font-semibold leading-9 text-text"
15
15
  }, day.toUpperCase().slice(0, 2))))), React.createElement("tbody", null, [
16
16
  ...new Array(weeksInMonth).keys()
17
17
  ].map((weekIndex)=>React.createElement("tr", {
@@ -11,7 +11,7 @@ export declare const styles: import("tailwind-variants").TVReturnType<{
11
11
  true: string;
12
12
  false: string;
13
13
  };
14
- }, undefined, "font-light disabled:form-control-disabled", {
14
+ }, undefined, "font-light disabled:form-control-disabled focus:focus-outline", {
15
15
  responsiveVariants: string[];
16
16
  }, {
17
17
  isPlaceholder: {
@@ -39,6 +39,6 @@ export declare const styles: import("tailwind-variants").TVReturnType<{
39
39
  true: string;
40
40
  false: string;
41
41
  };
42
- }, undefined, "font-light disabled:form-control-disabled", {
42
+ }, undefined, "font-light disabled:form-control-disabled focus:focus-outline", {
43
43
  responsiveVariants: string[];
44
44
  }, unknown, unknown, undefined>>;
@@ -1,6 +1,6 @@
1
1
  import { tv } from 'tailwind-variants';
2
2
  export const styles = tv({
3
- base: 'font-light disabled:form-control-disabled',
3
+ base: 'font-light disabled:form-control-disabled focus:focus-outline',
4
4
  variants: {
5
5
  isPlaceholder: {
6
6
  true: 'text-text-50 opacity-100',
@@ -18,7 +18,7 @@ export const styles = tv({
18
18
  },
19
19
  false: {
20
20
  underlay: '',
21
- closeButton: 'border-border pointer-events-none absolute right-0 top-0 size-5 -translate-y-1/2 translate-x-1/2 touch-none rounded-full border bg-white opacity-0 focus:pointer-events-auto focus:touch-auto focus:opacity-100',
21
+ closeButton: 'pointer-events-none absolute right-0 top-0 size-5 -translate-y-1/2 translate-x-1/2 touch-none rounded-full border border-border bg-white opacity-0 focus:pointer-events-auto focus:touch-auto focus:opacity-100',
22
22
  headerLabel: 'hidden',
23
23
  popover: 'absolute mt-1 scale-100 animate-fadeIn rounded border border-border bg-white opacity-100 shadow-[0_5px_10px_rgba(0,0,0,0.2)]'
24
24
  }
@@ -34,7 +34,7 @@ export function FilterButtons({ filterButtons, onClick, selectedButton, tag: Tag
34
34
  let targetElement;
35
35
  let scrollX;
36
36
  let scrollBy = true;
37
- const buttonPaddingOffset = 20;
37
+ const buttonPaddingOffset = 26;
38
38
  if (direction === 'left') {
39
39
  if (scrollTarget.left === -1) {
40
40
  scrollX = -container.clientWidth;
@@ -190,8 +190,7 @@ export function FilterButtons({ filterButtons, onClick, selectedButton, tag: Tag
190
190
  }),
191
191
  style: {
192
192
  scrollbarWidth: 'none',
193
- msOverflowStyle: 'none',
194
- overflowX: 'scroll'
193
+ msOverflowStyle: 'none'
195
194
  },
196
195
  ...props,
197
196
  ref: scrollContainerRef,
@@ -1,17 +1,17 @@
1
1
  import { tv } from 'tailwind-variants';
2
2
  export const styles = tv({
3
3
  slots: {
4
- base: 'relative flex justify-start',
5
- buttonList: 'flex w-full touch-pan-x gap-1 overflow-x-auto overflow-y-visible whitespace-nowrap',
6
- scrollButton: 'absolute rounded-none contrast-more:bg-black'
4
+ base: 'relative -left-1 flex justify-start',
5
+ buttonList: 'flex w-full touch-pan-x gap-1 overflow-y-visible overflow-x-scroll whitespace-nowrap p-1',
6
+ scrollButton: 'absolute inset-y-0 h-auto rounded-none contrast-more:bg-black'
7
7
  },
8
8
  variants: {
9
9
  position: {
10
10
  left: {
11
- scrollButton: '-left-1 bg-[linear-gradient(90deg,_#fff_66%,_transparent)] pl-0'
11
+ scrollButton: 'left-0 bg-[linear-gradient(90deg,_#fff_66%,_transparent)] pl-0'
12
12
  },
13
13
  right: {
14
- scrollButton: '-right-1 bg-[linear-gradient(270deg,_#fff_66%,_transparent)] pr-0'
14
+ scrollButton: '-right-2 bg-[linear-gradient(270deg,_#fff_66%,_transparent)] pr-0'
15
15
  }
16
16
  },
17
17
  hidden: {
@@ -2,6 +2,6 @@ import React from 'react';
2
2
  export function Filter({ children, ...props }) {
3
3
  return React.createElement("div", {
4
4
  ...props,
5
- className: "flex flex-col gap-3"
5
+ className: "flex flex-col gap-2"
6
6
  }, children);
7
7
  }
@@ -10,7 +10,7 @@ export declare const styles: import("tailwind-variants").TVReturnType<{
10
10
  base: string;
11
11
  };
12
12
  };
13
- }, undefined, "flex flex-1 flex-col gap-1 overflow-hidden", {
13
+ }, undefined, "flex flex-1 flex-col gap-1 overflow-x-clip", {
14
14
  responsiveVariants: string[];
15
15
  }, {
16
16
  isLink: {
@@ -36,6 +36,6 @@ export declare const styles: import("tailwind-variants").TVReturnType<{
36
36
  base: string;
37
37
  };
38
38
  };
39
- }, undefined, "flex flex-1 flex-col gap-1 overflow-hidden", {
39
+ }, undefined, "flex flex-1 flex-col gap-1 overflow-x-clip", {
40
40
  responsiveVariants: string[];
41
41
  }, unknown, unknown, undefined>>;
@@ -1,6 +1,6 @@
1
1
  import { tv } from 'tailwind-variants';
2
2
  export const styles = tv({
3
- base: 'flex flex-1 flex-col gap-1 overflow-hidden',
3
+ base: 'flex flex-1 flex-col gap-1 overflow-x-clip',
4
4
  variants: {
5
5
  isLink: {
6
6
  true: 'group/dualaction'
@@ -1,7 +1,7 @@
1
1
  import { tv } from 'tailwind-variants';
2
2
  export const styles = tv({
3
3
  slots: {
4
- base: 'relative flex bg-white transition-colors',
4
+ base: 'relative flex bg-white transition-colors [&_:focus-visible]:focus-outline',
5
5
  topBadgeWrapper: 'absolute right-[-1px] top-[-1px]',
6
6
  topBadge: 'rounded-br-none rounded-tl-none'
7
7
  },
@@ -1,7 +1,7 @@
1
1
  import { tv } from 'tailwind-variants';
2
2
  export const styles = tv({
3
3
  slots: {
4
- base: 'relative overflow-hidden border-t border-t-border',
4
+ base: 'relative overflow-hidden border-t border-t-border [&_:focus-visible]:focus-outline',
5
5
  wrapper: 'pt-3 max-md:px-2 max-md:pb-3 md:px-4 md:pb-3',
6
6
  link: 'float-right block',
7
7
  logoWrapper: 'flex justify-end'
@@ -8,7 +8,7 @@ export const styles = tv({
8
8
  largeLogo: 'max-sm:hidden',
9
9
  leftContent: 'flex items-center',
10
10
  leftButton: 'my-1 rounded-none border-r border-[#E8E8ED] p-0 max-sm:-ml-2 max-sm:mr-2 max-sm:h-7 max-sm:min-w-7 sm:-ml-4 sm:mr-3 sm:h-[3.3125rem] sm:min-w-10',
11
- rightContent: 'ml-auto flex items-center'
11
+ rightContent: 'ml-auto flex items-center [&_:focus-visible]:focus-outline'
12
12
  },
13
13
  variants: {
14
14
  logoCenter: {
@@ -7,7 +7,7 @@ export declare const styles: import("tailwind-variants").TVReturnType<{
7
7
  before: string;
8
8
  after: string;
9
9
  };
10
- }, undefined, "inset-y-0", {
10
+ }, undefined, "inset-y-0 focus-within:z-20", {
11
11
  responsiveVariants: string[];
12
12
  }, {
13
13
  isInset: {
@@ -27,6 +27,6 @@ export declare const styles: import("tailwind-variants").TVReturnType<{
27
27
  before: string;
28
28
  after: string;
29
29
  };
30
- }, undefined, "inset-y-0", {
30
+ }, undefined, "inset-y-0 focus-within:z-20", {
31
31
  responsiveVariants: string[];
32
32
  }, unknown, unknown, undefined>>;
@@ -1,6 +1,6 @@
1
1
  import { tv } from 'tailwind-variants';
2
2
  export const styles = tv({
3
- base: 'inset-y-0',
3
+ base: 'inset-y-0 focus-within:z-20',
4
4
  variants: {
5
5
  isInset: {
6
6
  true: 'absolute',
@@ -15,12 +15,12 @@ export const styles = tv({
15
15
  {
16
16
  isInset: true,
17
17
  position: 'before',
18
- className: 'left-0'
18
+ className: 'left-0 z-[11]'
19
19
  },
20
20
  {
21
21
  isInset: true,
22
22
  position: 'after',
23
- className: 'right-0'
23
+ className: 'right-0 z-[11]'
24
24
  }
25
25
  ]
26
26
  }, {
@@ -1,4 +1,5 @@
1
1
  'use client';
2
+ import { clsx } from 'clsx';
2
3
  import React, { Children, cloneElement, isValidElement, useCallback, useId, useMemo } from 'react';
3
4
  import { ErrorMessage, Hint, Label } from '../index.js';
4
5
  import { InputGroupSupportingText } from './components/index.js';
@@ -78,7 +79,8 @@ export function InputGroup({ label, hideLabel, size = 'medium', hint, errorMessa
78
79
  'aria-label': ariaLabel,
79
80
  ...width !== 'full' ? {
80
81
  width: width
81
- } : {}
82
+ } : {},
83
+ className: clsx(child.props.className, 'focus:z-10')
82
84
  });
83
85
  }
84
86
  });
@@ -31,7 +31,7 @@ export const styles = tv({
31
31
  },
32
32
  isFocusVisible: {
33
33
  true: {
34
- close: 'focus-outline'
34
+ close: '!outline-offset-[-3px] focus-outline'
35
35
  },
36
36
  false: {
37
37
  close: 'outline-none'
@@ -1,15 +1,21 @@
1
1
  import React from 'react';
2
+ import { mergeProps, useButton, useFocusRing } from 'react-aria';
2
3
  import { styles } from './pagination-item.styles.js';
3
4
  export function PaginationItem({ className, firstItem = false, lastItem = false, tag: Tag = 'a', children, active, disabled = false, ...props }) {
5
+ const ref = React.useRef(null);
6
+ const { focusProps, isFocusVisible } = useFocusRing();
7
+ const { buttonProps } = useButton(props, ref);
8
+ const finalButtonProps = mergeProps(focusProps, buttonProps);
4
9
  return React.createElement(Tag, {
5
10
  className: styles({
6
11
  className,
7
12
  firstItem,
8
13
  lastItem,
9
14
  active,
10
- disabled
15
+ disabled,
16
+ isFocusVisible
11
17
  }),
12
- ...props,
18
+ ...finalButtonProps,
13
19
  disabled: disabled,
14
20
  "aria-disabled": disabled ? 'true' : 'false',
15
21
  "aria-current": active ? 'page' : undefined,
@@ -1,4 +1,8 @@
1
1
  export declare const styles: import("tailwind-variants").TVReturnType<{
2
+ isFocusVisible: {
3
+ true: string;
4
+ false: string;
5
+ };
2
6
  firstItem: {
3
7
  true: string;
4
8
  false: string;
@@ -18,6 +22,10 @@ export declare const styles: import("tailwind-variants").TVReturnType<{
18
22
  }, undefined, "typography-body-10 relative block min-w-7 border border-border px-2 py-1.5 text-center text-text", {
19
23
  responsiveVariants: string[];
20
24
  }, {
25
+ isFocusVisible: {
26
+ true: string;
27
+ false: string;
28
+ };
21
29
  firstItem: {
22
30
  true: string;
23
31
  false: string;
@@ -35,6 +43,10 @@ export declare const styles: import("tailwind-variants").TVReturnType<{
35
43
  false: string;
36
44
  };
37
45
  }, undefined, import("tailwind-variants").TVReturnType<{
46
+ isFocusVisible: {
47
+ true: string;
48
+ false: string;
49
+ };
38
50
  firstItem: {
39
51
  true: string;
40
52
  false: string;
@@ -2,6 +2,10 @@ import { tv } from 'tailwind-variants';
2
2
  export const styles = tv({
3
3
  base: 'typography-body-10 relative block min-w-7 border border-border px-2 py-1.5 text-center text-text',
4
4
  variants: {
5
+ isFocusVisible: {
6
+ true: 'z-10 focus-outline',
7
+ false: ''
8
+ },
5
9
  firstItem: {
6
10
  true: 'rounded-l',
7
11
  false: 'ml-[-1px]'
@@ -11,7 +15,7 @@ export const styles = tv({
11
15
  false: ''
12
16
  },
13
17
  active: {
14
- true: 'z-10 border-hero bg-hero text-white',
18
+ true: 'border-hero bg-hero text-white',
15
19
  false: 'hover:bg-light'
16
20
  },
17
21
  disabled: {
@@ -2,7 +2,7 @@ import { tv } from 'tailwind-variants';
2
2
  export const styles = tv({
3
3
  slots: {
4
4
  base: 'flex flex-col items-center',
5
- ul: 'flex overflow-hidden',
5
+ ul: 'flex',
6
6
  emptyItem: 'typography-body-10 relative block min-w-7 cursor-default border-y border-border px-2 py-1.5 text-center text-text'
7
7
  },
8
8
  variants: {}
@@ -1,7 +1,7 @@
1
1
  import { tv } from 'tailwind-variants';
2
2
  export const styles = tv({
3
3
  slots: {
4
- base: 'border-0 border-t border-border bg-light px-2 py-[0.625rem] sm:px-4'
4
+ base: 'border-0 border-t border-border bg-light px-2 py-[0.625rem] sm:px-4 [&_:focus-visible]:focus-outline'
5
5
  },
6
6
  variants: {}
7
7
  }, {
@@ -1,7 +1,7 @@
1
1
  import { tv } from 'tailwind-variants';
2
2
  export const styles = tv({
3
3
  slots: {
4
- base: 'group/panel overflow-hidden rounded border border-hero',
4
+ base: 'group/panel overflow-hidden rounded border border-hero [&_:focus-visible]:focus-outline',
5
5
  header: 'px-2 py-[0.625rem] sm:px-4'
6
6
  },
7
7
  variants: {
@@ -9,8 +9,8 @@ export const styles = tv({
9
9
  `,
10
10
  closeBtn: 'absolute right-1 top-1 h-3 p-0 hover:opacity-80',
11
11
  content: 'w-[17.625rem] rounded-[3px] bg-white py-4 pl-3 pr-5',
12
- heading: 'typography-body-9 mb-2 font-medium text-text',
13
- body: 'typography-body-10 text-text'
12
+ heading: 'typography-body-9 mb-2 font-medium text-text focus-visible:focus-outline',
13
+ body: 'typography-body-10 text-text focus-visible:focus-outline'
14
14
  },
15
15
  variants: {
16
16
  placement: {
@@ -1,11 +1,12 @@
1
- import { AnimatePresence, LazyMotion, m } from 'motion/react';
2
- import React, { useId, useMemo } from 'react';
1
+ import { LazyMotion, m, useAnimate } from 'motion/react';
2
+ import React, { useEffect, useId, useMemo, useState } from 'react';
3
3
  import { useFocusRing } from 'react-aria';
4
4
  import { Circle, VisuallyHidden } from '../../../index.js';
5
5
  import { ProgressRopeStep } from '../index.js';
6
6
  import { styles as progressRopeGroupStyles } from './progress-rope-group-step.styles.js';
7
7
  const loadAnimations = ()=>import('./progress-rope-group-step.utils.js').then((res)=>res.default);
8
8
  export function ProgressRopeGroupStep({ steps, currentKey, furthestVisitedStep, children, firstItem, opened, onToggle, tag: Tag }) {
9
+ const [scope, animate] = useAnimate();
9
10
  const id = useId();
10
11
  const stepsContainerID = `progress-rope-group-steps-container-${id}`;
11
12
  const current = useMemo(()=>{
@@ -55,6 +56,32 @@ export function ProgressRopeGroupStep({ steps, currentKey, furthestVisitedStep,
55
56
  state,
56
57
  isFocusVisible
57
58
  });
59
+ const [overflowVisible, setOverflowVisible] = useState(false);
60
+ useEffect(()=>{
61
+ if (opened) {
62
+ animate(scope.current, {
63
+ height: 'auto'
64
+ }, {
65
+ duration: 0.2,
66
+ ease: 'easeInOut',
67
+ onComplete: ()=>{
68
+ setOverflowVisible(true);
69
+ }
70
+ });
71
+ } else {
72
+ animate(scope.current, {
73
+ height: 0
74
+ }, {
75
+ duration: 0.2,
76
+ ease: 'easeInOut',
77
+ onPlay: ()=>{
78
+ setOverflowVisible(false);
79
+ }
80
+ });
81
+ }
82
+ }, [
83
+ opened
84
+ ]);
58
85
  return React.createElement(Tag, null, React.createElement("button", {
59
86
  "aria-expanded": opened,
60
87
  className: styles.circleWrapper({}),
@@ -66,23 +93,13 @@ export function ProgressRopeGroupStep({ steps, currentKey, furthestVisitedStep,
66
93
  "aria-hidden": "true"
67
94
  }), children, React.createElement(VisuallyHidden, null, visuallyHiddenMessage)), React.createElement(LazyMotion, {
68
95
  features: loadAnimations
69
- }, React.createElement(AnimatePresence, {
70
- initial: false
71
- }, opened && React.createElement(m.div, {
96
+ }, React.createElement(m.div, {
97
+ ref: scope,
72
98
  initial: {
73
- height: 0,
74
- overflow: 'hidden'
75
- },
76
- animate: {
77
- height: 'auto'
78
- },
79
- exit: {
80
- height: 0,
81
- overflow: 'hidden'
99
+ height: opened ? 'auto' : 0
82
100
  },
83
- transition: {
84
- duration: 0.2,
85
- ease: 'easeInOut'
101
+ style: {
102
+ overflow: overflowVisible ? 'visible' : 'hidden'
86
103
  }
87
104
  }, React.createElement("ol", {
88
105
  className: styles.stepsWrapper({}),
@@ -97,6 +114,7 @@ export function ProgressRopeGroupStep({ steps, currentKey, furthestVisitedStep,
97
114
  onClick: (furthestVisitedStep || 0) >= step.index ? step.onClick : undefined,
98
115
  current: step.index === currentKey,
99
116
  visited: (furthestVisitedStep || 0) > step.index,
100
- furthest: furthestVisitedStep === step.index
101
- }, step.text))))))));
117
+ furthest: furthestVisitedStep === step.index,
118
+ tabIndex: opened ? 0 : -1
119
+ }, step.text)))))));
102
120
  }
@@ -5,7 +5,7 @@ export const styles = tv({
5
5
  list: 'm-0 flex list-none flex-col pl-0',
6
6
  item: 'relative',
7
7
  itemIndex: 'mb-3 font-bold',
8
- content: '',
8
+ content: '[&_:focus-visible]:focus-outline',
9
9
  removeBtn: 'absolute right-0 top-0 h-auto p-0 no-underline hover:underline',
10
10
  footer: 'flex justify-between pt-[0.875rem]',
11
11
  addBtn: 'h-auto p-0 no-underline hover:underline'