@ably/ui 11.7.1-dev.d65c98c → 12.0.0-dev.31bc8d9

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/README.md +0 -3
  2. package/core/.DS_Store +0 -0
  3. package/core/ContactFooter.jsx +8 -8
  4. package/core/DropdownMenu.jsx +1 -1
  5. package/core/FeaturedLink/component.css +0 -6
  6. package/core/FeaturedLink/component.js +1 -1
  7. package/core/FeaturedLink.jsx +8 -4
  8. package/core/Flash/component.css +0 -4
  9. package/core/Flash.jsx +1 -1
  10. package/core/Footer.jsx +2 -2
  11. package/core/Meganav/component.css +1 -1
  12. package/core/Meganav.jsx +13 -9
  13. package/core/MeganavBlogPostsList.jsx +8 -4
  14. package/core/MeganavContentCompany.jsx +8 -4
  15. package/core/MeganavContentProducts.jsx +10 -6
  16. package/core/MeganavItemsMobile.jsx +8 -4
  17. package/core/MeganavItemsSignedIn.jsx +8 -4
  18. package/core/MeganavSearch.jsx +8 -4
  19. package/core/MeganavSearchPanel.jsx +8 -4
  20. package/core/MeganavSearchSuggestions.jsx +8 -4
  21. package/core/Notice/component.js +1 -1
  22. package/core/Notice.jsx +3 -3
  23. package/core/Showcase/component.css +2 -0
  24. package/core/Showcase/component.js +6 -1
  25. package/core/Showcase.jsx +3 -0
  26. package/core/Uptime/component.css +4 -3
  27. package/core/Uptime/component.js +6 -1
  28. package/core/Uptime.jsx +56 -26
  29. package/core/scripts.js +1 -1
  30. package/core/styles.css +26 -45
  31. package/package.json +2 -5
  32. package/src/core/.DS_Store +0 -0
  33. package/src/core/ContactFooter/component.jsx +8 -8
  34. package/src/core/DropdownMenu/component.jsx +1 -1
  35. package/src/core/FeaturedLink/component.js +0 -1
  36. package/src/core/FeaturedLink/component.jsx +27 -10
  37. package/src/core/Flash/component.css +0 -4
  38. package/src/core/Flash/component.jsx +1 -1
  39. package/src/core/Footer/component.jsx +2 -2
  40. package/src/core/Meganav/component.css +1 -1
  41. package/src/core/MeganavContentProducts/component.jsx +2 -2
  42. package/src/core/Notice/component.jsx +2 -2
  43. package/src/core/react-renderer.js +7 -4
  44. package/src/core/styles/properties.css +0 -7
  45. package/src/core/styles/text.css +25 -37
  46. package/src/core/styles.components.css +1 -1
  47. package/tailwind.config.js +18 -23
  48. package/tailwind.extend.js +1 -4
  49. package/src/core/Code/component.html.erb +0 -3
  50. package/src/core/Code/component.rb +0 -12
  51. package/src/core/ContactFooter/component.html.erb +0 -32
  52. package/src/core/ContactFooter/component.rb +0 -13
  53. package/src/core/CustomerLogos/component.html.erb +0 -9
  54. package/src/core/CustomerLogos/component.rb +0 -14
  55. package/src/core/FeatureFooter/component.html.erb +0 -54
  56. package/src/core/FeatureFooter/component.rb +0 -30
  57. package/src/core/FeaturedLink/component.css +0 -6
  58. package/src/core/FeaturedLink/component.html.erb +0 -15
  59. package/src/core/FeaturedLink/component.rb +0 -21
  60. package/src/core/Footer/component.html.erb +0 -256
  61. package/src/core/Footer/component.rb +0 -14
  62. package/src/core/Icon/component.html.erb +0 -3
  63. package/src/core/Icon/component.rb +0 -25
  64. package/src/core/Loader/component.html.erb +0 -18
  65. package/src/core/Loader/component.rb +0 -19
  66. package/src/core/Logo/component.html.erb +0 -3
  67. package/src/core/Logo/component.rb +0 -31
  68. package/src/core/Meganav/component.html.erb +0 -31
  69. package/src/core/Meganav/component.rb +0 -60
  70. package/src/core/MeganavBlogPostsList/component.html.erb +0 -5
  71. package/src/core/MeganavBlogPostsList/component.rb +0 -13
  72. package/src/core/MeganavContentCompany/component.html.erb +0 -90
  73. package/src/core/MeganavContentCompany/component.rb +0 -14
  74. package/src/core/MeganavContentDevelopers/component.html.erb +0 -129
  75. package/src/core/MeganavContentDevelopers/component.rb +0 -13
  76. package/src/core/MeganavContentProducts/component.html.erb +0 -83
  77. package/src/core/MeganavContentProducts/component.rb +0 -14
  78. package/src/core/MeganavContentUseCases/component.html.erb +0 -135
  79. package/src/core/MeganavContentUseCases/component.rb +0 -13
  80. package/src/core/MeganavControl/component.html.erb +0 -6
  81. package/src/core/MeganavControl/component.rb +0 -20
  82. package/src/core/MeganavControlMobileDropdown/component.html.erb +0 -7
  83. package/src/core/MeganavControlMobileDropdown/component.rb +0 -11
  84. package/src/core/MeganavControlMobilePanelClose/component.html.erb +0 -12
  85. package/src/core/MeganavControlMobilePanelClose/component.rb +0 -12
  86. package/src/core/MeganavControlMobilePanelOpen/component.html.erb +0 -7
  87. package/src/core/MeganavControlMobilePanelOpen/component.rb +0 -9
  88. package/src/core/MeganavItemsDesktop/component.html.erb +0 -17
  89. package/src/core/MeganavItemsDesktop/component.rb +0 -23
  90. package/src/core/MeganavItemsMobile/component.html.erb +0 -75
  91. package/src/core/MeganavItemsMobile/component.rb +0 -21
  92. package/src/core/MeganavItemsSignedIn/component.html.erb +0 -53
  93. package/src/core/MeganavItemsSignedIn/component.rb +0 -33
  94. package/src/core/MeganavSearch/component.html.erb +0 -15
  95. package/src/core/MeganavSearch/component.rb +0 -13
  96. package/src/core/MeganavSearchAutocomplete/component.html.erb +0 -6
  97. package/src/core/MeganavSearchAutocomplete/component.rb +0 -6
  98. package/src/core/MeganavSearchPanel/component.html.erb +0 -22
  99. package/src/core/MeganavSearchPanel/component.rb +0 -13
  100. package/src/core/MeganavSearchSuggestions/component.html.erb +0 -22
  101. package/src/core/MeganavSearchSuggestions/component.rb +0 -18
  102. package/src/core/Notice/component.html.erb +0 -16
  103. package/src/core/Notice/component.rb +0 -29
  104. package/src/core/Showcase/component.css +0 -30
  105. package/src/core/Showcase/component.html.erb +0 -76
  106. package/src/core/Showcase/component.js +0 -180
  107. package/src/core/Showcase/component.jsx +0 -0
  108. package/src/core/Showcase/component.rb +0 -190
  109. package/src/core/SignOutLink/component.html.erb +0 -1
  110. package/src/core/SignOutLink/component.rb +0 -17
  111. package/src/core/Slider/component.html.erb +0 -28
  112. package/src/core/Slider/component.rb +0 -38
  113. package/src/core/Uptime/component.css +0 -128
  114. package/src/core/Uptime/component.html.erb +0 -0
  115. package/src/core/Uptime/component.js +0 -1
  116. package/src/core/Uptime/component.jsx +0 -186
  117. package/src/core/Uptime/component.rb +0 -7
  118. package/src/core/core.rb +0 -81
