addon-ui 0.6.1 → 0.7.1

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 (47) hide show
  1. package/README.md +5 -0
  2. package/dist-types/components/Accordion/Accordion.d.ts +6 -0
  3. package/dist-types/components/Accordion/AccordionContent.d.ts +6 -0
  4. package/dist-types/components/Accordion/AccordionHeader.d.ts +6 -0
  5. package/dist-types/components/Accordion/AccordionItem.d.ts +6 -0
  6. package/dist-types/components/Accordion/AccordionTrigger.d.ts +6 -0
  7. package/dist-types/components/Accordion/index.d.ts +6 -0
  8. package/dist-types/components/index.d.ts +1 -0
  9. package/package.json +1 -1
  10. package/src/components/Accordion/Accordion.tsx +16 -0
  11. package/src/components/Accordion/AccordionContent.tsx +16 -0
  12. package/src/components/Accordion/AccordionHeader.tsx +16 -0
  13. package/src/components/Accordion/AccordionItem.tsx +16 -0
  14. package/src/components/Accordion/AccordionTrigger.tsx +23 -0
  15. package/src/components/Accordion/accordion.module.scss +58 -0
  16. package/src/components/Accordion/index.ts +5 -0
  17. package/src/components/Avatar/avatar.module.scss +8 -1
  18. package/src/components/BaseButton/base-button.module.scss +0 -5
  19. package/src/components/Button/button.module.scss +6 -0
  20. package/src/components/Checkbox/checkbox.module.scss +2 -2
  21. package/src/components/Dialog/dialog.module.scss +4 -4
  22. package/src/components/Drawer/drawer.module.scss +1 -0
  23. package/src/components/Footer/footer.module.scss +2 -2
  24. package/src/components/Header/header.module.scss +2 -1
  25. package/src/components/Highlight/highlight.module.scss +4 -1
  26. package/src/components/Icon/icon.module.scss +2 -2
  27. package/src/components/IconButton/icon-button.module.scss +3 -0
  28. package/src/components/List/list.module.scss +1 -0
  29. package/src/components/ListItem/list-item.module.scss +14 -1
  30. package/src/components/Modal/modal.module.scss +4 -4
  31. package/src/components/Odometer/odometer.module.scss +3 -2
  32. package/src/components/ScrollArea/scroll-area.module.scss +3 -2
  33. package/src/components/Switch/switch.module.scss +4 -2
  34. package/src/components/Tabs/TabsList.tsx +4 -2
  35. package/src/components/Tabs/tabs.module.scss +9 -8
  36. package/src/components/Tag/tag.module.scss +3 -0
  37. package/src/components/TextArea/text-area.module.scss +3 -3
  38. package/src/components/TextField/text-field.module.scss +11 -3
  39. package/src/components/Toast/toast.module.scss +18 -15
  40. package/src/components/Tooltip/tooltip.module.scss +9 -1
  41. package/src/components/Truncate/truncate.module.scss +1 -0
  42. package/src/components/TruncateList/truncate-list.module.scss +3 -0
  43. package/src/components/View/view.module.scss +1 -1
  44. package/src/components/Viewport/viewport.module.scss +6 -6
  45. package/src/components/index.ts +1 -0
  46. package/src/providers/ui/styles/default.scss +5 -4
  47. package/src/providers/ui/styles/reset.scss +3 -4
package/README.md CHANGED
@@ -54,6 +54,7 @@ yarn add addon-ui
54
54
 
55
55
  This library now ships with dedicated documentation files for each component in the docs/ directory. Start here:
56
56
 
57
+ - [Accordion](docs/Accordion.md)
57
58
  - [Avatar](docs/Avatar.md)
58
59
  - [Button](docs/Button.md)
59
60
  - [Checkbox](docs/Checkbox.md)
@@ -70,10 +71,14 @@ This library now ships with dedicated documentation files for each component in
70
71
  - [ScrollArea](docs/ScrollArea.md)
71
72
  - [SvgSprite](docs/SvgSprite.md)
72
73
  - [Switch](docs/Switch.md)
74
+ - [Tabs](docs/Tabs.md) (includes Tabs, TabsList, TabsTrigger, TabsContent)
73
75
  - [Tag](docs/Tag.md)
74
76
  - [TextArea](docs/TextArea.md)
75
77
  - [TextField](docs/TextField.md)
76
78
  - [Toast](docs/Toast.md)
79
+ - [Tooltip](docs/Tooltip.md)
80
+ - [Truncate](docs/Truncate.md)
81
+ - [TruncateList](docs/TruncateList.md)
77
82
  - [View](docs/View.md)
78
83
  - [ViewDrawer](docs/ViewDrawer.md)
79
84
  - [ViewModal](docs/ViewModal.md)
