@designbasekorea/figma-ui 0.8.0 → 0.8.1

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
@@ -97,6 +97,7 @@ const FIGMA_UI_TRANSLATIONS = {
97
97
  'license.authenticating': '인증 중...',
98
98
  'license.login_with_designbase': '디자인베이스로 로그인',
99
99
  'license.purchase_membership': '멤버십 안내',
100
+ 'license.purchase_license': '라이선스 구매하기',
100
101
  'license.manage_account': '계정·멤버십 관리',
101
102
  'license.enter_key': '라이선스 키 입력',
102
103
  'license.key': '라이선스 키',
@@ -255,6 +256,7 @@ const FIGMA_UI_TRANSLATIONS = {
255
256
  'license.authenticating': 'Authenticating...',
256
257
  'license.login_with_designbase': 'Sign in with Designbase',
257
258
  'license.purchase_membership': 'Membership details',
259
+ 'license.purchase_license': 'Buy a license',
258
260
  'license.manage_account': 'Manage account · membership',
259
261
  'license.enter_key': 'Enter license key',
260
262
  'license.key': 'License key',
@@ -413,6 +415,7 @@ const FIGMA_UI_TRANSLATIONS = {
413
415
  'license.authenticating': '認証中...',
414
416
  'license.login_with_designbase': 'Designbaseでサインイン',
415
417
  'license.purchase_membership': 'メンバーシップの詳細',
418
+ 'license.purchase_license': 'ライセンスを購入',
416
419
  'license.manage_account': 'アカウント・メンバーシップを管理',
417
420
  'license.enter_key': 'ライセンスキーを入力',
418
421
  'license.key': 'ライセンスキー',
@@ -2057,6 +2060,7 @@ const PageLicense = ({ status: initialStatus, onClose, licenseKey: initialLicens
2057
2060
  const [activeLicenseMode, setActiveLicenseMode] = React.useState(mode);
2058
2061
  const isPaid = state.isLicenseRegistered && state.paymentStatus === 'PAID';
2059
2062
  const isMembershipMode = activeLicenseMode === 'youtube-membership';
2063
+ const hasSourceTabs = showYoutubeMembershipTab && !isPaid;
2060
2064
  const usageLabel = formatUsageLabel(state, translate);
2061
2065
  const handleLicenseSubmit = async (submittedLicenseKey) => {
2062
2066
  if (onLicenseSubmit) {
@@ -2069,36 +2073,33 @@ const PageLicense = ({ status: initialStatus, onClose, licenseKey: initialLicens
2069
2073
  setLicenseKeyDraft(value);
2070
2074
  setLicenseKeyInput(value);
2071
2075
  };
2072
- return (React.createElement("div", { className: `designbase-figma-page-license designbase-figma-page-license--${activeLicenseMode} ${className || ''}`, "data-license-mode": activeLicenseMode },
2076
+ return (React.createElement("div", { className: `designbase-figma-page-license designbase-figma-page-license--${activeLicenseMode} ${hasSourceTabs ? 'designbase-figma-page-license--source-switching' : ''} ${className || ''}`, "data-license-mode": activeLicenseMode },
2073
2077
  React.createElement("div", { className: "designbase-figma-page-license__content" },
2074
- showYoutubeMembershipTab && (React.createElement("div", { className: "designbase-figma-page-license__source-tabs", role: "tablist", "aria-label": resolveText(translate, { key: 'license.source_tabs_label' }, 'License type') },
2075
- React.createElement("button", { type: "button", role: "tab", "aria-selected": !isMembershipMode, onClick: () => setActiveLicenseMode('pricing') }, resolveText(translate, { key: 'license.source_lemon_squeezy' }, 'Lemon Squeezy license')),
2076
- React.createElement("button", { type: "button", role: "tab", "aria-selected": isMembershipMode, onClick: () => setActiveLicenseMode('youtube-membership') }, resolveText(translate, { key: 'license.source_youtube_membership' }, 'YouTube membership')))),
2077
- showYoutubeMembershipTab && (React.createElement("p", { className: "designbase-figma-page-license__source-hint" }, isMembershipMode
2078
- ? resolveText(translate, { key: 'license.source_youtube_hint' }, 'Enter the key provided to YouTube channel members.')
2079
- : resolveText(translate, { key: 'license.source_lemon_hint' }, 'Enter the license key from your Lemon Squeezy purchase.'))),
2080
2078
  React.createElement("div", { className: "designbase-figma-page-license__header" },
2081
2079
  React.createElement("div", { className: "designbase-figma-page-license__title" },
2082
2080
  React.createElement("h2", null, isPaid
2083
2081
  ? resolveText(translate, { key: 'license.pro_account' }, '프로 계정')
2084
- : isMembershipMode
2085
- ? resolveText(translate, { key: 'license.unlock_unlimited' }, '무제한 사용 활성화')
2082
+ : showYoutubeMembershipTab
2083
+ ? resolveText(translate, { key: 'license.unlock_unlimited' }, 'Unlock Unlimited Access')
2086
2084
  : resolveText(translate, { key: 'license.upgrade_to_pro' }, '프로로 업그레이드')),
2087
2085
  isPaid && (React.createElement("span", { className: "designbase-figma-page-license__tier" }, resolveText(translate, { key: 'license.pro_plan' }, '프로 플랜')))),
2088
2086
  React.createElement("p", { className: "designbase-figma-page-license__description" }, isPaid
2089
2087
  ? resolveText(translate, { key: 'license.all_features_available' }, '모든 기능을 사용할 수 있습니다.')
2090
- : isMembershipMode
2088
+ : showYoutubeMembershipTab
2091
2089
  ? resolveText(translate, {
2092
2090
  key: 'license.unlock_unlimited_description',
2093
- }, '라이선스 키를 등록하면 모든 Designbase 플러그인의 프로 기능과 무제한 사용을 이용할 수 있습니다.')
2091
+ }, 'Add a license key to unlock Pro features and unlimited use across Designbase plugins.')
2094
2092
  : resolveText(translate, { key: 'license.purchase_for_unlimited' }, '디자인베이스 멤버십 또는 라이선스로 무제한 이용이 가능합니다.')),
2095
- !isPaid && !isMembershipMode && (React.createElement("p", { className: "designbase-figma-page-license__usage" }, usageLabel))),
2096
- !isPaid && isMembershipMode && (React.createElement("div", { className: "designbase-figma-page-license__benefit" },
2093
+ !isPaid && !showYoutubeMembershipTab && !isMembershipMode && (React.createElement("p", { className: "designbase-figma-page-license__usage" }, usageLabel))),
2094
+ !isPaid && showYoutubeMembershipTab && (React.createElement("div", { className: "designbase-figma-page-license__benefit" },
2097
2095
  React.createElement("span", { className: "designbase-figma-page-license__benefit-icon", "aria-hidden": "true" }, "\u221E"),
2098
2096
  React.createElement("div", null,
2099
2097
  React.createElement("strong", null, resolveText(translate, { key: 'license.unlimited_benefit_title' }, '모든 플러그인 무제한 사용')),
2100
2098
  React.createElement("p", null, resolveText(translate, { key: 'license.unlimited_benefit_description' }, '사용 횟수 제한 없이 프로 기능과 프리미엄 콘텐츠를 이용할 수 있습니다.'))))),
2101
- !isMembershipMode && (React.createElement(PricingComparison, { features: pricingFeatures, pricing: pricing, paymentType: paymentType, t: translate })),
2099
+ hasSourceTabs && (React.createElement("div", { className: "designbase-figma-page-license__source-tabs", role: "tablist", "aria-label": resolveText(translate, { key: 'license.source_tabs_label' }, 'License type') },
2100
+ React.createElement("button", { type: "button", role: "tab", "aria-selected": !isMembershipMode, onClick: () => setActiveLicenseMode('pricing') }, resolveText(translate, { key: 'license.source_lemon_squeezy' }, 'Lemon Squeezy license')),
2101
+ React.createElement("button", { type: "button", role: "tab", "aria-selected": isMembershipMode, onClick: () => setActiveLicenseMode('youtube-membership') }, resolveText(translate, { key: 'license.source_youtube_membership' }, 'YouTube membership')))),
2102
+ !isMembershipMode && !showYoutubeMembershipTab && (React.createElement(PricingComparison, { features: pricingFeatures, pricing: pricing, paymentType: paymentType, t: translate })),
2102
2103
  state.lastMessage &&
2103
2104
  state.lastErrorCode &&
2104
2105
  !state.deactivateMessage && (React.createElement("p", { className: `designbase-figma-page-license__feedback ${state.lastErrorCode ? 'designbase-figma-page-license__feedback--error' : ''}`, "aria-live": "polite" }, state.lastMessage)),
@@ -2131,8 +2132,8 @@ const PageLicense = ({ status: initialStatus, onClose, licenseKey: initialLicens
2131
2132
  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)),
2132
2133
  React.createElement("p", { className: "designbase-figma-page-license__deactivate-hint" }, resolveText(translate, { key: 'license.deactivate_hint' }, '이 기기에서 라이선스 연결을 해제합니다.'))))),
2133
2134
  !isPaid && (React.createElement(React.Fragment, null,
2134
- isMembershipMode && (React.createElement(LicenseOffer, { joinUrl: links.membershipUrl || links.purchaseUrl, guideUrl: links.helpUrl || links.purchaseUrl, t: translate })),
2135
- !isMembershipMode &&
2135
+ isMembershipMode && !showYoutubeMembershipTab && (React.createElement(LicenseOffer, { joinUrl: links.membershipUrl || links.purchaseUrl, guideUrl: links.helpUrl || links.purchaseUrl, t: translate })),
2136
+ !isMembershipMode && !showYoutubeMembershipTab &&
2136
2137
  (enableAccountAuth ||
2137
2138
  links.purchaseUrl ||
2138
2139
  links.accountUrl) && (React.createElement("div", { className: "designbase-figma-page-license__section" },
@@ -2162,20 +2163,23 @@ const PageLicense = ({ status: initialStatus, onClose, licenseKey: initialLicens
2162
2163
  key: 'license.manage_account',
2163
2164
  }, '계정·멤버십 관리')),
2164
2165
  React.createElement(icons.ExternalLinkIcon, { size: 16 })))))),
2165
- showLicenseKeyInput && (React.createElement("div", { className: isMembershipMode
2166
- ? 'designbase-figma-page-license__key-form'
2167
- : 'designbase-figma-page-license__section' },
2166
+ showYoutubeMembershipTab && (React.createElement("div", { "aria-live": "polite" }, isMembershipMode ? (React.createElement(LicenseOffer, { joinUrl: links.membershipUrl || links.purchaseUrl, guideUrl: links.helpUrl || links.purchaseUrl, t: translate })) : (React.createElement(React.Fragment, null,
2167
+ React.createElement(PricingComparison, { features: pricingFeatures, pricing: pricing, paymentType: paymentType, t: translate }),
2168
+ links.purchaseUrl && (React.createElement(react.Button, { onPress: () => openExternalUrl(links.purchaseUrl), variant: "primary", size: "m", fullWidth: true },
2169
+ React.createElement("span", null, resolveText(translate, { key: 'license.purchase_license' }, 'Buy a license')),
2170
+ React.createElement(icons.ExternalLinkIcon, { size: 16, "aria-hidden": "true" }))))))),
2171
+ showLicenseKeyInput && (React.createElement("div", { className: isMembershipMode && !showYoutubeMembershipTab ? 'designbase-figma-page-license__key-form' : 'designbase-figma-page-license__section' },
2168
2172
  React.createElement("div", { className: "designbase-figma-page-license__section-header" },
2169
- React.createElement("h3", null, isMembershipMode
2173
+ React.createElement("h3", null, isMembershipMode || showYoutubeMembershipTab
2170
2174
  ? resolveText(translate, {
2171
2175
  key: 'license.activate_key_title',
2172
2176
  }, '라이선스 키 등록')
2173
2177
  : resolveText(translate, { key: 'license.enter_key' }, '라이선스 키 입력'))),
2174
- isMembershipMode && (React.createElement("p", { className: "designbase-figma-page-license__hint" }, resolveText(translate, {
2178
+ (isMembershipMode || showYoutubeMembershipTab) && (React.createElement("p", { className: "designbase-figma-page-license__hint" }, resolveText(translate, {
2175
2179
  key: 'license.activate_key_description',
2176
2180
  }, '이미 키가 있다면 아래에 붙여 넣어 프로 기능을 활성화하세요.'))),
2177
2181
  React.createElement(FormWithSubmit, { onLicenseSubmit: handleLicenseSubmit, disabled: false, isSubmitting: isVerifying, value: licenseKeyDraft, onValueChange: handleLicenseKeyChange, label: { key: 'license.key' }, submitText: {
2178
- key: isMembershipMode
2182
+ key: isMembershipMode || showYoutubeMembershipTab
2179
2183
  ? 'license.unlock_pro_features'
2180
2184
  : 'license.submit',
2181
2185
  }, submittingText: {
@@ -2185,7 +2189,7 @@ const PageLicense = ({ status: initialStatus, onClose, licenseKey: initialLicens
2185
2189
  ? 'license.enter_from_youtube'
2186
2190
  : 'license.enter_from_email',
2187
2191
  }, t: translate }))))),
2188
- links.helpUrl && !isMembershipMode && (React.createElement("p", { className: "designbase-figma-page-license__disclaimer" },
2192
+ links.helpUrl && (!isMembershipMode || showYoutubeMembershipTab) && (React.createElement("p", { className: "designbase-figma-page-license__disclaimer" },
2189
2193
  React.createElement("button", { type: "button", className: "designbase-figma-page-license__link", onClick: () => openExternalUrl(links.helpUrl) }, resolveText(translate, { key: 'license.help_link' }, '라이선스·결제 도움말'))))),
2190
2194
  React.createElement(react.Button, { className: "designbase-figma-page-license__close", onPress: onClose, variant: "tertiary", size: "s", iconOnly: true, "aria-label": translate('close') },
2191
2195
  React.createElement(icons.CloseIcon, { size: 16 }))));