···11import gleam/dynamic/decode
2233/// Get the color scheme of the user's system (media query)
44-@external(javascript, "./dom_ffi.ts", "get_color_scheme")
44+@external(javascript, "./dom_ffi.mjs", "get_color_scheme")
55pub fn get_color_scheme() -> String
6677-@external(javascript, "./dom_ffi.ts", "classfoundintree")
77+@external(javascript, "./dom_ffi.mjs", "classfoundintree")
88pub fn classfoundintree(element: decode.Dynamic, class_name: String) -> Bool
+31
client/src/lumina_client/dom_ffi.mjs
···11+/**
22+ * @description Returns the color scheme of the user
33+ * @see https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-color-scheme
44+ * @returns {string}
55+ */
66+export function get_color_scheme() {
77+ // Media queries the preferred color colorscheme
88+99+ if (window.matchMedia("(prefers-color-scheme: dark)").matches) {
1010+ return "dark";
1111+ }
1212+ return "light";
1313+}
1414+1515+/**
1616+ * @description Goes up the DOM tree to see if a class is found
1717+ * @returns {boolean}
1818+ * @param {HTMLElement} starting_element
1919+ * @param {string} className
2020+ */
2121+export function classfoundintree(starting_element, className) {
2222+ let element = starting_element;
2323+ do {
2424+ if (element.classList && element.classList.contains(className)) {
2525+ return true;
2626+ }
2727+ // Might be null if we reach the top of the tree
2828+ element = element.parentElement;
2929+ } while (element);
3030+ return false;
3131+}
-19
client/src/lumina_client/dom_ffi.ts
···11-export function get_color_scheme() {
22- // Media queries the preferred color colorscheme
33-44- if (window.matchMedia("(prefers-color-scheme: dark)").matches) {
55- return "dark";
66- }
77- return "light";
88-}
99-1010-export function classfoundintree(starting_element: HTMLElement, className: string): boolean {
1111- let element: HTMLElement | null = starting_element;
1212- do {
1313- if (element.classList && element.classList.contains(className)) {
1414- return true;
1515- }
1616- element = element.parentElement as HTMLElement | null;
1717- } while (element);
1818- return false;
1919-}