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