#ifndef INFINITE_CANVAS_THEME_H
#define INFINITE_CANVAS_THEME_H

#include "dowa/dowa.h"
#include "third_party/raylib/include/raylib.h"

typedef enum {
    CANVAS_THEME_AUTO = 0,
    CANVAS_THEME_LIGHT,
    CANVAS_THEME_DARK,
} Canvas_Theme_Mode;

typedef struct {
    Canvas_Theme_Mode requested_mode;
    Canvas_Theme_Mode resolved_mode;
    Color background;
    Color surface;
    Color surface_muted;
    Color border;
    Color text;
    Color text_muted;
    Color accent;
    Color accent_soft;
    Color shadow;
    Color toast_surface;
    Color toast_border;
} Canvas_Theme;

Canvas_Theme_Mode Canvas_Theme_Mode_From_String(const char *p_value);
boolean Canvas_System_Prefers_Dark(void);
void Canvas_Theme_Resolve(Canvas_Theme *p_theme, Canvas_Theme_Mode mode);
void Canvas_Theme_Toggle(Canvas_Theme *p_theme);
void Canvas_Theme_Draw_Shadow(
    const Canvas_Theme *p_theme,
    Rectangle bounds,
    float roundness,
    int32 segments,
    float zoom,
    float opacity);

#endif
