jquard 0.0.1 → 0.2.0
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 +4 -4
- data/CHANGELOG.md +22 -5
- data/README.md +354 -11
- data/Rakefile +17 -0
- data/app/assets/javascripts/jquard/application.js +46 -0
- data/app/assets/stylesheets/jquard/application.css +2 -15
- data/app/components/jquard/application_component.rb +4 -0
- data/app/components/jquard/schemas/field_wrapper_component.html.erb +20 -0
- data/app/components/jquard/schemas/field_wrapper_component.rb +40 -0
- data/app/components/jquard/schemas/fields/checkbox_component.html.erb +3 -0
- data/app/components/jquard/schemas/fields/checkbox_component.rb +8 -0
- data/app/components/jquard/schemas/fields/date_picker_component.html.erb +3 -0
- data/app/components/jquard/schemas/fields/date_picker_component.rb +8 -0
- data/app/components/jquard/schemas/fields/date_time_picker_component.html.erb +3 -0
- data/app/components/jquard/schemas/fields/date_time_picker_component.rb +8 -0
- data/app/components/jquard/schemas/fields/field_component.rb +38 -0
- data/app/components/jquard/schemas/fields/hidden_component.rb +11 -0
- data/app/components/jquard/schemas/fields/select_component.html.erb +5 -0
- data/app/components/jquard/schemas/fields/select_component.rb +8 -0
- data/app/components/jquard/schemas/fields/text_input_component.html.erb +3 -0
- data/app/components/jquard/schemas/fields/text_input_component.rb +13 -0
- data/app/components/jquard/schemas/fields/textarea_component.html.erb +3 -0
- data/app/components/jquard/schemas/fields/textarea_component.rb +8 -0
- data/app/components/jquard/schemas/fields/toggle_component.html.erb +6 -0
- data/app/components/jquard/schemas/fields/toggle_component.rb +8 -0
- data/app/components/jquard/schemas/form_component.html.erb +10 -0
- data/app/components/jquard/schemas/form_component.rb +31 -0
- data/app/components/jquard/schemas/layouts/grid_component.html.erb +5 -0
- data/app/components/jquard/schemas/layouts/grid_component.rb +21 -0
- data/app/components/jquard/schemas/layouts/section_component.html.erb +18 -0
- data/app/components/jquard/schemas/layouts/section_component.rb +21 -0
- data/app/components/jquard/tables/actions/delete_action_component.html.erb +11 -0
- data/app/components/jquard/tables/actions/delete_action_component.rb +21 -0
- data/app/components/jquard/tables/actions/edit_action_component.html.erb +5 -0
- data/app/components/jquard/tables/actions/edit_action_component.rb +17 -0
- data/app/components/jquard/tables/columns/icon_column_component.html.erb +6 -0
- data/app/components/jquard/tables/columns/icon_column_component.rb +20 -0
- data/app/components/jquard/tables/columns/text_column_component.html.erb +5 -0
- data/app/components/jquard/tables/columns/text_column_component.rb +24 -0
- data/app/components/jquard/tables/table_component.html.erb +113 -0
- data/app/components/jquard/tables/table_component.rb +55 -0
- data/app/controllers/concerns/jquard/auth_layout.rb +11 -0
- data/app/controllers/jquard/application_controller.rb +16 -0
- data/app/controllers/jquard/resources_controller.rb +93 -0
- data/app/helpers/jquard/application_helper.rb +46 -0
- data/app/views/devise/confirmations/new.html.erb +14 -0
- data/app/views/devise/passwords/edit.html.erb +21 -0
- data/app/views/devise/passwords/new.html.erb +16 -0
- data/app/views/devise/registrations/edit.html.erb +45 -0
- data/app/views/devise/registrations/new.html.erb +29 -0
- data/app/views/devise/sessions/new.html.erb +33 -0
- data/app/views/devise/shared/_error_messages.html.erb +15 -0
- data/app/views/devise/shared/_links.html.erb +27 -0
- data/app/views/devise/unlocks/new.html.erb +14 -0
- data/app/views/jquard/_breadcrumbs.html.erb +17 -0
- data/app/views/jquard/_user_menu.html.erb +23 -0
- data/app/views/jquard/resources/edit.html.erb +8 -0
- data/app/views/jquard/resources/index.html.erb +22 -0
- data/app/views/jquard/resources/new.html.erb +8 -0
- data/app/views/layouts/jquard/application.html.erb +66 -4
- data/app/views/layouts/jquard/auth.html.erb +44 -0
- data/config/routes.rb +13 -0
- data/lib/generators/jquard/install/install_generator.rb +33 -0
- data/lib/generators/jquard/install/templates/initializer.rb.tt +20 -0
- data/lib/generators/jquard/resource/resource_generator.rb +104 -0
- data/lib/generators/jquard/resource/templates/create_page.rb.tt +10 -0
- data/lib/generators/jquard/resource/templates/edit_page.rb.tt +10 -0
- data/lib/generators/jquard/resource/templates/form.rb.tt +19 -0
- data/lib/generators/jquard/resource/templates/list_page.rb.tt +10 -0
- data/lib/generators/jquard/resource/templates/resource.rb.tt +25 -0
- data/lib/generators/jquard/resource/templates/table.rb.tt +20 -0
- data/lib/jquard/component_dispatch.rb +7 -0
- data/lib/jquard/configuration.rb +52 -0
- data/lib/jquard/engine.rb +20 -0
- data/lib/jquard/icons/LICENSE +21 -0
- data/lib/jquard/icons/outline/academic-cap.svg +3 -0
- data/lib/jquard/icons/outline/adjustments-horizontal.svg +3 -0
- data/lib/jquard/icons/outline/adjustments-vertical.svg +3 -0
- data/lib/jquard/icons/outline/archive-box-arrow-down.svg +3 -0
- data/lib/jquard/icons/outline/archive-box-x-mark.svg +3 -0
- data/lib/jquard/icons/outline/archive-box.svg +3 -0
- data/lib/jquard/icons/outline/arrow-down-circle.svg +3 -0
- data/lib/jquard/icons/outline/arrow-down-left.svg +3 -0
- data/lib/jquard/icons/outline/arrow-down-on-square-stack.svg +3 -0
- data/lib/jquard/icons/outline/arrow-down-on-square.svg +3 -0
- data/lib/jquard/icons/outline/arrow-down-right.svg +3 -0
- data/lib/jquard/icons/outline/arrow-down-tray.svg +3 -0
- data/lib/jquard/icons/outline/arrow-down.svg +3 -0
- data/lib/jquard/icons/outline/arrow-left-circle.svg +3 -0
- data/lib/jquard/icons/outline/arrow-left-end-on-rectangle.svg +3 -0
- data/lib/jquard/icons/outline/arrow-left-on-rectangle.svg +3 -0
- data/lib/jquard/icons/outline/arrow-left-start-on-rectangle.svg +3 -0
- data/lib/jquard/icons/outline/arrow-left.svg +3 -0
- data/lib/jquard/icons/outline/arrow-long-down.svg +3 -0
- data/lib/jquard/icons/outline/arrow-long-left.svg +3 -0
- data/lib/jquard/icons/outline/arrow-long-right.svg +3 -0
- data/lib/jquard/icons/outline/arrow-long-up.svg +3 -0
- data/lib/jquard/icons/outline/arrow-path-rounded-square.svg +3 -0
- data/lib/jquard/icons/outline/arrow-path.svg +3 -0
- data/lib/jquard/icons/outline/arrow-right-circle.svg +3 -0
- data/lib/jquard/icons/outline/arrow-right-end-on-rectangle.svg +3 -0
- data/lib/jquard/icons/outline/arrow-right-on-rectangle.svg +3 -0
- data/lib/jquard/icons/outline/arrow-right-start-on-rectangle.svg +3 -0
- data/lib/jquard/icons/outline/arrow-right.svg +3 -0
- data/lib/jquard/icons/outline/arrow-small-down.svg +3 -0
- data/lib/jquard/icons/outline/arrow-small-left.svg +3 -0
- data/lib/jquard/icons/outline/arrow-small-right.svg +3 -0
- data/lib/jquard/icons/outline/arrow-small-up.svg +3 -0
- data/lib/jquard/icons/outline/arrow-top-right-on-square.svg +3 -0
- data/lib/jquard/icons/outline/arrow-trending-down.svg +3 -0
- data/lib/jquard/icons/outline/arrow-trending-up.svg +3 -0
- data/lib/jquard/icons/outline/arrow-turn-down-left.svg +3 -0
- data/lib/jquard/icons/outline/arrow-turn-down-right.svg +3 -0
- data/lib/jquard/icons/outline/arrow-turn-left-down.svg +3 -0
- data/lib/jquard/icons/outline/arrow-turn-left-up.svg +3 -0
- data/lib/jquard/icons/outline/arrow-turn-right-down.svg +3 -0
- data/lib/jquard/icons/outline/arrow-turn-right-up.svg +3 -0
- data/lib/jquard/icons/outline/arrow-turn-up-left.svg +3 -0
- data/lib/jquard/icons/outline/arrow-turn-up-right.svg +3 -0
- data/lib/jquard/icons/outline/arrow-up-circle.svg +3 -0
- data/lib/jquard/icons/outline/arrow-up-left.svg +3 -0
- data/lib/jquard/icons/outline/arrow-up-on-square-stack.svg +3 -0
- data/lib/jquard/icons/outline/arrow-up-on-square.svg +3 -0
- data/lib/jquard/icons/outline/arrow-up-right.svg +3 -0
- data/lib/jquard/icons/outline/arrow-up-tray.svg +3 -0
- data/lib/jquard/icons/outline/arrow-up.svg +3 -0
- data/lib/jquard/icons/outline/arrow-uturn-down.svg +3 -0
- data/lib/jquard/icons/outline/arrow-uturn-left.svg +3 -0
- data/lib/jquard/icons/outline/arrow-uturn-right.svg +3 -0
- data/lib/jquard/icons/outline/arrow-uturn-up.svg +3 -0
- data/lib/jquard/icons/outline/arrows-pointing-in.svg +3 -0
- data/lib/jquard/icons/outline/arrows-pointing-out.svg +3 -0
- data/lib/jquard/icons/outline/arrows-right-left.svg +3 -0
- data/lib/jquard/icons/outline/arrows-up-down.svg +3 -0
- data/lib/jquard/icons/outline/at-symbol.svg +3 -0
- data/lib/jquard/icons/outline/backspace.svg +3 -0
- data/lib/jquard/icons/outline/backward.svg +3 -0
- data/lib/jquard/icons/outline/banknotes.svg +3 -0
- data/lib/jquard/icons/outline/bars-2.svg +3 -0
- data/lib/jquard/icons/outline/bars-3-bottom-left.svg +3 -0
- data/lib/jquard/icons/outline/bars-3-bottom-right.svg +3 -0
- data/lib/jquard/icons/outline/bars-3-center-left.svg +3 -0
- data/lib/jquard/icons/outline/bars-3.svg +3 -0
- data/lib/jquard/icons/outline/bars-4.svg +3 -0
- data/lib/jquard/icons/outline/bars-arrow-down.svg +3 -0
- data/lib/jquard/icons/outline/bars-arrow-up.svg +3 -0
- data/lib/jquard/icons/outline/battery-0.svg +3 -0
- data/lib/jquard/icons/outline/battery-100.svg +3 -0
- data/lib/jquard/icons/outline/battery-50.svg +3 -0
- data/lib/jquard/icons/outline/beaker.svg +3 -0
- data/lib/jquard/icons/outline/bell-alert.svg +3 -0
- data/lib/jquard/icons/outline/bell-slash.svg +3 -0
- data/lib/jquard/icons/outline/bell-snooze.svg +3 -0
- data/lib/jquard/icons/outline/bell.svg +3 -0
- data/lib/jquard/icons/outline/bold.svg +3 -0
- data/lib/jquard/icons/outline/bolt-slash.svg +3 -0
- data/lib/jquard/icons/outline/bolt.svg +3 -0
- data/lib/jquard/icons/outline/book-open.svg +3 -0
- data/lib/jquard/icons/outline/bookmark-slash.svg +3 -0
- data/lib/jquard/icons/outline/bookmark-square.svg +3 -0
- data/lib/jquard/icons/outline/bookmark.svg +3 -0
- data/lib/jquard/icons/outline/briefcase.svg +3 -0
- data/lib/jquard/icons/outline/bug-ant.svg +3 -0
- data/lib/jquard/icons/outline/building-library.svg +3 -0
- data/lib/jquard/icons/outline/building-office-2.svg +3 -0
- data/lib/jquard/icons/outline/building-office.svg +3 -0
- data/lib/jquard/icons/outline/building-storefront.svg +3 -0
- data/lib/jquard/icons/outline/cake.svg +3 -0
- data/lib/jquard/icons/outline/calculator.svg +3 -0
- data/lib/jquard/icons/outline/calendar-date-range.svg +3 -0
- data/lib/jquard/icons/outline/calendar-days.svg +3 -0
- data/lib/jquard/icons/outline/calendar.svg +3 -0
- data/lib/jquard/icons/outline/camera.svg +4 -0
- data/lib/jquard/icons/outline/chart-bar-square.svg +3 -0
- data/lib/jquard/icons/outline/chart-bar.svg +3 -0
- data/lib/jquard/icons/outline/chart-pie.svg +4 -0
- data/lib/jquard/icons/outline/chat-bubble-bottom-center-text.svg +3 -0
- data/lib/jquard/icons/outline/chat-bubble-bottom-center.svg +3 -0
- data/lib/jquard/icons/outline/chat-bubble-left-ellipsis.svg +3 -0
- data/lib/jquard/icons/outline/chat-bubble-left-right.svg +3 -0
- data/lib/jquard/icons/outline/chat-bubble-left.svg +3 -0
- data/lib/jquard/icons/outline/chat-bubble-oval-left-ellipsis.svg +3 -0
- data/lib/jquard/icons/outline/chat-bubble-oval-left.svg +3 -0
- data/lib/jquard/icons/outline/check-badge.svg +3 -0
- data/lib/jquard/icons/outline/check-circle.svg +3 -0
- data/lib/jquard/icons/outline/check.svg +3 -0
- data/lib/jquard/icons/outline/chevron-double-down.svg +3 -0
- data/lib/jquard/icons/outline/chevron-double-left.svg +3 -0
- data/lib/jquard/icons/outline/chevron-double-right.svg +3 -0
- data/lib/jquard/icons/outline/chevron-double-up.svg +4 -0
- data/lib/jquard/icons/outline/chevron-down.svg +3 -0
- data/lib/jquard/icons/outline/chevron-left.svg +3 -0
- data/lib/jquard/icons/outline/chevron-right.svg +3 -0
- data/lib/jquard/icons/outline/chevron-up-down.svg +3 -0
- data/lib/jquard/icons/outline/chevron-up.svg +3 -0
- data/lib/jquard/icons/outline/circle-stack.svg +3 -0
- data/lib/jquard/icons/outline/clipboard-document-check.svg +3 -0
- data/lib/jquard/icons/outline/clipboard-document-list.svg +3 -0
- data/lib/jquard/icons/outline/clipboard-document.svg +3 -0
- data/lib/jquard/icons/outline/clipboard.svg +3 -0
- data/lib/jquard/icons/outline/clock.svg +3 -0
- data/lib/jquard/icons/outline/cloud-arrow-down.svg +3 -0
- data/lib/jquard/icons/outline/cloud-arrow-up.svg +3 -0
- data/lib/jquard/icons/outline/cloud.svg +3 -0
- data/lib/jquard/icons/outline/code-bracket-square.svg +3 -0
- data/lib/jquard/icons/outline/code-bracket.svg +3 -0
- data/lib/jquard/icons/outline/cog-6-tooth.svg +4 -0
- data/lib/jquard/icons/outline/cog-8-tooth.svg +4 -0
- data/lib/jquard/icons/outline/cog.svg +3 -0
- data/lib/jquard/icons/outline/command-line.svg +3 -0
- data/lib/jquard/icons/outline/computer-desktop.svg +3 -0
- data/lib/jquard/icons/outline/cpu-chip.svg +3 -0
- data/lib/jquard/icons/outline/credit-card.svg +3 -0
- data/lib/jquard/icons/outline/cube-transparent.svg +3 -0
- data/lib/jquard/icons/outline/cube.svg +3 -0
- data/lib/jquard/icons/outline/currency-bangladeshi.svg +3 -0
- data/lib/jquard/icons/outline/currency-dollar.svg +3 -0
- data/lib/jquard/icons/outline/currency-euro.svg +3 -0
- data/lib/jquard/icons/outline/currency-pound.svg +3 -0
- data/lib/jquard/icons/outline/currency-rupee.svg +3 -0
- data/lib/jquard/icons/outline/currency-yen.svg +3 -0
- data/lib/jquard/icons/outline/cursor-arrow-rays.svg +3 -0
- data/lib/jquard/icons/outline/cursor-arrow-ripple.svg +3 -0
- data/lib/jquard/icons/outline/device-phone-mobile.svg +3 -0
- data/lib/jquard/icons/outline/device-tablet.svg +3 -0
- data/lib/jquard/icons/outline/divide.svg +3 -0
- data/lib/jquard/icons/outline/document-arrow-down.svg +3 -0
- data/lib/jquard/icons/outline/document-arrow-up.svg +3 -0
- data/lib/jquard/icons/outline/document-chart-bar.svg +3 -0
- data/lib/jquard/icons/outline/document-check.svg +3 -0
- data/lib/jquard/icons/outline/document-currency-bangladeshi.svg +3 -0
- data/lib/jquard/icons/outline/document-currency-dollar.svg +3 -0
- data/lib/jquard/icons/outline/document-currency-euro.svg +3 -0
- data/lib/jquard/icons/outline/document-currency-pound.svg +3 -0
- data/lib/jquard/icons/outline/document-currency-rupee.svg +3 -0
- data/lib/jquard/icons/outline/document-currency-yen.svg +3 -0
- data/lib/jquard/icons/outline/document-duplicate.svg +3 -0
- data/lib/jquard/icons/outline/document-magnifying-glass.svg +3 -0
- data/lib/jquard/icons/outline/document-minus.svg +3 -0
- data/lib/jquard/icons/outline/document-plus.svg +3 -0
- data/lib/jquard/icons/outline/document-text.svg +3 -0
- data/lib/jquard/icons/outline/document.svg +3 -0
- data/lib/jquard/icons/outline/ellipsis-horizontal-circle.svg +3 -0
- data/lib/jquard/icons/outline/ellipsis-horizontal.svg +3 -0
- data/lib/jquard/icons/outline/ellipsis-vertical.svg +3 -0
- data/lib/jquard/icons/outline/envelope-open.svg +3 -0
- data/lib/jquard/icons/outline/envelope.svg +3 -0
- data/lib/jquard/icons/outline/equals.svg +3 -0
- data/lib/jquard/icons/outline/exclamation-circle.svg +3 -0
- data/lib/jquard/icons/outline/exclamation-triangle.svg +3 -0
- data/lib/jquard/icons/outline/eye-dropper.svg +3 -0
- data/lib/jquard/icons/outline/eye-slash.svg +3 -0
- data/lib/jquard/icons/outline/eye.svg +4 -0
- data/lib/jquard/icons/outline/face-frown.svg +3 -0
- data/lib/jquard/icons/outline/face-smile.svg +3 -0
- data/lib/jquard/icons/outline/film.svg +3 -0
- data/lib/jquard/icons/outline/finger-print.svg +3 -0
- data/lib/jquard/icons/outline/fire.svg +4 -0
- data/lib/jquard/icons/outline/flag.svg +3 -0
- data/lib/jquard/icons/outline/folder-arrow-down.svg +3 -0
- data/lib/jquard/icons/outline/folder-minus.svg +3 -0
- data/lib/jquard/icons/outline/folder-open.svg +3 -0
- data/lib/jquard/icons/outline/folder-plus.svg +3 -0
- data/lib/jquard/icons/outline/folder.svg +3 -0
- data/lib/jquard/icons/outline/forward.svg +3 -0
- data/lib/jquard/icons/outline/funnel.svg +3 -0
- data/lib/jquard/icons/outline/gif.svg +3 -0
- data/lib/jquard/icons/outline/gift-top.svg +3 -0
- data/lib/jquard/icons/outline/gift.svg +3 -0
- data/lib/jquard/icons/outline/globe-alt.svg +3 -0
- data/lib/jquard/icons/outline/globe-americas.svg +3 -0
- data/lib/jquard/icons/outline/globe-asia-australia.svg +3 -0
- data/lib/jquard/icons/outline/globe-europe-africa.svg +3 -0
- data/lib/jquard/icons/outline/h1.svg +3 -0
- data/lib/jquard/icons/outline/h2.svg +3 -0
- data/lib/jquard/icons/outline/h3.svg +3 -0
- data/lib/jquard/icons/outline/hand-raised.svg +3 -0
- data/lib/jquard/icons/outline/hand-thumb-down.svg +3 -0
- data/lib/jquard/icons/outline/hand-thumb-up.svg +3 -0
- data/lib/jquard/icons/outline/hashtag.svg +3 -0
- data/lib/jquard/icons/outline/heart.svg +3 -0
- data/lib/jquard/icons/outline/home-modern.svg +3 -0
- data/lib/jquard/icons/outline/home.svg +3 -0
- data/lib/jquard/icons/outline/identification.svg +3 -0
- data/lib/jquard/icons/outline/inbox-arrow-down.svg +3 -0
- data/lib/jquard/icons/outline/inbox-stack.svg +3 -0
- data/lib/jquard/icons/outline/inbox.svg +3 -0
- data/lib/jquard/icons/outline/information-circle.svg +3 -0
- data/lib/jquard/icons/outline/italic.svg +3 -0
- data/lib/jquard/icons/outline/key.svg +3 -0
- data/lib/jquard/icons/outline/language.svg +3 -0
- data/lib/jquard/icons/outline/lifebuoy.svg +3 -0
- data/lib/jquard/icons/outline/light-bulb.svg +3 -0
- data/lib/jquard/icons/outline/link-slash.svg +3 -0
- data/lib/jquard/icons/outline/link.svg +3 -0
- data/lib/jquard/icons/outline/list-bullet.svg +3 -0
- data/lib/jquard/icons/outline/lock-closed.svg +3 -0
- data/lib/jquard/icons/outline/lock-open.svg +3 -0
- data/lib/jquard/icons/outline/magnifying-glass-circle.svg +3 -0
- data/lib/jquard/icons/outline/magnifying-glass-minus.svg +3 -0
- data/lib/jquard/icons/outline/magnifying-glass-plus.svg +3 -0
- data/lib/jquard/icons/outline/magnifying-glass.svg +3 -0
- data/lib/jquard/icons/outline/map-pin.svg +4 -0
- data/lib/jquard/icons/outline/map.svg +3 -0
- data/lib/jquard/icons/outline/megaphone.svg +3 -0
- data/lib/jquard/icons/outline/microphone.svg +3 -0
- data/lib/jquard/icons/outline/minus-circle.svg +3 -0
- data/lib/jquard/icons/outline/minus-small.svg +3 -0
- data/lib/jquard/icons/outline/minus.svg +3 -0
- data/lib/jquard/icons/outline/moon.svg +3 -0
- data/lib/jquard/icons/outline/musical-note.svg +3 -0
- data/lib/jquard/icons/outline/newspaper.svg +3 -0
- data/lib/jquard/icons/outline/no-symbol.svg +3 -0
- data/lib/jquard/icons/outline/numbered-list.svg +3 -0
- data/lib/jquard/icons/outline/paint-brush.svg +3 -0
- data/lib/jquard/icons/outline/paper-airplane.svg +3 -0
- data/lib/jquard/icons/outline/paper-clip.svg +3 -0
- data/lib/jquard/icons/outline/pause-circle.svg +3 -0
- data/lib/jquard/icons/outline/pause.svg +3 -0
- data/lib/jquard/icons/outline/pencil-square.svg +3 -0
- data/lib/jquard/icons/outline/pencil.svg +3 -0
- data/lib/jquard/icons/outline/percent-badge.svg +3 -0
- data/lib/jquard/icons/outline/phone-arrow-down-left.svg +3 -0
- data/lib/jquard/icons/outline/phone-arrow-up-right.svg +3 -0
- data/lib/jquard/icons/outline/phone-x-mark.svg +3 -0
- data/lib/jquard/icons/outline/phone.svg +3 -0
- data/lib/jquard/icons/outline/photo.svg +3 -0
- data/lib/jquard/icons/outline/play-circle.svg +4 -0
- data/lib/jquard/icons/outline/play-pause.svg +3 -0
- data/lib/jquard/icons/outline/play.svg +3 -0
- data/lib/jquard/icons/outline/plus-circle.svg +3 -0
- data/lib/jquard/icons/outline/plus-small.svg +3 -0
- data/lib/jquard/icons/outline/plus.svg +3 -0
- data/lib/jquard/icons/outline/power.svg +3 -0
- data/lib/jquard/icons/outline/presentation-chart-bar.svg +3 -0
- data/lib/jquard/icons/outline/presentation-chart-line.svg +3 -0
- data/lib/jquard/icons/outline/printer.svg +3 -0
- data/lib/jquard/icons/outline/puzzle-piece.svg +3 -0
- data/lib/jquard/icons/outline/qr-code.svg +4 -0
- data/lib/jquard/icons/outline/question-mark-circle.svg +3 -0
- data/lib/jquard/icons/outline/queue-list.svg +3 -0
- data/lib/jquard/icons/outline/radio.svg +3 -0
- data/lib/jquard/icons/outline/receipt-percent.svg +3 -0
- data/lib/jquard/icons/outline/receipt-refund.svg +3 -0
- data/lib/jquard/icons/outline/rectangle-group.svg +3 -0
- data/lib/jquard/icons/outline/rectangle-stack.svg +3 -0
- data/lib/jquard/icons/outline/rocket-launch.svg +3 -0
- data/lib/jquard/icons/outline/rss.svg +3 -0
- data/lib/jquard/icons/outline/scale.svg +3 -0
- data/lib/jquard/icons/outline/scissors.svg +3 -0
- data/lib/jquard/icons/outline/server-stack.svg +3 -0
- data/lib/jquard/icons/outline/server.svg +3 -0
- data/lib/jquard/icons/outline/share.svg +3 -0
- data/lib/jquard/icons/outline/shield-check.svg +3 -0
- data/lib/jquard/icons/outline/shield-exclamation.svg +3 -0
- data/lib/jquard/icons/outline/shopping-bag.svg +3 -0
- data/lib/jquard/icons/outline/shopping-cart.svg +3 -0
- data/lib/jquard/icons/outline/signal-slash.svg +3 -0
- data/lib/jquard/icons/outline/signal.svg +3 -0
- data/lib/jquard/icons/outline/slash.svg +3 -0
- data/lib/jquard/icons/outline/sparkles.svg +3 -0
- data/lib/jquard/icons/outline/speaker-wave.svg +3 -0
- data/lib/jquard/icons/outline/speaker-x-mark.svg +3 -0
- data/lib/jquard/icons/outline/square-2-stack.svg +3 -0
- data/lib/jquard/icons/outline/square-3-stack-3d.svg +3 -0
- data/lib/jquard/icons/outline/squares-2x2.svg +3 -0
- data/lib/jquard/icons/outline/squares-plus.svg +3 -0
- data/lib/jquard/icons/outline/star.svg +3 -0
- data/lib/jquard/icons/outline/stop-circle.svg +4 -0
- data/lib/jquard/icons/outline/stop.svg +3 -0
- data/lib/jquard/icons/outline/strikethrough.svg +3 -0
- data/lib/jquard/icons/outline/sun.svg +3 -0
- data/lib/jquard/icons/outline/swatch.svg +3 -0
- data/lib/jquard/icons/outline/table-cells.svg +3 -0
- data/lib/jquard/icons/outline/tag.svg +4 -0
- data/lib/jquard/icons/outline/ticket.svg +3 -0
- data/lib/jquard/icons/outline/trash.svg +3 -0
- data/lib/jquard/icons/outline/trophy.svg +3 -0
- data/lib/jquard/icons/outline/truck.svg +3 -0
- data/lib/jquard/icons/outline/tv.svg +3 -0
- data/lib/jquard/icons/outline/underline.svg +3 -0
- data/lib/jquard/icons/outline/user-circle.svg +3 -0
- data/lib/jquard/icons/outline/user-group.svg +3 -0
- data/lib/jquard/icons/outline/user-minus.svg +3 -0
- data/lib/jquard/icons/outline/user-plus.svg +3 -0
- data/lib/jquard/icons/outline/user.svg +3 -0
- data/lib/jquard/icons/outline/users.svg +3 -0
- data/lib/jquard/icons/outline/variable.svg +3 -0
- data/lib/jquard/icons/outline/video-camera-slash.svg +3 -0
- data/lib/jquard/icons/outline/video-camera.svg +3 -0
- data/lib/jquard/icons/outline/view-columns.svg +3 -0
- data/lib/jquard/icons/outline/viewfinder-circle.svg +3 -0
- data/lib/jquard/icons/outline/wallet.svg +3 -0
- data/lib/jquard/icons/outline/wifi.svg +3 -0
- data/lib/jquard/icons/outline/window.svg +3 -0
- data/lib/jquard/icons/outline/wrench-screwdriver.svg +3 -0
- data/lib/jquard/icons/outline/wrench.svg +4 -0
- data/lib/jquard/icons/outline/x-circle.svg +3 -0
- data/lib/jquard/icons/outline/x-mark.svg +3 -0
- data/lib/jquard/icons/solid/academic-cap.svg +5 -0
- data/lib/jquard/icons/solid/adjustments-horizontal.svg +3 -0
- data/lib/jquard/icons/solid/adjustments-vertical.svg +3 -0
- data/lib/jquard/icons/solid/archive-box-arrow-down.svg +4 -0
- data/lib/jquard/icons/solid/archive-box-x-mark.svg +4 -0
- data/lib/jquard/icons/solid/archive-box.svg +4 -0
- data/lib/jquard/icons/solid/arrow-down-circle.svg +3 -0
- data/lib/jquard/icons/solid/arrow-down-left.svg +3 -0
- data/lib/jquard/icons/solid/arrow-down-on-square-stack.svg +4 -0
- data/lib/jquard/icons/solid/arrow-down-on-square.svg +3 -0
- data/lib/jquard/icons/solid/arrow-down-right.svg +3 -0
- data/lib/jquard/icons/solid/arrow-down-tray.svg +3 -0
- data/lib/jquard/icons/solid/arrow-down.svg +3 -0
- data/lib/jquard/icons/solid/arrow-left-circle.svg +3 -0
- data/lib/jquard/icons/solid/arrow-left-end-on-rectangle.svg +3 -0
- data/lib/jquard/icons/solid/arrow-left-on-rectangle.svg +3 -0
- data/lib/jquard/icons/solid/arrow-left-start-on-rectangle.svg +3 -0
- data/lib/jquard/icons/solid/arrow-left.svg +3 -0
- data/lib/jquard/icons/solid/arrow-long-down.svg +3 -0
- data/lib/jquard/icons/solid/arrow-long-left.svg +3 -0
- data/lib/jquard/icons/solid/arrow-long-right.svg +3 -0
- data/lib/jquard/icons/solid/arrow-long-up.svg +3 -0
- data/lib/jquard/icons/solid/arrow-path-rounded-square.svg +3 -0
- data/lib/jquard/icons/solid/arrow-path.svg +3 -0
- data/lib/jquard/icons/solid/arrow-right-circle.svg +3 -0
- data/lib/jquard/icons/solid/arrow-right-end-on-rectangle.svg +3 -0
- data/lib/jquard/icons/solid/arrow-right-on-rectangle.svg +3 -0
- data/lib/jquard/icons/solid/arrow-right-start-on-rectangle.svg +3 -0
- data/lib/jquard/icons/solid/arrow-right.svg +3 -0
- data/lib/jquard/icons/solid/arrow-small-down.svg +3 -0
- data/lib/jquard/icons/solid/arrow-small-left.svg +3 -0
- data/lib/jquard/icons/solid/arrow-small-right.svg +3 -0
- data/lib/jquard/icons/solid/arrow-small-up.svg +3 -0
- data/lib/jquard/icons/solid/arrow-top-right-on-square.svg +3 -0
- data/lib/jquard/icons/solid/arrow-trending-down.svg +3 -0
- data/lib/jquard/icons/solid/arrow-trending-up.svg +3 -0
- data/lib/jquard/icons/solid/arrow-turn-down-left.svg +3 -0
- data/lib/jquard/icons/solid/arrow-turn-down-right.svg +3 -0
- data/lib/jquard/icons/solid/arrow-turn-left-down.svg +3 -0
- data/lib/jquard/icons/solid/arrow-turn-left-up.svg +3 -0
- data/lib/jquard/icons/solid/arrow-turn-right-down.svg +3 -0
- data/lib/jquard/icons/solid/arrow-turn-right-up.svg +3 -0
- data/lib/jquard/icons/solid/arrow-turn-up-left.svg +3 -0
- data/lib/jquard/icons/solid/arrow-turn-up-right.svg +3 -0
- data/lib/jquard/icons/solid/arrow-up-circle.svg +3 -0
- data/lib/jquard/icons/solid/arrow-up-left.svg +3 -0
- data/lib/jquard/icons/solid/arrow-up-on-square-stack.svg +4 -0
- data/lib/jquard/icons/solid/arrow-up-on-square.svg +3 -0
- data/lib/jquard/icons/solid/arrow-up-right.svg +3 -0
- data/lib/jquard/icons/solid/arrow-up-tray.svg +3 -0
- data/lib/jquard/icons/solid/arrow-up.svg +3 -0
- data/lib/jquard/icons/solid/arrow-uturn-down.svg +3 -0
- data/lib/jquard/icons/solid/arrow-uturn-left.svg +3 -0
- data/lib/jquard/icons/solid/arrow-uturn-right.svg +3 -0
- data/lib/jquard/icons/solid/arrow-uturn-up.svg +3 -0
- data/lib/jquard/icons/solid/arrows-pointing-in.svg +3 -0
- data/lib/jquard/icons/solid/arrows-pointing-out.svg +3 -0
- data/lib/jquard/icons/solid/arrows-right-left.svg +3 -0
- data/lib/jquard/icons/solid/arrows-up-down.svg +3 -0
- data/lib/jquard/icons/solid/at-symbol.svg +3 -0
- data/lib/jquard/icons/solid/backspace.svg +3 -0
- data/lib/jquard/icons/solid/backward.svg +3 -0
- data/lib/jquard/icons/solid/banknotes.svg +5 -0
- data/lib/jquard/icons/solid/bars-2.svg +3 -0
- data/lib/jquard/icons/solid/bars-3-bottom-left.svg +3 -0
- data/lib/jquard/icons/solid/bars-3-bottom-right.svg +3 -0
- data/lib/jquard/icons/solid/bars-3-center-left.svg +3 -0
- data/lib/jquard/icons/solid/bars-3.svg +3 -0
- data/lib/jquard/icons/solid/bars-4.svg +3 -0
- data/lib/jquard/icons/solid/bars-arrow-down.svg +3 -0
- data/lib/jquard/icons/solid/bars-arrow-up.svg +3 -0
- data/lib/jquard/icons/solid/battery-0.svg +3 -0
- data/lib/jquard/icons/solid/battery-100.svg +3 -0
- data/lib/jquard/icons/solid/battery-50.svg +4 -0
- data/lib/jquard/icons/solid/beaker.svg +3 -0
- data/lib/jquard/icons/solid/bell-alert.svg +4 -0
- data/lib/jquard/icons/solid/bell-slash.svg +4 -0
- data/lib/jquard/icons/solid/bell-snooze.svg +3 -0
- data/lib/jquard/icons/solid/bell.svg +3 -0
- data/lib/jquard/icons/solid/bold.svg +3 -0
- data/lib/jquard/icons/solid/bolt-slash.svg +3 -0
- data/lib/jquard/icons/solid/bolt.svg +3 -0
- data/lib/jquard/icons/solid/book-open.svg +3 -0
- data/lib/jquard/icons/solid/bookmark-slash.svg +3 -0
- data/lib/jquard/icons/solid/bookmark-square.svg +3 -0
- data/lib/jquard/icons/solid/bookmark.svg +3 -0
- data/lib/jquard/icons/solid/briefcase.svg +4 -0
- data/lib/jquard/icons/solid/bug-ant.svg +3 -0
- data/lib/jquard/icons/solid/building-library.svg +5 -0
- data/lib/jquard/icons/solid/building-office-2.svg +3 -0
- data/lib/jquard/icons/solid/building-office.svg +3 -0
- data/lib/jquard/icons/solid/building-storefront.svg +4 -0
- data/lib/jquard/icons/solid/cake.svg +3 -0
- data/lib/jquard/icons/solid/calculator.svg +3 -0
- data/lib/jquard/icons/solid/calendar-date-range.svg +4 -0
- data/lib/jquard/icons/solid/calendar-days.svg +4 -0
- data/lib/jquard/icons/solid/calendar.svg +3 -0
- data/lib/jquard/icons/solid/camera.svg +4 -0
- data/lib/jquard/icons/solid/chart-bar-square.svg +3 -0
- data/lib/jquard/icons/solid/chart-bar.svg +3 -0
- data/lib/jquard/icons/solid/chart-pie.svg +4 -0
- data/lib/jquard/icons/solid/chat-bubble-bottom-center-text.svg +3 -0
- data/lib/jquard/icons/solid/chat-bubble-bottom-center.svg +3 -0
- data/lib/jquard/icons/solid/chat-bubble-left-ellipsis.svg +3 -0
- data/lib/jquard/icons/solid/chat-bubble-left-right.svg +4 -0
- data/lib/jquard/icons/solid/chat-bubble-left.svg +3 -0
- data/lib/jquard/icons/solid/chat-bubble-oval-left-ellipsis.svg +3 -0
- data/lib/jquard/icons/solid/chat-bubble-oval-left.svg +3 -0
- data/lib/jquard/icons/solid/check-badge.svg +3 -0
- data/lib/jquard/icons/solid/check-circle.svg +3 -0
- data/lib/jquard/icons/solid/check.svg +3 -0
- data/lib/jquard/icons/solid/chevron-double-down.svg +4 -0
- data/lib/jquard/icons/solid/chevron-double-left.svg +4 -0
- data/lib/jquard/icons/solid/chevron-double-right.svg +4 -0
- data/lib/jquard/icons/solid/chevron-double-up.svg +4 -0
- data/lib/jquard/icons/solid/chevron-down.svg +3 -0
- data/lib/jquard/icons/solid/chevron-left.svg +3 -0
- data/lib/jquard/icons/solid/chevron-right.svg +3 -0
- data/lib/jquard/icons/solid/chevron-up-down.svg +3 -0
- data/lib/jquard/icons/solid/chevron-up.svg +3 -0
- data/lib/jquard/icons/solid/circle-stack.svg +6 -0
- data/lib/jquard/icons/solid/clipboard-document-check.svg +4 -0
- data/lib/jquard/icons/solid/clipboard-document-list.svg +4 -0
- data/lib/jquard/icons/solid/clipboard-document.svg +5 -0
- data/lib/jquard/icons/solid/clipboard.svg +3 -0
- data/lib/jquard/icons/solid/clock.svg +3 -0
- data/lib/jquard/icons/solid/cloud-arrow-down.svg +3 -0
- data/lib/jquard/icons/solid/cloud-arrow-up.svg +3 -0
- data/lib/jquard/icons/solid/cloud.svg +3 -0
- data/lib/jquard/icons/solid/code-bracket-square.svg +3 -0
- data/lib/jquard/icons/solid/code-bracket.svg +3 -0
- data/lib/jquard/icons/solid/cog-6-tooth.svg +3 -0
- data/lib/jquard/icons/solid/cog-8-tooth.svg +3 -0
- data/lib/jquard/icons/solid/cog.svg +4 -0
- data/lib/jquard/icons/solid/command-line.svg +3 -0
- data/lib/jquard/icons/solid/computer-desktop.svg +3 -0
- data/lib/jquard/icons/solid/cpu-chip.svg +4 -0
- data/lib/jquard/icons/solid/credit-card.svg +4 -0
- data/lib/jquard/icons/solid/cube-transparent.svg +3 -0
- data/lib/jquard/icons/solid/cube.svg +3 -0
- data/lib/jquard/icons/solid/currency-bangladeshi.svg +3 -0
- data/lib/jquard/icons/solid/currency-dollar.svg +4 -0
- data/lib/jquard/icons/solid/currency-euro.svg +3 -0
- data/lib/jquard/icons/solid/currency-pound.svg +3 -0
- data/lib/jquard/icons/solid/currency-rupee.svg +3 -0
- data/lib/jquard/icons/solid/currency-yen.svg +3 -0
- data/lib/jquard/icons/solid/cursor-arrow-rays.svg +3 -0
- data/lib/jquard/icons/solid/cursor-arrow-ripple.svg +3 -0
- data/lib/jquard/icons/solid/device-phone-mobile.svg +4 -0
- data/lib/jquard/icons/solid/device-tablet.svg +4 -0
- data/lib/jquard/icons/solid/divide.svg +3 -0
- data/lib/jquard/icons/solid/document-arrow-down.svg +4 -0
- data/lib/jquard/icons/solid/document-arrow-up.svg +4 -0
- data/lib/jquard/icons/solid/document-chart-bar.svg +4 -0
- data/lib/jquard/icons/solid/document-check.svg +4 -0
- data/lib/jquard/icons/solid/document-currency-bangladeshi.svg +3 -0
- data/lib/jquard/icons/solid/document-currency-dollar.svg +3 -0
- data/lib/jquard/icons/solid/document-currency-euro.svg +4 -0
- data/lib/jquard/icons/solid/document-currency-pound.svg +3 -0
- data/lib/jquard/icons/solid/document-currency-rupee.svg +3 -0
- data/lib/jquard/icons/solid/document-currency-yen.svg +3 -0
- data/lib/jquard/icons/solid/document-duplicate.svg +4 -0
- data/lib/jquard/icons/solid/document-magnifying-glass.svg +5 -0
- data/lib/jquard/icons/solid/document-minus.svg +4 -0
- data/lib/jquard/icons/solid/document-plus.svg +4 -0
- data/lib/jquard/icons/solid/document-text.svg +4 -0
- data/lib/jquard/icons/solid/document.svg +4 -0
- data/lib/jquard/icons/solid/ellipsis-horizontal-circle.svg +3 -0
- data/lib/jquard/icons/solid/ellipsis-horizontal.svg +3 -0
- data/lib/jquard/icons/solid/ellipsis-vertical.svg +3 -0
- data/lib/jquard/icons/solid/envelope-open.svg +4 -0
- data/lib/jquard/icons/solid/envelope.svg +4 -0
- data/lib/jquard/icons/solid/equals.svg +3 -0
- data/lib/jquard/icons/solid/exclamation-circle.svg +3 -0
- data/lib/jquard/icons/solid/exclamation-triangle.svg +3 -0
- data/lib/jquard/icons/solid/eye-dropper.svg +3 -0
- data/lib/jquard/icons/solid/eye-slash.svg +5 -0
- data/lib/jquard/icons/solid/eye.svg +4 -0
- data/lib/jquard/icons/solid/face-frown.svg +3 -0
- data/lib/jquard/icons/solid/face-smile.svg +3 -0
- data/lib/jquard/icons/solid/film.svg +3 -0
- data/lib/jquard/icons/solid/finger-print.svg +3 -0
- data/lib/jquard/icons/solid/fire.svg +3 -0
- data/lib/jquard/icons/solid/flag.svg +3 -0
- data/lib/jquard/icons/solid/folder-arrow-down.svg +3 -0
- data/lib/jquard/icons/solid/folder-minus.svg +3 -0
- data/lib/jquard/icons/solid/folder-open.svg +3 -0
- data/lib/jquard/icons/solid/folder-plus.svg +3 -0
- data/lib/jquard/icons/solid/folder.svg +3 -0
- data/lib/jquard/icons/solid/forward.svg +3 -0
- data/lib/jquard/icons/solid/funnel.svg +3 -0
- data/lib/jquard/icons/solid/gif.svg +3 -0
- data/lib/jquard/icons/solid/gift-top.svg +4 -0
- data/lib/jquard/icons/solid/gift.svg +3 -0
- data/lib/jquard/icons/solid/globe-alt.svg +3 -0
- data/lib/jquard/icons/solid/globe-americas.svg +3 -0
- data/lib/jquard/icons/solid/globe-asia-australia.svg +4 -0
- data/lib/jquard/icons/solid/globe-europe-africa.svg +3 -0
- data/lib/jquard/icons/solid/h1.svg +3 -0
- data/lib/jquard/icons/solid/h2.svg +3 -0
- data/lib/jquard/icons/solid/h3.svg +3 -0
- data/lib/jquard/icons/solid/hand-raised.svg +3 -0
- data/lib/jquard/icons/solid/hand-thumb-down.svg +3 -0
- data/lib/jquard/icons/solid/hand-thumb-up.svg +3 -0
- data/lib/jquard/icons/solid/hashtag.svg +3 -0
- data/lib/jquard/icons/solid/heart.svg +3 -0
- data/lib/jquard/icons/solid/home-modern.svg +4 -0
- data/lib/jquard/icons/solid/home.svg +4 -0
- data/lib/jquard/icons/solid/identification.svg +3 -0
- data/lib/jquard/icons/solid/inbox-arrow-down.svg +4 -0
- data/lib/jquard/icons/solid/inbox-stack.svg +4 -0
- data/lib/jquard/icons/solid/inbox.svg +3 -0
- data/lib/jquard/icons/solid/information-circle.svg +3 -0
- data/lib/jquard/icons/solid/italic.svg +3 -0
- data/lib/jquard/icons/solid/key.svg +3 -0
- data/lib/jquard/icons/solid/language.svg +3 -0
- data/lib/jquard/icons/solid/lifebuoy.svg +3 -0
- data/lib/jquard/icons/solid/light-bulb.svg +4 -0
- data/lib/jquard/icons/solid/link-slash.svg +3 -0
- data/lib/jquard/icons/solid/link.svg +3 -0
- data/lib/jquard/icons/solid/list-bullet.svg +3 -0
- data/lib/jquard/icons/solid/lock-closed.svg +3 -0
- data/lib/jquard/icons/solid/lock-open.svg +3 -0
- data/lib/jquard/icons/solid/magnifying-glass-circle.svg +4 -0
- data/lib/jquard/icons/solid/magnifying-glass-minus.svg +3 -0
- data/lib/jquard/icons/solid/magnifying-glass-plus.svg +3 -0
- data/lib/jquard/icons/solid/magnifying-glass.svg +3 -0
- data/lib/jquard/icons/solid/map-pin.svg +3 -0
- data/lib/jquard/icons/solid/map.svg +3 -0
- data/lib/jquard/icons/solid/megaphone.svg +3 -0
- data/lib/jquard/icons/solid/microphone.svg +4 -0
- data/lib/jquard/icons/solid/minus-circle.svg +3 -0
- data/lib/jquard/icons/solid/minus-small.svg +3 -0
- data/lib/jquard/icons/solid/minus.svg +3 -0
- data/lib/jquard/icons/solid/moon.svg +3 -0
- data/lib/jquard/icons/solid/musical-note.svg +3 -0
- data/lib/jquard/icons/solid/newspaper.svg +4 -0
- data/lib/jquard/icons/solid/no-symbol.svg +3 -0
- data/lib/jquard/icons/solid/numbered-list.svg +3 -0
- data/lib/jquard/icons/solid/paint-brush.svg +3 -0
- data/lib/jquard/icons/solid/paper-airplane.svg +3 -0
- data/lib/jquard/icons/solid/paper-clip.svg +3 -0
- data/lib/jquard/icons/solid/pause-circle.svg +3 -0
- data/lib/jquard/icons/solid/pause.svg +3 -0
- data/lib/jquard/icons/solid/pencil-square.svg +4 -0
- data/lib/jquard/icons/solid/pencil.svg +3 -0
- data/lib/jquard/icons/solid/percent-badge.svg +3 -0
- data/lib/jquard/icons/solid/phone-arrow-down-left.svg +4 -0
- data/lib/jquard/icons/solid/phone-arrow-up-right.svg +4 -0
- data/lib/jquard/icons/solid/phone-x-mark.svg +3 -0
- data/lib/jquard/icons/solid/phone.svg +3 -0
- data/lib/jquard/icons/solid/photo.svg +3 -0
- data/lib/jquard/icons/solid/play-circle.svg +3 -0
- data/lib/jquard/icons/solid/play-pause.svg +3 -0
- data/lib/jquard/icons/solid/play.svg +3 -0
- data/lib/jquard/icons/solid/plus-circle.svg +3 -0
- data/lib/jquard/icons/solid/plus-small.svg +3 -0
- data/lib/jquard/icons/solid/plus.svg +3 -0
- data/lib/jquard/icons/solid/power.svg +3 -0
- data/lib/jquard/icons/solid/presentation-chart-bar.svg +3 -0
- data/lib/jquard/icons/solid/presentation-chart-line.svg +3 -0
- data/lib/jquard/icons/solid/printer.svg +3 -0
- data/lib/jquard/icons/solid/puzzle-piece.svg +3 -0
- data/lib/jquard/icons/solid/qr-code.svg +3 -0
- data/lib/jquard/icons/solid/question-mark-circle.svg +3 -0
- data/lib/jquard/icons/solid/queue-list.svg +3 -0
- data/lib/jquard/icons/solid/radio.svg +3 -0
- data/lib/jquard/icons/solid/receipt-percent.svg +3 -0
- data/lib/jquard/icons/solid/receipt-refund.svg +3 -0
- data/lib/jquard/icons/solid/rectangle-group.svg +3 -0
- data/lib/jquard/icons/solid/rectangle-stack.svg +3 -0
- data/lib/jquard/icons/solid/rocket-launch.svg +4 -0
- data/lib/jquard/icons/solid/rss.svg +3 -0
- data/lib/jquard/icons/solid/scale.svg +3 -0
- data/lib/jquard/icons/solid/scissors.svg +4 -0
- data/lib/jquard/icons/solid/server-stack.svg +4 -0
- data/lib/jquard/icons/solid/server.svg +4 -0
- data/lib/jquard/icons/solid/share.svg +3 -0
- data/lib/jquard/icons/solid/shield-check.svg +3 -0
- data/lib/jquard/icons/solid/shield-exclamation.svg +3 -0
- data/lib/jquard/icons/solid/shopping-bag.svg +3 -0
- data/lib/jquard/icons/solid/shopping-cart.svg +3 -0
- data/lib/jquard/icons/solid/signal-slash.svg +3 -0
- data/lib/jquard/icons/solid/signal.svg +3 -0
- data/lib/jquard/icons/solid/slash.svg +3 -0
- data/lib/jquard/icons/solid/sparkles.svg +3 -0
- data/lib/jquard/icons/solid/speaker-wave.svg +4 -0
- data/lib/jquard/icons/solid/speaker-x-mark.svg +3 -0
- data/lib/jquard/icons/solid/square-2-stack.svg +4 -0
- data/lib/jquard/icons/solid/square-3-stack-3d.svg +5 -0
- data/lib/jquard/icons/solid/squares-2x2.svg +3 -0
- data/lib/jquard/icons/solid/squares-plus.svg +3 -0
- data/lib/jquard/icons/solid/star.svg +3 -0
- data/lib/jquard/icons/solid/stop-circle.svg +3 -0
- data/lib/jquard/icons/solid/stop.svg +3 -0
- data/lib/jquard/icons/solid/strikethrough.svg +3 -0
- data/lib/jquard/icons/solid/sun.svg +3 -0
- data/lib/jquard/icons/solid/swatch.svg +4 -0
- data/lib/jquard/icons/solid/table-cells.svg +3 -0
- data/lib/jquard/icons/solid/tag.svg +3 -0
- data/lib/jquard/icons/solid/ticket.svg +3 -0
- data/lib/jquard/icons/solid/trash.svg +3 -0
- data/lib/jquard/icons/solid/trophy.svg +3 -0
- data/lib/jquard/icons/solid/truck.svg +5 -0
- data/lib/jquard/icons/solid/tv.svg +4 -0
- data/lib/jquard/icons/solid/underline.svg +3 -0
- data/lib/jquard/icons/solid/user-circle.svg +3 -0
- data/lib/jquard/icons/solid/user-group.svg +4 -0
- data/lib/jquard/icons/solid/user-minus.svg +3 -0
- data/lib/jquard/icons/solid/user-plus.svg +3 -0
- data/lib/jquard/icons/solid/user.svg +3 -0
- data/lib/jquard/icons/solid/users.svg +3 -0
- data/lib/jquard/icons/solid/variable.svg +3 -0
- data/lib/jquard/icons/solid/video-camera-slash.svg +3 -0
- data/lib/jquard/icons/solid/video-camera.svg +3 -0
- data/lib/jquard/icons/solid/view-columns.svg +3 -0
- data/lib/jquard/icons/solid/viewfinder-circle.svg +3 -0
- data/lib/jquard/icons/solid/wallet.svg +3 -0
- data/lib/jquard/icons/solid/wifi.svg +3 -0
- data/lib/jquard/icons/solid/window.svg +3 -0
- data/lib/jquard/icons/solid/wrench-screwdriver.svg +5 -0
- data/lib/jquard/icons/solid/wrench.svg +3 -0
- data/lib/jquard/icons/solid/x-circle.svg +3 -0
- data/lib/jquard/icons/solid/x-mark.svg +3 -0
- data/lib/jquard/icons.rb +26 -0
- data/lib/jquard/registry.rb +27 -0
- data/lib/jquard/resource.rb +69 -0
- data/lib/jquard/resources/pages/create_record.rb +32 -0
- data/lib/jquard/resources/pages/edit_record.rb +34 -0
- data/lib/jquard/resources/pages/list_records.rb +11 -0
- data/lib/jquard/resources/pages/page.rb +20 -0
- data/lib/jquard/schemas/components.rb +16 -0
- data/lib/jquard/schemas/fields/checkbox.rb +8 -0
- data/lib/jquard/schemas/fields/date_picker.rb +8 -0
- data/lib/jquard/schemas/fields/date_time_picker.rb +8 -0
- data/lib/jquard/schemas/fields/field.rb +79 -0
- data/lib/jquard/schemas/fields/hidden.rb +8 -0
- data/lib/jquard/schemas/fields/select.rb +18 -0
- data/lib/jquard/schemas/fields/text_input.rb +33 -0
- data/lib/jquard/schemas/fields/textarea.rb +14 -0
- data/lib/jquard/schemas/fields/toggle.rb +8 -0
- data/lib/jquard/schemas/layouts/grid.rb +11 -0
- data/lib/jquard/schemas/layouts/layout.rb +23 -0
- data/lib/jquard/schemas/layouts/section.rb +24 -0
- data/lib/jquard/schemas/schema.rb +61 -0
- data/lib/jquard/tables/actions/action.rb +27 -0
- data/lib/jquard/tables/actions/delete_action.rb +38 -0
- data/lib/jquard/tables/actions/edit_action.rb +17 -0
- data/lib/jquard/tables/columns/column.rb +48 -0
- data/lib/jquard/tables/columns/icon_column.rb +16 -0
- data/lib/jquard/tables/columns/text_column.rb +48 -0
- data/lib/jquard/tables/components.rb +10 -0
- data/lib/jquard/tables/query.rb +71 -0
- data/lib/jquard/tables/table.rb +44 -0
- data/lib/jquard/tailwind/application.css +619 -0
- data/lib/jquard/version.rb +1 -1
- data/lib/jquard.rb +61 -1
- metadata +759 -1
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
module Jquard
|
|
2
|
+
module Schemas
|
|
3
|
+
class FieldWrapperComponent < Jquard::ApplicationComponent
|
|
4
|
+
def initialize(field:, record:, inline: false)
|
|
5
|
+
@field = field
|
|
6
|
+
@record = record
|
|
7
|
+
@inline = inline
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
private
|
|
11
|
+
|
|
12
|
+
attr_reader :field, :record
|
|
13
|
+
|
|
14
|
+
def inline?
|
|
15
|
+
@inline
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def input_id
|
|
19
|
+
"#{record.model_name.param_key}_#{field.name}"
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def error_message
|
|
23
|
+
return nil unless record.respond_to?(:errors)
|
|
24
|
+
|
|
25
|
+
record.errors[field.name].first
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def wrapper_classes
|
|
29
|
+
class_names("jq-field", "jq-field--error" => error_message.present?)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def span_style
|
|
33
|
+
case field.column_span
|
|
34
|
+
when :full then "grid-column: 1 / -1;"
|
|
35
|
+
when Integer then "grid-column: span #{field.column_span} / span #{field.column_span};"
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
module Jquard
|
|
2
|
+
module Schemas
|
|
3
|
+
module Fields
|
|
4
|
+
class FieldComponent < Jquard::ApplicationComponent
|
|
5
|
+
def initialize(component:, form:, record:)
|
|
6
|
+
@field = component
|
|
7
|
+
@form = form
|
|
8
|
+
@record = record
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
private
|
|
12
|
+
|
|
13
|
+
attr_reader :field, :form, :record
|
|
14
|
+
|
|
15
|
+
def wrapper(inline: false)
|
|
16
|
+
Jquard::Schemas::FieldWrapperComponent.new(field: field, record: record, inline: inline)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def input_classes
|
|
20
|
+
class_names("jq-input", "jq-input--error" => error?)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def error?
|
|
24
|
+
record.respond_to?(:errors) && record.errors[field.name].any?
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def base_options
|
|
28
|
+
{
|
|
29
|
+
class: input_classes,
|
|
30
|
+
placeholder: field.placeholder,
|
|
31
|
+
required: field.required? || nil,
|
|
32
|
+
disabled: field.disabled? || nil
|
|
33
|
+
}.compact
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
<%= form_with model: record, url: form_url, class: "jq-form" do |form| %>
|
|
2
|
+
<% schema.components.each do |component| %>
|
|
3
|
+
<%= render component.component_class.new(component: component, form: form, record: record) %>
|
|
4
|
+
<% end %>
|
|
5
|
+
|
|
6
|
+
<div class="jq-form-actions">
|
|
7
|
+
<%= form.submit submit_label, class: "jq-btn jq-btn--primary" %>
|
|
8
|
+
<%= link_to "Cancel", cancel_url, class: "jq-btn jq-btn--secondary" %>
|
|
9
|
+
</div>
|
|
10
|
+
<% end %>
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
module Jquard
|
|
2
|
+
module Schemas
|
|
3
|
+
class FormComponent < Jquard::ApplicationComponent
|
|
4
|
+
def initialize(schema:, record:, resource:)
|
|
5
|
+
@schema = schema
|
|
6
|
+
@record = record
|
|
7
|
+
@resource = resource
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
private
|
|
11
|
+
|
|
12
|
+
attr_reader :schema, :record, :resource
|
|
13
|
+
|
|
14
|
+
def form_url
|
|
15
|
+
if record.persisted?
|
|
16
|
+
helpers.resource_record_path(resource.slug, record.id)
|
|
17
|
+
else
|
|
18
|
+
helpers.resource_path(resource.slug)
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def cancel_url
|
|
23
|
+
helpers.resource_path(resource.slug)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def submit_label
|
|
27
|
+
record.persisted? ? "Save changes" : "Create"
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
module Jquard
|
|
2
|
+
module Schemas
|
|
3
|
+
module Layouts
|
|
4
|
+
class GridComponent < Jquard::ApplicationComponent
|
|
5
|
+
def initialize(component:, form:, record:)
|
|
6
|
+
@grid = component
|
|
7
|
+
@form = form
|
|
8
|
+
@record = record
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
private
|
|
12
|
+
|
|
13
|
+
attr_reader :grid, :form, :record
|
|
14
|
+
|
|
15
|
+
def grid_style
|
|
16
|
+
"grid-template-columns: repeat(#{grid.columns}, minmax(0, 1fr));"
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<section class="jq-section">
|
|
2
|
+
<% if section.heading || section.description %>
|
|
3
|
+
<header class="jq-section-header">
|
|
4
|
+
<% if section.heading %>
|
|
5
|
+
<h2 class="jq-section-heading"><%= section.heading %></h2>
|
|
6
|
+
<% end %>
|
|
7
|
+
<% if section.description %>
|
|
8
|
+
<p class="jq-section-description"><%= section.description %></p>
|
|
9
|
+
<% end %>
|
|
10
|
+
</header>
|
|
11
|
+
<% end %>
|
|
12
|
+
|
|
13
|
+
<div class="jq-schema-grid" style="<%= grid_style %>">
|
|
14
|
+
<% section.schema.each do |child| %>
|
|
15
|
+
<%= render child.component_class.new(component: child, form: form, record: record) %>
|
|
16
|
+
<% end %>
|
|
17
|
+
</div>
|
|
18
|
+
</section>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
module Jquard
|
|
2
|
+
module Schemas
|
|
3
|
+
module Layouts
|
|
4
|
+
class SectionComponent < Jquard::ApplicationComponent
|
|
5
|
+
def initialize(component:, form:, record:)
|
|
6
|
+
@section = component
|
|
7
|
+
@form = form
|
|
8
|
+
@record = record
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
private
|
|
12
|
+
|
|
13
|
+
attr_reader :section, :form, :record
|
|
14
|
+
|
|
15
|
+
def grid_style
|
|
16
|
+
"grid-template-columns: repeat(#{section.columns}, minmax(0, 1fr));"
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
<%= button_to helpers.resource_record_path(resource.slug, record.id), method: :delete,
|
|
2
|
+
class: "jq-row-action jq-row-action--danger",
|
|
3
|
+
form: { data: {
|
|
4
|
+
turbo_frame: "_top",
|
|
5
|
+
turbo_confirm: action.confirm,
|
|
6
|
+
confirm_heading: confirm_heading,
|
|
7
|
+
confirm_button: action.confirm_button
|
|
8
|
+
} } do %>
|
|
9
|
+
<%= helpers.jquard_icon(action.icon, css_class: "jq-row-action-icon") %>
|
|
10
|
+
<span><%= action.label %></span>
|
|
11
|
+
<% end %>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
module Jquard
|
|
2
|
+
module Tables
|
|
3
|
+
module Actions
|
|
4
|
+
class DeleteActionComponent < Jquard::ApplicationComponent
|
|
5
|
+
def initialize(action:, resource:, record:)
|
|
6
|
+
@action = action
|
|
7
|
+
@resource = resource
|
|
8
|
+
@record = record
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
private
|
|
12
|
+
|
|
13
|
+
attr_reader :action, :resource, :record
|
|
14
|
+
|
|
15
|
+
def confirm_heading
|
|
16
|
+
action.confirm_heading || "Delete #{resource.singular_label.downcase}"
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
module Jquard
|
|
2
|
+
module Tables
|
|
3
|
+
module Actions
|
|
4
|
+
class EditActionComponent < Jquard::ApplicationComponent
|
|
5
|
+
def initialize(action:, resource:, record:)
|
|
6
|
+
@action = action
|
|
7
|
+
@resource = resource
|
|
8
|
+
@record = record
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
private
|
|
12
|
+
|
|
13
|
+
attr_reader :action, :resource, :record
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
module Jquard
|
|
2
|
+
module Tables
|
|
3
|
+
module Columns
|
|
4
|
+
class IconColumnComponent < Jquard::ApplicationComponent
|
|
5
|
+
def initialize(column:, record:)
|
|
6
|
+
@column = column
|
|
7
|
+
@record = record
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
private
|
|
11
|
+
|
|
12
|
+
attr_reader :column, :record
|
|
13
|
+
|
|
14
|
+
def state
|
|
15
|
+
column.state_for(record)
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
module Jquard
|
|
2
|
+
module Tables
|
|
3
|
+
module Columns
|
|
4
|
+
class TextColumnComponent < Jquard::ApplicationComponent
|
|
5
|
+
def initialize(column:, record:)
|
|
6
|
+
@column = column
|
|
7
|
+
@record = record
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
private
|
|
11
|
+
|
|
12
|
+
attr_reader :column, :record
|
|
13
|
+
|
|
14
|
+
def display
|
|
15
|
+
column.display_value(record)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def badge_class
|
|
19
|
+
"jq-badge jq-badge--#{column.color_for(column.state_for(record))}"
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
<div class="jq-card">
|
|
2
|
+
<% if table.searchable? %>
|
|
3
|
+
<div class="jq-table-toolbar">
|
|
4
|
+
<%= form_with url: search_url, method: :get, class: "jq-search" do |form| %>
|
|
5
|
+
<% query_params.except(:q, :page).each do |key, value| %>
|
|
6
|
+
<%= form.hidden_field key, value: value %>
|
|
7
|
+
<% end %>
|
|
8
|
+
<%= helpers.jquard_icon("magnifying-glass", css_class: "jq-search-icon") %>
|
|
9
|
+
<%= form.search_field :q, value: query_params[:q], placeholder: "Search",
|
|
10
|
+
class: "jq-search-input", autocomplete: "off" %>
|
|
11
|
+
<% end %>
|
|
12
|
+
</div>
|
|
13
|
+
<% end %>
|
|
14
|
+
|
|
15
|
+
<div class="jq-table-scroll">
|
|
16
|
+
<table class="jq-table">
|
|
17
|
+
<thead>
|
|
18
|
+
<tr>
|
|
19
|
+
<% table.columns.each do |column| %>
|
|
20
|
+
<th>
|
|
21
|
+
<% if column.sortable? %>
|
|
22
|
+
<%= link_to sort_url(column), class: "jq-sort-link" do %>
|
|
23
|
+
<span><%= column.label %></span>
|
|
24
|
+
<%= helpers.jquard_icon(sort_icon(column), css_class: "jq-sort-icon") %>
|
|
25
|
+
<% end %>
|
|
26
|
+
<% else %>
|
|
27
|
+
<%= column.label %>
|
|
28
|
+
<% end %>
|
|
29
|
+
</th>
|
|
30
|
+
<% end %>
|
|
31
|
+
<% if table.record_actions.any? %>
|
|
32
|
+
<th class="jq-actions-header"></th>
|
|
33
|
+
<% end %>
|
|
34
|
+
</tr>
|
|
35
|
+
</thead>
|
|
36
|
+
<tbody>
|
|
37
|
+
<% result.records.each do |record| %>
|
|
38
|
+
<tr>
|
|
39
|
+
<% table.columns.each do |column| %>
|
|
40
|
+
<td><%= render column.component_class.new(column: column, record: record) %></td>
|
|
41
|
+
<% end %>
|
|
42
|
+
<% if table.record_actions.any? %>
|
|
43
|
+
<td class="jq-row-actions">
|
|
44
|
+
<% table.record_actions.each do |action| %>
|
|
45
|
+
<%= render action.component_class.new(action: action, resource: resource, record: record) %>
|
|
46
|
+
<% end %>
|
|
47
|
+
</td>
|
|
48
|
+
<% end %>
|
|
49
|
+
</tr>
|
|
50
|
+
<% end %>
|
|
51
|
+
<% if result.records.empty? %>
|
|
52
|
+
<tr>
|
|
53
|
+
<td colspan="<%= table.columns.size + (table.record_actions.any? ? 1 : 0) %>" class="jq-empty-state">No records found</td>
|
|
54
|
+
</tr>
|
|
55
|
+
<% end %>
|
|
56
|
+
</tbody>
|
|
57
|
+
</table>
|
|
58
|
+
</div>
|
|
59
|
+
|
|
60
|
+
<div class="jq-table-footer">
|
|
61
|
+
<nav class="jq-pagination" aria-label="Pagination">
|
|
62
|
+
<span class="jq-pagination-overview">
|
|
63
|
+
Showing <%= result.from %> to <%= result.to %> of <%= result.total_count %> results
|
|
64
|
+
</span>
|
|
65
|
+
|
|
66
|
+
<div class="jq-pagination-per-page">
|
|
67
|
+
<%= form_with url: search_url, method: :get do |form| %>
|
|
68
|
+
<% query_params.except(:per_page, :page).each do |key, value| %>
|
|
69
|
+
<%= form.hidden_field key, value: value %>
|
|
70
|
+
<% end %>
|
|
71
|
+
<label class="jq-input-group">
|
|
72
|
+
<span class="jq-input-group-prefix">Per page</span>
|
|
73
|
+
<%= form.select :per_page,
|
|
74
|
+
options_for_select(Jquard::Tables::Query::PER_PAGE_OPTIONS, result.per_page),
|
|
75
|
+
{}, class: "jq-per-page-select", data: { jq_autosubmit: true } %>
|
|
76
|
+
</label>
|
|
77
|
+
<% end %>
|
|
78
|
+
</div>
|
|
79
|
+
|
|
80
|
+
<ol class="jq-pagination-items">
|
|
81
|
+
<% if result.page > 1 %>
|
|
82
|
+
<li class="jq-pagination-item">
|
|
83
|
+
<%= link_to page_url(result.page - 1), class: "jq-pagination-item-btn", aria: { label: "Previous" } do %>
|
|
84
|
+
<%= helpers.jquard_icon("chevron-left", css_class: "jq-pagination-icon") %>
|
|
85
|
+
<% end %>
|
|
86
|
+
</li>
|
|
87
|
+
<% end %>
|
|
88
|
+
|
|
89
|
+
<% page_items.each do |item| %>
|
|
90
|
+
<% if item == :gap %>
|
|
91
|
+
<li class="jq-pagination-item jq-pagination-item--disabled">
|
|
92
|
+
<span class="jq-pagination-item-btn"><span class="jq-pagination-item-label">…</span></span>
|
|
93
|
+
</li>
|
|
94
|
+
<% else %>
|
|
95
|
+
<li class="<%= class_names("jq-pagination-item", "jq-pagination-item--active" => item == result.page) %>">
|
|
96
|
+
<%= link_to page_url(item), class: "jq-pagination-item-btn" do %>
|
|
97
|
+
<span class="jq-pagination-item-label"><%= item %></span>
|
|
98
|
+
<% end %>
|
|
99
|
+
</li>
|
|
100
|
+
<% end %>
|
|
101
|
+
<% end %>
|
|
102
|
+
|
|
103
|
+
<% if result.page < result.pages %>
|
|
104
|
+
<li class="jq-pagination-item">
|
|
105
|
+
<%= link_to page_url(result.page + 1), class: "jq-pagination-item-btn", aria: { label: "Next" } do %>
|
|
106
|
+
<%= helpers.jquard_icon("chevron-right", css_class: "jq-pagination-icon") %>
|
|
107
|
+
<% end %>
|
|
108
|
+
</li>
|
|
109
|
+
<% end %>
|
|
110
|
+
</ol>
|
|
111
|
+
</nav>
|
|
112
|
+
</div>
|
|
113
|
+
</div>
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
module Jquard
|
|
2
|
+
module Tables
|
|
3
|
+
class TableComponent < Jquard::ApplicationComponent
|
|
4
|
+
def initialize(table:, resource:, result:, query_params: {})
|
|
5
|
+
@table = table
|
|
6
|
+
@resource = resource
|
|
7
|
+
@result = result
|
|
8
|
+
@query_params = query_params.to_h.symbolize_keys
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
private
|
|
12
|
+
|
|
13
|
+
attr_reader :table, :resource, :result, :query_params
|
|
14
|
+
|
|
15
|
+
def search_url
|
|
16
|
+
helpers.resource_path(resource.slug)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def url_with(overrides)
|
|
20
|
+
helpers.resource_path(resource.slug, **query_params.merge(overrides).compact_blank)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def current_sort?(column)
|
|
24
|
+
result.sort == column.name.to_s
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def sort_url(column)
|
|
28
|
+
direction = current_sort?(column) && result.direction == "asc" ? "desc" : "asc"
|
|
29
|
+
url_with(sort: column.name, direction: direction, page: nil)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def sort_icon(column)
|
|
33
|
+
return "chevron-up-down" unless current_sort?(column)
|
|
34
|
+
|
|
35
|
+
result.direction == "asc" ? "chevron-up" : "chevron-down"
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def page_url(page)
|
|
39
|
+
url_with(page: page == 1 ? nil : page)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def page_items
|
|
43
|
+
return (1..result.pages).to_a if result.pages <= 5
|
|
44
|
+
|
|
45
|
+
window = ((result.page - 1)..(result.page + 1)).select { |page| page > 1 && page < result.pages }
|
|
46
|
+
items = [ 1 ]
|
|
47
|
+
items << :gap if window.first > 2
|
|
48
|
+
items.concat(window)
|
|
49
|
+
items << :gap if window.last < result.pages - 1
|
|
50
|
+
items << result.pages
|
|
51
|
+
items
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
@@ -1,4 +1,20 @@
|
|
|
1
1
|
module Jquard
|
|
2
2
|
class ApplicationController < ActionController::Base
|
|
3
|
+
before_action :authenticate_jquard_user!
|
|
4
|
+
|
|
5
|
+
private
|
|
6
|
+
|
|
7
|
+
def authenticate_jquard_user!
|
|
8
|
+
auth = Jquard.config.authenticate
|
|
9
|
+
|
|
10
|
+
unless auth
|
|
11
|
+
raise Jquard::Error,
|
|
12
|
+
"Jquard refuses to serve the admin panel without authentication. " \
|
|
13
|
+
"Configure config.authenticate_with in a Jquard.configure block, " \
|
|
14
|
+
"or opt into a public panel explicitly with an empty block: authenticate_with { }."
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
instance_exec(&auth)
|
|
18
|
+
end
|
|
3
19
|
end
|
|
4
20
|
end
|