@designbasekorea/figma-ui 0.6.4 → 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/dist/index.js CHANGED
@@ -428,7 +428,11 @@ const LanguageSelector = ({ currentLanguage, languages = DEFAULT_LANGUAGES, onLa
428
428
  }));
429
429
  return (React.createElement("div", { className: `designbase-figma-language-selector ${className || ''}` },
430
430
  React.createElement(react.SegmentControl, { options: segmentOptions, value: activeLanguage, onChange: (event) => {
431
- const value = event.detail?.value;
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;
432
436
  if (value) {
433
437
  handleLanguageChange(value);
434
438
  }
@@ -654,6 +658,88 @@ const InteractionFeedback = ({ status = 'default', message, statusMessage, leftC
654
658
  };
655
659
  InteractionFeedback.displayName = 'InteractionFeedback';
656
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
+
657
743
  const defaultFeatures = [
658
744
  { name: '사용 제한', free: '일일 제한', pro: '무제한' },
659
745
  { name: '모든 주제 사용', free: false, pro: true },
@@ -687,7 +773,11 @@ const PricingComparison = ({ features = defaultFeatures, pricing = defaultPricin
687
773
  return (React.createElement("div", { className: `designbase-figma-pricing-comparison ${className || ''}` },
688
774
  paymentType === 'subscription' && (React.createElement("div", { className: "designbase-figma-pricing-comparison__billing-toggle" },
689
775
  React.createElement(react.SegmentControl, { value: isYearly ? 'yearly' : 'monthly', onChange: (event) => {
690
- const value = event.detail?.value;
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;
691
781
  setIsYearly(value === 'yearly');
692
782
  }, options: [
693
783
  {
@@ -724,21 +814,6 @@ const PricingComparison = ({ features = defaultFeatures, pricing = defaultPricin
724
814
  };
725
815
  PricingComparison.displayName = 'PricingComparison';
726
816
 
727
- function postPluginMessage(message) {
728
- if (typeof parent === 'undefined') {
729
- return;
730
- }
731
- parent.postMessage({ pluginMessage: message }, '*');
732
- }
733
- function openExternalUrl(url) {
734
- if (!url)
735
- return;
736
- postPluginMessage({ type: 'open-external-url', url });
737
- if (typeof window !== 'undefined') {
738
- window.open(url, '_blank', 'noopener,noreferrer');
739
- }
740
- }
741
-
742
817
  const DEFAULT_LICENSE_MESSAGE_TYPES = {
743
818
  initialize: 'initialize',
744
819
  verifyLicense: 'verify-license',
@@ -811,6 +886,12 @@ function parseLicenseMessage(data) {
811
886
  usageReason: readString(data, ['usageReason']) || undefined,
812
887
  lastMessage: readString(data, ['message']) || undefined,
813
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,
814
895
  };
815
896
  }
816
897
  function useFigmaLicenseBridge(options = {}) {
@@ -916,28 +997,29 @@ function useFigmaLicenseBridge(options = {}) {
916
997
  function formatUsageLabel(state, t) {
917
998
  const { remainingUsage, usageUsed, usageLimit, usageReset } = state;
918
999
  if (usageLimit === 'unlimited') {
919
- return resolveText(t, { key: 'license.usage_unlimited' }, '사용 횟수 제한 없음');
1000
+ return resolveText(t, { key: 'license.usage_unlimited' }, '사용 횟수 제한 없음') ?? '사용 횟수 제한 없음';
920
1001
  }
921
1002
  const limit = typeof usageLimit === 'number' ? usageLimit : remainingUsage + usageUsed;
922
1003
  const remaining = remainingUsage ?? Math.max(0, limit - usageUsed);
923
1004
  if (usageReset === 'daily') {
924
1005
  const fallback = `오늘 남은 횟수 ${remaining}/${limit}`;
925
- const translated = resolveText(t, { key: 'license.usage_daily' }, fallback);
1006
+ const translated = resolveText(t, { key: 'license.usage_daily' }, fallback) ?? fallback;
926
1007
  return translated.includes(String(remaining)) ? translated : fallback;
927
1008
  }
928
1009
  if (usageReset === 'monthly') {
929
1010
  const fallback = `이번 달 남은 횟수 ${remaining}/${limit}`;
930
- const translated = resolveText(t, { key: 'license.usage_monthly' }, fallback);
1011
+ const translated = resolveText(t, { key: 'license.usage_monthly' }, fallback) ?? fallback;
931
1012
  return translated.includes(String(remaining)) ? translated : fallback;
932
1013
  }
933
1014
  return `남은 횟수 ${remaining}/${limit}`;
934
1015
  }
935
- const PageLicense = ({ status: initialStatus, onClose, licenseKey: initialLicenseKey = '', wordpressLinks, paymentPageUrl, enableAccountAuth = true, showLicenseKeyInput = true, pricingFeatures, pricing, paymentType = 'subscription', messageTypes, onStateChange, setPaymentStatus, setUsageCount, onLicenseSubmit, usageCount: initialUsageCount = 0, t, className, }) => {
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, }) => {
936
1017
  const links = React.useMemo(() => ({
937
1018
  purchaseUrl: wordpressLinks?.purchaseUrl ?? paymentPageUrl,
1019
+ membershipUrl: membershipUrl ?? wordpressLinks?.membershipUrl,
938
1020
  accountUrl: wordpressLinks?.accountUrl,
939
1021
  helpUrl: wordpressLinks?.helpUrl,
940
- }), [wordpressLinks, paymentPageUrl]);
1022
+ }), [wordpressLinks, paymentPageUrl, membershipUrl]);
941
1023
  const { state, isVerifying, isDeactivating, isStartingAuth, verifyLicense, deactivateLicense, startDesignbaseAuth, setLicenseKeyInput, } = useFigmaLicenseBridge({
942
1024
  messageTypes,
943
1025
  initialState: {
@@ -951,7 +1033,8 @@ const PageLicense = ({ status: initialStatus, onClose, licenseKey: initialLicens
951
1033
  });
952
1034
  const [showDetails, setShowDetails] = React.useState(false);
953
1035
  const [licenseKeyDraft, setLicenseKeyDraft] = React.useState(initialLicenseKey);
954
- const isPaid = state.isLicenseRegistered || state.paymentStatus === 'PAID';
1036
+ const isPaid = state.isLicenseRegistered && state.paymentStatus === 'PAID';
1037
+ const isMembershipMode = mode === 'youtube-membership';
955
1038
  const usageLabel = formatUsageLabel(state, t);
956
1039
  const handleLicenseSubmit = async (submittedLicenseKey) => {
957
1040
  if (onLicenseSubmit) {
@@ -968,25 +1051,26 @@ const PageLicense = ({ status: initialStatus, onClose, licenseKey: initialLicens
968
1051
  React.createElement("div", { className: "designbase-figma-page-license__content" },
969
1052
  React.createElement("div", { className: "designbase-figma-page-license__header" },
970
1053
  React.createElement("div", { className: "designbase-figma-page-license__title" },
971
- React.createElement("h2", null, isPaid
972
- ? resolveText(t, { key: 'license.pro_account' }, '프로 계정')
973
- : resolveText(t, { key: 'license.upgrade_to_pro' }, '프로로 업그레이드')),
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' }, '프로로 업그레이드')),
974
1059
  state.planTier && state.planTier !== 'FREE' && (React.createElement("span", { className: "designbase-figma-page-license__tier" }, state.planTier))),
975
1060
  React.createElement("p", { className: "designbase-figma-page-license__description" }, isPaid
976
1061
  ? resolveText(t, { key: 'license.all_features_available' }, '모든 기능을 사용할 수 있습니다.')
977
- : resolveText(t, { key: 'license.purchase_for_unlimited' }, '디자인베이스 멤버십 또는 라이선스로 무제한 이용이 가능합니다.')),
1062
+ : isMembershipMode
1063
+ ? resolveText(t, { key: 'license.youtube_membership_description' }, 'YouTube 멤버십에 가입하면 Designbase 플러그인을 무제한으로 사용할 수 있습니다.')
1064
+ : resolveText(t, { key: 'license.purchase_for_unlimited' }, '디자인베이스 멤버십 또는 라이선스로 무제한 이용이 가능합니다.')),
978
1065
  !isPaid && (React.createElement("p", { className: "designbase-figma-page-license__usage" }, usageLabel))),
979
- React.createElement(PricingComparison, { features: pricingFeatures, pricing: pricing, paymentType: paymentType, t: t }),
1066
+ !isMembershipMode && (React.createElement(PricingComparison, { features: pricingFeatures, pricing: pricing, paymentType: paymentType, t: t })),
980
1067
  state.lastMessage && (React.createElement("p", { className: `designbase-figma-page-license__feedback ${state.lastErrorCode ? 'designbase-figma-page-license__feedback--error' : ''}` }, state.lastMessage)),
981
1068
  isPaid && (React.createElement("div", { className: "designbase-figma-page-license__section" },
982
1069
  React.createElement("div", { className: "designbase-figma-page-license__section-header" },
983
1070
  React.createElement("h3", null, resolveText(t, { key: 'license.activated' }, '라이선스 활성화됨')),
984
- React.createElement(react.Button, { onClick: () => setShowDetails(!showDetails), variant: "tertiary", size: "s", iconOnly: true },
1071
+ React.createElement(react.Button, { onPress: () => setShowDetails(!showDetails), variant: "tertiary", size: "s", iconOnly: true },
985
1072
  React.createElement(icons.MoreHorizontalIcon, { size: 16 }))),
986
- state.licenseKey && (React.createElement("div", { className: "designbase-figma-page-license__license-key" },
987
- resolveText(t, { key: 'license.key_label' }, '라이선스 키'),
988
- ": ",
989
- React.createElement("span", null, state.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 }),
990
1074
  React.createElement("p", { className: "designbase-figma-page-license__usage" }, usageLabel),
991
1075
  showDetails && (React.createElement("div", { className: "designbase-figma-page-license__details" },
992
1076
  React.createElement("div", { className: "designbase-figma-page-license__activation-info" },
@@ -1000,22 +1084,23 @@ const PageLicense = ({ status: initialStatus, onClose, licenseKey: initialLicens
1000
1084
  state.activationUsage,
1001
1085
  "/",
1002
1086
  state.activationLimit)),
1003
- React.createElement(react.Button, { onClick: deactivateLicense, variant: "tertiary", size: "s", disabled: isDeactivating }, isDeactivating
1087
+ React.createElement(react.Button, { onPress: deactivateLicense, variant: "tertiary", size: "s", disabled: isDeactivating }, isDeactivating
1004
1088
  ? resolveText(t, { key: 'license.deactivating' }, '비활성화 중...')
1005
1089
  : resolveText(t, { key: 'license.deactivate' }, '라이선스 비활성화')))))),
1006
1090
  !isPaid && (React.createElement(React.Fragment, null,
1007
- (enableAccountAuth || links.purchaseUrl || links.accountUrl) && (React.createElement("div", { className: "designbase-figma-page-license__section" },
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" },
1008
1093
  React.createElement("div", { className: "designbase-figma-page-license__section-header" },
1009
1094
  React.createElement("h3", null, resolveText(t, { key: 'license.designbase_account' }, '디자인베이스 계정'))),
1010
1095
  React.createElement("p", { className: "designbase-figma-page-license__hint" }, resolveText(t, { key: 'license.designbase_account_hint' }, 'WordPress 계정으로 로그인하거나 멤버십을 구매하면 플러그인이 자동으로 활성화됩니다.')),
1011
1096
  React.createElement("div", { className: "designbase-figma-page-license__actions" },
1012
- enableAccountAuth && (React.createElement(react.Button, { onClick: startDesignbaseAuth, variant: "primary", size: "m", disabled: isStartingAuth || isVerifying, fullWidth: true }, isStartingAuth
1097
+ enableAccountAuth && (React.createElement(react.Button, { onPress: startDesignbaseAuth, variant: "primary", size: "m", disabled: isStartingAuth || isVerifying, fullWidth: true }, isStartingAuth
1013
1098
  ? resolveText(t, { key: 'license.authenticating' }, '인증 중...')
1014
1099
  : resolveText(t, { key: 'license.login_with_designbase' }, '디자인베이스로 로그인'))),
1015
- links.purchaseUrl && (React.createElement(react.Button, { onClick: () => openExternalUrl(links.purchaseUrl), variant: "secondary", size: "m", fullWidth: true },
1016
- React.createElement("span", null, resolveText(t, { key: 'license.purchase_membership' }, '멤버십 구매')),
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' }, '멤버십 안내')),
1017
1102
  React.createElement(icons.ExternalLinkIcon, { size: 16 }))),
1018
- links.accountUrl && (React.createElement(react.Button, { onClick: () => openExternalUrl(links.accountUrl), variant: "tertiary", size: "s", fullWidth: true },
1103
+ links.accountUrl && (React.createElement(react.Button, { onPress: () => openExternalUrl(links.accountUrl), variant: "tertiary", size: "s", fullWidth: true },
1019
1104
  React.createElement("span", null, resolveText(t, { key: 'license.manage_account' }, '계정·멤버십 관리')),
1020
1105
  React.createElement(icons.ExternalLinkIcon, { size: 16 })))))),
1021
1106
  showLicenseKeyInput && (React.createElement("div", { className: "designbase-figma-page-license__section" },
@@ -1048,7 +1133,7 @@ const PaymentStatusSection = ({ status, usageCount, activationLimit, activationU
1048
1133
  activationUsage,
1049
1134
  "/",
1050
1135
  activationLimit)),
1051
- React.createElement(react.Button, { onClick: onDeactivate, variant: "tertiary", size: "s", disabled: isDeactivating }, isDeactivating
1136
+ React.createElement(react.Button, { onPress: onDeactivate, variant: "tertiary", size: "s", disabled: isDeactivating }, isDeactivating
1052
1137
  ? resolveText(t, { key: 'payment.deactivating' }, '비활성화중...')
1053
1138
  : resolveText(t, { key: 'payment.deactivate_license' }, '라이선스 비활성화'))))));
1054
1139
  };
@@ -1303,6 +1388,538 @@ const UpgradeBanner = ({ onClick, variant = 'button', isLoading = false, title =
1303
1388
  };
1304
1389
  UpgradeBanner.displayName = 'UpgradeBanner';
1305
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
+ });
1306
1923
  exports.DEFAULT_LICENSE_MESSAGE_TYPES = DEFAULT_LICENSE_MESSAGE_TYPES;
1307
1924
  exports.DonationBadge = DonationBadge;
1308
1925
  exports.FigmaContainer = FigmaContainer;
@@ -1316,6 +1933,8 @@ exports.FigmaToastProvider = FigmaToastProvider;
1316
1933
  exports.FormWithSubmit = FormWithSubmit;
1317
1934
  exports.InteractionFeedback = InteractionFeedback;
1318
1935
  exports.LanguageSelector = LanguageSelector;
1936
+ exports.LicenseOffer = LicenseOffer;
1937
+ exports.LicenseStatusCard = LicenseStatusCard;
1319
1938
  exports.LogoDropdown = LogoDropdown;
1320
1939
  exports.PageLicense = PageLicense;
1321
1940
  exports.PaymentBadge = PaymentBadge;