Skip to content

docs: icon collection 문서 추가#529

Merged
Sh031224 merged 8 commits intomainfrom
feature/sh031224/icon-docs
Mar 31, 2026
Merged

docs: icon collection 문서 추가#529
Sh031224 merged 8 commits intomainfrom
feature/sh031224/icon-docs

Conversation

@Sh031224
Copy link
Copy Markdown
Collaborator

@Sh031224 Sh031224 commented Mar 31, 2026

Summary

Type of Change

  • New feature
  • Bug fix
  • Refactoring
  • Documentation
  • Other

Checklist

  • Changes do not break existing functionality
  • Added or updated relevant tests
  • Lint and build pass successfully

Related Issues

Summary by CodeRabbit

  • 새로운 기능

    • 아이콘 문서 페이지 추가 — 제목/설명과 아이콘 브라우저 제공
    • 아이콘 검색 및 카테고리 필터(솔리드/컬러/내비게이션) 추가
    • 아이콘 그리드에서 아이콘 키워드·설명 노출
  • 버그 수정 / 개선

    • 아이콘 개별 SVG 다운로드 기능 추가(클린 SVG로 저장)
    • 일부 아이콘 벡터 미세 조정 및 메타데이터 보강

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Mar 31, 2026

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: e484fa05-36f7-406d-91a3-bfa65b3107e1

📥 Commits

Reviewing files that changed from the base of the PR and between 9668b90 and d4ecd96.

📒 Files selected for processing (1)
  • packages/wds-icon/src/icon-logo-instagram-color.tsx

Disabled knowledge base sources:

  • Jira integration is disabled

You can enable these sources in your CodeRabbit configuration.


Walkthrough

Figma 아이콘 메타데이터 구조에 description을 추가하도록 워크플로우를 변경하고, 문서용 아이콘 검색/필터 페이지 및 관련 컴포넌트/스타일/유틸을 추가했으며, 다수의 아이콘 컴포넌트에 JSDoc 주석을 일괄 추가했습니다.

Changes

Cohort / File(s) Summary
Figma 워크플로우 및 메타데이터 처리
.github/workflows/figma-icon-sync.yml
Figma JSON 매핑에서 idsToNameAndComponentSetId를 배열에서 객체로 변경하고 description을 포함하도록 노드 처리 및 결과 result.json 매핑을 업데이트함.
문서 페이지 추가 및 네비게이션 등록
docs/src/app/(with-lnb)/docs/foundations/base-material/icons/page.tsx, docs/src/features/docs/components/foundations/overview/constants.ts, docs/src/features/docs/constants/index.ts
새로운 Icons 문서 페이지와 메타데이터(메타 태그, 썸네일) 추가 및 문서 목록에 Icons 항목 삽입.
아이콘 브라우징 UI — 검색/필터/컬렉션
docs/src/features/docs/components/foundations/icons/index.tsx, docs/src/features/docs/components/foundations/icons/collections/index.tsx, docs/src/features/docs/components/foundations/icons/collections/style.ts, docs/src/features/docs/components/foundations/icons/helpers.ts, docs/src/features/docs/components/foundations/icons/types.ts
아이콘 검색 입력, 카테고리 세그먼트( solid/color/navigation ), 필터 로직, 컬렉션 그리드·팝오버 UI, SVG 다운로드 로직, 스타일 유틸 및 메타데이터 파싱 헬퍼/타입 추가.
Figma 컴포넌트 연결 스크립트 변경
figma/icons/index.figma.tsx
IconBlankColor에 대한 figma.connect 호출 추가(노드 id/variant 등록).
아이콘 컴포넌트 문서 주석(대량 변경)
packages/wds-icon/src/icon-*.tsx (다수 파일)
약 200여 개 아이콘 컴포넌트 상단에 JSDoc 주석(한글 설명 및 키워드) 추가. 일부 파일(icon-agent-color.tsx)은 SVG 경로의 소폭 조정 포함.

Sequence Diagram(s)

(생성 요건 불충족 — 생략)

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed 제목이 PR의 주요 변경사항을 명확하게 반영하고 있습니다. 아이콘 컬렉션 문서 추가라는 핵심 목표를 간결하고 구체적으로 설명하고 있습니다.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/sh031224/icon-docs

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions
Copy link
Copy Markdown
Contributor

size-limit report 📦

Path Size
wds 2.37 KB (0%)
wds-icon 5 KB (0%)
wds-lottie 83 B (0%)
wds-theme 144 B (0%)
wds-engine 332 B (0%)
wds-nextjs 165 B (0%)

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 15

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
.github/workflows/figma-icon-sync.yml (1)

291-294: ⚠️ Potential issue | 🟡 Minor

spread 연산자가 객체에 대해 올바르게 동작하지 않습니다.

idsToNameAndComponentSetId[nodeId]가 이제 배열이 아닌 객체({ name, id, description })이므로, ... spread 연산자가 console.log에서 예상대로 동작하지 않습니다.

🔧 수정 제안
                    console.log(
                      'Failed again:',
                      nodeId,
                      images[nodeId],
-                     ...idsToNameAndComponentSetId[nodeId],
+                     idsToNameAndComponentSetId[nodeId],
                    );

또는 개별 속성을 명시적으로 출력:

+                     idsToNameAndComponentSetId[nodeId].name,
+                     idsToNameAndComponentSetId[nodeId].id,
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.github/workflows/figma-icon-sync.yml around lines 291 - 294, The spread
operator is being used on idsToNameAndComponentSetId[nodeId] which is now an
object ({ name, id, description }) so ...idsToNameAndComponentSetId[nodeId] in
the console.log call (alongside nodeId and images[nodeId]) won't behave as
expected; fix it by either passing the whole object directly (replace the spread
with idsToNameAndComponentSetId[nodeId]) or by logging explicit fields (e.g.,
idsToNameAndComponentSetId[nodeId].name, .id, .description) in the console.log
where nodeId, images[nodeId], ...idsToNameAndComponentSetId[nodeId] is used.
figma/icons/index.figma.tsx (1)

30-30: ⚠️ Potential issue | 🟠 Major

IconBlankColor 중복 등록 제거 필요

IconBlankColor가 30번 줄과 346번 줄에서 중복으로 등록되어 있습니다. 두 등록 모두 동일한 variant: { Name: 'blank' }를 사용하므로 충돌이 발생할 수 있습니다. 파일의 다른 모든 아이콘은 한 번만 등록되므로, 중복된 등록 중 하나를 제거해야 합니다.

  • 30번 줄: node-id=40167-141716
  • 346번 줄: node-id=8-731
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@figma/icons/index.figma.tsx` at line 30, IconBlankColor is registered twice
via figma.connect with the same variant Name 'blank', causing a conflict; remove
the duplicate figma.connect call for IconBlankColor so it is registered only
once. Locate the two figma.connect invocations that reference IconBlankColor
(one using node-id=40167-141716 and the other node-id=8-731) and delete the
earlier/duplicate call (the one with node-id=40167-141716) so only the single
intended registration remains.
🧹 Nitpick comments (11)
packages/wds-icon/src/icon-blank.tsx (1)

11-13: 키워드 라인 추가를 고려해보세요.

다른 아이콘 파일들과 달리 "키워드:" 라인이 없습니다. 아이콘이 사용되지 않는다는 설명에 부합할 수 있지만, 일관성을 위해 빈 키워드 라인을 추가하거나 "없음"으로 명시하는 것을 고려해보세요.

선택적 개선안
 /**
  * 기본 표시를 위한 아이콘으로, 쓰지 않습니다.
+ * 키워드: 없음
  */
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/wds-icon/src/icon-blank.tsx` around lines 11 - 13, The file
icon-blank.tsx has a header comment that lacks the "키워드:" line present in other
icon files; update the top comment block to include a "키워드:" line (either empty
or explicitly "없음") to keep header format consistent with other icons and
clarify that there are no keywords; adjust the comment in icon-blank.tsx
accordingly.
packages/wds-icon/src/icon-coins.tsx (1)

