아이콘 및 SVG 일러스트레이션

gitlab-svgs 리포지토리에서 우리만의 아이콘 및 일러스트레이션 라이브러리를 관리합니다. 이 리포지토리는 npm에 등록되어 있으며, yarn을 사용하여 종속성을 관리합니다. 사용 가능한 모든 아이콘 및 일러스트레이션을 탐색할 수 있습니다. 새 버전으로 업그레이드하려면 yarn upgrade @gitlab/svgs를 실행하십시오.

아이콘

우리는 GitLab에서 SVG 스프라이트를 사용하여 SVG 아이콘을 사용하고 있습니다. 이는 아이콘이 한 번만 로드되고 ID를 통해 참조된다는 것을 의미합니다. 스프라이트 SVG는 /assets/icons.svg 아래에 있습니다.

HAML/Rails에서 사용법

HAML 또는 Rails에서 스프라이트 아이콘을 사용하려면 다음과 같은 특정 도우미 함수를 사용합니다.

sprite_icon(아이콘_이름, size: nil, css_class: '')
  • 아이콘_이름: SVG 스프라이트의 아이콘_이름을 사용합니다.(GitLab SVGs 목록 참조)
  • size (옵션): 다음 중 하나의 크기를 사용합니다: 16, 24, 32, 48, 72 (이는 s16 클래스로 변환됨)
  • css_class (옵션): 추가 CSS 클래스를 추가하려면 사용합니다.

예시

= sprite_icon('issues', size: 72, css_class: 'icon-danger')

위 예시의 출력

<svg class="s72 icon-danger">
  <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="/assets/icons.svg#issues"></use>
</svg>

Vue에서 사용법

GitLab UI는 스프라이트 아이콘을 표시하는 컴포넌트를 제공합니다.

사용 예시 :

<script>
import { GlIcon } from "@gitlab/ui";

export default {
  components: {
    GlIcon,
  },
};
<script>

<template>
  <gl-icon
    name="issues"
    :size="24"
    class="class-name"
  />
</template>
  • name: SVG 스프라이트의 아이콘 이름으로, (GitLab SVG Previewer)에서 확인할 수 있습니다.
  • size: (옵션): 크기에 대한 숫자 값으로, 특정 CSS 클래스에 매핑됩니다 (사용 가능한 크기: 8, 12, 16, 18, 24, 32, 48, 72는 각각 sXX CSS 클래스로 매핑됨)
  • class (옵션): SVG 태그에 추가할 추가 CSS 클래스입니다.

HTML/JS에서 사용법

JS 내부에서 아이콘을 렌더링하려면 다음 함수를 사용하십시오 : gl.utils.spriteIcon(아이콘_이름)

로딩 아이콘

HAML/Rails에서 사용법

HAML 또는 Rails에서 로딩 스피너를 삽입하려면 gl_loading_icon 도우미를 사용합니다.

= gl_loading_icon

아래의 예시에 따라 gl_loading_icon 도우미와 함께 다음 속성 중 하나 이상을 포함할 수 있습니다:

  • inline (옵션): true인 경우 인라인 요소에 사용되며, 그렇지 않으면 기본적으로 중앙에 위치한 블록 요소입니다.
  • color (옵션): dark (기본값) 또는 light.
  • size (옵션): sm (기본값), md, lg, 또는 xl.
  • css_class (옵션): gl_loading_icon을 위한 기본값이지만, 정렬 또는 간격을 미세 조정하기 위해 유틸리티 클래스를 사용할 수 있습니다.

예시 1:

다음 HAML 표현식은 로딩 아이콘의 마크업을 생성하고 아이콘을 중앙에 배치합니다.

= gl_loading_icon

예시 2:

다음 HAML 표현식은 인라인 로딩 아이콘의 마크업을 생성하고 사용자 정의 크기로 지정합니다. 또한 여유 공간 유틸리티 클래스를 추가합니다.

= gl_loading_icon(inline: true, size: 'lg', css_class: 'gl-mr-2')

Vue에서 사용법

GitLab UI 컴포넌트 라이브러리는 GlLoadingIcon 컴포넌트를 제공합니다. 컴포넌트의 storybook에서 해당 사용법에 대한 추가 정보를 확인할 수 있습니다.

예시:

다음 코드 스니펫은 Vue 컴포넌트에서 GlLoadingIcon을 사용하는 방법을 보여줍니다.

<script>
import { GlLoadingIcon } from "@gitlab/ui";

export default {
  components: {
    GlLoadingIcon,
  },
};
<script>

<template>
  <gl-loading-icon inline />
</template>

SVG 일러스트레이션

이제는 img 태그를 사용하여 image_tag 또는 image_path 도우미와 함께 SVG 기반 일러스트레이션을 표시합니다. 주변에 svg-content 클래스를 사용하면 좋은 렌더링이 보장됩니다.

HAML/Rails에서 사용법

예시

.svg-content
  = image_tag 'illustrations/merge_requests.svg'

Vue에서 사용법

Rails에서 SVG 경로를 전달하는 것은 권장되지 않습니다. Rails => Haml => Vue 대신에 Vue에서 직접 SVG 일러스트레이션을 가져올 수 있습니다.

템플릿에서 SVG 일러스트레이션을 사용하려면 @gitlab/svgs에서 SVG를 가져옵니다. GitLab SVG Previewer를 통해 사용 가능한 SVG 경로를 찾을 수 있습니다.

아래는 SVG 일러스트레이션을 가져오고 GlEmptyState 컴포넌트에서 사용하는 예시입니다.

컴포넌트:

<script>
import { GlEmptyState } from '@gitlab/ui';
// ?url 쿼리 문자열은 SVG를 인라인 SVG가 아닌 URL로 가져오도록 보장합니다. 번들 크기 및 최적화된 로딩에 유용합니다
import mergeTrainsSvgPath from '@gitlab/svgs/dist/illustrations/train-sm.svg?url';

export default {
  components: {
    GlEmptyState
  },
  mergeTrainsSvgPath,
};
<script>

<template>
  <gl-empty-state
    title="This state is empty"
    description="Empty state description"
    :svg-path="$options.mergeTrainsSvgPath"
  />
</template>

SVG 최소화

새 SVG 삽화를 개발하거나 내보낼 때 SVGO 기반 도구인 SVGOMG와 같은 도구를 사용하여 공간을 절약하세요. GitLab SVG에 추가된 삽화는 자동으로 최소화되므로 수동 작업이 필요하지 않습니다.