├── .devcontainer ├── internal │ ├── devcontainer.json │ └── docker-compose.yml └── public │ ├── devcontainer.json │ └── docker-compose.yml ├── .dockerignore ├── .editorconfig ├── .env-example ├── .eslintignore ├── .eslintrc.js ├── .gitattributes ├── .github ├── ISSUE_TEMPLATE │ ├── bug_report.yml │ └── config.yml └── workflows │ ├── deploy-branch.yml │ ├── deploy-release.yml │ └── deploy-stage.yml ├── .gitignore ├── .husky ├── pre-commit └── pre-push ├── .nvmrc ├── .prettierrc ├── .vscode ├── keybindings.json ├── launch.json ├── mantine-migration.md ├── rules │ ├── global.md │ ├── mantine-migration.md │ ├── migrate-createStyles.md │ └── nextjs.md ├── settings.json └── snippets.code-snippets ├── Dockerfile ├── LICENSE ├── Makefile ├── README.md ├── containers ├── clickhouse │ ├── Dockerfile │ └── docker-init │ │ └── init.sh ├── db │ ├── Dockerfile │ └── docker-init │ │ ├── 00_init_db.sql │ │ ├── 01_pg_analyze.sql │ │ └── 02_all_dll.sql ├── image-stub │ ├── Dockerfile │ ├── images │ │ ├── 1.jpg │ │ └── 2.jpg │ ├── index.mjs │ ├── package-lock.json │ └── package.json ├── ngrok │ └── docker-init │ │ └── config.yaml └── notification-db │ ├── Dockerfile │ └── docker-init │ └── 01_all_ddl.sql ├── docker-compose.base.yml ├── docker-compose.yml ├── media └── logo.png ├── next-boost.js ├── next-env.d.ts ├── next-sitemap.config.js ├── next.config.mjs ├── package-lock.json ├── package.json ├── playwright.config.ts ├── postcss.config.js ├── prisma ├── migrations │ ├── 20221011220133_init │ │ └── migration.sql │ ├── 20221013171533_add_nsfw │ │ └── migration.sql │ ├── 20221013194408_int_keys │ │ └── migration.sql │ ├── 20221013203441_cascades │ │ └── migration.sql │ ├── 20221013221254_no_optional_user_id │ │ └── migration.sql │ ├── 20221013224243_numeric_image_dimensions │ │ └── migration.sql │ ├── 20221014182803_metrics_and_saves │ │ └── migration.sql │ ├── 20221014212220_add_image_index │ │ └── migration.sql │ ├── 20221018202627_add_kv_store │ │ └── migration.sql │ ├── 20221018213100_split_model_metrics │ │ └── migration.sql │ ├── 20221018215322_optional_model_desc │ │ └── migration.sql │ ├── 20221019000757_model_ranks │ │ └── migration.sql │ ├── 20221019192339_remove_images_from_model │ │ └── migration.sql │ ├── 20221020230242_rating_to_float │ │ └── migration.sql │ ├── 20221025225635_user_account_props │ │ └── migration.sql │ ├── 20221027230516_username_unique_case_insensitive │ │ └── migration.sql │ ├── 20221031222816_image_cascade_on_delete │ │ └── migration.sql │ ├── 20221101202142_anonymous_user_activities │ │ └── migration.sql │ ├── 20221101230538_add_training_data_download_tracking │ │ └── migration.sql │ ├── 20221103193819_add_tos_violation │ │ └── migration.sql │ ├── 20221103200953_model_review_reporting │ │ └── migration.sql │ ├── 20221103205440_add_moderator │ │ └── migration.sql │ ├── 20221103221020_user_tos │ │ └── migration.sql │ ├── 20221108145701_cascade_delete_version_metrics_reviews │ │ └── migration.sql │ ├── 20221108160217_update_sizekb_tyoe_int_to_float │ │ └── migration.sql │ ├── 20221108215007_rank_fix │ │ └── migration.sql │ ├── 20221109183328_rank_fix_2 │ │ └── migration.sql │ ├── 20221109192749_rank_fix_3 │ │ └── migration.sql │ ├── 20221110180604_trained_words_on_version │ │ └── migration.sql │ ├── 20221110222142_temp_verified_model │ │ └── migration.sql │ ├── 20221111185845_model_files │ │ └── migration.sql │ ├── 20221112015716_scan_request_time │ │ └── migration.sql │ ├── 20221112190714_handle_bad_uploads │ │ └── migration.sql │ ├── 20221114043025_add_importing │ │ └── migration.sql │ ├── 20221114213528_image_meta │ │ └── migration.sql │ ├── 20221115210524_add_uniqueness_to_reactions │ │ └── migration.sql │ ├── 20221116143356_import_children │ │ └── migration.sql │ ├── 20221118203334_add_apikey_table │ │ └── migration.sql │ ├── 20221128223635_add_favorite_model_table │ │ └── migration.sql │ ├── 20221129184259_favorite_model_metric │ │ └── migration.sql │ ├── 20221129201529_update_rank_for_favorites │ │ └── migration.sql │ ├── 20221202170057_model_file_format │ │ └── migration.sql │ ├── 20221202191101_model_version_index │ │ └── migration.sql │ ├── 20221202204857_add_comment_tables │ │ └── migration.sql │ ├── 20221202220635_user_link │ │ └── migration.sql │ ├── 20221202230223_user_link_index │ │ └── migration.sql │ ├── 20221202230448_user_rank │ │ └── migration.sql │ ├── 20221203005905_remove_user_link_index │ │ └── migration.sql │ ├── 20221205213338_comment_table_update │ │ └── migration.sql │ ├── 20221205232721_user_created_date │ │ └── migration.sql │ ├── 20221207040459_add_logging │ │ └── migration.sql │ ├── 20221207202442_support_inaccurate_report │ │ └── migration.sql │ ├── 20221207235134_add_notification_table │ │ └── migration.sql │ ├── 20221208022641_run_v1 │ │ └── migration.sql │ ├── 20221208032821_comment_metrics │ │ └── migration.sql │ ├── 20221209162539_add_person_of_interest_toggle │ │ └── migration.sql │ ├── 20221209174938_add_unique_constraint_user_notifications │ │ └── migration.sql │ ├── 20221209190209_partner_tokens │ │ └── migration.sql │ ├── 20221209210146_update_model_file_type │ │ └── migration.sql │ ├── 20221212033336_add_model_hash │ │ └── migration.sql │ ├── 20221212045320_model_hash_report_support │ │ └── migration.sql │ ├── 20221213232706_add_lora │ │ └── migration.sql │ ├── 20221214181035_add_modelfile_id │ │ └── migration.sql │ ├── 20221214181207_add_model_file_unique │ │ └── migration.sql │ ├── 20221215050908_add_webhooks │ │ └── migration.sql │ ├── 20221215052358_published_at │ │ └── migration.sql │ ├── 20221216163900_last_version_at │ │ └── migration.sql │ ├── 20221216173428_report │ │ └── migration.sql │ ├── 20221216191451_additional_report_reasons │ │ └── migration.sql │ ├── 20221216195329_add_user_engagement │ │ └── migration.sql │ ├── 20221216211622_model_report_count │ │ └── migration.sql │ ├── 20221219234321_report_manys │ │ └── migration.sql │ ├── 20221220044202_add_trending │ │ └── migration.sql │ ├── 20221220204300_ranks_as_materialized_views │ │ └── migration.sql │ ├── 20221220211549_current_mviews │ │ └── migration.sql │ ├── 20221221002209_add_base_model │ │ └── migration.sql │ ├── 20221222223841_file_types_as_string │ │ └── migration.sql │ ├── 20221223175226_model_type_default │ │ └── migration.sql │ ├── 20221223180254_add_tag_target │ │ └── migration.sql │ ├── 20221223182642_tag_unique_with_target │ │ └── migration.sql │ ├── 20221226174634_question_answers │ │ └── migration.sql │ ├── 20221226195245_optional_answer_vote_vote │ │ └── migration.sql │ ├── 20221226201249_add_download_history │ │ └── migration.sql │ ├── 20221228193154_report_cascading │ │ └── migration.sql │ ├── 20221230223422_hash_on_files │ │ └── migration.sql │ ├── 20221230234742_review_exclusion │ │ └── migration.sql │ ├── 20221231002954_prep_on_demand_partners │ │ └── migration.sql │ ├── 20221231224306_break_out_user_rank │ │ └── migration.sql │ ├── 20230103185824_display_name │ │ └── migration.sql │ ├── 20230105043946_run_strategy_cascades │ │ └── migration.sql │ ├── 20230105174251_add_user_preferred_download │ │ └── migration.sql │ ├── 20230105180003_revise_rating_rank │ │ └── migration.sql │ ├── 20230105194139_remove_model_file_primary_field │ │ └── migration.sql │ ├── 20230106181738_defined_commercial_uses │ │ └── migration.sql │ ├── 20230106210644_mark_images_nsfw │ │ └── migration.sql │ ├── 20230106223259_leaderboard_rank │ │ └── migration.sql │ ├── 20230110213544_add_tag_engagment │ │ └── migration.sql │ ├── 20230110235012_image_analysis │ │ └── migration.sql │ ├── 20230111032437_model_licenses │ │ └── migration.sql │ ├── 20230111224629_cascade_model_hash │ │ └── migration.sql │ ├── 20230112001351_unique_image_constraint │ │ └── migration.sql │ ├── 20230112193222_tag_metrics │ │ └── migration.sql │ ├── 20230112234519_unlistable_tags │ │ └── migration.sql │ ├── 20230113232730_user_answer_stats │ │ └── migration.sql │ ├── 20230117162526_model_engagement │ │ └── migration.sql │ ├── 20230117190149_fix_user_cascades │ │ └── migration.sql │ ├── 20230118020152_remove_favorites │ │ └── migration.sql │ ├── 20230118154709_add_model_early_access_timeframe │ │ └── migration.sql │ ├── 20230118195800_add_model_version_early_access_timeframe │ │ └── migration.sql │ ├── 20230119185541_add_model_version_engagement │ │ └── migration.sql │ ├── 20230120050134_adjust_scanning_enums │ │ └── migration.sql │ ├── 20230124192503_soft_delete_model │ │ └── migration.sql │ ├── 20230124204854_add_deleted_model_status │ │ └── migration.sql │ ├── 20230125214723_model_checkpoint_type │ │ └── migration.sql │ ├── 20230125230024_session_invalidation │ │ └── migration.sql │ ├── 20230126222352_image_first_class │ │ └── migration.sql │ ├── 20230127004457_image_metrics │ │ └── migration.sql │ ├── 20230127171929_image_comment_metrics │ │ └── migration.sql │ ├── 20230127232300_metric_update_queue │ │ └── migration.sql │ ├── 20230130192853_on_demand_types │ │ └── migration.sql │ ├── 20230130211031_announcements │ │ └── migration.sql │ ├── 20230130224954_comment_lock │ │ └── migration.sql │ ├── 20230130231226_adjust_review_cascades │ │ └── migration.sql │ ├── 20230131150221_review_lock │ │ └── migration.sql │ ├── 20230201143158_mute_users │ │ └── migration.sql │ ├── 20230201205224_ban_user │ │ └── migration.sql │ ├── 20230202153952_user_cosmetics │ │ └── migration.sql │ ├── 20230203224140_stripe │ │ └── migration.sql │ ├── 20230207225516_cosmetic_delivery │ │ └── migration.sql │ ├── 20230207230114_cosmetic_default_id_fix │ │ └── migration.sql │ ├── 20230208211232_report_internal_message │ │ └── migration.sql │ ├── 20230209171946_add_model_locked │ │ └── migration.sql │ ├── 20230209203015_report_limiting │ │ └── migration.sql │ ├── 20230209225221_rename_inaction_unaction │ │ └── migration.sql │ ├── 20230210200501_add_iscategory_tag │ │ └── migration.sql │ ├── 20230210222835_model_hash_view │ │ └── migration.sql │ ├── 20230211012925_subscription_update_date │ │ └── migration.sql │ ├── 20230212204953_api_key_tweaks │ │ └── migration.sql │ ├── 20230213223732_update_model_new_rank │ │ └── migration.sql │ ├── 20230214004943_comment_threads │ │ └── migration.sql │ ├── 20230214144643_multiple_tag_target │ │ └── migration.sql │ ├── 20230216003413_image_gen_process │ │ └── migration.sql │ ├── 20230216033353_image_feature_at │ │ └── migration.sql │ ├── 20230217033101_unfeatured_categories │ │ └── migration.sql │ ├── 20230217213122_image_needs_review │ │ └── migration.sql │ ├── 20230217220241_tag_unique_name │ │ └── migration.sql │ ├── 20230220220914_user_activity_index │ │ └── migration.sql │ ├── 20230221151809_view_pef_tweaks │ │ └── migration.sql │ ├── 20230221230819_user_setting_autoplay_gifs │ │ └── migration.sql │ ├── 20230223225028_add_new_types │ │ └── migration.sql │ ├── 20230227220233_prep_for_mod_tags │ │ └── migration.sql │ ├── 20230303201656_leaderboard_exclude_deleted │ │ └── migration.sql │ ├── 20230305040226_account_metadata │ │ └── migration.sql │ ├── 20230306181918_model_delete_tracking │ │ └── migration.sql │ ├── 20230306211459_model_hash_file_type │ │ └── migration.sql │ ├── 20230308010444_posts │ │ └── migration.sql │ ├── 20230308161211_post_helper │ │ └── migration.sql │ ├── 20230309201953_enhanced_moderation │ │ └── migration.sql │ ├── 20230309235349_model_files_preferences │ │ └── migration.sql │ ├── 20230310005918_image_size │ │ └── migration.sql │ ├── 20230311174603_locon │ │ └── migration.sql │ ├── 20230312182841_wildcards │ │ └── migration.sql │ ├── 20230313221818_commentv2_reporting │ │ └── migration.sql │ ├── 20230315025401_other_type │ │ └── migration.sql │ ├── 20230315182114_posts_continued │ │ └── migration.sql │ ├── 20230316201031_resource_helpers │ │ └── migration.sql │ ├── 20230317181458_user_tagging │ │ └── migration.sql │ ├── 20230321212209_optimizations │ │ └── migration.sql │ ├── 20230321232309_post_tags │ │ └── migration.sql │ ├── 20230322230044_discussion_items │ │ └── migration.sql │ ├── 20230323084001_tags_on_tags │ │ └── migration.sql │ ├── 20230330165149_top_level_comment_thread │ │ └── migration.sql │ ├── 20230405222519_model_status_unpublished_violation │ │ └── migration.sql │ ├── 20230407001434_model_version_published_at │ │ └── migration.sql │ ├── 20230410221344_resource_review_reports │ │ └── migration.sql │ ├── 20230411234137_model_early_access_deadline │ │ └── migration.sql │ ├── 20230414200229_model_modifier │ │ └── migration.sql │ ├── 20230418020950_model_metrics_daily │ │ └── migration.sql │ ├── 20230425180849_nsfw_levels │ │ └── migration.sql │ ├── 20230425215834_tag_nsfw_level │ │ └── migration.sql │ ├── 20230428002410_mat_views_to_tables │ │ └── migration.sql │ ├── 20230511223534_articles │ │ └── migration.sql │ ├── 20230511230904_associated_resources │ │ └── migration.sql │ ├── 20230515231112_admin_tags │ │ └── migration.sql │ ├── 20230517192001_article_attachments │ │ └── migration.sql │ ├── 20230517201204_article_engagement │ │ └── migration.sql │ ├── 20230517204144_article_metrics │ │ └── migration.sql │ ├── 20230518224652_leaderboard_v2 │ │ └── migration.sql │ ├── 20230522192516_model_type_vae_upscaler │ │ └── migration.sql │ ├── 20230522223742_mod_activity │ │ └── migration.sql │ ├── 20230605211505_post_report │ │ └── migration.sql │ ├── 20230607213943_model_version_exploration │ │ └── migration.sql │ ├── 20230608213212_report_user │ │ └── migration.sql │ ├── 20230609155557_user_leaderboard_showcase │ │ └── migration.sql │ ├── 20230613205927_model_article_association │ │ └── migration.sql │ ├── 20230616212538_model_association_nullable │ │ └── migration.sql │ ├── 20230619185959_cascade_delete_associations │ │ └── migration.sql │ ├── 20230619222230_scheduled_publish │ │ └── migration.sql │ ├── 20230620163537_hidden_comments │ │ └── migration.sql │ ├── 20230620203240_image_ingestion_status │ │ └── migration.sql │ ├── 20230622200840_image_moderation_level │ │ └── migration.sql │ ├── 20230622213253_image_engagement │ │ └── migration.sql │ ├── 20230623160539_generation_coverage_1 │ │ └── migration.sql │ ├── 20230626231430_not_null_base_model │ │ └── migration.sql │ ├── 20230630171915_model_version_clip_skip │ │ └── migration.sql │ ├── 20230704185357_create_search_index_update_queue_table │ │ └── migration.sql │ ├── 20230706162241_add_search_index_update_queue_action │ │ └── migration.sql │ ├── 20230706163005_add_search_index_update_queue_action_enum │ │ └── migration.sql │ ├── 20230712182936_create_collection_related_models │ │ └── migration.sql │ ├── 20230712191329_fix_ids_on_collection_tables │ │ └── migration.sql │ ├── 20230712203205_add_home_block_type │ │ └── migration.sql │ ├── 20230712204937_unlisted_read_config │ │ └── migration.sql │ ├── 20230714202551_recommended_vae │ │ └── migration.sql │ ├── 20230717203328_add_metadata_to_announcements │ │ └── migration.sql │ ├── 20230718193348_add_collection_type │ │ └── migration.sql │ ├── 20230719152210_setup_for_collection_review_items │ │ └── migration.sql │ ├── 20230719182634_add_collection_write_configuration_review │ │ └── migration.sql │ ├── 20230721184738_post_collection_relation │ │ └── migration.sql │ ├── 20230726205546_drop_reviews │ │ └── migration.sql │ ├── 20230727150451_add_source_to_home_blocks │ │ └── migration.sql │ ├── 20230727165302_collection_image │ │ └── migration.sql │ ├── 20230728063536_collection_model_metrics │ │ └── migration.sql │ ├── 20230728170432_image_type │ │ └── migration.sql │ ├── 20230809032747_model_purpose │ │ └── migration.sql │ ├── 20230809234333_generation_coverage │ │ └── migration.sql │ ├── 20230811054020_nsfw_level_blocked │ │ └── migration.sql │ ├── 20230811173920_download_history │ │ └── migration.sql │ ├── 20230813154457_adding_training_data │ │ └── migration.sql │ ├── 20230818173920_add_workflows │ │ └── migration.sql │ ├── 20230824160203_collection_metrics │ │ └── migration.sql │ ├── 20230828183133_image_post_collected_count_metrics │ │ └── migration.sql │ ├── 20230829142201_add_model_version_monetization_table │ │ └── migration.sql │ ├── 20230901221543_rent_civit │ │ └── migration.sql │ ├── 20230902054355_paid_generation_option │ │ └── migration.sql │ ├── 20230904155529_add_bounty_schema │ │ └── migration.sql │ ├── 20230904212207_update_generation_coverage_view │ │ └── migration.sql │ ├── 20230904215223_generation_covergae_view_rentcivit │ │ └── migration.sql │ ├── 20230906215932_tag_source │ │ └── migration.sql │ ├── 20230908201330_computed_tag_source │ │ └── migration.sql │ ├── 20230912004157_motion_module │ │ └── migration.sql │ ├── 20230912153043_add_bounty_complete │ │ └── migration.sql │ ├── 20230912205241_add_bounty_metrics │ │ └── migration.sql │ ├── 20230912220022_add_bounty_rank_views │ │ └── migration.sql │ ├── 20230913054542_social_homeblock │ │ └── migration.sql │ ├── 20230913162225_add_bounty_metric_comment_count │ │ └── migration.sql │ ├── 20230914165121_bounty_report │ │ └── migration.sql │ ├── 20230914200233_bounty_poi │ │ └── migration.sql │ ├── 20230918202805_add_user_referrals │ │ └── migration.sql │ ├── 20230918222033_make_user_referral_code_unqye │ │ └── migration.sql │ ├── 20230920153125_crate_buzz_tip_table │ │ └── migration.sql │ ├── 20230920200843_update_bounty_indexes │ │ └── migration.sql │ ├── 20230920211650_add_deleted_at_user_referral_code │ │ └── migration.sql │ ├── 20230921142409_add_user_id_index_user_referrals │ │ └── migration.sql │ ├── 20230921160043_add_created_updated_at_buzz_tip │ │ └── migration.sql │ ├── 20230921161619_add_tipped_amount_on_articles │ │ └── migration.sql │ ├── 20230921204323_bounty_entry_description │ │ └── migration.sql │ ├── 20230925155218_add_buzz_tip_on_bounty_entry │ │ └── migration.sql │ ├── 20230927151024_collection_mode_support │ │ └── migration.sql │ ├── 20230928151649_collection_item_random_id │ │ └── migration.sql │ ├── 20230928163847_add_datapurged_to_modelfile │ │ └── migration.sql │ ├── 20230929145153_collection_item_collection_id_index │ │ └── migration.sql │ ├── 20231005123051_bounty_expires_at_starts_at_date_only │ │ └── migration.sql │ ├── 20231006205635_comment_v2_hidden │ │ └── migration.sql │ ├── 20231013203903_user_onboarding_step │ │ └── migration.sql │ ├── 20231019210147_model_version_monetization_buzz_currency │ │ └── migration.sql │ ├── 20231024143326_user_referral_code_crated_at │ │ └── migration.sql │ ├── 20231025204142_image_scan_job │ │ └── migration.sql │ ├── 20231026192053_add_user_profile_schema │ │ └── migration.sql │ ├── 20231027024129_require_auth_option │ │ └── migration.sql │ ├── 20231027035952_run_partner_base_model │ │ └── migration.sql │ ├── 20231027221218_image_view_count │ │ └── migration.sql │ ├── 20231031195932_update_user_profile_schema │ │ └── migration.sql │ ├── 20231103152012_recommended_resources │ │ └── migration.sql │ ├── 20231109061817_model_file_header_data │ │ └── migration.sql │ ├── 20231110192419_add_landing_page_to_user_referral │ │ └── migration.sql │ ├── 20231110203035_add_login_redirect_reason_to_user_referral │ │ └── migration.sql │ ├── 20231110210854_claimable_cosmetics │ │ └── migration.sql │ ├── 20231115072331_press_mention │ │ └── migration.sql │ ├── 20231118201935_collection_item_reviewed_by │ │ └── migration.sql │ ├── 20231121050854_holiday_cosmetics │ │ └── migration.sql │ ├── 20231122151806_add_club_related_tables │ │ └── migration.sql │ ├── 20231123201130_update_club_entity_table │ │ └── migration.sql │ ├── 20231127231440_remove_club_entity_improve_entity_access │ │ └── migration.sql │ ├── 20231128212202_add_club_post_cover_image │ │ └── migration.sql │ ├── 20231130141155_add_club_membershi_id │ │ └── migration.sql │ ├── 20231130143354_remove_buzz_account_id │ │ └── migration.sql │ ├── 20231201094437_event_homeblock_type │ │ └── migration.sql │ ├── 20231203043804_generation_metrics │ │ └── migration.sql │ ├── 20231207201510_add_club_post_thread │ │ └── migration.sql │ ├── 20231207204618_user_profile_picture │ │ └── migration.sql │ ├── 20231213152614_model_gallery_settings │ │ └── migration.sql │ ├── 20231213153118_add_club_admin_support │ │ └── migration.sql │ ├── 20231213153829_add_club_tier_member_limit │ │ └── migration.sql │ ├── 20231213182603_csam_report │ │ └── migration.sql │ ├── 20231218152300_add_unlisted_availability_to_post_entity_id_club_post │ │ └── migration.sql │ ├── 20231222015820_notification_split │ │ └── migration.sql │ ├── 20231222180336_optional_club_post_title_description │ │ └── migration.sql │ ├── 20231223004700_report_type_csam │ │ └── migration.sql │ ├── 20240102150617_add_club_post_reactions │ │ └── migration.sql │ ├── 20240102154255_add_club_post_metrics │ │ └── migration.sql │ ├── 20240102183528_add_club_metrics │ │ └── migration.sql │ ├── 20240102211435_add_club_ranks │ │ └── migration.sql │ ├── 20240105204334_add_one_time_fee_on_club_tier │ │ └── migration.sql │ ├── 20240110183909_add_dm_tables │ │ └── migration.sql │ ├── 20240110202344_dm_user_relationship │ │ └── migration.sql │ ├── 20240111143445_dm_chat_owner │ │ └── migration.sql │ ├── 20240111144730_dm_chat_edited_optional │ │ └── migration.sql │ ├── 20240112151626_user_settings │ │ └── migration.sql │ ├── 20240113023932_email_citext │ │ └── migration.sql │ ├── 20240114174922_add_parent_thread_id_root_thread_id_on_threads │ │ └── migration.sql │ ├── 20240117150305_add_ignored_to_chat_enum │ │ └── migration.sql │ ├── 20240118213143_tags_on_tags_type │ │ └── migration.sql │ ├── 20240118214315_muted_at │ │ └── migration.sql │ ├── 20240119175458_buzz_claim │ │ └── migration.sql │ ├── 20240119204734_muted_at_trigger │ │ └── migration.sql │ ├── 20240121232802_buzz_claim_details │ │ └── migration.sql │ ├── 20240123173456_article_cover_id │ │ └── migration.sql │ ├── 20240125153716_add_user_stripe_connect_status │ │ └── migration.sql │ ├── 20240125182002_add_unique_on_conected_account_id │ │ └── migration.sql │ ├── 20240126153602_add_chat_report │ │ └── migration.sql │ ├── 20240129152539_add_buzz_withdrawal_requeests_tables │ │ └── migration.sql │ ├── 20240129203835_add_model_availability │ │ └── migration.sql │ ├── 20240206222015_nsfw_level_2 │ │ └── migration.sql │ ├── 20240207190207_notification_category │ │ └── migration.sql │ ├── 20240207200350_tags_on_image_vote_applied │ │ └── migration.sql │ ├── 20240208212306_user_updates │ │ └── migration.sql │ ├── 20240209213025_build_guide │ │ └── migration.sql │ ├── 20240212151513_add_buzz_withdrawal_status_externally_resolved │ │ └── migration.sql │ ├── 20240213195536_additional_notification_categories │ │ └── migration.sql │ ├── 20240213205914_nsfw_levels │ │ └── migration.sql │ ├── 20240217005100_partner_tier │ │ └── migration.sql │ ├── 20240219150315_collection_data_structure_improvements │ │ └── migration.sql │ ├── 20240220184546_partner_logo │ │ └── migration.sql │ ├── 20240220204643_resource_review_recommended_system │ │ └── migration.sql │ ├── 20240221203954_model_commercial_user_array │ │ └── migration.sql │ ├── 20240221204751_add_purchasable_rewards_schema │ │ └── migration.sql │ ├── 20240227203510_add_vault_schema │ │ └── migration.sql │ ├── 20240229155733_vault_item_update_field │ │ └── migration.sql │ ├── 20240305191909_vault_item_improvement_schema_changes │ │ └── migration.sql │ ├── 20240307231126_nsfw_level_update_queue │ │ └── migration.sql │ ├── 20240308194924_vault_item_meta_field │ │ └── migration.sql │ ├── 20240312143533_vault_item_files_as_json │ │ └── migration.sql │ ├── 20240312210710_vault_item_indexes │ │ └── migration.sql │ ├── 20240313071941_metric_updated_at │ │ └── migration.sql │ ├── 20240321152907_image_resource_strength │ │ └── migration.sql │ ├── 20240325234311_image_rating_request │ │ └── migration.sql │ ├── 20240326201017_cosmetic_shop_tables │ │ └── migration.sql │ ├── 20240327194537_redeemable_code │ │ └── migration.sql │ ├── 20240329072855_add_dora │ │ └── migration.sql │ ├── 20240403142806_add_cosmetic_type_profile_decoration │ │ └── migration.sql │ ├── 20240405133543_dms_add_more_content_type │ │ └── migration.sql │ ├── 20240409152606_add_cosmetic_reference_to_item │ │ └── migration.sql │ ├── 20240409202625_add_shop_item_unit_amount │ │ └── migration.sql │ ├── 20240411155123_make_image_optional │ │ └── migration.sql │ ├── 20240411185822_add_cosmetic_type_profile_background │ │ └── migration.sql │ ├── 20240418202619_add_for_id_user_cosmetic │ │ └── migration.sql │ ├── 20240419174913_image_tools │ │ └── migration.sql │ ├── 20240423150723_add_user_public_settings │ │ └── migration.sql │ ├── 20240430033247_user_metric_reactions │ │ └── migration.sql │ ├── 20240504220623_file_override_name │ │ └── migration.sql │ ├── 20240508215105_image_techniques │ │ └── migration.sql │ ├── 20240509145855_add_domain_to_tool │ │ └── migration.sql │ ├── 20240516171837_add_editor_to_tooltype │ │ └── migration.sql │ ├── 20240520214941_early_access_v2 │ │ └── migration.sql │ ├── 20240524211244_add_training_statuses │ │ └── migration.sql │ ├── 20240528185514_early_access_v2_nits │ │ └── migration.sql │ ├── 20240528212836_muted_confirmed │ │ └── migration.sql │ ├── 20240528220022_exclude_from_leaderboards │ │ └── migration.sql │ ├── 20240603200922_tool_priority │ │ └── migration.sql │ ├── 20240604172025_api_key_type │ │ └── migration.sql │ ├── 20240606185927_tool_description │ │ └── migration.sql │ ├── 20240610185726_add_minor_field │ │ └── migration.sql │ ├── 20240613183520_csam_report_type │ │ └── migration.sql │ ├── 20240613215736_collection_item_tag_id │ │ └── migration.sql │ ├── 20240617215459_entity_collaborator │ │ └── migration.sql │ ├── 20240619092115_reward_eligibility │ │ └── migration.sql │ ├── 20240619152041_entity_collaborator_last_message_sent_at │ │ └── migration.sql │ ├── 20240619181506_add_video_url │ │ └── migration.sql │ ├── 20240619185235_add_video_url_to_cosmetic_shop_item │ │ └── migration.sql │ ├── 20240620155119_user_engagement_type_block │ │ └── migration.sql │ ├── 20240620165739_rollback_add_video_url_cosmetic_shop_item │ │ └── migration.sql │ ├── 20240624134110_tool_metadata │ │ └── migration.sql │ ├── 20240719172747_add_published_to_image_and_trigger │ │ └── migration.sql │ ├── 20240724182718_add_entity_metrics │ │ └── migration.sql │ ├── 20240725040405_simplify_run_strat │ │ └── migration.sql │ ├── 20240729233040_image_block │ │ └── migration.sql │ ├── 20240808220734_ad_token_table │ │ └── migration.sql │ ├── 20240809155038_add_paddle_customer_id │ │ └── migration.sql │ ├── 20240809230424_tag_source_image_hash │ │ └── migration.sql │ ├── 20240812183927_hamming_distance_function │ │ └── migration.sql │ ├── 20240815210353_add_payment_providers │ │ └── migration.sql │ ├── 20240830173458_add_upload_type_to_mv │ │ └── migration.sql │ ├── 20240911095200_query_improvements │ │ └── migration.sql │ ├── 20240915215614_image_flag │ │ └── migration.sql │ ├── 20240926213438_model_scanned_at_column │ │ └── migration.sql │ ├── 20240930191432_add_cosmetic_shop_home_block_type │ │ └── migration.sql │ ├── 20240930192521_model_flag_details_column │ │ └── migration.sql │ ├── 20241002204701_add_user_payment_configuration │ │ └── migration.sql │ ├── 20241002210652_update_buzz_withdrawal_request │ │ └── migration.sql │ ├── 20241002212355_resupport_stripe_connect_on_payment_configuration │ │ └── migration.sql │ ├── 20241003192438_model_flag_poi_name_column │ │ └── migration.sql │ ├── 20241012021355_add_buzz_claim_account_type │ │ └── migration.sql │ ├── 20241012023023_add_buzz_use_multiplier │ │ └── migration.sql │ ├── 20241014234054_image_rating_request_cascade_on_delete │ │ └── migration.sql │ ├── 20241015005553_image_rating_request_weight │ │ └── migration.sql │ ├── 20241016175736_announncement_enabled │ │ └── migration.sql │ ├── 20241016185054_announcement_disabled │ │ └── migration.sql │ ├── 20241018200359_blocklist │ │ └── migration.sql │ ├── 20241024204631_article_status_column │ │ └── migration.sql │ ├── 20241106162157_tool_supported_column │ │ └── migration.sql │ ├── 20241115184321_collection_item_score │ │ └── migration.sql │ ├── 20241119204932_add_pending_manual_ingestion_enum_value │ │ └── migration.sql │ ├── 20241119210536_tool_company_column │ │ └── migration.sql │ ├── 20241126224738_add_filterable_only_to_collection_tags │ │ └── migration.sql │ ├── 20241204163054_appeal_model │ │ └── migration.sql │ ├── 20241204170604_disable_partners │ │ └── migration.sql │ ├── 20241206101500_update_image_resource_helper │ │ └── migration.sql │ ├── 20241206194713_tool_unlisted_column │ │ └── migration.sql │ ├── 20241210165550_add_tag_source │ │ └── migration.sql │ ├── 20241211191542_image_minor_field │ │ └── migration.sql │ ├── 20241220035102_buzz_claim_limit │ │ └── migration.sql │ ├── 20241220050455_minor_detection_tag_source │ │ └── migration.sql │ ├── 20250114185408_add_tool_type_llm │ │ └── migration.sql │ ├── 20250120222939_model_type_detection │ │ └── migration.sql │ ├── 20250122210402_model_usage_control │ │ └── migration.sql │ ├── 20250123000929_hive_demographics │ │ └── migration.sql │ ├── 20250124000257_tool_alias │ │ └── migration.sql │ ├── 20250131152943_many_to_many_table_relation │ │ └── migration.sql │ ├── 20250131232938_comment_v2_pinned_at │ │ └── migration.sql │ ├── 20250219162201_add_auction_tables │ │ └── migration.sql │ ├── 20250219183115_user_index_deleted_at │ │ └── migration.sql │ ├── 20250219193308_add_auction_tables_extra │ │ └── migration.sql │ ├── 20250219221820_add_auction_slug_active │ │ └── migration.sql │ ├── 20250219230130_post_metric_age_group │ │ └── migration.sql │ ├── 20250219230130_post_metric_index_age_group │ │ └── migration.sql │ ├── 20250221023627_creators_program_v2 │ │ └── migration.sql │ ├── 20250221044718_add_tipalti_withdrawal_method │ │ └── migration.sql │ ├── 20250225151414_add_transaction_to_bid │ │ └── migration.sql │ ├── 20250227184003_add_featured_mv │ │ └── migration.sql │ ├── 20250227204740_make_created_at_updated_at_nullable │ │ └── migration.sql │ ├── 20250228013729_normalize │ │ └── migration.sql │ ├── 20250228191502_generation_coverage_all │ │ └── migration.sql │ ├── 20250301002731_remove_image_metric_indexes │ │ └── migration.sql │ ├── 20250303170613_tags_on_image_new │ │ └── migration.sql │ ├── 20250310194038_moderation_rules │ │ └── migration.sql │ ├── 20250313162509_drop_log │ │ └── migration.sql │ ├── 20250314203912_drop_tags_on_image │ │ └── migration.sql │ ├── 20250318165942_moderation_rules_created_by │ │ └── migration.sql │ ├── 20250319124141_add_dates_to_auction_base │ │ └── migration.sql │ ├── 20250319210024_image_resource_new │ │ └── migration.sql │ ├── 20250320124141_remove_checkpoint_details │ │ └── migration.sql │ ├── 20250324192007_add_image_poi │ │ └── migration.sql │ ├── 20250326094141_covered_checkpoint │ │ └── migration.sql │ ├── 20250401212050_knights_new_order_tables │ │ └── migration.sql │ ├── 20250407094141_model_metrics_earned_amount │ │ └── migration.sql │ ├── 20250414192734_tag_type │ │ └── migration.sql │ ├── 20250415094141_add_misc_auction │ │ └── migration.sql │ ├── 20250416221729_shadow_tags_on_image │ │ └── migration.sql │ ├── 20250417190811_add_image_acceptable_minor │ │ └── migration.sql │ ├── 20250424220929_generation_base_model │ │ └── migration.sql │ ├── 20250425193919_add_model_sfw_only │ │ └── migration.sql │ ├── 20250425195241_image_needs_review_index │ │ └── migration.sql │ ├── 20250425225502_add_model_flag_sfw_only │ │ └── migration.sql │ ├── 20250508113400_add_changelog │ │ └── migration.sql │ ├── 20250508191050_new_order_rank_icon_column │ │ └── migration.sql │ ├── 20250513094141_add_sticky_to_changelog │ │ └── migration.sql │ ├── 20250513144141_add_incident_type │ │ └── migration.sql │ ├── 20250521094141_add_clavata_moderation │ │ └── migration.sql │ ├── 20250606180813_image_review │ │ └── migration.sql │ ├── 20250606212859_add_crypto_tables │ │ └── migration.sql │ ├── 20250614053144_remove_article_cover_id_fkey │ │ └── migration.sql │ ├── 20250702102300_basemodeltype_default │ │ └── migration.sql │ └── migration_lock.toml ├── programmability │ ├── IIF.sql │ ├── blocked_model_hashes_matview.sql │ ├── early_access_trigger.sql │ ├── get_image_resources.sql │ ├── image_delete_triggers.sql │ ├── image_post_triggers.sql │ ├── insert_image_resource.sql │ ├── is_new_user.sql │ ├── metrics_trigger.sql │ ├── model_availability_trigger.sql │ ├── model_triggers.sql │ ├── months_between.sql │ ├── muted_at_trigger.sql │ ├── nsfw_level_update_triggers.sql │ ├── publish_post_metrics_trigger.sql │ ├── update_image_poi_trigger.sql │ ├── update_model_rank.sql │ ├── update_nsfw_level.sql │ └── update_post_nsfw_level.sql ├── schema.prisma └── seed.ts ├── public ├── favicon-blue.ico ├── favicon-green.ico ├── favicon.ico ├── fonts │ ├── Montserrat-Bold.ttf │ └── Montserrat-Regular.ttf ├── images │ ├── android-chrome-192x192.png │ ├── android-chrome-512x512.png │ ├── apple-touch-icon.png │ ├── base-badge.png │ ├── become-a-member │ │ ├── 120x600.jpg │ │ ├── 300x100.jpg │ │ ├── 300x250.jpg │ │ ├── 300x600.jpg │ │ ├── 728x90.jpg │ │ ├── 970x250.jpg │ │ └── 970x90.jpg │ ├── civ-c.png │ ├── civbot-judge.png │ ├── civitai-default-account-bg.png │ ├── civitai_chopped_dark.png │ ├── daily-challenge-hero.png │ ├── event │ │ └── holiday2024 │ │ │ └── ahh_logo.png │ ├── favicon-16x16.png │ ├── favicon-32x32.png │ ├── favicon-green.png │ ├── games │ │ ├── new-order-animated-bg.webp │ │ └── new-order-title.png │ ├── holiday │ │ ├── deer-glow.png │ │ ├── deer-nose.png │ │ ├── deer.png │ │ ├── ghost.png │ │ ├── happy-holidays-robot.png │ │ ├── partners │ │ │ └── rundiffusion.png │ │ ├── santa-hat.png │ │ └── wreath.png │ ├── imrs.webp │ ├── link │ │ ├── activity.png │ │ ├── download.png │ │ ├── glance.png │ │ └── pair.png │ ├── logo_dark_mode.png │ ├── logo_light_mode.png │ ├── media │ │ ├── cover.png │ │ └── whoops.jpg │ ├── newsletter-banner.png │ ├── product │ │ └── vault │ │ │ └── lp-main.png │ ├── shop │ │ ├── civitai-air │ │ │ ├── anne-horel-banner.png │ │ │ ├── anne-horel-mobile.png │ │ │ ├── digital-feline-i-alt.png │ │ │ ├── digital-feline-i.png │ │ │ ├── digital-feline-ii-alt.png │ │ │ ├── digital-feline-ii.png │ │ │ ├── digital-feline-iii-alt.png │ │ │ ├── digital-feline-iii.png │ │ │ ├── digital-feline-iv-alt.png │ │ │ └── digital-feline-iv.png │ │ ├── civitai-merch │ │ │ ├── 1girl-bubble-free-stickers.webp │ │ │ ├── 1girl-clear-case-for-iphone.webp │ │ │ ├── 1girl-clear-case-for-samsung.webp │ │ │ ├── 1girl-holographic-stickers.webp │ │ │ ├── 1girl-sans-civitai-bubble-free-stickers.webp │ │ │ ├── 1girl-sans-civitai-holographic-stickers.webp │ │ │ ├── 1girl-unisex-hoodie.webp │ │ │ ├── all-the-stickers-sticker-sheet.webp │ │ │ ├── bubble-free-stickers-3.webp │ │ │ ├── catz-bubble-free-stickers.webp │ │ │ ├── catz-holographic-stickers.webp │ │ │ ├── civitai-merch-banner.png │ │ │ ├── clear-case-for-samsung.webp │ │ │ ├── disco-elips-ium-bubble-free-stickers.webp │ │ │ ├── disco-elips-ium-holographic-stickers.webp │ │ │ ├── edgy-civitai-bubble-free-stickers.webp │ │ │ ├── edgy-civitai-holographic-stickers.webp │ │ │ ├── edgy-white-glossy-mug.webp │ │ │ ├── mouse-pad.webp │ │ │ ├── robo-skull-holographic-stickers.webp │ │ │ ├── short-sleeve-unisex-t-shirt.webp │ │ │ ├── space-bunny-badge-bubble-free-stickers.webp │ │ │ └── space-bunny-badge-holographic-stickers.webp │ │ └── project-odyssey │ │ │ ├── adidas-fleece-hoodie-black-front.webp │ │ │ ├── adidas-fleece-hoodie-black-left.webp │ │ │ ├── all-over-print-tote-bag-black.jpg │ │ │ ├── classic-dad-hat-black-front.webp │ │ │ ├── classic-dad-hat-black-left-side.webp │ │ │ ├── kiss-cut-holographic-stickers.webp │ │ │ ├── project-odyssey-banner.png │ │ │ ├── tie-dye-hat-cotton-candy-front.webp │ │ │ └── tie-dye-hat-sky-left-front.webp │ ├── splash │ │ ├── apple-splash-1125-2436.jpg │ │ ├── apple-splash-1136-640.jpg │ │ ├── apple-splash-1170-2532.jpg │ │ ├── apple-splash-1179-2556.jpg │ │ ├── apple-splash-1242-2208.jpg │ │ ├── apple-splash-1242-2688.jpg │ │ ├── apple-splash-1284-2778.jpg │ │ ├── apple-splash-1290-2796.jpg │ │ ├── apple-splash-1334-750.jpg │ │ ├── apple-splash-1536-2048.jpg │ │ ├── apple-splash-1620-2160.jpg │ │ ├── apple-splash-1668-2224.jpg │ │ ├── apple-splash-1668-2388.jpg │ │ ├── apple-splash-1792-828.jpg │ │ ├── apple-splash-2048-1536.jpg │ │ ├── apple-splash-2048-2732.jpg │ │ ├── apple-splash-2160-1620.jpg │ │ ├── apple-splash-2208-1242.jpg │ │ ├── apple-splash-2224-1668.jpg │ │ ├── apple-splash-2388-1668.jpg │ │ ├── apple-splash-2436-1125.jpg │ │ ├── apple-splash-2532-1170.jpg │ │ ├── apple-splash-2556-1179.jpg │ │ ├── apple-splash-2688-1242.jpg │ │ ├── apple-splash-2732-2048.jpg │ │ ├── apple-splash-2778-1284.jpg │ │ ├── apple-splash-2796-1290.jpg │ │ ├── apple-splash-640-1136.jpg │ │ ├── apple-splash-750-1334.jpg │ │ ├── apple-splash-828-1792.jpg │ │ ├── apple-splash-dark-1125-2436.jpg │ │ ├── apple-splash-dark-1136-640.jpg │ │ ├── apple-splash-dark-1170-2532.jpg │ │ ├── apple-splash-dark-1179-2556.jpg │ │ ├── apple-splash-dark-1242-2208.jpg │ │ ├── apple-splash-dark-1242-2688.jpg │ │ ├── apple-splash-dark-1284-2778.jpg │ │ ├── apple-splash-dark-1290-2796.jpg │ │ ├── apple-splash-dark-1334-750.jpg │ │ ├── apple-splash-dark-1536-2048.jpg │ │ ├── apple-splash-dark-1620-2160.jpg │ │ ├── apple-splash-dark-1668-2224.jpg │ │ ├── apple-splash-dark-1668-2388.jpg │ │ ├── apple-splash-dark-1792-828.jpg │ │ ├── apple-splash-dark-2048-1536.jpg │ │ ├── apple-splash-dark-2048-2732.jpg │ │ ├── apple-splash-dark-2160-1620.jpg │ │ ├── apple-splash-dark-2208-1242.jpg │ │ ├── apple-splash-dark-2224-1668.jpg │ │ ├── apple-splash-dark-2388-1668.jpg │ │ ├── apple-splash-dark-2436-1125.jpg │ │ ├── apple-splash-dark-2532-1170.jpg │ │ ├── apple-splash-dark-2556-1179.jpg │ │ ├── apple-splash-dark-2688-1242.jpg │ │ ├── apple-splash-dark-2732-2048.jpg │ │ ├── apple-splash-dark-2778-1284.jpg │ │ ├── apple-splash-dark-2796-1290.jpg │ │ ├── apple-splash-dark-640-1136.jpg │ │ ├── apple-splash-dark-750-1334.jpg │ │ └── apple-splash-dark-828-1792.jpg │ └── support-us │ │ ├── 120x600.jpg │ │ ├── 300x100.jpg │ │ ├── 300x250.jpg │ │ ├── 300x600.jpg │ │ ├── 320x100.jpg │ │ ├── 320x50.jpg │ │ ├── 728x90.jpg │ │ ├── 970x250.jpg │ │ └── 970x90.jpg ├── reset.html ├── site.webmanifest └── sounds │ ├── game.mp3 │ ├── message.mp3 │ ├── message2.mp3 │ ├── messageu.mp3 │ └── point.mp3 ├── scripts ├── local-dev │ ├── bootstrap-metrics-search.ts │ ├── gen_seed.ts │ ├── run_migrations.ts │ └── utils.ts ├── oneoffs │ ├── meilisearch-migration.ts │ └── parse_header.ts ├── prisma-enum-generator.mjs ├── prisma-mark-migration-applied.mjs ├── prisma-migrate-with-views-workaround.mjs └── prisma-prepare-programmability.mjs ├── src ├── app │ └── layout.tsx ├── client-utils │ ├── cf-images-utils.ts │ └── file-hashing.ts ├── components │ ├── Access │ │ └── ResourceAccessWrap.tsx │ ├── Account │ │ ├── AccountsCard.tsx │ │ ├── AdContent.tsx │ │ ├── ApiKeyModal.tsx │ │ ├── ApiKeysCard.tsx │ │ ├── ContentControls.tsx │ │ ├── ContentControlsCard.tsx │ │ ├── CryptoTransactions.tsx │ │ ├── DeleteCard.tsx │ │ ├── GenerationSettingsCard.tsx │ │ ├── HiddenTagsSection.tsx │ │ ├── HiddenUsersSection.tsx │ │ ├── MatureContentSettings.tsx │ │ ├── ModerationCard.tsx │ │ ├── NewsletterToggle.tsx │ │ ├── NotificationsCard.tsx │ │ ├── PaymentMethodsCard.tsx │ │ ├── ProfileCard.tsx │ │ ├── RefreshSessionCard.tsx │ │ ├── RemoveAccountCard.tsx │ │ ├── SettingsCard.tsx │ │ ├── SocialLink.tsx │ │ ├── SocialLinkModal.tsx │ │ ├── SocialProfileCard.tsx │ │ ├── SubscriptionCard.tsx │ │ ├── UserPaymentConfigurationCard.tsx │ │ └── UserReferralCodesCard.tsx │ ├── ActionIconInput.tsx │ │ └── ActionIconInput.tsx │ ├── ActionIconSelect │ │ └── ActionIconSelect.tsx │ ├── Ads │ │ ├── AdUnit.tsx │ │ ├── AdUnitFactory.tsx │ │ ├── AdUnitOutstream.tsx │ │ ├── AdUnitRenderable.tsx │ │ ├── AdhesiveAd.tsx │ │ ├── AdsProvider.tsx │ │ ├── Kontext │ │ │ ├── KontextAd.tsx │ │ │ ├── KontextProvider.tsx │ │ │ ├── kontext-ads.d.ts │ │ │ └── kontext-ads.types.ts │ │ ├── Old │ │ │ ├── AdUnit.tsx │ │ │ ├── AdsProvider.tsx │ │ │ ├── ads.utils.ts │ │ │ └── types.ts │ │ ├── adUnit.store.ts │ │ ├── ads.module.scss │ │ ├── ads.module.scss.d.ts │ │ ├── ads.utils.ts │ │ └── useAdUnitImpressionTracked.ts │ ├── AlertWithIcon │ │ └── AlertWithIcon.tsx │ ├── AnchorNoTravel │ │ └── AnchorNoTravel.tsx │ ├── Animations │ │ ├── LevelAnimation.tsx │ │ ├── LinkAnimation.tsx │ │ └── SuccessAnimation.tsx │ ├── Announcements │ │ ├── Announcement.tsx │ │ ├── AnnouncementEditModal.tsx │ │ ├── Announcements.tsx │ │ ├── AnnouncementsList.tsx │ │ └── announcements.utils.ts │ ├── AppLayout │ │ ├── AppFooter.tsx │ │ ├── AppHeader │ │ │ ├── AppHeader.tsx │ │ │ ├── CreateMenu.tsx │ │ │ ├── UserMenu.tsx │ │ │ └── hooks.tsx │ │ ├── AppLayout.tsx │ │ ├── BaseLayout.tsx │ │ ├── FeatureLayout.tsx │ │ ├── FeedLayout.tsx │ │ ├── NotFound.module.scss │ │ ├── NotFound.module.scss.d.ts │ │ ├── NotFound.tsx │ │ ├── Page.tsx │ │ └── SubNav.tsx │ ├── Article │ │ ├── ArticleContextMenu.tsx │ │ ├── ArticleUpsertForm.tsx │ │ ├── Detail │ │ │ ├── ArticleDetailComments.tsx │ │ │ ├── AttachmentCard.tsx │ │ │ ├── Sidebar.tsx │ │ │ └── TableOfContent.tsx │ │ ├── Infinite │ │ │ ├── ArticleAltCard.module.scss │ │ │ ├── ArticleAltCard.module.scss.d.ts │ │ │ ├── ArticleAltCard.tsx │ │ │ ├── ArticleCategories.tsx │ │ │ ├── ArticleFiltersDropdown.tsx │ │ │ └── ArticlesInfinite.tsx │ │ ├── ToggleArticleEngagement.tsx │ │ ├── UserDraftArticles.module.scss │ │ ├── UserDraftArticles.module.scss.d.ts │ │ ├── UserDraftArticles.tsx │ │ └── article.utils.ts │ ├── Assistant │ │ ├── AssistantButton.tsx │ │ └── AssistantChat.tsx │ ├── AssociatedModels │ │ ├── AssociateModels.tsx │ │ ├── AssociatedModels.tsx │ │ └── recommender.utils.ts │ ├── Auction │ │ ├── AuctionFiltersDropdown.module.scss │ │ ├── AuctionFiltersDropdown.module.scss.d.ts │ │ ├── AuctionFiltersDropdown.tsx │ │ ├── AuctionInfo.tsx │ │ ├── AuctionMyBids.tsx │ │ ├── AuctionPlacementCard.tsx │ │ ├── AuctionProvider.tsx │ │ ├── AuctionUtils.tsx │ │ └── auction.utils.ts │ ├── AutocompleteSearch │ │ ├── AutocompleteSearch.module.scss │ │ ├── AutocompleteSearch.module.scss.d.ts │ │ ├── AutocompleteSearch.tsx │ │ └── renderItems │ │ │ ├── articles.tsx │ │ │ ├── bounties.tsx │ │ │ ├── collections.tsx │ │ │ ├── common.module.scss │ │ │ ├── common.module.scss.d.ts │ │ │ ├── common.tsx │ │ │ ├── images.tsx │ │ │ ├── models.tsx │ │ │ ├── tools.tsx │ │ │ └── users.tsx │ ├── BackButton │ │ └── BackButton.tsx │ ├── Bounty │ │ ├── AwardBountyAction.tsx │ │ ├── BountyContextMenu.tsx │ │ ├── BountyCreateForm.module.scss │ │ ├── BountyCreateForm.module.scss.d.ts │ │ ├── BountyCreateForm.tsx │ │ ├── BountyDiscussion.tsx │ │ ├── BountyEditForm.module.scss │ │ ├── BountyEditForm.module.scss.d.ts │ │ ├── BountyEditForm.tsx │ │ ├── BountyEntryDiscussion.tsx │ │ ├── BountyEntryFilesModal.tsx │ │ ├── BountyEntryUpsertForm.tsx │ │ ├── BountyUpsertForm.module.scss │ │ ├── BountyUpsertForm.module.scss.d.ts │ │ ├── BountyUpsertForm.tsx │ │ ├── ImageCarousel.tsx │ │ ├── Infinite │ │ │ ├── BountiesInfinite.tsx │ │ │ └── BountyFiltersDropdown.tsx │ │ └── bounty.utils.ts │ ├── BrowserRouter │ │ └── BrowserRouterProvider.tsx │ ├── BrowsingLevel │ │ ├── BrowsingLevelGuide.tsx │ │ ├── BrowsingLevelInput.module.scss │ │ ├── BrowsingLevelInput.module.scss.d.ts │ │ ├── BrowsingLevelInput.tsx │ │ ├── BrowsingLevelProvider.tsx │ │ ├── BrowsingLevelsGrouped.module.scss │ │ ├── BrowsingLevelsGrouped.module.scss.d.ts │ │ ├── BrowsingLevelsGrouped.tsx │ │ ├── BrowsingLevelsStacked.tsx │ │ ├── SetBrowsingLevelModal.module.scss │ │ ├── SetBrowsingLevelModal.module.scss.d.ts │ │ └── SetBrowsingLevelModal.tsx │ ├── BrowsingMode │ │ ├── BrowsingCategories.tsx │ │ └── BrowsingMode.tsx │ ├── Burger │ │ ├── Burger.module.scss │ │ ├── Burger.module.scss.d.ts │ │ └── Burger.tsx │ ├── Buttons │ │ └── FilterButton.tsx │ ├── Buzz │ │ ├── AvailableBuzzBadge.tsx │ │ ├── BuzzCoinbaseButton.tsx │ │ ├── BuzzCoinbaseOnrampButton.tsx │ │ ├── BuzzNowPaymentsButton.tsx │ │ ├── BuzzPaypalButton.tsx │ │ ├── BuzzPurchase.tsx │ │ ├── BuzzTransactionButton.tsx │ │ ├── CreatorProgramV2 │ │ │ ├── CreatorProgram.util.ts │ │ │ ├── CreatorProgramV2.modals.tsx │ │ │ └── CreatorProgramV2.tsx │ │ ├── Dashboard │ │ │ └── BuzzDashboardOverview.tsx │ │ ├── FeatureCards │ │ │ ├── FeatureCards.module.scss │ │ │ ├── FeatureCards.module.scss.d.ts │ │ │ └── FeatureCards.tsx │ │ ├── InteractiveTipBuzzButton.module.scss │ │ ├── InteractiveTipBuzzButton.module.scss.d.ts │ │ ├── InteractiveTipBuzzButton.tsx │ │ ├── Rewards │ │ │ ├── DailyBoostRewardClaim.tsx │ │ │ ├── DailyCreatorCompReward.tsx │ │ │ ├── EarlyAccessRewards.tsx │ │ │ └── GeneratedImagesRewards.tsx │ │ ├── TipBuzzButton.tsx │ │ ├── WithdrawalRequest │ │ │ ├── BuzzWithdrawalRequestFiltersDropdown.module.scss │ │ │ ├── BuzzWithdrawalRequestFiltersDropdown.module.scss.d.ts │ │ │ ├── BuzzWithdrawalRequestFiltersDropdown.tsx │ │ │ ├── BuzzWithdrawalRequestHistory.tsx │ │ │ ├── CreateWithdrawalRequest.tsx │ │ │ ├── OwnedBuzzWithdrawalRequestsPaged.tsx │ │ │ └── buzzWithdrawalRequest.util.ts │ │ ├── buzz.module.scss │ │ ├── buzz.module.scss.d.ts │ │ ├── buzz.styles.tsx │ │ ├── buzz.utils.ts │ │ ├── useBuzz.ts │ │ ├── useStripePaymentMethodSetup.ts │ │ └── useStripeTransaction.ts │ ├── CardTemplates │ │ ├── AspectRatioImageCard.module.scss │ │ ├── AspectRatioImageCard.module.scss.d.ts │ │ ├── AspectRatioImageCard.tsx │ │ └── CosmeticCard.tsx │ ├── Cards │ │ ├── ArticleCard.tsx │ │ ├── BountyCard.tsx │ │ ├── BountyEntryCard.module.scss │ │ ├── BountyEntryCard.module.scss.d.ts │ │ ├── BountyEntryCard.tsx │ │ ├── Cards.module.css │ │ ├── CollectionCard.tsx │ │ ├── FeedCard.tsx │ │ ├── GenericImageCard.tsx │ │ ├── ImageCard.tsx │ │ ├── ModelCard.tsx │ │ ├── ModelCardContext.tsx │ │ ├── ModelCardContextMenu.tsx │ │ ├── PostCard.tsx │ │ ├── ToolCard.tsx │ │ └── components │ │ │ ├── ActionIconDotsVertical.tsx │ │ │ ├── CosmeticLights.module.scss │ │ │ ├── CosmeticLights.module.scss.d.ts │ │ │ ├── CosmeticLights.tsx │ │ │ ├── HoverActionButton.module.scss │ │ │ ├── HoverActionButton.module.scss.d.ts │ │ │ ├── HoverActionButton.tsx │ │ │ └── RemixButton.tsx │ ├── Carousel │ │ └── CarouselIndicators.tsx │ ├── CategoryTags │ │ └── CategoryTags.tsx │ ├── ChadGPT │ │ └── ChadGPT.tsx │ ├── Challenges │ │ ├── ChallengeHero.tsx │ │ ├── ChallengeIndicator.tsx │ │ ├── ChallengeInvitation.tsx │ │ └── challenge.utils.ts │ ├── Changelog │ │ ├── ChangelogFiltersDropdown.tsx │ │ └── Changelogs.tsx │ ├── Chat │ │ ├── ChatActions.tsx │ │ ├── ChatButton.tsx │ │ ├── ChatList.module.css │ │ ├── ChatList.tsx │ │ ├── ChatProvider.tsx │ │ ├── ChatShareModal.tsx │ │ ├── ChatSignals.ts │ │ ├── ChatUserButton.tsx │ │ ├── ChatWindow.tsx │ │ ├── ExistingChat.module.scss │ │ ├── ExistingChat.module.scss.d.ts │ │ ├── ExistingChat.tsx │ │ ├── NewChat.tsx │ │ └── util.tsx │ ├── Chopped │ │ ├── chopped.components.tsx │ │ ├── chopped.connection.ts │ │ ├── chopped.shared-types.ts │ │ ├── chopped.utils.ts │ │ └── states │ │ │ ├── complete.tsx │ │ │ ├── joining.tsx │ │ │ ├── landing.tsx │ │ │ ├── playing.tsx │ │ │ └── setup.tsx │ ├── CivitaiLink │ │ ├── CivitaiLinkDownloadButton.tsx │ │ ├── CivitaiLinkManageButton.tsx │ │ ├── CivitaiLinkPopover.module.scss │ │ ├── CivitaiLinkPopover.module.scss.d.ts │ │ ├── CivitaiLinkPopover.tsx │ │ ├── CivitaiLinkProvider.tsx │ │ ├── CivitaiLinkResourceManager.tsx │ │ ├── CivitaiLinkSuccessModal.tsx │ │ ├── CivitaiLinkSvg.tsx │ │ ├── CivitaiLinkWizard.tsx │ │ ├── civitai-link-api.ts │ │ └── shared-types.ts │ ├── CivitaiWrapped │ │ ├── AccountProvider.tsx │ │ ├── ButtonTooltip.tsx │ │ ├── CivitaiSessionProvider.tsx │ │ ├── CivitaiTabs.tsx │ │ └── CivitaiTooltip.tsx │ ├── ClearableAutoComplete │ │ └── ClearableAutoComplete.tsx │ ├── ClearableAutoCompleteV2 │ │ └── ClearableAutoCompleteV2.tsx │ ├── ClearableTextInput │ │ └── ClearableTextInput.tsx │ ├── Club │ │ ├── AddResourceToClubModal.tsx │ │ ├── AddToClubMenuItem.tsx │ │ ├── ClubAddContent.tsx │ │ ├── ClubAdminInviteUpsertForm.tsx │ │ ├── ClubAdminUpsertForm.tsx │ │ ├── ClubCard.tsx │ │ ├── ClubDepositFunds.tsx │ │ ├── ClubFeedNavigation.tsx │ │ ├── ClubManagementNavigation.tsx │ │ ├── ClubMemberships │ │ │ └── ManageClubMembershipModal.tsx │ │ ├── ClubPost │ │ │ ├── ClubFeed.module.scss │ │ │ ├── ClubFeed.module.scss.d.ts │ │ │ ├── ClubFeed.tsx │ │ │ ├── ClubPostDiscussion.tsx │ │ │ └── ClubPostUpsertForm.tsx │ │ ├── ClubPostFromResourceMenuItem.tsx │ │ ├── ClubRequirementNotice.tsx │ │ ├── ClubResourceManagementInput.tsx │ │ ├── ClubResourcePagedUpdateForm.tsx │ │ ├── ClubTierItem.tsx │ │ ├── ClubTierManageItem.tsx │ │ ├── ClubTierUpsertForm.tsx │ │ ├── ClubUpsertForm.tsx │ │ ├── ClubWithdrawFunds.tsx │ │ ├── Infinite │ │ │ ├── ClubAdminInvitesPaged.tsx │ │ │ ├── ClubAdminsPaged.tsx │ │ │ ├── ClubResourcesPaged.tsx │ │ │ ├── ClubsInfinite.tsx │ │ │ └── ClubsMembershipInfinite.tsx │ │ └── club.utils.ts │ ├── Coinbase │ │ └── util.ts │ ├── Collection │ │ └── Collection.tsx │ ├── CollectionSelectModal │ │ └── CollectionSelectModal.tsx │ ├── Collections │ │ ├── AddToCollectionModal.module.scss │ │ ├── AddToCollectionModal.module.scss.d.ts │ │ ├── AddToCollectionModal.tsx │ │ ├── AddUserContentModal.tsx │ │ ├── Collection.module.scss │ │ ├── Collection.tsx │ │ ├── CollectionEditModal.tsx │ │ ├── CollectionsLanding.tsx │ │ ├── CollectionsLayout.module.scss │ │ ├── CollectionsLayout.module.scss.d.ts │ │ ├── CollectionsLayout.tsx │ │ ├── Infinite │ │ │ └── CollectionsInfinite.tsx │ │ ├── MyCollections.tsx │ │ ├── collection.utils.ts │ │ └── components │ │ │ ├── CollectionCategorySelect.tsx │ │ │ ├── CollectionContextMenu.tsx │ │ │ ├── CollectionFollow.tsx │ │ │ ├── CollectionUploadSettingsWrapper.tsx │ │ │ └── ContestCollections │ │ │ ├── CollectionItemNSFWLevelSelector.tsx │ │ │ └── ContestCollectionItemScorer.tsx │ ├── ColorSchemeToggle │ │ └── ColorSchemeToggle.tsx │ ├── Combobox │ │ ├── AlwaysOpenComboBox.tsx │ │ ├── AlwaysOpenCombobox.module.scss │ │ └── combobox.types.ts │ ├── ComingSoon │ │ └── ComingSoon.tsx │ ├── CommentSection │ │ ├── CommentSection.module.css │ │ ├── CommentSection.tsx │ │ └── CommentSectionItem.tsx │ ├── CommentsV2 │ │ ├── Comment │ │ │ ├── Comment.module.css │ │ │ ├── Comment.tsx │ │ │ ├── CommentBadge.tsx │ │ │ ├── CommentForm.module.scss │ │ │ ├── CommentForm.module.scss.d.ts │ │ │ ├── CommentForm.tsx │ │ │ ├── CommentProvider.tsx │ │ │ ├── CommentReactions.tsx │ │ │ ├── CreateComment.tsx │ │ │ └── DeleteComment.tsx │ │ ├── CommentsProvider.tsx │ │ ├── HiddenCommentsModal.tsx │ │ ├── ReturnToRootThread.tsx │ │ ├── ToggleLockComments.tsx │ │ └── commentv2.utils.ts │ ├── ConfirmButton │ │ └── ConfirmButton.tsx │ ├── ContainerGrid │ │ ├── ContainerCol.module.scss │ │ ├── ContainerCol.module.scss.d.ts │ │ ├── ContainerCol.styles.ts │ │ ├── ContainerCol.tsx │ │ ├── ContainerGrid.context.ts │ │ ├── ContainerGrid.module.scss │ │ ├── ContainerGrid.module.scss.d.ts │ │ ├── ContainerGrid.styles.ts │ │ └── ContainerGrid.tsx │ ├── ContainerProvider │ │ ├── ContainerProvider.tsx │ │ ├── useContainerLargerThan.ts │ │ ├── useContainerQuery.ts │ │ └── useContainerSmallerThan.ts │ ├── ContentClamp │ │ └── ContentClamp.tsx │ ├── ContentPolicyLink │ │ └── ContentPolicyLink.tsx │ ├── CopyButton │ │ └── CopyButton.tsx │ ├── CosmeticShop │ │ ├── CosmeticShopItemPreviewModal.tsx │ │ ├── CosmeticShopItemUpsertForm.tsx │ │ ├── CosmeticShopSectionUpsertForm.tsx │ │ ├── CosmeticsFiltersDropdown.module.scss │ │ ├── CosmeticsFiltersDropdown.module.scss.d.ts │ │ ├── CosmeticsFiltersDropdown.tsx │ │ ├── SectionItemsInput.tsx │ │ ├── ShopFiltersDropdown.module.scss │ │ ├── ShopFiltersDropdown.module.scss.d.ts │ │ ├── ShopFiltersDropdown.tsx │ │ └── cosmetic-shop.util.ts │ ├── Cosmetics │ │ ├── CosmeticsFiltersDropdown.module.scss │ │ ├── CosmeticsFiltersDropdown.module.scss.d.ts │ │ ├── CosmeticsFiltersDropdown.tsx │ │ └── cosmetics.util.ts │ ├── Countdown │ │ └── Countdown.tsx │ ├── CreatorCard │ │ ├── CreatorCard.module.css │ │ └── CreatorCard.tsx │ ├── Csam │ │ ├── CsamDetailsForm.tsx │ │ ├── CsamImageSelection.tsx │ │ ├── CsamProvider.tsx │ │ └── useCsamImageSelect.store.ts │ ├── Currency │ │ ├── CurrencyBadge.module.scss │ │ ├── CurrencyBadge.module.scss.d.ts │ │ ├── CurrencyBadge.tsx │ │ └── CurrencyIcon.tsx │ ├── Dates │ │ └── DaysFromNow.tsx │ ├── Decorations │ │ ├── AddArtFrameMenuItem.tsx │ │ ├── HolidayFrame.module.scss │ │ ├── HolidayFrame.module.scss.d.ts │ │ ├── HolidayFrame.tsx │ │ └── Lightbulb.tsx │ ├── DescriptionTable │ │ └── DescriptionTable.tsx │ ├── Dialog │ │ ├── Common │ │ │ ├── AlertDialog.tsx │ │ │ ├── AppealDialog.tsx │ │ │ └── ConfirmDialog.tsx │ │ ├── DialogProvider.tsx │ │ ├── RoutedDialogProvider.tsx │ │ ├── Templates │ │ │ └── PageModal.tsx │ │ ├── dialog-registry.ts │ │ ├── dialog-registry2.ts │ │ ├── dialogStore.ts │ │ └── routed-dialog-registry.ts │ ├── DismissibleAlert │ │ └── DismissibleAlert.tsx │ ├── DomainIcon │ │ └── DomainIcon.tsx │ ├── DonationGoal │ │ └── donation-goal.util.ts │ ├── Downloads │ │ └── DownloadList.tsx │ ├── DurationBadge │ │ └── DurationBadge.tsx │ ├── EdgeMedia │ │ ├── EdgeImage.module.scss │ │ ├── EdgeImage.module.scss.d.ts │ │ ├── EdgeImage.tsx │ │ ├── EdgeMedia.module.scss │ │ ├── EdgeMedia.module.scss.d.ts │ │ ├── EdgeMedia.tsx │ │ ├── EdgeMedia.util.ts │ │ ├── EdgeMedia2.tsx │ │ ├── EdgeVideo.module.scss │ │ ├── EdgeVideo.module.scss.d.ts │ │ ├── EdgeVideo.tsx │ │ ├── EdgeVideoBase.tsx │ │ └── EdgeVideoWithControls.tsx │ ├── EmailLogin │ │ └── EmailLogin.tsx │ ├── EmblaCarousel │ │ ├── EmblaCarousel.tsx │ │ └── EmblaCarouselProvider.tsx │ ├── EndOfFeed │ │ └── EndOfFeed.tsx │ ├── EntityCollaborator │ │ ├── EntityCollaboratorList.tsx │ │ └── entityCollaborator.util.ts │ ├── ErrorBoundary │ │ ├── ContentErrorBoundary.tsx │ │ ├── ErrorBoundary.tsx │ │ └── UserErrorBoundary.tsx │ ├── EventButton │ │ ├── EventButton.module.scss │ │ ├── EventButton.module.scss.d.ts │ │ └── EventButton.tsx │ ├── Events │ │ ├── EventContributors.tsx │ │ ├── EventRewards.tsx │ │ ├── SectionCard.tsx │ │ ├── WelcomeCard.tsx │ │ └── events.utils.ts │ ├── FeatureIntroduction │ │ └── FeatureIntroduction.tsx │ ├── Featurebase │ │ └── FeaturebaseWidget.tsx │ ├── Feed │ │ └── FeedWrapper.tsx │ ├── FeedContentToggle │ │ ├── FeedContentToggle.module.scss │ │ ├── FeedContentToggle.module.scss.d.ts │ │ └── FeedContentToggle.tsx │ ├── FileInfo │ │ └── FileInfo.tsx │ ├── FileInputUpload │ │ ├── FileInputUpload.module.scss │ │ ├── FileInputUpload.module.scss.d.ts │ │ └── FileInputUpload.tsx │ ├── FileUpload │ │ └── FileUploadProvider.tsx │ ├── Filters │ │ ├── AdaptiveFiltersDropdown.module.scss │ │ ├── AdaptiveFiltersDropdown.module.scss.d.ts │ │ ├── AdaptiveFiltersDropdown.tsx │ │ ├── FeedFilters │ │ │ ├── ArticleFeedFilters.tsx │ │ │ ├── BountyFeedFilters.tsx │ │ │ ├── FeedFilters.module.scss │ │ │ ├── FeedFilters.module.scss.d.ts │ │ │ ├── ImageFeedFilters.tsx │ │ │ ├── ModelFeedFilters.tsx │ │ │ ├── PostFeedFilters.tsx │ │ │ ├── ToolFeedFilters.tsx │ │ │ ├── ToolImageFeedFilters.tsx │ │ │ └── VideoFeedFilters.tsx │ │ ├── FilterChip.module.scss │ │ ├── FilterChip.module.scss.d.ts │ │ ├── FilterChip.tsx │ │ ├── FiltersDropdown.tsx │ │ ├── FiltersDropdown2.tsx │ │ ├── FollowedFilter.tsx │ │ ├── PeriodFilter.tsx │ │ ├── PeriodModeToggle.tsx │ │ ├── SortFilter.tsx │ │ └── index.ts │ ├── FollowUserButton │ │ └── FollowUserButton.tsx │ ├── Freeze │ │ └── Freeze.tsx │ ├── Gallery │ │ └── ReportImageButton.tsx │ ├── Games │ │ ├── GameErrorBoundary.tsx │ │ ├── KnightsNewOrder.utils.ts │ │ ├── LevelProgress │ │ │ ├── LevelProgress.module.scss │ │ │ ├── LevelProgress.module.scss.d.ts │ │ │ ├── LevelProgress.tsx │ │ │ ├── LevelUp.tsx │ │ │ └── RankUp.tsx │ │ ├── NewOrder │ │ │ ├── JudgmentHistory.tsx │ │ │ ├── NewOrderBetaBanner.tsx │ │ │ ├── NewOrderImageRater.tsx │ │ │ ├── NewOrderImageRatings.tsx │ │ │ ├── NewOrderJoin.tsx │ │ │ ├── NewOrderRatingGuideModal.tsx │ │ │ ├── NewOrderRulesModal.tsx │ │ │ ├── NewOrderSidebar.tsx │ │ │ └── PlayersDirectoryModal.tsx │ │ └── PlayerCard.tsx │ ├── Generate │ │ ├── GenerationForm.tsx │ │ └── Input │ │ │ ├── InputAspectRatioColonDelimited.tsx │ │ │ └── InputPrompt.tsx │ ├── Generation │ │ ├── Alerts │ │ │ └── WhatIfAlert.tsx │ │ ├── Error │ │ │ └── ErrorBoundary.tsx │ │ ├── Form │ │ │ └── GenForm.tsx │ │ ├── GenerationSettings.tsx │ │ ├── Input │ │ │ ├── AspectRatioInput.tsx │ │ │ ├── ImageCropModal.tsx │ │ │ ├── RequestPriority.tsx │ │ │ ├── SourceImageUpload.tsx │ │ │ ├── SourceImageUpscale.tsx │ │ │ └── VideoProcess.tsx │ │ ├── Video │ │ │ ├── HaiperFormInput.tsx │ │ │ ├── HunyuanFormInput.tsx │ │ │ ├── KlingFormInput.tsx │ │ │ ├── LightricksFormInput.tsx │ │ │ ├── MinimaxFormInput.tsx │ │ │ ├── MochiFormInput.tsx │ │ │ ├── Veo3FormInput.tsx │ │ │ ├── VideoGenerationForm.tsx │ │ │ ├── VideoGenerationFormWrapper.tsx │ │ │ ├── VideoGenerationProvider.tsx │ │ │ ├── ViduFormInput.tsx │ │ │ └── WanFormInput.tsx │ │ └── stores │ │ │ └── generated-item.store.ts │ ├── HelpButton │ │ └── HelpButton.tsx │ ├── HeroCard │ │ ├── HeroCard.module.scss │ │ ├── HeroCard.module.scss.d.ts │ │ └── HeroCard.tsx │ ├── HiddenPreferences │ │ ├── HiddenPreferencesProvider.tsx │ │ └── useApplyHiddenPreferences.ts │ ├── HideImageButton │ │ └── HideImageButton.tsx │ ├── HideModelButton │ │ └── HideModelButton.tsx │ ├── HideUserButton │ │ ├── BlockUserButton.tsx │ │ └── HideUserButton.tsx │ ├── HomeBlocks │ │ ├── CollectionHomeBlock.tsx │ │ ├── CosmeticShopSectionHomeBlock.tsx │ │ ├── EventHomeBlock.tsx │ │ ├── FeaturedModelVersionHomeBlock.tsx │ │ ├── HomeBlock.Styles.ts │ │ ├── HomeBlock.module.scss │ │ ├── HomeBlock.module.scss.d.ts │ │ ├── HomeBlockWrapper.tsx │ │ ├── LeaderboardsHomeBlock.module.css │ │ ├── LeaderboardsHomeBlock.tsx │ │ ├── ManageHomeBlocksModal.module.scss │ │ ├── ManageHomeBlocksModal.module.scss.d.ts │ │ ├── ManageHomeBlocksModal.tsx │ │ ├── ManageHomepageButton.tsx │ │ ├── SocialHomeBlock.module.css │ │ ├── SocialHomeBlock.tsx │ │ └── components │ │ │ ├── AnnouncementHomeBlockAnnouncementItem.module.scss │ │ │ ├── AnnouncementHomeBlockAnnouncementItem.module.scss.d.ts │ │ │ ├── AnnouncementHomeBlockAnnouncementItem.tsx │ │ │ ├── HomeBlockHeaderMeta.tsx │ │ │ ├── LeaderboardHomeBlockCreatorItem.tsx │ │ │ ├── SocialBlock.module.scss │ │ │ ├── SocialBlock.module.scss.d.ts │ │ │ └── SocialBlock.tsx │ ├── HomeContentToggle │ │ ├── HomeContentToggle.module.css │ │ ├── HomeContentToggle.tsx │ │ ├── HomeStyleSegmentedControl.module.css │ │ └── HomeStyleSegmentedControl.tsx │ ├── IconBadge │ │ └── IconBadge.tsx │ ├── Image │ │ ├── AsPosts │ │ │ ├── GalleryModerationModal.module.scss │ │ │ ├── GalleryModerationModal.module.scss.d.ts │ │ │ ├── GalleryModerationModal.tsx │ │ │ ├── ImagesAsPostsCard.module.css │ │ │ ├── ImagesAsPostsCard.tsx │ │ │ ├── ImagesAsPostsCardContextMenu.tsx │ │ │ ├── ImagesAsPostsInfinite.tsx │ │ │ ├── ImagesAsPostsInfiniteProvider.tsx │ │ │ └── gallery.utils.ts │ │ ├── ById │ │ │ └── ImageById.tsx │ │ ├── ContextMenu │ │ │ └── ImageContextMenu.tsx │ │ ├── DeleteImage │ │ │ └── DeleteImage.tsx │ │ ├── Detail │ │ │ ├── ImageDetailByProps.module.scss │ │ │ ├── ImageDetailByProps.module.scss.d.ts │ │ │ ├── ImageDetailByProps.tsx │ │ │ ├── ImageDetailComments.tsx │ │ │ ├── ImageDetailModal.tsx │ │ │ ├── ImageDetailProvider.tsx │ │ │ ├── ImageResources.module.scss │ │ │ ├── ImageResources.module.scss.d.ts │ │ │ └── ImageResources.tsx │ │ ├── DetailV2 │ │ │ ├── ImageContestCollectionDetails.tsx │ │ │ ├── ImageDetail2.tsx │ │ │ ├── ImageDetailCarousel.tsx │ │ │ ├── ImageExternalMeta.tsx │ │ │ ├── ImageGenerationData.tsx │ │ │ ├── ImageMeta.tsx │ │ │ ├── ImageProcess.tsx │ │ │ ├── ImageRemixOfDetails.tsx │ │ │ ├── ImageRemixesDetails.tsx │ │ │ └── ImageResources.tsx │ │ ├── DownloadImage.tsx │ │ ├── ExplainHiddenImages │ │ │ └── ExplainHiddenImages.tsx │ │ ├── Filters │ │ │ ├── ImageCategories.tsx │ │ │ └── MediaFiltersDropdown.tsx │ │ ├── ImageAnalysis │ │ │ └── ImageAnalysis.tsx │ │ ├── ImageDropzone │ │ │ ├── ImageDropzone.tsx │ │ │ └── MediaDropzone.tsx │ │ ├── Indicators │ │ │ ├── OnsiteIndicator.tsx │ │ │ ├── OnsiteIndicatore.module.scss │ │ │ └── OnsiteIndicatore.module.scss.d.ts │ │ ├── Infinite │ │ │ ├── ImagesCard.module.scss │ │ │ ├── ImagesCard.module.scss.d.ts │ │ │ ├── ImagesCard.tsx │ │ │ ├── ImagesInfinite.tsx │ │ │ ├── UserMediaInfinite.module.css │ │ │ └── UserMediaInfinite.tsx │ │ ├── Meta │ │ │ ├── ImageMetaPopover.tsx │ │ │ └── ImageMetaPopoverLazy.tsx │ │ ├── PromptHighlight │ │ │ └── PromptHighlight.tsx │ │ ├── Providers │ │ │ └── ImagesProvider.tsx │ │ ├── RefreshImageResources │ │ │ └── RefreshImageResources.tsx │ │ ├── UnblockImage │ │ │ └── UnblockImage.tsx │ │ ├── hooks │ │ │ ├── useDeleteImage.ts │ │ │ ├── useReportTosViolation.ts │ │ │ ├── useRescanImage.ts │ │ │ ├── useToggleImageFlag.ts │ │ │ └── useUpdateCollectionCoverImage.ts │ │ └── image.utils.ts │ ├── ImageGeneration │ │ ├── CreateVariantsModal.tsx │ │ ├── Feed.module.scss │ │ ├── Feed.module.scss.d.ts │ │ ├── Feed.tsx │ │ ├── GeneratedImage.module.css │ │ ├── GeneratedImage.tsx │ │ ├── GeneratedImageActions.module.scss │ │ ├── GeneratedImageActions.module.scss.d.ts │ │ ├── GeneratedImageActions.tsx │ │ ├── GenerationDetails.tsx │ │ ├── GenerationForm │ │ │ ├── GenerationCostPopover.module.scss │ │ │ ├── GenerationCostPopover.module.scss.d.ts │ │ │ ├── GenerationCostPopover.tsx │ │ │ ├── GenerationForm2.module.scss │ │ │ ├── GenerationForm2.module.scss.d.ts │ │ │ ├── GenerationForm2.tsx │ │ │ ├── GenerationFormProvider.tsx │ │ │ ├── HaiperAspectRatio.tsx │ │ │ ├── InputQuantity.tsx │ │ │ ├── InputSeed.tsx │ │ │ ├── ResourceSelect.tsx │ │ │ ├── ResourceSelectCard.tsx │ │ │ ├── ResourceSelectFilters.module.scss │ │ │ ├── ResourceSelectFilters.module.scss.d.ts │ │ │ ├── ResourceSelectFilters.tsx │ │ │ ├── ResourceSelectModal2.tsx │ │ │ ├── ResourceSelectMultiple.tsx │ │ │ ├── ResourceSelectMultipleStandalone.module.scss │ │ │ ├── ResourceSelectMultipleStandalone.module.scss.d.ts │ │ │ ├── ResourceSelectMultipleStandalone.tsx │ │ │ ├── ResourceSelectProvider.tsx │ │ │ ├── TextToImageWhatIfProvider.tsx │ │ │ ├── TransactionsPopover.tsx │ │ │ ├── generation.utils.ts │ │ │ └── resource-select.types.ts │ │ ├── GenerationProvider.tsx │ │ ├── GenerationProvider2.tsx │ │ ├── GenerationSidebar.tsx │ │ ├── GenerationStatusBadge.tsx │ │ ├── GenerationTabs.tsx │ │ ├── MarkerFiltersDropdown.tsx │ │ ├── Queue.tsx │ │ ├── QueueItem.module.scss │ │ ├── QueueItem.module.scss.d.ts │ │ ├── QueueItem.tsx │ │ ├── QueueSnackbar.module.scss │ │ ├── QueueSnackbar.module.scss.d.ts │ │ ├── QueueSnackbar.tsx │ │ ├── SlateEditor │ │ │ ├── Editor.tsx │ │ │ ├── SlateEditor.tsx │ │ │ └── index.ts │ │ └── utils │ │ │ ├── generationImage.select.ts │ │ │ └── generationRequestHooks.ts │ ├── ImageGuard │ │ ├── ImageGuard.module.css │ │ └── ImageGuard2.tsx │ ├── ImageHash │ │ └── ImageHash.tsx │ ├── ImageMeta │ │ └── ImageMeta.tsx │ ├── ImagePreview │ │ └── ImagePreview.tsx │ ├── ImageUpload │ │ ├── ImageUpload.module.css │ │ ├── ImageUpload.tsx │ │ ├── ImageUploadPreview.module.css │ │ ├── ImageUploadPreview.tsx │ │ └── SortableItem.tsx │ ├── ImageViewer │ │ └── ImageViewer.tsx │ ├── InView │ │ └── InViewLoader.tsx │ ├── InfoPopover │ │ └── InfoPopover.tsx │ ├── IntersectionObserver │ │ └── IntersectionObserverProvider.tsx │ ├── IsClient │ │ └── IsClient.tsx │ ├── JoinPopover │ │ └── JoinPopover.tsx │ ├── Leaderboard │ │ ├── CreatorCard.module.scss │ │ ├── CreatorCard.module.scss.d.ts │ │ ├── CreatorCard.tsx │ │ ├── CreatorList.tsx │ │ ├── LeaderboardMetrics.tsx │ │ └── RankBadge.tsx │ ├── LegacyActionIcon │ │ └── LegacyActionIcon.tsx │ ├── LineClamp │ │ └── LineClamp.tsx │ ├── Login │ │ ├── LoginContent.tsx │ │ ├── LoginModal.tsx │ │ └── requireLogin.ts │ ├── LoginPopover │ │ └── LoginPopover.tsx │ ├── LoginRedirect │ │ └── LoginRedirect.tsx │ ├── Logo │ │ ├── BreakthroughT1DLogo.tsx │ │ ├── JdrfLogo.tsx │ │ ├── Logo.module.scss │ │ ├── Logo.module.scss.d.ts │ │ ├── Logo.tsx │ │ └── LogoBadge.tsx │ ├── Markdown │ │ └── CustomMarkdown.tsx │ ├── MasonryColumns │ │ ├── MasonryCarousel.tsx │ │ ├── MasonryColumns.tsx │ │ ├── MasonryContainer.module.scss │ │ ├── MasonryContainer.module.scss.d.ts │ │ ├── MasonryContainer.tsx │ │ ├── MasonryGrid.module.scss │ │ ├── MasonryGrid.module.scss.d.ts │ │ ├── MasonryGrid.tsx │ │ ├── MasonryProvider.tsx │ │ ├── UniformGrid.module.scss │ │ ├── UniformGrid.module.scss.d.ts │ │ ├── UniformGrid.tsx │ │ ├── masonry.types.ts │ │ └── masonry.utils.ts │ ├── MasonryGrid │ │ ├── BasicMasonryGrid.tsx │ │ ├── MasonryCard.tsx │ │ └── MasonryGrid2.tsx │ ├── MediaUploadSettings │ │ └── MediaUploadSettingsProvider.tsx │ ├── MenuItems │ │ ├── AddToCollectionMenuItem.tsx │ │ ├── RemoveFromCollectionMenuItem.tsx │ │ ├── ReportMenuItem.tsx │ │ └── ToggleSearchableMenuItem.tsx │ ├── Meta │ │ ├── Meta.tsx │ │ └── MetaPWA.tsx │ ├── Modals │ │ ├── AssociateModelsModal.tsx │ │ ├── BlockModelTagsModal.tsx │ │ ├── BuyBuzzModal.tsx │ │ ├── CardDecorationModal.module.scss │ │ ├── CardDecorationModal.module.scss.d.ts │ │ ├── CardDecorationModal.tsx │ │ ├── GenerationQualityFeedbackModal.module.scss │ │ ├── GenerationQualityFeedbackModal.module.scss.d.ts │ │ ├── GenerationQualityFeedbackModal.tsx │ │ ├── ReadOnlyModal.tsx │ │ ├── ReorderVersionsModal.tsx │ │ ├── ReportModal.tsx │ │ ├── RunStrategyModal.tsx │ │ ├── SendTipModal.module.scss │ │ ├── SendTipModal.module.scss.d.ts │ │ ├── SendTipModal.tsx │ │ ├── StripePaymentMethodSetupModal.tsx │ │ ├── UnpublishModal.tsx │ │ └── UserProfileEditModal.tsx │ ├── Model │ │ ├── Actions │ │ │ ├── MigrateModelToCollection.tsx │ │ │ ├── ModelCardContextMenu.tsx │ │ │ ├── ToggleLockModel.tsx │ │ │ ├── ToggleLockModelComments.tsx │ │ │ └── ToggleModelNotification.tsx │ │ ├── Categories │ │ │ ├── ModelCategoryCard.module.css │ │ │ └── ModelCategoryCard.tsx │ │ ├── CollectionShowcase │ │ │ └── CollectionShowcase.tsx │ │ ├── Discussion │ │ │ ├── CommentThreadModal.tsx │ │ │ ├── ModelDiscussionComments.tsx │ │ │ └── ModelDiscussionContextMenu.tsx │ │ ├── EarlyAccessAlert │ │ │ └── EarlyAccessAlert.tsx │ │ ├── EarlyAccessHighlight │ │ │ └── EarlyAccessHighlight.tsx │ │ ├── Generation │ │ │ ├── GenerationPromptModal.tsx │ │ │ ├── ModelGenerationCard.module.scss │ │ │ ├── ModelGenerationCard.module.scss.d.ts │ │ │ └── ModelGenerationCard.tsx │ │ ├── HowToUseModel │ │ │ └── HowToUseModel.tsx │ │ ├── Infinite │ │ │ ├── ModelFiltersDropdown.tsx │ │ │ └── ModelsInfinite.tsx │ │ ├── ModelAvailabilityUpdate │ │ │ └── ModelAvailabilityUpdate.tsx │ │ ├── ModelCarousel │ │ │ ├── ModelCarousel.module.css │ │ │ └── ModelCarousel.tsx │ │ ├── ModelDiscussion │ │ │ ├── CommentDiscussionItem.tsx │ │ │ ├── CommentDiscussionMenu.tsx │ │ │ ├── CommentEditModal.tsx │ │ │ └── ModelDiscussionV2.tsx │ │ ├── ModelFileAlert │ │ │ └── ModelFileAlert.tsx │ │ ├── ModelHash │ │ │ └── ModelHash.tsx │ │ ├── ModelTypeBadge │ │ │ └── ModelTypeBadge.tsx │ │ ├── ModelURN │ │ │ ├── ModelURN.module.scss │ │ │ ├── ModelURN.module.scss.d.ts │ │ │ └── ModelURN.tsx │ │ ├── ModelVersionList │ │ │ ├── ModelVersionList.module.scss │ │ │ ├── ModelVersionList.module.scss.d.ts │ │ │ └── ModelVersionList.tsx │ │ ├── ModelVersions │ │ │ ├── DownloadButton.tsx │ │ │ ├── ModelVersionDetails.module.scss │ │ │ ├── ModelVersionDetails.module.scss.d.ts │ │ │ ├── ModelVersionDetails.tsx │ │ │ ├── ModelVersionDonationGoals.tsx │ │ │ ├── ModelVersionEarlyAccessPurchase.tsx │ │ │ ├── ModelVersionMenu.tsx │ │ │ ├── ModelVersionPopularity.tsx │ │ │ ├── ModelVersionReview.tsx │ │ │ └── model-version.utils.ts │ │ ├── ScheduleModal │ │ │ └── ScheduleModal.tsx │ │ └── model.utils.ts │ ├── ModelRating │ │ └── ModelRating.tsx │ ├── Moderation │ │ ├── FlaggedModelsList.tsx │ │ ├── ImpersonateButton.tsx │ │ ├── ModerationNav.tsx │ │ └── RuleDefinitionPopover.tsx │ ├── MultiActionButton │ │ └── MultiActionButton.tsx │ ├── NewsletterDialog │ │ ├── NewsletterDialog.module.scss │ │ ├── NewsletterDialog.module.scss.d.ts │ │ └── NewsletterDialog.tsx │ ├── Newsroom │ │ ├── Assets │ │ │ ├── Badge.tsx │ │ │ └── Logo.tsx │ │ ├── FeaturedArticle.module.scss │ │ ├── FeaturedArticle.module.scss.d.ts │ │ ├── FeaturedArticle.tsx │ │ ├── MediaKit.module.scss │ │ ├── MediaKit.module.scss.d.ts │ │ ├── MediaKit.tsx │ │ ├── News.module.css │ │ ├── News.tsx │ │ ├── PressMentions.module.scss │ │ ├── PressMentions.module.scss.d.ts │ │ └── PressMentions.tsx │ ├── NextLink │ │ └── NextLink.tsx │ ├── NoContent │ │ └── NoContent.tsx │ ├── Notifications │ │ ├── NotificationBell.tsx │ │ ├── NotificationList.module.css │ │ ├── NotificationList.tsx │ │ ├── NotificationTabs.module.scss │ │ ├── NotificationTabs.tsx │ │ ├── NotificationToggle.tsx │ │ ├── NotificationsComposed.tsx │ │ ├── NotificationsDrawer.module.scss │ │ ├── NotificationsDrawer.module.scss.d.ts │ │ ├── NotificationsDrawer.tsx │ │ └── notifications.utils.ts │ ├── NowPayments │ │ └── util.ts │ ├── Onboarding │ │ ├── OnboardingAbortButton.tsx │ │ ├── OnboardingBuzz.tsx │ │ ├── OnboardingContentExperience.module.scss │ │ ├── OnboardingContentExperience.module.scss.d.ts │ │ ├── OnboardingContentExperience.tsx │ │ ├── OnboardingProfile.tsx │ │ ├── OnboardingProvider.tsx │ │ ├── OnboardingRedTos.tsx │ │ ├── OnboardingTos.tsx │ │ ├── OnboardingWizard.module.scss │ │ ├── OnboardingWizard.module.scss.d.ts │ │ ├── OnboardingWizard.tsx │ │ └── onboarding.utils.ts │ ├── Orchestrator │ │ └── components │ │ │ ├── BackgroundRemovalModal.tsx │ │ │ ├── EnhanceVideoModal.tsx │ │ │ ├── GenerateButton.tsx │ │ │ ├── UpscaleEnhancementModal.tsx │ │ │ └── UpscaleImageModal.tsx │ ├── Paddle │ │ ├── PaddleTransacionModal.tsx │ │ ├── usePaddleCheckout.ts │ │ └── util.ts │ ├── PageLoader │ │ └── PageLoader.tsx │ ├── Payments │ │ └── usePaymentProvider.ts │ ├── PermissionIndicator │ │ └── PermissionIndicator.tsx │ ├── PersistentAccordion │ │ └── PersistantAccordion.tsx │ ├── PoiAlert │ │ └── PoiAlert.tsx │ ├── PopConfirm │ │ └── PopConfirm.tsx │ ├── Post │ │ ├── DeletePostButton.tsx │ │ ├── Detail │ │ │ ├── PostComments.tsx │ │ │ ├── PostContestCollectionInfoAlert.tsx │ │ │ ├── PostControls.tsx │ │ │ ├── PostDetail.tsx │ │ │ ├── PostDetailModal.tsx │ │ │ ├── PostImages.module.css │ │ │ └── PostImages.tsx │ │ ├── EditV2 │ │ │ ├── Collaborators │ │ │ │ └── PostCollaborators.tsx │ │ │ ├── Collections │ │ │ │ └── CollectionSelectDropdown.tsx │ │ │ ├── EditPostReviews.tsx │ │ │ ├── EditPostTags.module.scss │ │ │ ├── EditPostTags.module.scss.d.ts │ │ │ ├── EditPostTags.tsx │ │ │ ├── ImageMetaModal.tsx │ │ │ ├── PostEdit.tsx │ │ │ ├── PostEditForm.tsx │ │ │ ├── PostEditLayout.tsx │ │ │ ├── PostEditProvider.tsx │ │ │ ├── PostEditSidebar.tsx │ │ │ ├── PostImageCards │ │ │ │ ├── AddedImage.tsx │ │ │ │ ├── BlockedImage.tsx │ │ │ │ ├── CustomCard.tsx │ │ │ │ ├── ErrorImage.tsx │ │ │ │ ├── PendingImage.tsx │ │ │ │ └── PostImageCards.tsx │ │ │ ├── PostImageDropzone.tsx │ │ │ ├── PostReorderImages.tsx │ │ │ ├── SchedulePostModal.tsx │ │ │ ├── Techniques │ │ │ │ ├── PostImageTechnique.tsx │ │ │ │ └── PostImageTechniquesPopover.tsx │ │ │ ├── Thumbnail │ │ │ │ └── PostImageThumbnailSelect.tsx │ │ │ └── Tools │ │ │ │ ├── PostImageTool.tsx │ │ │ │ └── PostImageToolsPopover.tsx │ │ ├── Infinite │ │ │ ├── PostCategories.tsx │ │ │ ├── PostFiltersDropdown.tsx │ │ │ ├── PostsCard.module.css │ │ │ ├── PostsCard.tsx │ │ │ └── PostsInfinite.tsx │ │ └── post.utils.ts │ ├── Profile │ │ ├── AddToShowcaseMenuItem.tsx │ │ ├── ImageCSSAspectRatioWrap.module.scss │ │ ├── ImageCSSAspectRatioWrap.module.scss.d.ts │ │ ├── ImageCSSAspectRatioWrap.tsx │ │ ├── InlineSocialLinkInput.tsx │ │ ├── ProfileHeader.module.scss │ │ ├── ProfileHeader.module.scss.d.ts │ │ ├── ProfileHeader.tsx │ │ ├── ProfileLayout.module.scss │ │ ├── ProfileLayout.module.scss.d.ts │ │ ├── ProfileLayout.tsx │ │ ├── ProfileLayout2.tsx │ │ ├── ProfileNavigation.tsx │ │ ├── ProfileSection.module.css │ │ ├── ProfileSection.tsx │ │ ├── ProfileSectionsSettingsInput.tsx │ │ ├── ProfileSidebar.tsx │ │ ├── Sections │ │ │ ├── MyImagesSection.tsx │ │ │ ├── MyModelsSection.tsx │ │ │ ├── PopularArticlesSection.tsx │ │ │ ├── PopularModelsSection.tsx │ │ │ ├── RecentReviewsSection.module.scss │ │ │ ├── RecentReviewsSection.module.scss.d.ts │ │ │ ├── RecentReviewsSection.tsx │ │ │ ├── ShowcaseGrid.module.scss │ │ │ ├── ShowcaseGrid.module.scss.d.ts │ │ │ ├── ShowcaseGrid.tsx │ │ │ └── ShowcaseSection.tsx │ │ ├── ShowcaseItemsInput.module.scss │ │ ├── ShowcaseItemsInput.module.scss.d.ts │ │ ├── ShowcaseItemsInput.tsx │ │ ├── UserBanModal.tsx │ │ ├── UserContextMenu.tsx │ │ ├── UserStats.tsx │ │ └── profile.utils.ts │ ├── ProfileImageUpload │ │ └── ProfileImageUpload.tsx │ ├── PurchasableRewards │ │ ├── PurchasableRewardUpsertForm.tsx │ │ ├── PurchasableRewards.module.scss │ │ ├── PurchasableRewards.module.scss.d.ts │ │ ├── PurchasableRewards.tsx │ │ ├── PurchasableRewardsModeratorFiltersDropdown.module.scss │ │ ├── PurchasableRewardsModeratorFiltersDropdown.module.scss.d.ts │ │ ├── PurchasableRewardsModeratorFiltersDropdown.tsx │ │ └── purchasableRewards.util.ts │ ├── Questions │ │ ├── AnswerDetail.tsx │ │ ├── AnswerForm.tsx │ │ ├── AnswerVotes.tsx │ │ ├── DeleteAnswer.tsx │ │ ├── DeleteQuestion.tsx │ │ ├── FavoriteBadge.tsx │ │ ├── QuestionAnswerComments.module.scss │ │ ├── QuestionAnswerComments.module.scss.d.ts │ │ ├── QuestionAnswerComments.tsx │ │ ├── QuestionDetails.tsx │ │ ├── QuestionForm.tsx │ │ ├── Questions.Provider.module.scss │ │ ├── Questions.Provider.module.scss.d.ts │ │ ├── Questions.Provider.tsx │ │ └── ReactionBadge.tsx │ ├── Reaction │ │ ├── ReactionButton.tsx │ │ ├── ReactionSettingsProvider.tsx │ │ ├── Reactions.module.css │ │ └── Reactions.tsx │ ├── ReactionPicker │ │ └── ReactionPicker.tsx │ ├── ReadOnlyAlert │ │ └── ReadOnlyAlert.tsx │ ├── ReadOnlyNotice │ │ └── ReadOnlyNotice.tsx │ ├── Recaptcha │ │ ├── RecaptchaWidget.tsx │ │ └── useReptchaToken.ts │ ├── RedeemableCode │ │ ├── RedeemCodeModal.module.scss │ │ ├── RedeemCodeModal.module.scss.d.ts │ │ └── RedeemCodeModal.tsx │ ├── Redirect │ │ └── Redirect.tsx │ ├── Referrals │ │ └── ReferralsProvider.tsx │ ├── RefreshSessionButton │ │ └── RefreshSessionButton.tsx │ ├── RenderHtml │ │ ├── RenderHtml.module.scss │ │ ├── RenderHtml.module.scss.d.ts │ │ └── RenderHtml.tsx │ ├── Report │ │ ├── AdminAttentionForm.tsx │ │ ├── ClaimForm.tsx │ │ ├── NsfwForm.tsx │ │ ├── OwnershipForm.tsx │ │ ├── TosViolationForm.tsx │ │ ├── create-report-form.tsx │ │ └── report.utils.ts │ ├── RequireMembership │ │ └── RequireMembership.tsx │ ├── Resizable │ │ ├── ResizableSidebar.tsx │ │ ├── ResizeableSidebar.module.scss │ │ ├── ResizeableSidebar.module.scss.d.ts │ │ └── useResize.ts │ ├── Resource │ │ ├── Files.module.scss │ │ ├── Files.module.scss.d.ts │ │ ├── Files.tsx │ │ ├── FilesEditModal.tsx │ │ ├── FilesProvider.tsx │ │ ├── Forms │ │ │ ├── ModelUpsertForm.module.scss │ │ │ ├── ModelUpsertForm.module.scss.d.ts │ │ │ ├── ModelUpsertForm.tsx │ │ │ ├── ModelVersionUpsertForm.tsx │ │ │ ├── PostUpsertForm2.tsx │ │ │ ├── TrainingSelectFile.module.css │ │ │ └── TrainingSelectFile.tsx │ │ ├── UploadTracker.tsx │ │ └── Wizard │ │ │ ├── ModelVersionWizard.tsx │ │ │ ├── ModelWizard.tsx │ │ │ ├── TemplateSelect.tsx │ │ │ └── Wizard.tsx │ ├── ResourceReview │ │ ├── EditResourceReview.module.scss │ │ ├── EditResourceReview.tsx │ │ ├── EditResourceReviewModal.tsx │ │ ├── EditUserResourceReview.module.scss │ │ ├── EditUserResourceReview.module.scss.d.ts │ │ ├── EditUserResourceReview.tsx │ │ ├── ResourceReviewCard.tsx │ │ ├── ResourceReviewCarousel.module.css │ │ ├── ResourceReviewCarousel.tsx │ │ ├── ResourceReviewComments.tsx │ │ ├── ResourceReviewDetail.tsx │ │ ├── ResourceReviewForm.tsx │ │ ├── ResourceReviewMenu.tsx │ │ ├── ResourceReviewModal.tsx │ │ ├── ResourceReviewThumbActions.module.scss │ │ ├── ResourceReviewThumbActions.module.scss.d.ts │ │ ├── ResourceReviewThumbActions.tsx │ │ ├── ResourceReviewsGrid.tsx │ │ ├── Summary │ │ │ ├── ResourceReviewSummary.module.scss │ │ │ ├── ResourceReviewSummary.module.scss.d.ts │ │ │ └── ResourceReviewSummary.tsx │ │ └── resourceReview.utils.ts │ ├── RichTextEditor │ │ ├── InsertImageControl.tsx │ │ ├── InsertInstagramEmbedControl.tsx │ │ ├── InsertStrawPollControl.tsx │ │ ├── InsertYoutubeVideoControl.tsx │ │ ├── MentionList.tsx │ │ ├── RichTextEditor.tsx │ │ ├── RichTextEditorComponent.module.scss │ │ ├── RichTextEditorComponent.module.scss.d.ts │ │ ├── RichTextEditorComponent.tsx │ │ └── suggestion.ts │ ├── RouterTransition │ │ └── RouterTransition.tsx │ ├── RunStrategy │ │ ├── GenerateButton.tsx │ │ ├── RunButton.tsx │ │ ├── RunPartners.module.scss │ │ ├── RunPartners.module.scss.d.ts │ │ └── RunPartners.tsx │ ├── SVG │ │ ├── IconCivitai.tsx │ │ ├── IconHuggingFace.tsx │ │ └── IconNose.tsx │ ├── ScrollArea │ │ ├── ScrollArea.tsx │ │ └── ScrollAreaContext.ts │ ├── Search │ │ ├── CustomSearchComponents.module.scss │ │ ├── CustomSearchComponents.module.scss.d.ts │ │ ├── CustomSearchComponents.tsx │ │ ├── QuickSearchDropdown.module.scss │ │ ├── QuickSearchDropdown.module.scss.d.ts │ │ ├── QuickSearchDropdown.tsx │ │ ├── SearchHeader.module.scss │ │ ├── SearchHeader.module.scss.d.ts │ │ ├── SearchHeader.tsx │ │ ├── SearchLayout.module.scss │ │ ├── SearchLayout.module.scss.d.ts │ │ ├── SearchLayout.tsx │ │ ├── TimeoutLoader.tsx │ │ ├── parsers │ │ │ ├── article.parser.ts │ │ │ ├── base.ts │ │ │ ├── bounties.parser.ts │ │ │ ├── collection.parser.ts │ │ │ ├── image.parser.ts │ │ │ ├── model.parser.ts │ │ │ ├── tool.parser.ts │ │ │ └── user.parser.ts │ │ ├── search.client.ts │ │ ├── search.types.ts │ │ ├── search.utils.ts │ │ ├── search.utils2.ts │ │ └── useSearchState.ts │ ├── SelectMenu │ │ ├── SelectMenu.module.scss │ │ ├── SelectMenu.module.scss.d.ts │ │ └── SelectMenu.tsx │ ├── SensitiveShield │ │ └── SensitiveShield.tsx │ ├── ShareButton │ │ ├── Icons │ │ │ ├── SocialIconChat.tsx │ │ │ ├── SocialIconCollect.tsx │ │ │ ├── SocialIconCopy.tsx │ │ │ ├── SocialIconOther.tsx │ │ │ └── SocialIconReddit.tsx │ │ └── ShareButton.tsx │ ├── Shop │ │ ├── CosmeticSample.tsx │ │ ├── ShopItem.module.scss │ │ ├── ShopItem.module.scss.d.ts │ │ ├── ShopItem.tsx │ │ ├── ShopSection.module.scss │ │ ├── ShopSection.module.scss.d.ts │ │ └── ShopSection.tsx │ ├── SignInError │ │ └── SignInError.tsx │ ├── Signals │ │ ├── SignalsNotifications.tsx │ │ ├── SignalsProvider.tsx │ │ ├── SignalsProviderStack.tsx │ │ └── SignalsRegistrar.tsx │ ├── SkeletonSwitch │ │ └── SkeletonSwitch.tsx │ ├── Social │ │ ├── LiveNow.module.scss │ │ ├── LiveNow.module.scss.d.ts │ │ ├── LiveNow.tsx │ │ ├── Social.module.css │ │ ├── Social.tsx │ │ ├── SocialButton.tsx │ │ └── SocialLabel.tsx │ ├── SocialLinks │ │ └── SocialLinks.tsx │ ├── SortableGrid │ │ └── SortableGrid.tsx │ ├── StartRating │ │ ├── StarRating.module.scss │ │ ├── StarRating.module.scss.d.ts │ │ └── StarRating.tsx │ ├── Stepper │ │ ├── Stepper.tsx │ │ └── StepperTitle.tsx │ ├── Stripe │ │ ├── DonateButton.tsx │ │ ├── ManageSubscriptionButton.tsx │ │ ├── MembershipChangePrevention.tsx │ │ ├── MembershipUpsell.module.scss │ │ ├── MembershipUpsell.module.scss.d.ts │ │ ├── MembershipUpsell.tsx │ │ ├── StripePaymentMethodSetup.tsx │ │ ├── SubscribeButton.tsx │ │ ├── memberships.util.ts │ │ └── stripe.utils.ts │ ├── Subscriptions │ │ ├── CancelMembershipAction.tsx │ │ ├── PlanBenefitList.tsx │ │ ├── PlanCard.tsx │ │ ├── SubscriptionFeature.tsx │ │ ├── SubscriptionRequiredBlock.module.scss │ │ ├── SubscriptionRequiredBlock.module.scss.d.ts │ │ ├── SubscriptionRequiredBlock.tsx │ │ └── getPlanDetails.tsx │ ├── Support │ │ ├── SupportContent.tsx │ │ └── SupportModal.tsx │ ├── SupportButton │ │ └── SupportButton.tsx │ ├── Tags │ │ ├── HiddenTagsModal.tsx │ │ ├── ReviewTagsInput.tsx │ │ ├── TagScroller.tsx │ │ ├── TagsInput.module.scss │ │ ├── TagsInput.module.scss.d.ts │ │ ├── TagsInput.tsx │ │ └── tag.utils.ts │ ├── Technique │ │ └── TechniqueMultiSelect.tsx │ ├── ThumbsIcon │ │ └── ThumbsIcon.tsx │ ├── ToSModal │ │ └── TosModal.tsx │ ├── ToggleList │ │ ├── ToggleList.module.scss │ │ ├── ToggleList.module.scss.d.ts │ │ └── ToggleList.tsx │ ├── Tool │ │ ├── ToolBanner.tsx │ │ ├── ToolFiltersDropdown.module.scss │ │ ├── ToolFiltersDropdown.module.scss.d.ts │ │ ├── ToolFiltersDropdown.tsx │ │ ├── ToolMultiSelect.tsx │ │ ├── ToolsInfinite.tsx │ │ └── tools.utils.ts │ ├── Tooltips │ │ └── StatTooltip.tsx │ ├── Tour │ │ └── TourPopover.tsx │ ├── Tours │ │ ├── LazyTours.tsx │ │ ├── ToursProvider.tsx │ │ └── tours │ │ │ ├── auction.tour.tsx │ │ │ ├── content-gen.tour.tsx │ │ │ ├── index.ts │ │ │ ├── model-page.tour.tsx │ │ │ └── post-image-gen.tour.tsx │ ├── TrackView │ │ ├── TrackPageView.tsx │ │ ├── TrackView.tsx │ │ └── track.utils.ts │ ├── TrainedWords │ │ └── TrainedWords.tsx │ ├── Training │ │ ├── Form │ │ │ ├── ImageSelectFilters.module.scss │ │ │ ├── ImageSelectFilters.module.scss.d.ts │ │ │ ├── ImageSelectFilters.tsx │ │ │ ├── ImageSelectModal.tsx │ │ │ ├── TrainingAutoLabelModal.tsx │ │ │ ├── TrainingBasicInfo.module.css │ │ │ ├── TrainingBasicInfo.tsx │ │ │ ├── TrainingCommon.ts │ │ │ ├── TrainingEditTagsModal.tsx │ │ │ ├── TrainingImages.module.scss │ │ │ ├── TrainingImages.module.scss.d.ts │ │ │ ├── TrainingImages.tsx │ │ │ ├── TrainingImagesCaptionViewer.module.scss │ │ │ ├── TrainingImagesCaptionViewer.module.scss.d.ts │ │ │ ├── TrainingImagesCaptionViewer.tsx │ │ │ ├── TrainingImagesTagViewer.module.css │ │ │ ├── TrainingImagesTagViewer.tsx │ │ │ ├── TrainingParams.tsx │ │ │ ├── TrainingSubmit.tsx │ │ │ ├── TrainingSubmitAdvancedSettings.tsx │ │ │ └── TrainingSubmitModelSelect.tsx │ │ ├── Wizard │ │ │ └── TrainWizard.tsx │ │ └── training.utils.ts │ ├── TurnstileWidget │ │ └── TurnstileWidget.tsx │ ├── TwCard │ │ └── TwCard.tsx │ ├── TwCosmeticWrapper │ │ ├── CosmeticWrapper.module.scss │ │ ├── CosmeticWrapper.module.scss.d.ts │ │ └── TwCosmeticWrapper.tsx │ ├── TwLoader │ │ └── TwLoader.tsx │ ├── TwScrollX │ │ └── TwScrollX.tsx │ ├── TypographyStylesWrapper │ │ ├── TypographyStylesWrapper.module.scss │ │ └── TypographyStylesWrapper.tsx │ ├── UpdateRequiredWatcher │ │ ├── UpdateRequiredModal.tsx │ │ └── UpdateRequiredWatcher.tsx │ ├── UploadNotice │ │ └── UploadNotice.tsx │ ├── User │ │ ├── ProfilePictureAlert.tsx │ │ ├── UserBanned.tsx │ │ ├── UserBuzz.tsx │ │ ├── UserDraftModels.tsx │ │ ├── UserLink.tsx │ │ ├── UserModelsTable.module.scss │ │ ├── UserModelsTable.module.scss.d.ts │ │ ├── UserTrainingModels.tsx │ │ └── Username.tsx │ ├── UserAvatar │ │ ├── UserAvatar.tsx │ │ ├── UserAvatarProfilePicture.tsx │ │ ├── UserAvatarSimple.module.scss │ │ ├── UserAvatarSimple.module.scss.d.ts │ │ └── UserAvatarSimple.tsx │ ├── UserPaymentConfiguration │ │ └── util.ts │ ├── UserSettings │ │ └── hooks.ts │ ├── UserStatBadges │ │ └── UserStatBadges.tsx │ ├── Vault │ │ ├── ToggleVaultButton.tsx │ │ ├── VaultItemsFiltersDropdown.module.scss │ │ ├── VaultItemsFiltersDropdown.module.scss.d.ts │ │ ├── VaultItemsFiltersDropdown.tsx │ │ └── vault.util.ts │ ├── VerifiedShield │ │ └── VerifiedShield.tsx │ ├── VerifiedText │ │ └── VerifiedText.tsx │ ├── VimeoEmbed │ │ ├── VimeoEmbed.module.scss │ │ ├── VimeoEmbed.module.scss.d.ts │ │ └── VimeoEmbed.tsx │ ├── VotableTags │ │ ├── VotableTag.module.scss │ │ ├── VotableTag.tsx │ │ ├── VotableTagAdd.tsx │ │ ├── VotableTagMature.tsx │ │ ├── VotableTags.tsx │ │ └── votableTag.utils.ts │ ├── WatchAdButton │ │ └── WatchAdButton.tsx │ └── YoutubeEmbed │ │ └── YoutubeEmbed.tsx ├── env │ ├── client.ts │ ├── other.ts │ ├── schema.ts │ └── server.ts ├── hooks │ ├── hidden-preferences │ │ ├── index.ts │ │ ├── useHiddenPreferences.ts │ │ └── useToggleHiddenPreferences.ts │ ├── trpcHelpers.ts │ ├── useAspectRatioFit.tsx │ ├── useCFImageUpload.tsx │ ├── useCarouselNavigation.ts │ ├── useCatchNavigation.tsx │ ├── useCreateStore.ts │ ├── useCurrentUser.ts │ ├── useDismissedAnnouncements.ts │ ├── useDomainColor.tsx │ ├── useDomainSync.tsx │ ├── useFileUpload.ts │ ├── useFileUploadEvents.ts │ ├── useFormStorage.ts │ ├── useGameSounds.tsx │ ├── useHeadingsData.ts │ ├── useInView.ts │ ├── useIsClient.ts │ ├── useIsLive.ts │ ├── useIsMobile.ts │ ├── useIsMounted.ts │ ├── useIsTabActive.ts │ ├── useIsomorphicLayoutEffect.ts │ ├── useLiveFeatureFlags.ts │ ├── useMediaUpload.ts │ ├── useModelFilters.ts │ ├── useResizeObserver.ts │ ├── useS3Upload.tsx │ ├── useScrollRestore.ts │ ├── useStepper.ts │ ├── useStorage.ts │ └── useZodRouteParams.ts ├── libs │ ├── animations.module.scss │ ├── animations.module.scss.d.ts │ ├── auth.ts │ ├── form │ │ ├── components │ │ │ ├── CollectionSelectInput.tsx │ │ │ ├── CosmeticSelect.module.scss │ │ │ ├── CosmeticSelect.module.scss.d.ts │ │ │ ├── CosmeticSelect.tsx │ │ │ ├── FieldArray.tsx │ │ │ ├── FlagInput.tsx │ │ │ ├── Form.tsx │ │ │ ├── MultiFileInputUpload.module.scss │ │ │ ├── MultiFileInputUpload.module.scss.d.ts │ │ │ ├── MultiFileInputUpload.tsx │ │ │ ├── MultiSelectWrapper.tsx │ │ │ ├── NumberInputWrapper.tsx │ │ │ ├── NumberSlider.tsx │ │ │ ├── PresetOptions.module.scss │ │ │ ├── PresetOptions.module.scss.d.ts │ │ │ ├── PresetOptions.tsx │ │ │ ├── RadioGroupWrapper.tsx │ │ │ ├── RatingWrapper.tsx │ │ │ ├── SegmentedControlWrapper.tsx │ │ │ ├── SelectWrapper.tsx │ │ │ ├── SimpleImageUpload.module.scss │ │ │ ├── SimpleImageUpload.module.scss.d.ts │ │ │ ├── SimpleImageUpload.tsx │ │ │ ├── TextInputWrapper.tsx │ │ │ ├── Watch.tsx │ │ │ └── index.ts │ │ ├── hoc │ │ │ ├── withController.tsx │ │ │ └── withWatcher.tsx │ │ ├── hooks │ │ │ ├── useForm.ts │ │ │ ├── useFormSubscribe.ts │ │ │ └── usePersistForm.ts │ │ └── index.ts │ ├── generation │ │ └── utils │ │ │ ├── AspectRatio.ts │ │ │ └── constants.ts │ ├── helpers.module.scss │ ├── helpers.module.scss.d.ts │ ├── moderation.ts │ ├── picfinder.ts │ ├── slots │ │ ├── create-slots.tsx │ │ ├── use-force-update.ts │ │ └── useIsomorphicLayoutEffect.ts │ ├── sx-helpers.ts │ ├── tags.ts │ └── tiptap │ │ └── extensions │ │ ├── CustomImage.ts │ │ ├── Instagram.ts │ │ └── StrawPoll.ts ├── middleware.ts ├── pages │ ├── 404.tsx │ ├── _app.tsx │ ├── _document.tsx │ ├── api │ │ ├── admin │ │ │ ├── add-manual-assignments.ts │ │ │ ├── bootstrap.ts │ │ │ ├── cache-check.ts │ │ │ ├── clean-up-old-notifications.ts │ │ │ ├── clear-cache-by-pattern.ts │ │ │ ├── creator-comp-payout.ts │ │ │ ├── delete-images.ts │ │ │ ├── exclude-user-download-history.ts │ │ │ ├── fetch-cache-by-pattern.ts │ │ │ ├── header-check.ts │ │ │ ├── migrate-likes-models.ts │ │ │ ├── migrate-likes.ts │ │ │ ├── migrate-metrics.ts │ │ │ ├── migrate-model-metrics.ts │ │ │ ├── orchestrator │ │ │ │ ├── index.ts │ │ │ │ └── timings.ts │ │ │ ├── pay-daily-challenge-users.ts │ │ │ ├── permission.ts │ │ │ ├── purge-cache-tag.ts │ │ │ ├── refresh-sessions.ts │ │ │ ├── rescan-images.ts │ │ │ ├── send-discount.ts │ │ │ ├── temp │ │ │ │ ├── delete-bad-posts.ts │ │ │ │ ├── delete-deleted-users.ts │ │ │ │ ├── holiday-2024-redeliver-notifications.ts │ │ │ │ ├── migrate-file-metadata.ts │ │ │ │ ├── migrate-image-flags.ts │ │ │ │ ├── migrate-image-resources-new.ts │ │ │ │ ├── migrate-imageSortAt.ts │ │ │ │ ├── migrate-img-metrics.ts │ │ │ │ ├── migrate-model-flags.ts │ │ │ │ ├── migrate-nsfwLevels.ts │ │ │ │ ├── migrate-remove-image-metrics.ts │ │ │ │ ├── migrate-remove-post-metrics.ts │ │ │ │ ├── migrate-tag-levels.ts │ │ │ │ ├── reset-training-model.ts │ │ │ │ └── update-bad-posts.ts │ │ │ └── test.ts │ │ ├── application-error.ts │ │ ├── auth │ │ │ ├── [...nextauth].ts │ │ │ ├── civ-token.ts │ │ │ ├── featurebase.ts │ │ │ ├── freshdesk.ts │ │ │ ├── impersonate.ts │ │ │ ├── sync.ts │ │ │ └── user-from-token.ts │ │ ├── download │ │ │ ├── [...key].ts │ │ │ ├── attachments │ │ │ │ └── [fileId].ts │ │ │ ├── models │ │ │ │ └── [modelVersionId].ts │ │ │ └── vault │ │ │ │ └── [vaultItemId].ts │ │ ├── generation │ │ │ ├── data.ts │ │ │ └── history │ │ │ │ ├── callback.ts │ │ │ │ └── index.ts │ │ ├── health.ts │ │ ├── image │ │ │ ├── [entityType] │ │ │ │ └── [entityId].ts │ │ │ ├── ingest.ts │ │ │ └── ingestion-results.ts │ │ ├── import.ts │ │ ├── internal │ │ │ ├── activity.ts │ │ │ ├── add-missing-phash.ts │ │ │ ├── assess-image.ts │ │ │ ├── essential-objects.ts │ │ │ ├── freshdesk-service-tier-refresh.ts │ │ │ ├── get-jobs.ts │ │ │ ├── get-presigned-url.ts │ │ │ ├── heap-dump.ts │ │ │ ├── image-delivery │ │ │ │ └── [id].ts │ │ │ ├── longest-running-query.ts │ │ │ ├── redis-sys-usage.ts │ │ │ ├── redis-usage.ts │ │ │ └── restore-models.ts │ │ ├── metrics.ts │ │ ├── mod │ │ │ ├── action-report.ts │ │ │ ├── adjust-tag-level.ts │ │ │ ├── ban-user.ts │ │ │ ├── clavata-image-process.ts │ │ │ ├── clean-up.ts │ │ │ ├── compute-tags.ts │ │ │ ├── custom-challenge.ts │ │ │ ├── daily-challenge │ │ │ │ └── cycle.ts │ │ │ ├── enable-stripe-connect.ts │ │ │ ├── enable-tipalti.ts │ │ │ ├── flip-phases.ts │ │ │ ├── mark-poi-images-search.ts │ │ │ ├── mod-rules.ts │ │ │ ├── remove-all-content.ts │ │ │ ├── remove-images.ts │ │ │ ├── reprocess-buzz-purchases.ts │ │ │ ├── reprocess-order.ts │ │ │ ├── reprocess-scan.ts │ │ │ ├── reset-bank.ts │ │ │ ├── reset-vault.ts │ │ │ ├── resource-training-v2.ts │ │ │ ├── restore-images.ts │ │ │ ├── scan-images.ts │ │ │ ├── search │ │ │ │ ├── articles-update.ts │ │ │ │ ├── image-metrics-update.ts │ │ │ │ ├── images-update.ts │ │ │ │ └── models-update.ts │ │ │ ├── send-mod-notification.ts │ │ │ ├── set-image-nsfw-level.ts │ │ │ ├── set-rewards-eligibility.ts │ │ │ ├── unequip-event-cosmetics.ts │ │ │ ├── update-image-flag.ts │ │ │ ├── update-index.ts │ │ │ └── withdraw-from-bank.ts │ │ ├── notification │ │ │ └── getDetails.ts │ │ ├── page-view.ts │ │ ├── restricted.ts │ │ ├── run │ │ │ └── [modelVersionId].ts │ │ ├── signal-server │ │ │ └── get-token.ts │ │ ├── test.ts │ │ ├── testing │ │ │ ├── daily-challenge.ts │ │ │ ├── email │ │ │ │ └── [template].ts │ │ │ └── new-order.ts │ │ ├── trpc │ │ │ └── [trpc].ts │ │ ├── upload │ │ │ ├── abort.ts │ │ │ ├── complete.ts │ │ │ └── index.ts │ │ ├── user │ │ │ ├── getHiddenPreferences.ts │ │ │ └── settings.ts │ │ ├── v1 │ │ │ ├── content │ │ │ │ └── [[...slug]].ts │ │ │ ├── creators.ts │ │ │ ├── enums.ts │ │ │ ├── image-upload │ │ │ │ ├── index.ts │ │ │ │ └── multipart │ │ │ │ │ └── index.ts │ │ │ ├── images │ │ │ │ └── index.ts │ │ │ ├── me.ts │ │ │ ├── model-versions │ │ │ │ ├── [id].ts │ │ │ │ ├── by-hash │ │ │ │ │ ├── [hash].ts │ │ │ │ │ ├── ids.ts │ │ │ │ │ └── index.ts │ │ │ │ └── mini │ │ │ │ │ └── [id].ts │ │ │ ├── models │ │ │ │ ├── [id].ts │ │ │ │ └── index.ts │ │ │ ├── partners │ │ │ │ ├── generate-token.ts │ │ │ │ └── supported-models.ts │ │ │ ├── permissions │ │ │ │ └── check.ts │ │ │ ├── tags.ts │ │ │ ├── users │ │ │ │ └── index.ts │ │ │ └── vault │ │ │ │ ├── all.tsx │ │ │ │ ├── check-vault.tsx │ │ │ │ ├── get.tsx │ │ │ │ └── toggle-version.tsx │ │ └── webhooks │ │ │ ├── coinbase-onramp.ts │ │ │ ├── coinbase.ts │ │ │ ├── image-scan-result.ts │ │ │ ├── model-scan-result.ts │ │ │ ├── nowpayments.ts │ │ │ ├── paddle.ts │ │ │ ├── resource-training-v2 │ │ │ └── [modelVersionId].ts │ │ │ ├── resource-training.ts │ │ │ ├── run-jobs │ │ │ └── [[...run]].ts │ │ │ ├── scan-result.ts │ │ │ ├── stripe-connect.ts │ │ │ ├── stripe.ts │ │ │ ├── tipalti.ts │ │ │ ├── twitch.ts │ │ │ └── youtube-upload.ts │ ├── articles │ │ ├── [id] │ │ │ ├── [[...slug]].module.scss │ │ │ ├── [[...slug]].tsx │ │ │ └── edit.tsx │ │ ├── create.tsx │ │ └── index.tsx │ ├── auctions │ │ └── [[...slug]].tsx │ ├── bounties │ │ ├── [id] │ │ │ ├── [[...slug]].module.scss │ │ │ ├── [[...slug]].tsx │ │ │ ├── edit.tsx │ │ │ └── entries │ │ │ │ ├── [entryId] │ │ │ │ ├── edit.tsx │ │ │ │ ├── index.module.scss │ │ │ │ └── index.tsx │ │ │ │ └── create.tsx │ │ ├── create.tsx │ │ ├── entries │ │ │ └── [entryId].tsx │ │ ├── index.module.css │ │ └── index.tsx │ ├── builds │ │ ├── index.module.css │ │ └── index.tsx │ ├── challenges │ │ └── index.tsx │ ├── changelog │ │ └── index.tsx │ ├── claim │ │ ├── buzz │ │ │ └── [id].tsx │ │ └── cosmetic │ │ │ └── [id].tsx │ ├── clubs │ │ ├── [id] │ │ │ ├── articles.tsx │ │ │ ├── index.tsx │ │ │ ├── models.tsx │ │ │ ├── posts.tsx │ │ │ └── posts │ │ │ │ └── [postId] │ │ │ │ └── edit.tsx │ │ ├── create.tsx │ │ ├── index.module.css │ │ ├── index.tsx │ │ ├── invites │ │ │ └── [clubAdminInviteId].tsx │ │ └── manage │ │ │ └── [id] │ │ │ ├── admins.tsx │ │ │ ├── index.tsx │ │ │ ├── members.tsx │ │ │ ├── resources.tsx │ │ │ ├── revenue.tsx │ │ │ └── tiers.tsx │ ├── collections │ │ ├── [collectionId] │ │ │ ├── index.tsx │ │ │ ├── join.tsx │ │ │ └── review.tsx │ │ ├── index.tsx │ │ └── youtube │ │ │ └── auth.tsx │ ├── comments │ │ └── v2 │ │ │ └── [id].tsx │ ├── content │ │ └── [[...slug]].tsx │ ├── creator-program │ │ ├── index.module.scss │ │ └── index.tsx │ ├── discord │ │ └── link-role.tsx │ ├── events │ │ ├── [slug].module.scss │ │ ├── [slug].tsx │ │ └── index.tsx │ ├── games │ │ ├── chopped.tsx │ │ └── knights-of-new-order.tsx │ ├── generate │ │ └── index.tsx │ ├── home │ │ ├── index.module.css │ │ └── index.tsx │ ├── images │ │ ├── [imageId].tsx │ │ └── index.tsx │ ├── index.tsx │ ├── intent │ │ ├── avatar.tsx │ │ └── post.tsx │ ├── leaderboard │ │ ├── [id].module.css │ │ └── [id].tsx │ ├── login │ │ ├── index.tsx │ │ └── token.tsx │ ├── model-versions │ │ └── [id].tsx │ ├── models │ │ ├── [id] │ │ │ ├── [[...slug]].module.scss │ │ │ ├── [[...slug]].tsx │ │ │ ├── edit.tsx │ │ │ ├── model-versions │ │ │ │ ├── [versionId] │ │ │ │ │ ├── edit.tsx │ │ │ │ │ └── wizard.tsx │ │ │ │ └── create.tsx │ │ │ ├── review.module.scss │ │ │ ├── reviews.tsx │ │ │ └── wizard.tsx │ │ ├── create.tsx │ │ ├── index.tsx │ │ ├── license │ │ │ └── [versionId].tsx │ │ └── train.tsx │ ├── moderator │ │ ├── announcements.tsx │ │ ├── aspect-ratio-explorer.tsx │ │ ├── auditor.tsx │ │ ├── blocklists.tsx │ │ ├── buzz-withdrawal-requests.tsx │ │ ├── contests │ │ │ ├── bans.tsx │ │ │ └── index.tsx │ │ ├── cosmetic-store │ │ │ ├── cosmetics │ │ │ │ └── index.tsx │ │ │ ├── index.tsx │ │ │ ├── products │ │ │ │ ├── [id] │ │ │ │ │ └── edit.tsx │ │ │ │ ├── create.tsx │ │ │ │ └── index.tsx │ │ │ └── sections │ │ │ │ ├── [id] │ │ │ │ └── edit.tsx │ │ │ │ ├── create.tsx │ │ │ │ └── index.tsx │ │ ├── csam │ │ │ ├── [userId].tsx │ │ │ └── index.tsx │ │ ├── duplicate-hashes.tsx │ │ ├── generation.tsx │ │ ├── image-rating-review.tsx │ │ ├── image-tags.tsx │ │ ├── images.tsx │ │ ├── images │ │ │ └── to-ingest.tsx │ │ ├── link-demo.tsx │ │ ├── models │ │ │ └── index.tsx │ │ ├── paddle │ │ │ ├── adjustments.tsx │ │ │ └── customer │ │ │ │ └── [paddleCustomerId].tsx │ │ ├── reports.tsx │ │ ├── research │ │ │ └── rater-sanity.tsx │ │ ├── review │ │ │ └── training-data │ │ │ │ ├── [versionId].tsx │ │ │ │ └── index.tsx │ │ ├── rewards │ │ │ ├── create.tsx │ │ │ ├── index.tsx │ │ │ └── update │ │ │ │ └── [id].tsx │ │ ├── tags.tsx │ │ └── test.tsx │ ├── newsroom │ │ ├── index.module.scss │ │ └── index.tsx │ ├── payment │ │ ├── coinbase.tsx │ │ ├── nowpayments.tsx │ │ ├── paddle.tsx │ │ ├── product │ │ │ └── [...productId].tsx │ │ └── success.tsx │ ├── posts │ │ ├── [postId] │ │ │ ├── [[...postSlug]].tsx │ │ │ └── edit.tsx │ │ ├── create.tsx │ │ └── index.tsx │ ├── pricing │ │ ├── index.module.scss │ │ └── index.tsx │ ├── product │ │ ├── link.tsx │ │ ├── odor.tsx │ │ └── vault.tsx │ ├── purchase │ │ └── buzz.tsx │ ├── questions │ │ ├── [questionId] │ │ │ └── [[...questionDetailSlug]].tsx │ │ ├── create.tsx │ │ └── index.tsx │ ├── redirect.tsx │ ├── research │ │ └── rater.tsx │ ├── reviews │ │ └── [reviewId].tsx │ ├── safety │ │ ├── index.module.scss │ │ └── index.tsx │ ├── search │ │ ├── articles.tsx │ │ ├── bounties.tsx │ │ ├── collections.tsx │ │ ├── images.tsx │ │ ├── models.tsx │ │ ├── tools.tsx │ │ └── users.tsx │ ├── shop │ │ └── index.tsx │ ├── sitemap-articles.xml │ │ └── index.tsx │ ├── sitemap-models.xml │ │ └── index.tsx │ ├── sitemap-questions.xml │ │ └── index.tsx │ ├── sitemap-tools.xml │ │ └── index.tsx │ ├── studio │ │ └── confirm.tsx │ ├── subscribe │ │ └── [plan].tsx │ ├── support │ │ └── index.tsx │ ├── tag │ │ ├── [tagname].module.scss │ │ └── [tagname].tsx │ ├── testing │ │ ├── clavata-test.tsx │ │ ├── demo.tsx │ │ ├── metadata-test.tsx │ │ └── testing-login.tsx │ ├── tipalti │ │ └── setup.tsx │ ├── tools │ │ ├── [slug].tsx │ │ └── index.tsx │ ├── user │ │ ├── [username] │ │ │ ├── [list].module.scss │ │ │ ├── [list].tsx │ │ │ ├── articles.tsx │ │ │ ├── collections.tsx │ │ │ ├── images.tsx │ │ │ ├── index.tsx │ │ │ ├── manage-categories.module.scss │ │ │ ├── manage-categories.tsx │ │ │ ├── models.module.scss │ │ │ ├── models.tsx │ │ │ ├── posts.tsx │ │ │ └── videos.tsx │ │ ├── account.tsx │ │ ├── buzz-dashboard.tsx │ │ ├── downloads.tsx │ │ ├── earn-potential.tsx │ │ ├── membership.module.css │ │ ├── membership.tsx │ │ ├── notifications.tsx │ │ ├── pool-estimate.tsx │ │ ├── stripe-connect │ │ │ └── onboard.tsx │ │ ├── transactions.tsx │ │ ├── vault.module.scss │ │ └── vault.tsx │ └── videos │ │ └── index.tsx ├── providers │ ├── ActivityReportingProvider.tsx │ ├── AppProvider.tsx │ ├── BrowserSettingsProvider.tsx │ ├── BrowsingSettingsAddonsProvider.tsx │ ├── CookiesProvider.tsx │ ├── CustomModalsProvider.tsx │ ├── FeatureFlagsProvider.tsx │ ├── FiltersProvider.tsx │ ├── GoogleAnalytics.tsx │ ├── IsClientProvider.tsx │ ├── PaddleProvider.tsx │ ├── PaypalProvider.tsx │ ├── StripeProvider.tsx │ └── ThemeProvider.tsx ├── server │ ├── clickhouse │ │ └── client.ts │ ├── cloudflare │ │ └── client.ts │ ├── coinbase │ │ ├── coinbase-api.ts │ │ ├── coinbase.ts │ │ └── onramp.ts │ ├── common │ │ ├── constants.ts │ │ ├── enums.ts │ │ ├── model-helpers.ts │ │ ├── moderation-helpers.ts │ │ └── user-helpers.ts │ ├── controllers │ │ ├── account.controller.ts │ │ ├── announcement.controller.ts │ │ ├── answer.controller.ts │ │ ├── api-key.controller.ts │ │ ├── article.controller.ts │ │ ├── bounty.controller.ts │ │ ├── bountyEntry.controller.ts │ │ ├── buzz-withdrawal-request.controller.ts │ │ ├── buzz.controller.ts │ │ ├── chat.controller.ts │ │ ├── club.controller.ts │ │ ├── clubAdmin.controller.ts │ │ ├── clubMembership.controller.ts │ │ ├── clubPost.controller.ts │ │ ├── coinbase.controller.ts │ │ ├── collection.controller.ts │ │ ├── comment.controller.ts │ │ ├── commentv2.controller.ts │ │ ├── common.controller.ts │ │ ├── csam.controller.ts │ │ ├── download.controller.ts │ │ ├── home-block.controller.ts │ │ ├── image.controller.ts │ │ ├── model-file.controller.ts │ │ ├── model-version.controller.ts │ │ ├── model.controller.ts │ │ ├── notification.controller.ts │ │ ├── nowpayments.controller.ts │ │ ├── orchestrator.controller.ts │ │ ├── paddle.controller.ts │ │ ├── paypal.controller.ts │ │ ├── post.controller.ts │ │ ├── question.controller.ts │ │ ├── reaction.controller.ts │ │ ├── recommenders.controller.ts │ │ ├── report.controller.ts │ │ ├── resourceReview.controller.ts │ │ ├── signals.controller.ts │ │ ├── stripe.controller.ts │ │ ├── subscriptions.controller.ts │ │ ├── tag.controller.ts │ │ ├── training.controller.ts │ │ ├── user-link.controller.ts │ │ ├── user-payment-configuration.controller.ts │ │ ├── user-profile.controller.ts │ │ ├── user-referral-code.controller.ts │ │ └── user.controller.ts │ ├── createContext.ts │ ├── db │ │ ├── client.ts │ │ ├── db-helpers.ts │ │ ├── db-lag-helpers.ts │ │ ├── notifDb.ts │ │ └── pgDb.ts │ ├── email │ │ ├── client.ts │ │ └── templates │ │ │ ├── base.email.ts │ │ │ ├── bounties │ │ │ ├── bountyAutomaticallyAwarded.email.ts │ │ │ ├── bountyExpired.email.ts │ │ │ ├── bountyExpiredReminder.email.ts │ │ │ └── bountyRefunded.email.ts │ │ │ ├── index.ts │ │ │ ├── paddleCancellation.email.ts │ │ │ ├── subscriptionRenewalReminder.email.ts │ │ │ ├── trainingComplete.email.ts │ │ │ ├── trainingFail.email.ts │ │ │ ├── util.ts │ │ │ └── verification.email.ts │ ├── events │ │ ├── base.event.ts │ │ ├── holiday2023.event.ts │ │ ├── holiday2024.event.ts │ │ └── index.ts │ ├── games │ │ ├── daily-challenge │ │ │ ├── daily-challenge.utils.ts │ │ │ └── generative-content.ts │ │ └── new-order │ │ │ └── utils.ts │ ├── http │ │ ├── coinbase │ │ │ ├── coinbase.caller.ts │ │ │ └── coinbase.schema.ts │ │ ├── httpCaller.ts │ │ ├── ncmec │ │ │ ├── ncmec.caller.ts │ │ │ └── ncmec.schema.ts │ │ ├── nowpayments │ │ │ ├── nowpayments.caller.ts │ │ │ └── nowpayments.schema.ts │ │ ├── orchestrator │ │ │ ├── orchestrator.caller.ts │ │ │ └── orchestrator.types.ts │ │ ├── recommenders │ │ │ └── recommenders.caller.ts │ │ └── tipalti │ │ │ ├── tipalti.caller.ts │ │ │ └── tipalti.schema.ts │ ├── importers │ │ ├── huggingFaceAuthor.ts │ │ ├── huggingFaceModel.ts │ │ ├── importRouter.ts │ │ └── importer.ts │ ├── integrations │ │ ├── beehiiv.ts │ │ ├── clavata.ts │ │ ├── discord.ts │ │ ├── featurebase.ts │ │ ├── freshdesk.ts │ │ ├── integration-token.ts │ │ └── moderation.ts │ ├── jobs │ │ ├── add-on-demand-run-strategies.ts │ │ ├── apply-contest-tags.ts │ │ ├── apply-discord-roles.ts │ │ ├── apply-nsfw-baseline.ts │ │ ├── apply-tag-rules.ts │ │ ├── apply-voted-tags.ts │ │ ├── cache-cleanup.ts │ │ ├── check-processing-resource-training-v2.ts │ │ ├── clean-image-resources.ts │ │ ├── clear-vault-items.ts │ │ ├── collection-contest-vimeo-upload.ts │ │ ├── collection-contest-youtube-upload.ts │ │ ├── collection-game-processing.ts │ │ ├── collection-item-random-id.ts │ │ ├── collection-mode-end.ts │ │ ├── confirm-image-existence.ts │ │ ├── confirm-mutes.ts │ │ ├── count-review-images.ts │ │ ├── creators-program-jobs.ts │ │ ├── crypto.ts │ │ ├── daily-challenge-processing.ts │ │ ├── delete-old-training-data.ts │ │ ├── deliver-annual-sub-buzz.ts │ │ ├── deliver-creator-compensation.ts │ │ ├── deliver-leaderboard-cosmetics.ts │ │ ├── deliver-purchased-cosmetics.ts │ │ ├── dummy-job.ts │ │ ├── entity-moderation.ts │ │ ├── event-engine-work.ts │ │ ├── full-image-existence.ts │ │ ├── handle-auctions.ts │ │ ├── image-ingestion.ts │ │ ├── images-created-events.ts │ │ ├── job-queue.ts │ │ ├── job.ts │ │ ├── new-order-jobs.ts │ │ ├── next-auth-cleanup.ts │ │ ├── prepare-bounties.ts │ │ ├── prepare-leaderboard.ts │ │ ├── process-club-membership-recurring-payments.ts │ │ ├── process-creator-program-image-generation-rewards.ts │ │ ├── process-csam.ts │ │ ├── process-ending-early-access.ts │ │ ├── process-imports.ts │ │ ├── process-rewards.ts │ │ ├── process-scheduled-publishing.ts │ │ ├── process-subscriptions-requiring-renewal.ts │ │ ├── process-vault-items.ts │ │ ├── push-discord-metadata.ts │ │ ├── refresh-auction-cache.ts │ │ ├── remove-old-drafts.ts │ │ ├── reset-image-view-counts.ts │ │ ├── reset-to-draft-without-requirements.ts │ │ ├── resource-generation-availability.ts │ │ ├── retroactive-hash-blocking.ts │ │ ├── rewards-abuse-prevention.ts │ │ ├── rewards-ad-impressions.ts │ │ ├── scan-files.ts │ │ ├── search-index-sync.ts │ │ ├── send-collection-notifications.ts │ │ ├── send-notifications.ts │ │ ├── send-webhooks.ts │ │ ├── temp-set-missing-nsfw-level.ts │ │ ├── update-metrics.ts │ │ ├── update-model-version-nsfw-levels.ts │ │ ├── update-user-score.ts │ │ └── user-deleted-cleanup.ts │ ├── logging │ │ └── client.ts │ ├── meilisearch │ │ ├── client.ts │ │ └── util.ts │ ├── metrics │ │ ├── answer.metrics.ts │ │ ├── article.metrics.ts │ │ ├── base.metrics.ts │ │ ├── bounty.metrics.ts │ │ ├── bountyEntry.metrics.ts │ │ ├── club.metrics.ts │ │ ├── clubPost.metrics.ts │ │ ├── collection.metrics.ts │ │ ├── image.metrics.ts │ │ ├── index.ts │ │ ├── metric-helpers.ts │ │ ├── model.metrics.ts │ │ ├── post.metrics.ts │ │ ├── question.metrics.ts │ │ ├── tag.metrics.ts │ │ └── user.metrics.ts │ ├── middleware.trpc.ts │ ├── middleware │ │ ├── api-cache.middleware.ts │ │ ├── index.ts │ │ ├── middleware-utils.ts │ │ ├── redirects.middleware.ts │ │ └── route-guards.middleware.ts │ ├── notifications │ │ ├── article.notifications.ts │ │ ├── auction.notifications.ts │ │ ├── base.notifications.ts │ │ ├── bounty.notifications.ts │ │ ├── buzz.notifications.ts │ │ ├── challenge.notifications.ts │ │ ├── club.notifications.ts │ │ ├── collection.notifications.ts │ │ ├── comment.notifications.ts │ │ ├── cosmetic-shop.notifications.ts │ │ ├── creators-program.notifications.ts │ │ ├── detail-fetchers │ │ │ ├── article.detail-fetcher.ts │ │ │ ├── base.detail-fetcher.ts │ │ │ ├── buzz.detail-fetcher.ts │ │ │ ├── comment.detail-fetcher.ts │ │ │ ├── follow.detail-fetcher.ts │ │ │ ├── index.ts │ │ │ ├── model.detail-fetcher.ts │ │ │ └── review.detail-fetcher.ts │ │ ├── featured.notifications.ts │ │ ├── follow.notifications.ts │ │ ├── image.notifications.ts │ │ ├── mention.notifications.ts │ │ ├── model.notifications.ts │ │ ├── new-order.notifications.ts │ │ ├── notification-cache.ts │ │ ├── reaction.notifications.ts │ │ ├── report.notifications.ts │ │ ├── review.notifications.ts │ │ ├── system.notifications.ts │ │ ├── unpublish.notifications.ts │ │ ├── user-journey.notifications.ts │ │ └── utils.notifications.ts │ ├── orchestrator │ │ ├── generation │ │ │ ├── generation.config.ts │ │ │ └── generation.schema.ts │ │ ├── haiper │ │ │ └── haiper.schema.ts │ │ ├── hunyuan │ │ │ └── hunyuan.schema.ts │ │ ├── infrastructure │ │ │ ├── GenerationConfig.ts │ │ │ ├── OrchestratorSchema.ts │ │ │ ├── base.enums.ts │ │ │ ├── base.schema.ts │ │ │ └── base.utils.ts │ │ ├── kling │ │ │ └── kling.schema.ts │ │ ├── lightricks │ │ │ └── lightricks.schema.ts │ │ ├── minimax │ │ │ └── minimax.schema.ts │ │ ├── mochi │ │ │ └── mochi.schema.ts │ │ ├── veo3 │ │ │ └── veo3.schema.ts │ │ ├── video-enhancement │ │ │ ├── video-enhancement.schema.ts │ │ │ └── video-enhancement.ts │ │ ├── vidu │ │ │ └── vidu.schema.ts │ │ └── wan │ │ │ └── wan.schema.ts │ ├── paddle │ │ └── client.ts │ ├── prom │ │ └── client.ts │ ├── recaptcha │ │ └── client.ts │ ├── redis │ │ ├── caches.ts │ │ ├── client.ts │ │ └── queues.ts │ ├── rewards │ │ ├── active │ │ │ ├── adWatched.reward.ts │ │ │ ├── dailyBoost.reward.ts │ │ │ ├── encouragement.reward.ts │ │ │ ├── firstDailyFollow.reward.ts │ │ │ ├── firstDailyPost.reward.ts │ │ │ ├── generatorFeedback.reward.ts │ │ │ ├── refereeCreated.reward.ts │ │ │ └── userReferred.reward.ts │ │ ├── base.reward.ts │ │ ├── buzz-events-cache.ts │ │ ├── index.ts │ │ └── passive │ │ │ ├── collectedContent.reward.ts │ │ │ ├── goodContent.reward.ts │ │ │ ├── imagePostedToModel.reward.ts │ │ │ └── reportAccepted.reward.ts │ ├── routers │ │ ├── account.router.ts │ │ ├── announcement.router.ts │ │ ├── answer.router.ts │ │ ├── apiKey.router.ts │ │ ├── article.router.ts │ │ ├── auction.router.ts │ │ ├── auth.router.ts │ │ ├── base.router.ts │ │ ├── blocklist.router.ts │ │ ├── bounty.router.ts │ │ ├── bountyEntry.router.ts │ │ ├── build-guide.router.ts │ │ ├── buzz-withdrawal-request.router.ts │ │ ├── buzz.router.ts │ │ ├── changelog.router.ts │ │ ├── chat.router.ts │ │ ├── club.router.ts │ │ ├── clubAdmin.router.ts │ │ ├── clubMembership.router.ts │ │ ├── clubPost.router.ts │ │ ├── coinbase.router.ts │ │ ├── collection.router.ts │ │ ├── comment.router.ts │ │ ├── commentv2.router.ts │ │ ├── common.router.ts │ │ ├── content.router.ts │ │ ├── cosmetic-shop.router.ts │ │ ├── cosmetic.router.ts │ │ ├── creator-program.router.ts │ │ ├── csam.router.ts │ │ ├── daily-challenge.router.ts │ │ ├── donation-goal.router.ts │ │ ├── download.router.ts │ │ ├── entity-collaborator.router.ts │ │ ├── event.router.ts │ │ ├── games.router.ts │ │ ├── generation.router.ts │ │ ├── hidden-preferences.router.ts │ │ ├── home-block.router.ts │ │ ├── image.router.ts │ │ ├── index.ts │ │ ├── integration.router.ts │ │ ├── leaderboard.router.ts │ │ ├── model-file.router.ts │ │ ├── model-version.router.ts │ │ ├── model.router.ts │ │ ├── moderator │ │ │ └── index.ts │ │ ├── newsletter.router.ts │ │ ├── notification.router.ts │ │ ├── nowpayments.router.ts │ │ ├── orchestrator.router.ts │ │ ├── paddle.router.ts │ │ ├── partner.router.ts │ │ ├── paypal.router.ts │ │ ├── post.router.ts │ │ ├── purchasable-reward.router.ts │ │ ├── question.router.ts │ │ ├── reaction.router.ts │ │ ├── recommenders.router.ts │ │ ├── redeemableCode.router.ts │ │ ├── report.router.ts │ │ ├── research.router.ts │ │ ├── resourceReview.router.ts │ │ ├── signals.router.ts │ │ ├── stripe.router.ts │ │ ├── subscriptions.router.ts │ │ ├── system.router.ts │ │ ├── tag.router.ts │ │ ├── technique.router.ts │ │ ├── tool.router.ts │ │ ├── track.router.ts │ │ ├── training.router.ts │ │ ├── user-link.router.ts │ │ ├── user-payment-configuration.router.ts │ │ ├── user-profile.router.ts │ │ ├── user-referral-code.router.ts │ │ ├── user.router.ts │ │ ├── vault.router.ts │ │ └── vimeo.router.ts │ ├── schema │ │ ├── announcement.schema.ts │ │ ├── answer.schema.ts │ │ ├── api-key.schema.ts │ │ ├── article.schema.ts │ │ ├── auction.schema.ts │ │ ├── base.schema.ts │ │ ├── blocklist.schema.ts │ │ ├── bounty-entry.schema.ts │ │ ├── bounty.schema.ts │ │ ├── build-guide.schema.ts │ │ ├── buzz-withdrawal-request.schema.ts │ │ ├── buzz.schema.ts │ │ ├── changelog.schema.ts │ │ ├── chat.schema.ts │ │ ├── civToken.schema.ts │ │ ├── club.schema.ts │ │ ├── clubAdmin.schema.ts │ │ ├── clubMembership.schema.ts │ │ ├── coinbase.schema.ts │ │ ├── collection.schema.ts │ │ ├── comment.schema.ts │ │ ├── commentv2.schema.ts │ │ ├── cosmetic-shop.schema.ts │ │ ├── cosmetic.schema.ts │ │ ├── creator-program.schema.ts │ │ ├── csam.schema.ts │ │ ├── donation-goal.schema.ts │ │ ├── download.schema.ts │ │ ├── entity-collaborator.schema.ts │ │ ├── event.schema.ts │ │ ├── file.schema.ts │ │ ├── games │ │ │ └── new-order.schema.ts │ │ ├── generation.schema.ts │ │ ├── home-block.schema.ts │ │ ├── image.schema.ts │ │ ├── integration.schema.ts │ │ ├── leaderboard.schema.ts │ │ ├── media.schema.ts │ │ ├── model-file.schema.ts │ │ ├── model-flag.schema.ts │ │ ├── model-version.schema.ts │ │ ├── model.schema.ts │ │ ├── newsletter.schema.ts │ │ ├── notification.schema.ts │ │ ├── nowpayments.schema.ts │ │ ├── orchestrator │ │ │ ├── models.schema.ts │ │ │ ├── textToImage.schema.ts │ │ │ ├── training.schema.ts │ │ │ └── workflows.schema.ts │ │ ├── paddle.schema.ts │ │ ├── paypal.schema.ts │ │ ├── post.schema.ts │ │ ├── purchasable-reward.schema.ts │ │ ├── question.schema.ts │ │ ├── reaction.schema.ts │ │ ├── recommenders.schema.ts │ │ ├── redeemableCode.schema.ts │ │ ├── report.schema.ts │ │ ├── resourceReview.schema.ts │ │ ├── signals.schema.ts │ │ ├── stripe.schema.ts │ │ ├── subscriptions.schema.ts │ │ ├── tag.schema.ts │ │ ├── tool.schema.ts │ │ ├── track.schema.ts │ │ ├── training.schema.ts │ │ ├── user-link.schema.ts │ │ ├── user-payment-configuration.schema.ts │ │ ├── user-preferences.schema.ts │ │ ├── user-profile.schema.ts │ │ ├── user-referral-code.schema.ts │ │ ├── user.schema.ts │ │ ├── utils.schema.ts │ │ └── vault.schema.ts │ ├── search-index │ │ ├── SearchIndexUpdate.ts │ │ ├── articles.search-index.ts │ │ ├── base.search-index.ts │ │ ├── bounties.search-index.ts │ │ ├── collections.search-index.ts │ │ ├── images.search-index.ts │ │ ├── index.ts │ │ ├── metrics-images--update-metrics.search-index.ts │ │ ├── metrics-images.search-index.ts │ │ ├── models.search-index.ts │ │ ├── tools.search-index.ts │ │ ├── users.search-index.ts │ │ └── utils │ │ │ └── taskQueue.ts │ ├── selectors │ │ ├── article.selector.ts │ │ ├── bounty.selector.ts │ │ ├── buzzWithdrawalRequest.select.ts │ │ ├── chat.selector.ts │ │ ├── club.selector.ts │ │ ├── collection.selector.ts │ │ ├── comment.selector.ts │ │ ├── commentv2.selector.ts │ │ ├── cosmetic-shop.selector.ts │ │ ├── cosmetic.selector.ts │ │ ├── generation.selector.ts │ │ ├── image.selector.ts │ │ ├── imagev2.selector.ts │ │ ├── model.selector.ts │ │ ├── modelFile.selector.ts │ │ ├── modelHash.selector.ts │ │ ├── modelVersion.selector.ts │ │ ├── post.selector.ts │ │ ├── purchasableReward.selector.ts │ │ ├── reaction.selector.ts │ │ ├── resourceReview.selector.ts │ │ ├── tag.selector.ts │ │ └── user.selector.ts │ ├── services │ │ ├── account.service.ts │ │ ├── ai │ │ │ └── openai.ts │ │ ├── announcement.service.ts │ │ ├── answer.service.ts │ │ ├── api-key.service.ts │ │ ├── article.service.ts │ │ ├── auction.service.ts │ │ ├── blocklist.service.ts │ │ ├── bounty.service.ts │ │ ├── bountyBenefactor.service.ts │ │ ├── bountyEntry.service.ts │ │ ├── build-guide.services.ts │ │ ├── buzz-withdrawal-request.service.ts │ │ ├── buzz.service.ts │ │ ├── changelog.service.ts │ │ ├── chat.service.ts │ │ ├── club.service.ts │ │ ├── clubAdmin.service.ts │ │ ├── clubMembership.service.ts │ │ ├── clubPost.service.ts │ │ ├── coinbase.service.ts │ │ ├── collection.service.ts │ │ ├── comment.service.ts │ │ ├── commentsv2.service.ts │ │ ├── common.service.ts │ │ ├── content.service.ts │ │ ├── cosmetic-shop.service.ts │ │ ├── cosmetic.service.ts │ │ ├── creator-program.service.ts │ │ ├── csam.service.ts │ │ ├── daily-challenge.service.ts │ │ ├── donation-goal.service.ts │ │ ├── download.service.ts │ │ ├── entity-collaborator.service.ts │ │ ├── event.service.ts │ │ ├── feature-flags.service.ts │ │ ├── file.service.ts │ │ ├── games │ │ │ └── new-order.service.ts │ │ ├── generation │ │ │ ├── engines.ts │ │ │ └── generation.service.ts │ │ ├── home-block-cache.service.ts │ │ ├── home-block.service.ts │ │ ├── image-flag.service.ts │ │ ├── image-review.service.ts │ │ ├── image.service.ts │ │ ├── integration.service.ts │ │ ├── job-queue.service.ts │ │ ├── leaderboard.service.ts │ │ ├── model-file.service.ts │ │ ├── model-flag.service.ts │ │ ├── model-version.service.ts │ │ ├── model.service.ts │ │ ├── moderator.service.ts │ │ ├── newsletter.service.ts │ │ ├── notification.service.ts │ │ ├── nowpayments.service.ts │ │ ├── nsfwLevels.service.ts │ │ ├── orchestrator │ │ │ ├── blob.ts │ │ │ ├── comfy │ │ │ │ ├── comfy.ts │ │ │ │ ├── comfy.types.ts │ │ │ │ └── comfy.utils.ts │ │ │ ├── common.ts │ │ │ ├── experimental.ts │ │ │ ├── imageGen │ │ │ │ └── imageGen.ts │ │ │ ├── imageUpload.ts │ │ │ ├── index.ts │ │ │ ├── models.ts │ │ │ ├── orchestrator.schema.ts │ │ │ ├── orchestrator.service.ts │ │ │ ├── textToImage │ │ │ │ └── textToImage.ts │ │ │ ├── training │ │ │ │ └── training.orch.ts │ │ │ ├── types.ts │ │ │ ├── videoEnhancement.ts │ │ │ ├── workflowSteps.ts │ │ │ └── workflows.ts │ │ ├── paddle.service.ts │ │ ├── partner.service.ts │ │ ├── paypal.service.ts │ │ ├── post.service.ts │ │ ├── purchasable-reward.service.ts │ │ ├── question.service.ts │ │ ├── reaction.service.ts │ │ ├── recommenders.service.ts │ │ ├── redeemableCode.service.ts │ │ ├── report.service.ts │ │ ├── resource-override.service.ts │ │ ├── resourceReview.service.ts │ │ ├── signals.service.ts │ │ ├── stripe.service.ts │ │ ├── subscriptions.service.ts │ │ ├── system-cache.ts │ │ ├── tag.service.ts │ │ ├── tagsOnImageNew.service.ts │ │ ├── technique.service.ts │ │ ├── tool.service.ts │ │ ├── training.service.ts │ │ ├── user-cache.service.ts │ │ ├── user-link.service.ts │ │ ├── user-payment-configuration.service.ts │ │ ├── user-preferences.service.ts │ │ ├── user-profile.service.ts │ │ ├── user-referral-code.service.ts │ │ ├── user.service.ts │ │ ├── util.service.ts │ │ └── vault.service.ts │ ├── trpc.ts │ ├── utils │ │ ├── audio-utils.ts │ │ ├── buzz-helpers.ts │ │ ├── cache-helpers.ts │ │ ├── chat.ts │ │ ├── concurrency-helpers.ts │ │ ├── cookie-encryption.ts │ │ ├── creator-program.utils.ts │ │ ├── early-access-helpers.ts │ │ ├── email-domain-blocklist.json │ │ ├── endpoint-helpers.ts │ │ ├── enum-helpers.ts │ │ ├── errorHandling.ts │ │ ├── fingerprint.ts │ │ ├── game-helpers.ts │ │ ├── get-server-auth-session.ts │ │ ├── get-server-stripe.ts │ │ ├── key-generator.ts │ │ ├── link-blocklist.ts │ │ ├── metric-helpers.ts │ │ ├── mod-rules.ts │ │ ├── model-helpers.ts │ │ ├── pagination-helpers.ts │ │ ├── pdf-helpers.tsx │ │ ├── rate-limiting.ts │ │ ├── react-templates │ │ │ ├── ModelVersionDetailsPdfTemplate.tsx │ │ │ └── fonts │ │ │ │ ├── Montserrat-Bold.ttf │ │ │ │ └── Montserrat-Regular.ttf │ │ ├── request-helpers.ts │ │ ├── research-utils.ts │ │ ├── server-side-helpers.ts │ │ ├── session-helpers.ts │ │ ├── tag-rules.ts │ │ └── url-helpers.ts │ ├── vimeo │ │ └── client.ts │ ├── webhooks │ │ ├── article.webhooks.ts │ │ ├── base.webhooks.ts │ │ ├── bounty.webhooks.ts │ │ ├── daily-challenge.webhooks.ts │ │ ├── model.webooks.ts │ │ ├── moderator.webhooks.ts │ │ ├── research.webhooks.ts │ │ ├── training-moderation.webhooks.ts │ │ └── utils.webhooks.ts │ └── youtube │ │ └── client.ts ├── shared │ ├── constants │ │ ├── browsingLevel.constants.ts │ │ ├── creator-program.constants.ts │ │ ├── generation.constants.ts │ │ └── mime-types.ts │ ├── orchestrator │ │ ├── ImageGen │ │ │ ├── ImageGenConfig.ts │ │ │ ├── flux1-kontext.config.ts │ │ │ ├── google.config.ts │ │ │ ├── imageGen.config.ts │ │ │ └── openai.config.ts │ │ └── hidream.config.ts │ ├── types │ │ ├── generation.types.ts │ │ └── image.types.ts │ └── utils │ │ ├── cookies.ts │ │ ├── flags.ts │ │ ├── index.ts │ │ ├── md5.ts │ │ └── prisma │ │ ├── enums.ts │ │ └── models.ts ├── static-content │ ├── 2257.md │ ├── art-and-ai.md │ ├── buzz │ │ └── terms.md │ ├── careers.md │ ├── careers │ │ └── dev-ops.md │ ├── clubs.md │ ├── content-appeal.md │ ├── creator-program-v2-tos.md │ ├── creators-program-coc.md │ ├── dmca-counter-notice.md │ ├── dmca-notice.md │ ├── dmca.md │ ├── feature-introduction │ │ ├── article-create.md │ │ ├── bounty-create.md │ │ ├── bounty-submit-entry.md │ │ ├── clubs.md │ │ ├── image-generator.md │ │ ├── model-training.md │ │ ├── model-upload.md │ │ ├── post-images.md │ │ ├── stripe-connect.md │ │ └── welcome.md │ ├── guides │ │ ├── getting-started.md │ │ └── what-is-civitai.md │ ├── interviews │ │ ├── marcos-2022-12-22.md │ │ └── tyler-2023-01-12.md │ ├── licenses │ │ ├── CreativeML Open RAIL++-M.md │ │ └── CreativeML Open RAIL-M.md │ ├── likeness-claim-request.md │ ├── moderation.md │ ├── press-inquiry.md │ ├── privacy.md │ ├── prompt-image-review.md │ ├── rules │ │ ├── minors.md │ │ └── real-people.md │ ├── tos.md │ └── training │ │ ├── data-policy.md │ │ └── dataset-guidelines.md ├── store │ ├── ClientHistoryStore.tsx │ ├── catch-navigation.store.ts │ ├── cf-upload.store.ts │ ├── file-upload.store.ts │ ├── generation.store.ts │ ├── image.store.ts │ ├── model-version.store.ts │ ├── post-image-transmitter.store.ts │ ├── s3-upload.store.ts │ ├── scheduler-download.store.ts │ ├── select.store.ts │ ├── tip.store.ts │ └── training.store.ts ├── styles │ ├── globals.css │ ├── utils.module.scss │ └── utils.module.scss.d.ts ├── tailwind │ └── container-queries.ts ├── types │ ├── global.d.ts │ ├── next-auth.d.ts │ ├── router.ts │ ├── tour.ts │ └── type-guards.d.ts ├── utils │ ├── allowed-third-party-urls.json │ ├── array-helpers.ts │ ├── aspect-ratio-helpers.ts │ ├── blocklist-username.json │ ├── blurhash.ts │ ├── boolean-helpers.ts │ ├── buzz.ts │ ├── callback-helpers.ts │ ├── cf-images-utils.ts │ ├── clubs.ts │ ├── cookies-helpers.ts │ ├── create-safe-context.tsx │ ├── date-helpers.ts │ ├── debouncer.ts │ ├── deferred.ts │ ├── delivery-worker.ts │ ├── detect-os.ts │ ├── device-helpers.js │ ├── domain-link.ts │ ├── encoding-helpers.ts │ ├── errorHandling.ts │ ├── eventEmitter.ts │ ├── exponentialBackoff.ts │ ├── fetch-link-releases.ts │ ├── file-helpers.ts │ ├── file-upload │ │ ├── file-upload.ts │ │ └── multipartUpload.ts │ ├── file-utils.ts │ ├── fs-helpers.ts │ ├── get-client-stripe.ts │ ├── html-helpers.ts │ ├── humanizer.ts │ ├── image-utils.ts │ ├── join-helpers.ts │ ├── json-helpers.ts │ ├── lazy-motion.ts │ ├── lazy.ts │ ├── logging.ts │ ├── login-helpers.ts │ ├── lotties │ │ ├── level-up-animation.json │ │ ├── link-animation.json │ │ ├── rank-up-animation.json │ │ └── success-animation.json │ ├── mantine-css-helpers.ts │ ├── map-helpers.ts │ ├── markdown-helpers.ts │ ├── media-preprocessors │ │ ├── image.preprocessor.ts │ │ ├── index.ts │ │ └── video.preprocessor.ts │ ├── metadata │ │ ├── audit.ts │ │ ├── automatic.metadata.ts │ │ ├── base.metadata.ts │ │ ├── comfy.metadata.ts │ │ ├── index.ts │ │ ├── lists │ │ │ ├── blocklist-nsfw.json │ │ │ ├── blocklist.json │ │ │ ├── prompt-tags.json │ │ │ ├── words-nsfw-prompt.json │ │ │ ├── words-nsfw-soft.json │ │ │ ├── words-nsfw.json │ │ │ ├── words-paddle-nsfw.json │ │ │ ├── words-poi.json │ │ │ └── words-young.json │ │ ├── rfooocus.metadata.ts │ │ └── swarmui.metadata.ts │ ├── moderators │ │ └── moderator.util.ts │ ├── normalize-text.ts │ ├── notifications.tsx │ ├── number-helpers.ts │ ├── object-helpers.ts │ ├── prompt-helpers.ts │ ├── prompt-similarity.ts │ ├── qs.ts │ ├── query-string-helpers.ts │ ├── queue.ts │ ├── random.ts │ ├── s3-client.ts │ ├── s3-utils.ts │ ├── schema-helpers.ts │ ├── shop │ │ ├── civitai-merch-products.json │ │ └── project-odyssey-products.json │ ├── signal-client.ts │ ├── signals │ │ ├── types.ts │ │ ├── useSignalsWorker.ts │ │ ├── utils.ts │ │ └── worker.ts │ ├── string-helpers.ts │ ├── tailwind.ts │ ├── taskBatcher.ts │ ├── training.ts │ ├── trpc.ts │ ├── type-guards.ts │ ├── user-helpers.ts │ ├── vault.ts │ └── zod-helpers.ts └── workers │ ├── civitai-link-worker-types.ts │ └── civitai-link.worker.ts ├── tailwind.config.js ├── tests ├── auction.spec.ts ├── auth.setup.ts ├── auth │ └── data.ts ├── example.spec.ts ├── generation.spec.ts ├── readme.txt ├── responses │ ├── getImageWhatIf.ts │ └── queryGeneratedImages.ts └── utils.ts └── tsconfig.json /.dockerignore: -------------------------------------------------------------------------------- 1 | Dockerfile 2 | README.md 3 | LICENSE 4 | docker-compose.yml 5 | node_modules 6 | nginx 7 | .git 8 | .gitignore 9 | .next 10 | .dockerignore -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | indent_size = 2 5 | indent_style = space 6 | end_of_line = lf 7 | insert_final_newline = true 8 | 9 | [*.{md,txt}] 10 | indent_size = 4 11 | 12 | [Makefile] 13 | indent_style = tab -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | *.js 2 | *.mjs 3 | /dist 4 | /node_modules 5 | /src/shared/utils/prisma 6 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto eol=lf -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | 2 | #branch="$(git rev-parse --abbrev-ref HEAD)" 3 | #if [ "$branch" != "main" ]; then 4 | # exit 0 5 | #fi 6 | 7 | # NOTE: apparently tsc-files just doesn't work on windows. at all. 8 | 9 | #echo "Running typecheck for staged files" 10 | # 11 | #npx lint-staged 12 | # 13 | #echo "Typecheck successful" 14 | -------------------------------------------------------------------------------- /.nvmrc: -------------------------------------------------------------------------------- 1 | 20.13 2 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "trailingComma": "es5", 3 | "tabWidth": 2, 4 | "printWidth": 100, 5 | "singleQuote": true 6 | } -------------------------------------------------------------------------------- /.vscode/keybindings.json: -------------------------------------------------------------------------------- 1 | // Place your key bindings in this file to override the defaultsauto[] 2 | [ 3 | { 4 | "key": "shift+alt+ctrl+/", 5 | "command": "editor.action.insertSnippet", 6 | "when": "editorTextFocus", 7 | "args": { 8 | "name": "region_wrap" 9 | } 10 | } 11 | ] 12 | -------------------------------------------------------------------------------- /.vscode/snippets.code-snippets: -------------------------------------------------------------------------------- 1 | { 2 | "region_wrap": { 3 | "scope": "javascript,typescript,html,typescriptreact,javascriptreact,react", 4 | "prefix": "region", 5 | "body": ["$LINE_COMMENT #region [${1}]", "$TM_SELECTED_TEXT", "$LINE_COMMENT #endregion", ""], 6 | "description": "Wrap your selected block with a region" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /containers/clickhouse/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM clickhouse/clickhouse-server:24.8.4 2 | COPY ./docker-init/* /docker-entrypoint-initdb.d/ 3 | RUN chmod a+r /docker-entrypoint-initdb.d/* 4 | 5 | -------------------------------------------------------------------------------- /containers/db/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM postgres:17 2 | COPY ./docker-init/*.sql /docker-entrypoint-initdb.d/ 3 | RUN chmod a+r /docker-entrypoint-initdb.d/* 4 | -------------------------------------------------------------------------------- /containers/db/docker-init/01_pg_analyze.sql: -------------------------------------------------------------------------------- 1 | CREATE USER pganalyze WITH PASSWORD 'pganalyze' CONNECTION LIMIT 5; 2 | GRANT pg_monitor TO pganalyze; 3 | 4 | CREATE SCHEMA pganalyze; 5 | GRANT USAGE ON SCHEMA pganalyze TO pganalyze; 6 | GRANT USAGE ON SCHEMA public TO pganalyze; -------------------------------------------------------------------------------- /containers/image-stub/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:20-bookworm 2 | 3 | # Set working directory 4 | WORKDIR /usr/src/app 5 | 6 | # Copy package.json and install dependencies 7 | COPY package*.json ./ 8 | RUN npm install 9 | 10 | # Copy the rest of the application code 11 | COPY . . 12 | 13 | # Expose the port the server will run on 14 | EXPOSE 3000 15 | 16 | # Run the app 17 | CMD ["node", "index.mjs"] 18 | -------------------------------------------------------------------------------- /containers/image-stub/images/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/containers/image-stub/images/1.jpg -------------------------------------------------------------------------------- /containers/image-stub/images/2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/containers/image-stub/images/2.jpg -------------------------------------------------------------------------------- /containers/image-stub/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "image-stub", 3 | "version": "1.0.0", 4 | "main": "index.mjs", 5 | "author": "Civitai", 6 | "license": "ISC", 7 | "description": "", 8 | "dependencies": { 9 | "sharp": "^0.33.5" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /containers/ngrok/docker-init/config.yaml: -------------------------------------------------------------------------------- 1 | version: 3 2 | agent: 3 | authtoken: 4 | endpoints: 5 | - name: civitai-app 6 | upstream: 7 | url: 8000 8 | protocol: http2 9 | -------------------------------------------------------------------------------- /containers/notification-db/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM postgres:15-bookworm 2 | COPY ./docker-init/*.sql /docker-entrypoint-initdb.d/ 3 | RUN chmod a+r /docker-entrypoint-initdb.d/* 4 | -------------------------------------------------------------------------------- /media/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/media/logo.png -------------------------------------------------------------------------------- /next-env.d.ts: -------------------------------------------------------------------------------- 1 | /// <reference types="next" /> 2 | /// <reference types="next/image-types/global" /> 3 | /// <reference types="next/navigation-types/compat/navigation" /> 4 | 5 | // NOTE: This file should not be edited 6 | // see https://nextjs.org/docs/app/building-your-application/configuring/typescript for more information. 7 | -------------------------------------------------------------------------------- /prisma/migrations/20221018215322_optional_model_desc/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "Model" ALTER COLUMN "description" DROP NOT NULL; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20221027230516_username_unique_case_insensitive/migration.sql: -------------------------------------------------------------------------------- 1 | CREATE EXTENSION IF NOT EXISTS citext; 2 | 3 | -- AlterTable 4 | ALTER TABLE 5 | "User" 6 | ALTER COLUMN 7 | "username" 8 | SET 9 | DATA TYPE CITEXT; -------------------------------------------------------------------------------- /prisma/migrations/20221101202142_anonymous_user_activities/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "UserActivity" ALTER COLUMN "userId" DROP NOT NULL; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20221101230538_add_training_data_download_tracking/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterEnum 2 | ALTER TYPE "UserActivityType" ADD VALUE 'TrainingDataDownload'; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20221103205440_add_moderator/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "User" ADD COLUMN "isModerator" BOOLEAN DEFAULT false; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20221103221020_user_tos/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "User" ADD COLUMN "tos" BOOLEAN DEFAULT false; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20221108160217_update_sizekb_tyoe_int_to_float/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "ModelVersion" ALTER COLUMN "sizeKB" SET DATA TYPE DOUBLE PRECISION; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20221110180604_trained_words_on_version/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "ModelVersion" ADD COLUMN "trainedWords" TEXT[]; 3 | 4 | -- Add Model Trained Words 5 | UPDATE "ModelVersion" 6 | SET "trainedWords" = "Model"."trainedWords" 7 | FROM "Model" 8 | WHERE "Model".id = "ModelVersion"."modelId"; 9 | 10 | -- AlterTable 11 | ALTER TABLE "Model" DROP COLUMN "trainedWords"; 12 | -------------------------------------------------------------------------------- /prisma/migrations/20221110222142_temp_verified_model/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "ModelVersion" ADD COLUMN "verificationMessage" TEXT, 3 | ADD COLUMN "verified" BOOLEAN NOT NULL DEFAULT false; 4 | -------------------------------------------------------------------------------- /prisma/migrations/20221112015716_scan_request_time/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "ModelFile" ADD COLUMN "scanRequestedAt" TIMESTAMP(3); 3 | -------------------------------------------------------------------------------- /prisma/migrations/20221114213528_image_meta/migration.sql: -------------------------------------------------------------------------------- 1 | /* 2 | Warnings: 3 | 4 | - You are about to drop the column `prompt` on the `Image` table. All the data in the column will be lost. 5 | 6 | */ 7 | -- AlterTable 8 | ALTER TABLE "Image" DROP COLUMN "prompt", 9 | ADD COLUMN "meta" JSONB; 10 | -------------------------------------------------------------------------------- /prisma/migrations/20221115210524_add_uniqueness_to_reactions/migration.sql: -------------------------------------------------------------------------------- 1 | /* 2 | Warnings: 3 | 4 | - A unique constraint covering the columns `[reviewId,userId,reaction]` on the table `ReviewReaction` will be added. If there are existing duplicate values, this will fail. 5 | 6 | */ 7 | -- CreateIndex 8 | CREATE UNIQUE INDEX "ReviewReaction_reviewId_userId_reaction_key" ON "ReviewReaction"("reviewId", "userId", "reaction"); 9 | -------------------------------------------------------------------------------- /prisma/migrations/20221116143356_import_children/migration.sql: -------------------------------------------------------------------------------- 1 | -- DropIndex 2 | DROP INDEX "ModelVersion_fromImportId_key"; 3 | 4 | -- AlterTable 5 | ALTER TABLE "Import" ADD COLUMN "importId" INTEGER, 6 | ADD COLUMN "parentId" INTEGER; 7 | 8 | -- AddForeignKey 9 | ALTER TABLE "Import" ADD CONSTRAINT "Import_parentId_fkey" FOREIGN KEY ("parentId") REFERENCES "Import"("id") ON DELETE SET NULL ON UPDATE CASCADE; 10 | -------------------------------------------------------------------------------- /prisma/migrations/20221202170057_model_file_format/migration.sql: -------------------------------------------------------------------------------- 1 | -- CreateEnum 2 | CREATE TYPE "ModelFileFormat" AS ENUM ('PickleTensor', 'SafeTensor'); 3 | 4 | -- AlterTable 5 | ALTER TABLE "ModelFile" ADD COLUMN "format" "ModelFileFormat"; 6 | 7 | UPDATE "ModelFile" SET "format" = 'PickleTensor' WHERE "type" = 'Model' -------------------------------------------------------------------------------- /prisma/migrations/20221202230223_user_link_index/migration.sql: -------------------------------------------------------------------------------- 1 | /* 2 | Warnings: 3 | 4 | - Added the required column `index` to the `UserLink` table without a default value. This is not possible if the table is not empty. 5 | 6 | */ 7 | -- AlterTable 8 | ALTER TABLE "UserLink" ADD COLUMN "index" INTEGER NOT NULL; 9 | -------------------------------------------------------------------------------- /prisma/migrations/20221203005905_remove_user_link_index/migration.sql: -------------------------------------------------------------------------------- 1 | /* 2 | Warnings: 3 | 4 | - You are about to drop the column `index` on the `UserLink` table. All the data in the column will be lost. 5 | 6 | */ 7 | -- AlterTable 8 | ALTER TABLE "UserLink" DROP COLUMN "index"; 9 | -------------------------------------------------------------------------------- /prisma/migrations/20221205213338_comment_table_update/migration.sql: -------------------------------------------------------------------------------- 1 | /* 2 | Warnings: 3 | 4 | - Made the column `modelId` on table `Comment` required. This step will fail if there are existing NULL values in that column. 5 | 6 | */ 7 | -- AlterTable 8 | ALTER TABLE "Comment" ALTER COLUMN "modelId" SET NOT NULL; 9 | -------------------------------------------------------------------------------- /prisma/migrations/20221207040459_add_logging/migration.sql: -------------------------------------------------------------------------------- 1 | -- CreateTable 2 | CREATE TABLE "Log" ( 3 | "id" TEXT NOT NULL, 4 | "event" TEXT NOT NULL, 5 | "details" JSONB, 6 | "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, 7 | 8 | CONSTRAINT "Log_pkey" PRIMARY KEY ("id") 9 | ); 10 | -------------------------------------------------------------------------------- /prisma/migrations/20221207202442_support_inaccurate_report/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "ModelVersion" ADD COLUMN "inaccurate" BOOLEAN NOT NULL DEFAULT false; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20221209162539_add_person_of_interest_toggle/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "Model" ADD COLUMN "poi" BOOLEAN NOT NULL DEFAULT false; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20221212045320_model_hash_report_support/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterEnum 2 | ALTER TYPE "UserActivityType" ADD VALUE 'HashReport'; 3 | 4 | -- AlterTable 5 | ALTER TABLE "Image" ADD COLUMN "tosViolation" BOOLEAN NOT NULL DEFAULT false; 6 | -------------------------------------------------------------------------------- /prisma/migrations/20221220211549_current_mviews/migration.sql: -------------------------------------------------------------------------------- 1 | -- This is an empty migration. 2 | CREATE UNIQUE INDEX mrank_model_id ON "ModelRank" ("modelId"); 3 | CREATE UNIQUE INDEX urank_user_id ON "UserRank" ("userId"); -------------------------------------------------------------------------------- /prisma/migrations/20221223175226_model_type_default/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "ModelFile" ALTER COLUMN "type" SET DEFAULT 'Model'; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20221223182642_tag_unique_with_target/migration.sql: -------------------------------------------------------------------------------- 1 | /* 2 | Warnings: 3 | 4 | - A unique constraint covering the columns `[name,target]` on the table `Tag` will be added. If there are existing duplicate values, this will fail. 5 | 6 | */ 7 | -- DropIndex 8 | DROP INDEX "Tag_name_key"; 9 | 10 | -- CreateIndex 11 | CREATE UNIQUE INDEX "Tag_name_target_key" ON "Tag"("name", "target"); 12 | -------------------------------------------------------------------------------- /prisma/migrations/20221226195245_optional_answer_vote_vote/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "AnswerVote" ALTER COLUMN "vote" DROP NOT NULL; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20221230234742_review_exclusion/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "Review" ADD COLUMN "exclude" BOOLEAN NOT NULL DEFAULT false; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20230105194139_remove_model_file_primary_field/migration.sql: -------------------------------------------------------------------------------- 1 | /* 2 | Warnings: 3 | 4 | - You are about to drop the column `primary` on the `ModelFile` table. All the data in the column will be lost. 5 | 6 | */ 7 | -- AlterTable 8 | ALTER TABLE "ModelFile" DROP COLUMN "primary"; 9 | -------------------------------------------------------------------------------- /prisma/migrations/20230110235012_image_analysis/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "Image" ADD COLUMN "analysis" JSONB; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20230111224629_cascade_model_hash/migration.sql: -------------------------------------------------------------------------------- 1 | -- DropForeignKey 2 | ALTER TABLE "ModelHash" DROP CONSTRAINT "ModelHash_fileId_fkey"; 3 | 4 | -- AddForeignKey 5 | ALTER TABLE "ModelHash" ADD CONSTRAINT "ModelHash_fileId_fkey" FOREIGN KEY ("fileId") REFERENCES "ModelFile"("id") ON DELETE CASCADE ON UPDATE CASCADE; 6 | -------------------------------------------------------------------------------- /prisma/migrations/20230112234519_unlistable_tags/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "Tag" ADD COLUMN "unlisted" BOOLEAN NOT NULL DEFAULT false; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20230118154709_add_model_early_access_timeframe/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "Model" ADD COLUMN "earlyAccessTimeFrame" INTEGER NOT NULL DEFAULT 0; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20230124192503_soft_delete_model/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "Model" ADD COLUMN "deletedAt" TIMESTAMP(3); 3 | -------------------------------------------------------------------------------- /prisma/migrations/20230124204854_add_deleted_model_status/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterEnum 2 | ALTER TYPE "ModelStatus" ADD VALUE 'Deleted'; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20230127232300_metric_update_queue/migration.sql: -------------------------------------------------------------------------------- 1 | -- CreateTable 2 | CREATE TABLE "MetricUpdateQueue" ( 3 | "type" TEXT NOT NULL, 4 | "id" INTEGER NOT NULL, 5 | "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, 6 | 7 | CONSTRAINT "MetricUpdateQueue_pkey" PRIMARY KEY ("type","id") 8 | ); 9 | -------------------------------------------------------------------------------- /prisma/migrations/20230130224954_comment_lock/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "Comment" ADD COLUMN "locked" BOOLEAN DEFAULT false; 3 | 4 | -- AlterTable 5 | ALTER TABLE "CommentV2" ADD COLUMN "locked" BOOLEAN DEFAULT false; 6 | -------------------------------------------------------------------------------- /prisma/migrations/20230131150221_review_lock/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "Review" ADD COLUMN "locked" BOOLEAN NOT NULL DEFAULT false; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20230201143158_mute_users/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "User" ADD COLUMN "muted" BOOLEAN DEFAULT false; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20230201205224_ban_user/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "User" ADD COLUMN "bannedAt" TIMESTAMP(3); 3 | -------------------------------------------------------------------------------- /prisma/migrations/20230207230114_cosmetic_default_id_fix/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | CREATE SEQUENCE cosmetic_id_seq; 3 | ALTER TABLE "Cosmetic" ALTER COLUMN "id" SET DEFAULT nextval('cosmetic_id_seq'); 4 | ALTER SEQUENCE cosmetic_id_seq OWNED BY "Cosmetic"."id"; 5 | -------------------------------------------------------------------------------- /prisma/migrations/20230209171946_add_model_locked/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "Model" ADD COLUMN "locked" BOOLEAN NOT NULL DEFAULT false; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20230209203015_report_limiting/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "Report" ADD COLUMN "alsoReportedBy" INTEGER[] DEFAULT ARRAY[]::INTEGER[], 3 | ADD COLUMN "previouslyReviewedCount" INTEGER NOT NULL DEFAULT 0; 4 | -------------------------------------------------------------------------------- /prisma/migrations/20230210200501_add_iscategory_tag/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "Tag" ADD COLUMN "isCategory" BOOLEAN NOT NULL DEFAULT false; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20230211012925_subscription_update_date/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "CustomerSubscription" ADD COLUMN "updatedAt" TIMESTAMP(3); 3 | -------------------------------------------------------------------------------- /prisma/migrations/20230212204953_api_key_tweaks/migration.sql: -------------------------------------------------------------------------------- 1 | -- DropIndex 2 | DROP INDEX "ApiKey_key_userId_key"; 3 | 4 | -- AlterTable 5 | ALTER TABLE "ApiKey" ADD COLUMN "id" SERIAL NOT NULL, 6 | ADD CONSTRAINT "ApiKey_pkey" PRIMARY KEY ("id"); 7 | -------------------------------------------------------------------------------- /prisma/migrations/20230217213122_image_needs_review/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "Image" ADD COLUMN "needsReview" BOOLEAN NOT NULL DEFAULT false; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20230217220241_tag_unique_name/migration.sql: -------------------------------------------------------------------------------- 1 | /* 2 | Warnings: 3 | 4 | - A unique constraint covering the columns `[name]` on the table `Tag` will be added. If there are existing duplicate values, this will fail. 5 | 6 | */ 7 | -- DropIndex 8 | DROP INDEX "Tag_name_target_key"; 9 | 10 | -- CreateIndex 11 | CREATE UNIQUE INDEX "Tag_name_key" ON "Tag"("name"); 12 | -------------------------------------------------------------------------------- /prisma/migrations/20230220220914_user_activity_index/migration.sql: -------------------------------------------------------------------------------- 1 | -- CreateIndex 2 | CREATE INDEX "UserActivity_userId_createdAt_idx" ON "UserActivity"("userId", "createdAt"); 3 | -------------------------------------------------------------------------------- /prisma/migrations/20230221230819_user_setting_autoplay_gifs/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "User" ADD COLUMN "autoplayGifs" BOOLEAN DEFAULT true; 3 | 4 | UPDATE "User" SET "autoplayGifs" = true; 5 | -------------------------------------------------------------------------------- /prisma/migrations/20230227220233_prep_for_mod_tags/migration.sql: -------------------------------------------------------------------------------- 1 | -- CreateEnum 2 | CREATE TYPE "TagType" AS ENUM ('UserGenerated', 'Label', 'Moderation'); 3 | 4 | -- AlterTable 5 | ALTER TABLE "Tag" ADD COLUMN "type" "TagType" NOT NULL DEFAULT 'UserGenerated'; 6 | 7 | -- AlterTable 8 | ALTER TABLE "TagsOnImage" ADD COLUMN "automated" BOOLEAN NOT NULL DEFAULT false, 9 | ADD COLUMN "confidence" INTEGER; 10 | -------------------------------------------------------------------------------- /prisma/migrations/20230305040226_account_metadata/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "Account" ADD COLUMN "metadata" JSONB NOT NULL DEFAULT '{}'; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20230306181918_model_delete_tracking/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "Model" ADD COLUMN "deletedBy" INTEGER; 3 | 4 | -- AddForeignKey 5 | ALTER TABLE "Model" ADD CONSTRAINT "Model_deletedBy_fkey" FOREIGN KEY ("deletedBy") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE; 6 | -------------------------------------------------------------------------------- /prisma/migrations/20230308161211_post_helper/migration.sql: -------------------------------------------------------------------------------- 1 | UPDATE "Tag" SET target = array_append(target, 'Post') 2 | WHERE 'Image' = ANY(Target); 3 | 4 | 5 | CREATE OR REPLACE VIEW "PostHelper" AS 6 | SELECT 7 | "postId", 8 | bool_or("scannedAt" IS NOT NULL) AS scanned 9 | FROM "Image" 10 | GROUP BY "postId"; -------------------------------------------------------------------------------- /prisma/migrations/20230310005918_image_size/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "Image" ADD COLUMN "sizeKB" INTEGER; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20230312182841_wildcards/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterEnum 2 | ALTER TYPE "ModelType" ADD VALUE 'Wildcards'; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20230315025401_other_type/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterEnum 2 | ALTER TYPE "ModelType" ADD VALUE 'Other'; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20230405222519_model_status_unpublished_violation/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterEnum 2 | ALTER TYPE "ModelStatus" ADD VALUE 'UnpublishedViolation'; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20230407001434_model_version_published_at/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "ModelVersion" ADD COLUMN "publishedAt" TIMESTAMP(3); 3 | -------------------------------------------------------------------------------- /prisma/migrations/20230414200229_model_modifier/migration.sql: -------------------------------------------------------------------------------- 1 | -- CreateEnum 2 | CREATE TYPE "ModelModifier" AS ENUM ('Archived', 'TakenDown'); 3 | 4 | -- AlterTable 5 | ALTER TABLE "Model" ADD COLUMN "mode" "ModelModifier"; 6 | -------------------------------------------------------------------------------- /prisma/migrations/20230619222230_scheduled_publish/migration.sql: -------------------------------------------------------------------------------- 1 | ALTER TYPE "ModelStatus" ADD VALUE 'Scheduled'; -------------------------------------------------------------------------------- /prisma/migrations/20230620163537_hidden_comments/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "Comment" ADD COLUMN "hidden" BOOLEAN DEFAULT false; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20230626231430_not_null_base_model/migration.sql: -------------------------------------------------------------------------------- 1 | 2 | -- AlterTable 3 | ALTER TABLE "ModelVersion" ALTER COLUMN "baseModel" SET NOT NULL; -------------------------------------------------------------------------------- /prisma/migrations/20230630171915_model_version_clip_skip/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "ModelVersion" ADD COLUMN "clipSkip" INTEGER; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20230704185357_create_search_index_update_queue_table/migration.sql: -------------------------------------------------------------------------------- 1 | -- CreateTable 2 | CREATE TABLE "SearchIndexUpdateQueue" ( 3 | "type" TEXT NOT NULL, 4 | "id" INTEGER NOT NULL, 5 | "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, 6 | 7 | CONSTRAINT "SearchIndexUpdateQueue_pkey" PRIMARY KEY ("type","id") 8 | ); 9 | -------------------------------------------------------------------------------- /prisma/migrations/20230706162241_add_search_index_update_queue_action/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "SearchIndexUpdateQueue" DROP CONSTRAINT "SearchIndexUpdateQueue_pkey", 3 | ADD COLUMN "action" TEXT NOT NULL, 4 | ADD CONSTRAINT "SearchIndexUpdateQueue_pkey" PRIMARY KEY ("type", "id", "action"); 5 | -------------------------------------------------------------------------------- /prisma/migrations/20230712203205_add_home_block_type/migration.sql: -------------------------------------------------------------------------------- 1 | -- CreateEnum 2 | CREATE TYPE "HomeBlockType" AS ENUM ('Collection', 'Announcement', 'Leaderboard'); 3 | 4 | -- AlterTable 5 | ALTER TABLE "HomeBlock" ADD COLUMN "type" "HomeBlockType" NOT NULL; 6 | -------------------------------------------------------------------------------- /prisma/migrations/20230712204937_unlisted_read_config/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterEnum 2 | ALTER TYPE "CollectionReadConfiguration" ADD VALUE 'Unlisted'; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20230714202551_recommended_vae/migration.sql: -------------------------------------------------------------------------------- 1 | 2 | -- AlterTable 3 | ALTER TABLE "ModelVersion" ADD COLUMN "vaeId" INTEGER; 4 | 5 | -- AddForeignKey 6 | ALTER TABLE "ModelVersion" ADD CONSTRAINT "ModelVersion_vaeId_fkey" FOREIGN KEY ("vaeId") REFERENCES "ModelVersion"("id") ON DELETE SET NULL ON UPDATE CASCADE; 7 | -------------------------------------------------------------------------------- /prisma/migrations/20230717203328_add_metadata_to_announcements/migration.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE "Announcement" ADD COLUMN "metadata" JSONB; 2 | -------------------------------------------------------------------------------- /prisma/migrations/20230718193348_add_collection_type/migration.sql: -------------------------------------------------------------------------------- 1 | -- CreateEnum 2 | CREATE TYPE "CollectionType" AS ENUM ('Model', 'Article', 'Post', 'Image'); 3 | 4 | -- AlterTable 5 | ALTER TABLE "Collection" ADD COLUMN "type" "CollectionType"; 6 | -------------------------------------------------------------------------------- /prisma/migrations/20230719182634_add_collection_write_configuration_review/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterEnum 2 | ALTER TYPE "CollectionWriteConfiguration" ADD VALUE 'Review'; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20230721184738_post_collection_relation/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "Post" ADD COLUMN "collectionId" INTEGER; 3 | 4 | -- AddForeignKey 5 | ALTER TABLE "Post" ADD CONSTRAINT "Post_collectionId_fkey" FOREIGN KEY ("collectionId") REFERENCES "Collection"("id") ON DELETE CASCADE ON UPDATE CASCADE; 6 | -------------------------------------------------------------------------------- /prisma/migrations/20230728170432_image_type/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "Image" ADD COLUMN "metadata" JSONB NOT NULL DEFAULT '{}', 3 | ADD COLUMN "type" "MediaType" NOT NULL DEFAULT 'image'; 4 | 5 | UPDATE "Image" 6 | SET metadata = json_build_object('hash', hash, 'width', width, 'height', height); 7 | 8 | UPDATE "Image" 9 | SET type = 'video' 10 | WHERE "mimeType" = 'image/gif'; 11 | 12 | -------------------------------------------------------------------------------- /prisma/migrations/20230809032747_model_purpose/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "ModelVersion" ADD COLUMN "baseModelType" TEXT; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20230818173920_add_workflows/migration.sql: -------------------------------------------------------------------------------- 1 | ALTER TYPE "ModelType" ADD VALUE 'Workflows'; 2 | -------------------------------------------------------------------------------- /prisma/migrations/20230901221543_rent_civit/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterEnum 2 | ALTER TYPE "CommercialUse" ADD VALUE 'RentCivit'; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20230902054355_paid_generation_option/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterEnum 2 | ALTER TYPE "ModelVersionMonetizationType" ADD VALUE 'PaidGeneration'; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20230908201330_computed_tag_source/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterEnum 2 | ALTER TYPE "TagSource" ADD VALUE 'Computed'; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20230912004157_motion_module/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterEnum 2 | ALTER TYPE "ModelType" ADD VALUE 'MotionModule'; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20230912153043_add_bounty_complete/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "Bounty" ADD COLUMN "complete" BOOLEAN NOT NULL DEFAULT false; 3 | 4 | -------------------------------------------------------------------------------- /prisma/migrations/20230913054542_social_homeblock/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterEnum 2 | ALTER TYPE "HomeBlockType" ADD VALUE 'Social'; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20230914200233_bounty_poi/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "Bounty" ADD COLUMN "poi" BOOLEAN NOT NULL DEFAULT false; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20230918222033_make_user_referral_code_unqye/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "UserReferralCode" ALTER COLUMN "note" DROP NOT NULL; 3 | 4 | -- CreateIndex 5 | CREATE UNIQUE INDEX "UserReferralCode_code_key" ON "UserReferralCode"("code"); 6 | -------------------------------------------------------------------------------- /prisma/migrations/20230920211650_add_deleted_at_user_referral_code/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "UserReferralCode" ADD COLUMN "deletedAt" TIMESTAMP(3); 3 | 4 | -------------------------------------------------------------------------------- /prisma/migrations/20230921142409_add_user_id_index_user_referrals/migration.sql: -------------------------------------------------------------------------------- 1 | -- CreateIndex 2 | CREATE INDEX "UserReferralCode_userId_idx" ON "UserReferralCode" USING HASH ("userId"); 3 | -------------------------------------------------------------------------------- /prisma/migrations/20230921160043_add_created_updated_at_buzz_tip/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "BuzzTip" ADD COLUMN "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, 3 | ADD COLUMN "updatedAt" TIMESTAMP(3) NOT NULL; 4 | -------------------------------------------------------------------------------- /prisma/migrations/20230921204323_bounty_entry_description/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "BountyEntry" ADD COLUMN "description" TEXT; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20230927151024_collection_mode_support/migration.sql: -------------------------------------------------------------------------------- 1 | BEGIN; 2 | -- CreateEnum 3 | CREATE TYPE "CollectionMode" AS ENUM ('Contest'); 4 | 5 | -- AlterTable 6 | ALTER TABLE "Collection" ADD COLUMN "mode" "CollectionMode"; 7 | 8 | COMMIT; 9 | -------------------------------------------------------------------------------- /prisma/migrations/20230928163847_add_datapurged_to_modelfile/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "ModelFile" ADD COLUMN "dataPurged" BOOLEAN NOT NULL DEFAULT false; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20230929145153_collection_item_collection_id_index/migration.sql: -------------------------------------------------------------------------------- 1 | -- CreateIndex 2 | CREATE INDEX "CollectionItem_collectionId_idx" ON "CollectionItem" USING HASH ("collectionId"); 3 | -------------------------------------------------------------------------------- /prisma/migrations/20231005123051_bounty_expires_at_starts_at_date_only/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "Bounty" ALTER COLUMN "startsAt" SET DATA TYPE DATE, 3 | ALTER COLUMN "expiresAt" SET DATA TYPE DATE, 4 | ADD COLUMN "refunded" BOOLEAN NOT NULL DEFAULT false; 5 | -------------------------------------------------------------------------------- /prisma/migrations/20231006205635_comment_v2_hidden/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "CommentV2" ADD COLUMN "hidden" BOOLEAN DEFAULT false; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20231024143326_user_referral_code_crated_at/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "User" ALTER COLUMN "onboardingSteps" SET DEFAULT ARRAY['Moderation', 'Buzz']::"OnboardingStep"[]; 3 | 4 | -- AlterTable 5 | ALTER TABLE "UserReferralCode" ADD COLUMN "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP; 6 | -------------------------------------------------------------------------------- /prisma/migrations/20231025204142_image_scan_job/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "Image" ADD COLUMN "scanJobs" JSONB; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20231027024129_require_auth_option/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "ModelVersion" ADD COLUMN "requireAuth" BOOLEAN NOT NULL DEFAULT false; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20231027035952_run_partner_base_model/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "Partner" ADD COLUMN "onDemandBaseModels" TEXT[] DEFAULT ARRAY[]::TEXT[]; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20231027221218_image_view_count/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "ImageMetric" ADD COLUMN "viewCount" INTEGER NOT NULL DEFAULT 0; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20231109061817_model_file_header_data/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterEnum 2 | ALTER TYPE "ModelHashType" ADD VALUE 'AutoV3'; 3 | 4 | -- AlterTable 5 | ALTER TABLE "ModelFile" ADD COLUMN "headerData" JSONB; 6 | -------------------------------------------------------------------------------- /prisma/migrations/20231110192419_add_landing_page_to_user_referral/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "UserReferral" ADD COLUMN "landingPage" TEXT; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20231110203035_add_login_redirect_reason_to_user_referral/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "UserReferral" ADD COLUMN "loginRedirectReason" TEXT; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20231110210854_claimable_cosmetics/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterEnum 2 | ALTER TYPE "CosmeticSource" ADD VALUE 'Claim'; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20231118201935_collection_item_reviewed_by/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "CollectionItem" ADD COLUMN "reviewedAt" TIMESTAMP(3), 3 | ADD COLUMN "reviewedById" INTEGER; 4 | 5 | -- AddForeignKey 6 | ALTER TABLE "CollectionItem" ADD CONSTRAINT "CollectionItem_reviewedById_fkey" FOREIGN KEY ("reviewedById") REFERENCES "User"("id") ON DELETE SET NULL ON UPDATE CASCADE; 7 | -------------------------------------------------------------------------------- /prisma/migrations/20231121050854_holiday_cosmetics/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterEnum 2 | ALTER TYPE "CosmeticType" ADD VALUE 'ContentDecoration'; 3 | 4 | -- AlterTable 5 | ALTER TABLE "Cosmetic" ADD COLUMN "availableQuery" TEXT; 6 | 7 | -- AlterTable 8 | ALTER TABLE "UserCosmetic" ADD COLUMN "data" JSONB; 9 | -------------------------------------------------------------------------------- /prisma/migrations/20231128212202_add_club_post_cover_image/migration.sql: -------------------------------------------------------------------------------- 1 | BEGIN; 2 | -- AlterTable 3 | ALTER TABLE "ClubPost" ADD COLUMN "coverImageId" INTEGER; 4 | 5 | -- AddForeignKey 6 | ALTER TABLE "ClubPost" ADD CONSTRAINT "ClubPost_coverImageId_fkey" FOREIGN KEY ("coverImageId") REFERENCES "Image"("id") ON DELETE SET NULL ON UPDATE CASCADE; 7 | 8 | COMMIT; 9 | -------------------------------------------------------------------------------- /prisma/migrations/20231130143354_remove_buzz_account_id/migration.sql: -------------------------------------------------------------------------------- 1 | BEGIN; 2 | -- AlterTable 3 | ALTER TABLE "Club" DROP COLUMN "buzzAccountId"; 4 | 5 | -- AlterTable 6 | ALTER TABLE "ClubMembership" ALTER COLUMN "expiresAt" DROP NOT NULL; 7 | COMMIT; 8 | -------------------------------------------------------------------------------- /prisma/migrations/20231201094437_event_homeblock_type/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterEnum 2 | ALTER TYPE "HomeBlockType" ADD VALUE 'Event'; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20231203043804_generation_metrics/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "ModelMetric" ADD COLUMN "generationCount" INTEGER NOT NULL DEFAULT 0; 3 | 4 | -- AlterTable 5 | ALTER TABLE "ModelVersionMetric" ADD COLUMN "generationCount" INTEGER NOT NULL DEFAULT 0; 6 | -------------------------------------------------------------------------------- /prisma/migrations/20231213152614_model_gallery_settings/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "Model" ADD COLUMN "gallerySettings" JSONB NOT NULL DEFAULT '{"users": [], "tags": [], "images": []}'; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20231213153829_add_club_tier_member_limit/migration.sql: -------------------------------------------------------------------------------- 1 | BEGIN; 2 | -- AlterTable 3 | ALTER TABLE "ClubTier" ADD COLUMN "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, 4 | ADD COLUMN "memberLimit" INTEGER, 5 | ADD COLUMN "updatedAt" TIMESTAMP(3); 6 | COMMIT; -------------------------------------------------------------------------------- /prisma/migrations/20231218152300_add_unlisted_availability_to_post_entity_id_club_post/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "ClubPost" ADD COLUMN "entityId" INTEGER, 3 | ADD COLUMN "entityType" TEXT; 4 | 5 | -- AlterTable 6 | ALTER TABLE "Post" ADD COLUMN "availability" "Availability" NOT NULL DEFAULT 'Public', 7 | ADD COLUMN "unlisted" BOOLEAN NOT NULL DEFAULT false; 8 | -------------------------------------------------------------------------------- /prisma/migrations/20231222180336_optional_club_post_title_description/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "ClubPost" ALTER COLUMN "title" DROP NOT NULL, 3 | ALTER COLUMN "description" DROP NOT NULL; -------------------------------------------------------------------------------- /prisma/migrations/20231223004700_report_type_csam/migration.sql: -------------------------------------------------------------------------------- 1 | 2 | -- AlterEnum 3 | ALTER TYPE "ReportReason" ADD VALUE 'CSAM'; 4 | -------------------------------------------------------------------------------- /prisma/migrations/20240105204334_add_one_time_fee_on_club_tier/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "ClubTier" ADD COLUMN "oneTimeFee" BOOLEAN NOT NULL DEFAULT false; -------------------------------------------------------------------------------- /prisma/migrations/20240111143445_dm_chat_owner/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "Chat" ADD COLUMN "ownerId" INTEGER NOT NULL default -1; 3 | 4 | -- AddForeignKey 5 | ALTER TABLE "Chat" ADD CONSTRAINT "Chat_ownerId_fkey" FOREIGN KEY ("ownerId") REFERENCES "User"("id") ON DELETE RESTRICT ON UPDATE CASCADE; 6 | -------------------------------------------------------------------------------- /prisma/migrations/20240111144730_dm_chat_edited_optional/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "Chat" ALTER COLUMN "ownerId" DROP DEFAULT; 3 | 4 | -- AlterTable 5 | ALTER TABLE "ChatMessage" ALTER COLUMN "editedAt" DROP NOT NULL; 6 | -------------------------------------------------------------------------------- /prisma/migrations/20240112151626_user_settings/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "User" ADD COLUMN "settings" JSONB DEFAULT '{}'; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20240113023932_email_citext/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "User" ALTER COLUMN "email" SET DATA TYPE CITEXT; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20240118213143_tags_on_tags_type/migration.sql: -------------------------------------------------------------------------------- 1 | -- CreateEnum 2 | CREATE TYPE "TagsOnTagsType" AS ENUM ('Parent', 'Replace', 'Append'); 3 | 4 | -- AlterTable 5 | ALTER TABLE "TagsOnTags" ADD COLUMN "type" "TagsOnTagsType" NOT NULL DEFAULT 'Parent'; 6 | -------------------------------------------------------------------------------- /prisma/migrations/20240119175458_buzz_claim/migration.sql: -------------------------------------------------------------------------------- 1 | -- CreateTable 2 | CREATE TABLE "BuzzClaim" ( 3 | "key" TEXT NOT NULL, 4 | "transactionIdQuery" TEXT NOT NULL, 5 | "amount" INTEGER NOT NULL, 6 | "availableStart" TIMESTAMP(3), 7 | "availableEnd" TIMESTAMP(3), 8 | 9 | CONSTRAINT "BuzzClaim_pkey" PRIMARY KEY ("key") 10 | ); 11 | -------------------------------------------------------------------------------- /prisma/migrations/20240121232802_buzz_claim_details/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "BuzzClaim" ADD COLUMN "description" TEXT NOT NULL, 3 | ADD COLUMN "title" TEXT NOT NULL; 4 | -------------------------------------------------------------------------------- /prisma/migrations/20240123173456_article_cover_id/migration.sql: -------------------------------------------------------------------------------- 1 | 2 | 3 | -- AlterTable 4 | ALTER TABLE "Article" ADD COLUMN IF NOT EXISTS "coverId" INTEGER; 5 | ALTER TABLE "Article" ALTER COLUMN cover DROP NOT NULL; 6 | 7 | delete from "Article" where cover like 'blob%' 8 | -------------------------------------------------------------------------------- /prisma/migrations/20240125182002_add_unique_on_conected_account_id/migration.sql: -------------------------------------------------------------------------------- 1 | -- CreateIndex 2 | CREATE UNIQUE INDEX "UserStripeConnect_connectedAccountId_key" ON "UserStripeConnect"("connectedAccountId"); 3 | -------------------------------------------------------------------------------- /prisma/migrations/20240207190207_notification_category/migration.sql: -------------------------------------------------------------------------------- 1 | -- CreateEnum 2 | CREATE TYPE "NotificationCategory" AS ENUM ('Comment', 'Update', 'Milestone', 'Bounty', 'Other'); 3 | 4 | -- AlterTable 5 | ALTER TABLE "Notification" ADD COLUMN "category" "NotificationCategory" NOT NULL DEFAULT 'Other'; 6 | -------------------------------------------------------------------------------- /prisma/migrations/20240207200350_tags_on_image_vote_applied/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "TagsOnImageVote" ADD COLUMN "applied" BOOLEAN NOT NULL DEFAULT false; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20240212151513_add_buzz_withdrawal_status_externally_resolved/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterEnum 2 | ALTER TYPE "BuzzWithdrawalRequestStatus" ADD VALUE 'ExternallyResolved'; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20240213195536_additional_notification_categories/migration.sql: -------------------------------------------------------------------------------- 1 | ALTER TYPE "NotificationCategory" ADD VALUE 'Buzz'; 2 | ALTER TYPE "NotificationCategory" ADD VALUE 'System'; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20240217005100_partner_tier/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "Partner" ADD COLUMN "tier" INTEGER NOT NULL DEFAULT 0; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20240220184546_partner_logo/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "Partner" ADD COLUMN "logo" TEXT; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20240229155733_vault_item_update_field/migration.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE "VaultItem" DROP COLUMN "detailsSizeKB", 2 | DROP COLUMN "imagesSizeKB", 3 | DROP COLUMN "modelSizeKB", 4 | ADD COLUMN "detailsSizeKb" INTEGER NOT NULL, 5 | ADD COLUMN "imagesSizeKb" INTEGER NOT NULL, 6 | ADD COLUMN "modelSizeKb" INTEGER NOT NULL; -------------------------------------------------------------------------------- /prisma/migrations/20240308194924_vault_item_meta_field/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "VaultItem" ADD COLUMN "meta" JSONB NOT NULL DEFAULT '{}'; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20240312143533_vault_item_files_as_json/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "VaultItem" DROP COLUMN "files", 3 | ADD COLUMN "files" JSONB NOT NULL DEFAULT '[]'; 4 | -------------------------------------------------------------------------------- /prisma/migrations/20240312210710_vault_item_indexes/migration.sql: -------------------------------------------------------------------------------- 1 | -- CreateIndex 2 | CREATE INDEX "VaultItem_vaultId_idx" ON "VaultItem" USING HASH ("vaultId"); 3 | 4 | -- CreateIndex 5 | CREATE INDEX "VaultItem_modelVersionId_idx" ON "VaultItem" USING HASH ("modelVersionId"); 6 | -------------------------------------------------------------------------------- /prisma/migrations/20240321152907_image_resource_strength/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "ImageResource" ADD COLUMN "strength" INTEGER; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20240329072855_add_dora/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterEnum 2 | ALTER TYPE "ModelType" ADD VALUE 'DoRA'; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20240403142806_add_cosmetic_type_profile_decoration/migration.sql: -------------------------------------------------------------------------------- 1 | ALTER TYPE "CosmeticType" ADD VALUE 'ProfileDecoration'; 2 | -------------------------------------------------------------------------------- /prisma/migrations/20240405133543_dms_add_more_content_type/migration.sql: -------------------------------------------------------------------------------- 1 | ALTER TYPE "ChatMessageType" ADD VALUE 'Image'; 2 | ALTER TYPE "ChatMessageType" ADD VALUE 'Video'; 3 | ALTER TYPE "ChatMessageType" ADD VALUE 'Audio'; 4 | ALTER TYPE "ChatMessageType" ADD VALUE 'Embed'; 5 | -------------------------------------------------------------------------------- /prisma/migrations/20240409152606_add_cosmetic_reference_to_item/migration.sql: -------------------------------------------------------------------------------- 1 | -- AddForeignKey 2 | ALTER TABLE "CosmeticShopItem" ADD CONSTRAINT "CosmeticShopItem_cosmeticId_fkey" FOREIGN KEY ("cosmeticId") REFERENCES "Cosmetic"("id") ON DELETE CASCADE ON UPDATE CASCADE; -------------------------------------------------------------------------------- /prisma/migrations/20240409202625_add_shop_item_unit_amount/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "CosmeticShopItem" DROP COLUMN "unitValue", 3 | ADD COLUMN "unitAmount" INTEGER NOT NULL; 4 | 5 | -- AlterTable 6 | ALTER TABLE "UserCosmeticShopPurchases" DROP COLUMN "unitValue", 7 | ADD COLUMN "unitAmount" INTEGER NOT NULL; -------------------------------------------------------------------------------- /prisma/migrations/20240411155123_make_image_optional/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "CosmeticShopSection" ALTER COLUMN "placement" SET DEFAULT 0, 3 | ALTER COLUMN "imageId" DROP NOT NULL; 4 | -------------------------------------------------------------------------------- /prisma/migrations/20240411185822_add_cosmetic_type_profile_background/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterEnum 2 | ALTER TYPE "CosmeticType" ADD VALUE 'ProfileBackground'; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20240418202619_add_for_id_user_cosmetic/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "CosmeticShopSection" ADD COLUMN "published" BOOLEAN NOT NULL DEFAULT true; 3 | 4 | -- AlterTable 5 | ALTER TABLE "UserCosmetic" ADD COLUMN "forId" INTEGER, 6 | ADD COLUMN "forType" "CosmeticEntity"; 7 | -------------------------------------------------------------------------------- /prisma/migrations/20240423150723_add_user_public_settings/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "User" ADD COLUMN "publicSettings" JSONB DEFAULT '{}'; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20240504220623_file_override_name/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "ModelFile" ADD COLUMN "overrideName" TEXT; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20240509145855_add_domain_to_tool/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "Tool" 3 | ADD COLUMN "domain" TEXT; 4 | -------------------------------------------------------------------------------- /prisma/migrations/20240516171837_add_editor_to_tooltype/migration.sql: -------------------------------------------------------------------------------- 1 | ALTER TYPE "ToolType" ADD VALUE 'Editor'; 2 | -------------------------------------------------------------------------------- /prisma/migrations/20240524211244_add_training_statuses/migration.sql: -------------------------------------------------------------------------------- 1 | ALTER TYPE "TrainingStatus" ADD VALUE 'Paused'; 2 | ALTER TYPE "TrainingStatus" ADD VALUE 'Denied'; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20240528185514_early_access_v2_nits/migration.sql: -------------------------------------------------------------------------------- 1 | 2 | -- AlterTable 3 | ALTER TABLE "ModelVersion" ALTER COLUMN "earlyAccessConfig" DROP NOT NULL, 4 | ALTER COLUMN "earlyAccessConfig" DROP DEFAULT; 5 | -------------------------------------------------------------------------------- /prisma/migrations/20240528212836_muted_confirmed/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "User" ADD COLUMN "muteConfirmedAt" TIMESTAMP(3); 3 | -------------------------------------------------------------------------------- /prisma/migrations/20240528220022_exclude_from_leaderboards/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "User" 3 | ADD COLUMN "excludeFromLeaderboards" BOOLEAN NOT NULL DEFAULT false; 4 | -------------------------------------------------------------------------------- /prisma/migrations/20240603200922_tool_priority/migration.sql: -------------------------------------------------------------------------------- 1 | 2 | -- AlterTable 3 | ALTER TABLE "Tool" ADD COLUMN "priority" INTEGER; 4 | -------------------------------------------------------------------------------- /prisma/migrations/20240604172025_api_key_type/migration.sql: -------------------------------------------------------------------------------- 1 | 2 | -- CreateEnum 3 | CREATE TYPE "ApiKeyType" AS ENUM ('System', 'User'); 4 | 5 | ALTER TYPE "KeyScope" ADD VALUE 'Generate'; 6 | 7 | -- AlterTable 8 | ALTER TABLE "ApiKey" ADD COLUMN "expiresAt" TIMESTAMP(3), 9 | ADD COLUMN "type" "ApiKeyType" NOT NULL DEFAULT 'User'; 10 | -------------------------------------------------------------------------------- /prisma/migrations/20240606185927_tool_description/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "Tool" ADD COLUMN "description" TEXT; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20240610185726_add_minor_field/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "Model" ADD COLUMN "minor" BOOLEAN NOT NULL DEFAULT false; -------------------------------------------------------------------------------- /prisma/migrations/20240613183520_csam_report_type/migration.sql: -------------------------------------------------------------------------------- 1 | 2 | -- CreateEnum 3 | CREATE TYPE "CsamReportType" AS ENUM ('Image', 'TrainingData'); 4 | 5 | -- AlterTable 6 | ALTER TABLE "CsamReport" ADD COLUMN "type" "CsamReportType" NOT NULL DEFAULT 'Image'; 7 | -------------------------------------------------------------------------------- /prisma/migrations/20240613215736_collection_item_tag_id/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "CollectionItem" ADD COLUMN "tagId" INTEGER; 3 | 4 | -- AddForeignKey 5 | ALTER TABLE "CollectionItem" ADD CONSTRAINT "CollectionItem_tagId_fkey" FOREIGN KEY ("tagId") REFERENCES "Tag"("id") ON DELETE SET NULL ON UPDATE CASCADE; 6 | 7 | ALTER TYPE "TagTarget" ADD VALUE 'Collection'; 8 | -------------------------------------------------------------------------------- /prisma/migrations/20240619092115_reward_eligibility/migration.sql: -------------------------------------------------------------------------------- 1 | -- CreateEnum 2 | CREATE TYPE "RewardsEligibility" AS ENUM ('Eligible', 'Ineligible', 'Protected'); 3 | 4 | -- AlterTable 5 | ALTER TABLE "User" 6 | ADD COLUMN "eligibilityChangedAt" TIMESTAMP(3), 7 | ADD COLUMN "rewardsEligibility" "RewardsEligibility" NOT NULL DEFAULT 'Eligible'; 8 | -------------------------------------------------------------------------------- /prisma/migrations/20240619152041_entity_collaborator_last_message_sent_at/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "EntityCollaborator" ADD COLUMN "lastMessageSentAt" TIMESTAMP(3); 3 | -------------------------------------------------------------------------------- /prisma/migrations/20240619181506_add_video_url/migration.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE "Cosmetic" ADD COLUMN "videoUrl" TEXT; 2 | -------------------------------------------------------------------------------- /prisma/migrations/20240619185235_add_video_url_to_cosmetic_shop_item/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "CosmeticShopItem" ADD COLUMN "videoUrl" TEXT; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20240620155119_user_engagement_type_block/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterEnum 2 | ALTER TYPE "UserEngagementType" ADD VALUE 'Block'; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20240620165739_rollback_add_video_url_cosmetic_shop_item/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "CosmeticShopItem" DROP COLUMN "videoUrl"; -------------------------------------------------------------------------------- /prisma/migrations/20240624134110_tool_metadata/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "Tool" ADD COLUMN "metadata" JSONB NOT NULL DEFAULT '{}'; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20240725040405_simplify_run_strat/migration.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE "RunStrategy" DROP CONSTRAINT "RunStrategy_pkey", 2 | DROP COLUMN "id", 3 | ADD CONSTRAINT "RunStrategy_pkey" PRIMARY KEY ("modelVersionId", "partnerId"); 4 | -------------------------------------------------------------------------------- /prisma/migrations/20240809155038_add_paddle_customer_id/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "User" ADD COLUMN "paddleCustomerId" TEXT; 3 | -- CreateIndex 4 | CREATE UNIQUE INDEX "User_paddleCustomerId_key" ON "User"("paddleCustomerId"); 5 | -------------------------------------------------------------------------------- /prisma/migrations/20240809230424_tag_source_image_hash/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterEnum 2 | ALTER TYPE "TagSource" ADD VALUE 'ImageHash'; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20240830173458_add_upload_type_to_mv/migration.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE "ModelVersion" ADD COLUMN "uploadType" "ModelUploadType" NOT NULL DEFAULT 'Created'; 2 | 3 | UPDATE "ModelVersion" mv 4 | SET "uploadType" = m."uploadType" 5 | FROM "Model" m 6 | WHERE m.id = mv."modelId"; 7 | 8 | -- rerun the above after push 9 | -------------------------------------------------------------------------------- /prisma/migrations/20240930191432_add_cosmetic_shop_home_block_type/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterEnum 2 | ALTER TYPE "HomeBlockType" ADD VALUE 'CosmeticShop'; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20240930192521_model_flag_details_column/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "ModelFlag" ADD COLUMN "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, 3 | ADD COLUMN "details" JSONB; 4 | -------------------------------------------------------------------------------- /prisma/migrations/20241003192438_model_flag_poi_name_column/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "ModelFlag" DROP COLUMN "nameNsfw", 3 | ADD COLUMN "poiName" BOOLEAN NOT NULL DEFAULT false; 4 | 5 | -- CreateIndex 6 | CREATE INDEX "ModelFlag_status_idx" ON "ModelFlag"("status"); 7 | -------------------------------------------------------------------------------- /prisma/migrations/20241012021355_add_buzz_claim_account_type/migration.sql: -------------------------------------------------------------------------------- 1 | 2 | -- CreateEnum 3 | CREATE TYPE "BuzzAccountType" AS ENUM ('user', 'generation', 'club'); 4 | 5 | -- AlterTable 6 | ALTER TABLE "BuzzClaim" ADD COLUMN "accountType" "BuzzAccountType" NOT NULL DEFAULT 'user'; -------------------------------------------------------------------------------- /prisma/migrations/20241012023023_add_buzz_use_multiplier/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "BuzzClaim" ADD COLUMN "useMultiplier" BOOLEAN NOT NULL DEFAULT false; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20241015005553_image_rating_request_weight/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "ImageRatingRequest" ADD COLUMN "weight" INTEGER NOT NULL DEFAULT 1; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20241016175736_announncement_enabled/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "Announcement" ADD COLUMN "enabled" BOOLEAN NOT NULL DEFAULT false; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20241016185054_announcement_disabled/migration.sql: -------------------------------------------------------------------------------- 1 | /* 2 | Warnings: 3 | 4 | - You are about to drop the column `enabled` on the `Announcement` table. All the data in the column will be lost. 5 | 6 | */ 7 | -- AlterTable 8 | ALTER TABLE "Announcement" DROP COLUMN "enabled", 9 | ADD COLUMN "disabled" BOOLEAN NOT NULL DEFAULT false; 10 | -------------------------------------------------------------------------------- /prisma/migrations/20241018200359_blocklist/migration.sql: -------------------------------------------------------------------------------- 1 | -- CreateTable 2 | CREATE TABLE "Blocklist" ( 3 | "id" SERIAL NOT NULL, 4 | "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, 5 | "updatedAt" TIMESTAMP(3) NOT NULL, 6 | "type" TEXT NOT NULL, 7 | "data" TEXT[], 8 | 9 | CONSTRAINT "Blocklist_pkey" PRIMARY KEY ("id") 10 | ); 11 | -------------------------------------------------------------------------------- /prisma/migrations/20241106162157_tool_supported_column/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "Tool" ADD COLUMN "supported" BOOLEAN NOT NULL DEFAULT false; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20241119204932_add_pending_manual_ingestion_enum_value/migration.sql: -------------------------------------------------------------------------------- 1 | ALTER TYPE "ImageIngestionStatus" ADD VALUE 'PendingManualAssignment'; -------------------------------------------------------------------------------- /prisma/migrations/20241119210536_tool_company_column/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "Tool" ADD COLUMN "company" TEXT; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20241126224738_add_filterable_only_to_collection_tags/migration.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE "TagsOnCollection" ADD COLUMN "filterableOnly" BOOLEAN NOT NULL DEFAULT false; -------------------------------------------------------------------------------- /prisma/migrations/20241204170604_disable_partners/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "Partner" ADD COLUMN "disabled" BOOLEAN NOT NULL DEFAULT false; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20241206194713_tool_unlisted_column/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "Tool" ADD COLUMN "unlisted" BOOLEAN NOT NULL DEFAULT false; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20241210165550_add_tag_source/migration.sql: -------------------------------------------------------------------------------- 1 | 2 | -- AlterEnum 3 | ALTER TYPE "TagSource" ADD VALUE 'Hive'; 4 | -------------------------------------------------------------------------------- /prisma/migrations/20241211191542_image_minor_field/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "Image" ADD COLUMN "minor" BOOLEAN NOT NULL DEFAULT false; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20241220035102_buzz_claim_limit/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "BuzzClaim" 3 | ADD COLUMN "claimed" INTEGER NOT NULL DEFAULT 0, 4 | ADD COLUMN "limit" INTEGER; 5 | -------------------------------------------------------------------------------- /prisma/migrations/20241220050455_minor_detection_tag_source/migration.sql: -------------------------------------------------------------------------------- 1 | ALTER TYPE "TagSource" ADD VALUE 'MinorDetection'; 2 | -------------------------------------------------------------------------------- /prisma/migrations/20250114185408_add_tool_type_llm/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterEnum 2 | ALTER TYPE "ToolType" ADD VALUE 'LLM'; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20250120222939_model_type_detection/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterEnum 2 | ALTER TYPE "ModelType" ADD VALUE 'Detection'; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20250122210402_model_usage_control/migration.sql: -------------------------------------------------------------------------------- 1 | -- CreateEnum 2 | CREATE TYPE "ModelUsageControl" AS ENUM ('Download', 'Generation', 'InternalGeneration'); 3 | 4 | -- AlterTable 5 | ALTER TABLE "ModelVersion" ADD COLUMN "usageControl" "ModelUsageControl" NOT NULL DEFAULT 'Download'; 6 | -------------------------------------------------------------------------------- /prisma/migrations/20250123000929_hive_demographics/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterEnum 2 | ALTER TYPE "TagSource" ADD VALUE 'HiveDemographics'; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20250124000257_tool_alias/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "Tool" ADD COLUMN "alias" TEXT; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20250131152943_many_to_many_table_relation/migration.sql: -------------------------------------------------------------------------------- 1 | -- DropIndex 2 | DROP INDEX "_LicenseToModel_AB_unique"; 3 | DROP INDEX "_LicenseToModel_B_index"; 4 | -------------------------------------------------------------------------------- /prisma/migrations/20250131232938_comment_v2_pinned_at/migration.sql: -------------------------------------------------------------------------------- 1 | 2 | -- AlterTable 3 | ALTER TABLE "CommentV2" ADD COLUMN "pinnedAt" TIMESTAMP(3); 4 | 5 | -- CreateIndex 6 | CREATE INDEX "Thread_rootThreadId_idx" ON "Thread" USING HASH ("rootThreadId"); 7 | -------------------------------------------------------------------------------- /prisma/migrations/20250219183115_user_index_deleted_at/migration.sql: -------------------------------------------------------------------------------- 1 | CREATE INDEX user_deletedAt_idx ON "User" ("deletedAt"); 2 | 3 | CREATE INDEX UserEngagement_type_userId ON "UserEngagement" (type, "userId"); 4 | -------------------------------------------------------------------------------- /prisma/migrations/20250219221820_add_auction_slug_active/migration.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE "AuctionBase" ADD COLUMN "active" BOOLEAN NOT NULL DEFAULT true, 2 | ADD COLUMN "slug" TEXT NOT NULL; 3 | 4 | CREATE UNIQUE INDEX "AuctionBase_slug_key" ON "AuctionBase"("slug"); 5 | -------------------------------------------------------------------------------- /prisma/migrations/20250219230130_post_metric_age_group/migration.sql: -------------------------------------------------------------------------------- 1 | 2 | ALTER TABLE "PostMetric" 3 | ADD COLUMN IF NOT EXISTS "ageGroup" public."MetricTimeframe" DEFAULT 'Day'::public."MetricTimeframe" NOT NULL; 4 | -------------------------------------------------------------------------------- /prisma/migrations/20250219230130_post_metric_index_age_group/migration.sql: -------------------------------------------------------------------------------- 1 | CREATE INDEX CONCURRENTLY "PostMetric_postId_ageGroup" ON "PostMetric" ("postId", "ageGroup"); -------------------------------------------------------------------------------- /prisma/migrations/20250221044718_add_tipalti_withdrawal_method/migration.sql: -------------------------------------------------------------------------------- 1 | 2 | -- AlterTable 3 | ALTER TABLE "UserPaymentConfiguration" ADD COLUMN "tipaltiWithdrawalMethod" "CashWithdrawalMethod"; 4 | -------------------------------------------------------------------------------- /prisma/migrations/20250227204740_make_created_at_updated_at_nullable/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "CashWithdrawal" ALTER COLUMN "createdAt" DROP NOT NULL, 3 | ALTER COLUMN "updatedAt" DROP NOT NULL; 4 | -------------------------------------------------------------------------------- /prisma/migrations/20250313162509_drop_log/migration.sql: -------------------------------------------------------------------------------- 1 | -- DropTable 2 | DROP TABLE "Log"; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20250318165942_moderation_rules_created_by/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "ModerationRule" ADD COLUMN "createdById" INTEGER NOT NULL; 3 | 4 | -- AddForeignKey 5 | ALTER TABLE "ModerationRule" ADD CONSTRAINT "ModerationRule_createdById_fkey" FOREIGN KEY ("createdById") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE; 6 | -------------------------------------------------------------------------------- /prisma/migrations/20250319124141_add_dates_to_auction_base/migration.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE "AuctionBase" 2 | ADD COLUMN "runForDays" INTEGER NOT NULL DEFAULT 1, 3 | ADD COLUMN "validForDays" INTEGER NOT NULL DEFAULT 1; 4 | -------------------------------------------------------------------------------- /prisma/migrations/20250324192007_add_image_poi/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "Image" ADD COLUMN "poi" BOOLEAN NOT NULL DEFAULT false; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20250407094141_model_metrics_earned_amount/migration.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE "ModelVersionMetric" ADD COLUMN "earnedAmount" INT DEFAULT 0 NOT NULL; 2 | ALTER TABLE "ModelMetric" ADD COLUMN "earnedAmount" INT DEFAULT 0 NOT NULL; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20250417190811_add_image_acceptable_minor/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "Image" ADD COLUMN "acceptableMinor" BOOLEAN NOT NULL DEFAULT false; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20250425193919_add_model_sfw_only/migration.sql: -------------------------------------------------------------------------------- 1 | 2 | -- AlterTable 3 | ALTER TABLE "Model" ADD COLUMN "sfwOnly" BOOLEAN NOT NULL DEFAULT false; -------------------------------------------------------------------------------- /prisma/migrations/20250425195241_image_needs_review_index/migration.sql: -------------------------------------------------------------------------------- 1 | DROP INDEX IF EXISTS "Image_nsfw"; 2 | 3 | DROP INDEX IF EXISTS "Image_needsReview_index"; 4 | 5 | CREATE INDEX "Image_needsReview_index" ON "Image"("needsReview") WHERE "needsReview" IS NOT NULL; -------------------------------------------------------------------------------- /prisma/migrations/20250425225502_add_model_flag_sfw_only/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "ModelFlag" ADD COLUMN "sfwOnly" BOOLEAN NOT NULL DEFAULT false; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20250508191050_new_order_rank_icon_column/migration.sql: -------------------------------------------------------------------------------- 1 | -- AlterTable 2 | ALTER TABLE "NewOrderRank" ADD COLUMN "iconUrl" TEXT; 3 | -------------------------------------------------------------------------------- /prisma/migrations/20250513094141_add_sticky_to_changelog/migration.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE "Changelog" ADD COLUMN "sticky" boolean NOT NULL DEFAULT false; 2 | -------------------------------------------------------------------------------- /prisma/migrations/20250513144141_add_incident_type/migration.sql: -------------------------------------------------------------------------------- 1 | ALTER TYPE "ChangelogType" ADD VALUE 'Incident'; 2 | -------------------------------------------------------------------------------- /prisma/migrations/20250614053144_remove_article_cover_id_fkey/migration.sql: -------------------------------------------------------------------------------- 1 | BEGIN; 2 | CREATE INDEX "Image_blocked_idx" ON "Image" ("ingestion", "blockedFor") WHERE "ingestion" = 'Blocked' AND "blockedFor" != 'AiNotVerified'; 3 | COMMIT; 4 | 5 | BEGIN; 6 | -- DropForeignKey 7 | ALTER TABLE "Article" DROP CONSTRAINT "Article_coverId_fkey"; 8 | COMMIT; 9 | -------------------------------------------------------------------------------- /prisma/migrations/20250702102300_basemodeltype_default/migration.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE "ModelVersion" ALTER COLUMN "baseModelType" SET DEFAULT 'Standard'; 2 | 3 | UPDATE "ModelVersion" 4 | SET "baseModelType" = 'Standard' 5 | WHERE "baseModelType" IS NULL; 6 | 7 | ALTER TABLE "ModelVersion" ALTER COLUMN "baseModelType" SET NOT NULL; 8 | -------------------------------------------------------------------------------- /prisma/migrations/migration_lock.toml: -------------------------------------------------------------------------------- 1 | # Please do not edit this file manually 2 | # It should be added in your version-control system (e.g., Git) 3 | provider = "postgresql" -------------------------------------------------------------------------------- /prisma/programmability/IIF.sql: -------------------------------------------------------------------------------- 1 | CREATE OR REPLACE function iif(condition boolean, true_result anyelement, false_result anyelement) returns anyelement 2 | immutable 3 | language sql as 4 | $ 5 | SELECT CASE WHEN condition THEN true_result ELSE false_result END 6 | $; -------------------------------------------------------------------------------- /prisma/programmability/is_new_user.sql: -------------------------------------------------------------------------------- 1 | CREATE OR REPLACE FUNCTION is_new_user(userId INT) 2 | RETURNS BOOLEAN AS $ 3 | DECLARE 4 | isNew BOOLEAN; 5 | BEGIN 6 | SELECT "createdAt" > now() - interval '2 hours' 7 | INTO isNew 8 | FROM "User" 9 | WHERE id = userId; 10 | 11 | RETURN isNew; 12 | END; 13 | $ LANGUAGE plpgsql; 14 | -------------------------------------------------------------------------------- /prisma/programmability/months_between.sql: -------------------------------------------------------------------------------- 1 | CREATE OR REPLACE FUNCTION months_between( 2 | from_date TIMESTAMP, 3 | to_date TIMESTAMP 4 | ) RETURNS INTEGER AS $ 5 | BEGIN 6 | RETURN CEIL(EXTRACT(YEAR FROM AGE(to_date, from_date)) * 12 + EXTRACT(MONTH FROM AGE(to_date, from_date))); 7 | END; 8 | $ LANGUAGE plpgsql; -------------------------------------------------------------------------------- /public/favicon-blue.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/favicon-blue.ico -------------------------------------------------------------------------------- /public/favicon-green.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/favicon-green.ico -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/favicon.ico -------------------------------------------------------------------------------- /public/fonts/Montserrat-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/fonts/Montserrat-Bold.ttf -------------------------------------------------------------------------------- /public/fonts/Montserrat-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/fonts/Montserrat-Regular.ttf -------------------------------------------------------------------------------- /public/images/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/android-chrome-192x192.png -------------------------------------------------------------------------------- /public/images/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/android-chrome-512x512.png -------------------------------------------------------------------------------- /public/images/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/apple-touch-icon.png -------------------------------------------------------------------------------- /public/images/base-badge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/base-badge.png -------------------------------------------------------------------------------- /public/images/become-a-member/120x600.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/become-a-member/120x600.jpg -------------------------------------------------------------------------------- /public/images/become-a-member/300x100.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/become-a-member/300x100.jpg -------------------------------------------------------------------------------- /public/images/become-a-member/300x250.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/become-a-member/300x250.jpg -------------------------------------------------------------------------------- /public/images/become-a-member/300x600.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/become-a-member/300x600.jpg -------------------------------------------------------------------------------- /public/images/become-a-member/728x90.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/become-a-member/728x90.jpg -------------------------------------------------------------------------------- /public/images/become-a-member/970x250.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/become-a-member/970x250.jpg -------------------------------------------------------------------------------- /public/images/become-a-member/970x90.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/become-a-member/970x90.jpg -------------------------------------------------------------------------------- /public/images/civ-c.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/civ-c.png -------------------------------------------------------------------------------- /public/images/civbot-judge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/civbot-judge.png -------------------------------------------------------------------------------- /public/images/civitai-default-account-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/civitai-default-account-bg.png -------------------------------------------------------------------------------- /public/images/civitai_chopped_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/civitai_chopped_dark.png -------------------------------------------------------------------------------- /public/images/daily-challenge-hero.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/daily-challenge-hero.png -------------------------------------------------------------------------------- /public/images/event/holiday2024/ahh_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/event/holiday2024/ahh_logo.png -------------------------------------------------------------------------------- /public/images/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/favicon-16x16.png -------------------------------------------------------------------------------- /public/images/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/favicon-32x32.png -------------------------------------------------------------------------------- /public/images/favicon-green.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/favicon-green.png -------------------------------------------------------------------------------- /public/images/games/new-order-animated-bg.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/games/new-order-animated-bg.webp -------------------------------------------------------------------------------- /public/images/games/new-order-title.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/games/new-order-title.png -------------------------------------------------------------------------------- /public/images/holiday/deer-glow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/holiday/deer-glow.png -------------------------------------------------------------------------------- /public/images/holiday/deer-nose.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/holiday/deer-nose.png -------------------------------------------------------------------------------- /public/images/holiday/deer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/holiday/deer.png -------------------------------------------------------------------------------- /public/images/holiday/ghost.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/holiday/ghost.png -------------------------------------------------------------------------------- /public/images/holiday/happy-holidays-robot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/holiday/happy-holidays-robot.png -------------------------------------------------------------------------------- /public/images/holiday/partners/rundiffusion.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/holiday/partners/rundiffusion.png -------------------------------------------------------------------------------- /public/images/holiday/santa-hat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/holiday/santa-hat.png -------------------------------------------------------------------------------- /public/images/holiday/wreath.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/holiday/wreath.png -------------------------------------------------------------------------------- /public/images/imrs.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/imrs.webp -------------------------------------------------------------------------------- /public/images/link/activity.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/link/activity.png -------------------------------------------------------------------------------- /public/images/link/download.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/link/download.png -------------------------------------------------------------------------------- /public/images/link/glance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/link/glance.png -------------------------------------------------------------------------------- /public/images/link/pair.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/link/pair.png -------------------------------------------------------------------------------- /public/images/logo_dark_mode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/logo_dark_mode.png -------------------------------------------------------------------------------- /public/images/logo_light_mode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/logo_light_mode.png -------------------------------------------------------------------------------- /public/images/media/cover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/media/cover.png -------------------------------------------------------------------------------- /public/images/media/whoops.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/media/whoops.jpg -------------------------------------------------------------------------------- /public/images/newsletter-banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/newsletter-banner.png -------------------------------------------------------------------------------- /public/images/product/vault/lp-main.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/product/vault/lp-main.png -------------------------------------------------------------------------------- /public/images/shop/civitai-air/anne-horel-banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/shop/civitai-air/anne-horel-banner.png -------------------------------------------------------------------------------- /public/images/shop/civitai-air/anne-horel-mobile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/shop/civitai-air/anne-horel-mobile.png -------------------------------------------------------------------------------- /public/images/shop/civitai-air/digital-feline-i-alt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/shop/civitai-air/digital-feline-i-alt.png -------------------------------------------------------------------------------- /public/images/shop/civitai-air/digital-feline-i.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/shop/civitai-air/digital-feline-i.png -------------------------------------------------------------------------------- /public/images/shop/civitai-air/digital-feline-ii-alt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/shop/civitai-air/digital-feline-ii-alt.png -------------------------------------------------------------------------------- /public/images/shop/civitai-air/digital-feline-ii.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/shop/civitai-air/digital-feline-ii.png -------------------------------------------------------------------------------- /public/images/shop/civitai-air/digital-feline-iii-alt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/shop/civitai-air/digital-feline-iii-alt.png -------------------------------------------------------------------------------- /public/images/shop/civitai-air/digital-feline-iii.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/shop/civitai-air/digital-feline-iii.png -------------------------------------------------------------------------------- /public/images/shop/civitai-air/digital-feline-iv-alt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/shop/civitai-air/digital-feline-iv-alt.png -------------------------------------------------------------------------------- /public/images/shop/civitai-air/digital-feline-iv.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/shop/civitai-air/digital-feline-iv.png -------------------------------------------------------------------------------- /public/images/shop/civitai-merch/1girl-bubble-free-stickers.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/shop/civitai-merch/1girl-bubble-free-stickers.webp -------------------------------------------------------------------------------- /public/images/shop/civitai-merch/1girl-clear-case-for-iphone.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/shop/civitai-merch/1girl-clear-case-for-iphone.webp -------------------------------------------------------------------------------- /public/images/shop/civitai-merch/1girl-clear-case-for-samsung.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/shop/civitai-merch/1girl-clear-case-for-samsung.webp -------------------------------------------------------------------------------- /public/images/shop/civitai-merch/1girl-holographic-stickers.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/shop/civitai-merch/1girl-holographic-stickers.webp -------------------------------------------------------------------------------- /public/images/shop/civitai-merch/1girl-sans-civitai-bubble-free-stickers.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/shop/civitai-merch/1girl-sans-civitai-bubble-free-stickers.webp -------------------------------------------------------------------------------- /public/images/shop/civitai-merch/1girl-sans-civitai-holographic-stickers.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/shop/civitai-merch/1girl-sans-civitai-holographic-stickers.webp -------------------------------------------------------------------------------- /public/images/shop/civitai-merch/1girl-unisex-hoodie.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/shop/civitai-merch/1girl-unisex-hoodie.webp -------------------------------------------------------------------------------- /public/images/shop/civitai-merch/all-the-stickers-sticker-sheet.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/shop/civitai-merch/all-the-stickers-sticker-sheet.webp -------------------------------------------------------------------------------- /public/images/shop/civitai-merch/bubble-free-stickers-3.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/shop/civitai-merch/bubble-free-stickers-3.webp -------------------------------------------------------------------------------- /public/images/shop/civitai-merch/catz-bubble-free-stickers.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/shop/civitai-merch/catz-bubble-free-stickers.webp -------------------------------------------------------------------------------- /public/images/shop/civitai-merch/catz-holographic-stickers.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/shop/civitai-merch/catz-holographic-stickers.webp -------------------------------------------------------------------------------- /public/images/shop/civitai-merch/civitai-merch-banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/shop/civitai-merch/civitai-merch-banner.png -------------------------------------------------------------------------------- /public/images/shop/civitai-merch/clear-case-for-samsung.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/shop/civitai-merch/clear-case-for-samsung.webp -------------------------------------------------------------------------------- /public/images/shop/civitai-merch/disco-elips-ium-bubble-free-stickers.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/shop/civitai-merch/disco-elips-ium-bubble-free-stickers.webp -------------------------------------------------------------------------------- /public/images/shop/civitai-merch/disco-elips-ium-holographic-stickers.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/shop/civitai-merch/disco-elips-ium-holographic-stickers.webp -------------------------------------------------------------------------------- /public/images/shop/civitai-merch/edgy-civitai-bubble-free-stickers.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/shop/civitai-merch/edgy-civitai-bubble-free-stickers.webp -------------------------------------------------------------------------------- /public/images/shop/civitai-merch/edgy-civitai-holographic-stickers.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/shop/civitai-merch/edgy-civitai-holographic-stickers.webp -------------------------------------------------------------------------------- /public/images/shop/civitai-merch/edgy-white-glossy-mug.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/shop/civitai-merch/edgy-white-glossy-mug.webp -------------------------------------------------------------------------------- /public/images/shop/civitai-merch/mouse-pad.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/shop/civitai-merch/mouse-pad.webp -------------------------------------------------------------------------------- /public/images/shop/civitai-merch/robo-skull-holographic-stickers.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/shop/civitai-merch/robo-skull-holographic-stickers.webp -------------------------------------------------------------------------------- /public/images/shop/civitai-merch/short-sleeve-unisex-t-shirt.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/shop/civitai-merch/short-sleeve-unisex-t-shirt.webp -------------------------------------------------------------------------------- /public/images/shop/civitai-merch/space-bunny-badge-bubble-free-stickers.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/shop/civitai-merch/space-bunny-badge-bubble-free-stickers.webp -------------------------------------------------------------------------------- /public/images/shop/civitai-merch/space-bunny-badge-holographic-stickers.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/shop/civitai-merch/space-bunny-badge-holographic-stickers.webp -------------------------------------------------------------------------------- /public/images/shop/project-odyssey/adidas-fleece-hoodie-black-front.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/shop/project-odyssey/adidas-fleece-hoodie-black-front.webp -------------------------------------------------------------------------------- /public/images/shop/project-odyssey/adidas-fleece-hoodie-black-left.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/shop/project-odyssey/adidas-fleece-hoodie-black-left.webp -------------------------------------------------------------------------------- /public/images/shop/project-odyssey/all-over-print-tote-bag-black.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/shop/project-odyssey/all-over-print-tote-bag-black.jpg -------------------------------------------------------------------------------- /public/images/shop/project-odyssey/classic-dad-hat-black-front.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/shop/project-odyssey/classic-dad-hat-black-front.webp -------------------------------------------------------------------------------- /public/images/shop/project-odyssey/classic-dad-hat-black-left-side.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/shop/project-odyssey/classic-dad-hat-black-left-side.webp -------------------------------------------------------------------------------- /public/images/shop/project-odyssey/kiss-cut-holographic-stickers.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/shop/project-odyssey/kiss-cut-holographic-stickers.webp -------------------------------------------------------------------------------- /public/images/shop/project-odyssey/project-odyssey-banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/shop/project-odyssey/project-odyssey-banner.png -------------------------------------------------------------------------------- /public/images/shop/project-odyssey/tie-dye-hat-cotton-candy-front.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/shop/project-odyssey/tie-dye-hat-cotton-candy-front.webp -------------------------------------------------------------------------------- /public/images/shop/project-odyssey/tie-dye-hat-sky-left-front.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/shop/project-odyssey/tie-dye-hat-sky-left-front.webp -------------------------------------------------------------------------------- /public/images/splash/apple-splash-1125-2436.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/splash/apple-splash-1125-2436.jpg -------------------------------------------------------------------------------- /public/images/splash/apple-splash-1136-640.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/splash/apple-splash-1136-640.jpg -------------------------------------------------------------------------------- /public/images/splash/apple-splash-1170-2532.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/splash/apple-splash-1170-2532.jpg -------------------------------------------------------------------------------- /public/images/splash/apple-splash-1179-2556.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/splash/apple-splash-1179-2556.jpg -------------------------------------------------------------------------------- /public/images/splash/apple-splash-1242-2208.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/splash/apple-splash-1242-2208.jpg -------------------------------------------------------------------------------- /public/images/splash/apple-splash-1242-2688.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/splash/apple-splash-1242-2688.jpg -------------------------------------------------------------------------------- /public/images/splash/apple-splash-1284-2778.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/splash/apple-splash-1284-2778.jpg -------------------------------------------------------------------------------- /public/images/splash/apple-splash-1290-2796.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/splash/apple-splash-1290-2796.jpg -------------------------------------------------------------------------------- /public/images/splash/apple-splash-1334-750.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/splash/apple-splash-1334-750.jpg -------------------------------------------------------------------------------- /public/images/splash/apple-splash-1536-2048.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/splash/apple-splash-1536-2048.jpg -------------------------------------------------------------------------------- /public/images/splash/apple-splash-1620-2160.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/splash/apple-splash-1620-2160.jpg -------------------------------------------------------------------------------- /public/images/splash/apple-splash-1668-2224.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/splash/apple-splash-1668-2224.jpg -------------------------------------------------------------------------------- /public/images/splash/apple-splash-1668-2388.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/splash/apple-splash-1668-2388.jpg -------------------------------------------------------------------------------- /public/images/splash/apple-splash-1792-828.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/splash/apple-splash-1792-828.jpg -------------------------------------------------------------------------------- /public/images/splash/apple-splash-2048-1536.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/splash/apple-splash-2048-1536.jpg -------------------------------------------------------------------------------- /public/images/splash/apple-splash-2048-2732.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/splash/apple-splash-2048-2732.jpg -------------------------------------------------------------------------------- /public/images/splash/apple-splash-2160-1620.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/splash/apple-splash-2160-1620.jpg -------------------------------------------------------------------------------- /public/images/splash/apple-splash-2208-1242.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/splash/apple-splash-2208-1242.jpg -------------------------------------------------------------------------------- /public/images/splash/apple-splash-2224-1668.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/splash/apple-splash-2224-1668.jpg -------------------------------------------------------------------------------- /public/images/splash/apple-splash-2388-1668.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/splash/apple-splash-2388-1668.jpg -------------------------------------------------------------------------------- /public/images/splash/apple-splash-2436-1125.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/splash/apple-splash-2436-1125.jpg -------------------------------------------------------------------------------- /public/images/splash/apple-splash-2532-1170.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/splash/apple-splash-2532-1170.jpg -------------------------------------------------------------------------------- /public/images/splash/apple-splash-2556-1179.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/splash/apple-splash-2556-1179.jpg -------------------------------------------------------------------------------- /public/images/splash/apple-splash-2688-1242.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/splash/apple-splash-2688-1242.jpg -------------------------------------------------------------------------------- /public/images/splash/apple-splash-2732-2048.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/splash/apple-splash-2732-2048.jpg -------------------------------------------------------------------------------- /public/images/splash/apple-splash-2778-1284.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/splash/apple-splash-2778-1284.jpg -------------------------------------------------------------------------------- /public/images/splash/apple-splash-2796-1290.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/splash/apple-splash-2796-1290.jpg -------------------------------------------------------------------------------- /public/images/splash/apple-splash-640-1136.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/splash/apple-splash-640-1136.jpg -------------------------------------------------------------------------------- /public/images/splash/apple-splash-750-1334.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/splash/apple-splash-750-1334.jpg -------------------------------------------------------------------------------- /public/images/splash/apple-splash-828-1792.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/splash/apple-splash-828-1792.jpg -------------------------------------------------------------------------------- /public/images/splash/apple-splash-dark-1125-2436.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/splash/apple-splash-dark-1125-2436.jpg -------------------------------------------------------------------------------- /public/images/splash/apple-splash-dark-1136-640.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/splash/apple-splash-dark-1136-640.jpg -------------------------------------------------------------------------------- /public/images/splash/apple-splash-dark-1170-2532.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/splash/apple-splash-dark-1170-2532.jpg -------------------------------------------------------------------------------- /public/images/splash/apple-splash-dark-1179-2556.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/splash/apple-splash-dark-1179-2556.jpg -------------------------------------------------------------------------------- /public/images/splash/apple-splash-dark-1242-2208.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/splash/apple-splash-dark-1242-2208.jpg -------------------------------------------------------------------------------- /public/images/splash/apple-splash-dark-1242-2688.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/splash/apple-splash-dark-1242-2688.jpg -------------------------------------------------------------------------------- /public/images/splash/apple-splash-dark-1284-2778.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/splash/apple-splash-dark-1284-2778.jpg -------------------------------------------------------------------------------- /public/images/splash/apple-splash-dark-1290-2796.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/splash/apple-splash-dark-1290-2796.jpg -------------------------------------------------------------------------------- /public/images/splash/apple-splash-dark-1334-750.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/splash/apple-splash-dark-1334-750.jpg -------------------------------------------------------------------------------- /public/images/splash/apple-splash-dark-1536-2048.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/splash/apple-splash-dark-1536-2048.jpg -------------------------------------------------------------------------------- /public/images/splash/apple-splash-dark-1620-2160.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/splash/apple-splash-dark-1620-2160.jpg -------------------------------------------------------------------------------- /public/images/splash/apple-splash-dark-1668-2224.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/splash/apple-splash-dark-1668-2224.jpg -------------------------------------------------------------------------------- /public/images/splash/apple-splash-dark-1668-2388.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/splash/apple-splash-dark-1668-2388.jpg -------------------------------------------------------------------------------- /public/images/splash/apple-splash-dark-1792-828.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/splash/apple-splash-dark-1792-828.jpg -------------------------------------------------------------------------------- /public/images/splash/apple-splash-dark-2048-1536.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/splash/apple-splash-dark-2048-1536.jpg -------------------------------------------------------------------------------- /public/images/splash/apple-splash-dark-2048-2732.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/splash/apple-splash-dark-2048-2732.jpg -------------------------------------------------------------------------------- /public/images/splash/apple-splash-dark-2160-1620.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/splash/apple-splash-dark-2160-1620.jpg -------------------------------------------------------------------------------- /public/images/splash/apple-splash-dark-2208-1242.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/splash/apple-splash-dark-2208-1242.jpg -------------------------------------------------------------------------------- /public/images/splash/apple-splash-dark-2224-1668.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/splash/apple-splash-dark-2224-1668.jpg -------------------------------------------------------------------------------- /public/images/splash/apple-splash-dark-2388-1668.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/splash/apple-splash-dark-2388-1668.jpg -------------------------------------------------------------------------------- /public/images/splash/apple-splash-dark-2436-1125.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/splash/apple-splash-dark-2436-1125.jpg -------------------------------------------------------------------------------- /public/images/splash/apple-splash-dark-2532-1170.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/splash/apple-splash-dark-2532-1170.jpg -------------------------------------------------------------------------------- /public/images/splash/apple-splash-dark-2556-1179.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/splash/apple-splash-dark-2556-1179.jpg -------------------------------------------------------------------------------- /public/images/splash/apple-splash-dark-2688-1242.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/splash/apple-splash-dark-2688-1242.jpg -------------------------------------------------------------------------------- /public/images/splash/apple-splash-dark-2732-2048.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/splash/apple-splash-dark-2732-2048.jpg -------------------------------------------------------------------------------- /public/images/splash/apple-splash-dark-2778-1284.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/splash/apple-splash-dark-2778-1284.jpg -------------------------------------------------------------------------------- /public/images/splash/apple-splash-dark-2796-1290.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/splash/apple-splash-dark-2796-1290.jpg -------------------------------------------------------------------------------- /public/images/splash/apple-splash-dark-640-1136.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/splash/apple-splash-dark-640-1136.jpg -------------------------------------------------------------------------------- /public/images/splash/apple-splash-dark-750-1334.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/splash/apple-splash-dark-750-1334.jpg -------------------------------------------------------------------------------- /public/images/splash/apple-splash-dark-828-1792.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/splash/apple-splash-dark-828-1792.jpg -------------------------------------------------------------------------------- /public/images/support-us/120x600.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/support-us/120x600.jpg -------------------------------------------------------------------------------- /public/images/support-us/300x100.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/support-us/300x100.jpg -------------------------------------------------------------------------------- /public/images/support-us/300x250.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/support-us/300x250.jpg -------------------------------------------------------------------------------- /public/images/support-us/300x600.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/support-us/300x600.jpg -------------------------------------------------------------------------------- /public/images/support-us/320x100.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/support-us/320x100.jpg -------------------------------------------------------------------------------- /public/images/support-us/320x50.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/support-us/320x50.jpg -------------------------------------------------------------------------------- /public/images/support-us/728x90.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/support-us/728x90.jpg -------------------------------------------------------------------------------- /public/images/support-us/970x250.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/support-us/970x250.jpg -------------------------------------------------------------------------------- /public/images/support-us/970x90.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/images/support-us/970x90.jpg -------------------------------------------------------------------------------- /public/sounds/game.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/sounds/game.mp3 -------------------------------------------------------------------------------- /public/sounds/message.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/sounds/message.mp3 -------------------------------------------------------------------------------- /public/sounds/message2.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/sounds/message2.mp3 -------------------------------------------------------------------------------- /public/sounds/messageu.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/sounds/messageu.mp3 -------------------------------------------------------------------------------- /public/sounds/point.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/public/sounds/point.mp3 -------------------------------------------------------------------------------- /src/app/layout.tsx: -------------------------------------------------------------------------------- 1 | export default function RootLayout({ children }: { children: React.ReactNode }) { 2 | return ( 3 | <html lang="en"> 4 | <body> 5 | {/* Layout UI */} 6 | <main>{children}</main> 7 | </body> 8 | </html> 9 | ); 10 | } 11 | -------------------------------------------------------------------------------- /src/components/Account/GenerationSettingsCard.tsx: -------------------------------------------------------------------------------- 1 | import { Card, Title } from '@mantine/core'; 2 | import { GenerationSettings } from '~/components/Generation/GenerationSettings'; 3 | 4 | export function GenerationSettingsCard() { 5 | return ( 6 | <Card className="flex flex-col gap-3"> 7 | <Title order={2}>Generation Settings</Title> 8 | <GenerationSettings /> 9 | </Card> 10 | ); 11 | } 12 | -------------------------------------------------------------------------------- /src/components/Ads/Kontext/kontext-ads.d.ts: -------------------------------------------------------------------------------- 1 | import type { KontextAdOptions, KontextAdParams } from '~/components/Ads/Kontext/kontext-ads.types'; 2 | 3 | declare global { 4 | interface Window { 5 | fetchKontextAd: (params: KontextAdParams, options?: KontextAdOptions) => void; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/components/Ads/Old/types.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | 3 | declare global { 4 | namespace JSX { 5 | interface IntrinsicElements { 6 | ['pgs-ad']: React.HTMLAttributes<HTMLDivElement>; 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/components/Ads/ads.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const adWrapper: string; 2 | -------------------------------------------------------------------------------- /src/components/AppLayout/NotFound.module.scss: -------------------------------------------------------------------------------- 1 | .imageContainer { 2 | height: 400px; 3 | display: flex; 4 | 5 | img { 6 | margin: 0 auto; 7 | height: 100%; 8 | width: auto; 9 | border-radius: var(--mantine-radius-sm); 10 | box-shadow: var(--mantine-shadow-md); 11 | } 12 | } -------------------------------------------------------------------------------- /src/components/AppLayout/NotFound.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const imageContainer: string; 2 | -------------------------------------------------------------------------------- /src/components/Article/Infinite/ArticleAltCard.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const content: string; 2 | export declare const image: string; 3 | export declare const info: string; 4 | export declare const statBadge: string; 5 | export declare const userAvatar: string; 6 | -------------------------------------------------------------------------------- /src/components/Article/UserDraftArticles.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const header: string; 2 | export declare const scrolled: string; 3 | -------------------------------------------------------------------------------- /src/components/Auction/AuctionFiltersDropdown.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const body: string; 2 | export declare const close: string; 3 | export declare const content: string; 4 | export declare const header: string; 5 | -------------------------------------------------------------------------------- /src/components/AutocompleteSearch/renderItems/common.module.scss: -------------------------------------------------------------------------------- 1 | .highlighted { 2 | background: light-dark( 3 | var(--mantine-color-yellow-2), 4 | var(--mantine-color-yellow-5) 5 | ); 6 | } -------------------------------------------------------------------------------- /src/components/AutocompleteSearch/renderItems/common.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const highlighted: string; 2 | -------------------------------------------------------------------------------- /src/components/Bounty/BountyEditForm.module.scss: -------------------------------------------------------------------------------- 1 | .title { 2 | @container (max-width: theme('screens.sm')) { 3 | font-size: 24px; 4 | } 5 | } 6 | 7 | .fluid { 8 | max-width: 100% !important; 9 | } 10 | -------------------------------------------------------------------------------- /src/components/Bounty/BountyEditForm.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const fluid: string; 2 | export declare const title: string; 3 | -------------------------------------------------------------------------------- /src/components/BrowsingLevel/BrowsingLevelInput.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const iconWrapper: string; 2 | export declare const label: string; 3 | export declare const root: string; 4 | -------------------------------------------------------------------------------- /src/components/BrowsingLevel/BrowsingLevelsGrouped.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const iconWrapper: string; 2 | export declare const label: string; 3 | export declare const root: string; 4 | -------------------------------------------------------------------------------- /src/components/BrowsingLevel/SetBrowsingLevelModal.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const active: string; 2 | export declare const root: string; 3 | -------------------------------------------------------------------------------- /src/components/Burger/Burger.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const burger: string; 2 | export declare const root: string; 3 | -------------------------------------------------------------------------------- /src/components/Buzz/FeatureCards/FeatureCards.module.scss: -------------------------------------------------------------------------------- 1 | .featureCard { 2 | background-color: light-dark( var(--mantine-color-gray-0), var(--mantine-color-dark-5)); 3 | } 4 | -------------------------------------------------------------------------------- /src/components/Buzz/FeatureCards/FeatureCards.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const featureCard: string; 2 | -------------------------------------------------------------------------------- /src/components/Buzz/InteractiveTipBuzzButton.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const confirming: string; 2 | export declare const fillEffect: string; 3 | export declare const popoverContent: string; 4 | export declare const tipAmount: string; 5 | -------------------------------------------------------------------------------- /src/components/Buzz/WithdrawalRequest/BuzzWithdrawalRequestFiltersDropdown.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const actionButton: string; 2 | export declare const indicatorIndicator: string; 3 | export declare const indicatorRoot: string; 4 | export declare const label: string; 5 | export declare const opened: string; 6 | -------------------------------------------------------------------------------- /src/components/Cards/BountyEntryCard.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const awardedBanner: string; 2 | export declare const moveBackground: string; 3 | -------------------------------------------------------------------------------- /src/components/Cards/components/HoverActionButton.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const hover: string; 2 | export declare const icon: string; 3 | export declare const label: string; 4 | export declare const white: string; 5 | export declare const wrapper: string; 6 | -------------------------------------------------------------------------------- /src/components/Chat/ExistingChat.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const chatInput: string; 2 | export declare const chatMessage: string; 3 | export declare const highlightRow: string; 4 | export declare const isTypingBox: string; 5 | export declare const myDetails: string; 6 | export declare const myMessage: string; 7 | export declare const otherMessage: string; 8 | export declare const replyMessage: string; 9 | -------------------------------------------------------------------------------- /src/components/CivitaiLink/CivitaiLinkPopover.module.scss: -------------------------------------------------------------------------------- 1 | .listItem { 2 | &:nth-of-type(2n + 1) { 3 | background-color: light-dark( 4 | var(--mantine-color-gray-0), 5 | var(--mantine-color-dark-6) 6 | ); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/components/CivitaiLink/CivitaiLinkPopover.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const listItem: string; 2 | -------------------------------------------------------------------------------- /src/components/Club/ClubPost/ClubFeed.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const clubPost: string; 2 | export declare const feedContainer: string; 3 | export declare const feedContainerWithCover: string; 4 | export declare const title: string; 5 | -------------------------------------------------------------------------------- /src/components/Collections/AddToCollectionModal.module.scss: -------------------------------------------------------------------------------- 1 | .body { 2 | align-items: center; 3 | } 4 | 5 | .labelWrapper { 6 | flex: 1; 7 | } 8 | 9 | .contentWrap { 10 | padding-top: var(--mantine-spacing-xs, 8px); 11 | padding-bottom: var(--mantine-spacing-xs, 8px); 12 | } -------------------------------------------------------------------------------- /src/components/Collections/AddToCollectionModal.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const body: string; 2 | export declare const contentWrap: string; 3 | export declare const labelWrapper: string; 4 | -------------------------------------------------------------------------------- /src/components/Collections/Collection.module.scss: -------------------------------------------------------------------------------- 1 | .title { 2 | font-size: 28px; 3 | 4 | @container (min-width: theme('screens.sm')) { 5 | font-size: 32px; 6 | } 7 | 8 | @container (min-width: theme('screens.md')) { 9 | font-size: 34px; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/components/Collections/CollectionsLayout.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const container: string; 2 | export declare const content: string; 3 | export declare const drawerButton: string; 4 | export declare const drawerHeader: string; 5 | export declare const sidebar: string; 6 | export declare const sidebarToggle: string; 7 | export declare const filterContainer: string; 8 | -------------------------------------------------------------------------------- /src/components/Combobox/AlwaysOpenCombobox.module.scss: -------------------------------------------------------------------------------- 1 | .scrollbar { 2 | &[data-orientation="horizontal"] { 3 | display: none; 4 | } 5 | } 6 | 7 | .viewport { 8 | padding: 0; 9 | } 10 | -------------------------------------------------------------------------------- /src/components/Combobox/combobox.types.ts: -------------------------------------------------------------------------------- 1 | import type { Key } from 'react'; 2 | 3 | export type ComboboxOption = { 4 | group?: string; 5 | disabled?: boolean; 6 | label: string; 7 | value: Key; 8 | }; 9 | -------------------------------------------------------------------------------- /src/components/CommentSection/CommentSection.module.css: -------------------------------------------------------------------------------- 1 | .highlightedComment { 2 | background: alpha(var(--mantine-color-blue-5), 0.2); 3 | margin: calc(-1 * var(--mantine-spacing-xs)); 4 | padding: var(--mantine-spacing-xs); 5 | } 6 | -------------------------------------------------------------------------------- /src/components/CommentsV2/Comment/CommentForm.module.scss: -------------------------------------------------------------------------------- 1 | .content { 2 | padding: 0; 3 | font-size: 14px; 4 | background-color: light-dark(var(--mantine-color-gray-0), var(--mantine-color-dark-7)); 5 | 6 | :global .ProseMirror { 7 | padding: 8px 12px; 8 | min-height: 38px; 9 | cursor: text; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/components/CommentsV2/Comment/CommentForm.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const content: string; 2 | export declare const proseMirror: string; 3 | -------------------------------------------------------------------------------- /src/components/ContainerGrid/ContainerCol.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const col: string; 2 | export declare const containerGrid: string; 3 | -------------------------------------------------------------------------------- /src/components/ContainerGrid/ContainerGrid.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const grid: string; 2 | -------------------------------------------------------------------------------- /src/components/ContainerProvider/useContainerLargerThan.ts: -------------------------------------------------------------------------------- 1 | import type { MantineSpacing } from '@mantine/core'; 2 | import { useContainerQuery } from '~/components/ContainerProvider/useContainerQuery'; 3 | 4 | export const useContainerLargerThan = (width: MantineSpacing) => 5 | useContainerQuery({ type: 'min-width', width }); 6 | -------------------------------------------------------------------------------- /src/components/ContainerProvider/useContainerSmallerThan.ts: -------------------------------------------------------------------------------- 1 | import type { MantineSpacing } from '@mantine/core'; 2 | import { useContainerQuery } from '~/components/ContainerProvider/useContainerQuery'; 3 | 4 | export const useContainerSmallerThan = (width: MantineSpacing) => 5 | useContainerQuery({ type: 'max-width', width }); 6 | -------------------------------------------------------------------------------- /src/components/CosmeticShop/CosmeticsFiltersDropdown.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const actionButton: string; 2 | export declare const indicatorIndicator: string; 3 | export declare const indicatorRoot: string; 4 | export declare const label: string; 5 | export declare const opened: string; 6 | -------------------------------------------------------------------------------- /src/components/CosmeticShop/ShopFiltersDropdown.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const actionButton: string; 2 | export declare const indicatorIndicator: string; 3 | export declare const indicatorRoot: string; 4 | export declare const label: string; 5 | export declare const opened: string; 6 | -------------------------------------------------------------------------------- /src/components/Cosmetics/CosmeticsFiltersDropdown.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const actionButton: string; 2 | export declare const indicatorIndicator: string; 3 | export declare const indicatorRoot: string; 4 | export declare const label: string; 5 | export declare const opened: string; 6 | -------------------------------------------------------------------------------- /src/components/Currency/CurrencyBadge.module.scss: -------------------------------------------------------------------------------- 1 | .badgeWithDistrib { 2 | &::after { 3 | content: ''; 4 | position: absolute; 5 | pointer-events: none; 6 | inset: 1px; 7 | border: 1px solid var(--mantine-color-yellow-7); 8 | border-radius: 50%; 9 | border-image: var(--border-image); 10 | clip-path: inset(0% round 1px); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/components/Currency/CurrencyBadge.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const badgeWithDistrib: string; 2 | -------------------------------------------------------------------------------- /src/components/Decorations/HolidayFrame.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const decoration: string; 2 | export declare const light: string; 3 | export declare const lights: string; 4 | export declare const root: string; 5 | export declare const upgradedLight: string; 6 | export declare const wrapper: string; 7 | -------------------------------------------------------------------------------- /src/components/EdgeMedia/EdgeImage.module.scss: -------------------------------------------------------------------------------- 1 | .image { 2 | width: 100%; 3 | height: auto; 4 | } 5 | 6 | .loadError { 7 | opacity: 1; 8 | background: rgba(255, 00, 00, 0.35); 9 | } 10 | 11 | .fadeIn { 12 | opacity: 0; 13 | transition: transform 400ms ease; 14 | } 15 | -------------------------------------------------------------------------------- /src/components/EdgeMedia/EdgeImage.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const fadeIn: string; 2 | export declare const image: string; 3 | export declare const loadError: string; 4 | -------------------------------------------------------------------------------- /src/components/EdgeMedia/EdgeMedia.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const fadeIn: string; 2 | export declare const playButton: string; 3 | export declare const responsive: string; 4 | export declare const videoThumbRoot: string; 5 | -------------------------------------------------------------------------------- /src/components/EdgeMedia/EdgeVideo.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const controls: string; 2 | export declare const fadeInOut: string; 3 | export declare const iosScroll: string; 4 | export declare const playButton: string; 5 | export declare const playIndicator: string; 6 | export declare const volumeControl: string; 7 | export declare const volumeSlider: string; 8 | -------------------------------------------------------------------------------- /src/components/ErrorBoundary/ErrorBoundary.tsx: -------------------------------------------------------------------------------- 1 | import UserErrorBoundary from '~/components/ErrorBoundary/UserErrorBoundary'; 2 | import { useFeatureFlags } from '~/providers/FeatureFlagsProvider'; 3 | 4 | export function ErrorBoundary({ children }: { children: React.ReactNode }) { 5 | const features = useFeatureFlags(); 6 | 7 | return <UserErrorBoundary features={features}>{children}</UserErrorBoundary>; 8 | } 9 | -------------------------------------------------------------------------------- /src/components/EventButton/EventButton.module.scss: -------------------------------------------------------------------------------- 1 | .root { 2 | height: 36px; 3 | margin-left: -8px; 4 | cursor: pointer; 5 | position: relative; 6 | z-index: 3; 7 | } 8 | 9 | .svg { 10 | height: 36px; 11 | transform: translateZ(0); 12 | stroke: var(--mantine-color-green-4); 13 | 14 | &:hover { 15 | animation: wiggle 750ms ease-in-out infinite; 16 | } 17 | } -------------------------------------------------------------------------------- /src/components/EventButton/EventButton.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const root: string; 2 | export declare const svg: string; 3 | export declare const wiggle: string; 4 | -------------------------------------------------------------------------------- /src/components/FeedContentToggle/FeedContentToggle.module.scss: -------------------------------------------------------------------------------- 1 | .feedContentToggle { 2 | @container (max-width: theme('screens.sm')) { 3 | width: '100%', 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /src/components/FeedContentToggle/FeedContentToggle.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const feedContentToggle: string; 2 | -------------------------------------------------------------------------------- /src/components/FileInputUpload/FileInputUpload.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const grow: string; 2 | export declare const stackedProgress: string; 3 | export declare const stackedProgressBar: string; 4 | export declare const stackedProgressProgress: string; 5 | export declare const stackedProgressStatus: string; 6 | export declare const stackedProgressStatusText: string; 7 | -------------------------------------------------------------------------------- /src/components/Filters/AdaptiveFiltersDropdown.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const actionButton: string; 2 | export declare const indicatorIndicator: string; 3 | export declare const indicatorRoot: string; 4 | export declare const label: string; 5 | export declare const opened: string; 6 | -------------------------------------------------------------------------------- /src/components/Filters/FeedFilters/FeedFilters.module.scss: -------------------------------------------------------------------------------- 1 | .filtersWrapper { 2 | @container (max-width: theme('screens.sm')) { 3 | width: 100%; 4 | 5 | >* { 6 | flex-grow: 1; 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/components/Filters/FeedFilters/FeedFilters.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const filtersWrapper: string; 2 | -------------------------------------------------------------------------------- /src/components/Filters/FilterChip.module.scss: -------------------------------------------------------------------------------- 1 | .label { 2 | font-size: 12px; 3 | font-weight: 600; 4 | 5 | &[data-checked] { 6 | &, 7 | &:hover { 8 | color: var(--mantine-color-white); 9 | border: 1px solid var(--mantine-color-primary); 10 | } 11 | 12 | &[data-variant="filled"] { 13 | background-color: transparent; 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/components/Filters/FilterChip.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const label: string; 2 | -------------------------------------------------------------------------------- /src/components/Filters/FilterChip.tsx: -------------------------------------------------------------------------------- 1 | import type { ChipProps } from '@mantine/core'; 2 | import { Chip } from '@mantine/core'; 3 | import classes from './FilterChip.module.scss'; 4 | 5 | export function FilterChip({ children, ...props }: ChipProps) { 6 | return ( 7 | <Chip classNames={classes} size="sm" radius="xl" variant="filled" {...props}> 8 | {children} 9 | </Chip> 10 | ); 11 | } 12 | -------------------------------------------------------------------------------- /src/components/Filters/index.ts: -------------------------------------------------------------------------------- 1 | // All components in this bucket should be accessing state from FiltersProvider 2 | export * from './SortFilter'; 3 | export * from './PeriodFilter'; 4 | -------------------------------------------------------------------------------- /src/components/Games/LevelProgress/LevelProgress.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const levelUp: string; 2 | export declare const raterBadge: string; 3 | -------------------------------------------------------------------------------- /src/components/HeroCard/HeroCard.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const card: string; 2 | export declare const figure: string; 3 | export declare const imageWrapper: string; 4 | export declare const root: string; 5 | export declare const section: string; 6 | export declare const title: string; 7 | -------------------------------------------------------------------------------- /src/components/HomeBlocks/HomeBlock.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const expandButton: string; 2 | export declare const grid: string; 3 | export declare const gridCarousel: string; 4 | export declare const gridMeta: string; 5 | export declare const gridRow: string; 6 | export declare const header: string; 7 | export declare const meta: string; 8 | export declare const title: string; 9 | -------------------------------------------------------------------------------- /src/components/HomeBlocks/ManageHomeBlocksModal.module.scss: -------------------------------------------------------------------------------- 1 | .sectionHeader { 2 | height: 30px; 3 | font-size: var(--mantine-font-size-sm, 14px); 4 | text-transform: capitalize; 5 | font-weight: 500; 6 | } -------------------------------------------------------------------------------- /src/components/HomeBlocks/ManageHomeBlocksModal.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const sectionHeader: string; 2 | -------------------------------------------------------------------------------- /src/components/HomeBlocks/components/SocialBlock.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const card: string; 2 | export declare const igPost: string; 3 | export declare const igReel: string; 4 | export declare const playButton: string; 5 | export declare const twitch: string; 6 | export declare const videoPlayholderRoot: string; 7 | export declare const ytLong: string; 8 | export declare const ytShort: string; 9 | -------------------------------------------------------------------------------- /src/components/Image/AsPosts/GalleryModerationModal.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const active: string; 2 | export declare const root: string; 3 | -------------------------------------------------------------------------------- /src/components/Image/AsPosts/ImagesAsPostsCardContextMenu.tsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/src/components/Image/AsPosts/ImagesAsPostsCardContextMenu.tsx -------------------------------------------------------------------------------- /src/components/Image/Detail/ImageResources.module.scss: -------------------------------------------------------------------------------- 1 | .statBadge { 2 | background: rgba(212, 212, 212, 0.2); 3 | color: white; 4 | } -------------------------------------------------------------------------------- /src/components/Image/Detail/ImageResources.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const statBadge: string; 2 | -------------------------------------------------------------------------------- /src/components/Image/Indicators/OnsiteIndicatore.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const indicator: string; 2 | export declare const remix: string; 3 | -------------------------------------------------------------------------------- /src/components/Image/Infinite/ImagesCard.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const footer: string; 2 | -------------------------------------------------------------------------------- /src/components/ImageGeneration/Feed.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const grid: string; 2 | -------------------------------------------------------------------------------- /src/components/ImageGeneration/GeneratedImageActions.module.scss: -------------------------------------------------------------------------------- 1 | .buttonPost { 2 | &[data-disabled] { 3 | background: var(--mantine-color-blue-6); 4 | color: white; 5 | opacity: 0.5; 6 | } 7 | } -------------------------------------------------------------------------------- /src/components/ImageGeneration/GeneratedImageActions.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const buttonPost: string; 2 | -------------------------------------------------------------------------------- /src/components/ImageGeneration/GenerationForm/GenerationCostPopover.module.scss: -------------------------------------------------------------------------------- 1 | .tableCell { 2 | height: 50px; 3 | background-color: light-dark( 4 | var(--mantine-color-white), 5 | var(--mantine-color-dark-6) 6 | ); 7 | } 8 | 9 | .baseCostCell { 10 | background-color: light-dark( 11 | var(--mantine-color-gray-1), 12 | var(--mantine-color-dark-4) 13 | ); 14 | } 15 | -------------------------------------------------------------------------------- /src/components/ImageGeneration/GenerationForm/GenerationCostPopover.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const baseCostCell: string; 2 | export declare const tableCell: string; 3 | -------------------------------------------------------------------------------- /src/components/ImageGeneration/GenerationForm/ResourceSelectFilters.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const actionButton: string; 2 | export declare const indicatorIndicator: string; 3 | export declare const indicatorRoot: string; 4 | export declare const label: string; 5 | export declare const opened: string; 6 | -------------------------------------------------------------------------------- /src/components/ImageGeneration/GenerationForm/ResourceSelectMultipleStandalone.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const accordionContent: string; 2 | export declare const accordionControl: string; 3 | export declare const accordionItem: string; 4 | -------------------------------------------------------------------------------- /src/components/ImageGeneration/QueueItem.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const asSidebar: string; 2 | export declare const grid: string; 3 | export declare const stopped: string; 4 | -------------------------------------------------------------------------------- /src/components/ImageGeneration/QueueSnackbar.module.scss: -------------------------------------------------------------------------------- 1 | .card { 2 | box-shadow: inset 0 2px light-dark(var(--mantine-color-gray-2), var(--mantine-color-dark-4)); 3 | // &:hover { 4 | // background-color: light-dark(var(--mantine-color-dark-4), var(--mantine-color-gray-0)); 5 | // } 6 | } 7 | 8 | .label { 9 | width: 100%; 10 | } 11 | -------------------------------------------------------------------------------- /src/components/ImageGeneration/QueueSnackbar.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const card: string; 2 | export declare const label: string; 3 | -------------------------------------------------------------------------------- /src/components/IsClient/IsClient.tsx: -------------------------------------------------------------------------------- 1 | import type { ReactNode } from 'react'; 2 | import useIsClient from '~/hooks/useIsClient'; 3 | 4 | export function IsClient({ children }: { children: ReactNode }) { 5 | const isClient = useIsClient(); 6 | return isClient ? <>{children}</> : null; 7 | } 8 | -------------------------------------------------------------------------------- /src/components/Leaderboard/CreatorCard.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const active: string; 2 | export declare const creatorCard: string; 3 | export declare const crown: string; 4 | export declare const delta: string; 5 | export declare const wrapper: string; 6 | -------------------------------------------------------------------------------- /src/components/LegacyActionIcon/LegacyActionIcon.tsx: -------------------------------------------------------------------------------- 1 | import { ActionIcon } from '@mantine/core'; 2 | 3 | export const LegacyActionIcon = ActionIcon.withProps({ color: 'gray', variant: 'subtle' }); 4 | -------------------------------------------------------------------------------- /src/components/MasonryColumns/MasonryContainer.module.scss: -------------------------------------------------------------------------------- 1 | $columns: 7; 2 | $width: 320; 3 | $gap: 16; 4 | 5 | .queries { 6 | margin: 0 auto; 7 | box-sizing: content-box; 8 | width: 100%; 9 | 10 | @for $i from 2 through $columns { 11 | @container (min-width: #{$width * $i + ($gap * ($i - 1))}px) { 12 | width: #{$width * $i + ($gap * ($i - 1))}px; 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/components/MasonryColumns/MasonryContainer.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const queries: string; 2 | -------------------------------------------------------------------------------- /src/components/MasonryColumns/MasonryGrid.module.scss: -------------------------------------------------------------------------------- 1 | .empty { 2 | // The height will be set inline via style={{ height: columnWidth }} 3 | } 4 | 5 | .grid { 6 | display: grid; 7 | justify-content: center; 8 | /* The following will be set inline via style: 9 | grid-template-columns, 10 | column-gap, 11 | row-gap 12 | */ 13 | } -------------------------------------------------------------------------------- /src/components/MasonryColumns/MasonryGrid.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const grid: string; 2 | -------------------------------------------------------------------------------- /src/components/MasonryColumns/UniformGrid.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const empty: string; 2 | export declare const grid: string; 3 | export declare const gridItem: string; 4 | -------------------------------------------------------------------------------- /src/components/Modals/CardDecorationModal.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const decorations: string; 2 | export declare const hideMobile: string; 3 | export declare const preview: string; 4 | export declare const showMobile: string; 5 | -------------------------------------------------------------------------------- /src/components/Modals/GenerationQualityFeedbackModal.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const actions: string; 2 | export declare const submitButton: string; 3 | -------------------------------------------------------------------------------- /src/components/Modals/SendTipModal.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const actions: string; 2 | export declare const cancelButton: string; 3 | export declare const chipGroup: string; 4 | export declare const iconWrapper: string; 5 | export declare const label: string; 6 | export declare const presetCard: string; 7 | export declare const sendIcon: string; 8 | export declare const submitButton: string; 9 | -------------------------------------------------------------------------------- /src/components/Model/Generation/ModelGenerationCard.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const iconWrapper: string; 2 | export declare const label: string; 3 | export declare const nextButton: string; 4 | export declare const root: string; 5 | -------------------------------------------------------------------------------- /src/components/Model/ModelURN/ModelURN.module.scss: -------------------------------------------------------------------------------- 1 | .code { 2 | border-radius: 0; 3 | line-height: 1.2; 4 | padding-left: 4px; 5 | padding-right: 4px; 6 | cursor: pointer; 7 | } -------------------------------------------------------------------------------- /src/components/Model/ModelURN/ModelURN.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const code: string; 2 | -------------------------------------------------------------------------------- /src/components/Model/ModelVersionList/ModelVersionList.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const arrowButton: string; 2 | export declare const hidden: string; 3 | export declare const leftArrow: string; 4 | export declare const rightArrow: string; 5 | export declare const scrollContainer: string; 6 | export declare const viewport: string; 7 | -------------------------------------------------------------------------------- /src/components/Model/ModelVersions/ModelVersionDetails.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const ctaContainer: string; 2 | export declare const mainSection: string; 3 | -------------------------------------------------------------------------------- /src/components/NewsletterDialog/NewsletterDialog.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const bannerFigure: string; 2 | export declare const bannerImageWrapper: string; 3 | export declare const bannerRoot: string; 4 | export declare const dialogRoot: string; 5 | -------------------------------------------------------------------------------- /src/components/Newsroom/FeaturedArticle.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const action: string; 2 | export declare const card: string; 3 | export declare const imageContainer: string; 4 | export declare const stack: string; 5 | export declare const text: string; 6 | export declare const title: string; 7 | -------------------------------------------------------------------------------- /src/components/Newsroom/MediaKit.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const description: string; 2 | export declare const descriptionButton: string; 3 | export declare const descriptionText: string; 4 | export declare const descriptionTitle: string; 5 | export declare const kit: string; 6 | export declare const media: string; 7 | export declare const mediaRow: string; 8 | -------------------------------------------------------------------------------- /src/components/Newsroom/PressMentions.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const articles: string; 2 | export declare const card: string; 3 | export declare const publishDate: string; 4 | export declare const source: string; 5 | export declare const title: string; 6 | -------------------------------------------------------------------------------- /src/components/Notifications/NotificationTabs.module.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/src/components/Notifications/NotificationTabs.module.scss -------------------------------------------------------------------------------- /src/components/Notifications/NotificationsDrawer.module.scss: -------------------------------------------------------------------------------- 1 | .inner { 2 | @media (min-width: theme('screens.xs')) { 3 | top: var(--header-height); 4 | height: calc(100% - var(--header-height)); 5 | } 6 | } 7 | 8 | .body { 9 | height: 100%; 10 | padding: 0; 11 | } 12 | -------------------------------------------------------------------------------- /src/components/Notifications/NotificationsDrawer.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const body: string; 2 | export declare const inner: string; 3 | -------------------------------------------------------------------------------- /src/components/Onboarding/OnboardingContentExperience.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const glowing: string; 2 | export declare const newsletterBot: string; 3 | export declare const newsletterCard: string; 4 | -------------------------------------------------------------------------------- /src/components/Onboarding/OnboardingWizard.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const separator: string; 2 | export declare const step: string; 3 | export declare const stepBody: string; 4 | export declare const stepCompletedIcon: string; 5 | export declare const stepDescription: string; 6 | export declare const stepIcon: string; 7 | export declare const steps: string; 8 | -------------------------------------------------------------------------------- /src/components/Post/EditV2/EditPostTags.module.scss: -------------------------------------------------------------------------------- 1 | .active { 2 | background: light-dark(var(--mantine-color-gray-0), var(--mantine-color-dark-7)); 3 | cursor: pointer; 4 | } 5 | 6 | .categoryIcon { 7 | stroke-width: 0; 8 | fill: var(--mantine-color-blue-6); 9 | margin-top: 1px; 10 | } 11 | -------------------------------------------------------------------------------- /src/components/Post/EditV2/EditPostTags.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const active: string; 2 | export declare const categoryIcon: string; 3 | -------------------------------------------------------------------------------- /src/components/Profile/ImageCSSAspectRatioWrap.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const actions: string; 2 | export declare const cover: string; 3 | export declare const wrap: string; 4 | -------------------------------------------------------------------------------- /src/components/Profile/ProfileHeader.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const coverImage: string; 2 | export declare const coverImageNsfwActions: string; 3 | export declare const coverImageWrapper: string; 4 | export declare const message: string; 5 | export declare const profileSection: string; 6 | export declare const profileSectionWithCoverImage: string; 7 | -------------------------------------------------------------------------------- /src/components/Profile/ProfileLayout.module.scss: -------------------------------------------------------------------------------- 1 | .sidebar { 2 | width: 320px; 3 | height: 100%; 4 | background: light-dark( 5 | var(--mantine-color-gray-0), 6 | var(--mantine-color-dark-6) 7 | ); 8 | 9 | @container (max-width: theme('screens.sm')) { 10 | display: none; 11 | } 12 | } 13 | 14 | .root { 15 | display: flex; 16 | flex: 1; 17 | height: 100%; 18 | } 19 | -------------------------------------------------------------------------------- /src/components/Profile/ProfileLayout.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const root: string; 2 | export declare const sidebar: string; 3 | -------------------------------------------------------------------------------- /src/components/Profile/Sections/RecentReviewsSection.module.scss: -------------------------------------------------------------------------------- 1 | .title { 2 | @container (max-width: theme('screens.sm')) { 3 | font-size: 24px; 4 | } 5 | } 6 | 7 | .ContainerGrid { 8 | @container (max-width: theme('screens.sm')) { 9 | flex-direction: column-reverse; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/components/Profile/Sections/RecentReviewsSection.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const containerGrid: string; 2 | export declare const title: string; 3 | -------------------------------------------------------------------------------- /src/components/Profile/Sections/ShowcaseGrid.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const container: string; 2 | export declare const grid: string; 3 | export declare const gridCarousel: string; 4 | export declare const scrollArea: string; 5 | -------------------------------------------------------------------------------- /src/components/Profile/ShowcaseItemsInput.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const selectedItemRemove: string; 2 | export declare const selectedItemsGrid: string; 3 | -------------------------------------------------------------------------------- /src/components/PurchasableRewards/PurchasableRewards.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const renderHtmlYoutube: string; 2 | export declare const rewardCard: string; 3 | -------------------------------------------------------------------------------- /src/components/PurchasableRewards/PurchasableRewardsModeratorFiltersDropdown.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const actionButton: string; 2 | export declare const indicatorIndicator: string; 3 | export declare const indicatorRoot: string; 4 | export declare const label: string; 5 | export declare const opened: string; 6 | -------------------------------------------------------------------------------- /src/components/Questions/QuestionAnswerComments.module.scss: -------------------------------------------------------------------------------- 1 | .list { 2 | border-top: 1px solid light-dark(var(--mantine-color-dark-4), var(--mantine-color-gray-3)); 3 | } 4 | 5 | .listItem { 6 | padding: var(--mantine-spacing-sm); 7 | border-bottom: 1px solid light-dark(var(--mantine-color-dark-4), var(--mantine-color-gray-3)); 8 | } -------------------------------------------------------------------------------- /src/components/Questions/QuestionAnswerComments.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const list: string; 2 | export declare const listItem: string; 3 | -------------------------------------------------------------------------------- /src/components/Questions/Questions.Provider.module.scss: -------------------------------------------------------------------------------- 1 | .title { 2 | overflow-wrap: break-word; 3 | 4 | @container (max-width: theme('screens.sm')) { 5 | font-size: 16px; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/components/Questions/Questions.Provider.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const title: string; 2 | -------------------------------------------------------------------------------- /src/components/RedeemableCode/RedeemCodeModal.module.scss: -------------------------------------------------------------------------------- 1 | .cancelButton { 2 | @container (max-width: var(--mantine-breakpoint-sm, 768px)) { 3 | width: 100%; 4 | order: 2; 5 | } 6 | } 7 | 8 | .submitButton { 9 | @container (max-width: var(--mantine-breakpoint-sm, 768px)) { 10 | width: 100%; 11 | order: 1; 12 | } 13 | } -------------------------------------------------------------------------------- /src/components/RedeemableCode/RedeemCodeModal.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const cancelButton: string; 2 | export declare const submitButton: string; 3 | -------------------------------------------------------------------------------- /src/components/RenderHtml/RenderHtml.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const htmlRenderer: string; 2 | -------------------------------------------------------------------------------- /src/components/Resizable/ResizeableSidebar.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const content: string; 2 | export declare const left: string; 3 | export declare const resizer: string; 4 | export declare const right: string; 5 | export declare const sidebar: string; 6 | -------------------------------------------------------------------------------- /src/components/Resource/Files.module.scss: -------------------------------------------------------------------------------- 1 | .dropzoneReject { 2 | &[data-reject] { 3 | background: var(--mantine-color-dark-5); 4 | border-color: var(--mantine-color-dark-4); 5 | } 6 | } -------------------------------------------------------------------------------- /src/components/Resource/Files.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const dropzoneReject: string; 2 | -------------------------------------------------------------------------------- /src/components/Resource/Forms/ModelUpsertForm.module.scss: -------------------------------------------------------------------------------- 1 | .availabilityChip { 2 | height: auto; 3 | overflow: hidden; 4 | 5 | > label { 6 | width: 100%; 7 | height: auto; 8 | padding: 16px 0; 9 | 10 | &[data-checked] { 11 | border: 2px solid; 12 | border-color: theme('colors.blue.5'); 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/components/Resource/Forms/ModelUpsertForm.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const availabilityChip: string; 2 | -------------------------------------------------------------------------------- /src/components/ResourceReview/EditResourceReview.module.scss: -------------------------------------------------------------------------------- 1 | .richTextEditorContent { 2 | min-height: 50px; 3 | max-height: 500px; 4 | padding: 0; 5 | font-size: 12px; 6 | 7 | :global .ProseMirror { 8 | padding: 6px 10px; 9 | min-height: 22px; 10 | cursor: text; 11 | 12 | :global p.is-editor-empty:first-of-type::before { 13 | font-size: 12px; 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/components/ResourceReview/EditUserResourceReview.module.scss: -------------------------------------------------------------------------------- 1 | .opened { 2 | transform: rotate(180deg); 3 | transition: transform 200ms ease; 4 | } -------------------------------------------------------------------------------- /src/components/ResourceReview/EditUserResourceReview.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const opened: string; 2 | -------------------------------------------------------------------------------- /src/components/ResourceReview/ResourceReviewThumbActions.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const button: string; 2 | export declare const mantineButtonLeftIcon: string; 3 | -------------------------------------------------------------------------------- /src/components/ResourceReview/Summary/ResourceReviewSummary.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const badgeText: string; 2 | export declare const grid: string; 3 | -------------------------------------------------------------------------------- /src/components/RunStrategy/RunPartners.module.scss: -------------------------------------------------------------------------------- 1 | .premiumPartner { 2 | .mantine-Badge-root { 3 | padding: 2px 8px; 4 | } 5 | } -------------------------------------------------------------------------------- /src/components/RunStrategy/RunPartners.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const mantineBadgeRoot: string; 2 | export declare const premiumPartner: string; 3 | -------------------------------------------------------------------------------- /src/components/Search/CustomSearchComponents.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const divider: string; 2 | export declare const input: string; 3 | export declare const root: string; 4 | export declare const wrapper: string; 5 | -------------------------------------------------------------------------------- /src/components/Search/SearchHeader.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const control: string; 2 | export declare const indicator: string; 3 | export declare const label: string; 4 | export declare const root: string; 5 | export declare const wrapper: string; 6 | -------------------------------------------------------------------------------- /src/components/Search/SearchLayout.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const active: string; 2 | export declare const filterButton: string; 3 | export declare const grid: string; 4 | export declare const root: string; 5 | export declare const scrollable: string; 6 | export declare const sidebar: string; 7 | -------------------------------------------------------------------------------- /src/components/SelectMenu/SelectMenu.module.scss: -------------------------------------------------------------------------------- 1 | .root { 2 | z-index: 400; 3 | } 4 | 5 | .body { 6 | padding: 0 16px 16px 16px; 7 | overflow: auto; 8 | } 9 | 10 | .content { 11 | // height: auto; 12 | } 13 | 14 | .header { 15 | padding: 4px 8px; 16 | } 17 | 18 | .close { 19 | height: 32px; 20 | width: 32px; 21 | 22 | & > svg { 23 | width: 24px; 24 | height: 24px; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/components/SelectMenu/SelectMenu.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const body: string; 2 | export declare const close: string; 3 | export declare const content: string; 4 | export declare const header: string; 5 | export declare const root: string; 6 | -------------------------------------------------------------------------------- /src/components/Shop/ShopSection.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const backgroundImage: string; 2 | export declare const section: string; 3 | export declare const sectionDescription: string; 4 | export declare const sectionHeaderContainer: string; 5 | export declare const sectionHeaderContainerWithBackground: string; 6 | export declare const sectionHeaderContentWrap: string; 7 | export declare const sectionTitle: string; 8 | -------------------------------------------------------------------------------- /src/components/SkeletonSwitch/SkeletonSwitch.tsx: -------------------------------------------------------------------------------- 1 | import type { SwitchProps } from '@mantine/core'; 2 | import { Skeleton, Switch } from '@mantine/core'; 3 | 4 | export const SkeletonSwitch = ({ loading, ...props }: { loading: boolean } & SwitchProps) => { 5 | return ( 6 | <Skeleton height={20} width={40} radius="lg" visible={loading}> 7 | <Switch {...props} /> 8 | </Skeleton> 9 | ); 10 | }; 11 | -------------------------------------------------------------------------------- /src/components/Social/LiveNow.module.scss: -------------------------------------------------------------------------------- 1 | .liveNow { 2 | cursor: pointer; 3 | 4 | &::before { 5 | animation: blink 2s linear infinite; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/components/Social/LiveNow.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const blink: string; 2 | export declare const liveNow: string; 3 | -------------------------------------------------------------------------------- /src/components/StartRating/StarRating.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const gauge: string; 2 | -------------------------------------------------------------------------------- /src/components/Stripe/MembershipUpsell.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const card: string; 2 | export declare const listItem: string; 3 | export declare const mantineTextRoot: string; 4 | export declare const subtitle: string; 5 | export declare const title: string; 6 | -------------------------------------------------------------------------------- /src/components/Subscriptions/SubscriptionRequiredBlock.module.scss: -------------------------------------------------------------------------------- 1 | .guardedContent { 2 | position: relative; 3 | 4 | &::after { 5 | content: ''; 6 | position: absolute; 7 | top: 0; 8 | left: 0; 9 | width: 100%; 10 | height: 100%; 11 | background: transparent; 12 | z-index: 1; 13 | cursor: pointer; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/components/Subscriptions/SubscriptionRequiredBlock.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const guardedContent: string; 2 | -------------------------------------------------------------------------------- /src/components/Tags/TagsInput.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const badge: string; 2 | export declare const createOption: string; 3 | export declare const dropdown: string; 4 | export declare const inner: string; 5 | -------------------------------------------------------------------------------- /src/components/ToggleList/ToggleList.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const active: string; 2 | export declare const item: string; 3 | -------------------------------------------------------------------------------- /src/components/Tool/ToolFiltersDropdown.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const body: string; 2 | export declare const close: string; 3 | export declare const content: string; 4 | export declare const header: string; 5 | -------------------------------------------------------------------------------- /src/components/Training/Form/ImageSelectFilters.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const body: string; 2 | export declare const close: string; 3 | export declare const content: string; 4 | export declare const header: string; 5 | export declare const indicatorIndicator: string; 6 | export declare const indicatorRoot: string; 7 | export declare const opened: string; 8 | export declare const root: string; 9 | -------------------------------------------------------------------------------- /src/components/Training/Form/TrainingImages.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const badLabel: string; 2 | export declare const imgOverlay: string; 3 | export declare const source: string; 4 | export declare const trash: string; 5 | export declare const trashIcon: string; 6 | -------------------------------------------------------------------------------- /src/components/Training/Form/TrainingImagesCaptionViewer.module.scss: -------------------------------------------------------------------------------- 1 | .hiText { 2 | :global .DraftEditor-root { 3 | height: 100px; 4 | scrollbar-width: thin; 5 | overflow-y: auto; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/components/Training/Form/TrainingImagesCaptionViewer.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const draftEditorRoot: string; 2 | export declare const hiText: string; 3 | -------------------------------------------------------------------------------- /src/components/TwCosmeticWrapper/CosmeticWrapper.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const border: string; 2 | export declare const cssFrame: string; 3 | export declare const glow: string; 4 | export declare const texture: string; 5 | export declare const wrapper: string; 6 | -------------------------------------------------------------------------------- /src/components/User/UserModelsTable.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const header: string; 2 | export declare const scrolled: string; 3 | -------------------------------------------------------------------------------- /src/components/UserAvatar/UserAvatarSimple.module.scss: -------------------------------------------------------------------------------- 1 | .username { 2 | vertical-align: middle; 3 | filter: drop-shadow(1px 1px 1px rgba(0, 0, 0, 0.2)); 4 | } 5 | 6 | :global([data-mantine-color-scheme="dark"]) { 7 | .username { 8 | filter: drop-shadow(1px 1px 1px rgba(0, 0, 0, 0.8)); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/components/UserAvatar/UserAvatarSimple.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const username: string; 2 | -------------------------------------------------------------------------------- /src/components/Vault/VaultItemsFiltersDropdown.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const body: string; 2 | export declare const close: string; 3 | export declare const content: string; 4 | export declare const header: string; 5 | -------------------------------------------------------------------------------- /src/components/VimeoEmbed/VimeoEmbed.module.scss: -------------------------------------------------------------------------------- 1 | .vimeoWrapper { 2 | position: relative; 3 | overflow: hidden; 4 | background: #000; 5 | 6 | & iframe { 7 | position: absolute; 8 | top: 0; 9 | left: 0; 10 | width: 100%; 11 | height: 100%; 12 | & body { 13 | background: #000; 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/components/VimeoEmbed/VimeoEmbed.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const vimeoWrapper: string; 2 | -------------------------------------------------------------------------------- /src/env/other.ts: -------------------------------------------------------------------------------- 1 | export const isDev = process.env.NODE_ENV === 'development'; 2 | export const isProd = process.env.NODE_ENV === 'production'; 3 | export const isTest = process.env.NODE_ENV === 'test'; 4 | -------------------------------------------------------------------------------- /src/hooks/hidden-preferences/index.ts: -------------------------------------------------------------------------------- 1 | export * from './useHiddenPreferences'; 2 | export * from './useToggleHiddenPreferences'; 3 | -------------------------------------------------------------------------------- /src/hooks/useCreateStore.ts: -------------------------------------------------------------------------------- 1 | import { useState } from 'react'; 2 | import { createStore } from 'zustand'; 3 | 4 | export function useCreateStore<TStore extends Record<string, unknown>>(defaultValues: TStore) { 5 | const [store] = useState(() => createStore<TStore>(() => ({ ...defaultValues }))); 6 | 7 | return store; 8 | } 9 | -------------------------------------------------------------------------------- /src/hooks/useIsClient.ts: -------------------------------------------------------------------------------- 1 | import { useIsClient } from '~/providers/IsClientProvider'; 2 | 3 | export default useIsClient; 4 | -------------------------------------------------------------------------------- /src/hooks/useIsomorphicLayoutEffect.ts: -------------------------------------------------------------------------------- 1 | import { useLayoutEffect, useEffect } from 'react'; 2 | 3 | export const useIsomorphicLayoutEffect = 4 | typeof window !== 'undefined' ? useLayoutEffect : useEffect; 5 | -------------------------------------------------------------------------------- /src/libs/auth.ts: -------------------------------------------------------------------------------- 1 | import { env } from '~/env/client'; 2 | 3 | export const useSecureCookies = env.NEXT_PUBLIC_BASE_URL?.startsWith('https://'); 4 | const cookiePrefix = useSecureCookies ? '__Secure-' : ''; 5 | 6 | export const civitaiTokenCookieName = `${cookiePrefix}civitai-token`; 7 | export const callbackCookieName = `${cookiePrefix}next-auth.callback-url`; 8 | -------------------------------------------------------------------------------- /src/libs/form/components/CosmeticSelect.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const decoration: string; 2 | export declare const noContent: string; 3 | export declare const noContentNoUrl: string; 4 | export declare const selected: string; 5 | -------------------------------------------------------------------------------- /src/libs/form/components/MultiFileInputUpload.module.scss: -------------------------------------------------------------------------------- 1 | .dropzone { 2 | &[data-reject], &[data-reject]:hover, &[data-accept], &[data-accept]:hover { 3 | background-color: var(--mantine-color-dark-5); 4 | border-color: var(--mantine-color-dark-4); 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/libs/form/components/MultiFileInputUpload.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const dropzone: string; 2 | -------------------------------------------------------------------------------- /src/libs/form/components/PresetOptions.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const iconWrapper: string; 2 | export declare const label: string; 3 | -------------------------------------------------------------------------------- /src/libs/form/components/SimpleImageUpload.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const imageContainer: string; 2 | export declare const imageContainerAspectRatio: string; 3 | -------------------------------------------------------------------------------- /src/libs/form/index.ts: -------------------------------------------------------------------------------- 1 | export * from './components'; 2 | export * from './hooks/useForm'; 3 | -------------------------------------------------------------------------------- /src/libs/generation/utils/constants.ts: -------------------------------------------------------------------------------- 1 | export const maxResolution = 3840; 2 | export const minResolution = 200; 3 | -------------------------------------------------------------------------------- /src/libs/helpers.module.scss: -------------------------------------------------------------------------------- 1 | .hideMobile { 2 | @media (max-width: calc(theme('screens.xs') - 1px)) { 3 | display: none; 4 | } 5 | } 6 | 7 | .showMobile { 8 | @media (min-width: theme('screens.xs')) { 9 | display: none; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/libs/helpers.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const hideMobile: string; 2 | export declare const showMobile: string; 3 | -------------------------------------------------------------------------------- /src/libs/slots/use-force-update.ts: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | export const useForceUpdate = () => { 4 | const [, rerender] = React.useState({}); 5 | return React.useCallback(() => rerender({}), []); 6 | }; 7 | -------------------------------------------------------------------------------- /src/libs/slots/useIsomorphicLayoutEffect.ts: -------------------------------------------------------------------------------- 1 | import { useEffect, useLayoutEffect } from 'react'; 2 | 3 | const useIsomorphicLayoutEffect = 4 | typeof window !== 'undefined' && 5 | typeof window.document !== 'undefined' && 6 | typeof window.document.createElement !== 'undefined' 7 | ? useLayoutEffect 8 | : useEffect; 9 | 10 | export default useIsomorphicLayoutEffect; 11 | -------------------------------------------------------------------------------- /src/pages/404.tsx: -------------------------------------------------------------------------------- 1 | import type { NextPage } from 'next'; 2 | import React from 'react'; 3 | import { NotFound } from '~/components/AppLayout/NotFound'; 4 | 5 | const FourOhFour: NextPage = () => { 6 | return <NotFound />; 7 | }; 8 | 9 | export default FourOhFour; 10 | -------------------------------------------------------------------------------- /src/pages/api/admin/header-check.ts: -------------------------------------------------------------------------------- 1 | import type { NextApiRequest, NextApiResponse } from 'next'; 2 | import { WebhookEndpoint } from '~/server/utils/endpoint-helpers'; 3 | 4 | const handler = WebhookEndpoint(async (req: NextApiRequest, res: NextApiResponse) => { 5 | return res.status(200).json({ 6 | headers: req.headers, 7 | }); 8 | }); 9 | 10 | export default handler; 11 | -------------------------------------------------------------------------------- /src/pages/api/internal/get-jobs.ts: -------------------------------------------------------------------------------- 1 | import type { NextApiRequest, NextApiResponse } from 'next'; 2 | import { JobEndpoint } from '~/server/utils/endpoint-helpers'; 3 | import { jobs } from '~/pages/api/webhooks/run-jobs/[[...run]]'; 4 | 5 | export default JobEndpoint(async function getJobs(req: NextApiRequest, res: NextApiResponse) { 6 | return res.status(200).json(Array.from(jobs)); 7 | }); 8 | -------------------------------------------------------------------------------- /src/pages/bounties/[id]/entries/[entryId]/index.module.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/src/pages/bounties/[id]/entries/[entryId]/index.module.scss -------------------------------------------------------------------------------- /src/pages/home/index.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | margin-top: -12px; 3 | 4 | & > *:nth-of-type(even) { 5 | background: light-dark( 6 | darken(var(--mantine-color-gray-0), 0.01), 7 | var(--mantine-color-dark-8) 8 | ) 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/pages/testing/demo.tsx: -------------------------------------------------------------------------------- 1 | import { Container } from '@mantine/core'; 2 | import { RunPartners } from '~/components/RunStrategy/RunPartners'; 3 | 4 | export default function Demo() { 5 | return ( 6 | <Container size="xs"> 7 | <RunPartners modelVersionId={1144} /> 8 | </Container> 9 | ); 10 | } 11 | -------------------------------------------------------------------------------- /src/pages/user/[username]/[list].module.scss: -------------------------------------------------------------------------------- 1 | .striped { 2 | li { 3 | display: flex; 4 | padding: calc(var(--mantine-spacing-xs) * 0.8); // 8px 5 | 6 | &:nth-of-type(2n) { 7 | background: light-dark( 8 | var(--mantine-color-gray-0), 9 | var(--mantine-color-dark-8) 10 | ); 11 | } 12 | } 13 | } -------------------------------------------------------------------------------- /src/pages/user/[username]/models.module.scss: -------------------------------------------------------------------------------- 1 | .filtersWrapper { 2 | @container (max-width: theme('screens.sm')) { 3 | width: 100%; 4 | 5 | >* { 6 | flex-grow: 1; 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/pages/user/membership.module.css: -------------------------------------------------------------------------------- 1 | .card { 2 | height: '100%'; 3 | background: light-dark( 4 | var(--mantine-color-gray-0), 5 | var(--mantine-color-dark-8) 6 | ); 7 | border-radius: var(--mantine-radius-md); 8 | padding: var(--mantine-spacing-lg); 9 | 10 | } 11 | 12 | .price { 13 | font-size: rem(48px); 14 | font-weight: 700; 15 | } 16 | -------------------------------------------------------------------------------- /src/server/controllers/announcement.controller.ts: -------------------------------------------------------------------------------- 1 | import { Context } from '~/server/createContext'; 2 | import { throwDbError } from '~/server/utils/errorHandling'; 3 | -------------------------------------------------------------------------------- /src/server/jobs/dummy-job.ts: -------------------------------------------------------------------------------- 1 | import { sleep } from '~/server/utils/concurrency-helpers'; 2 | import { createJob, UNRUNNABLE_JOB_CRON } from './job'; 3 | 4 | export const dummyJob = createJob('dummy', UNRUNNABLE_JOB_CRON, async () => { 5 | await sleep(10000); 6 | }); 7 | -------------------------------------------------------------------------------- /src/server/jobs/next-auth-cleanup.ts: -------------------------------------------------------------------------------- 1 | import { createJob } from './job'; 2 | import { dbWrite } from '~/server/db/client'; 3 | 4 | export const nextauthCleanup = createJob('next-auth-cleanup', '0 0 * * *', async () => { 5 | // Clean verification tokens 6 | dbWrite.verificationToken.deleteMany({ 7 | where: { 8 | expires: { 9 | lt: new Date(), 10 | }, 11 | }, 12 | }); 13 | }); 14 | -------------------------------------------------------------------------------- /src/server/notifications/detail-fetchers/base.detail-fetcher.ts: -------------------------------------------------------------------------------- 1 | import type { PrismaClient } from '@prisma/client'; 2 | import type { BareNotification } from '~/server/notifications/base.notifications'; 3 | 4 | export function createDetailFetcher(fetcher: { 5 | types: string[]; 6 | fetcher: (notifications: BareNotification[], ctx: { db: PrismaClient }) => Promise<void>; 7 | }) { 8 | return fetcher; 9 | } 10 | -------------------------------------------------------------------------------- /src/server/orchestrator/infrastructure/base.enums.ts: -------------------------------------------------------------------------------- 1 | export type GenerationType = keyof typeof GenerationType; 2 | export const GenerationType = { 3 | txt2img: 'txt2img', 4 | img2img: 'img2img', 5 | txt2vid: 'txt2vid', 6 | img2vid: 'img2vid', 7 | } as const; 8 | 9 | export const GenerationPriorityLevelMap = { 10 | high: 10, 11 | normal: 20, 12 | low: 30, 13 | }; 14 | -------------------------------------------------------------------------------- /src/server/orchestrator/infrastructure/base.utils.ts: -------------------------------------------------------------------------------- 1 | export function unsupportedGenerationType(type: string) { 2 | return new Error(`unsupported ${type} enhancement type`); 3 | } 4 | -------------------------------------------------------------------------------- /src/server/orchestrator/video-enhancement/video-enhancement.schema.ts: -------------------------------------------------------------------------------- 1 | import z from 'zod'; 2 | 3 | export type VideoEnhancementSchema = z.infer<typeof videoEnhancementSchema>; 4 | export const videoEnhancementSchema = z.object({ 5 | sourceUrl: z.string(), 6 | width: z.number(), 7 | height: z.number(), 8 | multiplier: z.number().optional(), 9 | params: z.record(z.any()), 10 | }); 11 | -------------------------------------------------------------------------------- /src/server/routers/build-guide.router.ts: -------------------------------------------------------------------------------- 1 | import { publicProcedure, router } from '~/server/trpc'; 2 | import { getBuildGuides } from '~/server/services/build-guide.services'; 3 | 4 | export const buildGuideRouter = router({ 5 | getAll: publicProcedure.query(() => getBuildGuides()), 6 | }); 7 | -------------------------------------------------------------------------------- /src/server/routers/partner.router.ts: -------------------------------------------------------------------------------- 1 | import { router, publicProcedure } from '~/server/trpc'; 2 | import { getAllPartners } from '~/server/services/partner.service'; 3 | 4 | export const partnerRouter = router({ 5 | getAll: publicProcedure.query(() => getAllPartners()), 6 | }); 7 | -------------------------------------------------------------------------------- /src/server/routers/reaction.router.ts: -------------------------------------------------------------------------------- 1 | import { toggleReactionHandler } from './../controllers/reaction.controller'; 2 | import { toggleReactionSchema } from './../schema/reaction.schema'; 3 | import { router, guardedProcedure } from '~/server/trpc'; 4 | 5 | export const reactionRouter = router({ 6 | toggle: guardedProcedure.input(toggleReactionSchema).mutation(toggleReactionHandler), 7 | }); 8 | -------------------------------------------------------------------------------- /src/server/routers/signals.router.ts: -------------------------------------------------------------------------------- 1 | import { getUserAccountHandler } from '~/server/controllers/signals.controller'; 2 | import { protectedProcedure, router } from '~/server/trpc'; 3 | 4 | export const signalsRouter = router({ 5 | getToken: protectedProcedure.query(getUserAccountHandler), 6 | }); 7 | -------------------------------------------------------------------------------- /src/server/schema/civToken.schema.ts: -------------------------------------------------------------------------------- 1 | import { z } from 'zod'; 2 | 3 | export const civTokenEndpoint = '/api/auth/civ-token'; 4 | export const impersonateEndpoint = '/api/auth/impersonate'; 5 | 6 | export const encryptedDataSchema = z.object({ 7 | iv: z.string(), 8 | data: z.string(), 9 | signedAt: z.string(), 10 | }); 11 | export type EncryptedDataSchema = z.infer<typeof encryptedDataSchema>; 12 | -------------------------------------------------------------------------------- /src/server/schema/donation-goal.schema.ts: -------------------------------------------------------------------------------- 1 | import { z } from 'zod'; 2 | 3 | export type DonateToGoalInput = z.infer<typeof donateToGoalInput>; 4 | export const donateToGoalInput = z.object({ 5 | amount: z.number(), 6 | donationGoalId: z.number(), 7 | }); 8 | -------------------------------------------------------------------------------- /src/server/schema/integration.schema.ts: -------------------------------------------------------------------------------- 1 | import { z } from 'zod'; 2 | 3 | export const airConfirmSchema = z.object({ 4 | email: z.string().email(), 5 | }); 6 | -------------------------------------------------------------------------------- /src/server/schema/newsletter.schema.ts: -------------------------------------------------------------------------------- 1 | import { z } from 'zod'; 2 | 3 | export type UpdateSubscriptionSchema = z.infer<typeof updateSubscriptionSchema>; 4 | export const updateSubscriptionSchema = z.object({ 5 | subscribed: z.boolean(), 6 | email: z.string().trim().email().optional(), 7 | }); 8 | -------------------------------------------------------------------------------- /src/server/schema/orchestrator/models.schema.ts: -------------------------------------------------------------------------------- 1 | import { z } from 'zod'; 2 | 3 | export const getModelByAirSchema = z.object({ 4 | air: z.string(), 5 | }); 6 | -------------------------------------------------------------------------------- /src/server/schema/paypal.schema.ts: -------------------------------------------------------------------------------- 1 | import { z } from 'zod'; 2 | 3 | export type PaypalPurchaseBuzzSchema = z.infer<typeof paypalPurchaseBuzzSchema>; 4 | export const paypalPurchaseBuzzSchema = z.object({ 5 | amount: z.number(), 6 | }); 7 | 8 | export type PaypalOrderSchema = z.infer<typeof paypalOrderSchema>; 9 | export const paypalOrderSchema = z.object({ 10 | orderId: z.string(), 11 | }); 12 | -------------------------------------------------------------------------------- /src/server/schema/user-payment-configuration.schema.ts: -------------------------------------------------------------------------------- 1 | import { z } from 'zod'; 2 | 3 | export const getTipaltiDashbordUrlSchema = z.object({ 4 | type: z.enum(['setup', 'paymentHistory']).default('setup'), 5 | }); 6 | export type GetTipaltiDashbordUrlSchema = z.infer<typeof getTipaltiDashbordUrlSchema>; 7 | -------------------------------------------------------------------------------- /src/server/selectors/modelHash.selector.ts: -------------------------------------------------------------------------------- 1 | import { Prisma } from '@prisma/client'; 2 | 3 | export const modelHashSelect = Prisma.validator<Prisma.ModelHashSelect>()({ 4 | hash: true, 5 | }); 6 | 7 | const modelHash = Prisma.validator<Prisma.ModelHashFindManyArgs>()({ 8 | select: modelHashSelect, 9 | }); 10 | export type ModelHashModel = Prisma.ModelHashGetPayload<typeof modelHash>; 11 | -------------------------------------------------------------------------------- /src/server/utils/chat.ts: -------------------------------------------------------------------------------- 1 | import { uniq } from 'lodash-es'; 2 | 3 | export const getChatHash = (userIds: number[]) => { 4 | return uniq(userIds) 5 | .sort((a, b) => a - b) 6 | .join('-'); 7 | }; 8 | 9 | export const getUsersFromHash = (hash: string) => { 10 | return hash.split('-').map((id) => parseInt(id, 10)); 11 | }; 12 | -------------------------------------------------------------------------------- /src/server/utils/react-templates/fonts/Montserrat-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/src/server/utils/react-templates/fonts/Montserrat-Bold.ttf -------------------------------------------------------------------------------- /src/server/utils/react-templates/fonts/Montserrat-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/civitai/civitai/5387825ff3f93ef4dfd1e438ed214e6198c17ca5/src/server/utils/react-templates/fonts/Montserrat-Regular.ttf -------------------------------------------------------------------------------- /src/shared/types/generation.types.ts: -------------------------------------------------------------------------------- 1 | import { z } from 'zod'; 2 | 3 | type NodeRef = [string, number]; 4 | export type ComfyNode = { 5 | inputs: Record<string, number | string | NodeRef>; 6 | class_type: string; 7 | _meta?: Record<string, string>; 8 | _children?: { node: ComfyNode; inputKey: string }[]; 9 | }; 10 | -------------------------------------------------------------------------------- /src/shared/types/image.types.ts: -------------------------------------------------------------------------------- 1 | import type { ImageMetaProps } from '~/server/schema/image.schema'; 2 | 3 | export type ImageModel = { 4 | id: number; 5 | url: string; 6 | name: string | null; 7 | meta?: ImageMetaProps | null; 8 | createdAt: Date | null; 9 | }; 10 | -------------------------------------------------------------------------------- /src/shared/utils/index.ts: -------------------------------------------------------------------------------- 1 | export * from './flags'; 2 | export * from './cookies'; 3 | -------------------------------------------------------------------------------- /src/static-content/feature-introduction/article-create.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: How to Write Articles 3 | --- 4 | 5 | [How to a create an article](https://www.youtube.com/embed/UtSYryt1tm8?si=_ob0qha3rRM6G5CA) 6 | -------------------------------------------------------------------------------- /src/static-content/feature-introduction/bounty-create.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: How to Create a Bounty 3 | --- 4 | 5 | [How to a create a bounty](https://www.youtube.com/embed/uxaM_Oneqb0?si=DP90DZr_diWN_KpR) 6 | -------------------------------------------------------------------------------- /src/static-content/feature-introduction/bounty-submit-entry.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: How to Submit a Bounty Entry 3 | --- 4 | 5 | [How to submit a bounty entry](https://www.youtube.com/embed/uxaM_Oneqb0?si=ZZJwfkCRx5dtxUda&start=185) 6 | -------------------------------------------------------------------------------- /src/static-content/feature-introduction/image-generator.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: How to Use the On-site Image Generator 3 | --- 4 | 5 | [How to use the on-site image generator](https://www.youtube.com/embed/KXBvHa0Fg-I?si=qRntq94FVD8AwOci) 6 | -------------------------------------------------------------------------------- /src/static-content/feature-introduction/model-training.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'How to Use the On-site LoRA Trainer' 3 | --- 4 | 5 | [How to use the on-site LoRA trainer](https://www.youtube.com/embed/F1V8EyHez70?si=ttG0uSf5mmHHROEb) 6 | -------------------------------------------------------------------------------- /src/static-content/feature-introduction/model-upload.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: How to Upload a Model 3 | --- 4 | 5 | [How to upload a model](https://www.youtube.com/embed/mX56glbORAQ?si=5GQJOZIKvcrKXTP8) 6 | -------------------------------------------------------------------------------- /src/static-content/feature-introduction/post-images.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 'How to Post Images and Videos' 3 | --- 4 | 5 | [How to post images](https://www.youtube.com/embed/ZM3P0TZofo8?si=ii05kp619RlP-57l) 6 | -------------------------------------------------------------------------------- /src/static-content/feature-introduction/stripe-connect.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: How to setup stripe connect 3 | --- 4 | 5 | [How to setup stripe connect](https://drive.google.com/file/d/1Jq542oE2ine6XNEwTxmoLTHxyyxppxHJ/preview) 6 | -------------------------------------------------------------------------------- /src/static-content/feature-introduction/welcome.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Welcome to Civitai! 3 | --- 4 | 5 | [Welcome to Civitai](https://www.youtube.com/embed/q9SAalOFwkg?si=ikR_dgOL0T55u9_a) 6 | -------------------------------------------------------------------------------- /src/store/tip.store.ts: -------------------------------------------------------------------------------- 1 | import { create } from 'zustand'; 2 | import { persist } from 'zustand/middleware'; 3 | 4 | export const useTipStore = create<{ civitaiTip: number; creatorTip: number }>()( 5 | persist(() => ({ civitaiTip: 0, creatorTip: 0.25 }), { name: 'tips' }) 6 | ); 7 | -------------------------------------------------------------------------------- /src/styles/utils.module.scss.d.ts: -------------------------------------------------------------------------------- 1 | export declare const gradientBox: string; 2 | export declare const gradientContainer: string; 3 | export declare const heading: string; 4 | export declare const heading3: string; 5 | export declare const heading4: string; 6 | export declare const heroContainer: string; 7 | export declare const heroText: string; 8 | export declare const heroTitle: string; 9 | -------------------------------------------------------------------------------- /src/types/tour.ts: -------------------------------------------------------------------------------- 1 | import type { Step } from 'react-joyride'; 2 | 3 | export interface StepData { 4 | onNext?: () => Promise<void>; 5 | onPrev?: () => Promise<void>; 6 | onBeforeStart?: () => Promise<void>; 7 | } 8 | 9 | export type StepWithData = Step & { data?: StepData }; 10 | -------------------------------------------------------------------------------- /src/types/type-guards.d.ts: -------------------------------------------------------------------------------- 1 | export {}; 2 | 3 | declare global { 4 | type Prettify<T> = { 5 | [K in keyof T]: T[K]; 6 | } & NonNullable<unknown>; 7 | 8 | type MakeUndefinedOptional<T> = Prettify< 9 | { 10 | [K in keyof T as undefined extends T[K] ? never : K]: T[K]; 11 | } & { 12 | [K in keyof T as undefined extends T[K] ? K : never]?: T[K]; 13 | } 14 | >; 15 | } 16 | -------------------------------------------------------------------------------- /src/utils/deferred.ts: -------------------------------------------------------------------------------- 1 | export class Deferred<T = void, E = unknown> { 2 | promise: Promise<T>; 3 | resolve: (value: T | PromiseLike<T>) => void = () => null; 4 | reject: (reason?: E) => void = () => null; 5 | 6 | constructor() { 7 | this.promise = new Promise((resolve, reject) => { 8 | this.resolve = resolve; 9 | this.reject = reject; 10 | }); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/utils/device-helpers.js: -------------------------------------------------------------------------------- 1 | export const isTouchDevice = () => typeof document !== 'undefined' && 'ontouchstart' in document.documentElement 2 | -------------------------------------------------------------------------------- /src/utils/get-client-stripe.ts: -------------------------------------------------------------------------------- 1 | import { env } from '~/env/client'; 2 | 3 | export const getClientStripe = async () => { 4 | if (!env.NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY) return null; 5 | 6 | return import('@stripe/stripe-js').then(({ loadStripe }) => 7 | loadStripe(env.NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY!) 8 | ); 9 | }; 10 | -------------------------------------------------------------------------------- /src/utils/lazy-motion.ts: -------------------------------------------------------------------------------- 1 | import { domAnimation } from 'motion/react'; 2 | 3 | export default domAnimation; 4 | -------------------------------------------------------------------------------- /src/utils/lazy.ts: -------------------------------------------------------------------------------- 1 | export async function getJSZip() { 2 | const JSZip = (await import('jszip')).default; 3 | return new JSZip(); 4 | } 5 | -------------------------------------------------------------------------------- /src/utils/map-helpers.ts: -------------------------------------------------------------------------------- 1 | export function findKeyForValue<K, V>(m: Map<K, V[]>, v: V): K | undefined { 2 | for (const [k, vs] of m) { 3 | if (vs.includes(v)) return k; 4 | } 5 | return undefined; 6 | } 7 | -------------------------------------------------------------------------------- /src/utils/tailwind.ts: -------------------------------------------------------------------------------- 1 | export const breakpoints = { 2 | xs: '480px', 3 | sm: '768px', 4 | md: '1024px', 5 | lg: '1184px', 6 | xl: '1440px', 7 | }; 8 | -------------------------------------------------------------------------------- /tests/utils.ts: -------------------------------------------------------------------------------- 1 | import { Request } from 'playwright'; 2 | 3 | export const apiResp = (d: any, meta?: any) => { 4 | return { 5 | result: { 6 | data: { 7 | json: d, 8 | meta: meta ?? {}, 9 | }, 10 | }, 11 | }; 12 | }; 13 | 14 | export const parseRequestParams = (request: Request) => { 15 | return JSON.parse(request.postData() ?? '{}').json?.params ?? {}; 16 | }; 17 | --------------------------------------------------------------------------------