diff --git a/README.md b/README.md index 73be689..517c1d6 100644 --- a/README.md +++ b/README.md @@ -2,33 +2,143 @@ ![Logo](https://cdn.cottle.cloud/GitHub/LittleLink/littlelink.gif) -LittleLink Extended is an addon repository for [LittleLink](https://github.com/sethcottle/littlelink). This repository welcomes more niche services that aren't as globally or regionally popular as required by the core LittleLink repo. Users will be able to import the entirety of these extensions into their fork of LittleLink or selectively add services from it by copy and pasting what they'd like to use into their `brands.css` file and `icons` folders. +**LittleLink Extended** is an add-on repository for [LittleLink](https://github.com/sethcottle/littlelink). It welcomes more niche or region-specific services that aren’t quite popular enough for the core LittleLink repo. By importing this extension, you can expand your LittleLink setup with additional brands and icons. You can either import everything or selectively copy only the pieces you need. -### 📂 Getting Started +--- -You will need to fork or download a copy of the original [LittleLink project](https://github.com/sethcottle/littlelink) to use these extended brands in tandem with. +## 📂 Getting Started -#### ⬇️ Import the Extended CSS +To use **LittleLink Extended**, you’ll need a copy of the original [LittleLink project](https://github.com/sethcottle/littlelink). Fork or download that repository first. -Copy and paste the `brands-extended.css` file that is in the `css` folder of this repository into the `css` folder that is in your copy of the [LittleLink project](https://github.com/sethcottle/littlelink). Your folder should look a little something like this after: +Then: -![Extended Brands CSS](https://cdn.cottle.cloud/littlelink/brands-extended-folder.png) +1. **Clone or download** this **LittleLink Extended** repo. +2. **Copy the necessary files** (CSS and icons) into your LittleLink project. +3. **Reference the new CSS** in your `index.html`. -#### ⬇️ Import the Extended Icons +### 1. Import the Extended CSS -Copy and paste the `icons-extended` folder that is in the `images` folder of this repository into the `images` folder in your copy of the [LittleLink project](https://github.com/sethcottle/littlelink). Your folder should look a little something like this after: +In this repo’s `css` folder, you’ll find **`brands-extended.css`**. Copy that file into the `css` folder of your LittleLink project. Your folder structure should look something like this afterward: -![Extended Brands Icons](https://cdn.cottle.cloud/littlelink/icons-extended-folder.png) +``` +littlelink +│ +├── css +│ ├── reset.css +│ ├── style.css +│ ├── brands.css +│ └── brands-extended.css ← (new) +│ +└── images + └── icons +``` -When access iconography, you'll reference the folder `images/icons-extended/...` to refence the icons included with LittleLink Extended. +### 2. Import the Extended Icons -#### ✏️ Edit `index.html` to include the Extended CSS +In this repo’s `images` folder, you’ll find a folder named **`icons-extended`**. Copy that entire folder into the `images` folder of your LittleLink project. Your structure might then look like: -Open `index.html` in your copy of the [LittleLink project](https://github.com/sethcottle/littlelink), the first section of the HTML has a `` section. Find the CSS segment `` and underneath it, add ``. It should look something like this: +``` +littlelink +│ +├── css +│ ├── ... +├── images +│ ├── avatar.png +│ ├── icons +│ └── icons-extended ← (new) +└── ... +``` +When you need to reference an extended icon, you’ll do so via `images/icons-extended/...`. -![CSS Preview](https://cdn.cottle.cloud/GitHub/LittleLink/css.png) +### 3. Edit `index.html` to Include the Extended CSS -### 👍 That's it! +Open your LittleLink project’s `index.html`. In the `` section, find the line that references `brands.css`: -View the original [LittleLink repo](https://github.com/sethcottle/littlelink). \ No newline at end of file +```html + +``` + +Beneath it, add a line for the extended CSS: + +```html + +``` + +It should look something like: + +```html + + + + +``` + +That’s all you need to pull in the extended brand styles. + +--- + +## 👍 That’s It! + +At this point, you’ve successfully imported **LittleLink Extended**. To see how to use the newly added buttons, simply reference them in your `index.html` or `preview.html` by using their associated classes (e.g., `button-anilist`, `button-bereal`, etc.). + +For more information on the original LittleLink project, check out the [LittleLink repo](https://github.com/sethcottle/littlelink). + +--- + +# Extended Modules + +## Sensitive Content Warning + +In addition to extended brands, this repository includes an **optional module** for adding **“Sensitive Content”** warnings. This module lets you display a slide-down panel warning users about potentially sensitive or age-restricted content. Each panel can include a **“Continue”** button that opens a custom link, set entirely in your HTML. + +Sensitive Content Warning + +### How It Works + +1. **Copy the CSS** + Download `sensitive-content.css` from this repo (in the `css` folder) and place it in your LittleLink project’s `css` folder. You can adjust the button color that is declared in `sensitive-content.css` or use a button color style from `brands.css` or `brands-extended.css` to adjust the button to any styling of your choice. + +2. **Copy the JS** + Download `js` folder which contains `sensitive-content.js` from this repo and place it in your LittleLink project. By default LittleLink doesn't use any JS. + +3. **Reference Them** + In your `index.html` (or `preview.html` in LittleLink Extended), add the CSS after your main styles: + ```html + + + + ``` + Then load the JS near the bottom of ``: + ```html + + ``` + +4. **Add the HTML Snippet** + Wherever you want a “Sensitive Content” button, insert: + ```html +
+ + + Sensitive Content + +
+
+

This link may contain content that is not appropriate for all audiences.

+ +
+
+
+ ``` + - **`data-continue-url="..."`** sets the external link for the “Continue” button. + - **`.sensitive-trigger`** toggles the panel open/close. + - **`.sensitive-panel`** is the collapsible container. + - **`.sensitive-continue`** triggers navigation to the `data-continue-url`. + +### Multiple Sensitive Content Panels + +You can add **multiple** sensitive content panels by repeating the snippet above with different `data-continue-url` values. The JS automatically handles each one independently, so each panel can open a different link. \ No newline at end of file diff --git a/VERSION.md b/VERSION.md index 87d7301..bbf055c 100644 --- a/VERSION.md +++ b/VERSION.md @@ -1,6 +1,14 @@ # LittleLink Extended Version History -## Current Version: v3.0.0 +## Current Version: v3.1.0 + +### v3.1.0 - 03/16/2025 +- Added Babylist button +- Fixed SimpleX Chat Alt +- Added Sensitve Content Warning Modile + - Adds `JS` folder with `sensitive-content.js` + - Adds a new `css` file for `sensitve-content.css` + - Adds a new `generic-warning.svg` ### v3.0.0 - 11/13/2024 LittleLink Extended has been updated to reflect all modernizations of the core LittleLink repo. diff --git a/css/brands-extended.css b/css/brands-extended.css index caed508..7129f7d 100644 --- a/css/brands-extended.css +++ b/css/brands-extended.css @@ -59,6 +59,13 @@ --button-border:1px solid #FFFFFF; } +/* Babylist */ +.button-babylist { + --button-text:#FFFFFF; + --button-background:#6E3264; + --button-border:1px solid #FFFFFF; +} + /* Bandsintown */ .button-bandsintown { --button-text:#FFFFFF; @@ -356,8 +363,8 @@ /* SimpleX Chat Alt */ .button-simplex-alt { - --button-text:#FFFFFF; - --background-color: #000000; + --button-text:#FFFFFF; + --button-background:#000000; --button-border: 1px solid #FFFFFF; } diff --git a/css/sensitive-content.css b/css/sensitive-content.css new file mode 100644 index 0000000..292228a --- /dev/null +++ b/css/sensitive-content.css @@ -0,0 +1,63 @@ +/* Optional "Sensitive Content" Slide-Down Panel + ---------------------------------------------- + By default, it's collapsed (max-height: 0) and + pushes content down in normal flow when open. +*/ + +/* Sensitive Warning Button Styling */ +.button-sensitive { + --button-text:#ffffff; + --button-background:#D72638; + --button-border:1px solid #ffffff; +} + +/* Container so everything is grouped nicely */ +.slide-container { + margin: 0; /* We let the .button margin handle spacing */ + } + + /* The slide-down panel starts collapsed */ + .sensitive-panel { + margin-top: -1rem; + margin-bottom: 1rem; + max-height: 0; + overflow: hidden; + transition: max-height 0.3s ease; + border: none; + border-radius: 0.5rem; + } + + /* When open, show border and expand */ + .sensitive-panel.open { + max-height: 300px; + border: 1px solid #ccc; + margin-bottom: 1rem; + } + + /* The panel's content area */ + .sensitive-panel__content { + position: relative; + background-color: #fff; + color: #000; + padding: 1rem; + box-sizing: border-box; + } + + /* Basic spacing inside the panel */ + .sensitive-panel__content p { + margin: 1rem 0; + } + + .sensitive-panel__content .button { + margin-top: 1rem; + } + + /* Dark theme support */ + :root.theme-dark .sensitive-panel__content { + background-color: #121212; + color: #ffffff; + } + :root.theme-dark .sensitive-panel.open { + border-color: #444; + } + \ No newline at end of file diff --git a/images/icons-extended/babylist.svg b/images/icons-extended/babylist.svg new file mode 100644 index 0000000..7e1af32 --- /dev/null +++ b/images/icons-extended/babylist.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/images/icons-extended/generic-warning.svg b/images/icons-extended/generic-warning.svg new file mode 100644 index 0000000..f958e7b --- /dev/null +++ b/images/icons-extended/generic-warning.svg @@ -0,0 +1,3 @@ + + + diff --git a/js/sensitive-content.js b/js/sensitive-content.js new file mode 100644 index 0000000..7859587 --- /dev/null +++ b/js/sensitive-content.js @@ -0,0 +1,47 @@ +document.addEventListener('DOMContentLoaded', function () { + // 1) Check for slide-container + const containers = document.querySelectorAll('.slide-container'); + + containers.forEach((container) => { + // 2) Find the key elements inside this container + const trigger = container.querySelector('.sensitive-trigger'); + const panel = container.querySelector('.sensitive-panel'); + const continueBtn = container.querySelector('.sensitive-continue'); + + // 3) Read the URL from data-continue-url + const externalUrl = container.dataset.continueUrl; + + // Safety checks: if we don’t have a trigger or panel, skip + if (!trigger || !panel) return; + + // 4) Toggle panel on trigger click + trigger.addEventListener('click', function (evt) { + evt.preventDefault(); + panel.classList.toggle('open'); // open if closed, close if open + }); + + // 5) Close panel if user clicks outside + document.addEventListener('click', function (evt) { + if ( + panel.classList.contains('open') && + !panel.contains(evt.target) && + evt.target !== trigger + ) { + panel.classList.remove('open'); + } + }); + + // 6) “Continue” button + if (continueBtn) { + continueBtn.addEventListener('click', function () { + // Close the panel + panel.classList.remove('open'); + + // If there's a data-continue-url, open it in a new tab + if (externalUrl) { + window.open(externalUrl, '_blank'); + } + }); + } + }); + }); \ No newline at end of file diff --git a/preview.html b/preview.html index 8167c5f..1f2566e 100644 --- a/preview.html +++ b/preview.html @@ -33,6 +33,9 @@ + + + @@ -62,6 +65,8 @@ @@ -258,7 +284,9 @@ - + + +