@transferwise/components 46.160.1 → 46.160.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 (69) hide show
  1. package/build/Calendar/Calendar.js +9 -3
  2. package/build/Calendar/Calendar.js.map +1 -1
  3. package/build/Calendar/Calendar.mjs +9 -3
  4. package/build/Calendar/Calendar.mjs.map +1 -1
  5. package/build/Carousel/Carousel.js +17 -10
  6. package/build/Carousel/Carousel.js.map +1 -1
  7. package/build/Carousel/Carousel.mjs +17 -10
  8. package/build/Carousel/Carousel.mjs.map +1 -1
  9. package/build/SegmentedControl/SegmentedControl.js +9 -2
  10. package/build/SegmentedControl/SegmentedControl.js.map +1 -1
  11. package/build/SegmentedControl/SegmentedControl.mjs +9 -2
  12. package/build/SegmentedControl/SegmentedControl.mjs.map +1 -1
  13. package/build/Tooltip/Tooltip.js +6 -1
  14. package/build/Tooltip/Tooltip.js.map +1 -1
  15. package/build/Tooltip/Tooltip.mjs +6 -1
  16. package/build/Tooltip/Tooltip.mjs.map +1 -1
  17. package/build/i18n/tr.json +5 -0
  18. package/build/i18n/tr.json.js +5 -0
  19. package/build/i18n/tr.json.js.map +1 -1
  20. package/build/i18n/tr.json.mjs +5 -0
  21. package/build/i18n/tr.json.mjs.map +1 -1
  22. package/build/i18n/zh-CN.json +5 -0
  23. package/build/i18n/zh-CN.json.js +5 -0
  24. package/build/i18n/zh-CN.json.js.map +1 -1
  25. package/build/i18n/zh-CN.json.mjs +5 -0
  26. package/build/i18n/zh-CN.json.mjs.map +1 -1
  27. package/build/main.css +34 -22
  28. package/build/styles/AvatarLayout/AvatarLayout.css +26 -9
  29. package/build/styles/SegmentedControl/SegmentedControl.css +2 -1
  30. package/build/styles/Tooltip/Tooltip.css +0 -6
  31. package/build/styles/common/Panel/Panel.css +6 -6
  32. package/build/styles/main.css +34 -22
  33. package/build/types/Calendar/Calendar.d.ts.map +1 -1
  34. package/build/types/Carousel/Carousel.d.ts.map +1 -1
  35. package/build/types/Carousel/_stories/constants.d.ts +3 -0
  36. package/build/types/Carousel/_stories/constants.d.ts.map +1 -0
  37. package/build/types/SegmentedControl/SegmentedControl.d.ts.map +1 -1
  38. package/build/types/Tooltip/Tooltip.d.ts.map +1 -1
  39. package/package.json +4 -4
  40. package/src/AvatarLayout/AvatarLayout.css +26 -9
  41. package/src/AvatarLayout/AvatarLayout.less +46 -22
  42. package/src/AvatarLayout/_stories/AvatarLayout.test.story.tsx +17 -42
  43. package/src/Calendar/Calendar.test.tsx +82 -0
  44. package/src/Calendar/Calendar.tsx +6 -3
  45. package/src/Carousel/Carousel.test.tsx +50 -2
  46. package/src/Carousel/Carousel.tsx +13 -10
  47. package/src/Carousel/_stories/Carousel.story.tsx +12 -52
  48. package/src/Carousel/_stories/Carousel.test.story.tsx +7 -43
  49. package/src/Carousel/_stories/constants.tsx +46 -0
  50. package/src/DateLookup/_stories/DateLookup.rtl.test.story.tsx +59 -48
  51. package/src/Field/_stories/Field.test.story.tsx +48 -37
  52. package/src/FlowNavigation/_stories/FlowNavigation.rtl.test.story.tsx +78 -0
  53. package/src/FlowNavigation/_stories/FlowNavigation.test.story.tsx +0 -44
  54. package/src/Label/_stories/Label.test.story.tsx +35 -22
  55. package/src/Popover/_stories/Popover.rtl.test.story.tsx +40 -50
  56. package/src/SegmentedControl/SegmentedControl.css +2 -1
  57. package/src/SegmentedControl/SegmentedControl.less +4 -2
  58. package/src/SegmentedControl/SegmentedControl.tsx +8 -2
  59. package/src/SegmentedControl/_stories/SegmentedControl.test.story.tsx +16 -8
  60. package/src/Tooltip/Tooltip.css +0 -6
  61. package/src/Tooltip/Tooltip.less +0 -12
  62. package/src/Tooltip/Tooltip.test.tsx +51 -0
  63. package/src/Tooltip/Tooltip.tsx +11 -1
  64. package/src/Tooltip/_stories/Tooltip.rtl.test.story.tsx +16 -34
  65. package/src/common/Panel/Panel.css +6 -6
  66. package/src/common/Panel/Panel.less +6 -6
  67. package/src/i18n/tr.json +5 -0
  68. package/src/i18n/zh-CN.json +5 -0
  69. package/src/main.css +34 -22
