elbe-ui 0.2.30 → 0.2.37

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/dist/bit/bit.d.ts +34 -0
  2. package/dist/bit/bit.js +83 -0
  3. package/dist/bit/ctrl_bit.d.ts +30 -0
  4. package/dist/bit/ctrl_bit.js +89 -0
  5. package/dist/elbe.css +203 -284
  6. package/dist/elbe.css.map +1 -0
  7. package/dist/index.d.ts +1 -0
  8. package/dist/index.js +1 -0
  9. package/dist/service/s_api.d.ts +30 -0
  10. package/dist/service/s_api.js +89 -0
  11. package/dist/ui/components/badge.d.ts +25 -0
  12. package/dist/ui/components/badge.js +53 -0
  13. package/dist/ui/components/base/box.d.ts +2564 -0
  14. package/dist/ui/components/base/box.js +30 -0
  15. package/dist/ui/components/base/card.d.ts +14 -0
  16. package/dist/ui/components/base/card.js +11 -0
  17. package/dist/ui/components/base/padded.d.ts +25 -0
  18. package/dist/ui/components/base/padded.js +28 -0
  19. package/dist/ui/components/button/button.d.ts +21 -0
  20. package/dist/ui/components/button/button.js +27 -0
  21. package/dist/ui/components/button/choose_button.d.ts +14 -0
  22. package/dist/ui/components/button/choose_button.js +11 -0
  23. package/dist/ui/components/button/icon_button.d.ts +17 -0
  24. package/dist/ui/components/button/icon_button.js +31 -0
  25. package/dist/ui/components/button/toggle_button.d.ts +10 -0
  26. package/dist/ui/components/button/toggle_button.js +11 -0
  27. package/dist/ui/components/dialog.d.ts +8 -0
  28. package/dist/ui/components/dialog.js +14 -0
  29. package/dist/ui/components/error_view.d.ts +15 -0
  30. package/dist/ui/components/error_view.js +26 -0
  31. package/dist/ui/components/input/checkbox.d.ts +6 -0
  32. package/dist/ui/components/input/checkbox.js +12 -0
  33. package/dist/ui/components/input/input_field.d.ts +22 -0
  34. package/dist/ui/components/input/input_field.js +31 -0
  35. package/dist/ui/components/input/range.d.ts +8 -0
  36. package/dist/ui/components/input/range.js +14 -0
  37. package/dist/ui/components/input/select.d.ts +10 -0
  38. package/dist/ui/components/input/select.js +8 -0
  39. package/dist/ui/components/input/text_area.d.ts +10 -0
  40. package/dist/ui/components/input/text_area.js +13 -0
  41. package/dist/ui/components/layout/flex.d.ts +11 -0
  42. package/dist/ui/components/layout/flex.js +23 -0
  43. package/dist/ui/components/layout/scaffold.d.ts +27 -0
  44. package/dist/ui/components/layout/scaffold.js +44 -0
  45. package/dist/ui/components/layout/scroll.d.ts +18 -0
  46. package/dist/ui/components/layout/scroll.js +20 -0
  47. package/dist/ui/components/layout/spaced.d.ts +3 -0
  48. package/dist/ui/components/layout/spaced.js +7 -0
  49. package/dist/ui/components/spinner.d.ts +11 -0
  50. package/dist/ui/components/spinner.js +48 -0
  51. package/dist/ui/components/text.d.ts +33 -0
  52. package/dist/ui/components/text.js +42 -0
  53. package/dist/ui/theme/color_theme.d.ts +2 -0
  54. package/dist/ui/theme/color_theme.js +63 -0
  55. package/dist/ui/theme/colors.d.ts +142 -0
  56. package/dist/ui/theme/colors.js +317 -0
  57. package/dist/ui/theme/geometry_theme.d.ts +16 -0
  58. package/dist/ui/theme/geometry_theme.js +38 -0
  59. package/dist/ui/theme/theme.d.ts +28 -0
  60. package/dist/ui/theme/theme.js +49 -0
  61. package/dist/ui/theme/type_theme.d.ts +38 -0
  62. package/dist/ui/theme/type_theme.js +98 -0
  63. package/dist/ui/util/confirm_dialog.d.ts +10 -0
  64. package/dist/ui/util/confirm_dialog.js +46 -0
  65. package/dist/ui/util/error_view.d.ts +1 -0
  66. package/dist/ui/util/error_view.js +8 -0
  67. package/dist/ui/util/toast.d.ts +5 -0
  68. package/dist/ui/util/toast.js +17 -0
  69. package/dist/ui/util/util.d.ts +21 -0
  70. package/dist/ui/util/util.js +39 -0
  71. package/package.json +3 -6
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Scroll = void 0;
4
+ const jsx_runtime_1 = require("preact/jsx-runtime");
5
+ const preact_1 = require("preact");
6
+ const box_1 = require("../base/box");
7
+ class Scroll extends preact_1.Component {
8
+ constructor(props) {
9
+ super(props);
10
+ }
11
+ static vertical = (p) => new Scroll({ ...p, axis: "vertical" }).render();
12
+ static horizontal = (p) => new Scroll({ ...p, axis: "horizontal" }).render();
13
+ render() {
14
+ return ((0, jsx_runtime_1.jsx)("div", { ...(0, box_1.applyProps)(this.props, null, {
15
+ overflowY: this.props.axis === "vertical" ? "scroll" : "hidden",
16
+ overflowX: this.props.axis === "horizontal" ? "scroll" : "hidden",
17
+ }), children: (0, jsx_runtime_1.jsx)("div", { class: this.props.innerClass, style: this.props.axis === "horizontal" ? "min-width: min-content;" : "", children: this.props.children }) }));
18
+ }
19
+ }
20
+ exports.Scroll = Scroll;
@@ -0,0 +1,3 @@
1
+ export declare function Spaced({ amount }: {
2
+ amount?: number | undefined;
3
+ }): import("preact").JSX.Element;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Spaced = Spaced;
4
+ const jsx_runtime_1 = require("preact/jsx-runtime");
5
+ function Spaced({ amount = 1 }) {
6
+ return (0, jsx_runtime_1.jsx)("div", { style: { width: amount + "rem", height: amount + "rem" } });
7
+ }
@@ -0,0 +1,11 @@
1
+ import { Component } from "preact";
2
+ export type SpinnerProps = {
3
+ padding?: number;
4
+ };
5
+ export declare class Spinner extends Component<{
6
+ manner?: "flat" | "plain";
7
+ } & SpinnerProps> {
8
+ static flat: (p: SpinnerProps) => import("preact").JSX.Element;
9
+ static plain: (p: SpinnerProps) => import("preact").JSX.Element;
10
+ render(): import("preact").JSX.Element;
11
+ }
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Spinner = void 0;
4
+ const jsx_runtime_1 = require("preact/jsx-runtime");
5
+ const signals_1 = require("@preact/signals");
6
+ const preact_1 = require("preact");
7
+ const hooks_1 = require("preact/hooks");
8
+ function _toPath(c, yFac, yOffset = 0, clamp = [0, 1], xFac = 1) {
9
+ return c
10
+ .filter((p) => p[0] >= clamp[0] && p[0] <= clamp[1])
11
+ .map((p, i) => (i === 0 ? "M" : "L") +
12
+ (((p[0] - 0.5) * xFac + 0.5) * 100).toFixed(2) +
13
+ "," +
14
+ (p[1] * yFac + yOffset).toFixed(2))
15
+ .join(" ");
16
+ }
17
+ class Spinner extends preact_1.Component {
18
+ static flat = (p) => new Spinner({ manner: "flat", ...p }).render();
19
+ static plain = (p) => new Spinner({ manner: "plain", ...p }).render();
20
+ render() {
21
+ const flat = (this.props.manner ?? "flat") === "flat";
22
+ const xSig = (0, signals_1.useSignal)(0);
23
+ (0, hooks_1.useEffect)(() => {
24
+ const interval = setInterval(() => {
25
+ xSig.value = (xSig.value + 2) % 100;
26
+ }, 16);
27
+ return () => clearInterval(interval);
28
+ });
29
+ const path = (0, signals_1.useComputed)(() => {
30
+ const x = xSig.value;
31
+ const path = [];
32
+ for (let i = 0; i <= 1; i += 0.01) {
33
+ const pos = (i * 1 + x * 0.01) * Math.PI * 2; // angle = 0 -> 2π
34
+ const y = Math.sin(pos);
35
+ path.push([i, y]);
36
+ }
37
+ return path;
38
+ });
39
+ return ((0, jsx_runtime_1.jsx)("div", { class: `${flat ? "accent flat" : "plain"}`, style: {
40
+ padding: `${this.props.padding ?? 1}rem`,
41
+ }, children: (0, jsx_runtime_1.jsx)("svg", { style: "width: 40px; height: 40px", viewBox: `-10 -10 120 120`, children: [
42
+ _toPath(path.value, 13, 20, [0.4, 0.8], 1),
43
+ _toPath(path.value, 10, 50),
44
+ _toPath(path.value, 11, 80, [0.2, 0.6], 1),
45
+ ].map((p) => ((0, jsx_runtime_1.jsx)("path", { d: p, fill: "none", stroke: "currentcolor", "stroke-width": "10", "stroke-linecap": "round" }))) }) }));
46
+ }
47
+ }
48
+ exports.Spinner = Spinner;
@@ -0,0 +1,33 @@
1
+ import React from "preact/compat";
2
+ import type { ElbeTypeVariants } from "../theme/type_theme";
3
+ import type { ElbeChildren } from "../util/util";
4
+ import { type ElbeProps } from "./base/box";
5
+ export type TextProps = {
6
+ align?: "start" | "center" | "end";
7
+ bold?: boolean;
8
+ italic?: boolean;
9
+ underline?: boolean;
10
+ striked?: boolean;
11
+ color?: string;
12
+ size?: number;
13
+ children?: ElbeChildren;
14
+ v?: string;
15
+ } & ElbeProps;
16
+ export declare class Text extends React.Component<TextProps & {
17
+ variant?: ElbeTypeVariants;
18
+ }> {
19
+ static h1: (p: TextProps) => React.JSX.Element;
20
+ static h2: (p: TextProps) => React.JSX.Element;
21
+ static h3: (p: TextProps) => React.JSX.Element;
22
+ static h4: (p: TextProps) => React.JSX.Element;
23
+ static h5: (p: TextProps) => React.JSX.Element;
24
+ static h6: (p: TextProps) => React.JSX.Element;
25
+ static s: (p: TextProps) => React.JSX.Element;
26
+ static m: (p: TextProps) => React.JSX.Element;
27
+ static l: (p: TextProps) => React.JSX.Element;
28
+ static code: (p: TextProps) => React.JSX.Element;
29
+ constructor({ variant, ...props }: TextProps & {
30
+ variant?: ElbeTypeVariants;
31
+ });
32
+ render(): React.JSX.Element;
33
+ }
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Text = void 0;
7
+ const jsx_runtime_1 = require("preact/jsx-runtime");
8
+ const compat_1 = __importDefault(require("preact/compat"));
9
+ const box_1 = require("./base/box");
10
+ class Text extends compat_1.default.Component {
11
+ static h1 = (p) => (0, jsx_runtime_1.jsx)(Text, { ...p, variant: "h1" });
12
+ static h2 = (p) => (0, jsx_runtime_1.jsx)(Text, { ...p, variant: "h2" });
13
+ static h3 = (p) => (0, jsx_runtime_1.jsx)(Text, { ...p, variant: "h3" });
14
+ static h4 = (p) => (0, jsx_runtime_1.jsx)(Text, { ...p, variant: "h4" });
15
+ static h5 = (p) => (0, jsx_runtime_1.jsx)(Text, { ...p, variant: "h5" });
16
+ static h6 = (p) => (0, jsx_runtime_1.jsx)(Text, { ...p, variant: "h6" });
17
+ static s = (p) => (0, jsx_runtime_1.jsx)(Text, { ...p, variant: "body-s" });
18
+ static m = (p) => (0, jsx_runtime_1.jsx)(Text, { ...p, variant: "body-m" });
19
+ static l = (p) => (0, jsx_runtime_1.jsx)(Text, { ...p, variant: "body-l" });
20
+ static code = (p) => (0, jsx_runtime_1.jsx)(Text, { ...p, variant: "code" });
21
+ constructor({ variant = "body-m", ...props }) {
22
+ super({ ...props, variant });
23
+ }
24
+ render() {
25
+ const { align, bold, italic, underline, striked, color, size, children, variant, v, ...elbe } = this.props;
26
+ return ((0, jsx_runtime_1.jsxs)("span", { ...(0, box_1.applyProps)(elbe, [
27
+ "text",
28
+ align,
29
+ bold && "b",
30
+ italic && "i",
31
+ underline && "underline",
32
+ striked && "striked",
33
+ color,
34
+ variant,
35
+ ], {
36
+ fontSize: size ? `${size}rem` : "",
37
+ color: color || "",
38
+ scrollMarginTop: "2rem",
39
+ }), children: [v, children] }));
40
+ }
41
+ }
42
+ exports.Text = Text;
@@ -0,0 +1,2 @@
1
+ import { type ColorThemeSeed } from "./colors";
2
+ export declare function colorThemePreset(merge?: Partial<ColorThemeSeed>): ColorThemeSeed;
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.colorThemePreset = colorThemePreset;
4
+ const colors_1 = require("./colors");
5
+ function colorThemePreset(merge) {
6
+ const styleSel = (_, b, s) => {
7
+ const bL = b.luminance;
8
+ if (bL === 1)
9
+ return s;
10
+ return s.inter(colors_1.LayerColor.fromBack(bL > 0.5 ? colors_1.colors.black : colors_1.colors.white), 0.1);
11
+ };
12
+ const seed = merge ?? {};
13
+ return {
14
+ base: seed.base ?? colors_1.LayerColor.fromBack(colors_1.colors.white),
15
+ accent: seed.accent ?? colors_1.LayerColor.fromBack(colors_1.colors.blueAccent),
16
+ info: seed.info ?? colors_1.LayerColor.fromBack(colors_1.colors.blue),
17
+ success: seed.success ?? colors_1.LayerColor.fromBack(colors_1.colors.green),
18
+ warning: seed.warning ?? colors_1.LayerColor.fromBack(colors_1.colors.yellow),
19
+ error: seed.error ?? colors_1.LayerColor.fromBack(colors_1.colors.red),
20
+ mode: {
21
+ light: seed.mode?.light ?? ((_, b) => b),
22
+ dark: seed.mode?.dark ?? ((_, b) => b.mirrorBrightness()),
23
+ },
24
+ scheme: {
25
+ primary: seed.scheme?.primary ?? ((_, b) => b),
26
+ secondary: seed.scheme?.secondary ??
27
+ ((c, b) => new colors_1.LayerColor(b.back.inter(c.accent.back, 0.1).desaturated(0.5), b.front, b.border)),
28
+ inverse: seed.scheme?.inverse ?? ((_, b) => b.mirrorBrightness()),
29
+ },
30
+ style: {
31
+ accent: styleSel,
32
+ info: styleSel,
33
+ success: styleSel,
34
+ warning: styleSel,
35
+ error: styleSel,
36
+ },
37
+ variant: {
38
+ major: seed.variant?.major ??
39
+ ((_, b, s) => colors_1.LayerColor.fromBack(s.back, { border: s.back })),
40
+ minor: seed.variant?.minor ??
41
+ ((_, b, s) => {
42
+ const back = b.back;
43
+ const backIn = back.mirrorBrightness();
44
+ const major = s.back;
45
+ const minor = s.back.inter(back, 0.8);
46
+ const minorFront = minor.hasWCAGContrast(major) ? major : null;
47
+ return new colors_1.LayerColor(s.back.withAlpha(0.25), minorFront ?? major.inter(backIn, 0.6), minorFront ?? major.inter(backIn, 0.3));
48
+ }),
49
+ flat: seed.variant?.flat ??
50
+ ((_, b, s) => {
51
+ //return new LayerColor(b.back, s?.back ?? b.front, b.front);
52
+ //calculate front brightness
53
+ const front = !s
54
+ ? b.front
55
+ : b.back.hasWCAGContrast(s?.back)
56
+ ? s?.back
57
+ : s?.back.inter(b.front, 0.6);
58
+ return new colors_1.LayerColor(b.back, //.withAlpha(0),
59
+ front, null, !s ? b.front.withAlpha(0.3) : b.front);
60
+ }),
61
+ },
62
+ };
63
+ }
@@ -0,0 +1,142 @@
1
+ export type ElbeColorModes = "light" | "dark";
2
+ export type ElbeColorSchemes = "primary" | "secondary" | "inverse";
3
+ export type ElbeColorKinds = "plain" | "accent" | "info" | "success" | "warning" | "error";
4
+ export type ElbeColorManners = "major" | "minor" | "flat" | "plain";
5
+ export declare const cModes: ElbeColorModes[];
6
+ export declare const cSchemes: ElbeColorSchemes[];
7
+ export declare const cKinds: ElbeColorKinds[];
8
+ export declare const cManners: ElbeColorManners[];
9
+ export declare const cStates: string[];
10
+ export declare const cLayers: string[];
11
+ export type SeedSelector = (seed: ColorThemeSeed, base: LayerColor) => LayerColor;
12
+ export type SeedFlatSelector = (seed: ColorThemeSeed, base: LayerColor, style?: LayerColor) => LayerColor;
13
+ export type SeedStyleSelector = (seed: ColorThemeSeed, base: LayerColor, style: LayerColor) => LayerColor;
14
+ export type ColorSeedColors = {
15
+ base: LayerColor;
16
+ accent: LayerColor;
17
+ info: LayerColor;
18
+ success: LayerColor;
19
+ warning: LayerColor;
20
+ error: LayerColor;
21
+ };
22
+ export type ColorThemeSeed = ColorSeedColors & {
23
+ mode: {
24
+ light: SeedSelector;
25
+ dark: SeedSelector;
26
+ };
27
+ scheme: {
28
+ primary: SeedSelector;
29
+ secondary: SeedSelector;
30
+ inverse: SeedSelector;
31
+ };
32
+ style: {
33
+ accent: SeedStyleSelector;
34
+ info: SeedStyleSelector;
35
+ success: SeedStyleSelector;
36
+ warning: SeedStyleSelector;
37
+ error: SeedStyleSelector;
38
+ };
39
+ variant: {
40
+ major: SeedStyleSelector;
41
+ minor: SeedStyleSelector;
42
+ flat: SeedFlatSelector;
43
+ };
44
+ };
45
+ declare class RGBAColor {
46
+ r: number;
47
+ g: number;
48
+ b: number;
49
+ a: number;
50
+ constructor(r: number, g: number, b: number, a: number);
51
+ asCss(): string;
52
+ get isDark(): boolean;
53
+ get luminance(): number;
54
+ get hex(): string;
55
+ static _fromHex(hex: string | null): RGBAColor;
56
+ desaturated(f?: number): RGBAColor;
57
+ withAlpha(a: number): RGBAColor;
58
+ inter(other: RGBAColor, factor: number): RGBAColor;
59
+ mirrorBrightness(factor?: number): RGBAColor;
60
+ get values(): [number, number, number, number];
61
+ hasWCAGContrast(color: RGBAColor): boolean;
62
+ contrastRatio(color: RGBAColor): number;
63
+ }
64
+ export declare const colors: {
65
+ transparent: RGBAColor;
66
+ white: RGBAColor;
67
+ black: RGBAColor;
68
+ blueAccent: RGBAColor;
69
+ blue: RGBAColor;
70
+ green: RGBAColor;
71
+ yellow: RGBAColor;
72
+ red: RGBAColor;
73
+ };
74
+ export declare class LayerColor extends RGBAColor {
75
+ back: RGBAColor;
76
+ border?: (RGBAColor | null) | undefined;
77
+ borderContext?: (RGBAColor | null) | undefined;
78
+ front: RGBAColor;
79
+ constructor(back: RGBAColor, front: RGBAColor | null, border?: (RGBAColor | null) | undefined, borderContext?: (RGBAColor | null) | undefined);
80
+ asCss(): string;
81
+ inter(other: LayerColor, factor: number): LayerColor;
82
+ mirrorBrightness(factor?: number): LayerColor;
83
+ desaturated(): LayerColor;
84
+ static fromHex(back: string, front?: string | null, border?: string | null): LayerColor;
85
+ static fromBack(back: RGBAColor, c?: {
86
+ front?: RGBAColor;
87
+ border?: RGBAColor;
88
+ }): LayerColor;
89
+ contextCss(): string;
90
+ }
91
+ export declare class StateColor extends LayerColor {
92
+ neutral: LayerColor;
93
+ hover: LayerColor;
94
+ active: LayerColor;
95
+ disabled: LayerColor;
96
+ constructor(neutral: LayerColor, hover: LayerColor, active: LayerColor, disabled: LayerColor);
97
+ asCss(): string;
98
+ static generate(_: ColorThemeSeed, context: LayerColor, style: LayerColor, fromFront?: boolean): StateColor;
99
+ }
100
+ export declare class MannerColor extends StateColor {
101
+ major: StateColor | null;
102
+ minor: StateColor | null;
103
+ flat: StateColor;
104
+ constructor(major: StateColor | null, minor: StateColor | null, flat: StateColor);
105
+ asCss(fallback?: MannerColor): string;
106
+ raisedCss(): string;
107
+ static generate(s: ColorThemeSeed, c: LayerColor, style?: LayerColor): MannerColor;
108
+ }
109
+ export declare class KindColor extends MannerColor {
110
+ plain: MannerColor;
111
+ accent: MannerColor;
112
+ info: MannerColor;
113
+ success: MannerColor;
114
+ warning: MannerColor;
115
+ error: MannerColor;
116
+ constructor(plain: MannerColor, accent: MannerColor, info: MannerColor, success: MannerColor, warning: MannerColor, error: MannerColor);
117
+ asCss(): string;
118
+ static generate(s: ColorThemeSeed, c: LayerColor): KindColor;
119
+ }
120
+ export declare class SchemeColor extends KindColor {
121
+ primary: KindColor;
122
+ secondary: KindColor;
123
+ inverse: KindColor;
124
+ constructor(primary: KindColor, secondary: KindColor, inverse: KindColor);
125
+ asCss(): string;
126
+ static generate(seed: ColorThemeSeed, c: LayerColor): SchemeColor;
127
+ }
128
+ export declare class ModeColor extends SchemeColor {
129
+ light: SchemeColor;
130
+ dark: SchemeColor;
131
+ constructor(light: SchemeColor, dark: SchemeColor);
132
+ asCss(): string;
133
+ static generate(seed: ColorThemeSeed): ModeColor;
134
+ }
135
+ export declare class ColorTheme {
136
+ colors: ColorSeedColors;
137
+ color: ModeColor;
138
+ constructor(colors: ColorSeedColors, color: ModeColor);
139
+ asCss(): string;
140
+ static generate(seed?: Partial<ColorThemeSeed>): ColorTheme;
141
+ }
142
+ export {};