@hero-design/rn 8.132.1 → 8.134.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hero-design/rn",
3
- "version": "8.132.1",
3
+ "version": "8.134.0",
4
4
  "license": "MIT",
5
5
  "main": "lib/index.js",
6
6
  "module": "es/index.js",
@@ -0,0 +1,60 @@
1
+ import React from 'react';
2
+ import { useWindowDimensions } from 'react-native';
3
+ import Svg, { Defs, Mask, Rect } from 'react-native-svg';
4
+ import { useTheme } from '../../theme';
5
+
6
+ interface SpotlightBackdropProps {
7
+ bounds: {
8
+ x: number;
9
+ y: number;
10
+ width: number;
11
+ height: number;
12
+ };
13
+ testID?: string;
14
+ }
15
+
16
+ const SpotlightBackdrop = ({ bounds, testID }: SpotlightBackdropProps) => {
17
+ const theme = useTheme();
18
+ const { width: windowWidth, height: windowHeight } = useWindowDimensions();
19
+
20
+ const { spotlight: maxSpotlightRadius } = theme.__hd__.appCue.radii;
21
+ const { backdropColor } = theme.__hd__.appCue.colors;
22
+
23
+ const resolvedRadius = Math.min(
24
+ bounds.height / 2,
25
+ bounds.width / 2,
26
+ maxSpotlightRadius
27
+ );
28
+
29
+ return (
30
+ <Svg
31
+ width={windowWidth}
32
+ height={windowHeight}
33
+ style={{ position: 'absolute', top: 0, left: 0 }}
34
+ >
35
+ <Defs>
36
+ <Mask id="spotlight-mask">
37
+ <Rect width={windowWidth} height={windowHeight} fill="white" />
38
+ <Rect
39
+ x={bounds.x}
40
+ y={bounds.y}
41
+ width={bounds.width}
42
+ height={bounds.height}
43
+ rx={resolvedRadius}
44
+ ry={resolvedRadius}
45
+ fill="black"
46
+ testID={testID && `${testID}-spotlight`}
47
+ />
48
+ </Mask>
49
+ </Defs>
50
+ <Rect
51
+ width={windowWidth}
52
+ height={windowHeight}
53
+ fill={backdropColor}
54
+ mask="url(#spotlight-mask)"
55
+ />
56
+ </Svg>
57
+ );
58
+ };
59
+
60
+ export default SpotlightBackdrop;
@@ -18,11 +18,14 @@ export const StyledContent = styled(View)(({ theme }) => ({
18
18
  alignSelf: 'center',
19
19
  }));
20
20
 
21
- export const StyledContainer = styled(View)(({ theme }) => ({
21
+ export const StyledModalContainer = styled(View)({
22
22
  width: '100%',
23
23
  height: '100%',
24
- backgroundColor: theme.__hd__.appCue.colors.backdropColor,
25
- }));
24
+ });
25
+
26
+ export const StyledContentPositioner = styled(View)({
27
+ position: 'absolute',
28
+ });
26
29
 
