@spteck/license-manager-react-components 1.0.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 (47) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +3 -0
  3. package/dist/atoms/appGlobalState.d.ts +4 -0
  4. package/dist/components/RenderLabel/RenderLabel.d.ts +8 -0
  5. package/dist/components/RenderLabel/index.d.ts +2 -0
  6. package/dist/components/RenderLabel/useRenderLabelStylesStyles.d.ts +1 -0
  7. package/dist/components/customControlBar/CustomControlBar.d.ts +15 -0
  8. package/dist/components/customControlBar/index.d.ts +1 -0
  9. package/dist/components/dropDownField/DropDownField.d.ts +3 -0
  10. package/dist/components/dropDownField/IDropDownFieldProps.d.ts +15 -0
  11. package/dist/components/dropDownField/IOption.d.ts +8 -0
  12. package/dist/components/dropDownField/index.d.ts +3 -0
  13. package/dist/components/errorSVG/ErrorSVG.d.ts +2 -0
  14. package/dist/components/informationBar/InformationBar.d.ts +6 -0
  15. package/dist/components/licenseControl/LicenseControl.d.ts +10 -0
  16. package/dist/components/licenseControl/useLicenseControlStyles.d.ts +5 -0
  17. package/dist/components/licensePlaceHolder/LicensePlaceHolder.d.ts +8 -0
  18. package/dist/components/licensePlaceHolder/licensePlaceHolderStyles.d.ts +8 -0
  19. package/dist/components/licenseProvider/ILicenseProviderProps.d.ts +17 -0
  20. package/dist/components/licenseProvider/LicenseProvider.d.ts +3 -0
  21. package/dist/components/mailTo/Mailto.d.ts +12 -0
  22. package/dist/components/pricePlan/PricePlan.d.ts +9 -0
  23. package/dist/components/pricePlan/usePricePlansStyles.d.ts +12 -0
  24. package/dist/components/registerDialog/RegisterDialog.d.ts +10 -0
  25. package/dist/components/renderHeader/RenderHeader.d.ts +8 -0
  26. package/dist/components/renderHeader/index.d.ts +2 -0
  27. package/dist/components/renderHeader/useRenderHeaderStyles.d.ts +1 -0
  28. package/dist/components/showError/ShowError.d.ts +6 -0
  29. package/dist/components/trialLicense.ts/TrialLicense.d.ts +6 -0
  30. package/dist/components/trialLicense.ts/useTrialLicenseStyles.d.ts +5 -0
  31. package/dist/constants/constants.d.ts +3 -0
  32. package/dist/hooks/useUtils.d.ts +4 -0
  33. package/dist/index.d.ts +2 -0
  34. package/dist/index.js +8 -0
  35. package/dist/license-manager-react-components.cjs.development.js +1433 -0
  36. package/dist/license-manager-react-components.cjs.development.js.map +1 -0
  37. package/dist/license-manager-react-components.cjs.production.min.js +2 -0
  38. package/dist/license-manager-react-components.cjs.production.min.js.map +1 -0
  39. package/dist/license-manager-react-components.esm.js +1406 -0
  40. package/dist/license-manager-react-components.esm.js.map +1 -0
  41. package/dist/loc/IStrings.d.ts +56 -0
  42. package/dist/loc/en.json +61 -0
  43. package/dist/models/EAppHostName.d.ts +7 -0
  44. package/dist/models/ETabsOptions.d.ts +5 -0
  45. package/dist/models/IGlobalState.d.ts +8 -0
  46. package/dist/zodSchemas/pricePlan.d.ts +47 -0
  47. package/package.json +79 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"license-manager-react-components.esm.js","sources":["../src/models/ETabsOptions.ts","../src/constants/constants.ts","../src/components/mailTo/Mailto.tsx","../src/atoms/appGlobalState.ts","../src/components/licenseControl/useLicenseControlStyles.ts","../src/hooks/useUtils.ts","../src/components/licenseControl/LicenseControl.tsx","../src/components/renderHeader/useRenderHeaderStyles.ts","../src/components/renderHeader/RenderHeader.tsx","../src/components/RenderLabel/useRenderLabelStylesStyles.ts","../src/components/RenderLabel/RenderLabel.tsx","../src/components/trialLicense.ts/useTrialLicenseStyles.ts","../src/components/trialLicense.ts/TrialLicense.tsx","../src/components/registerDialog/RegisterDialog.tsx","../src/components/licensePlaceHolder/licensePlaceHolderStyles.tsx","../src/components/licensePlaceHolder/LicensePlaceHolder.tsx","../src/components/informationBar/InformationBar.tsx","../src/components/errorSVG/ErrorSVG.tsx","../src/components/showError/ShowError.tsx","../src/components/licenseProvider/LicenseProvider.tsx"],"sourcesContent":["export enum ETabsOptions {\n Trial = 'trial',\n License = 'license',\n Apps = 'apps',\n} ","export const SUPPORT_EMAIL = \"geral@spteck.com\";\nexport const EMAIL_BODY_TEMPLATE = `Subject: Support Request from {0} {1}\n\nDear Support Team,\n\nI am reaching out to you because I am experiencing issues with my license. Here are my details:\n\n ** Tenant ID **: {2}\n ** Application ID **: {3} - {4}\n ** User First Name **: {5}\n ** User Last Name **: {6}\n ** Email**: {7}\n\n {8}\n\nBest regards,\n{9} {10}`\n\nexport const EMAIL_BODY_TEMPLATE_REQUEST_LICENSE = `Subject: Request for New License {0} {1}\n\nDear Support Team,\n\nI am just contacting you to request a license for the following product. Here are my details:\n\n ** Tenant ID **: {2}\n ** Application ID **: {3} - {4}\n ** User First Name **: {5}\n ** User Last Name **: {6}\n ** Email **: {7}\n\nBest regards,\n{8} {9}`;","import React, { ElementType } from 'react';\n\ninterface MailtoProps<C extends ElementType> {\n to: string; // Required recipient email\n from?: string; // Optional sender email\n subject?: string; // Optional email subject\n body?: string; // Optional email body\n children: React.ReactNode; // Content to be displayed inside the component\n as?: C; // The component type to render\n componentProps?: React.ComponentProps<C>; // Additional props specific to the component type\n \n}\n\nexport const Mailto = <C extends ElementType = \"a\">(props: MailtoProps<C>) => {\n const {\n to,\n from,\n subject,\n body,\n children,\n as: Component,\n componentProps = {} as React.ComponentProps<C>,\n \n } = props;\n // Construct the mailto link\n const mailtoLink = `mailto:${to}?${from ? `from=${encodeURIComponent(from)}&` : \"\"}${\n subject ? `subject=${encodeURIComponent(subject)}&` : \"\"\n }${body ? `body=${encodeURIComponent(body)}` : \"\"}`;\n\n // Ensure the correct element type is rendered\n const RenderedComponent = Component || \"a\";\n\n // Handle the click event\n const handleClick = (e: React.MouseEvent) => {\n e.preventDefault();\n window.open(mailtoLink, \"_blank\");\n };\n\n return (\n <RenderedComponent\n href={mailtoLink}\n aria-label={`Send an email to ${to}`}\n onClick={handleClick}\n {...componentProps}\n >\n {children}\n </RenderedComponent>\n );\n};\n","import { atom } from 'jotai';\n\nimport { webLightTheme } from '@fluentui/react-components';\n\nimport stringsLocEn from '../loc/en.json';\nimport { IStrings } from '../loc/IStrings';\nimport { IGlobalState } from '../models/IGlobalState';\n\nexport const appGlobalStateAtom = atom<IGlobalState>({\n theme: webLightTheme,\n language: \"en\" , \n strings: stringsLocEn as unknown as IStrings,\n refresh: false,\n\n\n} as IGlobalState);\n","import { css } from '@emotion/css';\nimport { tokens } from '@fluentui/react-components';\n\nexport const useLicenseControlStyles = () => {\n return {\n container: css`\n display: flex;\n flex-direction: column;\n row-gap: 10px;\n margin-top: 10px;\n padding: 7px;\n background-color: ${tokens.colorNeutralBackground1};\n flex: 1;\n `,\n\n title: css`\n display: flex;\n flex-direction: row;\n gap: 10px;\n align-items: center;\n justify-content: start;\n `,\n footer : css`\n justify-content: end;\n position: absolute;\n bottom: 20px;\n right: 20px;\n `,\n };\n};","import React from 'react';\n\nimport { SHA256 } from 'crypto-js';\n\nexport const useUtils = () => {\n const formatString = React.useCallback((template: string, ...args: any[]): string => {\n return template.replace(/{(\\d+)}/g, (match, number) =>\n typeof args[number] !== \"undefined\" ? args[number] : match\n );\n }, []);\n const generateSalt = React.useCallback((tenantId: string, appId: string): string => {\n // Concatenate the inputs with a delimiter\n const inputData = `${tenantId}:${appId}`;\n // Create a SHA-256 hash\n const hash = SHA256(inputData).toString();\n return hash;\n }, []);\n return { formatString, generateSalt };\n};\n","import {\n Button,\n CardFooter,\n Text,\n} from '@fluentui/react-components';\nimport {\n EMAIL_BODY_TEMPLATE,\n EMAIL_BODY_TEMPLATE_REQUEST_LICENSE,\n SUPPORT_EMAIL,\n} from '../../constants/constants';\n\nimport { EStatus } from '@spteck/react-hooks-library';\nimport { Mailto } from '../mailTo/Mailto';\nimport React from 'react';\nimport { appGlobalStateAtom } from '../../atoms/appGlobalState';\nimport { useAtomValue } from 'jotai';\nimport { useLicenseControlStyles } from './useLicenseControlStyles';\nimport { useUtils } from '../../hooks/useUtils';\n\ninterface ILicenseControlProps {\n licenseStatus: EStatus;\n licenseType: string | undefined;\n expiryDate: number | undefined;\n onDismiss: () => void;\n}\n\nexport const LicenseControl: React.FC<ILicenseControlProps> = ({\n licenseStatus,\n onDismiss,\n licenseType,\n expiryDate,\n}) => {\n const styles = useLicenseControlStyles();\n const formatDate = new Date(expiryDate as number).toLocaleDateString();\n const appglobalState = useAtomValue(appGlobalStateAtom);\n const { tenantId, applicationId, applicationName, userInformation, strings } = appglobalState;\n const { formatString } = useUtils();\n\n const getMessageAndAction = React.useCallback(() => {\n switch (licenseStatus) {\n case EStatus.blocked:\n return {\n message: formatString(strings.messageStatusBlocked, licenseType),\n actionLabel: \"Contact Support\",\n };\n case EStatus.expired:\n return {\n message: formatString(strings.messageStatusExpired, licenseType, formatDate),\n\n actionLabel: \"Renew License\",\n };\n case EStatus.invalid:\n return {\n message: formatString(strings.messageStatusInvalid, licenseType),\n actionLabel: \"Request New License\",\n };\n case EStatus.notFound:\n return {\n message: strings.messageStatusNotFound,\n actionLabel: \"Request License\",\n };\n case EStatus.genericError:\n return {\n message: formatString(strings.messageStatusGenericError, \"\"),\n actionLabel: \"Contact Support\",\n };\n case EStatus.valid:\n return {\n message: formatString(strings.messageStatusValid, licenseType, formatDate),\n actionLabel: undefined,\n };\n default:\n return undefined;\n }\n }, [licenseStatus]);\n\n let content = React.useMemo(() => getMessageAndAction(), [getMessageAndAction]);\n\n // utils.ts\n const generateBodyText = React.useCallback((): string => {\n const { mail, givenName, surname } = userInformation;\n let body = EMAIL_BODY_TEMPLATE;\n\n if (licenseStatus === EStatus.notFound) {\n body = EMAIL_BODY_TEMPLATE_REQUEST_LICENSE;\n content = {\n actionLabel: \"Request License\",\n message: \"\",\n };\n }\n const message = formatString(\n body,\n givenName,\n surname,\n tenantId,\n applicationId,\n applicationName,\n givenName,\n surname,\n mail,\n content?.message,\n givenName,\n surname\n );\n return message;\n }, [tenantId, applicationId, userInformation, content]);\n\n if (!content) return <></>;\n\n return (\n <div className={styles.container}>\n <Text>{content.message}</Text>\n <CardFooter className={styles.footer}>\n {content.actionLabel && (\n <Mailto\n to={SUPPORT_EMAIL}\n from={userInformation?.mail as string}\n subject={`Support request - ${applicationName}`}\n body={generateBodyText()}\n as={Button}\n componentProps={{\n appearance: \"primary\",\n target: \"_blank\",\n }}\n >\n {content.actionLabel}\n </Mailto>\n )}\n <Button appearance=\"secondary\" onClick={onDismiss}>\n Close\n </Button>\n </CardFooter>\n </div>\n );\n};\n","import {\n makeStyles,\n shorthands,\n tokens,\n} from '@fluentui/react-components';\n\nexport const useRenderHeaderStyles = makeStyles({\n closeButton: {\n marginLeft: \"auto\",\n position: \"absolute\",\n top: \"10px\",\n right: \"10px\",\n zIndex: 99999,\n },\n\n divider: {\n width: \"100%\",\n height: \"1px\",\n backgroundColor: tokens.colorNeutralStroke1,\n marginTop: \"6px\",\n },\n\n renderHeaderContent: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flex-start\",\n alignItems: \"stretch\",\n\n width: \"100%\",\n },\n renderHeaderHeader: {\n \n\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flex-start\",\n ...shorthands.padding(\"10px\"),\n gap: \"20px\",\n },\n renderHeaderFooter: {\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"flex-start\",\n ...shorthands.padding(\"20px\"),\n gap: \"20px\",\n },\n renderHeaderBody: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"flex-start\",\n ...shorthands.padding(\"20px\"),\n gap: \"20px\",\n },\n renderHeaderTitleContainer: {\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"flex-start\",\n alignItems: \"center\",\n },\n renderHeaderTitle: {\n display: \"-webkit-box\",\n \"-webkit-line-clamp\": \"1\",\n \"-webkit-box-orient\": \"vertical\",\n\n textAlign: \"start\",\n textOverflow: \"ellipsis\",\n wordBreak: \"break-word\",\n },\n renderHeaderDescription: {\n display: \"-webkit-box\",\n \"-webkit-line-clamp\": \"4\",\n \"-webkit-box-orient\": \"vertical\",\n\n textAlign: \"start\",\n textOverflow: \"ellipsis\",\n wordBreak: \"break-word\",\n },\n dialogTitleAndDescriptionContainer: {\n display: \"flex\",\n flexDirection: \"column\",\n justifyContent: \"start\",\n alignItems: \"start\",\n paddingLeft: \"10px\",\n paddingRight: \"20px\",\n },\n});\n","import * as React from 'react';\n\nimport {\n Button,\n Caption1,\n Subtitle1,\n} from '@fluentui/react-components';\nimport { Dismiss24Regular } from '@fluentui/react-icons';\nimport { Icon } from '@iconify/react';\n\nimport { useRenderHeaderStyles } from './useRenderHeaderStyles';\n\nexport interface IRenderHeaderProps {\n onDismiss: (open?: boolean) => void;\n icon?: string | JSX.Element;\n title: string | React.ReactNode;\n description?: string | React.ReactNode;\n}\n\nexport const RenderHeader: React.FunctionComponent<IRenderHeaderProps> = (\n props: React.PropsWithChildren<IRenderHeaderProps>\n) => {\n const { onDismiss, title, description, icon } = props;\n const styles = useRenderHeaderStyles();\n\n return (\n <>\n <div className={styles.renderHeaderContent}>\n <div\n className={styles.renderHeaderHeader}>\n <Button\n appearance=\"subtle\"\n className={styles.closeButton}\n onClick={(ev: React.MouseEvent<HTMLButtonElement>) => {\n ev.stopPropagation();\n ev.preventDefault();\n onDismiss(false)}}\n icon={<Dismiss24Regular />}\n />\n\n <div className={styles.renderHeaderTitleContainer}>\n {React.isValidElement(icon) ? icon : <Icon icon={icon as string} />}\n <div className={styles.dialogTitleAndDescriptionContainer}>\n {React.isValidElement(title) ? (\n title\n ) : (\n <Subtitle1 className={styles.renderHeaderTitle}>{title}</Subtitle1>\n )}\n {React.isValidElement(description) ? (\n description\n ) : (\n <Caption1 className={styles.renderHeaderDescription}>{description}</Caption1>\n )}\n </div>\n </div>\n </div>\n <div className={styles.divider} />\n </div>\n </>\n );\n};\n","/* eslint-disable @typescript-eslint/explicit-function-return-type */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport {\n makeStyles,\n shorthands,\n} from '@fluentui/react-components';\n\nexport const useRenderLabelStyles = makeStyles({\n\n labelContainer: {\n display: \"flex\",\n flexDirection: \"row\",\n justifyContent: \"flex-start\",\n alignItems: \"center\",\n ...shorthands.gap(\"6px\"),\n },\n iconStyles: {\n width: \"26px\",\n },\n item: {\n paddingLeft: \"15px\",\n },\n \n\n});\n","import * as React from 'react';\n\nimport {\n Caption1,\n tokens,\n} from '@fluentui/react-components';\nimport { Icon } from '@iconify/react';\n\nimport { useRenderLabelStyles } from './useRenderLabelStylesStyles';\n\nexport interface IRenderLabelProps {\n label: string; icon?: string | JSX.Element; isRequired?: boolean\n}\n\nexport const RenderLabel: React.FunctionComponent<IRenderLabelProps> = (props: React.PropsWithChildren<IRenderLabelProps>) => {\n const { label, icon, isRequired } = props;\n const styles = useRenderLabelStyles();\n return (\n <>\n <div className={styles.labelContainer}>\n {icon && React.isValidElement(icon) ? (\n icon\n ) : (\n <Icon\n icon={icon as string}\n className={styles.iconStyles}\n width={\"20px\"}\n height={\"20px\"}\n color={tokens.colorBrandForeground1}\n />\n )}\n <Caption1 style={{ color: tokens.colorBrandForeground1 }}>{label}</Caption1>\n <Caption1 style={{ color: tokens.colorPaletteRedForeground1 }}>{isRequired ? \" *\" : \"\"}</Caption1>\n </div>\n </>\n );\n};\n\nexport default RenderLabel;\n","import { css } from '@emotion/css';\nimport { tokens } from '@fluentui/react-components';\n\nexport const useStyles = () => {\n return {\n container: css`\n display: flex;\n flex-direction: column;\n row-gap: 10px;\n margin-top: 10px;\n padding: 7px;\n background-color: ${tokens.colorNeutralBackground1};\n `,\n\n title: css`\n display: flex;\n flex-direction: row;\n gap: 10px;\n align-items: center;\n justify-content: start;\n `,\n cardFooter : css`\n align-self: flex-end;\n margin-top: 15px;\n `,\n };\n};\n","import * as React from 'react';\n\nimport {\n Body1,\n Body1Strong,\n Button,\n CardFooter,\n Field,\n Input,\n MessageBar,\n} from '@fluentui/react-components';\n\nimport { RenderLabel } from '../RenderLabel';\nimport { appGlobalStateAtom } from '../../atoms/appGlobalState';\nimport { useAtomValue } from 'jotai';\nimport { useLicenseManager } from '@spteck/react-hooks-library';\nimport { useStyles } from './useTrialLicenseStyles';\nimport { useUtils } from '../../hooks/useUtils';\nimport { z } from 'zod';\n\nexport interface ITrialLicenseProps {\n onTrialLicenseAdded: () => void;\n onDismiss: () => void;\n}\n\nexport const TrialLicense: React.FunctionComponent<ITrialLicenseProps> = (\n props: React.PropsWithChildren<ITrialLicenseProps>\n) => {\n const [errors, setErrors] = React.useState<{ [key: string]: string | null }>({});\n const { onTrialLicenseAdded, onDismiss } = props;\n const appGlobalState = useAtomValue(appGlobalStateAtom);\n const { userInformation, strings, tenantId, context } = appGlobalState;\n const { generateSalt } = useUtils();\n const [error, setError] = React.useState<Error | undefined>(undefined);\n\n const { requestTrialLicense } = useLicenseManager(\n tenantId as string,\n context?.manifest.id as string,\n generateSalt(tenantId as string, context?.manifest.id as string),\n context\n ) as any;\n\n // Define Zod schema for validation\n const trialLicenseSchema = z.object({\n contactFirstName: z.string().min(1, strings.contactFirstNameError),\n contactLastName: z.string().min(1, strings.contactLastNameError),\n contactEmail: z.string().email(strings.contactEmailError),\n contactCompany: z.string().min(1, strings.contactCompanyError),\n });\n\n const [formData, setFormData] = React.useState({\n contactFirstName: userInformation?.givenName as string,\n contactLastName: userInformation?.surname as string,\n contactEmail: userInformation?.mail as string,\n contactCompany: \"\",\n });\n\n const handleInputChange = React.useCallback((e: React.ChangeEvent<HTMLInputElement>) => {\n const { name, value } = e.target;\n setFormData((prev) => ({ ...prev, [name]: value }));\n }, []);\n\n const styles = useStyles();\n\n const handleSubmit = React.useCallback(\n async (e: React.FormEvent) => {\n e.preventDefault();\n // Validate form data using Zod schema\n const validation = trialLicenseSchema.safeParse(formData);\n if (!validation.success) {\n // Map errors for display\n const fieldErrors: { [key: string]: string } = {};\n validation.error.errors.forEach((error) => {\n const fieldName = error.path[0] as string;\n fieldErrors[fieldName] = error.message;\n });\n setErrors(fieldErrors);\n } else {\n // Clear errors and call the parent function\n setErrors({});\n try {\n await requestTrialLicense(\n tenantId as string,\n context.manifest.id as string,\n formData.contactFirstName,\n formData.contactLastName,\n formData.contactEmail,\n formData.contactCompany\n );\n onTrialLicenseAdded();\n } catch (error) {\n console.error(error);\n setError(error as Error);\n }\n }\n },\n [formData, onTrialLicenseAdded]\n );\n\n return (\n <div className={styles.container}>\n <div>\n <Body1Strong className={styles.title}>{strings.trialLicenseTitle}</Body1Strong>\n <Body1>{strings.trialLicenseText}</Body1>\n </div>\n\n <>\n <Field\n label={<RenderLabel label={strings.firstName} isRequired />}\n validationState={errors.contactFirstName ? \"error\" : \"none\"}\n validationMessage={errors.contactFirstName || undefined}\n >\n <Input\n name=\"contactFirstName\"\n value={formData.contactFirstName}\n onChange={handleInputChange}\n placeholder={strings.firstNamePlaceholder}\n />\n </Field>\n <Field\n label={<RenderLabel label={strings.lastName} isRequired />}\n validationState={errors.contactLastName ? \"error\" : \"none\"}\n validationMessage={errors.contactLastName || undefined}\n >\n <Input\n name=\"contactLastName\"\n value={formData.contactLastName}\n onChange={handleInputChange}\n placeholder={strings.lastNamePlaceholder}\n />\n </Field>\n <Field\n label={<RenderLabel label={strings.email} isRequired />}\n validationState={errors.contactEmail ? \"error\" : \"none\"}\n validationMessage={errors.contactEmail || undefined}\n >\n <Input\n name=\"contactEmail\"\n value={formData.contactEmail}\n onChange={handleInputChange}\n placeholder={strings.emailPlaceholder}\n />\n </Field>\n <Field\n label={<RenderLabel label={strings.company} isRequired />}\n validationState={errors.contactCompany ? \"error\" : \"none\"}\n validationMessage={errors.contactCompany || undefined}\n >\n <Input\n name=\"contactCompany\"\n value={formData.contactCompany}\n onChange={handleInputChange}\n placeholder={strings.companyPlaceholder}\n />\n </Field>\n {error && (\n <MessageBar style={{ marginTop: 10, marginBottom: 10 }} intent=\"error\">\n {\" \"}\n {error.message}\n </MessageBar>\n )}\n <CardFooter className={styles.cardFooter}>\n <Button appearance=\"primary\" onClick={handleSubmit}>\n {strings.register}\n </Button>\n <Button appearance=\"secondary\" onClick={onDismiss}>\n {strings.cancel}\n </Button>\n </CardFooter>\n </>\n </div>\n );\n};\n","import {\n Apps20Regular,\n Clock20Regular,\n Key20Regular,\n} from '@fluentui/react-icons';\nimport {\n Dialog,\n DialogActions,\n DialogSurface,\n DialogTitle,\n FluentProvider,\n SelectTabData,\n SelectTabEvent,\n Tab,\n TabList,\n TabValue,\n} from '@fluentui/react-components';\n\nimport { EStatus } from '@spteck/react-hooks-library';\nimport { ETabsOptions } from '../../models/ETabsOptions';\nimport { LicenseControl } from '../licenseControl/LicenseControl';\nimport React from 'react';\nimport { RenderHeader } from '../renderHeader';\nimport { TrialLicense } from '../trialLicense.ts/TrialLicense';\nimport { appGlobalStateAtom } from '../../atoms/appGlobalState';\nimport { useAtom } from 'jotai';\n\nexport interface IRegisterDialogProps {\n licenseStatus: EStatus;\n licenseType: string | undefined;\n expiryDate: number | undefined;\n open: boolean;\n onDismiss: (update?: boolean) => void;\n}\n\ninterface ITab {\n id: string;\n value: string;\n label: string;\n icon: JSX.Element;\n}\n\nexport const RegisterDialog: React.FC<IRegisterDialogProps> = (props: IRegisterDialogProps) => {\n const { licenseStatus, open, onDismiss, licenseType, expiryDate } = props;\n const [appGlobalState, setAppGlobalState] = useAtom(appGlobalStateAtom);\n const { theme, applicationName, applicationIcon, strings, showApps = false } = appGlobalState;\n\n const [selectedValue, setSelectedValue] = React.useState<TabValue>(\"trial\");\n\n const tabs: ITab[] = React.useMemo(() => {\n const defaultTabs = [\n { id: \"trial\", value: \"trial\", label: strings.trial, icon: <Clock20Regular /> },\n { id: \"license\", value: \"license\", label: strings.license, icon: <Key20Regular /> },\n ];\n if (showApps) {\n tabs.push({ id: \"apps\", value: \"apps\", label: strings.apps, icon: <Apps20Regular /> });\n }\n return defaultTabs;\n }, [strings]);\n\n const onTabSelect = React.useCallback((_event: SelectTabEvent, data: SelectTabData) => {\n setSelectedValue(data.value);\n }, []);\n\n React.useEffect(() => {\n const statusToTab = {\n [EStatus.notFound]: ETabsOptions.Trial,\n [EStatus.expired]: ETabsOptions.License,\n [EStatus.invalid]: ETabsOptions.License,\n [EStatus.blocked]: ETabsOptions.License,\n [EStatus.genericError]: ETabsOptions.License,\n [EStatus.valid]: ETabsOptions.License,\n };\n setSelectedValue(statusToTab[licenseStatus] || ETabsOptions.Trial);\n }, [licenseStatus]);\n\n const renderPanel = React.useMemo((): JSX.Element => {\n switch (selectedValue) {\n case \"trial\":\n return (\n <TrialLicense\n onTrialLicenseAdded={() => {\n setAppGlobalState({ ...appGlobalState, refresh: true });\n onDismiss();\n }}\n onDismiss={onDismiss}\n />\n );\n case \"license\":\n return (\n <LicenseControl\n licenseStatus={licenseStatus}\n onDismiss={onDismiss}\n licenseType={licenseType}\n expiryDate={expiryDate}\n />\n );\n case \"apps\":\n return <div>Apps</div>;\n default:\n return <></>;\n }\n }, [selectedValue, licenseStatus, licenseType, expiryDate]);\n\n const filterTabs = React.useCallback(\n (tab: ITab) => {\n if (\n licenseType?.toLocaleLowerCase() === ETabsOptions.Trial.toLocaleLowerCase() ||\n licenseStatus.toLocaleLowerCase() === EStatus.genericError.toLocaleLowerCase()\n ) {\n return tab.id.toLocaleLowerCase() !== ETabsOptions.Trial.toLocaleLowerCase();\n }\n return true;\n },\n [licenseType, licenseStatus]\n );\n\n return (\n <FluentProvider theme={theme}>\n <Dialog open={open} modalType=\"modal\">\n <DialogSurface style={{ minHeight: 300 }}>\n <DialogTitle>\n <RenderHeader icon={applicationIcon} title={applicationName} onDismiss={onDismiss} />\n </DialogTitle>\n\n <TabList selectedValue={selectedValue} onTabSelect={onTabSelect} selectTabOnFocus={true} size=\"medium\">\n {tabs.filter(filterTabs).map((tab) => (\n <Tab key={tab.id} value={tab.value} icon={tab.icon}>\n {tab.label}\n </Tab>\n ))}\n </TabList>\n {renderPanel}\n <DialogActions></DialogActions>\n </DialogSurface>\n </Dialog>\n </FluentProvider>\n );\n};\n","import { css } from '@emotion/css';\nimport { tokens } from '@fluentui/react-components';\n\nexport const \n useStyles = () => {\n return {\n container: css`\n display: flex;\n flex-direction: column;\n row-gap: 10px;\n margin-top: 10px;\n margin-bottom: 30px;\n `,\n titleContainer: css`\n display: flex;\n flex-direction: column;\n width: 100%;\n justify-content: center;\n align-items: center;\n gap: 10px;\n `,\n titleAndIcon: css`\n display: flex;\n flex-direction: row;\n gap: 10px;\n align-items: center;\n `,\n informationPanel: css`\n padding: 20px;\n display: flex;\n flex-direction: column;\n gap: 10px;\n background-color: ${tokens.colorNeutralBackground3};\n `,\n infoRow: css`\n display: flex;\n gap: 10px;\n justify-content: center;\n align-items: center;\n width: 100%;\n `,\n title: css`\n display: flex;\n flex-direction: row;\n gap: 10px;\n align-items: center;\n `,\n };\n};","import * as React from 'react';\n\nimport {\n Body1,\n Body1Strong,\n Button,\n DialogActions,\n FluentProvider,\n Subtitle1,\n} from '@fluentui/react-components';\n\nimport { EStatus } from '@spteck/react-hooks-library';\nimport { RegisterDialog } from '../registerDialog/RegisterDialog';\nimport { appGlobalStateAtom } from '../../atoms/appGlobalState';\nimport { useAtomValue } from 'jotai';\nimport { useStyles } from './licensePlaceHolderStyles';\nimport { useUtils } from '../../hooks/useUtils';\n\nexport interface ILicensePlaceHolderProps {\n licenseStatus: EStatus;\n licenseType: string | undefined;\n expiryDate: number | undefined;\n}\n\nexport const LicensePlaceHolder: React.FunctionComponent<ILicensePlaceHolderProps> = (\n props: React.PropsWithChildren<ILicensePlaceHolderProps>\n) => {\n const appglobalState = useAtomValue(appGlobalStateAtom);\n const { theme, applicationName, applicationIcon, placeHolderText, strings } = appglobalState;\n const styles = useStyles();\n const [isOpenLicenseForm, setIsOpenLicenseForm] = React.useState<boolean>(false);\n const { licenseStatus, licenseType, expiryDate } = props;\n const { formatString } = useUtils();\n const onDissmiss = React.useCallback(() => {\n setIsOpenLicenseForm(false);\n }, []);\n\n const formatDate = React.useMemo(() => new Date(expiryDate as number).toLocaleDateString(), [expiryDate]);\n\n const getMessageAndAction = React.useCallback(() => {\n switch (licenseStatus) {\n case EStatus.blocked:\n return {\n message: formatString(strings.messageStatusBlockedShort, licenseType),\n actionLabel: strings.details,\n };\n case EStatus.expired:\n return {\n message: formatString(strings.messageStatusExpiredShort, licenseType, formatDate),\n actionLabel: strings.buyLicense,\n };\n case EStatus.invalid:\n return {\n message: formatString(strings.messageStatusInvalidShort, licenseType ?? \"\"),\n actionLabel: strings.details,\n };\n case EStatus.notFound:\n return {\n message: formatString(strings.messageStatusNotFoundShort),\n actionLabel: strings.requestLicense,\n };\n case EStatus.genericError:\n return {\n message: formatString(strings.messageStatusGenericErrorShort, licenseType ?? \"\"),\n actionLabel: strings.details,\n };\n default:\n return undefined;\n }\n }, [licenseStatus]);\n\n const content = React.useMemo(() => {\n return getMessageAndAction();\n }, [getMessageAndAction]);\n\n return (\n <>\n <FluentProvider theme={theme}>\n <div className={styles.informationPanel}>\n <div className={styles.infoRow}>\n <div className={styles.title}>\n <div className={styles.titleContainer}>\n <div className={styles.titleAndIcon}>\n {applicationIcon} <Subtitle1> {applicationName}</Subtitle1>{\" \"}\n </div>\n <Body1>{placeHolderText}</Body1>\n </div>\n </div>\n </div>\n <div className={styles.infoRow}>\n <Body1Strong> {content?.message}</Body1Strong>\n </div>\n <div className={styles.infoRow}>\n <DialogActions style={{ marginTop: 15 }}>\n <Button\n appearance=\"primary\"\n onClick={() => {\n setIsOpenLicenseForm(true);\n }}\n >\n {content?.actionLabel}\n </Button>\n </DialogActions>\n {isOpenLicenseForm && (\n <RegisterDialog\n licenseStatus={licenseStatus}\n licenseType={licenseType}\n expiryDate={expiryDate}\n open={isOpenLicenseForm}\n onDismiss={onDissmiss}\n />\n )}\n </div>\n </div>\n </FluentProvider>\n </>\n );\n};\n","import * as React from 'react';\n\nimport {\n Button,\n MessageBar,\n MessageBarActions,\n MessageBarBody,\n MessageBarTitle,\n} from '@fluentui/react-components';\n\nexport interface IInformationBarProps {\n message: JSX.Element | string;\n onAction?: () => void;\n}\n\nexport const InformationBar: React.FunctionComponent<IInformationBarProps> = (\n props: React.PropsWithChildren<IInformationBarProps>\n) => {\n const { message, onAction } = props;\n return (\n <>\n <MessageBar intent={\"warning\"}>\n <MessageBarBody>\n <MessageBarTitle>License Manager</MessageBarTitle>\n {message}\n </MessageBarBody>\n <MessageBarActions>\n <Button onClick={onAction}>Details</Button>\n </MessageBarActions>\n </MessageBar>\n </>\n );\n};\n","/* eslint-disable @typescript-eslint/explicit-function-return-type */\nimport React from \"react\";\nimport type { SVGProps } from \"react\";\n\nexport function ErrorIcon(props: SVGProps<SVGSVGElement>) {\n return (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"1em\" height=\"1em\" viewBox=\"0 0 24 24\" {...props}>\n <g fill=\"none\" stroke=\"currentColor\" strokeWidth={1.5}>\n <path d=\"M2 6.95c0-.883 0-1.324.07-1.692A4 4 0 0 1 5.257 2.07C5.626 2 6.068 2 6.95 2c.386 0 .58 0 .766.017a4 4 0 0 1 2.18.904c.144.119.28.255.554.529L11 4c.816.816 1.224 1.224 1.712 1.495a4 4 0 0 0 .848.352C14.098 6 14.675 6 15.828 6h.374c2.632 0 3.949 0 4.804.77q.119.105.224.224c.77.855.77 2.172.77 4.804V14c0 3.771 0 5.657-1.172 6.828S17.771 22 14 22h-4c-3.771 0-5.657 0-6.828-1.172S2 17.771 2 14z\" />\n <path strokeLinecap=\"round\" d=\"m10.5 15l3-3m0 3l-3-3\" />\n </g>\n </svg>\n );\n}\n","import React from 'react';\n\nimport { css } from '@emotion/css';\nimport {\n Body1Strong,\n shorthands,\n Subtitle1,\n tokens,\n} from '@fluentui/react-components';\n\nimport { ErrorIcon } from '../errorSVG/ErrorSVG';\n\ninterface IErrorDisplayProps {\n message: string;\n}\n\nconst styles = {\n container: css({\n display: \"flex\",\n flexDirection: \"column\",\n alignItems: \"center\",\n justifyContent: \"center\",\n height: \"100%\",\n textAlign: \"center\",\n backgroundColor: tokens.colorNeutralBackground2,\n borderRadius: tokens.borderRadiusMedium,\n ...shorthands.padding(tokens.spacingVerticalXL, tokens.spacingHorizontalXL),\n color: tokens.colorNeutralForeground1,\n }),\n icon: css({\n marginTop: tokens.spacingHorizontalXL,\n fontSize: \"50px\",\n marginBottom: tokens.spacingHorizontalXL,\n color: tokens.colorBrandBackground,\n }),\n message: css({\n marginBottom: tokens.spacingHorizontalXL,\n }),\n};\n\nexport const ShowError: React.FC<IErrorDisplayProps> = ({ message }) => {\n return (\n <div className={styles.container}>\n <Subtitle1>News Feed - Application</Subtitle1>\n <ErrorIcon className={styles.icon} />\n <Body1Strong className={styles.message}>{message}</Body1Strong>\n </div>\n );\n};\n\nexport default ShowError;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport * as React from 'react';\n\nimport {\n EStatus,\n ICheckAndUpdateLicesingResponse,\n useLicenseManager,\n useUser,\n} from '@spteck/react-hooks-library';\nimport {\n FluentProvider,\n IdPrefixProvider,\n teamsLightTheme,\n} from '@fluentui/react-components';\n\nimport { ErrorBoundary } from 'react-error-boundary';\nimport { IGlobalState } from '../../models/IGlobalState';\nimport { ILicenseProviderProps } from './ILicenseProviderProps';\nimport { InformationBar } from '../informationBar/InformationBar';\nimport { LicensePlaceHolder } from '../licensePlaceHolder/LicensePlaceHolder';\nimport { RegisterDialog } from '../registerDialog/RegisterDialog';\nimport ShowError from '../showError/ShowError';\nimport { User } from '@microsoft/microsoft-graph-types';\nimport { appGlobalStateAtom } from '../../atoms/appGlobalState';\nimport { css } from '@emotion/css';\nimport { differenceInDays } from 'date-fns';\nimport { useAtom } from 'jotai';\nimport { useUtils } from '../../hooks/useUtils';\n\nconst NUMBER_DAYS_WARNING = 30;\n\nexport const LicenseProvider: React.FunctionComponent<ILicenseProviderProps> = (\n props: React.PropsWithChildren<ILicenseProviderProps>\n) => {\n const { theme = teamsLightTheme, context, children, tenantId, language = \"en\", applicationId } = props;\n\n /* const instanceId = context?.instanceId as string;\n const tenantId = context?.pageContext.legacyPageContext.aadTenantId; */\n const [error, setError] = React.useState<Error | undefined>(undefined);\n const [isLoading, setIsLoading] = React.useState<boolean>(true);\n const [licensingResponse, setLicenseResponse] = React.useState<ICheckAndUpdateLicesingResponse>();\n const [appglobalState, setAppGlobalState] = useAtom<IGlobalState>(appGlobalStateAtom);\n const { userInformation } = useUser(context);\n const [isOpenRegisterDialog, setIsOpenRegisterDialog] = React.useState<boolean>(false);\n const { formatString } = useUtils();\n const { strings, refresh } = appglobalState;\n const { generateSalt } = useUtils();\n const { status, licenseType, expiryDate } = (licensingResponse as ICheckAndUpdateLicesingResponse) || {};\n\n const { checkAndUpdateLicensing } = useLicenseManager(\n tenantId as string,\n applicationId as string, \n generateSalt(tenantId as string, applicationId as string),\n context\n ) as any;\n\n const styles = React.useMemo(() => {\n return {\n root: css({\n backgroundColor: \"transparent\",\n padding: 20,\n }),\n };\n }, []);\n\n React.useEffect(() => {\n (async () => {\n try {\n const stringsLoc = await import(`./loc/${language}.json`);\n setAppGlobalState((prev) => ({\n ...prev,\n ...props,\n strings: stringsLoc,\n userInformation: userInformation as User,\n }));\n const result = await checkAndUpdateLicensing();\n setLicenseResponse(result);\n setIsLoading(false);\n } catch (error) {\n if (error instanceof Error) setError(error);\n setIsLoading(false);\n }\n })();\n }, [userInformation]);\n\n const fallbackRender = React.useCallback(({ error }: { error: Error }) => {\n console.error(`[LicenseManager:Error: ${error.message}`);\n return <ShowError message={error.message} />;\n }, []);\n\n const onMessageBarAction = React.useCallback(() => {\n setIsOpenRegisterDialog(true);\n }, []);\n\n // ipdate liecense status on refresh\n React.useEffect(() => {\n (async () => {\n try {\n setAppGlobalState((prev) => ({\n ...prev,\n refresh: false,\n }));\n const result = await checkAndUpdateLicensing();\n setLicenseResponse(result);\n setIsLoading(false);\n } catch (error) {\n if (error instanceof Error) setError(error);\n setIsLoading(false);\n }\n })();\n }, [refresh]);\n\n const onDissmiss = React.useCallback(() => {\n setIsOpenRegisterDialog(false);\n }, []);\n\n // renderMessagebar if the license is about to expire\n const renderMessagebar = React.useCallback(\n (licenseType: string, expiryDate: number, warningDays: number): JSX.Element => {\n const expirationDate = new Date(expiryDate);\n const today = new Date();\n const formatedExpiredDate = expirationDate.toLocaleDateString();\n const dayDiff = differenceInDays(expirationDate, today);\n let message = \"\";\n if (dayDiff <= warningDays) {\n message = formatString(strings.messageLicenseWarning, licenseType, dayDiff, formatedExpiredDate);\n return <InformationBar message={message} onAction={onMessageBarAction} />;\n }\n return <></>;\n },\n [expiryDate]\n );\n\n // render the control based on the license status\n const renderContent = React.useCallback((): JSX.Element => {\n switch (status) {\n case EStatus.valid:\n return (\n <>\n {renderMessagebar(licenseType as string, expiryDate as number, NUMBER_DAYS_WARNING)}\n {children}\n </>\n );\n case EStatus.genericError:\n case EStatus.notFound:\n case EStatus.blocked:\n case EStatus.expired:\n case EStatus.invalid:\n return <LicensePlaceHolder licenseStatus={status} licenseType={licenseType} expiryDate={expiryDate} />;\n default:\n break;\n }\n return <></>;\n }, [licensingResponse, refresh]);\n\n if (isLoading) return null;\n if (error) return <ShowError message={error.message} />;\n\n return (\n <>\n <IdPrefixProvider value=\"news-feed-\">\n <FluentProvider theme={theme} className={styles.root}>\n <ErrorBoundary fallbackRender={fallbackRender}>\n {renderContent()}\n {isOpenRegisterDialog && (\n <RegisterDialog\n licenseStatus={status}\n licenseType={licenseType}\n expiryDate={expiryDate}\n open={isOpenRegisterDialog}\n onDismiss={onDissmiss}\n />\n )}\n </ErrorBoundary>\n </FluentProvider>\n </IdPrefixProvider>\n </>\n );\n};\n"],"names":["ETabsOptions","SUPPORT_EMAIL","EMAIL_BODY_TEMPLATE","EMAIL_BODY_TEMPLATE_REQUEST_LICENSE","Mailto","props","to","from","subject","body","children","Component","as","_props$componentProps","componentProps","mailtoLink","encodeURIComponent","RenderedComponent","handleClick","e","preventDefault","window","open","React","href","onClick","appGlobalStateAtom","atom","theme","webLightTheme","language","strings","stringsLocEn","refresh","useLicenseControlStyles","container","css","_templateObject","_taggedTemplateLiteralLoose","tokens","colorNeutralBackground1","title","_templateObject2","footer","_templateObject3","useUtils","formatString","useCallback","template","args","Array","_len","_key","arguments","replace","match","number","generateSalt","tenantId","appId","inputData","hash","SHA256","toString","LicenseControl","_ref","licenseStatus","onDismiss","licenseType","expiryDate","styles","formatDate","Date","toLocaleDateString","appglobalState","useAtomValue","applicationId","applicationName","userInformation","_useUtils","getMessageAndAction","EStatus","blocked","message","messageStatusBlocked","actionLabel","expired","messageStatusExpired","invalid","messageStatusInvalid","notFound","messageStatusNotFound","genericError","messageStatusGenericError","valid","messageStatusValid","undefined","content","useMemo","generateBodyText","mail","givenName","surname","_content","className","Text","CardFooter","Button","appearance","target","useRenderHeaderStyles","makeStyles","closeButton","marginLeft","position","top","right","zIndex","divider","width","height","backgroundColor","colorNeutralStroke1","marginTop","renderHeaderContent","display","flexDirection","justifyContent","alignItems","renderHeaderHeader","_extends","shorthands","padding","gap","renderHeaderFooter","renderHeaderBody","renderHeaderTitleContainer","renderHeaderTitle","textAlign","textOverflow","wordBreak","renderHeaderDescription","dialogTitleAndDescriptionContainer","paddingLeft","paddingRight","RenderHeader","description","icon","ev","stopPropagation","Dismiss24Regular","Icon","Subtitle1","Caption1","useRenderLabelStyles","labelContainer","iconStyles","item","RenderLabel","label","isRequired","color","colorBrandForeground1","style","colorPaletteRedForeground1","useStyles","cardFooter","TrialLicense","_React$useState","errors","setErrors","onTrialLicenseAdded","appGlobalState","context","_React$useState2","error","setError","_useLicenseManager","useLicenseManager","manifest","id","requestTrialLicense","trialLicenseSchema","z","object","contactFirstName","string","min","contactFirstNameError","contactLastName","contactLastNameError","contactEmail","email","contactEmailError","contactCompany","contactCompanyError","_React$useState3","formData","setFormData","handleInputChange","_e$target","name","value","prev","_extends2","handleSubmit","_asyncToGenerator","_regeneratorRuntime","mark","_callee","validation","fieldErrors","wrap","_callee$","_context","next","safeParse","success","forEach","fieldName","path","t0","console","stop","_x","apply","Body1Strong","trialLicenseTitle","Body1","trialLicenseText","Field","firstName","validationState","validationMessage","Input","onChange","placeholder","firstNamePlaceholder","lastName","lastNamePlaceholder","emailPlaceholder","company","companyPlaceholder","MessageBar","marginBottom","intent","register","cancel","RegisterDialog","_useAtom","useAtom","setAppGlobalState","applicationIcon","_appGlobalState$showA","showApps","useState","selectedValue","setSelectedValue","tabs","defaultTabs","trial","Clock20Regular","license","Key20Regular","push","apps","Apps20Regular","onTabSelect","_event","data","useEffect","statusToTab","_statusToTab","Trial","License","renderPanel","filterTabs","tab","toLocaleLowerCase","FluentProvider","Dialog","modalType","DialogSurface","minHeight","DialogTitle","TabList","selectTabOnFocus","size","filter","map","Tab","key","DialogActions","titleContainer","titleAndIcon","informationPanel","_templateObject4","colorNeutralBackground3","infoRow","_templateObject5","_templateObject6","LicensePlaceHolder","placeHolderText","isOpenLicenseForm","setIsOpenLicenseForm","onDissmiss","messageStatusBlockedShort","details","messageStatusExpiredShort","buyLicense","messageStatusInvalidShort","messageStatusNotFoundShort","requestLicense","messageStatusGenericErrorShort","InformationBar","onAction","MessageBarBody","MessageBarTitle","MessageBarActions","ErrorIcon","xmlns","viewBox","fill","stroke","strokeWidth","d","strokeLinecap","colorNeutralBackground2","borderRadius","borderRadiusMedium","spacingVerticalXL","spacingHorizontalXL","colorNeutralForeground1","fontSize","colorBrandBackground","ShowError","NUMBER_DAYS_WARNING","LicenseProvider","_props$theme","teamsLightTheme","_props$language","isLoading","setIsLoading","licensingResponse","setLicenseResponse","_useUser","useUser","_React$useState4","isOpenRegisterDialog","setIsOpenRegisterDialog","_useUtils2","status","checkAndUpdateLicensing","root","stringsLoc","result","sent","Error","fallbackRender","_ref3","onMessageBarAction","_callee2","_callee2$","_context2","renderMessagebar","warningDays","expirationDate","today","formatedExpiredDate","dayDiff","differenceInDays","messageLicenseWarning","renderContent","IdPrefixProvider","ErrorBoundary"],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ export interface IStrings {
2
+ tenantInformation: string;
3
+ licensingType: string;
4
+ startDate: string;
5
+ endDate: string;
6
+ licenseKey: string;
7
+ submit: string;
8
+ cancel: string;
9
+ tenantId: string;
10
+ tenantUrl: string;
11
+ applicationId: string;
12
+ selectDate: string;
13
+ startDateAfterEndDate: string;
14
+ placeHolderTitle: string;
15
+ placeHolderText: string;
16
+ placeHolderTrialButton: string;
17
+ placeHolderBuyButton: string;
18
+ placeHolderRegistryButton: string;
19
+ companyName: string;
20
+ contactFirstName: string;
21
+ contactLastName: string;
22
+ contactEmail: string;
23
+ register: string;
24
+ messageLicenseWarning: string;
25
+ trial: string;
26
+ license: string;
27
+ apps: string;
28
+ contactFirstNameError: string;
29
+ contactLastNameError: string;
30
+ contactEmailError: string;
31
+ contactCompanyError: string;
32
+ trialLicenseTitle: string;
33
+ trialLicenseText: string;
34
+ firstName: string;
35
+ firstNamePlaceholder: string;
36
+ lastName: string;
37
+ lastNamePlaceholder: string;
38
+ email: string;
39
+ emailPlaceholder: string;
40
+ company: string;
41
+ companyPlaceholder: string;
42
+ messageStatusBlocked: string;
43
+ messageStatusExpired: string;
44
+ messageStatusInvalid: string;
45
+ messageStatusNotFound: string;
46
+ messageStatusGenericError: string;
47
+ messageStatusValid: string;
48
+ messageStatusBlockedShort: string;
49
+ messageStatusExpiredShort: string;
50
+ messageStatusInvalidShort: string;
51
+ messageStatusNotFoundShort: string;
52
+ messageStatusGenericErrorShort: string;
53
+ details: string;
54
+ buyLicense: string;
55
+ requestLicense: string;
56
+ }
@@ -0,0 +1,61 @@
1
+ {
2
+ "openDialog": "Open campaign dialog",
3
+ "deleteCampaign": "Delete this campaign?",
4
+ "tenantInformation": "Tenant Information",
5
+ "licensingType": "Licensing Type",
6
+ "startDate": "Start Date",
7
+ "endDate": "End Date",
8
+ "licenseKey": "License Key",
9
+ "generate": "Generate",
10
+ "cancel": "Cancel",
11
+ "tenantId": "Tenant Id",
12
+ "tenantUrl": "Tenant Url",
13
+ "applicationId": "Application Id",
14
+ "dateError": "End date must be after start date.",
15
+ "submit": "Generate",
16
+ "placeHolderTitle": "Try or Buy Application",
17
+ "placeHolderText": "To use this application, you need to buy a license. Please click on the button below to register and buy a license, or get 'Trial' license to try the application for free.",
18
+ "placeHolderTrialButton": "Try",
19
+ "placeHolderBuyButton": "Buy",
20
+ "placeHolderRegistryButton": "Buy",
21
+ "companyName": "Company Name",
22
+ "contactFirstName": "Contact First Name",
23
+ "contactLastName": "Contact Last Name",
24
+ "contactEmail": "Contact Email",
25
+ "register": "Register",
26
+ "messageLicenseWarning": "The License {0} will expire in {1} day(s) (expires on {2});",
27
+ "trial": "Trial",
28
+ "license": "License",
29
+ "apps": "Apps",
30
+ "contactFirstNameError": "First name is required",
31
+ "contactLastNameError": "Last name is required",
32
+
33
+ "contactEmailError": "format Email is invalid",
34
+ "companyNameError": "Company name is required",
35
+ "trialLicenseTitle": "Register for a trial license",
36
+ "trialLicenseText": "To use this application, you need to register for a trial license. Please fill in the form below to get a trial license.",
37
+ "firstName": "First Name",
38
+ "firstnamePlaceholder": "Enter your first name",
39
+ "lastName": "Last Name",
40
+ "lastnamePlaceholder": "Enter your last name",
41
+ "email": "Email",
42
+ "emailPlaceholder": "Enter your email",
43
+ "company": "Company",
44
+ "companyPlaceholder": "Enter your company",
45
+ "messageStatusBlocked": "Your {0} license has been blocked. Please contact support for assistance.",
46
+ "messageStatusExpired": "Your {0} license has expired at {1}. Please renew it to continue using the application.",
47
+ "messageStatusInvalid": "Your {0} license is invalid. This could be due to incorrect information or an issue with the license itself. Please contact support to request a new license.",
48
+ "messageStatusNotFound": "No valid license was found. This could be because you haven't yet requested. Please contact our support team to request a license and gain access to all features.",
49
+ "messageStatusGenericError": "An error occurred while validating your {0} license. Please contact support for assistance",
50
+ "messageStatusValid": "Your {0} license is valid until {1}. You have full access to the application.",
51
+ "messageStatusBlockedShort": "Your {0} license has been blocked.",
52
+ "messageStatusExpiredShort": "Your {0} license has expired at {1}",
53
+ "messageStatusInvalidShort": "Your {0} license is invalid.",
54
+ "messageStatusNotFoundShort": "No valid license was found, Start a trial or request a license for full access.",
55
+ "messageStatusGenericErrorShort": "An error occurred while validating your {0} license." ,
56
+
57
+ "details": "Details",
58
+ "buyLicense": "Buy License",
59
+ "requestLicense": "Request License"
60
+
61
+ }
@@ -0,0 +1,7 @@
1
+ export declare enum EAppHostName {
2
+ SharePoint = "SharePoint",
3
+ Teams = "Teams",
4
+ TeamsModern = "TeamsModern",
5
+ Outlook = "Outlook",
6
+ Office = "Office"
7
+ }
@@ -0,0 +1,5 @@
1
+ export declare enum ETabsOptions {
2
+ Trial = "trial",
3
+ License = "license",
4
+ Apps = "apps"
5
+ }
@@ -0,0 +1,8 @@
1
+ import { User } from '@microsoft/microsoft-graph-types';
2
+ import { ILicenseProviderProps } from '../components/licenseProvider/ILicenseProviderProps';
3
+ import { IStrings } from '../loc/IStrings';
4
+ export interface IGlobalState extends ILicenseProviderProps {
5
+ strings: IStrings;
6
+ userInformation: User;
7
+ refresh: boolean;
8
+ }
@@ -0,0 +1,47 @@
1
+ import { z } from 'zod';
2
+ export declare const PricePlanSchema: z.ZodObject<{
3
+ id: z.ZodString;
4
+ name: z.ZodString;
5
+ description: z.ZodString;
6
+ price: z.ZodNumber;
7
+ currency: z.ZodString;
8
+ features: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
9
+ }, "strip", z.ZodTypeAny, {
10
+ id: string;
11
+ name: string;
12
+ description: string;
13
+ price: number;
14
+ currency: string;
15
+ features?: string[] | undefined;
16
+ }, {
17
+ id: string;
18
+ name: string;
19
+ description: string;
20
+ price: number;
21
+ currency: string;
22
+ features?: string[] | undefined;
23
+ }>;
24
+ export declare const PricePlanCollection: z.ZodArray<z.ZodObject<{
25
+ id: z.ZodString;
26
+ name: z.ZodString;
27
+ description: z.ZodString;
28
+ price: z.ZodNumber;
29
+ currency: z.ZodString;
30
+ features: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
31
+ }, "strip", z.ZodTypeAny, {
32
+ id: string;
33
+ name: string;
34
+ description: string;
35
+ price: number;
36
+ currency: string;
37
+ features?: string[] | undefined;
38
+ }, {
39
+ id: string;
40
+ name: string;
41
+ description: string;
42
+ price: number;
43
+ currency: string;
44
+ features?: string[] | undefined;
45
+ }>, "many">;
46
+ export declare type PricePlan = z.infer<typeof PricePlanSchema>;
47
+ export declare type PricePlanCollection = z.infer<typeof PricePlanCollection>;
package/package.json ADDED
@@ -0,0 +1,79 @@
1
+ {
2
+ "version": "1.0.0",
3
+ "license": "MIT",
4
+ "main": "dist/index.js",
5
+ "typings": "dist/index.d.ts",
6
+ "files": [
7
+ "dist"
8
+
9
+ ],
10
+ "engines": {
11
+ "node": ">=10"
12
+ },
13
+ "scripts": {
14
+ "start": "tsdx watch",
15
+ "build": "tsdx build && cpx src/loc/*.json dist/loc",
16
+ "postbuild": "cpx src/loc/*.json dist/loc",
17
+ "test": "tsdx test --passWithNoTests",
18
+ "lint": "tsdx lint",
19
+ "prepare": "tsdx build && cpx src/loc/*.json dist/loc",
20
+ "size": "size-limit",
21
+ "analyze": "size-limit --why"
22
+ },
23
+ "husky": {
24
+ "hooks": {
25
+ "pre-commit": "tsdx lint"
26
+ }
27
+ },
28
+ "prettier": {
29
+ "printWidth": 80,
30
+ "semi": true,
31
+ "singleQuote": true,
32
+ "trailingComma": "es5"
33
+ },
34
+ "name": "@spteck/license-manager-react-components",
35
+ "author": "João Mendes",
36
+ "module": "dist/license-manager-react-components.esm.js",
37
+ "size-limit": [
38
+ {
39
+ "path": "dist/license-manager-react-components.cjs.production.min.js",
40
+ "limit": "200 KB"
41
+ },
42
+ {
43
+ "path": "dist/license-manager-react-components.esm.js",
44
+ "limit": "200 KB"
45
+ }
46
+ ],
47
+ "devDependencies": {
48
+ "@size-limit/preset-small-lib": "^11.1.6",
49
+ "@types/crypto-js": "^4.2.2",
50
+ "@types/react": "17.0.45",
51
+ "@types/react-dom": "17.0.17",
52
+ "cpx": "^1.5.0",
53
+ "husky": "^9.1.6",
54
+ "react": "^17.0.2",
55
+ "react-dom": "^17.0.2",
56
+ "rollup-plugin-copy": "^3.5.0",
57
+ "size-limit": "^11.1.6",
58
+ "tsdx": "^0.14.1",
59
+ "tslib": "^2.7.0",
60
+ "typescript": "^5.6.3"
61
+ },
62
+ "dependencies": {
63
+ "@emotion/css": "^11.13.4",
64
+ "@emotion/react": "^11.13.3",
65
+ "@fluentui/react-components": "^9.55.0",
66
+ "@fluentui/react-datepicker-compat": "^0.4.52",
67
+ "@fluentui/react-migration-v8-v9": "^9.6.35",
68
+ "@iconify/react": "^5.0.2",
69
+ "@spteck/react-hooks-library": "^1.0.1",
70
+ "@size-limit/esbuild-why": "^11.1.6",
71
+ "axios": "^1.7.7",
72
+ "crypto-js": "^4.2.0",
73
+ "currency.js": "^2.0.4",
74
+ "jotai": "^2.10.0",
75
+ "react-error-boundary": "^4.1.2",
76
+ "react-intl": "^6.8.0",
77
+ "zod": "^3.23.8"
78
+ }
79
+ }