Compare commits

..

No commits in common. "main" and "zelda.update-seo" have entirely different histories.

15 changed files with 76 additions and 2885 deletions

View File

@ -1,877 +0,0 @@
<!doctype html>
<html lang="en" class="no-snap">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>
Prology New & Used Enterprise IT, Server and Network Hardware Supplier
</title>
<meta
name="description"
content="Prology is a Sydney-based enterprise specialising in high-quality new and refurbished Cisco networking equipment, alongside legacy hard-to-find parts."
/>
<meta name="robots" content="index,follow" />
<link rel="canonical" href="https://prology.net/about-us" />
<link rel="icon" type="image/png" href="https://prology.net/favicon.png" />
<!-- Open Graph -->
<meta property="og:type" content="website" />
<meta property="og:site_name" content="Prology" />
<meta property="og:url" content="https://prology.net/about-us" />
<meta
property="og:title"
content="Prology New & Used Enterprise IT, Server and Network Hardware Supplier"
/>
<meta
property="og:description"
content="Sydney-based brokerage of high-quality new and refurbished Cisco networking equipment and legacy hard-to-find parts."
/>
<meta property="og:image" content="https://prology.net/favicon.png" />
<meta property="og:locale" content="en_AU" />
<meta property="og:locale:alternate" content="en_US" />
<!-- Twitter Card -->
<meta name="twitter:card" content="summary_large_image" />
<meta
name="twitter:title"
content="Prology New & Used Enterprise IT, Server and Network Hardware Supplier"
/>
<meta
name="twitter:description"
content="Sydney-based brokerage of high-quality new and refurbished Cisco networking equipment and legacy hard-to-find parts."
/>
<meta name="twitter:image" content="https://prology.net/favicon.png" />
<link rel="stylesheet" href="assets/css/styles.css" />
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link
href="https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&display=swap"
rel="stylesheet"
/>
<!-- JSON-LD: AboutPage -->
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "AboutPage",
"name": "About Prology",
"url": "https://prology.net/about-us",
"mainEntity": {
"@type": "Organization",
"name": "Prology",
"legalName": "Prology Pty Ltd",
"url": "https://prology.net/",
"logo": "https://prology.net/assets/Prology_logo.png",
"description": "Sydney-based enterprise specialising in high-quality new and refurbished Cisco networking equipment, alongside legacy hard-to-find parts."
}
}
</script>
<!-- Google tag (gtag.js) -->
<script
async
src="https://www.googletagmanager.com/gtag/js?id=G-YG35M09CR8"
></script>
<script>
window.dataLayer = window.dataLayer || []
function gtag() {
dataLayer.push(arguments)
}
gtag('js', new Date())
gtag('config', 'G-YG35M09CR8')
</script>
<style>
/* ============ ABOUT US PAGE ============ */
body {
background: #f6f7f9 !important;
}
.about-page {
margin-top: 80px;
padding: 32px 0 80px;
}
/* ---------- Breadcrumb ---------- */
.about-breadcrumb {
display: flex;
align-items: center;
gap: 8px;
font-size: 0.95rem;
margin-bottom: 24px;
padding-left: 4px;
}
.about-breadcrumb a {
color: #6b7280;
text-decoration: none;
transition: color 0.2s;
}
.about-breadcrumb a:hover {
color: #1a73e8;
}
.about-breadcrumb .sep {
color: #cbd2da;
}
.about-breadcrumb .current {
color: #1a1f2e;
font-weight: 600;
}
/* ---------- Hero (dark navy card) ---------- */
.about-hero-card {
background: #1a2240;
border-radius: 20px;
padding: 90px 60px;
text-align: center;
color: #ffffff;
margin-bottom: 32px;
}
.about-hero-card .eyebrow {
display: inline-block;
font-size: 0.85rem;
font-weight: 600;
letter-spacing: 0.18em;
color: #cbd5e1;
margin-bottom: 22px;
text-transform: uppercase;
}
.about-hero-card h1 {
font-size: clamp(2.2rem, 4.5vw, 3.2rem);
font-weight: 800;
letter-spacing: -0.02em;
line-height: 1.15;
margin: 0 0 22px 0;
color: #ffffff;
}
.about-hero-card p {
font-size: 1.05rem;
line-height: 1.7;
color: #cbd5e1;
max-width: 720px;
margin: 0 auto;
}
/* ---------- Mission Callout ---------- */
.mission-callout {
background: #eef0f4;
border-left: 4px solid #2563eb;
border-radius: 14px;
padding: 32px 36px;
margin-bottom: 56px;
}
.mission-callout .callout-label {
display: block;
font-size: 0.82rem;
font-weight: 700;
letter-spacing: 0.18em;
color: #1a1f2e;
text-transform: uppercase;
margin-bottom: 18px;
}
.mission-callout p {
font-size: 1.05rem;
line-height: 1.7;
color: #1f2937;
margin: 0;
}
/* ---------- Who We Are ---------- */
.who-block {
padding: 0 4px;
margin-bottom: 48px;
}
.who-block h2 {
font-size: 1.65rem;
font-weight: 800;
color: #0f172a;
margin: 0 0 22px 0;
letter-spacing: -0.01em;
}
.who-block p {
font-size: 1rem;
line-height: 1.75;
color: #374151;
margin: 0 0 18px 0;
}
/* ---------- 3 Value Cards ---------- */
.value-cards {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 24px;
margin-bottom: 48px;
}
.value-card {
background: #ffffff;
border: 1px solid #e5e7eb;
border-radius: 16px;
padding: 32px 28px;
transition:
transform 0.25s ease,
box-shadow 0.25s ease;
}
.value-card:hover {
transform: translateY(-3px);
box-shadow: 0 10px 28px rgba(15, 23, 42, 0.06);
}
.value-icon {
width: 40px;
height: 40px;
border-radius: 10px;
background: #e8f0fe;
display: flex;
align-items: center;
justify-content: center;
margin-bottom: 24px;
color: #2563eb;
}
.value-card h3 {
font-size: 1.15rem;
font-weight: 700;
color: #0f172a;
margin: 0 0 14px 0;
}
.value-card p {
font-size: 0.95rem;
line-height: 1.65;
color: #4b5563;
margin: 0;
}
/* ---------- Why Choose ---------- */
.why-block {
background: #ffffff;
border: 1px solid #e5e7eb;
border-radius: 16px;
padding: 40px 44px;
margin-bottom: 40px;
}
.why-block h2 {
font-size: 1.5rem;
font-weight: 800;
color: #0f172a;
margin: 0 0 32px 0;
letter-spacing: -0.01em;
}
.why-bullets {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 24px 56px;
list-style: none;
padding: 0;
margin: 0;
}
.why-bullets li {
display: flex;
align-items: flex-start;
gap: 14px;
font-size: 1rem;
color: #1f2937;
line-height: 1.5;
}
.why-bullets .check {
flex-shrink: 0;
width: 22px;
height: 22px;
margin-top: 2px;
color: #16a34a;
}
/* ---------- Ready CTA (blue) ---------- */
.ready-cta {
background: #2563eb;
border-radius: 18px;
padding: 56px 40px;
text-align: center;
color: #ffffff;
}
.ready-cta h2 {
font-size: clamp(1.6rem, 3vw, 2rem);
font-weight: 800;
color: #ffffff;
margin: 0 0 16px 0;
letter-spacing: -0.01em;
}
.ready-cta p {
font-size: 1rem;
line-height: 1.6;
color: rgba(255, 255, 255, 0.92);
max-width: 640px;
margin: 0 auto 32px auto;
}
.ready-cta-actions {
display: flex;
gap: 14px;
justify-content: center;
flex-wrap: wrap;
}
.ready-cta-actions .btn-solid,
.ready-cta-actions .btn-ghost {
display: inline-flex;
align-items: center;
justify-content: center;
padding: 12px 28px;
border-radius: 8px;
font-size: 0.98rem;
font-weight: 600;
text-decoration: none;
cursor: pointer;
transition:
transform 0.2s ease,
background 0.2s ease;
border: 1px solid transparent;
font-family: inherit;
}
.ready-cta-actions .btn-solid {
background: #ffffff;
color: #2563eb;
}
.ready-cta-actions .btn-solid:hover {
background: #f1f5ff;
transform: translateY(-1px);
}
.ready-cta-actions .btn-ghost {
background: transparent;
color: #ffffff;
border-color: rgba(255, 255, 255, 0.7);
}
.ready-cta-actions .btn-ghost:hover {
background: rgba(255, 255, 255, 0.12);
transform: translateY(-1px);
}
/* ---------- Responsive ---------- */
@media (max-width: 1024px) {
.value-cards {
grid-template-columns: 1fr;
}
.why-bullets {
grid-template-columns: 1fr;
gap: 18px;
}
}
@media (max-width: 640px) {
.about-hero-card {
padding: 60px 28px;
}
.mission-callout,
.why-block {
padding: 28px 24px;
}
.ready-cta {
padding: 44px 24px;
}
.ready-cta-actions {
flex-direction: column;
}
.ready-cta-actions .btn-solid,
.ready-cta-actions .btn-ghost {
width: 100%;
}
}
</style>
</head>
<body>
<!-- ============ NAVIGATION ============ -->
<nav class="navbar">
<div class="nav-content">
<a href="index.html" class="nav-brand">
<img src="assets/Prology_logo.png" alt="Prology.net" />
</a>
<ul class="nav-links">
<li><a href="index.html#home">Home</a></li>
<li><a href="index.html#services">Categories</a></li>
<li><a href="index.html#quality">Why Choose Us</a></li>
<li><a href="index.html#who-we-serve">Who We Serve</a></li>
<li><a href="index.html#institutional">Gov & Corp</a></li>
<li><a href="index.html#contact">Contact</a></li>
<li><a href="about-us.html" class="active">About Us</a></li>
</ul>
<div class="nav-cta">
<button class="btn-view-products" onclick="openStoreModal()">
<svg
width="16"
height="16"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2.5"
stroke-linecap="round"
stroke-linejoin="round"
aria-hidden="true"
>
<path d="M6 2 3 6v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6l-3-4z" />
<line x1="3" y1="6" x2="21" y2="6" />
<path d="M16 10a4 4 0 0 1-8 0" />
</svg>
View Products
</button>
</div>
<button
class="hamburger-btn"
aria-label="Toggle navigation menu"
aria-expanded="false"
>
<span class="bar"></span>
<span class="bar"></span>
<span class="bar"></span>
</button>
</div>
</nav>
<div class="nav-backdrop" id="nav-backdrop"></div>
<!-- ============ MAIN CONTENT ============ -->
<div class="about-page">
<div class="container">
<!-- Breadcrumb -->
<nav class="about-breadcrumb" aria-label="Breadcrumb">
<a href="index.html">Home</a>
<span class="sep">/</span>
<span class="current">About Us</span>
</nav>
<!-- Hero Card -->
<section class="about-hero-card">
<h1>Welcome to Prology</h1>
<p>
A Sydney-based company specialising in high-quality new and
refurbished Cisco networking equipment, as well as legacy
hard-to-find parts.
</p>
</section>
<!-- Mission Callout -->
<section class="mission-callout">
<span class="callout-label">Our Mission</span>
<p>
To reduce the involvement of middlemen in the supply chain — cutting
costs for end-users while ensuring they receive top-notch products.
</p>
</section>
<!-- Who We Are -->
<section class="who-block">
<h2>Who We Are</h2>
<p>
At Prology, we understand that businesses of all sizes require
reliable and efficient networking equipment to operate smoothly.
That's why we offer a wide range of products catering to the needs
of various industries — from small businesses to large enterprises.
</p>
<p>
Our inventory includes routers, switches, firewalls, and other
networking equipment from leading brands like Cisco. All refurbished
equipment goes through a meticulous refurbishment and certification
process, meeting the same standards as new equipment at a fraction
of the cost.
</p>
</section>
<!-- Value Cards -->
<section class="value-cards">
<div class="value-card">
<div class="value-icon">
<svg
width="20"
height="20"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
aria-hidden="true"
>
<polygon
points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"
/>
</svg>
</div>
<h3>Quality Assured</h3>
<p>
Meticulous refurbishment and certification — every item meets the
same standards as new equipment.
</p>
</div>
<div class="value-card">
<div class="value-icon">
<svg
width="20"
height="20"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
aria-hidden="true"
>
<path d="M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2" />
<circle cx="9" cy="7" r="4" />
<path d="M23 21v-2a4 4 0 0 0-3-3.87" />
<path d="M16 3.13a4 4 0 0 1 0 7.75" />
</svg>
</div>
<h3>Expert Support</h3>
<p>
Personalised advice from our team of networking specialists —
ready to help you choose the right equipment.
</p>
</div>
<div class="value-card">
<div class="value-icon">
<svg
width="20"
height="20"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
aria-hidden="true"
>
<rect x="1" y="3" width="15" height="13" />
<polygon points="16 8 20 8 23 11 23 16 16 16 16 8" />
<circle cx="5.5" cy="18.5" r="2.5" />
<circle cx="18.5" cy="18.5" r="2.5" />
</svg>
</div>
<h3>Worldwide Shipping</h3>
<p>
Fast delivery via UPS, DHL, FedEx and other trusted couriers —
wherever you are located.
</p>
</div>
</section>
<!-- Why Choose -->
<section class="why-block">
<h2>Why Choose Prology?</h2>
<ul class="why-bullets">
<li>
<svg
class="check"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2.5"
stroke-linecap="round"
stroke-linejoin="round"
aria-hidden="true"
>
<polyline points="20 6 9 17 4 12" />
</svg>
<span>High-quality new &amp; refurbished Cisco equipment</span>
</li>
<li>
<svg
class="check"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2.5"
stroke-linecap="round"
stroke-linejoin="round"
aria-hidden="true"
>
<polyline points="20 6 9 17 4 12" />
</svg>
<span>Legacy &amp; hard-to-find parts specialist</span>
</li>
<li>
<svg
class="check"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2.5"
stroke-linecap="round"
stroke-linejoin="round"
aria-hidden="true"
>
<polyline points="20 6 9 17 4 12" />
</svg>
<span
>Fraction of the cost — without sacrificing performance</span
>
</li>
<li>
<svg
class="check"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2.5"
stroke-linecap="round"
stroke-linejoin="round"
aria-hidden="true"
>
<polyline points="20 6 9 17 4 12" />
</svg>
<span>Rigorous testing &amp; certification on all stock</span>
</li>
<li>
<svg
class="check"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2.5"
stroke-linecap="round"
stroke-linejoin="round"
aria-hidden="true"
>
<polyline points="20 6 9 17 4 12" />
</svg>
<span>No middlemen — direct savings passed to customers</span>
</li>
<li>
<svg
class="check"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2.5"
stroke-linecap="round"
stroke-linejoin="round"
aria-hidden="true"
>
<polyline points="20 6 9 17 4 12" />
</svg>
<span>Serving small businesses to large enterprises</span>
</li>
</ul>
</section>
<!-- Ready CTA -->
<section class="ready-cta">
<h2>Ready to upgrade your network?</h2>
<p>
Browse our full range of Cisco networking equipment or get in touch
with our team.
</p>
<div class="ready-cta-actions">
<button type="button" class="btn-solid" onclick="openStoreModal()">
Shop Now
</button>
<a class="btn-ghost" href="index.html#contact">Contact Us</a>
</div>
</section>
</div>
</div>
<script src="assets/js/config.js" defer></script>
<script src="assets/js/modals.js" defer></script>
<script>
document.addEventListener("DOMContentLoaded", () => {
const hamburgerBtn = document.querySelector(".hamburger-btn");
const navMenu = document.querySelector(".nav-links");
const navBackdrop = document.getElementById("nav-backdrop");
if (!hamburgerBtn || !navMenu) return;
function closeNavMenu() {
navMenu.classList.remove("open");
hamburgerBtn.classList.remove("open");
hamburgerBtn.setAttribute("aria-expanded", "false");
if (navBackdrop) navBackdrop.classList.remove("open");
}
hamburgerBtn.addEventListener("click", () => {
const isOpen = navMenu.classList.toggle("open");
hamburgerBtn.classList.toggle("open", isOpen);
hamburgerBtn.setAttribute("aria-expanded", String(isOpen));
if (navBackdrop) navBackdrop.classList.toggle("open", isOpen);
});
navMenu.querySelectorAll("a").forEach((a) => {
a.addEventListener("click", closeNavMenu);
});
if (navBackdrop) navBackdrop.addEventListener("click", closeNavMenu);
});
</script>
<!-- ============ PROLOGY MODAL WEB COMPONENTS ============ -->
<prology-sell-modal id="wc-sell-modal"></prology-sell-modal>
<prology-source-modal id="wc-source-modal"></prology-source-modal>
<prology-quote-modal id="wc-quote-modal"></prology-quote-modal>
<prology-enquire-modal id="wc-enquire-modal"></prology-enquire-modal>
<!-- ============ STORE PICKER MODAL ============ -->
<div
class="store-modal-overlay"
id="store-modal-overlay"
role="dialog"
aria-modal="true"
aria-labelledby="store-modal-title"
>
<div class="store-modal-box">
<button
class="store-modal-close"
onclick="closeStoreModal()"
aria-label="Close"
>
</button>
<p class="store-modal-title" id="store-modal-title">
Choose Your Store
</p>
<p class="store-modal-subtitle">
Select a region to browse our products
</p>
<div class="store-options">
<a data-store="au" class="store-option store-option--active">
<span class="store-flag">
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 60 30"
width="52"
height="28"
>
<rect width="60" height="30" fill="#00205B" />
<line
x1="0"
y1="0"
x2="30"
y2="15"
stroke="#fff"
stroke-width="5"
/>
<line
x1="30"
y1="0"
x2="0"
y2="15"
stroke="#fff"
stroke-width="5"
/>
<line
x1="0"
y1="0"
x2="30"
y2="15"
stroke="#CC2529"
stroke-width="3"
/>
<line
x1="30"
y1="0"
x2="0"
y2="15"
stroke="#CC2529"
stroke-width="3"
/>
<rect x="12" y="0" width="6" height="15" fill="#fff" />
<rect x="0" y="6" width="30" height="6" fill="#fff" />
<rect x="13.5" y="0" width="3" height="15" fill="#CC2529" />
<rect x="0" y="7.5" width="30" height="3" fill="#CC2529" />
<polygon
points="7.5,17 8.3,19.5 11,19.5 8.8,21.2 9.6,23.7 7.5,22 5.4,23.7 6.2,21.2 4,19.5 6.7,19.5"
fill="#fff"
/>
<polygon
points="44,3 44.8,5.5 47.5,5.5 45.3,7.2 46.1,9.7 44,8 41.9,9.7 42.7,7.2 40.5,5.5 43.2,5.5"
fill="#fff"
/>
<polygon
points="52,8 52.6,10 54.7,10 53,11.3 53.6,13.3 52,12 50.4,13.3 51,11.3 49.3,10 51.4,10"
fill="#fff"
/>
<polygon
points="44,15 44.6,17 46.7,17 45,18.3 45.6,20.3 44,19 42.4,20.3 43,18.3 41.3,17 43.4,17"
fill="#fff"
/>
<polygon
points="37,9 37.6,11 39.7,11 38,12.3 38.6,14.3 37,13 35.4,14.3 36,12.3 34.3,11 36.4,11"
fill="#fff"
/>
<polygon
points="50,18 50.4,19.2 51.6,19.2 50.6,20 51,21.2 50,20.4 49,21.2 49.4,20 48.4,19.2 49.6,19.2"
fill="#fff"
/>
</svg>
</span>
<div class="store-info">
<div class="store-info-name">
Australia Store
<span class="store-badge-active">Live</span>
</div>
<div class="store-info-desc">
Enterprise networking equipment · Ships Australia-wide
</div>
</div>
<span class="store-arrow"></span>
</a>
<a data-store="us" class="store-option store-option--active">
<span class="store-flag">
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 60 30"
width="52"
height="28"
>
<rect width="60" height="30" fill="#B22234" />
<rect y="2.31" width="60" height="2.31" fill="#fff" />
<rect y="6.92" width="60" height="2.31" fill="#fff" />
<rect y="11.54" width="60" height="2.31" fill="#fff" />
<rect y="16.15" width="60" height="2.31" fill="#fff" />
<rect y="20.77" width="60" height="2.31" fill="#fff" />
<rect y="25.38" width="60" height="2.31" fill="#fff" />
<rect width="24" height="16.15" fill="#3C3B6E" />
<g fill="#fff">
<circle cx="2.5" cy="1.6" r="1.1" />
<circle cx="6.5" cy="1.6" r="1.1" />
<circle cx="10.5" cy="1.6" r="1.1" />
<circle cx="14.5" cy="1.6" r="1.1" />
<circle cx="18.5" cy="1.6" r="1.1" />
<circle cx="22.5" cy="1.6" r="1.1" />
<circle cx="4.5" cy="4.6" r="1.1" />
<circle cx="8.5" cy="4.6" r="1.1" />
<circle cx="12.5" cy="4.6" r="1.1" />
<circle cx="16.5" cy="4.6" r="1.1" />
<circle cx="20.5" cy="4.6" r="1.1" />
<circle cx="2.5" cy="7.6" r="1.1" />
<circle cx="6.5" cy="7.6" r="1.1" />
<circle cx="10.5" cy="7.6" r="1.1" />
<circle cx="14.5" cy="7.6" r="1.1" />
<circle cx="18.5" cy="7.6" r="1.1" />
<circle cx="22.5" cy="7.6" r="1.1" />
<circle cx="4.5" cy="10.6" r="1.1" />
<circle cx="8.5" cy="10.6" r="1.1" />
<circle cx="12.5" cy="10.6" r="1.1" />
<circle cx="16.5" cy="10.6" r="1.1" />
<circle cx="20.5" cy="10.6" r="1.1" />
<circle cx="2.5" cy="13.6" r="1.1" />
<circle cx="6.5" cy="13.6" r="1.1" />
<circle cx="10.5" cy="13.6" r="1.1" />
<circle cx="14.5" cy="13.6" r="1.1" />
<circle cx="18.5" cy="13.6" r="1.1" />
<circle cx="22.5" cy="13.6" r="1.1" />
</g>
</svg>
</span>
<div class="store-info">
<div class="store-info-name">
U.S.A Store
<span class="store-badge-active">Live</span>
</div>
<div class="store-info-desc">
Enterprise networking equipment · North American distribution
hub
</div>
</div>
<span class="store-arrow"></span>
</a>
</div>
</div>
</div>
<footer class="page-footer" role="contentinfo"></footer>
<script src="assets/js/footer.js" defer></script>
<script src="assets/js/chat.js" defer></script>
</body>
</html>

