0.1.63 • Published 12 days ago

@extrawest/design-system v0.1.63

Weekly downloads
-
License
MIT
Repository
-
Last release
12 days ago

Maintaner GitHub license Maintenance GitHub release GitHub tag

List of Tools

JavaScript TypeScript React Redux Material UI Nx Firebase

Extrawest Design System

Silence is golden

List of components:

  1. Before you begin
  2. Required global wrapper
  3. Authentication component
  4. Error component
  5. Edit User Info component
  6. Delete User component
  7. Change user password component
  8. Terms of use component

Demo

https://ew-design-system-fcbab.web.app/

Usage

npm i @extrawest/design-system

Before you begin

Please create firebase app using firebase console and firebase documentation . In a result you will get all required variables which we will need in following section.

ENVIRONMENT VARIABLES LIST

  1. NX_FIREBASE_API_KEY or REACT_APP_FIREBASE_API_KEY - firebase app api key
  2. NX_FIREBASE_AUTH_DOMAIN or REACT_APP_FIREBASE_AUTH_DOMAIN - firebase authentication domain
  3. NX_FIREBASE_PROJECT_ID or REACT_APP_FIREBASE_PROJECT_ID - firebase project id
  4. NX_FIREBASE_STORAGE_BUCKET or REACT_APP_FIREBASE_STORAGE_BUCKET - firebase storage bucket
  5. NX_FIREBASE_MESSAGING_SENDER_ID or REACT_APP_MESSAGING_SENDER_ID - firebase messaging sender id
  6. NX_FIREBASE_APP_ID or REACT_APP_FIREBASE_APP_ID - firebase app id
  7. NX_FIREBASE_MEASUREMENT_ID or REACT_APP_FIREBASE_MEASUREMENT_ID - firebase measurement id

Required global wrapper

import { EwGlobal } from "@extrawest/design-system";

Usage:

<EwGlobal.EwProvider
	footerLinks={{
		onFeedbackButtonClick: noop,
		onPrivacyButtonClick: noop,
		onTermsButtonClick: noop,
	}}
>
{app code goes here}
</EwGlobal.EwProvider>

You need to wrap your app at higher level as possible.

Options List:

PropertyTypeValue
footerLinksobjectonFeedbackButtonClick: VoidFunction onPrivacyButtonClick: VoidFunction onTermsButtonClick: VoidFunction
isFooterVisiblebooleantrue/false
isHeaderVisiblebooleantrue/false
overrideThemeThemeOptionssee mui theme options
disabledLocaleListArray<CountryCode>
termsOfUseContentReactNodeany react node
overrideTranslationsCountryDatasee object bellow
overrideTranslations={{
	US: {
		label: "Eng",
		messages: {
			"messageCode": "message",
			...
		}
	}
}}

All available messages codes could be found at

@extrawest/design-system/lib/translations/index.d.ts

Authentication component

Usage:

<EwMacroComponents.SignIn type={SignInType.EMAIL} />

PropertyTypeValueRequired
typeSignInTypeSignInType.EMAI SignInType.PHONE SignInType.SOCIALStrue
socialsListSocialListItemSocialListItem.APPLE SocialListItem.FACEBOOK SocialListItem.GOOGLE SocialListItem.TWITTERfalse
asGuestbooleantrue \| falsefalse
isTermsRequiredbooleantrue \| falsefalse
allowCreatebooleantrue \| falsefalse
onAuthChangefunction (user: User) => void;callback functionfalse
showBgImagebooleantrue \| falsefalse
bgImageUrlstringimage urlfalse

Authentication setup

Before you begin

Please make sure that env variables are in place.

Authenticate with Firebase Using Email Link

  1. Enable Email Link sign-in for your Firebase project
  2. On the Sign in method tab, enable the Email/Password provider. Note that email/password sign-in must be enabled to use email link sign-in.
  3. In the same section, enable Email link (passwordless sign-in) sign-in method.
  4. Click Save.

Authenticate Using Google

  1. In the Firebase console, open the Auth section.
  2. On the Sign in method tab, enable the Google sign-in method and click Save.

Authenticate with Firebase using Password-Based Accounts

  1. In the Firebase console, open the Auth section.
  2. On the Sign in method tab, enable the Email/password sign-in method and click Save.

Authenticate with Firebase with a Phone Number

  1. In the Firebase console, open the Auth section.
  2. On the Sign-in Method page, enable the Phone Number sign-in method.
  3. On the same page, if the domain that will host your app isn't listed in the OAuth redirect domains section, add your domain.
  4. Place <div id="recapcha"></div> code somewhere in your index.html to allow reCAPTCHA invisible verifier render in that div.

Before you can sign in users with their phone numbers, you must set up Firebase's reCAPTCHA verifier. Firebase uses reCAPTCHA to prevent abuse, such as by ensuring that the phone number verification request comes from one of your app's allowed domains.