27
30
  export const StyledIconContainer = styled(Animated.View)<{
28
31
  themePlacement: Placement;
@@ -1,20 +1,22 @@
1
- import React, { useCallback, useLayoutEffect, useRef } from 'react';
1
+ import React, { useCallback, useEffect, useLayoutEffect, useRef } from 'react';
2
2
  import type { LayoutChangeEvent, StyleProp, ViewStyle } from 'react-native';
3
3
  import {
4
4
  Modal,
5
5
  View,
6
6
  TouchableWithoutFeedback,
7
- StyleSheet,
8
7
  useWindowDimensions,
9
8
  } from 'react-native';
10
9
  import type { Placement } from './StyledAppCue';
11
10
  import {
12
- StyledContainer,
13
11
  StyledContent,
12
+ StyledContentPositioner,
14
13
  StyledIconContainer,
14
+ StyledModalContainer,
15
15
  } from './StyledAppCue';
16
+ import SpotlightBackdrop from './SpotlightBackdrop';
16
17
  import Typography from '../Typography';
17
18
  import Icon from '../Icon';
19
+
18
20
  import { useTheme } from '../../theme';
19
21
  import { calculatePosition, calulateContentMaxWidth } from './utils';
20
22
 
@@ -43,6 +45,16 @@ export interface AppCueProps {
43
45
  * Testing ID of the component.
44
46
  */
45
47
  testID?: string;
48
+ /**
49
+ * Controls visibility externally. When provided, the component becomes controlled
50
+ * and will not toggle open/closed on target press.
51
+ */
52
+ visible?: boolean;
53
+ /**
54
+ * Called when the backdrop is pressed. Use this in controlled mode to update
55
+ * the `visible` prop.
56
+ */
57
+ onDismiss?: () => void;
46
58
  }
47
59
 
48
60
  const AppCue = ({
@@ -51,18 +63,22 @@ const AppCue = ({
51
63
  placement = 'top',
52
64
  style,
53
65
  testID,
66
+ visible: controlledVisible,
67
+ onDismiss,
54
68
  }: AppCueProps) => {
55
69
  const targetContainerRef = useRef<View>(null);
56
70
 
57
- const [visible, setVisible] = React.useState(false);
71
+ const isControlled = controlledVisible !== undefined;
72
+ const [internalVisible, setInternalVisible] = React.useState(false);
73
+ const open = isControlled ? controlledVisible : internalVisible;
58
74
 
59
75
  const theme = useTheme();
60
76
 
61
77
  const { offset } = theme.__hd__.appCue.space;
62
78
 
63
- const [position, setPosition] = React.useState({
64
- pageX: 0,
65
- pageY: 0,
79
+ const [bounds, setBounds] = React.useState({
80
+ x: 0,
81
+ y: 0,
66
82
  width: 0,
67
83
  height: 0,
68
84
  });
@@ -75,20 +91,35 @@ const AppCue = ({
75
91
  const doMeasure = useCallback((cb?: () => void) => {
76
92
  targetContainerRef.current?.measure(
77
93
  (_, __, width, height, pageX, pageY) => {
78
- setPosition({ pageX, pageY, width, height });
94
+ setBounds({ x: pageX, y: pageY, width, height });
79
95
  cb?.();
80
96
  }
81
97
  );
82
98
  }, []);
83
99
 
84
- const handleOpen = () => {
85
- doMeasure(() => setVisible(true));
86
- };
100
+ const handleOpen = useCallback(() => {
101
+ if (!isControlled) {
102
+ doMeasure(() => setInternalVisible(true));
103
+ }
104
+ }, [isControlled, doMeasure]);
105
+
106
+ const handleDismiss = useCallback(() => {
107
+ if (!isControlled) {
108
+ setInternalVisible(false);
109
+ }
110
+ onDismiss?.();
111
+ }, [isControlled, onDismiss]);
87
112
 
88
113
  useLayoutEffect(() => {
89
114
  doMeasure();
90
115
  }, [doMeasure]);
91
116
 
117
+ useEffect(() => {
118
+ if (open) {
119
+ doMeasure();
120
+ }
121
+ }, [open, doMeasure]);
122
+
92
123
  const enhancedTarget = React.cloneElement(
93
124
  target,
94
125
  {
@@ -110,7 +141,7 @@ const AppCue = ({
110
141
  const { width: windowWidth } = useWindowDimensions();
111
142
 
112
143
  const pos = calculatePosition({
113
- position,
144
+ position: bounds,
114
145
  contentSize,
115
146
  placement,
116
147
  offset,
@@ -118,7 +149,7 @@ const AppCue = ({
118
149
  });
119
150
 
120
151
  const maxWidth = calulateContentMaxWidth({
121
- position,
152
+ position: bounds,
122
153
  offset,
123
154
  placement,
124
155
  windowWidth,
@@ -144,28 +175,28 @@ const AppCue = ({
144
175
  </TouchableWithoutFeedback>
145
176
  <Modal
146
177
  animationType="fade"
147
- visible={visible}
148
- onDismiss={() => setVisible(false)}
178
+ visible={open}
179
+ onDismiss={handleDismiss}
149
180
  transparent
150
181
  presentationStyle="overFullScreen"
151
182
  statusBarTranslucent
152
183
  >
153
184
  <TouchableWithoutFeedback
154
185
  testID={testID && `${testID}-backdrop`}
155
- onPress={() => setVisible(false)}
186
+ onPress={handleDismiss}
156
187
  >
157
- <StyledContainer>
158
- <View
159
- style={StyleSheet.flatten([
188
+ <StyledModalContainer>
189
+ <SpotlightBackdrop bounds={bounds} testID={testID} />
190
+ <StyledContentPositioner
191
+ style={[
160
192
  {
161
- position: 'absolute',
162
193
  top: pos.top,
163
194
  left: pos.left,
164
195
  bottom: pos.bottom,
165
196
  right: pos.right,
166
197
  },
167
198
  style,
168
- ])}
199
+ ]}
169
200
  onLayout={measureContent}
170
201
  testID={testID}
171
202
  >
@@ -181,8 +212,8 @@ const AppCue = ({
181
212
  >
182
213
  <Icon icon="caret-down" size="small" />
183
214
  </StyledIconContainer>
184
- </View>
185
- </StyledContainer>
215
+ </StyledContentPositioner>
216
+ </StyledModalContainer>
186
217
  </TouchableWithoutFeedback>
187
218
  </Modal>
188
219
  </>
@@ -1,24 +1,5 @@
1
1
  import type { Placement } from './StyledAppCue';
2
2
 
3
- /**
4
- * Calculates the position of an element based on its placement relative to a reference position.
5
- *
6
- * @param {Object} params - The parameters for calculating the position.
7
- * @param {Object} params.position - The position and size of target element.
8
- * @param {number} params.position.pageX - The X coordinate of the target position.
9
- * @param {number} params.position.pageY - The Y coordinate of the target position.
10
- * @param {number} params.position.width - The width of the reference element.
11
- * @param {number} params.position.height - The height of the reference element.
12
- * @param {Object} params.contentSize - The size of the App Cue content.
13
- * @param {number} params.contentSize.width - The width of the content.
14
- * @param {number} params.contentSize.height - The height of the content.
15
- * @param {Placement} params.placement - The placement of the content relative to the reference position ('top', 'bottom', 'right', 'left').
16
- * @param {number} params.offset - The offset distance to display an arrow.
17
- *
18
- * @returns {Object} The calculated position of the App Cue.
19
- * @returns {number} return.x - The X coordinate of the App Cue.
20
- * @returns {number} return.y - The Y coordinate of the App Cue.
21
- */
22
3
  export const calculatePosition = ({
23
4
  placement,
24
5
  position,
@@ -27,8 +8,8 @@ export const calculatePosition = ({
27
8
  windowWidth,
28
9
  }: {
29
10
  position: {
30
- pageX: number;
31
- pageY: number;
11
+ x: number;
12
+ y: number;
32
13
  width: number;
33
14
  height: number;
34
15
  };
@@ -48,86 +29,55 @@ export const calculatePosition = ({
48
29
  switch (placement) {
49
30
  case 'top': {
50
31
  return {
51
- // The X coordinate is calculated by adding the half of the width of the target element to the X coordinate of the target element.
52
- left: position.pageX + (position.width - contentSize.width) / 2,
53
- // The Y coordinate is calculated by subtracting the height of the content and the offset from the Y coordinate of the target element
54
- top: position.pageY - contentSize.height - offset,
32
+ left: position.x + (position.width - contentSize.width) / 2,
33
+ top: position.y - contentSize.height - offset,
55
34
  };
56
35
  }
57
36
  case 'bottom': {
58
37
  return {
59
- // The X coordinate is calculated by adding the half of the width of the target element to the X coordinate of the target element.
60
- left: position.pageX + (position.width - contentSize.width) / 2,
61
- // The Y coordinate is calculated by adding the height of the target element and the offset to the Y coordinate of the target element.
62
- top: position.pageY + position.height + offset,
38
+ left: position.x + (position.width - contentSize.width) / 2,
39
+ top: position.y + position.height + offset,
63
40
  };
64
41
  }
65
42
  case 'right': {
66
43
  return {
67
- // The X coordinate is calculated by adding the width of the target element and the offset to the X coordinate of the target element.
68
- left: position.pageX + position.width + offset,
69
- // The Y coordinate is calculated by adding half of the height of the target element to the Y coordinate of the target element.
70
- top: position.pageY + (position.height - contentSize.height) / 2,
44
+ left: position.x + position.width + offset,
45
+ top: position.y + (position.height - contentSize.height) / 2,
71
46
  };
72
47
  }
73
48
  case 'left': {
74
49
  return {
75
- // The X coordinate is calculated by subtracting the width of the content and the offset from the X coordinate of the target element.
76
- left: position.pageX - contentSize.width - offset,
77
- // The Y coordinate is calculated by adding half of the height of the target element to the Y coordinate of the target element.
78
- top: position.pageY + (position.height - contentSize.height) / 2,
50
+ left: position.x - contentSize.width - offset,
51
+ top: position.y + (position.height - contentSize.height) / 2,
79
52
  };
80
53
  }
81
54
  case 'top-left': {
82
55
  return {
83
- // The X coordinate is calculated by subtracting the width of the content from the X coordinate of the target element.
84
- right: windowWidth - position.pageX - position.width,
85
- // The Y coordinate is calculated by subtracting the height of the content and the offset from the Y coordinate of the target element
86
- top: position.pageY - contentSize.height - offset,
56
+ right: windowWidth - position.x - position.width,
57
+ top: position.y - contentSize.height - offset,
87
58
  };
88
59
  }
89
60
  case 'top-right': {
90
61
  return {
91
- // The X coordinate is calculated by adding the width of the target element to the X coordinate of the target element.
92
- left: position.pageX,
93
- // The Y coordinate is calculated by subtracting the height of the content and the offset from the Y coordinate of the target element.
94
- top: position.pageY - contentSize.height - offset,
62
+ left: position.x,
63
+ top: position.y - contentSize.height - offset,
95
64
  };
96
65
  }
97
66
  case 'bottom-left': {
98
67
  return {
99
- // The X coordinate is calculated by subtracting the width of the content from the X coordinate of the target element.
100
- right: windowWidth - position.pageX - position.width,
101
- // The Y coordinate is calculated by adding the height of the target element and the offset to the Y coordinate of the target element.
102
- top: position.pageY + position.height + offset,
68
+ right: windowWidth - position.x - position.width,
69
+ top: position.y + position.height + offset,
103
70
  };
104
71
  }
105
72
  case 'bottom-right': {
106
73
  return {
107
- // The X coordinate is calculated by adding the width of the target element to the X coordinate of the target element.
108
- left: position.pageX,
109
- // The Y coordinate is calculated by adding the height of the target element and the offset to the Y coordinate of the target element.
110
- top: position.pageY + position.height + offset,
74
+ left: position.x,
75
+ top: position.y + position.height + offset,
111
76
  };
112
77
  }
113
78
  }
114
79
  };
115
80
 
116
- /**
117
- * Calculates the maximum width of the content based on its position, offset, placement, and window width.
118
- *
119
- * @param {Object} params - The parameters for the calculation.
120
- * @param {Object} params.position - The position and dimensions of the target element.
121
- * @param {number} params.position.pageX - The X coordinate of the target element.
122
- * @param {number} params.position.pageY - The Y coordinate of the target element.
123
- * @param {number} params.position.width - The width of the target element.
124
- * @param {number} params.position.height - The height of the target element.
125
- * @param {number} params.offset - The offset value to display an arrow.
126
- * @param {Placement} params.placement - The placement of the content relative to the element.
127
- * @param {number} params.windowWidth - The width of the window.
128
- *
129
- * @returns {number | undefined} The maximum width of the content.
130
- */
131
81
  export const calulateContentMaxWidth = ({
132
82
  position,
133
83
  offset,
@@ -135,8 +85,8 @@ export const calulateContentMaxWidth = ({
135
85
  windowWidth,
136
86
  }: {
137
87
  position: {
138
- pageX: number;
139
- pageY: number;
88
+ x: number;
89
+ y: number;
140
90
  width: number;
141
91
  height: number;
142
92
  };
@@ -152,22 +102,22 @@ export const calulateContentMaxWidth = ({
152
102
  return undefined;
153
103
  }
154
104
  case 'right': {
155
- return windowWidth - position.pageX - position.width - offset;
105
+ return windowWidth - position.x - position.width - offset;
156
106
  }
157
107
  case 'left': {
158
- return position.pageX - offset;
108
+ return position.x - offset;
159
109
  }
160
110
  case 'top-left': {
161
- return position.pageX + position.width;
111
+ return position.x + position.width;
162
112
  }
163
113
  case 'top-right': {
164
- return windowWidth - position.pageX;
114
+ return windowWidth - position.x;
165
115
  }
166
116
  case 'bottom-left': {
167
- return position.pageX + position.width;
117
+ return position.x + position.width;
168
118
  }
169
119
  case 'bottom-right': {
170
- return windowWidth - position.pageX;
120
+ return windowWidth - position.x;
171
121
  }
172
122
  }
173
123
  };
@@ -1 +1 @@
1
- {"activate":59000,"add-emoji":59001,"add-person":59002,"adjustment":59003,"alignment":59004,"antenna":59005,"archive":59006,"assignment-warning":59007,"bank":59008,"bell":59009,"billing":59010,"bolt":59011,"bookmark-added":59012,"bookmark-checked":59013,"bookmark":59014,"box-check":59015,"box":59016,"bpay":59017,"buildings":59018,"cake":59019,"calendar-clock":59020,"calendar":59021,"candy-box-menu":59022,"caret-down-small":59023,"caret-down":59024,"caret-left-small":59025,"caret-left":59026,"caret-right-small":59027,"caret-right":59028,"caret-up-small":59029,"caret-up":59030,"check-radio":59031,"circle-add":59032,"circle-cancel":59033,"circle-check":59034,"circle-down":59035,"circle-info":59036,"circle-left":59037,"circle-ok":59038,"circle-pencil":59039,"circle-question":59040,"circle-remove":59041,"circle-right":59042,"circle-up":59043,"circle-warning":59044,"clock-3":59045,"clock":59046,"cloud-download":59047,"cloud-upload":59048,"cog":59049,"coin":59050,"contacts":59051,"credit-card":59052,"diamond":59053,"direction-arrows":59054,"directory":59055,"document":59056,"dollar-coin-shine":59057,"dot":59058,"double-buildings":59059,"edit-template":59060,"envelope":59061,"exclude":59062,"expand-content":59063,"expense":59064,"explore_nearby":59065,"eye-circle":59066,"eye-invisible":59067,"eye":59068,"face-meh":59069,"face-sad":59070,"face-smiley":59071,"feed":59072,"feedbacks":59073,"file-certified":59074,"file-clone":59075,"file-copy":59076,"file-csv":59077,"file-dispose":59078,"file-doc":59079,"file-excel":59080,"file-export":59081,"file-lock":59082,"file-pdf":59083,"file-powerpoint":59084,"file-search":59085,"file-secured":59086,"file-sheets":59087,"file-slide":59088,"file-verified":59089,"file-word":59090,"file":59091,"filter":59092,"folder-user":59093,"folder":59094,"format-bold":59095,"format-heading1":59096,"format-heading2":59097,"format-italic":59098,"format-list-bulleted":59099,"format-list-numbered":59100,"format-underlined":59101,"funnel-filter":59102,"global-dollar":59103,"global-pound":59104,"globe":59105,"graduation-cap":59106,"graph":59107,"happy-sun":59108,"health-bag":59109,"heart":59110,"hero-points":59111,"home":59112,"image":59113,"import":59114,"incident-siren":59115,"instapay-daily":59116,"instapay-now":59117,"instapay":59118,"list":59119,"loading-2":59120,"loading":59121,"location-on":59122,"location":59123,"lock":59124,"looks-one":59125,"looks-two":59126,"media-content":59127,"menu":59128,"money-notes":59129,"moneybag":59130,"moon":59131,"multiple-stars":59132,"multiple-users":59133,"near-me":59134,"node":59135,"open-folder":59136,"paperclip-vertical":59137,"paperclip":59138,"payment-summary":59139,"pencil":59140,"phone":59141,"piggy-bank":59142,"plane-up":59143,"plane":59144,"play-arrow":59145,"play-circle":59146,"pound-coin-shine":59147,"pound-sign":59148,"print":59149,"raising-hands":59150,"reply-arrow":59151,"reply":59152,"reschedule":59153,"rocket-launch":59154,"rostering":59155,"salary-sacrifice":59156,"save":59157,"schedule-send":59158,"schedule":59159,"search-person":59160,"search":59161,"send":59162,"speaker-active":59163,"speaker":59164,"star-award":59165,"star-badge":59166,"star-circle":59167,"star-medal":59168,"star":59169,"steps-circle":59170,"stopwatch":59171,"suitcase":59172,"surfing":59173,"survey":59174,"swag-pillar-benefit":59175,"swag-pillar-career":59176,"swag-pillar-money":59177,"swag-pillar-work":59178,"swag":59179,"swipe-right":59180,"switch":59181,"tag":59182,"target":59183,"teams":59184,"thumb-down":59185,"thumb-up":59186,"timesheet":59187,"touch-id":59188,"trash-bin":59189,"unlock":59190,"user":59191,"video-1":59192,"video-2":59193,"wallet":59194,"warning":59195,"academic-hat-outlined":59196,"accommodation-outlined":59197,"activate-outlined":59198,"add-credit-card-outlined":59199,"add-person-outlined":59200,"add-section-outlined":59201,"add-time-outlined":59202,"add":59203,"adjustment-outlined":59204,"afternoon-outlined":59205,"ai-outlined":59206,"alignment-2-outlined":59207,"alignment-outlined":59208,"all-caps":59209,"application-outlined":59210,"arrow-down":59211,"arrow-downwards":59212,"arrow-left":59213,"arrow-leftwards":59214,"arrow-right":59215,"arrow-rightwards":59216,"arrow-up":59217,"arrow-upwards":59218,"article-outlined":59219,"at-sign":59220,"auto-graph-outlined":59221,"automotive-outlined":59222,"bakery-outlined":59223,"bar-outlined":59224,"beauty-outlined":59225,"beer-outlined":59226,"bell-active-outlined":59227,"bell-outlined":59228,"bell-slash-outlined":59229,"bill-management-outlined":59230,"billing-outlined":59231,"body-outlined":59232,"bold":59233,"bolt-outlined":59234,"book-outlined":59235,"bookmark-added-outlined":59236,"bookmark-checked-outlined":59237,"bookmark-outlined":59238,"box-1-outlined":59239,"box-check-outlined":59240,"box-outlined":59241,"bullet-points":59242,"cake-outlined":59243,"calculator-outlined":59244,"calendar-dates-outlined":59245,"calendar-edit-outlined":59246,"calendar-star-outlined":59247,"call-outlined":59248,"call-split-outlined":59249,"camera-outlined":59250,"cancel":59251,"car-forward-outlined":59252,"cashback-outlined":59253,"charging-station-outlined":59254,"chat-bubble-outlined":59255,"chat-unread-outlined":59256,"checkmark":59257,"circle-add-outlined":59258,"circle-cancel-outlined":59259,"circle-down-outlined":59260,"circle-info-outlined":59261,"circle-left-outlined":59262,"circle-ok-outlined":59263,"circle-question-outlined":59264,"circle-remove-outlined":59265,"circle-right-outlined":59266,"circle-up-outlined":59267,"circle-warning-outlined":59268,"clock-2-outlined":59269,"clock-in-outlined":59270,"clock-out-outlined":59271,"clock-outlined":59272,"cog-outlined":59273,"coin-outlined":59274,"coin-super-outlined":59275,"comment-outlined":59276,"contacts-outlined":59277,"contacts-user-outlined":59278,"credit-card-outlined":59279,"cultural-site-outlined":59280,"cup-outlined":59281,"dentistry-outlined":59282,"diamond-outlined":59283,"direction-arrows-outlined":59284,"directory-outlined":59285,"document-outlined":59286,"dollar-box-outlined":59287,"dollar-card-outlined":59288,"dollar-coin-shine-outlined":59289,"dollar-credit-card-outlined":59290,"dollar-sign":59291,"double-buildings-outlined":59292,"double-left-arrows":59293,"double-right-arrows":59294,"download-box-outlined":59295,"download-outlined":59296,"edit-template-outlined":59297,"edit-user-outlined":59298,"electronics-outlined":59299,"email-outlined":59300,"end-break-outlined":59301,"enter-arrow":59302,"entertainment-outlined":59303,"envelope-outlined":59304,"evening-outlined":59305,"expense-approval-outlined":59306,"expense-outlined":59307,"explore-outlined":59308,"extension-outlined":59309,"external-link":59310,"eye-invisible-outlined":59311,"eye-outlined":59312,"face-id":59313,"face-meh-outlined":59314,"face-open-smiley-outlined":59315,"face-sad-outlined":59316,"face-smiley-outlined":59317,"fastfood-outlined":59318,"feed-outlined":59319,"feedbacks-outlined":59320,"file-certified-outlined":59321,"file-clone-outlined":59322,"file-copy-outlined":59323,"file-dispose-outlined":59324,"file-dollar-certified-outlined":59325,"file-dollar-outlined":59326,"file-download-outlined":59327,"file-export-outlined":59328,"file-lock-outlined":59329,"file-outlined":59330,"file-pound-outlined":59331,"file-search-outlined":59332,"file-secured-outlined":59333,"file-statutory-outlined":59334,"file-verified-outlined":59335,"filter-outlined":59336,"fitness-outlined":59337,"folder-outlined":59338,"folder-upload-outlined":59339,"folder-user-outlined":59340,"form-outlined":59341,"funnel-filter-outline":59342,"goal-outlined":59343,"graph-outlined":59344,"grocery-outlined":59345,"hand-holding-user-outlined":59346,"handshake-outlined":59347,"happy-sun-outlined":59348,"health-bag-outlined":59349,"heart-outlined":59350,"history-outlined":59351,"home-active-outlined":59352,"home-outlined":59353,"id-card-outlined":59354,"image-outlined":59355,"import-outlined":59356,"instapay-outlined":59357,"italic":59358,"job-search-outlined":59359,"leave-approval-outlined":59360,"lighting-outlined":59361,"link-1":59362,"link-2":59363,"list-outlined":59364,"live-help-outlined":59365,"local_mall_outlined":59366,"location-on-outlined":59367,"location-outlined":59368,"lock-outlined":59369,"locked-file-outlined":59370,"log-out":59371,"mail-outlined":59372,"map-outlined":59373,"media-content-outlined":59374,"menu-close":59375,"menu-expand":59376,"menu-fold-outlined":59377,"menu-unfold-outlined":59378,"mic-outlined":59379,"mic-slash-outlined":59380,"moneybag-outlined":59381,"moon-outlined":59382,"more-horizontal":59383,"more-vertical":59384,"morning-outlined":59385,"multiple-folders-outlined":59386,"multiple-users-outlined":59387,"near-me-outlined":59388,"node-outlined":59389,"number-points":59390,"number":59391,"overview-outlined":59392,"park-outlined":59393,"payment-summary-outlined":59394,"payslip-outlined":59395,"pencil-outlined":59396,"percentage":59397,"phone-outlined":59398,"piggy-bank-outlined":59399,"plane-outlined":59400,"play-circle-outlined":59401,"pound-box-outlined":59402,"pound-card-outlined":59403,"pound-coin-shine-outlined":59404,"pound-credit-card-outlined":59405,"print-outlined":59406,"profile-2user-outlined":59407,"propane-tank-outlined":59408,"qr-code-outlined":59409,"qualification-outlined":59410,"question-mark":59411,"re-assign":59412,"redeem":59413,"refresh":59414,"remove":59415,"reply-outlined":59416,"restart":59417,"restaurant-outlined":59418,"resume-outlined":59419,"return-arrow":59420,"rocket-launch-outlined":59421,"rostering-outlined":59422,"safety-outlined":59423,"save-outlined":59424,"schedule-outlined":59425,"search-outlined":59426,"search-secured-outlined":59427,"send-outlined":59428,"share-1":59429,"share-2":59430,"share-outlined-2":59431,"share-outlined":59432,"shield-check-outlined":59433,"shop-outlined":59434,"shopping_basket_outlined":59435,"show-chart-outlined":59436,"single-down-arrow":59437,"single-left-arrow":59438,"single-right-arrow":59439,"single-up-arrow":59440,"smart-match-outlined":59441,"sparkle-2-outlined":59442,"sparkle-outlined":59443,"speaker-active-outlined":59444,"speaker-outlined":59445,"star-circle-outlined":59446,"star-outlined":59447,"start-break-outlined":59448,"stash-outlined":59449,"stopwatch-outlined":59450,"strikethrough":59451,"styler-outlined":59452,"suitcase-clock-outlined":59453,"suitcase-outlined":59454,"survey-outlined":59455,"switch-outlined":59456,"sync":59457,"tag-outlined":59458,"target-outlined":59459,"tennis-outlined":59460,"thumb-down-outlined":59461,"thumb-up-outlined":59462,"ticket-outlined":59463,"timesheet-outlined":59464,"timesheets-outlined":59465,"today-outlined":59466,"transfer":59467,"transportation-outlined":59468,"trash-bin-outlined":59469,"umbrela-outlined":59470,"unavailability-outlined":59471,"unavailable":59472,"underline":59473,"union-outlined":59474,"unlock-outlined":59475,"upload-outlined":59476,"user-add-outlined":59477,"user-circle-outlined":59478,"user-gear-outlined":59479,"user-out-outlined":59480,"user-outlined":59481,"user-rectangle-outlined":59482,"video-1-outlined":59483,"video-2-outlined":59484,"volunteer-outlined":59485,"wallet-outlined":59486,"wellness-outlined":59487}
1
+ {"activate":59000,"add-emoji":59001,"add-person":59002,"adjustment":59003,"alignment":59004,"antenna":59005,"archive":59006,"assignment-warning":59007,"bank":59008,"bell":59009,"billing":59010,"bolt":59011,"bookmark-added":59012,"bookmark-checked":59013,"bookmark":59014,"box-check":59015,"box":59016,"bpay":59017,"buildings":59018,"cake":59019,"calendar-clock":59020,"calendar":59021,"candy-box-menu":59022,"caret-down-small":59023,"caret-down":59024,"caret-left-small":59025,"caret-left":59026,"caret-right-small":59027,"caret-right":59028,"caret-up-small":59029,"caret-up":59030,"check-radio":59031,"circle-add":59032,"circle-cancel":59033,"circle-check":59034,"circle-down":59035,"circle-info":59036,"circle-left":59037,"circle-ok":59038,"circle-pencil":59039,"circle-question":59040,"circle-remove":59041,"circle-right":59042,"circle-up":59043,"circle-warning":59044,"clock-3":59045,"clock":59046,"cloud-download":59047,"cloud-upload":59048,"cog":59049,"coin":59050,"contacts":59051,"credit-card":59052,"diamond":59053,"direction-arrows":59054,"directory":59055,"document":59056,"dollar-coin-shine":59057,"dot":59058,"double-buildings":59059,"edit-template":59060,"envelope":59061,"exclude":59062,"expand-content":59063,"expense":59064,"explore_nearby":59065,"eye-circle":59066,"eye-invisible":59067,"eye":59068,"face-meh":59069,"face-sad":59070,"face-smiley":59071,"feed":59072,"feedbacks":59073,"file-certified":59074,"file-clone":59075,"file-copy":59076,"file-csv":59077,"file-dispose":59078,"file-doc":59079,"file-excel":59080,"file-export":59081,"file-lock":59082,"file-pdf":59083,"file-powerpoint":59084,"file-search":59085,"file-secured":59086,"file-sheets":59087,"file-slide":59088,"file-verified":59089,"file-word":59090,"file":59091,"filter":59092,"folder-user":59093,"folder":59094,"format-bold":59095,"format-heading1":59096,"format-heading2":59097,"format-italic":59098,"format-list-bulleted":59099,"format-list-numbered":59100,"format-underlined":59101,"funnel-filter":59102,"global-dollar":59103,"global-pound":59104,"globe":59105,"graduation-cap":59106,"graph":59107,"happy-sun":59108,"health-bag":59109,"heart":59110,"hero-points":59111,"home":59112,"image":59113,"import":59114,"incident-siren":59115,"instapay-daily":59116,"instapay-now":59117,"instapay":59118,"list":59119,"loading-2":59120,"loading":59121,"location-on":59122,"location":59123,"lock":59124,"looks-one":59125,"looks-two":59126,"media-content":59127,"menu":59128,"money-notes":59129,"moneybag":59130,"moon":59131,"multiple-stars":59132,"multiple-users":59133,"near-me":59134,"node":59135,"open-folder":59136,"paperclip-vertical":59137,"paperclip":59138,"payment-summary":59139,"pencil":59140,"phone":59141,"piggy-bank":59142,"plane-up":59143,"plane":59144,"play-arrow":59145,"play-circle":59146,"pound-coin-shine":59147,"pound-sign":59148,"print":59149,"raising-hands":59150,"reply-arrow":59151,"reply":59152,"reschedule":59153,"rocket-launch":59154,"rostering":59155,"salary-sacrifice":59156,"save":59157,"schedule-send":59158,"schedule":59159,"search-person":59160,"search":59161,"send":59162,"speaker-active":59163,"speaker":59164,"star-award":59165,"star-badge":59166,"star-circle":59167,"star-medal":59168,"star":59169,"steps-circle":59170,"stopwatch":59171,"suitcase":59172,"surfing":59173,"survey":59174,"swag-pillar-benefit":59175,"swag-pillar-career":59176,"swag-pillar-money":59177,"swag-pillar-work":59178,"swag":59179,"swipe-right":59180,"switch":59181,"tag":59182,"target":59183,"teams":59184,"thumb-down":59185,"thumb-up":59186,"timesheet":59187,"touch-id":59188,"trash-bin":59189,"unlock":59190,"user":59191,"video-1":59192,"video-2":59193,"wallet":59194,"warning":59195,"academic-hat-outlined":59196,"accommodation-outlined":59197,"activate-outlined":59198,"add-credit-card-outlined":59199,"add-emoji-outlined":59200,"add-person-outlined":59201,"add-section-outlined":59202,"add-time-outlined":59203,"add":59204,"adjustment-outlined":59205,"afternoon-outlined":59206,"ai-outlined":59207,"alignment-2-outlined":59208,"alignment-outlined":59209,"all-caps":59210,"application-outlined":59211,"archive-outlined":59212,"arrow-down":59213,"arrow-downwards":59214,"arrow-left":59215,"arrow-leftwards":59216,"arrow-right":59217,"arrow-rightwards":59218,"arrow-up":59219,"arrow-upwards":59220,"article-outlined":59221,"assignment-warning-outlined":59222,"at-sign":59223,"auto-graph-outlined":59224,"automotive-outlined":59225,"bakery-outlined":59226,"bank-outlined":59227,"bar-outlined":59228,"beauty-outlined":59229,"beer-outlined":59230,"bell-active-outlined":59231,"bell-outlined":59232,"bell-slash-outlined":59233,"bill-management-outlined":59234,"billing-outlined":59235,"body-outlined":59236,"bold":59237,"bolt-outlined":59238,"book-outlined":59239,"bookmark-added-outlined":59240,"bookmark-checked-outlined":59241,"bookmark-outlined":59242,"box-1-outlined":59243,"box-check-outlined":59244,"box-outlined":59245,"bullet-points":59246,"cake-outlined":59247,"calculator-outlined":59248,"calendar-clock-outlined":59249,"calendar-dates-outlined":59250,"calendar-edit-outlined":59251,"calendar-outlined":59252,"calendar-star-outlined":59253,"call-outlined":59254,"call-split-outlined":59255,"camera-outlined":59256,"cancel":59257,"car-forward-outlined":59258,"cashback-outlined":59259,"charging-station-outlined":59260,"chat-bubble-outlined":59261,"chat-unread-outlined":59262,"checkmark":59263,"circle-add-outlined":59264,"circle-cancel-outlined":59265,"circle-check-outlined":59266,"circle-down-outlined":59267,"circle-info-outlined":59268,"circle-left-outlined":59269,"circle-ok-outlined":59270,"circle-question-outlined":59271,"circle-remove-outlined":59272,"circle-right-outlined":59273,"circle-up-outlined":59274,"circle-warning-outlined":59275,"clock-2-outlined":59276,"clock-3-outlined":59277,"clock-in-outlined":59278,"clock-out-outlined":59279,"clock-outlined":59280,"cloud-download-outlined":59281,"cog-outlined":59282,"coin-outlined":59283,"coin-super-outlined":59284,"comment-outlined":59285,"contacts-outlined":59286,"contacts-user-outlined":59287,"credit-card-outlined":59288,"cultural-site-outlined":59289,"cup-outlined":59290,"dentistry-outlined":59291,"diamond-outlined":59292,"direction-arrows-outlined":59293,"directory-outlined":59294,"document-outlined":59295,"dollar-box-outlined":59296,"dollar-card-outlined":59297,"dollar-coin-shine-outlined":59298,"dollar-credit-card-outlined":59299,"dollar-sign":59300,"double-buildings-outlined":59301,"double-left-arrows":59302,"double-right-arrows":59303,"download-box-outlined":59304,"download-outlined":59305,"edit-template-outlined":59306,"edit-user-outlined":59307,"electronics-outlined":59308,"email-outlined":59309,"end-break-outlined":59310,"enter-arrow":59311,"entertainment-outlined":59312,"envelope-outlined":59313,"evening-outlined":59314,"expense-approval-outlined":59315,"expense-outlined":59316,"explore-outlined":59317,"extension-outlined":59318,"external-link":59319,"eye-invisible-outlined":59320,"eye-outlined":59321,"face-id":59322,"face-meh-outlined":59323,"face-open-smiley-outlined":59324,"face-sad-outlined":59325,"face-smiley-outlined":59326,"fastfood-outlined":59327,"feed-outlined":59328,"feedbacks-outlined":59329,"file-certified-outlined":59330,"file-clone-outlined":59331,"file-copy-outlined":59332,"file-dispose-outlined":59333,"file-dollar-certified-outlined":59334,"file-dollar-outlined":59335,"file-download-outlined":59336,"file-export-outlined":59337,"file-lock-outlined":59338,"file-outlined":59339,"file-pound-outlined":59340,"file-search-outlined":59341,"file-secured-outlined":59342,"file-statutory-outlined":59343,"file-verified-outlined":59344,"filter-outlined":59345,"fitness-outlined":59346,"folder-outlined":59347,"folder-upload-outlined":59348,"folder-user-outlined":59349,"form-outlined":59350,"funnel-filter-outline":59351,"goal-outlined":59352,"graph-outlined":59353,"grocery-outlined":59354,"hand-holding-user-outlined":59355,"handshake-outlined":59356,"happy-sun-outlined":59357,"health-bag-outlined":59358,"heart-outlined":59359,"history-outlined":59360,"home-active-outlined":59361,"home-outlined":59362,"id-card-outlined":59363,"image-outlined":59364,"import-outlined":59365,"instapay-outlined":59366,"italic":59367,"job-search-outlined":59368,"leave-approval-outlined":59369,"lighting-outlined":59370,"link-1":59371,"link-2":59372,"list-outlined":59373,"live-help-outlined":59374,"local_mall_outlined":59375,"location-on-outlined":59376,"location-outlined":59377,"lock-outlined":59378,"locked-file-outlined":59379,"log-out":59380,"mail-outlined":59381,"map-outlined":59382,"media-content-outlined":59383,"menu-close":59384,"menu-expand":59385,"menu-fold-outlined":59386,"menu-unfold-outlined":59387,"mic-outlined":59388,"mic-slash-outlined":59389,"moneybag-outlined":59390,"moon-outlined":59391,"more-horizontal":59392,"more-vertical":59393,"morning-outlined":59394,"multiple-folders-outlined":59395,"multiple-users-outlined":59396,"near-me-outlined":59397,"node-outlined":59398,"number-points":59399,"number":59400,"overview-outlined":59401,"park-outlined":59402,"payment-summary-outlined":59403,"payslip-outlined":59404,"pencil-outlined":59405,"percentage":59406,"phone-outlined":59407,"piggy-bank-outlined":59408,"plane-outlined":59409,"play-circle-outlined":59410,"pound-box-outlined":59411,"pound-card-outlined":59412,"pound-coin-shine-outlined":59413,"pound-credit-card-outlined":59414,"print-outlined":59415,"profile-2user-outlined":59416,"propane-tank-outlined":59417,"qr-code-outlined":59418,"qualification-outlined":59419,"question-mark":59420,"raising-hands-outlined":59421,"re-assign":59422,"redeem":59423,"refresh":59424,"remove":59425,"reply-outlined":59426,"restart":59427,"restaurant-outlined":59428,"resume-outlined":59429,"return-arrow":59430,"rocket-launch-outlined":59431,"rostering-outlined":59432,"safety-outlined":59433,"save-outlined":59434,"schedule-outlined":59435,"schedule-send-outlined":59436,"search-outlined":59437,"search-secured-outlined":59438,"send-outlined":59439,"share-1":59440,"share-2":59441,"share-outlined-2":59442,"share-outlined":59443,"shield-check-outlined":59444,"shop-outlined":59445,"shopping_basket_outlined":59446,"show-chart-outlined":59447,"single-down-arrow":59448,"single-left-arrow":59449,"single-right-arrow":59450,"single-up-arrow":59451,"smart-match-outlined":59452,"sparkle-2-outlined":59453,"sparkle-outlined":59454,"speaker-active-outlined":59455,"speaker-outlined":59456,"star-award-outlined":59457,"star-badge-outlined":59458,"star-circle-outlined":59459,"star-medal-outlined":59460,"star-outlined":59461,"start-break-outlined":59462,"stash-outlined":59463,"stopwatch-outlined":59464,"strikethrough":59465,"styler-outlined":59466,"suitcase-clock-outlined":59467,"suitcase-outlined":59468,"survey-outlined":59469,"switch-outlined":59470,"sync":59471,"tag-outlined":59472,"target-outlined":59473,"teams-outlined":59474,"tennis-outlined":59475,"thumb-down-outlined":59476,"thumb-up-outlined":59477,"ticket-outlined":59478,"timesheet-outlined":59479,"timesheets-outlined":59480,"today-outlined":59481,"transfer":59482,"transportation-outlined":59483,"trash-bin-outlined":59484,"umbrela-outlined":59485,"unavailability-outlined":59486,"unavailable":59487,"underline":59488,"union-outlined":59489,"unlock-outlined":59490,"upload-outlined":59491,"user-add-outlined":59492,"user-circle-outlined":59493,"user-gear-outlined":59494,"user-out-outlined":59495,"user-outlined":59496,"user-rectangle-outlined":59497,"video-1-outlined":59498,"video-2-outlined":59499,"volunteer-outlined":59500,"wallet-outlined":59501,"warning-outlined":59502,"wellness-outlined":59503}
@@ -200,6 +200,7 @@ const IconList = [
200
200
  'accommodation-outlined',
201
201
  'activate-outlined',
202
202
  'add-credit-card-outlined',
203
+ 'add-emoji-outlined',
203
204
  'add-person-outlined',
204
205
  'add-section-outlined',
205
206
  'add-time-outlined',
@@ -211,6 +212,7 @@ const IconList = [
211
212
  'alignment-outlined',
212
213
  'all-caps',
213
214
  'application-outlined',
215
+ 'archive-outlined',
214
216
  'arrow-down',
215
217
  'arrow-downwards',
216
218
  'arrow-left',
@@ -220,10 +222,12 @@ const IconList = [
220
222
  'arrow-up',
221
223
  'arrow-upwards',
222
224
  'article-outlined',
225
+ 'assignment-warning-outlined',
223
226
  'at-sign',
224
227
  'auto-graph-outlined',
225
228
  'automotive-outlined',
226
229
  'bakery-outlined',
230
+ 'bank-outlined',
227
231
  'bar-outlined',
228
232
  'beauty-outlined',
229
233
  'beer-outlined',
@@ -245,8 +249,10 @@ const IconList = [
245
249
  'bullet-points',
246
250
  'cake-outlined',
247
251
  'calculator-outlined',
252
+ 'calendar-clock-outlined',
248
253
  'calendar-dates-outlined',
249
254
  'calendar-edit-outlined',
255
+ 'calendar-outlined',
250
256
  'calendar-star-outlined',
251
257
  'call-outlined',
252
258
  'call-split-outlined',
@@ -260,6 +266,7 @@ const IconList = [
260
266
  'checkmark',
261
267
  'circle-add-outlined',
262
268
  'circle-cancel-outlined',
269
+ 'circle-check-outlined',
263
270
  'circle-down-outlined',
264
271
  'circle-info-outlined',
265
272
  'circle-left-outlined',
@@ -270,9 +277,11 @@ const IconList = [
270
277
  'circle-up-outlined',
271
278
  'circle-warning-outlined',
272
279
  'clock-2-outlined',
280
+ 'clock-3-outlined',
273
281
  'clock-in-outlined',
274
282
  'clock-out-outlined',
275
283
  'clock-outlined',
284
+ 'cloud-download-outlined',
276
285
  'cog-outlined',
277
286
  'coin-outlined',
278
287
  'coin-super-outlined',
@@ -412,6 +421,7 @@ const IconList = [
412
421
  'qr-code-outlined',
413
422
  'qualification-outlined',
414
423
  'question-mark',
424
+ 'raising-hands-outlined',
415
425
  're-assign',
416
426
  'redeem',
417
427
  'refresh',
@@ -426,6 +436,7 @@ const IconList = [
426
436
  'safety-outlined',
427
437
  'save-outlined',
428
438
  'schedule-outlined',
439
+ 'schedule-send-outlined',
429
440
  'search-outlined',
430
441
  'search-secured-outlined',
431
442
  'send-outlined',
@@ -446,7 +457,10 @@ const IconList = [
446
457
  'sparkle-outlined',
447
458
  'speaker-active-outlined',
448
459
  'speaker-outlined',
460
+ 'star-award-outlined',
461
+ 'star-badge-outlined',
449
462
  'star-circle-outlined',
463
+ 'star-medal-outlined',
450
464
  'star-outlined',
451
465
  'start-break-outlined',
452
466
  'stash-outlined',
@@ -460,6 +474,7 @@ const IconList = [
460
474
  'sync',
461
475
  'tag-outlined',
462
476
  'target-outlined',
477
+ 'teams-outlined',
463
478
  'tennis-outlined',
464
479
  'thumb-down-outlined',
465
480
  'thumb-up-outlined',
@@ -487,6 +502,7 @@ const IconList = [
487
502
  'video-2-outlined',
488
503
  'volunteer-outlined',
489
504
  'wallet-outlined',
505
+ 'warning-outlined',
490
506
  'wellness-outlined',
491
507
  ] as const;
492
508
 
@@ -14,6 +14,7 @@ const getAppCueTheme = (theme: GlobalTheme) => {
14
14
 
15
15
  const radii = {
16
16
  container: theme.radii.large,
17
+ spotlight: theme.radii['5xlarge'],
17
18
  };
18
19
 
19
20
  return { colors, space, radii };
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ interface SpotlightBackdropProps {
3
+ bounds: {
4
+ x: number;
5
+ y: number;
6
+ width: number;
7
+ height: number;
8
+ };
9
+ testID?: string;
10
+ }
11
+ declare const SpotlightBackdrop: ({ bounds, testID }: SpotlightBackdropProps) => React.JSX.Element;
12
+ export default SpotlightBackdrop;
@@ -6,7 +6,13 @@ export declare const StyledContent: import("@emotion/native").StyledComponent<im
6
6
  }, {}, {
7
7
  ref?: import("react").Ref<View> | undefined;
8
8
  }>;
9
- export declare const StyledContainer: import("@emotion/native").StyledComponent<import("react-native").ViewProps & {
9
+ export declare const StyledModalContainer: import("@emotion/native").StyledComponent<import("react-native").ViewProps & {
10
+ theme?: import("@emotion/react").Theme;
11
+ as?: React.ElementType;
12
+ }, {}, {
13
+ ref?: import("react").Ref<View> | undefined;
14
+ }>;
15
+ export declare const StyledContentPositioner: import("@emotion/native").StyledComponent<import("react-native").ViewProps & {
10
16
  theme?: import("@emotion/react").Theme;
11
17
  as?: React.ElementType;
12
18
  }, {}, {