@transferwise/components 46.114.0 → 46.115.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 (51) hide show
  1. package/build/common/closeButton/CloseButton.messages.js +2 -2
  2. package/build/common/closeButton/CloseButton.messages.js.map +1 -1
  3. package/build/common/closeButton/CloseButton.messages.mjs +2 -2
  4. package/build/common/closeButton/CloseButton.messages.mjs.map +1 -1
  5. package/build/common/closeButton/CloseButton.mjs +2 -2
  6. package/build/common/closeButton/CloseButton.mjs.map +1 -1
  7. package/build/common/hooks/useVirtualKeyboard.js +4 -3
  8. package/build/common/hooks/useVirtualKeyboard.js.map +1 -1
  9. package/build/common/hooks/useVirtualKeyboard.mjs +4 -3
  10. package/build/common/hooks/useVirtualKeyboard.mjs.map +1 -1
  11. package/build/drawer/Drawer.js +18 -9
  12. package/build/drawer/Drawer.js.map +1 -1
  13. package/build/drawer/Drawer.mjs +18 -9
  14. package/build/drawer/Drawer.mjs.map +1 -1
  15. package/build/i18n/nl.json +1 -1
  16. package/build/i18n/nl.json.js +1 -1
  17. package/build/i18n/nl.json.mjs +1 -1
  18. package/build/inputs/_BottomSheet.js +1 -1
  19. package/build/inputs/_BottomSheet.js.map +1 -1
  20. package/build/inputs/_BottomSheet.mjs +1 -1
  21. package/build/inputs/_BottomSheet.mjs.map +1 -1
  22. package/build/main.css +17 -127
  23. package/build/modal/Modal.js +20 -21
  24. package/build/modal/Modal.js.map +1 -1
  25. package/build/modal/Modal.mjs +20 -21
  26. package/build/modal/Modal.mjs.map +1 -1
  27. package/build/styles/drawer/Drawer.css +11 -58
  28. package/build/styles/main.css +17 -127
  29. package/build/styles/modal/Modal.css +6 -69
  30. package/build/types/common/hooks/useVirtualKeyboard.d.ts +2 -1
  31. package/build/types/common/hooks/useVirtualKeyboard.d.ts.map +1 -1
  32. package/build/types/drawer/Drawer.d.ts.map +1 -1
  33. package/build/types/modal/Modal.d.ts.map +1 -1
  34. package/package.json +2 -2
  35. package/src/accordion/Accordion.story.tsx +1 -1
  36. package/src/avatarLayout/AvatarLayout.story.tsx +1 -0
  37. package/src/avatarView/AvatarView.story.tsx +1 -0
  38. package/src/common/hooks/useVirtualKeyboard.ts +4 -3
  39. package/src/display/Display.story.tsx +1 -0
  40. package/src/drawer/Drawer.css +11 -58
  41. package/src/drawer/Drawer.less +14 -70
  42. package/src/drawer/Drawer.story.tsx +158 -100
  43. package/src/drawer/Drawer.tsx +26 -7
  44. package/src/i18n/nl.json +1 -1
  45. package/src/iconButton/IconButton.story.tsx +1 -0
  46. package/src/inputs/_BottomSheet.tsx +1 -1
  47. package/src/main.css +17 -127
  48. package/src/modal/Modal.css +6 -69
  49. package/src/modal/Modal.less +6 -76
  50. package/src/modal/Modal.tsx +23 -23
  51. package/src/provider/theme/ThemeProvider.story.tsx +23 -0
@@ -1,7 +1,8 @@
1
1
  import { useState } from 'react';
2
2
  import { Position, Priority } from '../common';
3
- import { Section, Button, Input, Modal, type DrawerProps } from '..';
3
+ import { Section, Button, Input, Modal, type DrawerProps, Body } from '..';
4
4
  import Drawer from './Drawer';
5
+ import { lorem10, lorem20, lorem40, lorem5 } from '../test-utils';
5
6
 
6
7
  export default {
7
8
  component: Drawer,
@@ -14,110 +15,167 @@ export default {
14
15
  },
15
16
  };
16
17
 