@@ -1,3 +1,4 @@
1
+ import { useState } from 'react';
1
2
  import type { Meta, StoryObj } from '@storybook/react-webpack5';
2
3
  import { withRTLDiff } from '../../../.storybook/decorators/RtlDiffDecorator';
3
4
  import SegmentedControl from '../SegmentedControl';
@@ -22,24 +23,31 @@ const viewSegments = [
22
23
  { id: 'seg-gamma', label: 'Gamma', value: 'gamma', controls: 'panel-gamma' },
23
24
  ] as const;
24
25
 
25
- export const RTLDiff: Story = {
26
- render: () => (
26
+ function InteractiveSegmentedControl() {
27
+ const [inputValue, setInputValue] = useState('one');
28
+ const [viewValue, setViewValue] = useState('beta');
29
+
30
+ return (
27
31
  <>
28
32
  <SegmentedControl
29
33
  name="rtl-input"
30
34
  mode="input"
31
35
  segments={inputSegments}
32
- value="one"
33
- onChange={() => {}}
36
+ value={inputValue}
37
+ onChange={setInputValue}
34
38
  />
35
39
  <SegmentedControl
36
40
  name="rtl-view"
37
41
  mode="view"
38
42
  segments={viewSegments}
39
- value="alpha"
40
- onChange={() => {}}
43
+ value={viewValue}
44
+ onChange={setViewValue}
41
45
  />
42
46
  </>
43
- ),
44
- ...withRTLDiff(),
47
+ );
48
+ }
49
+
50
+ export const RTLDiff: Story = {
51
+ render: () => <InteractiveSegmentedControl />,
52
+ ...withRTLDiff({ width: 'stretch', renderAs: 'iframe' }),
45
53
  };
@@ -42,9 +42,3 @@
42
42
  visibility: visible;
43
43
  visibility: initial;
44
44
  }
45
- .np-panel[data-popper-placement^="right"] > .np-panel__content.tooltip-inner .np-panel__arrow {
46
- inset-inline-start: -7px;
47
- }
48
- .np-panel[data-popper-placement^="left"] > .np-panel__content.tooltip-inner .np-panel__arrow {
49
- inset-inline-end: -7px;
50
- }
@@ -48,15 +48,3 @@
48
48
  }
49
49
  }
50
50
  }
51
-
52
- .np-panel[data-popper-placement^="right"] > .np-panel__content.tooltip-inner {
53
- .np-panel__arrow {
54
- left: -7px;
55
- }
56
- }
57
-
58
- .np-panel[data-popper-placement^="left"] > .np-panel__content.tooltip-inner {
59
- .np-panel__arrow {
60
- right: -7px;
61
- }
62
- }
@@ -1,6 +1,7 @@
1
1
  import { render, screen } from '@testing-library/react';
2
2
  import { userEvent } from '@testing-library/user-event';
3
3
 
4
+ import { DirectionProvider } from '../Provider/Direction/DirectionProvider';
4
5
  import Tooltip from '.';
