Skip to content
Merged

Dev #15

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
213 changes: 0 additions & 213 deletions examples/calculator.rb

This file was deleted.

12 changes: 10 additions & 2 deletions examples/ruflet_studio/app.rb
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ class App < Ruflet::App
def view(page)
page.title = "Gallery"
page.scroll = "auto"
page.bgcolor = "#111318"
page.bgcolor = color_bg(page)

page.on_route_change = ->(_e) { render(page) }

Expand All @@ -36,6 +36,7 @@ def view(page)
def render(page)
route = (page.route || "/gallery").split("?").first
route = "/gallery" if route == "/"
page.bgcolor = color_bg(page)

case route
when "/home"
Expand All @@ -46,7 +47,8 @@ def render(page)
page.views = [settings_view(page)]
when "/counter"
page.views = [detail_view(page, "Counter", build_counter(page, status_text(page)),
source_path: "examples/ruflet_studio/sections_controls/counter.rb")]
source_path: "examples/ruflet_studio/sections_controls
/counter.rb")]
when "/todo"
page.views = [detail_view(page, "To-do", build_todo(page, status_text(page)),
source_path: "examples/ruflet_studio/sections_controls/todo.rb")]
Expand Down Expand Up @@ -80,6 +82,12 @@ def render(page)
when "/video"
page.views = [detail_view(page, "Video Player", build_video(page, status_text(page)),
source_path: "examples/ruflet_studio/sections_media/video.rb")]
when "/webview"
page.views = [detail_view(page, "WebView", build_webview(page, status_text(page)),
source_path: "examples/ruflet_studio/sections_media/webview.rb",
scroll: nil,
horizontal_alignment: "stretch",
padding: 0)]
when "/flashlight"
page.views = [detail_view(page, "Flashlight", build_flashlight(page, status_text(page)),
source_path: "examples/ruflet_studio/sections_media/flashlight.rb")]
Expand Down
40 changes: 28 additions & 12 deletions examples/ruflet_studio/helpers.rb
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,10 @@ def effective_theme(page)
end

def set_theme(page, mode)
@theme_mode = %w[system light dark].include?(mode) ? mode : "system"
normalized = mode.to_s.strip.downcase
return unless %w[system light dark].include?(normalized)

@theme_mode = normalized
page.go(page.route || "/settings")
end

Expand All @@ -72,16 +75,22 @@ def theme_colors(page)
text: "#1f2328",
subtle: "#6c757d",
icon: "#495057",
divider: "#dee2e6"
divider: "#dee2e6",
panel: "#f1f3f5",
nav_indicator: "#dbe4ff",
accent: "#4c6ef5"
}
else
{
bg: "#111318",
surface: "#111318",
text: "#e7e9ec",
subtle: "#9aa0a6",
icon: "#cfd4da",
divider: "#2a2e36"
bg: "#e8edf3",
surface: "#f8fafc",
text: "#1f2328",
subtle: "#5c6773",
icon: "#3f4954",
divider: "#cfd6de",
panel: "#eef2f6",
nav_indicator: "#cfe0ff",
accent: "#3b5bdb"
}
end
end
Expand All @@ -93,22 +102,29 @@ def color_text(page) = theme_colors(page)[:text]
def color_subtle(page) = theme_colors(page)[:subtle]
def color_icon(page) = theme_colors(page)[:icon]
def color_divider(page) = theme_colors(page)[:divider]
def color_panel(page) = theme_colors(page)[:panel]
def color_nav_indicator(page) = theme_colors(page)[:nav_indicator]
def color_accent(page) = theme_colors(page)[:accent]

def read_number(data, key)
return nil unless data
return data if data.is_a?(Numeric)
return data.to_f if data.is_a?(String) && data.match?(/\A-?\d+(\.\d+)?\z/)
return data[key] if data.is_a?(Hash) && data[key].is_a?(Numeric)
if data.is_a?(Hash) && data[key]
return data[key].to_f
if data.is_a?(Hash)
raw = data[key] || data[key.to_s] || data[key.to_sym]
return raw if raw.is_a?(Numeric)
return raw.to_f if raw
end
nil
end

def read_string(data, key)
return nil unless data
return data if data.is_a?(String)
return data[key] if data.is_a?(Hash) && data[key].is_a?(String)
if data.is_a?(Hash)
raw = data[key] || data[key.to_s] || data[key.to_sym]
return raw if raw.is_a?(String)
end
nil
end

Expand Down
Loading
Loading