@@ -0,0 +1,6 @@
1
+ import React from "react";
2
+ import { AccordionMultipleProps, AccordionSingleProps } from "@radix-ui/react-accordion";
3
+ export type AccordionProps = AccordionMultipleProps | AccordionSingleProps;
4
+ declare const _default: React.NamedExoticComponent<AccordionProps & React.RefAttributes<HTMLDivElement>>;
5
+ export default _default;
6
+ //# sourceMappingURL=Accordion.d.ts.map
@@ -0,0 +1,6 @@
1
+ import React from "react";
2
+ import { AccordionContentProps as AccordionContentRadixProps } from "@radix-ui/react-accordion";
3
+ export type AccordionContentProps = AccordionContentRadixProps;
4
+ declare const _default: React.NamedExoticComponent<AccordionContentRadixProps & React.RefAttributes<HTMLDivElement>>;
5
+ export default _default;
6
+ //# sourceMappingURL=AccordionContent.d.ts.map
@@ -0,0 +1,6 @@
1
+ import React from "react";
2
+ import { AccordionHeaderProps as AccordionHeaderRadixProps } from "@radix-ui/react-accordion";
3
+ export type AccordionHeaderProps = AccordionHeaderRadixProps;
4
+ declare const _default: React.NamedExoticComponent<AccordionHeaderRadixProps & React.RefAttributes<HTMLDivElement>>;
5
+ export default _default;
6
+ //# sourceMappingURL=AccordionHeader.d.ts.map
@@ -0,0 +1,6 @@
1
+ import React from "react";
2
+ import { AccordionItemProps as AccordionItemRadixProps } from "@radix-ui/react-accordion";
3
+ export type AccordionItemProps = AccordionItemRadixProps;
4
+ declare const _default: React.NamedExoticComponent<AccordionItemRadixProps & React.RefAttributes<HTMLDivElement>>;
5
+ export default _default;
6
+ //# sourceMappingURL=AccordionItem.d.ts.map
@@ -0,0 +1,6 @@
1
+ import React from "react";
2
+ import { AccordionTriggerProps as AccordionTriggerRadixProps } from "@radix-ui/react-accordion";
3
+ export type AccordionTriggerProps = AccordionTriggerRadixProps;
4
+ declare const _default: React.NamedExoticComponent<AccordionTriggerRadixProps & React.RefAttributes<HTMLButtonElement>>;
5
+ export default _default;
6
+ //# sourceMappingURL=AccordionTrigger.d.ts.map
@@ -0,0 +1,6 @@
1
+ export { default as Accordion, type AccordionProps } from "./Accordion";
2
+ export { default as AccordionItem, type AccordionItemProps } from "./AccordionItem";
3
+ export { default as AccordionHeader, type AccordionHeaderProps } from "./AccordionHeader";
4
+ export { default as AccordionTrigger, type AccordionTriggerProps } from "./AccordionTrigger";
5
+ export { default as AccordionContent, type AccordionContentProps } from "./AccordionContent";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -1,3 +1,4 @@
1
+ export * from "./Accordion";
1
2
  export * from "./Avatar";
2
3
  export * from "./BaseButton";
3
4
  export * from "./Button";
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "addon-ui",
3
3
  "type": "module",
4
- "version": "0.6.1",
4
+ "version": "0.7.1",
5
5
  "description": "A comprehensive React UI component library designed exclusively for the AddonBone browser extension framework with customizable theming and consistent design patterns",
6
6
  "keywords": [
7
7
  "react",
@@ -0,0 +1,16 @@
1
+ import React, {forwardRef, ForwardRefRenderFunction, memo} from "react";
2
+ import classnames from "classnames";
3
+
4
+ import {AccordionMultipleProps, AccordionSingleProps, Root} from "@radix-ui/react-accordion";
5
+
6
+ import styles from "./accordion.module.scss";
7
+
8
+ export type AccordionProps = AccordionMultipleProps | AccordionSingleProps;
9
+
10
+ const Accordion: ForwardRefRenderFunction<HTMLDivElement, AccordionProps> = (props, ref) => {
11
+ const {className, ...other} = props;
12
+
13
+ return <Root ref={ref} className={classnames(styles["accordion"], className)} {...other} />;
14
+ };
15
+
16
+ export default memo(forwardRef(Accordion));
@@ -0,0 +1,16 @@
1
+ import React, {forwardRef, ForwardRefRenderFunction, memo} from "react";
2
+ import classnames from "classnames";
3
+
4
+ import {AccordionContentProps as AccordionContentRadixProps, Content} from "@radix-ui/react-accordion";
5
+
6
+ import styles from "./accordion.module.scss";
7
+
8
+ export type AccordionContentProps = AccordionContentRadixProps;
9
+
10
+ const AccordionContent: ForwardRefRenderFunction<HTMLDivElement, AccordionContentProps> = (props, ref) => {
11
+ const {className, ...other} = props;
12
+
13
+ return <Content ref={ref} className={classnames(styles["accordion-content"], className)} {...other} />;
14
+ };
15
+
16
+ export default memo(forwardRef(AccordionContent));
@@ -0,0 +1,16 @@
1
+ import React, {forwardRef, ForwardRefRenderFunction, memo} from "react";
2
+ import classnames from "classnames";
3
+
4
+ import {AccordionHeaderProps as AccordionHeaderRadixProps, Header} from "@radix-ui/react-accordion";
5
+
6
+ import styles from "./accordion.module.scss";
7
+
8
+ export type AccordionHeaderProps = AccordionHeaderRadixProps;
9
+
10
+ const AccordionHeader: ForwardRefRenderFunction<HTMLDivElement, AccordionHeaderProps> = (props, ref) => {
11
+ const {className, ...other} = props;
12
+
13
+ return <Header ref={ref} className={classnames(styles["accordion-header"], className)} {...other} />;
14
+ };
15
+
16
+ export default memo(forwardRef(AccordionHeader));
@@ -0,0 +1,16 @@
1
+ import React, {forwardRef, ForwardRefRenderFunction, memo} from "react";
2
+ import classnames from "classnames";
3
+
4
+ import {AccordionItemProps as AccordionItemRadixProps, Item} from "@radix-ui/react-accordion";
5
+
6
+ import styles from "./accordion.module.scss";
7
+
8
+ export type AccordionItemProps = AccordionItemRadixProps;
9
+
10
+ const AccordionItem: ForwardRefRenderFunction<HTMLDivElement, AccordionItemProps> = (props, ref) => {
11
+ const {className, ...other} = props;
12
+
13
+ return <Item ref={ref} className={classnames(styles["accordion-item"], className)} {...other} />;
14
+ };
15
+
16
+ export default memo(forwardRef(AccordionItem));
@@ -0,0 +1,23 @@
1
+ import React, {forwardRef, ForwardRefRenderFunction, memo} from "react";
2
+ import classnames from "classnames";
3
+
4
+ import {AccordionTriggerProps as AccordionTriggerRadixProps, Trigger} from "@radix-ui/react-accordion";
5
+
6
+ import styles from "./accordion.module.scss";
7
+
8
+ export type AccordionTriggerProps = AccordionTriggerRadixProps;
9
+
10
+ const AccordionTrigger: ForwardRefRenderFunction<HTMLButtonElement, AccordionTriggerProps> = (props, ref) => {
11
+ const {className, asChild = true, ...other} = props;
12
+
13
+ return (
14
+ <Trigger
15
+ ref={ref}
16
+ asChild={asChild}
17
+ className={classnames(styles["accordion-trigger"], className)}
18
+ {...other}
19
+ />
20
+ );
21
+ };
22
+
23
+ export default memo(forwardRef(AccordionTrigger));
@@ -0,0 +1,58 @@
1
+ $root: accordion;
2
+
3
+ .#{$root} {
4
+ &-item {
5
+ }
6
+
7
+ &-header {
8
+ position: relative;
9
+ padding: var(--accordion-header-pading);
10
+ display: flex;
11
+ align-items: center;
12
+ background-color: var(--accordion-header-bg-color, var(--bg-primary-color));
13
+ will-change: background-color;
14
+ transition: background-color var(--accordion-speed-bg, var(--speed-color));
15
+
16
+ &:hover {
17
+ background: var(--accordion-header-hover-bg-color);
18
+ }
19
+ }
20
+
21
+ &-trigger {
22
+ background: transparent;
23
+ border: none;
24
+ cursor: pointer;
25
+ }
26
+
27
+ &-content {
28
+ background-color: var(--accordion-content-bg-color);
29
+ will-change: background-color;
30
+ transition: background-color var(--accordion-speed-bg, var(--speed-color));
31
+
32
+ &[data-state="open"] {
33
+ animation: slideDown var(--accordion-speed-animation, var(--speed-sm)) ease-in-out;
34
+ }
35
+
36
+ &[data-state="closed"] {
37
+ animation: slideUp var(--accordion-speed-animation, var(--speed-sm)) ease-in-out;
38
+ }
39
+ }
40
+ }
41
+
42
+ @keyframes slideDown {
43
+ from {
44
+ height: 0;
45
+ }
46
+ to {
47
+ height: var(--radix-collapsible-content-height);
48
+ }
49
+ }
50
+
51
+ @keyframes slideUp {
52
+ from {
53
+ height: var(--radix-collapsible-content-height);
54
+ }
55
+ to {
56
+ height: 0;
57
+ }
58
+ }
@@ -0,0 +1,5 @@
1
+ export {default as Accordion, type AccordionProps} from "./Accordion";
2
+ export {default as AccordionItem, type AccordionItemProps} from "./AccordionItem";
3
+ export {default as AccordionHeader, type AccordionHeaderProps} from "./AccordionHeader";
4
+ export {default as AccordionTrigger, type AccordionTriggerProps} from "./AccordionTrigger";
5
+ export {default as AccordionContent, type AccordionContentProps} from "./AccordionContent";
@@ -17,6 +17,9 @@ $root: avatar;
17
17
  border-style: var(--avatar-border-style);