5
6
 
6
7
  describe('Tooltip Component', () => {
@@ -102,4 +103,54 @@ describe('Tooltip Component', () => {
102
103
  const tooltipElement = screen.getByRole('tooltip', { hidden: true });
103
104
  expect(tooltipElement).toBeVisible();
104
105
  });
106
+
107
+ describe('RTL position mirroring', () => {
108
+ it('mirrors position="left" to right in RTL', async () => {
109
+ render(
110
+ <DirectionProvider direction="rtl">
111
+ <Tooltip label="Test Tooltip" position="left">
112
+ <span>Hover me</span>
113
+ </Tooltip>
114
+ </DirectionProvider>,
115
+ );
116
+ const triggerElement = screen.getByText('Hover me');
117
+ await userEvent.hover(triggerElement);
118
+
119
+ const tooltip = screen.getByRole('tooltip', { hidden: true });
120
+ expect(tooltip).toHaveAttribute('data-popper-placement', 'right');
121
+ });
122
+
123
+ it('mirrors position="right" to left in RTL', async () => {
124
+ render(
125
+ <DirectionProvider direction="rtl">
126
+ <Tooltip label="Test Tooltip" position="right">
127
+ <span>Hover me</span>
128
+ </Tooltip>
129
+ </DirectionProvider>,
130
+ );
131
+ const triggerElement = screen.getByText('Hover me');
132
+ await userEvent.hover(triggerElement);
133
+
134
+ const tooltip = screen.getByRole('tooltip', { hidden: true });
135
+ expect(tooltip).toHaveAttribute('data-popper-placement', 'left');
136
+ });
137
+
138
+ it.each(['top', 'bottom'] as const)(
139
+ 'does not mirror position="%s" in RTL',
140
+ async (position) => {
141
+ render(
142
+ <DirectionProvider direction="rtl">
143
+ <Tooltip label="Test Tooltip" position={position}>
144
+ <span>Hover me</span>
145
+ </Tooltip>
146
+ </DirectionProvider>,
147
+ );
148
+ const triggerElement = screen.getByText('Hover me');
149
+ await userEvent.hover(triggerElement);
150
+
151
+ const tooltip = screen.getByRole('tooltip', { hidden: true });
152
+ expect(tooltip).toHaveAttribute('data-popper-placement', position);
153
+ },
154
+ );
155
+ });
105
156
  });
@@ -19,6 +19,7 @@ import {
19
19
  } from 'react';
20
20
 
21
21
  import { CommonProps, Position } from '../common';