@@ -16,8 +16,8 @@ export default function ContactFooter({ urlBase }) {
16
16
  <div className="ui-contact-footer-box">
17
17
  <Icon name="icon-display-live-chat" size="3rem" additionalCSS="block mb-16" />
18
18
  <div>
19
- <div className="text-h3 mb-24">Live Chat</div>
20
- <p className="text-p1 font-light">Reach out team of experts over chat powered by Ably.</p>
19
+ <div className="ui-text-h3 mb-24">Live Chat</div>
20
+ <p className="ui-text-p1">Reach out team of experts over chat powered by Ably.</p>
21
21
  </div>
22
22
  <button
23
23
  type="button"
@@ -34,13 +34,13 @@ export default function ContactFooter({ urlBase }) {
34
34
  <div className="ui-contact-footer-box">
35
35
  <Icon name="icon-display-call-mobile" size="3rem" additionalCSS="block mb-16" />
36
36
  <div className="flex-grow">
37
- <div className="text-h3 mb-24">Call us</div>
38
- <p className="text-p1 font-light">
37
+ <div className="ui-text-h3 mb-24">Call us</div>
38
+ <p className="ui-text-p1">
39
39
  <span className="block">
40
- <strong className="text-p1 font-medium">+1 877 434 5287</strong> (USA, toll free)
40
+ <strong className="font-bold">+1 877 434 5287</strong> (USA, toll free)
41
41
  </span>
42
42
  <span className="block">
43
- <strong className="text-p1 font-medium">+44 20 3318 4689</strong> (UK)
43
+ <strong className="font-bold">+44 20 3318 4689</strong> (UK)
44
44
  </span>
45
45
  </p>
46
46
  </div>
@@ -49,8 +49,8 @@ export default function ContactFooter({ urlBase }) {
49
49
  <div className="ui-contact-footer-box">
50
50
  <Icon name="icon-display-tech-account-comms" size="3rem" additionalCSS="block mb-16" />
51
51
  <div>
52
- <div className="text-h3 mb-24">Technical and account support</div>
53
- <p className="text-p1 font-light">We&apos;re standing by to help with any questions or code.</p>
52
+ <div className="ui-text-h3 mb-24">Technical and account support</div>
53
+ <p className="ui-text-p1">We&apos;re standing by to help with any questions or code.</p>
54
54
  </div>
55
55
  <a className="ui-btn-secondary self-start p-btn mt-16" href={absUrl("/support")}>
56
56
  Get support now
@@ -92,7 +92,7 @@ const Link = ({ url, title, subtitle, iconName, children }) => {
92
92
  {title}
93
93
  {iconName ? <Icon name={iconName} size="1rem" color="text-cool-black" additionalCSS="align-middle ml-8 relative -top-1 -left-4" /> : null}
94
94
  </p>
95
- {subtitle ? <p className="text-p3 mb-16 text-dark-grey">{subtitle}</p> : null}
95
+ {subtitle ? <p className="ui-text-p3 mb-16">{subtitle}</p> : null}
96
96
  {children}
97
97
  </a>
98
98
  );
@@ -1 +0,0 @@
1
- import "./component.css";
@@ -3,20 +3,35 @@ import T from "prop-types";
3
3
 
4
4
  import Icon from "../Icon/component.jsx";
5
5
 
6
- const FeaturedLink = ({ url, textSize = "text-p2", iconColor = "text-cool-black", flush = false, reverse = false, children }) => (
6
+ const FeaturedLink = ({ url, textSize = "text-p2", iconColor = "text-cool-black", flush = false, reverse = false, additionalCSS = "", children }) => (
7
7
  <a
8
8
  href={url}
9
- className={`ui-featured-link group ${textSize} ${flush ? "" : "py-8"}`}
9
+ className={`font-sans font-bold block text-gui-default hover:text-gui-hover focus:text-gui-focus focus:outline-gui-focus group ui-${textSize} ${
10
+ flush ? "" : "py-8"
11
+ } ${additionalCSS}`}
10
12
  style={{ "--featured-link-icon-size": `var(${textSize.replace("text", "--fs")})` }}
11
13
  >
12
- {reverse ? <>
13
- <Icon name="icon-gui-link-arrow" size={`calc(var(--featured-link-icon-size) * 1.25)`} color={iconColor} additionalCSS="ui-featured-link-icon align-middle mr-8 relative -top-1 -right-4 transition-all group-hover:right-0 transform rotate-180" />
14
- {children}
15
- </> :
16
- <>
17
- {children}
18
- <Icon name="icon-gui-link-arrow" size={`calc(var(--featured-link-icon-size) * 1.25)`} color={iconColor} additionalCSS="ui-featured-link-icon align-middle ml-8 relative -top-1 -left-4 transition-all group-hover:left-0" />
19
- </>}
14
+ {reverse ? (
15
+ <>
16
+ <Icon
17
+ name="icon-gui-link-arrow"
18
+ size={`calc(var(--featured-link-icon-size) * 1.25)`}
19
+ color={iconColor}
20
+ additionalCSS="align-middle mr-8 relative -top-1 -right-4 transition-all group-hover:right-0 transform rotate-180"
21
+ />
22
+ {children}
23
+ </>
24
+ ) : (
25
+ <>
26
+ {children}
27
+ <Icon
28
+ name="icon-gui-link-arrow"
29
+ size={`calc(var(--featured-link-icon-size) * 1.25)`}
30
+ color={iconColor}
31
+ additionalCSS="align-middle ml-8 relative -top-1 -left-4 transition-all group-hover:left-0"
32
+ />
33
+ </>
34
+ )}
20
35
  </a>
21
36
  );
22
37
 
@@ -26,6 +41,8 @@ FeaturedLink.propTypes = {
26
41
  textSize: T.string,
27
42
  iconColor: T.string,
28
43
  flush: T.bool,
44
+ reverse: T.bool,
45
+ additionalCSS: T.string,
29
46
  };
30
47
 
31
48
  export default FeaturedLink;
@@ -13,10 +13,6 @@
13
13
  transform: translateY(-200%) rotateX(-90deg);
14
14
  }
15
15
 
16
- .ui-flash-text {
17
- @apply mr-16 text-p1;
18
- }
19
-
20
16
  /* dynamic content inside flash, can't add classes */
21
17
  .ui-flash-text a {
22
18
  @apply underline;
@@ -125,7 +125,7 @@ const Flash = ({ id, type, content, removeFlash }) => {
125
125
  <div className={`ui-flash-message ui-grid-px ${animateEntry ? "ui-flash-message-enter" : ""}`} style={style} ref={ref} data-id="ui-flash">
126
126
  <div className={`${FLASH_BG_COLOR[type]} p-32 flex align-center rounded shadow-container-subtle`}>
127
127
  {withIcons[type] && <Icon name={withIcons[type]} color={iconColor[type]} size="1.5rem" additionalCSS="mr-16 self-baseline" />}
128
- <p className={`ui-flash-text ${FLASH_TEXT_COLOR[type]}`} dangerouslySetInnerHTML={{ __html: safeContent }} />
128
+ <p className={`ui-text-p1 mr-16 ${FLASH_TEXT_COLOR[type]}`} dangerouslySetInnerHTML={{ __html: safeContent }} />
129
129
  <button type="button" className="p-0 ml-auto self-start focus:outline-none" onClick={closeFlash}>
130
130
  <Icon name="icon-gui-close" color={iconColor[type]} size="1.5rem" additionalCSS="transition-colors" />
131
131
  </button>
@@ -13,10 +13,10 @@ export default function Footer({ paths, urlBase }) {
13
13
  <div className="col-span-full md:col-span-2">
14
14
  <div className="flex flex-row p-menu-row-snug">
15
15
  <img className="mr-24 -mt-16" src={paths.ablyStack} alt="Ably homepage" />
16
- <h2 className="text-overline2 font-mono font-bold col-span-full uppercase tracking-widen-0.16">The Ably Platform</h2>
16
+ <h2 className="ui-text-overline2 col-span-full">The Ably Platform</h2>
17
17
  </div>
18
18
  <div className="md:col-span-4 md:w-3/4 xs:w-3/5 w-full">
19
- <p className="font-sans text-p3 py-16 font-bold p-menu-row-snug">
19
+ <p className="ui-text-p3 font-bold py-16 p-menu-row-snug">
20
20
  Easily power any realtime experience in your application via a simple API that handles everything realtime.
21
21
  </p>
22
22
  </div>
@@ -105,7 +105,7 @@
105
105
  }
106
106
 
107
107
  .ui-meganav-overline {
108
- @apply text-overline2 text-cool-black uppercase font-bold font-mono tracking-widen-0.16 p-overline;
108
+ @apply text-overline2 text-cool-black uppercase font-medium font-mono tracking-widen-0.16 p-overline;
109
109
  }
110
110
 
111
111
  .ui-meganav-hr {
@@ -12,7 +12,7 @@ const MeganavContentProducts = ({ paths, absUrl }) => (
12
12
  <img src={paths.ablyStack} alt="Ably homepage" />
13
13
  <h3 className="ui-meganav-overline ml-24">The Ably Platform</h3>
14
14
  </div>
15
- <p className="text-p2 font-bold text-cool-black mb-24 leading-normal" style={{ maxWidth: "330px" }}>
15
+ <p className="ui-text-p2 font-bold mb-24" style={{ maxWidth: "330px" }}>
16
16
  Easily power any realtime experience in your application. No complex infrastructure to manage or provision. Just a simple API that handles everything
17
17
  realtime, and lets you focus on your code.
18
18
  </p>
@@ -41,7 +41,7 @@ const MeganavContentProducts = ({ paths, absUrl }) => (
41
41
  </li>
42
42
  <li>
43
43
  <a href={absUrl("/livesync")} className="group ui-meganav-media">
44
- <p className="ui-meganav-media-heading">LiveSync (Pre release)</p>
44
+ <p className="ui-meganav-media-heading">LiveSync (Early access)</p>
45
45
  <p className="ui-meganav-media-copy">Keep clients in sync with any relational database.</p>
46
46
  </a>
47
47
  </li>
@@ -1,7 +1,7 @@
1
1
  import React, { useEffect } from "react";
2
2
  import T from "prop-types";
3
3
 
4
- const contentWrapperClasses = "font-medium w-full pr-8 text-p3 self-center";
4
+ const contentWrapperClasses = "w-full pr-8 ui-text-p3 self-center";
5
5
 
6
6
  import NoticeScripts from "./component.js";
7
7
  import Icon from "../Icon/component.jsx";
@@ -45,7 +45,7 @@ const Notice = ({ buttonLink, buttonLabel, bodyText, title, config, closeBtn, bg
45
45
 
46
46
  {closeBtn && (
47
47
  <button type="button" className="ml-auto h-20 w-20 border-none bg-none self-baseline">
48
- <Icon name="icon-gui-close" size="1.25rem" color="text-white" />
48
+ <Icon name="icon-gui-close" size="1.25rem" color="text-cool-black" />
49
49
  </button>
50
50
  )}
51
51
  </div>
@@ -1,9 +1,11 @@
1
1
  import React from "react";
2
- import ReactDOM from "react-dom";
2
+ import { createRoot } from "react-dom/client";
3
3
 
4
- const renderComponent = (Component, props, node) =>
4
+ const renderComponent = (Component, props, node) => {
5
+ const root = createRoot(node);
5
6
  // eslint-disable-next-line react/no-render-return-value
6
- ReactDOM.render(<Component {...props} />, node);
7
+ root.render(<Component {...props} />);
8
+ };
7
9
 
8
10
  export { renderComponent };
9
11
 
@@ -19,7 +21,8 @@ export default function reactRenderer(components) {
19
21
  const propsJson = node.getAttribute("data-react-props");
20
22
  const props = propsJson && JSON.parse(propsJson || {});
21
23
 
22
- ReactDOM.render(<Constructor {...props} />, node);
24
+ const root = createRoot(node);
25
+ root.render(<Constructor {...props} />);
23
26
 
24
27
  node.removeAttribute("data-react");
25
28
  node.removeAttribute("data-react-props");
@@ -134,11 +134,6 @@
134
134
  --syntax-red: #d54e53;
135
135
  --syntax-lilac: #bb87d3;
136
136
 
137
- /* uptime status colors */
138
- --uptime-color-up: #39b54a;
139
- --uptime-color-trouble: #e87623;
140
- --uptime-color-down: #e6242c;
141
-
142
137
  /* flat colors for social icons */
143
138
  --icon-color-linkedin: #1269bf;
144
139
  --icon-color-twitter: #2caae1;
@@ -279,7 +274,5 @@
279
274
 
280
275
  /* Expose component values for cross-component usage */
281
276
  --ui-meganav-height: 4rem;
282
- --ui-showcase-client-logo-min-width: 8.75rem; /* 140px at 16px base*/
283
- --ui-showcase-client-logo-max-width: 15rem; /* 240px at 16px base*/
284
277
  }
285
278
  }
@@ -95,25 +95,32 @@
95
95
  }
96
96
 
97
97
  .ui-text-code {
98
- @apply font-mono font-medium text-code;
98
+ @apply font-mono font-normal text-code;
99
99
  }
100
100
 
101
101
  .ui-text-code2 {
102
- @apply font-mono font-medium text-code2;
102
+ @apply font-mono font-normal text-code2;
103
103
  }
104
104
 
105
105
  .ui-text-code-inline {
106
- @apply font-mono font-medium text-code text-charcoal-grey bg-light-grey p-inline-code rounded-sm mx-1;
106
+ @apply font-mono font-normal text-code text-charcoal-grey bg-light-grey p-inline-code rounded-sm mx-1;
107
107
  }
108
108
 
109
109
  .ui-unordered-list {
110
- @apply text-p1 font-medium text-cool-black;
111
- @apply list-disc ml-32 my-16;
110
+ @apply text-p1 font-medium text-charcoal-grey;
111
+ @apply ml-32 my-16;
112
+ @apply list-disc;
112
113
  }
113
114
 
114
115
  .ui-ordered-list {
115
116
  @apply text-p1 font-medium text-charcoal-grey;
116
- @apply ml-32 my-16 list-decimal;
117
+ @apply ml-32 my-16;
118
+ @apply list-decimal;
119
+ }
120
+
121
+ .ui-ordered-list li,
122
+ .ui-unordered-list li {
123
+ @apply mb-8;
117
124
  }
118
125
 
119
126
  .ui-unordered-list li > *:last-of-type:not(ul):not(ol),
@@ -122,11 +129,11 @@
122
129
  }
123
130
 
124
131
  .ui-unordered-list ul {
125
- @apply ml-24 mt-16 list-circle;
132
+ @apply ml-24 my-8 list-circle;
126
133
  }
127
134
 
128
135
  .ui-ordered-list ol {
129
- @apply ml-24 mt-16 list-decimal;
136
+ @apply ml-24 my-16 list-decimal;
130
137
  }
131
138
 
132
139
  .ui-unordered-list ul ul {
@@ -137,34 +144,6 @@
137
144
  @apply my-8;
138
145
  }
139
146
 
140
- .ui-ordered-list li,
141
- .ui-unordered-list li {
142
- @apply font-medium font-sans tracking-widen-0;
143
- line-height: var(--lh-extra-relaxed);
144
- }
145
-
146
- .ui-unordered-list-with-emphasis {
147
- @apply text-p1 font-medium text-cool-black;
148
- @apply list-disc ml-32 mt-32 -mb-12;
149
- }
150
-
151
- .ui-unordered-list-with-emphasis li div {
152
- @apply relative -top-12;
153
- }
154
-
155
- .ui-unordered-list-with-emphasis li div > strong {
156
- @apply block;
157
- }
158
-
159
- .ui-unordered-list-with-emphasis ul {
160
- margin-top: calc(var(--spacing-16) + var(--spacing-8));
161
- @apply ml-24 list-circle;
162
- }
163
-
164
- .ui-unordered-list-with-emphasis ul ul {
165
- @apply list-square;
166
- }
167
-
168
147
  .ui-link {
169
148
  @apply text-gui-default;
170
149
  @apply hover:text-gui-hover active:text-gui-active disabled:text-gui-unavailable;
@@ -174,7 +153,16 @@
174
153
 
175
154
  .ui-link-neutral {
176
155
  @apply hover:text-dark-grey active:text-cool-black disabled:text-gui-unavailable;
177
- @apply focus:text-charcoal-grey focus:outline-gui-focus-neutral;
156
+ @apply focus:text-charcoal-grey;
178
157
  @apply underline;
179
158
  }
159
+
160
+ /* focus:outline-gui-focus-neutral does not get created under Tailwind 3.3.5, not sure why */
161
+ .ui-link-neutral:focus {
162
+ outline: 2px solid var(--color-neutral-000);
163
+ }
164
+
165
+ .ui-figcaption {
166
+ @apply font-mono text-p3 text-neutral-800;
167
+ }
180
168
  }
@@ -5,7 +5,7 @@
5
5
 
6
6
  @layer components {
7
7
  .ui-input {
8
- @apply text-p2 font-light bg-light-grey rounded p-input w-full leading-none appearance-none border border-mid-grey transition-input;
8
+ @apply text-p2 font-medium bg-light-grey rounded p-input w-full leading-none appearance-none border border-mid-grey transition-input;
9
9
  @apply hover:bg-white hover:shadow-input hover:border-transparent;
10
10
  @apply focus:bg-white focus:shadow-input focus:border-transparent focus:outline-gui-focus;
11
11
  @apply max-w-screen-sm;
@@ -1,19 +1,19 @@
1
1
  module.exports = {
2
- purge: {
3
- content: [
4
- "./src/**/*.html.erb",
5
- "./src/**/*.jsx",
6
- "./src/**/*.js",
7
- "./src/**/*.json",
8
- ],
9
- options: {
10
- safelist: {
11
- standard: ["w-1/2", "w-1/3", "w-1/4", "w-1/5", "w-1/6"],
12
- greedy: [/^hljs.*/, /^ui-.*/],
13
- },
14
- },
15
- },
16
- darkMode: false,
2
+ content: [
3
+ "./src/**/*.jsx",
4
+ "./src/**/*.js",
5
+ "./src/**/*.json",
6
+ "./src/**/*.css",
7
+ ],
8
+ safelist: [
9
+ "w-1/2",
10
+ "w-1/3",
11
+ "w-1/4",
12
+ "w-1/5",
13
+ "w-1/6",
14
+ { pattern: /^hljs.*/ },
15
+ { pattern: /^ui-.*/ },
16
+ ],
17
17
  theme: {
18
18
  screens: {
19
19
  // CSS custom properties can't be used in media queries
@@ -136,6 +136,7 @@ module.exports = {
136
136
  "gui-blue-hover-dark": "var(--color-gui-blue-hover-dark)",
137
137
  "gui-blue-active-dark": "var(--color-gui-blue-active-dark)",
138
138
  "gui-blue-focus": "var(--color-gui-blue-focus)",
139
+ "gui-blue-visited": "var(--color-gui-blue-focus)",
139
140
  "gui-unavailable": "var(--color-gui-unavailable)",
140
141
  "gui-success-green": "var(--color-gui-success-green)",
141
142
  "gui-error-red": "var(--color-gui-error-red)",
@@ -298,10 +299,6 @@ module.exports = {
298
299
  full: "9999px",
299
300
  DEFAULT: "0.375rem",
300
301
  },
301
- filter: {
302
- none: "none",
303
- grayscale: "grayscale(1)",
304
- },
305
302
  extend: {
306
303
  backgroundImage: {
307
304
  "gradient-active-orange": "var(--gradient-active-orange)",
@@ -313,7 +310,6 @@ module.exports = {
313
310
  },
314
311
  outline: {
315
312
  "gui-focus": "1.5px solid var(--color-gui-focus-outline)",
316
- "gui-focus-neutral": "2px solid var(--color-neutral-000)",
317
313
  },
318
314
  width: {
319
315
  "extend-8": "calc(100% + var(--spacing-8))",
@@ -353,12 +349,11 @@ module.exports = {
353
349
  backgroundImage: ["hover", "active", "focus"],
354
350
  filter: ["hover"],
355
351
  cursor: ["disabled"],
356
- inset: ['group-hover']
357
-
352
+ inset: ["group-hover"],
358
353
  },
359
354
  },
360
355
  corePlugins: {
361
356
  preflight: false,
362
357
  },
363
- plugins: [require("tailwindcss-filters")],
358
+ plugins: [],
364
359
  };
@@ -15,10 +15,7 @@ const ablyUItailwindConfig = (extend) => {
15
15
 
16
16
  const configWithPlugin = {
17
17
  ...ablyUIConfig,
18
- purge: {
19
- content: addPurgeContentPaths(),
20
- options: ablyUIConfig.purge.options,
21
- },
18
+ content: addPurgeContentPaths(),
22
19
  };
23
20
 
24
21
  return extend(configWithPlugin);
@@ -1,3 +0,0 @@
1
- <%= tag.div class: "hljs p-32 overflow-auto", data: { id: "code" } do %>
2
- <%= tag.pre lang: @language do %><%= tag.code class: "language-#{@language} #{@text_size}" do %><%= @snippet %><% end %><% end %>
3
- <% end %>
@@ -1,12 +0,0 @@
1
- module AblyUi
2
- module Core
3
- class Code < ViewComponent::Base
4
- include AblyUi::Core::Util
5
- def initialize(language:, snippet:, text_size: 'ui-text-code')
6
- @language = language
7
- @snippet = snippet.try(:strip)
8
- @text_size = text_size
9
- end
10
- end
11
- end
12
- end
@@ -1,32 +0,0 @@
1
- <div class="ui-contact-footer font-sans antialiased" data-id="contact-footer">
2
- <div class="w-full bp-lg max-w-screen-xl mx-auto py-64 grid grid-cols-1 md:grid-cols-3 ui-grid-gap ui-grid-px">
3
- <div class="ui-contact-footer-box">
4
- <%= render(AblyUi::Core::Icon.new(name: "icon-display-live-chat", size: "3rem", additional_css: "block mb-16")) %>
5
- <div>
6
- <div class="text-h3 mb-24">Live Chat</div>
7
- <p class="text-p1 font-light">Reach out team of experts over chat powered by Ably.</p>
8
- </div>
9
- <%= tag.button type: "button", class: "ui-btn-secondary self-start mt-16", data: { id: "open-chat-widget", enabled_label: "Start a live chat", disabled_label: "Live chat unavailable" }, disabled: true do %>
10
- Live chat unavailable
11
- <% end %>
12
- </div>
13
- <div class="ui-contact-footer-box">
14
- <%= render(AblyUi::Core::Icon.new(name: "icon-display-call-mobile", size: "3rem", additional_css: "block mb-16")) %>
15
- <div class="flex-grow">
16
- <div class="text-h3 mb-24">Call us</div>
17
- <p class="text-p1 font-light">
18
- <span class="block"><strong class="text-p1 font-medium">+1 877 434 5287</strong> (USA, toll free) </span>
19
- <span class="block"><strong class="text-p1 font-medium">+44 20 3318 4689</strong> (UK) </span>
20
- </p>
21
- </div>
22
- </div>
23
- <div class="ui-contact-footer-box">
24
- <%= render(AblyUi::Core::Icon.new(name: "icon-display-tech-account-comms", size: "3rem", additional_css: "block mb-16")) %>
25
- <div>
26
- <div class="text-h3 mb-24">Technical and account support</div>
27
- <p class="text-p1 font-light">We&apos;re standing by to help with any questions or code.</p>
28
- </div>
29
- <%= link_to 'Get support now', abs_url("/support"), class: "ui-btn-secondary self-start p-btn mt-16" %>
30
- </div>
31
- </div>
32
- </div>
@@ -1,13 +0,0 @@
1
- module AblyUi
2
- module Core
3
- class ContactFooter < ViewComponent::Base
4
- include AblyUi::Core::Util
5
-
6
- attr_reader :url_base
7
-
8
- def initialize(url_base: AblyUi::Core::Util::DEFAULT_URL_BASE)
9
- @url_base = url_base
10
- end
11
- end
12
- end
13
- end
@@ -1,9 +0,0 @@
1
- <section class="w-full bg-white">
2
- <%= tag.ul class: "py-64 flex flex-row flex-wrap md:flex-nowrap content-between m-auto items-center #{@additional_css}" do %>
3
- <% companies.each do |company| %>
4
- <li class="flex-auto text-center sm:w-1/3 w-1/2">
5
- <%= image_tag company[:logo], alt: "#{company[:label]} logo", class: 'mx-auto' %>
6
- </li>
7
- <% end %>
8
- <% end %>
9
- </section>
@@ -1,14 +0,0 @@
1
- require 'json'
2
-
3
- module AblyUi
4
- module Core
5
- class CustomerLogos < ViewComponent::Base
6
- attr_reader :companies
7
-
8
- def initialize(companies:, additional_css: '')
9
- @companies = companies
10
- @additional_css = additional_css
11
- end
12
- end
13
- end
14
- end
@@ -1,54 +0,0 @@
1
- <%- @image_url ||= asset_path('ably_ui/core/images/technical-support-01-800x533.jpg') %>
2
- <div class="ui-feature-footer" data-id="feature-footer">
3
- <div class="w-full bp-lg max-w-screen-xl mx-auto py-64 md:grid grid-cols-3 ui-grid-gap ui-grid-px">
4
- <div class="col-span-2 bg-cool-black text-white rounded-lg overflow-hidden sm:flex flex-row mb-24 md:mb-0">
5
- <%= tag.div class: 'ui-feature-image flex-0 bg-center bg-cover w-full h-256 sm:w-1/2 sm:h-auto', style: "background-image:url(#{@image_url})" %>
6
- <div class="p-24 sm:p-32 flex-1 h-full">
7
- <div class="flex flex-col h-full space-between">
8
- <span class="flex-1">
9
- <div class="text-h3 mb-24 flex-1"><%= @title %> </div>
10
- <p class="text-p1 font-light"><%= @subtitle %></p>
11
- <%= tag.button type: "button", class: "ui-btn-secondary-invert self-start mt-24", data: { id: "open-chat-widget", enabled_label: live_chat_label, disabled_label: live_chat_disabled_label }, disabled: true do %>
12
- <%= live_chat_disabled_label %>
13
- <% end %>
14
- </span>
15
- <span class="flex-0 mt-24 md:mt-0">
16
- <p class="text-p1 font-light">
17
- Don’t want to chat?
18
- <%= link_to 'Get in touch via our contact page', abs_url("/contact"), class: "text-white underline font-medium hover:text-gui-hover focus:text-gui-focus focus:outline-gui-focus" %>
19
- </p>
20
- </span>
21
- </div>
22
- </div>
23
- </div>
24
- <div class="bg-white rounded-lg p-24 sm:p-32 w-auto">
25
- <div class="flex flex-col h-full space-between">
26
- <span class="flex-1">
27
- <div class="text-h3 mb-24">Try our APIs for free</div>
28
- <p class="text-p1 font-medium mb-16">Our free plan includes</p>
29
- <ul class="relative ml-24 text-p1 font-light leading-8">
30
- <li>
31
- <%= render(AblyUi::Core::Icon.new(name: "icon-gui-tick", size: "1.5rem", additional_css: "align-text-bottom")) %>
32
- 6m messages per month
33
- </li>
34
- <li>
35
- <%= render(AblyUi::Core::Icon.new(name: "icon-gui-tick", size: "1.5rem", additional_css: "align-text-bottom")) %>
36
- 200 peak connections
37
- </li>
38
- <li>
39
- <%= render(AblyUi::Core::Icon.new(name: "icon-gui-tick", size: "1.5rem", additional_css: "align-text-bottom")) %>
40
- 200 peak channels
41
- </li>
42
- <li>
43
- <%= render(AblyUi::Core::Icon.new(name: "icon-gui-tick", size: "1.5rem", additional_css: "align-text-bottom")) %>
44
- Loads of features
45
- </li>
46
- </ul>
47
- </span>
48
- <span class="flex-0">
49
- <%= link_to 'Start building', abs_url("/sign-up"), class: "ui-btn-secondary self-start mt-24" %>
50
- </span>
51
- </div>
52
- </div>
53
- </div>
54
- </div>
@@ -1,30 +0,0 @@
1
- module AblyUi
2
- module Core
3
- class FeatureFooter < ViewComponent::Base
4
- include AblyUi::Core::Util
5
-
6
- attr_reader :url_base,
7
- :image_url,
8
- :title,
9
- :subtitle,
10
- :live_chat_label,
11
- :live_chat_disabled_label
12
-
13
- def initialize(
14
- url_base: AblyUi::Core::Util::DEFAULT_URL_BASE,
15
- image_url: nil,
16
- title: 'Talk to our technical team',
17
- subtitle: "If you're having technical or account issues just get in touch.",
18
- live_chat_label: 'Start a live chat',
19
- live_chat_disabled_label: 'Live chat unavailable'
20
- )
21
- @url_base = url_base
22
- @image_url = image_url
23
- @title = title
24
- @subtitle = subtitle
25
- @live_chat_label = live_chat_label
26
- @live_chat_disabled_label = live_chat_disabled_label
27
- end
28
- end
29
- end
30
- end
@@ -1,6 +0,0 @@
1
- @layer components {
2
- .ui-featured-link {
3
- @apply font-sans font-bold block;
4
- @apply text-neutral-500 hover:text-gui-hover focus:text-gui-focus focus:outline-gui-focus;
5
- }
6
- }
@@ -1,15 +0,0 @@
1
- <%= link_to(@url, class: "ui-featured-link group #{@text_size} #{@flush ? '' : 'py-8'} #{@additional_css}", style: "--featured-link-icon-size: var(#{@text_size.gsub("text", "--fs")})") do %>
2
- <% if @reverse %>
3
- <%= render(AblyUi::Core::Icon.new(name: "icon-gui-link-arrow",
4
- size: "calc(var(--featured-link-icon-size) * 1.25)",
5
- color: @icon_color,
6
- additional_css: "ui-featured-link-icon align-middle mr-8 relative -top-1 -right-4 transition-all group-hover:right-0 transform rotate-180")) %>
7
- <%= content -%>
8
- <% else %>
9
- <%= content -%><%= render(AblyUi::Core::Icon.new(name: "icon-gui-link-arrow",
10
- size: "calc(var(--featured-link-icon-size) * 1.25)",
11
- color: @icon_color,
12
- additional_css: "ui-featured-link-icon align-middle ml-8 relative -top-1 -left-4 transition-all group-hover:left-0")) %>
13
- <% end %>
14
-
15
- <% end %>