web_lib

Common web application libraries
git clone https://radroots.dev/git/web_lib.git
Log | Files | Refs | LICENSE

commit 32a71db51fa4c06f79f8695676b5d54a4ddb0af7
parent 98b9f5e3f45792d769666b574113adc3d80c59e0
Author: triesap <137732411+triesap@users.noreply.github.com>
Date:   Sat, 28 Sep 2024 09:08:17 +0000

apps-lib: edit ui style maps, add css dimensions, add locales

Diffstat:
Mapps-lib/src/lib/index.ts | 1+
Mapps-lib/src/lib/locales/en/icu.json | 1+
Mapps-lib/src/lib/types/ui.ts | 5+++--
Aapps-lib/src/lib/ui/css_dim.svelte | 3+++
Mapps-lib/src/lib/ui/glyph.svelte | 49+++++++++++++++++++++++++++++++++----------------
Mapps-lib/src/lib/ui/loading.svelte | 23++++++++++++-----------
6 files changed, 53 insertions(+), 29 deletions(-)

diff --git a/apps-lib/src/lib/index.ts b/apps-lib/src/lib/index.ts @@ -1,6 +1,7 @@ export * from "./locales/i18n"; export { default as SelectElement } from "./ui/select_element.svelte"; export { default as Toast } from "./ui/toast.svelte"; +export { default as CssDim } from "./ui/css_dim.svelte"; export { default as CssStatic } from "./ui/css_static.svelte"; export { default as Divider } from "./ui/divider.svelte"; export { default as LabelSwap } from "./ui/label_swap.svelte"; diff --git a/apps-lib/src/lib/locales/en/icu.json b/apps-lib/src/lib/locales/en/icu.json @@ -1,4 +1,5 @@ { + "unconnected_*": "Unconnected {value}", "connected_*": "Connected {value}", "no_*_published": "No {value} published", "*_as": "{value} as", diff --git a/apps-lib/src/lib/types/ui.ts b/apps-lib/src/lib/types/ui.ts @@ -1,4 +1,4 @@ -import type { CallbackPromiseGeneric, GeometryCardinalDirection, GeometryGlyphDimension, ICbGOpt, ICbOpt, IClOpt, IFormField, ILy, ILyOptTs } from "$lib"; +import type { CallbackPromiseGeneric, GeometryCardinalDirection, GeometryDimension, GeometryGlyphDimension, ICbGOpt, ICbOpt, IClOpt, IFormField, ILy, ILyOptTs } from "$lib"; import type { ThemeLayer } from "@radroots/theme"; export type GlyphKeyCurrency = `dollar` | `eur`; @@ -91,11 +91,12 @@ export type IGlyph = ICbOpt & { weight?: GlyphWeight; key: GlyphKey; dim?: GeometryGlyphDimension; + fill_under?: boolean; }; export type ILoadingBlades = 6 | 12; -export type ILoadingDimension = GeometryGlyphDimension | `glyph-send-button`; +export type ILoadingDimension = GeometryDimension | `glyph-send-button`; export type ILoading = { classes?: string; diff --git a/apps-lib/src/lib/ui/css_dim.svelte b/apps-lib/src/lib/ui/css_dim.svelte @@ -0,0 +1,2 @@ +<div class="h-[13px] w-[13px] h-[16px] w-[16px] h-[20px] w-[20px] h-[28px] w-[28px] h-[36px] w-[36px]"></div> +<div class="text-[12px] text-[13px] text-[15px] text-[16px] text-[18px] text-[20px] text-[21px] text-[23px] text-[24px] text-[27px] text-[28px] text-[30px] text-[36px] text-[40px]"></div> +\ No newline at end of file diff --git a/apps-lib/src/lib/ui/glyph.svelte b/apps-lib/src/lib/ui/glyph.svelte @@ -2,20 +2,22 @@ import type { GeometryGlyphDimension } from "../types/client"; import type { IGlyph } from "../types/ui"; import { fmt_cl } from "../utils/client"; + import Fill from "./fill.svelte"; - const glyph_map: Map<GeometryGlyphDimension, string> = new Map([ - [`xs--`, `text-[12px]`], - [`xs-`, `text-[13px]`], - [`xs`, `text-[15px]`], - [`xs+`, `text-[18px]`], - [`sm`, `text-[20px]`], - [`sm+`, `text-[21px]`], - [`md-`, `text-[23px]`], - [`md`, `text-[24px]`], - [`md+`, `text-[27px]`], - [`lg`, `text-[28px]`], - [`xl`, `text-[30px]`], - [`xl+`, `text-[40px]`], + type StyleMap = { gl_1: number; dim_2?: number }; + const style_map: Map<GeometryGlyphDimension, StyleMap> = new Map([ + ["xs--", { gl_1: 12 }], + ["xs-", { gl_1: 13 }], + ["xs", { gl_1: 15 }], + ["xs+", { gl_1: 18 }], + ["sm", { gl_1: 20 }], + ["sm+", { gl_1: 21 }], + ["md-", { gl_1: 23 }], + ["md", { gl_1: 24 }], + ["md+", { gl_1: 27 }], + ["lg", { gl_1: 28 }], + ["xl", { gl_1: 30 }], + ["xl+", { gl_1: 40 }], ]); export let basis: IGlyph; @@ -24,14 +26,29 @@ $: weight = !basis?.weight || basis?.weight === `regular` ? `` : `-${basis.weight}`; - $: dimension = basis?.dim ? glyph_map.get(basis.dim) : glyph_map.get(`sm`); + $: styles = basis?.dim ? style_map.get(basis.dim) : style_map.get(`sm`); </script> <button - class={`${fmt_cl(basis.classes)} flex flex-row justify-center items-center transition-all ${dimension}`} + class={`relative flex flex-col justify-center items-center transition-all`} on:click={async () => { if (basis.callback) await basis.callback(); }} > - <i class="ph{weight} ph-{basis.key}"></i> + <div + class={`${fmt_cl(basis.classes)} z-10 flex flex-row justify-start items-center text-[${styles.gl_1}px]`} + > + <i class="ph{weight} ph-{basis.key}"></i> + </div> + {#if basis.fill_under && styles.dim_2} + <div + class={`z-5 absolute top-0 left-0 flex flex-row w-full justify-center items-center`} + > + <div + class={`flex flex-row h-[${styles.dim_2}px] w-[${styles.dim_2}px] justify-start items-center translate-y-[10px] bg-white/80 rounded-full`} + > + <Fill /> + </div> + </div> + {/if} </button> diff --git a/apps-lib/src/lib/ui/loading.svelte b/apps-lib/src/lib/ui/loading.svelte @@ -1,27 +1,28 @@ <script lang="ts"> - import { fmt_cl, type ILoading, type ILoadingDimension } from "$lib"; + import { type ILoading, type ILoadingDimension } from "$lib"; - export const lm: Map<ILoadingDimension, [string, string]> = new Map([ - [`xl`, [`h-[36px] w-[36px]`, `text-[22px]`]], - [`lg`, [`h-[32px] w-[32px]`, `text-[18px]`]], - [`md`, [`h-[32px] w-[32px]`, `text-[18px]`]], - [`sm`, [`h-[32px] w-[32px]`, `text-[18px]`]], - [`xs`, [`h-[20px] w-[20px]`, `text-[16px]`]], - [`glyph-send-button`, [`h-[20px] w-[20px]`, `text-[18px]`]], + type StyleMap = { dim_1: number; gl_1: number }; + export const style_map: Map<ILoadingDimension, StyleMap> = new Map([ + ["glyph-send-button", { dim_1: 20, gl_1: 20 }], + ["xs", { dim_1: 13, gl_1: 13 }], + ["sm", { dim_1: 16, gl_1: 16 }], + ["md", { dim_1: 20, gl_1: 20 }], + ["lg", { dim_1: 28, gl_1: 28 }], + ["xl", { dim_1: 36, gl_1: 36 }], ]); export let basis: ILoading | undefined = undefined; $: basis = basis; - $: dim = lm.get(basis?.dim || "sm"); + $: styles = basis?.dim ? style_map.get(basis?.dim) : style_map.get("sm"); $: num_blades = basis?.blades || 12; </script> <div - class={`relative flex flex-row justify-center items-center ${fmt_cl(dim?.[0])} fade-in transition-all`} + class={`relative flex flex-row justify-center items-center h-[${styles.dim_1}px] w-[${styles.dim_1}px] fade-in transition-all`} > <div - class={`${num_blades === 12 ? `spinner12 center` : `spinner6 center`} ${fmt_cl(dim?.[1])}`} + class={`${num_blades === 12 ? `spinner12 center` : `spinner6 center`} text-[${styles.gl_1 || styles.dim_1}px]`} > <div class={`${num_blades === 12 ? `spinner12-blade` : `spinner6-blade`}`}