motor-admin-unosquare 0.4.27
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/LICENSE +661 -0
- data/README.md +217 -0
- data/Rakefile +11 -0
- data/app/channels/motor/application_cable/channel.rb +14 -0
- data/app/channels/motor/application_cable/connection.rb +27 -0
- data/app/channels/motor/notes_channel.rb +9 -0
- data/app/channels/motor/notifications_channel.rb +9 -0
- data/app/controllers/concerns/motor/current_ability.rb +21 -0
- data/app/controllers/concerns/motor/current_user_method.rb +18 -0
- data/app/controllers/concerns/motor/load_and_authorize_dynamic_resource.rb +73 -0
- data/app/controllers/concerns/motor/wrap_io_params.rb +25 -0
- data/app/controllers/motor/active_storage_attachments_controller.rb +64 -0
- data/app/controllers/motor/alerts_controller.rb +82 -0
- data/app/controllers/motor/api_base_controller.rb +33 -0
- data/app/controllers/motor/api_configs_controller.rb +54 -0
- data/app/controllers/motor/application_controller.rb +8 -0
- data/app/controllers/motor/assets_controller.rb +43 -0
- data/app/controllers/motor/audits_controller.rb +16 -0
- data/app/controllers/motor/auth_tokens_controller.rb +36 -0
- data/app/controllers/motor/configs_controller.rb +33 -0
- data/app/controllers/motor/dashboards_controller.rb +64 -0
- data/app/controllers/motor/data_controller.rb +88 -0
- data/app/controllers/motor/forms_controller.rb +61 -0
- data/app/controllers/motor/icons_controller.rb +22 -0
- data/app/controllers/motor/note_tags_controller.rb +13 -0
- data/app/controllers/motor/notes_controller.rb +58 -0
- data/app/controllers/motor/notifications_controller.rb +33 -0
- data/app/controllers/motor/queries_controller.rb +64 -0
- data/app/controllers/motor/reminders_controller.rb +38 -0
- data/app/controllers/motor/resource_default_queries_controller.rb +23 -0
- data/app/controllers/motor/resource_methods_controller.rb +23 -0
- data/app/controllers/motor/resources_controller.rb +26 -0
- data/app/controllers/motor/run_api_requests_controller.rb +56 -0
- data/app/controllers/motor/run_graphql_requests_controller.rb +48 -0
- data/app/controllers/motor/run_queries_controller.rb +69 -0
- data/app/controllers/motor/schema_controller.rb +31 -0
- data/app/controllers/motor/send_alerts_controller.rb +26 -0
- data/app/controllers/motor/sessions_controller.rb +23 -0
- data/app/controllers/motor/slack_conversations_controller.rb +11 -0
- data/app/controllers/motor/tags_controller.rb +11 -0
- data/app/controllers/motor/ui_controller.rb +51 -0
- data/app/controllers/motor/users_for_autocomplete_controller.rb +23 -0
- data/app/jobs/motor/alert_sending_job.rb +13 -0
- data/app/jobs/motor/application_job.rb +6 -0
- data/app/jobs/motor/notify_note_mentions_job.rb +9 -0
- data/app/jobs/motor/notify_reminder_job.rb +9 -0
- data/app/mailers/motor/alerts_mailer.rb +39 -0
- data/app/mailers/motor/application_mailer.rb +33 -0
- data/app/mailers/motor/notifications_mailer.rb +33 -0
- data/app/models/motor/alert.rb +30 -0
- data/app/models/motor/alert_lock.rb +7 -0
- data/app/models/motor/api_config.rb +28 -0
- data/app/models/motor/application_record.rb +18 -0
- data/app/models/motor/audit.rb +13 -0
- data/app/models/motor/config.rb +13 -0
- data/app/models/motor/dashboard.rb +26 -0
- data/app/models/motor/form.rb +23 -0
- data/app/models/motor/note.rb +18 -0
- data/app/models/motor/note_tag.rb +7 -0
- data/app/models/motor/note_tag_tag.rb +8 -0
- data/app/models/motor/notification.rb +14 -0
- data/app/models/motor/query.rb +33 -0
- data/app/models/motor/reminder.rb +13 -0
- data/app/models/motor/resource.rb +15 -0
- data/app/models/motor/tag.rb +7 -0
- data/app/models/motor/taggable_tag.rb +8 -0
- data/app/views/layouts/motor/application.html.erb +17 -0
- data/app/views/layouts/motor/mailer.html.erb +72 -0
- data/app/views/motor/alerts_mailer/alert_email.html.erb +54 -0
- data/app/views/motor/notifications_mailer/notify_mention_email.html.erb +28 -0
- data/app/views/motor/notifications_mailer/notify_reminder_email.html.erb +28 -0
- data/app/views/motor/ui/show.html.erb +1 -0
- data/config/locales/el.yml +420 -0
- data/config/locales/en.yml +340 -0
- data/config/locales/es.yml +420 -0
- data/config/locales/pt.yml +416 -0
- data/config/routes.rb +65 -0
- data/lib/generators/motor/install_generator.rb +24 -0
- data/lib/generators/motor/install_notes_generator.rb +22 -0
- data/lib/generators/motor/migration.rb +17 -0
- data/lib/generators/motor/templates/install.rb +271 -0
- data/lib/generators/motor/templates/install_api_configs.rb +86 -0
- data/lib/generators/motor/templates/install_notes.rb +83 -0
- data/lib/generators/motor/templates/upgrade_motor_api_actions.rb +71 -0
- data/lib/generators/motor/upgrade_generator.rb +43 -0
- data/lib/motor/active_record_utils/action_text_attribute_patch.rb +19 -0
- data/lib/motor/active_record_utils/active_record_connection_column_patch.rb +14 -0
- data/lib/motor/active_record_utils/active_record_filter.rb +405 -0
- data/lib/motor/active_record_utils/active_storage_blob_patch.rb +30 -0
- data/lib/motor/active_record_utils/active_storage_links_extension.rb +11 -0
- data/lib/motor/active_record_utils/defined_scopes_extension.rb +25 -0
- data/lib/motor/active_record_utils/fetch_methods.rb +24 -0
- data/lib/motor/active_record_utils/types.rb +64 -0
- data/lib/motor/active_record_utils.rb +45 -0
- data/lib/motor/admin.rb +141 -0
- data/lib/motor/alerts/persistance.rb +97 -0
- data/lib/motor/alerts/scheduled_alerts_cache.rb +29 -0
- data/lib/motor/alerts/scheduler.rb +30 -0
- data/lib/motor/alerts/slack_sender.rb +74 -0
- data/lib/motor/alerts.rb +52 -0
- data/lib/motor/api_configs.rb +41 -0
- data/lib/motor/api_query/apply_scope.rb +44 -0
- data/lib/motor/api_query/build_json.rb +171 -0
- data/lib/motor/api_query/build_meta.rb +20 -0
- data/lib/motor/api_query/filter.rb +125 -0
- data/lib/motor/api_query/paginate.rb +19 -0
- data/lib/motor/api_query/search.rb +60 -0
- data/lib/motor/api_query/sort.rb +64 -0
- data/lib/motor/api_query.rb +24 -0
- data/lib/motor/assets.rb +62 -0
- data/lib/motor/build_schema/active_storage_attachment_schema.rb +125 -0
- data/lib/motor/build_schema/adjust_devise_model_schema.rb +60 -0
- data/lib/motor/build_schema/apply_permissions.rb +64 -0
- data/lib/motor/build_schema/defaults.rb +66 -0
- data/lib/motor/build_schema/find_display_column.rb +65 -0
- data/lib/motor/build_schema/find_icon.rb +135 -0
- data/lib/motor/build_schema/find_searchable_columns.rb +33 -0
- data/lib/motor/build_schema/load_from_rails.rb +361 -0
- data/lib/motor/build_schema/merge_schema_configs.rb +157 -0
- data/lib/motor/build_schema/reorder_schema.rb +88 -0
- data/lib/motor/build_schema/utils.rb +31 -0
- data/lib/motor/build_schema.rb +125 -0
- data/lib/motor/cancan_utils/ability_patch.rb +31 -0
- data/lib/motor/cancan_utils/can_manage_all.rb +14 -0
- data/lib/motor/cancan_utils.rb +9 -0
- data/lib/motor/configs/build_configs_hash.rb +90 -0
- data/lib/motor/configs/build_ui_app_tag.rb +177 -0
- data/lib/motor/configs/load_from_cache.rb +110 -0
- data/lib/motor/configs/sync_from_file.rb +35 -0
- data/lib/motor/configs/sync_from_hash.rb +159 -0
- data/lib/motor/configs/sync_middleware.rb +72 -0
- data/lib/motor/configs/sync_with_remote.rb +47 -0
- data/lib/motor/configs/write_to_file.rb +36 -0
- data/lib/motor/configs.rb +39 -0
- data/lib/motor/dashboards/persistance.rb +73 -0
- data/lib/motor/dashboards.rb +8 -0
- data/lib/motor/forms/persistance.rb +93 -0
- data/lib/motor/forms.rb +8 -0
- data/lib/motor/hash_serializer.rb +21 -0
- data/lib/motor/net_http_utils.rb +50 -0
- data/lib/motor/notes/notify_mentions.rb +71 -0
- data/lib/motor/notes/notify_reminder.rb +48 -0
- data/lib/motor/notes/persist.rb +36 -0
- data/lib/motor/notes/reminders_scheduler.rb +39 -0
- data/lib/motor/notes/tags.rb +34 -0
- data/lib/motor/notes.rb +12 -0
- data/lib/motor/queries/persistance.rb +90 -0
- data/lib/motor/queries/postgresql_exec_query.rb +28 -0
- data/lib/motor/queries/render_sql_template.rb +61 -0
- data/lib/motor/queries/run_query.rb +278 -0
- data/lib/motor/queries.rb +11 -0
- data/lib/motor/railtie.rb +11 -0
- data/lib/motor/resources/custom_sql_columns_cache.rb +17 -0
- data/lib/motor/resources/fetch_configured_model.rb +269 -0
- data/lib/motor/resources/persist_configs.rb +232 -0
- data/lib/motor/resources.rb +19 -0
- data/lib/motor/slack/client.rb +62 -0
- data/lib/motor/slack.rb +16 -0
- data/lib/motor/tags.rb +32 -0
- data/lib/motor/tasks/motor.rake +50 -0
- data/lib/motor/version.rb +5 -0
- data/lib/motor-admin.rb +3 -0
- data/lib/motor.rb +87 -0
- data/ui/dist/fonts/ionicons-1a64b9a9a172d067c820.woff2 +0 -0
- data/ui/dist/icons/2fa.svg.gz +0 -0
- data/ui/dist/icons/3d-cube-sphere.svg.gz +0 -0
- data/ui/dist/icons/3d-rotate.svg.gz +0 -0
- data/ui/dist/icons/a-b-off.svg.gz +0 -0
- data/ui/dist/icons/a-b.svg.gz +0 -0
- data/ui/dist/icons/abacus.svg.gz +0 -0
- data/ui/dist/icons/access-point-off.svg.gz +0 -0
- data/ui/dist/icons/access-point.svg.gz +0 -0
- data/ui/dist/icons/accessible-off.svg.gz +0 -0
- data/ui/dist/icons/accessible.svg.gz +0 -0
- data/ui/dist/icons/activity-heartbeat.svg.gz +0 -0
- data/ui/dist/icons/activity.svg.gz +0 -0
- data/ui/dist/icons/ad-2.svg.gz +0 -0
- data/ui/dist/icons/ad.svg.gz +0 -0
- data/ui/dist/icons/address-book.svg.gz +0 -0
- data/ui/dist/icons/adjustments-alt.svg.gz +0 -0
- data/ui/dist/icons/adjustments-horizontal.svg.gz +0 -0
- data/ui/dist/icons/adjustments-off.svg.gz +0 -0
- data/ui/dist/icons/adjustments.svg.gz +0 -0
- data/ui/dist/icons/aerial-lift.svg.gz +0 -0
- data/ui/dist/icons/affiliate.svg.gz +0 -0
- data/ui/dist/icons/alarm-off.svg.gz +0 -0
- data/ui/dist/icons/alarm.svg.gz +0 -0
- data/ui/dist/icons/album.svg.gz +0 -0
- data/ui/dist/icons/alert-circle.svg.gz +0 -0
- data/ui/dist/icons/alert-octagon.svg.gz +0 -0
- data/ui/dist/icons/alert-triangle.svg.gz +0 -0
- data/ui/dist/icons/alien.svg.gz +0 -0
- data/ui/dist/icons/align-center.svg.gz +0 -0
- data/ui/dist/icons/align-justified.svg.gz +0 -0
- data/ui/dist/icons/align-left.svg.gz +0 -0
- data/ui/dist/icons/align-right.svg.gz +0 -0
- data/ui/dist/icons/ambulance.svg.gz +0 -0
- data/ui/dist/icons/anchor-off.svg.gz +0 -0
- data/ui/dist/icons/anchor.svg.gz +0 -0
- data/ui/dist/icons/angle.svg.gz +0 -0
- data/ui/dist/icons/ankh.svg.gz +0 -0
- data/ui/dist/icons/antenna-bars-1.svg.gz +0 -0
- data/ui/dist/icons/antenna-bars-2.svg.gz +0 -0
- data/ui/dist/icons/antenna-bars-3.svg.gz +0 -0
- data/ui/dist/icons/antenna-bars-4.svg.gz +0 -0
- data/ui/dist/icons/antenna-bars-5.svg.gz +0 -0
- data/ui/dist/icons/antenna-bars-off.svg.gz +0 -0
- data/ui/dist/icons/antenna.svg.gz +0 -0
- data/ui/dist/icons/aperture.svg.gz +0 -0
- data/ui/dist/icons/api-app-off.svg.gz +0 -0
- data/ui/dist/icons/api-app.svg.gz +0 -0
- data/ui/dist/icons/api-off.svg.gz +0 -0
- data/ui/dist/icons/api.svg.gz +0 -0
- data/ui/dist/icons/app-window.svg.gz +0 -0
- data/ui/dist/icons/apple.svg.gz +0 -0
- data/ui/dist/icons/apps-off.svg.gz +0 -0
- data/ui/dist/icons/apps.svg.gz +0 -0
- data/ui/dist/icons/archive-off.svg.gz +0 -0
- data/ui/dist/icons/archive.svg.gz +0 -0
- data/ui/dist/icons/armchair-2.svg.gz +0 -0
- data/ui/dist/icons/armchair.svg.gz +0 -0
- data/ui/dist/icons/arrow-autofit-content.svg.gz +0 -0
- data/ui/dist/icons/arrow-autofit-down.svg.gz +0 -0
- data/ui/dist/icons/arrow-autofit-height.svg.gz +0 -0
- data/ui/dist/icons/arrow-autofit-left.svg.gz +0 -0
- data/ui/dist/icons/arrow-autofit-right.svg.gz +0 -0
- data/ui/dist/icons/arrow-autofit-up.svg.gz +0 -0
- data/ui/dist/icons/arrow-autofit-width.svg.gz +0 -0
- data/ui/dist/icons/arrow-back-up.svg.gz +0 -0
- data/ui/dist/icons/arrow-back.svg.gz +0 -0
- data/ui/dist/icons/arrow-bar-down.svg.gz +0 -0
- data/ui/dist/icons/arrow-bar-left.svg.gz +0 -0
- data/ui/dist/icons/arrow-bar-right.svg.gz +0 -0
- data/ui/dist/icons/arrow-bar-to-down.svg.gz +0 -0
- data/ui/dist/icons/arrow-bar-to-left.svg.gz +0 -0
- data/ui/dist/icons/arrow-bar-to-right.svg.gz +0 -0
- data/ui/dist/icons/arrow-bar-to-up.svg.gz +0 -0
- data/ui/dist/icons/arrow-bar-up.svg.gz +0 -0
- data/ui/dist/icons/arrow-bear-left-2.svg.gz +0 -0
- data/ui/dist/icons/arrow-bear-left.svg.gz +0 -0
- data/ui/dist/icons/arrow-bear-right-2.svg.gz +0 -0
- data/ui/dist/icons/arrow-bear-right.svg.gz +0 -0
- data/ui/dist/icons/arrow-big-down-line.svg.gz +0 -0
- data/ui/dist/icons/arrow-big-down-lines.svg.gz +0 -0
- data/ui/dist/icons/arrow-big-down.svg.gz +0 -0
- data/ui/dist/icons/arrow-big-left-line.svg.gz +0 -0
- data/ui/dist/icons/arrow-big-left-lines.svg.gz +0 -0
- data/ui/dist/icons/arrow-big-left.svg.gz +0 -0
- data/ui/dist/icons/arrow-big-right-line.svg.gz +0 -0
- data/ui/dist/icons/arrow-big-right-lines.svg.gz +0 -0
- data/ui/dist/icons/arrow-big-right.svg.gz +0 -0
- data/ui/dist/icons/arrow-big-top.svg.gz +0 -0
- data/ui/dist/icons/arrow-big-up-line.svg.gz +0 -0
- data/ui/dist/icons/arrow-big-up-lines.svg.gz +0 -0
- data/ui/dist/icons/arrow-bottom-bar.svg.gz +0 -0
- data/ui/dist/icons/arrow-bottom-circle.svg.gz +0 -0
- data/ui/dist/icons/arrow-bottom-square.svg.gz +0 -0
- data/ui/dist/icons/arrow-bottom-tail.svg.gz +0 -0
- data/ui/dist/icons/arrow-curve-left.svg.gz +0 -0
- data/ui/dist/icons/arrow-curve-right.svg.gz +0 -0
- data/ui/dist/icons/arrow-down-circle.svg.gz +0 -0
- data/ui/dist/icons/arrow-down-left-circle.svg.gz +0 -0
- data/ui/dist/icons/arrow-down-left.svg.gz +0 -0
- data/ui/dist/icons/arrow-down-right-circle.svg.gz +0 -0
- data/ui/dist/icons/arrow-down-right.svg.gz +0 -0
- data/ui/dist/icons/arrow-down.svg.gz +0 -0
- data/ui/dist/icons/arrow-fork.svg.gz +0 -0
- data/ui/dist/icons/arrow-forward-up.svg.gz +0 -0
- data/ui/dist/icons/arrow-forward.svg.gz +0 -0
- data/ui/dist/icons/arrow-left-bar.svg.gz +0 -0
- data/ui/dist/icons/arrow-left-circle.svg.gz +0 -0
- data/ui/dist/icons/arrow-left-right.svg.gz +0 -0
- data/ui/dist/icons/arrow-left-square.svg.gz +0 -0
- data/ui/dist/icons/arrow-left-tail.svg.gz +0 -0
- data/ui/dist/icons/arrow-left.svg.gz +0 -0
- data/ui/dist/icons/arrow-loop-left-2.svg.gz +0 -0
- data/ui/dist/icons/arrow-loop-left.svg.gz +0 -0
- data/ui/dist/icons/arrow-loop-right-2.svg.gz +0 -0
- data/ui/dist/icons/arrow-loop-right.svg.gz +0 -0
- data/ui/dist/icons/arrow-merge.svg.gz +0 -0
- data/ui/dist/icons/arrow-narrow-down.svg.gz +0 -0
- data/ui/dist/icons/arrow-narrow-left.svg.gz +0 -0
- data/ui/dist/icons/arrow-narrow-right.svg.gz +0 -0
- data/ui/dist/icons/arrow-narrow-up.svg.gz +0 -0
- data/ui/dist/icons/arrow-ramp-left-2.svg.gz +0 -0
- data/ui/dist/icons/arrow-ramp-left-3.svg.gz +0 -0
- data/ui/dist/icons/arrow-ramp-left.svg.gz +0 -0
- data/ui/dist/icons/arrow-ramp-right-2.svg.gz +0 -0
- data/ui/dist/icons/arrow-ramp-right-3.svg.gz +0 -0
- data/ui/dist/icons/arrow-ramp-right.svg.gz +0 -0
- data/ui/dist/icons/arrow-right-bar.svg.gz +0 -0
- data/ui/dist/icons/arrow-right-circle.svg.gz +0 -0
- data/ui/dist/icons/arrow-right-square.svg.gz +0 -0
- data/ui/dist/icons/arrow-right-tail.svg.gz +0 -0
- data/ui/dist/icons/arrow-right.svg.gz +0 -0
- data/ui/dist/icons/arrow-rotary-first-left.svg.gz +0 -0
- data/ui/dist/icons/arrow-rotary-first-right.svg.gz +0 -0
- data/ui/dist/icons/arrow-rotary-last-left.svg.gz +0 -0
- data/ui/dist/icons/arrow-rotary-last-right.svg.gz +0 -0
- data/ui/dist/icons/arrow-rotary-left.svg.gz +0 -0
- data/ui/dist/icons/arrow-rotary-right.svg.gz +0 -0
- data/ui/dist/icons/arrow-rotary-straight.svg.gz +0 -0
- data/ui/dist/icons/arrow-sharp-turn-left.svg.gz +0 -0
- data/ui/dist/icons/arrow-sharp-turn-right.svg.gz +0 -0
- data/ui/dist/icons/arrow-top-bar.svg.gz +0 -0
- data/ui/dist/icons/arrow-top-circle.svg.gz +0 -0
- data/ui/dist/icons/arrow-top-square.svg.gz +0 -0
- data/ui/dist/icons/arrow-top-tail.svg.gz +0 -0
- data/ui/dist/icons/arrow-up-circle.svg.gz +0 -0
- data/ui/dist/icons/arrow-up-left-circle.svg.gz +0 -0
- data/ui/dist/icons/arrow-up-left.svg.gz +0 -0
- data/ui/dist/icons/arrow-up-right-circle.svg.gz +0 -0
- data/ui/dist/icons/arrow-up-right.svg.gz +0 -0
- data/ui/dist/icons/arrow-up.svg.gz +0 -0
- data/ui/dist/icons/arrow-wave-left-down.svg.gz +0 -0
- data/ui/dist/icons/arrow-wave-left-up.svg.gz +0 -0
- data/ui/dist/icons/arrow-wave-right-down.svg.gz +0 -0
- data/ui/dist/icons/arrow-wave-right-up.svg.gz +0 -0
- data/ui/dist/icons/arrows-cross.svg.gz +0 -0
- data/ui/dist/icons/arrows-diagonal-2.svg.gz +0 -0
- data/ui/dist/icons/arrows-diagonal-minimize-2.svg.gz +0 -0
- data/ui/dist/icons/arrows-diagonal-minimize.svg.gz +0 -0
- data/ui/dist/icons/arrows-diagonal.svg.gz +0 -0
- data/ui/dist/icons/arrows-double-ne-sw.svg.gz +0 -0
- data/ui/dist/icons/arrows-double-nw-se.svg.gz +0 -0
- data/ui/dist/icons/arrows-double-se-nw.svg.gz +0 -0
- data/ui/dist/icons/arrows-double-sw-ne.svg.gz +0 -0
- data/ui/dist/icons/arrows-down-up.svg.gz +0 -0
- data/ui/dist/icons/arrows-down.svg.gz +0 -0
- data/ui/dist/icons/arrows-horizontal.svg.gz +0 -0
- data/ui/dist/icons/arrows-join-2.svg.gz +0 -0
- data/ui/dist/icons/arrows-join.svg.gz +0 -0
- data/ui/dist/icons/arrows-left-down.svg.gz +0 -0
- data/ui/dist/icons/arrows-left-right.svg.gz +0 -0
- data/ui/dist/icons/arrows-left.svg.gz +0 -0
- data/ui/dist/icons/arrows-maximize.svg.gz +0 -0
- data/ui/dist/icons/arrows-minimize.svg.gz +0 -0
- data/ui/dist/icons/arrows-random.svg.gz +0 -0
- data/ui/dist/icons/arrows-right-down.svg.gz +0 -0
- data/ui/dist/icons/arrows-right-left.svg.gz +0 -0
- data/ui/dist/icons/arrows-right.svg.gz +0 -0
- data/ui/dist/icons/arrows-shuffle-2.svg.gz +0 -0
- data/ui/dist/icons/arrows-shuffle.svg.gz +0 -0
- data/ui/dist/icons/arrows-sort.svg.gz +0 -0
- data/ui/dist/icons/arrows-split-2.svg.gz +0 -0
- data/ui/dist/icons/arrows-split.svg.gz +0 -0
- data/ui/dist/icons/arrows-up-down.svg.gz +0 -0
- data/ui/dist/icons/arrows-up-left.svg.gz +0 -0
- data/ui/dist/icons/arrows-up-right.svg.gz +0 -0
- data/ui/dist/icons/arrows-up.svg.gz +0 -0
- data/ui/dist/icons/arrows-vertical.svg.gz +0 -0
- data/ui/dist/icons/artboard-off.svg.gz +0 -0
- data/ui/dist/icons/artboard.svg.gz +0 -0
- data/ui/dist/icons/aspect-ratio-off.svg.gz +0 -0
- data/ui/dist/icons/aspect-ratio.svg.gz +0 -0
- data/ui/dist/icons/asset.svg.gz +0 -0
- data/ui/dist/icons/asterisk-simple.svg.gz +0 -0
- data/ui/dist/icons/asterisk.svg.gz +0 -0
- data/ui/dist/icons/at-off.svg.gz +0 -0
- data/ui/dist/icons/at.svg.gz +0 -0
- data/ui/dist/icons/atom-2.svg.gz +0 -0
- data/ui/dist/icons/atom-off.svg.gz +0 -0
- data/ui/dist/icons/atom.svg.gz +0 -0
- data/ui/dist/icons/augmented-reality.svg.gz +0 -0
- data/ui/dist/icons/award-off.svg.gz +0 -0
- data/ui/dist/icons/award.svg.gz +0 -0
- data/ui/dist/icons/axe.svg.gz +0 -0
- data/ui/dist/icons/axis-x.svg.gz +0 -0
- data/ui/dist/icons/axis-y.svg.gz +0 -0
- data/ui/dist/icons/baby-carriage.svg.gz +0 -0
- data/ui/dist/icons/backhoe.svg.gz +0 -0
- data/ui/dist/icons/backpack.svg.gz +0 -0
- data/ui/dist/icons/backspace.svg.gz +0 -0
- data/ui/dist/icons/badge-off.svg.gz +0 -0
- data/ui/dist/icons/badge.svg.gz +0 -0
- data/ui/dist/icons/badges-off.svg.gz +0 -0
- data/ui/dist/icons/badges.svg.gz +0 -0
- data/ui/dist/icons/ball-american-football.svg.gz +0 -0
- data/ui/dist/icons/ball-baseball.svg.gz +0 -0
- data/ui/dist/icons/ball-basketball.svg.gz +0 -0
- data/ui/dist/icons/ball-bowling.svg.gz +0 -0
- data/ui/dist/icons/ball-football-off.svg.gz +0 -0
- data/ui/dist/icons/ball-football.svg.gz +0 -0
- data/ui/dist/icons/ball-tennis.svg.gz +0 -0
- data/ui/dist/icons/ball-volleyball.svg.gz +0 -0
- data/ui/dist/icons/ballon-off.svg.gz +0 -0
- data/ui/dist/icons/ballon.svg.gz +0 -0
- data/ui/dist/icons/ballpen-off.svg.gz +0 -0
- data/ui/dist/icons/ballpen.svg.gz +0 -0
- data/ui/dist/icons/ban.svg.gz +0 -0
- data/ui/dist/icons/bandage.svg.gz +0 -0
- data/ui/dist/icons/barbell-off.svg.gz +0 -0
- data/ui/dist/icons/barbell.svg.gz +0 -0
- data/ui/dist/icons/barcode-off.svg.gz +0 -0
- data/ui/dist/icons/barcode.svg.gz +0 -0
- data/ui/dist/icons/barrel-off.svg.gz +0 -0
- data/ui/dist/icons/barrel.svg.gz +0 -0
- data/ui/dist/icons/barrier-block-off.svg.gz +0 -0
- data/ui/dist/icons/barrier-block.svg.gz +0 -0
- data/ui/dist/icons/baseline.svg.gz +0 -0
- data/ui/dist/icons/basket-off.svg.gz +0 -0
- data/ui/dist/icons/basket.svg.gz +0 -0
- data/ui/dist/icons/bath-off.svg.gz +0 -0
- data/ui/dist/icons/bath.svg.gz +0 -0
- data/ui/dist/icons/battery-1.svg.gz +0 -0
- data/ui/dist/icons/battery-2.svg.gz +0 -0
- data/ui/dist/icons/battery-3.svg.gz +0 -0
- data/ui/dist/icons/battery-4.svg.gz +0 -0
- data/ui/dist/icons/battery-automotive.svg.gz +0 -0
- data/ui/dist/icons/battery-charging-2.svg.gz +0 -0
- data/ui/dist/icons/battery-charging.svg.gz +0 -0
- data/ui/dist/icons/battery-eco.svg.gz +0 -0
- data/ui/dist/icons/battery-off.svg.gz +0 -0
- data/ui/dist/icons/battery.svg.gz +0 -0
- data/ui/dist/icons/beach-off.svg.gz +0 -0
- data/ui/dist/icons/beach.svg.gz +0 -0
- data/ui/dist/icons/bed-off.svg.gz +0 -0
- data/ui/dist/icons/bed.svg.gz +0 -0
- data/ui/dist/icons/beer-off.svg.gz +0 -0
- data/ui/dist/icons/beer.svg.gz +0 -0
- data/ui/dist/icons/bell-minus.svg.gz +0 -0
- data/ui/dist/icons/bell-off.svg.gz +0 -0
- data/ui/dist/icons/bell-plus.svg.gz +0 -0
- data/ui/dist/icons/bell-ringing-2.svg.gz +0 -0
- data/ui/dist/icons/bell-ringing.svg.gz +0 -0
- data/ui/dist/icons/bell-school.svg.gz +0 -0
- data/ui/dist/icons/bell-x.svg.gz +0 -0
- data/ui/dist/icons/bell-z.svg.gz +0 -0
- data/ui/dist/icons/bell.svg.gz +0 -0
- data/ui/dist/icons/bible.svg.gz +0 -0
- data/ui/dist/icons/bike-off.svg.gz +0 -0
- data/ui/dist/icons/bike.svg.gz +0 -0
- data/ui/dist/icons/binary.svg.gz +0 -0
- data/ui/dist/icons/biohazard-off.svg.gz +0 -0
- data/ui/dist/icons/biohazard.svg.gz +0 -0
- data/ui/dist/icons/blockquote.svg.gz +0 -0
- data/ui/dist/icons/bluetooth-connected.svg.gz +0 -0
- data/ui/dist/icons/bluetooth-off.svg.gz +0 -0
- data/ui/dist/icons/bluetooth-x.svg.gz +0 -0
- data/ui/dist/icons/bluetooth.svg.gz +0 -0
- data/ui/dist/icons/blur.svg.gz +0 -0
- data/ui/dist/icons/bold-off.svg.gz +0 -0
- data/ui/dist/icons/bold.svg.gz +0 -0
- data/ui/dist/icons/bolt-off.svg.gz +0 -0
- data/ui/dist/icons/bolt.svg.gz +0 -0
- data/ui/dist/icons/bone-off.svg.gz +0 -0
- data/ui/dist/icons/bone.svg.gz +0 -0
- data/ui/dist/icons/book-2.svg.gz +0 -0
- data/ui/dist/icons/book-download.svg.gz +0 -0
- data/ui/dist/icons/book-off.svg.gz +0 -0
- data/ui/dist/icons/book-upload.svg.gz +0 -0
- data/ui/dist/icons/book.svg.gz +0 -0
- data/ui/dist/icons/bookmark-off.svg.gz +0 -0
- data/ui/dist/icons/bookmark.svg.gz +0 -0
- data/ui/dist/icons/bookmarks-off.svg.gz +0 -0
- data/ui/dist/icons/bookmarks.svg.gz +0 -0
- data/ui/dist/icons/books-off.svg.gz +0 -0
- data/ui/dist/icons/books.svg.gz +0 -0
- data/ui/dist/icons/border-all.svg.gz +0 -0
- data/ui/dist/icons/border-bottom.svg.gz +0 -0
- data/ui/dist/icons/border-horizontal.svg.gz +0 -0
- data/ui/dist/icons/border-inner.svg.gz +0 -0
- data/ui/dist/icons/border-left.svg.gz +0 -0
- data/ui/dist/icons/border-none.svg.gz +0 -0
- data/ui/dist/icons/border-outer.svg.gz +0 -0
- data/ui/dist/icons/border-radius.svg.gz +0 -0
- data/ui/dist/icons/border-right.svg.gz +0 -0
- data/ui/dist/icons/border-style-2.svg.gz +0 -0
- data/ui/dist/icons/border-style.svg.gz +0 -0
- data/ui/dist/icons/border-top.svg.gz +0 -0
- data/ui/dist/icons/border-vertical.svg.gz +0 -0
- data/ui/dist/icons/bottle.svg.gz +0 -0
- data/ui/dist/icons/bow.svg.gz +0 -0
- data/ui/dist/icons/box-margin.svg.gz +0 -0
- data/ui/dist/icons/box-model-2.svg.gz +0 -0
- data/ui/dist/icons/box-model.svg.gz +0 -0
- data/ui/dist/icons/box-multiple-0.svg.gz +0 -0
- data/ui/dist/icons/box-multiple-1.svg.gz +0 -0
- data/ui/dist/icons/box-multiple-2.svg.gz +0 -0
- data/ui/dist/icons/box-multiple-3.svg.gz +0 -0
- data/ui/dist/icons/box-multiple-4.svg.gz +0 -0
- data/ui/dist/icons/box-multiple-5.svg.gz +0 -0
- data/ui/dist/icons/box-multiple-6.svg.gz +0 -0
- data/ui/dist/icons/box-multiple-7.svg.gz +0 -0
- data/ui/dist/icons/box-multiple-8.svg.gz +0 -0
- data/ui/dist/icons/box-multiple-9.svg.gz +0 -0
- data/ui/dist/icons/box-multiple.svg.gz +0 -0
- data/ui/dist/icons/box-off.svg.gz +0 -0
- data/ui/dist/icons/box-padding.svg.gz +0 -0
- data/ui/dist/icons/box.svg.gz +0 -0
- data/ui/dist/icons/braces-off.svg.gz +0 -0
- data/ui/dist/icons/braces.svg.gz +0 -0
- data/ui/dist/icons/brackets-off.svg.gz +0 -0
- data/ui/dist/icons/brackets.svg.gz +0 -0
- data/ui/dist/icons/brand-adobe.svg.gz +0 -0
- data/ui/dist/icons/brand-airbnb.svg.gz +0 -0
- data/ui/dist/icons/brand-airtable.svg.gz +0 -0
- data/ui/dist/icons/brand-android.svg.gz +0 -0
- data/ui/dist/icons/brand-angular.svg.gz +0 -0
- data/ui/dist/icons/brand-apple-arcade.svg.gz +0 -0
- data/ui/dist/icons/brand-apple.svg.gz +0 -0
- data/ui/dist/icons/brand-appstore.svg.gz +0 -0
- data/ui/dist/icons/brand-asana.svg.gz +0 -0
- data/ui/dist/icons/brand-behance.svg.gz +0 -0
- data/ui/dist/icons/brand-bing.svg.gz +0 -0
- data/ui/dist/icons/brand-bitbucket.svg.gz +0 -0
- data/ui/dist/icons/brand-booking.svg.gz +0 -0
- data/ui/dist/icons/brand-bootstrap.svg.gz +0 -0
- data/ui/dist/icons/brand-chrome.svg.gz +0 -0
- data/ui/dist/icons/brand-codepen.svg.gz +0 -0
- data/ui/dist/icons/brand-codesandbox.svg.gz +0 -0
- data/ui/dist/icons/brand-css3.svg.gz +0 -0
- data/ui/dist/icons/brand-cucumber.svg.gz +0 -0
- data/ui/dist/icons/brand-debian.svg.gz +0 -0
- data/ui/dist/icons/brand-deviantart.svg.gz +0 -0
- data/ui/dist/icons/brand-discord.svg.gz +0 -0
- data/ui/dist/icons/brand-disqus.svg.gz +0 -0
- data/ui/dist/icons/brand-docker.svg.gz +0 -0
- data/ui/dist/icons/brand-doctrine.svg.gz +0 -0
- data/ui/dist/icons/brand-dribbble.svg.gz +0 -0
- data/ui/dist/icons/brand-edge.svg.gz +0 -0
- data/ui/dist/icons/brand-facebook.svg.gz +0 -0
- data/ui/dist/icons/brand-figma.svg.gz +0 -0
- data/ui/dist/icons/brand-firebase.svg.gz +0 -0
- data/ui/dist/icons/brand-firefox.svg.gz +0 -0
- data/ui/dist/icons/brand-flickr.svg.gz +0 -0
- data/ui/dist/icons/brand-foursquare.svg.gz +0 -0
- data/ui/dist/icons/brand-framer.svg.gz +0 -0
- data/ui/dist/icons/brand-git.svg.gz +0 -0
- data/ui/dist/icons/brand-github.svg.gz +0 -0
- data/ui/dist/icons/brand-gitlab.svg.gz +0 -0
- data/ui/dist/icons/brand-gmail.svg.gz +0 -0
- data/ui/dist/icons/brand-google-analytics.svg.gz +0 -0
- data/ui/dist/icons/brand-google-drive.svg.gz +0 -0
- data/ui/dist/icons/brand-google-play.svg.gz +0 -0
- data/ui/dist/icons/brand-google.svg.gz +0 -0
- data/ui/dist/icons/brand-gravatar.svg.gz +0 -0
- data/ui/dist/icons/brand-hipchat.svg.gz +0 -0
- data/ui/dist/icons/brand-html5.svg.gz +0 -0
- data/ui/dist/icons/brand-instagram.svg.gz +0 -0
- data/ui/dist/icons/brand-intercom.svg.gz +0 -0
- data/ui/dist/icons/brand-javascript.svg.gz +0 -0
- data/ui/dist/icons/brand-kickstarter.svg.gz +0 -0
- data/ui/dist/icons/brand-kotlin.svg.gz +0 -0
- data/ui/dist/icons/brand-lastfm.svg.gz +0 -0
- data/ui/dist/icons/brand-linkedin.svg.gz +0 -0
- data/ui/dist/icons/brand-loom.svg.gz +0 -0
- data/ui/dist/icons/brand-mastercard.svg.gz +0 -0
- data/ui/dist/icons/brand-medium.svg.gz +0 -0
- data/ui/dist/icons/brand-mercedes.svg.gz +0 -0
- data/ui/dist/icons/brand-messenger.svg.gz +0 -0
- data/ui/dist/icons/brand-meta.svg.gz +0 -0
- data/ui/dist/icons/brand-netbeans.svg.gz +0 -0
- data/ui/dist/icons/brand-netflix.svg.gz +0 -0
- data/ui/dist/icons/brand-nextjs.svg.gz +0 -0
- data/ui/dist/icons/brand-notion.svg.gz +0 -0
- data/ui/dist/icons/brand-nuxt.svg.gz +0 -0
- data/ui/dist/icons/brand-nytimes.svg.gz +0 -0
- data/ui/dist/icons/brand-open-source.svg.gz +0 -0
- data/ui/dist/icons/brand-opera.svg.gz +0 -0
- data/ui/dist/icons/brand-pagekit.svg.gz +0 -0
- data/ui/dist/icons/brand-patreon.svg.gz +0 -0
- data/ui/dist/icons/brand-paypal.svg.gz +0 -0
- data/ui/dist/icons/brand-php.svg.gz +0 -0
- data/ui/dist/icons/brand-pinterest.svg.gz +0 -0
- data/ui/dist/icons/brand-pocket.svg.gz +0 -0
- data/ui/dist/icons/brand-producthunt.svg.gz +0 -0
- data/ui/dist/icons/brand-python.svg.gz +0 -0
- data/ui/dist/icons/brand-react-native.svg.gz +0 -0
- data/ui/dist/icons/brand-reddit.svg.gz +0 -0
- data/ui/dist/icons/brand-safari.svg.gz +0 -0
- data/ui/dist/icons/brand-sass.svg.gz +0 -0
- data/ui/dist/icons/brand-sentry.svg.gz +0 -0
- data/ui/dist/icons/brand-shazam.svg.gz +0 -0
- data/ui/dist/icons/brand-sketch.svg.gz +0 -0
- data/ui/dist/icons/brand-skype.svg.gz +0 -0
- data/ui/dist/icons/brand-slack.svg.gz +0 -0
- data/ui/dist/icons/brand-snapchat.svg.gz +0 -0
- data/ui/dist/icons/brand-soundcloud.svg.gz +0 -0
- data/ui/dist/icons/brand-spotify.svg.gz +0 -0
- data/ui/dist/icons/brand-stackoverflow.svg.gz +0 -0
- data/ui/dist/icons/brand-steam.svg.gz +0 -0
- data/ui/dist/icons/brand-stripe.svg.gz +0 -0
- data/ui/dist/icons/brand-sublime-text.svg.gz +0 -0
- data/ui/dist/icons/brand-svelte.svg.gz +0 -0
- data/ui/dist/icons/brand-tabler.svg.gz +0 -0
- data/ui/dist/icons/brand-tailwind.svg.gz +0 -0
- data/ui/dist/icons/brand-telegram.svg.gz +0 -0
- data/ui/dist/icons/brand-tidal.svg.gz +0 -0
- data/ui/dist/icons/brand-tiktok.svg.gz +0 -0
- data/ui/dist/icons/brand-tinder.svg.gz +0 -0
- data/ui/dist/icons/brand-tripadvisor.svg.gz +0 -0
- data/ui/dist/icons/brand-tumblr.svg.gz +0 -0
- data/ui/dist/icons/brand-twitch.svg.gz +0 -0
- data/ui/dist/icons/brand-twitter.svg.gz +0 -0
- data/ui/dist/icons/brand-uber.svg.gz +0 -0
- data/ui/dist/icons/brand-ubuntu.svg.gz +0 -0
- data/ui/dist/icons/brand-unsplash.svg.gz +0 -0
- data/ui/dist/icons/brand-vercel.svg.gz +0 -0
- data/ui/dist/icons/brand-vimeo.svg.gz +0 -0
- data/ui/dist/icons/brand-visual-studio.svg.gz +0 -0
- data/ui/dist/icons/brand-vk.svg.gz +0 -0
- data/ui/dist/icons/brand-vue.svg.gz +0 -0
- data/ui/dist/icons/brand-whatsapp.svg.gz +0 -0
- data/ui/dist/icons/brand-windows.svg.gz +0 -0
- data/ui/dist/icons/brand-yahoo.svg.gz +0 -0
- data/ui/dist/icons/brand-ycombinator.svg.gz +0 -0
- data/ui/dist/icons/brand-youtube.svg.gz +0 -0
- data/ui/dist/icons/bread.svg.gz +0 -0
- data/ui/dist/icons/briefcase.svg.gz +0 -0
- data/ui/dist/icons/brightness-2.svg.gz +0 -0
- data/ui/dist/icons/brightness-down.svg.gz +0 -0
- data/ui/dist/icons/brightness-half.svg.gz +0 -0
- data/ui/dist/icons/brightness-up.svg.gz +0 -0
- data/ui/dist/icons/brightness.svg.gz +0 -0
- data/ui/dist/icons/browser-check.svg.gz +0 -0
- data/ui/dist/icons/browser-off.svg.gz +0 -0
- data/ui/dist/icons/browser-plus.svg.gz +0 -0
- data/ui/dist/icons/browser-x.svg.gz +0 -0
- data/ui/dist/icons/browser.svg.gz +0 -0
- data/ui/dist/icons/brush-off.svg.gz +0 -0
- data/ui/dist/icons/brush.svg.gz +0 -0
- data/ui/dist/icons/bucket-off.svg.gz +0 -0
- data/ui/dist/icons/bucket.svg.gz +0 -0
- data/ui/dist/icons/bug-off.svg.gz +0 -0
- data/ui/dist/icons/bug.svg.gz +0 -0
- data/ui/dist/icons/building-arch.svg.gz +0 -0
- data/ui/dist/icons/building-bank.svg.gz +0 -0
- data/ui/dist/icons/building-bridge-2.svg.gz +0 -0
- data/ui/dist/icons/building-bridge.svg.gz +0 -0
- data/ui/dist/icons/building-carousel.svg.gz +0 -0
- data/ui/dist/icons/building-castle.svg.gz +0 -0
- data/ui/dist/icons/building-church.svg.gz +0 -0
- data/ui/dist/icons/building-community.svg.gz +0 -0
- data/ui/dist/icons/building-cottage.svg.gz +0 -0
- data/ui/dist/icons/building-factory-2.svg.gz +0 -0
- data/ui/dist/icons/building-factory.svg.gz +0 -0
- data/ui/dist/icons/building-fortress.svg.gz +0 -0
- data/ui/dist/icons/building-hospital.svg.gz +0 -0
- data/ui/dist/icons/building-lighthouse.svg.gz +0 -0
- data/ui/dist/icons/building-monument.svg.gz +0 -0
- data/ui/dist/icons/building-pavilon.svg.gz +0 -0
- data/ui/dist/icons/building-skyscraper.svg.gz +0 -0
- data/ui/dist/icons/building-store.svg.gz +0 -0
- data/ui/dist/icons/building-warehouse.svg.gz +0 -0
- data/ui/dist/icons/building.svg.gz +0 -0
- data/ui/dist/icons/bulb-off.svg.gz +0 -0
- data/ui/dist/icons/bulb.svg.gz +0 -0
- data/ui/dist/icons/bulldozer.svg.gz +0 -0
- data/ui/dist/icons/bus.svg.gz +0 -0
- data/ui/dist/icons/businessplan.svg.gz +0 -0
- data/ui/dist/icons/butterfly.svg.gz +0 -0
- data/ui/dist/icons/c-sharp.svg.gz +0 -0
- data/ui/dist/icons/cake-off.svg.gz +0 -0
- data/ui/dist/icons/cake.svg.gz +0 -0
- data/ui/dist/icons/calculator-off.svg.gz +0 -0
- data/ui/dist/icons/calculator.svg.gz +0 -0
- data/ui/dist/icons/calendar-event.svg.gz +0 -0
- data/ui/dist/icons/calendar-minus.svg.gz +0 -0
- data/ui/dist/icons/calendar-off.svg.gz +0 -0
- data/ui/dist/icons/calendar-plus.svg.gz +0 -0
- data/ui/dist/icons/calendar-stats.svg.gz +0 -0
- data/ui/dist/icons/calendar-time.svg.gz +0 -0
- data/ui/dist/icons/calendar.svg.gz +0 -0
- data/ui/dist/icons/camera-minus.svg.gz +0 -0
- data/ui/dist/icons/camera-off.svg.gz +0 -0
- data/ui/dist/icons/camera-plus.svg.gz +0 -0
- data/ui/dist/icons/camera-rotate.svg.gz +0 -0
- data/ui/dist/icons/camera-selfie.svg.gz +0 -0
- data/ui/dist/icons/camera.svg.gz +0 -0
- data/ui/dist/icons/candle.svg.gz +0 -0
- data/ui/dist/icons/candy-off.svg.gz +0 -0
- data/ui/dist/icons/candy.svg.gz +0 -0
- data/ui/dist/icons/capture-off.svg.gz +0 -0
- data/ui/dist/icons/capture.svg.gz +0 -0
- data/ui/dist/icons/car-crane.svg.gz +0 -0
- data/ui/dist/icons/car-crash.svg.gz +0 -0
- data/ui/dist/icons/car-off.svg.gz +0 -0
- data/ui/dist/icons/car.svg.gz +0 -0
- data/ui/dist/icons/caravan.svg.gz +0 -0
- data/ui/dist/icons/cardboards-off.svg.gz +0 -0
- data/ui/dist/icons/cardboards.svg.gz +0 -0
- data/ui/dist/icons/caret-down.svg.gz +0 -0
- data/ui/dist/icons/caret-left.svg.gz +0 -0
- data/ui/dist/icons/caret-right.svg.gz +0 -0
- data/ui/dist/icons/caret-up.svg.gz +0 -0
- data/ui/dist/icons/cash-banknote-off.svg.gz +0 -0
- data/ui/dist/icons/cash-banknote.svg.gz +0 -0
- data/ui/dist/icons/cash-off.svg.gz +0 -0
- data/ui/dist/icons/cash.svg.gz +0 -0
- data/ui/dist/icons/cast-off.svg.gz +0 -0
- data/ui/dist/icons/cast.svg.gz +0 -0
- data/ui/dist/icons/ce-off.svg.gz +0 -0
- data/ui/dist/icons/ce.svg.gz +0 -0
- data/ui/dist/icons/cell-signal-1.svg.gz +0 -0
- data/ui/dist/icons/cell-signal-2.svg.gz +0 -0
- data/ui/dist/icons/cell-signal-3.svg.gz +0 -0
- data/ui/dist/icons/cell-signal-4.svg.gz +0 -0
- data/ui/dist/icons/cell-signal-5.svg.gz +0 -0
- data/ui/dist/icons/cell-signal-off.svg.gz +0 -0
- data/ui/dist/icons/cell.svg.gz +0 -0
- data/ui/dist/icons/certificate-2-off.svg.gz +0 -0
- data/ui/dist/icons/certificate-2.svg.gz +0 -0
- data/ui/dist/icons/certificate-off.svg.gz +0 -0
- data/ui/dist/icons/certificate.svg.gz +0 -0
- data/ui/dist/icons/charging-pile.svg.gz +0 -0
- data/ui/dist/icons/chart-arcs-3.svg.gz +0 -0
- data/ui/dist/icons/chart-arcs.svg.gz +0 -0
- data/ui/dist/icons/chart-area-line.svg.gz +0 -0
- data/ui/dist/icons/chart-area.svg.gz +0 -0
- data/ui/dist/icons/chart-arrows-vertical.svg.gz +0 -0
- data/ui/dist/icons/chart-arrows.svg.gz +0 -0
- data/ui/dist/icons/chart-bar.svg.gz +0 -0
- data/ui/dist/icons/chart-bubble.svg.gz +0 -0
- data/ui/dist/icons/chart-candle.svg.gz +0 -0
- data/ui/dist/icons/chart-circles.svg.gz +0 -0
- data/ui/dist/icons/chart-donut-2.svg.gz +0 -0
- data/ui/dist/icons/chart-donut-3.svg.gz +0 -0
- data/ui/dist/icons/chart-donut-4.svg.gz +0 -0
- data/ui/dist/icons/chart-donut.svg.gz +0 -0
- data/ui/dist/icons/chart-dots-2.svg.gz +0 -0
- data/ui/dist/icons/chart-dots-3.svg.gz +0 -0
- data/ui/dist/icons/chart-dots.svg.gz +0 -0
- data/ui/dist/icons/chart-infographic.svg.gz +0 -0
- data/ui/dist/icons/chart-line.svg.gz +0 -0
- data/ui/dist/icons/chart-pie-2.svg.gz +0 -0
- data/ui/dist/icons/chart-pie-3.svg.gz +0 -0
- data/ui/dist/icons/chart-pie-4.svg.gz +0 -0
- data/ui/dist/icons/chart-pie.svg.gz +0 -0
- data/ui/dist/icons/chart-radar.svg.gz +0 -0
- data/ui/dist/icons/check.svg.gz +0 -0
- data/ui/dist/icons/checkbox.svg.gz +0 -0
- data/ui/dist/icons/checklist.svg.gz +0 -0
- data/ui/dist/icons/checks.svg.gz +0 -0
- data/ui/dist/icons/checkup-list.svg.gz +0 -0
- data/ui/dist/icons/cheese.svg.gz +0 -0
- data/ui/dist/icons/chevron-down-left.svg.gz +0 -0
- data/ui/dist/icons/chevron-down-right.svg.gz +0 -0
- data/ui/dist/icons/chevron-down.svg.gz +0 -0
- data/ui/dist/icons/chevron-left.svg.gz +0 -0
- data/ui/dist/icons/chevron-right.svg.gz +0 -0
- data/ui/dist/icons/chevron-up-left.svg.gz +0 -0
- data/ui/dist/icons/chevron-up-right.svg.gz +0 -0
- data/ui/dist/icons/chevron-up.svg.gz +0 -0
- data/ui/dist/icons/chevrons-down-left.svg.gz +0 -0
- data/ui/dist/icons/chevrons-down-right.svg.gz +0 -0
- data/ui/dist/icons/chevrons-down.svg.gz +0 -0
- data/ui/dist/icons/chevrons-left.svg.gz +0 -0
- data/ui/dist/icons/chevrons-right.svg.gz +0 -0
- data/ui/dist/icons/chevrons-up-left.svg.gz +0 -0
- data/ui/dist/icons/chevrons-up-right.svg.gz +0 -0
- data/ui/dist/icons/chevrons-up.svg.gz +0 -0
- data/ui/dist/icons/christmas-tree.svg.gz +0 -0
- data/ui/dist/icons/circle-0.svg.gz +0 -0
- data/ui/dist/icons/circle-1.svg.gz +0 -0
- data/ui/dist/icons/circle-2.svg.gz +0 -0
- data/ui/dist/icons/circle-3.svg.gz +0 -0
- data/ui/dist/icons/circle-4.svg.gz +0 -0
- data/ui/dist/icons/circle-5.svg.gz +0 -0
- data/ui/dist/icons/circle-6.svg.gz +0 -0
- data/ui/dist/icons/circle-7.svg.gz +0 -0
- data/ui/dist/icons/circle-8.svg.gz +0 -0
- data/ui/dist/icons/circle-9.svg.gz +0 -0
- data/ui/dist/icons/circle-check.svg.gz +0 -0
- data/ui/dist/icons/circle-dashed.svg.gz +0 -0
- data/ui/dist/icons/circle-dot.svg.gz +0 -0
- data/ui/dist/icons/circle-dotted.svg.gz +0 -0
- data/ui/dist/icons/circle-half-2.svg.gz +0 -0
- data/ui/dist/icons/circle-half-vertical.svg.gz +0 -0
- data/ui/dist/icons/circle-half.svg.gz +0 -0
- data/ui/dist/icons/circle-minus.svg.gz +0 -0
- data/ui/dist/icons/circle-off.svg.gz +0 -0
- data/ui/dist/icons/circle-plus.svg.gz +0 -0
- data/ui/dist/icons/circle-rectangle-off.svg.gz +0 -0
- data/ui/dist/icons/circle-rectangle.svg.gz +0 -0
- data/ui/dist/icons/circle-square.svg.gz +0 -0
- data/ui/dist/icons/circle-triangle.svg.gz +0 -0
- data/ui/dist/icons/circle-x.svg.gz +0 -0
- data/ui/dist/icons/circle.svg.gz +0 -0
- data/ui/dist/icons/circles.svg.gz +0 -0
- data/ui/dist/icons/clear-all.svg.gz +0 -0
- data/ui/dist/icons/clear-formatting.svg.gz +0 -0
- data/ui/dist/icons/click.svg.gz +0 -0
- data/ui/dist/icons/clipboard-check.svg.gz +0 -0
- data/ui/dist/icons/clipboard-list.svg.gz +0 -0
- data/ui/dist/icons/clipboard-off.svg.gz +0 -0
- data/ui/dist/icons/clipboard-plus.svg.gz +0 -0
- data/ui/dist/icons/clipboard-text.svg.gz +0 -0
- data/ui/dist/icons/clipboard-x.svg.gz +0 -0
- data/ui/dist/icons/clipboard.svg.gz +0 -0
- data/ui/dist/icons/clock-2.svg.gz +0 -0
- data/ui/dist/icons/clock-off.svg.gz +0 -0
- data/ui/dist/icons/clock.svg.gz +0 -0
- data/ui/dist/icons/cloud-computing.svg.gz +0 -0
- data/ui/dist/icons/cloud-data-connection.svg.gz +0 -0
- data/ui/dist/icons/cloud-download.svg.gz +0 -0
- data/ui/dist/icons/cloud-fog.svg.gz +0 -0
- data/ui/dist/icons/cloud-lock-open.svg.gz +0 -0
- data/ui/dist/icons/cloud-lock.svg.gz +0 -0
- data/ui/dist/icons/cloud-off.svg.gz +0 -0
- data/ui/dist/icons/cloud-rain.svg.gz +0 -0
- data/ui/dist/icons/cloud-snow.svg.gz +0 -0
- data/ui/dist/icons/cloud-storm.svg.gz +0 -0
- data/ui/dist/icons/cloud-upload.svg.gz +0 -0
- data/ui/dist/icons/cloud.svg.gz +0 -0
- data/ui/dist/icons/clubs.svg.gz +0 -0
- data/ui/dist/icons/code-minus.svg.gz +0 -0
- data/ui/dist/icons/code-off.svg.gz +0 -0
- data/ui/dist/icons/code-plus.svg.gz +0 -0
- data/ui/dist/icons/code.svg.gz +0 -0
- data/ui/dist/icons/coffee-off.svg.gz +0 -0
- data/ui/dist/icons/coffee.svg.gz +0 -0
- data/ui/dist/icons/coin-off.svg.gz +0 -0
- data/ui/dist/icons/coin.svg.gz +0 -0
- data/ui/dist/icons/color-picker-off.svg.gz +0 -0
- data/ui/dist/icons/color-picker.svg.gz +0 -0
- data/ui/dist/icons/color-swatch-off.svg.gz +0 -0
- data/ui/dist/icons/color-swatch.svg.gz +0 -0
- data/ui/dist/icons/column-insert-left.svg.gz +0 -0
- data/ui/dist/icons/column-insert-right.svg.gz +0 -0
- data/ui/dist/icons/columns-off.svg.gz +0 -0
- data/ui/dist/icons/columns.svg.gz +0 -0
- data/ui/dist/icons/comet.svg.gz +0 -0
- data/ui/dist/icons/command.svg.gz +0 -0
- data/ui/dist/icons/compass-off.svg.gz +0 -0
- data/ui/dist/icons/compass.svg.gz +0 -0
- data/ui/dist/icons/components-off.svg.gz +0 -0
- data/ui/dist/icons/components.svg.gz +0 -0
- data/ui/dist/icons/cone-2.svg.gz +0 -0
- data/ui/dist/icons/cone.svg.gz +0 -0
- data/ui/dist/icons/confetti.svg.gz +0 -0
- data/ui/dist/icons/container-off.svg.gz +0 -0
- data/ui/dist/icons/container.svg.gz +0 -0
- data/ui/dist/icons/contrast-2.svg.gz +0 -0
- data/ui/dist/icons/contrast.svg.gz +0 -0
- data/ui/dist/icons/cookie-off.svg.gz +0 -0
- data/ui/dist/icons/cookie.svg.gz +0 -0
- data/ui/dist/icons/copy-off.svg.gz +0 -0
- data/ui/dist/icons/copy.svg.gz +0 -0
- data/ui/dist/icons/copyleft-off.svg.gz +0 -0
- data/ui/dist/icons/copyleft.svg.gz +0 -0
- data/ui/dist/icons/copyright-off.svg.gz +0 -0
- data/ui/dist/icons/copyright.svg.gz +0 -0
- data/ui/dist/icons/corner-down-left-double.svg.gz +0 -0
- data/ui/dist/icons/corner-down-left.svg.gz +0 -0
- data/ui/dist/icons/corner-down-right-double.svg.gz +0 -0
- data/ui/dist/icons/corner-down-right.svg.gz +0 -0
- data/ui/dist/icons/corner-left-down-double.svg.gz +0 -0
- data/ui/dist/icons/corner-left-down.svg.gz +0 -0
- data/ui/dist/icons/corner-left-up-double.svg.gz +0 -0
- data/ui/dist/icons/corner-left-up.svg.gz +0 -0
- data/ui/dist/icons/corner-right-down-double.svg.gz +0 -0
- data/ui/dist/icons/corner-right-down.svg.gz +0 -0
- data/ui/dist/icons/corner-right-up-double.svg.gz +0 -0
- data/ui/dist/icons/corner-right-up.svg.gz +0 -0
- data/ui/dist/icons/corner-up-left-double.svg.gz +0 -0
- data/ui/dist/icons/corner-up-left.svg.gz +0 -0
- data/ui/dist/icons/corner-up-right-double.svg.gz +0 -0
- data/ui/dist/icons/corner-up-right.svg.gz +0 -0
- data/ui/dist/icons/cpu-2.svg.gz +0 -0
- data/ui/dist/icons/cpu-off.svg.gz +0 -0
- data/ui/dist/icons/cpu.svg.gz +0 -0
- data/ui/dist/icons/crane-off.svg.gz +0 -0
- data/ui/dist/icons/crane.svg.gz +0 -0
- data/ui/dist/icons/creative-commons-off.svg.gz +0 -0
- data/ui/dist/icons/creative-commons.svg.gz +0 -0
- data/ui/dist/icons/credit-card-off.svg.gz +0 -0
- data/ui/dist/icons/credit-card.svg.gz +0 -0
- data/ui/dist/icons/cricket.svg.gz +0 -0
- data/ui/dist/icons/crop.svg.gz +0 -0
- data/ui/dist/icons/cross-off.svg.gz +0 -0
- data/ui/dist/icons/cross.svg.gz +0 -0
- data/ui/dist/icons/crosshair.svg.gz +0 -0
- data/ui/dist/icons/crown-off.svg.gz +0 -0
- data/ui/dist/icons/crown.svg.gz +0 -0
- data/ui/dist/icons/crutches-off.svg.gz +0 -0
- data/ui/dist/icons/crutches.svg.gz +0 -0
- data/ui/dist/icons/cup-off.svg.gz +0 -0
- data/ui/dist/icons/cup.svg.gz +0 -0
- data/ui/dist/icons/curling.svg.gz +0 -0
- data/ui/dist/icons/curly-loop.svg.gz +0 -0
- data/ui/dist/icons/currency-bahraini.svg.gz +0 -0
- data/ui/dist/icons/currency-baht.svg.gz +0 -0
- data/ui/dist/icons/currency-bitcoin.svg.gz +0 -0
- data/ui/dist/icons/currency-cent.svg.gz +0 -0
- data/ui/dist/icons/currency-dinar.svg.gz +0 -0
- data/ui/dist/icons/currency-dirham.svg.gz +0 -0
- data/ui/dist/icons/currency-dogecoin.svg.gz +0 -0
- data/ui/dist/icons/currency-dollar-australian.svg.gz +0 -0
- data/ui/dist/icons/currency-dollar-canadian.svg.gz +0 -0
- data/ui/dist/icons/currency-dollar-singapore.svg.gz +0 -0
- data/ui/dist/icons/currency-dollar.svg.gz +0 -0
- data/ui/dist/icons/currency-ethereum.svg.gz +0 -0
- data/ui/dist/icons/currency-euro.svg.gz +0 -0
- data/ui/dist/icons/currency-forint.svg.gz +0 -0
- data/ui/dist/icons/currency-frank.svg.gz +0 -0
- data/ui/dist/icons/currency-krone-czech.svg.gz +0 -0
- data/ui/dist/icons/currency-krone-danish.svg.gz +0 -0
- data/ui/dist/icons/currency-krone-swedish.svg.gz +0 -0
- data/ui/dist/icons/currency-leu.svg.gz +0 -0
- data/ui/dist/icons/currency-lira.svg.gz +0 -0
- data/ui/dist/icons/currency-litecoin.svg.gz +0 -0
- data/ui/dist/icons/currency-naira.svg.gz +0 -0
- data/ui/dist/icons/currency-pound.svg.gz +0 -0
- data/ui/dist/icons/currency-real.svg.gz +0 -0
- data/ui/dist/icons/currency-renminbi.svg.gz +0 -0
- data/ui/dist/icons/currency-ripple.svg.gz +0 -0
- data/ui/dist/icons/currency-riyal.svg.gz +0 -0
- data/ui/dist/icons/currency-rubel.svg.gz +0 -0
- data/ui/dist/icons/currency-rupee.svg.gz +0 -0
- data/ui/dist/icons/currency-shekel.svg.gz +0 -0
- data/ui/dist/icons/currency-taka.svg.gz +0 -0
- data/ui/dist/icons/currency-tugrik.svg.gz +0 -0
- data/ui/dist/icons/currency-won.svg.gz +0 -0
- data/ui/dist/icons/currency-yen.svg.gz +0 -0
- data/ui/dist/icons/currency-zloty.svg.gz +0 -0
- data/ui/dist/icons/currency.svg.gz +0 -0
- data/ui/dist/icons/current-location-off.svg.gz +0 -0
- data/ui/dist/icons/current-location.svg.gz +0 -0
- data/ui/dist/icons/cursor-off.svg.gz +0 -0
- data/ui/dist/icons/cursor-text.svg.gz +0 -0
- data/ui/dist/icons/cut.svg.gz +0 -0
- data/ui/dist/icons/dashboard.svg.gz +0 -0
- data/ui/dist/icons/database-export.svg.gz +0 -0
- data/ui/dist/icons/database-import.svg.gz +0 -0
- data/ui/dist/icons/database-off.svg.gz +0 -0
- data/ui/dist/icons/database.svg.gz +0 -0
- data/ui/dist/icons/dental-off.svg.gz +0 -0
- data/ui/dist/icons/dental.svg.gz +0 -0
- data/ui/dist/icons/details.svg.gz +0 -0
- data/ui/dist/icons/device-analytics.svg.gz +0 -0
- data/ui/dist/icons/device-audio-tape.svg.gz +0 -0
- data/ui/dist/icons/device-cctv.svg.gz +0 -0
- data/ui/dist/icons/device-computer-camera-off.svg.gz +0 -0
- data/ui/dist/icons/device-computer-camera.svg.gz +0 -0
- data/ui/dist/icons/device-desktop-analytics.svg.gz +0 -0
- data/ui/dist/icons/device-desktop-off.svg.gz +0 -0
- data/ui/dist/icons/device-desktop.svg.gz +0 -0
- data/ui/dist/icons/device-floppy.svg.gz +0 -0
- data/ui/dist/icons/device-gamepad-2.svg.gz +0 -0
- data/ui/dist/icons/device-gamepad.svg.gz +0 -0
- data/ui/dist/icons/device-heart-monitor.svg.gz +0 -0
- data/ui/dist/icons/device-laptop-off.svg.gz +0 -0
- data/ui/dist/icons/device-laptop.svg.gz +0 -0
- data/ui/dist/icons/device-mobile-message.svg.gz +0 -0
- data/ui/dist/icons/device-mobile-off.svg.gz +0 -0
- data/ui/dist/icons/device-mobile-rotated.svg.gz +0 -0
- data/ui/dist/icons/device-mobile-vibration.svg.gz +0 -0
- data/ui/dist/icons/device-mobile.svg.gz +0 -0
- data/ui/dist/icons/device-nintendo-off.svg.gz +0 -0
- data/ui/dist/icons/device-nintendo.svg.gz +0 -0
- data/ui/dist/icons/device-speaker-off.svg.gz +0 -0
- data/ui/dist/icons/device-speaker.svg.gz +0 -0
- data/ui/dist/icons/device-tablet-off.svg.gz +0 -0
- data/ui/dist/icons/device-tablet.svg.gz +0 -0
- data/ui/dist/icons/device-tv-off.svg.gz +0 -0
- data/ui/dist/icons/device-tv-old.svg.gz +0 -0
- data/ui/dist/icons/device-tv.svg.gz +0 -0
- data/ui/dist/icons/device-watch-off.svg.gz +0 -0
- data/ui/dist/icons/device-watch-stats-2.svg.gz +0 -0
- data/ui/dist/icons/device-watch-stats.svg.gz +0 -0
- data/ui/dist/icons/device-watch.svg.gz +0 -0
- data/ui/dist/icons/devices-2.svg.gz +0 -0
- data/ui/dist/icons/devices-off.svg.gz +0 -0
- data/ui/dist/icons/devices-pc-off.svg.gz +0 -0
- data/ui/dist/icons/devices-pc.svg.gz +0 -0
- data/ui/dist/icons/devices.svg.gz +0 -0
- data/ui/dist/icons/dialpad-off.svg.gz +0 -0
- data/ui/dist/icons/dialpad.svg.gz +0 -0
- data/ui/dist/icons/diamond-off.svg.gz +0 -0
- data/ui/dist/icons/diamond.svg.gz +0 -0
- data/ui/dist/icons/diamonds.svg.gz +0 -0
- data/ui/dist/icons/dice-1.svg.gz +0 -0
- data/ui/dist/icons/dice-2.svg.gz +0 -0
- data/ui/dist/icons/dice-3.svg.gz +0 -0
- data/ui/dist/icons/dice-4.svg.gz +0 -0
- data/ui/dist/icons/dice-5.svg.gz +0 -0
- data/ui/dist/icons/dice-6.svg.gz +0 -0
- data/ui/dist/icons/dice.svg.gz +0 -0
- data/ui/dist/icons/dimensions.svg.gz +0 -0
- data/ui/dist/icons/direction-horizontal.svg.gz +0 -0
- data/ui/dist/icons/direction.svg.gz +0 -0
- data/ui/dist/icons/directions-off.svg.gz +0 -0
- data/ui/dist/icons/directions.svg.gz +0 -0
- data/ui/dist/icons/disabled-2.svg.gz +0 -0
- data/ui/dist/icons/disabled-off.svg.gz +0 -0
- data/ui/dist/icons/disabled.svg.gz +0 -0
- data/ui/dist/icons/disc-off.svg.gz +0 -0
- data/ui/dist/icons/disc.svg.gz +0 -0
- data/ui/dist/icons/discount-2.svg.gz +0 -0
- data/ui/dist/icons/discount.svg.gz +0 -0
- data/ui/dist/icons/divide.svg.gz +0 -0
- data/ui/dist/icons/dna-2-off.svg.gz +0 -0
- data/ui/dist/icons/dna-2.svg.gz +0 -0
- data/ui/dist/icons/dna-off.svg.gz +0 -0
- data/ui/dist/icons/dna.svg.gz +0 -0
- data/ui/dist/icons/dog-bowl.svg.gz +0 -0
- data/ui/dist/icons/door-enter.svg.gz +0 -0
- data/ui/dist/icons/door-exit.svg.gz +0 -0
- data/ui/dist/icons/door-off.svg.gz +0 -0
- data/ui/dist/icons/door.svg.gz +0 -0
- data/ui/dist/icons/dots-circle-horizontal.svg.gz +0 -0
- data/ui/dist/icons/dots-diagonal-2.svg.gz +0 -0
- data/ui/dist/icons/dots-diagonal.svg.gz +0 -0
- data/ui/dist/icons/dots-vertical.svg.gz +0 -0
- data/ui/dist/icons/dots.svg.gz +0 -0
- data/ui/dist/icons/download-off.svg.gz +0 -0
- data/ui/dist/icons/download.svg.gz +0 -0
- data/ui/dist/icons/drag-drop-2.svg.gz +0 -0
- data/ui/dist/icons/drag-drop.svg.gz +0 -0
- data/ui/dist/icons/drone-off.svg.gz +0 -0
- data/ui/dist/icons/drone.svg.gz +0 -0
- data/ui/dist/icons/drop-circle.svg.gz +0 -0
- data/ui/dist/icons/droplet-filled-2.svg.gz +0 -0
- data/ui/dist/icons/droplet-filled.svg.gz +0 -0
- data/ui/dist/icons/droplet-half-2.svg.gz +0 -0
- data/ui/dist/icons/droplet-half.svg.gz +0 -0
- data/ui/dist/icons/droplet-off.svg.gz +0 -0
- data/ui/dist/icons/droplet.svg.gz +0 -0
- data/ui/dist/icons/ear-off.svg.gz +0 -0
- data/ui/dist/icons/ear.svg.gz +0 -0
- data/ui/dist/icons/edit-circle-off.svg.gz +0 -0
- data/ui/dist/icons/edit-circle.svg.gz +0 -0
- data/ui/dist/icons/edit-off.svg.gz +0 -0
- data/ui/dist/icons/edit.svg.gz +0 -0
- data/ui/dist/icons/egg-off.svg.gz +0 -0
- data/ui/dist/icons/egg.svg.gz +0 -0
- data/ui/dist/icons/elevator.svg.gz +0 -0
- data/ui/dist/icons/emergency-bed.svg.gz +0 -0
- data/ui/dist/icons/emphasis.svg.gz +0 -0
- data/ui/dist/icons/engine-off.svg.gz +0 -0
- data/ui/dist/icons/engine.svg.gz +0 -0
- data/ui/dist/icons/equal-not.svg.gz +0 -0
- data/ui/dist/icons/equal.svg.gz +0 -0
- data/ui/dist/icons/eraser-off.svg.gz +0 -0
- data/ui/dist/icons/eraser.svg.gz +0 -0
- data/ui/dist/icons/error-404-off.svg.gz +0 -0
- data/ui/dist/icons/error-404.svg.gz +0 -0
- data/ui/dist/icons/exchange-off.svg.gz +0 -0
- data/ui/dist/icons/exchange.svg.gz +0 -0
- data/ui/dist/icons/exclamation-mark-off.svg.gz +0 -0
- data/ui/dist/icons/exclamation-mark.svg.gz +0 -0
- data/ui/dist/icons/exposure.svg.gz +0 -0
- data/ui/dist/icons/external-link-off.svg.gz +0 -0
- data/ui/dist/icons/external-link.svg.gz +0 -0
- data/ui/dist/icons/eye-check.svg.gz +0 -0
- data/ui/dist/icons/eye-off.svg.gz +0 -0
- data/ui/dist/icons/eye-table.svg.gz +0 -0
- data/ui/dist/icons/eye.svg.gz +0 -0
- data/ui/dist/icons/eyeglass-2.svg.gz +0 -0
- data/ui/dist/icons/eyeglass-off.svg.gz +0 -0
- data/ui/dist/icons/eyeglass.svg.gz +0 -0
- data/ui/dist/icons/face-id-error.svg.gz +0 -0
- data/ui/dist/icons/face-id.svg.gz +0 -0
- data/ui/dist/icons/face-mask-off.svg.gz +0 -0
- data/ui/dist/icons/face-mask.svg.gz +0 -0
- data/ui/dist/icons/fall.svg.gz +0 -0
- data/ui/dist/icons/feather-off.svg.gz +0 -0
- data/ui/dist/icons/feather.svg.gz +0 -0
- data/ui/dist/icons/fence-off.svg.gz +0 -0
- data/ui/dist/icons/fence.svg.gz +0 -0
- data/ui/dist/icons/fidget-spinner.svg.gz +0 -0
- data/ui/dist/icons/file-3d.svg.gz +0 -0
- data/ui/dist/icons/file-alert.svg.gz +0 -0
- data/ui/dist/icons/file-analytics.svg.gz +0 -0
- data/ui/dist/icons/file-arrow-left.svg.gz +0 -0
- data/ui/dist/icons/file-arrow-right.svg.gz +0 -0
- data/ui/dist/icons/file-barcode.svg.gz +0 -0
- data/ui/dist/icons/file-certificate.svg.gz +0 -0
- data/ui/dist/icons/file-chart.svg.gz +0 -0
- data/ui/dist/icons/file-check.svg.gz +0 -0
- data/ui/dist/icons/file-code-2.svg.gz +0 -0
- data/ui/dist/icons/file-code.svg.gz +0 -0
- data/ui/dist/icons/file-database.svg.gz +0 -0
- data/ui/dist/icons/file-description.svg.gz +0 -0
- data/ui/dist/icons/file-diff.svg.gz +0 -0
- data/ui/dist/icons/file-digit.svg.gz +0 -0
- data/ui/dist/icons/file-dislike.svg.gz +0 -0
- data/ui/dist/icons/file-dollar.svg.gz +0 -0
- data/ui/dist/icons/file-dots.svg.gz +0 -0
- data/ui/dist/icons/file-download.svg.gz +0 -0
- data/ui/dist/icons/file-euro.svg.gz +0 -0
- data/ui/dist/icons/file-export.svg.gz +0 -0
- data/ui/dist/icons/file-horizontal.svg.gz +0 -0
- data/ui/dist/icons/file-import.svg.gz +0 -0
- data/ui/dist/icons/file-info.svg.gz +0 -0
- data/ui/dist/icons/file-invoice.svg.gz +0 -0
- data/ui/dist/icons/file-like.svg.gz +0 -0
- data/ui/dist/icons/file-minus.svg.gz +0 -0
- data/ui/dist/icons/file-music.svg.gz +0 -0
- data/ui/dist/icons/file-off.svg.gz +0 -0
- data/ui/dist/icons/file-pencil.svg.gz +0 -0
- data/ui/dist/icons/file-phone.svg.gz +0 -0
- data/ui/dist/icons/file-plus.svg.gz +0 -0
- data/ui/dist/icons/file-power.svg.gz +0 -0
- data/ui/dist/icons/file-report.svg.gz +0 -0
- data/ui/dist/icons/file-rss.svg.gz +0 -0
- data/ui/dist/icons/file-scissors.svg.gz +0 -0
- data/ui/dist/icons/file-search.svg.gz +0 -0
- data/ui/dist/icons/file-settings.svg.gz +0 -0
- data/ui/dist/icons/file-shredder.svg.gz +0 -0
- data/ui/dist/icons/file-signal.svg.gz +0 -0
- data/ui/dist/icons/file-spreadsheet.svg.gz +0 -0
- data/ui/dist/icons/file-star.svg.gz +0 -0
- data/ui/dist/icons/file-symlink.svg.gz +0 -0
- data/ui/dist/icons/file-text.svg.gz +0 -0
- data/ui/dist/icons/file-time.svg.gz +0 -0
- data/ui/dist/icons/file-typography.svg.gz +0 -0
- data/ui/dist/icons/file-unknown.svg.gz +0 -0
- data/ui/dist/icons/file-upload.svg.gz +0 -0
- data/ui/dist/icons/file-vector.svg.gz +0 -0
- data/ui/dist/icons/file-x.svg.gz +0 -0
- data/ui/dist/icons/file-zip.svg.gz +0 -0
- data/ui/dist/icons/file.svg.gz +0 -0
- data/ui/dist/icons/files-off.svg.gz +0 -0
- data/ui/dist/icons/files.svg.gz +0 -0
- data/ui/dist/icons/filter-off.svg.gz +0 -0
- data/ui/dist/icons/filter.svg.gz +0 -0
- data/ui/dist/icons/fingerprint-off.svg.gz +0 -0
- data/ui/dist/icons/fingerprint.svg.gz +0 -0
- data/ui/dist/icons/firetruck.svg.gz +0 -0
- data/ui/dist/icons/first-aid-kit.svg.gz +0 -0
- data/ui/dist/icons/fish-off.svg.gz +0 -0
- data/ui/dist/icons/fish.svg.gz +0 -0
- data/ui/dist/icons/flag-2-off.svg.gz +0 -0
- data/ui/dist/icons/flag-2.svg.gz +0 -0
- data/ui/dist/icons/flag-3.svg.gz +0 -0
- data/ui/dist/icons/flag-off.svg.gz +0 -0
- data/ui/dist/icons/flag.svg.gz +0 -0
- data/ui/dist/icons/flame-off.svg.gz +0 -0
- data/ui/dist/icons/flame.svg.gz +0 -0
- data/ui/dist/icons/flare.svg.gz +0 -0
- data/ui/dist/icons/flask-2-off.svg.gz +0 -0
- data/ui/dist/icons/flask-2.svg.gz +0 -0
- data/ui/dist/icons/flask-off.svg.gz +0 -0
- data/ui/dist/icons/flask.svg.gz +0 -0
- data/ui/dist/icons/flip-horizontal.svg.gz +0 -0
- data/ui/dist/icons/flip-vertical.svg.gz +0 -0
- data/ui/dist/icons/float-center.svg.gz +0 -0
- data/ui/dist/icons/float-left.svg.gz +0 -0
- data/ui/dist/icons/float-none.svg.gz +0 -0
- data/ui/dist/icons/float-right.svg.gz +0 -0
- data/ui/dist/icons/flower-off.svg.gz +0 -0
- data/ui/dist/icons/flower.svg.gz +0 -0
- data/ui/dist/icons/focus-2.svg.gz +0 -0
- data/ui/dist/icons/focus-centered.svg.gz +0 -0
- data/ui/dist/icons/focus.svg.gz +0 -0
- data/ui/dist/icons/fold-down.svg.gz +0 -0
- data/ui/dist/icons/fold-up.svg.gz +0 -0
- data/ui/dist/icons/fold.svg.gz +0 -0
- data/ui/dist/icons/folder-minus.svg.gz +0 -0
- data/ui/dist/icons/folder-off.svg.gz +0 -0
- data/ui/dist/icons/folder-plus.svg.gz +0 -0
- data/ui/dist/icons/folder-x.svg.gz +0 -0
- data/ui/dist/icons/folder.svg.gz +0 -0
- data/ui/dist/icons/folders-off.svg.gz +0 -0
- data/ui/dist/icons/folders.svg.gz +0 -0
- data/ui/dist/icons/forbid-2.svg.gz +0 -0
- data/ui/dist/icons/forbid.svg.gz +0 -0
- data/ui/dist/icons/forklift.svg.gz +0 -0
- data/ui/dist/icons/forms.svg.gz +0 -0
- data/ui/dist/icons/fountain-off.svg.gz +0 -0
- data/ui/dist/icons/fountain.svg.gz +0 -0
- data/ui/dist/icons/frame-off.svg.gz +0 -0
- data/ui/dist/icons/frame.svg.gz +0 -0
- data/ui/dist/icons/free-rights.svg.gz +0 -0
- data/ui/dist/icons/friends-off.svg.gz +0 -0
- data/ui/dist/icons/friends.svg.gz +0 -0
- data/ui/dist/icons/gas-station-off.svg.gz +0 -0
- data/ui/dist/icons/gas-station.svg.gz +0 -0
- data/ui/dist/icons/gauge-off.svg.gz +0 -0
- data/ui/dist/icons/gauge.svg.gz +0 -0
- data/ui/dist/icons/gavel.svg.gz +0 -0
- data/ui/dist/icons/gender-agender.svg.gz +0 -0
- data/ui/dist/icons/gender-androgyne.svg.gz +0 -0
- data/ui/dist/icons/gender-bigender.svg.gz +0 -0
- data/ui/dist/icons/gender-demiboy.svg.gz +0 -0
- data/ui/dist/icons/gender-demigirl.svg.gz +0 -0
- data/ui/dist/icons/gender-epicene.svg.gz +0 -0
- data/ui/dist/icons/gender-female.svg.gz +0 -0
- data/ui/dist/icons/gender-femme.svg.gz +0 -0
- data/ui/dist/icons/gender-genderfluid.svg.gz +0 -0
- data/ui/dist/icons/gender-genderless.svg.gz +0 -0
- data/ui/dist/icons/gender-genderqueer.svg.gz +0 -0
- data/ui/dist/icons/gender-hermaphrodite.svg.gz +0 -0
- data/ui/dist/icons/gender-intergender.svg.gz +0 -0
- data/ui/dist/icons/gender-male.svg.gz +0 -0
- data/ui/dist/icons/gender-neutrois.svg.gz +0 -0
- data/ui/dist/icons/gender-third.svg.gz +0 -0
- data/ui/dist/icons/gender-transgender.svg.gz +0 -0
- data/ui/dist/icons/gender-trasvesti.svg.gz +0 -0
- data/ui/dist/icons/geometry.svg.gz +0 -0
- data/ui/dist/icons/ghost.svg.gz +0 -0
- data/ui/dist/icons/gift.svg.gz +0 -0
- data/ui/dist/icons/git-branch.svg.gz +0 -0
- data/ui/dist/icons/git-commit.svg.gz +0 -0
- data/ui/dist/icons/git-compare.svg.gz +0 -0
- data/ui/dist/icons/git-fork.svg.gz +0 -0
- data/ui/dist/icons/git-merge.svg.gz +0 -0
- data/ui/dist/icons/git-pull-request-closed.svg.gz +0 -0
- data/ui/dist/icons/git-pull-request-draft.svg.gz +0 -0
- data/ui/dist/icons/git-pull-request.svg.gz +0 -0
- data/ui/dist/icons/gizmo.svg.gz +0 -0
- data/ui/dist/icons/glass-full.svg.gz +0 -0
- data/ui/dist/icons/glass-off.svg.gz +0 -0
- data/ui/dist/icons/glass.svg.gz +0 -0
- data/ui/dist/icons/globe-off.svg.gz +0 -0
- data/ui/dist/icons/globe.svg.gz +0 -0
- data/ui/dist/icons/golf-off.svg.gz +0 -0
- data/ui/dist/icons/golf.svg.gz +0 -0
- data/ui/dist/icons/gps.svg.gz +0 -0
- data/ui/dist/icons/grain.svg.gz +0 -0
- data/ui/dist/icons/grid-dots.svg.gz +0 -0
- data/ui/dist/icons/grid-pattern.svg.gz +0 -0
- data/ui/dist/icons/grill-off.svg.gz +0 -0
- data/ui/dist/icons/grill.svg.gz +0 -0
- data/ui/dist/icons/grip-horizontal.svg.gz +0 -0
- data/ui/dist/icons/grip-vertical.svg.gz +0 -0
- data/ui/dist/icons/growth.svg.gz +0 -0
- data/ui/dist/icons/h-1.svg.gz +0 -0
- data/ui/dist/icons/h-2.svg.gz +0 -0
- data/ui/dist/icons/h-3.svg.gz +0 -0
- data/ui/dist/icons/h-4.svg.gz +0 -0
- data/ui/dist/icons/h-5.svg.gz +0 -0
- data/ui/dist/icons/h-6.svg.gz +0 -0
- data/ui/dist/icons/hammer-off.svg.gz +0 -0
- data/ui/dist/icons/hammer.svg.gz +0 -0
- data/ui/dist/icons/hand-click.svg.gz +0 -0
- data/ui/dist/icons/hand-finger-off.svg.gz +0 -0
- data/ui/dist/icons/hand-finger.svg.gz +0 -0
- data/ui/dist/icons/hand-grab.svg.gz +0 -0
- data/ui/dist/icons/hand-little-finger.svg.gz +0 -0
- data/ui/dist/icons/hand-middle-finger.svg.gz +0 -0
- data/ui/dist/icons/hand-move.svg.gz +0 -0
- data/ui/dist/icons/hand-off.svg.gz +0 -0
- data/ui/dist/icons/hand-ring-finger.svg.gz +0 -0
- data/ui/dist/icons/hand-rock.svg.gz +0 -0
- data/ui/dist/icons/hand-stop.svg.gz +0 -0
- data/ui/dist/icons/hand-three-fingers.svg.gz +0 -0
- data/ui/dist/icons/hand-two-fingers.svg.gz +0 -0
- data/ui/dist/icons/hanger-2.svg.gz +0 -0
- data/ui/dist/icons/hanger-off.svg.gz +0 -0
- data/ui/dist/icons/hanger.svg.gz +0 -0
- data/ui/dist/icons/hash.svg.gz +0 -0
- data/ui/dist/icons/haze.svg.gz +0 -0
- data/ui/dist/icons/heading-off.svg.gz +0 -0
- data/ui/dist/icons/heading.svg.gz +0 -0
- data/ui/dist/icons/headphones-off.svg.gz +0 -0
- data/ui/dist/icons/headphones.svg.gz +0 -0
- data/ui/dist/icons/headset.svg.gz +0 -0
- data/ui/dist/icons/heart-broken.svg.gz +0 -0
- data/ui/dist/icons/heart-handshake.svg.gz +0 -0
- data/ui/dist/icons/heart-minus.svg.gz +0 -0
- data/ui/dist/icons/heart-off.svg.gz +0 -0
- data/ui/dist/icons/heart-plus.svg.gz +0 -0
- data/ui/dist/icons/heart-rate-monitor.svg.gz +0 -0
- data/ui/dist/icons/heart.svg.gz +0 -0
- data/ui/dist/icons/heartbeat.svg.gz +0 -0
- data/ui/dist/icons/helicopter-landing.svg.gz +0 -0
- data/ui/dist/icons/helicopter.svg.gz +0 -0
- data/ui/dist/icons/helmet-off.svg.gz +0 -0
- data/ui/dist/icons/helmet.svg.gz +0 -0
- data/ui/dist/icons/help.svg.gz +0 -0
- data/ui/dist/icons/hexagon-off.svg.gz +0 -0
- data/ui/dist/icons/hexagon.svg.gz +0 -0
- data/ui/dist/icons/hexagons.svg.gz +0 -0
- data/ui/dist/icons/hierarchy-2.svg.gz +0 -0
- data/ui/dist/icons/hierarchy.svg.gz +0 -0
- data/ui/dist/icons/highlight-off.svg.gz +0 -0
- data/ui/dist/icons/highlight.svg.gz +0 -0
- data/ui/dist/icons/history.svg.gz +0 -0
- data/ui/dist/icons/home-2.svg.gz +0 -0
- data/ui/dist/icons/home-off.svg.gz +0 -0
- data/ui/dist/icons/home.svg.gz +0 -0
- data/ui/dist/icons/hotel-service.svg.gz +0 -0
- data/ui/dist/icons/hourglass-empty.svg.gz +0 -0
- data/ui/dist/icons/hourglass-high.svg.gz +0 -0
- data/ui/dist/icons/hourglass-low.svg.gz +0 -0
- data/ui/dist/icons/hourglass-off.svg.gz +0 -0
- data/ui/dist/icons/hourglass.svg.gz +0 -0
- data/ui/dist/icons/ice-cream-2.svg.gz +0 -0
- data/ui/dist/icons/ice-cream-off.svg.gz +0 -0
- data/ui/dist/icons/ice-cream.svg.gz +0 -0
- data/ui/dist/icons/ice-skating.svg.gz +0 -0
- data/ui/dist/icons/icons.svg.gz +0 -0
- data/ui/dist/icons/id-badge-2.svg.gz +0 -0
- data/ui/dist/icons/id-badge.svg.gz +0 -0
- data/ui/dist/icons/id-off.svg.gz +0 -0
- data/ui/dist/icons/id.svg.gz +0 -0
- data/ui/dist/icons/inbox-off.svg.gz +0 -0
- data/ui/dist/icons/inbox.svg.gz +0 -0
- data/ui/dist/icons/indent-decrease.svg.gz +0 -0
- data/ui/dist/icons/indent-increase.svg.gz +0 -0
- data/ui/dist/icons/infinity.svg.gz +0 -0
- data/ui/dist/icons/info-circle.svg.gz +0 -0
- data/ui/dist/icons/info-square.svg.gz +0 -0
- data/ui/dist/icons/italic.svg.gz +0 -0
- data/ui/dist/icons/jewish-star.svg.gz +0 -0
- data/ui/dist/icons/jump-rope.svg.gz +0 -0
- data/ui/dist/icons/karate.svg.gz +0 -0
- data/ui/dist/icons/kayak.svg.gz +0 -0
- data/ui/dist/icons/kering.svg.gz +0 -0
- data/ui/dist/icons/key-off.svg.gz +0 -0
- data/ui/dist/icons/key.svg.gz +0 -0
- data/ui/dist/icons/keyboard-hide.svg.gz +0 -0
- data/ui/dist/icons/keyboard-off.svg.gz +0 -0
- data/ui/dist/icons/keyboard-show.svg.gz +0 -0
- data/ui/dist/icons/keyboard.svg.gz +0 -0
- data/ui/dist/icons/ladder-off.svg.gz +0 -0
- data/ui/dist/icons/ladder.svg.gz +0 -0
- data/ui/dist/icons/lamp-2.svg.gz +0 -0
- data/ui/dist/icons/lamp-off.svg.gz +0 -0
- data/ui/dist/icons/lamp.svg.gz +0 -0
- data/ui/dist/icons/language-hiragana.svg.gz +0 -0
- data/ui/dist/icons/language-katakana.svg.gz +0 -0
- data/ui/dist/icons/language-off.svg.gz +0 -0
- data/ui/dist/icons/language.svg.gz +0 -0
- data/ui/dist/icons/lasso-off.svg.gz +0 -0
- data/ui/dist/icons/lasso.svg.gz +0 -0
- data/ui/dist/icons/layers-difference.svg.gz +0 -0
- data/ui/dist/icons/layers-intersect-2.svg.gz +0 -0
- data/ui/dist/icons/layers-intersect.svg.gz +0 -0
- data/ui/dist/icons/layers-linked.svg.gz +0 -0
- data/ui/dist/icons/layers-off.svg.gz +0 -0
- data/ui/dist/icons/layers-subtract.svg.gz +0 -0
- data/ui/dist/icons/layers-union.svg.gz +0 -0
- data/ui/dist/icons/layout-2.svg.gz +0 -0
- data/ui/dist/icons/layout-align-bottom.svg.gz +0 -0
- data/ui/dist/icons/layout-align-center.svg.gz +0 -0
- data/ui/dist/icons/layout-align-left.svg.gz +0 -0
- data/ui/dist/icons/layout-align-middle.svg.gz +0 -0
- data/ui/dist/icons/layout-align-right.svg.gz +0 -0
- data/ui/dist/icons/layout-align-top.svg.gz +0 -0
- data/ui/dist/icons/layout-board-split.svg.gz +0 -0
- data/ui/dist/icons/layout-board.svg.gz +0 -0
- data/ui/dist/icons/layout-bottombar.svg.gz +0 -0
- data/ui/dist/icons/layout-cards.svg.gz +0 -0
- data/ui/dist/icons/layout-columns.svg.gz +0 -0
- data/ui/dist/icons/layout-dashboard.svg.gz +0 -0
- data/ui/dist/icons/layout-distribute-horizontal.svg.gz +0 -0
- data/ui/dist/icons/layout-distribute-vertical.svg.gz +0 -0
- data/ui/dist/icons/layout-grid-add.svg.gz +0 -0
- data/ui/dist/icons/layout-grid.svg.gz +0 -0
- data/ui/dist/icons/layout-kanban.svg.gz +0 -0
- data/ui/dist/icons/layout-list.svg.gz +0 -0
- data/ui/dist/icons/layout-navbar.svg.gz +0 -0
- data/ui/dist/icons/layout-off.svg.gz +0 -0
- data/ui/dist/icons/layout-rows.svg.gz +0 -0
- data/ui/dist/icons/layout-sidebar-left-collapse.svg.gz +0 -0
- data/ui/dist/icons/layout-sidebar-left-expand.svg.gz +0 -0
- data/ui/dist/icons/layout-sidebar-right-collapse.svg.gz +0 -0
- data/ui/dist/icons/layout-sidebar-right-expand.svg.gz +0 -0
- data/ui/dist/icons/layout-sidebar-right.svg.gz +0 -0
- data/ui/dist/icons/layout-sidebar.svg.gz +0 -0
- data/ui/dist/icons/layout.svg.gz +0 -0
- data/ui/dist/icons/leaf-off.svg.gz +0 -0
- data/ui/dist/icons/leaf.svg.gz +0 -0
- data/ui/dist/icons/lego.svg.gz +0 -0
- data/ui/dist/icons/lemon-2.svg.gz +0 -0
- data/ui/dist/icons/lemon.svg.gz +0 -0
- data/ui/dist/icons/letter-a.svg.gz +0 -0
- data/ui/dist/icons/letter-b.svg.gz +0 -0
- data/ui/dist/icons/letter-c.svg.gz +0 -0
- data/ui/dist/icons/letter-case-lower.svg.gz +0 -0
- data/ui/dist/icons/letter-case-toggle.svg.gz +0 -0
- data/ui/dist/icons/letter-case-upper.svg.gz +0 -0
- data/ui/dist/icons/letter-case.svg.gz +0 -0
- data/ui/dist/icons/letter-d.svg.gz +0 -0
- data/ui/dist/icons/letter-e.svg.gz +0 -0
- data/ui/dist/icons/letter-f.svg.gz +0 -0
- data/ui/dist/icons/letter-g.svg.gz +0 -0
- data/ui/dist/icons/letter-h.svg.gz +0 -0
- data/ui/dist/icons/letter-i.svg.gz +0 -0
- data/ui/dist/icons/letter-j.svg.gz +0 -0
- data/ui/dist/icons/letter-k.svg.gz +0 -0
- data/ui/dist/icons/letter-l.svg.gz +0 -0
- data/ui/dist/icons/letter-m.svg.gz +0 -0
- data/ui/dist/icons/letter-n.svg.gz +0 -0
- data/ui/dist/icons/letter-o.svg.gz +0 -0
- data/ui/dist/icons/letter-p.svg.gz +0 -0
- data/ui/dist/icons/letter-q.svg.gz +0 -0
- data/ui/dist/icons/letter-r.svg.gz +0 -0
- data/ui/dist/icons/letter-s.svg.gz +0 -0
- data/ui/dist/icons/letter-spacing.svg.gz +0 -0
- data/ui/dist/icons/letter-t.svg.gz +0 -0
- data/ui/dist/icons/letter-u.svg.gz +0 -0
- data/ui/dist/icons/letter-v.svg.gz +0 -0
- data/ui/dist/icons/letter-w.svg.gz +0 -0
- data/ui/dist/icons/letter-x.svg.gz +0 -0
- data/ui/dist/icons/letter-y.svg.gz +0 -0
- data/ui/dist/icons/letter-z.svg.gz +0 -0
- data/ui/dist/icons/license-off.svg.gz +0 -0
- data/ui/dist/icons/license.svg.gz +0 -0
- data/ui/dist/icons/lifebuoy-off.svg.gz +0 -0
- data/ui/dist/icons/lifebuoy.svg.gz +0 -0
- data/ui/dist/icons/line-dashed.svg.gz +0 -0
- data/ui/dist/icons/line-dotted.svg.gz +0 -0
- data/ui/dist/icons/line-height.svg.gz +0 -0
- data/ui/dist/icons/line.svg.gz +0 -0
- data/ui/dist/icons/link.svg.gz +0 -0
- data/ui/dist/icons/list-check.svg.gz +0 -0
- data/ui/dist/icons/list-details.svg.gz +0 -0
- data/ui/dist/icons/list-numbers.svg.gz +0 -0
- data/ui/dist/icons/list-search.svg.gz +0 -0
- data/ui/dist/icons/list.svg.gz +0 -0
- data/ui/dist/icons/live-photo.svg.gz +0 -0
- data/ui/dist/icons/live-view.svg.gz +0 -0
- data/ui/dist/icons/loader-quarter.svg.gz +0 -0
- data/ui/dist/icons/loader.svg.gz +0 -0
- data/ui/dist/icons/location-off.svg.gz +0 -0
- data/ui/dist/icons/location.svg.gz +0 -0
- data/ui/dist/icons/lock-access.svg.gz +0 -0
- data/ui/dist/icons/lock-off.svg.gz +0 -0
- data/ui/dist/icons/lock-open-off.svg.gz +0 -0
- data/ui/dist/icons/lock-open.svg.gz +0 -0
- data/ui/dist/icons/lock-square.svg.gz +0 -0
- data/ui/dist/icons/lock.svg.gz +0 -0
- data/ui/dist/icons/login.svg.gz +0 -0
- data/ui/dist/icons/logout.svg.gz +0 -0
- data/ui/dist/icons/lollipop-off.svg.gz +0 -0
- data/ui/dist/icons/lollipop.svg.gz +0 -0
- data/ui/dist/icons/luggage-off.svg.gz +0 -0
- data/ui/dist/icons/luggage.svg.gz +0 -0
- data/ui/dist/icons/lungs.svg.gz +0 -0
- data/ui/dist/icons/macro.svg.gz +0 -0
- data/ui/dist/icons/magnet-off.svg.gz +0 -0
- data/ui/dist/icons/magnet.svg.gz +0 -0
- data/ui/dist/icons/mail-fast.svg.gz +0 -0
- data/ui/dist/icons/mail-forward.svg.gz +0 -0
- data/ui/dist/icons/mail-off.svg.gz +0 -0
- data/ui/dist/icons/mail-opened.svg.gz +0 -0
- data/ui/dist/icons/mail.svg.gz +0 -0
- data/ui/dist/icons/mailbox-off.svg.gz +0 -0
- data/ui/dist/icons/mailbox.svg.gz +0 -0
- data/ui/dist/icons/man.svg.gz +0 -0
- data/ui/dist/icons/manual-gearbox.svg.gz +0 -0
- data/ui/dist/icons/map-2.svg.gz +0 -0
- data/ui/dist/icons/map-off.svg.gz +0 -0
- data/ui/dist/icons/map-pin-off.svg.gz +0 -0
- data/ui/dist/icons/map-pin.svg.gz +0 -0
- data/ui/dist/icons/map-pins.svg.gz +0 -0
- data/ui/dist/icons/map-search.svg.gz +0 -0
- data/ui/dist/icons/map.svg.gz +0 -0
- data/ui/dist/icons/markdown.svg.gz +0 -0
- data/ui/dist/icons/marquee-2.svg.gz +0 -0
- data/ui/dist/icons/marquee-off.svg.gz +0 -0
- data/ui/dist/icons/marquee.svg.gz +0 -0
- data/ui/dist/icons/mars.svg.gz +0 -0
- data/ui/dist/icons/mask-off.svg.gz +0 -0
- data/ui/dist/icons/mask.svg.gz +0 -0
- data/ui/dist/icons/massage.svg.gz +0 -0
- data/ui/dist/icons/math-avg.svg.gz +0 -0
- data/ui/dist/icons/math-function-off.svg.gz +0 -0
- data/ui/dist/icons/math-function.svg.gz +0 -0
- data/ui/dist/icons/math-max.svg.gz +0 -0
- data/ui/dist/icons/math-min.svg.gz +0 -0
- data/ui/dist/icons/math-symbols.svg.gz +0 -0
- data/ui/dist/icons/math.svg.gz +0 -0
- data/ui/dist/icons/maximize-off.svg.gz +0 -0
- data/ui/dist/icons/maximize.svg.gz +0 -0
- data/ui/dist/icons/meat.svg.gz +0 -0
- data/ui/dist/icons/medal-2.svg.gz +0 -0
- data/ui/dist/icons/medal.svg.gz +0 -0
- data/ui/dist/icons/medical-cross-off.svg.gz +0 -0
- data/ui/dist/icons/medical-cross.svg.gz +0 -0
- data/ui/dist/icons/medicine-syrup.svg.gz +0 -0
- data/ui/dist/icons/menu-2.svg.gz +0 -0
- data/ui/dist/icons/menu.svg.gz +0 -0
- data/ui/dist/icons/message-2-code.svg.gz +0 -0
- data/ui/dist/icons/message-2-share.svg.gz +0 -0
- data/ui/dist/icons/message-2.svg.gz +0 -0
- data/ui/dist/icons/message-circle-2.svg.gz +0 -0
- data/ui/dist/icons/message-circle-off.svg.gz +0 -0
- data/ui/dist/icons/message-circle.svg.gz +0 -0
- data/ui/dist/icons/message-code.svg.gz +0 -0
- data/ui/dist/icons/message-dots.svg.gz +0 -0
- data/ui/dist/icons/message-language.svg.gz +0 -0
- data/ui/dist/icons/message-off.svg.gz +0 -0
- data/ui/dist/icons/message-plus.svg.gz +0 -0
- data/ui/dist/icons/message-report.svg.gz +0 -0
- data/ui/dist/icons/message-share.svg.gz +0 -0
- data/ui/dist/icons/message.svg.gz +0 -0
- data/ui/dist/icons/messages-off.svg.gz +0 -0
- data/ui/dist/icons/messages.svg.gz +0 -0
- data/ui/dist/icons/microphone-2.svg.gz +0 -0
- data/ui/dist/icons/microphone-off.svg.gz +0 -0
- data/ui/dist/icons/microphone.svg.gz +0 -0
- data/ui/dist/icons/microscope.svg.gz +0 -0
- data/ui/dist/icons/military-award.svg.gz +0 -0
- data/ui/dist/icons/military-rank.svg.gz +0 -0
- data/ui/dist/icons/milk.svg.gz +0 -0
- data/ui/dist/icons/minimize.svg.gz +0 -0
- data/ui/dist/icons/minus-vertical.svg.gz +0 -0
- data/ui/dist/icons/minus.svg.gz +0 -0
- data/ui/dist/icons/mist.svg.gz +0 -0
- data/ui/dist/icons/mood-boy.svg.gz +0 -0
- data/ui/dist/icons/mood-confuzed.svg.gz +0 -0
- data/ui/dist/icons/mood-crazy-happy.svg.gz +0 -0
- data/ui/dist/icons/mood-cry.svg.gz +0 -0
- data/ui/dist/icons/mood-empty.svg.gz +0 -0
- data/ui/dist/icons/mood-happy.svg.gz +0 -0
- data/ui/dist/icons/mood-kid.svg.gz +0 -0
- data/ui/dist/icons/mood-nervous.svg.gz +0 -0
- data/ui/dist/icons/mood-neutral.svg.gz +0 -0
- data/ui/dist/icons/mood-off.svg.gz +0 -0
- data/ui/dist/icons/mood-sad.svg.gz +0 -0
- data/ui/dist/icons/mood-smile.svg.gz +0 -0
- data/ui/dist/icons/mood-suprised.svg.gz +0 -0
- data/ui/dist/icons/mood-tongue.svg.gz +0 -0
- data/ui/dist/icons/moon-2.svg.gz +0 -0
- data/ui/dist/icons/moon-off.svg.gz +0 -0
- data/ui/dist/icons/moon-stars.svg.gz +0 -0
- data/ui/dist/icons/moon.svg.gz +0 -0
- data/ui/dist/icons/moped.svg.gz +0 -0
- data/ui/dist/icons/motorbike.svg.gz +0 -0
- data/ui/dist/icons/mountain.svg.gz +0 -0
- data/ui/dist/icons/mouse-2.svg.gz +0 -0
- data/ui/dist/icons/mouse-off.svg.gz +0 -0
- data/ui/dist/icons/mouse.svg.gz +0 -0
- data/ui/dist/icons/movie-off.svg.gz +0 -0
- data/ui/dist/icons/movie.svg.gz +0 -0
- data/ui/dist/icons/mug-off.svg.gz +0 -0
- data/ui/dist/icons/mug.svg.gz +0 -0
- data/ui/dist/icons/multiplier-0-5x.svg.gz +0 -0
- data/ui/dist/icons/multiplier-1-5x.svg.gz +0 -0
- data/ui/dist/icons/multiplier-1x.svg.gz +0 -0
- data/ui/dist/icons/multiplier-2x.svg.gz +0 -0
- data/ui/dist/icons/mushroom.svg.gz +0 -0
- data/ui/dist/icons/music-off.svg.gz +0 -0
- data/ui/dist/icons/music.svg.gz +0 -0
- data/ui/dist/icons/network.svg.gz +0 -0
- data/ui/dist/icons/new-section.svg.gz +0 -0
- data/ui/dist/icons/news-off.svg.gz +0 -0
- data/ui/dist/icons/news.svg.gz +0 -0
- data/ui/dist/icons/nfc-off.svg.gz +0 -0
- data/ui/dist/icons/nfc.svg.gz +0 -0
- data/ui/dist/icons/no-copyright.svg.gz +0 -0
- data/ui/dist/icons/no-creative-commons.svg.gz +0 -0
- data/ui/dist/icons/no-derivatives.svg.gz +0 -0
- data/ui/dist/icons/north-star.svg.gz +0 -0
- data/ui/dist/icons/note-off.svg.gz +0 -0
- data/ui/dist/icons/note.svg.gz +0 -0
- data/ui/dist/icons/notebook.svg.gz +0 -0
- data/ui/dist/icons/notes-off.svg.gz +0 -0
- data/ui/dist/icons/notes.svg.gz +0 -0
- data/ui/dist/icons/notification-off.svg.gz +0 -0
- data/ui/dist/icons/notification.svg.gz +0 -0
- data/ui/dist/icons/number-0.svg.gz +0 -0
- data/ui/dist/icons/number-1.svg.gz +0 -0
- data/ui/dist/icons/number-2.svg.gz +0 -0
- data/ui/dist/icons/number-3.svg.gz +0 -0
- data/ui/dist/icons/number-4.svg.gz +0 -0
- data/ui/dist/icons/number-5.svg.gz +0 -0
- data/ui/dist/icons/number-6.svg.gz +0 -0
- data/ui/dist/icons/number-7.svg.gz +0 -0
- data/ui/dist/icons/number-8.svg.gz +0 -0
- data/ui/dist/icons/number-9.svg.gz +0 -0
- data/ui/dist/icons/numbers.svg.gz +0 -0
- data/ui/dist/icons/nurse.svg.gz +0 -0
- data/ui/dist/icons/octagon-off.svg.gz +0 -0
- data/ui/dist/icons/octagon.svg.gz +0 -0
- data/ui/dist/icons/old.svg.gz +0 -0
- data/ui/dist/icons/olympics.svg.gz +0 -0
- data/ui/dist/icons/omega.svg.gz +0 -0
- data/ui/dist/icons/outlet.svg.gz +0 -0
- data/ui/dist/icons/oval-vertical.svg.gz +0 -0
- data/ui/dist/icons/oval.svg.gz +0 -0
- data/ui/dist/icons/overline.svg.gz +0 -0
- data/ui/dist/icons/package-off.svg.gz +0 -0
- data/ui/dist/icons/package.svg.gz +0 -0
- data/ui/dist/icons/packge-export.svg.gz +0 -0
- data/ui/dist/icons/packge-import.svg.gz +0 -0
- data/ui/dist/icons/pacman.svg.gz +0 -0
- data/ui/dist/icons/page-break.svg.gz +0 -0
- data/ui/dist/icons/paint-off.svg.gz +0 -0
- data/ui/dist/icons/paint.svg.gz +0 -0
- data/ui/dist/icons/palette-off.svg.gz +0 -0
- data/ui/dist/icons/palette.svg.gz +0 -0
- data/ui/dist/icons/panorama-horizontal.svg.gz +0 -0
- data/ui/dist/icons/panorama-vertical.svg.gz +0 -0
- data/ui/dist/icons/paper-bag-off.svg.gz +0 -0
- data/ui/dist/icons/paper-bag.svg.gz +0 -0
- data/ui/dist/icons/paperclip.svg.gz +0 -0
- data/ui/dist/icons/parachute-off.svg.gz +0 -0
- data/ui/dist/icons/parachute.svg.gz +0 -0
- data/ui/dist/icons/parentheses-off.svg.gz +0 -0
- data/ui/dist/icons/parentheses.svg.gz +0 -0
- data/ui/dist/icons/parking-off.svg.gz +0 -0
- data/ui/dist/icons/parking.svg.gz +0 -0
- data/ui/dist/icons/paw.svg.gz +0 -0
- data/ui/dist/icons/peace.svg.gz +0 -0
- data/ui/dist/icons/pencil-off.svg.gz +0 -0
- data/ui/dist/icons/pencil.svg.gz +0 -0
- data/ui/dist/icons/pennant-2.svg.gz +0 -0
- data/ui/dist/icons/pennant-off.svg.gz +0 -0
- data/ui/dist/icons/pennant.svg.gz +0 -0
- data/ui/dist/icons/pentagon.svg.gz +0 -0
- data/ui/dist/icons/pepper-off.svg.gz +0 -0
- data/ui/dist/icons/pepper.svg.gz +0 -0
- data/ui/dist/icons/percentage.svg.gz +0 -0
- data/ui/dist/icons/perspective-off.svg.gz +0 -0
- data/ui/dist/icons/perspective.svg.gz +0 -0
- data/ui/dist/icons/phone-call.svg.gz +0 -0
- data/ui/dist/icons/phone-calling.svg.gz +0 -0
- data/ui/dist/icons/phone-check.svg.gz +0 -0
- data/ui/dist/icons/phone-incoming.svg.gz +0 -0
- data/ui/dist/icons/phone-off.svg.gz +0 -0
- data/ui/dist/icons/phone-outgoing.svg.gz +0 -0
- data/ui/dist/icons/phone-pause.svg.gz +0 -0
- data/ui/dist/icons/phone-plus.svg.gz +0 -0
- data/ui/dist/icons/phone-x.svg.gz +0 -0
- data/ui/dist/icons/phone.svg.gz +0 -0
- data/ui/dist/icons/photo-off.svg.gz +0 -0
- data/ui/dist/icons/photo.svg.gz +0 -0
- data/ui/dist/icons/physotherapist.svg.gz +0 -0
- data/ui/dist/icons/picture-in-picture-off.svg.gz +0 -0
- data/ui/dist/icons/picture-in-picture-on.svg.gz +0 -0
- data/ui/dist/icons/picture-in-picture-top.svg.gz +0 -0
- data/ui/dist/icons/picture-in-picture.svg.gz +0 -0
- data/ui/dist/icons/pig-off.svg.gz +0 -0
- data/ui/dist/icons/pig.svg.gz +0 -0
- data/ui/dist/icons/pill-off.svg.gz +0 -0
- data/ui/dist/icons/pill.svg.gz +0 -0
- data/ui/dist/icons/pills.svg.gz +0 -0
- data/ui/dist/icons/pin.svg.gz +0 -0
- data/ui/dist/icons/pinned-off.svg.gz +0 -0
- data/ui/dist/icons/pinned.svg.gz +0 -0
- data/ui/dist/icons/pizza-off.svg.gz +0 -0
- data/ui/dist/icons/pizza.svg.gz +0 -0
- data/ui/dist/icons/plane-arrival.svg.gz +0 -0
- data/ui/dist/icons/plane-departure.svg.gz +0 -0
- data/ui/dist/icons/plane-inflight.svg.gz +0 -0
- data/ui/dist/icons/plane-off.svg.gz +0 -0
- data/ui/dist/icons/plane.svg.gz +0 -0
- data/ui/dist/icons/planet-off.svg.gz +0 -0
- data/ui/dist/icons/planet.svg.gz +0 -0
- data/ui/dist/icons/plant-2-off.svg.gz +0 -0
- data/ui/dist/icons/plant-2.svg.gz +0 -0
- data/ui/dist/icons/plant-off.svg.gz +0 -0
- data/ui/dist/icons/plant.svg.gz +0 -0
- data/ui/dist/icons/play-card-off.svg.gz +0 -0
- data/ui/dist/icons/play-card.svg.gz +0 -0
- data/ui/dist/icons/player-eject.svg.gz +0 -0
- data/ui/dist/icons/player-pause.svg.gz +0 -0
- data/ui/dist/icons/player-play.svg.gz +0 -0
- data/ui/dist/icons/player-record.svg.gz +0 -0
- data/ui/dist/icons/player-skip-back.svg.gz +0 -0
- data/ui/dist/icons/player-skip-forward.svg.gz +0 -0
- data/ui/dist/icons/player-stop.svg.gz +0 -0
- data/ui/dist/icons/player-track-next.svg.gz +0 -0
- data/ui/dist/icons/player-track-prev.svg.gz +0 -0
- data/ui/dist/icons/playlist-add.svg.gz +0 -0
- data/ui/dist/icons/playlist-off.svg.gz +0 -0
- data/ui/dist/icons/playlist-x.svg.gz +0 -0
- data/ui/dist/icons/playlist.svg.gz +0 -0
- data/ui/dist/icons/plug-connected-x.svg.gz +0 -0
- data/ui/dist/icons/plug-connected.svg.gz +0 -0
- data/ui/dist/icons/plug-off.svg.gz +0 -0
- data/ui/dist/icons/plug-x.svg.gz +0 -0
- data/ui/dist/icons/plug.svg.gz +0 -0
- data/ui/dist/icons/plus.svg.gz +0 -0
- data/ui/dist/icons/podium.svg.gz +0 -0
- data/ui/dist/icons/point-off.svg.gz +0 -0
- data/ui/dist/icons/point.svg.gz +0 -0
- data/ui/dist/icons/pokeball.svg.gz +0 -0
- data/ui/dist/icons/polaroid.svg.gz +0 -0
- data/ui/dist/icons/polygon-off.svg.gz +0 -0
- data/ui/dist/icons/polygon.svg.gz +0 -0
- data/ui/dist/icons/pool.svg.gz +0 -0
- data/ui/dist/icons/power.svg.gz +0 -0
- data/ui/dist/icons/pray.svg.gz +0 -0
- data/ui/dist/icons/premium-rights.svg.gz +0 -0
- data/ui/dist/icons/prescription.svg.gz +0 -0
- data/ui/dist/icons/presentation-analytics.svg.gz +0 -0
- data/ui/dist/icons/presentation-off.svg.gz +0 -0
- data/ui/dist/icons/presentation.svg.gz +0 -0
- data/ui/dist/icons/printer-off.svg.gz +0 -0
- data/ui/dist/icons/printer.svg.gz +0 -0
- data/ui/dist/icons/prison.svg.gz +0 -0
- data/ui/dist/icons/prompt.svg.gz +0 -0
- data/ui/dist/icons/propeller-off.svg.gz +0 -0
- data/ui/dist/icons/propeller.svg.gz +0 -0
- data/ui/dist/icons/puzzle-2.svg.gz +0 -0
- data/ui/dist/icons/puzzle-off.svg.gz +0 -0
- data/ui/dist/icons/puzzle.svg.gz +0 -0
- data/ui/dist/icons/pyramid-off.svg.gz +0 -0
- data/ui/dist/icons/pyramid.svg.gz +0 -0
- data/ui/dist/icons/qrcode.svg.gz +0 -0
- data/ui/dist/icons/question-mark.svg.gz +0 -0
- data/ui/dist/icons/quote-off.svg.gz +0 -0
- data/ui/dist/icons/quote.svg.gz +0 -0
- data/ui/dist/icons/radar-2.svg.gz +0 -0
- data/ui/dist/icons/radar.svg.gz +0 -0
- data/ui/dist/icons/radio.svg.gz +0 -0
- data/ui/dist/icons/radioactive-off.svg.gz +0 -0
- data/ui/dist/icons/radioactive.svg.gz +0 -0
- data/ui/dist/icons/radius-bottom-left.svg.gz +0 -0
- data/ui/dist/icons/radius-bottom-right.svg.gz +0 -0
- data/ui/dist/icons/radius-top-left.svg.gz +0 -0
- data/ui/dist/icons/radius-top-right.svg.gz +0 -0
- data/ui/dist/icons/rainbow-off.svg.gz +0 -0
- data/ui/dist/icons/rainbow.svg.gz +0 -0
- data/ui/dist/icons/receipt-2.svg.gz +0 -0
- data/ui/dist/icons/receipt-off.svg.gz +0 -0
- data/ui/dist/icons/receipt-refund.svg.gz +0 -0
- data/ui/dist/icons/receipt-tax.svg.gz +0 -0
- data/ui/dist/icons/receipt.svg.gz +0 -0
- data/ui/dist/icons/recharging.svg.gz +0 -0
- data/ui/dist/icons/record-mail-off.svg.gz +0 -0
- data/ui/dist/icons/record-mail.svg.gz +0 -0
- data/ui/dist/icons/rectangle-vertical.svg.gz +0 -0
- data/ui/dist/icons/rectangle.svg.gz +0 -0
- data/ui/dist/icons/recycle-off.svg.gz +0 -0
- data/ui/dist/icons/recycle.svg.gz +0 -0
- data/ui/dist/icons/refresh-alert.svg.gz +0 -0
- data/ui/dist/icons/refresh-dot.svg.gz +0 -0
- data/ui/dist/icons/refresh-off.svg.gz +0 -0
- data/ui/dist/icons/refresh.svg.gz +0 -0
- data/ui/dist/icons/registered.svg.gz +0 -0
- data/ui/dist/icons/relation-many-to-many.svg.gz +0 -0
- data/ui/dist/icons/relation-one-to-many.svg.gz +0 -0
- data/ui/dist/icons/relation-one-to-one.svg.gz +0 -0
- data/ui/dist/icons/repeat-off.svg.gz +0 -0
- data/ui/dist/icons/repeat-once.svg.gz +0 -0
- data/ui/dist/icons/repeat.svg.gz +0 -0
- data/ui/dist/icons/replace.svg.gz +0 -0
- data/ui/dist/icons/report-analytics.svg.gz +0 -0
- data/ui/dist/icons/report-medical.svg.gz +0 -0
- data/ui/dist/icons/report-money.svg.gz +0 -0
- data/ui/dist/icons/report-off.svg.gz +0 -0
- data/ui/dist/icons/report-search.svg.gz +0 -0
- data/ui/dist/icons/report.svg.gz +0 -0
- data/ui/dist/icons/resize.svg.gz +0 -0
- data/ui/dist/icons/ripple-off.svg.gz +0 -0
- data/ui/dist/icons/ripple.svg.gz +0 -0
- data/ui/dist/icons/road-off.svg.gz +0 -0
- data/ui/dist/icons/road-sign.svg.gz +0 -0
- data/ui/dist/icons/road.svg.gz +0 -0
- data/ui/dist/icons/robot-off.svg.gz +0 -0
- data/ui/dist/icons/robot.svg.gz +0 -0
- data/ui/dist/icons/rocket-off.svg.gz +0 -0
- data/ui/dist/icons/rocket.svg.gz +0 -0
- data/ui/dist/icons/roller-skating.svg.gz +0 -0
- data/ui/dist/icons/rollercoaster.svg.gz +0 -0
- data/ui/dist/icons/rotate-2.svg.gz +0 -0
- data/ui/dist/icons/rotate-360.svg.gz +0 -0
- data/ui/dist/icons/rotate-clockwise-2.svg.gz +0 -0
- data/ui/dist/icons/rotate-clockwise.svg.gz +0 -0
- data/ui/dist/icons/rotate-dot.svg.gz +0 -0
- data/ui/dist/icons/rotate-rectangle.svg.gz +0 -0
- data/ui/dist/icons/rotate.svg.gz +0 -0
- data/ui/dist/icons/route-off.svg.gz +0 -0
- data/ui/dist/icons/route.svg.gz +0 -0
- data/ui/dist/icons/router.svg.gz +0 -0
- data/ui/dist/icons/row-insert-bottom.svg.gz +0 -0
- data/ui/dist/icons/row-insert-top.svg.gz +0 -0
- data/ui/dist/icons/rss.svg.gz +0 -0
- data/ui/dist/icons/ruler-2-off.svg.gz +0 -0
- data/ui/dist/icons/ruler-2.svg.gz +0 -0
- data/ui/dist/icons/ruler-off.svg.gz +0 -0
- data/ui/dist/icons/ruler.svg.gz +0 -0
- data/ui/dist/icons/run.svg.gz +0 -0
- data/ui/dist/icons/sailboat.svg.gz +0 -0
- data/ui/dist/icons/salt.svg.gz +0 -0
- data/ui/dist/icons/satellite-off.svg.gz +0 -0
- data/ui/dist/icons/satellite.svg.gz +0 -0
- data/ui/dist/icons/sausage.svg.gz +0 -0
- data/ui/dist/icons/scale-off.svg.gz +0 -0
- data/ui/dist/icons/scale-outline-off.svg.gz +0 -0
- data/ui/dist/icons/scale-outline.svg.gz +0 -0
- data/ui/dist/icons/scale.svg.gz +0 -0
- data/ui/dist/icons/scan.svg.gz +0 -0
- data/ui/dist/icons/school-off.svg.gz +0 -0
- data/ui/dist/icons/school.svg.gz +0 -0
- data/ui/dist/icons/scissors-off.svg.gz +0 -0
- data/ui/dist/icons/scissors.svg.gz +0 -0
- data/ui/dist/icons/scooter-electric.svg.gz +0 -0
- data/ui/dist/icons/scooter.svg.gz +0 -0
- data/ui/dist/icons/screen-share-off.svg.gz +0 -0
- data/ui/dist/icons/screen-share.svg.gz +0 -0
- data/ui/dist/icons/scribble.svg.gz +0 -0
- data/ui/dist/icons/scuba-mask.svg.gz +0 -0
- data/ui/dist/icons/search-off.svg.gz +0 -0
- data/ui/dist/icons/search.svg.gz +0 -0
- data/ui/dist/icons/section-sign.svg.gz +0 -0
- data/ui/dist/icons/section.svg.gz +0 -0
- data/ui/dist/icons/seeding-off.svg.gz +0 -0
- data/ui/dist/icons/seeding.svg.gz +0 -0
- data/ui/dist/icons/select.svg.gz +0 -0
- data/ui/dist/icons/selector.svg.gz +0 -0
- data/ui/dist/icons/send.svg.gz +0 -0
- data/ui/dist/icons/separator-horizontal.svg.gz +0 -0
- data/ui/dist/icons/separator-vertical.svg.gz +0 -0
- data/ui/dist/icons/separator.svg.gz +0 -0
- data/ui/dist/icons/server-2.svg.gz +0 -0
- data/ui/dist/icons/server-off.svg.gz +0 -0
- data/ui/dist/icons/server.svg.gz +0 -0
- data/ui/dist/icons/servicemark.svg.gz +0 -0
- data/ui/dist/icons/settings-automation.svg.gz +0 -0
- data/ui/dist/icons/settings-off.svg.gz +0 -0
- data/ui/dist/icons/settings.svg.gz +0 -0
- data/ui/dist/icons/shadow-off.svg.gz +0 -0
- data/ui/dist/icons/shadow.svg.gz +0 -0
- data/ui/dist/icons/shape-2.svg.gz +0 -0
- data/ui/dist/icons/shape-3.svg.gz +0 -0
- data/ui/dist/icons/shape-off.svg.gz +0 -0
- data/ui/dist/icons/shape.svg.gz +0 -0
- data/ui/dist/icons/share-off.svg.gz +0 -0
- data/ui/dist/icons/share.svg.gz +0 -0
- data/ui/dist/icons/shield-check.svg.gz +0 -0
- data/ui/dist/icons/shield-checkered.svg.gz +0 -0
- data/ui/dist/icons/shield-chevron.svg.gz +0 -0
- data/ui/dist/icons/shield-lock.svg.gz +0 -0
- data/ui/dist/icons/shield-off.svg.gz +0 -0
- data/ui/dist/icons/shield-x.svg.gz +0 -0
- data/ui/dist/icons/shield.svg.gz +0 -0
- data/ui/dist/icons/ship.svg.gz +0 -0
- data/ui/dist/icons/shirt-off.svg.gz +0 -0
- data/ui/dist/icons/shirt.svg.gz +0 -0
- data/ui/dist/icons/shoe-off.svg.gz +0 -0
- data/ui/dist/icons/shoe.svg.gz +0 -0
- data/ui/dist/icons/shopping-cart-discount.svg.gz +0 -0
- data/ui/dist/icons/shopping-cart-off.svg.gz +0 -0
- data/ui/dist/icons/shopping-cart-plus.svg.gz +0 -0
- data/ui/dist/icons/shopping-cart-x.svg.gz +0 -0
- data/ui/dist/icons/shopping-cart.svg.gz +0 -0
- data/ui/dist/icons/shovel.svg.gz +0 -0
- data/ui/dist/icons/shredder.svg.gz +0 -0
- data/ui/dist/icons/sign-left.svg.gz +0 -0
- data/ui/dist/icons/sign-right.svg.gz +0 -0
- data/ui/dist/icons/signature-off.svg.gz +0 -0
- data/ui/dist/icons/signature.svg.gz +0 -0
- data/ui/dist/icons/sitemap-off.svg.gz +0 -0
- data/ui/dist/icons/sitemap.svg.gz +0 -0
- data/ui/dist/icons/skateboard.svg.gz +0 -0
- data/ui/dist/icons/sleigh.svg.gz +0 -0
- data/ui/dist/icons/slice.svg.gz +0 -0
- data/ui/dist/icons/slideshow.svg.gz +0 -0
- data/ui/dist/icons/smart-home-off.svg.gz +0 -0
- data/ui/dist/icons/smart-home.svg.gz +0 -0
- data/ui/dist/icons/smoking-no.svg.gz +0 -0
- data/ui/dist/icons/smoking.svg.gz +0 -0
- data/ui/dist/icons/snowflake-off.svg.gz +0 -0
- data/ui/dist/icons/snowflake.svg.gz +0 -0
- data/ui/dist/icons/soccer-field.svg.gz +0 -0
- data/ui/dist/icons/social-off.svg.gz +0 -0
- data/ui/dist/icons/social.svg.gz +0 -0
- data/ui/dist/icons/sock.svg.gz +0 -0
- data/ui/dist/icons/sofa.svg.gz +0 -0
- data/ui/dist/icons/sort-ascending-2.svg.gz +0 -0
- data/ui/dist/icons/sort-ascending-letters.svg.gz +0 -0
- data/ui/dist/icons/sort-ascending-numbers.svg.gz +0 -0
- data/ui/dist/icons/sort-ascending.svg.gz +0 -0
- data/ui/dist/icons/sort-descending-2.svg.gz +0 -0
- data/ui/dist/icons/sort-descending-letters.svg.gz +0 -0
- data/ui/dist/icons/sort-descending-numbers.svg.gz +0 -0
- data/ui/dist/icons/sort-descending.svg.gz +0 -0
- data/ui/dist/icons/soup.svg.gz +0 -0
- data/ui/dist/icons/space-off.svg.gz +0 -0
- data/ui/dist/icons/space.svg.gz +0 -0
- data/ui/dist/icons/spacing-horizontal.svg.gz +0 -0
- data/ui/dist/icons/spacing-vertical.svg.gz +0 -0
- data/ui/dist/icons/spade.svg.gz +0 -0
- data/ui/dist/icons/speakerphone.svg.gz +0 -0
- data/ui/dist/icons/speedboat.svg.gz +0 -0
- data/ui/dist/icons/sport-billard.svg.gz +0 -0
- data/ui/dist/icons/square-0.svg.gz +0 -0
- data/ui/dist/icons/square-1.svg.gz +0 -0
- data/ui/dist/icons/square-2.svg.gz +0 -0
- data/ui/dist/icons/square-3.svg.gz +0 -0
- data/ui/dist/icons/square-4.svg.gz +0 -0
- data/ui/dist/icons/square-5.svg.gz +0 -0
- data/ui/dist/icons/square-6.svg.gz +0 -0
- data/ui/dist/icons/square-7.svg.gz +0 -0
- data/ui/dist/icons/square-8.svg.gz +0 -0
- data/ui/dist/icons/square-9.svg.gz +0 -0
- data/ui/dist/icons/square-asterisk.svg.gz +0 -0
- data/ui/dist/icons/square-check.svg.gz +0 -0
- data/ui/dist/icons/square-dot.svg.gz +0 -0
- data/ui/dist/icons/square-forbid-2.svg.gz +0 -0
- data/ui/dist/icons/square-forbid.svg.gz +0 -0
- data/ui/dist/icons/square-half.svg.gz +0 -0
- data/ui/dist/icons/square-minus.svg.gz +0 -0
- data/ui/dist/icons/square-off.svg.gz +0 -0
- data/ui/dist/icons/square-plus.svg.gz +0 -0
- data/ui/dist/icons/square-root-2.svg.gz +0 -0
- data/ui/dist/icons/square-root.svg.gz +0 -0
- data/ui/dist/icons/square-rotated-forbid-2.svg.gz +0 -0
- data/ui/dist/icons/square-rotated-forbid.svg.gz +0 -0
- data/ui/dist/icons/square-rotated-off.svg.gz +0 -0
- data/ui/dist/icons/square-rotated.svg.gz +0 -0
- data/ui/dist/icons/square-toggle-horizontal.svg.gz +0 -0
- data/ui/dist/icons/square-toggle.svg.gz +0 -0
- data/ui/dist/icons/square-x.svg.gz +0 -0
- data/ui/dist/icons/square.svg.gz +0 -0
- data/ui/dist/icons/squares-diagonal.svg.gz +0 -0
- data/ui/dist/icons/squares-filled.svg.gz +0 -0
- data/ui/dist/icons/stack-2.svg.gz +0 -0
- data/ui/dist/icons/stack-3.svg.gz +0 -0
- data/ui/dist/icons/stack.svg.gz +0 -0
- data/ui/dist/icons/stairs-down.svg.gz +0 -0
- data/ui/dist/icons/stairs-up.svg.gz +0 -0
- data/ui/dist/icons/stairs.svg.gz +0 -0
- data/ui/dist/icons/star-half.svg.gz +0 -0
- data/ui/dist/icons/star-off.svg.gz +0 -0
- data/ui/dist/icons/star.svg.gz +0 -0
- data/ui/dist/icons/stars.svg.gz +0 -0
- data/ui/dist/icons/steering-wheel.svg.gz +0 -0
- data/ui/dist/icons/step-into.svg.gz +0 -0
- data/ui/dist/icons/step-out.svg.gz +0 -0
- data/ui/dist/icons/stethoscope.svg.gz +0 -0
- data/ui/dist/icons/sticker.svg.gz +0 -0
- data/ui/dist/icons/strikethrough.svg.gz +0 -0
- data/ui/dist/icons/submarine.svg.gz +0 -0
- data/ui/dist/icons/subscript.svg.gz +0 -0
- data/ui/dist/icons/subtask.svg.gz +0 -0
- data/ui/dist/icons/sum-off.svg.gz +0 -0
- data/ui/dist/icons/sum.svg.gz +0 -0
- data/ui/dist/icons/sun-off.svg.gz +0 -0
- data/ui/dist/icons/sun.svg.gz +0 -0
- data/ui/dist/icons/sunrise.svg.gz +0 -0
- data/ui/dist/icons/sunset.svg.gz +0 -0
- data/ui/dist/icons/superscript.svg.gz +0 -0
- data/ui/dist/icons/swimming.svg.gz +0 -0
- data/ui/dist/icons/switch-2.svg.gz +0 -0
- data/ui/dist/icons/switch-3.svg.gz +0 -0
- data/ui/dist/icons/switch-horizontal.svg.gz +0 -0
- data/ui/dist/icons/switch-vertical.svg.gz +0 -0
- data/ui/dist/icons/switch.svg.gz +0 -0
- data/ui/dist/icons/sword-off.svg.gz +0 -0
- data/ui/dist/icons/sword.svg.gz +0 -0
- data/ui/dist/icons/swords.svg.gz +0 -0
- data/ui/dist/icons/table-export.svg.gz +0 -0
- data/ui/dist/icons/table-import.svg.gz +0 -0
- data/ui/dist/icons/table-off.svg.gz +0 -0
- data/ui/dist/icons/table.svg.gz +0 -0
- data/ui/dist/icons/tag-off.svg.gz +0 -0
- data/ui/dist/icons/tag.svg.gz +0 -0
- data/ui/dist/icons/tags-off.svg.gz +0 -0
- data/ui/dist/icons/tags.svg.gz +0 -0
- data/ui/dist/icons/tallymark-1.svg.gz +0 -0
- data/ui/dist/icons/tallymark-2.svg.gz +0 -0
- data/ui/dist/icons/tallymark-3.svg.gz +0 -0
- data/ui/dist/icons/tallymark-4.svg.gz +0 -0
- data/ui/dist/icons/tallymarks.svg.gz +0 -0
- data/ui/dist/icons/tank.svg.gz +0 -0
- data/ui/dist/icons/target-off.svg.gz +0 -0
- data/ui/dist/icons/target.svg.gz +0 -0
- data/ui/dist/icons/telescope-off.svg.gz +0 -0
- data/ui/dist/icons/telescope.svg.gz +0 -0
- data/ui/dist/icons/temperature-celsius.svg.gz +0 -0
- data/ui/dist/icons/temperature-fahrenheit.svg.gz +0 -0
- data/ui/dist/icons/temperature-minus.svg.gz +0 -0
- data/ui/dist/icons/temperature-off.svg.gz +0 -0
- data/ui/dist/icons/temperature-plus.svg.gz +0 -0
- data/ui/dist/icons/temperature.svg.gz +0 -0
- data/ui/dist/icons/template-off.svg.gz +0 -0
- data/ui/dist/icons/template.svg.gz +0 -0
- data/ui/dist/icons/tent.svg.gz +0 -0
- data/ui/dist/icons/terminal-2.svg.gz +0 -0
- data/ui/dist/icons/terminal.svg.gz +0 -0
- data/ui/dist/icons/test-pipe-2.svg.gz +0 -0
- data/ui/dist/icons/test-pipe-off.svg.gz +0 -0
- data/ui/dist/icons/test-pipe.svg.gz +0 -0
- data/ui/dist/icons/text-direction-ltr.svg.gz +0 -0
- data/ui/dist/icons/text-direction-rtl.svg.gz +0 -0
- data/ui/dist/icons/text-resize.svg.gz +0 -0
- data/ui/dist/icons/text-wrap-disabled.svg.gz +0 -0
- data/ui/dist/icons/text-wrap.svg.gz +0 -0
- data/ui/dist/icons/thermometer.svg.gz +0 -0
- data/ui/dist/icons/thumb-down.svg.gz +0 -0
- data/ui/dist/icons/thumb-up.svg.gz +0 -0
- data/ui/dist/icons/ticket-off.svg.gz +0 -0
- data/ui/dist/icons/ticket.svg.gz +0 -0
- data/ui/dist/icons/tie.svg.gz +0 -0
- data/ui/dist/icons/tilt-shift-off.svg.gz +0 -0
- data/ui/dist/icons/tilt-shift.svg.gz +0 -0
- data/ui/dist/icons/timeline.svg.gz +0 -0
- data/ui/dist/icons/tir.svg.gz +0 -0
- data/ui/dist/icons/toggle-left.svg.gz +0 -0
- data/ui/dist/icons/toggle-right.svg.gz +0 -0
- data/ui/dist/icons/toilet-paper-off.svg.gz +0 -0
- data/ui/dist/icons/toilet-paper.svg.gz +0 -0
- data/ui/dist/icons/tool.svg.gz +0 -0
- data/ui/dist/icons/tools-kitchen-2-off.svg.gz +0 -0
- data/ui/dist/icons/tools-kitchen-2.svg.gz +0 -0
- data/ui/dist/icons/tools-kitchen-off.svg.gz +0 -0
- data/ui/dist/icons/tools-kitchen.svg.gz +0 -0
- data/ui/dist/icons/tools-off.svg.gz +0 -0
- data/ui/dist/icons/tools.svg.gz +0 -0
- data/ui/dist/icons/tornado.svg.gz +0 -0
- data/ui/dist/icons/tournament.svg.gz +0 -0
- data/ui/dist/icons/track.svg.gz +0 -0
- data/ui/dist/icons/tractor.svg.gz +0 -0
- data/ui/dist/icons/trademark.svg.gz +0 -0
- data/ui/dist/icons/traffic-cone-off.svg.gz +0 -0
- data/ui/dist/icons/traffic-cone.svg.gz +0 -0
- data/ui/dist/icons/traffic-lights-off.svg.gz +0 -0
- data/ui/dist/icons/traffic-lights.svg.gz +0 -0
- data/ui/dist/icons/train.svg.gz +0 -0
- data/ui/dist/icons/transfer-in.svg.gz +0 -0
- data/ui/dist/icons/transfer-out.svg.gz +0 -0
- data/ui/dist/icons/trash-off.svg.gz +0 -0
- data/ui/dist/icons/trash-x.svg.gz +0 -0
- data/ui/dist/icons/trash.svg.gz +0 -0
- data/ui/dist/icons/tree.svg.gz +0 -0
- data/ui/dist/icons/trees.svg.gz +0 -0
- data/ui/dist/icons/trending-down-2.svg.gz +0 -0
- data/ui/dist/icons/trending-down-3.svg.gz +0 -0
- data/ui/dist/icons/trending-down.svg.gz +0 -0
- data/ui/dist/icons/trending-up-2.svg.gz +0 -0
- data/ui/dist/icons/trending-up-3.svg.gz +0 -0
- data/ui/dist/icons/trending-up.svg.gz +0 -0
- data/ui/dist/icons/triangle-inverted.svg.gz +0 -0
- data/ui/dist/icons/triangle-off.svg.gz +0 -0
- data/ui/dist/icons/triangle-square-circle.svg.gz +0 -0
- data/ui/dist/icons/triangle.svg.gz +0 -0
- data/ui/dist/icons/triangles.svg.gz +0 -0
- data/ui/dist/icons/trident.svg.gz +0 -0
- data/ui/dist/icons/trophy.svg.gz +0 -0
- data/ui/dist/icons/truck-delivery.svg.gz +0 -0
- data/ui/dist/icons/truck-loading.svg.gz +0 -0
- data/ui/dist/icons/truck-off.svg.gz +0 -0
- data/ui/dist/icons/truck-return.svg.gz +0 -0
- data/ui/dist/icons/truck.svg.gz +0 -0
- data/ui/dist/icons/typography-off.svg.gz +0 -0
- data/ui/dist/icons/typography.svg.gz +0 -0
- data/ui/dist/icons/umbrella-off.svg.gz +0 -0
- data/ui/dist/icons/umbrella.svg.gz +0 -0
- data/ui/dist/icons/underline.svg.gz +0 -0
- data/ui/dist/icons/unlink.svg.gz +0 -0
- data/ui/dist/icons/upload.svg.gz +0 -0
- data/ui/dist/icons/urgent.svg.gz +0 -0
- data/ui/dist/icons/usb.svg.gz +0 -0
- data/ui/dist/icons/user-check.svg.gz +0 -0
- data/ui/dist/icons/user-circle.svg.gz +0 -0
- data/ui/dist/icons/user-exclamation.svg.gz +0 -0
- data/ui/dist/icons/user-minus.svg.gz +0 -0
- data/ui/dist/icons/user-off.svg.gz +0 -0
- data/ui/dist/icons/user-plus.svg.gz +0 -0
- data/ui/dist/icons/user-search.svg.gz +0 -0
- data/ui/dist/icons/user-x.svg.gz +0 -0
- data/ui/dist/icons/user.svg.gz +0 -0
- data/ui/dist/icons/users.svg.gz +0 -0
- data/ui/dist/icons/vaccine-bottle.svg.gz +0 -0
- data/ui/dist/icons/vaccine-off.svg.gz +0 -0
- data/ui/dist/icons/vaccine.svg.gz +0 -0
- data/ui/dist/icons/variable-off.svg.gz +0 -0
- data/ui/dist/icons/variable.svg.gz +0 -0
- data/ui/dist/icons/vector-bezier-2.svg.gz +0 -0
- data/ui/dist/icons/vector-bezier.svg.gz +0 -0
- data/ui/dist/icons/vector-off.svg.gz +0 -0
- data/ui/dist/icons/vector-triangle-off.svg.gz +0 -0
- data/ui/dist/icons/vector-triangle.svg.gz +0 -0
- data/ui/dist/icons/vector.svg.gz +0 -0
- data/ui/dist/icons/venus.svg.gz +0 -0
- data/ui/dist/icons/versions-off.svg.gz +0 -0
- data/ui/dist/icons/versions.svg.gz +0 -0
- data/ui/dist/icons/video-minus.svg.gz +0 -0
- data/ui/dist/icons/video-off.svg.gz +0 -0
- data/ui/dist/icons/video-plus.svg.gz +0 -0
- data/ui/dist/icons/video.svg.gz +0 -0
- data/ui/dist/icons/view-360-off.svg.gz +0 -0
- data/ui/dist/icons/view-360.svg.gz +0 -0
- data/ui/dist/icons/viewfinder-off.svg.gz +0 -0
- data/ui/dist/icons/viewfinder.svg.gz +0 -0
- data/ui/dist/icons/viewport-narrow.svg.gz +0 -0
- data/ui/dist/icons/viewport-wide.svg.gz +0 -0
- data/ui/dist/icons/vinyl.svg.gz +0 -0
- data/ui/dist/icons/virus-off.svg.gz +0 -0
- data/ui/dist/icons/virus-search.svg.gz +0 -0
- data/ui/dist/icons/virus.svg.gz +0 -0
- data/ui/dist/icons/vocabulary.svg.gz +0 -0
- data/ui/dist/icons/volume-2.svg.gz +0 -0
- data/ui/dist/icons/volume-3.svg.gz +0 -0
- data/ui/dist/icons/volume-off.svg.gz +0 -0
- data/ui/dist/icons/volume.svg.gz +0 -0
- data/ui/dist/icons/walk.svg.gz +0 -0
- data/ui/dist/icons/wall.svg.gz +0 -0
- data/ui/dist/icons/wallet-off.svg.gz +0 -0
- data/ui/dist/icons/wallet.svg.gz +0 -0
- data/ui/dist/icons/wallpaper-off.svg.gz +0 -0
- data/ui/dist/icons/wallpaper.svg.gz +0 -0
- data/ui/dist/icons/wand-off.svg.gz +0 -0
- data/ui/dist/icons/wand.svg.gz +0 -0
- data/ui/dist/icons/wave-saw-tool.svg.gz +0 -0
- data/ui/dist/icons/wave-sine.svg.gz +0 -0
- data/ui/dist/icons/wave-square.svg.gz +0 -0
- data/ui/dist/icons/webhook.svg.gz +0 -0
- data/ui/dist/icons/wheelchair.svg.gz +0 -0
- data/ui/dist/icons/wifi-0.svg.gz +0 -0
- data/ui/dist/icons/wifi-1.svg.gz +0 -0
- data/ui/dist/icons/wifi-2.svg.gz +0 -0
- data/ui/dist/icons/wifi-off.svg.gz +0 -0
- data/ui/dist/icons/wifi.svg.gz +0 -0
- data/ui/dist/icons/wind-off.svg.gz +0 -0
- data/ui/dist/icons/wind.svg.gz +0 -0
- data/ui/dist/icons/windmill-off.svg.gz +0 -0
- data/ui/dist/icons/windmill.svg.gz +0 -0
- data/ui/dist/icons/window-off.svg.gz +0 -0
- data/ui/dist/icons/window.svg.gz +0 -0
- data/ui/dist/icons/windsock.svg.gz +0 -0
- data/ui/dist/icons/wiper-wash.svg.gz +0 -0
- data/ui/dist/icons/wiper.svg.gz +0 -0
- data/ui/dist/icons/woman.svg.gz +0 -0
- data/ui/dist/icons/world-download.svg.gz +0 -0
- data/ui/dist/icons/world-latitude.svg.gz +0 -0
- data/ui/dist/icons/world-longitude.svg.gz +0 -0
- data/ui/dist/icons/world-off.svg.gz +0 -0
- data/ui/dist/icons/world-upload.svg.gz +0 -0
- data/ui/dist/icons/world.svg.gz +0 -0
- data/ui/dist/icons/wrecking-ball.svg.gz +0 -0
- data/ui/dist/icons/writing-off.svg.gz +0 -0
- data/ui/dist/icons/writing-sign-off.svg.gz +0 -0
- data/ui/dist/icons/writing-sign.svg.gz +0 -0
- data/ui/dist/icons/writing.svg.gz +0 -0
- data/ui/dist/icons/x.svg.gz +0 -0
- data/ui/dist/icons/yin-yang.svg.gz +0 -0
- data/ui/dist/icons/yoga.svg.gz +0 -0
- data/ui/dist/icons/zodiac-aquarius.svg.gz +0 -0
- data/ui/dist/icons/zodiac-aries.svg.gz +0 -0
- data/ui/dist/icons/zodiac-cancer.svg.gz +0 -0
- data/ui/dist/icons/zodiac-capricorn.svg.gz +0 -0
- data/ui/dist/icons/zodiac-gemini.svg.gz +0 -0
- data/ui/dist/icons/zodiac-leo.svg.gz +0 -0
- data/ui/dist/icons/zodiac-libra.svg.gz +0 -0
- data/ui/dist/icons/zodiac-pisces.svg.gz +0 -0
- data/ui/dist/icons/zodiac-sagittarius.svg.gz +0 -0
- data/ui/dist/icons/zodiac-scorpio.svg.gz +0 -0
- data/ui/dist/icons/zodiac-taurus.svg.gz +0 -0
- data/ui/dist/icons/zodiac-virgo.svg.gz +0 -0
- data/ui/dist/icons/zoom-cancel.svg.gz +0 -0
- data/ui/dist/icons/zoom-check.svg.gz +0 -0
- data/ui/dist/icons/zoom-code.svg.gz +0 -0
- data/ui/dist/icons/zoom-exclamation.svg.gz +0 -0
- data/ui/dist/icons/zoom-in-area.svg.gz +0 -0
- data/ui/dist/icons/zoom-in.svg.gz +0 -0
- data/ui/dist/icons/zoom-money.svg.gz +0 -0
- data/ui/dist/icons/zoom-out-area.svg.gz +0 -0
- data/ui/dist/icons/zoom-out.svg.gz +0 -0
- data/ui/dist/icons/zoom-pan.svg.gz +0 -0
- data/ui/dist/icons/zoom-question.svg.gz +0 -0
- data/ui/dist/images/layers-2x.png +0 -0
- data/ui/dist/images/layers.png +0 -0
- data/ui/dist/images/marker-icon.png +0 -0
- data/ui/dist/main-292815f529c3a421d507.css.gz +0 -0
- data/ui/dist/main-292815f529c3a421d507.js.gz +0 -0
- data/ui/dist/manifest.json +3972 -0
- metadata +2272 -0
@@ -0,0 +1,177 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Motor
|
4
|
+
module Configs
|
5
|
+
module BuildUiAppTag
|
6
|
+
CACHE_STORE =
|
7
|
+
if Motor.development?
|
8
|
+
ActiveSupport::Cache::NullStore.new
|
9
|
+
else
|
10
|
+
ActiveSupport::Cache::MemoryStore.new(size: 5.megabytes)
|
11
|
+
end
|
12
|
+
|
13
|
+
module_function
|
14
|
+
|
15
|
+
def call(current_user = nil, current_ability = nil, cache_keys: LoadFromCache.load_cache_keys)
|
16
|
+
CACHE_STORE.fetch(app_tag_cache_key(cache_keys, current_user, current_ability)) do
|
17
|
+
CACHE_STORE.clear
|
18
|
+
|
19
|
+
data = build_data(cache_keys, current_user, current_ability)
|
20
|
+
Motor::ApplicationController.helpers.tag.div('', id: 'app', data: data)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def app_tag_cache_key(cache_keys, current_user, current_ability)
|
25
|
+
key = "#{I18n.locale}#{cache_keys.hash}#{current_user&.id}#{current_ability&.rules_hash}"
|
26
|
+
|
27
|
+
key += Motor::DefineArModels.defined_models_schema_md5.to_s if defined?(Motor::DefineArModels)
|
28
|
+
|
29
|
+
if Rails.env.development?
|
30
|
+
key += Digest::MD5.hexdigest(ActiveRecord::Base.descendants.map(&:object_id).sort.join)
|
31
|
+
end
|
32
|
+
|
33
|
+
key
|
34
|
+
end
|
35
|
+
|
36
|
+
# rubocop:disable Metrics/AbcSize
|
37
|
+
# rubocop:disable Metrics/MethodLength
|
38
|
+
# @return [Hash]
|
39
|
+
def build_data(cache_keys = {}, current_user = nil, current_ability = nil)
|
40
|
+
configs_cache_key = cache_keys[:configs]
|
41
|
+
|
42
|
+
{ version: Motor::VERSION,
|
43
|
+
current_user: serialize_current_user(current_user),
|
44
|
+
current_rules: current_ability.serialized_rules,
|
45
|
+
audits_count: Motor::Audit.count,
|
46
|
+
i18n: i18n_data,
|
47
|
+
base_path: Motor::Admin.routes.url_helpers.motor_path,
|
48
|
+
cable_path: Motor::Admin.routes.url_helpers.try(:motor_cable_path),
|
49
|
+
admin_settings_path: Rails.application.routes.url_helpers.try(:admin_settings_general_path),
|
50
|
+
active_storage_direct_uploads_enabled: ENV['MOTOR_ACTIVE_STORAGE_DIRECT_UPLOADS_ENABLED'].present?,
|
51
|
+
schema: Motor::BuildSchema.call(cache_keys, current_ability),
|
52
|
+
header_links: header_links_data_hash(current_user, current_ability, configs_cache_key),
|
53
|
+
homepage_layout: homepage_layout_data_hash(configs_cache_key),
|
54
|
+
databases: database_names,
|
55
|
+
queries: queries_data_hash(build_cache_key(cache_keys, :queries, current_user, current_ability),
|
56
|
+
current_ability),
|
57
|
+
dashboards: dashboards_data_hash(build_cache_key(cache_keys, :dashboards, current_user, current_ability),
|
58
|
+
current_ability),
|
59
|
+
alerts: alerts_data_hash(build_cache_key(cache_keys, :alerts, current_user, current_ability),
|
60
|
+
current_ability),
|
61
|
+
forms: forms_data_hash(build_cache_key(cache_keys, :forms, current_user, current_ability), current_ability) }
|
62
|
+
end
|
63
|
+
# rubocop:enable Metrics/AbcSize
|
64
|
+
# rubocop:enable Metrics/MethodLength
|
65
|
+
|
66
|
+
def i18n_data
|
67
|
+
I18n.t('motor', default: I18n.t('motor', locale: :en))
|
68
|
+
end
|
69
|
+
|
70
|
+
def serialize_current_user(user)
|
71
|
+
return unless user
|
72
|
+
|
73
|
+
attrs = user.as_json(only: %i[id email first_name last_name])
|
74
|
+
|
75
|
+
attrs['role'] = user.role if user.respond_to?(:role)
|
76
|
+
attrs['role_names'] = user.role_names if user.respond_to?(:role_names)
|
77
|
+
|
78
|
+
attrs
|
79
|
+
end
|
80
|
+
|
81
|
+
# @return [String]
|
82
|
+
def build_cache_key(cache_keys, key, current_user, current_ability)
|
83
|
+
"#{cache_keys[key].hash}#{current_user&.id}#{current_ability&.rules_hash}"
|
84
|
+
end
|
85
|
+
|
86
|
+
def header_links_data_hash(current_user, current_ability, cache_key = nil)
|
87
|
+
configs = Motor::Configs::LoadFromCache.load_configs(cache_key: cache_key)
|
88
|
+
|
89
|
+
links = configs.find { |c| c.key == 'header.links' }&.value || []
|
90
|
+
links = add_default_links(links)
|
91
|
+
|
92
|
+
return links unless current_user
|
93
|
+
return links if current_ability.can?(:manage, :all)
|
94
|
+
|
95
|
+
filter_links_for_user(current_user, links)
|
96
|
+
end
|
97
|
+
|
98
|
+
def add_default_links(links)
|
99
|
+
new_links = links.clone
|
100
|
+
|
101
|
+
unless links.find { |l| l['link_type'] == 'forms' }
|
102
|
+
new_links.unshift({ 'name' => I18n.t('motor.forms'), 'link_type' => 'forms' })
|
103
|
+
end
|
104
|
+
|
105
|
+
unless links.find { |l| l['link_type'] == 'reports' }
|
106
|
+
new_links.unshift({ 'name' => I18n.t('motor.reports'), 'link_type' => 'reports' })
|
107
|
+
end
|
108
|
+
|
109
|
+
new_links
|
110
|
+
end
|
111
|
+
|
112
|
+
def filter_links_for_user(current_user, links)
|
113
|
+
links.select do |link|
|
114
|
+
conditions = link['conditions']
|
115
|
+
|
116
|
+
next true if conditions.blank?
|
117
|
+
|
118
|
+
conditions.all? do |cond|
|
119
|
+
field_name =
|
120
|
+
if cond['field'] == 'role' && !current_user.respond_to?(:role)
|
121
|
+
:role_names
|
122
|
+
else
|
123
|
+
cond['field'].to_sym
|
124
|
+
end
|
125
|
+
|
126
|
+
next false unless field_name.in?(%i[email role role_names])
|
127
|
+
next false unless current_user.respond_to?(field_name)
|
128
|
+
|
129
|
+
Array.wrap(current_user.public_send(field_name)).intersection(Array.wrap(cond['value'])).present?
|
130
|
+
end
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
def homepage_layout_data_hash(cache_key = nil)
|
135
|
+
configs = Motor::Configs::LoadFromCache.load_configs(cache_key: cache_key)
|
136
|
+
|
137
|
+
configs.find { |c| c.key == 'homepage.layout' }&.value || []
|
138
|
+
end
|
139
|
+
|
140
|
+
def database_names
|
141
|
+
if defined?(Motor::EncryptedConfig)
|
142
|
+
Motor::DatabaseClasses.constants.map { |e| e.to_s.titleize }
|
143
|
+
elsif ActiveRecord::Base.configurations.try(:configurations)
|
144
|
+
ActiveRecord::Base.configurations.configurations
|
145
|
+
.select { |c| c.env_name == Rails.env }
|
146
|
+
.map { |c| c.try(:name) || c.try(:spec_name) }.compact
|
147
|
+
else
|
148
|
+
['primary']
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
152
|
+
def queries_data_hash(cache_key = nil, current_ability = nil)
|
153
|
+
Motor::Configs::LoadFromCache.load_queries(cache_key: cache_key, current_ability: current_ability)
|
154
|
+
.as_json(only: %i[id name updated_at],
|
155
|
+
include: { tags: { only: %i[id name] } })
|
156
|
+
end
|
157
|
+
|
158
|
+
def dashboards_data_hash(cache_key = nil, current_ability = nil)
|
159
|
+
Motor::Configs::LoadFromCache.load_dashboards(cache_key: cache_key, current_ability: current_ability)
|
160
|
+
.as_json(only: %i[id title updated_at],
|
161
|
+
include: { tags: { only: %i[id name] } })
|
162
|
+
end
|
163
|
+
|
164
|
+
def alerts_data_hash(cache_key = nil, current_ability = nil)
|
165
|
+
Motor::Configs::LoadFromCache.load_alerts(cache_key: cache_key, current_ability: current_ability)
|
166
|
+
.as_json(only: %i[id name is_enabled updated_at],
|
167
|
+
include: { tags: { only: %i[id name] } })
|
168
|
+
end
|
169
|
+
|
170
|
+
def forms_data_hash(cache_key = nil, current_ability = nil)
|
171
|
+
Motor::Configs::LoadFromCache.load_forms(cache_key: cache_key, current_ability: current_ability)
|
172
|
+
.as_json(only: %i[id name updated_at],
|
173
|
+
include: { tags: { only: %i[id name] } })
|
174
|
+
end
|
175
|
+
end
|
176
|
+
end
|
177
|
+
end
|
@@ -0,0 +1,110 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Motor
|
4
|
+
module Configs
|
5
|
+
module LoadFromCache
|
6
|
+
CACHE_HASH = ActiveSupport::HashWithIndifferentAccess.new
|
7
|
+
|
8
|
+
module_function
|
9
|
+
|
10
|
+
def call
|
11
|
+
cache_keys = load_cache_keys
|
12
|
+
|
13
|
+
{
|
14
|
+
configs: load_configs(cache_key: cache_keys[:configs]),
|
15
|
+
resources: load_resources(cache_key: cache_keys[:resources]),
|
16
|
+
queries: load_queries(cache_key: cache_keys[:queries]),
|
17
|
+
dashboards: load_dashboards(cache_key: cache_keys[:dashboards]),
|
18
|
+
alerts: load_alerts(cache_key: cache_keys[:alerts]),
|
19
|
+
forms: load_forms(cache_key: cache_keys[:forms])
|
20
|
+
}
|
21
|
+
end
|
22
|
+
|
23
|
+
def load_configs(cache_key: nil)
|
24
|
+
maybe_fetch_from_cache('configs', cache_key) do
|
25
|
+
Motor::Config.all.load
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def load_resources(cache_key: nil)
|
30
|
+
maybe_fetch_from_cache('resources', cache_key) do
|
31
|
+
Motor::Resource.all.load
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def load_queries(cache_key: nil, current_ability: nil)
|
36
|
+
maybe_fetch_from_cache('queries', cache_key) do
|
37
|
+
rel = Motor::Query.all.active.preload(:tags)
|
38
|
+
rel = rel.accessible_by(current_ability) if current_ability
|
39
|
+
|
40
|
+
rel.load
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def load_dashboards(cache_key: nil, current_ability: nil)
|
45
|
+
maybe_fetch_from_cache('dashboards', cache_key) do
|
46
|
+
rel = Motor::Dashboard.all.active.preload(:tags)
|
47
|
+
rel = rel.accessible_by(current_ability) if current_ability
|
48
|
+
|
49
|
+
rel.load
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def load_alerts(cache_key: nil, current_ability: nil)
|
54
|
+
maybe_fetch_from_cache('alerts', cache_key) do
|
55
|
+
rel = Motor::Alert.all.active.preload(:tags)
|
56
|
+
rel = rel.accessible_by(current_ability) if current_ability
|
57
|
+
|
58
|
+
rel.load
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
def load_forms(cache_key: nil, current_ability: nil)
|
63
|
+
maybe_fetch_from_cache('forms', cache_key) do
|
64
|
+
rel = Motor::Form.all.active.preload(:tags)
|
65
|
+
rel = rel.accessible_by(current_ability) if current_ability
|
66
|
+
|
67
|
+
rel.load
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
def load_api_configs(cache_key: nil)
|
72
|
+
maybe_fetch_from_cache('forms', cache_key) do
|
73
|
+
Motor::ApiConfig.all.active.load
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
def maybe_fetch_from_cache(type, cache_key)
|
78
|
+
return yield unless cache_key
|
79
|
+
|
80
|
+
if CACHE_HASH[type] && CACHE_HASH[type][:key] == cache_key
|
81
|
+
CACHE_HASH[type][:value]
|
82
|
+
else
|
83
|
+
result = yield
|
84
|
+
|
85
|
+
CACHE_HASH[type] = { key: cache_key, value: result }
|
86
|
+
|
87
|
+
result
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
def load_cache_keys
|
92
|
+
result = ActiveRecord::Base.connection.exec_query(cache_keys_sql).rows
|
93
|
+
|
94
|
+
result.to_h.with_indifferent_access
|
95
|
+
end
|
96
|
+
|
97
|
+
def cache_keys_sql
|
98
|
+
[
|
99
|
+
Motor::Config.select("'configs', MAX(updated_at)").to_sql,
|
100
|
+
Motor::Resource.select("'resources', MAX(updated_at)").to_sql,
|
101
|
+
Motor::Dashboard.select("'dashboards', MAX(updated_at)").to_sql,
|
102
|
+
Motor::Alert.select("'alerts', MAX(updated_at)").to_sql,
|
103
|
+
Motor::Query.select("'queries', MAX(updated_at)").to_sql,
|
104
|
+
Motor::Form.select("'forms', MAX(updated_at)").to_sql,
|
105
|
+
Motor::ApiConfig.select("'api_configs', MAX(updated_at)").to_sql
|
106
|
+
].join(' UNION ')
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Motor
|
4
|
+
module Configs
|
5
|
+
module SyncFromFile
|
6
|
+
MUTEXT = Mutex.new
|
7
|
+
FILE_TIMESTAMPS_STORE = ActiveSupport::Cache::MemoryStore.new(size: 1.megabyte)
|
8
|
+
|
9
|
+
module_function
|
10
|
+
|
11
|
+
def call(with_exception: false)
|
12
|
+
MUTEXT.synchronize do
|
13
|
+
file = Pathname.new(Motor::Configs.file_path)
|
14
|
+
|
15
|
+
file_timestamp =
|
16
|
+
begin
|
17
|
+
file.ctime
|
18
|
+
rescue Errno::ENOENT
|
19
|
+
raise if with_exception
|
20
|
+
|
21
|
+
nil
|
22
|
+
end
|
23
|
+
|
24
|
+
next unless file_timestamp
|
25
|
+
|
26
|
+
FILE_TIMESTAMPS_STORE.fetch(file_timestamp.to_s) do
|
27
|
+
Motor::Configs::SyncFromHash.call(
|
28
|
+
YAML.safe_load(file.read, permitted_classes: [Time, Date])
|
29
|
+
)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,159 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Motor
|
4
|
+
module Configs
|
5
|
+
module SyncFromHash
|
6
|
+
module_function
|
7
|
+
|
8
|
+
def call(configs_hash)
|
9
|
+
return if configs_hash.blank?
|
10
|
+
|
11
|
+
configs_hash = configs_hash.with_indifferent_access
|
12
|
+
|
13
|
+
Motor::ApplicationRecord.transaction do
|
14
|
+
sync_queries(configs_hash)
|
15
|
+
sync_alerts(configs_hash)
|
16
|
+
sync_dashboards(configs_hash)
|
17
|
+
sync_forms(configs_hash)
|
18
|
+
sync_configs(configs_hash)
|
19
|
+
sync_resources(configs_hash)
|
20
|
+
sync_api_configs(configs_hash)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def sync_queries(configs_hash)
|
25
|
+
sync_taggable(
|
26
|
+
Motor::Configs::LoadFromCache.load_queries,
|
27
|
+
configs_hash[:queries],
|
28
|
+
configs_hash[:file_version],
|
29
|
+
Motor::Queries::Persistance.method(:update_from_params!)
|
30
|
+
)
|
31
|
+
end
|
32
|
+
|
33
|
+
def sync_alerts(configs_hash)
|
34
|
+
sync_taggable(
|
35
|
+
Motor::Configs::LoadFromCache.load_alerts,
|
36
|
+
configs_hash[:alerts],
|
37
|
+
configs_hash[:file_version],
|
38
|
+
Motor::Alerts::Persistance.method(:update_from_params!)
|
39
|
+
)
|
40
|
+
end
|
41
|
+
|
42
|
+
def sync_forms(configs_hash)
|
43
|
+
sync_taggable(
|
44
|
+
Motor::Configs::LoadFromCache.load_forms,
|
45
|
+
configs_hash[:forms],
|
46
|
+
configs_hash[:file_version],
|
47
|
+
Motor::Forms::Persistance.method(:update_from_params!)
|
48
|
+
)
|
49
|
+
end
|
50
|
+
|
51
|
+
def sync_dashboards(configs_hash)
|
52
|
+
sync_taggable(
|
53
|
+
Motor::Configs::LoadFromCache.load_dashboards,
|
54
|
+
configs_hash[:dashboards],
|
55
|
+
configs_hash[:file_version],
|
56
|
+
Motor::Dashboards::Persistance.method(:update_from_params!)
|
57
|
+
)
|
58
|
+
end
|
59
|
+
|
60
|
+
def sync_configs(configs_hash)
|
61
|
+
configs_index = Motor::Configs::LoadFromCache.load_configs.index_by(&:key)
|
62
|
+
|
63
|
+
configs_hash[:configs].each do |attrs|
|
64
|
+
record = configs_index[attrs[:key]] || Motor::Config.new
|
65
|
+
|
66
|
+
next if record.updated_at && attrs[:updated_at] <= record.updated_at
|
67
|
+
|
68
|
+
record.update!(attrs)
|
69
|
+
end
|
70
|
+
|
71
|
+
ActiveRecordUtils.reset_id_sequence!(Motor::Config)
|
72
|
+
end
|
73
|
+
|
74
|
+
def sync_api_configs(configs_hash)
|
75
|
+
return if configs_hash[:api_configs].blank?
|
76
|
+
|
77
|
+
configs_index = Motor::Configs::LoadFromCache.load_api_configs.index_by(&:name)
|
78
|
+
|
79
|
+
configs_hash[:api_configs].each do |attrs|
|
80
|
+
record = configs_index[attrs[:name]] || Motor::ApiConfig.new
|
81
|
+
|
82
|
+
next if record.updated_at && attrs[:updated_at] <= record.updated_at
|
83
|
+
|
84
|
+
record.update!(attrs.merge(deleted_at: nil))
|
85
|
+
end
|
86
|
+
|
87
|
+
archive_api_configs(configs_index, configs_hash[:api_configs])
|
88
|
+
|
89
|
+
ActiveRecordUtils.reset_id_sequence!(Motor::ApiConfig)
|
90
|
+
end
|
91
|
+
|
92
|
+
def archive_api_configs(configs_index, api_configs)
|
93
|
+
configs_index.except(*api_configs.pluck('name')).each_value do |config|
|
94
|
+
config.update!(deleted_at: Time.current) if config.deleted_at.blank?
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
def sync_resources(configs_hash)
|
99
|
+
resources_index = Motor::Configs::LoadFromCache.load_resources.index_by(&:name)
|
100
|
+
|
101
|
+
configs_hash[:resources].each do |attrs|
|
102
|
+
record = resources_index.fetch(attrs[:name], Motor::Resource.new)
|
103
|
+
|
104
|
+
next if record.updated_at && attrs[:updated_at] < record.updated_at
|
105
|
+
next if record.updated_at &&
|
106
|
+
attrs[:updated_at] == record.updated_at &&
|
107
|
+
attrs[:preferences] == record.preferences
|
108
|
+
|
109
|
+
record.updated_at_will_change!
|
110
|
+
record.update!(attrs)
|
111
|
+
end
|
112
|
+
|
113
|
+
ActiveRecordUtils.reset_id_sequence!(Motor::Resource)
|
114
|
+
end
|
115
|
+
|
116
|
+
def sync_taggable(records, config_items, configs_timestamp, update_proc)
|
117
|
+
processed_records, create_items = update_taggable_items(records, config_items, update_proc)
|
118
|
+
|
119
|
+
create_taggable_items(create_items, records.klass, update_proc)
|
120
|
+
|
121
|
+
archive_taggable_items(records - processed_records, configs_timestamp)
|
122
|
+
|
123
|
+
ActiveRecordUtils.reset_id_sequence!(records.klass)
|
124
|
+
end
|
125
|
+
|
126
|
+
def update_taggable_items(records, config_items, update_proc)
|
127
|
+
record_ids_hash = records.index_by(&:id)
|
128
|
+
|
129
|
+
config_items.each_with_object([[], []]) do |attrs, (processed_acc, create_acc)|
|
130
|
+
record = record_ids_hash[attrs[:id]]
|
131
|
+
|
132
|
+
next create_acc << attrs unless record
|
133
|
+
|
134
|
+
processed_acc << record if record
|
135
|
+
|
136
|
+
next if record.updated_at >= attrs[:updated_at]
|
137
|
+
|
138
|
+
update_proc.call(record, attrs, force_replace: true)
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
142
|
+
def create_taggable_items(create_items, records_class, update_proc)
|
143
|
+
create_items.each do |attrs|
|
144
|
+
record = records_class.find_or_initialize_by(id: attrs[:id]).tap { |e| e.deleted_at = nil }
|
145
|
+
|
146
|
+
update_proc.call(record, attrs, force_replace: true)
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
150
|
+
def archive_taggable_items(records_to_remove, configs_timestamp)
|
151
|
+
records_to_remove.each do |record|
|
152
|
+
next if record.updated_at > configs_timestamp
|
153
|
+
|
154
|
+
record.update!(deleted_at: Time.current) if record.deleted_at.blank?
|
155
|
+
end
|
156
|
+
end
|
157
|
+
end
|
158
|
+
end
|
159
|
+
end
|
@@ -0,0 +1,72 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Motor
|
4
|
+
module Configs
|
5
|
+
class SyncMiddleware
|
6
|
+
KeyNotSpecified = Class.new(StandardError)
|
7
|
+
NotAuthenticated = Class.new(StandardError)
|
8
|
+
|
9
|
+
def initialize(app)
|
10
|
+
@app = app
|
11
|
+
end
|
12
|
+
|
13
|
+
def call(env)
|
14
|
+
if env['PATH_INFO'] == Motor::Configs::SYNC_API_PATH
|
15
|
+
authenticate!(env['HTTP_X_AUTHORIZATION'])
|
16
|
+
|
17
|
+
case env['REQUEST_METHOD']
|
18
|
+
when 'GET'
|
19
|
+
respond_with_configs
|
20
|
+
when 'POST'
|
21
|
+
input = env['rack.input']
|
22
|
+
input.rewind
|
23
|
+
sync_configs(input.read)
|
24
|
+
else
|
25
|
+
@app.call(env)
|
26
|
+
end
|
27
|
+
else
|
28
|
+
@app.call(env)
|
29
|
+
end
|
30
|
+
rescue NotAuthenticated
|
31
|
+
[403, {}, ['Invalid synchronization API key']]
|
32
|
+
rescue KeyNotSpecified
|
33
|
+
[404, {}, ['Set `MOTOR_SYNC_API_KEY` environment variable in order to sync configs']]
|
34
|
+
end
|
35
|
+
|
36
|
+
private
|
37
|
+
|
38
|
+
def authenticate!(token)
|
39
|
+
raise KeyNotSpecified if Motor::Configs::SYNC_ACCESS_KEY.blank?
|
40
|
+
raise NotAuthenticated if token.blank?
|
41
|
+
|
42
|
+
is_token_valid =
|
43
|
+
ActiveSupport::SecurityUtils.secure_compare(
|
44
|
+
Digest::SHA256.hexdigest(token),
|
45
|
+
Digest::SHA256.hexdigest(Motor::Configs::SYNC_ACCESS_KEY)
|
46
|
+
)
|
47
|
+
|
48
|
+
raise NotAuthenticated unless is_token_valid
|
49
|
+
end
|
50
|
+
|
51
|
+
def respond_with_configs
|
52
|
+
[
|
53
|
+
200,
|
54
|
+
{ 'Content-Type' => 'application/json' },
|
55
|
+
[Motor::Configs::BuildConfigsHash.call.to_json]
|
56
|
+
]
|
57
|
+
rescue StandardError => e
|
58
|
+
[500, {}, [e.message]]
|
59
|
+
end
|
60
|
+
|
61
|
+
def sync_configs(body)
|
62
|
+
configs_hash = JSON.parse(body)
|
63
|
+
|
64
|
+
Motor::Configs::SyncFromHash.call(configs_hash)
|
65
|
+
|
66
|
+
[200, {}, []]
|
67
|
+
rescue StandardError => e
|
68
|
+
[500, {}, [e.message]]
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Motor
|
4
|
+
module Configs
|
5
|
+
module SyncWithRemote
|
6
|
+
UnableToSync = Class.new(StandardError)
|
7
|
+
ApiNotFound = Class.new(StandardError)
|
8
|
+
|
9
|
+
module_function
|
10
|
+
|
11
|
+
def call(remote_url, api_key)
|
12
|
+
url = remote_url.delete_suffix('/') + Motor::Configs::SYNC_API_PATH
|
13
|
+
|
14
|
+
sync_from_remote!(url, api_key)
|
15
|
+
sync_to_remote!(url, api_key)
|
16
|
+
end
|
17
|
+
|
18
|
+
def sync_from_remote!(remote_url, api_key)
|
19
|
+
response = Motor::NetHttpUtils.get(remote_url, {}, { 'X-Authorization' => api_key })
|
20
|
+
|
21
|
+
raise ApiNotFound if response.is_a?(Net::HTTPNotFound)
|
22
|
+
raise UnableToSync, [response.message, response.body].join(': ') unless response.is_a?(Net::HTTPSuccess)
|
23
|
+
|
24
|
+
configs_hash = JSON.parse(response.body)
|
25
|
+
|
26
|
+
Motor::Configs::SyncFromHash.call(configs_hash)
|
27
|
+
end
|
28
|
+
|
29
|
+
def sync_to_remote!(remote_url, api_key)
|
30
|
+
configs_hash = Motor::Configs::BuildConfigsHash.call
|
31
|
+
|
32
|
+
response = Motor::NetHttpUtils.post(
|
33
|
+
remote_url,
|
34
|
+
{},
|
35
|
+
{
|
36
|
+
'X-Authorization' => api_key,
|
37
|
+
'Content-Type' => 'application/json'
|
38
|
+
},
|
39
|
+
configs_hash.to_json
|
40
|
+
)
|
41
|
+
|
42
|
+
raise ApiNotFound if response.is_a?(Net::HTTPNotFound)
|
43
|
+
raise UnableToSync, [response.message, response.body].join(': ') unless response.is_a?(Net::HTTPSuccess)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Motor
|
4
|
+
module Configs
|
5
|
+
module WriteToFile
|
6
|
+
THREAD_POOL = Concurrent::FixedThreadPool.new(1)
|
7
|
+
|
8
|
+
module_function
|
9
|
+
|
10
|
+
def call
|
11
|
+
return if Rails.env.test?
|
12
|
+
return if THREAD_POOL.queue_length.positive?
|
13
|
+
|
14
|
+
THREAD_POOL.post do
|
15
|
+
ActiveRecord::Base.logger.silence do
|
16
|
+
write_with_lock
|
17
|
+
end
|
18
|
+
rescue StandardError => e
|
19
|
+
Rails.logger.error(e)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def write_with_lock
|
24
|
+
File.open(Motor::Configs.file_path, 'w') do |file|
|
25
|
+
file.flock(File::LOCK_EX)
|
26
|
+
|
27
|
+
YAML.dump(Motor::Configs::BuildConfigsHash.call, file)
|
28
|
+
|
29
|
+
file.flock(File::LOCK_UN)
|
30
|
+
|
31
|
+
file
|
32
|
+
end.close
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Motor
|
4
|
+
module Configs
|
5
|
+
FILE_PATH = 'config/motor.yml'
|
6
|
+
SYNC_API_PATH = '/motor_configs_sync'
|
7
|
+
SYNC_ACCESS_KEY = ENV.fetch('MOTOR_SYNC_API_KEY', '')
|
8
|
+
WORKDIR_FILE_NAME = 'motor-admin.yml'
|
9
|
+
|
10
|
+
module_function
|
11
|
+
|
12
|
+
def clear
|
13
|
+
Motor::Resource.destroy_all
|
14
|
+
Motor::Alert.destroy_all
|
15
|
+
Motor::Query.destroy_all
|
16
|
+
Motor::Dashboard.destroy_all
|
17
|
+
Motor::Form.destroy_all
|
18
|
+
Motor::ApiConfig.destroy_all
|
19
|
+
Motor::Config.destroy_all
|
20
|
+
end
|
21
|
+
|
22
|
+
# @return [String]
|
23
|
+
def file_path
|
24
|
+
if defined?(MotorAdmin::Application)
|
25
|
+
[ENV['WORKDIR'], WORKDIR_FILE_NAME].compact.join('/')
|
26
|
+
else
|
27
|
+
Rails.root.join(FILE_PATH).to_s
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
require_relative './configs/load_from_cache'
|
34
|
+
require_relative './configs/build_ui_app_tag'
|
35
|
+
require_relative './configs/build_configs_hash'
|
36
|
+
require_relative './configs/write_to_file'
|
37
|
+
require_relative './configs/sync_from_hash'
|
38
|
+
require_relative './configs/sync_from_file'
|
39
|
+
require_relative './configs/sync_with_remote'
|