|
1 | | -import { TBMQ_DOCS_URL, TBMQ_SITE_URL, tbmqDocsUrl } from '@models/tbmq'; |
2 | 1 |
|
3 | 2 | export interface HeroButton { |
4 | 3 | id: string; |
@@ -53,7 +52,6 @@ export interface ProductData { |
53 | 52 |
|
54 | 53 | const install = (name: string) => `/src/assets/images/installation/${name}`; |
55 | 54 | const installations = (name: string) => `/src/assets/images/installations/${name}`; |
56 | | -const mqttBroker = (name: string) => `/src/assets/images/landings/mqtt-broker/${name}`; |
57 | 55 | const trendz = (name: string) => `/src/assets/images/landings/trendz/${name}`; |
58 | 56 |
|
59 | 57 | // --------------------------------------------------------------------------- |
@@ -608,174 +606,18 @@ export const products: ProductData[] = [ |
608 | 606 | }, |
609 | 607 | ], |
610 | 608 | }, |
611 | | - |
612 | | - // ── MQTT Broker ─────────────────────────────────────────────────────────── |
613 | | - { |
614 | | - id: 'mqtt-broker', |
615 | | - title: 'MQTT Broker', |
616 | | - description: |
617 | | - `<b>TBMQ</b> is a highly scalable and durable <a href="${TBMQ_SITE_URL}" target="_blank" rel="noopener noreferrer">MQTT message broker</a> built for real-time data processing across IoT ecosystems of any scale. It efficiently handles millions of concurrent client connections and processes millions of messages per second while maintaining low latency and reliable delivery. Designed for horizontal scalability, TBMQ seamlessly expands across cluster nodes to support massive deployments with millions of connected devices. <a href="${TBMQ_DOCS_URL}" target="_blank" rel="noopener noreferrer">Read more<span class="sr-only"> about TBMQ MQTT Broker</span></a>.`, |
618 | | - buttons: [ |
619 | | - { |
620 | | - id: 'TryItNow_TBMQ_Demo', |
621 | | - label: 'Live Demo', |
622 | | - href: 'https://demo.tbmq.io/signup', |
623 | | - target: '_blank', |
624 | | - }, |
625 | | - { |
626 | | - id: 'TryItNow_TBMQ_Install_CE', |
627 | | - label: 'Download CE', |
628 | | - href: tbmqDocsUrl('installation/'), |
629 | | - target: '_blank', |
630 | | - secondary: true, |
631 | | - }, |
632 | | - { |
633 | | - id: 'TryItNow_TBMQ_Install_PE', |
634 | | - label: 'Start PE Trial', |
635 | | - href: tbmqDocsUrl('pe/installation/'), |
636 | | - target: '_blank', |
637 | | - secondary: true, |
638 | | - }, |
639 | | - ], |
640 | | - heroImages: [ |
641 | | - { |
642 | | - src: mqttBroker('tbmq-try-2.png'), |
643 | | - alt: 'ThingsBoard MQTT Broker Home Page', |
644 | | - position: 'bg', |
645 | | - }, |
646 | | - { |
647 | | - src: mqttBroker('tbmq-try-1.png'), |
648 | | - alt: 'ThingsBoard MQTT Broker Sessions Page', |
649 | | - position: 'main', |
650 | | - }, |
651 | | - ], |
652 | | - features: [ |
653 | | - [ |
654 | | - { |
655 | | - title: 'Unlimited Horizontal Scaling', |
656 | | - href: tbmqDocsUrl('reference/100m-connections-performance-test/'), |
657 | | - target: '_blank', |
658 | | - description: 'Scale horizontally to manage more than 100M MQTT connections on a single cluster', |
659 | | - }, |
660 | | - { |
661 | | - title: 'Million-Message Throughput', |
662 | | - href: tbmqDocsUrl('reference/3m-throughput-single-node-performance-test/'), |
663 | | - target: '_blank', |
664 | | - description: |
665 | | - 'Process millions of messages per second with 1 TBMQ server and single-digit latency', |
666 | | - }, |
667 | | - { |
668 | | - title: 'Masterless High Availability', |
669 | | - href: tbmqDocsUrl('architecture/'), |
670 | | - target: '_blank', |
671 | | - description: 'Prevent single point of failure with masterless nodes in the cluster', |
672 | | - }, |
673 | | - ], |
674 | | - [ |
675 | | - { |
676 | | - title: 'Universal MQTT Support', |
677 | | - href: tbmqDocsUrl('getting-started/'), |
678 | | - target: '_blank', |
679 | | - description: 'MQTT 3.x and 5.0 compatible for a seamless and secure connection experience', |
680 | | - }, |
681 | | - { |
682 | | - title: 'Zero Data Loss Guarantee', |
683 | | - href: tbmqDocsUrl('architecture/'), |
684 | | - target: '_blank', |
685 | | - description: |
686 | | - 'Guarantee the persistence and replication of your data to ensure it\'s never lost', |
687 | | - }, |
688 | | - { |
689 | | - title: 'K8s & Cloud Agnostic', |
690 | | - href: tbmqDocsUrl('installation/'), |
691 | | - target: '_blank', |
692 | | - description: 'Deploy in cloud or on-premises using K8s scripts with ease', |
693 | | - }, |
694 | | - ], |
695 | | - ], |
696 | | - deployGroups: [ |
697 | | - { |
698 | | - type: 'premise', |
699 | | - cards: [ |
700 | | - { |
701 | | - logo: install('docker-linux-mac.svg'), |
702 | | - logoAlt: 'Docker (Linux or Mac OS)', |
703 | | - title: 'Docker (Linux or Mac OS)', |
704 | | - href: tbmqDocsUrl('installation/docker/'), |
705 | | - target: '_blank', |
706 | | - }, |
707 | | - { |
708 | | - logo: install('docker-windows.svg'), |
709 | | - logoAlt: 'Docker (Windows)', |
710 | | - title: 'Docker (Windows)', |
711 | | - href: tbmqDocsUrl('installation/docker-windows/'), |
712 | | - target: '_blank', |
713 | | - }, |
714 | | - { |
715 | | - logo: install('docker-compose.svg'), |
716 | | - logoAlt: 'Cluster setup with Docker Compose', |
717 | | - title: 'Cluster with Docker Compose', |
718 | | - href: tbmqDocsUrl('installation/cluster/docker-compose-setup/'), |
719 | | - target: '_blank', |
720 | | - }, |
721 | | - { |
722 | | - logo: install('minikube.svg'), |
723 | | - logoAlt: 'Cluster setup with Minikube', |
724 | | - title: 'Cluster setup with Minikube', |
725 | | - href: tbmqDocsUrl('installation/cluster/minikube-cluster-setup/'), |
726 | | - target: '_blank', |
727 | | - }, |
728 | | - ], |
729 | | - }, |
730 | | - { |
731 | | - type: 'cloud', |
732 | | - cards: [ |
733 | | - { |
734 | | - logo: install('eks.svg'), |
735 | | - logoAlt: 'Cluster setup on EKS', |
736 | | - title: 'Cluster setup on EKS', |
737 | | - href: tbmqDocsUrl('installation/cluster/aws-cluster-setup/'), |
738 | | - target: '_blank', |
739 | | - }, |
740 | | - { |
741 | | - logo: install('azure.svg'), |
742 | | - logoAlt: 'Cluster setup on AKS', |
743 | | - title: 'Cluster setup on AKS', |
744 | | - href: tbmqDocsUrl('installation/cluster/azure-cluster-setup/'), |
745 | | - target: '_blank', |
746 | | - }, |
747 | | - { |
748 | | - logo: install('gcp.svg'), |
749 | | - logoAlt: 'Cluster setup on GCP', |
750 | | - title: 'Cluster setup on GCP', |
751 | | - href: tbmqDocsUrl('installation/cluster/gcp-cluster-setup/'), |
752 | | - target: '_blank', |
753 | | - }, |
754 | | - { |
755 | | - logo: install('helm.svg'), |
756 | | - logoAlt: 'Cluster setup using Helm', |
757 | | - title: 'Cluster setup using Helm', |
758 | | - href: tbmqDocsUrl('installation/?installationType=helm'), |
759 | | - target: '_blank', |
760 | | - }, |
761 | | - ], |
762 | | - }, |
763 | | - ], |
764 | | - }, |
765 | 609 | ]; |
766 | 610 |
|
| 611 | +const TAB_LABELS: Record<string, string> = { |
| 612 | + 'thingsboard-cloud': 'Cloud', |
| 613 | + 'thingsboard-ce': 'Community Edition', |
| 614 | + 'thingsboard-pe': 'Professional Edition', |
| 615 | + 'thingsboard-edge': 'Edge', |
| 616 | + 'thingsboard-trendz': 'Trendz', |
| 617 | +}; |
| 618 | + |
767 | 619 | export const productTabs = products.map((p, i) => ({ |
768 | 620 | id: p.id, |
769 | | - label: p.id === 'thingsboard-ce' |
770 | | - ? 'Community Edition' |
771 | | - : p.id === 'thingsboard-pe' |
772 | | - ? 'Professional Edition' |
773 | | - : p.id === 'thingsboard-cloud' |
774 | | - ? 'Cloud' |
775 | | - : p.id === 'thingsboard-edge' |
776 | | - ? 'Edge' |
777 | | - : p.id === 'thingsboard-trendz' |
778 | | - ? 'Trendz' |
779 | | - : 'TBMQ', |
| 621 | + label: TAB_LABELS[p.id] ?? p.title, |
780 | 622 | active: i === 0, |
781 | 623 | })); |
0 commit comments