An open API service indexing awesome lists of open source software.

https://github.com/maxsans/react-diamond

A React component library for creating diamond-shaped containers
https://github.com/maxsans/react-diamond

react react-diamond scss

Last synced: about 1 month ago
JSON representation

A React component library for creating diamond-shaped containers

Awesome Lists containing this project

README

          

# ![logo](https://raw.githubusercontent.com/maxsans/template-react-diamond/refs/heads/main/img/react-diamond.png) `react-diamond`

[![npm version](https://badge.fury.io/js/react-diamond-container.svg)](https://badge.fury.io/js/react-diamond)

A React component library for creating diamond-shaped containers with lazy-loaded images and customizable styles.

[Demo](https://react-diamond.sinead.fr/)

Diamond Container on PC
Diamond Container on Mobile
Diamond Container with Three Items

### Content

- Installation
- Usage
- Customization
- Demo
- Notes

### Installation

```bash
yarn add react-diamond@lastest
```

### Usage

#### DiamondContainer

| Property | Type | Description | Default |
| -------- | -------------------- | --------------------------------------------------- | ------- |
| `items` | `Array` | Array of items to display in the diamond containers | `[]` |

#### DiamondItem

| Property | Type | Description |
| --------- | ---------- | ----------------------------------------- |
| `title` | `string` | Title of the item |
| `onClick` | `function` | Function to call when the item is clicked |
| `image` | `string` | URL of the image to display |

### Customization

You can customize the appearance of the diamond containers using CSS variables:

| Variable | Description |
| -------------------------- | ---------------------------------- |
| `--borderColorDiamond` | Color of the diamond border |
| `--textColorDiamond` | Color of the text |
| `--backgroundColorDiamond` | Background color behind the images |

### Example

```tsx
import React from "react";
import Diamond from "react-diamond-container";
import img1 from "path/to/img1.png";
import img2 from "path/to/img2.png";

const items = [
{
title: "Part 1",
onClick() {
alert("Part 1 clicked");
},
image: img1,
},
{
title: "Part 2",
onClick() {
alert("Part 2 clicked");
},
image: img2,
},
// Add more items as needed
];

const App = () => (




);

export default App;
```

Tip: For a better experience, if you want the component in full screen, deactivate the scroll bar.

```scss
body {
overflow: auto;
}

/* Firefox */
@supports (-moz-appearance: none) {
body {
scrollbar-width: none;
}
}

/* WebKit (Chrome, Safari) */
@media screen and (-webkit-min-device-pixel-ratio: 0) {
body::-webkit-scrollbar {
width: 0;
}
}
```

Tip: Add this link to your `index.html` for the font family.

```html

```

### Demo

Check out the [demo](https://react-diamond.sinead.fr/) to see the component in action. You can fount the code source at [template](https://github.com/maxsans/template-react-diamond)

### Notes

- The library is available only for React.
- The layout changes from horizontal to vertical on mobile devices.
- Single item layouts are also supported.
- Images are lazy-loaded for performance optimization.
- Continuous improvements and updates are being made.