@designbasekorea/figma-ui 0.6.3 → 0.6.6
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/README.md +1 -1
- package/dist/index.css +1 -1
- package/dist/index.css.map +1 -1
- package/dist/index.d.ts +115 -14
- package/dist/index.esm.css +1 -1
- package/dist/index.esm.css.map +1 -1
- package/dist/index.esm.js +427 -132
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +978 -147
- package/dist/index.js.map +1 -1
- package/package.json +26 -19
package/dist/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var React = require('react');
|
|
4
|
+
var react = require('@designbasekorea/ui-wc/react');
|
|
4
5
|
var icons = require('@designbasekorea/icons');
|
|
5
|
-
var ui = require('@designbasekorea/ui');
|
|
6
6
|
|
|
7
7
|
function r(e){var t,f,n="";if("string"==typeof e||"number"==typeof e)n+=e;else if("object"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=" "),n+=f);}else for(f in e)e[f]&&(n&&(n+=" "),n+=f);return n}function clsx(){for(var e,t,f=0,n="",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=" "),n+=t);return n}
|
|
8
8
|
|
|
@@ -12,10 +12,20 @@ function resolveText(t, input, fallback) {
|
|
|
12
12
|
if (typeof input === 'string') {
|
|
13
13
|
return input;
|
|
14
14
|
}
|
|
15
|
-
|
|
15
|
+
if (t) {
|
|
16
|
+
const translated = t(input.key, input.values);
|
|
17
|
+
if (translated && translated !== input.key) {
|
|
18
|
+
return translated;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return fallback ?? input.key;
|
|
16
22
|
}
|
|
17
23
|
|
|
18
|
-
const
|
|
24
|
+
const DONATION_ICON_NAMES = {
|
|
25
|
+
heart: 'star-filled',
|
|
26
|
+
coffee: 'cart',
|
|
27
|
+
};
|
|
28
|
+
const DonationBadge = ({ donationUrl = 'https://buymeacoffee.com/designbase', text = { key: 'donation.buy_me_a_coffee' }, iconType = 'heart', size = 's', variant = 'tertiary', fullWidth = false, iconOnly = false, disabled = false, showPrompt = false, promptText = { key: 'donation.prompt' }, className, onClick, t }) => {
|
|
19
29
|
const handleClick = () => {
|
|
20
30
|
if (onClick) {
|
|
21
31
|
onClick();
|
|
@@ -24,15 +34,12 @@ const DonationBadge = ({ donationUrl = 'https://buymeacoffee.com/designbase', te
|
|
|
24
34
|
window.open(donationUrl, '_blank', 'noopener,noreferrer');
|
|
25
35
|
}
|
|
26
36
|
};
|
|
27
|
-
const Icon = iconType === 'heart' ? icons.HeartFilledIcon : icons.CoffeeFilledIcon;
|
|
28
37
|
const displayText = resolveText(t, text, 'Buy me a coffee');
|
|
29
38
|
const displayPromptText = resolveText(t, promptText, '도움이 되었다면 커피 한 잔 사주세요!');
|
|
30
39
|
const buttonSize = size;
|
|
31
40
|
return (React.createElement("div", { className: clsx('designbase-figma-donation-badge-container', className) },
|
|
32
|
-
showPrompt && (React.createElement("div", { className: "designbase-figma-donation-badge__prompt" }, displayPromptText)),
|
|
33
|
-
React.createElement(
|
|
34
|
-
'--designbase-figma-donation-badge-icon-color': 'var(--db-brand-primary)'
|
|
35
|
-
} }, displayText)));
|
|
41
|
+
showPrompt && !iconOnly && (React.createElement("div", { className: "designbase-figma-donation-badge__prompt" }, displayPromptText)),
|
|
42
|
+
React.createElement(react.Button, { variant: variant, size: buttonSize, fullWidth: fullWidth, disabled: disabled, onPress: handleClick, iconOnly: iconOnly, startIcon: DONATION_ICON_NAMES[iconType], className: clsx('designbase-figma-donation-badge', `designbase-figma-donation-badge--${iconType}`), "aria-label": displayText }, iconOnly ? undefined : displayText)));
|
|
36
43
|
};
|
|
37
44
|
DonationBadge.displayName = 'DonationBadge';
|
|
38
45
|
|
|
@@ -70,10 +77,11 @@ const FigmaHeader = ({ children, actions = [], searchBar, sticky = true, classNa
|
|
|
70
77
|
'designbase-figma-header--with-search': !!searchBar,
|
|
71
78
|
'designbase-figma-header--with-actions': actions.length > 0,
|
|
72
79
|
}, className);
|
|
80
|
+
const hasToolbar = !!children || actions.length > 0;
|
|
73
81
|
return (React.createElement("header", { className: classes },
|
|
74
|
-
React.createElement("div", { className: "designbase-figma-header__container" },
|
|
82
|
+
hasToolbar && (React.createElement("div", { className: "designbase-figma-header__container" },
|
|
75
83
|
children && (React.createElement("div", { className: "designbase-figma-header__center" }, children)),
|
|
76
|
-
actions.length > 0 && (React.createElement("div", { className: "designbase-figma-header__right" }, actions.map((action, index) => (React.createElement(
|
|
84
|
+
actions.length > 0 && (React.createElement("div", { className: "designbase-figma-header__right" }, actions.map((action, index) => (React.createElement(react.Button, { key: `${action.startIcon}-${index}`, variant: "tertiary", size: "s", iconOnly: true, startIcon: action.startIcon, "aria-label": action.ariaLabel, onPress: action.onPress }))))))),
|
|
77
85
|
searchBar && (React.createElement("div", { className: "designbase-figma-header__search-container" }, searchBar))));
|
|
78
86
|
};
|
|
79
87
|
FigmaHeader.displayName = 'FigmaHeader';
|
|
@@ -82,22 +90,24 @@ const FigmaPageHead = ({ onBack, title, description, actions = [], moreActions =
|
|
|
82
90
|
const classes = clsx('designbase-figma-page-head', className);
|
|
83
91
|
const displayTitle = resolveText(t, title);
|
|
84
92
|
const displayDescription = description ? resolveText(t, description) : undefined;
|
|
85
|
-
const dropdownItems = moreActions.map(action => ({
|
|
93
|
+
const dropdownItems = moreActions.map((action) => ({
|
|
86
94
|
id: action.id,
|
|
87
95
|
label: resolveText(t, action.label),
|
|
88
|
-
onClick: action.onClick
|
|
89
96
|
}));
|
|
97
|
+
const handleDropdownChange = (event) => {
|
|
98
|
+
const actionId = event.detail?.id ?? event.detail?.value;
|
|
99
|
+
const action = moreActions.find((item) => item.id === actionId);
|
|
100
|
+
action?.onClick();
|
|
101
|
+
};
|
|
90
102
|
return (React.createElement("div", { className: classes },
|
|
91
103
|
React.createElement("div", { className: "designbase-figma-page-head__left" },
|
|
92
|
-
React.createElement(
|
|
93
|
-
React.createElement(icons.ChevronLeftIcon, { size: 14 })),
|
|
104
|
+
React.createElement(react.Button, { variant: "tertiary", size: "s", iconOnly: true, startIcon: "chevron-left", onPress: onBack, "aria-label": "\uB4A4\uB85C\uAC00\uAE30" }),
|
|
94
105
|
React.createElement("div", { className: "designbase-figma-page-head__titles" },
|
|
95
106
|
React.createElement("h2", null, displayTitle),
|
|
96
107
|
displayDescription && React.createElement("p", null, displayDescription))),
|
|
97
108
|
React.createElement("div", { className: "designbase-figma-page-head__actions" },
|
|
98
109
|
actions.map((action, index) => (React.createElement(React.Fragment, { key: index }, action))),
|
|
99
|
-
moreActions.length > 0 && (React.createElement(
|
|
100
|
-
React.createElement(icons.MoreHorizontalIcon, { size: 16 })), items: dropdownItems, placement: "bottom-right", size: "s" })))));
|
|
110
|
+
moreActions.length > 0 && (React.createElement(react.Dropdown, { items: dropdownItems, triggerIcon: "more-horizontal", iconOnly: true, triggerVariant: "tertiary", placement: "bottom-right", size: "s", onChange: handleDropdownChange })))));
|
|
101
111
|
};
|
|
102
112
|
FigmaPageHead.displayName = 'FigmaPageHead';
|
|
103
113
|
|
|
@@ -223,12 +233,12 @@ const FigmaSection = ({ title, dataCategory, iconButton, children, marginBottom,
|
|
|
223
233
|
typeof title === 'string' || (typeof title === 'object' && 'key' in title)
|
|
224
234
|
? resolveText(t, title)
|
|
225
235
|
: title,
|
|
226
|
-
badge && (React.createElement(
|
|
236
|
+
badge && (React.createElement(react.Badge, { variant: "secondary", size: "s" }, badge)))),
|
|
227
237
|
React.createElement("div", { className: "designbase-figma-section__controls", onClick: (e) => e.stopPropagation() },
|
|
228
238
|
iconButton,
|
|
229
239
|
collapsible && (React.createElement("span", { className: `designbase-figma-section__collapse-icon ${collapsed ? 'designbase-figma-section__collapse-icon--collapsed' : ''}` },
|
|
230
240
|
React.createElement(icons.ChevronDownIcon, { size: 16 }))),
|
|
231
|
-
onToggle && (React.createElement(
|
|
241
|
+
onToggle && (React.createElement(react.Toggle, { checked: isEnabled, onChange: () => onToggle(dataCategory), size: "s" }))))),
|
|
232
242
|
React.createElement("div", { className: `designbase-figma-section__content ${!isEnabled ? 'designbase-figma-section__content--hidden' : ''}` },
|
|
233
243
|
React.createElement("div", { ref: clipRef, className: "designbase-figma-section__content-clip" },
|
|
234
244
|
React.createElement("div", { ref: innerRef, className: `designbase-figma-section__content-inner ${collapsible && contentHidden ? 'is-collapsed' : ''}` }, children)))));
|
|
@@ -385,7 +395,7 @@ const PaymentBadge = ({ isActive, onClick, isLoading = false, text, t = (key) =>
|
|
|
385
395
|
const getBadgeVariant = () => {
|
|
386
396
|
return isActive ? 'success' : 'secondary';
|
|
387
397
|
};
|
|
388
|
-
return (React.createElement("div", { className: `designbase-figma-payment-badge ${className || ''} ${isActive ? 'active' : 'free'}`, onClick: onClick, style: { cursor: onClick ? 'pointer' : 'default' } }, isLoading ? (React.createElement(
|
|
398
|
+
return (React.createElement("div", { className: `designbase-figma-payment-badge ${className || ''} ${isActive ? 'active' : 'free'}`, onClick: onClick, style: { cursor: onClick ? 'pointer' : 'default' } }, isLoading ? (React.createElement(react.Spinner, { size: "s" })) : (React.createElement(react.Badge, { variant: getBadgeVariant(), size: "s", className: "designbase-figma-payment-badge__badge" }, getBadgeText()))));
|
|
389
399
|
};
|
|
390
400
|
PaymentBadge.displayName = 'PaymentBadge';
|
|
391
401
|
|
|
@@ -414,10 +424,19 @@ const LanguageSelector = ({ currentLanguage, languages = DEFAULT_LANGUAGES, onLa
|
|
|
414
424
|
const segmentOptions = languages.map((language) => ({
|
|
415
425
|
value: language.code,
|
|
416
426
|
label: resolveText(t, language.label),
|
|
417
|
-
disabled: false
|
|
427
|
+
disabled: false,
|
|
418
428
|
}));
|
|
419
429
|
return (React.createElement("div", { className: `designbase-figma-language-selector ${className || ''}` },
|
|
420
|
-
React.createElement(
|
|
430
|
+
React.createElement(react.SegmentControl, { options: segmentOptions, value: activeLanguage, onChange: (event) => {
|
|
431
|
+
const detail = event.detail;
|
|
432
|
+
const value = typeof detail === 'object' && detail !== null && 'value' in detail &&
|
|
433
|
+
typeof detail.value === 'string'
|
|
434
|
+
? detail.value
|
|
435
|
+
: undefined;
|
|
436
|
+
if (value) {
|
|
437
|
+
handleLanguageChange(value);
|
|
438
|
+
}
|
|
439
|
+
}, size: size, className: "designbase-figma-language-selector__segment" })));
|
|
421
440
|
};
|
|
422
441
|
LanguageSelector.displayName = 'LanguageSelector';
|
|
423
442
|
|
|
@@ -473,7 +492,7 @@ const LogoDropdown = ({ logoSrc, logoAlt = 'DesignBase', logoType = 'designbase'
|
|
|
473
492
|
return (React.createElement("img", { className: "designbase-figma-logo-dropdown__logo", src: logoSrc, alt: logoAlt, onClick: toggleDropdown }));
|
|
474
493
|
}
|
|
475
494
|
return (React.createElement("div", { className: "designbase-figma-logo-dropdown__logo", onClick: toggleDropdown },
|
|
476
|
-
React.createElement(
|
|
495
|
+
React.createElement(react.Logo, { type: logoType, size: logoSize, variant: "default" })));
|
|
477
496
|
};
|
|
478
497
|
return (React.createElement("div", { className: classes },
|
|
479
498
|
renderLogo(),
|
|
@@ -507,22 +526,29 @@ const FigmaFooter = ({ onLicensePageClick, paymentStatus = 'FREE', usageCount =
|
|
|
507
526
|
React.createElement("div", { className: "designbase-figma-footer__left" },
|
|
508
527
|
React.createElement(LogoDropdown, { logoSrc: logoSrc, logoAlt: logoAlt, logoType: logoType, logoSize: logoSize, links: logoLinks, t: t }),
|
|
509
528
|
showLanguageSelector && (React.createElement(LanguageSelector, { currentLanguage: currentLanguage, languages: languages, onLanguageChange: onLanguageChange, size: "s" }))),
|
|
510
|
-
|
|
511
|
-
resolvedShowUsageInfo && (React.createElement("div", { className: "designbase-figma-footer__usage-info" }, isActive ? (React.createElement("span", { className: "designbase-figma-footer__unlimited-usage designbase-figma-footer__unlimited-usage--tooltip", title: t('unlimitedUsageTooltip') }, t('unlimitedUsage'))) : (React.createElement(
|
|
512
|
-
React.createElement("span", { className: "designbase-figma-footer__usage-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
showDonation && (React.createElement("div", { className: "designbase-figma-footer__donation" },
|
|
521
|
-
React.createElement(DonationBadge, { donationUrl: donationUrl, text: donationText, iconType: "heart", size: "s", showPrompt: showDonationText && !isActive, promptText: donationPromptText, t: t })))),
|
|
529
|
+
React.createElement("div", { className: "designbase-figma-footer__right" },
|
|
530
|
+
showPaymentStatus && resolvedShowUsageInfo && (React.createElement("div", { className: "designbase-figma-footer__usage-info" }, isActive ? (React.createElement("span", { className: "designbase-figma-footer__unlimited-usage designbase-figma-footer__unlimited-usage--tooltip", title: t('unlimitedUsageTooltip') }, t('unlimitedUsage'))) : (React.createElement("span", { className: "designbase-figma-footer__usage-info designbase-figma-footer__usage-info--tooltip", title: t('resetsDaily') },
|
|
531
|
+
React.createElement("span", { className: "designbase-figma-footer__usage-count" }, usageCount),
|
|
532
|
+
React.createElement("span", { className: "designbase-figma-footer__max-daily-usage" },
|
|
533
|
+
"/",
|
|
534
|
+
maxDailyUsage,
|
|
535
|
+
" ",
|
|
536
|
+
t('perDay')))))),
|
|
537
|
+
showPaymentStatus && resolvedShowPaymentBadge && (React.createElement(PaymentBadge, { isActive: isActive, onClick: isBeta ? undefined : onLicensePageClick, isLoading: isLoading, text: isBeta ? (t('betaStatus') || 'BETA') : undefined, t: t })),
|
|
538
|
+
showDonation && (React.createElement(DonationBadge, { donationUrl: donationUrl, text: donationText, iconType: "heart", size: "s", iconOnly: true, showPrompt: false, t: t })))),
|
|
522
539
|
children));
|
|
523
540
|
};
|
|
524
541
|
FigmaFooter.displayName = 'FigmaFooter';
|
|
525
542
|
|
|
543
|
+
const FigmaToastStack = ({ toasts, position, maxToasts, onRemoveToast, }) => {
|
|
544
|
+
const visibleToasts = [...toasts]
|
|
545
|
+
.sort((a, b) => b.createdAt - a.createdAt)
|
|
546
|
+
.slice(0, maxToasts);
|
|
547
|
+
if (visibleToasts.length === 0)
|
|
548
|
+
return null;
|
|
549
|
+
return (React.createElement("div", { className: `figma-toast-container figma-toast-container--${position}` }, visibleToasts.map((toast) => (React.createElement("div", { key: toast.id, className: "figma-toast-container__item" },
|
|
550
|
+
React.createElement(react.Toast, { toastId: toast.id, title: toast.title, description: toast.description, status: toast.status, duration: toast.duration, showProgress: toast.showProgress, showClose: toast.showCloseButton, onClose: () => onRemoveToast(toast.id) }))))));
|
|
551
|
+
};
|
|
526
552
|
const ToastContext = React.createContext(null);
|
|
527
553
|
const useToast = () => {
|
|
528
554
|
const context = React.useContext(ToastContext);
|
|
@@ -540,13 +566,13 @@ const FigmaToastProvider = ({ children, position = 'top-right', maxToasts = 5, }
|
|
|
540
566
|
id,
|
|
541
567
|
createdAt: Date.now(),
|
|
542
568
|
};
|
|
543
|
-
setToasts(prev => {
|
|
569
|
+
setToasts((prev) => {
|
|
544
570
|
const updated = [newToast, ...prev];
|
|
545
571
|
return updated.slice(0, maxToasts);
|
|
546
572
|
});
|
|
547
573
|
}, [maxToasts]);
|
|
548
574
|
const removeToast = React.useCallback((id) => {
|
|
549
|
-
setToasts(prev => prev.filter(toast => toast.id !== id));
|
|
575
|
+
setToasts((prev) => prev.filter((toast) => toast.id !== id));
|
|
550
576
|
}, []);
|
|
551
577
|
const showToast = React.useCallback((message, options = {}) => {
|
|
552
578
|
addToast({
|
|
@@ -565,17 +591,17 @@ const FigmaToastProvider = ({ children, position = 'top-right', maxToasts = 5, }
|
|
|
565
591
|
};
|
|
566
592
|
return (React.createElement(ToastContext.Provider, { value: contextValue },
|
|
567
593
|
children,
|
|
568
|
-
React.createElement(
|
|
594
|
+
React.createElement(FigmaToastStack, { toasts: toasts, onRemoveToast: removeToast, position: position, maxToasts: maxToasts })));
|
|
569
595
|
};
|
|
570
596
|
const FigmaToast = ({ message, isVisible, onClose, type = 'info', duration = 3000, className, }) => {
|
|
571
597
|
if (!isVisible)
|
|
572
598
|
return null;
|
|
573
599
|
return (React.createElement("div", { className: `figma-toast-fixed-wrap ${className || ''}` },
|
|
574
|
-
React.createElement(
|
|
600
|
+
React.createElement(react.Toast, { toastId: "figma-toast-simple", title: message, status: type, duration: duration, showProgress: false, showClose: true, onClose: onClose })));
|
|
575
601
|
};
|
|
576
602
|
const useFigmaToast = () => {
|
|
577
603
|
const [toast, setToast] = React.useState({ message: '', isVisible: false });
|
|
578
|
-
const showToast = React.useCallback((message,
|
|
604
|
+
const showToast = React.useCallback((message, _type = 'info') => {
|
|
579
605
|
setToast({ message, isVisible: true });
|
|
580
606
|
setTimeout(() => setToast({ message: '', isVisible: false }), 5000);
|
|
581
607
|
}, []);
|
|
@@ -606,8 +632,13 @@ const FormWithSubmit = ({ onLicenseSubmit, disabled = false, isSubmitting = fals
|
|
|
606
632
|
return (React.createElement("form", { className: `designbase-figma-form-with-submit ${className || ''}`, onSubmit: handleSubmit },
|
|
607
633
|
React.createElement("div", { className: "designbase-figma-form-with-submit__field" },
|
|
608
634
|
React.createElement("label", { className: "designbase-figma-form-with-submit__label" }, displayLabel),
|
|
609
|
-
React.createElement(
|
|
610
|
-
|
|
635
|
+
React.createElement(react.Input, { value: inputValue, onChange: (event) => {
|
|
636
|
+
const value = event.detail?.value;
|
|
637
|
+
if (value !== undefined) {
|
|
638
|
+
handleChange(value);
|
|
639
|
+
}
|
|
640
|
+
}, placeholder: displayPlaceholder, helperText: displayHelperText, disabled: disabled || isSubmitting, size: "m" })),
|
|
641
|
+
React.createElement(react.Button, { type: "submit", variant: "primary", size: "m", loading: isSubmitting, disabled: !inputValue.trim() || isSubmitting || disabled, fullWidth: true }, isSubmitting ? displaySubmittingText : displaySubmitText)));
|
|
611
642
|
};
|
|
612
643
|
FormWithSubmit.displayName = 'FormWithSubmit';
|
|
613
644
|
|
|
@@ -620,13 +651,95 @@ const InteractionFeedback = ({ status = 'default', message, statusMessage, leftC
|
|
|
620
651
|
return (React.createElement("div", { className: feedbackClasses },
|
|
621
652
|
React.createElement("div", { className: "designbase-figma-interaction__content" },
|
|
622
653
|
React.createElement("div", { className: "designbase-figma-interaction__left" }, leftContent || (React.createElement("div", { className: "designbase-figma-interaction__message" },
|
|
623
|
-
status === 'loading' && (React.createElement(
|
|
654
|
+
status === 'loading' && (React.createElement(react.Spinner, { size: "s", type: "circular", label: "\uBD88\uB7EC\uC624\uB294 \uC911\uC785\uB2C8\uB2E4...", showLabel: false })),
|
|
624
655
|
(message || status === 'loading') && (React.createElement("span", { className: "designbase-figma-interaction__text" }, resolveText(t, message || '불러오는 중입니다...'))),
|
|
625
656
|
statusMessage && (React.createElement("span", { className: "designbase-figma-interaction__status-text" }, resolveText(t, statusMessage)))))),
|
|
626
657
|
rightAction && (React.createElement("div", { className: "designbase-figma-interaction__right" }, rightAction)))));
|
|
627
658
|
};
|
|
628
659
|
InteractionFeedback.displayName = 'InteractionFeedback';
|
|
629
660
|
|
|
661
|
+
function postPluginMessage(message) {
|
|
662
|
+
if (typeof parent === 'undefined') {
|
|
663
|
+
return;
|
|
664
|
+
}
|
|
665
|
+
parent.postMessage({ pluginMessage: message }, '*');
|
|
666
|
+
}
|
|
667
|
+
function openExternalUrl(url) {
|
|
668
|
+
if (!url)
|
|
669
|
+
return;
|
|
670
|
+
postPluginMessage({ type: 'open-external-url', url });
|
|
671
|
+
if (typeof window !== 'undefined') {
|
|
672
|
+
window.open(url, '_blank', 'noopener,noreferrer');
|
|
673
|
+
}
|
|
674
|
+
}
|
|
675
|
+
|
|
676
|
+
const LicenseOffer = ({ membershipUrl, t, className }) => (React.createElement("section", { className: `designbase-figma-license-offer ${className || ''}`, "aria-labelledby": "designbase-license-offer-title" },
|
|
677
|
+
React.createElement("div", { className: "designbase-figma-license-offer__eyebrow" }, "YouTube Membership"),
|
|
678
|
+
React.createElement("h3", { id: "designbase-license-offer-title" }, resolveText(t, { key: 'license.youtube_membership_title' }, 'YouTube 멤버십으로 전체 플러그인 이용')),
|
|
679
|
+
React.createElement("p", null, resolveText(t, { key: 'license.youtube_membership_description' }, 'YouTube 멤버십에 가입하면 Designbase 플러그인을 무제한으로 사용할 수 있습니다.')),
|
|
680
|
+
React.createElement("ol", null,
|
|
681
|
+
React.createElement("li", null, "Designbase YouTube \uCC44\uB110\uC758 \uBA64\uBC84\uC2ED\uC5D0 \uAC00\uC785\uD569\uB2C8\uB2E4."),
|
|
682
|
+
React.createElement("li", null, "\uBA64\uBC84 \uC804\uC6A9 \uCEE4\uBBA4\uB2C8\uD2F0 \uAC8C\uC2DC\uAE00\uC5D0\uC11C \uC774\uBC88 \uB2EC \uB77C\uC774\uC120\uC2A4 \uD0A4\uB97C \uD655\uC778\uD569\uB2C8\uB2E4."),
|
|
683
|
+
React.createElement("li", null, "\uC544\uB798 \uC785\uB825\uCC3D\uC5D0 \uD0A4\uB97C \uBD99\uC5EC \uB123\uACE0 \uD65C\uC131\uD654\uD569\uB2C8\uB2E4.")),
|
|
684
|
+
membershipUrl && (React.createElement(react.Button, { onPress: () => openExternalUrl(membershipUrl), variant: "secondary", size: "m", fullWidth: true },
|
|
685
|
+
React.createElement("span", null, resolveText(t, { key: 'license.youtube_membership_cta' }, '멤버십 안내 보기')),
|
|
686
|
+
React.createElement(icons.ExternalLinkIcon, { size: 16 })))));
|
|
687
|
+
LicenseOffer.displayName = 'LicenseOffer';
|
|
688
|
+
|
|
689
|
+
function maskLicenseKey(value) {
|
|
690
|
+
if (value.length <= 8)
|
|
691
|
+
return '••••••••';
|
|
692
|
+
return `${value.slice(0, 4)}••••${value.slice(-4)}`;
|
|
693
|
+
}
|
|
694
|
+
function formatDate(value) {
|
|
695
|
+
if (!value)
|
|
696
|
+
return undefined;
|
|
697
|
+
const date = new Date(value);
|
|
698
|
+
if (Number.isNaN(date.getTime()))
|
|
699
|
+
return value;
|
|
700
|
+
return new Intl.DateTimeFormat(undefined, { dateStyle: 'medium' }).format(date);
|
|
701
|
+
}
|
|
702
|
+
function formatScope(value) {
|
|
703
|
+
if (!value)
|
|
704
|
+
return undefined;
|
|
705
|
+
if (value === 'all-products' || value === 'all_products')
|
|
706
|
+
return '전체 제품';
|
|
707
|
+
return value;
|
|
708
|
+
}
|
|
709
|
+
const LicenseStatusCard = ({ status, licenseKey = '', licenseStatus, licenseSource, accessScope, expiresAt, lastVerifiedAt, validationMessage, allowRevealKey = true, t, className, }) => {
|
|
710
|
+
const [isKeyRevealed, setIsKeyRevealed] = React.useState(false);
|
|
711
|
+
const isActive = status === 'PAID';
|
|
712
|
+
const statusText = isActive
|
|
713
|
+
? resolveText(t, { key: 'license.status_active' }, 'Active')
|
|
714
|
+
: resolveText(t, { key: 'license.status_inactive' }, 'License check failed');
|
|
715
|
+
const statusClass = isActive ? 'active' : 'inactive';
|
|
716
|
+
return (React.createElement("section", { className: `designbase-figma-license-status-card designbase-figma-license-status-card--${statusClass} ${className || ''}`, "aria-label": statusText },
|
|
717
|
+
React.createElement("div", { className: "designbase-figma-license-status-card__header" },
|
|
718
|
+
React.createElement("div", null,
|
|
719
|
+
React.createElement("div", { className: "designbase-figma-license-status-card__eyebrow" }, isActive ? 'License Activated' : 'License Status'),
|
|
720
|
+
React.createElement("h3", null, statusText)),
|
|
721
|
+
React.createElement("span", { className: "designbase-figma-license-status-card__badge" }, licenseStatus || (isActive ? 'active' : 'inactive'))),
|
|
722
|
+
validationMessage && !isActive && (React.createElement("p", { className: "designbase-figma-license-status-card__message" }, validationMessage)),
|
|
723
|
+
licenseKey && (React.createElement("div", { className: "designbase-figma-license-status-card__key-row" },
|
|
724
|
+
React.createElement("span", null, resolveText(t, { key: 'license.key_label' }, '라이선스 키')),
|
|
725
|
+
React.createElement("code", null, allowRevealKey && isKeyRevealed ? licenseKey : maskLicenseKey(licenseKey)),
|
|
726
|
+
allowRevealKey && (React.createElement(react.Button, { type: "button", onPress: () => setIsKeyRevealed((value) => !value), variant: "tertiary", size: "s" }, isKeyRevealed ? '숨기기' : '보기')))),
|
|
727
|
+
(licenseSource || accessScope || expiresAt || lastVerifiedAt) && (React.createElement("dl", { className: "designbase-figma-license-status-card__meta" },
|
|
728
|
+
licenseSource && React.createElement(React.Fragment, null,
|
|
729
|
+
React.createElement("dt", null, "Source"),
|
|
730
|
+
React.createElement("dd", null, licenseSource)),
|
|
731
|
+
formatScope(accessScope) && React.createElement(React.Fragment, null,
|
|
732
|
+
React.createElement("dt", null, "Access"),
|
|
733
|
+
React.createElement("dd", null, formatScope(accessScope))),
|
|
734
|
+
expiresAt && React.createElement(React.Fragment, null,
|
|
735
|
+
React.createElement("dt", null, "Expires"),
|
|
736
|
+
React.createElement("dd", null, formatDate(expiresAt) || expiresAt)),
|
|
737
|
+
lastVerifiedAt && React.createElement(React.Fragment, null,
|
|
738
|
+
React.createElement("dt", null, "Last checked"),
|
|
739
|
+
React.createElement("dd", null, formatDate(lastVerifiedAt) || lastVerifiedAt))))));
|
|
740
|
+
};
|
|
741
|
+
LicenseStatusCard.displayName = 'LicenseStatusCard';
|
|
742
|
+
|
|
630
743
|
const defaultFeatures = [
|
|
631
744
|
{ name: '사용 제한', free: '일일 제한', pro: '무제한' },
|
|
632
745
|
{ name: '모든 주제 사용', free: false, pro: true },
|
|
@@ -659,18 +772,21 @@ const PricingComparison = ({ features = defaultFeatures, pricing = defaultPricin
|
|
|
659
772
|
};
|
|
660
773
|
return (React.createElement("div", { className: `designbase-figma-pricing-comparison ${className || ''}` },
|
|
661
774
|
paymentType === 'subscription' && (React.createElement("div", { className: "designbase-figma-pricing-comparison__billing-toggle" },
|
|
662
|
-
React.createElement(
|
|
775
|
+
React.createElement(react.SegmentControl, { value: isYearly ? 'yearly' : 'monthly', onChange: (event) => {
|
|
776
|
+
const detail = event.detail;
|
|
777
|
+
const value = typeof detail === 'object' && detail !== null && 'value' in detail &&
|
|
778
|
+
typeof detail.value === 'string'
|
|
779
|
+
? detail.value
|
|
780
|
+
: undefined;
|
|
781
|
+
setIsYearly(value === 'yearly');
|
|
782
|
+
}, options: [
|
|
663
783
|
{
|
|
664
784
|
value: 'monthly',
|
|
665
785
|
label: t('monthlyBilling') || '월간 결제',
|
|
666
786
|
},
|
|
667
787
|
{
|
|
668
788
|
value: 'yearly',
|
|
669
|
-
label: (
|
|
670
|
-
t('yearlyBilling') || '연간 결제',
|
|
671
|
-
React.createElement("span", { className: "designbase-figma-pricing-comparison__discount-badge" },
|
|
672
|
-
getDiscountPercentage(),
|
|
673
|
-
"% \uC808\uC57D"))),
|
|
789
|
+
label: `${t('yearlyBilling') || '연간 결제'} (${getDiscountPercentage()}% 절약)`,
|
|
674
790
|
},
|
|
675
791
|
], size: "s" }))),
|
|
676
792
|
paymentType === 'lifetime' && (React.createElement("div", { className: "designbase-figma-pricing-comparison__lifetime-info" },
|
|
@@ -698,124 +814,302 @@ const PricingComparison = ({ features = defaultFeatures, pricing = defaultPricin
|
|
|
698
814
|
};
|
|
699
815
|
PricingComparison.displayName = 'PricingComparison';
|
|
700
816
|
|
|
701
|
-
const
|
|
702
|
-
|
|
817
|
+
const DEFAULT_LICENSE_MESSAGE_TYPES = {
|
|
818
|
+
initialize: 'initialize',
|
|
819
|
+
verifyLicense: 'verify-license',
|
|
820
|
+
deactivateLicense: 'deactivate-license',
|
|
821
|
+
updateStatus: 'update-plugin-status',
|
|
822
|
+
verifyResult: 'license-verification-result',
|
|
823
|
+
deactivateResult: 'license-deactivation-result',
|
|
824
|
+
};
|
|
825
|
+
const START_DESIGNBASE_AUTH_MESSAGE = 'start-designbase-auth';
|
|
826
|
+
const INITIAL_LICENSE_PAGE_STATE = {
|
|
827
|
+
paymentStatus: 'FREE',
|
|
828
|
+
licenseKey: '',
|
|
829
|
+
planTier: 'FREE',
|
|
830
|
+
hasLicenseKey: false,
|
|
831
|
+
isLicenseRegistered: false,
|
|
832
|
+
activationLimit: 0,
|
|
833
|
+
activationUsage: 0,
|
|
834
|
+
usageCount: 0,
|
|
835
|
+
remainingUsage: 0,
|
|
836
|
+
usageUsed: 0,
|
|
837
|
+
usageLimit: 0,
|
|
838
|
+
usageReset: 'none',
|
|
839
|
+
canUseFeature: true,
|
|
840
|
+
};
|
|
841
|
+
|
|
842
|
+
function readString(data, keys) {
|
|
843
|
+
for (const key of keys) {
|
|
844
|
+
const value = data[key];
|
|
845
|
+
if (typeof value === 'string') {
|
|
846
|
+
return value;
|
|
847
|
+
}
|
|
848
|
+
}
|
|
849
|
+
return '';
|
|
850
|
+
}
|
|
851
|
+
function readNumber(data, keys) {
|
|
852
|
+
for (const key of keys) {
|
|
853
|
+
const value = data[key];
|
|
854
|
+
if (typeof value === 'number' && Number.isFinite(value)) {
|
|
855
|
+
return value;
|
|
856
|
+
}
|
|
857
|
+
}
|
|
858
|
+
return undefined;
|
|
859
|
+
}
|
|
860
|
+
function readBoolean(data, keys) {
|
|
861
|
+
for (const key of keys) {
|
|
862
|
+
const value = data[key];
|
|
863
|
+
if (typeof value === 'boolean') {
|
|
864
|
+
return value;
|
|
865
|
+
}
|
|
866
|
+
}
|
|
867
|
+
return undefined;
|
|
868
|
+
}
|
|
869
|
+
function parseLicenseMessage(data) {
|
|
870
|
+
const paymentStatus = readString(data, ['paymentStatus', 'status']);
|
|
871
|
+
const usageLimitRaw = data.usageLimit;
|
|
872
|
+
return {
|
|
873
|
+
...(paymentStatus ? { paymentStatus } : {}),
|
|
874
|
+
licenseKey: readString(data, ['licenseKey']) || undefined,
|
|
875
|
+
planTier: readString(data, ['planTier']) || undefined,
|
|
876
|
+
hasLicenseKey: readBoolean(data, ['hasLicenseKey']),
|
|
877
|
+
isLicenseRegistered: readBoolean(data, ['isLicenseRegistered']),
|
|
878
|
+
activationLimit: readNumber(data, ['activationLimit']),
|
|
879
|
+
activationUsage: readNumber(data, ['activationUsage']),
|
|
880
|
+
usageCount: readNumber(data, ['usageCount']),
|
|
881
|
+
remainingUsage: readNumber(data, ['remainingUsage']),
|
|
882
|
+
usageUsed: readNumber(data, ['usageUsed']),
|
|
883
|
+
usageLimit: usageLimitRaw === 'unlimited' ? 'unlimited' : readNumber(data, ['usageLimit']),
|
|
884
|
+
usageReset: readString(data, ['usageReset']) || undefined,
|
|
885
|
+
canUseFeature: readBoolean(data, ['canUseFeature']),
|
|
886
|
+
usageReason: readString(data, ['usageReason']) || undefined,
|
|
887
|
+
lastMessage: readString(data, ['message']) || undefined,
|
|
888
|
+
lastErrorCode: readString(data, ['errorCode']) || undefined,
|
|
889
|
+
licenseStatus: readString(data, ['licenseStatus', 'license_status']) || undefined,
|
|
890
|
+
licenseSource: readString(data, ['licenseSource', 'license_source', 'source']) || undefined,
|
|
891
|
+
accessScope: readString(data, ['accessScope', 'access_scope', 'scope']) || undefined,
|
|
892
|
+
expiresAt: readString(data, ['expiresAt', 'expires_at']) || undefined,
|
|
893
|
+
lastVerifiedAt: readString(data, ['lastVerifiedAt', 'last_verified_at']) || undefined,
|
|
894
|
+
validationMessage: readString(data, ['validationMessage', 'validation_message']) || undefined,
|
|
895
|
+
};
|
|
896
|
+
}
|
|
897
|
+
function useFigmaLicenseBridge(options = {}) {
|
|
898
|
+
const messageTypes = React.useMemo(() => ({ ...DEFAULT_LICENSE_MESSAGE_TYPES, ...options.messageTypes }), [options.messageTypes]);
|
|
899
|
+
const [state, setState] = React.useState({
|
|
900
|
+
...INITIAL_LICENSE_PAGE_STATE,
|
|
901
|
+
...options.initialState,
|
|
902
|
+
});
|
|
903
|
+
const [isVerifying, setIsVerifying] = React.useState(false);
|
|
703
904
|
const [isDeactivating, setIsDeactivating] = React.useState(false);
|
|
704
|
-
const [
|
|
705
|
-
const
|
|
706
|
-
|
|
707
|
-
const
|
|
708
|
-
|
|
709
|
-
|
|
905
|
+
const [isStartingAuth, setIsStartingAuth] = React.useState(false);
|
|
906
|
+
const optionsRef = React.useRef(options);
|
|
907
|
+
optionsRef.current = options;
|
|
908
|
+
const applyPatch = React.useCallback((patch) => {
|
|
909
|
+
setState((prev) => {
|
|
910
|
+
const next = {
|
|
911
|
+
...prev,
|
|
912
|
+
...Object.fromEntries(Object.entries(patch).filter(([, value]) => value !== undefined)),
|
|
913
|
+
};
|
|
914
|
+
optionsRef.current.onStateChange?.(next);
|
|
915
|
+
if (patch.paymentStatus) {
|
|
916
|
+
optionsRef.current.onPaymentStatusChange?.(patch.paymentStatus);
|
|
917
|
+
}
|
|
918
|
+
if (patch.usageCount !== undefined) {
|
|
919
|
+
optionsRef.current.onUsageCountChange?.(patch.usageCount);
|
|
920
|
+
}
|
|
921
|
+
return next;
|
|
922
|
+
});
|
|
923
|
+
}, []);
|
|
710
924
|
React.useEffect(() => {
|
|
711
925
|
const handleMessage = (event) => {
|
|
712
|
-
const
|
|
713
|
-
if (
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
setActivationLimit(activationLimit);
|
|
720
|
-
if (activationUsage !== undefined)
|
|
721
|
-
setActivationUsage(activationUsage);
|
|
722
|
-
if (paymentStatus)
|
|
723
|
-
setPaymentStatus(paymentStatus);
|
|
724
|
-
if (usageCount !== undefined) {
|
|
725
|
-
setLocalUsageCount(usageCount);
|
|
726
|
-
setUsageCount(usageCount);
|
|
727
|
-
}
|
|
926
|
+
const data = event.data?.pluginMessage;
|
|
927
|
+
if (!data || typeof data !== 'object')
|
|
928
|
+
return;
|
|
929
|
+
const payload = data;
|
|
930
|
+
const type = typeof payload.type === 'string' ? payload.type : '';
|
|
931
|
+
if (type === messageTypes.updateStatus) {
|
|
932
|
+
applyPatch(parseLicenseMessage(payload));
|
|
728
933
|
}
|
|
729
|
-
if (type ===
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
if (success) {
|
|
734
|
-
|
|
735
|
-
setPaymentStatus('PAID');
|
|
934
|
+
if (type === messageTypes.verifyResult) {
|
|
935
|
+
setIsVerifying(false);
|
|
936
|
+
setIsStartingAuth(false);
|
|
937
|
+
applyPatch(parseLicenseMessage(payload));
|
|
938
|
+
if (payload.success === true) {
|
|
939
|
+
applyPatch({ paymentStatus: 'PAID', isLicenseRegistered: true });
|
|
736
940
|
}
|
|
737
941
|
}
|
|
738
|
-
if (type ===
|
|
942
|
+
if (type === messageTypes.deactivateResult) {
|
|
739
943
|
setIsDeactivating(false);
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
944
|
+
applyPatch(parseLicenseMessage(payload));
|
|
945
|
+
if (payload.success === true) {
|
|
946
|
+
applyPatch({
|
|
947
|
+
paymentStatus: 'UNPAID',
|
|
948
|
+
licenseKey: '',
|
|
949
|
+
hasLicenseKey: false,
|
|
950
|
+
isLicenseRegistered: false,
|
|
951
|
+
activationLimit: 0,
|
|
952
|
+
activationUsage: 0,
|
|
953
|
+
});
|
|
954
|
+
}
|
|
955
|
+
}
|
|
956
|
+
if (type === 'designbase-auth-result') {
|
|
957
|
+
setIsStartingAuth(false);
|
|
958
|
+
if (payload.success === true) {
|
|
959
|
+
applyPatch(parseLicenseMessage(payload));
|
|
960
|
+
}
|
|
961
|
+
else if (typeof payload.message === 'string') {
|
|
962
|
+
applyPatch({ lastMessage: payload.message });
|
|
749
963
|
}
|
|
750
964
|
}
|
|
751
965
|
};
|
|
752
966
|
window.addEventListener('message', handleMessage);
|
|
753
|
-
|
|
754
|
-
parent.postMessage({ pluginMessage: { type: 'initialize' } }, '*');
|
|
755
|
-
}
|
|
967
|
+
postPluginMessage({ type: messageTypes.initialize });
|
|
756
968
|
return () => window.removeEventListener('message', handleMessage);
|
|
757
|
-
}, [
|
|
969
|
+
}, [applyPatch, messageTypes]);
|
|
970
|
+
const verifyLicense = React.useCallback((licenseKey) => {
|
|
971
|
+
setIsVerifying(true);
|
|
972
|
+
postPluginMessage({
|
|
973
|
+
type: messageTypes.verifyLicense,
|
|
974
|
+
licenseKey,
|
|
975
|
+
});
|
|
976
|
+
}, [messageTypes.verifyLicense]);
|
|
977
|
+
const deactivateLicense = React.useCallback(() => {
|
|
978
|
+
setIsDeactivating(true);
|
|
979
|
+
postPluginMessage({ type: messageTypes.deactivateLicense });
|
|
980
|
+
}, [messageTypes.deactivateLicense]);
|
|
981
|
+
const startDesignbaseAuth = React.useCallback(() => {
|
|
982
|
+
setIsStartingAuth(true);
|
|
983
|
+
postPluginMessage({ type: START_DESIGNBASE_AUTH_MESSAGE });
|
|
984
|
+
}, []);
|
|
985
|
+
return {
|
|
986
|
+
state,
|
|
987
|
+
isVerifying,
|
|
988
|
+
isDeactivating,
|
|
989
|
+
isStartingAuth,
|
|
990
|
+
verifyLicense,
|
|
991
|
+
deactivateLicense,
|
|
992
|
+
startDesignbaseAuth,
|
|
993
|
+
setLicenseKeyInput: (licenseKey) => applyPatch({ licenseKey }),
|
|
994
|
+
};
|
|
995
|
+
}
|
|
996
|
+
|
|
997
|
+
function formatUsageLabel(state, t) {
|
|
998
|
+
const { remainingUsage, usageUsed, usageLimit, usageReset } = state;
|
|
999
|
+
if (usageLimit === 'unlimited') {
|
|
1000
|
+
return resolveText(t, { key: 'license.usage_unlimited' }, '사용 횟수 제한 없음') ?? '사용 횟수 제한 없음';
|
|
1001
|
+
}
|
|
1002
|
+
const limit = typeof usageLimit === 'number' ? usageLimit : remainingUsage + usageUsed;
|
|
1003
|
+
const remaining = remainingUsage ?? Math.max(0, limit - usageUsed);
|
|
1004
|
+
if (usageReset === 'daily') {
|
|
1005
|
+
const fallback = `오늘 남은 횟수 ${remaining}/${limit}`;
|
|
1006
|
+
const translated = resolveText(t, { key: 'license.usage_daily' }, fallback) ?? fallback;
|
|
1007
|
+
return translated.includes(String(remaining)) ? translated : fallback;
|
|
1008
|
+
}
|
|
1009
|
+
if (usageReset === 'monthly') {
|
|
1010
|
+
const fallback = `이번 달 남은 횟수 ${remaining}/${limit}`;
|
|
1011
|
+
const translated = resolveText(t, { key: 'license.usage_monthly' }, fallback) ?? fallback;
|
|
1012
|
+
return translated.includes(String(remaining)) ? translated : fallback;
|
|
1013
|
+
}
|
|
1014
|
+
return `남은 횟수 ${remaining}/${limit}`;
|
|
1015
|
+
}
|
|
1016
|
+
const PageLicense = ({ status: initialStatus, onClose, licenseKey: initialLicenseKey = '', wordpressLinks, paymentPageUrl, mode = 'pricing', membershipUrl, enableAccountAuth = true, showLicenseKeyInput = true, pricingFeatures, pricing, paymentType = 'subscription', messageTypes, onStateChange, setPaymentStatus, setUsageCount, onLicenseSubmit, usageCount: initialUsageCount = 0, t, className, }) => {
|
|
1017
|
+
const links = React.useMemo(() => ({
|
|
1018
|
+
purchaseUrl: wordpressLinks?.purchaseUrl ?? paymentPageUrl,
|
|
1019
|
+
membershipUrl: membershipUrl ?? wordpressLinks?.membershipUrl,
|
|
1020
|
+
accountUrl: wordpressLinks?.accountUrl,
|
|
1021
|
+
helpUrl: wordpressLinks?.helpUrl,
|
|
1022
|
+
}), [wordpressLinks, paymentPageUrl, membershipUrl]);
|
|
1023
|
+
const { state, isVerifying, isDeactivating, isStartingAuth, verifyLicense, deactivateLicense, startDesignbaseAuth, setLicenseKeyInput, } = useFigmaLicenseBridge({
|
|
1024
|
+
messageTypes,
|
|
1025
|
+
initialState: {
|
|
1026
|
+
paymentStatus: initialStatus,
|
|
1027
|
+
licenseKey: initialLicenseKey,
|
|
1028
|
+
usageCount: initialUsageCount,
|
|
1029
|
+
},
|
|
1030
|
+
onStateChange,
|
|
1031
|
+
onPaymentStatusChange: setPaymentStatus,
|
|
1032
|
+
onUsageCountChange: setUsageCount,
|
|
1033
|
+
});
|
|
1034
|
+
const [showDetails, setShowDetails] = React.useState(false);
|
|
1035
|
+
const [licenseKeyDraft, setLicenseKeyDraft] = React.useState(initialLicenseKey);
|
|
1036
|
+
const isPaid = state.isLicenseRegistered && state.paymentStatus === 'PAID';
|
|
1037
|
+
const isMembershipMode = mode === 'youtube-membership';
|
|
1038
|
+
const usageLabel = formatUsageLabel(state, t);
|
|
758
1039
|
const handleLicenseSubmit = async (submittedLicenseKey) => {
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
pluginMessage: {
|
|
763
|
-
type: 'verify-license',
|
|
764
|
-
licenseKey: submittedLicenseKey
|
|
765
|
-
}
|
|
766
|
-
}, '*');
|
|
1040
|
+
if (onLicenseSubmit) {
|
|
1041
|
+
await onLicenseSubmit(submittedLicenseKey);
|
|
1042
|
+
return;
|
|
767
1043
|
}
|
|
1044
|
+
verifyLicense(submittedLicenseKey);
|
|
768
1045
|
};
|
|
769
|
-
const
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
parent.postMessage({
|
|
773
|
-
pluginMessage: { type: 'deactivate-license' }
|
|
774
|
-
}, '*');
|
|
775
|
-
}
|
|
1046
|
+
const handleLicenseKeyChange = (value) => {
|
|
1047
|
+
setLicenseKeyDraft(value);
|
|
1048
|
+
setLicenseKeyInput(value);
|
|
776
1049
|
};
|
|
777
|
-
const isPaid = status === 'PAID';
|
|
778
1050
|
return (React.createElement("div", { className: `designbase-figma-page-license ${className || ''}` },
|
|
779
1051
|
React.createElement("div", { className: "designbase-figma-page-license__content" },
|
|
780
1052
|
React.createElement("div", { className: "designbase-figma-page-license__header" },
|
|
781
1053
|
React.createElement("div", { className: "designbase-figma-page-license__title" },
|
|
782
|
-
React.createElement("h2", null,
|
|
1054
|
+
React.createElement("h2", null, isMembershipMode
|
|
1055
|
+
? resolveText(t, { key: 'license.youtube_membership' }, 'YouTube 멤버십')
|
|
1056
|
+
: isPaid
|
|
1057
|
+
? resolveText(t, { key: 'license.pro_account' }, '프로 계정')
|
|
1058
|
+
: resolveText(t, { key: 'license.upgrade_to_pro' }, '프로로 업그레이드')),
|
|
1059
|
+
state.planTier && state.planTier !== 'FREE' && (React.createElement("span", { className: "designbase-figma-page-license__tier" }, state.planTier))),
|
|
783
1060
|
React.createElement("p", { className: "designbase-figma-page-license__description" }, isPaid
|
|
784
1061
|
? resolveText(t, { key: 'license.all_features_available' }, '모든 기능을 사용할 수 있습니다.')
|
|
785
|
-
:
|
|
786
|
-
|
|
1062
|
+
: isMembershipMode
|
|
1063
|
+
? resolveText(t, { key: 'license.youtube_membership_description' }, 'YouTube 멤버십에 가입하면 Designbase 플러그인을 무제한으로 사용할 수 있습니다.')
|
|
1064
|
+
: resolveText(t, { key: 'license.purchase_for_unlimited' }, '디자인베이스 멤버십 또는 라이선스로 무제한 이용이 가능합니다.')),
|
|
1065
|
+
!isPaid && (React.createElement("p", { className: "designbase-figma-page-license__usage" }, usageLabel))),
|
|
1066
|
+
!isMembershipMode && (React.createElement(PricingComparison, { features: pricingFeatures, pricing: pricing, paymentType: paymentType, t: t })),
|
|
1067
|
+
state.lastMessage && (React.createElement("p", { className: `designbase-figma-page-license__feedback ${state.lastErrorCode ? 'designbase-figma-page-license__feedback--error' : ''}` }, state.lastMessage)),
|
|
787
1068
|
isPaid && (React.createElement("div", { className: "designbase-figma-page-license__section" },
|
|
788
1069
|
React.createElement("div", { className: "designbase-figma-page-license__section-header" },
|
|
789
1070
|
React.createElement("h3", null, resolveText(t, { key: 'license.activated' }, '라이선스 활성화됨')),
|
|
790
|
-
React.createElement(
|
|
1071
|
+
React.createElement(react.Button, { onPress: () => setShowDetails(!showDetails), variant: "tertiary", size: "s", iconOnly: true },
|
|
791
1072
|
React.createElement(icons.MoreHorizontalIcon, { size: 16 }))),
|
|
792
|
-
React.createElement(
|
|
793
|
-
|
|
794
|
-
": ",
|
|
795
|
-
React.createElement("span", null, licenseKey)),
|
|
1073
|
+
React.createElement(LicenseStatusCard, { status: state.paymentStatus, licenseKey: state.licenseKey, licenseStatus: state.licenseStatus, licenseSource: state.licenseSource, accessScope: state.accessScope, expiresAt: state.expiresAt, lastVerifiedAt: state.lastVerifiedAt, validationMessage: state.validationMessage, t: t }),
|
|
1074
|
+
React.createElement("p", { className: "designbase-figma-page-license__usage" }, usageLabel),
|
|
796
1075
|
showDetails && (React.createElement("div", { className: "designbase-figma-page-license__details" },
|
|
797
1076
|
React.createElement("div", { className: "designbase-figma-page-license__activation-info" },
|
|
798
1077
|
React.createElement("div", { className: "designbase-figma-page-license__remaining" },
|
|
799
|
-
activationLimit - activationUsage,
|
|
800
|
-
|
|
1078
|
+
Math.max(0, state.activationLimit - state.activationUsage),
|
|
1079
|
+
' ',
|
|
801
1080
|
resolveText(t, { key: 'license.activations_remaining' }, '활성'),
|
|
802
|
-
|
|
1081
|
+
' ',
|
|
803
1082
|
resolveText(t, { key: 'license.spots_remaining' }, '자리 남음')),
|
|
804
|
-
React.createElement("div", { className: "designbase-figma-page-license__usage" },
|
|
805
|
-
activationUsage,
|
|
1083
|
+
React.createElement("div", { className: "designbase-figma-page-license__usage-count" },
|
|
1084
|
+
state.activationUsage,
|
|
806
1085
|
"/",
|
|
807
|
-
activationLimit)),
|
|
808
|
-
React.createElement(
|
|
809
|
-
? resolveText(t, { key: 'license.deactivating' }, '
|
|
1086
|
+
state.activationLimit)),
|
|
1087
|
+
React.createElement(react.Button, { onPress: deactivateLicense, variant: "tertiary", size: "s", disabled: isDeactivating }, isDeactivating
|
|
1088
|
+
? resolveText(t, { key: 'license.deactivating' }, '비활성화 중...')
|
|
810
1089
|
: resolveText(t, { key: 'license.deactivate' }, '라이선스 비활성화')))))),
|
|
811
|
-
!isPaid && (React.createElement(
|
|
812
|
-
React.createElement(
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
React.createElement("
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
1090
|
+
!isPaid && (React.createElement(React.Fragment, null,
|
|
1091
|
+
isMembershipMode && (React.createElement(LicenseOffer, { membershipUrl: links.membershipUrl || links.purchaseUrl, t: t })),
|
|
1092
|
+
!isMembershipMode && (enableAccountAuth || links.purchaseUrl || links.accountUrl) && (React.createElement("div", { className: "designbase-figma-page-license__section" },
|
|
1093
|
+
React.createElement("div", { className: "designbase-figma-page-license__section-header" },
|
|
1094
|
+
React.createElement("h3", null, resolveText(t, { key: 'license.designbase_account' }, '디자인베이스 계정'))),
|
|
1095
|
+
React.createElement("p", { className: "designbase-figma-page-license__hint" }, resolveText(t, { key: 'license.designbase_account_hint' }, 'WordPress 계정으로 로그인하거나 멤버십을 구매하면 플러그인이 자동으로 활성화됩니다.')),
|
|
1096
|
+
React.createElement("div", { className: "designbase-figma-page-license__actions" },
|
|
1097
|
+
enableAccountAuth && (React.createElement(react.Button, { onPress: startDesignbaseAuth, variant: "primary", size: "m", disabled: isStartingAuth || isVerifying, fullWidth: true }, isStartingAuth
|
|
1098
|
+
? resolveText(t, { key: 'license.authenticating' }, '인증 중...')
|
|
1099
|
+
: resolveText(t, { key: 'license.login_with_designbase' }, '디자인베이스로 로그인'))),
|
|
1100
|
+
links.purchaseUrl && (React.createElement(react.Button, { onPress: () => openExternalUrl(links.purchaseUrl), variant: "secondary", size: "m", fullWidth: true },
|
|
1101
|
+
React.createElement("span", null, resolveText(t, { key: 'license.purchase_membership' }, '멤버십 안내')),
|
|
1102
|
+
React.createElement(icons.ExternalLinkIcon, { size: 16 }))),
|
|
1103
|
+
links.accountUrl && (React.createElement(react.Button, { onPress: () => openExternalUrl(links.accountUrl), variant: "tertiary", size: "s", fullWidth: true },
|
|
1104
|
+
React.createElement("span", null, resolveText(t, { key: 'license.manage_account' }, '계정·멤버십 관리')),
|
|
1105
|
+
React.createElement(icons.ExternalLinkIcon, { size: 16 })))))),
|
|
1106
|
+
showLicenseKeyInput && (React.createElement("div", { className: "designbase-figma-page-license__section" },
|
|
1107
|
+
React.createElement("div", { className: "designbase-figma-page-license__section-header" },
|
|
1108
|
+
React.createElement("h3", null, resolveText(t, { key: 'license.enter_key' }, '라이선스 키 입력'))),
|
|
1109
|
+
React.createElement(FormWithSubmit, { onLicenseSubmit: handleLicenseSubmit, disabled: false, isSubmitting: isVerifying, value: licenseKeyDraft, onValueChange: handleLicenseKeyChange, label: { key: 'license.key' }, submitText: { key: 'license.submit' }, submittingText: { key: 'license.verifying' }, helperText: { key: 'license.enter_from_email' }, t: t }))))),
|
|
1110
|
+
links.helpUrl && (React.createElement("p", { className: "designbase-figma-page-license__disclaimer" },
|
|
1111
|
+
React.createElement("button", { type: "button", className: "designbase-figma-page-license__link", onClick: () => openExternalUrl(links.helpUrl) }, resolveText(t, { key: 'license.help_link' }, '라이선스·결제 도움말'))))),
|
|
1112
|
+
React.createElement(react.Button, { className: "designbase-figma-page-license__close", onPress: onClose, variant: "tertiary", size: "s", "aria-label": "Close" },
|
|
819
1113
|
React.createElement(icons.CloseIcon, { size: 20 }))));
|
|
820
1114
|
};
|
|
821
1115
|
PageLicense.displayName = 'PageLicense';
|
|
@@ -839,7 +1133,7 @@ const PaymentStatusSection = ({ status, usageCount, activationLimit, activationU
|
|
|
839
1133
|
activationUsage,
|
|
840
1134
|
"/",
|
|
841
1135
|
activationLimit)),
|
|
842
|
-
React.createElement(
|
|
1136
|
+
React.createElement(react.Button, { onPress: onDeactivate, variant: "tertiary", size: "s", disabled: isDeactivating }, isDeactivating
|
|
843
1137
|
? resolveText(t, { key: 'payment.deactivating' }, '비활성화중...')
|
|
844
1138
|
: resolveText(t, { key: 'payment.deactivate_license' }, '라이선스 비활성화'))))));
|
|
845
1139
|
};
|
|
@@ -880,16 +1174,16 @@ const ProgressModal = ({ isOpen, onClose, progress, title = { key: 'progress.wor
|
|
|
880
1174
|
const displayStopText = resolveText(t, stopButtonText, '중지');
|
|
881
1175
|
const displayConfirmText = resolveText(t, confirmButtonText, '확인');
|
|
882
1176
|
const displayHelpText = resolveText(t, helpText);
|
|
883
|
-
return (React.createElement(
|
|
1177
|
+
return (React.createElement(react.Modal, { isOpen: isOpen, onClose: isCompleted ? onClose : undefined, title: displayTitle, size: "s", className: modalClasses, showCloseButton: false },
|
|
884
1178
|
React.createElement("div", { className: "designbase-figma-progress-modal__content" },
|
|
885
1179
|
React.createElement("div", { className: "designbase-figma-progress-modal__icon", "aria-hidden": "true" }, isCompleted ? (completeIcon || (React.createElement("div", { className: "designbase-figma-progress-modal__icon-success" },
|
|
886
1180
|
React.createElement(icons.CircleCheckFilledIcon, null)))) : (loadingIcon || (React.createElement("div", { className: "designbase-figma-progress-modal__icon-loading" },
|
|
887
|
-
React.createElement(
|
|
1181
|
+
React.createElement(react.Spinner, { size: "m" }))))),
|
|
888
1182
|
React.createElement("p", { className: "designbase-figma-progress-modal__message" }, displayMessage),
|
|
889
1183
|
React.createElement("div", { className: "designbase-figma-progress-modal__status" }, `${processedNodes} / ${totalNodes} (${progressPercentage.toFixed(1)}%)`),
|
|
890
|
-
React.createElement(
|
|
1184
|
+
React.createElement(react.Progressbar, { value: progressPercentage, size: "m", variant: isCompleted ? 'success' : 'primary', style: "animated", fullWidth: true }),
|
|
891
1185
|
displayHelpText && !isCompleted && (React.createElement("p", { className: "designbase-figma-progress-modal__help-text" }, displayHelpText)),
|
|
892
|
-
React.createElement("div", { className: "designbase-figma-progress-modal__actions" }, isCompleted ? (React.createElement(
|
|
1186
|
+
React.createElement("div", { className: "designbase-figma-progress-modal__actions" }, isCompleted ? (React.createElement(react.Button, { onPress: handleConfirm, variant: "primary", size: "m", fullWidth: true }, displayConfirmText)) : (React.createElement(react.Button, { onPress: handleStop, variant: "secondary", size: "m", fullWidth: true }, displayStopText))))));
|
|
893
1187
|
};
|
|
894
1188
|
ProgressModal.displayName = 'ProgressModal';
|
|
895
1189
|
|
|
@@ -1028,7 +1322,7 @@ const SettingsModal = ({ isOpen, onClose, categories: initialCategories, categor
|
|
|
1028
1322
|
const modalClasses = clsx('designbase-figma-settings-modal', className);
|
|
1029
1323
|
const displayTitle = resolveText(t, title, '목록 변경');
|
|
1030
1324
|
const displayDescription = resolveText(t, description, '드래그하여 순서를 변경하거나, 토글하여 카테고리를 숨길 수 있습니다.');
|
|
1031
|
-
return (React.createElement(
|
|
1325
|
+
return (React.createElement(react.Modal, { isOpen: isOpen, onClose: onClose, title: displayTitle, size: "m", className: modalClasses },
|
|
1032
1326
|
React.createElement("div", { className: "designbase-figma-settings-modal__content" },
|
|
1033
1327
|
displayDescription && (React.createElement("p", { className: "designbase-figma-settings-modal__description" }, displayDescription)),
|
|
1034
1328
|
React.createElement("ul", { className: "designbase-figma-settings-modal__list" }, tempCategories.map((category, index) => (React.createElement("li", { key: category.id, draggable: true, onDragStart: (e) => handleDragStart(e, index), onDragOver: handleDragOver, onDrop: (e) => handleDrop(e, index), onDragEnd: handleDragEnd, className: clsx('designbase-figma-settings-modal__item', {
|
|
@@ -1040,12 +1334,12 @@ const SettingsModal = ({ isOpen, onClose, categories: initialCategories, categor
|
|
|
1040
1334
|
React.createElement(icons.GripVerticalIcon, { size: 16 })),
|
|
1041
1335
|
category.icon && (React.createElement("span", { className: "designbase-figma-settings-modal__category-icon" }, category.icon)),
|
|
1042
1336
|
React.createElement("span", { className: "designbase-figma-settings-modal__category-title" }, resolveText(t, category.title))),
|
|
1043
|
-
React.createElement(
|
|
1337
|
+
React.createElement(react.Toggle, { checked: category.enabled, onChange: () => handleToggle(category.id), size: "s" })))))),
|
|
1044
1338
|
React.createElement("div", { className: "designbase-figma-settings-modal__footer" },
|
|
1045
|
-
onReset && (React.createElement(
|
|
1339
|
+
onReset && (React.createElement(react.Button, { onPress: handleReset, variant: "tertiary", size: "s" }, resolveText(t, { key: 'settings.reset' }, '초기화'))),
|
|
1046
1340
|
React.createElement("div", { className: "designbase-figma-settings-modal__footer-right" },
|
|
1047
|
-
React.createElement(
|
|
1048
|
-
React.createElement(
|
|
1341
|
+
React.createElement(react.Button, { onPress: handleCancel, variant: "tertiary", size: "s" }, resolveText(t, { key: 'settings.cancel' }, '취소')),
|
|
1342
|
+
React.createElement(react.Button, { onPress: handleSave, variant: "primary", size: "s" }, resolveText(t, { key: 'settings.save' }, '저장'))))));
|
|
1049
1343
|
};
|
|
1050
1344
|
SettingsModal.displayName = 'SettingsModal';
|
|
1051
1345
|
|
|
@@ -1088,12 +1382,545 @@ const UpgradeBanner = ({ onClick, variant = 'button', isLoading = false, title =
|
|
|
1088
1382
|
React.createElement("div", { className: "designbase-figma-upgrade-banner__text-wrap" },
|
|
1089
1383
|
React.createElement("h3", { className: "designbase-figma-upgrade-banner__title" }, displayTitle),
|
|
1090
1384
|
React.createElement("p", { className: "designbase-figma-upgrade-banner__text" }, displayDescription)),
|
|
1091
|
-
variant === 'button' ? (React.createElement(
|
|
1385
|
+
variant === 'button' ? (React.createElement(react.Button, { onPress: onClick, variant: "primary", size: "m", disabled: isLoading }, displayButtonText)) : (React.createElement("div", { className: "designbase-figma-upgrade-banner__icon" },
|
|
1092
1386
|
React.createElement(icons.ChevronRightIcon, { size: 20 })))));
|
|
1093
|
-
return (React.createElement("div", { className: `designbase-figma-upgrade-banner designbase-figma-upgrade-banner--${variant} ${className || ''}` }, useGradient ? (React.createElement(
|
|
1387
|
+
return (React.createElement("div", { className: `designbase-figma-upgrade-banner designbase-figma-upgrade-banner--${variant} ${className || ''}` }, useGradient ? (React.createElement(react.RandomGradient, { scheme: gradientScheme, tone: gradientTone, animated: gradientAnimated, height: "100%", width: "100%", className: "designbase-figma-upgrade-banner__gradient-bg" }, bannerContent)) : (bannerContent)));
|
|
1094
1388
|
};
|
|
1095
1389
|
UpgradeBanner.displayName = 'UpgradeBanner';
|
|
1096
1390
|
|
|
1391
|
+
Object.defineProperty(exports, 'Accordion', {
|
|
1392
|
+
enumerable: true,
|
|
1393
|
+
get: function () { return react.Accordion; }
|
|
1394
|
+
});
|
|
1395
|
+
Object.defineProperty(exports, 'ActivityHeatmap', {
|
|
1396
|
+
enumerable: true,
|
|
1397
|
+
get: function () { return react.ActivityHeatmap; }
|
|
1398
|
+
});
|
|
1399
|
+
Object.defineProperty(exports, 'AdBanner', {
|
|
1400
|
+
enumerable: true,
|
|
1401
|
+
get: function () { return react.AdBanner; }
|
|
1402
|
+
});
|
|
1403
|
+
Object.defineProperty(exports, 'AiChat', {
|
|
1404
|
+
enumerable: true,
|
|
1405
|
+
get: function () { return react.AiChat; }
|
|
1406
|
+
});
|
|
1407
|
+
Object.defineProperty(exports, 'AiChatList', {
|
|
1408
|
+
enumerable: true,
|
|
1409
|
+
get: function () { return react.AiChatList; }
|
|
1410
|
+
});
|
|
1411
|
+
Object.defineProperty(exports, 'Alert', {
|
|
1412
|
+
enumerable: true,
|
|
1413
|
+
get: function () { return react.Alert; }
|
|
1414
|
+
});
|
|
1415
|
+
Object.defineProperty(exports, 'AnimationBackground', {
|
|
1416
|
+
enumerable: true,
|
|
1417
|
+
get: function () { return react.AnimationBackground; }
|
|
1418
|
+
});
|
|
1419
|
+
Object.defineProperty(exports, 'AnimationText', {
|
|
1420
|
+
enumerable: true,
|
|
1421
|
+
get: function () { return react.AnimationText; }
|
|
1422
|
+
});
|
|
1423
|
+
Object.defineProperty(exports, 'AppBadge', {
|
|
1424
|
+
enumerable: true,
|
|
1425
|
+
get: function () { return react.AppBadge; }
|
|
1426
|
+
});
|
|
1427
|
+
Object.defineProperty(exports, 'AudioPlayer', {
|
|
1428
|
+
enumerable: true,
|
|
1429
|
+
get: function () { return react.AudioPlayer; }
|
|
1430
|
+
});
|
|
1431
|
+
Object.defineProperty(exports, 'Avatar', {
|
|
1432
|
+
enumerable: true,
|
|
1433
|
+
get: function () { return react.Avatar; }
|
|
1434
|
+
});
|
|
1435
|
+
Object.defineProperty(exports, 'Backdrop', {
|
|
1436
|
+
enumerable: true,
|
|
1437
|
+
get: function () { return react.Backdrop; }
|
|
1438
|
+
});
|
|
1439
|
+
Object.defineProperty(exports, 'Badge', {
|
|
1440
|
+
enumerable: true,
|
|
1441
|
+
get: function () { return react.Badge; }
|
|
1442
|
+
});
|
|
1443
|
+
Object.defineProperty(exports, 'Banner', {
|
|
1444
|
+
enumerable: true,
|
|
1445
|
+
get: function () { return react.Banner; }
|
|
1446
|
+
});
|
|
1447
|
+
Object.defineProperty(exports, 'BottomNavigation', {
|
|
1448
|
+
enumerable: true,
|
|
1449
|
+
get: function () { return react.BottomNavigation; }
|
|
1450
|
+
});
|
|
1451
|
+
Object.defineProperty(exports, 'BottomSheet', {
|
|
1452
|
+
enumerable: true,
|
|
1453
|
+
get: function () { return react.BottomSheet; }
|
|
1454
|
+
});
|
|
1455
|
+
Object.defineProperty(exports, 'Breadcrumbs', {
|
|
1456
|
+
enumerable: true,
|
|
1457
|
+
get: function () { return react.Breadcrumbs; }
|
|
1458
|
+
});
|
|
1459
|
+
Object.defineProperty(exports, 'Button', {
|
|
1460
|
+
enumerable: true,
|
|
1461
|
+
get: function () { return react.Button; }
|
|
1462
|
+
});
|
|
1463
|
+
Object.defineProperty(exports, 'Calendar', {
|
|
1464
|
+
enumerable: true,
|
|
1465
|
+
get: function () { return react.Calendar; }
|
|
1466
|
+
});
|
|
1467
|
+
Object.defineProperty(exports, 'Card', {
|
|
1468
|
+
enumerable: true,
|
|
1469
|
+
get: function () { return react.Card; }
|
|
1470
|
+
});
|
|
1471
|
+
Object.defineProperty(exports, 'Carousel', {
|
|
1472
|
+
enumerable: true,
|
|
1473
|
+
get: function () { return react.Carousel; }
|
|
1474
|
+
});
|
|
1475
|
+
Object.defineProperty(exports, 'ChatComposer', {
|
|
1476
|
+
enumerable: true,
|
|
1477
|
+
get: function () { return react.ChatComposer; }
|
|
1478
|
+
});
|
|
1479
|
+
Object.defineProperty(exports, 'ChatList', {
|
|
1480
|
+
enumerable: true,
|
|
1481
|
+
get: function () { return react.ChatList; }
|
|
1482
|
+
});
|
|
1483
|
+
Object.defineProperty(exports, 'ChatMessage', {
|
|
1484
|
+
enumerable: true,
|
|
1485
|
+
get: function () { return react.ChatMessage; }
|
|
1486
|
+
});
|
|
1487
|
+
Object.defineProperty(exports, 'ChatOrb', {
|
|
1488
|
+
enumerable: true,
|
|
1489
|
+
get: function () { return react.ChatOrb; }
|
|
1490
|
+
});
|
|
1491
|
+
Object.defineProperty(exports, 'ChatRoom', {
|
|
1492
|
+
enumerable: true,
|
|
1493
|
+
get: function () { return react.ChatRoom; }
|
|
1494
|
+
});
|
|
1495
|
+
Object.defineProperty(exports, 'ChatSuggestions', {
|
|
1496
|
+
enumerable: true,
|
|
1497
|
+
get: function () { return react.ChatSuggestions; }
|
|
1498
|
+
});
|
|
1499
|
+
Object.defineProperty(exports, 'ChatTyping', {
|
|
1500
|
+
enumerable: true,
|
|
1501
|
+
get: function () { return react.ChatTyping; }
|
|
1502
|
+
});
|
|
1503
|
+
Object.defineProperty(exports, 'ChatWelcome', {
|
|
1504
|
+
enumerable: true,
|
|
1505
|
+
get: function () { return react.ChatWelcome; }
|
|
1506
|
+
});
|
|
1507
|
+
Object.defineProperty(exports, 'ChatWidget', {
|
|
1508
|
+
enumerable: true,
|
|
1509
|
+
get: function () { return react.ChatWidget; }
|
|
1510
|
+
});
|
|
1511
|
+
Object.defineProperty(exports, 'Checkbox', {
|
|
1512
|
+
enumerable: true,
|
|
1513
|
+
get: function () { return react.Checkbox; }
|
|
1514
|
+
});
|
|
1515
|
+
Object.defineProperty(exports, 'Chip', {
|
|
1516
|
+
enumerable: true,
|
|
1517
|
+
get: function () { return react.Chip; }
|
|
1518
|
+
});
|
|
1519
|
+
Object.defineProperty(exports, 'CodeBlock', {
|
|
1520
|
+
enumerable: true,
|
|
1521
|
+
get: function () { return react.CodeBlock; }
|
|
1522
|
+
});
|
|
1523
|
+
Object.defineProperty(exports, 'ColorPicker', {
|
|
1524
|
+
enumerable: true,
|
|
1525
|
+
get: function () { return react.ColorPicker; }
|
|
1526
|
+
});
|
|
1527
|
+
Object.defineProperty(exports, 'ColorSwatch', {
|
|
1528
|
+
enumerable: true,
|
|
1529
|
+
get: function () { return react.ColorSwatch; }
|
|
1530
|
+
});
|
|
1531
|
+
Object.defineProperty(exports, 'Confirm', {
|
|
1532
|
+
enumerable: true,
|
|
1533
|
+
get: function () { return react.Confirm; }
|
|
1534
|
+
});
|
|
1535
|
+
Object.defineProperty(exports, 'Container', {
|
|
1536
|
+
enumerable: true,
|
|
1537
|
+
get: function () { return react.Container; }
|
|
1538
|
+
});
|
|
1539
|
+
Object.defineProperty(exports, 'ContextMenu', {
|
|
1540
|
+
enumerable: true,
|
|
1541
|
+
get: function () { return react.ContextMenu; }
|
|
1542
|
+
});
|
|
1543
|
+
Object.defineProperty(exports, 'CookieBanner', {
|
|
1544
|
+
enumerable: true,
|
|
1545
|
+
get: function () { return react.CookieBanner; }
|
|
1546
|
+
});
|
|
1547
|
+
Object.defineProperty(exports, 'Countdown', {
|
|
1548
|
+
enumerable: true,
|
|
1549
|
+
get: function () { return react.Countdown; }
|
|
1550
|
+
});
|
|
1551
|
+
Object.defineProperty(exports, 'CursorFollower', {
|
|
1552
|
+
enumerable: true,
|
|
1553
|
+
get: function () { return react.CursorFollower; }
|
|
1554
|
+
});
|
|
1555
|
+
Object.defineProperty(exports, 'DatePicker', {
|
|
1556
|
+
enumerable: true,
|
|
1557
|
+
get: function () { return react.DatePicker; }
|
|
1558
|
+
});
|
|
1559
|
+
Object.defineProperty(exports, 'Divider', {
|
|
1560
|
+
enumerable: true,
|
|
1561
|
+
get: function () { return react.Divider; }
|
|
1562
|
+
});
|
|
1563
|
+
Object.defineProperty(exports, 'DownloadProgress', {
|
|
1564
|
+
enumerable: true,
|
|
1565
|
+
get: function () { return react.DownloadProgress; }
|
|
1566
|
+
});
|
|
1567
|
+
Object.defineProperty(exports, 'Drawer', {
|
|
1568
|
+
enumerable: true,
|
|
1569
|
+
get: function () { return react.Drawer; }
|
|
1570
|
+
});
|
|
1571
|
+
Object.defineProperty(exports, 'Dropdown', {
|
|
1572
|
+
enumerable: true,
|
|
1573
|
+
get: function () { return react.Dropdown; }
|
|
1574
|
+
});
|
|
1575
|
+
Object.defineProperty(exports, 'Dropzone', {
|
|
1576
|
+
enumerable: true,
|
|
1577
|
+
get: function () { return react.Dropzone; }
|
|
1578
|
+
});
|
|
1579
|
+
Object.defineProperty(exports, 'EmailVerify', {
|
|
1580
|
+
enumerable: true,
|
|
1581
|
+
get: function () { return react.EmailVerify; }
|
|
1582
|
+
});
|
|
1583
|
+
Object.defineProperty(exports, 'EmptyState', {
|
|
1584
|
+
enumerable: true,
|
|
1585
|
+
get: function () { return react.EmptyState; }
|
|
1586
|
+
});
|
|
1587
|
+
Object.defineProperty(exports, 'FileUploader', {
|
|
1588
|
+
enumerable: true,
|
|
1589
|
+
get: function () { return react.FileUploader; }
|
|
1590
|
+
});
|
|
1591
|
+
Object.defineProperty(exports, 'FloatingActionButton', {
|
|
1592
|
+
enumerable: true,
|
|
1593
|
+
get: function () { return react.FloatingActionButton; }
|
|
1594
|
+
});
|
|
1595
|
+
Object.defineProperty(exports, 'Footer', {
|
|
1596
|
+
enumerable: true,
|
|
1597
|
+
get: function () { return react.Footer; }
|
|
1598
|
+
});
|
|
1599
|
+
Object.defineProperty(exports, 'Form', {
|
|
1600
|
+
enumerable: true,
|
|
1601
|
+
get: function () { return react.Form; }
|
|
1602
|
+
});
|
|
1603
|
+
Object.defineProperty(exports, 'Gantt', {
|
|
1604
|
+
enumerable: true,
|
|
1605
|
+
get: function () { return react.Gantt; }
|
|
1606
|
+
});
|
|
1607
|
+
Object.defineProperty(exports, 'Gradient', {
|
|
1608
|
+
enumerable: true,
|
|
1609
|
+
get: function () { return react.Gradient; }
|
|
1610
|
+
});
|
|
1611
|
+
Object.defineProperty(exports, 'Grid', {
|
|
1612
|
+
enumerable: true,
|
|
1613
|
+
get: function () { return react.Grid; }
|
|
1614
|
+
});
|
|
1615
|
+
Object.defineProperty(exports, 'GridBackground', {
|
|
1616
|
+
enumerable: true,
|
|
1617
|
+
get: function () { return react.GridBackground; }
|
|
1618
|
+
});
|
|
1619
|
+
Object.defineProperty(exports, 'GridItem', {
|
|
1620
|
+
enumerable: true,
|
|
1621
|
+
get: function () { return react.GridItem; }
|
|
1622
|
+
});
|
|
1623
|
+
Object.defineProperty(exports, 'Image', {
|
|
1624
|
+
enumerable: true,
|
|
1625
|
+
get: function () { return react.Image; }
|
|
1626
|
+
});
|
|
1627
|
+
Object.defineProperty(exports, 'ImageList', {
|
|
1628
|
+
enumerable: true,
|
|
1629
|
+
get: function () { return react.ImageList; }
|
|
1630
|
+
});
|
|
1631
|
+
Object.defineProperty(exports, 'ImagePlaceholder', {
|
|
1632
|
+
enumerable: true,
|
|
1633
|
+
get: function () { return react.ImagePlaceholder; }
|
|
1634
|
+
});
|
|
1635
|
+
Object.defineProperty(exports, 'Indicator', {
|
|
1636
|
+
enumerable: true,
|
|
1637
|
+
get: function () { return react.Indicator; }
|
|
1638
|
+
});
|
|
1639
|
+
Object.defineProperty(exports, 'Input', {
|
|
1640
|
+
enumerable: true,
|
|
1641
|
+
get: function () { return react.Input; }
|
|
1642
|
+
});
|
|
1643
|
+
Object.defineProperty(exports, 'Kanban', {
|
|
1644
|
+
enumerable: true,
|
|
1645
|
+
get: function () { return react.Kanban; }
|
|
1646
|
+
});
|
|
1647
|
+
Object.defineProperty(exports, 'Label', {
|
|
1648
|
+
enumerable: true,
|
|
1649
|
+
get: function () { return react.Label; }
|
|
1650
|
+
});
|
|
1651
|
+
Object.defineProperty(exports, 'Lightbox', {
|
|
1652
|
+
enumerable: true,
|
|
1653
|
+
get: function () { return react.Lightbox; }
|
|
1654
|
+
});
|
|
1655
|
+
Object.defineProperty(exports, 'List', {
|
|
1656
|
+
enumerable: true,
|
|
1657
|
+
get: function () { return react.List; }
|
|
1658
|
+
});
|
|
1659
|
+
Object.defineProperty(exports, 'Logo', {
|
|
1660
|
+
enumerable: true,
|
|
1661
|
+
get: function () { return react.Logo; }
|
|
1662
|
+
});
|
|
1663
|
+
Object.defineProperty(exports, 'MarkdownEditor', {
|
|
1664
|
+
enumerable: true,
|
|
1665
|
+
get: function () { return react.MarkdownEditor; }
|
|
1666
|
+
});
|
|
1667
|
+
Object.defineProperty(exports, 'Marquee', {
|
|
1668
|
+
enumerable: true,
|
|
1669
|
+
get: function () { return react.Marquee; }
|
|
1670
|
+
});
|
|
1671
|
+
Object.defineProperty(exports, 'Masonry', {
|
|
1672
|
+
enumerable: true,
|
|
1673
|
+
get: function () { return react.Masonry; }
|
|
1674
|
+
});
|
|
1675
|
+
Object.defineProperty(exports, 'MenuItem', {
|
|
1676
|
+
enumerable: true,
|
|
1677
|
+
get: function () { return react.MenuItem; }
|
|
1678
|
+
});
|
|
1679
|
+
Object.defineProperty(exports, 'Modal', {
|
|
1680
|
+
enumerable: true,
|
|
1681
|
+
get: function () { return react.Modal; }
|
|
1682
|
+
});
|
|
1683
|
+
Object.defineProperty(exports, 'ModalBody', {
|
|
1684
|
+
enumerable: true,
|
|
1685
|
+
get: function () { return react.ModalBody; }
|
|
1686
|
+
});
|
|
1687
|
+
Object.defineProperty(exports, 'ModalFooter', {
|
|
1688
|
+
enumerable: true,
|
|
1689
|
+
get: function () { return react.ModalFooter; }
|
|
1690
|
+
});
|
|
1691
|
+
Object.defineProperty(exports, 'ModalHeader', {
|
|
1692
|
+
enumerable: true,
|
|
1693
|
+
get: function () { return react.ModalHeader; }
|
|
1694
|
+
});
|
|
1695
|
+
Object.defineProperty(exports, 'Navbar', {
|
|
1696
|
+
enumerable: true,
|
|
1697
|
+
get: function () { return react.Navbar; }
|
|
1698
|
+
});
|
|
1699
|
+
Object.defineProperty(exports, 'OnboardingModal', {
|
|
1700
|
+
enumerable: true,
|
|
1701
|
+
get: function () { return react.OnboardingModal; }
|
|
1702
|
+
});
|
|
1703
|
+
Object.defineProperty(exports, 'OtpInput', {
|
|
1704
|
+
enumerable: true,
|
|
1705
|
+
get: function () { return react.OtpInput; }
|
|
1706
|
+
});
|
|
1707
|
+
Object.defineProperty(exports, 'PageHeader', {
|
|
1708
|
+
enumerable: true,
|
|
1709
|
+
get: function () { return react.PageHeader; }
|
|
1710
|
+
});
|
|
1711
|
+
Object.defineProperty(exports, 'Pagination', {
|
|
1712
|
+
enumerable: true,
|
|
1713
|
+
get: function () { return react.Pagination; }
|
|
1714
|
+
});
|
|
1715
|
+
Object.defineProperty(exports, 'PhoneVerify', {
|
|
1716
|
+
enumerable: true,
|
|
1717
|
+
get: function () { return react.PhoneVerify; }
|
|
1718
|
+
});
|
|
1719
|
+
Object.defineProperty(exports, 'Popover', {
|
|
1720
|
+
enumerable: true,
|
|
1721
|
+
get: function () { return react.Popover; }
|
|
1722
|
+
});
|
|
1723
|
+
Object.defineProperty(exports, 'Progress', {
|
|
1724
|
+
enumerable: true,
|
|
1725
|
+
get: function () { return react.Progress; }
|
|
1726
|
+
});
|
|
1727
|
+
Object.defineProperty(exports, 'ProgressStep', {
|
|
1728
|
+
enumerable: true,
|
|
1729
|
+
get: function () { return react.ProgressStep; }
|
|
1730
|
+
});
|
|
1731
|
+
Object.defineProperty(exports, 'Progressbar', {
|
|
1732
|
+
enumerable: true,
|
|
1733
|
+
get: function () { return react.Progressbar; }
|
|
1734
|
+
});
|
|
1735
|
+
Object.defineProperty(exports, 'Radio', {
|
|
1736
|
+
enumerable: true,
|
|
1737
|
+
get: function () { return react.Radio; }
|
|
1738
|
+
});
|
|
1739
|
+
Object.defineProperty(exports, 'RandomGradient', {
|
|
1740
|
+
enumerable: true,
|
|
1741
|
+
get: function () { return react.RandomGradient; }
|
|
1742
|
+
});
|
|
1743
|
+
Object.defineProperty(exports, 'RangeSlider', {
|
|
1744
|
+
enumerable: true,
|
|
1745
|
+
get: function () { return react.RangeSlider; }
|
|
1746
|
+
});
|
|
1747
|
+
Object.defineProperty(exports, 'Rating', {
|
|
1748
|
+
enumerable: true,
|
|
1749
|
+
get: function () { return react.Rating; }
|
|
1750
|
+
});
|
|
1751
|
+
Object.defineProperty(exports, 'Reorder', {
|
|
1752
|
+
enumerable: true,
|
|
1753
|
+
get: function () { return react.Reorder; }
|
|
1754
|
+
});
|
|
1755
|
+
Object.defineProperty(exports, 'ResizablePanels', {
|
|
1756
|
+
enumerable: true,
|
|
1757
|
+
get: function () { return react.ResizablePanels; }
|
|
1758
|
+
});
|
|
1759
|
+
Object.defineProperty(exports, 'ScrollArea', {
|
|
1760
|
+
enumerable: true,
|
|
1761
|
+
get: function () { return react.ScrollArea; }
|
|
1762
|
+
});
|
|
1763
|
+
Object.defineProperty(exports, 'SearchBar', {
|
|
1764
|
+
enumerable: true,
|
|
1765
|
+
get: function () { return react.SearchBar; }
|
|
1766
|
+
});
|
|
1767
|
+
Object.defineProperty(exports, 'Section', {
|
|
1768
|
+
enumerable: true,
|
|
1769
|
+
get: function () { return react.Section; }
|
|
1770
|
+
});
|
|
1771
|
+
Object.defineProperty(exports, 'SectionAppDownload', {
|
|
1772
|
+
enumerable: true,
|
|
1773
|
+
get: function () { return react.SectionAppDownload; }
|
|
1774
|
+
});
|
|
1775
|
+
Object.defineProperty(exports, 'SectionContact', {
|
|
1776
|
+
enumerable: true,
|
|
1777
|
+
get: function () { return react.SectionContact; }
|
|
1778
|
+
});
|
|
1779
|
+
Object.defineProperty(exports, 'SectionCta', {
|
|
1780
|
+
enumerable: true,
|
|
1781
|
+
get: function () { return react.SectionCta; }
|
|
1782
|
+
});
|
|
1783
|
+
Object.defineProperty(exports, 'SectionFaq', {
|
|
1784
|
+
enumerable: true,
|
|
1785
|
+
get: function () { return react.SectionFaq; }
|
|
1786
|
+
});
|
|
1787
|
+
Object.defineProperty(exports, 'SectionFeature', {
|
|
1788
|
+
enumerable: true,
|
|
1789
|
+
get: function () { return react.SectionFeature; }
|
|
1790
|
+
});
|
|
1791
|
+
Object.defineProperty(exports, 'SectionFeatureGrid', {
|
|
1792
|
+
enumerable: true,
|
|
1793
|
+
get: function () { return react.SectionFeatureGrid; }
|
|
1794
|
+
});
|
|
1795
|
+
Object.defineProperty(exports, 'SectionHero', {
|
|
1796
|
+
enumerable: true,
|
|
1797
|
+
get: function () { return react.SectionHero; }
|
|
1798
|
+
});
|
|
1799
|
+
Object.defineProperty(exports, 'SectionLogoCloud', {
|
|
1800
|
+
enumerable: true,
|
|
1801
|
+
get: function () { return react.SectionLogoCloud; }
|
|
1802
|
+
});
|
|
1803
|
+
Object.defineProperty(exports, 'SectionPricing', {
|
|
1804
|
+
enumerable: true,
|
|
1805
|
+
get: function () { return react.SectionPricing; }
|
|
1806
|
+
});
|
|
1807
|
+
Object.defineProperty(exports, 'SectionStats', {
|
|
1808
|
+
enumerable: true,
|
|
1809
|
+
get: function () { return react.SectionStats; }
|
|
1810
|
+
});
|
|
1811
|
+
Object.defineProperty(exports, 'SectionTestimonials', {
|
|
1812
|
+
enumerable: true,
|
|
1813
|
+
get: function () { return react.SectionTestimonials; }
|
|
1814
|
+
});
|
|
1815
|
+
Object.defineProperty(exports, 'SegmentControl', {
|
|
1816
|
+
enumerable: true,
|
|
1817
|
+
get: function () { return react.SegmentControl; }
|
|
1818
|
+
});
|
|
1819
|
+
Object.defineProperty(exports, 'Select', {
|
|
1820
|
+
enumerable: true,
|
|
1821
|
+
get: function () { return react.Select; }
|
|
1822
|
+
});
|
|
1823
|
+
Object.defineProperty(exports, 'Share', {
|
|
1824
|
+
enumerable: true,
|
|
1825
|
+
get: function () { return react.Share; }
|
|
1826
|
+
});
|
|
1827
|
+
Object.defineProperty(exports, 'Sidebar', {
|
|
1828
|
+
enumerable: true,
|
|
1829
|
+
get: function () { return react.Sidebar; }
|
|
1830
|
+
});
|
|
1831
|
+
Object.defineProperty(exports, 'Signature', {
|
|
1832
|
+
enumerable: true,
|
|
1833
|
+
get: function () { return react.Signature; }
|
|
1834
|
+
});
|
|
1835
|
+
Object.defineProperty(exports, 'Skeleton', {
|
|
1836
|
+
enumerable: true,
|
|
1837
|
+
get: function () { return react.Skeleton; }
|
|
1838
|
+
});
|
|
1839
|
+
Object.defineProperty(exports, 'Spinner', {
|
|
1840
|
+
enumerable: true,
|
|
1841
|
+
get: function () { return react.Spinner; }
|
|
1842
|
+
});
|
|
1843
|
+
Object.defineProperty(exports, 'SplitView', {
|
|
1844
|
+
enumerable: true,
|
|
1845
|
+
get: function () { return react.SplitView; }
|
|
1846
|
+
});
|
|
1847
|
+
Object.defineProperty(exports, 'Stack', {
|
|
1848
|
+
enumerable: true,
|
|
1849
|
+
get: function () { return react.Stack; }
|
|
1850
|
+
});
|
|
1851
|
+
Object.defineProperty(exports, 'Stat', {
|
|
1852
|
+
enumerable: true,
|
|
1853
|
+
get: function () { return react.Stat; }
|
|
1854
|
+
});
|
|
1855
|
+
Object.defineProperty(exports, 'Stepper', {
|
|
1856
|
+
enumerable: true,
|
|
1857
|
+
get: function () { return react.Stepper; }
|
|
1858
|
+
});
|
|
1859
|
+
Object.defineProperty(exports, 'Table', {
|
|
1860
|
+
enumerable: true,
|
|
1861
|
+
get: function () { return react.Table; }
|
|
1862
|
+
});
|
|
1863
|
+
Object.defineProperty(exports, 'Tabs', {
|
|
1864
|
+
enumerable: true,
|
|
1865
|
+
get: function () { return react.Tabs; }
|
|
1866
|
+
});
|
|
1867
|
+
Object.defineProperty(exports, 'Testimonial', {
|
|
1868
|
+
enumerable: true,
|
|
1869
|
+
get: function () { return react.Testimonial; }
|
|
1870
|
+
});
|
|
1871
|
+
Object.defineProperty(exports, 'Textarea', {
|
|
1872
|
+
enumerable: true,
|
|
1873
|
+
get: function () { return react.Textarea; }
|
|
1874
|
+
});
|
|
1875
|
+
Object.defineProperty(exports, 'TimePicker', {
|
|
1876
|
+
enumerable: true,
|
|
1877
|
+
get: function () { return react.TimePicker; }
|
|
1878
|
+
});
|
|
1879
|
+
Object.defineProperty(exports, 'Timeline', {
|
|
1880
|
+
enumerable: true,
|
|
1881
|
+
get: function () { return react.Timeline; }
|
|
1882
|
+
});
|
|
1883
|
+
Object.defineProperty(exports, 'Toast', {
|
|
1884
|
+
enumerable: true,
|
|
1885
|
+
get: function () { return react.Toast; }
|
|
1886
|
+
});
|
|
1887
|
+
Object.defineProperty(exports, 'Toggle', {
|
|
1888
|
+
enumerable: true,
|
|
1889
|
+
get: function () { return react.Toggle; }
|
|
1890
|
+
});
|
|
1891
|
+
Object.defineProperty(exports, 'Toolbar', {
|
|
1892
|
+
enumerable: true,
|
|
1893
|
+
get: function () { return react.Toolbar; }
|
|
1894
|
+
});
|
|
1895
|
+
Object.defineProperty(exports, 'Tooltip', {
|
|
1896
|
+
enumerable: true,
|
|
1897
|
+
get: function () { return react.Tooltip; }
|
|
1898
|
+
});
|
|
1899
|
+
Object.defineProperty(exports, 'TopBanner', {
|
|
1900
|
+
enumerable: true,
|
|
1901
|
+
get: function () { return react.TopBanner; }
|
|
1902
|
+
});
|
|
1903
|
+
Object.defineProperty(exports, 'Tutorial', {
|
|
1904
|
+
enumerable: true,
|
|
1905
|
+
get: function () { return react.Tutorial; }
|
|
1906
|
+
});
|
|
1907
|
+
Object.defineProperty(exports, 'TwoFactor', {
|
|
1908
|
+
enumerable: true,
|
|
1909
|
+
get: function () { return react.TwoFactor; }
|
|
1910
|
+
});
|
|
1911
|
+
Object.defineProperty(exports, 'VideoPlayer', {
|
|
1912
|
+
enumerable: true,
|
|
1913
|
+
get: function () { return react.VideoPlayer; }
|
|
1914
|
+
});
|
|
1915
|
+
Object.defineProperty(exports, 'YouTubePlayer', {
|
|
1916
|
+
enumerable: true,
|
|
1917
|
+
get: function () { return react.YouTubePlayer; }
|
|
1918
|
+
});
|
|
1919
|
+
Object.defineProperty(exports, 'useContextMenu', {
|
|
1920
|
+
enumerable: true,
|
|
1921
|
+
get: function () { return react.useContextMenu; }
|
|
1922
|
+
});
|
|
1923
|
+
exports.DEFAULT_LICENSE_MESSAGE_TYPES = DEFAULT_LICENSE_MESSAGE_TYPES;
|
|
1097
1924
|
exports.DonationBadge = DonationBadge;
|
|
1098
1925
|
exports.FigmaContainer = FigmaContainer;
|
|
1099
1926
|
exports.FigmaFooter = FigmaFooter;
|
|
@@ -1106,6 +1933,8 @@ exports.FigmaToastProvider = FigmaToastProvider;
|
|
|
1106
1933
|
exports.FormWithSubmit = FormWithSubmit;
|
|
1107
1934
|
exports.InteractionFeedback = InteractionFeedback;
|
|
1108
1935
|
exports.LanguageSelector = LanguageSelector;
|
|
1936
|
+
exports.LicenseOffer = LicenseOffer;
|
|
1937
|
+
exports.LicenseStatusCard = LicenseStatusCard;
|
|
1109
1938
|
exports.LogoDropdown = LogoDropdown;
|
|
1110
1939
|
exports.PageLicense = PageLicense;
|
|
1111
1940
|
exports.PaymentBadge = PaymentBadge;
|
|
@@ -1113,18 +1942,20 @@ exports.PaymentStatusSection = PaymentStatusSection;
|
|
|
1113
1942
|
exports.PricingComparison = PricingComparison;
|
|
1114
1943
|
exports.ProgressModal = ProgressModal;
|
|
1115
1944
|
exports.ResizablePlugin = ResizablePlugin;
|
|
1945
|
+
exports.START_DESIGNBASE_AUTH_MESSAGE = START_DESIGNBASE_AUTH_MESSAGE;
|
|
1116
1946
|
exports.SettingsModal = SettingsModal;
|
|
1117
1947
|
exports.TitleDescription = TitleDescription;
|
|
1118
1948
|
exports.UpgradeBanner = UpgradeBanner;
|
|
1119
1949
|
exports.getActiveSection = getActiveSection;
|
|
1120
1950
|
exports.resolveText = resolveText;
|
|
1121
1951
|
exports.scrollToSection = scrollToSection;
|
|
1952
|
+
exports.useFigmaLicenseBridge = useFigmaLicenseBridge;
|
|
1122
1953
|
exports.useFigmaToast = useFigmaToast;
|
|
1123
1954
|
exports.useToast = useToast;
|
|
1124
|
-
Object.keys(
|
|
1955
|
+
Object.keys(react).forEach(function (k) {
|
|
1125
1956
|
if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
|
|
1126
1957
|
enumerable: true,
|
|
1127
|
-
get: function () { return
|
|
1958
|
+
get: function () { return react[k]; }
|
|
1128
1959
|
});
|
|
1129
1960
|
});
|
|
1130
1961
|
//# sourceMappingURL=index.js.map
|