18
18
  font-size: var(--avatar-font-size, 18px);
19
19
  font-weight: var(--avatar-font-weight, 500);
20
+ transition:
21
+ border-color var(--avatar-speed-border-color, var(--speed-color)),
22
+ background-color var(--avatar-speed-bg, var(--speed-color));
20
23
 
21
24
  &--cursor-pointer {
22
25
  cursor: pointer;
@@ -73,10 +76,14 @@ $root: avatar;
73
76
  align-items: center;
74
77
  justify-content: center;
75
78
  color: var(--avatar-fallback-color);
76
- line-height: var(--fallback-line-height, var(--line-height, 1 rem));
79
+ line-height: var(--fallback-line-height, var(--line-height, 1rem));
77
80
  background-color: var(--avatar-fallback-bg-color, var(--avatar-bg-color));
78
81
  border-width: var(--avatar-fallback-border-width, var(--avatar-border-width));
79
82
  border-color: var(--avatar-fallback-border-color, var(--avatar-border-color));
80
83
  border-style: var(--avatar-fallback-border-style, var(--avatar-border-style));
84
+ transition:
85
+ color var(--avatar-speed-color, var(--speed-color)),
86
+ border-color var(--avatar-speed-border-color, var(--speed-color)),
87
+ background-color var(--avatar-speed-bg, var(--speed-color));
81
88
  }
82
89
  }
@@ -9,11 +9,6 @@
9
9
  vertical-align: middle;
10
10
  justify-content: center;
11
11
  gap: var(--base-button-gap, 8px);
12
- will-change: background, color, transform;
13
- transition:
14
- background var(--transition-speed-sm),
15
- color var(--transition-speed-sm),
16
- transform var(--transition-speed-sm);
17
12
 
18
13
  &__after,
19
14
  &__before,
@@ -9,6 +9,11 @@ $root: button;
9
9
  height: var(--button-height, 34px);
10
10
  border-radius: var(--button-border-radius, 10px);
11
11
  padding: var(--button-padding, 0 16px);
12
+ will-change: background, color, transform;
13
+ transition:
14
+ color var(--button-speed-color, var(--speed-color)),
15
+ background var(--button-speed-bg, var(--speed-color)),
16
+ transform var(--button-speed-transform, var(--speed-sm));
12
17
 
13
18
  &:active:not(:disabled) {
14
19
  transform: scale(var(--button-scale, 0.98));
@@ -164,5 +169,6 @@ $root: button;
164
169
  overflow: hidden;
165
170
  max-width: var(--button-max-width, 160px);
166
171
  line-height: initial;
172
+ transition: color var(--button-speed-color, var(--speed-color));
167
173
  }
