@tempots/ui 0.1.0
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 +1 -0
- package/components/Box/Box.d.ts +8 -0
- package/components/Box/Box.js +8 -0
- package/components/Button/Button.d.ts +12 -0
- package/components/Button/Button.js +19 -0
- package/components/Control/Control.d.ts +8 -0
- package/components/Control/Control.js +16 -0
- package/components/Field/Field.d.ts +11 -0
- package/components/Field/Field.js +37 -0
- package/components/Field/field-layout.d.ts +1 -0
- package/components/Field/field-layout.js +1 -0
- package/components/Fieldset/Fieldset.d.ts +8 -0
- package/components/Fieldset/Fieldset.js +12 -0
- package/components/Fieldset/fieldset-context.d.ts +7 -0
- package/components/Fieldset/fieldset-context.js +3 -0
- package/components/Group/Group.d.ts +13 -0
- package/components/Group/Group.js +28 -0
- package/components/Input/BaseInput.d.ts +10 -0
- package/components/Input/BaseInput.js +17 -0
- package/components/Input/FloatInput.d.ts +10 -0
- package/components/Input/FloatInput.js +14 -0
- package/components/Input/IntInput.d.ts +9 -0
- package/components/Input/IntInput.js +25 -0
- package/components/Input/NativeSelect.d.ts +11 -0
- package/components/Input/NativeSelect.js +27 -0
- package/components/Input/TextInput.d.ts +7 -0
- package/components/Input/TextInput.js +9 -0
- package/components/Input/UnitInput.d.ts +10 -0
- package/components/Input/UnitInput.js +14 -0
- package/components/Popover/Popover.d.ts +9 -0
- package/components/Popover/Popover.js +35 -0
- package/components/Popover/UnstyledPopover.d.ts +19 -0
- package/components/Popover/UnstyledPopover.js +97 -0
- package/components/Popover/index.d.ts +2 -0
- package/components/Popover/index.js +2 -0
- package/components/SegmentedControl/SegmentedControl.d.ts +9 -0
- package/components/SegmentedControl/SegmentedControl.js +16 -0
- package/components/Stack/Stack.d.ts +11 -0
- package/components/Stack/Stack.js +18 -0
- package/components/StyleProvider/StyleProvider.d.ts +37 -0
- package/components/StyleProvider/StyleProvider.js +103 -0
- package/components/Tooltip/index.d.ts +5 -0
- package/components/Tooltip/index.js +31 -0
- package/components/styling/Sizing.d.ts +10 -0
- package/components/styling/Sizing.js +5 -0
- package/components/styling/Spacing.d.ts +28 -0
- package/components/styling/Spacing.js +49 -0
- package/components/styling/Sx.d.ts +6 -0
- package/components/styling/Sx.js +6 -0
- package/index.d.ts +24 -0
- package/index.js +20 -0
- package/package.json +46 -0
- package/styles/color.d.ts +1 -0
- package/styles/color.js +1 -0
- package/styles/reset.d.ts +1 -0
- package/styles/reset.js +283 -0
- package/styles/side.d.ts +1 -0
- package/styles/side.js +1 -0
- package/styles/size.d.ts +5 -0
- package/styles/size.js +44 -0
- package/styles/sx.d.ts +9 -0
- package/styles/sx.js +28 -0
- package/styles/ui-styles.d.ts +67 -0
- package/styles/ui-styles.js +118 -0
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "@tempots/dom/jsx-runtime";
|
|
2
|
+
import { Consumer, Signal } from '@tempots/dom';
|
|
3
|
+
import { StyleMarker } from '../StyleProvider/StyleProvider';
|
|
4
|
+
import { Sx } from '../styling/Sx';
|
|
5
|
+
export const Stack = (props) => {
|
|
6
|
+
const { children, align, justify, spacing } = props;
|
|
7
|
+
return (_jsx(Consumer, { mark: StyleMarker, children: ({ styles }) => {
|
|
8
|
+
return (_jsxs("div", { children: [_jsx(Sx, { sx: {
|
|
9
|
+
display: 'flex',
|
|
10
|
+
flexDirection: 'column',
|
|
11
|
+
alignItems: align ?? Signal.of('normal'),
|
|
12
|
+
justifyContent: justify,
|
|
13
|
+
gap: (spacing ?? Signal.of('md')).combine(styles, (sp, st) => {
|
|
14
|
+
return (typeof sp === 'number' ? sp : st.styles.spacing[sp]);
|
|
15
|
+
})
|
|
16
|
+
} }), children] }));
|
|
17
|
+
} }));
|
|
18
|
+
};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { type JSX, Prop, type Signal } from '@tempots/dom';
|
|
2
|
+
import { type Size } from '../../styles/size';
|
|
3
|
+
import { type UIStyles } from '../../styles/ui-styles';
|
|
4
|
+
export interface Styles {
|
|
5
|
+
components: UIComponentStyles;
|
|
6
|
+
styles: UIStyles;
|
|
7
|
+
}
|
|
8
|
+
export interface UITheme {
|
|
9
|
+
styles: Signal<Styles>;
|
|
10
|
+
isLight: Prop<boolean>;
|
|
11
|
+
}
|
|
12
|
+
export interface StyleProviderProps {
|
|
13
|
+
children?: JSX.Element;
|
|
14
|
+
}
|
|
15
|
+
export declare const StyleMarker: symbol;
|
|
16
|
+
export declare const StyleProvider: ({ children }: StyleProviderProps) => JSX.DOMNode;
|
|
17
|
+
export type ComponentClasses<T> = (options: T) => string;
|
|
18
|
+
export interface UIComponentStyles {
|
|
19
|
+
button: {
|
|
20
|
+
root: ComponentClasses<ButtonStyles>;
|
|
21
|
+
content: ComponentClasses<ButtonStyles>;
|
|
22
|
+
};
|
|
23
|
+
control: {
|
|
24
|
+
root: ComponentClasses<ControlStyles>;
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
export type ButtonVariant = 'primary' | 'secondary' | 'tertiary' | 'danger';
|
|
28
|
+
export interface ButtonStyles {
|
|
29
|
+
size: Size | number;
|
|
30
|
+
compact: boolean;
|
|
31
|
+
variant: ButtonVariant;
|
|
32
|
+
}
|
|
33
|
+
export interface ControlStyles {
|
|
34
|
+
size: Size;
|
|
35
|
+
spacing: Size;
|
|
36
|
+
}
|
|
37
|
+
export declare const defaultComponentStyle: ({ font, border, spacing, background, control }: UIStyles) => UIComponentStyles;
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "@tempots/dom/jsx-runtime";
|
|
2
|
+
import { css } from '@emotion/css';
|
|
3
|
+
import { Portal, Prop, OnRemove, Provider, makeProviderMark, When } from '@tempots/dom';
|
|
4
|
+
import { resetCss } from '../../styles/reset';
|
|
5
|
+
import { getRadiusSize, getSize } from '../../styles/size';
|
|
6
|
+
import { defaultDarkStyles, defaultLightStyles } from '../../styles/ui-styles';
|
|
7
|
+
import { Sx } from '../styling/Sx';
|
|
8
|
+
export const StyleMarker = makeProviderMark();
|
|
9
|
+
const counter = Prop.of(0);
|
|
10
|
+
export const StyleProvider = ({ children }) => {
|
|
11
|
+
const isLight = Prop.of(true);
|
|
12
|
+
const styles = isLight.map(v => {
|
|
13
|
+
if (v) {
|
|
14
|
+
return {
|
|
15
|
+
components: defaultComponentStyle(defaultLightStyles),
|
|
16
|
+
styles: defaultLightStyles
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
return {
|
|
21
|
+
components: defaultComponentStyle(defaultDarkStyles),
|
|
22
|
+
styles: defaultDarkStyles
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
counter.update(v => v + 1);
|
|
27
|
+
return (_jsxs(Provider, { value: { styles, isLight }, mark: StyleMarker, children: [_jsx(Sx, { sx: { backgroundColor: styles.map(v => v.styles.background.color) } }), _jsx(When, { is: counter.map(v => v > 0), children: _jsx(Portal, { selector: "head", children: _jsx("style", { children: resetCss }) }) }), children, _jsx(OnRemove, { clear: () => { counter.update(v => v - 1); } })] }));
|
|
28
|
+
};
|
|
29
|
+
export const defaultComponentStyle = ({ font, border, spacing, background, control }) => {
|
|
30
|
+
return {
|
|
31
|
+
button: {
|
|
32
|
+
root: ({ size, variant, compact }) => {
|
|
33
|
+
const obj = {
|
|
34
|
+
alignContent: 'center',
|
|
35
|
+
display: 'inline-flex',
|
|
36
|
+
alignItems: 'center',
|
|
37
|
+
fontWeight: 500,
|
|
38
|
+
fontSize: getSize(size, 'md', font.size),
|
|
39
|
+
borderRadius: getRadiusSize('md', 'sm', border.radius),
|
|
40
|
+
border: `1px solid ${control.borderColor}`,
|
|
41
|
+
backgroundColor: background.color,
|
|
42
|
+
color: font.color,
|
|
43
|
+
padding: `0 ${spacing.md / (compact ? 2 : 1)}px`,
|
|
44
|
+
textShadow: control.accentTextShadow,
|
|
45
|
+
boxShadow: control.shadow,
|
|
46
|
+
// minWidth: getSize(size, 'md', control.height),
|
|
47
|
+
height: getSize(size, 'md', control.height),
|
|
48
|
+
cursor: 'pointer',
|
|
49
|
+
fontFamily: font.family.control
|
|
50
|
+
};
|
|
51
|
+
obj[':hover:not([disabled])'] = {
|
|
52
|
+
backgroundColor: background.inverseColor,
|
|
53
|
+
color: font.inverseColor
|
|
54
|
+
};
|
|
55
|
+
obj[':focus'] = {
|
|
56
|
+
outline: `2px solid ${control.focusColor}`,
|
|
57
|
+
outlineOffset: 0.5
|
|
58
|
+
};
|
|
59
|
+
obj[':active:not([disabled])'] = {
|
|
60
|
+
transform: 'translateY(2px)'
|
|
61
|
+
};
|
|
62
|
+
obj[':disabled'] = {
|
|
63
|
+
cursor: 'not-allowed',
|
|
64
|
+
backgroundColor: background.mutedColor,
|
|
65
|
+
color: font.mutedColor
|
|
66
|
+
};
|
|
67
|
+
return css(obj);
|
|
68
|
+
},
|
|
69
|
+
content: ({ size, variant, compact }) => {
|
|
70
|
+
return css({
|
|
71
|
+
minWidth: '1.25em',
|
|
72
|
+
margin: '0 auto'
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
},
|
|
76
|
+
control: {
|
|
77
|
+
root: ({ size, spacing: sp }) => {
|
|
78
|
+
const obj = {
|
|
79
|
+
display: 'inline-flex',
|
|
80
|
+
alignItems: 'center',
|
|
81
|
+
flexDirection: 'row',
|
|
82
|
+
gap: getSize(sp, 'md', spacing),
|
|
83
|
+
overflow: 'hidden',
|
|
84
|
+
lineHeight: getSize(size, 'md', control.height),
|
|
85
|
+
height: getSize(size, 'md', control.height),
|
|
86
|
+
fontWeight: 500,
|
|
87
|
+
padding: '0 2px',
|
|
88
|
+
fontSize: getSize(size, 'md', font.size),
|
|
89
|
+
fontFamily: font.family.control,
|
|
90
|
+
borderRadius: getRadiusSize('md', 'sm', border.radius),
|
|
91
|
+
border: `1px solid ${control.borderColor}`,
|
|
92
|
+
backgroundColor: background.color,
|
|
93
|
+
color: font.color,
|
|
94
|
+
':focus-within': {
|
|
95
|
+
outline: `2px solid ${control.focusColor}`,
|
|
96
|
+
outlineOffset: 0.5
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
return css(obj);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "@tempots/dom/jsx-runtime";
|
|
2
|
+
import { Consumer, Signal, Attribute } from '@tempots/dom';
|
|
3
|
+
import { UnstyledPopover } from '../Popover';
|
|
4
|
+
import { onTargetOverMount } from '../Popover/UnstyledPopover';
|
|
5
|
+
import { StyleMarker } from '../StyleProvider/StyleProvider';
|
|
6
|
+
import { Sx } from '../styling/Sx';
|
|
7
|
+
const ARROW_SIZE = 8;
|
|
8
|
+
export function Tooltip({ children }) {
|
|
9
|
+
return (_jsx(_Fragment, { children: _jsx(Consumer, { mark: StyleMarker, children: ({ styles }) => {
|
|
10
|
+
const at = styles.at('styles').at;
|
|
11
|
+
return (_jsxs(UnstyledPopover, { onTargetMount: onTargetOverMount, placement: Signal.of('top'), arrow: _jsx("div", { children: _jsx(Sx, { sx: {
|
|
12
|
+
backgroundColor: at('background').at('inverseColor'),
|
|
13
|
+
boxShadow: at('shadow').at('md'),
|
|
14
|
+
marginTop: -ARROW_SIZE / 2,
|
|
15
|
+
transform: 'rotate(45deg)',
|
|
16
|
+
width: ARROW_SIZE,
|
|
17
|
+
height: ARROW_SIZE
|
|
18
|
+
} }) }), children: [_jsx(Attribute, { name: "role", value: Signal.of('tooltip') }), _jsx(Sx, { sx: {
|
|
19
|
+
maxWidth: '200px',
|
|
20
|
+
height: 'auto',
|
|
21
|
+
lineHeight: '1em',
|
|
22
|
+
textAlign: 'center',
|
|
23
|
+
whiteSpace: 'normal',
|
|
24
|
+
backgroundColor: at('background').at('inverseColor'),
|
|
25
|
+
color: at('font').at('inverseColor'),
|
|
26
|
+
padding: at('spacing').map(v => `${v.xs}px ${v.md}px`),
|
|
27
|
+
borderRadius: at('border').at('radius').at('sm'),
|
|
28
|
+
boxShadow: at('shadow').at('md')
|
|
29
|
+
} }), children] }));
|
|
30
|
+
} }) }));
|
|
31
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type JSX } from '@tempots/dom';
|
|
2
|
+
export interface SizingProps {
|
|
3
|
+
width?: JSX.VValue<string> | JSX.VValue<number>;
|
|
4
|
+
height?: JSX.VValue<string> | JSX.VValue<number>;
|
|
5
|
+
minWidth?: JSX.VValue<string> | JSX.VValue<number>;
|
|
6
|
+
minHeight?: JSX.VValue<string> | JSX.VValue<number>;
|
|
7
|
+
maxWidth?: JSX.VValue<string> | JSX.VValue<number>;
|
|
8
|
+
maxHeight?: JSX.VValue<string> | JSX.VValue<number>;
|
|
9
|
+
}
|
|
10
|
+
export declare const Sizing: ({ width, height, maxHeight, maxWidth, minHeight, minWidth }: SizingProps) => JSX.DOMNode;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { jsx as _jsx } from "@tempots/dom/jsx-runtime";
|
|
2
|
+
import { Sx } from './Sx';
|
|
3
|
+
export const Sizing = ({ width, height, maxHeight, maxWidth, minHeight, minWidth }) => {
|
|
4
|
+
return _jsx(Sx, { sx: { width, height, maxHeight, maxWidth, minHeight, minWidth } }); // TODO any
|
|
5
|
+
};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { type JSX } from '@tempots/dom';
|
|
2
|
+
import { type Size } from '../../styles/size';
|
|
3
|
+
export type Space = JSX.VValue<Size> | JSX.VValue<number>;
|
|
4
|
+
export interface SpacingProps {
|
|
5
|
+
m?: Space;
|
|
6
|
+
mt?: Space;
|
|
7
|
+
mr?: Space;
|
|
8
|
+
mb?: Space;
|
|
9
|
+
ml?: Space;
|
|
10
|
+
mh?: Space;
|
|
11
|
+
mv?: Space;
|
|
12
|
+
ms?: Space;
|
|
13
|
+
me?: Space;
|
|
14
|
+
mis?: Space;
|
|
15
|
+
mie?: Space;
|
|
16
|
+
p?: Space;
|
|
17
|
+
pt?: Space;
|
|
18
|
+
pr?: Space;
|
|
19
|
+
pb?: Space;
|
|
20
|
+
pl?: Space;
|
|
21
|
+
ph?: Space;
|
|
22
|
+
pv?: Space;
|
|
23
|
+
ps?: Space;
|
|
24
|
+
pe?: Space;
|
|
25
|
+
pis?: Space;
|
|
26
|
+
pie?: Space;
|
|
27
|
+
}
|
|
28
|
+
export declare const Spacing: (props: SpacingProps) => JSX.DOMNode;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { jsx as _jsx } from "@tempots/dom/jsx-runtime";
|
|
2
|
+
import { Signal, ClassName, Consumer } from '@tempots/dom';
|
|
3
|
+
import { getSizeOrNull } from '../../styles/size';
|
|
4
|
+
import { objectOfPropertiesToSignalOfObject, sxToClassProp } from '../../styles/sx';
|
|
5
|
+
import { StyleMarker } from '../StyleProvider/StyleProvider';
|
|
6
|
+
const map = {
|
|
7
|
+
m: ['margin'],
|
|
8
|
+
mt: ['marginTop'],
|
|
9
|
+
mr: ['marginRight'],
|
|
10
|
+
mb: ['marginBottom'],
|
|
11
|
+
ml: ['marginLeft'],
|
|
12
|
+
ms: ['marginBlockStart'],
|
|
13
|
+
me: ['marginBlockEnd'],
|
|
14
|
+
mis: ['marginInlineStart'],
|
|
15
|
+
mie: ['marginInlineEnd'],
|
|
16
|
+
p: ['padding'],
|
|
17
|
+
pt: ['paddingTop'],
|
|
18
|
+
pr: ['paddingRight'],
|
|
19
|
+
pb: ['paddingBottom'],
|
|
20
|
+
pl: ['paddingLeft'],
|
|
21
|
+
ps: ['paddingBlockStart'],
|
|
22
|
+
pe: ['paddingBlockEnd'],
|
|
23
|
+
pis: ['paddingInlineStart'],
|
|
24
|
+
pie: ['paddingInlineEnd'],
|
|
25
|
+
mh: ['marginStart', 'marginEnd'],
|
|
26
|
+
mv: ['marginTop', 'marginBottom'],
|
|
27
|
+
ph: ['paddingStart', 'paddingEnd'],
|
|
28
|
+
pv: ['paddingTop', 'paddingBottom']
|
|
29
|
+
};
|
|
30
|
+
export const Spacing = (props) => {
|
|
31
|
+
return (_jsx(Consumer, { mark: StyleMarker, children: (theme) => {
|
|
32
|
+
const keys = Object.keys(props).filter(k => k !== 'children');
|
|
33
|
+
if (keys.length === 0)
|
|
34
|
+
return null;
|
|
35
|
+
const sx = keys.reduce((acc, k) => {
|
|
36
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
37
|
+
const s = Signal.wrap(props[k]).combine(theme.styles, (s, { styles: { spacing } }) => [s, spacing]);
|
|
38
|
+
for (const kk of map[k]) {
|
|
39
|
+
if (acc[kk] == null) {
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
43
|
+
acc[kk] = s.map(([v, spacing]) => getSizeOrNull(v, spacing));
|
|
44
|
+
}
|
|
45
|
+
return acc;
|
|
46
|
+
}, {});
|
|
47
|
+
return _jsx(ClassName, { value: sxToClassProp(objectOfPropertiesToSignalOfObject(sx)) });
|
|
48
|
+
} }));
|
|
49
|
+
};
|
package/index.d.ts
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export { Box, type BoxProps } from './components/Box/Box';
|
|
2
|
+
export { Button, type ButtonProps } from './components/Button/Button';
|
|
3
|
+
export { Control, type ControlProps } from './components/Control/Control';
|
|
4
|
+
export { Sizing, type SizingProps } from './components/styling/Sizing';
|
|
5
|
+
export { Spacing, type SpacingProps, type Space } from './components/styling/Spacing';
|
|
6
|
+
export { Stack, type StackProps, type AlignItems, type JustifyContent } from './components/Stack/Stack';
|
|
7
|
+
export { Group, type GroupProps, type Position } from './components/Group/Group';
|
|
8
|
+
export { Sx, type SxProps as ElSxProps } from './components/styling/Sx';
|
|
9
|
+
export { Field, type FieldProps } from './components/Field/Field';
|
|
10
|
+
export type { FieldLayout } from './components/Field/field-layout';
|
|
11
|
+
export { Fieldset, type FieldsetProps } from './components/Fieldset/Fieldset';
|
|
12
|
+
export { FloatInput, type FloatInputProps, BaseFloatInput } from './components/Input/FloatInput';
|
|
13
|
+
export { IntInput, type IntInputProps, BaseIntInput } from './components/Input/IntInput';
|
|
14
|
+
export { SegmentedControl, type SegmentedControlProps } from './components/SegmentedControl/SegmentedControl';
|
|
15
|
+
export { NativeSelect, type NativeSelectProps } from './components/Input/NativeSelect';
|
|
16
|
+
export { Popover, type PopoverProps, type Placement, type OpenStrategy, UnstyledPopover, type UnstyledPopoverProps } from './components/Popover';
|
|
17
|
+
export type { Side } from './styles/side';
|
|
18
|
+
export type { Size } from './styles/size';
|
|
19
|
+
export type { SX } from './styles/sx';
|
|
20
|
+
export { TextInput, type TextInputProps, BaseTextInput } from './components/Input/TextInput';
|
|
21
|
+
export { Tooltip, type TooltipProps } from './components/Tooltip';
|
|
22
|
+
export { type UIStyles, defaultLightStyles as defaultStyles, type Heading } from './styles/ui-styles';
|
|
23
|
+
export { UnitInput, type UnitInputProps } from './components/Input/UnitInput';
|
|
24
|
+
export { StyleMarker, StyleProvider, type StyleProviderProps, type UITheme, type UIComponentStyles, defaultComponentStyle } from './components/StyleProvider/StyleProvider';
|
package/index.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export { Box } from './components/Box/Box';
|
|
2
|
+
export { Button } from './components/Button/Button';
|
|
3
|
+
export { Control } from './components/Control/Control';
|
|
4
|
+
export { Sizing } from './components/styling/Sizing';
|
|
5
|
+
export { Spacing } from './components/styling/Spacing';
|
|
6
|
+
export { Stack } from './components/Stack/Stack';
|
|
7
|
+
export { Group } from './components/Group/Group';
|
|
8
|
+
export { Sx } from './components/styling/Sx';
|
|
9
|
+
export { Field } from './components/Field/Field';
|
|
10
|
+
export { Fieldset } from './components/Fieldset/Fieldset';
|
|
11
|
+
export { FloatInput, BaseFloatInput } from './components/Input/FloatInput';
|
|
12
|
+
export { IntInput, BaseIntInput } from './components/Input/IntInput';
|
|
13
|
+
export { SegmentedControl } from './components/SegmentedControl/SegmentedControl';
|
|
14
|
+
export { NativeSelect } from './components/Input/NativeSelect';
|
|
15
|
+
export { Popover, UnstyledPopover } from './components/Popover';
|
|
16
|
+
export { TextInput, BaseTextInput } from './components/Input/TextInput';
|
|
17
|
+
export { Tooltip } from './components/Tooltip';
|
|
18
|
+
export { defaultLightStyles as defaultStyles } from './styles/ui-styles';
|
|
19
|
+
export { UnitInput } from './components/Input/UnitInput';
|
|
20
|
+
export { StyleMarker, StyleProvider, defaultComponentStyle } from './components/StyleProvider/StyleProvider';
|
package/package.json
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@tempots/ui",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"main": "index.js",
|
|
5
|
+
"types": "index.d.ts",
|
|
6
|
+
"scripts": {
|
|
7
|
+
"watch": "tsc --watch",
|
|
8
|
+
"build": "tsc",
|
|
9
|
+
"test": "jest",
|
|
10
|
+
"test:watch": "jest --watch",
|
|
11
|
+
"coverage": "jest --coverage",
|
|
12
|
+
"npm:prep": "yarn build && cp README.md package.json dist",
|
|
13
|
+
"npm:publish": "yarn npm:prep && (cd dist && yarn publish --access public)"
|
|
14
|
+
},
|
|
15
|
+
"dependencies": {
|
|
16
|
+
"@emotion/css": "^11.10.6",
|
|
17
|
+
"@floating-ui/dom": "^1.2.6",
|
|
18
|
+
"@tempots/dom": "^5.0.2",
|
|
19
|
+
"@tempots/std": "^0.9.7"
|
|
20
|
+
},
|
|
21
|
+
"devDependencies": {
|
|
22
|
+
"@happy-dom/jest-environment": "^9.1.7",
|
|
23
|
+
"@types/jest": "^29.5.0",
|
|
24
|
+
"@types/node": "^18.15.11",
|
|
25
|
+
"@typescript-eslint/eslint-plugin": "^5.43.0",
|
|
26
|
+
"eslint": "^8.0.1",
|
|
27
|
+
"eslint-config-standard-with-typescript": "^34.0.1",
|
|
28
|
+
"eslint-plugin-import": "^2.25.2",
|
|
29
|
+
"eslint-plugin-n": "^15.0.0",
|
|
30
|
+
"eslint-plugin-promise": "^6.0.0",
|
|
31
|
+
"happy-dom": "^9.1.0",
|
|
32
|
+
"jest": "^29.5.0",
|
|
33
|
+
"ts-jest": "^29.1.0",
|
|
34
|
+
"typescript": "^5.0.3"
|
|
35
|
+
},
|
|
36
|
+
"repository": {
|
|
37
|
+
"type": "git",
|
|
38
|
+
"url": "git+https://github.com/fponticelli/tempots-ui.git"
|
|
39
|
+
},
|
|
40
|
+
"author": "Franco Ponticelli",
|
|
41
|
+
"license": "Apache-2.0",
|
|
42
|
+
"bugs": {
|
|
43
|
+
"url": "https://github.com/fponticelli/tempots-ui/issues"
|
|
44
|
+
},
|
|
45
|
+
"homepage": "https://github.com/fponticelli/tempots-ui#readme"
|
|
46
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type Color = 'blue' | 'green' | 'red' | 'yellow' | 'orange' | 'purple' | 'pink' | 'gray' | 'black';
|
package/styles/color.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const resetCss = "\n html {\n line-height: 1.5;\n -webkit-text-size-adjust: 100%;\n font-family: system-ui, sans-serif;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n -moz-osx-font-smoothing: grayscale;\n touch-action: manipulation;\n }\n\n body {\n position: relative;\n min-height: 100%;\n font-feature-settings: 'kern';\n }\n\n *,\n *::before,\n *::after {\n border-width: 0;\n border-style: solid;\n box-sizing: border-box;\n }\n\n main {\n display: block;\n }\n\n hr {\n border-top-width: 1px;\n box-sizing: content-box;\n height: 0;\n overflow: visible;\n }\n\n pre,\n code,\n kbd,\n samp {\n font-family: SFMono-Regular, Menlo, Monaco, Consolas, monospace;\n font-size: 1em;\n }\n\n a {\n background-color: transparent;\n color: inherit;\n text-decoration: inherit;\n }\n\n abbr[title] {\n border-bottom: none;\n text-decoration: underline;\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n }\n\n b,\n strong {\n font-weight: bold;\n }\n\n small {\n font-size: 80%;\n }\n\n sub,\n sup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n }\n\n sub {\n bottom: -0.25em;\n }\n\n sup {\n top: -0.5em;\n }\n\n img {\n border-style: none;\n }\n\n button,\n input,\n optgroup,\n select,\n textarea {\n font-family: inherit;\n font-size: 100%;\n line-height: 1.15;\n margin: 0;\n }\n\n button,\n input {\n overflow: visible;\n }\n\n button,\n select {\n text-transform: none;\n }\n\n button::-moz-focus-inner,\n [type='button']::-moz-focus-inner,\n [type='reset']::-moz-focus-inner,\n [type='submit']::-moz-focus-inner {\n border-style: none;\n padding: 0;\n }\n\n fieldset {\n padding: 0.35em 0.75em 0.625em;\n }\n\n legend {\n box-sizing: border-box;\n color: inherit;\n display: table;\n max-width: 100%;\n padding: 0;\n white-space: normal;\n }\n\n progress {\n vertical-align: baseline;\n }\n\n textarea {\n overflow: auto;\n }\n\n [type='checkbox'],\n [type='radio'] {\n box-sizing: border-box;\n padding: 0;\n }\n\n [type='number']::-webkit-inner-spin-button,\n [type='number']::-webkit-outer-spin-button {\n -webkit-appearance: none !important;\n }\n\n input[type='number'] {\n -moz-appearance: textfield;\n }\n\n [type='search'] {\n -webkit-appearance: textfield;\n outline-offset: -2px;\n }\n\n [type='search']::-webkit-search-decoration {\n -webkit-appearance: none !important;\n }\n\n ::-webkit-file-upload-button {\n -webkit-appearance: button;\n font: inherit;\n }\n\n details {\n display: block;\n }\n\n summary {\n display: list-item;\n }\n\n template {\n display: none;\n }\n\n [hidden] {\n display: none !important;\n }\n\n body,\n blockquote,\n dl,\n dd,\n h1,\n h2,\n h3,\n h4,\n h5,\n h6,\n hr,\n figure,\n p,\n pre {\n margin: 0;\n }\n\n button {\n background: transparent;\n padding: 0;\n }\n\n fieldset {\n margin: 0;\n padding: 0;\n }\n\n ol,\n ul {\n margin: 0;\n padding: 0;\n }\n\n textarea {\n resize: vertical;\n }\n\n button,\n [role='button'] {\n cursor: pointer;\n }\n\n button::-moz-focus-inner {\n border: 0 !important;\n }\n\n table {\n border-collapse: collapse;\n }\n\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n font-size: inherit;\n font-weight: inherit;\n }\n\n button,\n input,\n optgroup,\n select,\n textarea {\n padding: 0;\n line-height: inherit;\n color: inherit;\n }\n\n img,\n svg,\n video,\n canvas,\n audio,\n iframe,\n embed,\n object {\n display: block;\n }\n\n img,\n video {\n max-width: 100%;\n height: auto;\n }\n\n [data-js-focus-visible]\n :focus:not([data-focus-visible-added]):not([data-focus-visible-disabled]) {\n outline: none;\n box-shadow: none;\n }\n\n select::-ms-expand {\n display: none;\n }\n";
|