@designbasekorea/figma-ui 0.1.45 → 0.1.48

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
@@ -327,6 +327,70 @@ const LanguageSelector = ({ currentLanguage = 'ko', languages = DEFAULT_LANGUAGE
327
327
  };
328
328
  LanguageSelector.displayName = 'LanguageSelector';
329
329
 
330
+ const defaultLinks = [
331
+ {
332
+ name: 'officialWebsite',
333
+ url: 'https://designbase.co.kr',
334
+ icon: React.createElement(icons.AppWindowIcon, { size: 20 }),
335
+ },
336
+ {
337
+ name: 'youtube',
338
+ url: 'https://youtube.com/designbase',
339
+ icon: React.createElement(icons.YoutubeIcon, { size: 20 }),
340
+ },
341
+ {
342
+ name: 'instagram',
343
+ url: 'https://instagram.com/designbase',
344
+ icon: React.createElement(icons.InstagramIcon, { size: 20 }),
345
+ },
346
+ {
347
+ name: 'figmaCommunity',
348
+ url: 'https://www.figma.com/@designbasekorea',
349
+ icon: React.createElement(icons.FigmaIcon, { size: 20 }),
350
+ },
351
+ {
352
+ name: 'contact',
353
+ url: 'mailto:designbasekorea@gmail.com',
354
+ icon: React.createElement(icons.MailIcon, { size: 20 }),
355
+ },
356
+ ];
357
+ const defaultTranslations$1 = {
358
+ officialWebsite: '공식 웹사이트',
359
+ youtube: '유튜브',
360
+ instagram: '인스타그램',
361
+ figmaCommunity: '피그마 커뮤니티',
362
+ contact: '문의하기',
363
+ };
364
+ const defaultT$1 = (key) => defaultTranslations$1[key] || key;
365
+ const LogoDropdown = ({ logoSrc, logoAlt = 'DesignBase', logoType = 'designbase', logoSize = 'xs', links = defaultLinks, position = 'top-left', className, t = defaultT$1, }) => {
366
+ const [isOpen, setIsOpen] = React.useState(false);
367
+ const toggleDropdown = () => setIsOpen(!isOpen);
368
+ const handleLinkClick = (url) => {
369
+ if (url.startsWith('mailto:')) {
370
+ return;
371
+ }
372
+ window.open(url, '_blank', 'noopener,noreferrer');
373
+ };
374
+ const classes = clsx('designbase-figma-logo-dropdown', `designbase-figma-logo-dropdown--${position}`, {
375
+ 'designbase-figma-logo-dropdown--open': isOpen,
376
+ }, className);
377
+ const renderLogo = () => {
378
+ if (logoSrc) {
379
+ return (React.createElement("img", { className: "designbase-figma-logo-dropdown__logo", src: logoSrc, alt: logoAlt, onClick: toggleDropdown }));
380
+ }
381
+ return (React.createElement("div", { className: "designbase-figma-logo-dropdown__logo", onClick: toggleDropdown },
382
+ React.createElement(ui.Logo, { type: logoType, size: logoSize, variant: "default" })));
383
+ };
384
+ return (React.createElement("div", { className: classes },
385
+ renderLogo(),
386
+ isOpen && (React.createElement("ul", { className: "designbase-figma-logo-dropdown__menu" }, links.map((link, index) => (React.createElement("li", { key: index, className: "designbase-figma-logo-dropdown__item" },
387
+ React.createElement("button", { type: "button", className: "designbase-figma-logo-dropdown__link", onClick: () => handleLinkClick(link.url) },
388
+ link.icon && (React.createElement("span", { className: "designbase-figma-logo-dropdown__icon" }, link.icon)),
389
+ React.createElement("span", { className: "designbase-figma-logo-dropdown__text" }, t(link.name)),
390
+ React.createElement(icons.ExternalLinkIcon, { size: 16, className: "designbase-figma-logo-dropdown__arrow" })))))))));
391
+ };
392
+ LogoDropdown.displayName = 'LogoDropdown';
393
+
330
394
  const defaultTranslations = {
331
395
  unlimitedUsage: '무제한 사용',
332
396
  perDay: '일',
@@ -334,7 +398,7 @@ const defaultTranslations = {
334
398
  donationPrompt: '이 플러그인이 유용했나요?',
335
399
  };
336
400
  const defaultT = (key) => defaultTranslations[key] || key;
337
- const FigmaFooter = ({ onLicensePageClick, paymentStatus = 'FREE', usageCount = 0, isLoading = false, showPaymentStatus = true, maxDailyUsage = 20, showDonation = true, donationUrl = 'https://buymeacoffee.com/designbase', donationText = 'Buy me a coffee', showDonationText = true, donationPromptText, showLanguageSelector = false, currentLanguage = 'ko', languages, onLanguageChange, className, t = defaultT, children, }) => {
401
+ const FigmaFooter = ({ onLicensePageClick, paymentStatus = 'FREE', usageCount = 0, isLoading = false, showPaymentStatus = true, maxDailyUsage = 20, showDonation = true, donationUrl = 'https://buymeacoffee.com/designbase', donationText = 'Buy me a coffee', showDonationText = true, donationPromptText, showLanguageSelector = false, currentLanguage = 'ko', languages, onLanguageChange, logoSrc, logoAlt = 'DesignBase', logoType = 'designbase', logoSize = 'xs', logoLinks, className, t = defaultT, children, }) => {
338
402
  const isActive = paymentStatus === 'PAID';
339
403
  const hasChildren = React.Children.count(children) > 0;
340
404
  const classes = clsx('designbase-figma-footer', {
@@ -342,7 +406,9 @@ const FigmaFooter = ({ onLicensePageClick, paymentStatus = 'FREE', usageCount =
342
406
  }, className);
343
407
  return (React.createElement("footer", { className: classes },
344
408
  React.createElement("div", { className: "designbase-figma-footer__wrap" },
345
- React.createElement("div", { className: "designbase-figma-footer__left" }, showLanguageSelector && (React.createElement(LanguageSelector, { currentLanguage: currentLanguage, languages: languages, onLanguageChange: onLanguageChange, size: "s" }))),
409
+ React.createElement("div", { className: "designbase-figma-footer__left" },
410
+ React.createElement(LogoDropdown, { logoSrc: logoSrc, logoAlt: logoAlt, logoType: logoType, logoSize: logoSize, links: logoLinks, t: t }),
411
+ showLanguageSelector && (React.createElement(LanguageSelector, { currentLanguage: currentLanguage, languages: languages, onLanguageChange: onLanguageChange, size: "s" }))),
346
412
  showPaymentStatus && (React.createElement("div", { className: "designbase-figma-footer__payment-states" },
347
413
  !isLoading && (React.createElement("div", { className: "designbase-figma-footer__usage-info" }, isActive ? (React.createElement("span", { className: "designbase-figma-footer__unlimited-usage" }, t('unlimitedUsage'))) : (React.createElement(React.Fragment, null,
348
414
  React.createElement("span", { className: "designbase-figma-footer__usage-count" }, usageCount),
@@ -369,10 +435,9 @@ const FormWithSubmit = ({ onLicenseSubmit, disabled = false, isSubmitting = fals
369
435
  e.preventDefault();
370
436
  await onLicenseSubmit(inputValue);
371
437
  };
372
- const handleChange = (e) => {
373
- const newValue = e.target.value;
374
- setInputValue(newValue);
375
- onValueChange?.(newValue);
438
+ const handleChange = (value) => {
439
+ setInputValue(value);
440
+ onValueChange?.(value);
376
441
  };
377
442
  const displayLabel = resolveText(t, label, 'License Key');
378
443
  const displayPlaceholder = resolveText(t, placeholder, 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx');
@@ -855,6 +920,7 @@ exports.FigmaSidebar = FigmaSidebar;
855
920
  exports.FormWithSubmit = FormWithSubmit;
856
921
  exports.InteractionFeedback = InteractionFeedback;
857
922
  exports.LanguageSelector = LanguageSelector;
923
+ exports.LogoDropdown = LogoDropdown;
858
924
  exports.PageLicense = PageLicense;
859
925
  exports.PaymentBadge = PaymentBadge;
860
926
  exports.PaymentStatusSection = PaymentStatusSection;