168
174
  }
@@ -13,8 +13,8 @@ $root: checkbox;
13
13
  border: var(--checkbox-border-width, 1px) solid var(--checkbox-border-color, #999);
14
14
  will-change: background, color;
15
15
  transition:
16
- background var(--transition-speed-sm),
17
- color var(--transition-speed-sm);
16
+ background var(--checkbox-speed-bg, var(--speed-color)),
17
+ color var(--checkbox-speed-color, var(--speed-color));
18
18
 
19
19
  &:disabled {
20
20
  opacity: var(--checkbox-disabled-opacity, 0.6);
@@ -23,10 +23,10 @@ $root: dialog;
23
23
  position: fixed;
24
24
  z-index: 9999;
25
25
  transition:
26
- background-color var(--transition-speed-sm),
27
- transform var(--transition-speed-sm),
28
- opacity var(--transition-speed-sm),
29
- color var(--transition-speed-sm);
26
+ background-color var(--dialog-speed-bg, var(--speed-color)),
27
+ transform var(--dialog-speed-transform, var(--speed-sm)),
28
+ opacity var(--dialog-speed-opacity, var(--speed-sm)),
29
+ color var(--dialog-speed-color, var(--speed-color));
30
30
  animation-timing-function: ease-in-out;
31
31
  }
32
32
 
@@ -9,6 +9,7 @@ $root: drawer;
9
9
  padding: var(--drawer-padding, 0);
10
10
  box-shadow: var(--drawer-box-shadow, 0 0 4px rgba(0, 0, 0, 0.5));
11
11
  background-color: var(--drawer-bg-color, var(--bg-secondary-color));
12
+ transition: background-color var(--drawer-speed-bg, var(--speed-color));
12
13
 
13
14
  &[data-state="open"] {
14
15
  &.#{$root}-content--left-side {
@@ -10,8 +10,8 @@ $root: footer;
10
10
  padding-top: 0;
11
11
  background-color: var(--footer-bg-color, transparent);
12
12
  transition:
13
- background-color var(--transition-speed-sm),
14
- box-shadow var(--transition-speed-sm);
13
+ background-color var(--footer-speed-bg, var(--speed-color)),
14
+ box-shadow var(--footer-speed-box-shadow, var(--speed-color));
15
15
 
16
16
  [dir="rtl"] & {
17
17
  flex-direction: row-reverse;
@@ -8,6 +8,7 @@ $root: header;
8
8
  gap: var(--header-gap, 10px);
9
9
  padding: var(--header-padding, var(--side-padding-sm));
10
10
  padding-bottom: 0;
11
+ transition: background var(--header-speed-bg, var(--speed-color));
11
12
 
12
13
  &__wrap {
13
14
  display: flex;
@@ -22,6 +23,7 @@ $root: header;
22
23
  margin: 0;
23
24
  overflow: hidden;
24
25
  text-overflow: ellipsis;
26
+ transition: color var(--header-speed-color, var(--speed-color));
25
27
  }
26
28
 
27
29
  &__title {
@@ -34,7 +36,6 @@ $root: header;
34
36
  font-weight: var(--header-title-font-weight, 700);
35
37
  line-height: var(--header-title-line-height, 120%);
36
38
  will-change: color;
37
- transition: color var(--header-title-transition-speed, var(--transition-speed-md));
38
39
 
39
40
  .#{$root}--center & {
40
41
  justify-content: center;
@@ -4,12 +4,15 @@ $root: highlight;
4
4
  font-size: var(--highlight-font-size, inherit);
5
5
  font-weight: var(--highlight-font-weight, inherit);
6
6
  font-family: var(--highlight-font-family, inherit), sans-serif;
7
- line-height: var(--highlight-line-height, var(--line-height, 1 rem));
7
+ line-height: var(--highlight-line-height, var(--line-height, 1rem));
8
8
  color: var(--highlight-color, #fff);
9
9
  background-color: var(--highlight-bg-color, #ffd60a);
10
10
  padding: var(--highlight-y-padding, 2px) var(--highlight-x-padding, 3px);
11
11
  margin: 0 calc(-1 * var(--highlight-x-padding, 3px));
12
12
  border-radius: var(--highlight-border-radius, 2px);
13
+ transition:
14
+ color var(--highlight-speed-color, var(--speed-color)),
15
+ background-color var(--highlight-speed-bg, var(--speed-color));
13
16
 
14
17
  &--primary-color {
15
18
  color: var(--highlight-primary-color, #fff);
@@ -1,8 +1,8 @@
1
1
  .icon {
2
2
  color: var(--icon-color);
3
3
  transition:
4
- transform var(--transition-speed-sm),
5
- color var(--transition-speed-sm);
4
+ transform var(--icon-speed-transform, var(--speed-sm)),
5
+ color var(--icon-speed-color, var(--speed-color));
6
6
 
7
7
  &:hover {
8
8
  color: var(--icon-color-hover);
@@ -7,6 +7,9 @@ $root: icon-button;
7
7
  height: var(--icon-button-size, 25px);
8
8
  color: var(--icon-button-color);
9
9
  background: none;
10
+ transition:
11
+ color var(--icon-button-speed-color, var(--speed-color)),
12
+ background var(--icon-button-speed-bg, var(--speed-color));
10
13
 
11
14
  &:hover:not(:disabled) {
12
15
  color: var(--icon-button-color-hover);
@@ -6,4 +6,5 @@
6
6
  padding: 0;
7
7
  margin: 0;
8
8
  list-style: none;
9
+ transition: background-color var(--list-speed-bg, var(--speed-color));
9
10
  }
@@ -5,7 +5,8 @@
5
5
  gap: var(--list-item-gap, 10px);
6
6
  flex-wrap: nowrap;
7
7
  box-sizing: border-box;
8
- line-height: var(--list-item-line-height, var(--line-height, 1 rem));
8
+ line-height: var(--list-item-line-height, var(--line-height, 1rem));
9
+ transition: background-color var(--list-item-speed-bg, var(--speed-color));
9
10
 
10
11
  [dir="rtl"] & {
11
12
  flex-direction: row-reverse;
@@ -25,9 +26,11 @@
25
26
  white-space: nowrap;
26
27
  text-overflow: ellipsis;
27
28
  }
29
+
28
30
  &__primary {
29
31
  color: var(--list-item-primary-color, var(--text-primary-color));
30
32
  }
33
+
31
34
  &__secondary {
32
35
  color: var(--list-item-secondary-color, var(--text-secondary-color));
33
36
  }
@@ -38,4 +41,14 @@
38
41
  align-items: center;
39
42
  justify-content: center;
40
43
  }
44
+
45
+ &__center,
46
+ &__primary,
47
+ &__secondary,
48
+ &__left,
49
+ &__right {
50
+ transition:
51
+ color var(--list-item-speed-color, var(--speed-color)),
52
+ background var(--list-item-speed-bg, var(--speed-color));
53
+ }
41
54
  }
@@ -20,10 +20,10 @@ $root: modal;
20
20
  box-shadow: var(--modal-box-shadow, 0 0 4px rgba(0, 0, 0, 0.5));
21
21
  background-color: var(--modal-bg-color, var(--bg-primary-color));
22
22
  transition:
23
- background-color var(--transition-speed-sm),
24
- transform var(--transition-speed-sm),
25
- opacity var(--transition-speed-sm),
26
- color var(--transition-speed-sm) !important;
23
+ background-color var(--modal-speed-bg, var(--speed-color)),
24
+ transform var(--modal-speed-transform, var(--speed-sm)),
25
+ opacity var(--modal-speed-opacity, var(--speed-sm)),
26
+ color var(--modal-speed-color, var(--speed-color)) !important;
27
27
 
28
28
  &[data-state="open"] {
29
29
  &.#{$root}-content {
@@ -5,6 +5,7 @@ $root: odometer;
5
5
  position: relative;
6
6
  color: var(--odometer-color, var(--text-primary-color));
7
7
  font-family: var(--odometer-font-family, var(--font-family)), sans-serif;
8
+ transition: color var(--odometer-speed-color, var(--speed-color));
8
9
 
9
10
  &-digit {
10
11
  display: inline-block;
@@ -66,7 +67,7 @@ $root: odometer;
66
67
  &-inside {
67
68
  transition:
68
69
  all var(--speed),
69
- color var(--transition-speed-sm);
70
+ color var(--odometer-speed-color, var(--speed-color));
70
71
 
71
72
  &:before {
72
73
  content: "";
@@ -75,7 +76,7 @@ $root: odometer;
75
76
  color: inherit;
76
77
  transition:
77
78
  all var(--speed),
78
- color var(--transition-speed-sm);
79
+ color var(--odometer-speed-color, var(--speed-color));
79
80
  }
80
81
  }
81
82
  }
@@ -27,7 +27,7 @@ $root: scroll-area;
27
27
  touch-action: none;
28
28
  padding: var(--scroll-area-scrollbar-padding, 3px);
29
29
  background: var(--scroll-area-scrollbar-bg-color, transparent);
30
- transition: background var(--transition-speed-sm);
30
+ transition: background var(--scroll-area-speed-bg, var(--speed-color));
31
31
 
32
32
  &:hover {
33
33
  background: var(--scroll-area-scrollbar-bg-color-hover, transparent);
@@ -50,7 +50,7 @@ $root: scroll-area;
50
50
  position: relative;
51
51
  background: var(--scroll-area-thumb-bg-color);
52
52
  border-radius: var(--scroll-area-thumb-border-radius, 100px);
53
- transition: background var(--transition-speed-sm);
53
+ transition: background var(--scroll-area-speed-bg, var(--speed-color));
54
54
 
55
55
  &:hover {
56
56
  background: var(--scroll-area-thumb-bg-color-hover, var(--scroll-area-thumb-bg-color));
@@ -59,6 +59,7 @@ $root: scroll-area;
59
59
 
60
60
  &__corner {
61
61
  background: var(--scroll-area-scrollbar-bg-color, transparent);
62
+ transition: background var(--scroll-area-speed-bg, var(--speed-color));
62
63
 
63
64
  &:hover {
64
65
  background: var(--scroll-area-scrollbar-bg-color-hover, transparent);
@@ -30,7 +30,7 @@ $root: switch;
30
30
  border-radius: var(--switch-border-radius, 9999px);
31
31
  background: var(--switch-bg-color, #bbb);
32
32
  will-change: background;
33
- transition: background var(--transition-speed-sm);
33
+ transition: background var(--switch-speed-bg, var(--speed-color));
34
34
 
35
35
  &[data-state="checked"] {
36
36
  background-color: var(--switch-cheked-bg-color, var(--primary-color));
@@ -50,7 +50,9 @@ $root: switch;
50
50
  background-color: var(--switch-thumb-bg-color, white);
51
51
  border-radius: var(--switch-border-radius, 9999px);
52
52
  will-change: transform;
53
- transition: transform var(--transition-speed-sm) ease-in-out;
53
+ transition:
54
+ transform var(--switch-speed-transform, var(--speed-sm)) ease-in-out,
55
+ background-color var(--switch-speed-bg, var(--speed-color));
54
56
 
55
57
  @include dir.rtl {
56
58
  margin-right: calc(#{switch-width()} / 2);
@@ -64,7 +64,9 @@ const TabsList: ForwardRefRenderFunction<HTMLDivElement, TabsListProps> = (props
64
64
  });
65
65
  }, []);
66
66
 
67
- const updateIndicator = useCallback(_debounce(updateIndicatorImmediate, 50), [updateIndicatorImmediate]);
67
+ const updateIndicator = useCallback(() => {
68
+ return _debounce(updateIndicatorImmediate, 50)();
69
+ }, [updateIndicatorImmediate]);
68
70
 
69
71
  useLayoutEffect(() => {
70
72
  updateIndicatorImmediate();
@@ -91,8 +93,8 @@ const TabsList: ForwardRefRenderFunction<HTMLDivElement, TabsListProps> = (props
91
93
  window.removeEventListener("resize", updateIndicator);
92
94
  resizeObserver.disconnect();
93
95
  mutationObserver.disconnect();
94
- updateIndicator.cancel();
95
96
  };
97
+ // eslint-disable-next-line react-hooks/exhaustive-deps
96
98
  }, []);
97
99
 
98
100
  return (
@@ -19,7 +19,7 @@ $border-width: 1px;
19
19
  position: relative;
20
20
  display: flex;
21
21
  justify-content: space-between;
22
- transition: border-bottom-color var(--transition-speed-sm);
22
+ transition: border-bottom-color var(--tabs-speed-border-color, var(--speed-color));
23
23
 
24
24
  @include theme.rtl() {
25
25
  & {
@@ -55,8 +55,8 @@ $border-width: 1px;
55
55
  font-weight: var(--tabs-trigger-font-weight, 400);
56
56
  color: var(--tabs-trigger-color, var(--text-primary-color));
57
57
  transition:
58
- color var(--transition-speed-sm) ease,
59
- font-weight var(--transition-speed-sm) ease;
58
+ color var(--tabs-speed-color, var(--speed-color)) ease,
59
+ font-weight var(--tabs-speed-font-weight, var(--speed-sm)) ease;
60
60
 
61
61
  &[data-state="active"] {
62
62
  font-weight: var(--tabs-trigger-font-weight-active, 600);
@@ -80,8 +80,8 @@ $border-width: 1px;
80
80
  color: var(--tabs-trigger-badge-color, var(--text-secondary-color));
81
81
  background-color: var(--tabs-trigger-badge-bg-color, var(--bg-secondary-color));
82
82
  transition:
83
- background-color var(--transition-speed-sm) ease,
84
- color var(--transition-speed-sm) ease;
83
+ background-color var(--tabs-speed-bg, var(--speed-color)) ease,
84
+ color var(--tabs-speed-color, var(--speed-color)) ease;
85
85
 
86
86
  .#{$root}__trigger[data-state="active"] & {
87
87
  color: var(--tabs-trigger-badge-active-color, white);
@@ -107,9 +107,10 @@ $border-width: 1px;
107
107
  border-radius: #{$radius} #{$radius} 0 0;
108
108
  will-change: opacity, left, width;
109
109
  transition:
110
- opacity var(--transition-speed-sm) ease,
111
- left var(--transition-speed-sm) ease,
112
- width var(--transition-speed-sm) ease;
110
+ opacity var(--tabs-speed-opacity, var(--speed-sm)) ease,
111
+ left var(--tabs-speed-left, var(--speed-sm)) ease,
112
+ width var(--tabs-speed-width, var(--speed-sm)) ease,
113
+ background-color var(--tabs-speed-bg, var(--speed-color)) ease;
113
114
 
114
115
  .#{$root}--reverse & {
115
116
  bottom: auto;
@@ -13,6 +13,9 @@ $root: tag;
13
13
  border-radius: var(--tag-border-radius, 999px);
14
14
  color: var(--tag-color, var(--text-secondary-color));
15
15
  background: var(--tag-bg-color, var(--bg-secondary-color));
16
+ transition:
17
+ background var(--tag-speed-bg, var(--speed-color)),
18
+ color var(--tag-speed-color, var(--speed-color));
16
19
 
17
20
  &--clickable {
18
21
  cursor: pointer;
@@ -12,9 +12,9 @@ $root: text-area;
12
12
  border-radius: var(--text-area-border-radius, 8px);
13
13
  min-width: var(--text-area-min-width, 200px);
14
14
  transition:
15
- border-color var(--transition-speed-sm),
16
- box-shadow var(--transition-speed-sm),
17
- background var(--transition-speed-sm);
15
+ border-color var(--text-area-speed-border-color, var(--speed-color)),
16
+ box-shadow var(--text-area-speed-box-shadow, var(--speed-color)),
17
+ background var(--text-area-speed-bg, var(--speed-color));
18
18
 
19
19
  &:focus {
20
20
  border-color: var(--text-area-focus-border-color, color-mix(in srgb, white 40%, var(--primary-color)));
@@ -14,9 +14,9 @@ $root: text-field;
14
14
  padding: var(--text-field-padding, 8px 12px);
15
15
  border-radius: var(--text-field-border-radius, 8px);
16
16
  transition:
17
- border-color var(--transition-speed-sm),
18
- box-shadow var(--transition-speed-sm),
19
- background var(--transition-speed-sm);
17
+ border-color var(--text-field-speed-border-color, var(--speed-color)),
18
+ box-shadow var(--text-field-speed-box-shadow, var(--speed-color)),
19
+ background var(--text-field-speed-bg, var(--speed-color));
20
20
 
21
21
  @include dir.rtl {
22
22
  flex-direction: row-reverse;
@@ -42,6 +42,7 @@ $root: text-field;
42
42
  border: none;
43
43
  outline: none;
44
44
  background: transparent;
45
+ transition: color var(--text-field-speed-color, var(--speed-color));
45
46
 
46
47
  &:focus {
47
48
  outline: none;
@@ -52,6 +53,13 @@ $root: text-field;
52
53
 
53
54
  &::placeholder {
54
55
  color: var(--text-field-placeholder-color, var(--text-secondary-color));
56
+ transition: color var(--text-field-speed-color, var(--speed-color));
57
+ }
58
+
59
+ &::-webkit-outer-spin-button,
60
+ &::-webkit-inner-spin-button {
61
+ -webkit-appearance: none;
62
+ margin: 0;
55
63
  }
56
64
  }
57
65
 
@@ -13,55 +13,56 @@ $root: toast;
13
13
  background-color: var(--toast-bg-color, var(--bg-secondary-color));
14
14
  border-radius: var(--toast-border-radius, 10px);
15
15
  padding: var(--toast-padding, var(--side-padding-xs));
16
+ transition: background-color var(--toast-speed-bg, var(--speed-color));
16
17
 
17
18
  &[data-state="open"] {
18
19
  &.#{$root}--opacity-animation-in {
19
- animation: show var(--toast-transition-speed, var(--transition-speed-md)) ease-out;
20
+ animation: show var(--toast-speed-animation, var(--speed-md)) ease-out;
20
21
  }
21
22
 
22
23
  &.#{$root}--slide-animation-in {
23
24
  &.#{$root}--top-left,
24
25
  &.#{$root}--bottom-left {
25
- animation: slideInLeft var(--toast-transition-speed, var(--transition-speed-md)) ease-out;
26
+ animation: slideInLeft var(--toast-speed-animation, var(--speed-md)) ease-out;
26
27
  }
27
28
 
28
29
  &.#{$root}--top-right,
29
30
  &.#{$root}--bottom-right {
30
- animation: slideInRight var(--toast-transition-speed, var(--transition-speed-md)) ease-out;
31
+ animation: slideInRight var(--toast-speed-animation, var(--speed-md)) ease-out;
31
32
  }
32
33
 
33
34
  &.#{$root}--top-center {
34
- animation: slideInTop var(--toast-transition-speed, var(--transition-speed-md)) ease-out;
35
+ animation: slideInTop var(--toast-speed-animation, var(--speed-md)) ease-out;
35
36
  }
36
37
 
37
38
  &.#{$root}--bottom-center {
38
- animation: slideInBottom var(--toast-transition-speed, var(--transition-speed-md)) ease-out;
39
+ animation: slideInBottom var(--toast-speed-animation, var(--speed-md)) ease-out;
39
40
  }
40
41
  }
41
42
  }
42
43
 
43
44
  &[data-state="closed"] {
44
45
  &.#{$root}--opacity-animation-out {
45
- animation: hide var(--toast-transition-speed, var(--transition-speed-md)) ease-in;
46
+ animation: hide var(--toast-speed-animation, var(--speed-md)) ease-in;
46
47
  }
47
48
 
48
49
  &.#{$root}--slide-animation-out {
49
50
  &.#{$root}--top-left,
50
51
  &.#{$root}--bottom-left {
51
- animation: swipeOutLeft var(--toast-transition-speed, var(--transition-speed-md)) ease-out;
52
+ animation: swipeOutLeft var(--toast-speed-animation, var(--speed-md)) ease-out;
52
53
  }
53
54
 
54
55
  &.#{$root}--top-right,
55
56
  &.#{$root}--bottom-right {
56
- animation: swipeOutRight var(--toast-transition-speed, var(--transition-speed-md)) ease-out;
57
+ animation: swipeOutRight var(--toast-speed-animation, var(--speed-md)) ease-out;
57
58
  }
58
59
 
59
60
  &.#{$root}--top-center {
60
- animation: swipeOutTop var(--toast-transition-speed, var(--transition-speed-md)) ease-out;
61
+ animation: swipeOutTop var(--toast-speed-animation, var(--speed-md)) ease-out;
61
62
  }
62
63
 
63
64
  &.#{$root}--bottom-center {
64
- animation: swipeOutBottom var(--toast-transition-speed, var(--transition-speed-md)) ease-out;
65
+ animation: swipeOutBottom var(--toast-speed-animation, var(--speed-md)) ease-out;
65
66
  }
66
67
  }
67
68
  }
@@ -72,26 +73,26 @@ $root: toast;
72
73
 
73
74
  &[data-swipe="cancel"] {
74
75
  transform: translateX(0) translateY(0);
75
- transition: transform var(--toast-transition-speed, var(--transition-speed-md)) ease-out;
76
+ transition: transform var(--toast-speed-transform, var(--speed-sm)) ease-out;
76
77
  }
77
78
 
78
79
  &[data-swipe="end"] {
79
80
  &.#{$root}--top-left,
80
81
  &.#{$root}--bottom-left {
81
- animation: swipeOutLeft var(--toast-transition-speed, var(--transition-speed-md)) ease-out;
82
+ animation: swipeOutLeft var(--toast-speed-animation, var(--speed-md)) ease-out;
82
83
  }
83
84
 
84
85
  &.#{$root}--top-right,
85
86
  &.#{$root}--bottom-right {
86
- animation: swipeOutRight var(--toast-transition-speed, var(--transition-speed-md)) ease-out;
87
+ animation: swipeOutRight var(--toast-speed-animation, var(--speed-md)) ease-out;
87
88
  }
88
89
 
89
90
  &.#{$root}--top-center {
90
- animation: swipeOutTop var(--toast-transition-speed, var(--transition-speed-md)) ease-out;
91
+ animation: swipeOutTop var(--toast-speed-animation, var(--speed-md)) ease-out;
91
92
  }
92
93
 
93
94
  &.#{$root}--bottom-center {
94
- animation: swipeOutBottom var(--toast-transition-speed, var(--transition-speed-md)) ease-out;
95
+ animation: swipeOutBottom var(--toast-speed-animation, var(--speed-md)) ease-out;
95
96
  }
96
97
  }
97
98
 
@@ -121,6 +122,8 @@ $root: toast;
121
122
 
122
123
  &__title,
123
124
  &__description {
125
+ transition: color var(--toast-speed-color, var(--speed-color));
126
+
124
127
  .#{$root}--error-color & {
125
128
  color: var(--toast-error-text-color, white);
126
129
  }
@@ -17,9 +17,14 @@ $root: tooltip;
17
17
  max-width: var(--tooltip-max-width, 300px);
18
18
  word-wrap: break-word;
19
19
  user-select: none;
20
- animation-duration: var(--transition-speed-md);
20
+ animation-duration: var(--tooltip-speed-animation, var(--speed-md));
21
21
  will-change: transform, opacity;
22
22
  box-shadow: var(--tooltip-box-shadow-offset, 0 0 5px 0) var(--tooltip-box-shadow-color, rgba(210, 208, 208, 0.47));
23
+ transition:
24
+ border-color var(--tooltip-speed-border-color, var(--speed-color)),
25
+ box-shadow var(--tooltip-speed-box-shadow, var(--speed-color)),
26
+ color var(--tooltip-speed-color, var(--speed-color)),
27
+ background-color var(--tooltip-speed-bg, var(--speed-color));
23
28
 
24
29
  &--trigger-width {
25
30
  width: var(--radix-tooltip-trigger-width);
@@ -75,6 +80,9 @@ $root: tooltip;
75
80
  stroke: var(--tooltip-border-color, var(--tooltip-bg-color, var(--bg-secondary-color)));
76
81
  stroke-width: var(--tooltip-border-width, 1px);
77
82
  margin-top: calc(var(--tooltip-border-width, 1px) * -1);
83
+ transition:
84
+ fill var(--tooltip-speed-fill, var(--speed-color)),
85
+ stroke var(--tooltip-speed-stroke, var(--speed-color));
78
86
  }
79
87
  }
80
88
 
@@ -6,6 +6,7 @@
6
6
  white-space: nowrap;
7
7
  overflow: hidden;
8
8
  text-overflow: ellipsis;
9
+ transition: color var(--truncate-speed-color, var(--speed-color));
9
10
 
10
11
  &--middle {
11
12
  text-overflow: clip;
@@ -16,5 +16,8 @@
16
16
  padding: var(--truncate-list-counter-padding, 0px 4px);
17
17
  color: var(--truncate-list-counter-color, var(--text-secondary-color));
18
18
  font-size: var(--truncate-list-counter-font-size, inherit);
19
+ transition:
20
+ color var(--truncate-list-speed-color, var(--speed-color)),
21
+ background var(--truncate-list-speed-bg, var(--speed-color));
19
22
  }
20
23
  }
@@ -21,7 +21,7 @@ $root: view;
21
21
  var(--view-header-separate-color, var(--separator-color));
22
22
  justify-content: space-between;
23
23
  will-change: border;
24
- transition: border-bottom-color var(--transition-speed-sm);
24
+ transition: border-bottom-color var(--view-speed-border-color, var(--speed-color));
25
25
  }
26
26
  }
27
27
 
@@ -9,12 +9,12 @@
9
9
 
10
10
  &--transition {
11
11
  transition:
12
- height var(--transition-viewport, var(--transition-speed-md)) ease-in-out,
13
- width var(--transition-viewport, var(--transition-speed-md)) ease-in-out,
14
- min-height var(--transition-viewport, var(--transition-speed-md)) ease-in-out,
15
- min-width var(--transition-viewport, var(--transition-speed-md)) ease-in-out,
16
- max-height var(--transition-viewport, var(--transition-speed-md)) ease-in-out,
17
- max-width var(--transition-viewport, var(--transition-speed-md)) ease-in-out;
12
+ height var(--viewport-speed-height, var(--speed-md)) ease-in-out,
13
+ width var(--viewport-speed-width, var(--speed-md)) ease-in-out,
14
+ min-height var(--viewport-speed-min-height, var(--speed-md)) ease-in-out,
15
+ min-width var(--viewport-speed-min-width, var(--speed-md)) ease-in-out,
16
+ max-height var(--viewport-speed-max-height, var(--speed-md)) ease-in-out,
17
+ max-width var(--viewport-speed-max-width, var(--speed-md)) ease-in-out;
18
18
  }
19
19
 
20
20
  &--expanded {
@@ -1,3 +1,4 @@
1
+ export * from "./Accordion";
1
2
  export * from "./Avatar";
2
3
  export * from "./BaseButton";
3
4
  export * from "./Button";
@@ -23,10 +23,11 @@
23
23
  --side-padding-md: 25px;
24
24
  --side-padding-lg: 30px;
25
25
 
26
- --transition-speed-xs: 100ms;
27
- --transition-speed-sm: 200ms;
28
- --transition-speed-md: 250ms;
29
- --transition-speed-lg: 500ms;
26
+ --speed-color: 200ms;
27
+ --speed-xs: 100ms;
28
+ --speed-sm: 200ms;
29
+ --speed-md: 250ms;
30
+ --speed-lg: 500ms;
30
31
 
31
32
  /* Common colors */
32
33
  --primary-color: #5959ff;
@@ -122,8 +122,7 @@ body {
122
122
  -moz-osx-font-smoothing: grayscale;
123
123
  will-change: background-color, color;
124
124
  transition:
125
- background-color var(--transition-speed-md),
126
- border-color var(--transition-speed-md),
127
- background var(--transition-speed-md),
128
- color var(--transition-speed-md);
125
+ color var(--body-speed-color, var(--speed-color)),
126
+ background-color var(--body-speed-bg, var(--speed-color)),
127
+ border-color var(--body-speed-border-color, var(--speed-color));
129
128
  }