@k8slens/element-components 3.3.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 +124 -0
- package/dist/index.css +3455 -0
- package/dist/index.d.ts +71 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4024 -0
- package/dist/src/element-components.performance-test.d.ts +2 -0
- package/dist/src/element-components.performance-test.d.ts.map +1 -0
- package/dist/src/elements/minimal-div.d.ts +30 -0
- package/dist/src/elements/minimal-div.d.ts.map +1 -0
- package/dist/src/elements.d.ts +3379 -0
- package/dist/src/elements.d.ts.map +1 -0
- package/dist/src/feature.d.ts +2 -0
- package/dist/src/feature.d.ts.map +1 -0
- package/dist/src/plugins/_shared/colors.d.ts +2 -0
- package/dist/src/plugins/_shared/colors.d.ts.map +1 -0
- package/dist/src/plugins/_shared/directions.d.ts +9 -0
- package/dist/src/plugins/_shared/directions.d.ts.map +1 -0
- package/dist/src/plugins/_shared/sizes.d.ts +14 -0
- package/dist/src/plugins/_shared/sizes.d.ts.map +1 -0
- package/dist/src/plugins/absolute/absolute.d.ts +10 -0
- package/dist/src/plugins/absolute/absolute.d.ts.map +1 -0
- package/dist/src/plugins/anchor/anchor.d.ts +56 -0
- package/dist/src/plugins/anchor/anchor.d.ts.map +1 -0
- package/dist/src/plugins/area/area.d.ts +15 -0
- package/dist/src/plugins/area/area.d.ts.map +1 -0
- package/dist/src/plugins/area-content/area-content.d.ts +12 -0
- package/dist/src/plugins/area-content/area-content.d.ts.map +1 -0
- package/dist/src/plugins/background-color/background-color.d.ts +22 -0
- package/dist/src/plugins/background-color/background-color.d.ts.map +1 -0
- package/dist/src/plugins/block/block.d.ts +9 -0
- package/dist/src/plugins/block/block.d.ts.map +1 -0
- package/dist/src/plugins/border/border.d.ts +28 -0
- package/dist/src/plugins/border/border.d.ts.map +1 -0
- package/dist/src/plugins/border/get-corner-styles.d.ts +10 -0
- package/dist/src/plugins/border/get-corner-styles.d.ts.map +1 -0
- package/dist/src/plugins/border/get-side-styles.d.ts +9 -0
- package/dist/src/plugins/border/get-side-styles.d.ts.map +1 -0
- package/dist/src/plugins/border/types.d.ts +9 -0
- package/dist/src/plugins/border/types.d.ts.map +1 -0
- package/dist/src/plugins/box-shadow/box-shadow.d.ts +9 -0
- package/dist/src/plugins/box-shadow/box-shadow.d.ts.map +1 -0
- package/dist/src/plugins/class-name/class-name.d.ts +9 -0
- package/dist/src/plugins/class-name/class-name.d.ts.map +1 -0
- package/dist/src/plugins/clickable/clickable.d.ts +33 -0
- package/dist/src/plugins/clickable/clickable.d.ts.map +1 -0
- package/dist/src/plugins/clickable/is-mac.injectable.d.ts +10 -0
- package/dist/src/plugins/clickable/is-mac.injectable.d.ts.map +1 -0
- package/dist/src/plugins/clickable/on-right-trigger.injectable.d.ts +2 -0
- package/dist/src/plugins/clickable/on-right-trigger.injectable.d.ts.map +1 -0
- package/dist/src/plugins/color/color.d.ts +23 -0
- package/dist/src/plugins/color/color.d.ts.map +1 -0
- package/dist/src/plugins/cursor/cursor.d.ts +10 -0
- package/dist/src/plugins/cursor/cursor.d.ts.map +1 -0
- package/dist/src/plugins/display-contents/display-contents.d.ts +9 -0
- package/dist/src/plugins/display-contents/display-contents.d.ts.map +1 -0
- package/dist/src/plugins/draggable-and-droppable/_shared/dragged-item-state.injectable.d.ts +3 -0
- package/dist/src/plugins/draggable-and-droppable/_shared/dragged-item-state.injectable.d.ts.map +1 -0
- package/dist/src/plugins/draggable-and-droppable/draggable.d.ts +9 -0
- package/dist/src/plugins/draggable-and-droppable/draggable.d.ts.map +1 -0
- package/dist/src/plugins/draggable-and-droppable/droppable.d.ts +3 -0
- package/dist/src/plugins/draggable-and-droppable/droppable.d.ts.map +1 -0
- package/dist/src/plugins/draggable-and-droppable/get-draggable-context.d.ts +18 -0
- package/dist/src/plugins/draggable-and-droppable/get-draggable-context.d.ts.map +1 -0
- package/dist/src/plugins/draggable-and-droppable/item-being-dragged.injectable.d.ts +9 -0
- package/dist/src/plugins/draggable-and-droppable/item-being-dragged.injectable.d.ts.map +1 -0
- package/dist/src/plugins/draggable-and-droppable/make-sure-drag-and-drop-events-have-time-to-happen/make-sure-drag-and-drop-events-have-time-to-happen.default-override.d.ts +4 -0
- package/dist/src/plugins/draggable-and-droppable/make-sure-drag-and-drop-events-have-time-to-happen/make-sure-drag-and-drop-events-have-time-to-happen.default-override.d.ts.map +1 -0
- package/dist/src/plugins/draggable-and-droppable/make-sure-drag-and-drop-events-have-time-to-happen/make-sure-drag-and-drop-events-have-time-to-happen.injectable.d.ts +2 -0
- package/dist/src/plugins/draggable-and-droppable/make-sure-drag-and-drop-events-have-time-to-happen/make-sure-drag-and-drop-events-have-time-to-happen.injectable.d.ts.map +1 -0
- package/dist/src/plugins/drop-down-menu/drop-down-menu.d.ts +20 -0
- package/dist/src/plugins/drop-down-menu/drop-down-menu.d.ts.map +1 -0
- package/dist/src/plugins/enabled/enabled.d.ts +20 -0
- package/dist/src/plugins/enabled/enabled.d.ts.map +1 -0
- package/dist/src/plugins/faded/faded.d.ts +13 -0
- package/dist/src/plugins/faded/faded.d.ts.map +1 -0
- package/dist/src/plugins/flex/flex.d.ts +28 -0
- package/dist/src/plugins/flex/flex.d.ts.map +1 -0
- package/dist/src/plugins/flex-child/flex-child.d.ts +24 -0
- package/dist/src/plugins/flex-child/flex-child.d.ts.map +1 -0
- package/dist/src/plugins/floating/floating.d.ts +24 -0
- package/dist/src/plugins/floating/floating.d.ts.map +1 -0
- package/dist/src/plugins/focusable/_private/_shared/focusable-event.d.ts +7 -0
- package/dist/src/plugins/focusable/_private/_shared/focusable-event.d.ts.map +1 -0
- package/dist/src/plugins/focusable/_private/handle-blur.d.ts +6 -0
- package/dist/src/plugins/focusable/_private/handle-blur.d.ts.map +1 -0
- package/dist/src/plugins/focusable/_private/handle-focus.d.ts +6 -0
- package/dist/src/plugins/focusable/_private/handle-focus.d.ts.map +1 -0
- package/dist/src/plugins/focusable/_private/use-cleanup-on-unmount.d.ts +4 -0
- package/dist/src/plugins/focusable/_private/use-cleanup-on-unmount.d.ts.map +1 -0
- package/dist/src/plugins/focusable/_private/use-keyboard-navigation.d.ts +8 -0
- package/dist/src/plugins/focusable/_private/use-keyboard-navigation.d.ts.map +1 -0
- package/dist/src/plugins/focusable/_private/use-programmatic-focusing.d.ts +4 -0
- package/dist/src/plugins/focusable/_private/use-programmatic-focusing.d.ts.map +1 -0
- package/dist/src/plugins/focusable/_private/use-update-when-props-change.d.ts +4 -0
- package/dist/src/plugins/focusable/_private/use-update-when-props-change.d.ts.map +1 -0
- package/dist/src/plugins/focusable/_shared/focusable-html-element-ref-set.injectable.d.ts +6 -0
- package/dist/src/plugins/focusable/_shared/focusable-html-element-ref-set.injectable.d.ts.map +1 -0
- package/dist/src/plugins/focusable/_shared/focusable-item-state.injectable.d.ts +3 -0
- package/dist/src/plugins/focusable/_shared/focusable-item-state.injectable.d.ts.map +1 -0
- package/dist/src/plugins/focusable/_shared/keyboard-navigation-state.injectable.d.ts +19 -0
- package/dist/src/plugins/focusable/_shared/keyboard-navigation-state.injectable.d.ts.map +1 -0
- package/dist/src/plugins/focusable/do-focus.injectable.d.ts +8 -0
- package/dist/src/plugins/focusable/do-focus.injectable.d.ts.map +1 -0
- package/dist/src/plugins/focusable/focusable.d.ts +27 -0
- package/dist/src/plugins/focusable/focusable.d.ts.map +1 -0
- package/dist/src/plugins/focusable/get-focusable-context.d.ts +33 -0
- package/dist/src/plugins/focusable/get-focusable-context.d.ts.map +1 -0
- package/dist/src/plugins/focusable/item-being-focused.injectable.d.ts +9 -0
- package/dist/src/plugins/focusable/item-being-focused.injectable.d.ts.map +1 -0
- package/dist/src/plugins/font/font.d.ts +32 -0
- package/dist/src/plugins/font/font.d.ts.map +1 -0
- package/dist/src/plugins/gradient/gradient.d.ts +9 -0
- package/dist/src/plugins/gradient/gradient.d.ts.map +1 -0
- package/dist/src/plugins/grayscale/grayscale.d.ts +14 -0
- package/dist/src/plugins/grayscale/grayscale.d.ts.map +1 -0
- package/dist/src/plugins/grid/grid.d.ts +19 -0
- package/dist/src/plugins/grid/grid.d.ts.map +1 -0
- package/dist/src/plugins/height/height.d.ts +15 -0
- package/dist/src/plugins/height/height.d.ts.map +1 -0
- package/dist/src/plugins/hidden/hidden.d.ts +9 -0
- package/dist/src/plugins/hidden/hidden.d.ts.map +1 -0
- package/dist/src/plugins/hoverable/computed-now.injectable.d.ts +12 -0
- package/dist/src/plugins/hoverable/computed-now.injectable.d.ts.map +1 -0
- package/dist/src/plugins/hoverable/hoverable-by-dragging.d.ts +12 -0
- package/dist/src/plugins/hoverable/hoverable-by-dragging.d.ts.map +1 -0
- package/dist/src/plugins/hoverable/hoverable.d.ts +27 -0
- package/dist/src/plugins/hoverable/hoverable.d.ts.map +1 -0
- package/dist/src/plugins/hoverable/hovered-item-state.injectable.d.ts +14 -0
- package/dist/src/plugins/hoverable/hovered-item-state.injectable.d.ts.map +1 -0
- package/dist/src/plugins/hoverable/item-being-hovered.injectable.d.ts +9 -0
- package/dist/src/plugins/hoverable/item-being-hovered.injectable.d.ts.map +1 -0
- package/dist/src/plugins/hoverable/local-hoverable/_private/context-is-being-hovered.injectable.d.ts +4 -0
- package/dist/src/plugins/hoverable/local-hoverable/_private/context-is-being-hovered.injectable.d.ts.map +1 -0
- package/dist/src/plugins/hoverable/local-hoverable/local-hoverable.d.ts +7 -0
- package/dist/src/plugins/hoverable/local-hoverable/local-hoverable.d.ts.map +1 -0
- package/dist/src/plugins/invisible-backdrop/invisible-backdrop.d.ts +9 -0
- package/dist/src/plugins/invisible-backdrop/invisible-backdrop.d.ts.map +1 -0
- package/dist/src/plugins/margin/margin.d.ts +18 -0
- package/dist/src/plugins/margin/margin.d.ts.map +1 -0
- package/dist/src/plugins/no-pointer-events/no-pointer-events.d.ts +9 -0
- package/dist/src/plugins/no-pointer-events/no-pointer-events.d.ts.map +1 -0
- package/dist/src/plugins/offset/offset.d.ts +17 -0
- package/dist/src/plugins/offset/offset.d.ts.map +1 -0
- package/dist/src/plugins/offset-children/offset-children.d.ts +17 -0
- package/dist/src/plugins/offset-children/offset-children.d.ts.map +1 -0
- package/dist/src/plugins/on-outside-click/on-outside-click.d.ts +22 -0
- package/dist/src/plugins/on-outside-click/on-outside-click.d.ts.map +1 -0
- package/dist/src/plugins/outline/outline.d.ts +21 -0
- package/dist/src/plugins/outline/outline.d.ts.map +1 -0
- package/dist/src/plugins/overflow/overflow.d.ts +18 -0
- package/dist/src/plugins/overflow/overflow.d.ts.map +1 -0
- package/dist/src/plugins/padding/padding.d.ts +18 -0
- package/dist/src/plugins/padding/padding.d.ts.map +1 -0
- package/dist/src/plugins/popover/popover.d.ts +28 -0
- package/dist/src/plugins/popover/popover.d.ts.map +1 -0
- package/dist/src/plugins/ref/ref.d.ts +13 -0
- package/dist/src/plugins/ref/ref.d.ts.map +1 -0
- package/dist/src/plugins/ref/type-test.d.ts +3 -0
- package/dist/src/plugins/ref/type-test.d.ts.map +1 -0
- package/dist/src/plugins/relative/relative.d.ts +11 -0
- package/dist/src/plugins/relative/relative.d.ts.map +1 -0
- package/dist/src/plugins/size/size.d.ts +17 -0
- package/dist/src/plugins/size/size.d.ts.map +1 -0
- package/dist/src/plugins/style/style.d.ts +6 -0
- package/dist/src/plugins/style/style.d.ts.map +1 -0
- package/dist/src/plugins/text-align/text-align.d.ts +9 -0
- package/dist/src/plugins/text-align/text-align.d.ts.map +1 -0
- package/dist/src/plugins/tint/tint.d.ts +19 -0
- package/dist/src/plugins/tint/tint.d.ts.map +1 -0
- package/dist/src/plugins/tooltip/tooltip-delay/tooltip-delay.default-override.d.ts +4 -0
- package/dist/src/plugins/tooltip/tooltip-delay/tooltip-delay.default-override.d.ts.map +1 -0
- package/dist/src/plugins/tooltip/tooltip-delay/tooltip-delay.injectable.d.ts +2 -0
- package/dist/src/plugins/tooltip/tooltip-delay/tooltip-delay.injectable.d.ts.map +1 -0
- package/dist/src/plugins/tooltip/tooltip.d.ts +64 -0
- package/dist/src/plugins/tooltip/tooltip.d.ts.map +1 -0
- package/dist/src/plugins/transition/transition.d.ts +9 -0
- package/dist/src/plugins/transition/transition.d.ts.map +1 -0
- package/dist/src/plugins/visually-hidden/visually-hidden.d.ts +9 -0
- package/dist/src/plugins/visually-hidden/visually-hidden.d.ts.map +1 -0
- package/dist/src/plugins/width/width.d.ts +15 -0
- package/dist/src/plugins/width/width.d.ts.map +1 -0
- package/dist/src/remove-css-module-clutter.default-override.d.ts +3 -0
- package/dist/src/remove-css-module-clutter.default-override.d.ts.map +1 -0
- package/dist/src/test-util-runnable.injectable.d.ts +4 -0
- package/dist/src/test-util-runnable.injectable.d.ts.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +72 -0
package/README.md
ADDED
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
# @k8slens/element-components
|
|
2
|
+
|
|
3
|
+
The React primitives Lens's own interface is built from: thin wrappers over HTML elements, with layout, styling and behaviour supplied by `$props` rather than by stylesheets. Anything built with them inherits the app's spacing scale, colours and theme.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @k8slens/element-components
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## The model
|
|
12
|
+
|
|
13
|
+
Ordinary props pass through to the DOM. Props prefixed with `$` do not — they are read by plugins:
|
|
14
|
+
|
|
15
|
+
```tsx
|
|
16
|
+
import { Div, Span, Button } from "@k8slens/element-components";
|
|
17
|
+
|
|
18
|
+
export const Example = () => (
|
|
19
|
+
<Div $flex={{ direction: "vertical", gap: "m" }} $padding="l">
|
|
20
|
+
<Span $font={{ size: "xl", bold: true }}>Hello</Span>
|
|
21
|
+
<Button $onClick={doTheThing} $tooltip="Does the thing">
|
|
22
|
+
Do the thing
|
|
23
|
+
</Button>
|
|
24
|
+
</Div>
|
|
25
|
+
);
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### Elements
|
|
29
|
+
|
|
30
|
+
`A`, `Button`, `Canvas`, `ClickableDiv`, `ClickableLi`, `Code`, `Dialog`, `Div`, `Form`, `H1`–`H6`, `I`, `Img`, `Input`, `Label`, `Li`, `Nav`, `Ol`, `P`, `Pre`, `Span`, `Svg`, `Table`, `TBody`, `Td`, `TextArea`, `Th`, `Tr`, `Ul`.
|
|
31
|
+
|
|
32
|
+
### The size scale
|
|
33
|
+
|
|
34
|
+
Anything taking a size takes a t-shirt size rather than pixels: `zero`, `xxxs`, `xxs`, `xs`, `s`, `m`, `l`, `xl`, `xxl`, `3xl` … `11xl`. One step is 4px.
|
|
35
|
+
|
|
36
|
+
## The `$props`
|
|
37
|
+
|
|
38
|
+
Layout
|
|
39
|
+
: `$flex`, `$flexChild`, `$grid`, `$area`, `$areaContent`, `$offset`, `$offsetChildren`, `$block`, `$displayContents`
|
|
40
|
+
|
|
41
|
+
The box
|
|
42
|
+
: `$size`, `$width`, `$height`, `$margin`, `$padding`, `$border`, `$boxShadow`, `$outline`, `$overflow`
|
|
43
|
+
|
|
44
|
+
Appearance
|
|
45
|
+
: `$color`, `$backgroundColor`, `$font`, `$textAlign`, `$gradient`, `$tint`, `$grayscale`, `$faded`, `$transition`, `$className`, `$style`
|
|
46
|
+
|
|
47
|
+
Position and overlays
|
|
48
|
+
: `$relative`, `$absolute`, `$fixed`, `$anchor`, `$anchoredAt`, `$floating`, `$popover`, `$invisibleBackdrop`
|
|
49
|
+
|
|
50
|
+
Interaction
|
|
51
|
+
: `$onClick`, `$onDoubleClick`, `$onMiddleClick`, `$onRightClick`, `$onOnlyMouseClick`, `$onOutsideClick`, `$cursor`, `$enabled`, `$disabled`
|
|
52
|
+
|
|
53
|
+
Stateful behaviour
|
|
54
|
+
: `$tooltip`, `$hoverable`, `$hoverableByDragging`, `$focusable`, `$draggable`, `$droppable`, `$dropDownMenu`
|
|
55
|
+
|
|
56
|
+
Visibility and escape hatches
|
|
57
|
+
: `$hidden`, `$visuallyHidden`, `$noPointerEvents`, `$ref`, `$wrapper`
|
|
58
|
+
|
|
59
|
+
The types are the reference for each one's values; the sections below cover the ones whose shape is easy to get wrong.
|
|
60
|
+
|
|
61
|
+
### Colour comes from the theme
|
|
62
|
+
|
|
63
|
+
Named roles, not literals. Text takes `textDefault`, `textMuted` or `textHighlight`; backgrounds take `backgroundPrimary`, `backgroundSecondary` or `backgroundPrimaryDimmed`; borders take `borderPrimary`. Status and emphasis have roles of their own (`primary`, `success`, `notice`, `warning`, `critical`, `link`, `code`), and the nominal palette (`grey10`…`grey100`, `white`, `inherit`, `transparent`) is available, but a role survives a change to the palette where a nominal grey does not.
|
|
64
|
+
|
|
65
|
+
```tsx
|
|
66
|
+
<Span $color="textMuted" />
|
|
67
|
+
<Div $backgroundColor="backgroundPrimary" />
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### Borders
|
|
71
|
+
|
|
72
|
+
`color` is a theme role or nominal colour, `width` is on the t-shirt scale, and `radius` is one of `zero`, `s`, `m`, `ml`, `l`, `50`, `full` (or `true` for the default):
|
|
73
|
+
|
|
74
|
+
```tsx
|
|
75
|
+
<Div $border={{ color: "borderPrimary", width: "xxs", radius: "m" }} $boxShadow />
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### Sizes accept a range
|
|
79
|
+
|
|
80
|
+
The range object's own field is named after its prop — `size` for `$size`, `height` for `$height`, `width` for `$width` — alongside `min` and `max`.
|
|
81
|
+
|
|
82
|
+
```tsx
|
|
83
|
+
<Div $width="full" $height={{ min: "m", height: "l", max: "xl" }} />
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### `$onClick`, not `onClick`
|
|
87
|
+
|
|
88
|
+
`$onClick` also activates on Enter, and on Space when the element itself is focused, and it respects `$enabled`. Plain `onClick` does neither, which is the usual cause of a control a keyboard user cannot reach.
|
|
89
|
+
|
|
90
|
+
## Passing `$props` through your own components
|
|
91
|
+
|
|
92
|
+
Extend the element's props and spread the rest onto the root element, so callers can lay your component out:
|
|
93
|
+
|
|
94
|
+
```tsx
|
|
95
|
+
import { Div, type DivProps } from "@k8slens/element-components";
|
|
96
|
+
|
|
97
|
+
interface StatusBadgeProps extends DivProps {
|
|
98
|
+
readonly status: "success" | "error" | "pending";
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
export const StatusBadge = ({ status, ...rest }: StatusBadgeProps) => (
|
|
102
|
+
<Div $flex={{ direction: "horizontal", gap: "s" }} {...rest}>
|
|
103
|
+
{status}
|
|
104
|
+
</Div>
|
|
105
|
+
);
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
Prop types are exported per element: `DivProps`, `ButtonProps`, and so on.
|
|
109
|
+
|
|
110
|
+
## Styles and registration
|
|
111
|
+
|
|
112
|
+
The stylesheet is a separate entry point:
|
|
113
|
+
|
|
114
|
+
```ts
|
|
115
|
+
import "@k8slens/element-components/styles";
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
The package also exports a Feature, which the application registers:
|
|
119
|
+
|
|
120
|
+
```ts
|
|
121
|
+
import { elementComponentFeature } from "@k8slens/element-components";
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
An extension does not register it — the host already has. A unit test that renders these components does need it registered in its container.
|