@popmenu/common-ui 0.93.0 → 0.95.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/build/index.js CHANGED
@@ -178,6 +178,24 @@ function SvgCheckCircle(props) {
178
178
  }))));
179
179
  }
180
180
 
181
+ var _path$26;
182
+
183
+ function _extends$4G() { _extends$4G = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$4G.apply(this, arguments); }
184
+
185
+ function SvgX(props) {
186
+ return /*#__PURE__*/React__namespace.createElement("svg", _extends$4G({
187
+ viewBox: "0 0 16 16",
188
+ fill: "none",
189
+ strokeLinecap: "round",
190
+ strokeLinejoin: "round",
191
+ width: "1em",
192
+ height: "1em"
193
+ }, props), _path$26 || (_path$26 = /*#__PURE__*/React__namespace.createElement("path", {
194
+ d: "M12 4l-8 8m0-8l8 8",
195
+ stroke: "currentColor"
196
+ })));
197
+ }
198
+
181
199
  var _g$2y, _defs$1C;
182
200
 
183
201
  function _extends$4F() { _extends$4F = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends$4F.apply(this, arguments); }
@@ -832,7 +850,7 @@ var SemanticColors;
832
850
  SemanticColors["SECONDARY_DARK"] = "secondary.dark";
833
851
  SemanticColors["SECONDARY_LIGHT"] = "secondary.light";
834
852
  })(SemanticColors || (SemanticColors = {}));