22
+ import useDirection from '../common/hooks/useDirection';
22
23
  import {
23
24
  PositionBottom,
24
25
  PositionLeft,
@@ -42,12 +43,21 @@ const Tooltip = ({
42
43
  }: TooltipProps) => {
43
44
  const [open, setOpen] = useState(false);
44
45
  const arrowRef = useRef<HTMLDivElement | null>(null);
46
+ const { isRTL } = useDirection();
47
+
48
+ const resolvedPosition = isRTL
49
+ ? position === 'left'
50
+ ? 'right'
51
+ : position === 'right'
52
+ ? 'left'
53
+ : position
54
+ : position;
45
55
 
46
56
  const fallbackId = useId();
47
57
  const tooltipId = id ?? fallbackId;
48
58
 
49
59
  const { refs, floatingStyles, placement, middlewareData } = useFloating({
50
- placement: position,
60
+ placement: resolvedPosition,
51
61
  middleware: [
52
62
  offset(16),
53
63
  flip({ fallbackPlacements: [Position.TOP] }),
@@ -13,16 +13,6 @@ export default {
13
13
 
14
14
  type Story = StoryObj<typeof Tooltip>;
15
15
 
16
- const iframeDiff = withRTLDiff({ renderAs: 'iframe' });
17
-
18
- const containerStyle: React.CSSProperties = {
19
- display: 'flex',
20
- justifyContent: 'center',
21
- alignItems: 'center',
22
- minHeight: '20rem',
23
- width: '100%',
24
- };
25
-
26
16
  const hoverTrigger = async ({ canvasElement }: { canvasElement: HTMLElement }) => {
27
17
  const canvas = within(canvasElement);
28
18
  const button = canvas.queryByRole('button');
@@ -32,48 +22,40 @@ const hoverTrigger = async ({ canvasElement }: { canvasElement: HTMLElement }) =
32
22
 
33
23
  export const PositionTop: Story = {
34
24
  render: () => (
35
- <div style={containerStyle}>
36
- <Tooltip label="Top positioned tooltip" position="top">
37
- <Button>Top</Button>
38
- </Tooltip>
39
- </div>
25
+ <Tooltip label="Top positioned tooltip" position="top">
26
+ <Button>Top</Button>
27
+ </Tooltip>
40
28
  ),
41
29
  play: hoverTrigger,
42
- ...iframeDiff,
30
+ ...withRTLDiff({ renderAs: 'iframe', hAlign: 'center', vAlign: 'bottom' }),
43
31
  };
44
32
 
45
33
  export const PositionBottom: Story = {
46
34
  render: () => (
47
- <div style={containerStyle}>
48
- <Tooltip label="Bottom positioned tooltip" position="bottom">
49
- <Button>Bottom</Button>
50
- </Tooltip>
51
- </div>
35
+ <Tooltip label="Bottom positioned tooltip" position="bottom">
36
+ <Button>Bottom</Button>
37
+ </Tooltip>
52
38
  ),
53
39
  play: hoverTrigger,
54
- ...iframeDiff,
40
+ ...withRTLDiff({ renderAs: 'iframe', hAlign: 'center' }),
55
41
  };
56
42
 
57
43
  export const PositionRight: Story = {
58
44
  render: () => (
59
- <div style={containerStyle}>
60
- <Tooltip label="Right positioned tooltip" position="right">
61
- <Button>Right</Button>
62
- </Tooltip>
63
- </div>
45
+ <Tooltip label="Right positioned tooltip" position="right">
46
+ <Button>Right</Button>
47
+ </Tooltip>
64
48
  ),
65
49
  play: hoverTrigger,
66
- ...iframeDiff,
50
+ ...withRTLDiff({ renderAs: 'iframe', hAlign: 'left', vAlign: 'center' }),
67
51
  };
68
52
 
69
53
  export const PositionLeft: Story = {
70
54
  render: () => (
71
- <div style={containerStyle}>
72
- <Tooltip label="Left positioned tooltip" position="left">
73
- <Button>Left</Button>
74
- </Tooltip>
75
- </div>
55
+ <Tooltip label="Left positioned tooltip" position="left">
56
+ <Button>Left</Button>
57
+ </Tooltip>
76
58
  ),
77
59
  play: hoverTrigger,
78
- ...iframeDiff,
60
+ ...withRTLDiff({ renderAs: 'iframe', hAlign: 'right', vAlign: 'center' }),
79
61
  };
@@ -40,33 +40,33 @@
40
40
  transform: translateY(10px) scale(0.95);
41
41
  }
42
42
  .np-panel[data-popper-placement^="top"] .np-panel__arrow {
43
- inset-block-end: -6px;
43
+ inset-block-end: -7px;
44
44
  }
45
45
  .np-panel[data-popper-placement^="right"] > .np-panel__content {
46
46
  transform: translateX(-10px) scale(0.95);
47
47
  }
48
48
  .np-panel[data-popper-placement^="right"] .np-panel__arrow {
49
- inset-inline-start: -6px;
49
+ inset-inline-start: -7px;
50
50
  }
51
51
  [dir="rtl"] .np-panel[data-popper-placement^="right"] .np-panel__arrow {
52
52
  inset-inline-start: unset;
53
- inset-inline-end: -6px;
53
+ inset-inline-end: -7px;
54
54
  }
55
55
  .np-panel[data-popper-placement^="bottom"] > .np-panel__content {
56
56
  transform: translateY(-10px) scale(0.95);
57
57
  }
58
58
  .np-panel[data-popper-placement^="bottom"] .np-panel__arrow {
59
- inset-block-start: -6px;
59
+ inset-block-start: -7px;
60
60
  }
61
61
  .np-panel[data-popper-placement^="left"] > .np-panel__content {
62
62
  transform: translateX(10px) scale(0.95);
63
63
  }
64
64
  .np-panel[data-popper-placement^="left"] .np-panel__arrow {
65
- inset-inline-end: -6px;
65
+ inset-inline-end: -7px;
66
66
  }
67
67
  [dir="rtl"] .np-panel[data-popper-placement^="left"] .np-panel__arrow {
68
68
  inset-inline-end: unset;
69
- inset-inline-start: -6px;
69
+ inset-inline-start: -7px;
70
70
  }
71
71
  .np-theme-personal .np-panel__content {
72
72
  border-radius: 16px;
@@ -51,7 +51,7 @@
51
51
  }
52
52
 
53
53
  .np-panel__arrow {
54
- bottom: -6px;
54
+ bottom: -7px;
55
55
  }
56
56
  }
57
57
 
@@ -61,11 +61,11 @@
61
61
  }
62
62
 
63
63
  .np-panel__arrow {
64
- left: -6px;
64
+ left: -7px;
65
65
 
66
66
  [dir="rtl"] & {
67
67
  left: unset;
68
- right: -6px;
68
+ right: -7px;
69
69
  }
70
70
  }
71
71
  }
@@ -76,7 +76,7 @@
76
76
  }
77
77
 
78
78
  .np-panel__arrow {
79
- top: -6px;
79
+ top: -7px;
80
80
  }
81
81
  }
82
82
 
@@ -86,11 +86,11 @@
86
86
  }
