├── .gitignore
├── .prettierrc
├── masks
├── squircle.svg
├── squircle@2x.svg
└── squircle@3x.svg
├── .editorconfig
├── .eslintrc
├── .github
└── workflows
│ └── test.yml
├── test.js
├── LICENSE
├── README.md
├── package.json
├── index.ts
├── CHANGELOG.md
└── index.js
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules
3 | npm-debug.log
4 |
--------------------------------------------------------------------------------
/.prettierrc:
--------------------------------------------------------------------------------
1 | {
2 | "singleQuote": true,
3 | "tabWidth": 2,
4 | "printWidth": 80,
5 | "arrowParens": "avoid"
6 | }
7 |
--------------------------------------------------------------------------------
/masks/squircle.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/masks/squircle@2x.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/masks/squircle@3x.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/.editorconfig:
--------------------------------------------------------------------------------
1 | root = true
2 |
3 | []
4 | indent_style = tab
5 | indent_size = 2
6 | end_of_line = lf
7 | charset = utf-8
8 | trim_trailing_whitespace = true
9 | insert_final_newline = false
10 |
--------------------------------------------------------------------------------
/.eslintrc:
--------------------------------------------------------------------------------
1 | {
2 | "env": {
3 | "jest": true
4 | },
5 | "extends": ["airbnb-base", "prettier"],
6 | "plugins": ["prettier"],
7 | "rules": {
8 | "import/no-extraneous-dependencies": "off",
9 | "prettier/prettier": ["error"],
10 | "func-names": "off"
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/.github/workflows/test.yml:
--------------------------------------------------------------------------------
1 | # This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node
2 | # For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions
3 |
4 | name: Tests
5 |
6 | on:
7 | push:
8 | branches: [main]
9 | pull_request:
10 | branches: [main]
11 |
12 | jobs:
13 | build:
14 | runs-on: ubuntu-latest
15 |
16 | strategy:
17 | matrix:
18 | node-version: [20.x]
19 |
20 | steps:
21 | - uses: actions/checkout@v4
22 | - name: Use Node.js ${{ matrix.node-version }}
23 | uses: actions/setup-node@v4
24 | with:
25 | node-version: ${{ matrix.node-version }}
26 | - run: npm ci
27 | - run: npm test
28 |
--------------------------------------------------------------------------------
/test.js:
--------------------------------------------------------------------------------
1 | const plugin = require('./index.ts');
2 |
3 | const svgMask1x = `data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='150' height='150' viewBox='0 0 150 150'%3E%3Crect width='150' height='150' rx='50' fill='black'/%3E%3C/svg%3E`;
4 |
5 | describe('Smooth Corners Plugin', () => {
6 | it('should generate basic utilities with default sizes', () => {
7 | const utilities = {};
8 | const addUtilities = jest.fn(utils => {
9 | Object.assign(utilities, utils);
10 | });
11 |
12 | plugin.handler({ addUtilities, theme: () => ({}) });
13 |
14 | // Test presence of utility classes
15 | expect(Object.keys(utilities)).toContain('.smooth-corners-sm');
16 | expect(Object.keys(utilities)).toContain('.smooth-corners-md');
17 | expect(Object.keys(utilities)).toContain('.smooth-corners-lg');
18 |
19 | // Test mask-border properties
20 | expect(
21 | utilities['.smooth-corners-sm']['@supports (mask-border-width: 60px)'][
22 | 'mask-border'
23 | ]
24 | ).toBe(`url("${svgMask1x}") 49% fill / 25px`);
25 | });
26 | });
27 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2021 Gary Tokman
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
11 |
12 | # Corner Smoothing
13 |
14 |
15 |
16 | > Adjusts a rounded corner to create a continuous curve. Inspired by [Rob](https://github.com/robb/Continuous-Corners-CSS).
17 |
18 | ## Installation
19 |
20 | Install the plugin from npm:
21 |
22 | ```sh
23 | npm install tailwind-corner-smoothing --save-dev
24 | ```
25 |
26 | # Usage
27 | v4
28 |
29 | ```js
30 | // Global.css / App.css
31 |
32 | @plugin "tailwind-corner-smoothing";
33 |
34 | ```
35 |
36 |
37 | v3
38 | ```js
39 | // tailwind.config.js
40 | module.exports = {
41 | plugins: [require('tailwind-corner-smoothing')],
42 | };
43 | ```
44 |
45 | # Example
46 |
47 | ```html
48 | Smooth corners!
49 | ```
50 |
51 | # License
52 |
53 | MIT
54 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "tailwind-corner-smoothing",
3 | "version": "1.2.0",
4 | "description": "Adjusts a rounded corner to create a continuous curve.",
5 | "main": "index.js",
6 | "files": [
7 | "index.js"
8 | ],
9 | "scripts": {
10 | "lint": "eslint .",
11 | "lint:fix": "eslint . --fix",
12 | "format": "prettier --write --loglevel=error . !CHANGELOG.md",
13 | "test": "jest",
14 | "test:watch": "jest --watch",
15 | "release": "npx tsc index.ts && standard-version",
16 | "postrelease": "git push --follow-tags origin main && npm publish"
17 | },
18 | "repository": {
19 | "type": "git",
20 | "url": "git+https://github.com/gtokman/corner-smoothing.git"
21 | },
22 | "bugs": {
23 | "url": "https://github.com/gtokman/corner-smoothing/issues"
24 | },
25 | "homepage": "https://github.com/gtokman/corner-smoothing#readme",
26 | "keywords": [
27 | "create-tailwind-plugin",
28 | "tailwind-css-plugin",
29 | "tailwindcss",
30 | "plugin"
31 | ],
32 | "author": "Gary Tokman",
33 | "license": "MIT",
34 | "devDependencies": {
35 | "eslint": "^7.2.0",
36 | "eslint-config-airbnb-base": "^14.2.1",
37 | "eslint-config-prettier": "^6.15.0",
38 | "eslint-plugin-import": "^2.22.1",
39 | "eslint-plugin-jest": "^24.1.3",
40 | "eslint-plugin-prettier": "^3.1.4",
41 | "husky": "^4.3.0",
42 | "jest": "^26.6.3",
43 | "jest-matcher-css": "^1.1.0",
44 | "lint-staged": "^10.5.2",
45 | "lodash": "^4.17.20",
46 | "postcss": "^8.1.9",
47 | "prettier": "^2.2.0",
48 | "standard-version": "^9.5.0",
49 | "tailwindcss": "latest",
50 | "fs": "^0.0.1-security"
51 | }
52 | }
53 |
--------------------------------------------------------------------------------
/index.ts:
--------------------------------------------------------------------------------
1 | const plugin = require('tailwindcss/plugin');
2 |
3 | // Inline SVGs as Base64 encoded strings
4 | const svgMask1x = `data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='150' height='150' viewBox='0 0 150 150'%3E%3Crect width='150' height='150' rx='50' fill='black'/%3E%3C/svg%3E`;
5 | const svgMask2x = `data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='300' height='300' viewBox='0 0 150 150'%3E%3Crect width='150' height='150' rx='50' fill='black'/%3E%3C/svg%3E`;
6 | const svgMask3x = `data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='450' height='450' viewBox='0 0 150 150'%3E%3Crect width='150' height='150' rx='50' fill='black'/%3E%3C/svg%3E`;
7 |
8 | module.exports = plugin(
9 | function ({ addUtilities, theme }) {
10 | const options = theme('cornerSmoothing') || {};
11 | const sizes = options.sizes || {
12 | sm: '25px',
13 | md: '60px',
14 | lg: '75px',
15 | };
16 |
17 | const utilities = {};
18 |
19 | Object.entries(sizes).forEach(([key, size]) => {
20 | utilities[`.smooth-corners-${key}`] = {
21 | '@supports (mask-border-width: 60px)': {
22 | 'mask-border': `url("${
23 | options.maskPath ?? svgMask1x
24 | }") 49% fill / ${size}`,
25 | '@media (min-resolution: 2x)': {
26 | 'mask-border': `url("${
27 | options.maskPath ?? svgMask2x
28 | }") 49% fill / ${size}`,
29 | },
30 | '@media (min-resolution: 3x)': {
31 | 'mask-border': `url("${
32 | options.maskPath ?? svgMask3x
33 | }") 49% fill / ${size}`,
34 | },
35 | },
36 | };
37 | });
38 |
39 | addUtilities(utilities);
40 | },
41 | {
42 | theme: {
43 | cornerSmoothing: {
44 | maskPath: svgMask1x,
45 | sizes: {
46 | sm: '25px',
47 | md: '60px',
48 | lg: '75px',
49 | },
50 | },
51 | },
52 | }
53 | );
54 |
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | # Changelog
2 |
3 | All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4 |
5 | ## [1.2.0](https://github.com/gtokman/corner-smoothing/compare/v1.1.1...v1.2.0) (2024-11-05)
6 |
7 |
8 | ### Features
9 |
10 | * convert to use base64 ([a8b214c](https://github.com/gtokman/corner-smoothing/commit/a8b214c58ca016e8ca5a996efbe993cfa3c41712))
11 |
12 |
13 | ### Bug Fixes
14 |
15 | * update ([e5c2588](https://github.com/gtokman/corner-smoothing/commit/e5c2588db59bc8f33b9adeeb69269739a1006371))
16 | * updates ([a2fde35](https://github.com/gtokman/corner-smoothing/commit/a2fde352a188ae9705ed65ce60228afe2db3facf))
17 | * updates to where the assets live ([7575fe1](https://github.com/gtokman/corner-smoothing/commit/7575fe19842f6f0d2ed4e38dab55327df70c765a))
18 |
19 | ### [1.1.1](https://github.com/gtokman/corner-smoothing/compare/v1.1.0...v1.1.1) (2024-11-05)
20 |
21 |
22 | ### Bug Fixes
23 |
24 | * update the package name ([8d80c6d](https://github.com/gtokman/corner-smoothing/commit/8d80c6d0918bd02e8887ade8f2357427866b14ea))
25 | * updates ([c33ad22](https://github.com/gtokman/corner-smoothing/commit/c33ad22b62db02b59998c8620c7e0bb29f5885f3))
26 |
27 | ## 1.1.0 (2024-11-05)
28 |
29 |
30 | ### Features
31 |
32 | * create extension ([a16e914](https://github.com/gtokman/corner-smoothing/commit/a16e914f79b486e8e2e37656e239292e8fb13ee5))
33 | * create extension ([e8866a4](https://github.com/gtokman/corner-smoothing/commit/e8866a4a8be263dc4b07f4ef1dbe123374bd1806))
34 |
35 |
36 | ### Bug Fixes
37 |
38 | * update ([f9fb921](https://github.com/gtokman/corner-smoothing/commit/f9fb921612ea6bf98b917c953088b3aaf99055d8))
39 | * update readme ([48eff93](https://github.com/gtokman/corner-smoothing/commit/48eff935c0c24a2fe7146958dee1a2b257d177ac))
40 | * update to include files ([725d0fb](https://github.com/gtokman/corner-smoothing/commit/725d0fbc20e89acd8c9a3c6fcbc85f9961fb1523))
41 | * updates ([fb23b2a](https://github.com/gtokman/corner-smoothing/commit/fb23b2ac6b891be6becafabc8d33007229bf5f89))
42 |
--------------------------------------------------------------------------------
/index.js:
--------------------------------------------------------------------------------
1 | var plugin = require('tailwindcss/plugin');
2 | var base64Mask1x = 'data:image/png;base64,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';
3 | var base64Mask2x = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASwAAAEsCAYAAAB5fY51AAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAABLKADAAQAAAABAAABLAAAAADYYILnAAAZA0lEQVR4Ae2de8wc1XnGQ7DjW7HBN0RMCRAXW1BCLVOQILjQqMG5oKAGQlUSCbWI0pIK/sh/Uf5L1UqVokQBBSVUqpqgiEBbpJQKkrQ4JqDaBbkkEBnLxgqXWPgGNrGx4892n2f9nfXufnub3Zmdd3d+r/R8Z+d25p3f7D7fmbNnZ854HxGBwPuVxHxpkbREWt6gZXq9VFosnS0tlBZIXn+uNEeaLc2SzpRcl3WG5EjlqanJ/3ty+hBdnpjWcZVT0jHpqHREOiwdkg5K70j7pb3SHml3g/bp9QHJ67s+okQCVXszl4Ha5mGzuUC6RFo9XV6scoVkg7LxcC4EIXDYAG10NrA3pVelbdLW6fI1lTY9TE0Qigo+JPmRdUvnIukK6SppjbRKcmvJrR9i8gm4FefW2SvSFmmz9KK0U3LLjhiSAIY1GEBfjl0qXSetk9ZKbi25NUVAoJWAW11ulb0gbZSekX4p+TKTyEAAw+oPlvuQrpXWSzdIKyX3FxEQGJSA+9W2S09LT0rPSu5DI7oQwLDaw3EL6hrpZulG6cMSrASBKIyA+8h2SE9Jj0vPSbTABKEx+BCepnGeXt4k3SbZrNwRTkCgLALu4LdpPSL9UNolVT6qbljud7pFul1yPxR9UIJAhCPgPjD3fz0sPSa5P6ySUUXDOktn2pd6d0rul6IvShCIsSHgvi/3dz0k+dLxXakyUSXDulJn9W7pVsmDLwkIjDsBD3p9VHpQen7cD4b8T40C/7xAbJLcqYlgMKnvAb/H/V73eMCJjUltYXlk+V3SPdL5E3v2ODAIzCTwhmY9IH1b8sj7iYpJM6xzdXbulXzpd85EnSkOBgLZCLyt1X2p+A3prWybxl17UgzLAzvvk74oLYqLm8wgMHICB7TH+6WvSwxMHTn+5h3O0+SXJP8HmdS+CY6Lc5vHe8CfEX9W/JkhSiDgb/u2SnmcTOqAY1XeA/7M+LNDjIjA5drPE1JV3mAcJ+e6iPeAP0P+LI1VjNOgSf9U5svSP0u+UwIBAQgMTuD3tOkdkm99tEmakoicCHhEugfGFfGfhjrhWvX3gD9b/oyFj+gtrA+I4Fekh6TfDU+TBCEwngQ+qLQ96NStLf/g2j//CRmRhzWsFrFvSdeHJEdSEJhMAht0WH8tuXM+XERtYf2ZSP1AuiwcMRKCwGQTuFCH51ssvS69JIWKaIY1W3T+XvqatCAUKZKBQHUI+LP3Wck3svypFObBGpEMyz+r+Z70F1LkS1WlR0Bg4gn4M+iO+D+Q/ls6JJUeUYzhIyLxXcklAQEIxCLwc6XzBcllqRGhhfUxEfg3aWWpJNg5BCDQiYCvfm6W/k/a2WmlUcwv27A+p4P8vrRkFAfLPiAAgYEJ+E69fyrtkF4euJYhNyzTsNxX9U8SP8Yc8iSyOQRGRMDjIj8j/VraMqJ9Nu2mLMPyOA+PsfK3ggQEIDA+BOwZn5b2SB4hP9Iow7BsVt+Uytj3SOGyMwhMKAE/XWq9NHLTGrVp+DLQLatR71e7JCAAgRwJJNN6Q3WO7PJwlMbhDnb3WXEZmOO7hqogUCIBm9YnpG3SSDriRzUO62M6oMel35EICEBgsgj8RofjYQ//VfRhjcKwPBj0ScmPgicgAIHJJLBLh+V+rUIHlxZtWB5w9iOJEeyCQEBgwgnYrD4uvVXUcfoatKhwX9V3JMyqKMLUC4FYBPxZ92e+sH7qIjvdfdcFfytIQAAC1SGwSoc6R/pJEYdclGH5flZfk4q+5CyCCXVCAALDEbhGm78i5X4/rSIMxXcK3SgtkwgIQKCaBDyodJ2U651L8+7D8m+NPDAUsxIEAgIVJmAPsBfYE3KLvC8Jv6LM7sgtOyqCAATGmcCFSt53K90g5RJ5XhL67oS+M2GujprLUVIJBCBQFoHfasd/LD2bRwJ5GdZcJfMzaW0eSVEHBCAwUQRe0NF8VDoy7FHldUn4ZSXy58Mmw/YQgMBEEvigjmpK+umwR5dHC+tyJbFJmjdsMmwPAQhMLIH3dGRXS78Y5gjz+JbwH5QAZjXMWWBbCEw+AXuEvWKoGNawbtXePzlUBmwMAQhUhYC9wp4xcAxzSWjH9I27PBSfgAAEINAPAY+AXyP5EjFzDNPCukd7w6wyI2cDCFSagD3D3jFQDNrCWqq9vSwtH2ivbAQBCFSZwG4d/GXS3qwQBm1h3acdYVZZabM+BCBgAvYOe0jmGKSFda724uvQRZn3xgYQgAAEThE4oMKXh29lATJIC+te7QCzykKZdSEAgVYC9hB7SabI2sJarNq3S+dk2gsrQwACEJhJ4G3NWintn7mo/ZysLay7VA1m1Z4lcyEAgWwE7CX2lL4jSwtrjmp16+r8vmtnRQhAAALdCfhBrG5lHe2+2qmlWVpYHqGKWfVDlXUgAIF+CdhT+h79nqWFtUkVX9VvFqwHAQhAoE8Cm7WefxjdM/o1rCtV0//2rI0VIAABCAxG4A+12fO9Nu33kvDuXhWxHAIQgMAQBPrymH5aWGcpCXeMLRwiGTaFAAQg0I3AQS10f9a73Vbqp4V1syrArLpRZBkEIDAsAXuMvaZr9GNYd3atgYUQgAAE8iHQ02t6XRKuUB6/kvK693s+h0UtEIDAJBI4roP6kPRmp4Pr1cK6RRtiVp3oMR8CEMiTgL3GntMxehnW7R23ZAEEIACB/Al09Zxul4TnKRd/O9jL1PJPmRohAIGqEvCTov1t4a52ALqZ0U3aoNvydvUxDwIQgMAwBOw59p620c2Qbmu7BTMhAAEIFEugo/d0uiScr3z2SXOLzYvaIQABCMwg4EfaL5EOty7p1MK6RitiVq20mIYABEZBwN5jD5oRnQyr54jTGTUxAwIQgEB+BNp6UCfDujG//VITBCAAgcwE2npQuz4sP3PQzw1rtyzzXtkAAhCAwAAETmobPw6s6dmF7VpY12olzGoAwmwCAQjkRsAeZC9qinaGtb5pDSYgAAEIlENghhe1M6wbysmNvUIAAhBoIjDDi1ov/Tz+yjfS4gfPTdyYgAAESiDguzf4Pln18VitLaxLtRCzKuHMsEsIQGAGAXuRPakerYZ1XX0JLyAAAQiUT6DJk1oNa135+ZEBBCAAgTqBJk9qNay19dV4AQEIQKB8Ak2e1Njp7kfRu3Or1cTKT5kMIACBqhLw/bH8ZWDtUfaN5nSRZjZOVxUQxw0BCMQhYE+yN9Wi0aCuSDMpIQABCAQiUPemRsO6KlCCpAIBCEAgEah7U6NhrUlLKSEAAQgEIlD3pkbDWhUoQVKBAAQgkAjUvSl9S2jjci/8rLQGJQQgAIEgBKaUh0cxnEgtrMWawKyCnB3SgAAEmgjYm+xR9WEMFzQtZgICEIBALAI1j0otrEti5UY2EIAABJoI1DwqGdbqpkVMQAACEIhFoOZRybBoYcU6OWQDAQg0E2hqYV3cvIwpCEAAAqEI1DwqtbBWhEqNZCAAAQg0E6h5VBqH5bs0zGtezhQEIACBMATeUybzbVhuZXlgVjIvvSQgAAEIhCLg5xTOsln5XjOYVahzQzIQgEALAXvUfBvWopYFTEIAAhCISGCRDWtJxMzICQIQgEALgSU2rOUtM5mEAAQgEJHAcgwr4mkhJwhAoB0BDKsdFeZBAAIhCdQMa1nI1EgKAhCAQDOBZb4kXNo8jykIQAACIQkstWHVbowVMj2SggAEIHCawGIb1tmnp3kFAQhAICyBs21YC8OmR2IQgAAEThNYaMNacHqaVxCAAATCElhgw/JvCQkIQAAC0QnUfks4N3qW5AcBCEBABOa6heXnfREQgAAEohOYY8OaHT1L8oMABCAgArNtWDxAlfcCBCAwDgRqN/A7cxwyJUcIQKDyBM50C8siIAABCEQn8H4MK/opIj8IQCARqBkW93NPOCghAIHIBM7gcjDy6SE3CECgiYBbV358DgEBCEAgPAFaWOFPEQlCAAKJAIaVSFBCAALhCWBY4U8RCUIAAokAhpVIUEIAAuEJYFjhTxEJQgACiQCGlUhQQgAC4QlgWOFPEQlCAAKJAIaVSFBCAALhCWBY4U8RCUIAAokAhpVIUEIAAuEJYFjhTxEJQgACiQCGlUhQQgAC4QlgWOFPEQlCAAKJAIaVSFBCAALhCWBY4U8RCUIAAokAhpVIUEIAAuEJYFjhTxEJQgACiQCGlUhQQgAC4QlgWOFPEQlCAAKJAIaVSFBCAALhCWBY4U8RCUIAAokAhpVIUEIAAuEJYFjhTxEJQgACiQCGlUhQQgAC4QlgWOFPEQlCAAKJAIaVSFBCAALhCWBY4U8RCUIAAokAhpVIUEIAAuEJYFjhTxEJQgACiQCGlUhQQgAC4QlgWOFPEQlCAAKJAIaVSFBCAALhCWBY4U8RCUIAAokAhpVIUEIAAuEJYFjhTxEJQgACiQCGlUhQQgAC4QlgWOFPEQlCAAKJAIaVSFBCAALhCWBY4U8RCUIAAokAhpVIUEIAAuEJYFjhTxEJQgACiQCGlUhQQgAC4QlgWOFPEQlCAAKJAIaVSFBCAALhCWBY4U8RCUIAAokAhpVIUEIAAuEJYFjhTxEJQgACiQCGlUhQQgAC4QlgWOFPEQlCAAKJAIaVSFBCAALhCWBY4U8RCUIAAokAhpVIUEIAAuEJYFjhTxEJQgACiQCGlUhQQgAC4QlgWOFPEQlCAAKJAIaVSFBCAALhCWBY4U8RCUIAAokAhpVIUEIAAuEJYFjhTxEJQgACiYAN62SaoIQABCAQmMBJWliBzw6pQQACzQRoYTXzYAoCEIhLoNbCOhE3PzKDAAQgUCdwwi0sDKvOgxcQgEBgAjXDOh44QVKDAAQgkAgcdwtrKk1RQgACEAhMYMqGdSxwgqQGAQhAIBE4ZsM6mqYoIQABCAQmcNSGdSRwgqQGAQhAIBE4YsM6nKYoIQABCAQmcNiGdShwgqQGAQhAIBE4ZMM6mKYoIQABCAQmcNCG9U7gBEkNAhCAQCLwjg1rf5qihAAEIBCYwH4b1t7ACZIaBCAAgURgrw1rT5qihAAEIBCYwB4b1u7ACZIaBCAAgURgN4aVUFBCAALRCWBY0c8Q+UEAAnUCNcPaV5/kBQQgAIG4BPb5kvBA3PzIDAIQgECdwIEz9NKm5Xti+TUBAQhAICIBP91rls3Kt0jmjg0RTxE5QQACiYA9qnaLZM+gHythoYQABCISqHmUW1iON08V/IUABCAQkkDNo5JhvRoyRZKCAAQgcIpAzaOSYW2DCgQgAIHABGoelQxra+BESQ0CEIBAzaOSYdHC4g0BAQhEJtDUwnotcqbkBgEIVJ5AzaPSYFG3tPy4r1mVxwIACEAgGgEPbJ8j1cdhefAot5mJdprIBwIQMAF7kz2q9rMcl45XThX8hQAEIBCKQN2bUqe7s9sSKkWSgQAEIHCKQN2bGg1rM3QgAAEIBCRQ96ZGw3oxYKKkBAEIQKDuTelbQiNxL7wfW99oYp5PQAACECiLgDvb50sexdBkTp7Bj6BNhYAABKIQsCfVzMoJtbamXoiSJXlAAAIQEIEmT2o1rI0gggAEIBCIQJMntRrWM4ESJRUIQAACTZ7U2OluNO7cOiid6QkCAhCAQIkEjmvfCyV/GViL1haWF2yfXkYBAQhAoEwC9qK6WTmRVsPyvKf9h4AABCBQMoEZXtTOsJ4sOUl2DwEIQMAEZnhRax+WV1oq7ZbaLfNyAgIQgEDRBPwcwuXS3sYdtWtheYUdjSvxGgIQgMCICdiDmszK+29nWJ7/lP8QEIAABEoi0NaDOhnW4yUlyW4hAAEImEBbD+rUT+XxWH7S6lxvSUAAAhAYIYEj2tcSqWlIg/ffqYXlFZ/zCgQEIACBEROw98wwK+fQybC87BH/ISAAAQiMmEBH7+l0Sej8zpPekLqZmtcjIAABCORFwPe/Ol/a1a7CbmbkDZpu7dCuAuZBAAIQyJGAPaetWXkf3QzLyx/2HwICEIDAiAh09Zxul4TOb4X0K4m7N5gGAQEIFEnAd2f4kNTxzse9Wlje8NkiM6RuCEAAAtME7DUdzcrr9DIsr/OQ/xAQgAAECibQ02t6XRI6v7Mkf1voG2kREIAABIog4BuH+tvBd7tV3k8LyxU82q0SlkEAAhAYkoA9pqtZuf5+DMvrPeg/BAQgAIGCCPTlMf0a1vNKcnNBiVItBCBQbQL2FntMz+jXsFzRN3vWxgoQgAAEshPo21v66XRPu/ej7LdL7hgjIAABCORBwF/orZTqT3fuVmmWFpYrfKBbZSyDAAQgkJGAPaUvs3K9WVpYXn+x5FbWOZ4gIAABCAxB4G1t69bV/n7ryNLCcp2uuK/e/H4TYD0IQKCyBOwlfZuVKWVtYXmbc6VXpEWeICAAAQgMQOCAtlklvZVl26wtLNftHdyfZSesCwEIQKCFgD0kk1l5+0FaWN7Ozy58WfJzwwgIQAACWQj4uaeXSTMe49WrkkFaWK7TO/rHXpWzHAIQgEAbAvaOzGblegZtYXnbedIWydehBAQgAIF+CLj/e430Xj8rt64zzI35plSZr0Fvba2UaQhAAAIdCPyN5r/YYVnP2cO0sFLlT+jFJ9MEJQQgAIEOBP5T8z/VYVlfs/MwrMu1p02SLxEJCEAAAu0I+BLwaukX7Rb2O2+YS8K0D/f4z5KuTzMoIQABCLQQ+DtN/6BlXubJPFpY3qkfaf8zaa0nCAhAAAINBPzoro9KRxrmDfRy0GENrTtzIvdKv21dwDQEIFBpAvYEe8PQZmWKeVwSuh7H6xKXhjUU/IEABKYJfFXld/OikdclYcrnA3rxlHR9mkEJAQhUlsAGHfmNUm5XXnkbls/MammjtMwTBAQgUEkCe3TU66SteR59npeEKS8Puffl4WelIgwx7YcSAhCISeCk0rpT2pB3ekUYlnN8SZovXesJAgIQqBQB/1bw60UccZEtoNlK+F+lm4pInDohAIGQBH6orHx1dayI7Io0LOfrm/39SPqIJwgIQGCiCfxcR/dxyb8xLiTyGofVKTkn/gVpV6cVmA8BCEwEAX/G/VkvzKxMqWjD8j7suj6Q33iCgAAEJo6AP9v+jPuzXmgU1enemvROzdghfUYa1T5bc2AaAhDIn4DHWN0h/Uf+Vc+scZTm4Vsq/1r6tDSKlt3Mo2UOBCCQJ4Hjquxu6Xt5VtqtrlEalvPwHUo9oGy9hGkJAgGBMSVgs/pb6TujzH/UhuVje17CtEZ5ltkXBPIlkMzqW/lW27u2MgzLWdm03pA+IZWVg3ZNQAACGQm4z8qXgSNtWaUcyzQLXx5uk2xa/tE0AQEIxCbgbwPvkEbWZ9WKo0zDci7uiN8s/Yl0lkRAAAIxCXic1W3SSL4N7ISgbMNyXh7y8GPpWskj4wkIQCAWAY+v8s9t/qfstCIYlhl4dOy/S6umpYKAAAQCEPBvAz8nvRogl1Ad3ocE5DFpjnSNVPTvHLULAgIQ6EDAt4jxXRfcwX6wwzojnx2lhZUO/IRe/ETy02H/SFogERCAwGgJeNiR72flW8T4MxkmohlWAvOSXrgp+vvShRIBAQiMhsAG7eYWyWW4iGpYBrVX+r5kh/clYuRclR4BgbEm4PFVX5X+Sir0jgtjTanP5P0Nogeb+roawYD3QL7vAX+2/BkLH+PSanldJP9FmpKulnw3UwICEBiOwHva3E9k/ktp53BVsXUnApdrwRMS/2VhwHtg8PeAP0P+LBEjInCr9uNHCPGmhQHvgf7fA/7M+LNDlEBgnvb5JcmdhLxpYcB7oPN7wJ8Rf1b8mRnbmJTBmUt1Bu6TvigtGtuzQeIQyJ/AAVV5v+QxVf7mfaxjUgwrnQT/FvFeyaNzz0kzKSFQQQJv65gflL4huXU1ETFphpVOymK9uEu6Rzo/zaSEQAUI+D5zD0jflvZX4Hgn6hD9u8TPS5sk+jdgMMnvAb/H/V73e35iY1JbWO1O2JWa6UtFf0OysN0KzIPAmBHwj5IflXzp58GfEx9VMqx0Mn2jwJsl/7jTo3vHZfCsUiUg8D7fT/1Z6SHpceldqTJRRcNqPLkrNHGLdLu0VuJJPoJAhCPg39O+ID0sPSa9KVUyqm5YjSf9PE3cJN0m+cfWcyUCAmUROKIdPyc9IvnOJbukygeG1f4tMF+zbVq+dLxR+rAEK0EgCiPgLwR2SE9JvtSzWR2WiAYCfAgbYHR56YGp7u9aL90grZTo+xIEYmAC7ovaLj0tPSm5X2rsB3bqGAoNDGswvG6BXSpdJ62T3P/l/jD6wASBmEHAfVDud3I/1EbpGemXEi0oQcgSGFYWWt3X9fiXi6QrpKukNdIqabk0SyImn8CUDnG35Ft8b5E2Sy9KO6WjEjEkAQxrSIB9bO5Wl0feXyBdIq2eLi9W6VbZEskd/JwLQQgc7mNyR/g+ya2lV6Vt0tbp8jWVHlnu1hRREAE+JAWBzVitTc2XmYskG5hbZUnL9Np9aDa9syUPevXDOby+jc4tu9mSW3HuV3NdVjq3qdSsSoSNxeHS5mG5v8itn2OSWzo2nsPSIcmDL9+RbDbuQ/IDGNxKSrJBHZC8PmYkCGXG/wMz7lNHcMLCagAAAABJRU5ErkJggg==';
4 | var base64Mask3x = 'data:image/png;base64,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';
5 | module.exports = plugin(function (_a) {
6 | var addUtilities = _a.addUtilities, theme = _a.theme;
7 | var options = theme('cornerSmoothing') || {};
8 | var sizes = options.sizes || {
9 | sm: '25px',
10 | md: '60px',
11 | lg: '75px',
12 | };
13 | var utilities = {};
14 | Object.entries(sizes).forEach(function (_a) {
15 | var key = _a[0], size = _a[1];
16 | utilities[".smooth-corners-".concat(key)] = {
17 | '@supports (mask-border-width: 60px)': {
18 | 'mask-border': "url(\"".concat(options.maskPath || base64Mask1x, "\") 49% fill / ").concat(size),
19 | '@media (min-resolution: 2x)': {
20 | 'mask-border': "url(\"".concat(options.maskPath || base64Mask2x, "\") 49% fill / ").concat(size),
21 | },
22 | '@media (min-resolution: 3x)': {
23 | 'mask-border': "url(\"".concat(options.maskPath || base64Mask3x, "\") 49% fill / ").concat(size),
24 | },
25 | },
26 | };
27 | });
28 | addUtilities(utilities);
29 | }, {
30 | theme: {
31 | cornerSmoothing: {
32 | maskPath: "".concat(base64Mask1x),
33 | maskPath2x: "".concat(base64Mask2x),
34 | maskPath3x: "".concat(base64Mask3x),
35 | sizes: {
36 | sm: '25px',
37 | md: '60px',
38 | lg: '75px',
39 | },
40 | },
41 | },
42 | });
43 |
--------------------------------------------------------------------------------