@chayns-ui/core 0.7.0 → 0.9.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.
Files changed (33) hide show
  1. package/dist/avatar.css +5 -11
  2. package/dist/components/avatar/Avatar.d.ts +1 -0
  3. package/dist/components/avatar/Avatar.d.ts.map +1 -1
  4. package/dist/components/avatar/Avatar.js +10 -7
  5. package/dist/components/avatar/Avatar.js.map +1 -1
  6. package/dist/components/progress/Progress.d.ts +4 -0
  7. package/dist/components/progress/Progress.d.ts.map +1 -0
  8. package/dist/components/progress/Progress.js +50 -0
  9. package/dist/components/progress/Progress.js.map +1 -0
  10. package/dist/components/progress/Progress.types.d.ts +18 -0
  11. package/dist/components/progress/Progress.types.d.ts.map +1 -0
  12. package/dist/components/skeleton/Skeleton.d.ts +4 -0
  13. package/dist/components/skeleton/Skeleton.d.ts.map +1 -0
  14. package/dist/components/skeleton/Skeleton.js +20 -0
  15. package/dist/components/skeleton/Skeleton.js.map +1 -0
  16. package/dist/components/skeleton/Skeleton.types.d.ts +11 -0
  17. package/dist/components/skeleton/Skeleton.types.d.ts.map +1 -0
  18. package/dist/components/skeleton/Skeleton.types.js +10 -0
  19. package/dist/components/skeleton/Skeleton.types.js.map +1 -0
  20. package/dist/components/spinner/Spinner.d.ts +4 -0
  21. package/dist/components/spinner/Spinner.d.ts.map +1 -0
  22. package/dist/components/spinner/Spinner.js +16 -0
  23. package/dist/components/spinner/Spinner.js.map +1 -0
  24. package/dist/components/spinner/Spinner.types.d.ts +8 -0
  25. package/dist/components/spinner/Spinner.types.d.ts.map +1 -0
  26. package/dist/index.d.ts +7 -0
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +5 -1
  29. package/dist/progress.css +28 -0
  30. package/dist/skeleton.css +41 -0
  31. package/dist/spinner.css +24 -0
  32. package/dist/styles.css +3 -0
  33. package/package.json +4 -1