87
87
 
88
88
  .np-panel__arrow {
89
- right: -6px;
89
+ right: -7px;
90
90
 
91
91
  [dir="rtl"] & {
92
92
  right: unset;
93
- left: -6px;
93
+ left: -7px;
94
94
  }
95
95
  }
96
96
  }
package/src/i18n/tr.json CHANGED
@@ -12,6 +12,10 @@
12
12
  "neptune.DateLookup.goTo20YearView": "20 yıl görünümüne git",
13
13
  "neptune.DateLookup.month": "ay",
14
14
  "neptune.DateLookup.next": "devam et",
15
+ "neptune.DateLookup.notAvailable": "kullanılamaz",
16
+ "neptune.DateLookup.outOfRangeAfter": "Lütfen {min} veya daha sonraki bir tarih girin.",
17
+ "neptune.DateLookup.outOfRangeBefore": "Lütfen {max} veya daha önceki bir tarih girin.",
18
+ "neptune.DateLookup.outOfRangeBetween": "Lütfen {min} ile {max} arasında bir tarih girin.",
15
19
  "neptune.DateLookup.previous": "önceki",
16
20
  "neptune.DateLookup.selected": "seçili",
17
21
  "neptune.DateLookup.twentyYears": "20 yıl",
@@ -46,6 +50,7 @@
46
50
  "neptune.Table.loaded": "Tablo verileri yüklendi",
47
51
  "neptune.Table.loading": "Tablo verileri yükleniyor",
48
52
  "neptune.Table.refreshPage": "Sayfayı yenile",
53
+ "neptune.Typeahead.suggestionsLabel": "Öneriler",
49
54
  "neptune.Upload.csButtonText": "Başka bir dosya yükleyin?",
50
55
  "neptune.Upload.csFailureText": "Yükleme başarısız. Lütfen yine deneyin",
51
56
  "neptune.Upload.csSuccessText": "Yükleme tamamlandı!",
@@ -12,6 +12,10 @@
12
12
  "neptune.DateLookup.goTo20YearView": "转到 20 年视图",
13
13
  "neptune.DateLookup.month": "月",
14
14
  "neptune.DateLookup.next": "下一页",