835
- var useStyles$1 = core.makeStyles(function (theme) { return ({
853
+ var useStyles$5 = core.makeStyles(function (theme) { return ({
836
854
  dividerRoot: {
837
855
  gap: theme.spacing(2),
838
856
  },
@@ -870,7 +888,7 @@ var useStyles$1 = core.makeStyles(function (theme) { return ({
870
888
  }); });
871
889
  var Divider = function (props) {
872
890
  var className = props.className, text = props.text, textTransform = props.textTransform, TypographyProps = props.TypographyProps;
873
- var classes = useStyles$1(props);
891
+ var classes = useStyles$5(props);
874
892
  var casingOffset = textTransform === 'lowercase' ? '.25rem' : 'unset';
875
893
  return (React__default['default'].createElement(core.Box, { className: classNames([classes.dividerRoot, className]), display: "flex", alignItems: "center" },
876
894
  React__default['default'].createElement(core.Box, { className: classes.dividerLine, display: "flex", flexGrow: 1, height: "1px", marginTop: casingOffset }),
@@ -910,7 +928,7 @@ Link.defaultProps = {
910
928
  };
911
929
  Link.displayName = 'Link';
912
930
 
913
- var useStyles = core.makeStyles(function (_a) {
931
+ var useStyles$4 = core.makeStyles(function (_a) {
914
932
  var spacing = _a.spacing;
915
933
  return ({
916
934
  root: {
@@ -924,7 +942,7 @@ var useStyles = core.makeStyles(function (_a) {
924
942
  });
925
943
  var Paper = React.forwardRef(function (props, ref) {
926
944
  var legacyStyles = props.legacyStyles, restProps = __rest(props, ["legacyStyles"]);
927
- var classes = useStyles(props);
945
+ var classes = useStyles$4(props);
928
946
  return React__default['default'].createElement(core.Paper, __assign({}, ref, { classes: __assign({}, (legacyStyles && classes)) }, restProps));
929
947
  });
930
948
  Paper.displayName = 'Paper';
@@ -1110,6 +1128,275 @@ var NumberField = function (props) {
1110
1128
  React__default['default'].createElement(Icon, { icon: SvgMinusCircle }))) }, restInputProps) }, restProps)));
1111
1129
  };
1112
1130
 
1131
+ var useStyles$3 = core.makeStyles(function () { return ({
1132
+ root: {
1133
+ display: 'flex',
1134
+ flexDirection: 'column',
1135
+ alignItems: 'center',
1136
+ gridGap: 16,
1137
+ },
1138
+ }); });
1139
+ var FollowerAuthenticationContent = function (props) {
1140
+ var classes = useStyles$3();
1141
+ return React__default['default'].createElement(core.DialogContent, { classes: classes }, props.children);
1142
+ };
1143
+
1144
+ var FollowerAuthenticationDialogContext = React.createContext(null);
1145
+ var FollowerAuthenticationDialogContextProvider = FollowerAuthenticationDialogContext.Provider;
1146
+ var useFollowerAuthenticationDialogContext = function () {
1147
+ var context = React.useContext(FollowerAuthenticationDialogContext);
1148
+ if (!context) {
1149
+ throw new Error('useFollowerAuthenticationDialogContext must be called within FollowerAuthenticationDialogContextProvider');
1150
+ }
1151
+ return context;
1152
+ };
1153
+
1154
+ var FollowerAuthenticationGraphic = function () {
1155
+ var _a = useFollowerAuthenticationDialogContext(), state = _a.state, messages = _a.messages, graphics = _a.graphics;
1156
+ var graphic = graphics[state.value];
1157
+ if (!graphic)
1158
+ return null;
1159
+ return (React__default['default'].createElement(core.Box, null,
1160
+ React__default['default'].createElement("img", { src: graphic, alt: messages[state.value + "GraphicAlt"] })));
1161
+ };
1162
+
1163
+ var useStyles$2 = core.makeStyles(function () { return ({
1164
+ form: {
1165
+ display: 'flex',
1166
+ flexDirection: 'column',
1167
+ alignItems: 'center',
1168
+ width: '100%',
1169
+ gridGap: 16,
1170
+ },
1171
+ }); });
1172
+ var FollowerAuthenticationForm = function () {
1173
+ var _a = useFollowerAuthenticationDialogContext(), state = _a.state, messages = _a.messages, locationOptions = _a.locationOptions, dispatch = _a.dispatch, loading = _a.loading;
1174
+ var classes = useStyles$2();
1175
+ var handleSubmit = function (e) {
1176
+ e.preventDefault();
1177
+ var form = e.target;
1178
+ var formData = new FormData(form);
1179
+ var values = Object.fromEntries(formData.entries());
1180
+ dispatch({ type: 'submit-form', context: { values: values } });
1181
+ };
1182
+ var formProps = {
1183
+ id: 'follower-authentication-form',
1184
+ className: classes.form,
1185
+ onSubmit: handleSubmit,
1186
+ };
1187
+ switch (state.value) {
1188
+ case 'initial':
1189
+ return (React__default['default'].createElement("form", __assign({}, formProps),
1190
+ React__default['default'].createElement(core.TextField, { disabled: loading, label: messages.initialInputLabel, key: "identifier-input", id: "identifier-input", name: "identifier" }),
1191
+ React__default['default'].createElement(core.Button, { disabled: loading, type: "submit" }, messages.initialCtaButtonLabel)));
1192
+ case 'signUp':
1193
+ return (React__default['default'].createElement("form", __assign({}, formProps),
1194
+ React__default['default'].createElement(core.TextField, { disabled: loading, label: messages.signUpPhoneInputLabel, key: "phone-input", id: "phone-input", name: "phone" }),
1195
+ React__default['default'].createElement(core.TextField, { disabled: loading, label: messages.signUpNameInputLabel, key: "name-input", id: "name-input", name: "name" }),
1196
+ React__default['default'].createElement(core.TextField, { disabled: loading, label: messages.signUpEmailInputLabel, key: "email-input", id: "email-input", name: "email" }),
1197
+ React__default['default'].createElement(core.TextField, { disabled: loading, select: true, label: messages.signUpLocationInputLabel, key: "location-input", id: "location-input", name: "location" }, locationOptions.map(function (locationOption) { return (React__default['default'].createElement(core.MenuItem, { key: locationOption.value, value: locationOption.value }, locationOption.label)); })),
1198
+ React__default['default'].createElement(core.Typography, { style: { alignSelf: 'start' } }, messages.signUpBirthdaySectionLabel),
1199
+ React__default['default'].createElement(core.TextField, { disabled: loading, label: messages.signUpMonthInputLabel, key: "birthday-month-input", id: "birthday-month-input", name: "birthdayMonth" }),
1200
+ React__default['default'].createElement(core.TextField, { disabled: loading, label: messages.signUpDayInputLabel, key: "birthday-date-input", id: "birthday-date-input", name: "birthdayDate" }),
1201
+ React__default['default'].createElement(core.Button, { disabled: loading, type: "submit" }, messages.signUp)));
1202
+ case 'emailFound':
1203
+ return (React__default['default'].createElement("form", __assign({}, formProps),
1204
+ React__default['default'].createElement(core.TextField, { disabled: loading, label: messages.emailFoundInputLabel, key: "email-input", id: "email-input", name: "email", value: state.defaultFormValues.email }),
1205
+ React__default['default'].createElement(core.Button, { disabled: loading, type: "submit" }, messages.emailFoundCtaButtonLabel)));
1206
+ case 'emailAuthCode':
1207
+ return (React__default['default'].createElement("form", __assign({}, formProps),
1208
+ React__default['default'].createElement(core.TextField, { disabled: loading, label: messages.emailAuthCodeInputLabel, key: "code-input", id: "code-input", name: "code" }),
1209
+ React__default['default'].createElement(core.Button, { disabled: loading, type: "submit" }, messages.signIn)));
1210
+ case 'emailPasswordSignIn':
1211
+ return (React__default['default'].createElement("form", __assign({}, formProps),
1212
+ React__default['default'].createElement(core.TextField, { disabled: loading, label: messages.emailFoundInputLabel, key: "email-input", id: "email-input", name: "email", value: state.defaultFormValues.email, InputLabelProps: { shrink: true } }),
1213
+ React__default['default'].createElement(core.TextField, { disabled: loading, label: messages.passwordInputLabel, key: "password-input", id: "password-input", name: "password", inputProps: { type: 'password' } }),
1214
+ React__default['default'].createElement(core.Button, { disabled: loading, type: "submit" }, messages.signIn)));
1215
+ case 'phoneFound':
1216
+ return (React__default['default'].createElement("form", __assign({}, formProps),
1217
+ React__default['default'].createElement(core.TextField, { disabled: loading, label: messages.phoneFoundInputLabel, key: "phone-input", id: "phone-input", name: "phone", value: state.defaultFormValues.phone }),
1218
+ React__default['default'].createElement(core.Button, { disabled: loading, type: "submit" }, messages.phoneFoundCtaButtonLabel)));
1219
+ case 'phoneAuthCode':
1220
+ return (React__default['default'].createElement("form", __assign({}, formProps),
1221
+ React__default['default'].createElement(core.TextField, { disabled: loading, label: messages.phoneAuthCodeInputLabel, key: "code-input", id: "code-input", name: "code" }),
1222
+ React__default['default'].createElement(core.Button, { disabled: loading, type: "submit" }, messages.signIn)));
1223
+ case 'phonePasswordSignIn':
1224
+ return (React__default['default'].createElement("form", __assign({}, formProps),
1225
+ React__default['default'].createElement(core.TextField, { disabled: loading, label: messages.phoneFoundInputLabel, key: "phone-input", id: "phone-input", name: "phone", value: state.defaultFormValues.phone, InputLabelProps: { shrink: true } }),
1226
+ React__default['default'].createElement(core.TextField, { disabled: loading, label: messages.passwordInputLabel, key: "password-input", id: "password-input", name: "password", inputProps: { type: 'password' } }),
1227
+ React__default['default'].createElement(core.Button, { disabled: loading, type: "submit" }, messages.signIn)));
1228
+ case 'welcome':
1229
+ return null;
1230
+ default:
1231
+ return null;
1232
+ }
1233
+ };
1234
+
1235
+ var useStyles$1 = core.makeStyles(function () { return ({
1236
+ main: {
1237
+ width: '100%',
1238
+ display: 'flex',
1239
+ flexDirection: 'column',
1240
+ gridGap: 16,
1241
+ },
1242
+ }); });
1243
+ var FollowerAuthenticationAltActions = function () {
1244
+ var _a = useFollowerAuthenticationDialogContext(), state = _a.state, dispatch = _a.dispatch, messages = _a.messages, logos = _a.logos;
1245
+ var classes = useStyles$1();
1246
+ switch (state.value) {
1247
+ case 'initial':
1248
+ return (React__default['default'].createElement(core.Box, { className: classes.main },
1249
+ React__default['default'].createElement(core.Divider, null),
1250
+ React__default['default'].createElement(core.Button, { variant: "outlined", startIcon: logos.facebook, onClick: function () {
1251
+ dispatch({ type: 'click-facebook-continue' });
1252
+ } }, messages.continueWithFacebookButtonLabel),
1253
+ React__default['default'].createElement(core.Button, { variant: "outlined", startIcon: logos.google, onClick: function () {
1254
+ dispatch({ type: 'click-google-continue' });
1255
+ } }, messages.continueWithGoogleButtonLabel)));
1256
+ case 'signUp':
1257
+ return null;
1258
+ case 'emailFound':
1259
+ return (React__default['default'].createElement(core.Box, { className: classes.main },
1260
+ React__default['default'].createElement(core.Divider, null),
1261
+ React__default['default'].createElement(core.Button, { variant: "outlined", onClick: function () {
1262
+ dispatch({ type: 'click-password-continue' });
1263
+ } }, messages.signInWithPassword)));
1264
+ case 'emailAuthCode':
1265
+ return null;
1266
+ case 'emailPasswordSignIn':
1267
+ return (React__default['default'].createElement(core.Box, { className: classes.main },
1268
+ React__default['default'].createElement(core.Divider, null),
1269
+ React__default['default'].createElement(core.Button, { variant: "outlined", onClick: function () {
1270
+ var form = document.querySelector('#follower-authentication-form');
1271
+ var formData = new FormData(form);
1272
+ var values = Object.fromEntries(formData.entries());
1273
+ dispatch({ type: 'click-get-code', context: { values: values } });
1274
+ } }, messages.emailFoundCtaButtonLabel)));
1275
+ case 'phoneFound':
1276
+ return null;
1277
+ case 'phoneAuthCode':
1278
+ return null;
1279
+ case 'phonePasswordSignIn':
1280
+ return (React__default['default'].createElement(core.Box, { className: classes.main },
1281
+ React__default['default'].createElement(core.Divider, null),
1282
+ React__default['default'].createElement(core.Button, { variant: "outlined", onClick: function () {
1283
+ var form = document.querySelector('#follower-authentication-form');
1284
+ var formData = new FormData(form);
1285
+ var values = Object.fromEntries(formData.entries());
1286
+ dispatch({ type: 'click-get-code', context: { values: values } });
1287
+ } }, messages.phoneFoundCtaButtonLabel)));
1288
+ case 'welcome':
1289
+ return (React__default['default'].createElement(core.Button, { onClick: function () {
1290
+ dispatch({ type: 'click-done' });
1291
+ } }, messages.done));
1292
+ default:
1293
+ return null;
1294
+ }
1295
+ };
1296
+
1297
+ var FollowerAuthenticationBody = function () {
1298
+ return (React__default['default'].createElement(React__default['default'].Fragment, null,
1299
+ React__default['default'].createElement(FollowerAuthenticationForm, null),
1300
+ React__default['default'].createElement(FollowerAuthenticationAltActions, null)));
1301
+ };
1302
+
1303
+ var FollowerAuthenticationFooter = function () {
1304
+ var _a = useFollowerAuthenticationDialogContext(), messages = _a.messages, logos = _a.logos;
1305
+ console.log(logos.popmenu);
1306
+ return (React__default['default'].createElement(core.Box, { display: "flex", gridGap: 8 },
1307
+ React__default['default'].createElement(core.Typography, { variant: "body2" }, messages.poweredBy),
1308
+ logos.popmenu));
1309
+ };
1310
+
1311
+ var FollowerAuthenticationTitle = function () {
1312
+ var _a = useFollowerAuthenticationDialogContext(), state = _a.state, messages = _a.messages;
1313
+ var title = messages[state.value + "Title"];
1314
+ return (React__default['default'].createElement(core.Box, null,
1315
+ React__default['default'].createElement(core.Typography, { variant: "h1", align: "center" }, title)));
1316
+ };
1317
+
1318
+ var FollowerAuthenticationInfo = function () {
1319
+ var _a = useFollowerAuthenticationDialogContext(), state = _a.state, messages = _a.messages;
1320
+ var info = messages[state.value + "Info"];
1321
+ if (!info)
1322
+ return null;
1323
+ return (React__default['default'].createElement(core.Box, null,
1324
+ React__default['default'].createElement(core.Typography, { align: "center" }, info)));
1325
+ };
1326
+
1327
+ var useStyles = core.makeStyles(function () { return ({
1328
+ root: {
1329
+ position: 'absolute',
1330
+ top: 0,
1331
+ right: 0,
1332
+ },
1333
+ }); });
1334
+ var FollowerAuthenticationCloseButton = function () {
1335
+ var _a = useFollowerAuthenticationDialogContext(), messages = _a.messages, dispatch = _a.dispatch;
1336
+ var classes = useStyles();
1337
+ var handleClose = function () {
1338
+ dispatch({ type: 'click-close' });
1339
+ };
1340
+ return (React__default['default'].createElement(core.IconButton, { classes: classes, "aria-label": messages.closeButtonLabel, onClick: handleClose },
1341
+ React__default['default'].createElement(SvgX, null)));
1342
+ };
1343
+
1344
+ var theme = {
1345
+ palette: {
1346
+ primary: { main: '#2E3042' },
1347
+ },
1348
+ typography: {
1349
+ h1: {
1350
+ fontFamily: 'Poppins',
1351
+ fontSize: '24px',
1352
+ fontWeight: 400,
1353
+ lineHeight: '36px',
1354
+ },
1355
+ },
1356
+ props: {
1357
+ MuiTextField: {
1358
+ variant: 'outlined',
1359
+ fullWidth: true,
1360
+ },
1361
+ MuiButton: {
1362
+ variant: 'contained',
1363
+ color: 'primary',
1364
+ disableElevation: true,
1365
+ fullWidth: true,
1366
+ },
1367
+ },
1368
+ overrides: {
1369
+ MuiButton: {
1370
+ root: {
1371
+ borderRadius: 32,
1372
+ textTransform: 'none',
1373
+ },
1374
+ },
1375
+ },
1376
+ };
1377
+
1378
+ var FollowerAuthenticationDialog = function (props) {
1379
+ var open = props.open, restProps = __rest(props, ["open"]);
1380
+ var theme$1 = core.createTheme(theme);
1381
+ var fullScreen = core.useMediaQuery(function (_a) {
1382
+ var breakpoints = _a.breakpoints;
1383
+ return breakpoints.down('sm');
1384
+ });
1385
+ var handleClose = function () {
1386
+ props.dispatch({ type: 'click-close' });
1387
+ };
1388
+ return (React__default['default'].createElement(core.ThemeProvider, { theme: theme$1 },
1389
+ React__default['default'].createElement(FollowerAuthenticationDialogContextProvider, { value: restProps },
1390
+ React__default['default'].createElement(core.Dialog, { open: open, fullScreen: fullScreen, onClose: handleClose },
1391
+ React__default['default'].createElement(FollowerAuthenticationContent, null,
1392
+ React__default['default'].createElement(FollowerAuthenticationCloseButton, null),
1393
+ React__default['default'].createElement(FollowerAuthenticationGraphic, null),
1394
+ React__default['default'].createElement(FollowerAuthenticationTitle, null),
1395
+ React__default['default'].createElement(FollowerAuthenticationInfo, null),
1396
+ React__default['default'].createElement(FollowerAuthenticationBody, null),
1397
+ React__default['default'].createElement(FollowerAuthenticationFooter, null))))));
1398
+ };
1399
+
1113
1400
  var useCollapsibleText = function () {
1114
1401
  var _a = React.useState(false), open = _a[0], setOpen = _a[1];
1115
1402
  var collapseState = React.useState(false);
@@ -1563,6 +1850,7 @@ exports.Checkbox = Checkbox;
1563
1850
  exports.Chip = Chip;
1564
1851
  exports.CollapsibleText = CollapsibleText;
1565
1852
  exports.Divider = Divider;
1853
+ exports.FollowerAuthenticationDialog = FollowerAuthenticationDialog;
1566
1854
  exports.Icon = Icon;
1567
1855
  exports.IconButton = IconButton;
1568
1856
  exports.Link = Link;