@chayns-ui/core 0.7.0 → 0.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/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 { 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"}
package/dist/index.d.ts CHANGED
@@ -6,6 +6,9 @@ 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';
9
12
  export { default as Banner } from './components/banner/Banner.js';
10
13
  export { BANNER_TONES } from './components/banner/Banner.types.js';
11
14
  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,8 @@ 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";
6
8
  import Banner from "./components/banner/Banner.js";
7
9
  import { BANNER_TONES } from "./components/banner/Banner.types.js";
8
10
  import ComboBox from "./components/combo-box/ComboBox.js";
@@ -24,4 +26,4 @@ import List from "./components/list/List.js";
24
26
  import Accordion from "./components/accordion/Accordion.js";
25
27
  import AccordionGroup from "./components/accordion-group/AccordionGroup.js";
26
28
  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 };
29
+ 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, SKELETON_SHAPES, SegmentedControl, Skeleton, SplitButton, Switch, TextArea, TextField };
@@ -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
+ }
package/dist/styles.css CHANGED
@@ -1,5 +1,6 @@
1
1
  @import url('./button.css');
2
2
  @import url('./badge.css');
3
+ @import url('./skeleton.css');
3
4
  @import url('./banner.css');
4
5
  @import url('./combo-box.css');
5
6
  @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.8.0",
4
4
  "description": "Accessible React core components for chayns UI",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -24,6 +24,7 @@
24
24
  },
25
25
  "./button.css": "./dist/button.css",
26
26
  "./badge.css": "./dist/badge.css",
27
+ "./skeleton.css": "./dist/skeleton.css",
27
28
  "./banner.css": "./dist/banner.css",
28
29
  "./combo-box.css": "./dist/combo-box.css",
29
30
  "./card.css": "./dist/card.css",