Rebrand app as RanaZe Step 3 Trainer
This commit is contained in:
@@ -51,7 +51,7 @@ func _build_ui() -> void:
|
||||
scroll.add_child(page)
|
||||
|
||||
var title := Label.new()
|
||||
title.text = "Support MedMind"
|
||||
title.text = "Support RanaZe"
|
||||
title.add_theme_font_override("font", Brand.font)
|
||||
title.add_theme_font_size_override("font_size", 36)
|
||||
page.add_child(title)
|
||||
@@ -79,7 +79,7 @@ func _build_ui() -> void:
|
||||
mission.add_theme_constant_override("separation", 18)
|
||||
mission_panel.add_child(mission)
|
||||
mission.add_child(_heading("Our mission", 26))
|
||||
mission.add_child(_body("MedMind exists to make rigorous, clinically grounded medical education more accessible. We are building an independent Step 3 study experience that helps learners develop clinical judgment through original questions, realistic CCS cases, transparent explanations, and continuous improvement driven by learner feedback."))
|
||||
mission.add_child(_body("RanaZe exists to make rigorous, clinically grounded medical education more accessible. We are building an independent Step 3 study experience that helps learners develop clinical judgment through original questions, realistic CCS cases, transparent explanations, and continuous improvement driven by learner feedback."))
|
||||
mission.add_child(HSeparator.new())
|
||||
mission.add_child(_heading("What your support makes possible", 20))
|
||||
for item_text in [
|
||||
@@ -215,7 +215,7 @@ func _on_checkout_started(_donation_id: String, _checkout_url: String) -> void:
|
||||
|
||||
func _on_donation_status_changed(status: String, _donation: Dictionary) -> void:
|
||||
match status:
|
||||
"paid": _set_validation_state("Thank you for supporting MedMind. Your contribution has been confirmed.", false, Brand.SUCCESS)
|
||||
"paid": _set_validation_state("Thank you for supporting RanaZe. Your contribution has been confirmed.", false, Brand.SUCCESS)
|
||||
"failed": _set_validation_state("Stripe could not complete the contribution. No payment was confirmed.", true)
|
||||
"expired": _set_validation_state("The checkout session expired. Start a new checkout when you are ready.", true)
|
||||
|
||||
|
||||
+36
-25
@@ -126,27 +126,37 @@ func _build_ui() -> void:
|
||||
brand_row.add_theme_constant_override("separation", 24)
|
||||
left_brand.add_child(brand_row)
|
||||
var large_icon := TextureRect.new()
|
||||
large_icon.texture = preload("res://assets/branding/medmind-icon.png")
|
||||
large_icon.texture = Brand.ranaze_mark_texture()
|
||||
large_icon.custom_minimum_size = Vector2(190, 190)
|
||||
large_icon.expand_mode = TextureRect.EXPAND_IGNORE_SIZE
|
||||
large_icon.stretch_mode = TextureRect.STRETCH_KEEP_ASPECT_CENTERED
|
||||
large_icon.material = Brand.logo_cutout_material()
|
||||
brand_row.add_child(large_icon)
|
||||
var wordmark := HBoxContainer.new()
|
||||
wordmark.add_theme_constant_override("separation", 0)
|
||||
var wordmark := VBoxContainer.new()
|
||||
wordmark.add_theme_constant_override("separation", 4)
|
||||
brand_row.add_child(wordmark)
|
||||
var med_wordmark := Label.new()
|
||||
med_wordmark.text = "Med"
|
||||
med_wordmark.add_theme_font_size_override("font_size", 76)
|
||||
med_wordmark.add_theme_font_override("font", Brand.font)
|
||||
wordmark.add_child(med_wordmark)
|
||||
var mind_wordmark := Label.new()
|
||||
mind_wordmark.text = "Mind"
|
||||
mind_wordmark.add_theme_font_size_override("font_size", 76)
|
||||
mind_wordmark.add_theme_font_override("font", Brand.font)
|
||||
mind_wordmark.add_theme_color_override("font_color", Brand.PURPLE)
|
||||
mind_wordmark.set_meta("brand_accent", true)
|
||||
wordmark.add_child(mind_wordmark)
|
||||
var name_row := HBoxContainer.new()
|
||||
name_row.add_theme_constant_override("separation", 0)
|
||||
wordmark.add_child(name_row)
|
||||
var rana_wordmark := Label.new()
|
||||
rana_wordmark.text = "Rana"
|
||||
rana_wordmark.add_theme_font_size_override("font_size", 76)
|
||||
rana_wordmark.add_theme_font_override("font", Brand.font)
|
||||
name_row.add_child(rana_wordmark)
|
||||
var ze_wordmark := Label.new()
|
||||
ze_wordmark.text = "Ze"
|
||||
ze_wordmark.add_theme_font_size_override("font_size", 76)
|
||||
ze_wordmark.add_theme_font_override("font", Brand.font)
|
||||
ze_wordmark.add_theme_color_override("font_color", Brand.SKY_BLUE)
|
||||
ze_wordmark.set_meta("brand_accent", true)
|
||||
name_row.add_child(ze_wordmark)
|
||||
var trainer_wordmark := Label.new()
|
||||
trainer_wordmark.text = "STEP 3 TRAINER"
|
||||
trainer_wordmark.add_theme_font_size_override("font_size", 22)
|
||||
trainer_wordmark.add_theme_font_override("font", Brand.font)
|
||||
trainer_wordmark.add_theme_color_override("font_color", Brand.muted_color(true))
|
||||
trainer_wordmark.set_meta("brand_subtitle", true)
|
||||
trainer_wordmark.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
|
||||
wordmark.add_child(trainer_wordmark)
|
||||
brand_tagline = RichTextLabel.new()
|
||||
brand_tagline.bbcode_enabled = true
|
||||
brand_tagline.fit_content = true
|
||||
@@ -177,11 +187,10 @@ func _build_ui() -> void:
|
||||
panel_header.add_theme_constant_override("separation", 18)
|
||||
panel_content.add_child(panel_header)
|
||||
var small_icon := TextureRect.new()
|
||||
small_icon.texture = preload("res://assets/branding/medmind-icon.png")
|
||||
small_icon.texture = Brand.ranaze_mark_texture()
|
||||
small_icon.custom_minimum_size = Vector2(72, 72)
|
||||
small_icon.expand_mode = TextureRect.EXPAND_IGNORE_SIZE
|
||||
small_icon.stretch_mode = TextureRect.STRETCH_KEEP_ASPECT_CENTERED
|
||||
small_icon.material = Brand.logo_cutout_material()
|
||||
panel_header.add_child(small_icon)
|
||||
var titles := VBoxContainer.new()
|
||||
titles.size_flags_horizontal = Control.SIZE_EXPAND_FILL
|
||||
@@ -231,7 +240,7 @@ func _build_login_view() -> VBoxContainer:
|
||||
view.add_child(steam)
|
||||
submit_buttons.append(steam)
|
||||
var create := Button.new()
|
||||
create.text = "New to MedMind? Create an account"
|
||||
create.text = "New to RanaZe? Create an account"
|
||||
create.flat = true
|
||||
create.pressed.connect(func(): _set_mode("register"))
|
||||
view.add_child(create)
|
||||
@@ -272,12 +281,12 @@ func _build_reset_view() -> VBoxContainer:
|
||||
func _build_steam_view() -> VBoxContainer:
|
||||
var view := _new_form()
|
||||
var help := Label.new()
|
||||
help.text = "Steam was verified. Create a MedMind account or link an existing one."
|
||||
help.text = "Steam was verified. Create a RanaZe account or link an existing one."
|
||||
help.autowrap_mode = TextServer.AUTOWRAP_WORD_SMART
|
||||
view.add_child(help)
|
||||
steam_action = OptionButton.new()
|
||||
steam_action.add_item("Create a new MedMind account")
|
||||
steam_action.add_item("Link an existing MedMind account")
|
||||
steam_action.add_item("Create a new RanaZe account")
|
||||
steam_action.add_item("Link an existing RanaZe account")
|
||||
steam_action.item_selected.connect(_on_steam_action_changed)
|
||||
view.add_child(steam_action)
|
||||
steam_username_input = _add_field(view, "Username or email", "Choose a username")
|
||||
@@ -405,9 +414,9 @@ func _set_mode(next_mode: String) -> void:
|
||||
reset_view.visible = mode == "reset"
|
||||
steam_view.visible = mode == "steam"
|
||||
match mode:
|
||||
"register": heading.text = "Create your account"; subheading.text = "Start studying with MedMind"
|
||||
"register": heading.text = "Create your account"; subheading.text = "Start studying with RanaZe"
|
||||
"reset": heading.text = "Reset your password"; subheading.text = "We will email you a verification code"
|
||||
"steam": heading.text = "Finish Steam sign in"; subheading.text = "Connect Steam to MedMind"
|
||||
"steam": heading.text = "Finish Steam sign in"; subheading.text = "Connect Steam to RanaZe"
|
||||
_: heading.text = "Welcome back"; subheading.text = "Sign in to continue"
|
||||
_clear_message()
|
||||
_update_responsive_layout()
|
||||
@@ -467,7 +476,9 @@ func _apply_theme() -> void:
|
||||
for node in find_children("*", "Label", true, false):
|
||||
var label := node as Label
|
||||
if label.has_meta("brand_accent"):
|
||||
label.add_theme_color_override("font_color", Brand.PURPLE if dark else Brand.ROYAL_BLUE)
|
||||
label.add_theme_color_override("font_color", Brand.SKY_BLUE if dark else Brand.ROYAL_BLUE)
|
||||
elif label.has_meta("brand_subtitle"):
|
||||
label.add_theme_color_override("font_color", Brand.muted_color(dark))
|
||||
else:
|
||||
label.add_theme_color_override("font_color", Brand.text_color(dark))
|
||||
for input in fields:
|
||||
|
||||
+14
-15
@@ -358,8 +358,7 @@ func _populate_navigation(container: VBoxContainer, include_brand: bool) -> void
|
||||
brand_row.add_theme_constant_override("separation", 10)
|
||||
container.add_child(brand_row)
|
||||
var mark := TextureRect.new()
|
||||
mark.texture = preload("res://assets/branding/medmind-icon.png")
|
||||
mark.material = Brand.logo_cutout_material()
|
||||
mark.texture = Brand.ranaze_mark_texture()
|
||||
mark.custom_minimum_size = Vector2(46, 46)
|
||||
mark.expand_mode = TextureRect.EXPAND_IGNORE_SIZE
|
||||
mark.stretch_mode = TextureRect.STRETCH_KEEP_ASPECT_CENTERED
|
||||
@@ -367,17 +366,17 @@ func _populate_navigation(container: VBoxContainer, include_brand: bool) -> void
|
||||
var wordmark := HBoxContainer.new()
|
||||
wordmark.add_theme_constant_override("separation", 0)
|
||||
brand_row.add_child(wordmark)
|
||||
var med := Label.new()
|
||||
med.text = "Med"
|
||||
med.add_theme_font_override("font", Brand.font)
|
||||
med.add_theme_font_size_override("font_size", 27)
|
||||
wordmark.add_child(med)
|
||||
var mind := Label.new()
|
||||
mind.text = "Mind"
|
||||
mind.add_theme_font_override("font", Brand.font)
|
||||
mind.add_theme_font_size_override("font_size", 27)
|
||||
mind.add_theme_color_override("font_color", Brand.PURPLE)
|
||||
wordmark.add_child(mind)
|
||||
var rana := Label.new()
|
||||
rana.text = "Rana"
|
||||
rana.add_theme_font_override("font", Brand.font)
|
||||
rana.add_theme_font_size_override("font_size", 27)
|
||||
wordmark.add_child(rana)
|
||||
var ze := Label.new()
|
||||
ze.text = "Ze"
|
||||
ze.add_theme_font_override("font", Brand.font)
|
||||
ze.add_theme_font_size_override("font_size", 27)
|
||||
ze.add_theme_color_override("font_color", Brand.SKY_BLUE)
|
||||
wordmark.add_child(ze)
|
||||
container.add_child(HSeparator.new())
|
||||
|
||||
_add_nav_button(container, "home", "Dashboard", "chart-no-axes-column-increasing", true)
|
||||
@@ -391,7 +390,7 @@ func _populate_navigation(container: VBoxContainer, include_brand: bool) -> void
|
||||
spacer.size_flags_vertical = Control.SIZE_EXPAND_FILL
|
||||
container.add_child(spacer)
|
||||
container.add_child(HSeparator.new())
|
||||
_add_nav_button(container, "donations", "Support MedMind", "heart-pulse", true)
|
||||
_add_nav_button(container, "donations", "Support RanaZe", "heart-pulse", true)
|
||||
_add_nav_button(container, "performance", "Profile", "user-round", true)
|
||||
_add_nav_button(container, "settings", "Settings", "settings", true)
|
||||
_add_nav_button(container, "logout", "Log out", "log-out", true)
|
||||
@@ -448,7 +447,7 @@ func _update_header_title(screen_name: String) -> void:
|
||||
"settings": "Settings",
|
||||
"notes": "Notes",
|
||||
"bookmarks": "Bookmarks",
|
||||
"donations": "Support MedMind"
|
||||
"donations": "Support RanaZe"
|
||||
}
|
||||
header_title.text = str(titles.get(screen_name, ""))
|
||||
|
||||
|
||||
@@ -3,9 +3,9 @@ extends RefCounted
|
||||
const DEEP_NAVY := Color("0b1324")
|
||||
const ROYAL_BLUE := Color("2563eb")
|
||||
const SKY_BLUE := Color("38bdf8")
|
||||
const PURPLE := Color("7c3aed")
|
||||
const MAGENTA := Color("d946ef")
|
||||
const TEAL := Color("14b8a6")
|
||||
const PURPLE := Color("1d4ed8")
|
||||
const MAGENTA := Color("ef4444")
|
||||
const TEAL := Color("38bdf8")
|
||||
const SUCCESS := Color("22c55e")
|
||||
const AMBER := Color("f59e0b")
|
||||
const SUN_ICON := preload("res://assets/icons/lucide/sun.svg")
|
||||
@@ -22,6 +22,13 @@ const LIGHT_MUTED := Color("64748b")
|
||||
static var font: Font = preload("res://assets/fonts/Inter-Variable.ttf")
|
||||
|
||||
|
||||
static func ranaze_mark_texture() -> AtlasTexture:
|
||||
var texture := AtlasTexture.new()
|
||||
texture.atlas = preload("res://assets/branding/ranaze-mark.png")
|
||||
texture.region = Rect2(400, 150, 736, 736)
|
||||
return texture
|
||||
|
||||
|
||||
static func text_color(dark: bool) -> Color:
|
||||
return DARK_TEXT if dark else LIGHT_TEXT
|
||||
|
||||
@@ -45,8 +52,8 @@ void fragment() {
|
||||
vec3 base = dark_mode ? vec3(0.018, 0.043, 0.090) : vec3(0.965, 0.975, 0.990);
|
||||
float left_glow = 1.0 - smoothstep(0.0, 0.58, distance(uv, vec2(-0.02, 0.12)));
|
||||
float right_glow = 1.0 - smoothstep(0.0, 0.58, distance(uv, vec2(1.02, 0.92)));
|
||||
vec3 blue = dark_mode ? vec3(0.075, 0.055, 0.35) : vec3(0.70, 0.80, 1.0);
|
||||
vec3 purple = dark_mode ? vec3(0.18, 0.035, 0.52) : vec3(0.86, 0.78, 1.0);
|
||||
vec3 blue = dark_mode ? vec3(0.035, 0.16, 0.42) : vec3(0.70, 0.84, 1.0);
|
||||
vec3 purple = dark_mode ? vec3(0.02, 0.28, 0.55) : vec3(0.76, 0.90, 1.0);
|
||||
vec3 color = base + blue * left_glow * (dark_mode ? 0.55 : 0.28);
|
||||
color += purple * right_glow * (dark_mode ? 0.62 : 0.12);
|
||||
COLOR = vec4(color, 1.0);
|
||||
@@ -155,7 +162,7 @@ static func badge_box(dark: bool, accent: Color) -> StyleBoxFlat:
|
||||
|
||||
static func gradient_button_box() -> StyleBoxTexture:
|
||||
var gradient := Gradient.new()
|
||||
gradient.colors = PackedColorArray([Color("1677ff"), Color("8f3ff4")])
|
||||
gradient.colors = PackedColorArray([ROYAL_BLUE, SKY_BLUE])
|
||||
var texture := GradientTexture2D.new()
|
||||
texture.gradient = gradient
|
||||
texture.width = 512
|
||||
|
||||
@@ -90,7 +90,7 @@ func _build() -> void:
|
||||
func _profile_summary_card() -> PanelContainer:
|
||||
var body := VBoxContainer.new()
|
||||
body.add_theme_constant_override("separation", 14)
|
||||
body.add_child(_section_header("Profile Summary", "Your MedMind account"))
|
||||
body.add_child(_section_header("Profile Summary", "Your RanaZe account"))
|
||||
var row := HBoxContainer.new()
|
||||
row.add_theme_constant_override("separation", 18)
|
||||
var avatar := PanelContainer.new()
|
||||
@@ -147,7 +147,7 @@ func _study_identity_card() -> PanelContainer:
|
||||
func _performance_card() -> PanelContainer:
|
||||
var body := VBoxContainer.new()
|
||||
body.add_theme_constant_override("separation", 12)
|
||||
body.add_child(_section_header("Performance Summary", "Your cumulative MedMind activity"))
|
||||
body.add_child(_section_header("Performance Summary", "Your cumulative RanaZe activity"))
|
||||
var grid := GridContainer.new()
|
||||
grid.columns = 3
|
||||
grid.add_theme_constant_override("h_separation", 10)
|
||||
@@ -361,7 +361,7 @@ func _open_password_dialog() -> void:
|
||||
|
||||
func _open_delete_dialog() -> void:
|
||||
var dialog := _dialog("Permanently delete account")
|
||||
var warning := _label("This permanently removes your account and all MedMind study data. This cannot be undone.", 13, Brand.MAGENTA)
|
||||
var warning := _label("This permanently removes your account and all RanaZe study data. This cannot be undone.", 13, Brand.MAGENTA)
|
||||
warning.autowrap_mode = TextServer.AUTOWRAP_WORD_SMART
|
||||
dialog.add_field(warning)
|
||||
var password := _password_field("Current password")
|
||||
|
||||
@@ -25,7 +25,7 @@ func _ready() -> void:
|
||||
add_child(title)
|
||||
|
||||
var subtitle := Label.new()
|
||||
subtitle.text = "Adjust MedMind's appearance and interface sounds."
|
||||
subtitle.text = "Adjust RanaZe's appearance and interface sounds."
|
||||
subtitle.add_theme_font_override("font", Brand.font)
|
||||
subtitle.add_theme_font_size_override("font_size", 17)
|
||||
subtitle.add_theme_color_override("font_color", Brand.SLATE)
|
||||
|
||||
Reference in New Issue
Block a user