View File

@ -2364,7 +2364,7 @@ body::before {
/* ============ CENTRAL INSTITUTIONAL LAYOUT ============ */
.official-seal-large {
width: 260px; /* Slightly larger as requested */
width: 260px; /* To hơn một chút theo yêu cầu */
height: auto;
display: block;
margin: 0 auto 30px auto;
@ -2664,7 +2664,7 @@ body::before {
}
.modal-box {
background: linear-gradient(145deg, #2A3B54, #1E293B); /* Slightly brighter with a subtle gradient */
background: linear-gradient(145deg, #2A3B54, #1E293B); /* Sáng hơn một chút với dải màu nhẹ */
border: 1px solid rgba(255,255,255,0.15);
border-radius: 20px;
padding: 40px;
@ -2710,7 +2710,7 @@ body::before {
.modal-input {
width: 100%;
background: rgba(255, 255, 255, 0.06); /* Slightly brighter, transparent on dark blue background */
background: rgba(255, 255, 255, 0.06); /* Sáng hơn, trong suốt trên nền xanh đậm */
border: 1px solid rgba(255, 255, 255, 0.2);
border-radius: 8px;
padding: 14px 16px;
@ -2729,7 +2729,7 @@ body::before {
}
.modal-input::placeholder {
color: #64748B; /* Slightly lighter placeholder for readability */
color: #64748B; /* Placeholder sáng hơn xíu để dễ đọc */
}
@ -2743,7 +2743,7 @@ body::before {
/* Tablet (1024px and below) */
@media (max-width: 1024px) {
html {
scroll-snap-type: none; /* Disable snap for smoother scrolling on tablets */
scroll-snap-type: none; /* Tắt snap để cuộn mượt hơn trên máy tính bảng */
}
.section {
@ -2773,7 +2773,7 @@ body::before {
.section {
height: auto;
min-height: auto; /* Allow full flex according to content */
min-height: auto; /* Cho phép co giãn hoàn toàn theo nội dung */
padding: 80px 0 40px 0;
}
@ -3287,7 +3287,6 @@ body::before {
color: inherit;
text-decoration: none;
transition: color 0.18s ease;
word-spacing: 0.25em;
}
.ns-footer__trust-item a:hover { color: #ffffff; }
@ -3892,10 +3891,8 @@ body::before {
}
/* ─── Mobile hamburger & dropdown menu ───────────────────────── */
@media (max-width: 1024px) {
@media (max-width: 900px) {
.hamburger-btn { display: flex; }
.nav-links:not(.open) { display: none !important; }
.nav-cta { margin-left: auto; }
/* Backdrop */
.nav-backdrop {

View File

@ -17,15 +17,11 @@
"phones": [
{
"label": "AU",
"numbers": [
{ "display": "+61 (2) 8061 6886", "href": "tel:+61280616886" }
]
"numbers": [{ "display": "+612 8061 6886", "href": "tel:+61280616886" }]
},
{
"label": "US",
"numbers": [
{ "display": "+1 (714) 689 3332", "href": "tel:+17146893332" }
]
"numbers": [{ "display": "+1 4689 3350", "href": "tel:+146893350" }]
}
],
@ -38,14 +34,14 @@
"links": {
"information": [
{ "label": "About Us", "url": "about-us.html", "direct": true },
{ "label": "About Us", "url": "about-us", "external": false },
{ "label": "News", "url": "https://prology.net/blog", "external": true },
{ "label": "Contact Us", "url": "contact", "external": false },
{ "label": "Terms of Use & Sale", "url": "terms", "external": false },
{
"label": "Privacy & Cookie Policy",
"url": "privacy-policy-cookie-restriction-mode.html",
"direct": true
"url": "privacy-policy-cookie-restriction-mode",
"external": false
}
],
"your_orders": [
@ -54,8 +50,8 @@
{ "label": "My Wish List", "url": "wishlist", "external": false },
{
"label": "Manufacturers List",
"url": "manufacturers-list.html",
"direct": true
"url": "manufacturers",
"external": false
}
],
"support": [
@ -156,7 +152,7 @@
},
{
"name": "LinkedIn",
"url": "https://www.linkedin.com/company/prology-net",
"url": "https://www.linkedin.com/company/unavailable/",
"icon": "linkedin"
},
{
@ -166,7 +162,7 @@
},
{
"name": "YouTube",
"url": "https://www.youtube.com/@prologydotnet",
"url": "https://www.youtube.com/@PrologyPtyLtd",
"icon": "youtube"
}
]

Binary file not shown.

Before

Width:  |  Height:  |  Size: 437 KiB

View File

@ -17,16 +17,14 @@
apiEndpoint:
P.CHAT_API_URL ||
P.API_URL ||
"https://omni.prology.net/chat-plugin/api/support",
"https://prologyms.nswteam.net/chat-plugin/api/support",
whatsappNumber: P.CHAT_WHATSAPP_NUMBER || "84901234567",
accentColor: P.CHAT_ACCENT_COLOR || "#4f46e5",
position: P.CHAT_POSITION || "right",
rateLimit: {
max: P.CHAT_RATE_LIMIT_MAX != null ? P.CHAT_RATE_LIMIT_MAX : 3,
windowMin:
P.CHAT_RATE_LIMIT_WINDOW_MIN != null
? P.CHAT_RATE_LIMIT_WINDOW_MIN
: 10,
P.CHAT_RATE_LIMIT_WINDOW_MIN != null ? P.CHAT_RATE_LIMIT_WINDOW_MIN : 10,
},
minFillMs: P.CHAT_MIN_FILL_MS != null ? P.CHAT_MIN_FILL_MS : 3000,
fabImageUrl:
@ -99,7 +97,11 @@
var phone = (f.phone || "").trim();
var message = (f.message || "").trim();
if (!name || !/^[\p{L}\p{M}'\-\s]{2,80}$/u.test(name)) e.push("sms-name");
if (!phone || !/^04\s?\d{2}\s?\d{3}\s?\d{3}$/.test(phone))
if (
!phone ||
!/^[\d\s\+\-\(\)]{7,15}$/.test(phone) ||
!/\d{5,}/.test(phone)
)
e.push("sms-phone");
if (!message || message.length < 10) e.push("sms-msg");
return e;
@ -144,7 +146,7 @@
/* FAB — no transition on background/box-shadow to kill flicker; only transform transitions */
"#fab{position:fixed;bottom:24px;" + pos + "z-index:99998;",
"width:60px;height:60px;border-radius:50%;",
"background-image:url(/assets/images/cropped.png);",
"background-image:url(" + CFG.fabImageUrl + ");",
"background-size:cover;background-position:center;background-repeat:no-repeat;",
"border:none;cursor:pointer;outline:none;",
"box-shadow:0 6px 20px rgba(79,70,229,.4);",
@ -239,7 +241,7 @@
/* SMS */
'<div class="pane active" id="pane-sms">',
'<div class="field"><input id="sms-name" type="text" maxlength="80" autocomplete="name" placeholder="Your Name"><div class="hint" id="h-sms-name">Please enter your full name</div></div>',
'<div class="field"><input id="sms-phone" type="tel" inputmode="numeric" maxlength="13" autocomplete="tel-national" placeholder="Mobile Phone (AU): 04 XX XXX XXX"><div class="hint" id="h-sms-phone">Enter AU mobile in format: 04 XX XXX XXX</div></div>',
'<div class="field"><input id="sms-phone" type="tel" maxlength="15" autocomplete="tel" placeholder="Mobile Number (Australia)"><div class="hint" id="h-sms-phone">Enter a valid AU mobile number</div></div>',
'<div class="field"><textarea id="sms-msg" maxlength="1000" placeholder="How can we help?"></textarea><div class="hint" id="h-sms-msg">Please provide more details (min 10 chars)</div></div>',
'<div class="hp"><input type="text" id="hp-sms" tabindex="-1" autocomplete="off"></div>',
'<button class="btn-submit" id="btn-sms">Send SMS ' +
@ -273,7 +275,7 @@
'<div class="success-icon">' + SVG_CHECK + "</div>",
"<h3>Message Received!</h3>",
"<p>Thanks for reaching out.<br>We'll get back to you shortly.</p>",
'<button class="btn-submit" id="btn-new">Send another message</button>',
'<button class="btn-new" id="btn-new">Send another message</button>',
"</div>",
"</div>",
].join("");
@ -422,17 +424,8 @@
bumpRl();
showSuccess();
} else if (xhr.status === 429)
setStatus(
prefix,
"Too many requests. Please try again later.",
"warn",
);
else
setStatus(
prefix,
"Too many requests. Please try again later.",
"fail",
);
setStatus(prefix, "Server busy. Please try again later.", "warn");
else setStatus(prefix, "Failed to send. Please try again.", "fail");
};
xhr.ontimeout = function () {
$btn.disabled = false;

View File

@ -1,16 +1,17 @@
window.PROLOGY_CONFIG = {
API_URL: "https://omni.prology.net/chat-plugin/api/support",
API_URL: "https://prologyms.nswteam.net/chat-plugin/api/support",
LOGO_SRC: "assets/Prology_logo.png",
// ── Chat / Support widget ──
CHAT_API_URL: "https://omni.prology.net/chat-plugin/api/support",
CHAT_API_URL: "https://prologyms.nswteam.net/chat-plugin/api/support",
CHAT_WHATSAPP_NUMBER: "84901234567",
CHAT_ACCENT_COLOR: "#4f46e5",
CHAT_POSITION: "right",
CHAT_RATE_LIMIT_MAX: 3,
CHAT_RATE_LIMIT_WINDOW_MIN: 10,
CHAT_MIN_FILL_MS: 3000,
CHAT_FAB_IMAGE_URL: "/assets/images/cropped.png",
CHAT_FAB_IMAGE_URL:
"https://prology.nswteam.net/media/wysiwyg/image_2026-04-02_15-43-14.png",
// ── Store picker (modal) ──
STORE_AU_URL: "https://prology.net/au",
@ -33,17 +34,9 @@ window.PROLOGY_CONFIG = {
{ label: "Components", slug: "components" },
],
FOOTER_LEGAL_LINKS: [
{
label: "Privacy Policy",
url: "privacy-policy-cookie-restriction-mode.html",
direct: true,
},
{ label: "Privacy Policy", url: "privacy-policy-cookie-restriction-mode" },
{ label: "Terms of Use & Sale", url: "terms" },
{
label: "Cookie Policy",
url: "privacy-policy-cookie-restriction-mode.html#c1",
direct: true,
},
{ label: "Cookie Policy", url: "enable-cookies" },
],
FOOTER_COPYRIGHT:
"Copyright © 2020-2026 Prology Pty Ltd T/A Prology. All rights reserved.",

View File

@ -76,14 +76,10 @@
// Internal items render as <span> that opens the store picker — the picked
// store then redirects to {STORE_URL}/{slug-or-url}. External items render
// as a regular <a target="_blank">. Items flagged `direct: true` render as
// a same-site <a> (no modal, no new tab).
// as a regular <a target="_blank">.
const renderLinkInner = (item) => {
const label = escape(item.label);
const url = item.url || "";
if (item.direct) {
return `<a href="${escape(url)}">${label}</a>`;
}
if (item.external || /^https?:\/\//i.test(url)) {
return `<a href="${escape(linkUrl(item))}" target="_blank" rel="noopener">${label}</a>`;
}

View File

@ -149,8 +149,8 @@ document.addEventListener("DOMContentLoaded", () => {
runTypewriter();
// Auto-focus timer removed here.
// Auto-focusing after 19s caused the browser to scroll back to the top while the user was reading below.
// Đã hủy bỏ bộ hẹn giờ auto-focus ở đây.
// Việc auto-focus sau 19s khiến trình duyệt tự động cuộn giật ngược lên đầu trang nếu user đang đọc ở dưới.
// Switch between Source (Buy) and Sell Modes
window.switchTab = function (mode) {
@ -264,17 +264,6 @@ document.addEventListener("DOMContentLoaded", () => {
sections.forEach((section) => observer.observe(section));
// Hide scroll indicator when footer is visible
const footerEl = document.querySelector("footer.page-footer");
if (footerEl && scrollIndicator) {
const footerObserver = new IntersectionObserver((entries) => {
entries.forEach((entry) => {
scrollIndicator.style.opacity = entry.isIntersecting ? "0" : "";
});
}, { threshold: 0.05 });
footerObserver.observe(footerEl);
}
// ============ SMOOTH SCROLL (Navbar) ============
document.querySelectorAll('a[href^="#"]').forEach((anchor) => {
anchor.addEventListener("click", function (e) {

View File

@ -2,113 +2,8 @@
// ── API Config ──
const API_ENDPOINT = window.PROLOGY_CONFIG.API_URL;
// ── Per-field error messages ──
const FIELD_ERROR_MSG = {
name: "Please enter a valid name.",
email: "Please enter a valid email address.",
phone: "Please enter a valid Australian mobile number (04xx xxx xxx).",
message: "Please enter at least 10 characters.",
email_or_phone_required: "Please provide an email or phone number.",
};
// ── Client-side validators (mirror server rules) ──
const RX_EMAIL = /^[\w.+-]+@[\w-]+(\.[\w-]+)+$/;
const RX_NAME = /^[\p{L}\p{M}'\-\s.]{2,80}$/u;
function isValidAuMobile(phone) {
const raw = (phone || "").trim();
if (!raw || !/^[\d\s\-()]+$/.test(raw)) return false;
const digits = raw.replace(/\D/g, "");
return /^04\d{8}$/.test(digits);
}
function validateClient(fields) {
const bad = [];
if ("name" in fields && (!fields.name || !RX_NAME.test(fields.name.trim())))
bad.push("name");
if ("email" in fields && (!fields.email || !RX_EMAIL.test(fields.email.trim())))
bad.push("email");
if ("phone" in fields && !isValidAuMobile(fields.phone))
bad.push("phone");
if ("message" in fields && (!fields.message || fields.message.trim().length < 10))
bad.push("message");
return bad;
}
function clearFieldErrors(sr) {
if (!sr) return;
sr.querySelectorAll(".field-error").forEach((el) => el.remove());
sr.querySelectorAll(".invalid").forEach((el) => el.classList.remove("invalid"));
}
function showFieldErrors(sr, badKeys, fieldMap) {
if (!sr || !fieldMap) return false;
let shown = 0;
badKeys.forEach((key) => {
let names = fieldMap[key];
if (!names) return;
if (!Array.isArray(names)) names = [names];
names.forEach((name) => {
const input = sr.querySelector('[name="' + name + '"]');
if (!input) return;
input.classList.add("invalid");
const field = input.closest(".field");
if (field && !field.querySelector(".field-error")) {
const err = document.createElement("div");
err.className = "field-error";
err.textContent = FIELD_ERROR_MSG[key] || "Invalid value.";
field.appendChild(err);
shown++;
}
});
});
return shown > 0;
}
function bindClearOnInput(sr) {
if (!sr || sr._clearBound) return;
sr._clearBound = true;
sr.querySelectorAll("input, textarea, select").forEach((el) => {
el.addEventListener("input", () => {
if (!el.classList.contains("invalid")) return;
el.classList.remove("invalid");
const field = el.closest(".field");
const err = field && field.querySelector(".field-error");
if (err) err.remove();
});
});
}
function showButtonError(btnEl, msg) {
const origHTML = btnEl.dataset.origHtml || btnEl.innerHTML;
btnEl.dataset.origHtml = origHTML;
btnEl.innerHTML = "<span>&#x26A0; " + msg + "</span>";
setTimeout(() => {
btnEl.innerHTML = origHTML;
btnEl.disabled = false;
delete btnEl.dataset.origHtml;
}, 3000);
}
// ── Shared submit function ──
async function submitToAPI(payload, btnEl, onSuccess, opts) {
const { sr, validateFields, fieldMap } = opts || {};
if (sr) {
clearFieldErrors(sr);
bindClearOnInput(sr);
}
// Client-side validation — avoid burning an API call on obvious errors
if (validateFields) {
const bad = validateClient(validateFields);
if (bad.length) {
const shown = showFieldErrors(sr, bad, fieldMap);
if (!shown) showButtonError(btnEl, "Please check your inputs and try again.");
return;
}
}
async function submitToAPI(payload, btnEl, onSuccess) {
btnEl.disabled = true;
const origHTML = btnEl.innerHTML;
btnEl.innerHTML = "<span>Sending...</span>";
@ -136,23 +31,10 @@
const data = await res.json();
if (res.ok && data.ok) {
// Google Ads conversion — fires only on a successful submit
if (typeof gtag_report_conversion === "function") {
gtag_report_conversion();
}
onSuccess(restore);
} else {
let msg = data.error || "Something went wrong. Please try again.";
if (res.status === 429) {
msg = "Too many requests. Please try again later.";
} else if (/validation failed/i.test(msg)) {
const shown = showFieldErrors(sr, data.fields || [], fieldMap);
if (shown) {
restore();
return;
}
msg = "Please check your inputs and try again.";
}
const msg =
data.error || "Something went wrong. Please try again.";
btnEl.innerHTML = "<span>&#x26A0; " + msg + "</span>";
setTimeout(restore, 3000);
}
@ -243,16 +125,6 @@
border-color: #1A73E8;
background: rgba(255,255,255,0.09);
}
input.invalid, textarea.invalid, select.invalid {
border-color: #f87171;
background: rgba(248,113,113,0.06);
}
.field-error {
color: #f87171;
font-size: 0.78rem;
margin-top: 6px;
line-height: 1.35;
}
input::placeholder, textarea::placeholder { color: #64748B; }
textarea { min-height: 120px; resize: vertical; }
select {
@ -318,6 +190,11 @@
this.shadowRoot
.querySelector(".close")
.addEventListener("click", () => this.close());
this.shadowRoot
.querySelector(".overlay")
.addEventListener("click", (e) => {
if (e.target.classList.contains("overlay")) this.close();
});
document.addEventListener("keydown", (e) => {
if (e.key === "Escape" && this.classList.contains("open"))
this.close();
@ -384,11 +261,6 @@
restore();
}, 1800);
},
{
sr,
validateFields: { email, message: inventory },
fieldMap: { email: "email", message: "inventory" },
},
);
});
}
@ -453,11 +325,6 @@
restore();
}, 1800);
},
{
sr,
validateFields: { email },
fieldMap: { email: "email", message: "parts" },
},
);
});
}
@ -481,7 +348,7 @@
</div>
<div class="field-row">
<div class="field"><label>Company (Optional)</label><input type="text" name="company" placeholder="Company Ltd."></div>
<div class="field"><label>Phone Number <span class="req">*</span></label><input type="tel" name="phone" placeholder="04xx xxx xxx" inputmode="tel" autocomplete="tel" required></div>
<div class="field"><label>Phone Number <span class="req">*</span></label><input type="tel" name="phone" placeholder="+1 234 567 8900" required></div>
</div>
<div class="field">
<label>Equipment Requirements <span class="req">*</span></label>
@ -528,17 +395,6 @@
restore();
}, 1800);
},
{
sr,
validateFields: { name, email, phone, message: requirements },
fieldMap: {
name: "name",
email: "email",
phone: "phone",
message: "requirements",
email_or_phone_required: ["email", "phone"],
},
},
);
});
}
@ -562,7 +418,7 @@
</div>
<div class="field-row">
<div class="field"><label>Organization / Agency <span class="req">*</span></label><input type="text" name="org" placeholder="Organization Name" required></div>
<div class="field"><label>Contact Number <span class="req">*</span></label><input type="tel" name="phone" placeholder="04xx xxx xxx" inputmode="tel" autocomplete="tel" required></div>
<div class="field"><label>Contact Number <span class="req">*</span></label><input type="tel" name="phone" placeholder="+1 234 567 8900" required></div>
</div>
<div class="field">
<label>Enquiry Details <span class="req">*</span></label>
@ -600,17 +456,6 @@
restore();
}, 1800);
},
{
sr,
validateFields: { name, email, phone, message: details },
fieldMap: {
name: "name",
email: "email",
phone: "phone",
message: "details",
email_or_phone_required: ["email", "phone"],
},
},
);
});
}
@ -689,18 +534,4 @@
}
window.openValuationModal(email);
};
// ── Auto-open a modal from the URL (e.g. ?_open=wc-quote-modal) ──
(function openModalFromUrl() {
const target = new URLSearchParams(window.location.search).get("_open");
if (!target) return;
if (target === "store-modal-overlay") {
window.openStoreModal();
return;
}
const el = document.getElementById(target);
if (el && typeof el.open === "function") el.open();
})();
})();

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

