@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.
@@ -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 }));
@@ -0,0 +1,3 @@
1
+ export * from './server-components.js';
2
+ export { type LumenComponentName, lumenComponentNames } from '@santi020k/lumen-core';
3
+ //# sourceMappingURL=server.d.ts.map
@@ -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
@@ -0,0 +1,2 @@
1
+ export * from './server-components.js';
2
+ export { lumenComponentNames } from '@santi020k/lumen-core';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@santi020k/lumen-react",
3
- "version": "1.7.0-rc.0",
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.7.0-rc.0",
35
- "@santi020k/lumen-core": "^1.7.0-rc.0"
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
  },