@designbasekorea/figma-ui 0.7.1 → 0.7.3

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.esm.js CHANGED
@@ -53,6 +53,22 @@ const FIGMA_UI_TRANSLATIONS = {
53
53
  'form.submit': '제출',
54
54
  'form.verifying': '확인 중...',
55
55
  'license.youtube_membership': 'YouTube 멤버십',
56
+ 'license.unlock_unlimited': '무제한 사용 활성화',
57
+ 'license.unlock_unlimited_description': '라이선스 키를 등록하면 모든 Designbase 플러그인의 프로 기능과 무제한 사용을 이용할 수 있습니다.',
58
+ 'license.unlimited_benefit_title': '모든 플러그인 무제한 사용',
59
+ 'license.unlimited_benefit_description': '사용 횟수 제한 없이 프로 기능과 프리미엄 콘텐츠를 이용할 수 있습니다.',
60
+ 'license.get_key_title': '라이선스 키 받기',
61
+ 'license.get_key_description': '멤버십 회원에게 매월 새 라이선스 키가 제공됩니다.',
62
+ 'license.get_key_step_1_title': '멤버십 가입',
63
+ 'license.get_key_step_1_description': 'Designbase YouTube 채널에서 멤버십에 가입합니다.',
64
+ 'license.get_key_step_2_title': '이번 달 키 복사',
65
+ 'license.get_key_step_2_description': '멤버 전용 커뮤니티 게시글에서 키를 확인합니다.',
66
+ 'license.get_key_step_3_title': '키 등록',
67
+ 'license.get_key_step_3_description': '아래 입력창에 붙여 넣으면 프로 기능이 열립니다.',
68
+ 'license.get_key_cta': '멤버십 가입하고 키 받기',
69
+ 'license.activate_key_title': '라이선스 키 등록',
70
+ 'license.activate_key_description': '이미 키가 있다면 아래에 붙여 넣어 프로 기능을 활성화하세요.',
71
+ 'license.unlock_pro_features': '프로 기능 활성화',
56
72
  'license.current_plan': '현재 플랜',
57
73
  'license.pro_plan': '프로 플랜',
58
74
  'license.membership': '멤버십',
@@ -84,7 +100,7 @@ const FIGMA_UI_TRANSLATIONS = {
84
100
  'license.submit': '활성화',
85
101
  'license.verifying': '확인 중...',
86
102
  'license.enter_from_email': '이메일로 받은 라이선스 키를 입력하세요.',
87
- 'license.enter_from_youtube': '멤버 전용 커뮤니티에서 받은 키를 입력하세요.',
103
+ 'license.enter_from_youtube': '멤버 전용 게시글에서 복사한 이번 달 키를 입력하세요.',
88
104
  'license.help_link': '라이선스·결제 도움말',
89
105
  'license.youtube_membership_howto': '이용 방법',
90
106
  'license.youtube_membership_step_1': 'Designbase YouTube 채널 멤버십에 가입합니다.',
@@ -191,6 +207,22 @@ const FIGMA_UI_TRANSLATIONS = {
191
207
  'form.submit': 'Activate',
192
208
  'form.verifying': 'Verifying...',
193
209
  'license.youtube_membership': 'YouTube Membership',
210
+ 'license.unlock_unlimited': 'Unlock Unlimited Access',
211
+ 'license.unlock_unlimited_description': 'Add a license key to unlock Pro features and unlimited use across Designbase plugins.',
212
+ 'license.unlimited_benefit_title': 'Unlimited access to every plugin',
213
+ 'license.unlimited_benefit_description': 'Use Pro features and premium content without usage limits.',
214
+ 'license.get_key_title': 'Get a license key',
215
+ 'license.get_key_description': 'Members receive a new license key every month.',
216
+ 'license.get_key_step_1_title': 'Join the membership',
217
+ 'license.get_key_step_1_description': 'Join the Designbase YouTube channel membership.',
218
+ 'license.get_key_step_2_title': 'Copy this month’s key',
219
+ 'license.get_key_step_2_description': 'Find the key in the members-only community post.',
220
+ 'license.get_key_step_3_title': 'Activate the key',
221
+ 'license.get_key_step_3_description': 'Paste it below to unlock Pro features.',
222
+ 'license.get_key_cta': 'Join and get a license key',
223
+ 'license.activate_key_title': 'Activate your license key',
224
+ 'license.activate_key_description': 'Already have a key? Paste it below to unlock Pro features.',
225
+ 'license.unlock_pro_features': 'Unlock Pro features',
194
226
  'license.current_plan': 'Current plan',
195
227
  'license.pro_plan': 'Pro plan',
196
228
  'license.membership': 'Membership',
@@ -222,7 +254,7 @@ const FIGMA_UI_TRANSLATIONS = {
222
254
  'license.submit': 'Activate',
223
255
  'license.verifying': 'Verifying...',
224
256
  'license.enter_from_email': 'Enter the license key you received by email.',
225
- 'license.enter_from_youtube': 'Enter the key from the members-only community.',
257
+ 'license.enter_from_youtube': 'Enter this month’s key copied from the members-only post.',
226
258
  'license.help_link': 'License · payment help',
227
259
  'license.youtube_membership_howto': 'How to use',
228
260
  'license.youtube_membership_step_1': 'Join the Designbase YouTube channel membership.',
@@ -329,6 +361,22 @@ const FIGMA_UI_TRANSLATIONS = {
329
361
  'form.submit': '有効化',
330
362
  'form.verifying': '確認中...',
331
363
  'license.youtube_membership': 'YouTubeメンバーシップ',
364
+ 'license.unlock_unlimited': '無制限アクセスを有効化',
365
+ 'license.unlock_unlimited_description': 'ライセンスキーを登録すると、DesignbaseプラグインのPro機能を無制限で利用できます。',
366
+ 'license.unlimited_benefit_title': 'すべてのプラグインを無制限で利用',
367
+ 'license.unlimited_benefit_description': '回数制限なくPro機能とプレミアムコンテンツを利用できます。',
368
+ 'license.get_key_title': 'ライセンスキーを取得',
369
+ 'license.get_key_description': 'メンバーには毎月新しいライセンスキーが提供されます。',
370
+ 'license.get_key_step_1_title': 'メンバーシップに参加',
371
+ 'license.get_key_step_1_description': 'Designbase YouTubeチャンネルのメンバーシップに参加します。',
372
+ 'license.get_key_step_2_title': '今月のキーをコピー',
373
+ 'license.get_key_step_2_description': 'メンバー限定コミュニティの投稿でキーを確認します。',
374
+ 'license.get_key_step_3_title': 'キーを登録',
375
+ 'license.get_key_step_3_description': '下の入力欄に貼り付けるとPro機能が利用できます。',
376
+ 'license.get_key_cta': '参加してライセンスキーを取得',
377
+ 'license.activate_key_title': 'ライセンスキーを登録',
378
+ 'license.activate_key_description': 'キーをお持ちの場合は、下に貼り付けてPro機能を有効化してください。',
379
+ 'license.unlock_pro_features': 'Pro機能を有効化',
332
380
  'license.current_plan': '現在のプラン',
333
381
  'license.pro_plan': 'Proプラン',
334
382
  'license.membership': 'メンバーシップ',
@@ -360,7 +408,7 @@ const FIGMA_UI_TRANSLATIONS = {
360
408
  'license.submit': '有効化',
361
409
  'license.verifying': '確認中...',
362
410
  'license.enter_from_email': 'メールで受け取ったライセンスキーを入力してください。',
363
- 'license.enter_from_youtube': 'メンバー限定コミュニティのキーを入力してください。',
411
+ 'license.enter_from_youtube': 'メンバー限定投稿からコピーした今月のキーを入力してください。',
364
412
  'license.help_link': 'ライセンス・支払いヘルプ',
365
413
  'license.youtube_membership_howto': '利用方法',
366
414
  'license.youtube_membership_step_1': 'Designbase YouTubeチャンネルのメンバーシップに参加します。',
@@ -1489,19 +1537,29 @@ const LicenseOffer = ({ joinUrl, guideUrl, membershipUrl, t, locale, className,
1489
1537
  const titleId = `designbase-license-offer-title-${useId().replace(/:/g, '')}`;
1490
1538
  const resolvedJoinUrl = joinUrl || membershipUrl;
1491
1539
  const steps = [
1492
- resolveText(translate, { key: 'license.youtube_membership_step_1' }, 'Designbase YouTube 채널 멤버십에 가입합니다.'),
1493
- resolveText(translate, { key: 'license.youtube_membership_step_2' }, '멤버 전용 커뮤니티에서 이번 달 키를 복사합니다.'),
1494
- resolveText(translate, { key: 'license.youtube_membership_step_3' }, '아래 입력창에 키를 붙여 넣고 활성화합니다.'),
1540
+ {
1541
+ title: resolveText(translate, { key: 'license.get_key_step_1_title' }, '멤버십 가입'),
1542
+ description: resolveText(translate, { key: 'license.get_key_step_1_description' }, 'Designbase YouTube 채널에서 멤버십에 가입합니다.'),
1543
+ },
1544
+ {
1545
+ title: resolveText(translate, { key: 'license.get_key_step_2_title' }, '이번 달 키 복사'),
1546
+ description: resolveText(translate, { key: 'license.get_key_step_2_description' }, '멤버 전용 커뮤니티 게시글에서 키를 확인합니다.'),
1547
+ },
1495
1548
  ];
1496
1549
  return (React.createElement("section", { className: `designbase-figma-license-offer ${className || ''}`, "aria-labelledby": titleId },
1497
- React.createElement("h3", { id: titleId, className: "designbase-figma-license-offer__title" }, resolveText(translate, { key: 'license.youtube_membership_howto' }, '이용 방법')),
1550
+ React.createElement("header", { className: "designbase-figma-license-offer__header" },
1551
+ React.createElement("div", null,
1552
+ React.createElement("h3", { id: titleId, className: "designbase-figma-license-offer__title" }, resolveText(translate, { key: 'license.get_key_title' }, '라이선스 키 받기')),
1553
+ React.createElement("p", { className: "designbase-figma-license-offer__description" }, resolveText(translate, { key: 'license.get_key_description' }, '멤버십 회원에게 매월 새 라이선스 키가 제공됩니다.')))),
1498
1554
  React.createElement("ol", { className: "designbase-figma-license-offer__steps" }, steps.map((step, index) => (React.createElement("li", { key: index },
1499
- React.createElement("span", { className: "designbase-figma-license-offer__step-index", "aria-hidden": "true" },
1500
- index + 1,
1501
- "."),
1502
- React.createElement("span", null, step))))),
1555
+ React.createElement("span", { className: "designbase-figma-license-offer__step-index", "aria-hidden": "true" }, index + 1),
1556
+ React.createElement("span", { className: "designbase-figma-license-offer__step-copy" },
1557
+ React.createElement("strong", null, step.title),
1558
+ React.createElement("span", null, step.description)))))),
1503
1559
  (resolvedJoinUrl || guideUrl) && (React.createElement("div", { className: "designbase-figma-license-offer__actions" },
1504
- resolvedJoinUrl && (React.createElement(Button, { onPress: () => openExternalUrl(resolvedJoinUrl), variant: "primary", size: "m", fullWidth: true }, resolveText(translate, { key: 'license.youtube_membership_join' }, '멤버십 가입'))),
1560
+ resolvedJoinUrl && (React.createElement(Button, { onPress: () => openExternalUrl(resolvedJoinUrl), variant: "primary", size: "m", fullWidth: true },
1561
+ React.createElement("span", null, resolveText(translate, { key: 'license.get_key_cta' }, '멤버십 가입하고 키 받기')),
1562
+ React.createElement(ExternalLinkIcon, { size: 16, "aria-hidden": "true" }))),
1505
1563
  guideUrl && (React.createElement(Button, { onPress: () => openExternalUrl(guideUrl), variant: "secondary", size: "m", fullWidth: true },
1506
1564
  React.createElement("span", null, resolveText(translate, { key: 'license.youtube_membership_guide' }, '안내보기')),
1507
1565
  React.createElement(ExternalLinkIcon, { size: 16, "aria-hidden": "true" })))))));
@@ -1933,9 +1991,11 @@ function useFigmaLicenseBridge(options = {}) {
1933
1991
  function formatUsageLabel(state, t) {
1934
1992
  const { remainingUsage, usageUsed, usageLimit, usageReset } = state;
1935
1993
  if (usageLimit === 'unlimited') {
1936
- return resolveText(t, { key: 'license.usage_unlimited' }, '사용 횟수 제한 없음') ?? '사용 횟수 제한 없음';
1994
+ return (resolveText(t, { key: 'license.usage_unlimited' }, '사용 횟수 제한 없음') ?? '사용 횟수 제한 없음');
1937
1995
  }
1938
- const limit = typeof usageLimit === 'number' ? usageLimit : remainingUsage + usageUsed;
1996
+ const limit = typeof usageLimit === 'number'
1997
+ ? usageLimit
1998
+ : remainingUsage + usageUsed;
1939
1999
  const remaining = remainingUsage ?? Math.max(0, limit - usageUsed);
1940
2000
  if (usageReset === 'daily') {
1941
2001
  const fallback = `오늘 남은 횟수 ${remaining}/${limit}`;
@@ -1952,7 +2012,7 @@ function formatUsageLabel(state, t) {
1952
2012
  const translated = resolveText(t, { key: 'license.usage_weekly', values: { remaining, limit } }, fallback) ?? fallback;
1953
2013
  return translated.includes(String(remaining)) ? translated : fallback;
1954
2014
  }
1955
- return resolveText(t, { key: 'license.usage_generic', values: { remaining, limit } }, `남은 횟수 ${remaining}/${limit}`) ?? `남은 횟수 ${remaining}/${limit}`;
2015
+ return (resolveText(t, { key: 'license.usage_generic', values: { remaining, limit } }, `남은 횟수 ${remaining}/${limit}`) ?? `남은 횟수 ${remaining}/${limit}`);
1956
2016
  }
1957
2017
  const PageLicense = ({ status: initialStatus, onClose, licenseKey: initialLicenseKey = '', licenseStatus: initialLicenseStatus, licenseSource: initialLicenseSource, accessScope: initialAccessScope, expiresAt: initialExpiresAt, lastVerifiedAt: initialLastVerifiedAt, wordpressLinks, paymentPageUrl, mode = 'pricing', membershipUrl, enableAccountAuth = true, showLicenseKeyInput = true, pricingFeatures, pricing, paymentType = 'subscription', messageTypes, onStateChange, setPaymentStatus, setUsageCount, onLicenseSubmit, usageCount: initialUsageCount = 0, t, locale, className, }) => {
1958
2018
  const { t: translate } = useFigmaUiI18n(locale, t);
@@ -2001,20 +2061,29 @@ const PageLicense = ({ status: initialStatus, onClose, licenseKey: initialLicens
2001
2061
  React.createElement("div", { className: "designbase-figma-page-license__content" },
2002
2062
  React.createElement("div", { className: "designbase-figma-page-license__header" },
2003
2063
  React.createElement("div", { className: "designbase-figma-page-license__title" },
2004
- React.createElement("h2", null, isMembershipMode
2005
- ? resolveText(translate, { key: 'license.youtube_membership' }, 'YouTube 멤버십')
2006
- : isPaid
2007
- ? resolveText(translate, { key: 'license.pro_account' }, '프로 계정')
2064
+ React.createElement("h2", null, isPaid
2065
+ ? resolveText(translate, { key: 'license.pro_account' }, '프로 계정')
2066
+ : isMembershipMode
2067
+ ? resolveText(translate, { key: 'license.unlock_unlimited' }, '무제한 사용 활성화')
2008
2068
  : resolveText(translate, { key: 'license.upgrade_to_pro' }, '프로로 업그레이드')),
2009
2069
  isPaid && (React.createElement("span", { className: "designbase-figma-page-license__tier" }, resolveText(translate, { key: 'license.pro_plan' }, '프로 플랜')))),
2010
2070
  React.createElement("p", { className: "designbase-figma-page-license__description" }, isPaid
2011
2071
  ? resolveText(translate, { key: 'license.all_features_available' }, '모든 기능을 사용할 수 있습니다.')
2012
2072
  : isMembershipMode
2013
- ? resolveText(translate, { key: 'license.youtube_membership_description' }, 'YouTube 멤버십에 가입하면 Designbase 플러그인을 무제한으로 사용할 수 있습니다.')
2073
+ ? resolveText(translate, {
2074
+ key: 'license.unlock_unlimited_description',
2075
+ }, '라이선스 키를 등록하면 모든 Designbase 플러그인의 프로 기능과 무제한 사용을 이용할 수 있습니다.')
2014
2076
  : resolveText(translate, { key: 'license.purchase_for_unlimited' }, '디자인베이스 멤버십 또는 라이선스로 무제한 이용이 가능합니다.')),
2015
2077
  !isPaid && !isMembershipMode && (React.createElement("p", { className: "designbase-figma-page-license__usage" }, usageLabel))),
2078
+ !isPaid && isMembershipMode && (React.createElement("div", { className: "designbase-figma-page-license__benefit" },
2079
+ React.createElement("span", { className: "designbase-figma-page-license__benefit-icon", "aria-hidden": "true" }, "\u221E"),
2080
+ React.createElement("div", null,
2081
+ React.createElement("strong", null, resolveText(translate, { key: 'license.unlimited_benefit_title' }, '모든 플러그인 무제한 사용')),
2082
+ React.createElement("p", null, resolveText(translate, { key: 'license.unlimited_benefit_description' }, '사용 횟수 제한 없이 프로 기능과 프리미엄 콘텐츠를 이용할 수 있습니다.'))))),
2016
2083
  !isMembershipMode && (React.createElement(PricingComparison, { features: pricingFeatures, pricing: pricing, paymentType: paymentType, t: translate })),
2017
- state.lastMessage && state.lastErrorCode && !state.deactivateMessage && (React.createElement("p", { className: `designbase-figma-page-license__feedback ${state.lastErrorCode ? 'designbase-figma-page-license__feedback--error' : ''}`, "aria-live": "polite" }, state.lastMessage)),
2084
+ state.lastMessage &&
2085
+ state.lastErrorCode &&
2086
+ !state.deactivateMessage && (React.createElement("p", { className: `designbase-figma-page-license__feedback ${state.lastErrorCode ? 'designbase-figma-page-license__feedback--error' : ''}`, "aria-live": "polite" }, state.lastMessage)),
2018
2087
  isPaid && (React.createElement("div", { className: "designbase-figma-page-license__paid-summary" },
2019
2088
  React.createElement("div", { className: "designbase-figma-page-license__paid-hero" },
2020
2089
  React.createElement("span", { "aria-hidden": "true" }, "\u221E"),
@@ -2025,9 +2094,12 @@ const PageLicense = ({ status: initialStatus, onClose, licenseKey: initialLicens
2025
2094
  React.createElement("div", { className: "designbase-figma-page-license__paid-actions" },
2026
2095
  state.activationLimit > 0 && (React.createElement("div", { className: "designbase-figma-page-license__activation-info" },
2027
2096
  React.createElement("div", { className: "designbase-figma-page-license__remaining" },
2028
- Math.max(0, state.activationLimit - state.activationUsage),
2097
+ Math.max(0, state.activationLimit -
2098
+ state.activationUsage),
2029
2099
  ' ',
2030
- resolveText(translate, { key: 'license.activations_remaining' }, '활성'),
2100
+ resolveText(translate, {
2101
+ key: 'license.activations_remaining',
2102
+ }, '활성'),
2031
2103
  ' ',
2032
2104
  resolveText(translate, { key: 'license.spots_remaining' }, '자리 남음')),
2033
2105
  React.createElement("div", { className: "designbase-figma-page-license__usage-count" },
@@ -2037,30 +2109,64 @@ const PageLicense = ({ status: initialStatus, onClose, licenseKey: initialLicens
2037
2109
  React.createElement(Button, { onPress: deactivateLicense, variant: "secondary", size: "m", fullWidth: true, disabled: isDeactivating }, isDeactivating
2038
2110
  ? resolveText(translate, { key: 'license.deactivating' }, '비활성화 중...')
2039
2111
  : resolveText(translate, { key: 'license.deactivate' }, '라이선스 비활성화')),
2040
- state.deactivateMessage && state.deactivateErrorCode && (React.createElement("p", { className: `designbase-figma-page-license__action-feedback designbase-figma-page-license__action-feedback--${resolvePaymentFeedbackVariant(state.deactivateErrorCode)}`, role: "alert", "aria-live": "polite" }, state.deactivateMessage)),
2112
+ state.deactivateMessage &&
2113
+ state.deactivateErrorCode && (React.createElement("p", { className: `designbase-figma-page-license__action-feedback designbase-figma-page-license__action-feedback--${resolvePaymentFeedbackVariant(state.deactivateErrorCode)}`, role: "alert", "aria-live": "polite" }, state.deactivateMessage)),
2041
2114
  React.createElement("p", { className: "designbase-figma-page-license__deactivate-hint" }, resolveText(translate, { key: 'license.deactivate_hint' }, '이 기기에서 라이선스 연결을 해제합니다.'))))),
2042
2115
  !isPaid && (React.createElement(React.Fragment, null,
2043
2116
  isMembershipMode && (React.createElement(LicenseOffer, { joinUrl: links.membershipUrl || links.purchaseUrl, guideUrl: links.helpUrl || links.purchaseUrl, t: translate })),
2044
- !isMembershipMode && (enableAccountAuth || links.purchaseUrl || links.accountUrl) && (React.createElement("div", { className: "designbase-figma-page-license__section" },
2117
+ !isMembershipMode &&
2118
+ (enableAccountAuth ||
2119
+ links.purchaseUrl ||
2120
+ links.accountUrl) && (React.createElement("div", { className: "designbase-figma-page-license__section" },
2045
2121
  React.createElement("div", { className: "designbase-figma-page-license__section-header" },
2046
- React.createElement("h3", null, resolveText(translate, { key: 'license.designbase_account' }, '디자인베이스 계정'))),
2047
- React.createElement("p", { className: "designbase-figma-page-license__hint" }, resolveText(translate, { key: 'license.designbase_account_hint' }, 'WordPress 계정으로 로그인하거나 멤버십을 구매하면 플러그인이 자동으로 활성화됩니다.')),
2122
+ React.createElement("h3", null, resolveText(translate, {
2123
+ key: 'license.designbase_account',
2124
+ }, '디자인베이스 계정'))),
2125
+ React.createElement("p", { className: "designbase-figma-page-license__hint" }, resolveText(translate, {
2126
+ key: 'license.designbase_account_hint',
2127
+ }, 'WordPress 계정으로 로그인하거나 멤버십을 구매하면 플러그인이 자동으로 활성화됩니다.')),
2048
2128
  React.createElement("div", { className: "designbase-figma-page-license__actions" },
2049
- enableAccountAuth && (React.createElement(Button, { onPress: startDesignbaseAuth, variant: "primary", size: "m", disabled: isStartingAuth || isVerifying, fullWidth: true }, isStartingAuth
2050
- ? resolveText(translate, { key: 'license.authenticating' }, '인증 중...')
2051
- : resolveText(translate, { key: 'license.login_with_designbase' }, '디자인베이스로 로그인'))),
2129
+ enableAccountAuth && (React.createElement(Button, { onPress: startDesignbaseAuth, variant: "primary", size: "m", disabled: isStartingAuth ||
2130
+ isVerifying, fullWidth: true }, isStartingAuth
2131
+ ? resolveText(translate, {
2132
+ key: 'license.authenticating',
2133
+ }, '인증 중...')
2134
+ : resolveText(translate, {
2135
+ key: 'license.login_with_designbase',
2136
+ }, '디자인베이스로 로그인'))),
2052
2137
  links.purchaseUrl && (React.createElement(Button, { onPress: () => openExternalUrl(links.purchaseUrl), variant: "secondary", size: "m", fullWidth: true },
2053
- React.createElement("span", null, resolveText(translate, { key: 'license.purchase_membership' }, '멤버십 안내')),
2138
+ React.createElement("span", null, resolveText(translate, {
2139
+ key: 'license.purchase_membership',
2140
+ }, '멤버십 안내')),
2054
2141
  React.createElement(ExternalLinkIcon, { size: 16 }))),
2055
2142
  links.accountUrl && (React.createElement(Button, { onPress: () => openExternalUrl(links.accountUrl), variant: "tertiary", size: "s", fullWidth: true },
2056
- React.createElement("span", null, resolveText(translate, { key: 'license.manage_account' }, '계정·멤버십 관리')),
2143
+ React.createElement("span", null, resolveText(translate, {
2144
+ key: 'license.manage_account',
2145
+ }, '계정·멤버십 관리')),
2057
2146
  React.createElement(ExternalLinkIcon, { size: 16 })))))),
2058
2147
  showLicenseKeyInput && (React.createElement("div", { className: isMembershipMode
2059
2148
  ? 'designbase-figma-page-license__key-form'
2060
2149
  : 'designbase-figma-page-license__section' },
2061
2150
  React.createElement("div", { className: "designbase-figma-page-license__section-header" },
2062
- React.createElement("h3", null, resolveText(translate, { key: 'license.enter_key' }, '라이선스 키 입력'))),
2063
- 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: isMembershipMode ? 'license.enter_from_youtube' : 'license.enter_from_email' }, t: translate }))))),
2151
+ React.createElement("h3", null, isMembershipMode
2152
+ ? resolveText(translate, {
2153
+ key: 'license.activate_key_title',
2154
+ }, '라이선스 키 등록')
2155
+ : resolveText(translate, { key: 'license.enter_key' }, '라이선스 키 입력'))),
2156
+ isMembershipMode && (React.createElement("p", { className: "designbase-figma-page-license__hint" }, resolveText(translate, {
2157
+ key: 'license.activate_key_description',
2158
+ }, '이미 키가 있다면 아래에 붙여 넣어 프로 기능을 활성화하세요.'))),
2159
+ React.createElement(FormWithSubmit, { onLicenseSubmit: handleLicenseSubmit, disabled: false, isSubmitting: isVerifying, value: licenseKeyDraft, onValueChange: handleLicenseKeyChange, label: { key: 'license.key' }, submitText: {
2160
+ key: isMembershipMode
2161
+ ? 'license.unlock_pro_features'
2162
+ : 'license.submit',
2163
+ }, submittingText: {
2164
+ key: 'license.verifying',
2165
+ }, helperText: {
2166
+ key: isMembershipMode
2167
+ ? 'license.enter_from_youtube'
2168
+ : 'license.enter_from_email',
2169
+ }, t: translate }))))),
2064
2170
  links.helpUrl && !isMembershipMode && (React.createElement("p", { className: "designbase-figma-page-license__disclaimer" },
2065
2171
  React.createElement("button", { type: "button", className: "designbase-figma-page-license__link", onClick: () => openExternalUrl(links.helpUrl) }, resolveText(translate, { key: 'license.help_link' }, '라이선스·결제 도움말'))))),
2066
2172
  React.createElement(Button, { className: "designbase-figma-page-license__close", onPress: onClose, variant: "tertiary", size: "s", iconOnly: true, "aria-label": translate('close') },