View File

@ -3,29 +3,30 @@
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>
Prology New & Used Enterprise IT, Server and Network Hardware Supplier
</title>
<title>Prology | Enterprise Network Infrastructure Brokerage</title>
<meta
name="description"
content="Prology new & used enterprise IT, server and network hardware supplier. Source Cisco, HP and other hard-to-find networking equipment across Australia and the United States. 15+ years experience, 100k+ units in stock."
content="Prology — enterprise network hardware brokerage. Source Cisco, HP and other hard-to-find networking equipment across Australia and the United States. 15+ years experience, 100k+ units in stock."
/>
<meta name="robots" content="index,follow" />
<link rel="canonical" href="https://prology.net/" />
<link rel="icon" type="image/png" href="https://prology.net/favicon.png" />
<!-- Open Graph -->
<meta property="og:type" content="website" />
<meta property="og:site_name" content="Prology" />
<meta property="og:url" content="https://prology.net/" />
<meta
property="og:title"
content="Prology New & Used Enterprise IT, Server and Network Hardware Supplier"
content="Prology | Enterprise Network Infrastructure Brokerage"
/>
<meta
property="og:description"
content="Source Cisco, HP and hard-to-find enterprise network hardware across Australia and the United States. 15+ years experience, 100k+ units in stock."
/>
<meta property="og:image" content="https://prology.net/favicon.png" />
<meta
property="og:image"
content="https://prology.net/assets/Prology_logo.png"
/>
<meta property="og:locale" content="en_AU" />
<meta property="og:locale:alternate" content="en_US" />
@ -33,13 +34,16 @@
<meta name="twitter:card" content="summary_large_image" />
<meta
name="twitter:title"
content="Prology New & Used Enterprise IT, Server and Network Hardware Supplier"
content="Prology | Enterprise Network Infrastructure Brokerage"
/>
<meta
name="twitter:description"
content="Source Cisco, HP and hard-to-find enterprise network hardware across Australia and the United States."
/>
<meta name="twitter:image" content="https://prology.net/favicon.png" />
<meta
name="twitter:image"
content="https://prology.net/assets/Prology_logo.png"
/>
<link rel="stylesheet" href="assets/css/styles.css" />
<link rel="preconnect" href="https://fonts.googleapis.com" />
@ -104,34 +108,6 @@
}
]
}
</script>
<!-- Google tag (gtag.js) -->
<script
async
src="https://www.googletagmanager.com/gtag/js?id=G-YG35M09CR8"
></script>
<script>
window.dataLayer = window.dataLayer || []
function gtag() {
dataLayer.push(arguments)
}
gtag('js', new Date())
gtag('config', 'G-YG35M09CR8')
gtag('config', 'AW-18202371431');
</script>
<!-- Event snippet for Outbound click conversion page In your html page, add the snippet and call gtag_report_conversion when someone clicks on the chosen link or button. -->
<script>
function gtag_report_conversion(url) {
var callback = function () {
if (typeof url != "undefined") {
window.location = url;
}
};
gtag("event", "conversion", { send_to: "AW-18202371431/hhXcCOCRvb0cEOfKyOdD", value: 1.0, currency: "AUD", event_callback: callback });
return false;
}
</script>
</head>
@ -155,7 +131,6 @@
<li><a href="#who-we-serve">Who We Serve</a></li>
<li><a href="#institutional">Gov & Corp</a></li>
<li><a href="#contact">Contact</a></li>
<li><a href="about-us.html">About Us</a></li>
</ul>
<div class="nav-cta">
<button class="btn-view-products" onclick="openStoreModal()">
@ -922,6 +897,11 @@
>
<div class="po-content-large">
<div class="institutional-central-header">
<img
src="https://upload.wikimedia.org/wikipedia/commons/thumb/c/c5/Coat_of_arms_of_the_Commonwealth_of_Australia.svg/1280px-Coat_of_arms_of_the_Commonwealth_of_Australia.svg.png"
alt="Coat of arms of the Commonwealth of Australia"
class="official-seal-large"
/>
<div class="po-titles-central">
<h2>Government & Corporate Orders</h2>
<p style="max-width: 800px; margin: 0 auto">