The RecaptchaVerifier object supports invisible reCAPTCHA, which can often verify the user without requiring any user action, as well as the reCAPTCHA widget, which always requires user interaction to complete successfully.

Authenticate Using Facebook Login

  1. On the Facebook for Developers site, get the App ID and an App Secret for your app.
  2. In the Firebase console, open the Auth section.
  3. On the Sign in method tab, enable the Facebook sign-in method and specify the App ID and App Secret you got from Facebook.
  4. Then, make sure your OAuth redirect URI (e.g. my-app-12345.firebaseapp.com/__/auth/handler) is listed as one of your OAuth redirect URIs in your Facebook app's settings page on the Facebook for Developers site in the Product Settings > Facebook Login config.

Authenticate Using Twitter

  1. In the Firebase console, open the Auth section.
  2. On the Sign in method tab, enable the Twitter provider.
  3. Add the API key and API secret from that provider's developer console to the provider configuration
  4. Register your app as a developer application on Twitter and get your app's OAuth API key and API secret.
  5. Make sure your Firebase OAuth redirect URI (e.g. my-app-12345.firebaseapp.com/__/auth/handler) is set as your Authorization callback URL in your app's settings page on your Twitter app's config.

Authenticate Using Apple

  1. Associate your website with your app as described in the first section of Configure Sign In with Apple for the web. When prompted, register the following URL as a Return URL: https://YOUR_FIREBASE_PROJECT_ID.firebaseapp.com/__/auth/handler You can get your Firebase project ID on the Firebase console settings page.
  2. Create a Sign In with Apple private key.
  3. In the Firebase console, open the Auth section. On the Sign in method tab, enable the Apple provider. Specify the Service ID you created in the previous section. Also, in the OAuth code flow configuration section, specify your Apple Team ID and the private key and key ID

Authentication usage

To use any authetication provider you can use <EwMacroComponents.SignIn> with socialsList array param using SocialListItem enum from @extrawest/design-system package (e.g. import { SocialListItem } from "@extrawest/design-system";

Usage Example:

<EwMacroComponents.SignIn
	type={SignInType.EMAIL}
	socialsList={[SocialListItem.GOOGLE, SocialListItem.APPLE]}
/>

Error component

Usage:

<EwMacroComponents.ErrorPage
	errorCode={500}
	defaultImage
	onMainButtonClick={noop}
	bottomNavLinks={{
		onFeedbackButtonClick: noop,
		onPrivacyButtonClick: noop,
		onTermsButtonClick: noop
	}}
/>
PropertyTypeValueRequired
errorCodenumbernumbertrue
defaultImagebooleantrue \| falsefalse
onMainButtonClickVoidFunctionfunctionfalse

Edit User component

Usage:

<EwMacroComponents.EditUserInfo />
PropertyTypeValueRequired
onUserDeteleVoidFunctioncallback functionfalse
showDeleteUserOptionbooleantrue \| falsefalse
onBackButtonVoidFunctioncallbackfalse
DeleteItemsContentReactNodeany react nodefalse

example:

<EwMacroComponents.EditUserInfo
	onBackButton={() => void 0}
	showDeleteUserOption
	DeleteItemsContent={
		<>
			<div>
				item 1
			</div>
			<div>
				item 1
			</div>
			<div>
				item 1
			</div>
		</>
	}
/>

Delete User component

PropertyTypeValueRequired
childrenReactNodeContent of deleted items to display in modalfalse
onUserDeteleVoidFunctionany callback functionfalse

Usage:

<DeleteUser
	onUserDetele={onUserDetele}
>
	<div>...</div>
</DeleteUser>

Change user password component

No props required.

Usage:

<EwMacroComponents.ChangePassword />

Terms of use Component

PropertyTypeValueRequired
childrenReactNodeOverride content of terms of use componentfalse

Usage:

<EwMacroComponents.TermsOfUse />

Authors

Logo

License

MIT

0.1.63

12 days ago

0.1.61

1 month ago

0.1.62

1 month ago

0.1.60

1 month ago

0.1.56

3 months ago

0.1.57

3 months ago

0.1.58

3 months ago

0.1.59

3 months ago

0.1.53

3 months ago

0.1.55

3 months ago

0.1.52

3 months ago

0.1.30

3 months ago

0.1.42

3 months ago

0.1.15

3 months ago

0.1.51

3 months ago

0.1.1

3 months ago

0.1.28

3 months ago

0.1.0

3 months ago

0.0.10

3 months ago

0.0.11

3 months ago

0.0.12

3 months ago

0.0.13

3 months ago

0.0.14

3 months ago

0.0.15

3 months ago

0.0.16

3 months ago

0.0.17

3 months ago

0.0.18

3 months ago

0.0.3

3 months ago

0.0.2

3 months ago

0.0.1

3 months ago