@opexa/portal-components 0.0.460 → 0.0.461

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 (70) hide show
  1. package/dist/components/Banner/Banner.client.d.ts +12 -0
  2. package/dist/components/Banner/Banner.client.js +49 -0
  3. package/dist/components/PortalProvider/CXDTokenObserver.js +11 -11
  4. package/dist/components/SignIn/utils.d.ts +8 -0
  5. package/dist/components/SignIn/utils.js +26 -0
  6. package/dist/components/TopProgress/TopProgressBar.d.ts +6 -0
  7. package/dist/components/TopProgress/TopProgressBar.js +145 -0
  8. package/dist/components/TopProgress/index.d.ts +1 -0
  9. package/dist/components/TopProgress/index.js +1 -0
  10. package/dist/constants/Branches.d.ts +2 -0
  11. package/dist/constants/Branches.js +42 -0
  12. package/dist/third-parties/FacebookPixel/FacebookPixel.d.ts +4 -0
  13. package/dist/third-parties/FacebookPixel/FacebookPixel.js +4 -0
  14. package/dist/third-parties/FacebookPixel/api.d.ts +0 -0
  15. package/dist/third-parties/FacebookPixel/api.js +1 -0
  16. package/dist/third-parties/FacebookPixel/index.d.ts +1 -0
  17. package/dist/third-parties/FacebookPixel/index.js +1 -0
  18. package/dist/third-parties/GoogleRecaptcha/GoogleRecaptcha.d.ts +4 -0
  19. package/dist/third-parties/GoogleRecaptcha/GoogleRecaptcha.js +4 -0
  20. package/dist/third-parties/GoogleRecaptcha/api.d.ts +0 -0
  21. package/dist/third-parties/GoogleRecaptcha/api.js +1 -0
  22. package/dist/third-parties/GoogleRecaptcha/index.d.ts +1 -0
  23. package/dist/third-parties/GoogleRecaptcha/index.js +1 -0
  24. package/dist/third-parties/index.d.ts +2 -0
  25. package/dist/third-parties/index.js +2 -0
  26. package/dist/ui/AlertDialog/AlertDialog.d.ts +121 -121
  27. package/dist/ui/AlertDialog/alertDialog.recipe.d.ts +11 -11
  28. package/dist/ui/Badge/Badge.d.ts +12 -12
  29. package/dist/ui/Badge/badge.anatomy.d.ts +1 -1
  30. package/dist/ui/Badge/badge.recipe.d.ts +3 -3
  31. package/dist/ui/Carousel/Carousel.d.ts +45 -45
  32. package/dist/ui/Carousel/carousel.recipe.d.ts +5 -5
  33. package/dist/ui/Checkbox/Checkbox.d.ts +23 -23
  34. package/dist/ui/Checkbox/checkbox.recipe.d.ts +3 -3
  35. package/dist/ui/Clipboard/Clipboard.d.ts +18 -18
  36. package/dist/ui/Clipboard/clipboard.recipe.d.ts +3 -3
  37. package/dist/ui/Combobox/Combobox.d.ts +42 -42
  38. package/dist/ui/Combobox/combobox.recipe.d.ts +3 -3
  39. package/dist/ui/DatePicker/DatePicker.d.ts +72 -72
  40. package/dist/ui/DatePicker/datePicker.recipe.d.ts +3 -3
  41. package/dist/ui/Dialog/Dialog.d.ts +33 -33
  42. package/dist/ui/Dialog/dialog.recipe.d.ts +3 -3
  43. package/dist/ui/Drawer/Drawer.d.ts +33 -33
  44. package/dist/ui/Drawer/drawer.recipe.d.ts +3 -3
  45. package/dist/ui/Field/Field.d.ts +21 -21
  46. package/dist/ui/Field/field.recipe.d.ts +3 -3
  47. package/dist/ui/Menu/Menu.d.ts +252 -252
  48. package/dist/ui/Menu/menu.recipe.d.ts +14 -14
  49. package/dist/ui/NumberInput/NumberInput.d.ts +24 -24
  50. package/dist/ui/NumberInput/numberInput.recipe.d.ts +3 -3
  51. package/dist/ui/PasswordInput/PasswordInput.d.ts +18 -18
  52. package/dist/ui/PasswordInput/passwordInput.recipe.d.ts +3 -3
  53. package/dist/ui/PinInput/PinInput.d.ts +12 -12
  54. package/dist/ui/PinInput/pinInput.recipe.d.ts +3 -3
  55. package/dist/ui/Popover/Popover.d.ts +55 -55
  56. package/dist/ui/Popover/popover.recipe.d.ts +5 -5
  57. package/dist/ui/Progress/Progress.d.ts +27 -27
  58. package/dist/ui/Progress/progress.recipe.d.ts +3 -3
  59. package/dist/ui/SegmentGroup/SegmentGroup.d.ts +18 -18
  60. package/dist/ui/SegmentGroup/segmentGroup.recipe.d.ts +3 -3
  61. package/dist/ui/Select/Select.d.ts +45 -45
  62. package/dist/ui/Select/select.recipe.d.ts +3 -3
  63. package/dist/ui/Table/Table.d.ts +21 -21
  64. package/dist/ui/Table/table.anatomy.d.ts +1 -1
  65. package/dist/ui/Table/table.recipe.d.ts +3 -3
  66. package/package.json +1 -1
  67. package/dist/components/AccountInfo/GoogleDisconnect.d.ts +0 -7
  68. package/dist/components/AccountInfo/GoogleDisconnect.js +0 -11
  69. package/dist/icons/LinkBrokenIcon.d.ts +0 -2
  70. package/dist/icons/LinkBrokenIcon.js +0 -4