View File

@ -1,613 +0,0 @@
<!doctype html>
<html lang="en" class="no-snap">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Manufacturers List Prology</title>
<meta
name="description"
content="AZ directory of networking and IT hardware brands stocked and supported by Prology — Cisco, Juniper, Fortinet, Aruba and more."
/>
<meta name="robots" content="index,follow" />
<link rel="canonical" href="https://prology.net/manufacturers" />
<link rel="icon" type="image/png" href="https://prology.net/favicon.png" />
<!-- Open Graph -->
<meta property="og:type" content="website" />
<meta property="og:site_name" content="Prology" />
<meta property="og:url" content="https://prology.net/manufacturers" />
<meta property="og:title" content="Manufacturers List Prology" />
<meta
property="og:description"
content="AZ directory of networking and IT hardware brands stocked and supported by Prology."
/>
<meta property="og:image" content="https://prology.net/favicon.png" />
<meta property="og:locale" content="en_AU" />
<meta property="og:locale:alternate" content="en_US" />
<!-- Twitter Card -->
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="Manufacturers List Prology" />
<meta
name="twitter:description"
content="AZ directory of networking and IT hardware brands stocked and supported by Prology."
/>
<meta name="twitter:image" content="https://prology.net/favicon.png" />
<link rel="stylesheet" href="assets/css/styles.css" />
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link
href="https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&display=swap"
rel="stylesheet"
/>
<!-- Google tag (gtag.js) -->
<script
async
src="https://www.googletagmanager.com/gtag/js?id=G-YG35M09CR8"
></script>
<script>
window.dataLayer = window.dataLayer || []
function gtag() {
dataLayer.push(arguments)
}
gtag('js', new Date())
gtag('config', 'G-YG35M09CR8')
</script>
<style>
body {
background: #f6f7f9 !important;
}
.mfr-page {
margin-top: 80px;
padding: 32px 0 80px;
}
.mfr-breadcrumb {
display: flex;
align-items: center;
gap: 8px;
font-size: 0.95rem;
margin-bottom: 24px;
padding-left: 4px;
}
.mfr-breadcrumb a {
color: #6b7280;
text-decoration: none;
transition: color 0.2s;
}
.mfr-breadcrumb a:hover {
color: #1a73e8;
}
.mfr-breadcrumb .sep {
color: #cbd2da;
}
.mfr-breadcrumb .current {
color: #1a1f2e;
font-weight: 600;
}
/* ── Manufacturers list ── */
.ns-mfr * {
box-sizing: border-box;
}
.ns-mfr {
max-width: 100%;
}
.ns-mfr-hero {
background: #0d1f3c;
padding: 40px 48px;
text-align: center;
margin-bottom: 28px;
border-radius: 12px;
}
.ns-mfr-hero h1 {
font-size: 1.9rem;
font-weight: 700;
color: #fff;
margin: 0 0 8px;
letter-spacing: -0.02em;
line-height: 1.2;
}
.ns-mfr-hero p {
font-size: 0.9rem;
color: rgba(255, 255, 255, 0.6);
margin: 0;
}
.ns-mfr-alpha {
display: flex;
flex-wrap: wrap;
gap: 5px;
margin-bottom: 24px;
}
.ns-mfr-alpha a {
width: 36px;
height: 36px;
display: flex;
align-items: center;
justify-content: center;
border-radius: 6px;
border: 1px solid #dde3ec;
background: #fff;
font-size: 0.85rem;
font-weight: 700;
color: #5a6478;
text-decoration: none;
transition: all 0.15s;
}
.ns-mfr-alpha a:hover {
background: #0073e6;
color: #fff;
border-color: #0073e6;
}
.ns-mfr-alpha a.ns-empty {
opacity: 0.28;
pointer-events: none;
}
.ns-mfr-masonry {
columns: 3;
column-gap: 24px;
}
.ns-mfr-group {
break-inside: avoid;
margin-bottom: 20px;
}
.ns-mfr-letter-head {
font-size: 0.7rem;
font-weight: 700;
letter-spacing: 0.1em;
text-transform: uppercase;
color: #0073e6;
margin: 0 0 8px;
padding-bottom: 7px;
border-bottom: 1.5px solid #edf0f5;
}
.ns-mfr-list {
display: flex;
flex-direction: column;
gap: 4px;
}
.ns-mfr-item {
background: #fff;
border: 1px solid #edf0f5;
border-radius: 8px;
padding: 12px 18px;
transition:
border-color 0.15s,
box-shadow 0.15s;
}
.ns-mfr-item:hover {
border-color: #b3d0f5;
box-shadow: 0 2px 8px rgba(0, 115, 230, 0.08);
}
.ns-mfr-name {
font-size: 0.95rem;
font-weight: 500;
color: #0d1f3c;
line-height: 1.35;
}
.ns-mfr-item:hover .ns-mfr-name {
color: #0073e6;
}
.ns-mfr-footer {
margin-top: 24px;
padding-top: 16px;
border-top: 1px solid #edf0f5;
}
.ns-mfr-count {
font-size: 0.78rem;
color: #8a95a8;
}
@media (max-width: 900px) {
.ns-mfr-masonry {
columns: 2;
}
}
@media (max-width: 640px) {
.ns-mfr-masonry {
columns: 1;
}
.ns-mfr-hero {
padding: 28px 20px;
}
.ns-mfr-hero h1 {
font-size: 1.4rem;
}
}
</style>
</head>
<body>
<!-- ============ NAVIGATION ============ -->
<nav class="navbar">
<div class="nav-content">
<a href="index.html" class="nav-brand">
<img src="assets/Prology_logo.png" alt="Prology.net" />
</a>
<ul class="nav-links">
<li><a href="index.html#home">Home</a></li>
<li><a href="index.html#services">Categories</a></li>
<li><a href="index.html#quality">Why Choose Us</a></li>
<li><a href="index.html#who-we-serve">Who We Serve</a></li>
<li><a href="index.html#institutional">Gov &amp; Corp</a></li>
<li><a href="index.html#contact">Contact</a></li>
<li><a href="about-us.html">About Us</a></li>
</ul>
<div class="nav-cta">
<button class="btn-view-products" onclick="openStoreModal()">
<svg
width="16"
height="16"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2.5"
stroke-linecap="round"
stroke-linejoin="round"
aria-hidden="true"
>
<path d="M6 2 3 6v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2V6l-3-4z" />
<line x1="3" y1="6" x2="21" y2="6" />
<path d="M16 10a4 4 0 0 1-8 0" />
</svg>
View Products
</button>
</div>
<button
class="hamburger-btn"
aria-label="Toggle navigation menu"
aria-expanded="false"
>
<span class="bar"></span>
<span class="bar"></span>
<span class="bar"></span>
</button>
</div>
</nav>
<div class="nav-backdrop" id="nav-backdrop"></div>
<!-- ============ MAIN CONTENT ============ -->
<div class="mfr-page">
<div class="container">
<nav class="mfr-breadcrumb" aria-label="Breadcrumb">
<a href="index.html">Home</a>
<span class="sep">/</span>
<span class="current">Manufacturers List</span>
</nav>
<div class="ns-mfr">
<div class="ns-mfr-hero">
<h1>Networking &amp; IT Hardware Manufacturers</h1>
<p>AZ directory of brands we stock and support</p>
</div>
<div id="ns-mfr-alpha" class="ns-mfr-alpha"></div>
<div id="ns-mfr-groups" class="ns-mfr-masonry"></div>
<div class="ns-mfr-footer">
<span id="ns-mfr-count" class="ns-mfr-count"></span>
</div>
</div>
</div>
</div>
<script src="assets/js/config.js" defer></script>
<script src="assets/js/modals.js" defer></script>
<!-- Nav hamburger -->
<script>
document.addEventListener("DOMContentLoaded", function () {
var hamburgerBtn = document.querySelector(".hamburger-btn");
var navMenu = document.querySelector(".nav-links");
var navBackdrop = document.getElementById("nav-backdrop");
if (!hamburgerBtn || !navMenu) return;
function closeNavMenu() {
navMenu.classList.remove("open");
hamburgerBtn.classList.remove("open");
hamburgerBtn.setAttribute("aria-expanded", "false");
if (navBackdrop) navBackdrop.classList.remove("open");
}
hamburgerBtn.addEventListener("click", function () {
var isOpen = navMenu.classList.toggle("open");
hamburgerBtn.classList.toggle("open", isOpen);
hamburgerBtn.setAttribute("aria-expanded", String(isOpen));
if (navBackdrop) navBackdrop.classList.toggle("open", isOpen);
});
navMenu.querySelectorAll("a").forEach(function (a) {
a.addEventListener("click", closeNavMenu);
});
if (navBackdrop) navBackdrop.addEventListener("click", closeNavMenu);
});
</script>
<!-- Manufacturers list -->
<script>
(function () {
var brands = [
"Allied Telesis",
"Arista Networks",
"Aruba Networks",
"Barracuda Networks",
"Cambium Networks",
"Ceragon Networks",
"Check Point Software Technologies",
"Cisco Systems",
"D-Link",
"Dell Technologies",
"DrayTek",
"EnGenius Technologies",
"Ericsson",
"Extreme Networks",
"F5 Networks",
"Fortinet",
"Fujitsu",
"Hewlett Packard Enterprise",
"Hitachi Vantara",
"Huawei Technologies",
"IBM",
"Infoblox",
"Juniper Networks",
"Lenovo",
"Meraki",
"MikroTik",
"NetApp",
"Netgear",
"Nokia",
"Oracle Corporation",
"Palo Alto Networks",
"Pure Storage",
"QNAP Systems",
"Radware",
"Ruckus Networks",
"Ruijie Networks",
"Seagate Technology",
"Siklu",
"Sophos",
"Supermicro",
"Synology",
"Teltonika Networks",
"TP-Link",
"TRENDnet",
"Ubiquiti Inc.",
"WatchGuard Technologies",
"Western Digital",
"ZTE",
"Zyxel Communications",
];
var grouped = {};
brands.forEach(function (b) {
var l = b[0].toUpperCase();
if (!grouped[l]) grouped[l] = [];
grouped[l].push(b);
});
var letters = Object.keys(grouped).sort();
var alphaEl = document.getElementById("ns-mfr-alpha");
"ABCDEFGHIJKLMNOPQRSTUVWXYZ".split("").forEach(function (l) {
var a = document.createElement("a");
a.href = grouped[l] ? "#ns-mfr-" + l : "#";
a.textContent = l;
if (!grouped[l]) a.className = "ns-empty";
alphaEl.appendChild(a);
});
var groupsEl = document.getElementById("ns-mfr-groups");
letters.forEach(function (l) {
var sec = document.createElement("div");
sec.className = "ns-mfr-group";
sec.id = "ns-mfr-" + l;
var hdr = document.createElement("div");
hdr.className = "ns-mfr-letter-head";
hdr.textContent = l;
sec.appendChild(hdr);
var list = document.createElement("div");
list.className = "ns-mfr-list";
grouped[l].forEach(function (b) {
var item = document.createElement("div");
item.className = "ns-mfr-item";
var name = document.createElement("div");
name.className = "ns-mfr-name";
name.textContent = b;
item.appendChild(name);
list.appendChild(item);
});
sec.appendChild(list);
groupsEl.appendChild(sec);
});
document.getElementById("ns-mfr-count").textContent =
brands.length + " manufacturers listed";
})();
</script>
<!-- ============ PROLOGY MODAL WEB COMPONENTS ============ -->
<prology-sell-modal id="wc-sell-modal"></prology-sell-modal>
<prology-source-modal id="wc-source-modal"></prology-source-modal>
<prology-quote-modal id="wc-quote-modal"></prology-quote-modal>
<prology-enquire-modal id="wc-enquire-modal"></prology-enquire-modal>
<!-- ============ STORE PICKER MODAL ============ -->
<div
class="store-modal-overlay"
id="store-modal-overlay"
role="dialog"
aria-modal="true"
aria-labelledby="store-modal-title"
>
<div class="store-modal-box">
<button
class="store-modal-close"
onclick="closeStoreModal()"
aria-label="Close"
>
</button>
<p class="store-modal-title" id="store-modal-title">
Choose Your Store
</p>
<p class="store-modal-subtitle">
Select a region to browse our products
</p>
<div class="store-options">
<a data-store="au" class="store-option store-option--active">
<span class="store-flag">
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 60 30"
width="52"
height="28"
>
<rect width="60" height="30" fill="#00205B" />
<line
x1="0"
y1="0"
x2="30"
y2="15"
stroke="#fff"
stroke-width="5"
/>
<line
x1="30"
y1="0"
x2="0"
y2="15"
stroke="#fff"
stroke-width="5"
/>
<line
x1="0"
y1="0"
x2="30"
y2="15"
stroke="#CC2529"
stroke-width="3"
/>
<line
x1="30"
y1="0"
x2="0"
y2="15"
stroke="#CC2529"
stroke-width="3"
/>
<rect x="12" y="0" width="6" height="15" fill="#fff" />
<rect x="0" y="6" width="30" height="6" fill="#fff" />
<rect x="13.5" y="0" width="3" height="15" fill="#CC2529" />
<rect x="0" y="7.5" width="30" height="3" fill="#CC2529" />
<polygon
points="7.5,17 8.3,19.5 11,19.5 8.8,21.2 9.6,23.7 7.5,22 5.4,23.7 6.2,21.2 4,19.5 6.7,19.5"
fill="#fff"
/>
<polygon
points="44,3 44.8,5.5 47.5,5.5 45.3,7.2 46.1,9.7 44,8 41.9,9.7 42.7,7.2 40.5,5.5 43.2,5.5"
fill="#fff"
/>
<polygon
points="52,8 52.6,10 54.7,10 53,11.3 53.6,13.3 52,12 50.4,13.3 51,11.3 49.3,10 51.4,10"
fill="#fff"
/>
<polygon
points="44,15 44.6,17 46.7,17 45,18.3 45.6,20.3 44,19 42.4,20.3 43,18.3 41.3,17 43.4,17"
fill="#fff"
/>
<polygon
points="37,9 37.6,11 39.7,11 38,12.3 38.6,14.3 37,13 35.4,14.3 36,12.3 34.3,11 36.4,11"
fill="#fff"
/>
<polygon
points="50,18 50.4,19.2 51.6,19.2 50.6,20 51,21.2 50,20.4 49,21.2 49.4,20 48.4,19.2 49.6,19.2"
fill="#fff"
/>
</svg>
</span>
<div class="store-info">
<div class="store-info-name">
Australia Store <span class="store-badge-active">Live</span>
</div>
<div class="store-info-desc">
Enterprise networking equipment · Ships Australia-wide
</div>
</div>
<span class="store-arrow"></span>
</a>
<a data-store="us" class="store-option store-option--active">
<span class="store-flag">
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 60 30"
width="52"
height="28"
>
<rect width="60" height="30" fill="#B22234" />
<rect y="2.31" width="60" height="2.31" fill="#fff" />
<rect y="6.92" width="60" height="2.31" fill="#fff" />
<rect y="11.54" width="60" height="2.31" fill="#fff" />
<rect y="16.15" width="60" height="2.31" fill="#fff" />
<rect y="20.77" width="60" height="2.31" fill="#fff" />
<rect y="25.38" width="60" height="2.31" fill="#fff" />
<rect width="24" height="16.15" fill="#3C3B6E" />
<g fill="#fff">
<circle cx="2.5" cy="1.6" r="1.1" />
<circle cx="6.5" cy="1.6" r="1.1" />
<circle cx="10.5" cy="1.6" r="1.1" />
<circle cx="14.5" cy="1.6" r="1.1" />
<circle cx="18.5" cy="1.6" r="1.1" />
<circle cx="22.5" cy="1.6" r="1.1" />
<circle cx="4.5" cy="4.6" r="1.1" />
<circle cx="8.5" cy="4.6" r="1.1" />
<circle cx="12.5" cy="4.6" r="1.1" />
<circle cx="16.5" cy="4.6" r="1.1" />
<circle cx="20.5" cy="4.6" r="1.1" />
<circle cx="2.5" cy="7.6" r="1.1" />
<circle cx="6.5" cy="7.6" r="1.1" />
<circle cx="10.5" cy="7.6" r="1.1" />
<circle cx="14.5" cy="7.6" r="1.1" />
<circle cx="18.5" cy="7.6" r="1.1" />
<circle cx="22.5" cy="7.6" r="1.1" />
<circle cx="4.5" cy="10.6" r="1.1" />
<circle cx="8.5" cy="10.6" r="1.1" />
<circle cx="12.5" cy="10.6" r="1.1" />
<circle cx="16.5" cy="10.6" r="1.1" />
<circle cx="20.5" cy="10.6" r="1.1" />
<circle cx="2.5" cy="13.6" r="1.1" />
<circle cx="6.5" cy="13.6" r="1.1" />
<circle cx="10.5" cy="13.6" r="1.1" />
<circle cx="14.5" cy="13.6" r="1.1" />
<circle cx="18.5" cy="13.6" r="1.1" />
<circle cx="22.5" cy="13.6" r="1.1" />
</g>
</svg>
</span>
<div class="store-info">
<div class="store-info-name">
U.S.A Store <span class="store-badge-active">Live</span>
</div>
<div class="store-info-desc">
Enterprise networking equipment · North American distribution
hub
</div>
</div>
<span class="store-arrow"></span>
</a>
</div>
</div>
</div>
<footer class="page-footer" role="contentinfo"></footer>
<script src="assets/js/footer.js" defer></script>
<script src="assets/js/chat.js" defer></script>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@ -1,74 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xhtml="http://www.w3.org/1999/xhtml">
<url>
<loc>https://prology.net/</loc>
<lastmod>2026-05-26</lastmod>
<xhtml:link rel="alternate" hreflang="x-default" href="https://prology.net/"/>
<xhtml:link rel="alternate" hreflang="en-au" href="https://prology.net/au/"/>
<xhtml:link rel="alternate" hreflang="en-us" href="https://prology.net/us/"/>
<lastmod>2026-05-13</lastmod>
<changefreq>weekly</changefreq>
<priority>1.0</priority>
</url>
<url>
<loc>https://prology.net/#home</loc>
<lastmod>2026-05-22</lastmod>
<changefreq>weekly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://prology.net/#services</loc>
<lastmod>2026-05-22</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://prology.net/#quality</loc>
<lastmod>2026-05-22</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://prology.net/#who-we-serve</loc>
<lastmod>2026-05-25</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://prology.net/#institutional</loc>
<lastmod>2026-05-22</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://prology.net/#contact</loc>
<lastmod>2026-05-22</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://prology.net/about-us.html</loc>
<lastmod>2026-05-26</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://prology.net/manufacturers-list.html</loc>
<lastmod>2026-05-26</lastmod>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://prology.net/privacy-policy-cookie-restriction-mode.html</loc>
<lastmod>2026-05-26</lastmod>
<changefreq>yearly</changefreq>
<priority>0.5</priority>
</url>
</urlset>
</urlset>

View File

@ -4,25 +4,19 @@
<!-- Landing page -->
<sitemap>
<loc>https://prology.net/sitemap-home.xml</loc>
<lastmod>2026-05-26</lastmod>
<lastmod>2026-05-13</lastmod>
</sitemap>
<!-- AU Magento store -->
<sitemap>
<loc>https://prology.net/au/sitemap.xml</loc>
<lastmod>2026-05-22</lastmod>
<lastmod>2026-05-13</lastmod>
</sitemap>
<!-- US Magento store -->
<sitemap>
<loc>https://prology.net/us/sitemap.xml</loc>
<lastmod>2026-05-22</lastmod>
<lastmod>2026-05-13</lastmod>
</sitemap>
<!-- Prology Blogs -->
<sitemap>
<loc>https://prology.net/blog/sitemap_index.xml</loc>
<lastmod>2026-07-01</lastmod>
</sitemap>
</sitemapindex>
</sitemapindex>