@geometra/core 0.1.0 → 0.2.1
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.
- package/README.md +42 -0
- package/dist/a11y.d.ts +19 -0
- package/dist/a11y.d.ts.map +1 -0
- package/dist/a11y.js +78 -0
- package/dist/a11y.js.map +1 -0
- package/dist/animation.d.ts +29 -0
- package/dist/animation.d.ts.map +1 -0
- package/dist/animation.js +102 -0
- package/dist/animation.js.map +1 -0
- package/dist/app.d.ts +17 -2
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +41 -9
- package/dist/app.js.map +1 -1
- package/dist/elements.d.ts +13 -1
- package/dist/elements.d.ts.map +1 -1
- package/dist/elements.js +21 -3
- package/dist/elements.js.map +1 -1
- package/dist/focus.d.ts +19 -0
- package/dist/focus.d.ts.map +1 -0
- package/dist/focus.js +61 -0
- package/dist/focus.js.map +1 -0
- package/dist/fonts.d.ts +14 -0
- package/dist/fonts.d.ts.map +1 -0
- package/dist/fonts.js +67 -0
- package/dist/fonts.js.map +1 -0
- package/dist/hit-test.d.ts +13 -2
- package/dist/hit-test.d.ts.map +1 -1
- package/dist/hit-test.js +74 -7
- package/dist/hit-test.js.map +1 -1
- package/dist/index.d.ts +20 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -2
- package/dist/index.js.map +1 -1
- package/dist/keyboard.d.ts +10 -0
- package/dist/keyboard.d.ts.map +1 -0
- package/dist/keyboard.js +49 -0
- package/dist/keyboard.js.map +1 -0
- package/dist/selection.d.ts +46 -0
- package/dist/selection.d.ts.map +1 -0
- package/dist/selection.js +94 -0
- package/dist/selection.js.map +1 -0
- package/dist/seo.d.ts +29 -0
- package/dist/seo.d.ts.map +1 -0
- package/dist/seo.js +109 -0
- package/dist/seo.js.map +1 -0
- package/dist/text-input-history.d.ts +15 -0
- package/dist/text-input-history.d.ts.map +1 -0
- package/dist/text-input-history.js +62 -0
- package/dist/text-input-history.js.map +1 -0
- package/dist/text-input.d.ts +42 -0
- package/dist/text-input.d.ts.map +1 -0
- package/dist/text-input.js +249 -0
- package/dist/text-input.js.map +1 -0
- package/dist/tree.d.ts.map +1 -1
- package/dist/tree.js +9 -3
- package/dist/tree.js.map +1 -1
- package/dist/types.d.ts +81 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +3 -3
package/dist/types.d.ts
CHANGED
|
@@ -5,7 +5,46 @@ export interface StyleProps {
|
|
|
5
5
|
color?: string;
|
|
6
6
|
borderColor?: string;
|
|
7
7
|
borderRadius?: number;
|
|
8
|
+
borderWidth?: number;
|
|
8
9
|
opacity?: number;
|
|
10
|
+
/** Cursor to show when hovering this element. */
|
|
11
|
+
cursor?: 'default' | 'pointer' | 'grab' | 'grabbing' | 'text' | 'not-allowed' | 'crosshair' | 'move';
|
|
12
|
+
/** Z-index for paint ordering among siblings. Higher values paint on top. */
|
|
13
|
+
zIndex?: number;
|
|
14
|
+
/** Overflow behavior for children. */
|
|
15
|
+
overflow?: 'visible' | 'hidden' | 'scroll';
|
|
16
|
+
/** Horizontal scroll offset (used with overflow: 'scroll'). */
|
|
17
|
+
scrollX?: number;
|
|
18
|
+
/** Vertical scroll offset (used with overflow: 'scroll'). */
|
|
19
|
+
scrollY?: number;
|
|
20
|
+
/** Box shadow. */
|
|
21
|
+
boxShadow?: {
|
|
22
|
+
offsetX: number;
|
|
23
|
+
offsetY: number;
|
|
24
|
+
blur: number;
|
|
25
|
+
color: string;
|
|
26
|
+
};
|
|
27
|
+
/** Linear gradient background (overrides backgroundColor when set). */
|
|
28
|
+
gradient?: {
|
|
29
|
+
type: 'linear';
|
|
30
|
+
/** Angle in degrees. Default: 180 (top to bottom). */
|
|
31
|
+
angle?: number;
|
|
32
|
+
stops: Array<{
|
|
33
|
+
offset: number;
|
|
34
|
+
color: string;
|
|
35
|
+
}>;
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
/** Semantic properties for SEO and accessibility. */
|
|
39
|
+
export interface SemanticProps {
|
|
40
|
+
/** HTML tag to use in semantic HTML output (e.g. 'h1', 'p', 'nav', 'article'). */
|
|
41
|
+
tag?: string;
|
|
42
|
+
/** ARIA role for accessibility (e.g. 'heading', 'navigation', 'button'). */
|
|
43
|
+
role?: string;
|
|
44
|
+
/** Alt text for images or decorative elements. */
|
|
45
|
+
alt?: string;
|
|
46
|
+
/** Aria-label for screen readers. */
|
|
47
|
+
ariaLabel?: string;
|
|
9
48
|
}
|
|
10
49
|
/** A text node in the component tree. */
|
|
11
50
|
export interface TextElement {
|
|
@@ -15,8 +54,12 @@ export interface TextElement {
|
|
|
15
54
|
font: string;
|
|
16
55
|
lineHeight: number;
|
|
17
56
|
whiteSpace?: 'normal' | 'pre-wrap';
|
|
57
|
+
/** Text is selectable by default. Set to false to disable. */
|
|
58
|
+
selectable?: boolean;
|
|
18
59
|
};
|
|
19
60
|
key?: string;
|
|
61
|
+
/** Semantic hints for SEO/a11y. */
|
|
62
|
+
semantic?: SemanticProps;
|
|
20
63
|
}
|
|
21
64
|
/** A box (container) node in the component tree. */
|
|
22
65
|
export interface BoxElement {
|
|
@@ -26,15 +69,37 @@ export interface BoxElement {
|
|
|
26
69
|
key?: string;
|
|
27
70
|
/** Optional event handlers — resolved via hit-testing. */
|
|
28
71
|
handlers?: EventHandlers;
|
|
72
|
+
/** Semantic hints for SEO/a11y. */
|
|
73
|
+
semantic?: SemanticProps;
|
|
74
|
+
}
|
|
75
|
+
/** An image element in the component tree. */
|
|
76
|
+
export interface ImageElement {
|
|
77
|
+
kind: 'image';
|
|
78
|
+
props: FlexProps & StyleProps & {
|
|
79
|
+
src: string;
|
|
80
|
+
alt?: string;
|
|
81
|
+
objectFit?: 'fill' | 'contain' | 'cover';
|
|
82
|
+
};
|
|
83
|
+
key?: string;
|
|
84
|
+
semantic?: SemanticProps;
|
|
29
85
|
}
|
|
30
86
|
/** Union of all element types. */
|
|
31
|
-
export type UIElement = TextElement | BoxElement;
|
|
87
|
+
export type UIElement = TextElement | BoxElement | ImageElement;
|
|
32
88
|
/** Supported event handlers on box elements. */
|
|
33
89
|
export interface EventHandlers {
|
|
34
90
|
onClick?: (e: HitEvent) => void;
|
|
35
91
|
onPointerDown?: (e: HitEvent) => void;
|
|
36
92
|
onPointerUp?: (e: HitEvent) => void;
|
|
37
93
|
onPointerMove?: (e: HitEvent) => void;
|
|
94
|
+
onWheel?: (e: HitEvent & {
|
|
95
|
+
deltaX: number;
|
|
96
|
+
deltaY: number;
|
|
97
|
+
}) => void;
|
|
98
|
+
onKeyDown?: (e: KeyboardHitEvent) => void;
|
|
99
|
+
onKeyUp?: (e: KeyboardHitEvent) => void;
|
|
100
|
+
onCompositionStart?: (e: CompositionHitEvent) => void;
|
|
101
|
+
onCompositionUpdate?: (e: CompositionHitEvent) => void;
|
|
102
|
+
onCompositionEnd?: (e: CompositionHitEvent) => void;
|
|
38
103
|
}
|
|
39
104
|
/** Event delivered to handlers after hit-testing. */
|
|
40
105
|
export interface HitEvent {
|
|
@@ -42,6 +107,21 @@ export interface HitEvent {
|
|
|
42
107
|
y: number;
|
|
43
108
|
target: ComputedLayout;
|
|
44
109
|
}
|
|
110
|
+
/** Keyboard event delivered to the focused element. */
|
|
111
|
+
export interface KeyboardHitEvent {
|
|
112
|
+
key: string;
|
|
113
|
+
code: string;
|
|
114
|
+
shiftKey: boolean;
|
|
115
|
+
ctrlKey: boolean;
|
|
116
|
+
metaKey: boolean;
|
|
117
|
+
altKey: boolean;
|
|
118
|
+
target: ComputedLayout;
|
|
119
|
+
}
|
|
120
|
+
/** IME/composition event delivered to the focused element. */
|
|
121
|
+
export interface CompositionHitEvent {
|
|
122
|
+
data: string;
|
|
123
|
+
target: ComputedLayout;
|
|
124
|
+
}
|
|
45
125
|
/** A component function receives props and returns a UIElement tree. */
|
|
46
126
|
export type Component<P = Record<string, never>> = (props: P) => UIElement;
|
|
47
127
|
/** Interface that all render backends implement. */
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAExD,0DAA0D;AAC1D,MAAM,WAAW,UAAU;IACzB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@geometra/core",
|
|
3
|
-
"version": "0.1
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "DOM-free UI framework core: components, signals, reconciler",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"repository": {
|
|
8
8
|
"type": "git",
|
|
9
|
-
"url": "https://github.com/razroo/
|
|
9
|
+
"url": "https://github.com/razroo/geometra",
|
|
10
10
|
"directory": "packages/core"
|
|
11
11
|
},
|
|
12
|
-
"homepage": "https://razroo.github.io/
|
|
12
|
+
"homepage": "https://razroo.github.io/geometra",
|
|
13
13
|
"keywords": [
|
|
14
14
|
"ui",
|
|
15
15
|
"framework",
|