@@ -0,0 +1,12 @@
1
+ import type { ImageProps } from 'next/image';
2
+ export interface BannerEntry {
3
+ src: ImageProps['src'];
4
+ redirectUrl?: string;
5
+ }
6
+ export interface BannerProps {
7
+ banners: BannerEntry[];
8
+ imageWidth?: number | [mobile: number, desktop: number];
9
+ imageHeight?: number | [mobile: number, desktop: number];
10
+ className?: string;
11
+ }
12
+ export declare function Banner__client(props: BannerProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,49 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import emblaCarouselAutoplay from 'embla-carousel-autoplay';
4
+ import useEmblaCarousel, {} from 'embla-carousel-react';
5
+ import isMobile from 'is-mobile';
6
+ import Image from 'next/image';
7
+ import Link from 'next/link';
8
+ import { Fragment, useEffect, useState } from 'react';
9
+ import { twMerge } from 'tailwind-merge';
10
+ import { dataAttr } from '../../utils/dataAttr.js';
11
+ export function Banner__client(props) {
12
+ const [emblaRef, emblaApi] = useEmblaCarousel({
13
+ loop: true,
14
+ align: 'start',
15
+ }, [
16
+ emblaCarouselAutoplay({
17
+ playOnInit: true,
18
+ delay: 5000,
19
+ }),
20
+ ]);
21
+ const [currentIndex, setCurrentIndex] = useState(0);
22
+ useEffect(() => {
23
+ function handler(detail) {
24
+ setCurrentIndex(detail?.selectedScrollSnap() ?? 0);
25
+ }
26
+ emblaApi?.on('scroll', handler);
27
+ emblaApi?.on('init', handler);
28
+ return () => {
29
+ emblaApi?.on('init', handler);
30
+ emblaApi?.off('scroll', handler);
31
+ };
32
+ }, [emblaApi]);
33
+ const imageWidth = !props.imageWidth
34
+ ? [400, 1200]
35
+ : Array.isArray(props.imageWidth)
36
+ ? props.imageWidth
37
+ : [props.imageWidth, props.imageWidth];
38
+ const imageHeight = !props.imageHeight
39
+ ? [225, 300]
40
+ : Array.isArray(props.imageHeight)
41
+ ? props.imageHeight
42
+ : [props.imageHeight, props.imageHeight];
43
+ return (_jsxs("div", { className: twMerge('relative', props.className), children: [_jsx("div", { ref: emblaRef, className: "overflow-hidden", children: _jsx("div", { className: "flex gap-2", children: props.banners.map((banner, index) => {
44
+ const img = (_jsx(Image, { src: banner.src, alt: "", width: isMobile() ? imageWidth[0] : imageWidth[1], height: isMobile() ? imageHeight[0] : imageHeight[1], className: "block h-auto w-full", priority: index === 0 }));
45
+ return (_jsx(Fragment, { children: !banner.redirectUrl ? (_jsx("div", { className: "w-full shrink-0", children: img })) : (_jsx(Link, { href: banner.redirectUrl, className: "block w-full shrink-0", "aria-label": `Open ${banner.redirectUrl}`, children: img })) }, index));
46
+ }) }) }), _jsx("div", { className: "absolute bottom-lg left-1/2 flex w-fit -translate-x-1/2 gap-2", children: props.banners.map((_, index) => (_jsx("button", { type: "button", className: "ui-active:bg-brand-500 bg-gray-300 size-3 shrink-0 rounded-full border border-white transition-all duration-300 ui-active:w-9", onClick: () => {
47
+ emblaApi?.scrollTo(index);
48
+ }, "aria-label": `Go to slide ${index + 1}`, "data-active": dataAttr(index === currentIndex) }, index))) })] }));
49
+ }
@@ -1,30 +1,30 @@
1
1
  'use client';
2
2
  import { addHours } from 'date-fns';
3
3
  import { clamp } from 'lodash-es';
4
- import { useSearchParams } from 'next/navigation';
5
4
  import { useLocalStorage, useTimeout } from 'usehooks-ts';
6
5
  import { useAccountQuery } from '../../client/hooks/useAccountQuery.js';
7
6
  export function CXDTokenObserver() {
8
- const searchParams = useSearchParams();
9
- const cxdToken = searchParams.get('cxd');
10
- const accountQuery = useAccountQuery();
11
- const account = accountQuery.data;
12
- const [cxd, setCxd, removeCxd] = useLocalStorage('WebPortalCellxpertCxd', null);
7
+ const { data: account } = useAccountQuery();
8
+ const accountCxd = {
9
+ cxd: account?.cellxpertDetails?.cxd,
10
+ };
11
+ const [cxd, setCxd, removeCxd] = useLocalStorage('cxd', null);
13
12
  const now = new Date();
14
- const shouldTimeoutRun = cxdToken && account;
15
13
  const removeCxdUntilInMs = cxd?.timestamp
16
14
  ? clamp(cxd.timestamp - now.getTime(), 0, Infinity)
17
15
  : 0;
18
16
  useTimeout(() => {
19
- const isSame = cxd?.cxd === cxdToken;
17
+ const isSame = cxd?.cxd === accountCxd.cxd;
20
18
  if (!isSame) {
21
19
  const extendedTimestamp = addHours(new Date(), 6).getTime();
22
20
  setCxd({
23
- cxd: cxdToken,
21
+ cxd: accountCxd.cxd,
24
22
  timestamp: extendedTimestamp,
25
23
  });
26
24
  }
27
- }, shouldTimeoutRun ? 100 : null);
28
- useTimeout(() => removeCxd(), shouldTimeoutRun ? removeCxdUntilInMs : null);
25
+ }, account ? 100 : null);
26
+ useTimeout(() => {
27
+ removeCxd();
28
+ }, account ? removeCxdUntilInMs : null);
29
29
  return null;