17
- export const Basic = (args: DrawerProps) => {
18
- const [openDrawer, setOpenDrawer] = useState(false);
19
- const [openModal, setOpenModal] = useState(false);
18
+ export const Basic = {
19
+ args: {
20
+ position: Position.RIGHT,
21
+ open: true,
22
+ },
23
+ render: (args: DrawerProps) => {
24
+ const [openDrawer, setOpenDrawer] = useState(args.open);
25
+ const [openModal, setOpenModal] = useState(false);
26
+
27
+ return (
28
+ <>
29
+ <Button v2 disabled={false} block={false} onClick={() => setOpenDrawer(true)}>
30
+ Open drawer
31
+ </Button>
32
+ <Drawer
33
+ open={openDrawer}
34
+ position={args.position}
35
+ headerTitle="This is the title of the drawer"
36
+ footerContent={
37
+ <>
38
+ <Button v2 block className="m-b-1" onClick={() => {}}>
39
+ Action 1
40
+ </Button>
41
+ <Button v2 block priority={Priority.SECONDARY} onClick={() => {}}>
42
+ Action 2
43
+ </Button>
44
+ </>
45
+ }
46
+ onClose={(event) => {
47
+ console.log('drawer close');
48
+ event.stopPropagation();
49
+ setOpenDrawer(false);
50
+ }}
51
+ >
52
+ <p>{lorem20}</p>
53
+ <Section className="m-t-2">
54
+ <Input />
55
+ <p className="m-t-3">{lorem5}</p>
56
+ <Button v2 onClick={() => setOpenModal(true)}>
57
+ Open Modal
58
+ </Button>
59
+ <Modal
60
+ body={<p>{lorem40}</p>}
61
+ open={openModal}
62
+ title="Title"
63
+ onClose={() => {
64
+ console.log('modal close');
65
+ setOpenModal(false);
66
+ }}
67
+ />
68
+ </Section>
69
+ <p>{lorem40}</p>
70
+ <p>{lorem40}</p>
71
+ <p>{lorem40}</p>
72
+ <p>{lorem40}</p>
73
+ <p>{lorem40}</p>
74
+ <p>{lorem40}</p>
75
+ </Drawer>
76
+ </>
77
+ );
78
+ },
79
+ };
20
80
 
21
- return (
22
- <>
23
- <Button v2 disabled={false} block={false} onClick={() => setOpenDrawer(true)}>
24
- Open drawer
25
- </Button>
26
- <Drawer
27
- open={openDrawer}
28
- position={args.position}
29
- headerTitle="This is the title of the drawer"
30
- footerContent={
31
- <>
81
+ export const LongTitle = {
82
+ args: {
83
+ open: true,
84
+ },
85
+ render: (args: DrawerProps) => {
86
+ const [openDrawer, setOpenDrawer] = useState(args.open);
87
+ return (
88
+ <>
89
+ <Button v2 block={false} onClick={() => setOpenDrawer(true)}>
90
+ Open drawer
91
+ </Button>
92
+ <Drawer
93
+ open={openDrawer}
94
+ headerTitle={lorem10}
95
+ footerContent={
32
96
  <Button v2 block onClick={() => {}}>
33
97
  Action 1
34
98
  </Button>
35
- <Button v2 block priority={Priority.SECONDARY} onClick={() => {}}>
36
- Action 2
99
+ }
100
+ onClose={() => {
101
+ setOpenDrawer(false);
102
+ }}
103
+ >
104
+ <p>{lorem20}</p>
105
+ <p>{lorem40}</p>
106
+ <p>{lorem40}</p>
107
+ <p>{lorem40}</p>
108
+ <p>{lorem40}</p>
109
+ <p>{lorem40}</p>
110
+ <p>{lorem40}</p>
111
+ </Drawer>
112
+ </>
113
+ );
114
+ },
115
+ };
116
+
117
+ export const NoTitle = {
118
+ args: {
119
+ open: true,
120
+ },
121
+ render: (args: DrawerProps) => {
122
+ const [openDrawer, setOpenDrawer] = useState(args.open);
123
+ return (
124
+ <>
125
+ <Button v2 block={false} onClick={() => setOpenDrawer(true)}>
126
+ Open drawer
127
+ </Button>
128
+ <Drawer
129
+ open={openDrawer}
130
+ footerContent={
131
+ <Button v2 block onClick={() => {}}>
132
+ Action 1
37
133
  </Button>
38
- </>
39
- }
40
- onClose={(event) => {
41
- console.log('drawer close');
42
- event.stopPropagation();
43
- setOpenDrawer(false);
44
- }}
45
- >
46
- <p>
47
- I am baby actually poke kickstarter, street art jean shorts bespoke chambray activated
48
- charcoal ramps marfa shoreditch tumeric tumblr. Mixtape cred palo santo, cliche lyft marfa
49
- ethical waistcoat poke jean shorts. Scenester readymade selvage disrupt pok pok. La croix
50
- stumptown try-hard chartreuse.
51
- </p>
52
- <Section className="m-t-2">
53
- <Input />
54
- <p className="m-t-3">Cat ipsum dolor sit amet, purr when being pet.</p>
55
- <Button v2 onClick={() => setOpenModal(true)}>
56
- Open Modal
57
- </Button>
58
- <Modal
59
- body={
60
- <p className="m-t-4">
61
- I am baby actually poke kickstarter, street art jean shorts bespoke chambray
62
- activated charcoal ramps marfa shoreditch tumeric tumblr. Mixtape cred palo santo,
63
- cliche lyft marfa ethical waistcoat poke jean shorts. Scenester readymade selvage
64
- disrupt pok pok. La croix stumptown try-hard chartreuse. I am baby actually poke
65
- kickstarter, street art jean shorts bespoke chambray activated charcoal ramps marfa
66
- shoreditch tumeric, I am baby actually poke kickstarter, street art jean shorts
67
- bespoke chambray activated charcoal ramps marfa shoreditch tumeric tumblr. Mixtape
68
- cred palo santo, cliche lyft marfa ethical waistcoat poke jean shorts. Scenester
69
- readymade selvage disrupt pok pok.
70
- </p>
71
- }
72
- open={openModal}
73
- title="Title"
74
- onClose={() => {
75
- console.log('modal close');
76
- setOpenModal(false);
77
- }}
78
- />
79
- </Section>
80
- <p>
81
- I am baby actually poke kickstarter, street art jean shorts bespoke chambray activated
82
- charcoal ramps marfa shoreditch tumeric tumblr. Mixtape cred palo santo, cliche lyft marfa
83
- ethical waistcoat poke jean shorts. Scenester readymade selvage disrupt pok pok. La croix
84
- stumptown try-hard chartreuse.
85
- </p>
86
- <p>
87
- I am baby actually poke kickstarter, street art jean shorts bespoke chambray activated
88
- charcoal ramps marfa shoreditch tumeric tumblr. Mixtape cred palo santo, cliche lyft marfa
89
- ethical waistcoat poke jean shorts. Scenester readymade selvage disrupt pok pok. La croix
90
- stumptown try-hard chartreuse.
91
- </p>
92
- <p>
93
- I am baby actually poke kickstarter, street art jean shorts bespoke chambray activated
94
- charcoal ramps marfa shoreditch tumeric tumblr. Mixtape cred palo santo, cliche lyft marfa
95
- ethical waistcoat poke jean shorts. Scenester readymade selvage disrupt pok pok. La croix
96
- stumptown try-hard chartreuse.
97
- </p>
98
- <p>
99
- I am baby actually poke kickstarter, street art jean shorts bespoke chambray activated
100
- charcoal ramps marfa shoreditch tumeric tumblr. Mixtape cred palo santo, cliche lyft marfa
101
- ethical waistcoat poke jean shorts. Scenester readymade selvage disrupt pok pok. La croix
102
- stumptown try-hard chartreuse.
103
- </p>
104
- <p>
105
- I am baby actually poke kickstarter, street art jean shorts bespoke chambray activated
106
- charcoal ramps marfa shoreditch tumeric tumblr. Mixtape cred palo santo, cliche lyft marfa
107
- ethical waistcoat poke jean shorts. Scenester readymade selvage disrupt pok pok. La croix
108
- stumptown try-hard chartreuse.
109
- </p>
110
- <p>
111
- I am baby actually poke kickstarter, street art jean shorts bespoke chambray activated
112
- charcoal ramps marfa shoreditch tumeric tumblr. Mixtape cred palo santo, cliche lyft marfa
113
- ethical waistcoat poke jean shorts. Scenester readymade selvage disrupt pok pok. La croix
114
- stumptown try-hard chartreuse.
115
- </p>
116
- </Drawer>
117
- </>
118
- );
134
+ }
135
+ onClose={() => {
136
+ setOpenDrawer(false);
137
+ }}
138
+ >
139
+ <p>{lorem20}</p>
140
+ <p>{lorem40}</p>
141
+ <p>{lorem40}</p>
142
+ <p>{lorem40}</p>
143
+ <p>{lorem40}</p>
144
+ <p>{lorem40}</p>
145
+ <p>{lorem40}</p>
146
+ </Drawer>
147
+ </>
148
+ );
149
+ },
119
150
  };
120
151
 
121
- Basic.args = {
122
- position: Position.RIGHT,
152
+ export const NoFooter = {
153
+ args: {
154
+ open: true,
155
+ },
156
+ render: (args: DrawerProps) => {
157
+ const [openDrawer, setOpenDrawer] = useState(args.open);
158
+ return (
159
+ <>
160
+ <Button v2 block={false} onClick={() => setOpenDrawer(true)}>
161
+ Open drawer
162
+ </Button>
163
+ <Drawer
164
+ open={openDrawer}
165
+ headerTitle="This is the title of the drawer"
166
+ onClose={() => {
167
+ setOpenDrawer(false);
168
+ }}
169
+ >
170
+ <p>{lorem20}</p>
171
+ <p>{lorem40}</p>
172
+ <p>{lorem40}</p>
173
+ <p>{lorem40}</p>
174
+ <p>{lorem40}</p>
175
+ <p>{lorem40}</p>
176
+ <Body>{lorem40}</Body>
177
+ </Drawer>
178
+ </>
179
+ );
180
+ },
123
181
  };
@@ -2,13 +2,16 @@ import { clsx } from 'clsx';
2
2
  import { HTMLAttributes, useContext, useId } from 'react';
3
3
 
4
4
  import { Position, Typography } from '../common';
5
- import { CloseButton } from '../common/closeButton';
6
5
  import { useLayout } from '../common/hooks';
7
6
  import Dimmer from '../dimmer';
8
7
  import { OverlayIdContext } from '../provider/overlay/OverlayIdProvider';
9
8
  import SlidingPanel from '../slidingPanel';
10
9
  import Title from '../title';
11
10
  import { logActionRequiredIf } from '../utilities';
11
+ import IconButton from '../iconButton';
12
+ import closeBtnMessages from '../common/closeButton/CloseButton.messages';
13
+ import { useIntl } from 'react-intl';
14
+ import { Cross } from '@transferwise/icons';
12
15
 
13
16
  export type DrawerProps = {
14
17
  /** The content to appear in the drawer body. */
@@ -39,6 +42,7 @@ export default function Drawer({
39
42
  role = 'dialog',
40
43
  'aria-labelledby': ariaLabelledBy,
41
44
  }: DrawerProps) {
45
+ const intl = useIntl();
42
46
  logActionRequiredIf(
43
47
  'Drawer now expects `onClose`, and will soon make this prop required. Please update your usage to provide it.',
44
48
  !onClose,
@@ -60,19 +64,34 @@ export default function Drawer({
60
64
  className={clsx('np-drawer', className)}
61
65
  >
62
66
  <div
63
- className={clsx('np-drawer-header', {
64
- 'np-drawer-header--withborder': headerTitle,
65
- })}
67
+ className={clsx(
68
+ 'np-drawer-header',
69
+ 'd-flex',
70
+ 'align-items-center',
71
+ headerTitle ? 'justify-content-between' : 'justify-content-end',
72
+ 'flex-wrap',
73
+ )}
66
74
  >
67
75
  {headerTitle && (
68
- <Title id={titleId} type={Typography.TITLE_BODY}>
76
+ <Title id={titleId} type={Typography.TITLE_SUBSECTION} className="np-drawer-title">
69
77
  {headerTitle}
70
78
  </Title>
71
79
  )}
72
- <CloseButton onClick={onClose} />
80
+ <IconButton
81
+ size={40}
82
+ priority="tertiary"
83
+ aria-label={intl.formatMessage(closeBtnMessages.ariaLabel)}
84
+ onClick={onClose}
85
+ >
86
+ <Cross />
87
+ </IconButton>
73
88
  </div>
74
89
  {children && <div className={clsx('np-drawer-content')}>{children}</div>}
75
- {footerContent && <div className={clsx('np-drawer-footer')}>{footerContent}</div>}
90
+ {footerContent ? (
91
+ <div className={clsx('np-drawer-footer')}>{footerContent}</div>
92
+ ) : (
93
+ <div className="m-t-3" />
94
+ )}
76
95
  </div>
77
96
  </SlidingPanel>
78
97
  </Dimmer>
package/src/i18n/nl.json CHANGED
@@ -16,7 +16,7 @@
16
16
  "neptune.DateLookup.selected": "geselecteerd",
17
17
  "neptune.DateLookup.twentyYears": "20 jaar",
18
18
  "neptune.DateLookup.year": "jaar",
19
- "neptune.ExpressiveMoneyInput.currency.search.placeholder": "Typ valuta / land",
19
+ "neptune.ExpressiveMoneyInput.currency.search.placeholder": "Voer een valuta / land in",
20
20
  "neptune.ExpressiveMoneyInput.currency.select.currency": "Selecteer valuta",
21
21
  "neptune.FlowNavigation.back": "terug naar vorige stap",
22
22
  "neptune.Info.ariaLabel": "Meer informatie",
@@ -7,6 +7,7 @@ import Body from '../body';
7
7
 
8
8
  export default {
9
9
  title: 'Actions/IconButton',
10
+ component: IconButton,
10
11
  } satisfies Meta<typeof IconButton>;
11
12
 
12
13
  type Story = StoryObj<typeof IconButton>;
@@ -43,7 +43,7 @@ export function BottomSheet({
43
43
  onClose,
44
44
  onCloseEnd,
45
45
  }: BottomSheetProps) {
46
- useVirtualKeyboard();
46
+ useVirtualKeyboard(open);
47
47
 
48
48
  const { refs, context } = useFloating<Element>({
49
49
  open,
package/src/main.css CHANGED
@@ -2326,89 +2326,42 @@ button.np-option {
2326
2326
  }
2327
2327
  }
2328
2328
  .np-drawer .np-drawer-header {
2329
- display: flex;
2330
- align-items: center;
2331
- flex-wrap: nowrap;
2332
2329
  min-height: 56px;
2333
2330
  min-height: var(--size-56);
2334
- padding: 24px 16px;
2335
- padding: var(--size-24) var(--size-16);
2336
- }
2337
- .np-theme-personal .np-drawer .np-drawer-header {
2338
2331
  padding: 24px;
2339
2332
  padding: var(--size-24);
2340
2333
  }
2341
2334
  @media (max-width: 320px) {
2342
- .np-theme-personal .np-drawer .np-drawer-header {
2335
+ .np-drawer .np-drawer-header {
2343
2336
  padding: 16px;
2344
2337
  padding: var(--size-16);
2345
2338
  }
2346
2339
  }
2347
- .np-theme-personal .np-drawer .np-drawer-header .np-close-button {
2348
- margin-top: calc(8px * -1);
2349
- margin-top: calc(var(--size-8) * -1);
2350
- margin-right: calc(8px * -1);
2351
- margin-right: calc(var(--size-8) * -1);
2352
- margin-bottom: calc(8px * -1);
2353
- margin-bottom: calc(var(--size-8) * -1);
2354
- }
2355
- .np-drawer .np-drawer-header.np-drawer-header--withborder {
2356
- box-shadow: inset 0 -1px 0 0 #e2e6e8;
2357
- }
2358
- .np-theme-personal .np-drawer .np-drawer-header.np-drawer-header--withborder {
2359
- box-shadow: inset 0 -1px 0 0 rgba(0,0,0,0.10196);
2360
- box-shadow: inset 0 -1px 0 0 var(--color-border-neutral);
2361
- }
2362
- .np-drawer .np-drawer-header .np-text-title-body {
2363
- margin-right: 16px;
2364
- margin-right: var(--size-16);
2365
- font-size: 1.125rem;
2366
- font-size: var(--font-size-18);
2367
- letter-spacing: -0.01em;
2368
- letter-spacing: var(--letter-spacing-negative-xs);
2369
- line-height: 1.5rem;
2370
- line-height: var(--line-height-24);
2371
- }
2372
- .np-drawer .np-drawer-header .np-close-button {
2373
- margin-left: auto;
2374
- }
2375
- .np-drawer .np-drawer-header .tw-icon {
2376
- display: block;
2377
- cursor: pointer;
2378
- fill: #00b9ff;
2340
+ .np-drawer .np-drawer-title {
2341
+ max-width: 85%;
2379
2342
  }
2380
2343
  .np-drawer .np-drawer-content {
2381
2344
  overflow-y: auto;
2382
2345
  flex: 1;
2383
- }
2384
- .np-drawer .np-drawer-content .np-theme-personal {
2385
2346
  background-color: transparent;
2386
2347
  }
2387
- .np-drawer .np-drawer-footer,
2388
- .np-drawer .np-drawer-content {
2348
+ .np-drawer .np-drawer-footer {
2389
2349
  padding: 16px;
2390
2350
  padding: var(--size-16);
2391
2351
  }
2392
- .np-drawer .np-drawer-footer {
2393
- box-shadow: inset 0 1px 0 0 #e2e6e8;
2394
- }
2395
- .np-theme-personal .np-drawer .np-drawer-footer {
2396
- box-shadow: inset 0 1px 0 0 rgba(0,0,0,0.10196);
2397
- box-shadow: inset 0 1px 0 0 var(--color-border-neutral);
2352
+ .np-drawer .np-drawer-content {
2353
+ padding: 0 16px;
2354
+ padding: 0 var(--size-16);
2398
2355
  }
2399
2356
  @media (min-width: 768px) {
2400
- .np-drawer .np-drawer-header {
2401
- padding: 32px 24px;
2402
- padding: var(--size-32) var(--size-24);
2403
- }
2404
- .np-theme-personal .np-drawer .np-drawer-header {
2357
+ .np-drawer .np-drawer-header,
2358
+ .np-drawer .np-drawer-footer {
2405
2359
  padding: 24px;
2406
2360
  padding: var(--size-24);
2407
2361
  }
2408
- .np-drawer .np-drawer-footer,
2409
2362
  .np-drawer .np-drawer-content {
2410
- padding: 24px;
2411
- padding: var(--size-24);
2363
+ padding: 0 24px;
2364
+ padding: 0 var(--size-24);
2412
2365
  }
2413
2366
  }
2414
2367
  .wds-Divider {
@@ -4231,14 +4184,9 @@ button.np-link {
4231
4184
  .tw-modal .tw-modal-dialog {
4232
4185
  transition: transform 0.3s ease-out;
4233
4186
  transform: translateY(-25%);
4234
- box-shadow: 0 5px 15px rgba(0, 0, 0, 0.2);
4235
- background: #ffffff;
4236
- background: var(--color-background-elevated);
4237
- }
4238
- .np-theme-personal .tw-modal .tw-modal-dialog {
4187
+ box-shadow: none;
4239
4188
  background: #ffffff;
4240
4189
  background: var(--color-background-elevated);
4241
- box-shadow: none;
4242
4190
  border-radius: 24px;
4243
4191
  border-radius: var(--radius-large);
4244
4192
  }
@@ -4247,6 +4195,7 @@ button.np-link {
4247
4195
  }
4248
4196
  .tw-modal .tw-modal-content {
4249
4197
  width: 100%;
4198
+ background-color: transparent;
4250
4199
  }
4251
4200
  .tw-modal .tw-modal-content .tw-modal-body {
4252
4201
  flex: 1;
@@ -4255,26 +4204,6 @@ button.np-link {
4255
4204
  .tw-modal .tw-modal-content .tw-modal-body--scrollable {
4256
4205
  overflow-y: auto;
4257
4206
  }
4258
- .tw-modal .tw-modal-content .tw-modal-header {
4259
- box-shadow: inset 0 -1px 0 0 #e2e6e8;
4260
- }
4261
- .np-theme-personal .tw-modal .tw-modal-content .tw-modal-header {
4262
- box-shadow: inset 0 -1px 0 0 rgba(0,0,0,0.10196);
4263
- box-shadow: inset 0 -1px 0 0 var(--color-border-neutral);
4264
- }
4265
- .np-theme-personal .tw-modal .tw-modal-content .tw-modal-header .np-close-button {
4266
- margin: calc(8px * -1) calc(8px * -1) calc(8px * -1) 0;
4267
- margin: calc(var(--size-8) * -1) calc(var(--size-8) * -1) calc(var(--size-8) * -1) 0;
4268
- }
4269
- .tw-modal .tw-modal-content .tw-modal-header.modal--withoutborder {
4270
- box-shadow: none;
4271
- }
4272
- .tw-modal .tw-modal-content .tw-modal-header .tw-icon {
4273
- fill: #0097c7;
4274
- fill: var(--color-content-accent);
4275
- cursor: pointer;
4276
- display: block;
4277
- }
4278
4207
  .tw-modal .tw-modal-content .tw-modal-header,
4279
4208
  .tw-modal .tw-modal-content .tw-modal-footer,
4280
4209
  .tw-modal .tw-modal-content .tw-modal-body {
@@ -4289,55 +4218,16 @@ button.np-link {
4289
4218
  padding-top: var(--size-12);
4290
4219
  padding-bottom: 12px;
4291
4220
  padding-bottom: var(--size-12);
4292
- box-shadow: inset 0 1px 0 0 #e2e6e8;
4293
- }
4294
- .np-theme-personal .tw-modal .tw-modal-content .tw-modal-footer {
4295
- border-top: 1px solid rgba(0,0,0,0.10196);
4296
- border-top: 1px solid var(--color-border-neutral);
4297
- }
4298
- .np-theme-personal .tw-modal .tw-modal-content .tw-modal-footer,
4299
- .tw-modal .tw-modal-content .tw-modal-footer.modal--withoutborder {
4300
- box-shadow: none;
4301
- }
4302
- .tw-modal .tw-modal-content.tw-modal-no-title .tw-modal-body {
4303
- padding-top: 0 !important;
4304
- }
4305
- .tw-modal .tw-modal-content.tw-modal-no-title .tw-modal-header {
4306
- min-height: 32px;
4307
- min-height: var(--size-32);
4308
- padding-bottom: 4px !important;
4309
- }
4310
- .tw-modal .tw-modal-content .np-theme-personal {
4311
- background-color: transparent;
4312
- }
4313
- .tw-modal table,
4314
- .tw-modal .table {
4315
- background-color: transparent;
4316
4221
  }
4317
4222
  @media (min-width: 576px) {
4318
4223
  .tw-modal .tw-modal-content .tw-modal-header,
4319
- .tw-modal .tw-modal-content .tw-modal-footer,
4320
- .tw-modal .tw-modal-content .tw-modal-body {
4321
- padding: 32px 24px;
4322
- padding: var(--size-32) var(--size-24);
4323
- }
4324
- .np-theme-personal .tw-modal .tw-modal-content .tw-modal-header,
4325
- .np-theme-personal .tw-modal .tw-modal-content .tw-modal-footer,
4326
- .np-theme-personal .tw-modal .tw-modal-content .tw-modal-body {
4224
+ .tw-modal .tw-modal-content .tw-modal-footer {
4327
4225
  padding: 24px;
4328
4226
  padding: var(--size-24);
4329
4227
  }
4330
- .tw-modal .tw-modal-compact .tw-modal-header {
4331
- min-height: calc(8px * 7);
4332
- min-height: calc(var(--size-8) * 7);
4333
- }
4334
- .tw-modal .tw-modal-compact .tw-modal-header,
4335
- .tw-modal .tw-modal-compact .tw-modal-footer,
4336
- .tw-modal .tw-modal-compact .tw-modal-body {
4337
- padding-top: 16px;
4338
- padding-top: var(--size-16);
4339
- padding-bottom: 16px;
4340
- padding-bottom: var(--size-16);
4228
+ .tw-modal .tw-modal-content .tw-modal-body {
4229
+ padding: 0 24px;
4230
+ padding: 0 var(--size-24);
4341
4231
  }
4342
4232
  }
4343
4233
  @media (min-width: 480px) {
@@ -6,14 +6,9 @@
6
6
  .tw-modal .tw-modal-dialog {
7
7
  transition: transform 0.3s ease-out;
8
8
  transform: translateY(-25%);
9
- box-shadow: 0 5px 15px rgba(0, 0, 0, 0.2);
10
- background: #ffffff;
11
- background: var(--color-background-elevated);
12
- }
13
- .np-theme-personal .tw-modal .tw-modal-dialog {
9
+ box-shadow: none;
14
10
  background: #ffffff;
15
11
  background: var(--color-background-elevated);
16
- box-shadow: none;
17
12
  border-radius: 24px;
18
13
  border-radius: var(--radius-large);
19
14
  }
@@ -22,6 +17,7 @@
22
17
  }
23
18
  .tw-modal .tw-modal-content {
24
19
  width: 100%;
20
+ background-color: transparent;
25
21
  }
26
22
  .tw-modal .tw-modal-content .tw-modal-body {
27
23
  flex: 1;
@@ -30,26 +26,6 @@
30
26
  .tw-modal .tw-modal-content .tw-modal-body--scrollable {
31
27
  overflow-y: auto;
32
28
  }
33
- .tw-modal .tw-modal-content .tw-modal-header {
34
- box-shadow: inset 0 -1px 0 0 #e2e6e8;
35
- }
36
- .np-theme-personal .tw-modal .tw-modal-content .tw-modal-header {
37
- box-shadow: inset 0 -1px 0 0 rgba(0,0,0,0.10196);
38
- box-shadow: inset 0 -1px 0 0 var(--color-border-neutral);
39
- }
40
- .np-theme-personal .tw-modal .tw-modal-content .tw-modal-header .np-close-button {
41
- margin: calc(8px * -1) calc(8px * -1) calc(8px * -1) 0;
42
- margin: calc(var(--size-8) * -1) calc(var(--size-8) * -1) calc(var(--size-8) * -1) 0;
43
- }
44
- .tw-modal .tw-modal-content .tw-modal-header.modal--withoutborder {
45
- box-shadow: none;
46
- }
47
- .tw-modal .tw-modal-content .tw-modal-header .tw-icon {
48
- fill: #0097c7;
49
- fill: var(--color-content-accent);
50
- cursor: pointer;
51
- display: block;
52
- }
53
29
  .tw-modal .tw-modal-content .tw-modal-header,
54
30
  .tw-modal .tw-modal-content .tw-modal-footer,
55
31
  .tw-modal .tw-modal-content .tw-modal-body {
@@ -64,55 +40,16 @@
64
40
  padding-top: var(--size-12);
65
41
  padding-bottom: 12px;
66
42
  padding-bottom: var(--size-12);
67
- box-shadow: inset 0 1px 0 0 #e2e6e8;
68
- }
69
- .np-theme-personal .tw-modal .tw-modal-content .tw-modal-footer {
70
- border-top: 1px solid rgba(0,0,0,0.10196);
71
- border-top: 1px solid var(--color-border-neutral);
72
- }
73
- .np-theme-personal .tw-modal .tw-modal-content .tw-modal-footer,
74
- .tw-modal .tw-modal-content .tw-modal-footer.modal--withoutborder {
75
- box-shadow: none;
76
- }
77
- .tw-modal .tw-modal-content.tw-modal-no-title .tw-modal-body {
78
- padding-top: 0 !important;
79
- }
80
- .tw-modal .tw-modal-content.tw-modal-no-title .tw-modal-header {
81
- min-height: 32px;
82
- min-height: var(--size-32);
83
- padding-bottom: 4px !important;
84
- }
85
- .tw-modal .tw-modal-content .np-theme-personal {
86
- background-color: transparent;
87
- }
88
- .tw-modal table,
89
- .tw-modal .table {
90
- background-color: transparent;
91
43
  }
92
44
  @media (min-width: 576px) {
93
45
  .tw-modal .tw-modal-content .tw-modal-header,
94
- .tw-modal .tw-modal-content .tw-modal-footer,
95
- .tw-modal .tw-modal-content .tw-modal-body {
96
- padding: 32px 24px;
97
- padding: var(--size-32) var(--size-24);
98
- }
99
- .np-theme-personal .tw-modal .tw-modal-content .tw-modal-header,
100
- .np-theme-personal .tw-modal .tw-modal-content .tw-modal-footer,
101
- .np-theme-personal .tw-modal .tw-modal-content .tw-modal-body {
46
+ .tw-modal .tw-modal-content .tw-modal-footer {
102
47
  padding: 24px;
103
48
  padding: var(--size-24);
104
49
  }
105
- .tw-modal .tw-modal-compact .tw-modal-header {
106
- min-height: calc(8px * 7);
107
- min-height: calc(var(--size-8) * 7);
108
- }
109
- .tw-modal .tw-modal-compact .tw-modal-header,
110
- .tw-modal .tw-modal-compact .tw-modal-footer,
111
- .tw-modal .tw-modal-compact .tw-modal-body {
112
- padding-top: 16px;
113
- padding-top: var(--size-16);
114
- padding-bottom: 16px;
115
- padding-bottom: var(--size-16);
50
+ .tw-modal .tw-modal-content .tw-modal-body {
51
+ padding: 0 24px;
52
+ padding: 0 var(--size-24);
116
53
  }
117
54
  }
118
55
  @media (min-width: 480px) {