15
+ "neptune.DateLookup.notAvailable": "不可用",
16
+ "neptune.DateLookup.outOfRangeAfter": "请输入 {min}或之后的日期。",
17
+ "neptune.DateLookup.outOfRangeBefore": "请输入 {max}或之前的日期。",
18
+ "neptune.DateLookup.outOfRangeBetween": "请输入 {min}与 {max}之间的日期。",
15
19
  "neptune.DateLookup.previous": "上一页",
16
20
  "neptune.DateLookup.selected": "已选",
17
21
  "neptune.DateLookup.twentyYears": "20 年",
@@ -46,6 +50,7 @@
46
50
  "neptune.Table.loaded": "表数据已加载",
47
51
  "neptune.Table.loading": "表数据正在加载",
48
52
  "neptune.Table.refreshPage": "刷新页面",
53
+ "neptune.Typeahead.suggestionsLabel": "建议",
49
54
  "neptune.Upload.csButtonText": "上传另一个文件?",
50
55
  "neptune.Upload.csFailureText": "上传失败。请重试",
51
56
  "neptune.Upload.csSuccessText": "上传完毕!",
package/src/main.css CHANGED
@@ -20368,36 +20368,53 @@ a[data-toggle="tooltip"] {
20368
20368
  block-size: var(--np-avatar-layout-size);
20369
20369
  }
20370
20370
  .np-avatar-layout-diagonal-mask {
20371
+ --np-avatar-layout-mask-direction: right;
20371
20372
  -webkit-mask-image: radial-gradient(circle at bottom calc(100% - var(--np-avatar-size) - var(--np-avatar-offset)) right calc(100% - var(--np-avatar-size) - var(--np-avatar-offset)), transparent 0, transparent calc(var(--np-avatar-size) / 2 + 2px), black 0);
20372
20373
  mask-image: radial-gradient(circle at bottom calc(100% - var(--np-avatar-size) - var(--np-avatar-offset)) right calc(100% - var(--np-avatar-size) - var(--np-avatar-offset)), transparent 0, transparent calc(var(--np-avatar-size) / 2 + 2px), black 0);
20374
+ -webkit-mask-image: radial-gradient(circle at bottom calc(100% - var(--np-avatar-size) - var(--np-avatar-offset)) var(--np-avatar-layout-mask-direction) calc(100% - var(--np-avatar-size) - var(--np-avatar-offset)), transparent 0, transparent calc(var(--np-avatar-size) / 2 + 2px), black 0);
20375
+ mask-image: radial-gradient(circle at bottom calc(100% - var(--np-avatar-size) - var(--np-avatar-offset)) var(--np-avatar-layout-mask-direction) calc(100% - var(--np-avatar-size) - var(--np-avatar-offset)), transparent 0, transparent calc(var(--np-avatar-size) / 2 + 2px), black 0);
20373
20376
  }
20374
20377
  [dir="rtl"] .np-avatar-layout-diagonal-mask {
20375
- -webkit-mask-image: radial-gradient(circle at bottom calc(100% - var(--np-avatar-size) - var(--np-avatar-offset)) left calc(100% - var(--np-avatar-size) - var(--np-avatar-offset)), transparent 0, transparent calc(var(--np-avatar-size) / 2 + 2px), black 0);
20376
- mask-image: radial-gradient(circle at bottom calc(100% - var(--np-avatar-size) - var(--np-avatar-offset)) left calc(100% - var(--np-avatar-size) - var(--np-avatar-offset)), transparent 0, transparent calc(var(--np-avatar-size) / 2 + 2px), black 0);
20378
+ --np-avatar-layout-mask-direction: left;
20379
+ margin-inline-start: calc(var(--np-avatar-layout-size) - var(--np-avatar-size) * 2);
20380
+ margin-inline-end: unset;
20377
20381
  }
20378
20382
  .np-avatar-layout-diagonal-child {
20379
20383
  margin-inline-start: calc(var(--np-avatar-layout-size) - var(--np-avatar-size) * 2);
20380
20384
  margin-block-start: calc(var(--np-avatar-layout-size) - var(--np-avatar-size));
20381
20385
  }