13-13: 키워드 구분자 일관성을 맞추는 게 좋겠습니다.

Stacked rewards 리워드는 토큰 경계가 모호해서, 쉼표로 분리(Stacked, rewards, 리워드)하면 검색/가독성이 더 명확합니다.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/wds-icon/src/icon-coins.tsx` at line 13, Update the keywords line in
packages/wds-icon/src/icon-coins.tsx to use consistent comma-separated tokens
and split the ambiguous "Stacked rewards 리워드" into separate tokens; for example
replace the current "키워드: Coins, Stacked rewards 리워드, 코인, 동전, Money, 돈" entry
with a comma-separated list like "키워드: Coins, Stacked, rewards, 리워드, 코인, 동전,
Money, 돈" so each keyword is clearly delimited.
packages/wds-icon/src/icon-deep-search.tsx (1)

13-13: 키워드 중복(Deep Search)은 정리해두는 것을 권장합니다.

동일 키워드 중복은 검색/표시 품질에 불필요한 노이즈를 만들 수 있어 1회만 유지하는 편이 좋습니다.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/wds-icon/src/icon-deep-search.tsx` at line 13, 현재 파일의 키워드 목록에 "Deep
Search"가 중복되어 있으므로 중복 항목을 제거해 중복을 1회만 유지하도록 정리하세요; 수정 대상은 icon-deep-search.tsx
내의 키워드 주석 또는 키워드 배열(문자열 리스트)이며 동일한 "Deep Search" 항목을 하나만 남기고 나머지 중복된 문자열을 삭제해
검색/표시 시 불필요한 노이즈를 제거하도록 변경하면 됩니다.
packages/wds-icon/src/icon-message-fill.tsx (1)

11-14: 키워드 확장 고려

현재 키워드가 "메시지" 하나만 있어 다른 아이콘들에 비해 검색성이 제한적일 수 있습니다.

💡 키워드 확장 제안
 /**
  * 메시지를 표현합니다.
- * 키워드: 메시지
+ * 키워드: 메시지, message, chat, 대화, 채팅
  */

다른 아이콘들처럼 영문 키워드와 유사 용어를 추가하면 검색성이 향상됩니다.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/wds-icon/src/icon-message-fill.tsx` around lines 11 - 14, Update the
icon metadata for icon-message-fill to expand its searchable keywords: add
English terms and synonyms such as "message", "chat", "comment", "sms",
"notification", "bubble", and any related hyphenated variants to the existing
Korean "메시지" entry so the component and its docblock/search tags match other
icons; locate the JSDoc/comment block or exported metadata object for
icon-message-fill and append these keywords in the same format used by other
icons.
packages/wds-icon/src/icon-person-fill.tsx (1)

13-13: 키워드 중복은 한 번만 유지하는 편이 좋습니다.

Profile이 중복되어 있어, 검색 인덱스/표시 일관성을 위해 중복 제거를 권장합니다.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/wds-icon/src/icon-person-fill.tsx` at line 13, Remove the duplicated
keyword "Profile" from the keywords comment in icon-person-fill.tsx so the
keyword list is unique and consistent; locate the comment line that starts with
"키워드:" (contains "Profile, 사람, Human, Person, 인간, 유저, User, Profile, 프로필") and
edit it to keep each keyword only once (e.g., remove the second "Profile") while
preserving the existing order/format.
packages/wds-icon/src/icon-arrow-up-right-thick.tsx (1)

13-13: 키워드 중복 정리는 해두면 좋습니다.

Line 13에 화살표가 중복되어 있어 메타데이터 정합성 측면에서 한 번만 유지하는 것을 권장합니다.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/wds-icon/src/icon-arrow-up-right-thick.tsx` at line 13, The keywords
metadata in the IconArrowUpRightThick component contains a duplicate entry
("화살표"); locate the keywords string/array associated with the
IconArrowUpRightThick export and remove the duplicate so each keyword appears
only once (keep a single "화살표" instance), ensuring the metadata list remains
comma-separated and otherwise unchanged.
packages/wds-icon/src/icon-eye.tsx (1)

11-14: 키워드 목록의 구두점이 일관성이 없습니다.

Line 13에서 "문자 표시 안함." 뒤에 마침표가 있지만, 그 뒤에도 키워드가 계속됩니다. 다른 아이콘 파일과의 일관성을 위해 키워드 목록 중간의 마침표를 제거하는 것이 좋습니다.

♻️ 수정 제안
 /**
  * 정보 표시 여부를 구분할 때 사용합니다.
- * 키워드: 뷰, 눈, 눈알, 조회, 비밀번호 조회, 문자표시, 문자 표시 안함. View, eye, Browse, Password reveal
+ * 키워드: 뷰, 눈, 눈알, 조회, 비밀번호 조회, 문자표시, 문자 표시 안함, View, eye, Browse, Password reveal
  */
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/wds-icon/src/icon-eye.tsx` around lines 11 - 14, In the JSDoc
comment block that documents the icon keywords (the /** ... */ comment
containing "문자 표시 안함."), remove the stray period after "문자 표시 안함" so the
keywords list uses consistent punctuation with other icon files; ensure the
keyword sequence remains space/comma separated and matches the other icon
keyword formats in the repo.
docs/src/features/docs/components/foundations/icons/index.tsx (1)

14-14: 경로 별칭(alias) 사용을 고려하세요.

6단계 상대 경로(../../../../../../generated/icons.json)는 유지보수가 어렵습니다. 프로젝트에서 사용하는 @/ 경로 별칭 활용을 권장합니다.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/src/features/docs/components/foundations/icons/index.tsx` at line 14,
Replace the long relative import path for the icons JSON with the project path
alias: update the import that currently reads
'../../../../../../generated/icons.json' (the import bound to the icons
identifier in index.tsx) to use the configured alias (e.g.,
'@/generated/icons.json') so the module resolution uses the repo path alias;
ensure your tsconfig/webpack alias is configured if not already and update any
other similar imports in this file to the alias form.
docs/src/features/docs/components/foundations/icons/collections/index.tsx (2)

139-160: getKeywords가 동일한 입력으로 두 번 호출됩니다.

139번 줄과 150번 줄에서 getKeywords(icon.description)가 중복 호출됩니다. 렌더링 성능을 위해 결과를 변수에 저장하는 것을 권장합니다.

♻️ 리팩토링 제안
+                 {(() => {
+                   const keywords = getKeywords(icon.description);
+                   return keywords.length > 0 && (
-                 {getKeywords(icon.description).length > 0 && (
                     <FlexBox gap="12px" flexDirection="column">
                       <Typography
                         color="semantic.label.neutral"
                         variant="label1"
                         weight="medium"
                       >
                         Keyword
                       </Typography>

                       <FlexBox flexWrap="wrap" gap="6px">
-                       {getKeywords(icon.description).map((keyword, i) => (
+                       {keywords.map((keyword, i) => (
                           <ContentBadge
                             color="neutral"
                             size="xsmall"
                             variant="solid"
                             key={i}
                           >
                             {keyword}
                           </ContentBadge>
                         ))}
                       </FlexBox>
                     </FlexBox>
+                   );
+                 })()}
-                 )}
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/src/features/docs/components/foundations/icons/collections/index.tsx`
around lines 139 - 160, getKeywords(icon.description) is called twice causing
unnecessary recomputation; compute const keywords =
getKeywords(icon.description) once (e.g., above the JSX or at the start of the
component rendering block) and replace both calls with keywords, then use
keywords.length for the conditional and keywords.map(...) for the ContentBadge
rendering (references: getKeywords, icon.description, ContentBadge, keywords).