package/dist/avatar.css CHANGED
@@ -1,5 +1,7 @@
1
1
  @layer chayns.components {
2
2
  .chayns-avatar {
3
+ --chayns-avatar-initials-lightness: 25%;
4
+
3
5
  position: relative;
4
6
  display: inline-flex;
5
7
  flex: none;
@@ -9,7 +11,7 @@
9
11
  block-size: var(--k44);
10
12
  overflow: visible;
11
13
  border-radius: 50%;
12
- background: var(--accent);
14
+ background: var(--chayns-avatar-initials-color, var(--accent));
13
15
  color: var(--on-accent);
14
16
  font-size: var(--fs-body);
15
17
  font-weight: 600;
@@ -17,16 +19,8 @@
17
19
  vertical-align: middle;
18
20
  }
19
21
 
20
- .chayns-avatar--tone-0 {
21
- background: var(--accent);
22
- }
23
-
24
- .chayns-avatar--tone-1 {
25
- background: var(--accent-hover);
26
- }
27
-
28
- .chayns-avatar--tone-2 {
29
- background: var(--accent-active);
22
+ :is(.chayns-theme--dark .chayns-avatar, .chayns-theme--dark.chayns-avatar) {
23
+ --chayns-avatar-initials-lightness: 70%;
30
24
  }
31
25
 
32
26
  .chayns-avatar--small {
@@ -1,4 +1,5 @@
1
1
  import type { AvatarProps } from './Avatar.types.js';
2
+ export declare const getColorFromInitials: (input: string) => string;
2
3
  declare const Avatar: import("react").ForwardRefExoticComponent<Omit<AvatarProps, "ref"> & import("react").RefAttributes<HTMLSpanElement>>;
3
4
  export default Avatar;
4
5
  //# sourceMappingURL=Avatar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Avatar.d.ts","sourceRoot":"","sources":["../../../src/components/avatar/Avatar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAsBrD,QAAA,MAAM,MAAM,sHA2CV,CAAC;AAEH,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"Avatar.d.ts","sourceRoot":"","sources":["../../../src/components/avatar/Avatar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAarD,eAAO,MAAM,oBAAoB,GAAI,OAAO,MAAM,KAAG,MASpD,CAAC;AAEF,QAAA,MAAM,MAAM,sHA8CV,CAAC;AAEH,eAAe,MAAM,CAAC"}
@@ -6,27 +6,30 @@ var getInitials = (name) => {
6
6
  if (words.length === 0) return "";
7
7
  return `${words[0]?.charAt(0) ?? ""}${words.length > 1 ? words.at(-1)?.charAt(0) ?? "" : ""}`.toUpperCase();
8
8
  };
9
- var getTone = (name) => {
9
+ var getColorFromInitials = (input) => {
10
10
  let hash = 0;
11
- for (const character of name) hash = hash * 31 + character.codePointAt(0) >>> 0;
12
- return hash % 3;
11
+ for (let index = 0; index < input.length; index += 1) hash = input.charCodeAt(index) + ((hash << 5) - hash);
12
+ return `hsl(${Math.abs(hash) % 360} 65% var(--chayns-avatar-initials-lightness))`;
13
13
  };
14
- var Avatar = forwardRef(function Avatar({ alt, badge, className, name, size = "default", src, ...spanProps }, ref) {
14
+ var Avatar = forwardRef(function Avatar({ alt, badge, className, name, size = "default", src, style, ...spanProps }, ref) {
15
15
  const [failedSource, setFailedSource] = useState();
16
16
  const showImage = Boolean(src) && failedSource !== src;
17
17
  const initials = getInitials(name);
18
- const tone = getTone(name);
18
+ const initialsColorStyle = {
19
+ "--chayns-avatar-initials-color": getColorFromInitials(name),
20
+ ...style
21
+ };
19
22
  return /* @__PURE__ */ jsxs("span", {
20
23
  ...spanProps,
21
24
  "aria-label": alt ?? name,
22
25
  className: [
23
26
  "chayns-avatar",
24
- `chayns-avatar--tone-${tone}`,
25
27
  `chayns-avatar--${size}`,
26
28
  className
27
29
  ].filter(Boolean).join(" "),
28
30
  role: "img",
29
31
  ref,
32
+ style: initialsColorStyle,
30
33
  children: [showImage ? /* @__PURE__ */ jsx("img", {
31
34
  alt: "",
32
35
  className: "chayns-avatar__image",
@@ -44,6 +47,6 @@ var Avatar = forwardRef(function Avatar({ alt, badge, className, name, size = "d
44
47
  });
45
48
  });
46
49
  //#endregion
47
- export { Avatar as default };
50
+ export { Avatar as default, getColorFromInitials };
48
51
 
49
52
  //# sourceMappingURL=Avatar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Avatar.js","names":[],"sources":["../../../src/components/avatar/Avatar.tsx"],"sourcesContent":["import { forwardRef, useState } from 'react';\n\nimport type { AvatarProps } from './Avatar.types.js';\n\nconst getInitials = (name: string) => {\n const words = name.trim().split(/\\s+/).filter(Boolean);\n if (words.length === 0) {\n return '';\n }\n\n const first = words[0]?.charAt(0) ?? '';\n const last = words.length > 1 ? (words.at(-1)?.charAt(0) ?? '') : '';\n return `${first}${last}`.toUpperCase();\n};\n\nconst getTone = (name: string) => {\n let hash = 0;\n for (const character of name) {\n hash = (hash * 31 + character.codePointAt(0)!) >>> 0;\n }\n\n return hash % 3;\n};\n\nconst Avatar = forwardRef<HTMLSpanElement, AvatarProps>(function Avatar(\n { alt, badge, className, name, size = 'default', src, ...spanProps },\n ref,\n) {\n const [failedSource, setFailedSource] = useState<string>();\n const showImage = Boolean(src) && failedSource !== src;\n const initials = getInitials(name);\n const tone = getTone(name);\n\n return (\n <span\n {...spanProps}\n aria-label={alt ?? name}\n className={[\n 'chayns-avatar',\n `chayns-avatar--tone-${tone}`,\n `chayns-avatar--${size}`,\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n role=\"img\"\n ref={ref}\n >\n {showImage ? (\n <img\n alt=\"\"\n className=\"chayns-avatar__image\"\n onError={() => setFailedSource(src)}\n src={src}\n />\n ) : (\n <span aria-hidden=\"true\" className=\"chayns-avatar__initials\">\n {initials}\n </span>\n )}\n {badge ? (\n <span aria-hidden=\"true\" className=\"chayns-avatar__badge\">\n {badge}\n </span>\n ) : null}\n </span>\n );\n});\n\nexport default Avatar;\n"],"mappings":";;;AAIA,IAAM,eAAe,SAAiB;CACpC,MAAM,QAAQ,KAAK,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,OAAO,OAAO;CACrD,IAAI,MAAM,WAAW,GACnB,OAAO;CAKT,OAAO,GAFO,MAAM,EAAE,EAAE,OAAO,CAAC,KAAK,KACxB,MAAM,SAAS,IAAK,MAAM,GAAG,EAAE,CAAC,EAAE,OAAO,CAAC,KAAK,KAAM,KACzC,YAAY;AACvC;AAEA,IAAM,WAAW,SAAiB;CAChC,IAAI,OAAO;CACX,KAAK,MAAM,aAAa,MACtB,OAAQ,OAAO,KAAK,UAAU,YAAY,CAAC,MAAQ;CAGrD,OAAO,OAAO;AAChB;AAEA,IAAM,SAAS,WAAyC,SAAS,OAC/D,EAAE,KAAK,OAAO,WAAW,MAAM,OAAO,WAAW,KAAK,GAAG,aACzD,KACA;CACA,MAAM,CAAC,cAAc,mBAAmB,SAAiB;CACzD,MAAM,YAAY,QAAQ,GAAG,KAAK,iBAAiB;CACnD,MAAM,WAAW,YAAY,IAAI;CACjC,MAAM,OAAO,QAAQ,IAAI;CAEzB,OACE,qBAAC,QAAD;EACE,GAAI;EACJ,cAAY,OAAO;EACnB,WAAW;GACT;GACA,uBAAuB;GACvB,kBAAkB;GAClB;EACF,CAAC,CACE,OAAO,OAAO,CAAC,CACf,KAAK,GAAG;EACX,MAAK;EACA;EAZP,UAAA,CAcG,YACC,oBAAC,OAAD;GACE,KAAI;GACJ,WAAU;GACV,eAAe,gBAAgB,GAAG;GAC7B;EACN,CAAA,IAED,oBAAC,QAAD;GAAM,eAAY;GAAO,WAAU;GAChC,UAAA;EACG,CAAA,GAEP,QACC,oBAAC,QAAD;GAAM,eAAY;GAAO,WAAU;GAChC,UAAA;EACG,CAAA,IACJ,IACA;;AAEV,CAAC"}
1
+ {"version":3,"file":"Avatar.js","names":[],"sources":["../../../src/components/avatar/Avatar.tsx"],"sourcesContent":["import { forwardRef, useState, type CSSProperties } from 'react';\n\nimport type { AvatarProps } from './Avatar.types.js';\n\nconst getInitials = (name: string) => {\n const words = name.trim().split(/\\s+/).filter(Boolean);\n if (words.length === 0) {\n return '';\n }\n\n const first = words[0]?.charAt(0) ?? '';\n const last = words.length > 1 ? (words.at(-1)?.charAt(0) ?? '') : '';\n return `${first}${last}`.toUpperCase();\n};\n\nexport const getColorFromInitials = (input: string): string => {\n let hash = 0;\n\n for (let index = 0; index < input.length; index += 1) {\n hash = input.charCodeAt(index) + ((hash << 5) - hash);\n }\n\n const hue = Math.abs(hash) % 360;\n return `hsl(${hue} 65% var(--chayns-avatar-initials-lightness))`;\n};\n\nconst Avatar = forwardRef<HTMLSpanElement, AvatarProps>(function Avatar(\n { alt, badge, className, name, size = 'default', src, style, ...spanProps },\n ref,\n) {\n const [failedSource, setFailedSource] = useState<string>();\n const showImage = Boolean(src) && failedSource !== src;\n const initials = getInitials(name);\n const initialsColorStyle: CSSProperties & Record<'--chayns-avatar-initials-color', string> = {\n '--chayns-avatar-initials-color': getColorFromInitials(name),\n ...style,\n };\n\n return (\n <span\n {...spanProps}\n aria-label={alt ?? name}\n className={[\n 'chayns-avatar',\n `chayns-avatar--${size}`,\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n role=\"img\"\n ref={ref}\n style={initialsColorStyle}\n >\n {showImage ? (\n <img\n alt=\"\"\n className=\"chayns-avatar__image\"\n onError={() => setFailedSource(src)}\n src={src}\n />\n ) : (\n <span aria-hidden=\"true\" className=\"chayns-avatar__initials\">\n {initials}\n </span>\n )}\n {badge ? (\n <span aria-hidden=\"true\" className=\"chayns-avatar__badge\">\n {badge}\n </span>\n ) : null}\n </span>\n );\n});\n\nexport default Avatar;\n"],"mappings":";;;AAIA,IAAM,eAAe,SAAiB;CACpC,MAAM,QAAQ,KAAK,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,OAAO,OAAO;CACrD,IAAI,MAAM,WAAW,GACnB,OAAO;CAKT,OAAO,GAFO,MAAM,EAAE,EAAE,OAAO,CAAC,KAAK,KACxB,MAAM,SAAS,IAAK,MAAM,GAAG,EAAE,CAAC,EAAE,OAAO,CAAC,KAAK,KAAM,KACzC,YAAY;AACvC;AAEA,IAAa,wBAAwB,UAA0B;CAC7D,IAAI,OAAO;CAEX,KAAK,IAAI,QAAQ,GAAG,QAAQ,MAAM,QAAQ,SAAS,GACjD,OAAO,MAAM,WAAW,KAAK,MAAM,QAAQ,KAAK;CAIlD,OAAO,OADK,KAAK,IAAI,IAAI,IAAI,IACX;AACpB;AAEA,IAAM,SAAS,WAAyC,SAAS,OAC/D,EAAE,KAAK,OAAO,WAAW,MAAM,OAAO,WAAW,KAAK,OAAO,GAAG,aAChE,KACA;CACA,MAAM,CAAC,cAAc,mBAAmB,SAAiB;CACzD,MAAM,YAAY,QAAQ,GAAG,KAAK,iBAAiB;CACnD,MAAM,WAAW,YAAY,IAAI;CACjC,MAAM,qBAAuF;EAC3F,kCAAkC,qBAAqB,IAAI;EAC3D,GAAG;CACL;CAEA,OACE,qBAAC,QAAD;EACE,GAAI;EACJ,cAAY,OAAO;EACnB,WAAW;GACT;GACA,kBAAkB;GAClB;EACF,CAAC,CACE,OAAO,OAAO,CAAC,CACf,KAAK,GAAG;EACX,MAAK;EACA;EACL,OAAO;EAZT,UAAA,CAcG,YACC,oBAAC,OAAD;GACE,KAAI;GACJ,WAAU;GACV,eAAe,gBAAgB,GAAG;GAC7B;EACN,CAAA,IAED,oBAAC,QAAD;GAAM,eAAY;GAAO,WAAU;GAChC,UAAA;EACG,CAAA,GAEP,QACC,oBAAC,QAAD;GAAM,eAAY;GAAO,WAAU;GAChC,UAAA;EACG,CAAA,IACJ,IACA;;AAEV,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { ProgressProps } from './Progress.types.js';
2
+ declare const Progress: import("react").ForwardRefExoticComponent<Omit<ProgressProps, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
3
+ export default Progress;
4
+ //# sourceMappingURL=Progress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Progress.d.ts","sourceRoot":"","sources":["../../../src/components/progress/Progress.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAkBzD,QAAA,MAAM,QAAQ,uHA+DZ,CAAC;AAEH,eAAe,QAAQ,CAAC"}
@@ -0,0 +1,50 @@
1
+ import { forwardRef, useId } from "react";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ //#region src/components/progress/Progress.tsx
4
+ function normalizeValue(value) {
5
+ if (Number.isNaN(value)) return 0;
6
+ if (value === Infinity) return 100;
7
+ if (value === -Infinity) return 0;
8
+ return Math.min(100, Math.max(0, Math.round(value)));
9
+ }
10
+ var Progress = forwardRef(function Progress({ "aria-label": _ariaLabel, "aria-labelledby": _ariaLabelledBy, "aria-valuemax": _ariaValueMax, "aria-valuemin": _ariaValueMin, "aria-valuenow": _ariaValueNow, "aria-valuetext": _ariaValueText, children: _children, className, label, role: _role, rootProps, tabIndex: _tabIndex, value, ...progressbarProps }, ref) {
11
+ const labelId = useId();
12
+ const normalizedValue = normalizeValue(value);
13
+ const valueText = `${normalizedValue} %`;
14
+ const { className: rootClassName, ...remainingRootProps } = rootProps ?? {};
15
+ const resolvedRootClassName = ["chayns-progress", rootClassName].filter(Boolean).join(" ");
16
+ const resolvedProgressbarClassName = ["chayns-progress__bar", className].filter(Boolean).join(" ");
17
+ return /* @__PURE__ */ jsxs("div", {
18
+ ...remainingRootProps,
19
+ className: resolvedRootClassName,
20
+ children: [/* @__PURE__ */ jsxs("div", {
21
+ className: "chayns-progress__label-row",
22
+ children: [/* @__PURE__ */ jsx("span", {
23
+ id: labelId,
24
+ children: label
25
+ }), /* @__PURE__ */ jsx("span", {
26
+ "aria-hidden": "true",
27
+ children: valueText
28
+ })]
29
+ }), /* @__PURE__ */ jsx("div", {
30
+ ...progressbarProps,
31
+ "aria-labelledby": labelId,
32
+ "aria-valuemax": 100,
33
+ "aria-valuemin": 0,
34
+ "aria-valuenow": normalizedValue,
35
+ "aria-valuetext": valueText,
36
+ className: resolvedProgressbarClassName,
37
+ ref,
38
+ role: "progressbar",
39
+ children: /* @__PURE__ */ jsx("div", {
40
+ "aria-hidden": "true",
41
+ className: "chayns-progress__fill",
42
+ style: { width: `${normalizedValue}%` }
43
+ })
44
+ })]
45
+ });
46
+ });
47
+ //#endregion
48
+ export { Progress as default };
49
+
50
+ //# sourceMappingURL=Progress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Progress.js","names":[],"sources":["../../../src/components/progress/Progress.tsx"],"sourcesContent":["import { forwardRef, useId } from 'react';\n\nimport type { ProgressProps } from './Progress.types.js';\n\nfunction normalizeValue(value: number) {\n if (Number.isNaN(value)) {\n return 0;\n }\n\n if (value === Infinity) {\n return 100;\n }\n\n if (value === -Infinity) {\n return 0;\n }\n\n return Math.min(100, Math.max(0, Math.round(value)));\n}\n\nconst Progress = forwardRef<HTMLDivElement, ProgressProps>(function Progress(\n {\n 'aria-label': _ariaLabel,\n 'aria-labelledby': _ariaLabelledBy,\n 'aria-valuemax': _ariaValueMax,\n 'aria-valuemin': _ariaValueMin,\n 'aria-valuenow': _ariaValueNow,\n 'aria-valuetext': _ariaValueText,\n children: _children,\n className,\n label,\n role: _role,\n rootProps,\n tabIndex: _tabIndex,\n value,\n ...progressbarProps\n },\n ref,\n) {\n void _ariaLabel;\n void _ariaLabelledBy;\n void _ariaValueMax;\n void _ariaValueMin;\n void _ariaValueNow;\n void _ariaValueText;\n void _children;\n void _role;\n void _tabIndex;\n\n const labelId = useId();\n const normalizedValue = normalizeValue(value);\n const valueText = `${normalizedValue} %`;\n const { className: rootClassName, ...remainingRootProps } = rootProps ?? {};\n const resolvedRootClassName = ['chayns-progress', rootClassName].filter(Boolean).join(' ');\n const resolvedProgressbarClassName = ['chayns-progress__bar', className]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div {...remainingRootProps} className={resolvedRootClassName}>\n <div className=\"chayns-progress__label-row\">\n <span id={labelId}>{label}</span>\n <span aria-hidden=\"true\">{valueText}</span>\n </div>\n <div\n {...progressbarProps}\n aria-labelledby={labelId}\n aria-valuemax={100}\n aria-valuemin={0}\n aria-valuenow={normalizedValue}\n aria-valuetext={valueText}\n className={resolvedProgressbarClassName}\n ref={ref}\n role=\"progressbar\"\n >\n <div\n aria-hidden=\"true\"\n className=\"chayns-progress__fill\"\n style={{ width: `${normalizedValue}%` }}\n />\n </div>\n </div>\n );\n});\n\nexport default Progress;\n"],"mappings":";;;AAIA,SAAS,eAAe,OAAe;CACrC,IAAI,OAAO,MAAM,KAAK,GACpB,OAAO;CAGT,IAAI,UAAU,UACZ,OAAO;CAGT,IAAI,UAAU,WACZ,OAAO;CAGT,OAAO,KAAK,IAAI,KAAK,KAAK,IAAI,GAAG,KAAK,MAAM,KAAK,CAAC,CAAC;AACrD;AAEA,IAAM,WAAW,WAA0C,SAAS,SAClE,EACE,cAAc,YACd,mBAAmB,iBACnB,iBAAiB,eACjB,iBAAiB,eACjB,iBAAiB,eACjB,kBAAkB,gBAClB,UAAU,WACV,WACA,OACA,MAAM,OACN,WACA,UAAU,WACV,OACA,GAAG,oBAEL,KACA;CAWA,MAAM,UAAU,MAAM;CACtB,MAAM,kBAAkB,eAAe,KAAK;CAC5C,MAAM,YAAY,GAAG,gBAAgB;CACrC,MAAM,EAAE,WAAW,eAAe,GAAG,uBAAuB,aAAa,CAAC;CAC1E,MAAM,wBAAwB,CAAC,mBAAmB,aAAa,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;CACzF,MAAM,+BAA+B,CAAC,wBAAwB,SAAS,CAAC,CACrE,OAAO,OAAO,CAAC,CACf,KAAK,GAAG;CAEX,OACE,qBAAC,OAAD;EAAK,GAAI;EAAoB,WAAW;EAAxC,UAAA,CACE,qBAAC,OAAD;GAAK,WAAU;GAAf,UAAA,CACE,oBAAC,QAAD;IAAM,IAAI;IAAU,UAAA;GAAY,CAAA,GAChC,oBAAC,QAAD;IAAM,eAAY;IAAQ,UAAA;GAAgB,CAAA,CACvC;EACL,CAAA,GAAA,oBAAC,OAAD;GACE,GAAI;GACJ,mBAAiB;GACjB,iBAAe;GACf,iBAAe;GACf,iBAAe;GACf,kBAAgB;GAChB,WAAW;GACN;GACL,MAAK;GAEL,UAAA,oBAAC,OAAD;IACE,eAAY;IACZ,WAAU;IACV,OAAO,EAAE,OAAO,GAAG,gBAAgB,GAAG;GACvC,CAAA;EACE,CAAA,CACF;;AAET,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { ComponentPropsWithRef } from 'react';
2
+ type ProgressbarAriaProps = 'aria-label' | 'aria-labelledby' | 'aria-valuemax' | 'aria-valuemin' | 'aria-valuenow' | 'aria-valuetext';
3
+ export interface ProgressProps extends Omit<ComponentPropsWithRef<'div'>, ProgressbarAriaProps | 'children' | 'role' | 'tabIndex'> {
4
+ label: string;
5
+ rootProps?: Omit<ComponentPropsWithRef<'div'>, 'children'>;
6
+ value: number;
7
+ children?: never;
8
+ role?: never;
9
+ tabIndex?: never;
10
+ 'aria-label'?: never;
11
+ 'aria-labelledby'?: never;
12
+ 'aria-valuemax'?: never;
13
+ 'aria-valuemin'?: never;
14
+ 'aria-valuenow'?: never;
15
+ 'aria-valuetext'?: never;
16
+ }
17
+ export {};
18
+ //# sourceMappingURL=Progress.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Progress.types.d.ts","sourceRoot":"","sources":["../../../src/components/progress/Progress.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,OAAO,CAAC;AAEnD,KAAK,oBAAoB,GACrB,YAAY,GACZ,iBAAiB,GACjB,eAAe,GACf,eAAe,GACf,eAAe,GACf,gBAAgB,CAAC;AAErB,MAAM,WAAW,aAAc,SAAQ,IAAI,CACzC,qBAAqB,CAAC,KAAK,CAAC,EAC5B,oBAAoB,GAAG,UAAU,GAAG,MAAM,GAAG,UAAU,CACxD;IACC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,CAAC;IAC3D,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,IAAI,CAAC,EAAE,KAAK,CAAC;IACb,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,YAAY,CAAC,EAAE,KAAK,CAAC;IACrB,iBAAiB,CAAC,EAAE,KAAK,CAAC;IAC1B,eAAe,CAAC,EAAE,KAAK,CAAC;IACxB,eAAe,CAAC,EAAE,KAAK,CAAC;IACxB,eAAe,CAAC,EAAE,KAAK,CAAC;IACxB,gBAAgB,CAAC,EAAE,KAAK,CAAC;CAC1B"}
@@ -0,0 +1,4 @@
1
+ import type { SkeletonProps } from './Skeleton.types.js';
2
+ declare const Skeleton: import("react").ForwardRefExoticComponent<Omit<SkeletonProps, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
3
+ export default Skeleton;
4
+ //# sourceMappingURL=Skeleton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Skeleton.d.ts","sourceRoot":"","sources":["../../../src/components/skeleton/Skeleton.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,QAAA,MAAM,QAAQ,uHAsBZ,CAAC;AAEH,eAAe,QAAQ,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { forwardRef } from "react";
2
+ import { jsx } from "react/jsx-runtime";
3
+ //#region src/components/skeleton/Skeleton.tsx
4
+ var Skeleton = forwardRef(function Skeleton({ "aria-hidden": _ariaHidden, children: _children, className, role: _role, shape = "rounded", tabIndex: _tabIndex, ...divProps }, ref) {
5
+ const resolvedClassName = [
6
+ "chayns-skeleton",
7
+ `chayns-skeleton--${shape}`,
8
+ className
9
+ ].filter(Boolean).join(" ");
10
+ return /* @__PURE__ */ jsx("div", {
11
+ ...divProps,
12
+ "aria-hidden": "true",
13
+ className: resolvedClassName,
14
+ ref
15
+ });
16
+ });
17
+ //#endregion
18
+ export { Skeleton as default };
19
+
20
+ //# sourceMappingURL=Skeleton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Skeleton.js","names":[],"sources":["../../../src/components/skeleton/Skeleton.tsx"],"sourcesContent":["import { forwardRef } from 'react';\n\nimport type { SkeletonProps } from './Skeleton.types.js';\n\nconst Skeleton = forwardRef<HTMLDivElement, SkeletonProps>(function Skeleton(\n {\n 'aria-hidden': _ariaHidden,\n children: _children,\n className,\n role: _role,\n shape = 'rounded',\n tabIndex: _tabIndex,\n ...divProps\n },\n ref,\n) {\n void _ariaHidden;\n void _children;\n void _role;\n void _tabIndex;\n\n const resolvedClassName = ['chayns-skeleton', `chayns-skeleton--${shape}`, className]\n .filter(Boolean)\n .join(' ');\n\n return <div {...divProps} aria-hidden=\"true\" className={resolvedClassName} ref={ref} />;\n});\n\nexport default Skeleton;\n"],"mappings":";;;AAIA,IAAM,WAAW,WAA0C,SAAS,SAClE,EACE,eAAe,aACf,UAAU,WACV,WACA,MAAM,OACN,QAAQ,WACR,UAAU,WACV,GAAG,YAEL,KACA;CAMA,MAAM,oBAAoB;EAAC;EAAmB,oBAAoB;EAAS;CAAS,CAAC,CAClF,OAAO,OAAO,CAAC,CACf,KAAK,GAAG;CAEX,OAAO,oBAAC,OAAD;EAAK,GAAI;EAAU,eAAY;EAAO,WAAW;EAAwB;CAAM,CAAA;AACxF,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { ComponentPropsWithRef } from 'react';
2
+ export declare const SKELETON_SHAPES: readonly ["square", "rounded", "circular"];
3
+ export type SkeletonShape = (typeof SKELETON_SHAPES)[number];
4
+ export interface SkeletonProps extends Omit<ComponentPropsWithRef<'div'>, 'aria-hidden' | 'children' | 'role' | 'tabIndex'> {
5
+ shape?: SkeletonShape;
6
+ children?: never;
7
+ role?: never;
8
+ tabIndex?: never;
9
+ 'aria-hidden'?: never;
10
+ }
11
+ //# sourceMappingURL=Skeleton.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Skeleton.types.d.ts","sourceRoot":"","sources":["../../../src/components/skeleton/Skeleton.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,OAAO,CAAC;AAEnD,eAAO,MAAM,eAAe,4CAA6C,CAAC;AAC1E,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAE7D,MAAM,WAAW,aAAc,SAAQ,IAAI,CACzC,qBAAqB,CAAC,KAAK,CAAC,EAC5B,aAAa,GAAG,UAAU,GAAG,MAAM,GAAG,UAAU,CACjD;IACC,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,IAAI,CAAC,EAAE,KAAK,CAAC;IACb,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,aAAa,CAAC,EAAE,KAAK,CAAC;CACvB"}
@@ -0,0 +1,10 @@
1
+ //#region src/components/skeleton/Skeleton.types.ts
2
+ var SKELETON_SHAPES = [
3
+ "square",
4
+ "rounded",
5
+ "circular"
6
+ ];
7
+ //#endregion
8
+ export { SKELETON_SHAPES };
9
+
10
+ //# sourceMappingURL=Skeleton.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Skeleton.types.js","names":[],"sources":["../../../src/components/skeleton/Skeleton.types.ts"],"sourcesContent":["import type { ComponentPropsWithRef } from 'react';\n\nexport const SKELETON_SHAPES = ['square', 'rounded', 'circular'] as const;\nexport type SkeletonShape = (typeof SKELETON_SHAPES)[number];\n\nexport interface SkeletonProps extends Omit<\n ComponentPropsWithRef<'div'>,\n 'aria-hidden' | 'children' | 'role' | 'tabIndex'\n> {\n shape?: SkeletonShape;\n children?: never;\n role?: never;\n tabIndex?: never;\n 'aria-hidden'?: never;\n}\n"],"mappings":";AAEA,IAAa,kBAAkB;CAAC;CAAU;CAAW;AAAU"}
@@ -0,0 +1,4 @@
1
+ import type { SpinnerProps } from './Spinner.types.js';
2
+ declare const Spinner: import("react").ForwardRefExoticComponent<Omit<SpinnerProps, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
3
+ export default Spinner;
4
+ //# sourceMappingURL=Spinner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Spinner.d.ts","sourceRoot":"","sources":["../../../src/components/spinner/Spinner.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,QAAA,MAAM,OAAO,sHAmBX,CAAC;AAEH,eAAe,OAAO,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { forwardRef } from "react";
2
+ import { jsx } from "react/jsx-runtime";
3
+ //#region src/components/spinner/Spinner.tsx
4
+ var Spinner = forwardRef(function Spinner({ "aria-hidden": _ariaHidden, children: _children, className, role: _role, tabIndex: _tabIndex, ...divProps }, ref) {
5
+ const resolvedClassName = ["chayns-spinner", className].filter(Boolean).join(" ");
6
+ return /* @__PURE__ */ jsx("div", {
7
+ ...divProps,
8
+ "aria-hidden": "true",
9
+ className: resolvedClassName,
10
+ ref
11
+ });
12
+ });
13
+ //#endregion
14
+ export { Spinner as default };
15
+
16
+ //# sourceMappingURL=Spinner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Spinner.js","names":[],"sources":["../../../src/components/spinner/Spinner.tsx"],"sourcesContent":["import { forwardRef } from 'react';\n\nimport type { SpinnerProps } from './Spinner.types.js';\n\nconst Spinner = forwardRef<HTMLDivElement, SpinnerProps>(function Spinner(\n {\n 'aria-hidden': _ariaHidden,\n children: _children,\n className,\n role: _role,\n tabIndex: _tabIndex,\n ...divProps\n },\n ref,\n) {\n void _ariaHidden;\n void _children;\n void _role;\n void _tabIndex;\n\n const resolvedClassName = ['chayns-spinner', className].filter(Boolean).join(' ');\n\n return <div {...divProps} aria-hidden=\"true\" className={resolvedClassName} ref={ref} />;\n});\n\nexport default Spinner;\n"],"mappings":";;;AAIA,IAAM,UAAU,WAAyC,SAAS,QAChE,EACE,eAAe,aACf,UAAU,WACV,WACA,MAAM,OACN,UAAU,WACV,GAAG,YAEL,KACA;CAMA,MAAM,oBAAoB,CAAC,kBAAkB,SAAS,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,GAAG;CAEhF,OAAO,oBAAC,OAAD;EAAK,GAAI;EAAU,eAAY;EAAO,WAAW;EAAwB;CAAM,CAAA;AACxF,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { ComponentPropsWithRef } from 'react';
2
+ export interface SpinnerProps extends Omit<ComponentPropsWithRef<'div'>, 'aria-hidden' | 'children' | 'role' | 'tabIndex'> {
3
+ children?: never;
4
+ role?: never;
5
+ tabIndex?: never;
6
+ 'aria-hidden'?: never;
7
+ }
8
+ //# sourceMappingURL=Spinner.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Spinner.types.d.ts","sourceRoot":"","sources":["../../../src/components/spinner/Spinner.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,OAAO,CAAC;AAEnD,MAAM,WAAW,YAAa,SAAQ,IAAI,CACxC,qBAAqB,CAAC,KAAK,CAAC,EAC5B,aAAa,GAAG,UAAU,GAAG,MAAM,GAAG,UAAU,CACjD;IACC,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,IAAI,CAAC,EAAE,KAAK,CAAC;IACb,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,aAAa,CAAC,EAAE,KAAK,CAAC;CACvB"}
package/dist/index.d.ts CHANGED
@@ -6,6 +6,13 @@ export type { IconButtonBaseProps, IconButtonProps, } from './components/icon-bu
6
6
  export { default as Badge } from './components/badge/Badge.js';
7
7
  export { BADGE_SIZES, BADGE_TONES } from './components/badge/Badge.types.js';
8
8
  export type { BadgeProps, BadgeSize, BadgeTone } from './components/badge/Badge.types.js';
9
+ export { default as Skeleton } from './components/skeleton/Skeleton.js';
10
+ export { SKELETON_SHAPES } from './components/skeleton/Skeleton.types.js';
11
+ export type { SkeletonProps, SkeletonShape } from './components/skeleton/Skeleton.types.js';
12
+ export { default as Spinner } from './components/spinner/Spinner.js';
13
+ export type { SpinnerProps } from './components/spinner/Spinner.types.js';
14
+ export { default as Progress } from './components/progress/Progress.js';
15
+ export type { ProgressProps } from './components/progress/Progress.types.js';
9
16
  export { default as Banner } from './components/banner/Banner.js';
10
17
  export { BANNER_TONES } from './components/banner/Banner.types.js';
11
18
  export type { BannerProps, BannerTone, ClosableBannerProps, StaticBannerProps, } from './components/banner/Banner.types.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -3,6 +3,10 @@ import IconButton from "./components/icon-button/IconButton.js";
3
3
  import { BUTTON_VARIANTS } from "./components/button/Button.types.js";
4
4
  import Badge from "./components/badge/Badge.js";
5
5
  import { BADGE_SIZES, BADGE_TONES } from "./components/badge/Badge.types.js";
6
+ import Skeleton from "./components/skeleton/Skeleton.js";
7
+ import { SKELETON_SHAPES } from "./components/skeleton/Skeleton.types.js";
8
+ import Spinner from "./components/spinner/Spinner.js";
9
+ import Progress from "./components/progress/Progress.js";
6
10
  import Banner from "./components/banner/Banner.js";
7
11
  import { BANNER_TONES } from "./components/banner/Banner.types.js";
8
12
  import ComboBox from "./components/combo-box/ComboBox.js";
@@ -24,4 +28,4 @@ import List from "./components/list/List.js";
24
28
  import Accordion from "./components/accordion/Accordion.js";
25
29
  import AccordionGroup from "./components/accordion-group/AccordionGroup.js";
26
30
  import { ACCORDION_APPEARANCES } from "./components/accordion/Accordion.types.js";
27
- export { ACCORDION_APPEARANCES, Accordion, AccordionGroup, Avatar, AvatarGroup, BADGE_SIZES, BADGE_TONES, BANNER_TONES, BUTTON_VARIANTS, Badge, Banner, Button, Card, Checkbox, ComboBox, DATE_TIME_PICKER_MINUTE_STEPS, DATE_TIME_PICKER_MODES, DateTimePicker, IconButton, List, Popup_default as Popup, PopupList, RadioGroup, SegmentedControl, SplitButton, Switch, TextArea, TextField };
31
+ export { ACCORDION_APPEARANCES, Accordion, AccordionGroup, Avatar, AvatarGroup, BADGE_SIZES, BADGE_TONES, BANNER_TONES, BUTTON_VARIANTS, Badge, Banner, Button, Card, Checkbox, ComboBox, DATE_TIME_PICKER_MINUTE_STEPS, DATE_TIME_PICKER_MODES, DateTimePicker, IconButton, List, Popup_default as Popup, PopupList, Progress, RadioGroup, SKELETON_SHAPES, SegmentedControl, Skeleton, Spinner, SplitButton, Switch, TextArea, TextField };
@@ -0,0 +1,28 @@
1
+ @layer chayns.components {
2
+ .chayns-progress {
3
+ display: block;
4
+ width: 100%;
5
+ }
6
+
7
+ .chayns-progress__label-row {
8
+ display: flex;
9
+ justify-content: space-between;
10
+ margin-bottom: 7px;
11
+ color: var(--muted);
12
+ font-size: var(--fs-meta);
13
+ }
14
+
15
+ .chayns-progress__bar {
16
+ width: 100%;
17
+ height: 8px;
18
+ overflow: hidden;
19
+ border-radius: 999px;
20
+ background: var(--surface-alt);
21
+ }
22
+
23
+ .chayns-progress__fill {
24
+ height: 100%;
25
+ border-radius: inherit;
26
+ background: var(--accent);
27
+ }
28
+ }
@@ -0,0 +1,41 @@
1
+ @layer chayns.components {
2
+ .chayns-skeleton {
3
+ display: block;
4
+ background: linear-gradient(
5
+ 90deg,
6
+ var(--surface-alt) 25%,
7
+ var(--border-soft) 37%,
8
+ var(--surface-alt) 63%
9
+ );
10
+ background-size: 800px 100%;
11
+ animation: chayns-skeleton-shimmer 1.4s ease infinite;
12
+ }
13
+
14
+ .chayns-skeleton--square {
15
+ border-radius: 0;
16
+ }
17
+
18
+ .chayns-skeleton--rounded {
19
+ border-radius: 6px;
20
+ }
21
+
22
+ .chayns-skeleton--circular {
23
+ border-radius: 50%;
24
+ }
25
+
26
+ @keyframes chayns-skeleton-shimmer {
27
+ 0% {
28
+ background-position: -400px 0;
29
+ }
30
+
31
+ 100% {
32
+ background-position: 400px 0;
33
+ }
34
+ }
35
+
36
+ @media (prefers-reduced-motion: reduce) {
37
+ .chayns-skeleton {
38
+ animation: none;
39
+ }
40
+ }
41
+ }
@@ -0,0 +1,24 @@
1
+ @layer chayns.components {
2
+ .chayns-spinner {
3
+ box-sizing: border-box;
4
+ display: block;
5
+ width: var(--k30);
6
+ height: var(--k30);
7
+ border: 3px solid var(--surface-alt);
8
+ border-top-color: var(--accent);
9
+ border-radius: 50%;
10
+ animation: chayns-spinner-spin 0.8s linear infinite;
11
+ }
12
+
13
+ @keyframes chayns-spinner-spin {
14
+ 100% {
15
+ transform: rotate(360deg);
16
+ }
17
+ }
18
+
19
+ @media (prefers-reduced-motion: reduce) {
20
+ .chayns-spinner {
21
+ animation: none;
22
+ }
23
+ }
24
+ }
package/dist/styles.css CHANGED
@@ -1,5 +1,8 @@
1
1
  @import url('./button.css');
2
2
  @import url('./badge.css');
3
+ @import url('./skeleton.css');
4
+ @import url('./spinner.css');
5
+ @import url('./progress.css');
3
6
  @import url('./banner.css');
4
7
  @import url('./combo-box.css');
5
8
  @import url('./card.css');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chayns-ui/core",
3
- "version": "0.7.0",
3
+ "version": "0.9.0",
4
4
  "description": "Accessible React core components for chayns UI",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -24,6 +24,9 @@
24
24
  },
25
25
  "./button.css": "./dist/button.css",
26
26
  "./badge.css": "./dist/badge.css",
27
+ "./skeleton.css": "./dist/skeleton.css",
28
+ "./spinner.css": "./dist/spinner.css",
29
+ "./progress.css": "./dist/progress.css",
27
30
  "./banner.css": "./dist/banner.css",
28
31
  "./combo-box.css": "./dist/combo-box.css",
29
32
  "./card.css": "./dist/card.css",