jet_ui 0.2.4
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.
- checksums.yaml +7 -0
- data/CHANGELOG.md +106 -0
- data/LICENSE.md +21 -0
- data/README.md +114 -0
- data/app/assets/images/jet_ui/icons/academic-cap.svg +3 -0
- data/app/assets/images/jet_ui/icons/adjustments-horizontal.svg +3 -0
- data/app/assets/images/jet_ui/icons/adjustments-vertical.svg +3 -0
- data/app/assets/images/jet_ui/icons/archive-box-arrow-down.svg +3 -0
- data/app/assets/images/jet_ui/icons/archive-box-x-mark.svg +3 -0
- data/app/assets/images/jet_ui/icons/archive-box.svg +3 -0
- data/app/assets/images/jet_ui/icons/arrow-down-circle.svg +3 -0
- data/app/assets/images/jet_ui/icons/arrow-down-left.svg +3 -0
- data/app/assets/images/jet_ui/icons/arrow-down-on-square-stack.svg +3 -0
- data/app/assets/images/jet_ui/icons/arrow-down-on-square.svg +3 -0
- data/app/assets/images/jet_ui/icons/arrow-down-right.svg +3 -0
- data/app/assets/images/jet_ui/icons/arrow-down-tray.svg +3 -0
- data/app/assets/images/jet_ui/icons/arrow-down.svg +3 -0
- data/app/assets/images/jet_ui/icons/arrow-left-circle.svg +3 -0
- data/app/assets/images/jet_ui/icons/arrow-left-end-on-rectangle.svg +3 -0
- data/app/assets/images/jet_ui/icons/arrow-left-on-rectangle.svg +3 -0
- data/app/assets/images/jet_ui/icons/arrow-left-start-on-rectangle.svg +3 -0
- data/app/assets/images/jet_ui/icons/arrow-left.svg +3 -0
- data/app/assets/images/jet_ui/icons/arrow-long-down.svg +3 -0
- data/app/assets/images/jet_ui/icons/arrow-long-left.svg +3 -0
- data/app/assets/images/jet_ui/icons/arrow-long-right.svg +3 -0
- data/app/assets/images/jet_ui/icons/arrow-long-up.svg +3 -0
- data/app/assets/images/jet_ui/icons/arrow-path-rounded-square.svg +3 -0
- data/app/assets/images/jet_ui/icons/arrow-path.svg +3 -0
- data/app/assets/images/jet_ui/icons/arrow-right-circle.svg +3 -0
- data/app/assets/images/jet_ui/icons/arrow-right-end-on-rectangle.svg +3 -0
- data/app/assets/images/jet_ui/icons/arrow-right-on-rectangle.svg +3 -0
- data/app/assets/images/jet_ui/icons/arrow-right-start-on-rectangle.svg +3 -0
- data/app/assets/images/jet_ui/icons/arrow-right.svg +3 -0
- data/app/assets/images/jet_ui/icons/arrow-small-down.svg +3 -0
- data/app/assets/images/jet_ui/icons/arrow-small-left.svg +3 -0
- data/app/assets/images/jet_ui/icons/arrow-small-right.svg +3 -0
- data/app/assets/images/jet_ui/icons/arrow-small-up.svg +3 -0
- data/app/assets/images/jet_ui/icons/arrow-top-right-on-square.svg +3 -0
- data/app/assets/images/jet_ui/icons/arrow-trending-down.svg +3 -0
- data/app/assets/images/jet_ui/icons/arrow-trending-up.svg +3 -0
- data/app/assets/images/jet_ui/icons/arrow-turn-down-left.svg +3 -0
- data/app/assets/images/jet_ui/icons/arrow-turn-down-right.svg +3 -0
- data/app/assets/images/jet_ui/icons/arrow-turn-left-down.svg +3 -0
- data/app/assets/images/jet_ui/icons/arrow-turn-left-up.svg +3 -0
- data/app/assets/images/jet_ui/icons/arrow-turn-right-down.svg +3 -0
- data/app/assets/images/jet_ui/icons/arrow-turn-right-up.svg +3 -0
- data/app/assets/images/jet_ui/icons/arrow-turn-up-left.svg +3 -0
- data/app/assets/images/jet_ui/icons/arrow-turn-up-right.svg +3 -0
- data/app/assets/images/jet_ui/icons/arrow-up-circle.svg +3 -0
- data/app/assets/images/jet_ui/icons/arrow-up-left.svg +3 -0
- data/app/assets/images/jet_ui/icons/arrow-up-on-square-stack.svg +3 -0
- data/app/assets/images/jet_ui/icons/arrow-up-on-square.svg +3 -0
- data/app/assets/images/jet_ui/icons/arrow-up-right.svg +3 -0
- data/app/assets/images/jet_ui/icons/arrow-up-tray.svg +3 -0
- data/app/assets/images/jet_ui/icons/arrow-up.svg +3 -0
- data/app/assets/images/jet_ui/icons/arrow-uturn-down.svg +3 -0
- data/app/assets/images/jet_ui/icons/arrow-uturn-left.svg +3 -0
- data/app/assets/images/jet_ui/icons/arrow-uturn-right.svg +3 -0
- data/app/assets/images/jet_ui/icons/arrow-uturn-up.svg +3 -0
- data/app/assets/images/jet_ui/icons/arrows-pointing-in.svg +3 -0
- data/app/assets/images/jet_ui/icons/arrows-pointing-out.svg +3 -0
- data/app/assets/images/jet_ui/icons/arrows-right-left.svg +3 -0
- data/app/assets/images/jet_ui/icons/arrows-up-down.svg +3 -0
- data/app/assets/images/jet_ui/icons/at-symbol.svg +3 -0
- data/app/assets/images/jet_ui/icons/backspace.svg +3 -0
- data/app/assets/images/jet_ui/icons/backward.svg +4 -0
- data/app/assets/images/jet_ui/icons/banknotes.svg +3 -0
- data/app/assets/images/jet_ui/icons/bars-2.svg +3 -0
- data/app/assets/images/jet_ui/icons/bars-3-bottom-left.svg +3 -0
- data/app/assets/images/jet_ui/icons/bars-3-bottom-right.svg +3 -0
- data/app/assets/images/jet_ui/icons/bars-3-center-left.svg +3 -0
- data/app/assets/images/jet_ui/icons/bars-3.svg +3 -0
- data/app/assets/images/jet_ui/icons/bars-4.svg +3 -0
- data/app/assets/images/jet_ui/icons/bars-arrow-down.svg +3 -0
- data/app/assets/images/jet_ui/icons/bars-arrow-up.svg +3 -0
- data/app/assets/images/jet_ui/icons/battery-0.svg +3 -0
- data/app/assets/images/jet_ui/icons/battery-100.svg +3 -0
- data/app/assets/images/jet_ui/icons/battery-50.svg +3 -0
- data/app/assets/images/jet_ui/icons/beaker.svg +3 -0
- data/app/assets/images/jet_ui/icons/bell-alert.svg +3 -0
- data/app/assets/images/jet_ui/icons/bell-slash.svg +3 -0
- data/app/assets/images/jet_ui/icons/bell-snooze.svg +3 -0
- data/app/assets/images/jet_ui/icons/bell.svg +3 -0
- data/app/assets/images/jet_ui/icons/bold.svg +3 -0
- data/app/assets/images/jet_ui/icons/bolt-slash.svg +3 -0
- data/app/assets/images/jet_ui/icons/bolt.svg +3 -0
- data/app/assets/images/jet_ui/icons/book-open.svg +3 -0
- data/app/assets/images/jet_ui/icons/bookmark-slash.svg +3 -0
- data/app/assets/images/jet_ui/icons/bookmark-square.svg +3 -0
- data/app/assets/images/jet_ui/icons/bookmark.svg +3 -0
- data/app/assets/images/jet_ui/icons/briefcase.svg +3 -0
- data/app/assets/images/jet_ui/icons/bug-ant.svg +3 -0
- data/app/assets/images/jet_ui/icons/building-library.svg +3 -0
- data/app/assets/images/jet_ui/icons/building-office-2.svg +3 -0
- data/app/assets/images/jet_ui/icons/building-office.svg +3 -0
- data/app/assets/images/jet_ui/icons/building-storefront.svg +3 -0
- data/app/assets/images/jet_ui/icons/cake.svg +3 -0
- data/app/assets/images/jet_ui/icons/calculator.svg +3 -0
- data/app/assets/images/jet_ui/icons/calendar-date-range.svg +3 -0
- data/app/assets/images/jet_ui/icons/calendar-days.svg +3 -0
- data/app/assets/images/jet_ui/icons/calendar.svg +3 -0
- data/app/assets/images/jet_ui/icons/camera.svg +5 -0
- data/app/assets/images/jet_ui/icons/chart-bar-square.svg +3 -0
- data/app/assets/images/jet_ui/icons/chart-bar.svg +5 -0
- data/app/assets/images/jet_ui/icons/chart-pie.svg +4 -0
- data/app/assets/images/jet_ui/icons/chat-bubble-bottom-center-text.svg +3 -0
- data/app/assets/images/jet_ui/icons/chat-bubble-bottom-center.svg +3 -0
- data/app/assets/images/jet_ui/icons/chat-bubble-left-ellipsis.svg +3 -0
- data/app/assets/images/jet_ui/icons/chat-bubble-left-right.svg +3 -0
- data/app/assets/images/jet_ui/icons/chat-bubble-left.svg +3 -0
- data/app/assets/images/jet_ui/icons/chat-bubble-oval-left-ellipsis.svg +3 -0
- data/app/assets/images/jet_ui/icons/chat-bubble-oval-left.svg +3 -0
- data/app/assets/images/jet_ui/icons/check-badge.svg +3 -0
- data/app/assets/images/jet_ui/icons/check-circle.svg +3 -0
- data/app/assets/images/jet_ui/icons/check.svg +3 -0
- data/app/assets/images/jet_ui/icons/chevron-double-down.svg +3 -0
- data/app/assets/images/jet_ui/icons/chevron-double-left.svg +3 -0
- data/app/assets/images/jet_ui/icons/chevron-double-right.svg +3 -0
- data/app/assets/images/jet_ui/icons/chevron-double-up.svg +4 -0
- data/app/assets/images/jet_ui/icons/chevron-down.svg +3 -0
- data/app/assets/images/jet_ui/icons/chevron-left.svg +3 -0
- data/app/assets/images/jet_ui/icons/chevron-right.svg +3 -0
- data/app/assets/images/jet_ui/icons/chevron-up-down.svg +3 -0
- data/app/assets/images/jet_ui/icons/chevron-up.svg +3 -0
- data/app/assets/images/jet_ui/icons/circle-stack.svg +3 -0
- data/app/assets/images/jet_ui/icons/clipboard-document-check.svg +3 -0
- data/app/assets/images/jet_ui/icons/clipboard-document-list.svg +3 -0
- data/app/assets/images/jet_ui/icons/clipboard-document.svg +3 -0
- data/app/assets/images/jet_ui/icons/clipboard.svg +3 -0
- data/app/assets/images/jet_ui/icons/clock.svg +3 -0
- data/app/assets/images/jet_ui/icons/cloud-arrow-down.svg +3 -0
- data/app/assets/images/jet_ui/icons/cloud-arrow-up.svg +3 -0
- data/app/assets/images/jet_ui/icons/cloud.svg +3 -0
- data/app/assets/images/jet_ui/icons/code-bracket-square.svg +3 -0
- data/app/assets/images/jet_ui/icons/code-bracket.svg +3 -0
- data/app/assets/images/jet_ui/icons/cog-6-tooth.svg +4 -0
- data/app/assets/images/jet_ui/icons/cog-8-tooth.svg +4 -0
- data/app/assets/images/jet_ui/icons/cog.svg +3 -0
- data/app/assets/images/jet_ui/icons/command-line.svg +3 -0
- data/app/assets/images/jet_ui/icons/computer-desktop.svg +3 -0
- data/app/assets/images/jet_ui/icons/cpu-chip.svg +3 -0
- data/app/assets/images/jet_ui/icons/credit-card.svg +3 -0
- data/app/assets/images/jet_ui/icons/cube-transparent.svg +3 -0
- data/app/assets/images/jet_ui/icons/cube.svg +3 -0
- data/app/assets/images/jet_ui/icons/currency-bangladeshi.svg +3 -0
- data/app/assets/images/jet_ui/icons/currency-dollar.svg +3 -0
- data/app/assets/images/jet_ui/icons/currency-euro.svg +3 -0
- data/app/assets/images/jet_ui/icons/currency-pound.svg +3 -0
- data/app/assets/images/jet_ui/icons/currency-rupee.svg +3 -0
- data/app/assets/images/jet_ui/icons/currency-yen.svg +3 -0
- data/app/assets/images/jet_ui/icons/cursor-arrow-rays.svg +3 -0
- data/app/assets/images/jet_ui/icons/cursor-arrow-ripple.svg +3 -0
- data/app/assets/images/jet_ui/icons/device-phone-mobile.svg +3 -0
- data/app/assets/images/jet_ui/icons/device-tablet.svg +3 -0
- data/app/assets/images/jet_ui/icons/divide.svg +3 -0
- data/app/assets/images/jet_ui/icons/document-arrow-down.svg +3 -0
- data/app/assets/images/jet_ui/icons/document-arrow-up.svg +3 -0
- data/app/assets/images/jet_ui/icons/document-chart-bar.svg +3 -0
- data/app/assets/images/jet_ui/icons/document-check.svg +3 -0
- data/app/assets/images/jet_ui/icons/document-currency-bangladeshi.svg +3 -0
- data/app/assets/images/jet_ui/icons/document-currency-dollar.svg +3 -0
- data/app/assets/images/jet_ui/icons/document-currency-euro.svg +3 -0
- data/app/assets/images/jet_ui/icons/document-currency-pound.svg +3 -0
- data/app/assets/images/jet_ui/icons/document-currency-rupee.svg +3 -0
- data/app/assets/images/jet_ui/icons/document-currency-yen.svg +3 -0
- data/app/assets/images/jet_ui/icons/document-duplicate.svg +3 -0
- data/app/assets/images/jet_ui/icons/document-magnifying-glass.svg +3 -0
- data/app/assets/images/jet_ui/icons/document-minus.svg +3 -0
- data/app/assets/images/jet_ui/icons/document-plus.svg +3 -0
- data/app/assets/images/jet_ui/icons/document-text.svg +3 -0
- data/app/assets/images/jet_ui/icons/document.svg +3 -0
- data/app/assets/images/jet_ui/icons/ellipsis-horizontal-circle.svg +3 -0
- data/app/assets/images/jet_ui/icons/ellipsis-horizontal.svg +5 -0
- data/app/assets/images/jet_ui/icons/ellipsis-vertical.svg +5 -0
- data/app/assets/images/jet_ui/icons/envelope-open.svg +3 -0
- data/app/assets/images/jet_ui/icons/envelope.svg +3 -0
- data/app/assets/images/jet_ui/icons/equals.svg +3 -0
- data/app/assets/images/jet_ui/icons/exclamation-circle.svg +3 -0
- data/app/assets/images/jet_ui/icons/exclamation-triangle.svg +3 -0
- data/app/assets/images/jet_ui/icons/eye-dropper.svg +3 -0
- data/app/assets/images/jet_ui/icons/eye-slash.svg +3 -0
- data/app/assets/images/jet_ui/icons/eye.svg +4 -0
- data/app/assets/images/jet_ui/icons/face-frown.svg +3 -0
- data/app/assets/images/jet_ui/icons/face-smile.svg +3 -0
- data/app/assets/images/jet_ui/icons/film.svg +3 -0
- data/app/assets/images/jet_ui/icons/finger-print.svg +3 -0
- data/app/assets/images/jet_ui/icons/fire.svg +4 -0
- data/app/assets/images/jet_ui/icons/flag.svg +3 -0
- data/app/assets/images/jet_ui/icons/folder-arrow-down.svg +3 -0
- data/app/assets/images/jet_ui/icons/folder-minus.svg +3 -0
- data/app/assets/images/jet_ui/icons/folder-open.svg +3 -0
- data/app/assets/images/jet_ui/icons/folder-plus.svg +3 -0
- data/app/assets/images/jet_ui/icons/folder.svg +3 -0
- data/app/assets/images/jet_ui/icons/forward.svg +4 -0
- data/app/assets/images/jet_ui/icons/funnel.svg +3 -0
- data/app/assets/images/jet_ui/icons/gif.svg +3 -0
- data/app/assets/images/jet_ui/icons/gift-top.svg +3 -0
- data/app/assets/images/jet_ui/icons/gift.svg +3 -0
- data/app/assets/images/jet_ui/icons/github.svg +10 -0
- data/app/assets/images/jet_ui/icons/globe-alt.svg +3 -0
- data/app/assets/images/jet_ui/icons/globe-americas.svg +3 -0
- data/app/assets/images/jet_ui/icons/globe-asia-australia.svg +3 -0
- data/app/assets/images/jet_ui/icons/globe-europe-africa.svg +3 -0
- data/app/assets/images/jet_ui/icons/h1.svg +3 -0
- data/app/assets/images/jet_ui/icons/h2.svg +3 -0
- data/app/assets/images/jet_ui/icons/h3.svg +3 -0
- data/app/assets/images/jet_ui/icons/hand-raised.svg +3 -0
- data/app/assets/images/jet_ui/icons/hand-thumb-down.svg +3 -0
- data/app/assets/images/jet_ui/icons/hand-thumb-up.svg +3 -0
- data/app/assets/images/jet_ui/icons/hashtag.svg +3 -0
- data/app/assets/images/jet_ui/icons/heart.svg +3 -0
- data/app/assets/images/jet_ui/icons/home-modern.svg +3 -0
- data/app/assets/images/jet_ui/icons/home.svg +3 -0
- data/app/assets/images/jet_ui/icons/identification.svg +3 -0
- data/app/assets/images/jet_ui/icons/inbox-arrow-down.svg +3 -0
- data/app/assets/images/jet_ui/icons/inbox-stack.svg +3 -0
- data/app/assets/images/jet_ui/icons/inbox.svg +3 -0
- data/app/assets/images/jet_ui/icons/information-circle.svg +3 -0
- data/app/assets/images/jet_ui/icons/italic.svg +3 -0
- data/app/assets/images/jet_ui/icons/key.svg +3 -0
- data/app/assets/images/jet_ui/icons/language.svg +3 -0
- data/app/assets/images/jet_ui/icons/lifebuoy.svg +3 -0
- data/app/assets/images/jet_ui/icons/light-bulb.svg +3 -0
- data/app/assets/images/jet_ui/icons/link-slash.svg +3 -0
- data/app/assets/images/jet_ui/icons/link.svg +3 -0
- data/app/assets/images/jet_ui/icons/list-bullet.svg +3 -0
- data/app/assets/images/jet_ui/icons/lock-closed.svg +3 -0
- data/app/assets/images/jet_ui/icons/lock-open.svg +3 -0
- data/app/assets/images/jet_ui/icons/magnifying-glass-circle.svg +3 -0
- data/app/assets/images/jet_ui/icons/magnifying-glass-minus.svg +3 -0
- data/app/assets/images/jet_ui/icons/magnifying-glass-plus.svg +3 -0
- data/app/assets/images/jet_ui/icons/magnifying-glass.svg +3 -0
- data/app/assets/images/jet_ui/icons/map-pin.svg +4 -0
- data/app/assets/images/jet_ui/icons/map.svg +3 -0
- data/app/assets/images/jet_ui/icons/megaphone.svg +3 -0
- data/app/assets/images/jet_ui/icons/microphone.svg +3 -0
- data/app/assets/images/jet_ui/icons/minus-circle.svg +3 -0
- data/app/assets/images/jet_ui/icons/minus-small.svg +3 -0
- data/app/assets/images/jet_ui/icons/minus.svg +3 -0
- data/app/assets/images/jet_ui/icons/moon.svg +3 -0
- data/app/assets/images/jet_ui/icons/musical-note.svg +3 -0
- data/app/assets/images/jet_ui/icons/newspaper.svg +3 -0
- data/app/assets/images/jet_ui/icons/no-symbol.svg +3 -0
- data/app/assets/images/jet_ui/icons/numbered-list.svg +3 -0
- data/app/assets/images/jet_ui/icons/paint-brush.svg +3 -0
- data/app/assets/images/jet_ui/icons/paper-airplane.svg +3 -0
- data/app/assets/images/jet_ui/icons/paper-clip.svg +3 -0
- data/app/assets/images/jet_ui/icons/pause-circle.svg +3 -0
- data/app/assets/images/jet_ui/icons/pause.svg +3 -0
- data/app/assets/images/jet_ui/icons/pencil-square.svg +3 -0
- data/app/assets/images/jet_ui/icons/pencil.svg +3 -0
- data/app/assets/images/jet_ui/icons/percent-badge.svg +3 -0
- data/app/assets/images/jet_ui/icons/phone-arrow-down-left.svg +3 -0
- data/app/assets/images/jet_ui/icons/phone-arrow-up-right.svg +3 -0
- data/app/assets/images/jet_ui/icons/phone-x-mark.svg +3 -0
- data/app/assets/images/jet_ui/icons/phone.svg +3 -0
- data/app/assets/images/jet_ui/icons/photo.svg +3 -0
- data/app/assets/images/jet_ui/icons/play-circle.svg +4 -0
- data/app/assets/images/jet_ui/icons/play-pause.svg +3 -0
- data/app/assets/images/jet_ui/icons/play.svg +3 -0
- data/app/assets/images/jet_ui/icons/plus-circle.svg +3 -0
- data/app/assets/images/jet_ui/icons/plus-small.svg +3 -0
- data/app/assets/images/jet_ui/icons/plus.svg +3 -0
- data/app/assets/images/jet_ui/icons/power.svg +3 -0
- data/app/assets/images/jet_ui/icons/presentation-chart-bar.svg +3 -0
- data/app/assets/images/jet_ui/icons/presentation-chart-line.svg +3 -0
- data/app/assets/images/jet_ui/icons/printer.svg +3 -0
- data/app/assets/images/jet_ui/icons/puzzle-piece.svg +3 -0
- data/app/assets/images/jet_ui/icons/qr-code.svg +13 -0
- data/app/assets/images/jet_ui/icons/question-mark-circle.svg +3 -0
- data/app/assets/images/jet_ui/icons/queue-list.svg +3 -0
- data/app/assets/images/jet_ui/icons/radio.svg +3 -0
- data/app/assets/images/jet_ui/icons/receipt-percent.svg +3 -0
- data/app/assets/images/jet_ui/icons/receipt-refund.svg +3 -0
- data/app/assets/images/jet_ui/icons/rectangle-group.svg +5 -0
- data/app/assets/images/jet_ui/icons/rectangle-stack.svg +3 -0
- data/app/assets/images/jet_ui/icons/rocket-launch.svg +3 -0
- data/app/assets/images/jet_ui/icons/rss.svg +3 -0
- data/app/assets/images/jet_ui/icons/scale.svg +3 -0
- data/app/assets/images/jet_ui/icons/scissors.svg +3 -0
- data/app/assets/images/jet_ui/icons/server-stack.svg +3 -0
- data/app/assets/images/jet_ui/icons/server.svg +3 -0
- data/app/assets/images/jet_ui/icons/share.svg +3 -0
- data/app/assets/images/jet_ui/icons/shield-check.svg +3 -0
- data/app/assets/images/jet_ui/icons/shield-exclamation.svg +3 -0
- data/app/assets/images/jet_ui/icons/shopping-bag.svg +3 -0
- data/app/assets/images/jet_ui/icons/shopping-cart.svg +3 -0
- data/app/assets/images/jet_ui/icons/signal-slash.svg +3 -0
- data/app/assets/images/jet_ui/icons/signal.svg +3 -0
- data/app/assets/images/jet_ui/icons/slash.svg +3 -0
- data/app/assets/images/jet_ui/icons/sparkles.svg +5 -0
- data/app/assets/images/jet_ui/icons/speaker-wave.svg +3 -0
- data/app/assets/images/jet_ui/icons/speaker-x-mark.svg +3 -0
- data/app/assets/images/jet_ui/icons/spinner.svg +1 -0
- data/app/assets/images/jet_ui/icons/square-2-stack.svg +3 -0
- data/app/assets/images/jet_ui/icons/square-3-stack-3d.svg +3 -0
- data/app/assets/images/jet_ui/icons/squares-2x2.svg +6 -0
- data/app/assets/images/jet_ui/icons/squares-plus.svg +3 -0
- data/app/assets/images/jet_ui/icons/star.svg +3 -0
- data/app/assets/images/jet_ui/icons/stop-circle.svg +4 -0
- data/app/assets/images/jet_ui/icons/stop.svg +3 -0
- data/app/assets/images/jet_ui/icons/strikethrough.svg +3 -0
- data/app/assets/images/jet_ui/icons/sun.svg +3 -0
- data/app/assets/images/jet_ui/icons/swatch.svg +3 -0
- data/app/assets/images/jet_ui/icons/table-cells.svg +3 -0
- data/app/assets/images/jet_ui/icons/tag.svg +4 -0
- data/app/assets/images/jet_ui/icons/ticket.svg +3 -0
- data/app/assets/images/jet_ui/icons/trash.svg +3 -0
- data/app/assets/images/jet_ui/icons/trophy.svg +3 -0
- data/app/assets/images/jet_ui/icons/truck.svg +3 -0
- data/app/assets/images/jet_ui/icons/tv.svg +3 -0
- data/app/assets/images/jet_ui/icons/underline.svg +3 -0
- data/app/assets/images/jet_ui/icons/user-circle.svg +3 -0
- data/app/assets/images/jet_ui/icons/user-group.svg +3 -0
- data/app/assets/images/jet_ui/icons/user-minus.svg +3 -0
- data/app/assets/images/jet_ui/icons/user-plus.svg +3 -0
- data/app/assets/images/jet_ui/icons/user.svg +4 -0
- data/app/assets/images/jet_ui/icons/users.svg +3 -0
- data/app/assets/images/jet_ui/icons/variable.svg +3 -0
- data/app/assets/images/jet_ui/icons/video-camera-slash.svg +3 -0
- data/app/assets/images/jet_ui/icons/video-camera.svg +3 -0
- data/app/assets/images/jet_ui/icons/view-columns.svg +3 -0
- data/app/assets/images/jet_ui/icons/viewfinder-circle.svg +3 -0
- data/app/assets/images/jet_ui/icons/wallet.svg +3 -0
- data/app/assets/images/jet_ui/icons/wifi.svg +3 -0
- data/app/assets/images/jet_ui/icons/window.svg +3 -0
- data/app/assets/images/jet_ui/icons/wrench-screwdriver.svg +3 -0
- data/app/assets/images/jet_ui/icons/wrench.svg +4 -0
- data/app/assets/images/jet_ui/icons/x-circle.svg +3 -0
- data/app/assets/images/jet_ui/icons/x-mark.svg +3 -0
- data/app/assets/javascripts/jet_ui/clipboard_controller.js +46 -0
- data/app/assets/javascripts/jet_ui/drawer_controller.js +70 -0
- data/app/assets/javascripts/jet_ui/drawers_controller.js +83 -0
- data/app/assets/javascripts/jet_ui/dropdown_controller.js +95 -0
- data/app/assets/javascripts/jet_ui/flash_controller.js +34 -0
- data/app/assets/javascripts/jet_ui/modal_controller.js +35 -0
- data/app/assets/javascripts/jet_ui/modals_controller.js +30 -0
- data/app/assets/javascripts/jet_ui/popover_controller.js +95 -0
- data/app/assets/javascripts/jet_ui/tooltip_controller.js +107 -0
- data/app/assets/javascripts/jet_ui/turbo_confirm_controller.js +25 -0
- data/app/assets/stylesheets/jet_ui/accordion.css +24 -0
- data/app/assets/stylesheets/jet_ui/alert.css +27 -0
- data/app/assets/stylesheets/jet_ui/avatar.css +15 -0
- data/app/assets/stylesheets/jet_ui/badge.css +22 -0
- data/app/assets/stylesheets/jet_ui/breadcrumbs.css +28 -0
- data/app/assets/stylesheets/jet_ui/btn.css +88 -0
- data/app/assets/stylesheets/jet_ui/card.css +61 -0
- data/app/assets/stylesheets/jet_ui/divider.css +21 -0
- data/app/assets/stylesheets/jet_ui/drawer.css +46 -0
- data/app/assets/stylesheets/jet_ui/dropdown.css +33 -0
- data/app/assets/stylesheets/jet_ui/empty.css +25 -0
- data/app/assets/stylesheets/jet_ui/flash.css +50 -0
- data/app/assets/stylesheets/jet_ui/group.css +40 -0
- data/app/assets/stylesheets/jet_ui/header.css +65 -0
- data/app/assets/stylesheets/jet_ui/icon.css +11 -0
- data/app/assets/stylesheets/jet_ui/list.css +31 -0
- data/app/assets/stylesheets/jet_ui/modal.css +47 -0
- data/app/assets/stylesheets/jet_ui/navbar.css +36 -0
- data/app/assets/stylesheets/jet_ui/pagy.css +54 -0
- data/app/assets/stylesheets/jet_ui/popover.css +51 -0
- data/app/assets/stylesheets/jet_ui/sidebar.css +35 -0
- data/app/assets/stylesheets/jet_ui/stat.css +23 -0
- data/app/assets/stylesheets/jet_ui/stepper.css +82 -0
- data/app/assets/stylesheets/jet_ui/table.css +68 -0
- data/app/assets/stylesheets/jet_ui/tabs.css +32 -0
- data/app/assets/stylesheets/jet_ui/theme.css +174 -0
- data/app/assets/stylesheets/jet_ui/timeline.css +45 -0
- data/app/assets/stylesheets/jet_ui/tooltip.css +33 -0
- data/app/assets/stylesheets/jet_ui.css +28 -0
- data/app/components/jet_ui/accordion/body_component.rb +21 -0
- data/app/components/jet_ui/accordion/component.rb +24 -0
- data/app/components/jet_ui/accordion/summary_component.rb +29 -0
- data/app/components/jet_ui/alert/component.rb +29 -0
- data/app/components/jet_ui/alert/description_component.rb +21 -0
- data/app/components/jet_ui/alert/icon_component.rb +21 -0
- data/app/components/jet_ui/alert/title_component.rb +21 -0
- data/app/components/jet_ui/avatar/component.rb +54 -0
- data/app/components/jet_ui/badge/component.rb +35 -0
- data/app/components/jet_ui/base_component.rb +6 -0
- data/app/components/jet_ui/breadcrumbs/component.rb +18 -0
- data/app/components/jet_ui/breadcrumbs/item_component.rb +25 -0
- data/app/components/jet_ui/btn/component.rb +51 -0
- data/app/components/jet_ui/card/body_component.rb +24 -0
- data/app/components/jet_ui/card/component.rb +24 -0
- data/app/components/jet_ui/card/footer_component.rb +48 -0
- data/app/components/jet_ui/card/header_component.rb +48 -0
- data/app/components/jet_ui/card/subtitle_component.rb +24 -0
- data/app/components/jet_ui/card/title_component.rb +24 -0
- data/app/components/jet_ui/clipboard/component.rb +58 -0
- data/app/components/jet_ui/divider/component.rb +30 -0
- data/app/components/jet_ui/drawer/body_component.rb +21 -0
- data/app/components/jet_ui/drawer/component.rb +54 -0
- data/app/components/jet_ui/drawer/footer_component.rb +45 -0
- data/app/components/jet_ui/drawer/header_component.rb +46 -0
- data/app/components/jet_ui/dropdown/button_component.rb +24 -0
- data/app/components/jet_ui/dropdown/component.rb +28 -0
- data/app/components/jet_ui/dropdown/divider_component.rb +21 -0
- data/app/components/jet_ui/dropdown/link_component.rb +29 -0
- data/app/components/jet_ui/dropdown/menu_component.rb +25 -0
- data/app/components/jet_ui/dropdown/title_component.rb +21 -0
- data/app/components/jet_ui/dropdown/trigger_component.rb +28 -0
- data/app/components/jet_ui/empty/actions_component.rb +19 -0
- data/app/components/jet_ui/empty/component.rb +15 -0
- data/app/components/jet_ui/empty/description_component.rb +15 -0
- data/app/components/jet_ui/empty/icon_component.rb +18 -0
- data/app/components/jet_ui/empty/title_component.rb +15 -0
- data/app/components/jet_ui/flash/component.html.erb +14 -0
- data/app/components/jet_ui/flash/component.rb +44 -0
- data/app/components/jet_ui/group/component.rb +26 -0
- data/app/components/jet_ui/header/actions_component.rb +21 -0
- data/app/components/jet_ui/header/component.rb +35 -0
- data/app/components/jet_ui/header/heading_component.rb +21 -0
- data/app/components/jet_ui/header/subtitle_component.rb +21 -0
- data/app/components/jet_ui/header/title_component.rb +21 -0
- data/app/components/jet_ui/icon/component.rb +46 -0
- data/app/components/jet_ui/list/action_component.rb +21 -0
- data/app/components/jet_ui/list/component.rb +29 -0
- data/app/components/jet_ui/list/content_component.rb +21 -0
- data/app/components/jet_ui/list/icon_component.rb +25 -0
- data/app/components/jet_ui/list/item_component.rb +21 -0
- data/app/components/jet_ui/modal/body_component.rb +21 -0
- data/app/components/jet_ui/modal/component.rb +54 -0
- data/app/components/jet_ui/modal/footer_component.rb +45 -0
- data/app/components/jet_ui/modal/header_component.rb +46 -0
- data/app/components/jet_ui/navbar/actions_component.rb +21 -0
- data/app/components/jet_ui/navbar/brand_component.rb +21 -0
- data/app/components/jet_ui/navbar/component.rb +22 -0
- data/app/components/jet_ui/navbar/content_component.rb +21 -0
- data/app/components/jet_ui/navbar/main_component.rb +21 -0
- data/app/components/jet_ui/pagy/component.rb +38 -0
- data/app/components/jet_ui/popover/component.rb +29 -0
- data/app/components/jet_ui/popover/content_component.rb +23 -0
- data/app/components/jet_ui/popover/trigger_component.rb +20 -0
- data/app/components/jet_ui/sidebar/component.rb +27 -0
- data/app/components/jet_ui/sidebar/link_component.rb +44 -0
- data/app/components/jet_ui/sidebar/menu_component.rb +21 -0
- data/app/components/jet_ui/sidebar/section_component.rb +21 -0
- data/app/components/jet_ui/sidebar/title_component.rb +21 -0
- data/app/components/jet_ui/spinner/component.rb +16 -0
- data/app/components/jet_ui/stat/component.rb +21 -0
- data/app/components/jet_ui/stat/description_component.rb +57 -0
- data/app/components/jet_ui/stat/label_component.rb +21 -0
- data/app/components/jet_ui/stat/value_component.rb +21 -0
- data/app/components/jet_ui/stepper/component.rb +18 -0
- data/app/components/jet_ui/stepper/step_component.rb +69 -0
- data/app/components/jet_ui/table/component.rb +37 -0
- data/app/components/jet_ui/table/tbody_component.rb +15 -0
- data/app/components/jet_ui/table/td_component.rb +29 -0
- data/app/components/jet_ui/table/tfoot_component.rb +15 -0
- data/app/components/jet_ui/table/th_component.rb +27 -0
- data/app/components/jet_ui/table/thead_component.rb +15 -0
- data/app/components/jet_ui/table/tr_component.rb +15 -0
- data/app/components/jet_ui/tabs/component.rb +30 -0
- data/app/components/jet_ui/tabs/item_component.rb +34 -0
- data/app/components/jet_ui/timeline/component.rb +15 -0
- data/app/components/jet_ui/timeline/content_component.rb +15 -0
- data/app/components/jet_ui/timeline/dot_component.rb +37 -0
- data/app/components/jet_ui/timeline/item_component.rb +15 -0
- data/app/components/jet_ui/timeline/time_component.rb +15 -0
- data/app/components/jet_ui/tooltip/component.rb +34 -0
- data/app/components/jet_ui/turbo_confirm/component.html.erb +20 -0
- data/app/components/jet_ui/turbo_confirm/component.rb +8 -0
- data/app/helpers/jet_ui_helper.rb +37 -0
- data/lib/generators/jet_ui/eject/USAGE +20 -0
- data/lib/generators/jet_ui/eject/eject_generator.rb +376 -0
- data/lib/generators/jet_ui/install/USAGE +11 -0
- data/lib/generators/jet_ui/install/install_generator.rb +121 -0
- data/lib/jet_ui/engine.rb +32 -0
- data/lib/jet_ui/version.rb +5 -0
- data/lib/jet_ui.rb +5 -0
- metadata +667 -0
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module JetUi
|
|
4
|
+
module Stat
|
|
5
|
+
class DescriptionComponent < BaseComponent
|
|
6
|
+
VARIANTS = %i[default success warning error].freeze
|
|
7
|
+
DEFAULT_VARIANT = :default
|
|
8
|
+
|
|
9
|
+
TRENDING_UP_PATH = 'M2.25 17.9999L9 11.2499L13.3064 15.5564C14.5101 13.188 16.5042 ' \
|
|
10
|
+
'11.2022 19.1203 10.0375L21.8609 8.81726M21.8609 8.81726L15.9196 ' \
|
|
11
|
+
'6.53662M21.8609 8.81726L19.5802 14.7585'
|
|
12
|
+
TRENDING_DOWN_PATH = 'M2.25 6L9 12.75L13.2862 8.46383C15.3217 10.0166 16.8781 12.23 ' \
|
|
13
|
+
'17.5919 14.8941L18.3684 17.7919M18.3684 17.7919L21.5504 ' \
|
|
14
|
+
'12.2806M18.3684 17.7919L12.857 14.6099'
|
|
15
|
+
|
|
16
|
+
def initialize(variant: DEFAULT_VARIANT, **options)
|
|
17
|
+
@variant = VARIANTS.include?(variant) ? variant : DEFAULT_VARIANT
|
|
18
|
+
@options = options
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def call
|
|
22
|
+
content_tag :p, class: classes, **@options do
|
|
23
|
+
safe_join([trend_icon, content].compact)
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
private
|
|
28
|
+
|
|
29
|
+
def classes
|
|
30
|
+
class_names(
|
|
31
|
+
'stat__description',
|
|
32
|
+
variant_class,
|
|
33
|
+
@options.delete(:class)
|
|
34
|
+
)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def variant_class
|
|
38
|
+
return nil if @variant == :default
|
|
39
|
+
|
|
40
|
+
"stat__description--#{@variant}"
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def trend_icon
|
|
44
|
+
return nil if @variant == :default
|
|
45
|
+
|
|
46
|
+
path = @variant == :success ? TRENDING_UP_PATH : TRENDING_DOWN_PATH
|
|
47
|
+
tag.svg(
|
|
48
|
+
tag.path(d: path, stroke: 'currentColor', 'stroke-width': '1.5',
|
|
49
|
+
'stroke-linecap': 'round', 'stroke-linejoin': 'round'),
|
|
50
|
+
width: '16', height: '16', viewBox: '0 0 24 24',
|
|
51
|
+
fill: 'none', xmlns: 'http://www.w3.org/2000/svg',
|
|
52
|
+
'aria-hidden': 'true'
|
|
53
|
+
)
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module JetUi
|
|
4
|
+
module Stat
|
|
5
|
+
class LabelComponent < BaseComponent
|
|
6
|
+
def initialize(**options)
|
|
7
|
+
@options = options
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def call
|
|
11
|
+
content_tag :p, content, class: classes, **@options
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
private
|
|
15
|
+
|
|
16
|
+
def classes
|
|
17
|
+
class_names('stat__label', @options.delete(:class))
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module JetUi
|
|
4
|
+
module Stat
|
|
5
|
+
class ValueComponent < BaseComponent
|
|
6
|
+
def initialize(**options)
|
|
7
|
+
@options = options
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def call
|
|
11
|
+
content_tag :p, content, class: classes, **@options
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
private
|
|
15
|
+
|
|
16
|
+
def classes
|
|
17
|
+
class_names('stat__value', @options.delete(:class))
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module JetUi
|
|
4
|
+
module Stepper
|
|
5
|
+
class Component < BaseComponent
|
|
6
|
+
def initialize(**options)
|
|
7
|
+
@options = options
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def call
|
|
11
|
+
content_tag :nav, class: class_names('stepper', @options.delete(:class)), 'aria-label': 'Progress',
|
|
12
|
+
**@options do
|
|
13
|
+
content_tag :ol, content, class: 'stepper__list'
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module JetUi
|
|
4
|
+
module Stepper
|
|
5
|
+
class StepComponent < BaseComponent
|
|
6
|
+
STATUSES = %i[pending current completed].freeze
|
|
7
|
+
DEFAULT_STATUS = :pending
|
|
8
|
+
|
|
9
|
+
def initialize(text = nil, status: DEFAULT_STATUS, number: nil, icon: nil, description: nil, url: nil, **options)
|
|
10
|
+
@text = text
|
|
11
|
+
@status = STATUSES.include?(status) ? status : DEFAULT_STATUS
|
|
12
|
+
@number = number
|
|
13
|
+
@icon = icon
|
|
14
|
+
@description = description
|
|
15
|
+
@url = url
|
|
16
|
+
@options = options
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def call
|
|
20
|
+
content_tag :li, class: item_classes, **@options do
|
|
21
|
+
if @url && @status != :pending
|
|
22
|
+
content_tag(:a, href: @url, class: 'stepper__link') { inner_content }
|
|
23
|
+
else
|
|
24
|
+
inner_content
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
private
|
|
30
|
+
|
|
31
|
+
def inner_content
|
|
32
|
+
safe_join([indicator, step_content])
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def indicator
|
|
36
|
+
content_tag(:div, class: 'stepper__indicator') { indicator_inner }
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def indicator_inner
|
|
40
|
+
if @status == :completed && !@icon
|
|
41
|
+
render(JetUi::Icon::Component.new('check', size: 5))
|
|
42
|
+
elsif @icon
|
|
43
|
+
render(JetUi::Icon::Component.new(@icon, size: 5))
|
|
44
|
+
elsif @number
|
|
45
|
+
content_tag(:span, @number.to_s, class: 'stepper__number')
|
|
46
|
+
else
|
|
47
|
+
content_tag(:span, nil, class: 'stepper__dot')
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def step_content
|
|
52
|
+
content_tag(:div, class: 'stepper__content') do
|
|
53
|
+
parts = [content_tag(:span, @text || content, class: 'stepper__title')]
|
|
54
|
+
parts << content_tag(:span, @description, class: 'stepper__description') if @description
|
|
55
|
+
safe_join(parts)
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def item_classes
|
|
60
|
+
class_names(
|
|
61
|
+
'stepper__item',
|
|
62
|
+
"stepper__item-#{@status}",
|
|
63
|
+
{ 'stepper__item-has-url': @url.present? },
|
|
64
|
+
@options.delete(:class)
|
|
65
|
+
)
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
end
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module JetUi
|
|
4
|
+
module Table
|
|
5
|
+
class Component < BaseComponent
|
|
6
|
+
SIZES = %i[xs sm md lg].freeze
|
|
7
|
+
DEFAULT_SIZE = :md
|
|
8
|
+
|
|
9
|
+
def initialize(bordered: false, full: true, size: DEFAULT_SIZE, hovered: false, **options)
|
|
10
|
+
@bordered = bordered
|
|
11
|
+
@full = full
|
|
12
|
+
@size = SIZES.include?(size) ? size : DEFAULT_SIZE
|
|
13
|
+
@hovered = hovered
|
|
14
|
+
@options = options
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def call
|
|
18
|
+
content_tag :div, class: 'scroller scroller-x' do
|
|
19
|
+
content_tag :table, content, class: classes, **@options
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
private
|
|
24
|
+
|
|
25
|
+
def classes
|
|
26
|
+
class_names(
|
|
27
|
+
'table',
|
|
28
|
+
"table-#{@size}",
|
|
29
|
+
{ 'table-bordered': @bordered },
|
|
30
|
+
{ 'table-full': @full },
|
|
31
|
+
{ 'table-hovered': @hovered },
|
|
32
|
+
@options.delete(:class)
|
|
33
|
+
)
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module JetUi
|
|
4
|
+
module Table
|
|
5
|
+
class TbodyComponent < BaseComponent
|
|
6
|
+
def initialize(**options)
|
|
7
|
+
@options = options
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def call
|
|
11
|
+
content_tag :tbody, content, class: @options.delete(:class), **@options
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module JetUi
|
|
4
|
+
module Table
|
|
5
|
+
class TdComponent < BaseComponent
|
|
6
|
+
def initialize(actions: false, sticky: nil, **options)
|
|
7
|
+
@actions = actions
|
|
8
|
+
@sticky = sticky
|
|
9
|
+
@options = options
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def call
|
|
13
|
+
content_tag :td, content, class: classes, **@options
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
private
|
|
17
|
+
|
|
18
|
+
def classes
|
|
19
|
+
class_names(
|
|
20
|
+
@options.delete(:class),
|
|
21
|
+
{ table__actions: @actions },
|
|
22
|
+
{ table__td_sticky: @sticky },
|
|
23
|
+
{ 'table__td_sticky-left': @sticky == :left },
|
|
24
|
+
{ 'table__td_sticky-right': @sticky == :right }
|
|
25
|
+
)
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module JetUi
|
|
4
|
+
module Table
|
|
5
|
+
class TfootComponent < BaseComponent
|
|
6
|
+
def initialize(**options)
|
|
7
|
+
@options = options
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def call
|
|
11
|
+
content_tag :tfoot, content, class: @options.delete(:class), **@options
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module JetUi
|
|
4
|
+
module Table
|
|
5
|
+
class ThComponent < BaseComponent
|
|
6
|
+
def initialize(sticky: nil, **options)
|
|
7
|
+
@sticky = sticky
|
|
8
|
+
@options = options
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def call
|
|
12
|
+
content_tag :th, content, class: classes, **@options
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
private
|
|
16
|
+
|
|
17
|
+
def classes
|
|
18
|
+
class_names(
|
|
19
|
+
@options.delete(:class),
|
|
20
|
+
{ table__th_sticky: @sticky },
|
|
21
|
+
{ 'table__th_sticky-left': @sticky == :left },
|
|
22
|
+
{ 'table__th_sticky-right': @sticky == :right }
|
|
23
|
+
)
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module JetUi
|
|
4
|
+
module Table
|
|
5
|
+
class TheadComponent < BaseComponent
|
|
6
|
+
def initialize(**options)
|
|
7
|
+
@options = options
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def call
|
|
11
|
+
content_tag :thead, content, class: @options.delete(:class), **@options
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module JetUi
|
|
4
|
+
module Table
|
|
5
|
+
class TrComponent < BaseComponent
|
|
6
|
+
def initialize(**options)
|
|
7
|
+
@options = options
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def call
|
|
11
|
+
content_tag :tr, content, class: @options.delete(:class), **@options
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module JetUi
|
|
4
|
+
module Tabs
|
|
5
|
+
class Component < BaseComponent
|
|
6
|
+
VARIANTS = %i[pill underline].freeze
|
|
7
|
+
DEFAULT_VARIANT = :pill
|
|
8
|
+
|
|
9
|
+
def initialize(variant: DEFAULT_VARIANT, **options)
|
|
10
|
+
@variant = VARIANTS.include?(variant) ? variant : DEFAULT_VARIANT
|
|
11
|
+
@options = options
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def call
|
|
15
|
+
content_tag :div, class: wrapper_classes do
|
|
16
|
+
content_tag :ul, content, class: class_names('tabs__list', @options.delete(:class))
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
private
|
|
21
|
+
|
|
22
|
+
def wrapper_classes
|
|
23
|
+
class_names(
|
|
24
|
+
'tabs',
|
|
25
|
+
{ 'tabs--underline': @variant == :underline }
|
|
26
|
+
)
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module JetUi
|
|
4
|
+
module Tabs
|
|
5
|
+
class ItemComponent < BaseComponent
|
|
6
|
+
def initialize(label = nil, href:, icon: nil, active: false, **options)
|
|
7
|
+
@label = label
|
|
8
|
+
@href = href
|
|
9
|
+
@icon = icon
|
|
10
|
+
@active = active
|
|
11
|
+
@options = options
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def call
|
|
15
|
+
content_tag :li, class: 'tabs__item' do
|
|
16
|
+
link_to @href, class: link_classes, **@options do
|
|
17
|
+
concat render(JetUi::Icon::Component.new(@icon, size: 4)) if @icon
|
|
18
|
+
concat(@label.presence || content)
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
private
|
|
24
|
+
|
|
25
|
+
def link_classes
|
|
26
|
+
class_names(
|
|
27
|
+
'tabs__link',
|
|
28
|
+
{ 'tabs__link--active': @active },
|
|
29
|
+
@options.delete(:class)
|
|
30
|
+
)
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module JetUi
|
|
4
|
+
module Timeline
|
|
5
|
+
class Component < BaseComponent
|
|
6
|
+
def initialize(**options)
|
|
7
|
+
@options = options
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def call
|
|
11
|
+
content_tag :div, content, class: class_names('timeline', @options.delete(:class)), **@options
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module JetUi
|
|
4
|
+
module Timeline
|
|
5
|
+
class ContentComponent < BaseComponent
|
|
6
|
+
def initialize(**options)
|
|
7
|
+
@options = options
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def call
|
|
11
|
+
content_tag :div, content, class: class_names('timeline-content', @options.delete(:class)), **@options
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module JetUi
|
|
4
|
+
module Timeline
|
|
5
|
+
class DotComponent < BaseComponent
|
|
6
|
+
VARIANTS = %i[default info success warning error].freeze
|
|
7
|
+
DEFAULT_VARIANT = :default
|
|
8
|
+
|
|
9
|
+
def initialize(variant: DEFAULT_VARIANT, icon: nil, **options)
|
|
10
|
+
@variant = VARIANTS.include?(variant) ? variant : DEFAULT_VARIANT
|
|
11
|
+
@icon = icon
|
|
12
|
+
@options = options
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def call
|
|
16
|
+
content_tag :div, icon_content, class: classes, **@options
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
private
|
|
20
|
+
|
|
21
|
+
def icon_content
|
|
22
|
+
return unless @icon
|
|
23
|
+
|
|
24
|
+
render(JetUi::Icon::Component.new(@icon, size: 4))
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def classes
|
|
28
|
+
class_names(
|
|
29
|
+
'timeline-dot',
|
|
30
|
+
"timeline-dot-#{@variant}",
|
|
31
|
+
{ 'timeline-dot-icon': @icon.present? },
|
|
32
|
+
@options.delete(:class)
|
|
33
|
+
)
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module JetUi
|
|
4
|
+
module Timeline
|
|
5
|
+
class ItemComponent < BaseComponent
|
|
6
|
+
def initialize(**options)
|
|
7
|
+
@options = options
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def call
|
|
11
|
+
content_tag :div, content, class: class_names('timeline-item', @options.delete(:class)), **@options
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module JetUi
|
|
4
|
+
module Timeline
|
|
5
|
+
class TimeComponent < BaseComponent
|
|
6
|
+
def initialize(**options)
|
|
7
|
+
@options = options
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def call
|
|
11
|
+
content_tag :time, content, class: class_names('timeline-time', @options.delete(:class)), **@options
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module JetUi
|
|
4
|
+
module Tooltip
|
|
5
|
+
class Component < JetUi::BaseComponent
|
|
6
|
+
def initialize(title:, as: nil, placement: :top, **options)
|
|
7
|
+
@as = as
|
|
8
|
+
@title = title
|
|
9
|
+
@placement = placement
|
|
10
|
+
@options = options
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def call
|
|
14
|
+
if @as
|
|
15
|
+
helpers.jet_ui.public_send(@as, **attrs) { content }
|
|
16
|
+
else
|
|
17
|
+
content_tag :span, content, class: 'w-fit', **attrs
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
private
|
|
22
|
+
|
|
23
|
+
def attrs
|
|
24
|
+
data_attributes = {
|
|
25
|
+
controller: 'tooltip',
|
|
26
|
+
tooltip_content_value: @title,
|
|
27
|
+
tooltip_placement_value: @placement
|
|
28
|
+
}.deep_merge(@options.fetch(:data, {}))
|
|
29
|
+
|
|
30
|
+
@options.except(:data).merge(data: data_attributes)
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
<dialog id="turbo-confirm" tabindex="-1"
|
|
2
|
+
class="modal w-2xl animate-slide-up"
|
|
3
|
+
data-controller="turbo-confirm">
|
|
4
|
+
<form method="dialog">
|
|
5
|
+
<div class="modal__header modal__header-bordered">
|
|
6
|
+
<div>
|
|
7
|
+
<h3 class="modal__title">Are you absolutely sure?</h3>
|
|
8
|
+
</div>
|
|
9
|
+
</div>
|
|
10
|
+
|
|
11
|
+
<div class="modal__body">
|
|
12
|
+
<p>This cannot be undone.</p>
|
|
13
|
+
</div>
|
|
14
|
+
|
|
15
|
+
<div class="modal__footer modal__footer-bordered flex flex-row gap-2 items-start justify-end">
|
|
16
|
+
<%= helpers.jet_ui.btn "Cancel", type: :submit, variant: :outline, value: "cancel" %>
|
|
17
|
+
<%= helpers.jet_ui.btn "Yes, I'm sure", type: :submit, variant: :danger, value: "confirm" %>
|
|
18
|
+
</div>
|
|
19
|
+
</form>
|
|
20
|
+
</dialog>
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module JetUiHelper
|
|
4
|
+
def jet_ui
|
|
5
|
+
@jet_ui ||= JetUi::Builder.new(self)
|
|
6
|
+
end
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
module JetUi
|
|
10
|
+
class Builder
|
|
11
|
+
def initialize(view_context)
|
|
12
|
+
@view = view_context
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def method_missing(name, *args, **kwargs, &block)
|
|
16
|
+
component_class = resolve_component(name)
|
|
17
|
+
content = args.shift if args.first.is_a?(String)
|
|
18
|
+
instance = component_class.new(*args, **kwargs)
|
|
19
|
+
content ? @view.render(instance) { content } : @view.render(instance, &block)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def respond_to_missing?(name, include_private = false)
|
|
23
|
+
resolve_component(name)
|
|
24
|
+
true
|
|
25
|
+
rescue NameError
|
|
26
|
+
super
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
private
|
|
30
|
+
|
|
31
|
+
def resolve_component(name)
|
|
32
|
+
parts = name.to_s.split('_')
|
|
33
|
+
"JetUi::#{name.to_s.camelize}::Component".safe_constantize ||
|
|
34
|
+
"JetUi::#{parts.first.camelize}::#{parts.drop(1).map(&:camelize).join}Component".constantize
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
Description:
|
|
2
|
+
Ejects one or more JetUi components into your application so they can
|
|
3
|
+
be customised locally. The ejected files take precedence over the gem's
|
|
4
|
+
built-in versions, similar to how `rails generate devise:views` works.
|
|
5
|
+
|
|
6
|
+
For components that include a Stimulus controller (e.g. flash), the JS
|
|
7
|
+
file is also ejected alongside the Ruby and CSS files.
|
|
8
|
+
|
|
9
|
+
Available components:
|
|
10
|
+
btn, card, icon, spinner, avatar, breadcrumbs, tabs, empty, list,
|
|
11
|
+
divider, timeline, stepper, table, pagy, flash
|
|
12
|
+
|
|
13
|
+
Examples:
|
|
14
|
+
rails generate jet_ui:eject btn
|
|
15
|
+
rails generate jet_ui:eject flash
|
|
16
|
+
rails generate jet_ui:eject btn card flash
|
|
17
|
+
rails generate jet_ui:eject btn --skip-test
|
|
18
|
+
rails generate jet_ui:eject btn --skip-preview
|
|
19
|
+
rails generate jet_ui:eject flash --skip-javascript
|
|
20
|
+
rails generate jet_ui:eject btn --skip-test --skip-preview
|