83-85: 동적 아이콘 컴포넌트 조회 시 타입 안전성을 고려하세요.

Icons[icon.name as keyof typeof Icons]undefined를 반환할 수 있습니다. 현재 코드는 IconComponent가 항상 존재한다고 가정합니다.

🛡️ 방어적 코드 제안
           const IconComponent = Icons[icon.name as keyof typeof Icons];
+          if (!IconComponent) return null;

           return (
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/src/features/docs/components/foundations/icons/collections/index.tsx`
around lines 83 - 85, The dynamic lookup Icons[icon.name as keyof typeof Icons]
may return undefined; update the icons.map callback to guard IconComponent
before using it (reference: icons.map, IconComponent, Icons, icon.name) — e.g.,
check if IconComponent is truthy and render a fallback/default icon or null when
undefined, or narrow its type with a type guard before JSX usage so you avoid
calling/rendering an undefined component and maintain type safety.
docs/src/features/docs/components/foundations/icons/collections/style.ts (1)

56-65: !important 사용에 대해 확인하세요.

min-width: unset !important가 WDS 기본 스타일을 오버라이드하기 위해 필요한 것인지 확인이 필요합니다. 가능하다면 !important 없이 해결하는 것이 유지보수에 유리합니다.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/src/features/docs/components/foundations/icons/collections/style.ts`
around lines 56 - 65, The rule iconPopoverWrapperStyle currently forces
min-width: unset !important to override WDS defaults; remove the !important by
locating iconPopoverWrapperStyle and the component that applies the WDS class
and instead increase selector specificity or change the cascade so the override
applies without !important (for example, make the styled selector more specific,
target the exact wrapper/class used by WDS, or adjust the upstream min-width
value via a prop/variable), verify the same behavior still holds in
respondTo('500px') media query and only revert to !important if no other
reasonable selector/cascade change works.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@docs/src/features/docs/components/foundations/icons/helpers.ts`:
- Around line 13-17: The getKeywords function can throw when description is
null/undefined because it calls description.match; update getKeywords to
defensively handle missing descriptions by checking description (or coercing to
an empty string) before calling match, e.g., early-return [] if description is
falsy or use (description ?? '') to run the regex safely; keep using the
existing regex and split logic and reference getKeywords and description.match
in your changes.

In `@packages/wds-icon/src/icon-chevron-down-small.tsx`:
- Around line 12-13: Update the keywords comment in icon-chevron-down-small.tsx:
replace the misspelled token "꺽쇠" with "꺾쇠" and remove the extra space in "아래, 
화살표" so it becomes "아래, 화살표"; also ensure the keywords line ("키워드: Chevron,
Arrow, Down, Bottom, 꺾쇠, 아래, 화살표, 표시, 하단") uses consistent comma separation and
spacing.

In `@packages/wds-icon/src/icon-chevron-down-thick-small.tsx`:
- Line 13: Remove the redundant double space inside the keywords string in
packages/wds-icon/src/icon-chevron-down-thick-small.tsx (the keyword list
containing "아래,  화살표"); edit the keywords/comment line to normalize spacing so
each entry is separated by a single space or comma as used elsewhere (e.g., "아래,
화살표"), ensuring the keyword string matches the project's formatting convention.

In `@packages/wds-icon/src/icon-chevron-left-thick-small.tsx`:
- Line 12: 문서 주석의 오탈자 수정: 파일의 상단 설명(컴포넌트 주석)에서 "왼쪽 꺽쇠를 표현합니다."처럼 쓰인 모든 "꺽쇠"를 올바른
표기 "꺾쇠"로 바꿔 주세요; 대상은 이 파일의 IconChevronLeftThickSmall(또는 해당 컴포넌트/기능 설명) 주석 문자열이며
검색 키워드나 설명 주석에 동일 오타가 있으면 모두 수정합니다.

In `@packages/wds-icon/src/icon-chevron-left-thick.tsx`:
- Around line 11-14: Update the JSDoc keywords to match the component name: in
the comment block for IconChevronLeftThick replace the keyword "Small" with
"Thick" so the tag list accurately reflects the component (e.g., keep "꺽쇠, 뒤로가기,
Chevron, Back, Left, Size, Tight" and change "Small" -> "Thick"); ensure the
component identifier IconChevronLeftThick remains referenced where applicable.

In `@packages/wds-icon/src/icon-chevron-left-tight.tsx`:
- Around line 12-13: 설명문과 키워드의 맞춤법 오류를 고치세요: 파일의 상단 설명/키워드 주석(아이콘 컴포넌트
IconChevronLeftTight 관련 주석)에서 잘못된 표기 '꺽쇠'를 모두 올바른 형태 '꺾쇠'로 교체하고, 동일한 오타가 남아있을 수
있는 주석 블록이나 export 주석(또는 README 주석)도 함께 수정해 검색/문서 일관성을 유지하세요.

In `@packages/wds-icon/src/icon-chevron-right-small.tsx`:
- Around line 12-13: Update the Korean terminology in the component
documentation by replacing the misspelled "꺽쇠" with the correct "꺾쇠" in the top
comment block of the icon-chevron-right-small component (the descriptive lines
that include keywords like "꺽쇠, 앞으로 가기, Chevron, Forward, Right..."); ensure all
occurrences in that comment are corrected so the component description and
keyword list use "꺾쇠".

In `@packages/wds-icon/src/icon-chevron-right-tight-small.tsx`:
- Around line 12-13: The comment/metadata in the IconChevronRightTightSmall
component contains a Korean typo: change every occurrence of "꺽쇠" to the correct
"꺾쇠" in the icon description and keyword list used by the
IconChevronRightTightSmall export (and any surrounding JSDoc/comment block) so
the displayed description and search keywords are accurate.

In `@packages/wds-icon/src/icon-chevron-right-tight-thick.tsx`:
- Around line 12-13: In the top comment of
packages/wds-icon/src/icon-chevron-right-tight-thick.tsx update the Korean typo:
replace every occurrence of "꺽쇠" with the correct spelling "꺾쇠" (including in
the description and keyword list) so the component comment and search keywords
for the Chevron icon (icon-chevron-right-tight-thick) use the corrected term.

In `@packages/wds-icon/src/icon-chevron-right.tsx`:
- Around line 12-13: Update the JSDoc for IconChevronRight: correct the Korean
typo by replacing "꺽쇠" with "꺾쇠", remove misleading keywords "Tight" and "Small"
from the keyword list, and instead include concise relevant keywords such as
"Chevron, Forward, Right, Arrow, Size" so search results are accurate; apply
these edits in the comment block above the IconChevronRight component.

In `@packages/wds-icon/src/icon-chevron-up-thick-small.tsx`:
- Around line 12-13: Update the Korean term spelling in the component
documentation: replace all occurrences of "꺽쇠" with the standard "꺾쇠" in the
comment block and keyword list inside
packages/wds-icon/src/icon-chevron-up-thick-small.tsx (the top description/JSDoc
for the icon component), so both the human-readable description and the "키워드"
string use "꺾쇠" consistently.

In `@packages/wds-icon/src/icon-lock-open.tsx`:
- Line 13: The keyword list in packages/wds-icon/src/icon-lock-open.tsx includes
a nonstandard term "딸깍 open" which can hurt search/filter quality; update the
keyword string (the keywords/comments for the icon) to use standard, consistent
terms such as "잠금 해제, unlock, open, 열린 자물쇠" (remove "딸깍 open") so the icon's
metadata uses clear, searchable keywords.

In `@packages/wds-icon/src/icon-logo-instagram-color.tsx`:
- Around line 11-14: Fix the JSDoc closing tag in the top comment of
icon-logo-instagram-color.tsx: replace the incorrect closing sequence "**/" with
the correct "*/" so the JSDoc block (the comment describing the Instagram logo
and keywords) parses correctly.

In `@packages/wds-icon/src/icon-more-horizontal.tsx`:
- Line 13: Fix a typo in the keywords for the More icon by replacing the
incorrect Korean string "땡땡떙" with "땡땡땡" in the keywords/comment for the
IconMoreHorizontal component (file:
packages/wds-icon/src/icon-more-horizontal.tsx), updating the keyword list near
the top of the file so search will use the correct term.

In `@packages/wds-icon/src/icon-person.tsx`:
- Line 13: The keywords list in packages/wds-icon/src/icon-person.tsx contains a
duplicate entry "Profile"; open the keywords/comment block in icon-person.tsx
and remove the redundant "Profile" so each keyword appears only once (ensure the
remaining list still includes relevant terms like Person, User, Profile, Human,
etc.).

---

Outside diff comments:
In @.github/workflows/figma-icon-sync.yml:
- Around line 291-294: The spread operator is being used on
idsToNameAndComponentSetId[nodeId] which is now an object ({ name, id,
description }) so ...idsToNameAndComponentSetId[nodeId] in the console.log call
(alongside nodeId and images[nodeId]) won't behave as expected; fix it by either
passing the whole object directly (replace the spread with
idsToNameAndComponentSetId[nodeId]) or by logging explicit fields (e.g.,
idsToNameAndComponentSetId[nodeId].name, .id, .description) in the console.log
where nodeId, images[nodeId], ...idsToNameAndComponentSetId[nodeId] is used.

In `@figma/icons/index.figma.tsx`:
- Line 30: IconBlankColor is registered twice via figma.connect with the same
variant Name 'blank', causing a conflict; remove the duplicate figma.connect
call for IconBlankColor so it is registered only once. Locate the two
figma.connect invocations that reference IconBlankColor (one using
node-id=40167-141716 and the other node-id=8-731) and delete the
earlier/duplicate call (the one with node-id=40167-141716) so only the single
intended registration remains.

---

Nitpick comments:
In `@docs/src/features/docs/components/foundations/icons/collections/index.tsx`:
- Around line 139-160: getKeywords(icon.description) is called twice causing
unnecessary recomputation; compute const keywords =
getKeywords(icon.description) once (e.g., above the JSX or at the start of the
component rendering block) and replace both calls with keywords, then use
keywords.length for the conditional and keywords.map(...) for the ContentBadge
rendering (references: getKeywords, icon.description, ContentBadge, keywords).
- Around line 83-85: The dynamic lookup Icons[icon.name as keyof typeof Icons]
may return undefined; update the icons.map callback to guard IconComponent
before using it (reference: icons.map, IconComponent, Icons, icon.name) — e.g.,
check if IconComponent is truthy and render a fallback/default icon or null when
undefined, or narrow its type with a type guard before JSX usage so you avoid
calling/rendering an undefined component and maintain type safety.

In `@docs/src/features/docs/components/foundations/icons/collections/style.ts`:
- Around line 56-65: The rule iconPopoverWrapperStyle currently forces
min-width: unset !important to override WDS defaults; remove the !important by
locating iconPopoverWrapperStyle and the component that applies the WDS class
and instead increase selector specificity or change the cascade so the override
applies without !important (for example, make the styled selector more specific,
target the exact wrapper/class used by WDS, or adjust the upstream min-width
value via a prop/variable), verify the same behavior still holds in
respondTo('500px') media query and only revert to !important if no other
reasonable selector/cascade change works.

In `@docs/src/features/docs/components/foundations/icons/index.tsx`:
- Line 14: Replace the long relative import path for the icons JSON with the
project path alias: update the import that currently reads
'../../../../../../generated/icons.json' (the import bound to the icons
identifier in index.tsx) to use the configured alias (e.g.,
'@/generated/icons.json') so the module resolution uses the repo path alias;
ensure your tsconfig/webpack alias is configured if not already and update any
other similar imports in this file to the alias form.

In `@packages/wds-icon/src/icon-arrow-up-right-thick.tsx`:
- Line 13: The keywords metadata in the IconArrowUpRightThick component contains
a duplicate entry ("화살표"); locate the keywords string/array associated with the
IconArrowUpRightThick export and remove the duplicate so each keyword appears
only once (keep a single "화살표" instance), ensuring the metadata list remains
comma-separated and otherwise unchanged.

In `@packages/wds-icon/src/icon-blank.tsx`:
- Around line 11-13: The file icon-blank.tsx has a header comment that lacks the
"키워드:" line present in other icon files; update the top comment block to include
a "키워드:" line (either empty or explicitly "없음") to keep header format consistent
with other icons and clarify that there are no keywords; adjust the comment in
icon-blank.tsx accordingly.

In `@packages/wds-icon/src/icon-coins.tsx`:
- Line 13: Update the keywords line in packages/wds-icon/src/icon-coins.tsx to
use consistent comma-separated tokens and split the ambiguous "Stacked rewards
리워드" into separate tokens; for example replace the current "키워드: Coins, Stacked
rewards 리워드, 코인, 동전, Money, 돈" entry with a comma-separated list like "키워드:
Coins, Stacked, rewards, 리워드, 코인, 동전, Money, 돈" so each keyword is clearly
delimited.

In `@packages/wds-icon/src/icon-deep-search.tsx`:
- Line 13: 현재 파일의 키워드 목록에 "Deep Search"가 중복되어 있으므로 중복 항목을 제거해 중복을 1회만 유지하도록
정리하세요; 수정 대상은 icon-deep-search.tsx 내의 키워드 주석 또는 키워드 배열(문자열 리스트)이며 동일한 "Deep
Search" 항목을 하나만 남기고 나머지 중복된 문자열을 삭제해 검색/표시 시 불필요한 노이즈를 제거하도록 변경하면 됩니다.

In `@packages/wds-icon/src/icon-eye.tsx`:
- Around line 11-14: In the JSDoc comment block that documents the icon keywords
(the /** ... */ comment containing "문자 표시 안함."), remove the stray period after
"문자 표시 안함" so the keywords list uses consistent punctuation with other icon
files; ensure the keyword sequence remains space/comma separated and matches the
other icon keyword formats in the repo.

In `@packages/wds-icon/src/icon-message-fill.tsx`:
- Around line 11-14: Update the icon metadata for icon-message-fill to expand
its searchable keywords: add English terms and synonyms such as "message",
"chat", "comment", "sms", "notification", "bubble", and any related hyphenated
variants to the existing Korean "메시지" entry so the component and its
docblock/search tags match other icons; locate the JSDoc/comment block or
exported metadata object for icon-message-fill and append these keywords in the
same format used by other icons.

In `@packages/wds-icon/src/icon-person-fill.tsx`:
- Line 13: Remove the duplicated keyword "Profile" from the keywords comment in
icon-person-fill.tsx so the keyword list is unique and consistent; locate the
comment line that starts with "키워드:" (contains "Profile, 사람, Human, Person, 인간,
유저, User, Profile, 프로필") and edit it to keep each keyword only once (e.g.,
remove the second "Profile") while preserving the existing order/format.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 6e2d0b71-0fc8-4490-95e1-b17e33ef255b

📥 Commits

Reviewing files that changed from the base of the PR and between b5e26be and 9668b90.

📒 Files selected for processing (300)
  • .github/workflows/figma-icon-sync.yml
  • docs/src/app/(with-lnb)/docs/foundations/base-material/icons/page.tsx
  • docs/src/features/docs/components/foundations/icons/collections/index.tsx
  • docs/src/features/docs/components/foundations/icons/collections/style.ts
  • docs/src/features/docs/components/foundations/icons/helpers.ts
  • docs/src/features/docs/components/foundations/icons/index.tsx
  • docs/src/features/docs/components/foundations/icons/types.ts
  • docs/src/features/docs/components/foundations/overview/constants.ts
  • docs/src/features/docs/constants/index.ts
  • figma/icons/index.figma.tsx
  • packages/wds-icon/src/icon-agent-color.tsx
  • packages/wds-icon/src/icon-agent-search.tsx
  • packages/wds-icon/src/icon-agent.tsx
  • packages/wds-icon/src/icon-ai-review.tsx
  • packages/wds-icon/src/icon-align-center.tsx
  • packages/wds-icon/src/icon-align-justify.tsx
  • packages/wds-icon/src/icon-align-left.tsx
  • packages/wds-icon/src/icon-align-right.tsx
  • packages/wds-icon/src/icon-android.tsx
  • packages/wds-icon/src/icon-apps.tsx
  • packages/wds-icon/src/icon-arrow-down-thick.tsx
  • packages/wds-icon/src/icon-arrow-down.tsx
  • packages/wds-icon/src/icon-arrow-left-thick.tsx
  • packages/wds-icon/src/icon-arrow-left.tsx
  • packages/wds-icon/src/icon-arrow-right-thick.tsx
  • packages/wds-icon/src/icon-arrow-right.tsx
  • packages/wds-icon/src/icon-arrow-turn-down-left.tsx
  • packages/wds-icon/src/icon-arrow-turn-down-right.tsx
  • packages/wds-icon/src/icon-arrow-up-right-thick.tsx
  • packages/wds-icon/src/icon-arrow-up-right.tsx
  • packages/wds-icon/src/icon-arrow-up-thick.tsx
  • packages/wds-icon/src/icon-arrow-up.tsx
  • packages/wds-icon/src/icon-attachment.tsx
  • packages/wds-icon/src/icon-bell-fill.tsx
  • packages/wds-icon/src/icon-bell-plus.tsx
  • packages/wds-icon/src/icon-bell.tsx
  • packages/wds-icon/src/icon-blank-color.tsx
  • packages/wds-icon/src/icon-blank.tsx
  • packages/wds-icon/src/icon-bold.tsx
  • packages/wds-icon/src/icon-book-fill.tsx
  • packages/wds-icon/src/icon-book.tsx
  • packages/wds-icon/src/icon-bookmark-fill.tsx
  • packages/wds-icon/src/icon-bookmark.tsx
  • packages/wds-icon/src/icon-bubble-fill.tsx
  • packages/wds-icon/src/icon-bubble-plus-fill.tsx
  • packages/wds-icon/src/icon-bubble-plus.tsx
  • packages/wds-icon/src/icon-bubble.tsx
  • packages/wds-icon/src/icon-bulb.tsx
  • packages/wds-icon/src/icon-business-bag-fill.tsx
  • packages/wds-icon/src/icon-business-bag.tsx
  • packages/wds-icon/src/icon-calendar-person.tsx
  • packages/wds-icon/src/icon-calendar.tsx
  • packages/wds-icon/src/icon-camera-fill.tsx
  • packages/wds-icon/src/icon-camera.tsx
  • packages/wds-icon/src/icon-caret-down.tsx
  • packages/wds-icon/src/icon-caret-up.tsx
  • packages/wds-icon/src/icon-certificate.tsx
  • packages/wds-icon/src/icon-change.tsx
  • packages/wds-icon/src/icon-chat.tsx
  • packages/wds-icon/src/icon-check-thick.tsx
  • packages/wds-icon/src/icon-check.tsx
  • packages/wds-icon/src/icon-chevron-double-left-small.tsx
  • packages/wds-icon/src/icon-chevron-double-left-thick-small.tsx
  • packages/wds-icon/src/icon-chevron-double-left-thick.tsx
  • packages/wds-icon/src/icon-chevron-double-left.tsx
  • packages/wds-icon/src/icon-chevron-double-right-small.tsx
  • packages/wds-icon/src/icon-chevron-double-right-thick-small.tsx
  • packages/wds-icon/src/icon-chevron-double-right-thick.tsx
  • packages/wds-icon/src/icon-chevron-double-right.tsx
  • packages/wds-icon/src/icon-chevron-down-small.tsx
  • packages/wds-icon/src/icon-chevron-down-thick-small.tsx
  • packages/wds-icon/src/icon-chevron-down-thick.tsx
  • packages/wds-icon/src/icon-chevron-down.tsx
  • packages/wds-icon/src/icon-chevron-left-small.tsx
  • packages/wds-icon/src/icon-chevron-left-thick-small.tsx
  • packages/wds-icon/src/icon-chevron-left-thick.tsx
  • packages/wds-icon/src/icon-chevron-left-tight-small.tsx
  • packages/wds-icon/src/icon-chevron-left-tight-thick-small.tsx
  • packages/wds-icon/src/icon-chevron-left-tight-thick.tsx
  • packages/wds-icon/src/icon-chevron-left-tight.tsx
  • packages/wds-icon/src/icon-chevron-left.tsx
  • packages/wds-icon/src/icon-chevron-right-small.tsx
  • packages/wds-icon/src/icon-chevron-right-thick-small.tsx
  • packages/wds-icon/src/icon-chevron-right-thick.tsx
  • packages/wds-icon/src/icon-chevron-right-tight-small.tsx
  • packages/wds-icon/src/icon-chevron-right-tight-thick-small.tsx
  • packages/wds-icon/src/icon-chevron-right-tight-thick.tsx
  • packages/wds-icon/src/icon-chevron-right-tight.tsx
  • packages/wds-icon/src/icon-chevron-right.tsx
  • packages/wds-icon/src/icon-chevron-up-small.tsx
  • packages/wds-icon/src/icon-chevron-up-thick-small.tsx
  • packages/wds-icon/src/icon-chevron-up-thick.tsx
  • packages/wds-icon/src/icon-chevron-up.tsx
  • packages/wds-icon/src/icon-circle-block.tsx
  • packages/wds-icon/src/icon-circle-check-fill.tsx
  • packages/wds-icon/src/icon-circle-check.tsx
  • packages/wds-icon/src/icon-circle-close-fill.tsx
  • packages/wds-icon/src/icon-circle-close.tsx
  • packages/wds-icon/src/icon-circle-dot.tsx
  • packages/wds-icon/src/icon-circle-exclamation-fill.tsx
  • packages/wds-icon/src/icon-circle-exclamation.tsx
  • packages/wds-icon/src/icon-circle-fill.tsx
  • packages/wds-icon/src/icon-circle-info-fill.tsx
  • packages/wds-icon/src/icon-circle-info.tsx
  • packages/wds-icon/src/icon-circle-plus-fill.tsx
  • packages/wds-icon/src/icon-circle-plus.tsx
  • packages/wds-icon/src/icon-circle-point.tsx
  • packages/wds-icon/src/icon-circle-question-fill.tsx
  • packages/wds-icon/src/icon-circle-question.tsx
  • packages/wds-icon/src/icon-circle-up-right-fill.tsx
  • packages/wds-icon/src/icon-circle-up-right.tsx
  • packages/wds-icon/src/icon-circle.tsx
  • packages/wds-icon/src/icon-clock-fill.tsx
  • packages/wds-icon/src/icon-clock.tsx
  • packages/wds-icon/src/icon-close-thick.tsx
  • packages/wds-icon/src/icon-close.tsx
  • packages/wds-icon/src/icon-code.tsx
  • packages/wds-icon/src/icon-coffee-fill.tsx
  • packages/wds-icon/src/icon-coffee.tsx
  • packages/wds-icon/src/icon-coins-fill.tsx
  • packages/wds-icon/src/icon-coins.tsx
  • packages/wds-icon/src/icon-column.tsx
  • packages/wds-icon/src/icon-company-check-fill.tsx
  • packages/wds-icon/src/icon-company-check.tsx
  • packages/wds-icon/src/icon-company-fill.tsx
  • packages/wds-icon/src/icon-company-plus-fill.tsx
  • packages/wds-icon/src/icon-company-plus.tsx
  • packages/wds-icon/src/icon-company.tsx
  • packages/wds-icon/src/icon-compass-fill.tsx
  • packages/wds-icon/src/icon-compass.tsx
  • packages/wds-icon/src/icon-component-fill.tsx
  • packages/wds-icon/src/icon-component.tsx
  • packages/wds-icon/src/icon-copy.tsx
  • packages/wds-icon/src/icon-crop.tsx
  • packages/wds-icon/src/icon-crown-fill.tsx
  • packages/wds-icon/src/icon-crown.tsx
  • packages/wds-icon/src/icon-deep-search.tsx
  • packages/wds-icon/src/icon-desktop-fill.tsx
  • packages/wds-icon/src/icon-desktop.tsx
  • packages/wds-icon/src/icon-diamond-fill.tsx
  • packages/wds-icon/src/icon-diamond.tsx
  • packages/wds-icon/src/icon-dislike-fill.tsx
  • packages/wds-icon/src/icon-dislike.tsx
  • packages/wds-icon/src/icon-document-fill.tsx
  • packages/wds-icon/src/icon-document-person-fill.tsx
  • packages/wds-icon/src/icon-document-person.tsx
  • packages/wds-icon/src/icon-document-search.tsx
  • packages/wds-icon/src/icon-document-text-fill.tsx
  • packages/wds-icon/src/icon-document-text.tsx
  • packages/wds-icon/src/icon-document.tsx
  • packages/wds-icon/src/icon-dot.tsx
  • packages/wds-icon/src/icon-download.tsx
  • packages/wds-icon/src/icon-exclamation.tsx
  • packages/wds-icon/src/icon-external-link.tsx
  • packages/wds-icon/src/icon-eye-fill.tsx
  • packages/wds-icon/src/icon-eye-slash-fill.tsx
  • packages/wds-icon/src/icon-eye-slash.tsx
  • packages/wds-icon/src/icon-eye.tsx
  • packages/wds-icon/src/icon-face-smile-fill.tsx
  • packages/wds-icon/src/icon-face-smile.tsx
  • packages/wds-icon/src/icon-filter-fill.tsx
  • packages/wds-icon/src/icon-filter.tsx
  • packages/wds-icon/src/icon-fire-fill.tsx
  • packages/wds-icon/src/icon-fire.tsx
  • packages/wds-icon/src/icon-flag-fill.tsx
  • packages/wds-icon/src/icon-flag.tsx
  • packages/wds-icon/src/icon-flip-backward.tsx
  • packages/wds-icon/src/icon-flip.tsx
  • packages/wds-icon/src/icon-folder-fill.tsx
  • packages/wds-icon/src/icon-folder-job-fill.tsx
  • packages/wds-icon/src/icon-folder-job.tsx
  • packages/wds-icon/src/icon-folder-star-fill.tsx
  • packages/wds-icon/src/icon-folder-star.tsx
  • packages/wds-icon/src/icon-folder.tsx
  • packages/wds-icon/src/icon-full.tsx
  • packages/wds-icon/src/icon-globe-fill.tsx
  • packages/wds-icon/src/icon-globe.tsx
  • packages/wds-icon/src/icon-graduation-fill.tsx
  • packages/wds-icon/src/icon-graduation.tsx
  • packages/wds-icon/src/icon-handle-desktop.tsx
  • packages/wds-icon/src/icon-handle.tsx
  • packages/wds-icon/src/icon-heart-fill.tsx
  • packages/wds-icon/src/icon-heart-in-heart-fill.tsx
  • packages/wds-icon/src/icon-heart-in-heart.tsx
  • packages/wds-icon/src/icon-heart.tsx
  • packages/wds-icon/src/icon-history.tsx
  • packages/wds-icon/src/icon-home-fill.tsx
  • packages/wds-icon/src/icon-home.tsx
  • packages/wds-icon/src/icon-hourglass.tsx
  • packages/wds-icon/src/icon-image.tsx
  • packages/wds-icon/src/icon-inbox.tsx
  • packages/wds-icon/src/icon-instance.tsx
  • packages/wds-icon/src/icon-keyboard.tsx
  • packages/wds-icon/src/icon-left-side.tsx
  • packages/wds-icon/src/icon-like-fill.tsx
  • packages/wds-icon/src/icon-like.tsx
  • packages/wds-icon/src/icon-line-horizontal-thick.tsx
  • packages/wds-icon/src/icon-line-horizontal.tsx
  • packages/wds-icon/src/icon-link.tsx
  • packages/wds-icon/src/icon-list-category.tsx
  • packages/wds-icon/src/icon-list-ordered.tsx
  • packages/wds-icon/src/icon-list.tsx
  • packages/wds-icon/src/icon-location-fill.tsx
  • packages/wds-icon/src/icon-location.tsx
  • packages/wds-icon/src/icon-lock-fill.tsx
  • packages/wds-icon/src/icon-lock-open-fill.tsx
  • packages/wds-icon/src/icon-lock-open.tsx
  • packages/wds-icon/src/icon-lock.tsx
  • packages/wds-icon/src/icon-login.tsx
  • packages/wds-icon/src/icon-logo-apple-color.tsx
  • packages/wds-icon/src/icon-logo-apple.tsx
  • packages/wds-icon/src/icon-logo-brunch.tsx
  • packages/wds-icon/src/icon-logo-facebook-color.tsx
  • packages/wds-icon/src/icon-logo-facebook.tsx
  • packages/wds-icon/src/icon-logo-google-color.tsx
  • packages/wds-icon/src/icon-logo-google-play-color.tsx
  • packages/wds-icon/src/icon-logo-google-play.tsx
  • packages/wds-icon/src/icon-logo-instagram-color.tsx
  • packages/wds-icon/src/icon-logo-instagram.tsx
  • packages/wds-icon/src/icon-logo-kakao-color.tsx
  • packages/wds-icon/src/icon-logo-kakao.tsx
  • packages/wds-icon/src/icon-logo-linked-in-color.tsx
  • packages/wds-icon/src/icon-logo-linked-in.tsx
  • packages/wds-icon/src/icon-logo-microsoft-color.tsx
  • packages/wds-icon/src/icon-logo-microsoft.tsx
  • packages/wds-icon/src/icon-logo-naver-blog-color.tsx
  • packages/wds-icon/src/icon-logo-naver-blog.tsx
  • packages/wds-icon/src/icon-logo-x.tsx
  • packages/wds-icon/src/icon-logo-youtube-color.tsx
  • packages/wds-icon/src/icon-logo-youtube.tsx
  • packages/wds-icon/src/icon-logout.tsx
  • packages/wds-icon/src/icon-magic-wand.tsx
  • packages/wds-icon/src/icon-mail-open.tsx
  • packages/wds-icon/src/icon-mail.tsx
  • packages/wds-icon/src/icon-medal.tsx
  • packages/wds-icon/src/icon-megaphone-fill.tsx
  • packages/wds-icon/src/icon-megaphone.tsx
  • packages/wds-icon/src/icon-menu-thick.tsx
  • packages/wds-icon/src/icon-menu.tsx
  • packages/wds-icon/src/icon-message-fill.tsx
  • packages/wds-icon/src/icon-message.tsx
  • packages/wds-icon/src/icon-microphone-fill.tsx
  • packages/wds-icon/src/icon-microphone-slash-fill.tsx
  • packages/wds-icon/src/icon-microphone-slash.tsx
  • packages/wds-icon/src/icon-microphone.tsx
  • packages/wds-icon/src/icon-minus-thick.tsx
  • packages/wds-icon/src/icon-minus.tsx
  • packages/wds-icon/src/icon-mobile-fill.tsx
  • packages/wds-icon/src/icon-mobile.tsx
  • packages/wds-icon/src/icon-moon.tsx
  • packages/wds-icon/src/icon-more-horizontal.tsx
  • packages/wds-icon/src/icon-more-vertical-tight.tsx
  • packages/wds-icon/src/icon-more-vertical.tsx
  • packages/wds-icon/src/icon-music-microphone.tsx
  • packages/wds-icon/src/icon-navigation-career.tsx
  • packages/wds-icon/src/icon-navigation-menu.tsx
  • packages/wds-icon/src/icon-navigation-mypage.tsx
  • packages/wds-icon/src/icon-navigation-recruit.tsx
  • packages/wds-icon/src/icon-navigation-social.tsx
  • packages/wds-icon/src/icon-palette-fill.tsx
  • packages/wds-icon/src/icon-palette.tsx
  • packages/wds-icon/src/icon-passport-fill.tsx
  • packages/wds-icon/src/icon-passport.tsx
  • packages/wds-icon/src/icon-pause.tsx
  • packages/wds-icon/src/icon-pencil-fill.tsx
  • packages/wds-icon/src/icon-pencil.tsx
  • packages/wds-icon/src/icon-person-fill.tsx
  • packages/wds-icon/src/icon-person-plus-fill.tsx
  • packages/wds-icon/src/icon-person-plus.tsx
  • packages/wds-icon/src/icon-person.tsx
  • packages/wds-icon/src/icon-persons-fill.tsx
  • packages/wds-icon/src/icon-persons.tsx
  • packages/wds-icon/src/icon-phone-fill.tsx
  • packages/wds-icon/src/icon-phone.tsx
  • packages/wds-icon/src/icon-pin-fill.tsx
  • packages/wds-icon/src/icon-pin.tsx
  • packages/wds-icon/src/icon-play.tsx
  • packages/wds-icon/src/icon-plus-thick.tsx
  • packages/wds-icon/src/icon-plus.tsx
  • packages/wds-icon/src/icon-presentation.tsx
  • packages/wds-icon/src/icon-printer.tsx
  • packages/wds-icon/src/icon-question.tsx
  • packages/wds-icon/src/icon-quote.tsx
  • packages/wds-icon/src/icon-refresh.tsx
  • packages/wds-icon/src/icon-regex.tsx
  • packages/wds-icon/src/icon-replace-all.tsx
  • packages/wds-icon/src/icon-replace.tsx
  • packages/wds-icon/src/icon-reset.tsx
  • packages/wds-icon/src/icon-right-side.tsx
  • packages/wds-icon/src/icon-rotate.tsx
  • packages/wds-icon/src/icon-search-thick.tsx
  • packages/wds-icon/src/icon-search.tsx
  • packages/wds-icon/src/icon-send-fill.tsx
  • packages/wds-icon/src/icon-send.tsx
  • packages/wds-icon/src/icon-setting.tsx
  • packages/wds-icon/src/icon-share-ios.tsx
  • packages/wds-icon/src/icon-share.tsx
  • packages/wds-icon/src/icon-sparkle-fill.tsx
  • packages/wds-icon/src/icon-sparkle.tsx
  • packages/wds-icon/src/icon-square-caret.tsx

Comment on lines +13 to +17
export const getKeywords = (description: string) => {
const match = description.match(/키워드:\s*(.+)/);
if (!match) return [];

return match[1]?.split(',').map((keyword) => keyword.trim()) ?? [];
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

descriptionnull 또는 undefined일 경우 런타임 오류가 발생할 수 있습니다.

icons.json에서 description이 누락된 경우 description.match()TypeError를 발생시킬 수 있습니다.

🛡️ 방어적 코드 제안
 export const getKeywords = (description: string) => {
+  if (!description) return [];
+
   const match = description.match(/키워드:\s*(.+)/);
   if (!match) return [];

   return match[1]?.split(',').map((keyword) => keyword.trim()) ?? [];
 };
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
export const getKeywords = (description: string) => {
const match = description.match(/:\s*(.+)/);
if (!match) return [];
return match[1]?.split(',').map((keyword) => keyword.trim()) ?? [];
export const getKeywords = (description: string) => {
if (!description) return [];
const match = description.match(/:\s*(.+)/);
if (!match) return [];
return match[1]?.split(',').map((keyword) => keyword.trim()) ?? [];
}
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@docs/src/features/docs/components/foundations/icons/helpers.ts` around lines
13 - 17, The getKeywords function can throw when description is null/undefined
because it calls description.match; update getKeywords to defensively handle
missing descriptions by checking description (or coercing to an empty string)
before calling match, e.g., early-return [] if description is falsy or use
(description ?? '') to run the regex safely; keep using the existing regex and
split logic and reference getKeywords and description.match in your changes.

Comment on lines +12 to +13
* 아래쪽 방향의 꺽쇠를 표현합니다. 굵기와 사이즈 옵션을 조절할 수 있습니다.
* 키워드: Chevron, Arrow, Down, Bottom, 꺽쇠, 아래, 화살표, 표시, 하단
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

키워드 오탈자/공백 정리 권장합니다.

꺽쇠꺾쇠로 수정하는 것이 맞고, 아래, 화살표의 이중 공백은 단일 공백으로 맞추는 편이 검색 키워드 품질에 더 좋습니다.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/wds-icon/src/icon-chevron-down-small.tsx` around lines 12 - 13,
Update the keywords comment in icon-chevron-down-small.tsx: replace the
misspelled token "꺽쇠" with "꺾쇠" and remove the extra space in "아래,  화살표" so it
becomes "아래, 화살표"; also ensure the keywords line ("키워드: Chevron, Arrow, Down,
Bottom, 꺾쇠, 아래, 화살표, 표시, 하단") uses consistent comma separation and spacing.


/**
* 아래쪽 방향의 꺽쇠를 표현합니다. 굵기와 사이즈 옵션을 조절할 수 있습니다.
* 키워드: Chevron, Arrow, Down, Bottom, 꺽쇠, 아래, 화살표, 표시, 하단
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

키워드 문자열의 불필요한 공백을 정리해주세요.

아래, 화살표처럼 이중 공백이 있어 검색/파싱 시 일관성이 떨어질 수 있습니다.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/wds-icon/src/icon-chevron-down-thick-small.tsx` at line 13, Remove
the redundant double space inside the keywords string in
packages/wds-icon/src/icon-chevron-down-thick-small.tsx (the keyword list
containing "아래,  화살표"); edit the keywords/comment line to normalize spacing so
each entry is separated by a single space or comma as used elsewhere (e.g., "아래,
화살표"), ensuring the keyword string matches the project's formatting convention.

};

/**
* 왼쪽 꺽쇠를 표현합니다. 여백, 두께, 사이즈를 조정할 수 있습니다.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

문서 오탈자 수정 필요 (꺽쇠꺾쇠).

검색 키워드/설명 정확도를 위해 표기를 바로잡는 것이 좋습니다.

✏️ Proposed fix
- * 왼쪽 꺽쇠를 표현합니다. 여백, 두께, 사이즈를 조정할 수 있습니다.
+ * 왼쪽 꺾쇠를 표현합니다. 여백, 두께, 사이즈를 조정할 수 있습니다.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
* 왼쪽 꺽쇠를 표현합니다. 여백, 두께, 사이즈를 조정할 있습니다.
* 왼쪽 꺾쇠를 표현합니다. 여백, 두께, 사이즈를 조정할 있습니다.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/wds-icon/src/icon-chevron-left-thick-small.tsx` at line 12, 문서 주석의
오탈자 수정: 파일의 상단 설명(컴포넌트 주석)에서 "왼쪽 꺽쇠를 표현합니다."처럼 쓰인 모든 "꺽쇠"를 올바른 표기 "꺾쇠"로 바꿔 주세요;
대상은 이 파일의 IconChevronLeftThickSmall(또는 해당 컴포넌트/기능 설명) 주석 문자열이며 검색 키워드나 설명 주석에 동일
오타가 있으면 모두 수정합니다.

Comment on lines +11 to +14
/**
* 왼쪽 꺽쇠를 표현합니다. 여백, 두께, 사이즈를 조정할 수 있습니다.
* 키워드: 꺽쇠, 뒤로가기, Chevron, Back, Left, Size, Tight, Small
*/
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

키워드가 컴포넌트 이름과 일치하지 않습니다.

JSDoc 키워드에 "Small"이 포함되어 있지만, 이 컴포넌트는 IconChevronLeftThick입니다. 키워드를 "Thick"으로 수정하여 검색 시 혼란을 방지해야 합니다.

💡 수정 제안
 /**
  * 왼쪽 꺽쇠를 표현합니다. 여백, 두께, 사이즈를 조정할 수 있습니다.
- * 키워드: 꺽쇠, 뒤로가기, Chevron, Back, Left, Size, Tight, Small
+ * 키워드: 꺽쇠, 뒤로가기, Chevron, Back, Left, Size, Tight, Thick
  */
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
/**
* 왼쪽 꺽쇠를 표현합니다. 여백, 두께, 사이즈를 조정할 있습니다.
* 키워드: 꺽쇠, 뒤로가기, Chevron, Back, Left, Size, Tight, Small
*/
/**
* 왼쪽 꺽쇠를 표현합니다. 여백, 두께, 사이즈를 조정할 있습니다.
* 키워드: 꺽쇠, 뒤로가기, Chevron, Back, Left, Size, Tight, Thick
*/
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/wds-icon/src/icon-chevron-left-thick.tsx` around lines 11 - 14,
Update the JSDoc keywords to match the component name: in the comment block for
IconChevronLeftThick replace the keyword "Small" with "Thick" so the tag list
accurately reflects the component (e.g., keep "꺽쇠, 뒤로가기, Chevron, Back, Left,
Size, Tight" and change "Small" -> "Thick"); ensure the component identifier
IconChevronLeftThick remains referenced where applicable.

Comment on lines +12 to +13
* 위쪽 방향의 꺽쇠를 표현합니다. 굵기와 사이즈 옵션을 조절할 수 있습니다.
* 키워드: Chevron, Arrow, Up, Top, 꺽쇠, 위, 화살표, 표시, 상단
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

용어 오탈자(꺽쇠꺾쇠)를 정리해주세요.

문서 검색 키워드 품질을 위해 표기를 표준어로 통일하는 게 좋습니다(현재 키워드/설명에 꺽쇠 사용).

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/wds-icon/src/icon-chevron-up-thick-small.tsx` around lines 12 - 13,
Update the Korean term spelling in the component documentation: replace all
occurrences of "꺽쇠" with the standard "꺾쇠" in the comment block and keyword list
inside packages/wds-icon/src/icon-chevron-up-thick-small.tsx (the top
description/JSDoc for the icon component), so both the human-readable
description and the "키워드" string use "꺾쇠" consistently.


/**
* 비공개 정보를 해제할 때 사용합니다.
* 키워드: 잠금 해제, unlock, 딸깍 open, 열린 자물쇠
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

키워드 정제 필요 (딸깍 open).

Line 13의 딸깍 open은 검색 키워드로 의미가 불분명해 필터 품질을 떨어뜨릴 수 있습니다. 잠금 해제, unlock, open, 열린 자물쇠처럼 표준 용어로 정리하는 편이 안전합니다.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/wds-icon/src/icon-lock-open.tsx` at line 13, The keyword list in
packages/wds-icon/src/icon-lock-open.tsx includes a nonstandard term "딸깍 open"
which can hurt search/filter quality; update the keyword string (the
keywords/comments for the icon) to use standard, consistent terms such as "잠금
해제, unlock, open, 열린 자물쇠" (remove "딸깍 open") so the icon's metadata uses clear,
searchable keywords.


/**
* 추가 요소를 표시할 때 사용합니다.
* 키워드: More, 3dots, see more, 추가, 땡땡떙
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

키워드 오탈자 수정이 필요합니다.

Line 13의 "땡땡떙""땡땡땡" 오탈자로 보입니다. 검색 키워드 품질을 위해 정정하는 것이 좋습니다.

✏️ 제안 수정
- * 키워드: More, 3dots, see more, 추가, 땡땡떙
+ * 키워드: More, 3dots, see more, 추가, 땡땡땡
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
* 키워드: More, 3dots, see more, 추가, 땡땡떙
* 키워드: More, 3dots, see more, 추가, 땡땡땡
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/wds-icon/src/icon-more-horizontal.tsx` at line 13, Fix a typo in the
keywords for the More icon by replacing the incorrect Korean string "땡땡떙" with
"땡땡땡" in the keywords/comment for the IconMoreHorizontal component (file:
packages/wds-icon/src/icon-more-horizontal.tsx), updating the keyword list near
the top of the file so search will use the correct term.


/**
* 프로필을 표현합니다.
* 키워드: Profile, 사람, Human, Person, 인간, 유저, User, Profile, 프로필
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

키워드 중복을 정리해 주세요.

Line 13에서 Profile이 중복되어 있어, 키워드 배지/인덱싱 결과가 중복 노출될 수 있습니다. 중복 제거를 권장합니다.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/wds-icon/src/icon-person.tsx` at line 13, The keywords list in
packages/wds-icon/src/icon-person.tsx contains a duplicate entry "Profile"; open
the keywords/comment block in icon-person.tsx and remove the redundant "Profile"
so each keyword appears only once (ensure the remaining list still includes
relevant terms like Person, User, Profile, Human, etc.).

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
@Sh031224 Sh031224 merged commit 391818a into main Mar 31, 2026
10 of 11 checks passed
@Sh031224 Sh031224 deleted the feature/sh031224/icon-docs branch March 31, 2026 02:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant