@ably/ui 14.0.0-dev.f6c8d86 → 14.0.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 (118) hide show
  1. package/core/Accordion.js +1 -1
  2. package/core/Code.js +1 -1
  3. package/core/ContactFooter/component.css +9 -7
  4. package/core/ContactFooter.js +1 -1
  5. package/core/CookieMessage/component.css +12 -10
  6. package/core/CookieMessage.js +1 -1
  7. package/core/Expander.js +1 -0
  8. package/core/Flash/component.css +21 -19
  9. package/core/Flash.js +1 -1
  10. package/core/Footer/component.css +24 -22
  11. package/core/Footer.js +1 -1
  12. package/core/Meganav/component.css +105 -103
  13. package/core/Meganav/component.js +1 -1
  14. package/core/Meganav.js +1 -1
  15. package/core/Notice/component.css +6 -4
  16. package/core/Notice/component.js +1 -1
  17. package/core/Notice.js +1 -1
  18. package/core/Slider/component.css +32 -30
  19. package/core/Slider/component.js +1 -1
  20. package/core/Slider.js +1 -1
  21. package/core/Table/Table.js +1 -1
  22. package/core/Table/TableCell.js +3 -3
  23. package/core/Table/data.js +1 -1
  24. package/core/Table.js +1 -1
  25. package/core/scripts.js +1 -1
  26. package/core/styles/buttons.css +123 -121
  27. package/core/styles/forms.css +51 -49
  28. package/core/styles/layout.css +16 -14
  29. package/core/styles/properties.css +252 -250
  30. package/core/styles/text.css +167 -165
  31. package/core/styles.components.css +24 -22
  32. package/core/utils/syntax-highlighter.css +59 -55
  33. package/package.json +2 -4
  34. package/src/core/Accordion.tsx +8 -6
  35. package/src/core/Code.tsx +0 -1
  36. package/src/core/ContactFooter/component.css +9 -7
  37. package/src/core/ContactFooter.tsx +0 -1
  38. package/src/core/CookieMessage/component.css +12 -10
  39. package/src/core/CookieMessage.tsx +0 -1
  40. package/src/core/Expander/Expander.stories.tsx +132 -0
  41. package/src/core/Expander.tsx +63 -0
  42. package/src/core/Flash/component.css +21 -19
  43. package/src/core/Flash.tsx +0 -1
  44. package/src/core/Footer/component.css +24 -22
  45. package/src/core/Footer.tsx +0 -1
  46. package/src/core/Meganav/component.css +105 -103
  47. package/src/core/Meganav/component.js +0 -2
  48. package/src/core/Meganav.tsx +0 -1
  49. package/src/core/Notice/component.css +6 -4
  50. package/src/core/Notice/component.js +0 -1
  51. package/src/core/Notice.tsx +0 -1
  52. package/src/core/Slider/Slider.stories.tsx +2 -2
  53. package/src/core/Slider/component.css +32 -30
  54. package/src/core/Slider/component.js +0 -2
  55. package/src/core/Slider.tsx +51 -20
  56. package/src/core/Table/Table.tsx +1 -2
  57. package/src/core/Table/TableCell.tsx +2 -40
  58. package/src/core/Table/data.tsx +21 -1
  59. package/src/core/Table.tsx +1 -12
  60. package/src/core/scripts.js +0 -2
  61. package/src/core/styles/buttons.css +123 -121
  62. package/src/core/styles/forms.css +51 -49
  63. package/src/core/styles/layout.css +16 -14
  64. package/src/core/styles/properties.css +252 -250
  65. package/src/core/styles/text.css +167 -165
  66. package/src/core/styles.components.css +24 -22
  67. package/src/core/utils/syntax-highlighter.css +59 -55
  68. package/core/.DS_Store +0 -0
  69. package/core/Accordion/.DS_Store +0 -0
  70. package/core/Code/.DS_Store +0 -0
  71. package/core/ContactFooter/.DS_Store +0 -0
  72. package/core/CookieMessage/.DS_Store +0 -0
  73. package/core/CustomerLogos/.DS_Store +0 -0
  74. package/core/DropdownMenu/.DS_Store +0 -0
  75. package/core/FeaturedLink/.DS_Store +0 -0
  76. package/core/Flash/.DS_Store +0 -0
  77. package/core/Footer/.DS_Store +0 -0
  78. package/core/Icon/.DS_Store +0 -0
  79. package/core/Loader/.DS_Store +0 -0
  80. package/core/Logo/.DS_Store +0 -0
  81. package/core/Meganav/.DS_Store +0 -0
  82. package/core/MeganavBlogPostsList/.DS_Store +0 -0
  83. package/core/MeganavControl/.DS_Store +0 -0
  84. package/core/MeganavControlMobileDropdown/.DS_Store +0 -0
  85. package/core/MeganavControlMobilePanelClose/.DS_Store +0 -0
  86. package/core/MeganavControlMobilePanelOpen/.DS_Store +0 -0
  87. package/core/MeganavSearchAutocomplete/.DS_Store +0 -0
  88. package/core/MeganavSearchSuggestions/.DS_Store +0 -0
  89. package/core/Notice/.DS_Store +0 -0
  90. package/core/Slider/.DS_Store +0 -0
  91. package/core/Table/.DS_Store +0 -0
  92. package/core/Tooltip/.DS_Store +0 -0
  93. package/src/.DS_Store +0 -0
  94. package/src/core/.DS_Store +0 -0
  95. package/src/core/Accordion/.DS_Store +0 -0
  96. package/src/core/Code/.DS_Store +0 -0
  97. package/src/core/ContactFooter/.DS_Store +0 -0
  98. package/src/core/CookieMessage/.DS_Store +0 -0
  99. package/src/core/CustomerLogos/.DS_Store +0 -0
  100. package/src/core/DropdownMenu/.DS_Store +0 -0
  101. package/src/core/FeaturedLink/.DS_Store +0 -0
  102. package/src/core/Flash/.DS_Store +0 -0
  103. package/src/core/Footer/.DS_Store +0 -0
  104. package/src/core/Icon/.DS_Store +0 -0
  105. package/src/core/Loader/.DS_Store +0 -0
  106. package/src/core/Logo/.DS_Store +0 -0
  107. package/src/core/Meganav/.DS_Store +0 -0
  108. package/src/core/MeganavBlogPostsList/.DS_Store +0 -0
  109. package/src/core/MeganavControl/.DS_Store +0 -0
  110. package/src/core/MeganavControlMobileDropdown/.DS_Store +0 -0
  111. package/src/core/MeganavControlMobilePanelClose/.DS_Store +0 -0
  112. package/src/core/MeganavControlMobilePanelOpen/.DS_Store +0 -0
  113. package/src/core/MeganavSearchAutocomplete/.DS_Store +0 -0
  114. package/src/core/MeganavSearchSuggestions/.DS_Store +0 -0
  115. package/src/core/Notice/.DS_Store +0 -0
  116. package/src/core/Slider/.DS_Store +0 -0
  117. package/src/core/Table/.DS_Store +0 -0
  118. package/src/core/Tooltip/.DS_Store +0 -0
@@ -1,38 +1,40 @@
1
- .ui-slider-marker {
2
- font-size: 0.5rem;
3
- top: -1px;
1
+ @layer components {
2
+ .ui-slider-marker {
3
+ font-size: 0.5rem;
4
+ top: -1px;
4
5
 
5
- @apply leading-none px-4 relative;
6
- }
7
-
8
- @keyframes fillAnimation {
9
- 0% {
10
- width: 0%;
11
- }
12
- 100% {
13
- width: 100%;
6
+ @apply leading-none px-4 relative;
14
7
  }
15
- }
16
-
17
- .ui-icon-cta {
18
- @apply cursor-pointer overflow-hidden;
19
- @apply rounded border-2 border-mid-grey hover:border-active-orange;
20
- transition: all 0.4s;
21
- }
22
8
 
23
- @screen sm {
24
- .ui-icon-cta-left:hover .ui-icon-cta-holder {
25
- transform: translateX(-120%);
9
+ @keyframes fillAnimation {
10
+ 0% {
11
+ width: 0%;
12
+ }
13
+ 100% {
14
+ width: 100%;
15
+ }
26
16
  }
27
- .ui-icon-cta-right .ui-icon-cta-holder {
28
- transform: translateX(-120%);
17
+
18
+ .ui-icon-cta {
19
+ @apply cursor-pointer overflow-hidden;
20
+ @apply rounded border-2 border-mid-grey hover:border-active-orange;
21
+ transition: all 0.4s;
29
22
  }
30
- .ui-icon-cta-right:hover .ui-icon-cta-holder {
31
- transform: translateX(0%);
23
+
24
+ @screen sm {
25
+ .ui-icon-cta-left:hover .ui-icon-cta-holder {
26
+ transform: translateX(-120%);
27
+ }
28
+ .ui-icon-cta-right .ui-icon-cta-holder {
29
+ transform: translateX(-120%);
30
+ }
31
+ .ui-icon-cta-right:hover .ui-icon-cta-holder {
32
+ transform: translateX(0%);
33
+ }
32
34
  }
33
- }
34
35
 
35
- .ui-icon-cta-holder {
36
- @apply w-full h-full;
37
- transition: all 0.4s;
36
+ .ui-icon-cta-holder {
37
+ @apply w-full h-full;
38
+ transition: all 0.4s;
39
+ }
38
40
  }
@@ -1,5 +1,3 @@
1
- import "./component.css";
2
-
3
1
  import throttle from "lodash.throttle";
4
2
 
5
3
  import { queryId, queryIdAll } from "../dom-query";
@@ -1,6 +1,5 @@
1
1
  import React, { useState, useEffect, useRef, ReactNode } from "react";
2
- import Icon from "../core/Icon.tsx";
3
- import "./Slider/component.css";
2
+ import Icon from "./Icon";
4
3
 
5
4
  interface SliderProps {
6
5
  children: ReactNode[];
@@ -19,6 +18,8 @@ interface SliderIndicatorProps {
19
18
  isInline?: boolean;
20
19
  }
21
20
 
21
+ const SLIDE_TRANSITION_LENGTH = 300;
22
+
22
23
  const SlideIndicator = ({
23
24
  numSlides,
24
25
  activeIndex,
@@ -29,7 +30,7 @@ const SlideIndicator = ({
29
30
  return (
30
31
  <ul
31
32
  className={`flex gap-4 left-1/2 ${
32
- isInline ? "bottom-0" : "absolute -bottom-40 transform -translate-x-1/2"
33
+ isInline ? "bottom-0" : "absolute bottom-0 transform -translate-x-1/2"
33
34
  }`}
34
35
  >
35
36
  {Array.from({ length: numSlides }, (_, i) =>
@@ -39,12 +40,12 @@ const SlideIndicator = ({
39
40
  className="relative w-40 h-4 mx-1 rounded-full bg-neutral-500"
40
41
  >
41
42
  {i === activeIndex && (
42
- <li
43
+ <span
43
44
  className="absolute inset-0 rounded-full bg-active-orange"
44
45
  style={{
45
46
  animation: `fillAnimation ${interval}ms linear`,
46
47
  }}
47
- ></li>
48
+ ></span>
48
49
  )}
49
50
  </li>
50
51
  ) : (
@@ -64,24 +65,43 @@ const SlideIndicator = ({
64
65
  );
65
66
  };
66
67
 
68
+ const setupSlides = (children: ReactNode[], activeIndex: number) => [
69
+ children[activeIndex === 0 ? children.length - 1 : activeIndex - 1],
70
+ children[activeIndex],
71
+ children[activeIndex === children.length - 1 ? 0 : activeIndex + 1],
72
+ ];
73
+
67
74
  const Slider = ({ children, options }: SliderProps) => {
68
75
  const [activeIndex, setActiveIndex] = useState(0);
69
76
  const [touchStartX, setTouchStartX] = useState(0);
70
77
  const [touchEndX, setTouchEndX] = useState(0);
78
+ const [slides, setSlides] = useState<ReactNode[]>(
79
+ setupSlides(children, activeIndex)
80
+ );
81
+ const [translationCoefficient, setTranslationCoefficient] = useState(0);
71
82
  const timerRef = useRef<NodeJS.Timeout | null>(null);
83
+ const [slideLock, setSlideLock] = useState(false);
72
84
 
73
85
  const isInline = options?.controlPosition === "inline";
74
86
 
75
87
  const next = () => {
76
- setActiveIndex((prevIndex) => (prevIndex + 1) % children.length);
77
- resetInterval();
88
+ if (!slideLock) {
89
+ setActiveIndex((prevIndex) => (prevIndex + 1) % children.length);
90
+ setTranslationCoefficient(1);
91
+ resetInterval();
92
+ setSlideLock(true);
93
+ }
78
94
  };
79
95
 
80
96
  const prev = () => {
81
- setActiveIndex((prevIndex) =>
82
- prevIndex > 0 ? prevIndex - 1 : children.length - 1
83
- );
84
- resetInterval();
97
+ if (!slideLock) {
98
+ setActiveIndex((prevIndex) =>
99
+ prevIndex > 0 ? prevIndex - 1 : children.length - 1
100
+ );
101
+ setTranslationCoefficient(-1);
102
+ resetInterval();
103
+ setSlideLock(true);
104
+ }
85
105
  };
86
106
 
87
107
  const resetInterval = () => {
@@ -113,6 +133,14 @@ const Slider = ({ children, options }: SliderProps) => {
113
133
  };
114
134
  }, [children.length, options?.interval]);
115
135
 
136
+ useEffect(() => {
137
+ setTimeout(() => {
138
+ setSlides(setupSlides(children, activeIndex));
139
+ setTranslationCoefficient(0);
140
+ setSlideLock(false);
141
+ }, SLIDE_TRANSITION_LENGTH);
142
+ }, [activeIndex]);
143
+
116
144
  return (
117
145
  <div
118
146
  className="relative"
@@ -120,18 +148,21 @@ const Slider = ({ children, options }: SliderProps) => {
120
148
  onTouchMove={handleTouchMove}
121
149
  onTouchEnd={handleTouchEnd}
122
150
  >
123
- <div className="overflow-hidden w-full py-40">
151
+ <div className="overflow-y-visible overflow-x-clip w-full py-40">
124
152
  <div
125
- className="flex items-center transition-transform ease-in-out duration-500"
126
- style={{ transform: `translateX(-${activeIndex * 100}%)` }}
153
+ className={`flex items-center ${
154
+ translationCoefficient !== 0
155
+ ? `transition-transform ease-in-out duration-${SLIDE_TRANSITION_LENGTH}`
156
+ : ""
157
+ } `}
158
+ style={{
159
+ transform: `translateX(-${(translationCoefficient + 1) * 100}%)`,
160
+ }}
127
161
  >
128
- {children.map((child, index) => (
162
+ {slides.map((child, index) => (
129
163
  <div
130
164
  key={index}
131
- className="w-full flex-shrink-0 flex justify-center sm:px-60 transition-opacity ease-in delay-500 duration-500"
132
- style={{
133
- opacity: activeIndex === index ? 1 : 0.1,
134
- }}
165
+ className="w-full flex-shrink-0 flex justify-center sm:px-60"
135
166
  >
136
167
  {child}
137
168
  </div>
@@ -142,7 +173,7 @@ const Slider = ({ children, options }: SliderProps) => {
142
173
  <div
143
174
  className={`flex items-center pointer-events-none ${
144
175
  isInline
145
- ? "ui-standard-container justify-center gap-24"
176
+ ? "ui-standard-container justify-center gap-24 -mt-16"
146
177
  : "sm:flex sm:absolute inset-0 justify-between"
147
178
  }`}
148
179
  >
@@ -49,10 +49,9 @@ export const TableRowHeader = ({
49
49
  ...rest
50
50
  }: PropsWithChildren<TableHTMLAttributes<HTMLTableRowElement>>) => (
51
51
  <tr
52
- className={`-ml-24 mt-8 sm:ml-0 sm:mt-0 bg-light-grey sm:sticky z-10 ${
52
+ className={`-ml-24 mt-8 sm:ml-0 sm:mt-0 sm:sticky z-10 ${
53
53
  rest?.className ?? ""
54
54
  }`}
55
- style={{ top: "4rem" }}
56
55
  >
57
56
  {cloneElement(children as ReactElement, { isRowHeader: true })}
58
57
  </tr>
@@ -1,45 +1,15 @@
1
1
  import React, { PropsWithChildren } from "react";
2
- import Icon from "../Icon";
3
2
 
4
3
  type TableCellProps = {
5
4
  isRowHeader?: boolean;
6
5
  } & React.TdHTMLAttributes<HTMLTableCellElement>;
7
6
 
8
- const Supported = () => (
9
- <Icon
10
- name="icon-gui-check-circled-fill"
11
- size="1.5rem"
12
- color="text-gui-success"
13
- additionalCSS="flex-grow-0 flex-shrink-0"
14
- data-testid="supported-icon"
15
- />
16
- );
17
-
18
- const Unsupported = () => (
19
- <Icon
20
- name="icon-gui-cross-circled-fill"
21
- size="1.5rem"
22
- color="text-gui-error"
23
- additionalCSS="flex-grow-0 flex-shrink-0"
24
- data-testid="unsupported-icon"
25
- />
26
- );
27
-
28
- const Partial = () => (
29
- <Icon
30
- name="icon-gui-partial"
31
- size="1.5rem"
32
- additionalCSS="flex-grow-0 flex-shrink-0"
33
- data-testid="partial-icon"
34
- />
35
- );
36
-
37
7
  const LabelCell = ({
38
8
  children,
39
9
  ...rest
40
10
  }: PropsWithChildren<React.TdHTMLAttributes<HTMLTableCellElement>>) => {
41
11
  const classes = `
42
- ui-text-p1 !font-bold pt-24 pb-8 border-light-grey sm:p-24 sm:relative sm:top-2 flex sm:table-cell ${
12
+ ui-text-p1 font-bold pt-24 pb-8 border-light-grey sm:p-24 sm:relative sm:top-2 flex sm:table-cell ${
43
13
  rest?.className ?? ""
44
14
  }
45
15
  `;
@@ -98,12 +68,4 @@ const CtaCell = ({
98
68
  </td>
99
69
  );
100
70
 
101
- export {
102
- TableCell,
103
- LabelCell,
104
- HeaderCell,
105
- CtaCell,
106
- Supported,
107
- Unsupported,
108
- Partial,
109
- };
71
+ export { TableCell, LabelCell, HeaderCell, CtaCell };
@@ -1,8 +1,28 @@
1
1
  import React, { Fragment } from "react";
2
2
 
3
3
  import Tooltip from "../Tooltip";
4
- import { Supported, Unsupported } from "./TableCell";
5
4
  import Table from "../Table";
5
+ import Icon from "../Icon";
6
+
7
+ const Supported = () => (
8
+ <Icon
9
+ name="icon-gui-check-circled-fill"
10
+ size="1.5rem"
11
+ color="text-gui-success"
12
+ additionalCSS="flex-grow-0 flex-shrink-0"
13
+ data-testid="supported-icon"
14
+ />
15
+ );
16
+
17
+ const Unsupported = () => (
18
+ <Icon
19
+ name="icon-gui-cross-circled-fill"
20
+ size="1.5rem"
21
+ color="text-gui-error"
22
+ additionalCSS="flex-grow-0 flex-shrink-0"
23
+ data-testid="unsupported-icon"
24
+ />
25
+ );
6
26
 
7
27
  const testRow = (index) => ({
8
28
  label: `Label ${index + 1}`,
@@ -1,14 +1,6 @@
1
1
  import { Table, TableRowHeader, TableHeader, TableBody } from "./Table/Table";
2
2
  import { TableRow } from "./Table/TableRow";
3
- import {
4
- TableCell,
5
- LabelCell,
6
- HeaderCell,
7
- CtaCell,
8
- Supported,
9
- Unsupported,
10
- Partial,
11
- } from "./Table/TableCell";
3
+ import { TableCell, LabelCell, HeaderCell, CtaCell } from "./Table/TableCell";
12
4
 
13
5
  export default {
14
6
  Root: Table,
@@ -20,7 +12,4 @@ export default {
20
12
  RowHeader: TableRowHeader,
21
13
  Body: TableBody,
22
14
  Header: TableHeader,
23
- Supported,
24
- Unsupported,
25
- Partial,
26
15
  };
@@ -1,7 +1,5 @@
1
1
  import "array-flat-polyfill";
2
2
 
3
- import "./styles.css";
4
-
5
3
  export { default as reactRenderer, renderComponent } from "./react-renderer";
6
4
  export { default as loadSprites } from "./load-sprites";
7
5
  export { default as toggleChatWidget } from "./hubspot-chat-toggle";
@@ -1,122 +1,124 @@
1
- .ui-btn {
2
- @apply text-white bg-cool-black text-btn2 font-sans font-bold inline-block rounded p-btn;
3
- @apply hover:text-white hover:bg-active-orange;
4
- @apply active:text-white active:bg-red-orange;
5
- @apply focus:text-white focus:bg-cool-black focus:outline-gui-focus;
6
- @apply disabled:text-mid-grey disabled:bg-gui-unavailable disabled:cursor-not-allowed;
7
- @apply transition-colors;
8
- @apply inline-flex items-center justify-center;
9
- }
10
-
11
- .ui-btn-alt {
12
- transition: background-position 0.2s;
13
- background: linear-gradient(
14
- 61.2deg,
15
- var(--color-active-orange) 5%,
16
- #fe5215 19%,
17
- #fc4a13 27%,
18
- #f73c10 33%,
19
- #f1280a 39%,
20
- #e90f04 44%,
21
- var(--color-red-orange) 50%
22
- );
23
- background-size: 200% 100%;
24
- background-position: 0% 0%;
25
-
26
- @apply text-white text-btn2 font-sans font-bold inline-block rounded p-btn;
27
- @apply focus:outline-gui-focus;
28
- @apply inline-flex items-center justify-center;
29
- }
30
-
31
- .ui-btn-alt:hover,
32
- .ui-btn-alt:focus {
33
- background-position: 100% 0%;
34
- }
35
-
36
- .ui-btn-alt:disabled {
37
- background: linear-gradient(var(--gradient-transparent));
38
- @apply bg-gui-unavailable text-mid-grey cursor-not-allowed;
39
- }
40
-
41
- .ui-btn-invert {
42
- @apply text-cool-black bg-white text-btn2 font-sans font-bold inline-block rounded p-btn;
43
- @apply hover:text-white hover:bg-active-orange;
44
- @apply active:text-white active:bg-red-orange;
45
- @apply focus:text-white focus:bg-cool-black focus:outline-gui-focus;
46
- @apply disabled:text-mid-grey disabled:bg-gui-unavailable disabled:cursor-not-allowed;
47
- @apply transition-colors;
48
- @apply inline-flex items-center justify-center;
49
- }
50
-
51
- .ui-btn-secondary {
52
- @apply text-cool-black bg-white text-btn2 font-sans font-bold inline-block border-btn border-cool-black rounded p-btn;
53
- @apply hover:text-cool-black hover:border-active-orange hover:bg-white;
54
- @apply active:border-red-orange active:bg-white;
55
- @apply focus:border-cool-black focus:bg-white focus:outline-gui-focus;
56
- @apply disabled:text-gui-unavailable disabled:border-gui-unavailable disabled:bg-white disabled:cursor-not-allowed;
57
- @apply transition-colors;
58
- @apply inline-flex items-center justify-center;
59
- }
60
-
61
- .ui-btn-secondary-invert {
62
- @apply text-white bg-cool-black text-btn2 font-sans font-bold inline-block border-btn border-mid-grey rounded p-btn;
63
- @apply hover:text-white hover:border-active-orange;
64
- @apply active:border-red-orange;
65
- @apply focus:outline-gui-focus;
66
- @apply disabled:text-gui-unavailable disabled:border-gui-unavailable disabled:cursor-not-allowed;
67
- @apply transition-colors;
68
- @apply inline-flex items-center justify-center;
69
- }
70
-
71
- .ui-btn-icon {
72
- @apply w-24 h-24 mr-16;
73
- }
74
-
75
- .ui-btn-icon-small {
76
- @apply w-20 h-20 mr-12;
77
- }
78
-
79
- .ui-btn-icon-xsmall {
80
- @apply w-16 h-16 mr-8;
81
- }
82
-
83
- .ui-chip {
84
- @apply text-btn3 p-chip rounded text-cool-black;
85
- @apply hover:bg-mid-grey;
86
- @apply active:bg-red-orange active:text-white;
87
- @apply focus:bg-red-orange focus:text-white focus:outline-none;
88
- @apply disabled:text-mid-grey disabled:bg-gui-unavailable disabled:cursor-not-allowed;
89
- @apply transition-colors;
90
- }
91
-
92
- .ui-chip[data-selected] {
93
- @apply bg-active-orange text-white;
94
- }
95
-
96
- .ui-chip[data-selected]:hover {
97
- @apply bg-mid-grey text-cool-black;
98
- }
99
-
100
- .ui-chip[data-selected]:focus {
101
- @apply bg-red-orange text-white;
102
- }
103
-
104
- .ui-chip-alt {
105
- @apply text-btn3 p-chip rounded text-white;
106
- @apply hover:bg-gui-hover;
107
- @apply active:bg-gui-active active:text-white;
108
- @apply focus:bg-gui-active focus:text-white focus:outline-none;
109
- @apply disabled:text-mid-grey disabled:bg-gui-unavailable disabled:cursor-not-allowed;
110
- @apply transition-colors;
111
- }
112
-
113
- .ui-chip-alt[data-selected] {
114
- @apply bg-dark-grey text-white;
115
- }
116
- .ui-chip-alt[data-selected]:hover {
117
- @apply bg-gui-hover text-white;
118
- }
119
-
120
- .ui-chip-alt[data-selected]:focus {
121
- @apply bg-gui-active text-white;
1
+ @layer components {
2
+ .ui-btn {
3
+ @apply text-white bg-cool-black text-btn2 font-sans font-bold inline-block rounded p-btn;
4
+ @apply hover:text-white hover:bg-active-orange;
5
+ @apply active:text-white active:bg-red-orange;
6
+ @apply focus:text-white focus:bg-cool-black focus:outline-gui-focus;
7
+ @apply disabled:text-mid-grey disabled:bg-gui-unavailable disabled:cursor-not-allowed;
8
+ @apply transition-colors;
9
+ @apply inline-flex items-center justify-center;
10
+ }
11
+
12
+ .ui-btn-alt {
13
+ transition: background-position 0.2s;
14
+ background: linear-gradient(
15
+ 61.2deg,
16
+ var(--color-active-orange) 5%,
17
+ #fe5215 19%,
18
+ #fc4a13 27%,
19
+ #f73c10 33%,
20
+ #f1280a 39%,
21
+ #e90f04 44%,
22
+ var(--color-red-orange) 50%
23
+ );
24
+ background-size: 200% 100%;
25
+ background-position: 0% 0%;
26
+
27
+ @apply text-white text-btn2 font-sans font-bold inline-block rounded p-btn;
28
+ @apply focus:outline-gui-focus;
29
+ @apply inline-flex items-center justify-center;
30
+ }
31
+
32
+ .ui-btn-alt:hover,
33
+ .ui-btn-alt:focus {
34
+ background-position: 100% 0%;
35
+ }
36
+
37
+ .ui-btn-alt:disabled {
38
+ background: linear-gradient(var(--gradient-transparent));
39
+ @apply bg-gui-unavailable text-mid-grey cursor-not-allowed;
40
+ }
41
+
42
+ .ui-btn-invert {
43
+ @apply text-cool-black bg-white text-btn2 font-sans font-bold inline-block rounded p-btn;
44
+ @apply hover:text-white hover:bg-active-orange;
45
+ @apply active:text-white active:bg-red-orange;
46
+ @apply focus:text-white focus:bg-cool-black focus:outline-gui-focus;
47
+ @apply disabled:text-mid-grey disabled:bg-gui-unavailable disabled:cursor-not-allowed;
48
+ @apply transition-colors;
49
+ @apply inline-flex items-center justify-center;
50
+ }
51
+
52
+ .ui-btn-secondary {
53
+ @apply text-cool-black bg-white text-btn2 font-sans font-bold inline-block border-btn border-cool-black rounded p-btn;
54
+ @apply hover:text-cool-black hover:border-active-orange hover:bg-white;
55
+ @apply active:border-red-orange active:bg-white;
56
+ @apply focus:border-cool-black focus:bg-white focus:outline-gui-focus;
57
+ @apply disabled:text-gui-unavailable disabled:border-gui-unavailable disabled:bg-white disabled:cursor-not-allowed;
58
+ @apply transition-colors;
59
+ @apply inline-flex items-center justify-center;
60
+ }
61
+
62
+ .ui-btn-secondary-invert {
63
+ @apply text-white bg-cool-black text-btn2 font-sans font-bold inline-block border-btn border-mid-grey rounded p-btn;
64
+ @apply hover:text-white hover:border-active-orange;
65
+ @apply active:border-red-orange;
66
+ @apply focus:outline-gui-focus;
67
+ @apply disabled:text-gui-unavailable disabled:border-gui-unavailable disabled:cursor-not-allowed;
68
+ @apply transition-colors;
69
+ @apply inline-flex items-center justify-center;
70
+ }
71
+
72
+ .ui-btn-icon {
73
+ @apply w-24 h-24 mr-16;
74
+ }
75
+
76
+ .ui-btn-icon-small {
77
+ @apply w-20 h-20 mr-12;
78
+ }
79
+
80
+ .ui-btn-icon-xsmall {
81
+ @apply w-16 h-16 mr-8;
82
+ }
83
+
84
+ .ui-chip {
85
+ @apply text-btn3 p-chip rounded text-cool-black;
86
+ @apply hover:bg-mid-grey;
87
+ @apply active:bg-red-orange active:text-white;
88
+ @apply focus:bg-red-orange focus:text-white focus:outline-none;
89
+ @apply disabled:text-mid-grey disabled:bg-gui-unavailable disabled:cursor-not-allowed;
90
+ @apply transition-colors;
91
+ }
92
+
93
+ .ui-chip[data-selected] {
94
+ @apply bg-active-orange text-white;
95
+ }
96
+
97
+ .ui-chip[data-selected]:hover {
98
+ @apply bg-mid-grey text-cool-black;
99
+ }
100
+
101
+ .ui-chip[data-selected]:focus {
102
+ @apply bg-red-orange text-white;
103
+ }
104
+
105
+ .ui-chip-alt {
106
+ @apply text-btn3 p-chip rounded text-white;
107
+ @apply hover:bg-gui-hover;
108
+ @apply active:bg-gui-active active:text-white;
109
+ @apply focus:bg-gui-active focus:text-white focus:outline-none;
110
+ @apply disabled:text-mid-grey disabled:bg-gui-unavailable disabled:cursor-not-allowed;
111
+ @apply transition-colors;
112
+ }
113
+
114
+ .ui-chip-alt[data-selected] {
115
+ @apply bg-dark-grey text-white;
116
+ }
117
+ .ui-chip-alt[data-selected]:hover {
118
+ @apply bg-gui-hover text-white;
119
+ }
120
+
121
+ .ui-chip-alt[data-selected]:focus {
122
+ @apply bg-gui-active text-white;
123
+ }
122
124
  }