20382
20386
  [dir="rtl"] .np-avatar-layout-diagonal-child {
20383
- margin-inline-start: 0;
20384
- margin-inline-end: calc(var(--np-avatar-layout-size) - var(--np-avatar-size) * 2);
20387
+ -webkit-mask-image: initial;
20388
+ mask-image: initial;
20385
20389
  }
20386
20390
  .np-avatar-layout-horizontal {
20391
+ --np-avatar-layout-mask-direction: left;
20387
20392
  inline-size: calc(var(--np-avatar-size) * var(--np-avatar-avatars-count) - (var(--np-avatar-offset) * (var(--np-avatar-avatars-count) - 1)));
20388
20393
  inline-size: calc(var(--np-avatar-size) * var(--np-avatar-avatars-count) - calc(var(--np-avatar-offset) * calc(var(--np-avatar-avatars-count) - 1)));
20389
20394
  block-size: var(--np-avatar-layout-size);
20390
20395
  }
20391
- .np-avatar-layout-horizontal-mask {
20392
- -webkit-mask-image: radial-gradient(circle at top calc(100% - (var(--np-avatar-size) / 2)) left calc(100% + (var(--np-avatar-size) / 2) - var(--np-avatar-offset)), transparent, transparent calc(var(--np-avatar-size) / 2 + 2px), black 0);
20393
- mask-image: radial-gradient(circle at top calc(100% - (var(--np-avatar-size) / 2)) left calc(100% + (var(--np-avatar-size) / 2) - var(--np-avatar-offset)), transparent, transparent calc(var(--np-avatar-size) / 2 + 2px), black 0);
20394
- -webkit-mask-image: radial-gradient(circle at top calc(100% - calc(var(--np-avatar-size) / 2)) left calc(100% + calc(var(--np-avatar-size) / 2) - var(--np-avatar-offset)), transparent, transparent calc(var(--np-avatar-size) / 2 + 2px), black 0);
20395
- mask-image: radial-gradient(circle at top calc(100% - calc(var(--np-avatar-size) / 2)) left calc(100% + calc(var(--np-avatar-size) / 2) - var(--np-avatar-offset)), transparent, transparent calc(var(--np-avatar-size) / 2 + 2px), black 0);
20396
+ [dir="rtl"] .np-avatar-layout-horizontal {
20397
+ --np-avatar-layout-mask-direction: right;
20398
+ }
20399
+ .np-avatar-layout-horizontal-mask,
20400
+ [dir="rtl"] .np-avatar-layout-horizontal-child {
20401
+ -webkit-mask-image: radial-gradient(circle at top calc(100% - (var(--np-avatar-size) / 2)) var(--np-avatar-layout-mask-direction) calc(100% + (var(--np-avatar-size) / 2) - var(--np-avatar-offset)), transparent, transparent calc(var(--np-avatar-size) / 2 + 2px), black 0);
20402
+ mask-image: radial-gradient(circle at top calc(100% - (var(--np-avatar-size) / 2)) var(--np-avatar-layout-mask-direction) calc(100% + (var(--np-avatar-size) / 2) - var(--np-avatar-offset)), transparent, transparent calc(var(--np-avatar-size) / 2 + 2px), black 0);
20403
+ -webkit-mask-image: radial-gradient(circle at top calc(100% - calc(var(--np-avatar-size) / 2)) var(--np-avatar-layout-mask-direction) calc(100% + calc(var(--np-avatar-size) / 2) - var(--np-avatar-offset)), transparent, transparent calc(var(--np-avatar-size) / 2 + 2px), black 0);
20404
+ mask-image: radial-gradient(circle at top calc(100% - calc(var(--np-avatar-size) / 2)) var(--np-avatar-layout-mask-direction) calc(100% + calc(var(--np-avatar-size) / 2) - var(--np-avatar-offset)), transparent, transparent calc(var(--np-avatar-size) / 2 + 2px), black 0);
20405
+ }
20406
+ [dir="rtl"] .np-avatar-layout-horizontal-mask {
20407
+ margin-inline-end: calc(var(--np-avatar-offset) * -1);
20408
+ }
20409
+ [dir="rtl"] .np-avatar-layout-horizontal-mask:last-child {
20410
+ -webkit-mask-image: initial;
20411
+ mask-image: initial;
20396
20412
  }
20397
20413
  .np-avatar-layout-horizontal-child {
20398
20414
  margin-inline-start: calc(var(--np-avatar-offset) * -1);
20399
20415
  }
20400
20416
  [dir="rtl"] .np-avatar-layout-horizontal-child {
20417
+ margin-inline-start: unset;
20401
20418
  margin-inline-end: calc(var(--np-avatar-offset) * -1);
20402
20419
  }
20403
20420
  .np-icon-button {
@@ -21895,33 +21912,33 @@ button.np-option {
21895
21912
  transform: translateY(10px) scale(0.95);
21896
21913
  }
21897
21914
  .np-panel[data-popper-placement^="top"] .np-panel__arrow {
21898
- inset-block-end: -6px;
21915
+ inset-block-end: -7px;
21899
21916
  }
21900
21917
  .np-panel[data-popper-placement^="right"] > .np-panel__content {
21901
21918
  transform: translateX(-10px) scale(0.95);
21902
21919
  }
21903
21920
  .np-panel[data-popper-placement^="right"] .np-panel__arrow {
21904
- inset-inline-start: -6px;
21921
+ inset-inline-start: -7px;
21905
21922
  }
21906
21923
  [dir="rtl"] .np-panel[data-popper-placement^="right"] .np-panel__arrow {
21907
21924
  inset-inline-start: unset;
21908
- inset-inline-end: -6px;
21925
+ inset-inline-end: -7px;
21909
21926
  }
21910
21927
  .np-panel[data-popper-placement^="bottom"] > .np-panel__content {
21911
21928
  transform: translateY(-10px) scale(0.95);
21912
21929
  }
21913
21930
  .np-panel[data-popper-placement^="bottom"] .np-panel__arrow {
21914
- inset-block-start: -6px;
21931
+ inset-block-start: -7px;
21915
21932
  }
21916
21933
  .np-panel[data-popper-placement^="left"] > .np-panel__content {
21917
21934
  transform: translateX(10px) scale(0.95);
21918
21935
  }
21919
21936
  .np-panel[data-popper-placement^="left"] .np-panel__arrow {
21920
- inset-inline-end: -6px;
21937
+ inset-inline-end: -7px;
21921
21938
  }
21922
21939
  [dir="rtl"] .np-panel[data-popper-placement^="left"] .np-panel__arrow {
21923
21940
  inset-inline-end: unset;
21924
- inset-inline-start: -6px;
21941
+ inset-inline-start: -7px;
21925
21942
  }
21926
21943
  .np-theme-personal .np-panel__content {
21927
21944
  border-radius: 16px;
@@ -25836,7 +25853,8 @@ button.np-link {
25836
25853
  background: var(--color-background-screen);
25837
25854
  border-radius: 24px;
25838
25855
  border-radius: var(--size-24);
25839
- transition: left 300ms;
25856
+ transition: left 300ms,
25857
+ right 300ms;
25840
25858
  }
25841
25859
  .segmented-control__segments--no-animate::after {
25842
25860
  transition: none !important;
@@ -26563,12 +26581,6 @@ button.np-link {
26563
26581
  visibility: visible;
26564
26582
  visibility: initial;
26565
26583
  }
26566
- .np-panel[data-popper-placement^="right"] > .np-panel__content.tooltip-inner .np-panel__arrow {
26567
- inset-inline-start: -7px;
26568
- }
26569
- .np-panel[data-popper-placement^="left"] > .np-panel__content.tooltip-inner .np-panel__arrow {
26570
- inset-inline-end: -7px;
26571
- }
26572
26584
  .typeahead.open .input-group {
26573
26585
  z-index: 1060;
26574
26586
  }