@santi020k/lumen-react 1.7.0-rc.0 → 1.8.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 +92 -25
- package/bin/lumen.mjs +2 -0
- package/dist/components.d.ts +30 -84
- package/dist/components.d.ts.map +1 -1
- package/dist/components.js +149 -75
- package/dist/hooks.d.ts.map +1 -1
- package/dist/hooks.js +5 -3
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/server-components.d.ts +80 -0
- package/dist/server-components.d.ts.map +1 -0
- package/dist/server-components.js +64 -0
- package/dist/server.d.ts +3 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +2 -0
- package/package.json +17 -4
- package/styles/critical.css +2054 -0
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { createElement } from 'react';
|
|
3
|
+
import { composeClassName } from '@santi020k/lumen-core';
|
|
4
|
+
const Primitive = ({ as, className, uiClassName, ...props }) => {
|
|
5
|
+
const tag = as ?? 'div';
|
|
6
|
+
const safeClassName = typeof className === 'string' ? className : undefined;
|
|
7
|
+
return createElement(tag, {
|
|
8
|
+
className: composeClassName(uiClassName, safeClassName),
|
|
9
|
+
...props
|
|
10
|
+
});
|
|
11
|
+
};
|
|
12
|
+
const glassIntensityClass = (glass) => glass === 'subtle' ?
|
|
13
|
+
'ui-glass-subtle' :
|
|
14
|
+
glass === 'strong' && 'ui-glass-strong';
|
|
15
|
+
export const Badge = ({ className, variant = 'default', ...props }) => (_jsx("span", { className: composeClassName('ui-badge', `ui-badge--${variant}`, className), "data-variant": variant, ...props }));
|
|
16
|
+
export const Card = ({ as, className, glass = false, variant = 'default', ...props }) => (_jsx(Primitive, { ...(as ? { as } : {}), className: composeClassName(variant === 'muted' && 'ui-card--muted', variant === 'interactive' && 'ui-card--interactive', variant === 'unstyled' && 'ui-card--unstyled', (glass || variant === 'glass') && composeClassName('ui-card--glass', glassIntensityClass(glass)), className), "data-slot": "card", "data-variant": variant, ...props, uiClassName: "ui-card" }));
|
|
17
|
+
export const CardHeader = ({ as, ...props }) => (_jsx(Primitive, { ...(as ? { as } : {}), "data-slot": "card-header", ...props, uiClassName: "ui-card__header" }));
|
|
18
|
+
export const CardTitle = ({ as, ...props }) => (_jsx(Primitive, { ...(as ? { as } : {}), "data-slot": "card-title", ...props, uiClassName: "ui-card__title" }));
|
|
19
|
+
export const CardDescription = ({ as, ...props }) => (_jsx(Primitive, { ...(as ? { as } : {}), "data-slot": "card-description", ...props, uiClassName: "ui-card__description" }));
|
|
20
|
+
export const CardContent = ({ as, ...props }) => (_jsx(Primitive, { ...(as ? { as } : {}), "data-slot": "card-content", ...props, uiClassName: "ui-card__content" }));
|
|
21
|
+
export const CardFooter = ({ as, ...props }) => (_jsx(Primitive, { ...(as ? { as } : {}), "data-slot": "card-footer", ...props, uiClassName: "ui-card__footer" }));
|
|
22
|
+
export const Container = ({ as = 'div', className, size = 'lg', ...props }) => createElement(as, {
|
|
23
|
+
className: composeClassName('ui-container', `ui-container--${size}`, className),
|
|
24
|
+
'data-size': size,
|
|
25
|
+
'data-ui-container': true,
|
|
26
|
+
...props
|
|
27
|
+
});
|
|
28
|
+
export const Direction = ({ className, dir = 'ltr', ...props }) => (_jsx("div", { className: composeClassName('ui-direction', className), dir: dir, ...props }));
|
|
29
|
+
export const Grid = ({ as = 'div', className, columns = 'auto', gap = 'md', minItemWidth, style, ...props }) => {
|
|
30
|
+
const gridStyle = {
|
|
31
|
+
...style,
|
|
32
|
+
'--ui-grid-min': minItemWidth
|
|
33
|
+
};
|
|
34
|
+
return createElement(as, {
|
|
35
|
+
className: composeClassName('ui-grid', `ui-grid--columns-${columns}`, `ui-grid--gap-${gap}`, className),
|
|
36
|
+
'data-columns': columns,
|
|
37
|
+
'data-ui-grid': true,
|
|
38
|
+
style: gridStyle,
|
|
39
|
+
...props
|
|
40
|
+
});
|
|
41
|
+
};
|
|
42
|
+
export const Input = ({ className, ref, type = 'text', visualSize = 'default', ...props }) => (_jsx("input", { className: composeClassName('ui-input', visualSize === 'sm' && 'ui-input--sm', visualSize === 'lg' && 'ui-input--lg', className), ref: ref, type: type, ...props }));
|
|
43
|
+
export const Label = ({ className, ...props }) => (_jsx("label", { className: composeClassName('ui-label', className), ...props }));
|
|
44
|
+
export const Progress = ({ className, max = 100, value = 0, ...props }) => {
|
|
45
|
+
const safeMax = max > 0 ? max : 100;
|
|
46
|
+
const safeValue = Math.min(safeMax, Math.max(0, value));
|
|
47
|
+
const percentage = (safeValue / safeMax) * 100;
|
|
48
|
+
return (_jsx("div", { "aria-valuemax": safeMax, "aria-valuemin": 0, "aria-valuenow": safeValue, className: composeClassName('ui-progress', className), role: "progressbar", ...props, children: _jsx("span", { className: "ui-progress__bar", "data-slot": "progress-indicator", style: { width: `${percentage}%` } }) }));
|
|
49
|
+
};
|
|
50
|
+
export const Separator = ({ className, orientation = 'horizontal', ...props }) => (_jsx("hr", { "aria-orientation": orientation, className: composeClassName('ui-separator', `ui-separator--${orientation}`, className), "data-orientation": orientation, ...props }));
|
|
51
|
+
export const Skeleton = ({ className, ...props }) => (_jsx("div", { className: composeClassName('ui-skeleton', className), ...props }));
|
|
52
|
+
export const Spinner = ({ 'aria-hidden': ariaHidden, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledby, className, role, ...props }) => {
|
|
53
|
+
const isAccessible = Boolean(ariaLabel || ariaLabelledby);
|
|
54
|
+
return (_jsx("span", { "aria-hidden": ariaHidden ?? (isAccessible ? undefined : true), "aria-label": ariaLabel, "aria-labelledby": ariaLabelledby, className: composeClassName('ui-spinner', className), role: role ?? (isAccessible ? 'status' : undefined), ...props }));
|
|
55
|
+
};
|
|
56
|
+
export const Stack = ({ align = 'stretch', as = 'div', className, direction = 'vertical', gap = 'md', justify = 'start', wrap = false, ...props }) => createElement(as, {
|
|
57
|
+
className: composeClassName('ui-stack', `ui-stack--${direction}`, `ui-stack--gap-${gap}`, `ui-stack--align-${align}`, `ui-stack--justify-${justify}`, wrap && 'ui-stack--wrap', className),
|
|
58
|
+
'data-direction': direction,
|
|
59
|
+
'data-ui-stack': true,
|
|
60
|
+
...props
|
|
61
|
+
});
|
|
62
|
+
export const Textarea = ({ className, ref, rows = 4, ...props }) => (_jsx("textarea", { className: composeClassName('ui-textarea', className), ref: ref, rows: rows, ...props }));
|
|
63
|
+
export const Typography = ({ className, ...props }) => (_jsx("div", { className: composeClassName('ui-typography', className), ...props }));
|
|
64
|
+
export const VisuallyHidden = ({ className, focusable = false, ...props }) => (_jsx("span", { className: composeClassName('ui-visually-hidden', focusable && 'ui-visually-hidden--focusable', className), "data-ui-visually-hidden": true, ...props }));
|
package/dist/server.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAA;AACtC,OAAO,EACL,KAAK,kBAAkB,EACvB,mBAAmB,EACpB,MAAM,uBAAuB,CAAA"}
|
package/dist/server.js
ADDED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@santi020k/lumen-react",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.8.0",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -8,7 +8,8 @@
|
|
|
8
8
|
"type": "module",
|
|
9
9
|
"sideEffects": [
|
|
10
10
|
"./layers.css",
|
|
11
|
-
"./styles.css"
|
|
11
|
+
"./styles.css",
|
|
12
|
+
"./styles/critical.css"
|
|
12
13
|
],
|
|
13
14
|
"main": "./dist/index.js",
|
|
14
15
|
"module": "./dist/index.js",
|
|
@@ -18,27 +19,39 @@
|
|
|
18
19
|
"types": "./dist/index.d.ts",
|
|
19
20
|
"import": "./dist/index.js"
|
|
20
21
|
},
|
|
22
|
+
"./server": {
|
|
23
|
+
"types": "./dist/server.d.ts",
|
|
24
|
+
"import": "./dist/server.js"
|
|
25
|
+
},
|
|
21
26
|
"./styles.css": "./styles.css",
|
|
27
|
+
"./styles/critical.css": "./styles/critical.css",
|
|
22
28
|
"./layers.css": "./layers.css",
|
|
23
29
|
"./package.json": "./package.json"
|
|
24
30
|
},
|
|
25
31
|
"files": [
|
|
32
|
+
"bin",
|
|
26
33
|
"dist",
|
|
27
34
|
"layers.css",
|
|
28
35
|
"styles.css",
|
|
36
|
+
"styles",
|
|
29
37
|
"README.md",
|
|
30
38
|
"LICENSE"
|
|
31
39
|
],
|
|
40
|
+
"bin": {
|
|
41
|
+
"lumen": "./bin/lumen.mjs"
|
|
42
|
+
},
|
|
32
43
|
"dependencies": {
|
|
33
44
|
"uqr": "^0.1.3",
|
|
34
|
-
"@santi020k/lumen": "^1.
|
|
35
|
-
"@santi020k/lumen-core": "^1.
|
|
45
|
+
"@santi020k/lumen": "^1.8.0",
|
|
46
|
+
"@santi020k/lumen-core": "^1.8.0"
|
|
36
47
|
},
|
|
37
48
|
"devDependencies": {
|
|
38
49
|
"@types/react": "^19.2.18",
|
|
50
|
+
"@types/react-dom": "^19.2.5",
|
|
39
51
|
"@vitest/coverage-v8": "^4.1.11",
|
|
40
52
|
"jsdom": "^29.1.1",
|
|
41
53
|
"react": "^19.2.8",
|
|
54
|
+
"react-dom": "^19.2.8",
|
|
42
55
|
"typescript": "^6.0.3",
|
|
43
56
|
"vitest": "^4.1.11"
|
|
44
57
|
},
|