@qeetrix/icons 0.1.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/LICENSE +21 -0
- package/README.md +455 -0
- package/dist/icon-base.d.ts +28 -0
- package/dist/icon-base.js +37 -0
- package/dist/icons/accessibility.d.ts +2 -0
- package/dist/icons/accessibility.js +6 -0
- package/dist/icons/activity.d.ts +2 -0
- package/dist/icons/activity.js +6 -0
- package/dist/icons/alarm-clock.d.ts +2 -0
- package/dist/icons/alarm-clock.js +6 -0
- package/dist/icons/alert-circle.d.ts +2 -0
- package/dist/icons/alert-circle.js +6 -0
- package/dist/icons/alert-octagon.d.ts +2 -0
- package/dist/icons/alert-octagon.js +6 -0
- package/dist/icons/alert-triangle.d.ts +2 -0
- package/dist/icons/alert-triangle.js +6 -0
- package/dist/icons/align-center.d.ts +2 -0
- package/dist/icons/align-center.js +6 -0
- package/dist/icons/align-justify.d.ts +2 -0
- package/dist/icons/align-justify.js +6 -0
- package/dist/icons/align-left.d.ts +2 -0
- package/dist/icons/align-left.js +6 -0
- package/dist/icons/align-right.d.ts +2 -0
- package/dist/icons/align-right.js +6 -0
- package/dist/icons/archive.d.ts +2 -0
- package/dist/icons/archive.js +6 -0
- package/dist/icons/arrow-down-left.d.ts +2 -0
- package/dist/icons/arrow-down-left.js +6 -0
- package/dist/icons/arrow-down-right.d.ts +2 -0
- package/dist/icons/arrow-down-right.js +6 -0
- package/dist/icons/arrow-down.d.ts +2 -0
- package/dist/icons/arrow-down.js +6 -0
- package/dist/icons/arrow-left-right.d.ts +2 -0
- package/dist/icons/arrow-left-right.js +6 -0
- package/dist/icons/arrow-left.d.ts +2 -0
- package/dist/icons/arrow-left.js +6 -0
- package/dist/icons/arrow-right.d.ts +2 -0
- package/dist/icons/arrow-right.js +6 -0
- package/dist/icons/arrow-up-down.d.ts +2 -0
- package/dist/icons/arrow-up-down.js +6 -0
- package/dist/icons/arrow-up-left.d.ts +2 -0
- package/dist/icons/arrow-up-left.js +6 -0
- package/dist/icons/arrow-up-right.d.ts +2 -0
- package/dist/icons/arrow-up-right.js +6 -0
- package/dist/icons/arrow-up.d.ts +2 -0
- package/dist/icons/arrow-up.js +6 -0
- package/dist/icons/at-sign.d.ts +2 -0
- package/dist/icons/at-sign.js +6 -0
- package/dist/icons/award.d.ts +2 -0
- package/dist/icons/award.js +6 -0
- package/dist/icons/ban.d.ts +2 -0
- package/dist/icons/ban.js +6 -0
- package/dist/icons/bank.d.ts +2 -0
- package/dist/icons/bank.js +6 -0
- package/dist/icons/banknote.d.ts +2 -0
- package/dist/icons/banknote.js +6 -0
- package/dist/icons/battery-charging.d.ts +2 -0
- package/dist/icons/battery-charging.js +6 -0
- package/dist/icons/battery-low.d.ts +2 -0
- package/dist/icons/battery-low.js +6 -0
- package/dist/icons/battery.d.ts +2 -0
- package/dist/icons/battery.js +6 -0
- package/dist/icons/bell-dot.d.ts +2 -0
- package/dist/icons/bell-dot.js +6 -0
- package/dist/icons/bell-off.d.ts +2 -0
- package/dist/icons/bell-off.js +6 -0
- package/dist/icons/bell-ring.d.ts +2 -0
- package/dist/icons/bell-ring.js +6 -0
- package/dist/icons/bell.d.ts +2 -0
- package/dist/icons/bell.js +6 -0
- package/dist/icons/bluetooth.d.ts +2 -0
- package/dist/icons/bluetooth.js +6 -0
- package/dist/icons/bold.d.ts +2 -0
- package/dist/icons/bold.js +6 -0
- package/dist/icons/book-open.d.ts +2 -0
- package/dist/icons/book-open.js +6 -0
- package/dist/icons/book.d.ts +2 -0
- package/dist/icons/book.js +6 -0
- package/dist/icons/bookmark.d.ts +2 -0
- package/dist/icons/bookmark.js +6 -0
- package/dist/icons/braces.d.ts +2 -0
- package/dist/icons/braces.js +6 -0
- package/dist/icons/brackets.d.ts +2 -0
- package/dist/icons/brackets.js +6 -0
- package/dist/icons/briefcase.d.ts +2 -0
- package/dist/icons/briefcase.js +6 -0
- package/dist/icons/bug.d.ts +2 -0
- package/dist/icons/bug.js +6 -0
- package/dist/icons/calculator.d.ts +2 -0
- package/dist/icons/calculator.js +6 -0
- package/dist/icons/calendar-check.d.ts +2 -0
- package/dist/icons/calendar-check.js +6 -0
- package/dist/icons/calendar-clock.d.ts +2 -0
- package/dist/icons/calendar-clock.js +6 -0
- package/dist/icons/calendar-days.d.ts +2 -0
- package/dist/icons/calendar-days.js +6 -0
- package/dist/icons/calendar-edit.d.ts +2 -0
- package/dist/icons/calendar-edit.js +6 -0
- package/dist/icons/calendar-off.d.ts +2 -0
- package/dist/icons/calendar-off.js +6 -0
- package/dist/icons/calendar-plus.d.ts +2 -0
- package/dist/icons/calendar-plus.js +6 -0
- package/dist/icons/calendar-search.d.ts +2 -0
- package/dist/icons/calendar-search.js +6 -0
- package/dist/icons/calendar-x.d.ts +2 -0
- package/dist/icons/calendar-x.js +6 -0
- package/dist/icons/calendar.d.ts +2 -0
- package/dist/icons/calendar.js +6 -0
- package/dist/icons/camera-off.d.ts +2 -0
- package/dist/icons/camera-off.js +6 -0
- package/dist/icons/camera.d.ts +2 -0
- package/dist/icons/camera.js +6 -0
- package/dist/icons/captions-off.d.ts +2 -0
- package/dist/icons/captions-off.js +6 -0
- package/dist/icons/captions.d.ts +2 -0
- package/dist/icons/captions.js +6 -0
- package/dist/icons/certificate.d.ts +2 -0
- package/dist/icons/certificate.js +6 -0
- package/dist/icons/chart-area.d.ts +2 -0
- package/dist/icons/chart-area.js +6 -0
- package/dist/icons/chart-bar.d.ts +2 -0
- package/dist/icons/chart-bar.js +6 -0
- package/dist/icons/chart-line.d.ts +2 -0
- package/dist/icons/chart-line.js +6 -0
- package/dist/icons/chart-pie.d.ts +2 -0
- package/dist/icons/chart-pie.js +6 -0
- package/dist/icons/check-circle.d.ts +2 -0
- package/dist/icons/check-circle.js +6 -0
- package/dist/icons/check-square.d.ts +2 -0
- package/dist/icons/check-square.js +6 -0
- package/dist/icons/check.d.ts +2 -0
- package/dist/icons/check.js +6 -0
- package/dist/icons/checks.d.ts +2 -0
- package/dist/icons/checks.js +6 -0
- package/dist/icons/chevron-down.d.ts +2 -0
- package/dist/icons/chevron-down.js +6 -0
- package/dist/icons/chevron-left.d.ts +2 -0
- package/dist/icons/chevron-left.js +6 -0
- package/dist/icons/chevron-right.d.ts +2 -0
- package/dist/icons/chevron-right.js +6 -0
- package/dist/icons/chevron-up.d.ts +2 -0
- package/dist/icons/chevron-up.js +6 -0
- package/dist/icons/chevrons-down.d.ts +2 -0
- package/dist/icons/chevrons-down.js +6 -0
- package/dist/icons/chevrons-left.d.ts +2 -0
- package/dist/icons/chevrons-left.js +6 -0
- package/dist/icons/chevrons-right.d.ts +2 -0
- package/dist/icons/chevrons-right.js +6 -0
- package/dist/icons/chevrons-up.d.ts +2 -0
- package/dist/icons/chevrons-up.js +6 -0
- package/dist/icons/circle-dot.d.ts +2 -0
- package/dist/icons/circle-dot.js +6 -0
- package/dist/icons/circle.d.ts +2 -0
- package/dist/icons/circle.js +6 -0
- package/dist/icons/clipboard-check.d.ts +2 -0
- package/dist/icons/clipboard-check.js +6 -0
- package/dist/icons/clipboard-list.d.ts +2 -0
- package/dist/icons/clipboard-list.js +6 -0
- package/dist/icons/clipboard.d.ts +2 -0
- package/dist/icons/clipboard.js +6 -0
- package/dist/icons/clock.d.ts +2 -0
- package/dist/icons/clock.js +6 -0
- package/dist/icons/cloud-download.d.ts +2 -0
- package/dist/icons/cloud-download.js +6 -0
- package/dist/icons/cloud-off.d.ts +2 -0
- package/dist/icons/cloud-off.js +6 -0
- package/dist/icons/cloud-upload.d.ts +2 -0
- package/dist/icons/cloud-upload.js +6 -0
- package/dist/icons/cloud.d.ts +2 -0
- package/dist/icons/cloud.js +6 -0
- package/dist/icons/code.d.ts +2 -0
- package/dist/icons/code.js +6 -0
- package/dist/icons/collapse.d.ts +2 -0
- package/dist/icons/collapse.js +6 -0
- package/dist/icons/columns.d.ts +2 -0
- package/dist/icons/columns.js +6 -0
- package/dist/icons/contact.d.ts +2 -0
- package/dist/icons/contact.js +6 -0
- package/dist/icons/contrast.d.ts +2 -0
- package/dist/icons/contrast.js +6 -0
- package/dist/icons/copy.d.ts +2 -0
- package/dist/icons/copy.js +6 -0
- package/dist/icons/cpu.d.ts +2 -0
- package/dist/icons/cpu.js +6 -0
- package/dist/icons/credit-card-check.d.ts +2 -0
- package/dist/icons/credit-card-check.js +6 -0
- package/dist/icons/credit-card-plus.d.ts +2 -0
- package/dist/icons/credit-card-plus.js +6 -0
- package/dist/icons/credit-card-x.d.ts +2 -0
- package/dist/icons/credit-card-x.js +6 -0
- package/dist/icons/credit-card.d.ts +2 -0
- package/dist/icons/credit-card.js +6 -0
- package/dist/icons/crop.d.ts +2 -0
- package/dist/icons/crop.js +6 -0
- package/dist/icons/database.d.ts +2 -0
- package/dist/icons/database.js +6 -0
- package/dist/icons/download.d.ts +2 -0
- package/dist/icons/download.js +6 -0
- package/dist/icons/drag-handle.d.ts +2 -0
- package/dist/icons/drag-handle.js +6 -0
- package/dist/icons/droplet.d.ts +2 -0
- package/dist/icons/droplet.js +6 -0
- package/dist/icons/ear-off.d.ts +2 -0
- package/dist/icons/ear-off.js +6 -0
- package/dist/icons/ear.d.ts +2 -0
- package/dist/icons/ear.js +6 -0
- package/dist/icons/edit.d.ts +2 -0
- package/dist/icons/edit.js +6 -0
- package/dist/icons/eraser.d.ts +2 -0
- package/dist/icons/eraser.js +6 -0
- package/dist/icons/expand.d.ts +2 -0
- package/dist/icons/expand.js +6 -0
- package/dist/icons/external-link.d.ts +2 -0
- package/dist/icons/external-link.js +6 -0
- package/dist/icons/eye-off.d.ts +2 -0
- package/dist/icons/eye-off.js +6 -0
- package/dist/icons/eye.d.ts +2 -0
- package/dist/icons/eye.js +6 -0
- package/dist/icons/face-id.d.ts +2 -0
- package/dist/icons/face-id.js +6 -0
- package/dist/icons/file-alert.d.ts +2 -0
- package/dist/icons/file-alert.js +6 -0
- package/dist/icons/file-archive.d.ts +2 -0
- package/dist/icons/file-archive.js +6 -0
- package/dist/icons/file-check.d.ts +2 -0
- package/dist/icons/file-check.js +6 -0
- package/dist/icons/file-code.d.ts +2 -0
- package/dist/icons/file-code.js +6 -0
- package/dist/icons/file-download.d.ts +2 -0
- package/dist/icons/file-download.js +6 -0
- package/dist/icons/file-edit.d.ts +2 -0
- package/dist/icons/file-edit.js +6 -0
- package/dist/icons/file-image.d.ts +2 -0
- package/dist/icons/file-image.js +6 -0
- package/dist/icons/file-lock.d.ts +2 -0
- package/dist/icons/file-lock.js +6 -0
- package/dist/icons/file-minus.d.ts +2 -0
- package/dist/icons/file-minus.js +6 -0
- package/dist/icons/file-plus.d.ts +2 -0
- package/dist/icons/file-plus.js +6 -0
- package/dist/icons/file-search.d.ts +2 -0
- package/dist/icons/file-search.js +6 -0
- package/dist/icons/file-text.d.ts +2 -0
- package/dist/icons/file-text.js +6 -0
- package/dist/icons/file-upload.d.ts +2 -0
- package/dist/icons/file-upload.js +6 -0
- package/dist/icons/file-x.d.ts +2 -0
- package/dist/icons/file-x.js +6 -0
- package/dist/icons/file.d.ts +2 -0
- package/dist/icons/file.js +6 -0
- package/dist/icons/files.d.ts +2 -0
- package/dist/icons/files.js +6 -0
- package/dist/icons/film.d.ts +2 -0
- package/dist/icons/film.js +6 -0
- package/dist/icons/filter-x.d.ts +2 -0
- package/dist/icons/filter-x.js +6 -0
- package/dist/icons/filter.d.ts +2 -0
- package/dist/icons/filter.js +6 -0
- package/dist/icons/fingerprint.d.ts +2 -0
- package/dist/icons/fingerprint.js +6 -0
- package/dist/icons/first-page.d.ts +2 -0
- package/dist/icons/first-page.js +6 -0
- package/dist/icons/flag.d.ts +2 -0
- package/dist/icons/flag.js +6 -0
- package/dist/icons/folder-check.d.ts +2 -0
- package/dist/icons/folder-check.js +6 -0
- package/dist/icons/folder-lock.d.ts +2 -0
- package/dist/icons/folder-lock.js +6 -0
- package/dist/icons/folder-minus.d.ts +2 -0
- package/dist/icons/folder-minus.js +6 -0
- package/dist/icons/folder-open.d.ts +2 -0
- package/dist/icons/folder-open.js +6 -0
- package/dist/icons/folder-plus.d.ts +2 -0
- package/dist/icons/folder-plus.js +6 -0
- package/dist/icons/folder-search.d.ts +2 -0
- package/dist/icons/folder-search.js +6 -0
- package/dist/icons/folder-x.d.ts +2 -0
- package/dist/icons/folder-x.js +6 -0
- package/dist/icons/folder.d.ts +2 -0
- package/dist/icons/folder.js +6 -0
- package/dist/icons/forward.d.ts +2 -0
- package/dist/icons/forward.js +6 -0
- package/dist/icons/gauge.d.ts +2 -0
- package/dist/icons/gauge.js +6 -0
- package/dist/icons/gift.d.ts +2 -0
- package/dist/icons/gift.js +6 -0
- package/dist/icons/git-branch.d.ts +2 -0
- package/dist/icons/git-branch.js +6 -0
- package/dist/icons/git-commit.d.ts +2 -0
- package/dist/icons/git-commit.js +6 -0
- package/dist/icons/git-merge.d.ts +2 -0
- package/dist/icons/git-merge.js +6 -0
- package/dist/icons/git-pull-request.d.ts +2 -0
- package/dist/icons/git-pull-request.js +6 -0
- package/dist/icons/globe.d.ts +2 -0
- package/dist/icons/globe.js +6 -0
- package/dist/icons/graduation-cap.d.ts +2 -0
- package/dist/icons/graduation-cap.js +6 -0
- package/dist/icons/grid.d.ts +2 -0
- package/dist/icons/grid.js +6 -0
- package/dist/icons/hard-drive.d.ts +2 -0
- package/dist/icons/hard-drive.js +6 -0
- package/dist/icons/hash.d.ts +2 -0
- package/dist/icons/hash.js +6 -0
- package/dist/icons/heading.d.ts +2 -0
- package/dist/icons/heading.js +6 -0
- package/dist/icons/headphones.d.ts +2 -0
- package/dist/icons/headphones.js +6 -0
- package/dist/icons/heart.d.ts +2 -0
- package/dist/icons/heart.js +6 -0
- package/dist/icons/help-circle.d.ts +2 -0
- package/dist/icons/help-circle.js +6 -0
- package/dist/icons/history.d.ts +2 -0
- package/dist/icons/history.js +6 -0
- package/dist/icons/home.d.ts +2 -0
- package/dist/icons/home.js +6 -0
- package/dist/icons/hourglass.d.ts +2 -0
- package/dist/icons/hourglass.js +6 -0
- package/dist/icons/id-badge.d.ts +2 -0
- package/dist/icons/id-badge.js +6 -0
- package/dist/icons/image.d.ts +2 -0
- package/dist/icons/image.js +6 -0
- package/dist/icons/inbox.d.ts +2 -0
- package/dist/icons/inbox.js +6 -0
- package/dist/icons/index.d.ts +331 -0
- package/dist/icons/index.js +332 -0
- package/dist/icons/info-circle.d.ts +2 -0
- package/dist/icons/info-circle.js +6 -0
- package/dist/icons/italic.d.ts +2 -0
- package/dist/icons/italic.js +6 -0
- package/dist/icons/key-off.d.ts +2 -0
- package/dist/icons/key-off.js +6 -0
- package/dist/icons/key.d.ts +2 -0
- package/dist/icons/key.js +6 -0
- package/dist/icons/keyboard.d.ts +2 -0
- package/dist/icons/keyboard.js +6 -0
- package/dist/icons/languages.d.ts +2 -0
- package/dist/icons/languages.js +6 -0
- package/dist/icons/laptop.d.ts +2 -0
- package/dist/icons/laptop.js +6 -0
- package/dist/icons/last-page.d.ts +2 -0
- package/dist/icons/last-page.js +6 -0
- package/dist/icons/layers.d.ts +2 -0
- package/dist/icons/layers.js +6 -0
- package/dist/icons/lightbulb.d.ts +2 -0
- package/dist/icons/lightbulb.js +6 -0
- package/dist/icons/link-off.d.ts +2 -0
- package/dist/icons/link-off.js +6 -0
- package/dist/icons/link.d.ts +2 -0
- package/dist/icons/link.js +6 -0
- package/dist/icons/list-checks.d.ts +2 -0
- package/dist/icons/list-checks.js +6 -0
- package/dist/icons/list-ordered.d.ts +2 -0
- package/dist/icons/list-ordered.js +6 -0
- package/dist/icons/list.d.ts +2 -0
- package/dist/icons/list.js +6 -0
- package/dist/icons/loader.d.ts +2 -0
- package/dist/icons/loader.js +6 -0
- package/dist/icons/lock-open.d.ts +2 -0
- package/dist/icons/lock-open.js +6 -0
- package/dist/icons/lock.d.ts +2 -0
- package/dist/icons/lock.js +6 -0
- package/dist/icons/log-in.d.ts +2 -0
- package/dist/icons/log-in.js +6 -0
- package/dist/icons/log-out.d.ts +2 -0
- package/dist/icons/log-out.js +6 -0
- package/dist/icons/mail-check.d.ts +2 -0
- package/dist/icons/mail-check.js +6 -0
- package/dist/icons/mail-open.d.ts +2 -0
- package/dist/icons/mail-open.js +6 -0
- package/dist/icons/mail-plus.d.ts +2 -0
- package/dist/icons/mail-plus.js +6 -0
- package/dist/icons/mail-search.d.ts +2 -0
- package/dist/icons/mail-search.js +6 -0
- package/dist/icons/mail-x.d.ts +2 -0
- package/dist/icons/mail-x.js +6 -0
- package/dist/icons/mail.d.ts +2 -0
- package/dist/icons/mail.js +6 -0
- package/dist/icons/map-pin.d.ts +2 -0
- package/dist/icons/map-pin.js +6 -0
- package/dist/icons/map.d.ts +2 -0
- package/dist/icons/map.js +6 -0
- package/dist/icons/maximize.d.ts +2 -0
- package/dist/icons/maximize.js +6 -0
- package/dist/icons/megaphone.d.ts +2 -0
- package/dist/icons/megaphone.js +6 -0
- package/dist/icons/menu.d.ts +2 -0
- package/dist/icons/menu.js +6 -0
- package/dist/icons/message-circle.d.ts +2 -0
- package/dist/icons/message-circle.js +6 -0
- package/dist/icons/message-square-plus.d.ts +2 -0
- package/dist/icons/message-square-plus.js +6 -0
- package/dist/icons/message-square-search.d.ts +2 -0
- package/dist/icons/message-square-search.js +6 -0
- package/dist/icons/message-square-x.d.ts +2 -0
- package/dist/icons/message-square-x.js +6 -0
- package/dist/icons/message-square.d.ts +2 -0
- package/dist/icons/message-square.js +6 -0
- package/dist/icons/messages.d.ts +2 -0
- package/dist/icons/messages.js +6 -0
- package/dist/icons/mic-off.d.ts +2 -0
- package/dist/icons/mic-off.js +6 -0
- package/dist/icons/mic.d.ts +2 -0
- package/dist/icons/mic.js +6 -0
- package/dist/icons/minimize.d.ts +2 -0
- package/dist/icons/minimize.js +6 -0
- package/dist/icons/minus-circle.d.ts +2 -0
- package/dist/icons/minus-circle.js +6 -0
- package/dist/icons/minus-square.d.ts +2 -0
- package/dist/icons/minus-square.js +6 -0
- package/dist/icons/minus.d.ts +2 -0
- package/dist/icons/minus.js +6 -0
- package/dist/icons/monitor.d.ts +2 -0
- package/dist/icons/monitor.js +6 -0
- package/dist/icons/moon.d.ts +2 -0
- package/dist/icons/moon.js +6 -0
- package/dist/icons/more-horizontal.d.ts +2 -0
- package/dist/icons/more-horizontal.js +6 -0
- package/dist/icons/more-vertical.d.ts +2 -0
- package/dist/icons/more-vertical.js +6 -0
- package/dist/icons/mouse.d.ts +2 -0
- package/dist/icons/mouse.js +6 -0
- package/dist/icons/move.d.ts +2 -0
- package/dist/icons/move.js +6 -0
- package/dist/icons/music.d.ts +2 -0
- package/dist/icons/music.js +6 -0
- package/dist/icons/newspaper.d.ts +2 -0
- package/dist/icons/newspaper.js +6 -0
- package/dist/icons/organization.d.ts +2 -0
- package/dist/icons/organization.js +6 -0
- package/dist/icons/package.d.ts +2 -0
- package/dist/icons/package.js +6 -0
- package/dist/icons/palette.d.ts +2 -0
- package/dist/icons/palette.js +6 -0
- package/dist/icons/paperclip.d.ts +2 -0
- package/dist/icons/paperclip.js +6 -0
- package/dist/icons/passkey.d.ts +2 -0
- package/dist/icons/passkey.js +6 -0
- package/dist/icons/password.d.ts +2 -0
- package/dist/icons/password.js +6 -0
- package/dist/icons/pause.d.ts +2 -0
- package/dist/icons/pause.js +6 -0
- package/dist/icons/percent.d.ts +2 -0
- package/dist/icons/percent.js +6 -0
- package/dist/icons/phone-incoming.d.ts +2 -0
- package/dist/icons/phone-incoming.js +6 -0
- package/dist/icons/phone-off.d.ts +2 -0
- package/dist/icons/phone-off.js +6 -0
- package/dist/icons/phone-outgoing.d.ts +2 -0
- package/dist/icons/phone-outgoing.js +6 -0
- package/dist/icons/phone.d.ts +2 -0
- package/dist/icons/phone.js +6 -0
- package/dist/icons/pin-off.d.ts +2 -0
- package/dist/icons/pin-off.js +6 -0
- package/dist/icons/pin.d.ts +2 -0
- package/dist/icons/pin.js +6 -0
- package/dist/icons/play.d.ts +2 -0
- package/dist/icons/play.js +6 -0
- package/dist/icons/plug.d.ts +2 -0
- package/dist/icons/plug.js +6 -0
- package/dist/icons/plus-circle.d.ts +2 -0
- package/dist/icons/plus-circle.js +6 -0
- package/dist/icons/plus-square.d.ts +2 -0
- package/dist/icons/plus-square.js +6 -0
- package/dist/icons/plus.d.ts +2 -0
- package/dist/icons/plus.js +6 -0
- package/dist/icons/power.d.ts +2 -0
- package/dist/icons/power.js +6 -0
- package/dist/icons/printer.d.ts +2 -0
- package/dist/icons/printer.js +6 -0
- package/dist/icons/qr-code.d.ts +2 -0
- package/dist/icons/qr-code.js +6 -0
- package/dist/icons/quote.d.ts +2 -0
- package/dist/icons/quote.js +6 -0
- package/dist/icons/receipt.d.ts +2 -0
- package/dist/icons/receipt.js +6 -0
- package/dist/icons/redo.d.ts +2 -0
- package/dist/icons/redo.js +6 -0
- package/dist/icons/refresh.d.ts +2 -0
- package/dist/icons/refresh.js +6 -0
- package/dist/icons/repeat.d.ts +2 -0
- package/dist/icons/repeat.js +6 -0
- package/dist/icons/reply-all.d.ts +2 -0
- package/dist/icons/reply-all.js +6 -0
- package/dist/icons/reply.d.ts +2 -0
- package/dist/icons/reply.js +6 -0
- package/dist/icons/rocket.d.ts +2 -0
- package/dist/icons/rocket.js +6 -0
- package/dist/icons/router.d.ts +2 -0
- package/dist/icons/router.js +6 -0
- package/dist/icons/rows.d.ts +2 -0
- package/dist/icons/rows.js +6 -0
- package/dist/icons/rss.d.ts +2 -0
- package/dist/icons/rss.js +6 -0
- package/dist/icons/ruler.d.ts +2 -0
- package/dist/icons/ruler.js +6 -0
- package/dist/icons/save.d.ts +2 -0
- package/dist/icons/save.js +6 -0
- package/dist/icons/scan.d.ts +2 -0
- package/dist/icons/scan.js +6 -0
- package/dist/icons/scissors.d.ts +2 -0
- package/dist/icons/scissors.js +6 -0
- package/dist/icons/screen-share.d.ts +2 -0
- package/dist/icons/screen-share.js +6 -0
- package/dist/icons/search-x.d.ts +2 -0
- package/dist/icons/search-x.js +6 -0
- package/dist/icons/search.d.ts +2 -0
- package/dist/icons/search.js +6 -0
- package/dist/icons/send.d.ts +2 -0
- package/dist/icons/send.js +6 -0
- package/dist/icons/server.d.ts +2 -0
- package/dist/icons/server.js +6 -0
- package/dist/icons/settings.d.ts +2 -0
- package/dist/icons/settings.js +6 -0
- package/dist/icons/shapes.d.ts +2 -0
- package/dist/icons/shapes.js +6 -0
- package/dist/icons/share.d.ts +2 -0
- package/dist/icons/share.js +6 -0
- package/dist/icons/shield-alert.d.ts +2 -0
- package/dist/icons/shield-alert.js +6 -0
- package/dist/icons/shield-check.d.ts +2 -0
- package/dist/icons/shield-check.js +6 -0
- package/dist/icons/shield-lock.d.ts +2 -0
- package/dist/icons/shield-lock.js +6 -0
- package/dist/icons/shield-off.d.ts +2 -0
- package/dist/icons/shield-off.js +6 -0
- package/dist/icons/shield-user.d.ts +2 -0
- package/dist/icons/shield-user.js +6 -0
- package/dist/icons/shield-x.d.ts +2 -0
- package/dist/icons/shield-x.js +6 -0
- package/dist/icons/shield.d.ts +2 -0
- package/dist/icons/shield.js +6 -0
- package/dist/icons/shopping-cart.d.ts +2 -0
- package/dist/icons/shopping-cart.js +6 -0
- package/dist/icons/shuffle.d.ts +2 -0
- package/dist/icons/shuffle.js +6 -0
- package/dist/icons/sidebar-left.d.ts +2 -0
- package/dist/icons/sidebar-left.js +6 -0
- package/dist/icons/sidebar-right.d.ts +2 -0
- package/dist/icons/sidebar-right.js +6 -0
- package/dist/icons/skip-back.d.ts +2 -0
- package/dist/icons/skip-back.js +6 -0
- package/dist/icons/skip-forward.d.ts +2 -0
- package/dist/icons/skip-forward.js +6 -0
- package/dist/icons/sliders.d.ts +2 -0
- package/dist/icons/sliders.js +6 -0
- package/dist/icons/smartphone.d.ts +2 -0
- package/dist/icons/smartphone.js +6 -0
- package/dist/icons/sort-asc.d.ts +2 -0
- package/dist/icons/sort-asc.js +6 -0
- package/dist/icons/sort-desc.d.ts +2 -0
- package/dist/icons/sort-desc.js +6 -0
- package/dist/icons/sort.d.ts +2 -0
- package/dist/icons/sort.js +6 -0
- package/dist/icons/speaker.d.ts +2 -0
- package/dist/icons/speaker.js +6 -0
- package/dist/icons/square.d.ts +2 -0
- package/dist/icons/square.js +6 -0
- package/dist/icons/star.d.ts +2 -0
- package/dist/icons/star.js +6 -0
- package/dist/icons/store.d.ts +2 -0
- package/dist/icons/store.js +6 -0
- package/dist/icons/strikethrough.d.ts +2 -0
- package/dist/icons/strikethrough.js +6 -0
- package/dist/icons/sun.d.ts +2 -0
- package/dist/icons/sun.js +6 -0
- package/dist/icons/swap-horizontal.d.ts +2 -0
- package/dist/icons/swap-horizontal.js +6 -0
- package/dist/icons/swap-vertical.d.ts +2 -0
- package/dist/icons/swap-vertical.js +6 -0
- package/dist/icons/sync.d.ts +2 -0
- package/dist/icons/sync.js +6 -0
- package/dist/icons/table.d.ts +2 -0
- package/dist/icons/table.js +6 -0
- package/dist/icons/tag.d.ts +2 -0
- package/dist/icons/tag.js +6 -0
- package/dist/icons/target.d.ts +2 -0
- package/dist/icons/target.js +6 -0
- package/dist/icons/terminal.d.ts +2 -0
- package/dist/icons/terminal.js +6 -0
- package/dist/icons/text-size.d.ts +2 -0
- package/dist/icons/text-size.js +6 -0
- package/dist/icons/text.d.ts +2 -0
- package/dist/icons/text.js +6 -0
- package/dist/icons/thumbs-down.d.ts +2 -0
- package/dist/icons/thumbs-down.js +6 -0
- package/dist/icons/thumbs-up.d.ts +2 -0
- package/dist/icons/thumbs-up.js +6 -0
- package/dist/icons/ticket.d.ts +2 -0
- package/dist/icons/ticket.js +6 -0
- package/dist/icons/timer.d.ts +2 -0
- package/dist/icons/timer.js +6 -0
- package/dist/icons/toggle-left.d.ts +2 -0
- package/dist/icons/toggle-left.js +6 -0
- package/dist/icons/toggle-right.d.ts +2 -0
- package/dist/icons/toggle-right.js +6 -0
- package/dist/icons/trash.d.ts +2 -0
- package/dist/icons/trash.js +6 -0
- package/dist/icons/trending-down.d.ts +2 -0
- package/dist/icons/trending-down.js +6 -0
- package/dist/icons/trending-up.d.ts +2 -0
- package/dist/icons/trending-up.js +6 -0
- package/dist/icons/trophy.d.ts +2 -0
- package/dist/icons/trophy.js +6 -0
- package/dist/icons/truck.d.ts +2 -0
- package/dist/icons/truck.js +6 -0
- package/dist/icons/underline.d.ts +2 -0
- package/dist/icons/underline.js +6 -0
- package/dist/icons/undo.d.ts +2 -0
- package/dist/icons/undo.js +6 -0
- package/dist/icons/upload.d.ts +2 -0
- package/dist/icons/upload.js +6 -0
- package/dist/icons/user-check.d.ts +2 -0
- package/dist/icons/user-check.js +6 -0
- package/dist/icons/user-circle.d.ts +2 -0
- package/dist/icons/user-circle.js +6 -0
- package/dist/icons/user-edit.d.ts +2 -0
- package/dist/icons/user-edit.js +6 -0
- package/dist/icons/user-lock.d.ts +2 -0
- package/dist/icons/user-lock.js +6 -0
- package/dist/icons/user-minus.d.ts +2 -0
- package/dist/icons/user-minus.js +6 -0
- package/dist/icons/user-plus.d.ts +2 -0
- package/dist/icons/user-plus.js +6 -0
- package/dist/icons/user-search.d.ts +2 -0
- package/dist/icons/user-search.js +6 -0
- package/dist/icons/user-x.d.ts +2 -0
- package/dist/icons/user-x.js +6 -0
- package/dist/icons/user.d.ts +2 -0
- package/dist/icons/user.js +6 -0
- package/dist/icons/users.d.ts +2 -0
- package/dist/icons/users.js +6 -0
- package/dist/icons/vault.d.ts +2 -0
- package/dist/icons/vault.js +6 -0
- package/dist/icons/video-off.d.ts +2 -0
- package/dist/icons/video-off.js +6 -0
- package/dist/icons/video.d.ts +2 -0
- package/dist/icons/video.js +6 -0
- package/dist/icons/volume-low.d.ts +2 -0
- package/dist/icons/volume-low.js +6 -0
- package/dist/icons/volume-off.d.ts +2 -0
- package/dist/icons/volume-off.js +6 -0
- package/dist/icons/volume.d.ts +2 -0
- package/dist/icons/volume.js +6 -0
- package/dist/icons/wallet.d.ts +2 -0
- package/dist/icons/wallet.js +6 -0
- package/dist/icons/watch.d.ts +2 -0
- package/dist/icons/watch.js +6 -0
- package/dist/icons/wifi-off.d.ts +2 -0
- package/dist/icons/wifi-off.js +6 -0
- package/dist/icons/wifi.d.ts +2 -0
- package/dist/icons/wifi.js +6 -0
- package/dist/icons/workflow.d.ts +2 -0
- package/dist/icons/workflow.js +6 -0
- package/dist/icons/wrench.d.ts +2 -0
- package/dist/icons/wrench.js +6 -0
- package/dist/icons/x-circle.d.ts +2 -0
- package/dist/icons/x-circle.js +6 -0
- package/dist/icons/x-square.d.ts +2 -0
- package/dist/icons/x-square.js +6 -0
- package/dist/icons/x.d.ts +2 -0
- package/dist/icons/x.js +6 -0
- package/dist/icons/zap.d.ts +2 -0
- package/dist/icons/zap.js +6 -0
- package/dist/icons/zoom-in.d.ts +2 -0
- package/dist/icons/zoom-in.js +6 -0
- package/dist/icons/zoom-out.d.ts +2 -0
- package/dist/icons/zoom-out.js +6 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.js +22 -0
- package/dist/metadata.d.ts +11 -0
- package/dist/metadata.js +2991 -0
- package/dist/types.d.ts +60 -0
- package/dist/types.js +1 -0
- package/package.json +100 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Qeet Group
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,455 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
|
|
3
|
+
# ✨ Qeetrix Icons
|
|
4
|
+
|
|
5
|
+
### The Qeet Group icon library — one grid, one stroke, every product
|
|
6
|
+
|
|
7
|
+
*Outline · Tree-shakeable · Accessible by default · Generated from canonical SVG*
|
|
8
|
+
|
|
9
|
+
<br>
|
|
10
|
+
|
|
11
|
+
[](https://github.com/qeetgroup/qeetrix-icons/actions/workflows/ci.yml)
|
|
12
|
+

|
|
13
|
+

|
|
14
|
+

|
|
15
|
+

|
|
16
|
+

|
|
17
|
+
|
|
18
|
+
**[🚀 Install](#-install)** · **[🎨 Usage](#-usage)** · **[🔎 Find an icon](#-finding-an-icon)** · **[♿ Accessibility](#-accessibility)** · **[🏗 How it works](#-how-it-works)** · **[🛠 Develop](#-develop)**
|
|
19
|
+
|
|
20
|
+
| | | | |
|
|
21
|
+
|:---:|:---:|:---:|:---:|
|
|
22
|
+
| 🎯 **331** icons | 📂 **22** categories | 📦 **0** runtime deps | 🌳 **586 B** for one icon |
|
|
23
|
+
|
|
24
|
+
> **Status — Phase 3.** A complete enterprise catalogue: **331 icons** across 22 categories,
|
|
25
|
+
> 298 of them rated essential or highly useful. One visual language, every glyph reviewed at
|
|
26
|
+
> 16/20/24/32px. See the [coverage matrix](docs/icon-catalog.md).
|
|
27
|
+
|
|
28
|
+
</div>
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## ✨ What it is
|
|
33
|
+
|
|
34
|
+
A React icon library where **the SVG file is the source of truth**. Everything else — the components,
|
|
35
|
+
the exports, the metadata, the types — is generated from `icons/<category>/<name>.svg` and validated
|
|
36
|
+
on the way through.
|
|
37
|
+
|
|
38
|
+
| | |
|
|
39
|
+
|:--|:--|
|
|
40
|
+
| **One family, not a pile** | A written [visual language](docs/icon-design-system.md) — shared motifs, one badge radius, 45° diagonals — so the set coheres. |
|
|
41
|
+
| **Governed, not accumulated** | Enforced naming (`user-plus`, never `add-user`), unique aliases, and a [catalogue doctor](docs/contributing.md) that reports duplicate semantics. |
|
|
42
|
+
| **One grid** | Every icon is 24 × 24, 2px stroke, round caps. Enforced, not requested. |
|
|
43
|
+
| **Inherits colour** | `currentColor` throughout. Works in dark mode and after a re-brand with no icon-specific styling. |
|
|
44
|
+
| **Adding an icon is one file** | Drop in an SVG, run `bun run generate`. The component, export and metadata appear. |
|
|
45
|
+
| **Invalid icons fail the build** | 30 error rules, 4 warnings. A hard-coded colour, a `transform`, or a stray editor `<title>` cannot ship. |
|
|
46
|
+
| **Genuinely tree-shakeable** | One icon bundles to **586 B**; all 331 to 76 KB — 0.8%. Verified with a real bundler, not assumed. |
|
|
47
|
+
| **Accessible by default** | Decorative unless you name it, and it is impossible to produce a labelled-but-hidden icon. |
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## 🚀 Install
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
bun add @qeetrix/icons
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
React 19 or later is a peer dependency. There are no runtime dependencies.
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## 🎨 Usage
|
|
62
|
+
|
|
63
|
+
```tsx
|
|
64
|
+
import { ArrowLeft } from "@qeetrix/icons";
|
|
65
|
+
|
|
66
|
+
export function BackButton() {
|
|
67
|
+
return (
|
|
68
|
+
<button type="button">
|
|
69
|
+
<ArrowLeft size={20} />
|
|
70
|
+
Back
|
|
71
|
+
</button>
|
|
72
|
+
);
|
|
73
|
+
}
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### Sizing
|
|
77
|
+
|
|
78
|
+
`size` sets width and height together. The default is `24`.
|
|
79
|
+
|
|
80
|
+
```tsx
|
|
81
|
+
<ArrowLeft size={16} />
|
|
82
|
+
<ArrowLeft size={20} />
|
|
83
|
+
<ArrowLeft size={24} />
|
|
84
|
+
<ArrowLeft size="1.5rem" /> {/* any CSS length */}
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Or size it with CSS, which scales with the surrounding type:
|
|
88
|
+
|
|
89
|
+
```tsx
|
|
90
|
+
<ArrowLeft className="size-5" />
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### Colour
|
|
94
|
+
|
|
95
|
+
Never set an icon's colour directly — it inherits from `currentColor`:
|
|
96
|
+
|
|
97
|
+
```tsx
|
|
98
|
+
<span className="text-red-600">
|
|
99
|
+
<ShieldCheck /> {/* red */}
|
|
100
|
+
</span>
|
|
101
|
+
|
|
102
|
+
<button className="text-white bg-brand">
|
|
103
|
+
<Check /> {/* white */}
|
|
104
|
+
</button>
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
This is why the set needs no dark-mode variant and no re-brand pass.
|
|
108
|
+
|
|
109
|
+
### Stroke weight
|
|
110
|
+
|
|
111
|
+
```tsx
|
|
112
|
+
<ArrowLeft strokeWidth={1.5} /> {/* lighter, for large sizes */}
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### Everything else
|
|
116
|
+
|
|
117
|
+
Props are `React.SVGProps<SVGSVGElement>` plus `size`, so every standard SVG and React attribute
|
|
118
|
+
works — `className`, `style`, `onClick`, `data-*`, `ref`, all `aria-*`:
|
|
119
|
+
|
|
120
|
+
```tsx
|
|
121
|
+
<ArrowLeft
|
|
122
|
+
size={20}
|
|
123
|
+
className="shrink-0 text-muted-foreground"
|
|
124
|
+
aria-label="Go back"
|
|
125
|
+
onClick={goBack}
|
|
126
|
+
/>
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### Types
|
|
130
|
+
|
|
131
|
+
```ts
|
|
132
|
+
import type { QeetrixIconProps } from "@qeetrix/icons";
|
|
133
|
+
|
|
134
|
+
type QeetrixIconProps = React.SVGProps<SVGSVGElement> & {
|
|
135
|
+
size?: number | string;
|
|
136
|
+
};
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
> Named `QeetrixIconProps`, not `IconProps`, because `@qeetrix/ui` already exports an `IconProps` for
|
|
140
|
+
> its `<Icon icon={…}>` wrapper. Distinct names let a consumer re-export both packages from one barrel.
|
|
141
|
+
|
|
142
|
+
### Metadata
|
|
143
|
+
|
|
144
|
+
For an icon picker, a docs search, or any catalogue UI — importable **without** pulling in a single
|
|
145
|
+
component:
|
|
146
|
+
|
|
147
|
+
```ts
|
|
148
|
+
import { icons, iconNames } from "@qeetrix/icons/metadata";
|
|
149
|
+
|
|
150
|
+
icons.find((icon) => icon.name === "search");
|
|
151
|
+
// {
|
|
152
|
+
// name: "search",
|
|
153
|
+
// component: "Search",
|
|
154
|
+
// category: "interface",
|
|
155
|
+
// tags: ["find", "magnifier", "lookup", "query", "filter"],
|
|
156
|
+
// aliases: ["magnifying-glass"],
|
|
157
|
+
// mirror: true,
|
|
158
|
+
// }
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
`mirror` marks glyphs that must flip under `dir="rtl"` — horizontal directions only, since `arrow-up`
|
|
162
|
+
means the same thing in both reading directions. It is metadata, not behaviour: this package does not
|
|
163
|
+
read layout direction, so apply it yourself (`rtl:-scale-x-100`, or swap the icon).
|
|
164
|
+
|
|
165
|
+
---
|
|
166
|
+
|
|
167
|
+
## 📂 Categories
|
|
168
|
+
|
|
169
|
+
The category is the source directory and is **browse metadata only** — it is never part of an icon's
|
|
170
|
+
export name, so moving an icon between categories is not a breaking change.
|
|
171
|
+
|
|
172
|
+
| Category | Icons |
|
|
173
|
+
|:--|--:|
|
|
174
|
+
| `accessibility` | 6 |
|
|
175
|
+
| `arrows` | 13 |
|
|
176
|
+
| `communication` | 25 |
|
|
177
|
+
| `data` | 14 |
|
|
178
|
+
| `design` | 8 |
|
|
179
|
+
| `development` | 12 |
|
|
180
|
+
| `devices` | 16 |
|
|
181
|
+
| `editing` | 26 |
|
|
182
|
+
| `files` | 34 |
|
|
183
|
+
| `finance` | 12 |
|
|
184
|
+
| `hardware` | 1 |
|
|
185
|
+
| `interface` | 35 |
|
|
186
|
+
| `maps` | 2 |
|
|
187
|
+
| `media` | 14 |
|
|
188
|
+
| `navigation` | 19 |
|
|
189
|
+
| `notifications` | 5 |
|
|
190
|
+
| `security` | 18 |
|
|
191
|
+
| `social` | 7 |
|
|
192
|
+
| `status` | 13 |
|
|
193
|
+
| `time` | 14 |
|
|
194
|
+
| `users` | 16 |
|
|
195
|
+
| `utilities` | 21 |
|
|
196
|
+
|
|
197
|
+
The category is the source directory and is **browse metadata only** — it is never part of an icon's
|
|
198
|
+
export name, so moving an icon between categories is not a breaking change.
|
|
199
|
+
|
|
200
|
+
Directional glyphs carry a `mirror` flag for RTL: 72 of 331 icons are marked. Vertical direction never
|
|
201
|
+
mirrors, and media transport controls deliberately do not either — playback direction is not reading
|
|
202
|
+
direction.
|
|
203
|
+
|
|
204
|
+
---
|
|
205
|
+
|
|
206
|
+
## 🔎 Finding an icon
|
|
207
|
+
|
|
208
|
+
At this size, searching first is the difference between a coherent catalogue and a pile.
|
|
209
|
+
|
|
210
|
+
```bash
|
|
211
|
+
bun run explorer && open .explorer/index.html
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
The explorer is a single static file with the whole catalogue inlined — no server, no build step.
|
|
215
|
+
|
|
216
|
+
| | |
|
|
217
|
+
|:--|:--|
|
|
218
|
+
| **Search** | Names, component names, categories, tags and aliases, with deterministic ranking: exact name → prefix → alias → component → substring → tag → category |
|
|
219
|
+
| **Filter** | Category, coverage priority, mirror-only |
|
|
220
|
+
| **Preview** | 16 / 20 / 24 / 32 / 48 / 64 px, on light or dark, grid or list |
|
|
221
|
+
| **Detail** | Full metadata plus copyable import, JSX and component name |
|
|
222
|
+
| **Linkable** | `#icon=shield-check`, `#q=lock&category=security` — every view is shareable |
|
|
223
|
+
| **Keyboard** | Tab and Enter throughout, arrow keys across the grid, `/` to focus search, Escape to close |
|
|
224
|
+
|
|
225
|
+
Or read the [coverage matrix](docs/icon-catalog.md), which lists every icon with its tags and
|
|
226
|
+
aliases. Search the **aliases** too — many words you would reach for are aliases rather than names:
|
|
227
|
+
|
|
228
|
+
| You want | It is called |
|
|
229
|
+
|:--|:--|
|
|
230
|
+
| `delete`, `bin` | `trash` |
|
|
231
|
+
| `add`, `new` | `plus` |
|
|
232
|
+
| `close`, `cancel` | `x` |
|
|
233
|
+
| `gear`, `cog` | `settings` |
|
|
234
|
+
| `stop` | `square` |
|
|
235
|
+
| `sign-in` / `sign-out` | `log-in` / `log-out` |
|
|
236
|
+
| `checkbox` | `check-square` |
|
|
237
|
+
| `hamburger` | `menu` |
|
|
238
|
+
| `spinner` | `loader` |
|
|
239
|
+
|
|
240
|
+
Programmatically, `@qeetrix/icons/metadata` carries the same data:
|
|
241
|
+
|
|
242
|
+
```ts
|
|
243
|
+
import { icons } from "@qeetrix/icons/metadata";
|
|
244
|
+
|
|
245
|
+
const match = (q: string) =>
|
|
246
|
+
icons.filter((i) => i.name.includes(q) || i.tags.includes(q) || i.aliases.includes(q));
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
---
|
|
250
|
+
|
|
251
|
+
## ♿ Accessibility
|
|
252
|
+
|
|
253
|
+
An icon is **decorative by default** and carries `aria-hidden="true"`. Passing `aria-label` or
|
|
254
|
+
`aria-labelledby` automatically makes it a named graphic (`role="img"`) and drops `aria-hidden`.
|
|
255
|
+
|
|
256
|
+
That automatic flip is the design: it makes the usual silent bug — an element that is both
|
|
257
|
+
`aria-hidden` and labelled, so the label is never announced — impossible to write.
|
|
258
|
+
|
|
259
|
+
**Icon beside visible text** — decorative. The text is the label; do nothing.
|
|
260
|
+
|
|
261
|
+
```tsx
|
|
262
|
+
<button type="button">
|
|
263
|
+
<ArrowLeft size={20} />
|
|
264
|
+
Back
|
|
265
|
+
</button>
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
**Icon-only control** — name the *control*, not the icon.
|
|
269
|
+
|
|
270
|
+
```tsx
|
|
271
|
+
<button type="button" aria-label="Delete row">
|
|
272
|
+
<Trash size={16} />
|
|
273
|
+
</button>
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
**Standalone meaningful icon** — nothing else conveys it, so name the icon.
|
|
277
|
+
|
|
278
|
+
```tsx
|
|
279
|
+
<ShieldCheck size={16} aria-label="Verified" />
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
**Opting out** — pass `aria-hidden={false}` or an explicit `role`.
|
|
283
|
+
|
|
284
|
+
The suite verifies these patterns with axe inside buttons, links, inputs, navigation, menus,
|
|
285
|
+
tooltips, data tables and form validation messages.
|
|
286
|
+
|
|
287
|
+
Do **not** put a `<title>` in a source SVG to name an icon. The same glyph means different things in
|
|
288
|
+
different places — `x` is "Close" in a dialog and "Remove" in a chip — so the name belongs at the
|
|
289
|
+
usage site.
|
|
290
|
+
|
|
291
|
+
---
|
|
292
|
+
|
|
293
|
+
## 🏗 How it works
|
|
294
|
+
|
|
295
|
+
The SVG source is canonical. Everything downstream is derived:
|
|
296
|
+
|
|
297
|
+
```text
|
|
298
|
+
icons/arrows/arrow-left.svg
|
|
299
|
+
↓ bun run generate
|
|
300
|
+
src/icons/arrow-left.tsx export function ArrowLeft(props: QeetrixIconProps)
|
|
301
|
+
src/icons/index.ts export { ArrowLeft } from "./arrow-left.js";
|
|
302
|
+
src/metadata.ts { name: "arrow-left", component: "ArrowLeft", … }
|
|
303
|
+
↓ bun run build
|
|
304
|
+
dist/icons/arrow-left.js + .d.ts
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
Generated files are **committed** — a reader sees real component source, and a diff shows exactly
|
|
308
|
+
what an icon change did to the public API. `bun run generate:check` proves they still match the
|
|
309
|
+
generator, and CI runs it before the build so a hand-edit is caught rather than overwritten.
|
|
310
|
+
|
|
311
|
+
Output is deterministic: no timestamps, and all ordering by explicit codepoint comparison rather than
|
|
312
|
+
`localeCompare`, so a tracked file's byte order never depends on the machine that produced it.
|
|
313
|
+
|
|
314
|
+
### Layout
|
|
315
|
+
|
|
316
|
+
```text
|
|
317
|
+
icons/ ← source of truth, 22 categories
|
|
318
|
+
icon-metadata.json ← tags, aliases, RTL mirror flags, coverage priority
|
|
319
|
+
scripts/
|
|
320
|
+
validate.mjs ← bun run validate
|
|
321
|
+
generate.mjs ← bun run generate [--check]
|
|
322
|
+
explorer.mjs ← bun run explorer
|
|
323
|
+
catalog.mjs ← bun run catalog [--check]
|
|
324
|
+
api-docs.mjs ← bun run api [--check]
|
|
325
|
+
verify-package.mjs ← bun run verify:package
|
|
326
|
+
doctor.mjs ← bun run doctor
|
|
327
|
+
clean.mjs
|
|
328
|
+
config/ categories · package-size baseline · consumer fixture
|
|
329
|
+
lib/ discover · svg · rules · naming · emit · io · pipeline · search
|
|
330
|
+
src/
|
|
331
|
+
index.ts ← public barrel (hand-written)
|
|
332
|
+
types.ts ← QeetrixIconProps, IconMetadata (hand-written)
|
|
333
|
+
icon-base.tsx ← the shared <svg> shell + a11y contract (hand-written)
|
|
334
|
+
metadata.ts ← GENERATED
|
|
335
|
+
icons/ ← GENERATED, one module per icon
|
|
336
|
+
tests/
|
|
337
|
+
fixtures/ valid + invalid SVGs, outside icons/ on purpose
|
|
338
|
+
icons/ metadata/ build/ visual/ explorer/
|
|
339
|
+
docs/ icon-catalog · icon-design-system · icon-guidelines · naming · contributing
|
|
340
|
+
```
|
|
341
|
+
|
|
342
|
+
### Import surface
|
|
343
|
+
|
|
344
|
+
| Specifier | Resolves to |
|
|
345
|
+
|:--|:--|
|
|
346
|
+
| `@qeetrix/icons` | Every icon, plus `IconBase` and the spec constants |
|
|
347
|
+
| `@qeetrix/icons/metadata` | The catalogue only — no components |
|
|
348
|
+
| `@qeetrix/icons/icons/arrow-left` | A single icon, for bundlers with weak tree-shaking |
|
|
349
|
+
|
|
350
|
+
No internal paths are exposed. There is no `@qeetrix/icons/dist/…`.
|
|
351
|
+
|
|
352
|
+
---
|
|
353
|
+
|
|
354
|
+
## ✅ Validation
|
|
355
|
+
|
|
356
|
+
`bun run validate` enforces the specification in
|
|
357
|
+
**[docs/icon-guidelines.md](docs/icon-guidelines.md)**. Errors fail the build; warnings do not.
|
|
358
|
+
|
|
359
|
+
Rejected: a `viewBox` other than `0 0 24 24` · `width`/`height` on the root · missing or wrong root
|
|
360
|
+
spec attributes · hard-coded colours · `transform` anywhere · raster or `data:` content · external
|
|
361
|
+
references · `<style>` or `style=` · editor metadata · `id` and `class` attributes · elements or
|
|
362
|
+
attributes outside the allowlist · stray text · `DOCTYPE` or CDATA · empty icons · bad filenames ·
|
|
363
|
+
unknown categories · duplicate names · component-name collisions · orphan metadata · aliases claimed
|
|
364
|
+
twice or colliding with an icon name · an invalid `priority`.
|
|
365
|
+
|
|
366
|
+
Colour is checked by **allowlist** — only `none`, `currentColor`, `inherit` and `transparent` are
|
|
367
|
+
accepted — so `#f26d0e`, `rgb(0 0 0)`, `oklch(…)` and all 148 CSS colour names are caught without any
|
|
368
|
+
of them appearing in the rule set.
|
|
369
|
+
|
|
370
|
+
`bun run doctor` adds the catalogue-scale checks: duplicate semantics, half-finished families, naming
|
|
371
|
+
drift, category imbalance, thin or spammy tags. It is advisory and exits 0 — those are judgement
|
|
372
|
+
calls, and a check that blocked a merge over a naming opinion would just get switched off.
|
|
373
|
+
|
|
374
|
+
---
|
|
375
|
+
|
|
376
|
+
## 🛠 Develop
|
|
377
|
+
|
|
378
|
+
```bash
|
|
379
|
+
bun install
|
|
380
|
+
bun run validate # check every source SVG
|
|
381
|
+
bun run generate # regenerate components, barrel and metadata
|
|
382
|
+
bun run explorer # build the explorer and review sheets, then open .explorer/index.html
|
|
383
|
+
bun run catalog # regenerate docs/icon-catalog.md
|
|
384
|
+
bun run doctor # catalogue health report (advisory)
|
|
385
|
+
bun run typecheck
|
|
386
|
+
bun run lint # Biome — lint and format
|
|
387
|
+
bun run test
|
|
388
|
+
bun run build # clean → generate → tsc → tsc-alias
|
|
389
|
+
```
|
|
390
|
+
|
|
391
|
+
### The icon explorer
|
|
392
|
+
|
|
393
|
+
`bun run explorer` writes three artifacts to `.explorer/` (gitignored):
|
|
394
|
+
|
|
395
|
+
| | |
|
|
396
|
+
|:--|:--|
|
|
397
|
+
| `index.html` | The **icon explorer** — ranked search over names, tags and aliases; category, priority and mirror filters; grid or list; preview at 16/20/24/32/48/64; light and dark preview; copy import, JSX or component name; deep-linkable |
|
|
398
|
+
| `contact-sheet.svg` | The whole set on one page. The only way to catch an icon that looks wrong *beside its siblings* |
|
|
399
|
+
| `small-sizes.svg` | Every icon at all four sizes. 16px is where glyphs fall apart |
|
|
400
|
+
|
|
401
|
+
The last two exist because the most common icon defect is not invalidity — it is an icon that is
|
|
402
|
+
individually fine and collectively wrong. Every glyph in this catalogue was reviewed this way, and
|
|
403
|
+
that review is what caught `settings` reading as a sun, `undo`/`reply` sharing a silhouette, and the
|
|
404
|
+
`mail-*` badges colliding with the envelope.
|
|
405
|
+
|
|
406
|
+
Tooling: **bun**, **Biome 2**, **Vitest 4**, **Changesets**, and plain **`tsc`** for the build — no
|
|
407
|
+
bundler, which suits a package whose ideal output is one module per icon anyway. This mirrors
|
|
408
|
+
`@qeetrix/ui`; there is no ESLint and no Prettier anywhere in the workspace.
|
|
409
|
+
|
|
410
|
+
CI runs two jobs. `verify` covers
|
|
411
|
+
`validate → generate:check → build → typecheck → lint → test → explorer → catalog:check → api:check → doctor`.
|
|
412
|
+
`package` runs `verify:package` on its own, so a slow install and bundle measurement does not gate
|
|
413
|
+
every review.
|
|
414
|
+
|
|
415
|
+
**Docs**
|
|
416
|
+
|
|
417
|
+
| | |
|
|
418
|
+
|:--|:--|
|
|
419
|
+
| [docs/usage.md](docs/usage.md) | **Start here as a consumer** — install, sizing, colour, accessibility, entry points |
|
|
420
|
+
| [docs/api.md](docs/api.md) | Complete prop reference, generated from the shipped types |
|
|
421
|
+
| [docs/icon-catalog.md](docs/icon-catalog.md) | **The coverage matrix** — every icon, its priority, tags, aliases and RTL flag. Search this before adding one |
|
|
422
|
+
| [docs/releases.md](docs/releases.md) | Changesets, what each bump means, deprecation policy |
|
|
423
|
+
| [docs/icon-design-system.md](docs/icon-design-system.md) | The visual language — grid bands, stroke density, shared motifs, small-size rules |
|
|
424
|
+
| [docs/icon-guidelines.md](docs/icon-guidelines.md) | The technical spec and every validation rule |
|
|
425
|
+
| [docs/naming.md](docs/naming.md) | Naming governance, and tags vs aliases |
|
|
426
|
+
| [docs/contributing.md](docs/contributing.md) | Adding an icon, adding a rule, conventions |
|
|
427
|
+
|
|
428
|
+
---
|
|
429
|
+
|
|
430
|
+
## 🔭 What's next
|
|
431
|
+
|
|
432
|
+
Phase 3 delivered enterprise coverage. Phase 4 should build:
|
|
433
|
+
|
|
434
|
+
- **`@qeetrix/ui` migration** — replace `lucide-react` and the 10 placeholder brand glyphs. The prop
|
|
435
|
+
shape is already drop-in compatible, so this is a swap plus a codemod. Land the Tailwind v4 syntax
|
|
436
|
+
migration sitting uncommitted in that repo first.
|
|
437
|
+
- **Qeet-domain icons** — SAML, OIDC, SCIM, webhook, audit-log, tenant, GST. Deferred deliberately:
|
|
438
|
+
they need product review, not just drawing.
|
|
439
|
+
- **Coverage audit against real screens** — walk actual Qeet product UIs and record what is still
|
|
440
|
+
missing, rather than guessing at the next hundred.
|
|
441
|
+
- **Discovery surfaces** — an icon browser in `qeetrix-docs` and Storybook stories, both fed by
|
|
442
|
+
`@qeetrix/icons/metadata`.
|
|
443
|
+
- **Figma library** published from the same canonical SVG, so design and code cannot drift.
|
|
444
|
+
- **A published `1.0.0`**, once the migration has proved the API in a real consumer.
|
|
445
|
+
|
|
446
|
+
---
|
|
447
|
+
|
|
448
|
+
## 📄 License
|
|
449
|
+
|
|
450
|
+
[MIT](LICENSE). The artwork is original to Qeet Group — nothing in this repository is derived from
|
|
451
|
+
lucide, Feather, Heroicons, Material Icons, Font Awesome, Phosphor, Tabler or any other icon set.
|
|
452
|
+
|
|
453
|
+
Part of the **[Qeet Group](https://github.com/qeetgroup)** workspace, alongside
|
|
454
|
+
[`@qeetrix/ui`](https://github.com/qeetgroup/qeetrix-ui).
|
|
455
|
+
# qeetrix-icons
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { QeetrixIconProps } from "./types.js";
|
|
2
|
+
/** Canonical grid. Every source SVG is authored against `0 0 24 24`. */
|
|
3
|
+
export declare const ICON_VIEW_BOX = "0 0 24 24";
|
|
4
|
+
/** Default rendered size in px. */
|
|
5
|
+
export declare const ICON_DEFAULT_SIZE = 24;
|
|
6
|
+
/** Default stroke width. Matches the outline spec in docs/icon-guidelines.md. */
|
|
7
|
+
export declare const ICON_DEFAULT_STROKE_WIDTH = 2;
|
|
8
|
+
/**
|
|
9
|
+
* The single `<svg>` shell every generated icon renders through.
|
|
10
|
+
*
|
|
11
|
+
* Centralising it means the grid, the stroke defaults and — most importantly —
|
|
12
|
+
* the accessibility behaviour are defined exactly once rather than duplicated
|
|
13
|
+
* into every generated component.
|
|
14
|
+
*
|
|
15
|
+
* Accessibility: an icon is decorative by default (`aria-hidden="true"`),
|
|
16
|
+
* because that is overwhelmingly the common case — an icon beside a text label
|
|
17
|
+
* adds nothing for a screen reader. Passing `aria-label` or `aria-labelledby`
|
|
18
|
+
* flips it to a semantic graphic (`role="img"`, no `aria-hidden`). That
|
|
19
|
+
* automatic flip is the point: it makes the silent failure mode — an element
|
|
20
|
+
* that is both `aria-hidden` and labelled, so the label is never announced —
|
|
21
|
+
* unrepresentable.
|
|
22
|
+
*
|
|
23
|
+
* `...rest` is spread last, so every default above remains overridable;
|
|
24
|
+
* `aria-hidden={false}` opts out of the decorative default entirely.
|
|
25
|
+
*
|
|
26
|
+
* Server-safe: no hooks, no browser APIs, no `"use client"`.
|
|
27
|
+
*/
|
|
28
|
+
export declare function IconBase({ size, strokeWidth, children, ...rest }: QeetrixIconProps): import("react").JSX.Element;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/** Canonical grid. Every source SVG is authored against `0 0 24 24`. */
|
|
3
|
+
export const ICON_VIEW_BOX = "0 0 24 24";
|
|
4
|
+
/** Default rendered size in px. */
|
|
5
|
+
export const ICON_DEFAULT_SIZE = 24;
|
|
6
|
+
/** Default stroke width. Matches the outline spec in docs/icon-guidelines.md. */
|
|
7
|
+
export const ICON_DEFAULT_STROKE_WIDTH = 2;
|
|
8
|
+
/**
|
|
9
|
+
* The single `<svg>` shell every generated icon renders through.
|
|
10
|
+
*
|
|
11
|
+
* Centralising it means the grid, the stroke defaults and — most importantly —
|
|
12
|
+
* the accessibility behaviour are defined exactly once rather than duplicated
|
|
13
|
+
* into every generated component.
|
|
14
|
+
*
|
|
15
|
+
* Accessibility: an icon is decorative by default (`aria-hidden="true"`),
|
|
16
|
+
* because that is overwhelmingly the common case — an icon beside a text label
|
|
17
|
+
* adds nothing for a screen reader. Passing `aria-label` or `aria-labelledby`
|
|
18
|
+
* flips it to a semantic graphic (`role="img"`, no `aria-hidden`). That
|
|
19
|
+
* automatic flip is the point: it makes the silent failure mode — an element
|
|
20
|
+
* that is both `aria-hidden` and labelled, so the label is never announced —
|
|
21
|
+
* unrepresentable.
|
|
22
|
+
*
|
|
23
|
+
* `...rest` is spread last, so every default above remains overridable;
|
|
24
|
+
* `aria-hidden={false}` opts out of the decorative default entirely.
|
|
25
|
+
*
|
|
26
|
+
* Server-safe: no hooks, no browser APIs, no `"use client"`.
|
|
27
|
+
*/
|
|
28
|
+
export function IconBase({ size = ICON_DEFAULT_SIZE, strokeWidth = ICON_DEFAULT_STROKE_WIDTH, children, ...rest }) {
|
|
29
|
+
const labelled = rest["aria-label"] != null || rest["aria-labelledby"] != null;
|
|
30
|
+
// On the suppression below: this component IS the library's accessibility
|
|
31
|
+
// contract, and it satisfies noSvgWithoutTitle's intent dynamically rather
|
|
32
|
+
// than statically. A decorative icon carries `aria-hidden` (which the rule
|
|
33
|
+
// accepts in place of a title); a semantic one is named by the consumer's
|
|
34
|
+
// `aria-label`/`aria-labelledby` and gets `role="img"`. A static `<title>`
|
|
35
|
+
// here would give every icon in the library the same useless accessible name.
|
|
36
|
+
return (_jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: ICON_VIEW_BOX, width: size, height: size, fill: "none", stroke: "currentColor", strokeWidth: strokeWidth, strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": labelled ? undefined : true, role: labelled ? "img" : undefined, ...rest, children: children }));
|
|
37
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/* GENERATED by scripts/generate.mjs from icons/accessibility/accessibility.svg. Do not edit by hand. */
|
|
3
|
+
import { IconBase } from "../icon-base.js";
|
|
4
|
+
export function Accessibility(props) {
|
|
5
|
+
return (_jsxs(IconBase, { ...props, children: [_jsx("circle", { cx: "12", cy: "4.5", r: "2" }), _jsx("path", { d: "M4 8.5h16" }), _jsx("path", { d: "M9 8.5l1 5.5h4l1-5.5" }), _jsx("path", { d: "M10 14l-2 7M14 14l2 7" })] }));
|
|
6
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/* GENERATED by scripts/generate.mjs from icons/data/activity.svg. Do not edit by hand. */
|
|
3
|
+
import { IconBase } from "../icon-base.js";
|
|
4
|
+
export function Activity(props) {
|
|
5
|
+
return (_jsx(IconBase, { ...props, children: _jsx("path", { d: "M22 12h-4l-3 8-4-16-3 8H2" }) }));
|
|
6
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/* GENERATED by scripts/generate.mjs from icons/time/alarm-clock.svg. Do not edit by hand. */
|
|
3
|
+
import { IconBase } from "../icon-base.js";
|
|
4
|
+
export function AlarmClock(props) {
|
|
5
|
+
return (_jsxs(IconBase, { ...props, children: [_jsx("circle", { cx: "12", cy: "13", r: "7.5" }), _jsx("path", { d: "M12 9.5V13l2.5 1.5" }), _jsx("path", { d: "M6 4.5 4 6.5" }), _jsx("path", { d: "M18 4.5 20 6.5" })] }));
|
|
6
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/* GENERATED by scripts/generate.mjs from icons/status/alert-circle.svg. Do not edit by hand. */
|
|
3
|
+
import { IconBase } from "../icon-base.js";
|
|
4
|
+
export function AlertCircle(props) {
|
|
5
|
+
return (_jsxs(IconBase, { ...props, children: [_jsx("circle", { cx: "12", cy: "12", r: "9" }), _jsx("path", { d: "M12 8v4" }), _jsx("path", { d: "M12 16h.01" })] }));
|
|
6
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/* GENERATED by scripts/generate.mjs from icons/status/alert-octagon.svg. Do not edit by hand. */
|
|
3
|
+
import { IconBase } from "../icon-base.js";
|
|
4
|
+
export function AlertOctagon(props) {
|
|
5
|
+
return (_jsxs(IconBase, { ...props, children: [_jsx("path", { d: "M8 3h8l5 5v8l-5 5H8l-5-5V8z" }), _jsx("path", { d: "M12 8v4" }), _jsx("path", { d: "M12 16h.01" })] }));
|
|
6
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
/* GENERATED by scripts/generate.mjs from icons/status/alert-triangle.svg. Do not edit by hand. */
|
|
3
|
+
import { IconBase } from "../icon-base.js";
|
|
4
|
+
export function AlertTriangle(props) {
|
|
5
|
+
return (_jsxs(IconBase, { ...props, children: [_jsx("path", { d: "M12 4l9 16H3z" }), _jsx("path", { d: "M12 10v4" }), _jsx("path", { d: "M12 17h.01" })] }));
|
|
6
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/* GENERATED by scripts/generate.mjs from icons/editing/align-center.svg. Do not edit by hand. */
|
|
3
|
+
import { IconBase } from "../icon-base.js";
|
|
4
|
+
export function AlignCenter(props) {
|
|
5
|
+
return (_jsx(IconBase, { ...props, children: _jsx("path", { d: "M3 6h18M6 12h12M5 18h14" }) }));
|
|
6
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/* GENERATED by scripts/generate.mjs from icons/editing/align-justify.svg. Do not edit by hand. */
|
|
3
|
+
import { IconBase } from "../icon-base.js";
|
|
4
|
+
export function AlignJustify(props) {
|
|
5
|
+
return (_jsx(IconBase, { ...props, children: _jsx("path", { d: "M3 6h18M3 12h18M3 18h18" }) }));
|
|
6
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/* GENERATED by scripts/generate.mjs from icons/editing/align-left.svg. Do not edit by hand. */
|
|
3
|
+
import { IconBase } from "../icon-base.js";
|
|
4
|
+
export function AlignLeft(props) {
|
|
5
|
+
return (_jsx(IconBase, { ...props, children: _jsx("path", { d: "M3 6h18M3 12h12M3 18h16" }) }));
|
|
6
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/* GENERATED by scripts/generate.mjs from icons/editing/align-right.svg. Do not edit by hand. */
|
|
3
|
+
import { IconBase } from "../icon-base.js";
|
|
4
|
+
export function AlignRight(props) {
|
|
5
|
+
return (_jsx(IconBase, { ...props, children: _jsx("path", { d: "M3 6h18M9 12h12M7 18h14" }) }));
|
|
6
|
+
}
|