Security News
Maven Central Adds Sigstore Signature Validation
Maven Central now validates Sigstore signatures, making it easier for developers to verify the provenance of Java packages.
@reecem/h-bar
Advanced tools
An Announcement Banner that is lightweight and based on tailwindcss for the styling
The announcement bar uses native methods to make the library lightweight so that it can be loaded quickly, bar the webpack stuff.
Note The initial version makes use of the WordPress API to be able to get the latest post.
i.e. it expects a json structure like so:
From a url like http://blog.example.com/wp-json/wp/v2/posts?per_page=1&_fields=id,title,link
[
{
"id": 175,
"link": "https:\/\/blog.example.com\/how-to-hunt-a-vole\/",
"title": {
"rendered": "How To Hunt A Vole"
}
}
]
I plan to add more options and a parser callback that can be defined to extract a standard format.
You can install the package via npm:
npm i @reecem/h-bar
Or use jsDelivr:
...
<script src="https://unpkg.com/@reecem/h-bar?umd"></script>
...
If you are customising the styling and overriding it with your own styling then you will also need an instance of your css or a tailwindcss file installed as only the classes needed are packaged with h-bar
You can import it directly into your javascript app or use it in the html.
<script src="../hBar.js"></script>
<!-- or -->
<script src="https://unpkg.com/@reecem/h-bar?umd" defer></script>
<script>
hBar.init({
url: "http://blog.example.com/wp-json/wp/v2/posts?per_page=1&_fields=id,excerpt,title,link",
secondaryLinks: [
{
title: "Docs",
link: "http:://docs.example.com"
},
{
title: "Support",
link: "http://help.example.com"
}
],
options: {
theme: "blue",
}
});
hBar.fetchData()
</script>
The initialization object currently has this structure and defaults:
{
url: "https://your.blog/api/....",
onCompleted: "callback function",
link: "The link url, can be force and no need to fetch from API",
title: "The link url, can be force and no need to fetch from API",
secondaryLinks: [
{
title: "Docs",
link: "http:://docs.example.com"
}
],
parser: (data) => {/** Parser function */}
dismissible: false, // dismissible banner flag
dismissFor: new Date('2020-03-30'), // would dismiss it till end of March 30th 2020
theme: "gray",
headers: {
"Authorization": "Bearer {TOKEN}"
},
customStyles: {
wrapper: "hb-flex hb-w-full hd-flex-col md:hb-flex-row sm:hb-flex-row hb-text-sm hb-py-2 md:hb-px-20 hb-px-1 hb-items-center hb-justify-between",
linkWrapper: "hb-flex hb-items-center",
badge: "hb-px-2 hb-mx-2 hb-leading-relaxed hb-tracking-wider hb-uppercase hb-font-semibold hb-rounded-full hb-text-xs",
postTitle: "hover:hb-underline",
secondaryLink: "hb-mx-5 hb-cursor-pointer hover:hb-underline",
}
}
Theme colors available: gray
, lightGray
, blue
, green
, indigo
, orange
, yellow
, teal
, red
(the below images are in the order they exits)
There is the availability of adding a custom parser function to override any of the default ones provided by the package.
This is handy if you have a custom endpoint that say would return also the secondary links or has a different data structure.
The parser function should always return an object with the structure:
{
title: String,
link: String,
/** the secondaryLinks is optional.
* It will also override the links parsed in the init() arguments.
*/
secondaryLinks: [
{
title: String,
link: String,
},
]
}
You can define the function inside the init()
method as follows:
hBar.init({
url: "https://api.github.com/repos/ReeceM/h-bar/releases",
parser: (data) => {
// getting the first release on the list of releases from github.
const {name, html_url} = data[0];
return {
title: `Lateset version available ${name}`,
link: html_url
};
}
})
Available from
v0.3.0
/v1.0.0
Temporary Dismissing To be able to dismiss a notification, please note it currently removes secondary links. It is therefore useful that you use this feature when just making announcements of a event or brief notification.
The way to activate session based dismissal is:
{
//... rest of config
dismissible: true,
//... rest of config
}
This will just disable the banner for the current page visit, if the user reloads, its back.
Time based dismissing
To dismiss the banner until another time, you can set the dismissFor
variable, this requires a Date()
object.
When you set this and the banner is dismissed, the UTC milliseconds are stored in the localStorage, this is then read back when loading h-Bar.
{
//... rest of config
dismissible: true,
dismissFor: new Date('2020-03-30'), // would dismiss it till end of march 30th
}
If you fail to set the value properly, it won't dismiss and the banner will show by default.
to come please make a PR if you know how to do it on JS.
Please see CHANGELOG for more information on what has changed recently.
Please see CONTRIBUTING for details.
If you discover any security related issues, please email zsh.rce@gmail.com instead of using the issue tracker. You can also use the SECURITY doc.
The MIT License (MIT). Please see License File for more information.
FAQs
Lightweight Announcement Bar
We found that @reecem/h-bar demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Maven Central now validates Sigstore signatures, making it easier for developers to verify the provenance of Java packages.
Security News
CISOs are racing to adopt AI for cybersecurity, but hurdles in budgets and governance may leave some falling behind in the fight against cyber threats.
Research
Security News
Socket researchers uncovered a backdoored typosquat of BoltDB in the Go ecosystem, exploiting Go Module Proxy caching to persist undetected for years.