30
30
  }
@@ -0,0 +1,8 @@
1
+ type Options = {
2
+ accountName?: string;
3
+ siteName?: string;
4
+ signInOptions?: 'MOBILE_NUMBER' | 'NAME_AND_PASSWORD';
5
+ };
6
+ export type ErrorCode = 'MEMBER_ACCOUNT_BLACKLISTED' | 'MEMBER_ACCOUNT_SUSPENDED' | 'INVALID_RECAPTCHA_RESPONSE' | 'MEMBER_NOT_FOUND' | 'RATE_LIMIT_REACH' | 'NOT_READY_TO_SEND_VERIFICATION_ERROR' | 'Forbidden';
7
+ export declare function getFriendlyErrorMessage(code: ErrorCode, options?: Options): string;
8
+ export {};
@@ -0,0 +1,26 @@
1
+ export function getFriendlyErrorMessage(code, options) {
2
+ const accountName = options?.accountName ?? '';
3
+ const siteName = options?.siteName ?? '';
4
+ const signInOptions = options?.signInOptions ?? 'NAME_AND_PASSWORD';
5
+ switch (code) {
6
+ case 'MEMBER_ACCOUNT_BLACKLISTED':
7
+ return `Your account ${accountName} has been blacklisted due to a serious violation of our policies. For more information or to appeal, please contact the ${siteName} Chat Support team.`;
8
+ case 'MEMBER_ACCOUNT_SUSPENDED':
9
+ return `Your account ${accountName} has been temporarily suspended. Please reach out to the ${siteName} Chat Support team to learn more and get help with resolving the issue.`;
10
+ case 'INVALID_RECAPTCHA_RESPONSE':
11
+ return 'Invalid reCAPTCHA response';
12
+ case 'MEMBER_NOT_FOUND':
13
+ return 'Account not found. Please check your username and try again.';
14
+ case 'RATE_LIMIT_REACH':
15
+ return 'Rate limit exceeded';
16
+ case 'NOT_READY_TO_SEND_VERIFICATION_ERROR':
17
+ return 'Your account is not ready to send verification requests. Please try again later.';
18
+ case 'Forbidden':
19
+ if (signInOptions === 'MOBILE_NUMBER') {
20
+ return 'Invalid verification code. Please check the code and try again.';
21
+ }
22
+ return 'Invalid username or password, please try again.';
23
+ default:
24
+ return 'Something went wrong. Please try again later.';
25
+ }
26
+ }
@@ -0,0 +1,6 @@
1
+ type TopProgressBarPreset = 'Sunset' | 'Poppy' | 'Rosebud' | 'Sunshine' | 'Gold' | 'Twilight' | 'Powder' | 'Holly' | 'Northern Lights' | 'Raw Green' | 'Lime' | 'Nemesia' | 'Snowflake' | 'Blue Bird' | 'Blueprint' | 'Salvia' | 'Heartsease' | 'Amaranthus' | 'Candy' | 'Verbena';
2
+ export declare const TopProgressBar: ({ preset, customPreset, }: {
3
+ preset?: TopProgressBarPreset;
4
+ customPreset?: string;
5
+ }) => import("react/jsx-runtime").JSX.Element;
6
+ export {};
@@ -0,0 +1,145 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { usePathname, useSearchParams } from 'next/navigation';
4
+ import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
5
+ import { twMerge } from 'tailwind-merge';
6
+ // CSS gradient presets (inline styles), approximate Tailwind palette colors
7
+ // --> check presets here <3 https://www.creative-tim.com/twcomponents/gradient-generator
8
+ const PRESET_BG = {
9
+ Sunset: 'linear-gradient(90deg, #ef4444 0%, #f97316 100%)',
10
+ Poppy: 'linear-gradient(90deg, #fb7185 0%, #ef4444 100%)',
11
+ Rosebud: 'linear-gradient(90deg, #ec4899 0%, #f43f5e 100%)',
12
+ Sunshine: 'linear-gradient(90deg, #fde68a 0%, #facc15 100%)',
13
+ Gold: 'linear-gradient(90deg, #fde68a 0%, #eab308 100%)',
14
+ Twilight: 'linear-gradient(90deg, #f59e0b 0%, #ec4899 100%)',
15
+ Powder: 'linear-gradient(90deg, #ddd6fe 0%, #fbcfe8 100%)',
16
+ Holly: 'linear-gradient(90deg, #bfdbfe 0%, #a5f3fc 100%)',
17
+ 'Northern Lights': 'linear-gradient(90deg, #99f6e4 0%, #14b8a6 100%)',
18
+ 'Raw Green': 'linear-gradient(90deg, #a3e635 0%, #84cc16 100%)',
19
+ Lime: 'linear-gradient(90deg, #2dd4bf 0%, #fef08a 100%)',
20
+ Nemesia: 'linear-gradient(90deg, #34d399 0%, #22d3ee 100%)',
21
+ Snowflake: 'linear-gradient(90deg, #d946ef 0%, #22d3ee 100%)',
22
+ 'Blue Bird': 'linear-gradient(90deg, #06b6d4 0%, #3b82f6 100%)',
23
+ Blueprint: 'linear-gradient(90deg, #6366f1 0%, #3b82f6 100%)',
24
+ Salvia: 'linear-gradient(90deg, #2563eb 0%, #7c3aed 100%)',
25
+ Heartsease: 'linear-gradient(90deg, #c026d3 0%, #db2777 100%)',
26
+ Amaranthus: 'linear-gradient(90deg, #c026d3 0%, #9333ea 100%)',
27
+ Candy: 'linear-gradient(90deg, #d946ef 0%, #ec4899 100%)',
28
+ Verbena: 'linear-gradient(90deg, #8b5cf6 0%, #a855f7 100%)',
29
+ };
30
+ export const TopProgressBar = ({ preset = 'Gold', customPreset, }) => {
31
+ const [progress, setProgress] = useState(0);
32
+ const [visible, setVisible] = useState(false);
33
+ const incrementTimerRef = useRef(null);
34
+ const hideTimerRef = useRef(null);
35
+ const pathname = usePathname();
36
+ const searchParams = useSearchParams();
37
+ const currentUrl = useMemo(() => {
38
+ const sp = searchParams?.toString();
39
+ return `${pathname ?? ''}${sp ? `?${sp}` : ''}`;
40
+ }, [pathname, searchParams]);
41
+ const clearTimers = useCallback(() => {
42
+ if (incrementTimerRef.current) {
43
+ clearInterval(incrementTimerRef.current);
44
+ incrementTimerRef.current = null;
45
+ }
46
+ if (hideTimerRef.current) {
47
+ clearTimeout(hideTimerRef.current);
48
+ hideTimerRef.current = null;
49
+ }
50
+ }, []);
51
+ const startProgress = useCallback(() => {
52
+ clearTimers();
53
+ setVisible(true);
54
+ setProgress(8);
55
+ incrementTimerRef.current = window.setInterval(() => {
56
+ setProgress((prev) => {
57
+ if (prev >= 90)
58
+ return prev;
59
+ const delta = Math.max(1, Math.min(10, 10 * Math.random()));
60
+ return Math.min(prev + delta, 90);
61
+ });
62
+ }, 250);
63
+ }, [clearTimers]);
64
+ const finishProgress = useCallback(() => {
65
+ setProgress(100);
66
+ if (incrementTimerRef.current) {
67
+ clearInterval(incrementTimerRef.current);
68
+ incrementTimerRef.current = null;
69
+ }
70
+ if (hideTimerRef.current) {
71
+ window.clearTimeout(hideTimerRef.current);
72
+ }
73
+ hideTimerRef.current = window.setTimeout(() => {
74
+ setVisible(false);
75
+ // Reset for next time after fade-out transition
76
+ hideTimerRef.current = window.setTimeout(() => setProgress(0), 200);
77
+ }, 150);
78
+ }, []);
79
+ // Trigger progress completion when URL changes
80
+ const previousUrl = useRef('');
81
+ useEffect(() => {
82
+ if (previousUrl.current !== currentUrl) {
83
+ previousUrl.current = currentUrl;
84
+ finishProgress();
85
+ }
86
+ }, [currentUrl, finishProgress]);
87
+ useEffect(() => {
88
+ const handleAnchorClick = (event) => {
89
+ const target = event.currentTarget;
90
+ if (!target)
91
+ return;
92
+ const href = target.getAttribute('href');
93
+ if (!href)
94
+ return;
95
+ const targetUrl = new URL(href, window.location.origin);
96
+ const current = new URL(window.location.href);
97
+ const isDifferent = targetUrl.origin !== current.origin ||
98
+ targetUrl.pathname !== current.pathname ||
99
+ targetUrl.search !== current.search;
100
+ if (isDifferent) {
101
+ startProgress();
102
+ }
103
+ };
104
+ const attachListeners = () => {
105
+ const anchors = document.querySelectorAll('a[href]');
106
+ anchors.forEach((a) => {
107
+ a.removeEventListener('click', handleAnchorClick);
108
+ a.addEventListener('click', handleAnchorClick);
109
+ });
110
+ };
111
+ const observer = new MutationObserver(() => attachListeners());
112
+ observer.observe(document, { childList: true, subtree: true });
113
+ attachListeners();
114
+ const originalPush = window.history.pushState;
115
+ const originalReplace = window.history.replaceState;
116
+ window.history.pushState = new Proxy(originalPush, {
117
+ apply: (target, thisArg, argArray) => {
118
+ const result = Reflect.apply(target, thisArg, argArray);
119
+ requestAnimationFrame(() => finishProgress());
120
+ return result;
121
+ },
122
+ });
123
+ window.history.replaceState = new Proxy(originalReplace, {
124
+ apply: (target, thisArg, argArray) => {
125
+ const result = Reflect.apply(target, thisArg, argArray);
126
+ requestAnimationFrame(() => finishProgress());
127
+ return result;
128
+ },
129
+ });
130
+ // Cleanup
131
+ return () => {
132
+ observer.disconnect();
133
+ const anchors = document.querySelectorAll('a[href]');
134
+ anchors.forEach((a) => a.removeEventListener('click', handleAnchorClick));
135
+ window.history.pushState = originalPush;
136
+ window.history.replaceState = originalReplace;
137
+ clearTimers();
138
+ };
139
+ }, [clearTimers, finishProgress, startProgress]);
140
+ return (_jsx("div", { "aria-hidden": true, className: "pointer-events-none fixed top-0 right-0 left-0 z-[9999]", children: _jsx("div", { className: twMerge('h-[3px] transition-[width,opacity] duration-200 ease-out', visible ? 'opacity-100' : 'opacity-0'), style: {
141
+ width: `${progress}%`,
142
+ background: customPreset ?? PRESET_BG[preset],
143
+ boxShadow: '0 0 10px rgba(255, 255, 255, 0.6)',
144
+ } }) }));
145
+ };
@@ -0,0 +1 @@
1
+ export * from './TopProgressBar';
@@ -0,0 +1 @@
1
+ export * from './TopProgressBar.js';
@@ -0,0 +1,2 @@
1
+ import type { Branch } from '../types';
2
+ export declare const BRANCHES: Branch[];
@@ -0,0 +1,42 @@
1
+ export const BRANCHES = [
2
+ {
3
+ code: 'BRCAL',
4
+ name: 'Bingo Republic 2nd floor Primark Center Deparo St., Caloocan City',
5
+ },
6
+ {
7
+ code: 'BRNAG',
8
+ name: 'Bingo Republic 3rd floor Robinsons Mall, Naga City, Camarines Sur',
9
+ },
10
+ {
11
+ code: 'BRANT',
12
+ name: 'Bingo Republic 2nd floor Robinsons Mall, San Vicente,Antique',
13
+ },
14
+ {
15
+ code: 'BRCLA',
16
+ name: 'Clark',
17
+ },
18
+ {
19
+ code: 'BRLAG',
20
+ name: 'Laguna',
21
+ },
22
+ {
23
+ code: 'BREAS',
24
+ name: 'Eastwood City, Quezon City',
25
+ },
26
+ {
27
+ code: 'BRMAR',
28
+ name: 'Bingo ng Bayan 4th floor Marikina Public Market, Marikina City',
29
+ },
30
+ {
31
+ code: 'BRILO',
32
+ name: 'Iloilo',
33
+ },
34
+ {
35
+ code: 'BRFIM',
36
+ name: 'Fisher Mall,Quezon City',
37
+ },
38
+ {
39
+ code: 'BRCAC',
40
+ name: 'Villa Caceres Hotel, Naga City,Camsur',
41
+ },
42
+ ];
@@ -0,0 +1,4 @@
1
+ export interface FacebookPixelProps {
2
+ fbId: string;
3
+ }
4
+ export declare function FacebookPixel(props: FacebookPixelProps): null;
@@ -0,0 +1,4 @@
1
+ export function FacebookPixel(props) {
2
+ console.log(props);
3
+ return null;
4
+ }
File without changes
@@ -0,0 +1 @@
1
+ "use strict";
@@ -0,0 +1 @@
1
+ export * from './FacebookPixel';
@@ -0,0 +1 @@
1
+ export * from './FacebookPixel.js';
@@ -0,0 +1,4 @@
1
+ export interface GoogleRecaptchaProps {
2
+ siteKey: string;
3
+ }
4
+ export declare function GoogleRecaptcha(props: GoogleRecaptchaProps): null;
@@ -0,0 +1,4 @@
1
+ export function GoogleRecaptcha(props) {
2
+ console.log(props);
3
+ return null;
4
+ }
File without changes
@@ -0,0 +1 @@
1
+ "use strict";
@@ -0,0 +1 @@
1
+ export * from './GoogleRecaptcha';
@@ -0,0 +1 @@
1
+ export * from './GoogleRecaptcha.js';
@@ -0,0 +1,2 @@
1
+ export * from './FacebookPixel';
2
+ export * from './GoogleRecaptcha';
@@ -0,0 +1,2 @@
1
+ export * from './FacebookPixel/index.js';
2
+ export * from './GoogleRecaptcha/index.js';