{"id":6880,"date":"2026-09-20T11:53:10","date_gmt":"2026-09-20T03:53:10","guid":{"rendered":"https:\/\/chfasteners.com\/?page_id=6880"},"modified":"2026-09-20T12:01:49","modified_gmt":"2026-09-20T04:01:49","slug":"resources","status":"publish","type":"page","link":"https:\/\/chfasteners.com\/ar_ar\/resources\/","title":{"rendered":"Resources"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"6880\" class=\"elementor elementor-6880\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-76835af e-con e-atomic-element e-flexbox-base e-3015ffd \" data-id=\"76835af\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"76835af\" data-e-type=\"e-flexbox\" data-id=\"76835af\">\n    \t\t<div class=\"elementor-element elementor-element-1e5c58e elementor-widget elementor-widget-html\" data-id=\"1e5c58e\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<style>\r\n  \/* CH Fasteners Resources page \u2014 scoped to #chf-resources *\/\r\n\r\n  \/* Hide the default WordPress\/Blocksy page title area on this Resources page. *\/\r\n  body.page .hero-section,\r\n  body.page .entry-header,\r\n  body.page h1.entry-title,\r\n  body.page .ct-page-title,\r\n  body.page .page-title,\r\n  body.page .elementor-page-title {\r\n    display: none !important;\r\n  }\r\n\r\n  body.page .site-main,\r\n  body.page .content-area,\r\n  body.page .entry-content {\r\n    margin-top: 0 !important;\r\n  }\r\n\r\n  #chf-resources,\r\n  #chf-resources * {\r\n    box-sizing: border-box;\r\n  }\r\n\r\n  #chf-resources {\r\n    --chf-blue: #1769aa;\r\n    --chf-blue-dark: #0f568e;\r\n    --chf-orange: #e8752e;\r\n    --chf-orange-dark: #c95f1e;\r\n    --chf-heading: #172b3a;\r\n    --chf-text: #52606d;\r\n    --chf-muted: #6d7b88;\r\n    --chf-border: #dce4ec;\r\n    --chf-light: #f4f7fa;\r\n    --chf-soft-blue: #eef6fc;\r\n    --chf-white: #ffffff;\r\n    width: 100vw;\r\n    max-width: 100vw;\r\n    margin-left: calc(50% - 50vw);\r\n    overflow-x: clip;\r\n    color: var(--chf-text);\r\n    background: var(--chf-white);\r\n    font-family: inherit;\r\n    font-size: 16px;\r\n    line-height: 1.65;\r\n  }\r\n\r\n  #chf-resources a {\r\n    color: inherit;\r\n    text-decoration: none;\r\n  }\r\n\r\n  #chf-resources h1,\r\n  #chf-resources h2,\r\n  #chf-resources h3,\r\n  #chf-resources p {\r\n    margin-top: 0;\r\n  }\r\n\r\n  #chf-resources h1,\r\n  #chf-resources h2,\r\n  #chf-resources h3 {\r\n    color: var(--chf-heading);\r\n    font-family: inherit;\r\n    overflow-wrap: break-word;\r\n  }\r\n\r\n  #chf-resources .chf-wrap {\r\n    width: min(1240px, calc(100% - 48px));\r\n    margin-inline: auto;\r\n  }\r\n\r\n  #chf-resources .chf-kicker {\r\n    margin-bottom: 12px;\r\n    color: var(--chf-blue);\r\n    font-size: 0.78rem;\r\n    line-height: 1.4;\r\n    font-weight: 750;\r\n    letter-spacing: 0.13em;\r\n    text-transform: uppercase;\r\n  }\r\n\r\n  #chf-resources .chf-text-link {\r\n    display: inline-flex;\r\n    align-items: center;\r\n    gap: 7px;\r\n    color: var(--chf-blue);\r\n    font-weight: 650;\r\n  }\r\n\r\n  #chf-resources .chf-text-link:hover,\r\n  #chf-resources .chf-text-link:focus-visible {\r\n    color: var(--chf-blue-dark);\r\n  }\r\n\r\n  #chf-resources a:focus-visible,\r\n  #chf-resources button:focus-visible,\r\n  #chf-resources input:focus-visible {\r\n    outline: 3px solid rgba(23, 105, 170, 0.35);\r\n    outline-offset: 3px;\r\n  }\r\n\r\n  #chf-resources .chf-btn {\r\n    display: inline-flex;\r\n    min-height: 46px;\r\n    align-items: center;\r\n    justify-content: center;\r\n    padding: 0 20px;\r\n    border: 1px solid transparent;\r\n    border-radius: 4px;\r\n    font-size: 0.94rem;\r\n    line-height: 1;\r\n    font-weight: 650;\r\n    transition: color 0.2s ease, background-color 0.2s ease, border-color 0.2s ease, transform 0.2s ease;\r\n  }\r\n\r\n  #chf-resources .chf-btn:hover,\r\n  #chf-resources .chf-btn:focus-visible {\r\n    transform: translateY(-1px);\r\n  }\r\n\r\n  #chf-resources .chf-btn--primary {\r\n    color: var(--chf-white);\r\n    background: var(--chf-orange);\r\n    border-color: var(--chf-orange);\r\n  }\r\n\r\n  #chf-resources .chf-btn--primary:hover,\r\n  #chf-resources .chf-btn--primary:focus-visible {\r\n    color: var(--chf-white);\r\n    background: var(--chf-orange-dark);\r\n    border-color: var(--chf-orange-dark);\r\n  }\r\n\r\n  #chf-resources .chf-btn--outline {\r\n    color: var(--chf-blue);\r\n    background: var(--chf-white);\r\n    border-color: var(--chf-blue);\r\n  }\r\n\r\n  #chf-resources .chf-btn--outline:hover,\r\n  #chf-resources .chf-btn--outline:focus-visible {\r\n    color: var(--chf-white);\r\n    background: var(--chf-blue);\r\n  }\r\n\r\n  \/* Hero *\/\r\n  #chf-resources .chf-res-hero {\r\n    padding: 72px 0 58px;\r\n    background:\r\n      radial-gradient(circle at 12% 18%, rgba(23, 105, 170, 0.1), transparent 32%),\r\n      linear-gradient(135deg, #f8fafc 0%, #eef4f8 100%);\r\n  }\r\n\r\n  #chf-resources .chf-res-hero-inner {\r\n    max-width: 850px;\r\n  }\r\n\r\n  #chf-resources .chf-res-hero h1 {\r\n    max-width: 820px;\r\n    margin-bottom: 18px;\r\n    font-size: clamp(2.4rem, 4vw, 4rem);\r\n    line-height: 1.08;\r\n    letter-spacing: -0.035em;\r\n    font-weight: 750;\r\n  }\r\n\r\n  #chf-resources .chf-res-hero p:not(.chf-kicker) {\r\n    max-width: 760px;\r\n    margin-bottom: 0;\r\n    font-size: clamp(1.02rem, 1.35vw, 1.15rem);\r\n  }\r\n\r\n  \/* Main layout *\/\r\n  #chf-resources .chf-res-main {\r\n    padding: 72px 0 88px;\r\n  }\r\n\r\n  #chf-resources .chf-res-layout {\r\n    display: grid;\r\n    grid-template-columns: minmax(0, 3fr) minmax(270px, 1fr);\r\n    gap: 34px;\r\n    align-items: start;\r\n  }\r\n\r\n  #chf-resources .chf-res-panel,\r\n  #chf-resources .chf-res-sidebar-card {\r\n    border: 1px solid var(--chf-border);\r\n    border-radius: 8px;\r\n    background: var(--chf-white);\r\n    box-shadow: 0 10px 28px rgba(23, 43, 58, 0.05);\r\n  }\r\n\r\n  #chf-resources .chf-res-panel-head {\r\n    display: flex;\r\n    align-items: flex-end;\r\n    justify-content: space-between;\r\n    gap: 20px;\r\n    padding: 28px 30px 24px;\r\n    border-bottom: 1px solid var(--chf-border);\r\n  }\r\n\r\n  #chf-resources .chf-res-panel-head h2 {\r\n    margin-bottom: 6px;\r\n    font-size: clamp(1.55rem, 2vw, 2.05rem);\r\n    line-height: 1.18;\r\n    letter-spacing: -0.02em;\r\n    font-weight: 730;\r\n  }\r\n\r\n  #chf-resources .chf-res-panel-head p {\r\n    margin-bottom: 0;\r\n    font-size: 0.96rem;\r\n  }\r\n\r\n  #chf-resources .chf-res-search {\r\n    display: flex;\r\n    min-width: min(310px, 100%);\r\n    align-items: center;\r\n    gap: 8px;\r\n  }\r\n\r\n  #chf-resources .chf-res-search input {\r\n    width: 100%;\r\n    min-height: 44px;\r\n    padding: 0 14px;\r\n    border: 1px solid var(--chf-border);\r\n    border-radius: 4px;\r\n    color: var(--chf-heading);\r\n    background: var(--chf-white);\r\n    font: inherit;\r\n    font-size: 0.92rem;\r\n  }\r\n\r\n  #chf-resources .chf-res-list {\r\n    display: grid;\r\n    grid-template-columns: repeat(2, minmax(0, 1fr));\r\n    gap: 18px;\r\n    padding: 24px 30px 30px;\r\n  }\r\n\r\n  #chf-resources .chf-res-card {\r\n    display: flex;\r\n    min-height: 214px;\r\n    flex-direction: column;\r\n    padding: 24px;\r\n    border: 1px solid var(--chf-border);\r\n    border-radius: 7px;\r\n    background: linear-gradient(180deg, #ffffff 0%, #fbfdff 100%);\r\n    transition: border-color 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease;\r\n  }\r\n\r\n  #chf-resources .chf-res-card:hover,\r\n  #chf-resources .chf-res-card:focus-within {\r\n    border-color: rgba(23, 105, 170, 0.58);\r\n    transform: translateY(-3px);\r\n    box-shadow: 0 16px 34px rgba(23, 43, 58, 0.08);\r\n  }\r\n\r\n  #chf-resources .chf-res-label {\r\n    display: inline-flex;\r\n    width: fit-content;\r\n    margin-bottom: 14px;\r\n    padding: 5px 9px;\r\n    border-radius: 999px;\r\n    color: var(--chf-blue);\r\n    background: var(--chf-soft-blue);\r\n    font-size: 0.72rem;\r\n    line-height: 1;\r\n    font-weight: 750;\r\n    letter-spacing: 0.08em;\r\n    text-transform: uppercase;\r\n  }\r\n\r\n  #chf-resources .chf-res-card h3 {\r\n    margin-bottom: 10px;\r\n    font-size: 1.15rem;\r\n    line-height: 1.32;\r\n    font-weight: 720;\r\n  }\r\n\r\n  #chf-resources .chf-res-card p {\r\n    display: -webkit-box;\r\n    overflow: hidden;\r\n    -webkit-box-orient: vertical;\r\n    -webkit-line-clamp: 3;\r\n    margin-bottom: 18px;\r\n    font-size: 0.93rem;\r\n  }\r\n\r\n  #chf-resources .chf-res-card .chf-text-link {\r\n    margin-top: auto;\r\n    font-size: 0.92rem;\r\n  }\r\n\r\n  #chf-resources .chf-res-empty {\r\n    grid-column: 1 \/ -1;\r\n    padding: 34px;\r\n    border: 1px dashed rgba(23, 105, 170, 0.45);\r\n    border-radius: 7px;\r\n    text-align: center;\r\n    background: #fbfdff;\r\n  }\r\n\r\n  #chf-resources .chf-res-empty h3 {\r\n    margin-bottom: 8px;\r\n    font-size: 1.15rem;\r\n  }\r\n\r\n  #chf-resources .chf-res-empty p {\r\n    margin-bottom: 0;\r\n    font-size: 0.94rem;\r\n  }\r\n\r\n  \/* Sidebar *\/\r\n  #chf-resources .chf-res-sidebar {\r\n    position: sticky;\r\n    top: 24px;\r\n    display: grid;\r\n    gap: 18px;\r\n  }\r\n\r\n  #chf-resources .chf-res-sidebar-card {\r\n    padding: 24px;\r\n  }\r\n\r\n  #chf-resources .chf-res-sidebar-card h2,\r\n  #chf-resources .chf-res-sidebar-card h3 {\r\n    margin-bottom: 14px;\r\n    font-size: 1.05rem;\r\n    line-height: 1.28;\r\n    font-weight: 730;\r\n  }\r\n\r\n  #chf-resources .chf-res-sidebar-card p {\r\n    margin-bottom: 16px;\r\n    font-size: 0.92rem;\r\n  }\r\n\r\n  #chf-resources .chf-res-nav-list,\r\n  #chf-resources .chf-res-topic-list {\r\n    display: grid;\r\n    gap: 9px;\r\n    margin: 0;\r\n    padding: 0;\r\n    list-style: none;\r\n  }\r\n\r\n  #chf-resources .chf-res-nav-list a,\r\n  #chf-resources .chf-res-topic-btn {\r\n    display: flex;\r\n    width: 100%;\r\n    align-items: center;\r\n    justify-content: space-between;\r\n    gap: 12px;\r\n    padding: 11px 12px;\r\n    border: 1px solid var(--chf-border);\r\n    border-radius: 5px;\r\n    color: var(--chf-heading);\r\n    background: var(--chf-white);\r\n    font: inherit;\r\n    font-size: 0.91rem;\r\n    font-weight: 620;\r\n    text-align: left;\r\n    cursor: pointer;\r\n    transition: color 0.2s ease, background-color 0.2s ease, border-color 0.2s ease;\r\n  }\r\n\r\n  #chf-resources .chf-res-nav-list a::after,\r\n  #chf-resources .chf-res-topic-btn::after {\r\n    color: var(--chf-blue);\r\n    content: \"\u2192\";\r\n    font-weight: 750;\r\n  }\r\n\r\n  #chf-resources .chf-res-nav-list a:hover,\r\n  #chf-resources .chf-res-topic-btn:hover,\r\n  #chf-resources .chf-res-topic-btn.is-active {\r\n    color: var(--chf-blue-dark);\r\n    background: var(--chf-soft-blue);\r\n    border-color: rgba(23, 105, 170, 0.35);\r\n  }\r\n\r\n  #chf-resources .chf-res-side-cta {\r\n    color: rgba(255, 255, 255, 0.83);\r\n    background:\r\n      radial-gradient(circle at 84% 10%, rgba(255, 255, 255, 0.13), transparent 34%),\r\n      var(--chf-heading);\r\n    border-color: var(--chf-heading);\r\n  }\r\n\r\n  #chf-resources .chf-res-side-cta h2,\r\n  #chf-resources .chf-res-side-cta h3 {\r\n    color: var(--chf-white);\r\n  }\r\n\r\n  #chf-resources .chf-res-side-cta .chf-btn {\r\n    width: 100%;\r\n    margin-top: 4px;\r\n  }\r\n\r\n  #chf-resources .chf-res-note {\r\n    margin-top: 14px;\r\n    color: var(--chf-muted);\r\n    font-size: 0.86rem;\r\n  }\r\n\r\n  @media (max-width: 1020px) {\r\n    #chf-resources .chf-res-layout {\r\n      grid-template-columns: 1fr;\r\n    }\r\n\r\n    #chf-resources .chf-res-sidebar {\r\n      position: static;\r\n      grid-template-columns: repeat(2, minmax(0, 1fr));\r\n    }\r\n  }\r\n\r\n  @media (max-width: 760px) {\r\n    #chf-resources .chf-wrap {\r\n      width: min(100% - 40px, 720px);\r\n    }\r\n\r\n    #chf-resources .chf-res-hero {\r\n      padding: 58px 0 44px;\r\n    }\r\n\r\n    #chf-resources .chf-res-main {\r\n      padding: 52px 0 68px;\r\n    }\r\n\r\n    #chf-resources .chf-res-panel-head {\r\n      display: block;\r\n      padding: 24px;\r\n    }\r\n\r\n    #chf-resources .chf-res-search {\r\n      margin-top: 18px;\r\n    }\r\n\r\n    #chf-resources .chf-res-list {\r\n      grid-template-columns: 1fr;\r\n      padding: 20px 24px 24px;\r\n    }\r\n\r\n    #chf-resources .chf-res-sidebar {\r\n      grid-template-columns: 1fr;\r\n    }\r\n  }\r\n\r\n  @media (max-width: 520px) {\r\n    #chf-resources .chf-wrap {\r\n      width: calc(100% - 36px);\r\n    }\r\n\r\n    #chf-resources .chf-res-hero h1 {\r\n      font-size: 2.25rem;\r\n    }\r\n  }\r\n<\/style>\r\n\r\n<div id=\"chf-resources\">\r\n  <section class=\"chf-res-hero\" aria-labelledby=\"chf-resources-title\">\r\n    <div class=\"chf-wrap chf-res-hero-inner\">\r\n      <p class=\"chf-kicker\">Industry Resources<\/p>\r\n      <h1 id=\"chf-resources-title\">Hardware Sourcing Guides for Distributors and Project Buyers<\/h1>\r\n      <p>Review practical articles about glass hardware, screws, product selection, market requirements and sourcing preparation before sending your RFQ.<\/p>\r\n    <\/div>\r\n  <\/section>\r\n\r\n  <main class=\"chf-res-main\">\r\n    <div class=\"chf-wrap chf-res-layout\">\r\n      <section class=\"chf-res-panel\" aria-labelledby=\"chf-latest-resources-title\">\r\n        <div class=\"chf-res-panel-head\">\r\n          <div>\r\n            <p class=\"chf-kicker\">Latest articles<\/p>\r\n            <h2 id=\"chf-latest-resources-title\">Resources and Sourcing Notes<\/h2>\r\n            <p>Published buyer guides, SEO\/GEO articles and sourcing notes are shown here without images, authors, dates or comments.<\/p>\r\n          <\/div>\r\n          <form class=\"chf-res-search\" role=\"search\" aria-label=\"Search resources\" onsubmit=\"return false;\">\r\n            <input id=\"chf-res-search-input\" type=\"search\" placeholder=\"Search resources...\" autocomplete=\"off\">\r\n          <\/form>\r\n        <\/div>\r\n\r\n        <div id=\"chf-res-list\" class=\"chf-res-list\" aria-live=\"polite\">\r\n          <article class=\"chf-res-card\" data-static-resource=\"1\">\r\n            <span class=\"chf-res-label\">Buyer Guides<\/span>\r\n            <h3><a href=\"\/buyer-guides\/\">Buyer Guides for Glass Hardware, Shower Door Hardware and Fasteners<\/a><\/h3>\r\n            <p>Find practical sourcing guides for distributors, importers and project buyers reviewing glass hardware, shower fittings, rollers, spigots and screws.<\/p>\r\n            <a class=\"chf-text-link\" href=\"\/buyer-guides\/\">Read Resource <span aria-hidden=\"true\">\u2192<\/span><\/a>\r\n          <\/article>\r\n\r\n          <article class=\"chf-res-card\" data-static-resource=\"1\">\r\n            <span class=\"chf-res-label\">Glass Hardware<\/span>\r\n            <h3><a href=\"\/glass-hardware\/\">Glass Hardware Selection Notes for B2B Buyers<\/a><\/h3>\r\n            <p>Review key product families, common application requirements and information to prepare before requesting glass hardware quotations.<\/p>\r\n            <a class=\"chf-text-link\" href=\"\/glass-hardware\/\">Read Resource <span aria-hidden=\"true\">\u2192<\/span><\/a>\r\n          <\/article>\r\n\r\n          <article class=\"chf-res-card\" data-static-resource=\"1\">\r\n            <span class=\"chf-res-label\">Screws & Fasteners<\/span>\r\n            <h3><a href=\"\/screws-accessories\/\">Screws and Fasteners Sourcing Notes<\/a><\/h3>\r\n            <p>Use this resource entry to review stainless screws, self-drilling screws, machine screws, wood screws and related sourcing requirements.<\/p>\r\n            <a class=\"chf-text-link\" href=\"\/screws-accessories\/\">Read Resource <span aria-hidden=\"true\">\u2192<\/span><\/a>\r\n          <\/article>\r\n        <\/div>\r\n      <\/section>\r\n\r\n      <aside class=\"chf-res-sidebar\" aria-label=\"Resource navigation\">\r\n        <section class=\"chf-res-sidebar-card\">\r\n          <h2>Browse Topics<\/h2>\r\n          <ul class=\"chf-res-topic-list\" aria-label=\"Filter resources by topic\">\r\n            <li><button class=\"chf-res-topic-btn is-active\" type=\"button\" data-topic=\"all\">All Resources<\/button><\/li>\r\n            <li><button class=\"chf-res-topic-btn\" type=\"button\" data-topic=\"glass\">Glass Hardware<\/button><\/li>\r\n            <li><button class=\"chf-res-topic-btn\" type=\"button\" data-topic=\"screw\">Screws &amp; Fasteners<\/button><\/li>\r\n            <li><button class=\"chf-res-topic-btn\" type=\"button\" data-topic=\"sliding\">Sliding Systems<\/button><\/li>\r\n            <li><button class=\"chf-res-topic-btn\" type=\"button\" data-topic=\"market\">Market Notes<\/button><\/li>\r\n          <\/ul>\r\n        <\/section>\r\n\r\n        <section class=\"chf-res-sidebar-card\">\r\n          <h3>Product Shortcuts<\/h3>\r\n          <ul class=\"chf-res-nav-list\">\r\n            <li><a href=\"\/glass-hardware\/\">Glass Hardware<\/a><\/li>\r\n            <li><a href=\"\/screws-accessories\/\">Screws &amp; Accessories<\/a><\/li>\r\n            <li><a href=\"\/product-category\/glass-hardware\/shower-door-hinges\/\">Shower Door Hinges<\/a><\/li>\r\n            <li><a href=\"\/product-category\/glass-hardware\/shower-door-rollers\/\">Shower Door Rollers<\/a><\/li>\r\n            <li><a href=\"\/product-category\/screws-accessories\/screws\/self-drilling-screws\/\">Self-Drilling Screws<\/a><\/li>\r\n          <\/ul>\r\n        <\/section>\r\n\r\n        <section class=\"chf-res-sidebar-card\">\r\n          <h3>Market Resources<\/h3>\r\n          <ul class=\"chf-res-nav-list\">\r\n            <li><a href=\"\/markets\/australia\/\">Australia<\/a><\/li>\r\n            <li><a href=\"\/markets\/south-africa\/\">South Africa<\/a><\/li>\r\n            <li><a href=\"\/markets\/chile\/\">Chile<\/a><\/li>\r\n            <li><a href=\"\/markets\/peru\/\">Peru<\/a><\/li>\r\n            <li><a href=\"\/markets\/saudi-arabia\/\">Saudi Arabia<\/a><\/li>\r\n            <li><a href=\"\/markets\/united-kingdom\/\">United Kingdom<\/a><\/li>\r\n          <\/ul>\r\n        <\/section>\r\n\r\n        <section class=\"chf-res-sidebar-card chf-res-side-cta\">\r\n          <h3>Need Product Matching?<\/h3>\r\n          <p>Send your target product, size, material, finish, quantity or current supplier reference for review.<\/p>\r\n          <a class=\"chf-btn chf-btn--primary\" href=\"https:\/\/chfasteners.com\/request-a-quote\/#quote-form\">Request a Quote<\/a>\r\n        <\/section>\r\n      <\/aside>\r\n    <\/div>\r\n  <\/main>\r\n<\/div>\r\n\r\n<script>\r\n(function () {\r\n  const root = document.getElementById('chf-resources');\r\n  if (!root) return;\r\n\r\n  const list = root.querySelector('#chf-res-list');\r\n  const searchInput = root.querySelector('#chf-res-search-input');\r\n  const topicButtons = Array.from(root.querySelectorAll('.chf-res-topic-btn'));\r\n  const apiBase = window.location.origin;\r\n\r\n  const fallbackResources = [\r\n    {\r\n      title: 'Buyer Guides for Glass Hardware, Shower Door Hardware and Fasteners',\r\n      excerpt: 'Find practical sourcing guides for distributors, importers and project buyers reviewing glass hardware, shower fittings, rollers, spigots and screws.',\r\n      link: '\/buyer-guides\/',\r\n      label: 'Buyer Guides'\r\n    },\r\n    {\r\n      title: 'Glass Hardware Selection Notes for B2B Buyers',\r\n      excerpt: 'Review key product families, common application requirements and information to prepare before requesting glass hardware quotations.',\r\n      link: '\/glass-hardware\/',\r\n      label: 'Glass Hardware'\r\n    },\r\n    {\r\n      title: 'Screws and Fasteners Sourcing Notes',\r\n      excerpt: 'Review stainless screws, self-drilling screws, machine screws, wood screws and related sourcing requirements before sending an RFQ.',\r\n      link: '\/screws-accessories\/',\r\n      label: 'Screws & Fasteners'\r\n    }\r\n  ];\r\n\r\n  let resources = fallbackResources.slice();\r\n  let activeTopic = 'all';\r\n\r\n  const topicWords = {\r\n    glass: ['glass', 'hinge', 'clamp', 'shower', 'railing', 'spigot', 'standoff', 'door hardware'],\r\n    screw: ['screw', 'fastener', 'bolt', 'nut', 'washer', 'drilling', 'machine screw', 'deck screw'],\r\n    sliding: ['sliding', 'roller', 'track', 'guide', 'damper', 'soft close'],\r\n    market: ['market', 'australia', 'south africa', 'chile', 'peru', 'saudi', 'united kingdom', 'uk', 'usa', 'canada']\r\n  };\r\n\r\n  function stripHtml(html) {\r\n    const temp = document.createElement('div');\r\n    temp.innerHTML = html || '';\r\n    return (temp.textContent || temp.innerText || '').replace(\/\\s+\/g, ' ').trim();\r\n  }\r\n\r\n  function trimText(text, max) {\r\n    const clean = (text || '').replace(\/\\s+\/g, ' ').trim();\r\n    if (clean.length <= max) return clean;\r\n    return clean.slice(0, max).replace(\/\\s+\\S*$\/, '') + '...';\r\n  }\r\n\r\n  function detectLabel(item) {\r\n    if (item.label) return item.label;\r\n    const text = (item.title + ' ' + item.excerpt + ' ' + item.link).toLowerCase();\r\n    if (text.includes('buyer guide') || text.includes('\/buyer-guides')) return 'Buyer Guides';\r\n    if (topicWords.glass.some(word => text.includes(word))) return 'Glass Hardware';\r\n    if (topicWords.screw.some(word => text.includes(word))) return 'Screws & Fasteners';\r\n    if (topicWords.sliding.some(word => text.includes(word))) return 'Sliding Systems';\r\n    if (topicWords.market.some(word => text.includes(word))) return 'Market Notes';\r\n    return 'Sourcing Guide';\r\n  }\r\n\r\n  function normalizePost(post, source) {\r\n    const titleValue = post.title && post.title.rendered ? post.title.rendered : (post.title || '');\r\n    const title = stripHtml(titleValue || 'Untitled Resource');\r\n    const excerptSource = post.excerpt && post.excerpt.rendered ? post.excerpt.rendered : (post.excerpt || post.description || '');\r\n    const excerpt = trimText(stripHtml(excerptSource) || 'Open this sourcing note for product selection, purchasing preparation and market guidance.', 155);\r\n    const link = post.link || post.url || '#';\r\n    return { title, excerpt, link, source };\r\n  }\r\n\r\n  function isUsefulResource(item) {\r\n    if (!item || !item.title || !item.link) return false;\r\n    const link = item.link.toLowerCase();\r\n    const text = (item.title + ' ' + item.excerpt + ' ' + link).toLowerCase();\r\n    if (link.includes('\/privacy') || link.includes('\/terms') || link.includes('\/cart') || link.includes('\/checkout') || link.includes('\/my-account')) return false;\r\n    return (\r\n      text.includes('guide') || text.includes('resource') || text.includes('sourcing') ||\r\n      text.includes('glass') || text.includes('hardware') || text.includes('screw') ||\r\n      text.includes('fastener') || text.includes('market') || text.includes('buyer')\r\n    );\r\n  }\r\n\r\n  function dedupe(items) {\r\n    const seen = new Set();\r\n    return items.filter(item => {\r\n      const key = (item.link || item.title).replace(\/\\\/$\/, '').toLowerCase();\r\n      if (seen.has(key)) return false;\r\n      seen.add(key);\r\n      return true;\r\n    });\r\n  }\r\n\r\n  function passesTopic(item) {\r\n    if (activeTopic === 'all') return true;\r\n    const words = topicWords[activeTopic] || [];\r\n    const text = (item.title + ' ' + item.excerpt + ' ' + item.link).toLowerCase();\r\n    return words.some(word => text.includes(word));\r\n  }\r\n\r\n  function passesSearch(item) {\r\n    const query = (searchInput.value || '').trim().toLowerCase();\r\n    if (!query) return true;\r\n    const text = (item.title + ' ' + item.excerpt + ' ' + item.link).toLowerCase();\r\n    return text.includes(query);\r\n  }\r\n\r\n  function render() {\r\n    const filtered = resources.filter(item => passesTopic(item) && passesSearch(item));\r\n    const shown = filtered.length ? filtered : fallbackResources;\r\n\r\n    list.innerHTML = shown.map(item => {\r\n      const label = detectLabel(item);\r\n      return `\r\n        <article class=\"chf-res-card\">\r\n          <span class=\"chf-res-label\">${label}<\/span>\r\n          <h3><a href=\"${item.link}\">${item.title}<\/a><\/h3>\r\n          <p>${item.excerpt}<\/p>\r\n          <a class=\"chf-text-link\" href=\"${item.link}\">Read Resource <span aria-hidden=\"true\">\u2192<\/span><\/a>\r\n        <\/article>\r\n      `;\r\n    }).join('');\r\n  }\r\n\r\n  async function fetchJson(url) {\r\n    const response = await fetch(url, { credentials: 'same-origin' });\r\n    if (!response.ok) throw new Error('Endpoint unavailable: ' + url);\r\n    return response.json();\r\n  }\r\n\r\n  async function loadResources() {\r\n    const endpoints = [\r\n      `${apiBase}\/wp-json\/wp\/v2\/posts?per_page=24&orderby=date&order=desc&status=publish&_fields=id,link,title,excerpt,slug`,\r\n      `${apiBase}\/wp-json\/wp\/v2\/pages?per_page=24&orderby=modified&order=desc&status=publish&search=guide&_fields=id,link,title,excerpt,slug`,\r\n      `${apiBase}\/wp-json\/wp\/v2\/pages?per_page=24&orderby=modified&order=desc&status=publish&search=hardware&_fields=id,link,title,excerpt,slug`,\r\n      `${apiBase}\/wp-json\/wp\/v2\/search?per_page=24&search=guide&subtype=post,page`,\r\n      `${apiBase}\/wp-json\/wp\/v2\/search?per_page=24&search=sourcing&subtype=post,page`\r\n    ];\r\n\r\n    const settled = await Promise.allSettled(endpoints.map(fetchJson));\r\n    let loaded = [];\r\n\r\n    settled.forEach(result => {\r\n      if (result.status !== 'fulfilled' || !Array.isArray(result.value)) return;\r\n      result.value.forEach(item => loaded.push(normalizePost(item, 'wp-rest')));\r\n    });\r\n\r\n    loaded = dedupe(loaded.filter(isUsefulResource));\r\n    resources = loaded.length ? dedupe(loaded.concat(fallbackResources)) : fallbackResources.slice();\r\n    render();\r\n  }\r\n\r\n  topicButtons.forEach(button => {\r\n    button.addEventListener('click', () => {\r\n      activeTopic = button.getAttribute('data-topic') || 'all';\r\n      topicButtons.forEach(btn => btn.classList.toggle('is-active', btn === button));\r\n      render();\r\n    });\r\n  });\r\n\r\n  if (searchInput) {\r\n    searchInput.addEventListener('input', render);\r\n  }\r\n\r\n  render();\r\n  loadResources().catch(render);\r\n})();\r\n<\/script>\t\t\t\t<\/div>\n\t\t\n<\/div>\n\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Industry Resources Hardware Sourcing Guides for Distributors and Project Buyers Review practical articles about glass hardware, screws, product selection, market requirements and sourcing preparation before sending your RFQ. Latest articles Resources and Sourcing Notes Published buyer guides, SEO\/GEO articles and sourcing notes are shown here without images, authors, dates or comments. Buyer Guides Buyer Guides [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-6880","page","type-page","status-publish","hentry"],"blocksy_meta":{"styles_descriptor":{"styles":{"desktop":"","tablet":"","mobile":""},"google_fonts":[],"version":7}},"_links":{"self":[{"href":"https:\/\/chfasteners.com\/ar_ar\/wp-json\/wp\/v2\/pages\/6880","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/chfasteners.com\/ar_ar\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/chfasteners.com\/ar_ar\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/chfasteners.com\/ar_ar\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/chfasteners.com\/ar_ar\/wp-json\/wp\/v2\/comments?post=6880"}],"version-history":[{"count":10,"href":"https:\/\/chfasteners.com\/ar_ar\/wp-json\/wp\/v2\/pages\/6880\/revisions"}],"predecessor-version":[{"id":6891,"href":"https:\/\/chfasteners.com\/ar_ar\/wp-json\/wp\/v2\/pages\/6880\/revisions\/6891"}],"wp:attachment":[{"href":"https:\/\/chfasteners.com\/ar_ar\/wp-json\/wp\/v2\/media?parent=6880"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}