@ably/ui 13.3.0 → 14.0.0-dev.58ef698
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +25 -152
- package/core/.DS_Store +0 -0
- package/core/Accordion/component.js +1 -0
- package/core/Code/component.css +1 -72
- package/core/Code/component.js +1 -1
- package/core/ConnectStateWrapper/component.js +1 -1
- package/core/ContactFooter/component.css +7 -10
- package/core/ContactFooter/component.js +1 -1
- package/core/CookieMessage/component.css +10 -13
- package/core/CookieMessage/component.js +1 -1
- package/core/CustomerLogos/component.js +1 -1
- package/core/DropdownMenu/component.js +1 -1
- package/core/FeaturedLink/component.js +1 -1
- package/core/Flash/component.css +19 -22
- package/core/Flash/component.js +1 -1
- package/core/Footer/component.css +22 -25
- package/core/Footer/component.js +1 -1
- package/core/Icon/component.js +1 -1
- package/core/Loader/component.js +1 -1
- package/core/Logo/component.js +1 -1
- package/core/Meganav/.DS_Store +0 -0
- package/core/Meganav/component.css +103 -106
- package/core/Meganav/component.js +1 -1
- package/core/MeganavBlogPostsList/component.js +1 -2
- package/core/MeganavContentCompany/component.js +1 -1
- package/core/MeganavContentDevelopers/component.js +1 -1
- package/core/MeganavContentProducts/component.js +1 -1
- package/core/MeganavContentUseCases/component.js +1 -1
- package/core/MeganavControl/component.js +1 -1
- package/core/MeganavControlMobileDropdown/component.js +1 -1
- package/core/MeganavControlMobilePanelClose/component.js +1 -1
- package/core/MeganavControlMobilePanelOpen/component.js +1 -1
- package/core/MeganavItemsDesktop/component.js +1 -1
- package/core/MeganavItemsMobile/component.js +1 -1
- package/core/MeganavItemsSignedIn/component.js +1 -1
- package/core/MeganavSearch/component.js +1 -1
- package/core/MeganavSearchAutocomplete/component.js +1 -1
- package/core/MeganavSearchPanel/component.js +1 -1
- package/core/MeganavSearchSuggestions/component.js +1 -1
- package/core/Notice/component.css +4 -7
- package/core/Notice/component.js +1 -1
- package/core/SignOutLink/component.js +1 -1
- package/core/Slider/component.css +4 -7
- package/core/Slider/component.js +1 -1
- package/core/Table/Table.js +1 -0
- package/core/Table/TableCell.js +1 -0
- package/core/Table/TableRow.js +1 -0
- package/core/Table/index.js +1 -0
- package/core/Table/stories/data.js +1 -0
- package/core/Tooltip/component.js +1 -0
- package/core/css.js +1 -0
- package/core/dom-query.js +1 -0
- package/core/hubspot-chat-toggle.js +1 -0
- package/core/icons/discord.svg +10 -0
- package/core/icons/facebook.svg +4 -0
- package/core/icons/github.svg +3 -0
- package/core/icons/glassdoor.svg +3 -0
- package/core/icons/google.svg +3 -0
- package/core/icons/icon-display-48hrs.svg +3 -0
- package/core/icons/icon-display-about-ably-col.svg +4 -0
- package/core/icons/icon-display-api-keys.svg +3 -0
- package/core/icons/icon-display-api.svg +3 -0
- package/core/icons/icon-display-asset-tracking-col.svg +18 -0
- package/core/icons/icon-display-browser.svg +10 -0
- package/core/icons/icon-display-calendar.svg +3 -0
- package/core/icons/icon-display-call-mobile.svg +3 -0
- package/core/icons/icon-display-careers-col.svg +9 -0
- package/core/icons/icon-display-case-studies-col.svg +5 -0
- package/core/icons/icon-display-chat-col.svg +4 -0
- package/core/icons/icon-display-chat-stack-col.svg +4 -0
- package/core/icons/icon-display-chat-stack.svg +4 -0
- package/core/icons/icon-display-cloud-servers.svg +3 -0
- package/core/icons/icon-display-compare-tech-col.svg +9 -0
- package/core/icons/icon-display-customers-col.svg +15 -0
- package/core/icons/icon-display-data-broadcast-col.svg +26 -0
- package/core/icons/icon-display-data-synchronization-col.svg +14 -0
- package/core/icons/icon-display-docs-col.svg +7 -0
- package/core/icons/icon-display-documentation.svg +3 -0
- package/core/icons/icon-display-events-col.svg +13 -0
- package/core/icons/icon-display-examples-col.svg +11 -0
- package/core/icons/icon-display-gdpr.svg +3 -0
- package/core/icons/icon-display-general-comms.svg +3 -0
- package/core/icons/icon-display-hipaa.svg +10 -0
- package/core/icons/icon-display-integrations-col.svg +8 -0
- package/core/icons/icon-display-it-support-access.svg +3 -0
- package/core/icons/icon-display-it-support-helpdesk.svg +3 -0
- package/core/icons/icon-display-kafka-at-the-edge-col.svg +8 -0
- package/core/icons/icon-display-laptop.svg +10 -0
- package/core/icons/icon-display-lightbulb-col.svg +10 -0
- package/core/icons/icon-display-live-chat.svg +3 -0
- package/core/icons/icon-display-map-pin.svg +3 -0
- package/core/icons/icon-display-message.svg +3 -0
- package/core/icons/icon-display-padlock-closed.svg +3 -0
- package/core/icons/icon-display-platform.svg +22 -0
- package/core/icons/icon-display-play.svg +3 -0
- package/core/icons/icon-display-privacy-shield-framework.svg +7 -0
- package/core/icons/icon-display-push-notifications-col.svg +6 -0
- package/core/icons/icon-display-quickstart-guides-col.svg +8 -0
- package/core/icons/icon-display-resources-col.svg +21 -0
- package/core/icons/icon-display-sdks-col.svg +11 -0
- package/core/icons/icon-display-servers.svg +3 -0
- package/core/icons/icon-display-shopping-cart.svg +10 -0
- package/core/icons/icon-display-sla.svg +3 -0
- package/core/icons/icon-display-soc2-type2.svg +3 -0
- package/core/icons/icon-display-tech-account-comms.svg +3 -0
- package/core/icons/icon-display-tutorials-demos-col.svg +25 -0
- package/core/icons/icon-display-virtual-events-col.svg +12 -0
- package/core/icons/icon-display-virtual-events.svg +12 -0
- package/core/icons/icon-gui-ably-badge.svg +3 -0
- package/core/icons/icon-gui-arrow-bidirectional-horizontal.svg +3 -0
- package/core/icons/icon-gui-arrow-bidirectional-vertical.svg +3 -0
- package/core/icons/icon-gui-arrow-down.svg +3 -0
- package/core/icons/icon-gui-arrow-left.svg +3 -0
- package/core/icons/icon-gui-arrow-right.svg +3 -0
- package/core/icons/icon-gui-arrow-up.svg +3 -0
- package/core/icons/icon-gui-burger-menu.svg +5 -0
- package/core/icons/icon-gui-check-circled-fill-black.svg +4 -0
- package/core/icons/icon-gui-check-circled-fill.svg +4 -0
- package/core/icons/icon-gui-check-circled.svg +3 -0
- package/core/icons/icon-gui-checklist-checked.svg +3 -0
- package/core/icons/icon-gui-clock.svg +3 -0
- package/core/icons/icon-gui-close.svg +3 -0
- package/core/icons/icon-gui-copy.svg +10 -0
- package/core/icons/icon-gui-cross-circled-fill.svg +4 -0
- package/core/icons/icon-gui-cross-circled.svg +3 -0
- package/core/icons/icon-gui-dash-circled.svg +3 -0
- package/core/icons/icon-gui-disclosure-arrow.svg +3 -0
- package/core/icons/icon-gui-document-generic.svg +3 -0
- package/core/icons/icon-gui-enlarge.svg +3 -0
- package/core/icons/icon-gui-external-link.svg +3 -0
- package/core/icons/icon-gui-filter-flow-step-1.svg +5 -0
- package/core/icons/icon-gui-filter-flow-step-2.svg +5 -0
- package/core/icons/icon-gui-filter-flow-step-3.svg +5 -0
- package/core/icons/icon-gui-history.svg +3 -0
- package/core/icons/icon-gui-info.svg +3 -0
- package/core/icons/icon-gui-link-arrow.svg +3 -0
- package/core/icons/icon-gui-link.svg +4 -0
- package/core/icons/icon-gui-live-chat.svg +3 -0
- package/core/icons/icon-gui-minus.svg +3 -0
- package/core/icons/icon-gui-plus.svg +3 -0
- package/core/icons/icon-gui-quote-marks-solid.svg +3 -0
- package/core/icons/icon-gui-refresh.svg +10 -0
- package/core/icons/icon-gui-resources.svg +3 -0
- package/core/icons/icon-gui-search.svg +3 -0
- package/core/icons/icon-gui-tick.svg +3 -0
- package/core/icons/icon-gui-warning.svg +5 -0
- package/core/icons/icon-live-updates-results-metrics-col.svg +26 -0
- package/core/icons/icon-multi-user-spaces-col.svg +13 -0
- package/core/icons/icon-social-x.svg +3 -0
- package/core/icons/icon-tech-apachekafka.svg +3 -0
- package/core/icons/linkedin.svg +3 -0
- package/core/icons/quote.svg +3 -0
- package/core/icons/stackoverflow.svg +3 -0
- package/core/icons/twitter.svg +3 -0
- package/core/icons/youtube.svg +11 -0
- package/core/icons.js +1 -0
- package/core/load-sprites.js +1 -0
- package/core/react-renderer.js +1 -0
- package/core/remote-blogs-posts.js +1 -0
- package/core/remote-data-store.js +1 -0
- package/core/remote-data-util.js +1 -0
- package/core/remote-session-data.js +1 -0
- package/core/scripts.js +1 -2
- package/core/sprites.svg +1 -525
- package/core/styles/buttons.css +122 -0
- package/core/styles/forms.css +62 -0
- package/core/styles/layout.css +19 -0
- package/core/styles/properties.css +276 -0
- package/core/styles/text.css +166 -0
- package/core/styles.base.css +1 -0
- package/core/styles.components.css +33 -0
- package/core/styles.css +2 -699
- package/core/url-base.js +1 -0
- package/core/utils/syntax-highlighter-registry.js +1 -0
- package/core/utils/syntax-highlighter.css +67 -0
- package/core/utils/syntax-highlighter.js +1 -0
- package/package.json +39 -34
- package/reset/scripts.js +1 -1
- package/reset/styles/normalize.css +353 -0
- package/reset/styles/reset.css +129 -0
- package/reset/styles.css +2 -477
- package/src/.DS_Store +0 -0
- package/src/core/.DS_Store +0 -0
- package/src/core/Accordion/Accordion.stories.tsx +39 -0
- package/src/core/Accordion/component.tsx +147 -0
- package/src/core/Code/Code.stories.tsx +71 -0
- package/src/core/Code/component.tsx +45 -0
- package/src/core/ConnectStateWrapper/{component.jsx → component.tsx} +7 -3
- package/src/core/ContactFooter/ContactFooter.stories.tsx +11 -0
- package/src/core/ContactFooter/component.css +7 -9
- package/src/core/ContactFooter/component.tsx +92 -0
- package/src/core/CookieMessage/CookieMessage.stories.tsx +12 -0
- package/src/core/CookieMessage/component.css +10 -12
- package/src/core/CookieMessage/{component.jsx → component.tsx} +15 -10
- package/src/core/CustomerLogos/CustomerLogos.stories.tsx +43 -0
- package/src/core/CustomerLogos/component.tsx +35 -0
- package/src/core/DropdownMenu/DropdownMenu.stories.tsx +48 -0
- package/src/core/DropdownMenu/{component.jsx → component.tsx} +64 -36
- package/src/core/FeaturedLink/FeaturedLink.stories.tsx +43 -0
- package/src/core/FeaturedLink/{component.jsx → component.tsx} +26 -18
- package/src/core/Flash/Flash.stories.tsx +37 -0
- package/src/core/Flash/component.css +19 -21
- package/src/core/Flash/{component.jsx → component.tsx} +78 -39
- package/src/core/Footer/Footer.stories.tsx +26 -0
- package/src/core/Footer/component.css +22 -24
- package/src/core/Footer/{component.jsx → component.tsx} +237 -70
- package/src/core/Icon/Icon.stories.tsx +150 -0
- package/src/core/Icon/component.tsx +26 -0
- package/src/core/Loader/Loader.stories.tsx +21 -0
- package/src/core/Loader/{component.jsx → component.tsx} +11 -8
- package/src/core/Logo/Logo.stories.tsx +12 -0
- package/src/core/Logo/component.tsx +29 -0
- package/src/core/Meganav/.DS_Store +0 -0
- package/src/core/Meganav/Meganav.stories.tsx +86 -0
- package/src/core/Meganav/component.css +103 -105
- package/src/core/Meganav/component.js +6 -7
- package/src/core/Meganav/component.tsx +228 -0
- package/src/core/MeganavBlogPostsList/{component.jsx → component.tsx} +15 -14
- package/src/core/MeganavContentCompany/{component.jsx → component.tsx} +82 -33
- package/src/core/MeganavContentDevelopers/{component.jsx → component.tsx} +98 -34
- package/src/core/MeganavContentProducts/component.tsx +165 -0
- package/src/core/MeganavContentUseCases/component.tsx +244 -0
- package/src/core/MeganavControl/{component.jsx → component.tsx} +18 -12
- package/src/core/MeganavControlMobileDropdown/{component.jsx → component.tsx} +3 -7
- package/src/core/MeganavControlMobilePanelClose/{component.jsx → component.tsx} +16 -9
- package/src/core/MeganavControlMobilePanelOpen/component.tsx +32 -0
- package/src/core/MeganavItemsDesktop/component.tsx +68 -0
- package/src/core/MeganavItemsMobile/component.tsx +197 -0
- package/src/core/MeganavItemsSignedIn/{component.jsx → component.tsx} +59 -23
- package/src/core/MeganavSearch/component.tsx +36 -0
- package/src/core/MeganavSearchAutocomplete/component.tsx +12 -0
- package/src/core/MeganavSearchPanel/component.tsx +52 -0
- package/src/core/MeganavSearchSuggestions/component.tsx +62 -0
- package/src/core/Notice/component.css +4 -6
- package/src/core/Notice/component.js +1 -1
- package/src/core/Notice/component.tsx +104 -0
- package/src/core/SignOutLink/component.tsx +51 -0
- package/src/core/Slider/Slider.stories.tsx +45 -0
- package/src/core/Slider/component.css +4 -6
- package/src/core/Slider/component.tsx +112 -0
- package/src/core/Table/Table.tsx +30 -0
- package/src/core/Table/TableCell.tsx +84 -0
- package/src/core/Table/TableRow.tsx +25 -0
- package/src/core/Table/index.ts +24 -0
- package/src/core/Table/stories/Table.stories.tsx +12 -0
- package/src/core/Table/stories/data.tsx +113 -0
- package/src/core/Tooltip/Tooltip.stories.tsx +27 -0
- package/src/core/Tooltip/component.tsx +60 -0
- package/src/core/icons.js +6 -0
- package/src/core/{react-renderer.js → react-renderer.tsx} +9 -7
- package/src/core/styles/buttons.css +121 -123
- package/src/core/styles/forms.css +49 -51
- package/src/core/styles/layout.css +14 -16
- package/src/core/styles/properties.css +250 -259
- package/src/core/styles/text.css +165 -167
- package/src/core/styles.components.css +22 -24
- package/src/core/utils/syntax-highlighter.css +55 -59
- package/src/pages/Buttons.mdx +121 -0
- package/src/pages/Chips.mdx +136 -0
- package/src/pages/Colour.mdx +23 -0
- package/src/pages/Forms.mdx +173 -0
- package/src/pages/Layout.mdx +58 -0
- package/src/pages/Typography.mdx +206 -0
- package/src/pages/utils.ts +70 -0
- package/tailwind.config.js +1 -7
- package/tailwind.extend.js +1 -1
- package/core/.gitignore +0 -1
- package/core/Code.jsx +0 -684
- package/core/CompanyAutocomplete/component.css +0 -46
- package/core/CompanyAutocomplete/component.js +0 -2
- package/core/CompanyAutocomplete/component.js.LICENSE.txt +0 -1
- package/core/ConnectStateWrapper.jsx +0 -222
- package/core/ContactFooter.jsx +0 -342
- package/core/CookieMessage.jsx +0 -204
- package/core/CustomerLogos.jsx +0 -144
- package/core/DropdownMenu.jsx +0 -313
- package/core/FeatureFooter/component.css +0 -13
- package/core/FeatureFooter/component.js +0 -1
- package/core/FeaturedLink.jsx +0 -241
- package/core/Flash.jsx +0 -622
- package/core/Footer.jsx +0 -587
- package/core/Icon.jsx +0 -152
- package/core/Loader.jsx +0 -154
- package/core/Logo.jsx +0 -147
- package/core/Meganav.jsx +0 -4151
- package/core/MeganavBlogPostsList/component.js.LICENSE.txt +0 -1
- package/core/MeganavBlogPostsList.jsx +0 -296
- package/core/MeganavContentCompany.jsx +0 -1058
- package/core/MeganavContentDevelopers.jsx +0 -334
- package/core/MeganavContentProducts.jsx +0 -373
- package/core/MeganavContentUseCases.jsx +0 -341
- package/core/MeganavControl.jsx +0 -199
- package/core/MeganavControlMobileDropdown.jsx +0 -197
- package/core/MeganavControlMobilePanelClose.jsx +0 -198
- package/core/MeganavControlMobilePanelOpen.jsx +0 -193
- package/core/MeganavItemsDesktop.jsx +0 -279
- package/core/MeganavItemsMobile.jsx +0 -689
- package/core/MeganavItemsSignedIn.jsx +0 -643
- package/core/MeganavSearch.jsx +0 -434
- package/core/MeganavSearchAutocomplete.jsx +0 -117
- package/core/MeganavSearchPanel.jsx +0 -386
- package/core/MeganavSearchSuggestions.jsx +0 -299
- package/core/Notice.jsx +0 -914
- package/core/Showcase/component.css +0 -31
- package/core/Showcase/component.js +0 -1
- package/core/Showcase.jsx +0 -17
- package/core/SignOutLink.jsx +0 -157
- package/core/Slider.jsx +0 -400
- package/core/Uptime/component.css +0 -128
- package/core/Uptime/component.js +0 -1
- package/core/Uptime.jsx +0 -895
- package/core/scripts.js.LICENSE.txt +0 -1
- package/preview/tmp/.keep +0 -0
- package/preview/tmp/pids/.keep +0 -0
- package/reset/.gitignore +0 -1
- package/src/core/Code/component.html.erb +0 -3
- package/src/core/Code/component.jsx +0 -31
- package/src/core/Code/component.rb +0 -12
- package/src/core/CompanyAutocomplete/component.css +0 -45
- package/src/core/CompanyAutocomplete/component.js +0 -204
- package/src/core/ContactFooter/component.html.erb +0 -32
- package/src/core/ContactFooter/component.jsx +0 -66
- package/src/core/ContactFooter/component.rb +0 -13
- package/src/core/CustomerLogos/component.html.erb +0 -9
- package/src/core/CustomerLogos/component.jsx +0 -28
- package/src/core/CustomerLogos/component.rb +0 -14
- package/src/core/FeatureFooter/component.css +0 -12
- package/src/core/FeatureFooter/component.html.erb +0 -54
- package/src/core/FeatureFooter/component.js +0 -7
- package/src/core/FeatureFooter/component.rb +0 -30
- package/src/core/FeaturedLink/component.html.erb +0 -15
- package/src/core/FeaturedLink/component.rb +0 -21
- package/src/core/Footer/component.html.erb +0 -256
- package/src/core/Footer/component.rb +0 -14
- package/src/core/Icon/component.html.erb +0 -3
- package/src/core/Icon/component.jsx +0 -19
- package/src/core/Icon/component.rb +0 -25
- package/src/core/Loader/component.html.erb +0 -18
- package/src/core/Loader/component.rb +0 -19
- package/src/core/Logo/component.html.erb +0 -3
- package/src/core/Logo/component.jsx +0 -20
- package/src/core/Logo/component.rb +0 -31
- package/src/core/Meganav/component.html.erb +0 -31
- package/src/core/Meganav/component.jsx +0 -123
- package/src/core/Meganav/component.rb +0 -60
- package/src/core/MeganavBlogPostsList/component.html.erb +0 -5
- package/src/core/MeganavBlogPostsList/component.rb +0 -13
- package/src/core/MeganavContentCompany/component.html.erb +0 -90
- package/src/core/MeganavContentCompany/component.rb +0 -14
- package/src/core/MeganavContentDevelopers/component.html.erb +0 -129
- package/src/core/MeganavContentDevelopers/component.rb +0 -13
- package/src/core/MeganavContentProducts/component.html.erb +0 -83
- package/src/core/MeganavContentProducts/component.jsx +0 -105
- package/src/core/MeganavContentProducts/component.rb +0 -14
- package/src/core/MeganavContentUseCases/component.html.erb +0 -135
- package/src/core/MeganavContentUseCases/component.jsx +0 -147
- package/src/core/MeganavContentUseCases/component.rb +0 -13
- package/src/core/MeganavControl/component.html.erb +0 -6
- package/src/core/MeganavControl/component.rb +0 -20
- package/src/core/MeganavControlMobileDropdown/component.html.erb +0 -7
- package/src/core/MeganavControlMobileDropdown/component.rb +0 -11
- package/src/core/MeganavControlMobilePanelClose/component.html.erb +0 -12
- package/src/core/MeganavControlMobilePanelClose/component.rb +0 -12
- package/src/core/MeganavControlMobilePanelOpen/component.html.erb +0 -7
- package/src/core/MeganavControlMobilePanelOpen/component.jsx +0 -25
- package/src/core/MeganavControlMobilePanelOpen/component.rb +0 -9
- package/src/core/MeganavItemsDesktop/component.html.erb +0 -17
- package/src/core/MeganavItemsDesktop/component.jsx +0 -49
- package/src/core/MeganavItemsDesktop/component.rb +0 -23
- package/src/core/MeganavItemsMobile/component.html.erb +0 -75
- package/src/core/MeganavItemsMobile/component.jsx +0 -137
- package/src/core/MeganavItemsMobile/component.rb +0 -21
- package/src/core/MeganavItemsSignedIn/component.html.erb +0 -53
- package/src/core/MeganavItemsSignedIn/component.rb +0 -33
- package/src/core/MeganavSearch/component.html.erb +0 -15
- package/src/core/MeganavSearch/component.jsx +0 -33
- package/src/core/MeganavSearch/component.rb +0 -13
- package/src/core/MeganavSearchAutocomplete/component.html.erb +0 -6
- package/src/core/MeganavSearchAutocomplete/component.jsx +0 -14
- package/src/core/MeganavSearchAutocomplete/component.rb +0 -6
- package/src/core/MeganavSearchPanel/component.html.erb +0 -22
- package/src/core/MeganavSearchPanel/component.jsx +0 -39
- package/src/core/MeganavSearchPanel/component.rb +0 -13
- package/src/core/MeganavSearchSuggestions/component.html.erb +0 -22
- package/src/core/MeganavSearchSuggestions/component.jsx +0 -49
- package/src/core/MeganavSearchSuggestions/component.rb +0 -18
- package/src/core/Notice/component.html.erb +0 -16
- package/src/core/Notice/component.jsx +0 -71
- package/src/core/Notice/component.rb +0 -29
- package/src/core/Showcase/component.css +0 -30
- package/src/core/Showcase/component.html.erb +0 -76
- package/src/core/Showcase/component.js +0 -180
- package/src/core/Showcase/component.jsx +0 -0
- package/src/core/Showcase/component.rb +0 -190
- package/src/core/SignOutLink/component.html.erb +0 -1
- package/src/core/SignOutLink/component.jsx +0 -32
- package/src/core/SignOutLink/component.rb +0 -17
- package/src/core/Slider/component.html.erb +0 -28
- package/src/core/Slider/component.jsx +0 -86
- package/src/core/Slider/component.rb +0 -38
- package/src/core/Uptime/component.css +0 -127
- package/src/core/Uptime/component.html.erb +0 -0
- package/src/core/Uptime/component.js +0 -1
- package/src/core/Uptime/component.jsx +0 -183
- package/src/core/Uptime/component.rb +0 -7
- package/src/core/core.rb +0 -81
- /package/{preview/log/.keep → src/core/Accordion/component.js} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */
|
package/preview/tmp/.keep
DELETED
|
File without changes
|
package/preview/tmp/pids/.keep
DELETED
|
File without changes
|
package/reset/.gitignore
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
*
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import T from "prop-types";
|
|
3
|
-
|
|
4
|
-
import "../utils/syntax-highlighter.css";
|
|
5
|
-
import { highlightSnippet, registerDefaultLanguages } from "../utils/syntax-highlighter";
|
|
6
|
-
import languagesRegistry from "../utils/syntax-highlighter-registry";
|
|
7
|
-
|
|
8
|
-
registerDefaultLanguages(languagesRegistry);
|
|
9
|
-
|
|
10
|
-
const Code = ({ language, snippet, textSize = "ui-text-code", padding = "p-32", additionalCSS = "" }) => {
|
|
11
|
-
const HTMLraw = highlightSnippet(language, `${snippet}`.trim());
|
|
12
|
-
const className = `language-${language} ${textSize}`;
|
|
13
|
-
|
|
14
|
-
return (
|
|
15
|
-
<div className={`hljs overflow-auto ${padding} ${additionalCSS}`} data-id="code">
|
|
16
|
-
<pre lang={language}>
|
|
17
|
-
<code className={className} dangerouslySetInnerHTML={{ __html: HTMLraw }} />
|
|
18
|
-
</pre>
|
|
19
|
-
</div>
|
|
20
|
-
);
|
|
21
|
-
};
|
|
22
|
-
|
|
23
|
-
Code.propTypes = {
|
|
24
|
-
language: T.string,
|
|
25
|
-
snippet: T.string,
|
|
26
|
-
textSize: T.string,
|
|
27
|
-
padding: T.string,
|
|
28
|
-
additionalCSS: T.string,
|
|
29
|
-
};
|
|
30
|
-
|
|
31
|
-
export default Code;
|
|
@@ -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,45 +0,0 @@
|
|
|
1
|
-
@layer components {
|
|
2
|
-
.ui-company-autocomplete-container {
|
|
3
|
-
@apply shadow-container absolute bg-white w-full z-10 font-sans;
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
.ui-company-autocomplete-list {
|
|
7
|
-
@apply border border-mid-grey border-t-0;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
.ui-company-autocomplete-listitem {
|
|
11
|
-
@apply border-b border-mid-grey h-48;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
.ui-company-autocomplete-btn {
|
|
15
|
-
@apply h-full w-full flex items-center py-4 px-12;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
.ui-company-autocomplete-btn:focus {
|
|
19
|
-
@apply focus:text-gui-focus;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
.ui-company-autocomplete-listitem:last-child {
|
|
23
|
-
@apply border-b-0;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
.ui-company-autocomplete-listitem:hover {
|
|
27
|
-
@apply bg-light-grey cursor-pointer;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
.ui-company-autocomplete-listitem:hover .ui-company-autocomplete-name {
|
|
31
|
-
@apply text-gui-hover;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
.ui-company-autocomplete-logo {
|
|
35
|
-
@apply w-32;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
.ui-company-autocomplete-name {
|
|
39
|
-
@apply font-sans font-light text-cool-black ml-8 text-p3 text-left;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
.ui-company-autocomplete-domain {
|
|
43
|
-
@apply font-sans font-light text-dark-grey ml-auto text-p3;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
@@ -1,204 +0,0 @@
|
|
|
1
|
-
import "./component.css";
|
|
2
|
-
|
|
3
|
-
import throttle from "lodash.throttle";
|
|
4
|
-
|
|
5
|
-
const COMPANY_AUTOCOMPLETE_DROPDOWN = "[data-id=company-autocomplete-dropdown]";
|
|
6
|
-
|
|
7
|
-
const getContainer = (input) =>
|
|
8
|
-
input.parentNode.querySelector(COMPANY_AUTOCOMPLETE_DROPDOWN);
|
|
9
|
-
const getItems = (container) =>
|
|
10
|
-
container ? container.querySelectorAll("li > button") : [];
|
|
11
|
-
const getFocusedItemIndex = (items) =>
|
|
12
|
-
Array.from(items).indexOf(document.activeElement);
|
|
13
|
-
|
|
14
|
-
const clearList = (input) => {
|
|
15
|
-
const container = getContainer(input);
|
|
16
|
-
|
|
17
|
-
if (container) {
|
|
18
|
-
container.classList.add("hidden");
|
|
19
|
-
container.querySelector("ol").innerHTML = "";
|
|
20
|
-
}
|
|
21
|
-
};
|
|
22
|
-
|
|
23
|
-
const renderItems = (data) =>
|
|
24
|
-
data.map((element) => {
|
|
25
|
-
const listItem = document.createElement("li");
|
|
26
|
-
listItem.classList.add("ui-company-autocomplete-listitem");
|
|
27
|
-
|
|
28
|
-
const btn = document.createElement("button");
|
|
29
|
-
btn.classList.add("ui-company-autocomplete-btn");
|
|
30
|
-
btn.dataset.name = element.name;
|
|
31
|
-
|
|
32
|
-
const logo = document.createElement("img");
|
|
33
|
-
logo.alt = `${element.name} logo`;
|
|
34
|
-
logo.src = element.logo;
|
|
35
|
-
logo.classList.add("ui-company-autocomplete-logo");
|
|
36
|
-
|
|
37
|
-
const name = document.createElement("p");
|
|
38
|
-
name.textContent = element.name;
|
|
39
|
-
name.classList.add("ui-company-autocomplete-name");
|
|
40
|
-
|
|
41
|
-
const domain = document.createElement("p");
|
|
42
|
-
domain.textContent = element.domain;
|
|
43
|
-
domain.classList.add("ui-company-autocomplete-domain");
|
|
44
|
-
|
|
45
|
-
btn.append(logo);
|
|
46
|
-
btn.append(name);
|
|
47
|
-
btn.append(domain);
|
|
48
|
-
listItem.append(btn);
|
|
49
|
-
|
|
50
|
-
return listItem;
|
|
51
|
-
});
|
|
52
|
-
|
|
53
|
-
const renderContainer = (input) => {
|
|
54
|
-
let container = getContainer(input);
|
|
55
|
-
|
|
56
|
-
if (!container) {
|
|
57
|
-
input.parentNode.style.position = "relative";
|
|
58
|
-
|
|
59
|
-
container = document.createElement("div");
|
|
60
|
-
container.dataset.id = "company-autocomplete-dropdown";
|
|
61
|
-
container.classList.add("ui-company-autocomplete-container");
|
|
62
|
-
|
|
63
|
-
const list = document.createElement("ol");
|
|
64
|
-
list.classList.add("ui-company-autocomplete-list");
|
|
65
|
-
|
|
66
|
-
return { container, list };
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
return { container, list: container.querySelector("ol") };
|
|
70
|
-
};
|
|
71
|
-
|
|
72
|
-
const renderDropdown = (input, data) => {
|
|
73
|
-
const parent = input.parentNode;
|
|
74
|
-
const { container, list } = renderContainer(input);
|
|
75
|
-
const items = renderItems(data);
|
|
76
|
-
|
|
77
|
-
clearList(input);
|
|
78
|
-
|
|
79
|
-
items.forEach((item, index) => {
|
|
80
|
-
list.append(item);
|
|
81
|
-
item.addEventListener("click", (event) => {
|
|
82
|
-
input.value = data[index].name;
|
|
83
|
-
event.preventDefault();
|
|
84
|
-
});
|
|
85
|
-
});
|
|
86
|
-
|
|
87
|
-
container.append(list);
|
|
88
|
-
container.classList.remove("hidden");
|
|
89
|
-
parent.append(container);
|
|
90
|
-
};
|
|
91
|
-
|
|
92
|
-
const fetchData = async (url, query) => {
|
|
93
|
-
try {
|
|
94
|
-
if (!query) {
|
|
95
|
-
return [];
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
const res = await fetch(`${url}?query=${query}`);
|
|
99
|
-
const payload = await res.json();
|
|
100
|
-
|
|
101
|
-
return payload;
|
|
102
|
-
} catch (e) {
|
|
103
|
-
// eslint-disable-next-line no-console
|
|
104
|
-
console.error(e);
|
|
105
|
-
return [];
|
|
106
|
-
}
|
|
107
|
-
};
|
|
108
|
-
|
|
109
|
-
const handleDownArrow = (input, event) => {
|
|
110
|
-
const container = getContainer(input);
|
|
111
|
-
const items = getItems(container);
|
|
112
|
-
const focusedItemIndex = getFocusedItemIndex(items);
|
|
113
|
-
|
|
114
|
-
if (items.length === 0) {
|
|
115
|
-
return;
|
|
116
|
-
} else if (document.activeElement === input) {
|
|
117
|
-
items[0].focus();
|
|
118
|
-
} else if (focusedItemIndex >= 0 && focusedItemIndex < items.length - 1) {
|
|
119
|
-
items[focusedItemIndex + 1].focus();
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
event.preventDefault();
|
|
123
|
-
};
|
|
124
|
-
|
|
125
|
-
const handleUpArrow = (input, event) => {
|
|
126
|
-
const container = getContainer(input);
|
|
127
|
-
const items = getItems(container);
|
|
128
|
-
const focusedItemIndex = getFocusedItemIndex(items);
|
|
129
|
-
|
|
130
|
-
if (items.length === 0) {
|
|
131
|
-
return;
|
|
132
|
-
} else if (focusedItemIndex === 0) {
|
|
133
|
-
input.focus();
|
|
134
|
-
} else if (focusedItemIndex > 0) {
|
|
135
|
-
items[focusedItemIndex - 1].focus();
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
event.preventDefault();
|
|
139
|
-
};
|
|
140
|
-
|
|
141
|
-
const handleTab = (input, event) => {
|
|
142
|
-
const container = getContainer(input);
|
|
143
|
-
const items = getItems(container);
|
|
144
|
-
const focusedItemIndex = getFocusedItemIndex(items);
|
|
145
|
-
|
|
146
|
-
if (document.activeElement === input && event.shiftKey) {
|
|
147
|
-
clearList(input);
|
|
148
|
-
} else if (focusedItemIndex === items.length - 1) {
|
|
149
|
-
clearList(input);
|
|
150
|
-
}
|
|
151
|
-
};
|
|
152
|
-
|
|
153
|
-
const handleEnter = (input, event) => {
|
|
154
|
-
if (event.target.dataset.name) {
|
|
155
|
-
input.value = event.target.dataset.name;
|
|
156
|
-
clearList(input);
|
|
157
|
-
input.focus();
|
|
158
|
-
event.preventDefault();
|
|
159
|
-
}
|
|
160
|
-
};
|
|
161
|
-
|
|
162
|
-
const CompanyAutocomplete = (input, url) => {
|
|
163
|
-
if (!input || !url) return;
|
|
164
|
-
|
|
165
|
-
input.setAttribute("autocomplete", "off");
|
|
166
|
-
|
|
167
|
-
input.addEventListener(
|
|
168
|
-
"keyup",
|
|
169
|
-
throttle(
|
|
170
|
-
async (event) => {
|
|
171
|
-
if (["Enter", "Space", "Tab", "Escape"].includes(event.code)) return;
|
|
172
|
-
|
|
173
|
-
const query = event.target.value;
|
|
174
|
-
const data = await fetchData(url, query);
|
|
175
|
-
|
|
176
|
-
if (data && data.length > 0) {
|
|
177
|
-
renderDropdown(input, data);
|
|
178
|
-
}
|
|
179
|
-
},
|
|
180
|
-
100,
|
|
181
|
-
{ trailing: true }
|
|
182
|
-
)
|
|
183
|
-
);
|
|
184
|
-
|
|
185
|
-
input.parentNode.addEventListener("keydown", (event) => {
|
|
186
|
-
if (event.code === "ArrowDown") {
|
|
187
|
-
handleDownArrow(input, event);
|
|
188
|
-
} else if (event.code === "ArrowUp") {
|
|
189
|
-
handleUpArrow(input, event);
|
|
190
|
-
} else if (event.code === "Enter" || event.code === "Space") {
|
|
191
|
-
handleEnter(input, event);
|
|
192
|
-
} else if (event.code === "Tab") {
|
|
193
|
-
handleTab(input, event);
|
|
194
|
-
} else if (event.code === "Escape") {
|
|
195
|
-
clearList(input);
|
|
196
|
-
}
|
|
197
|
-
});
|
|
198
|
-
|
|
199
|
-
document.body.addEventListener("click", () => {
|
|
200
|
-
clearList(input);
|
|
201
|
-
});
|
|
202
|
-
};
|
|
203
|
-
|
|
204
|
-
export default CompanyAutocomplete;
|
|
@@ -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="ui-text-h3 mb-24">Live Chat</div>
|
|
7
|
-
<p class="ui-text-p1">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="ui-text-h3 mb-24">Call us</div>
|
|
17
|
-
<p class="ui-text-p1">
|
|
18
|
-
<span class="block"><strong class="font-bold">+1 877 434 5287</strong> (USA, toll free) </span>
|
|
19
|
-
<span class="block"><strong class="font-bold">+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="ui-text-h3 mb-24">Technical and account support</div>
|
|
27
|
-
<p class="ui-text-p1">We'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,66 +0,0 @@
|
|
|
1
|
-
import React, { useEffect } from "react";
|
|
2
|
-
import T from "prop-types";
|
|
3
|
-
|
|
4
|
-
import Icon from "../Icon/component.jsx";
|
|
5
|
-
import _absUrl from "../url-base";
|
|
6
|
-
|
|
7
|
-
import toggleChatWidget from "./component.js";
|
|
8
|
-
|
|
9
|
-
export default function ContactFooter({ urlBase }) {
|
|
10
|
-
useEffect(() => toggleChatWidget(), []);
|
|
11
|
-
const absUrl = (path) => _absUrl(path, urlBase);
|
|
12
|
-
|
|
13
|
-
return (
|
|
14
|
-
<div className="ui-contact-footer font-sans antialiased" data-id="contact-footer">
|
|
15
|
-
<div className="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">
|
|
16
|
-
<div className="ui-contact-footer-box">
|
|
17
|
-
<Icon name="icon-display-live-chat" size="3rem" additionalCSS="block mb-16" />
|
|
18
|
-
<div>
|
|
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
|
-
</div>
|
|
22
|
-
<button
|
|
23
|
-
type="button"
|
|
24
|
-
className="ui-btn-secondary self-start mt-16"
|
|
25
|
-
disabled
|
|
26
|
-
data-id="open-chat-widget"
|
|
27
|
-
data-enabled-label="Start a live chat"
|
|
28
|
-
data-disabled-label="Live chat unavailable"
|
|
29
|
-
>
|
|
30
|
-
Live chat unavailable
|
|
31
|
-
</button>
|
|
32
|
-
</div>
|
|
33
|
-
|
|
34
|
-
<div className="ui-contact-footer-box">
|
|
35
|
-
<Icon name="icon-display-call-mobile" size="3rem" additionalCSS="block mb-16" />
|
|
36
|
-
<div className="flex-grow">
|
|
37
|
-
<div className="ui-text-h3 mb-24">Call us</div>
|
|
38
|
-
<p className="ui-text-p1">
|
|
39
|
-
<span className="block">
|
|
40
|
-
<strong className="font-bold">+1 877 434 5287</strong> (USA, toll free)
|
|
41
|
-
</span>
|
|
42
|
-
<span className="block">
|
|
43
|
-
<strong className="font-bold">+44 20 3318 4689</strong> (UK)
|
|
44
|
-
</span>
|
|
45
|
-
</p>
|
|
46
|
-
</div>
|
|
47
|
-
</div>
|
|
48
|
-
|
|
49
|
-
<div className="ui-contact-footer-box">
|
|
50
|
-
<Icon name="icon-display-tech-account-comms" size="3rem" additionalCSS="block mb-16" />
|
|
51
|
-
<div>
|
|
52
|
-
<div className="ui-text-h3 mb-24">Technical and account support</div>
|
|
53
|
-
<p className="ui-text-p1">We're standing by to help with any questions or code.</p>
|
|
54
|
-
</div>
|
|
55
|
-
<a className="ui-btn-secondary self-start p-btn mt-16" href={absUrl("/support")}>
|
|
56
|
-
Get support now
|
|
57
|
-
</a>
|
|
58
|
-
</div>
|
|
59
|
-
</div>
|
|
60
|
-
</div>
|
|
61
|
-
);
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
ContactFooter.propTypes = {
|
|
65
|
-
urlBase: T.string,
|
|
66
|
-
};
|
|
@@ -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,28 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import T from "prop-types";
|
|
3
|
-
|
|
4
|
-
const CustomerLogos = ({ companies, additionalCss = "" }) => {
|
|
5
|
-
return (
|
|
6
|
-
<section className="w-full bg-white">
|
|
7
|
-
<ul className={`py-64 flex flex-row flex-wrap md:flex-nowrap content-between m-auto items-center ${additionalCss}`}>
|
|
8
|
-
{companies.map((company) => (
|
|
9
|
-
<li key={company.label} className="flex-auto text-center sm:w-1/3 w-1/2">
|
|
10
|
-
<img alt={company.label} src={company.logo} className="mx-auto" />
|
|
11
|
-
</li>
|
|
12
|
-
))}
|
|
13
|
-
</ul>
|
|
14
|
-
</section>
|
|
15
|
-
);
|
|
16
|
-
};
|
|
17
|
-
|
|
18
|
-
CustomerLogos.propTypes = {
|
|
19
|
-
companies: T.arrayOf(
|
|
20
|
-
T.shape({
|
|
21
|
-
label: T.string,
|
|
22
|
-
logo: T.string,
|
|
23
|
-
})
|
|
24
|
-
),
|
|
25
|
-
additionalCss: T.string,
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
export default CustomerLogos;
|
|
@@ -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,12 +0,0 @@
|
|
|
1
|
-
@layer components {
|
|
2
|
-
.ui-feature-footer {
|
|
3
|
-
background: var(--gradient-active-orange);
|
|
4
|
-
background-size: 100% 100%;
|
|
5
|
-
background-position: right center;
|
|
6
|
-
@apply w-full font-sans antialiased bg-gradient-active-orange;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
.ui-feature-footer-box {
|
|
10
|
-
@apply p-24 sm:p-32 xl:p-40 flex flex-col justify-between rounded-sm;
|
|
11
|
-
}
|
|
12
|
-
}
|
|
@@ -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="ui-text-h3 text-white mb-24 flex-1"><%= @title %> </div>
|
|
10
|
-
<p class="ui-text-p1 text-white"><%= @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="ui-text-p1 text-white">
|
|
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="ui-text-h3 mb-24">Try our APIs for free</div>
|
|
28
|
-
<p class="ui-text-p1 mb-16">Our free plan includes</p>
|
|
29
|
-
<ul class="relative ml-24 ui-text-p1">
|
|
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,15 +0,0 @@
|
|
|
1
|
-
<%= link_to(@url, class: "font-sans font-bold block text-gui-default hover:text-gui-hover focus:text-gui-focus focus:outline-gui-focus group ui-#{@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: "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: "align-middle ml-8 relative -top-1 -left-4 transition-all group-hover:left-0")) %>
|
|
13
|
-
<% end %>
|
|
14
|
-
|
|
15
|
-
<% end %>
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
module AblyUi
|
|
2
|
-
module Core
|
|
3
|
-
class FeaturedLink < ViewComponent::Base
|
|
4
|
-
def initialize(
|
|
5
|
-
url:,
|
|
6
|
-
text_size: 'text-p2',
|
|
7
|
-
icon_color: 'text-cool-black',
|
|
8
|
-
flush: false,
|
|
9
|
-
reverse: false,
|
|
10
|
-
additional_css: ''
|
|
11
|
-
)
|
|
12
|
-
@url = url
|
|
13
|
-
@text_size = text_size
|
|
14
|
-
@icon_color = icon_color
|
|
15
|
-
@flush = flush
|
|
16
|
-
@reverse = reverse
|
|
17
|
-
@additional_css = additional_css
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
end
|