[
  {
    "path": ".github/CODEOWNERS",
    "content": "# https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners\n\n/.github/** @ritterim/GitGuardians\n"
  },
  {
    "path": ".github/workflows/pr-build.yml",
    "content": "name: PR Build\n\npermissions:\n  contents: read\n  packages: read\n\non:\n\n  # https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#pull_request\n  # By default, a workflow only runs when a pull_request event's activity type is opened, synchronize, or reopened.\n  pull_request:\n    types: [ opened, synchronize, reopened, labeled, unlabeled ]\n    branches:\n      - main\n\njobs:\n\n  pr-build:\n    uses: ritterim/public-github-actions/.github/workflows/npm-packages-pr-build.yml@v1.16.5\n    #uses: ./.github/workflows/npm-packages-pr-build.yml\n    with:\n      always_increment_patch_version: true\n      npm_package_name: skellycss\n      run_tests: false\n"
  },
  {
    "path": ".github/workflows/pr-merged.yml",
    "content": "name: PR Merged\n\npermissions:\n  contents: read\n  id-token: write\n  packages: read\n\non:\n\n  # https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#pull_request\n  # By default, a workflow only runs when a pull_request event's activity type is opened, synchronize, or reopened.\n  # We want to run on 'closed' to trigger, but we also have to check if it was merged.\n  # That check is: if: github.event.pull_request.merged == true\n  pull_request_target:\n    types: [ closed ]\n    branches:\n      - main\n\njobs:\n\n  npm-packages-pr-create-tag:\n    uses: ritterim/public-github-actions/.github/workflows/npm-packages-pr-create-tag-jfrog.yml@v1.16.5\n    #uses: ./.github/workflows/npm-packages-pr-create-tag-jfrog.yml\n    if: github.event.pull_request.merged == true\n    secrets:\n      gh_actions_secret_passing_passphrase: ${{ secrets.ACTIONS_SECRET_PASSING_PASSPHRASE }}\n      gh_app_private_key: ${{ secrets.RIMDEV_NPM_RELEASES_APP_PRIVATE_KEY }}\n    with:\n      always_increment_patch_version: true\n      gh_app_id: ${{ vars.RIMDEV_NPM_RELEASES_APP_APPID }}\n      jfrog_api_base_url: ${{ vars.JFROG_API_BASE_URL }}\n      jfrog_artifactory_repository: \"${{ vars.JFROG_NPM_PACKAGE_REPO_BASENAME }}-draft\"\n      jfrog_audit_xray_watch_list: ${{ vars.JFROG_AUDIT_XRAY_WATCH_LIST }}\n      jfrog_build_basename: ${{ vars.JFROG_BUILD_BASENAME }}\n      jfrog_npm_feed_repo: ${{ vars.JFROG_ARTIFACTORY_VIRTUAL_REPO_NPM }}\n      jfrog_npm_package_repo_basename: ${{ vars.JFROG_NPM_PACKAGE_REPO_BASENAME }}\n      jfrog_oidc_provider_name: ${{ vars.JFROG_GHA_OIDC_PROVIDER_NAME }}\n      npm_package_name: skellycss\n      run_tests: false\n"
  },
  {
    "path": ".github/workflows/version-tag-build-master.yml",
    "content": "name: Version Tag Build\n\npermissions:\n  contents: write\n  id-token: write\n  packages: write\n\non:\n  push:\n    # To limit whether this executes on a specific branch, you must adjust the allowed_branches input.\n    # Specifying 'branches' here is a logical 'OR', not a logical 'AND'.\n    tags:\n      - v0.*\n\njobs:\n\n  version-tag-build:\n    uses: ritterim/public-github-actions/.github/workflows/npm-packages-release-on-tag-jfrog.yml@v1.16.5\n    #uses: ./.github/workflows/npm-packages-release-on-tag-jfrog.yml\n    secrets:\n      npmjs_org_api_key: ${{ secrets.RITTERIM_NPMJS_PUBLISH_TOKEN }}\n    with:\n      allowed_branches: |\n        main\n      jfrog_api_base_url: ${{ vars.JFROG_API_BASE_URL }}\n      jfrog_artifactory_repository: \"${{ vars.JFROG_NPM_PACKAGE_REPO_BASENAME }}-prod\"\n      jfrog_audit_xray_watch_list: ${{ vars.JFROG_AUDIT_XRAY_WATCH_LIST }}\n      jfrog_build_basename: ${{ vars.JFROG_BUILD_BASENAME }}\n      jfrog_npm_feed_repo: ${{ vars.JFROG_ARTIFACTORY_VIRTUAL_REPO_NPM }}\n      jfrog_npm_package_repo_basename: ${{ vars.JFROG_NPM_PACKAGE_REPO_BASENAME }}\n      jfrog_oidc_provider_name: ${{ vars.JFROG_GHA_OIDC_PROVIDER_NAME }}\n      npm_package_name: skellycss\n      run_tests: false\n      npmjs_org_access_public: true\n      publish_to_npmjs_org: true\n"
  },
  {
    "path": ".gitignore",
    "content": "#Distribution\ndist/\n\n# Logs\nlogs\n*.log\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\nlerna-debug.log*\n\n# Diagnostic reports (https://nodejs.org/api/report.html)\nreport.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json\n\n# Runtime data\npids\n*.pid\n*.seed\n*.pid.lock\n\n# Directory for instrumented libs generated by jscoverage/JSCover\nlib-cov\n\n# Coverage directory used by tools like istanbul\ncoverage\n*.lcov\n\n# nyc test coverage\n.nyc_output\n\n# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)\n.grunt\n\n# Bower dependency directory (https://bower.io/)\nbower_components\n\n# node-waf configuration\n.lock-wscript\n\n# Compiled binary addons (https://nodejs.org/api/addons.html)\nbuild/Release\n\n# Dependency directories\nnode_modules/\njspm_packages/\n\n# TypeScript v1 declaration files\ntypings/\n\n# TypeScript cache\n*.tsbuildinfo\n\n# Optional npm cache directory\n.npm\n\n# Optional eslint cache\n.eslintcache\n\n# Microbundle cache\n.rpt2_cache/\n.rts2_cache_cjs/\n.rts2_cache_es/\n.rts2_cache_umd/\n\n# Optional REPL history\n.node_repl_history\n\n# Output of 'npm pack'\n*.tgz\n\n# Yarn Integrity file\n.yarn-integrity\n\n# dotenv environment variables file\n.env\n.env.test\n\n# parcel-bundler cache (https://parceljs.org/)\n.cache\n\n# Next.js build output\n.next\n\n# Nuxt.js build / generate output\n.nuxt\n\n# Gatsby files\n.cache/\n# Comment in the public line in if your project uses Gatsby and *not* Next.js\n# https://nextjs.org/blog/next-9-1#public-directory-support\n# public\n\n# vuepress build output\n.vuepress/dist\n\n# Serverless directories\n.serverless/\n\n# FuseBox cache\n.fusebox/\n\n# DynamoDB Local files\n.dynamodb/\n\n# TernJS port file\n.tern-port\n\n#Other Files\n.DS_store"
  },
  {
    "path": ".sassrc",
    "content": "{\n  \"includePaths\": [\"node_modules\"]\n}"
  },
  {
    "path": "LICENSE",
    "content": "MIT License\n\nCopyright (c) 2020 Ritter Insurance Marketing\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "README.md",
    "content": "<div style=\"display:flex; align-items:center; justify-content:center; height:300px;\">\n  <img src=\"images/fish-skeleton.png\" />\n</div>\n\n# skellyCSS\nA light-weight CSS framework to quickly implement skeletons into your projects.\n\n\n<h2>Table of Contents</h2>\n\n- [skellyCSS](#skellycss)\n  - [Installation](#installation)\n    - [npm](#npm)\n    - [CSS](#css)\n    - [JavaScript](#javascript)\n  - [Quick Usage](#quick-usage)\n  - [Usage](#usage)\n    - [Headers](#headers)\n    - [Paragraphs](#paragraphs)\n    - [Line Width](#line-width)\n    - [Alignment](#alignment)\n    - [Images](#images)\n      - [Sizes](#sizes)\n      - [Shapes](#shapes)\n    - [Animation](#animation)\n  - [JavaScript Utility](#javascript-utility)\n    - [JavaScript Data Attributes](#javascript-data-attributes)\n      - [All Data Attributes](#all-data-attributes)\n\n<br />\n\n## Installation\n\n### npm\nTo install via node package manager:\n```shell\nnpm install @ritterim/skellycss\n```\n\n### CSS\nInclude the Skelly css file wherever you add your CSS:\n``` html\n<link rel=\"stylesheet\" href=\"..@ritterim/skellycss/dist/style.css\">\n```\n\n### JavaScript\nInclude the skelly.js file wherever you add your JavaScript:\n``` html\n<script src=\"..@ritterim/skellycss/dist/skelly.js\"></script>\n```\n\n<br />\n\n## Quick Usage\nYou can quickly get started using skellyCSS using the JavaScript utility, like so:\n``` html\n<h2 class=\"skeleton skeleton--md\" data-animation=\"true\"></h2>\n<p class=\"skeleton\" data-lines=\"4\" data-animation=\"true\"></p>\n```\n**See full [JavaScript Utility](#javascript-utility) docs below**\n\n<br />\n\n## Usage\nSkeletons can be quickly added to any project with a few simple lines of code. \n\n### Headers\nApply the `skeleton` class to any type of header and it will automatically adjust to the font-size of the header stylings:\n\n![Headers](images/headers.png)\n\n``` html\n<h1 class=\"skeleton\"></h1>\n<h2 class=\"skeleton\"></h2>\n<h3 class=\"skeleton\"></h3>\n<h4 class=\"skeleton\"></h4>\n<h5 class=\"skeleton\"></h5>\n<h6 class=\"skeleton\"></h6>\n```\n\n<br />\n\n### Paragraphs\nYou can create paragraph skeletons by applying the `skeleton` class to the paragraph tag, then including however many span tags you'd like with the `skeleton__line` class within the paragraph. In order to make the paragraph skeleton look more like a paragraph, the last line is set to 50% width.\n\n![Paragraphs](images/paragraphs.png)\n```html\n<div>\n  <p class=\"skeleton\">\n    <span class=\"skeleton__line\"></span>\n    <span class=\"skeleton__line\"></span>\n    <span class=\"skeleton__line\"></span>\n    <span class=\"skeleton__line\"></span>\n  </p>\n</div>\n```\n\n<br />\n\n### Line Width\nYou can adjust the line width by applying a size modifier class:\n| Width | Modifier Class | \n| ------------ | ------------|\n| Small, 25% | `.skeleton--sm` |\n| Medium, 50% | `.skeleton--md` |\n| Large, 75% | `.skeleton--lg` |\n| Full, 100% | `.skeleton--full` |\n\n![Line Widths](images/line-widths.png)\n\n``` html\n<h1 class=\"skeleton skeleton--sm\"></h1>\n<h1 class=\"skeleton skeleton--md\"></h1>\n<h1 class=\"skeleton skeleton--lg\"></h1>\n<h1 class=\"skeleton skeleton--full\"></h1>\n```\n\n<br />\n\n### Alignment\nYou can text align the skeleton using alignment modifier classes:\n\n| Alignment | Modifier Class |\n| ------------ | ------------|\n| Left | `.skeleton--left` |\n| Center | `.skeleton--center` |\n| Right | `.skeleton--right` |\n\n![Alignment](images/alignment.png)\n\n``` html\n<!-- Left Align -->\n<p class=\"skeleton skeleton--left\">\n  <span class=\"skeleton__line\"></span>\n  <span class=\"skeleton__line\"></span>\n  <span class=\"skeleton__line\"></span>\n  <span class=\"skeleton__line\"></span>\n</p>\n\n<!-- Center Align -->\n<p class=\"skeleton skeleton--center\">\n  <span class=\"skeleton__line\"></span>\n  <span class=\"skeleton__line\"></span>\n  <span class=\"skeleton__line\"></span>\n  <span class=\"skeleton__line\"></span>\n</p>\n\n<!-- Right Align -->\n<p class=\"skeleton skeleton--right\">\n  <span class=\"skeleton__line\"></span>\n  <span class=\"skeleton__line\"></span>\n  <span class=\"skeleton__line\"></span>\n  <span class=\"skeleton__line\"></span>\n</p>\n```\n\n<br />\n\n### Images\nYou can create an image skeleton by using the `.skeleton-image` class. By default this will apply the image skeleton at 100% height and width of the parent container.\n\n#### Sizes\nHere are some default sizes we have included for skeleton images:\n\n| Size | Modifier Class |\n| ------------ | ------------| \n| Small, 50x50 | `.skeleton-image--sm` |\n| Medium, 100x100 | `.skeleton-image--md` |\n| Large, 200x200 | `.skeleton-image--lg` |\n| X-Large, 400x400 | `.skeleton-image--xl` |\n| Full, 100% x 100% | `.skeleton-image--full` |\n\n![Images](images/images.png)\n\n``` html\n<img class=\"skeleton-image skeleton-image--md\" />\n<img class=\"skeleton-image skeleton-image--sm\" />\n<img class=\"skeleton-image skeleton-image--lg\" />\n<img class=\"skeleton-image skeleton-image--xl\" />\n```\n\n<br />\n\n#### Shapes\nYou can also make different image shapes using shape modifier classes:\n\n| Shape | Description | Modifier Class |\n| ------------ |------------ | ------------| \n| Square | Sets the image aspect ratio to 1/1 (default) | `.skeleton-image--square` |\n| Circle | Sets the border radius to 50% | `.skeleton-image--circle` |\n| Landscape Rectangle | Sets the image aspect ratio to 4/3 | `.skeleton-image--landscape` |\n| Portrait Rectangle | Sets the image aspect ratio to 3/4| `.skeleton-image--portrait` |\n| Wide Rectangle | Sets the image aspect ratio to 16/9 | `.skeleton-image--wide` |\n| Tall Rectangle | Sets the image aspect ratio to 9/16 | `.skeleton-image--tall` |\n\n``` html\n<div class=\"skeleton-image skeleton-image--lg skeleton-image--square\"></div>\n<div class=\"skeleton-image skeleton-image--lg skeleton-image--circle\"></div>\n<div class=\"skeleton-image skeleton-image--lg skeleton-image--landscape\"></div>\n<div class=\"skeleton-image skeleton-image--lg skeleton-image--portrait\"></div>\n<div class=\"skeleton-image skeleton-image--lg skeleton-image--wide\"></div>\n<div class=\"skeleton-image skeleton-image--lg skeleton-image--tall\"></div>\n```\n\n<br />\n\n### Animation\nTo add animation, add a `span.skeleton--animation` within the `.skeleton__line` elements in headers or paragaphs.\n\n![Animation](images/animation.gif)\n\n``` html\n<div>\n  <p class=\"skeleton\">\n    <span class=\"skeleton__line\">\n      <span class=\"skeleton--animation\"></span>\n    </span>\n        <span class=\"skeleton__line\">\n      <span class=\"skeleton--animation\"></span>\n    </span>\n    <span class=\"skeleton__line\">\n      <span class=\"skeleton--animation\"></span>\n    </span>\n    <span class=\"skeleton__line\">\n      <span class=\"skeleton--animation\"></span>\n    </span>\n  </p>\n</div>\n```\n\n<br />\n\n## JavaScript Utility\nThe easiest and our preferred way to add Skeletons is by using the included JavaScript utilities. \n\nOn either a header tag or a paragraph tag, add the `skeleton` class and a `data-lines` attribute with the number of lines you'd like the skeleton to have:\n\n``` html\n<h2 class=\"skeleton skeleton--md\" data-lines=\"2\"></h2>\n<p class=\"skeleton\" data-lines=\"7\"></p>\n```\n\n<br />\n\nYou can also give the skeleton animation by adding the `data-animation` attribute and setting it to `true`:\n\n``` html\n<h2 class=\"skeleton skeleton--md\" data-animation=\"true\"></h2>\n<p class=\"skeleton\" data-lines=\"7\" data-animation=\"true\"></p>\n```\n\n<br />\n\n### JavaScript Data Attributes\nYou can alter the way skeleton looks by utilizing other data-attributes as well, including opacity and color:\n``` html\n<!-- Opacity -->\n<h2 class=\"skeleton skeleton--md\" data-animation=\"true\"></h2>\n<p class=\"skeleton\" data-lines=\"7\" data-opacity=\"0.3\"></p>\n\n<!-- Color -->\n<h2 class=\"skeleton skeleton--md\" data-animation=\"true\"></h2>\n<p class=\"skeleton\" data-lines=\"7\" data-color=\"tomato\"></p>\n```\n\n#### All Data Attributes\n| Attribute | Description | Type |\n| ------------ |------------ | ------------| \n| `data-lines` | Determines how many lines to output | Integer |\n| `data-animation` | Adds animation to the skeleton lines | Boolean |\n| `data-opacity` | Sets the opacity of the skeleton lines (sets opacity between 0 and 1) | Float |\n| `data-color` | Sets the color of the skeleton lines | Color |\n"
  },
  {
    "path": "build.cmd",
    "content": "@echo Off\npushd %~dp0\nsetlocal\n\n:Build\ncall npm install\nif %ERRORLEVEL% neq 0 goto BuildFail\n\nif \"%APPVEYOR%\" equ \"True\" (\n  echo *** Building Production [%APPVEYOR_REPO_BRANCH%] ***\n  call npm run build\n\n) else (\n  echo *** Building Default ***\n  call npm run serve\n)\n\nif %ERRORLEVEL% neq 0 goto BuildFail\n\ngoto BuildSuccess\n\n:BuildFail\necho.\necho *** BUILD FAILED ***\ngoto End\n\n:BuildSuccess\necho.\necho *** BUILD SUCCEEDED ***\ngoto End\n\n:End\necho.\npopd\nexit /B %ERRORLEVEL%"
  },
  {
    "path": "examples/blog-post.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n  <title>Blog Post</title>\n  <link rel=\"stylesheet\" href=\"../dist/skelly.css\">\n\n  <style>\n    .container{\n      width:95%;\n      max-width:960px;\n      margin:0 auto;\n      display:flex;\n      flex-flow:column;\n    }\n\n    @media (min-width:768px){\n      .container{\n        flex-flow:row;\n      }\n    }\n\n    article{\n      flex:3;\n    }\n    aside{\n      flex:1;\n    }\n\n    @media (min-width:768px){\n      article, aside{\n        margin:0 1em;\n      }\n    }\n    \n    .block{\n      margin-bottom:1em;\n      padding:1em;\n      border-bottom:2px solid #EFEFEF;\n    }\n    .block:last-child{\n      border:0;\n    }\n\n    .card{\n      flex:1;\n      padding:1em;\n      margin:1em;\n      border:2px solid #EFEFEF;\n    }\n    .card img{\n      margin-bottom:1em;\n    }\n  </style>\n</head>\n<body>\n  <main class=\"container\">\n    <article>\n      <h1 class=\"skeleton skeleton--sm\" data-animation=\"true\"></h1>\n      <p class=\"skeleton\" data-lines=\"4\" data-animation=\"true\"></p>\n      <p class=\"skeleton\" data-lines=\"6\" data-animation=\"true\"></p>\n      <p class=\"skeleton\" data-lines=\"3\" data-animation=\"true\"></p>\n      <p class=\"skeleton\" data-lines=\"7\" data-animation=\"true\"></p>\n      <p class=\"skeleton\" data-lines=\"2\" data-animation=\"true\"></p>\n    </article>\n    <aside>\n      <div class=\"block\">\n        <h3 class=\"skeleton skeleton--md\"></h3>\n        <p class=\"skeleton\" data-lines=\"3\"></p>\n      </div>\n\n      <div class=\"block\">\n        <h3 class=\"skeleton skeleton--md\"></h3>\n        <p class=\"skeleton\" data-lines=\"3\"></p>\n      </div>\n    </aside>\n  </main>\n\n  <div class=\"container\">\n    <div class=\"card\">\n      <img class=\"skeleton-image skeleton-image--lg skeleton-image--landscape\" />\n      <h2 class=\"skeleton skeleton--md\"></h2>\n      <p class=\"skeleton\" data-lines=\"3\"></p>\n    </div>\n    <div class=\"card\">\n      <img class=\"skeleton-image skeleton-image--lg skeleton-image--landscape\" />\n      <h2 class=\"skeleton skeleton--md\"></h2>\n      <p class=\"skeleton\" data-lines=\"3\"></p>\n    </div>\n    <div class=\"card\">\n      <img class=\"skeleton-image skeleton-image--lg skeleton-image--landscape\" />\n      <h2 class=\"skeleton skeleton--md\"></h2>\n      <p class=\"skeleton\" data-lines=\"3\"></p>\n    </div>\n  </div>\n\n  <script src=\"../dist/skelly.js\"></script>\n</body>\n</html>"
  },
  {
    "path": "examples/index.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"UTF-8\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n    <title>Document</title>\n    <style>\n      #container {\n        box-sizing: border-box;\n        width: 95%;\n        max-width: 960px;\n        margin: 0 auto;\n      }\n\n      #headers {\n        margin: 1em 0 2em;\n        border: 1px solid black;\n        padding: 1em;\n      }\n\n      #headers .skeleton {\n        margin-bottom: 0.5em;\n      }\n\n      #paragraphs {\n        margin: 1em 0 2em;\n        padding: 1em;\n        border: 1px solid black;\n      }\n\n      #line-widths {\n        margin: 1em 0 2em;\n        padding: 1em;\n        border: 1px solid black;\n      }\n\n      #alignment {\n        display: grid;\n        grid-template-columns: 1fr 1fr 1fr;\n        column-gap: 1em;\n        margin: 1em 0 2em;\n        padding: 1em;\n        border: 1px solid black;\n      }\n\n      #images {\n        display: flex;\n        justify-content: center;\n        margin: 1em 0 2em;\n        padding: 1em;\n        border: 1px solid black;\n      }\n\n      #images img {\n        margin: 1em;\n      }\n\n      #image-shapes {\n        display: flex;\n        margin: 1em 0 2em;\n        padding: 1em;\n        border: 1px solid black;\n      }\n\n      #image-shapes .image {\n        flex: 1;\n        margin: 1em;\n        height: 300px;\n        display:flex;\n        align-items:center;\n        justify-content: center;\n      }\n\n      #animation{\n        margin: 1em 0 2em;\n        padding: 1em;\n        border: 1px solid black;\n      }\n    </style>\n  </head>\n  <body>\n    <div id=\"container\">\n      <!-- Headers -->\n      <div id=\"headers\">\n        <h1 class=\"skeleton\"></h1>\n        <h2 class=\"skeleton\"></h2>\n        <h3 class=\"skeleton\"></h3>\n        <h4 class=\"skeleton\"></h4>\n        <h5 class=\"skeleton\"></h5>\n        <h6 class=\"skeleton\"></h6>\n      </div>\n\n      <!-- Paragraphs -->\n      <div id=\"paragraphs\">\n        <p class=\"skeleton\">\n          <span class=\"skeleton__line\"></span>\n          <span class=\"skeleton__line\"></span>\n          <span class=\"skeleton__line\"></span>\n          <span class=\"skeleton__line\"></span>\n        </p>\n      </div>\n\n      <!-- Line Width -->\n      <div id=\"line-widths\">\n        <h1 class=\"skeleton skeleton--sm\"></h1>\n        <h1 class=\"skeleton skeleton--md\"></h1>\n        <h1 class=\"skeleton skeleton--lg\"></h1>\n        <h1 class=\"skeleton skeleton--full\"></h1>\n      </div>\n\n      <!-- Alignment -->\n      <div id=\"alignment\">\n        <!-- Left Align -->\n        <p class=\"skeleton skeleton--left\">\n          <span class=\"skeleton__line\"></span>\n          <span class=\"skeleton__line\"></span>\n          <span class=\"skeleton__line\"></span>\n          <span class=\"skeleton__line\"></span>\n        </p>\n\n        <!-- Center Align -->\n        <p class=\"skeleton skeleton--center\">\n          <span class=\"skeleton__line\"></span>\n          <span class=\"skeleton__line\"></span>\n          <span class=\"skeleton__line\"></span>\n          <span class=\"skeleton__line\"></span>\n        </p>\n\n        <!-- Right Align -->\n        <p class=\"skeleton skeleton--right\">\n          <span class=\"skeleton__line\"></span>\n          <span class=\"skeleton__line\"></span>\n          <span class=\"skeleton__line\"></span>\n          <span class=\"skeleton__line\"></span>\n        </p>\n      </div>\n\n      <div id=\"images\">\n        <img class=\"skeleton-image skeleton-image--sm\" />\n        <img class=\"skeleton-image skeleton-image--md\" />\n        <img class=\"skeleton-image skeleton-image--lg\" />\n        <img class=\"skeleton-image skeleton-image--xl\" />\n      </div>\n\n      <div id=\"image-shapes\">\n        <div class=\"image\">\n          <img\n            class=\"skeleton-image skeleton-image--lg skeleton-image--landscape\"\n          />\n        </div>\n\n        <div class=\"image\">\n          <img\n            class=\"skeleton-image skeleton-image--lg skeleton-image--portrait\"\n          />\n        </div>\n\n        <div class=\"image\">\n          <img\n            class=\"skeleton-image skeleton-image--lg skeleton-image--circle\"\n          />\n        </div>\n      </div>\n    \n      <div id=\"animation\">\n        <p class=\"skeleton\">\n          <span class=\"skeleton__line\">\n            <span class=\"skeleton--animation\"></span>\n          </span>\n              <span class=\"skeleton__line\">\n            <span class=\"skeleton--animation\"></span>\n          </span>\n          <span class=\"skeleton__line\">\n            <span class=\"skeleton--animation\"></span>\n          </span>\n          <span class=\"skeleton__line\">\n            <span class=\"skeleton--animation\"></span>\n          </span>\n        </p>\n      </div>\n\n    </div>\n\n\n    <script src=\"../dist/skelly.js\"></script>\n  </body>\n</html>\n"
  },
  {
    "path": "index.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"UTF-8\" />\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n    <title>Document</title>\n    <style>\n      /* styling for index.html only, not included in package */\n      body {\n        font-family: sans-serif;\n      }\n      #title {\n        margin-bottom: 2rem;\n      }\n      #container {\n        --container-width: 120ch;\n\n        width: min(var(--container-width), 100% - 3rem);\n        margin-inline: auto;\n      }\n\n      #headers {\n        margin: 1em 0 2em;\n        border: 1px solid black;\n        padding: 1em;\n      }\n\n      #headers .skeleton {\n        margin-bottom: 0.5em;\n      }\n\n      .paragraphs {\n        margin: 1em 0 2em;\n        padding: 1em;\n        border: 1px solid black;\n      }\n\n      #line-widths {\n        margin: 1em 0 2em;\n        padding: 1em;\n        border: 1px solid black;\n      }\n\n      #alignment {\n        display: grid;\n        grid-template-columns: 1fr 1fr 1fr;\n        column-gap: 1em;\n        margin: 1em 0 2em;\n        padding: 1em;\n        border: 1px solid black;\n      }\n\n      #images {\n        display: flex;\n        gap: 1rem;\n        justify-content: center;\n        margin: 1em 0 2em;\n        padding: 1em;\n        border: 1px solid black;\n      }\n\n      #images img {\n        margin: 1em;\n      }\n\n      #image-shapes {\n        display: flex;\n        flex-flow: column;\n        align-items: center;\n        justify-content: center;\n        margin: 1em 0 2em;\n        gap:1rem;\n        padding: 1em;\n        border: 1px solid black;\n      }\n\n      @media screen and (min-width: 786px) {\n        #image-shapes {\n          flex-flow: row;\n          flex-wrap: wrap;\n        }\n      }\n\n      #image-shapes .image {\n        margin: 1em;\n        display: flex;\n        flex-flow: column;\n        gap: 1rem;\n        height: 300px;\n        align-items: center;\n        justify-content: center;\n      }\n\n      #animation {\n        margin: 1em 0 2em;\n        padding: 1em;\n        border: 1px solid black;\n      }\n\n      #opacity {\n        background:#759FC1;\n      }\n    </style>\n  </head>\n  <body>\n    <div id=\"container\">\n      <h1 id=\"title\">SkellyCSS</h1>\n      <!-- Headers -->\n      <h2>Headers</h2>\n      <div id=\"headers\">\n        <h1 class=\"skeleton\"></h1>\n        <h2 class=\"skeleton\"></h2>\n        <h3 class=\"skeleton\"></h3>\n        <h4 class=\"skeleton\"></h4>\n        <h5 class=\"skeleton\"></h5>\n        <h6 class=\"skeleton\"></h6>\n      </div>\n\n      <!-- Paragraphs -->\n      <h2>Paragraphs</h2>\n      <div id=\"paragraphs\" class=\"paragraphs\">\n        <p class=\"skeleton\" data-lines=\"6\"></p>\n      </div>\n\n      <!-- Line Width -->\n      <h2>Line Widths</h2>\n      <div id=\"line-widths\">\n        <h3>Small</h3>\n        <h1 class=\"skeleton skeleton--sm\"></h1>\n        <h3>Medium</h3>\n        <h1 class=\"skeleton skeleton--md\"></h1>\n        <h3>Large</h3>\n        <h1 class=\"skeleton skeleton--lg\"></h1>\n        <h3>Full</h3>\n        <h1 class=\"skeleton skeleton--full\"></h1>\n      </div>\n\n      <!-- Alignment -->\n      <h2>Alignment</h2>\n      <div id=\"alignment\">\n        <!-- Left Align -->\n        <p class=\"skeleton skeleton--left\">\n          <span class=\"skeleton__line\"></span>\n          <span class=\"skeleton__line\"></span>\n          <span class=\"skeleton__line\"></span>\n          <span class=\"skeleton__line\"></span>\n        </p>\n\n        <!-- Center Align -->\n        <p class=\"skeleton skeleton--center\">\n          <span class=\"skeleton__line\"></span>\n          <span class=\"skeleton__line\"></span>\n          <span class=\"skeleton__line\"></span>\n          <span class=\"skeleton__line\"></span>\n        </p>\n\n        <!-- Right Align -->\n        <p class=\"skeleton skeleton--right\">\n          <span class=\"skeleton__line\"></span>\n          <span class=\"skeleton__line\"></span>\n          <span class=\"skeleton__line\"></span>\n          <span class=\"skeleton__line\"></span>\n        </p>\n      </div>\n\n      <h2>Images</h2>\n      <div id=\"images\">\n        <div class=\"skeleton-image skeleton-image--sm\"></div>\n        <div class=\"skeleton-image skeleton-image--md\"></div>\n        <div class=\"skeleton-image skeleton-image--lg\"></div>\n        <div class=\"skeleton-image skeleton-image--xl\"></div>\n      </div>\n\n      <h2>Image Shapes</h2>\n      <div id=\"image-shapes\">\n        <div class=\"image\">\n          <h3>Square</h3>\n          <div\n            class=\"skeleton-image skeleton-image--lg skeleton-image--square\"\n          ></div>\n        </div>\n\n        <div class=\"image\">\n          <h3>Circle</h3>\n          <div\n            class=\"skeleton-image skeleton-image--lg skeleton-image--circle\"\n          ></div>\n        </div>\n\n        <div class=\"image\">\n          <h3>Landscape</h3>\n          <div\n            class=\"skeleton-image skeleton-image--lg skeleton-image--landscape\"\n          ></div>\n        </div>\n\n        <div class=\"image\">\n          <h3>Portrait</h3>\n          <div\n            class=\"skeleton-image skeleton-image--lg skeleton-image--portrait\"\n          ></div>\n        </div>\n\n        <div class=\"image\">\n          <h3>Wide</h3>\n          <div\n            class=\"skeleton-image skeleton-image--lg skeleton-image--wide\"\n          ></div>\n        </div>\n\n        <div class=\"image\">\n          <h3>Tall</h3>\n          <div\n            class=\"skeleton-image skeleton-image--lg skeleton-image--tall\"\n          ></div>\n        </div>\n      </div>\n\n      <h2>Animation</h2>\n      <div id=\"animation\">\n        <p class=\"skeleton\">\n          <span class=\"skeleton__line\">\n            <span class=\"skeleton--animation\"></span>\n          </span>\n          <span class=\"skeleton__line\">\n            <span class=\"skeleton--animation\"></span>\n          </span>\n          <span class=\"skeleton__line\">\n            <span class=\"skeleton--animation\"></span>\n          </span>\n          <span class=\"skeleton__line\">\n            <span class=\"skeleton--animation\"></span>\n          </span>\n        </p>\n      </div>\n      \n      <h2>Opacity</h2>\n      <div id=\"opacity\" class=\"paragraphs\">\n        <p class=\"skeleton\" data-lines=\"6\" data-opacity=\"0.3\"></p>\n      </div>\n      \n      <h2>Color</h2>\n      <div id=\"color\" class=\"paragraphs\">\n        <p class=\"skeleton\" data-lines=\"6\" data-color=\"rebeccapurple\"></p>\n      </div>\n    </div>\n\n\n    <script type=\"module\" src=\"/main.js\"></script>\n  </body>\n</html>\n"
  },
  {
    "path": "main.js",
    "content": "import './src/style.scss';\nimport './src/index.js';\n"
  },
  {
    "path": "package/LICENSE",
    "content": "MIT License\n\nCopyright (c) 2020 Ritter Insurance Marketing\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "package/README.md",
    "content": "<div style=\"display:flex; align-items:center; justify-content:center; height:300px;\">\n  <img src=\"images/fish-skeleton.png\" />\n</div>\n\n# skellyCSS\nA light-weight CSS framework to quickly implement skeletons into your projects.\n\n\n<h2>Table of Contents</h2>\n\n- [skellyCSS](#skellycss)\n  - [Installation](#installation)\n    - [CSS](#css)\n    - [JavaScript](#javascript)\n  - [Quick Usage](#quick-usage)\n  - [Usage](#usage)\n    - [Headers](#headers)\n    - [Paragraphs](#paragraphs)\n    - [Line Width](#line-width)\n    - [Alignment](#alignment)\n    - [Images](#images)\n      - [Sizes](#sizes)\n      - [Shapes](#shapes)\n    - [Animation](#animation)\n  - [JavaScript Utility](#javascript-utility)\n\n<br />\n\n## Installation\n### CSS\nInclude the skelly.css file wherever you add your CSS:\n``` html\n<link rel=\"stylesheet\" href=\"../dist/skelly.css\">\n```\n\n### JavaScript\nInclude the skelly.js file wherever you add your JavaScript:\n``` html\n<script src=\"../dist/skelly.js\"></script>\n```\n\n<br />\n\n## Quick Usage\nYou can quickly get started using skellyCSS using the JavaScript utility, like so:\n``` html\n<h2 class=\"skeleton skeleton--md\" data-animation=\"true\"></h2>\n<p class=\"skeleton\" data-lines=\"4\" data-animation=\"true\">\n```\n**See full [JavaScript Utility](#javascript-utility) docs below**\n\n<br />\n\n## Usage\nSkeletons can be quickly added to any project with a few simple lines of code. \n\n### Headers\nApply the `skeleton` class to any type of header and it will automatically adjust to the font-size of the header stylings:\n\n![Headers](images/headers.png)\n\n``` html\n<h1 class=\"skeleton\"></h1>\n<h2 class=\"skeleton\"></h2>\n<h3 class=\"skeleton\"></h3>\n<h4 class=\"skeleton\"></h4>\n<h5 class=\"skeleton\"></h5>\n<h6 class=\"skeleton\"></h6>\n```\n\n<br />\n\n### Paragraphs\nYou can create paragraph skeletons by applying the `skeleton` class to the paragraph tag, then including however many span tags you'd like with the `skeleton__line` class within the paragraph. In order to make the paragraph skeleton look more like a paragraph, the last line is set to 50% width.\n\n![Paragraphs](images/paragraphs.png)\n```html\n<div>\n  <p class=\"skeleton\">\n    <span class=\"skeleton__line\"></span>\n    <span class=\"skeleton__line\"></span>\n    <span class=\"skeleton__line\"></span>\n    <span class=\"skeleton__line\"></span>\n  </p>\n</div>\n```\n\n<br />\n\n### Line Width\nYou can adjust the line width by applying a size modifier class:\n| Width | Modifier Class | \n| ------------ | ------------|\n| Small, 25% | `.skeleton--sm` |\n| Medium, 50% | `.skeleton--md` |\n| Large, 75% | `.skeleton--lg` |\n| Full, 100% | `.skeleton--full` |\n\n![Line Widths](images/line-widths.png)\n\n``` html\n<h1 class=\"skeleton skeleton--sm\"></h1>\n<h1 class=\"skeleton skeleton--md\"></h1>\n<h1 class=\"skeleton skeleton--lg\"></h1>\n<h1 class=\"skeleton skeleton--full\"></h1>\n```\n\n<br />\n\n### Alignment\nYou can text align the skeleton using alignment modifier classes:\n\n| Alignment | Modifier Class |\n| ------------ | ------------|\n| Left | `.skeleton--left` |\n| Center | `.skeleton--center` |\n| Right | `.skeleton--right` |\n\n![Alignment](images/alignment.png)\n\n``` html\n<!-- Left Align -->\n<p class=\"skeleton skeleton--left\">\n  <span class=\"skeleton__line\"></span>\n  <span class=\"skeleton__line\"></span>\n  <span class=\"skeleton__line\"></span>\n  <span class=\"skeleton__line\"></span>\n</p>\n\n<!-- Center Align -->\n<p class=\"skeleton skeleton--center\">\n  <span class=\"skeleton__line\"></span>\n  <span class=\"skeleton__line\"></span>\n  <span class=\"skeleton__line\"></span>\n  <span class=\"skeleton__line\"></span>\n</p>\n\n<!-- Right Align -->\n<p class=\"skeleton skeleton--right\">\n  <span class=\"skeleton__line\"></span>\n  <span class=\"skeleton__line\"></span>\n  <span class=\"skeleton__line\"></span>\n  <span class=\"skeleton__line\"></span>\n</p>\n```\n\n<br />\n\n### Images\nYou can create an image skeleton by adding the `.skeleton-image` class to an img tag -- do not include the `src` attribute. By default this will apply the image skeleton at 100% height and width of the parent container.\n\n#### Sizes\nHere are some default sizes we have included for skeleton images:\n\n| Size | Modifier Class |\n| ------------ | ------------| \n| Small, 50x50 | `.skeleton-image--sm` |\n| Medium, 100x100 | `.skeleton-image--md` |\n| Large, 200x200 | `.skeleton-image--lg` |\n| X-Large, 400x400 | `.skeleton-image--xl` |\n| Full, 100% x 100% | `.skeleton-image--full` |\n\n![Images](images/images.png)\n\n``` html\n<img class=\"skeleton-image skeleton-image--md\" />\n<img class=\"skeleton-image skeleton-image--sm\" />\n<img class=\"skeleton-image skeleton-image--lg\" />\n<img class=\"skeleton-image skeleton-image--xl\" />\n```\n\n<br />\n\n#### Shapes\nYou can also make different image shapes using shape modifier classes:\n\n| Shape | Description | Modifier Class |\n| ------------ |------------ | ------------| \n| Landscape Rectangle | Sets the width of the image to 100% | `.skeleton-image--landscape` |\n| Portrait Rectangle | Sets the height of the image to 100% | `.skeleton-image--portrait` |\n| Circle | Sets the border radius to 50% | `.skeleton-image--circle` |\n\n![Image Shapes](images/image-shapes.png)\n\n``` html\n<img class=\"skeleton-image skeleton-image--lg skeleton-image--landscape\" />\n<img class=\"skeleton-image skeleton-image--lg skeleton-image--portrait\" />\n<img class=\"skeleton-image skeleton-image--lg skeleton-image--circle\" />\n```\n\n<br />\n\n### Animation\nTo add animation, add a `span.skeleton--animation` within the `.skeleton__line` elements in headers or paragaphs.\n\n![Animation](images/animation.gif)\n\n``` html\n<div>\n  <p class=\"skeleton\">\n    <span class=\"skeleton__line\">\n      <span class=\"skeleton--animation\"></span>\n    </span>\n        <span class=\"skeleton__line\">\n      <span class=\"skeleton--animation\"></span>\n    </span>\n    <span class=\"skeleton__line\">\n      <span class=\"skeleton--animation\"></span>\n    </span>\n    <span class=\"skeleton__line\">\n      <span class=\"skeleton--animation\"></span>\n    </span>\n  </p>\n</div>\n```\n\n<br />\n\n## JavaScript Utility\nThe easiest and our preferred way to add Skeletons is by using the included JavaScript utilities. \n\nOn either a header tag or a paragraph tag, add the `skeleton` class and a `data-lines` attribute with the number of lines you'd like the skeleton to have:\n\n``` html\n<h2 class=\"skeleton skeleton--md\" data-lines=\"2\"></h2>\n<p class=\"skeleton\" data-lines=\"7\"></p>\n```\n\n<br />\n\nYou can also give the skeleton animation by adding the `data-animation` attribute and setting it to `true`:\n\n``` html\n<h2 class=\"skeleton skeleton--md\" data-animation=\"true\"></h2>\n<p class=\"skeleton\" data-lines=\"7\" data-animation=\"true\"></p>\n```"
  },
  {
    "path": "package/package.json",
    "content": "{\n  \"name\": \"@ritterim/skellycss\",\n  \"version\": \"0.0.1\",\n  \"description\": \"A light-weight CSS framework to quickly implement skeletons into your projects.\",\n  \"main\": \"dist/skelly.js\",\n  \"files\":[\n    \"dist/\"\n  ],\n  \"scripts\": {\n    \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\",\n    \"dev\": \"parcel src/skelly.js\",\n    \"build\": \"parcel build src/skelly.js\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/ritterim/skellyCSS.git\"\n  },\n  \"keywords\": [\"skeleton screens\", \"skeletons\", \"loading skeleton\"],\n  \"author\": \"Ritter Insurance Marketing (https://rimdev.io)\",\n  \"license\": \"MIT\",\n  \"bugs\": {\n    \"url\": \"https://github.com/ritterim/skellyCSS/issues\"\n  },\n  \"homepage\": \"https://github.com/ritterim/skellyCSS#readme\",\n  \"devDependencies\": {\n    \"cssnano\": \"^4.1.10\",\n    \"sass\": \"^1.30.0\"\n  },\n  \"dependencies\": {\n    \"assets\": \"^3.0.1\"\n  }\n}\n"
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"@ritterim/skellycss\",\n  \"version\": \"0.1.6\",\n  \"description\": \"A light-weight CSS framework to quickly implement skeletons into your projects.\",\n  \"main\": \"dist/skelly.js\",\n  \"files\": [\n    \"dist/\"\n  ],\n  \"scripts\": {\n    \"start\": \"vite\",\n    \"build\": \"vite build\",\n    \"preview\": \"vite preview\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/ritterim/skellyCSS.git\"\n  },\n  \"keywords\": [\n    \"skeleton screens\",\n    \"skeletons\",\n    \"loading skeleton\"\n  ],\n  \"author\": \"Ritter Insurance Marketing (https://rimdev.io)\",\n  \"license\": \"MIT\",\n  \"bugs\": {\n    \"url\": \"https://github.com/ritterim/skellyCSS/issues\"\n  },\n  \"browserslist\": [\n    \"defaults\",\n    \"not IE 11\",\n    \"maintained node versions\"\n  ],\n  \"homepage\": \"https://github.com/ritterim/skellyCSS#readme\",\n  \"devDependencies\": {\n    \"autoprefixer\": \"^10.4.15\",\n    \"postcss\": \"^8.4.29\",\n    \"postcss-cli\": \"^10.1.0\",\n    \"sass\": \"^1.66.1\",\n    \"vite\": \"^4.4.9\",\n    \"vite-plugin-banner\": \"^0.7.0\"\n  }\n}\n"
  },
  {
    "path": "postcss.config.js",
    "content": "module.exports = {\n  plugins: [require('autoprefixer')]\n};\n"
  },
  {
    "path": "src/index.js",
    "content": "const skeletons = document.querySelectorAll('.skeleton');\n\nif (skeletons) {\n  skeletons.forEach((skelly) => {\n    let lineCount = parseInt(skelly.dataset.lines);\n    let opacity = skelly.dataset.opacity\n      ? parseFloat(skelly.dataset.opacity)\n      : null;\n\n    let color = skelly.dataset.color ? skelly.dataset.color : null;\n\n    if (!lineCount && skelly.innerHTML.trim().length == 0) {\n      lineCount = 1;\n    }\n\n    for (let i = 0; i < lineCount; i++) {\n      const line = document.createElement('span');\n      line.classList.add('skeleton__line');\n\n      if (skelly.dataset.animation === 'true') {\n        const animationElement = document.createElement('span');\n        animationElement.classList.add('skeleton--animation');\n        line.append(animationElement);\n      }\n\n      skelly.append(line);\n    }\n\n    if (opacity && opacity <= 1) {\n      const lines = skelly.querySelectorAll('.skeleton__line');\n      lines.forEach((line) => (line.style.opacity = opacity));\n    }\n\n    if (color) {\n      const lines = skelly.querySelectorAll('.skeleton__line');\n      lines.forEach(line => line.style.setProperty('--skelly-color', color));\n      \n    }\n  });\n}\n\nconst skeletonImages = document.querySelectorAll('.skeleton-image');\n\nif (skeletonImages) {\n  skeletonImages.forEach((skelly) => {\n    let animation = skelly.dataset.animation === 'true';\n    let opacity = skelly.dataset.opacity\n      ? parseFloat(skelly.dataset.opacity)\n      : null;\n\n    if (animation === true) {\n      const animationElement = document.createElement('span');\n      animationElement.classList.add('skeleton--animation');\n      skelly.append(animationElement);\n    }\n\n    if (opacity && opacity <= 1) skelly.style.opacity = opacity;\n  });\n}\n"
  },
  {
    "path": "src/style.scss",
    "content": "$skelly-color: #EFEFEF;\n\n:root{\n --skelly-color: #EFEFEF;\n} ;\n\n$skelly-line-widths: (\n  \"sm\": 25%,\n  \"md\": 50%,\n  \"lg\": 75%,\n  \"full\": 100%,\n);\n\n$skelly-image-sizes: (\n  \"sm\": 50px,\n  \"md\": 100px,\n  \"lg\": 200px,\n  \"xl\": 400px,\n  \"full\": 100%,\n);\n\n.skeleton {\n  position: relative;\n  box-sizing: border-box;\n  display: flex;\n  flex-flow: column;\n  width: 100%;\n\n  &__line {\n    overflow: hidden;\n    position: relative;\n    box-sizing: border-box;\n    display: block;\n    height: 1em;\n    width: 100%;\n    background: var(--skelly-color);\n    border-radius: 3px;\n  }\n\n  &__line + &__line:last-child {\n    width: 50%;\n  }\n\n  @each $width-label, $width in $skelly-line-widths {\n    &--#{$width-label} {\n      width: $width;\n    }\n  }\n\n  &--left {\n    display: flex;\n    flex-flow: column;\n    align-items: flex-start;\n  }\n\n  &--center {\n    display: flex;\n    flex-flow: column;\n    align-items: center;\n  }\n\n  &--right {\n    display: flex;\n    flex-flow: column;\n    align-items: flex-end;\n  }\n\n  &--animation {\n    position: abosolute;\n    display: flex;\n    height: 100%;\n    background: rgb(255, 255, 255);\n    background: linear-gradient(\n      90deg,\n      rgba(255, 255, 255, 0) 0%,\n      rgba(255, 255, 255, 0) 10%,\n      rgba(255, 255, 255, 0.5) 50%,\n      rgba(255, 255, 255, 0) 90%,\n      rgba(255, 255, 255, 0) 100%\n    );\n\n    animation: shine 3s infinite cubic-bezier(0.55, 0.055, 0.675, 0.19);\n  }\n\n  &:last-child {\n    margin-bottom: 0;\n  }\n}\n\np {\n  .skeleton__line {\n    margin-bottom: 0.6em;\n  }\n}\n\n.skeleton-image {\n  overflow: hidden;\n  display: block;\n  background-color: var(--skelly-color);\n  background-image: url(\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBpZD0iTGF5ZXJfMSIgeD0iMCIgeT0iMCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMjIyLjQgMjg4IiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCAyMjIuNCAyODgiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIvPjxnPjxwYXRoIGQ9Ik0yMTgsNzQuM0wxNDguOSw1LjhjLTItMi00LjgtMy4yLTcuNy0zLjJIMjQuN0MxMi4xLDIuNiwxLjksMTIuOCwxLjksMjUuNFYyNjNjMCwxMi42LDEwLjIsMjIuOCwyMi44LDIyLjhoMTczLjcgYzEyLjYsMCwyMi44LTEwLjIsMjIuOC0yMi44VjgyQzIyMS4yLDc5LjEsMjIwLjEsNzYuMywyMTgsNzQuM3ogTTE0NS44LDM2LjVsNDEuMyw0MWgtNDEuM1YzNi41eiBNMjUuOSwyNjEuOFYyNi42aDk1Ljh2NTkuMiBjMCw4LjYsNywxNS42LDE1LjYsMTUuNmg1OS44djE2MC40SDI1Ljl6Ii8+PGNpcmNsZSBjeD0iNzMuMyIgY3k9IjExNS4yIiByPSIyNy4xIi8+PHBhdGggZD0iTTE0Mi43LDEzNy42Yy0xLjgtMS45LTQuMy0zLTYuOS0yLjljLTIuNiwwLjEtNS4xLDEuMy02LjcsMy4zbC0zOC4yLDQ2LjVsLTkuMy05LjdjLTEuOC0xLjktNC4yLTIuOS02LjgtMi44IGMtMi42LDAuMS01LDEuMy02LjYsMy4zbC0yNS4zLDMwLjZjLTEuMywxLjYtMi4xLDMuNi0yLjEsNS43djI3LjJjMCw1LDQsOSw5LDloMTI0LjhjNSwwLDktNCw5LTlWMTg2YzAtMi4yLTAuOC00LjQtMi4zLTYuMSBMMTQyLjcsMTM3LjZ6IE0xNjUuNiwyMjkuN0g1OC44di0xNWwxNi44LTIwLjNsOS4zLDkuN2MxLjgsMS45LDQuMywyLjksNi44LDIuOGMyLjYtMC4xLDUtMS4zLDYuNi0zLjNsMzgtNDYuM2wyOS4yLDMyLjFWMjI5Ljd6Ii8+PC9nPjwvc3ZnPg==\");\n  background-blend-mode: overlay;\n  background-repeat: no-repeat;\n  background-position: center;\n  background-size: 15px;\n  aspect-ratio: 1;\n\n  @each $size-label, $size in $skelly-image-sizes {\n    &--#{$size-label} {\n      height: $size;\n      width: $size;\n    }\n  }\n\n  &--square{\n    aspect-ratio: 1;\n  }\n\n  &--landscape {\n    aspect-ratio: 4/3;\n    height:auto;\n  }\n  \n  &--portrait {\n    aspect-ratio: 3/4;\n    width:auto;\n  }\n\n  &--wide {\n    aspect-ratio: 16/9;\n    height:auto;\n  }\n\n  &--tall {\n    aspect-ratio: 9/16;\n    width:auto;\n  }\n\n  &--circle {\n    border-radius: 50%;\n  }\n}\n\n.skeleton:is(h1, h2, h3, h4, h5, h6) {\n  margin: 0;\n  padding: 0;\n  .skeleton__line {\n    margin-bottom: 0.2em;\n    background: var(--skelly-color);\n  }\n  &.skeleton--center{\n    margin:0 auto;\n  }\n  &.skeleton--left{\n    margin:0 auto 0 0;\n  }\n  &.skeleton--right{\n    margin:0 0 0 auto;\n  }\n}\n\n@keyframes shine {\n  0% {\n    transform: translateX(-100%);\n  }\n\n  30% {\n    transform: translateX(100%);\n  }\n\n  100% {\n    transform: translateX(100%);\n  }\n}\n"
  },
  {
    "path": "vite.config.js",
    "content": "// vite.config.js\nconst { defineConfig } = require('vite');\nconst path = require('path');\nimport banner from 'vite-plugin-banner';\n// import copy from 'rollup-plugin-copy';\nconst pjson = require('./package.json');\nconst year = new Date().getFullYear();\n\nconst puiHeader = [\n  '/*',\n  '  SkellyCSS v' + pjson.version + ' | ' + pjson.name + '\\n',\n  '  ' + pjson.description + ' (' + pjson.homepage + ')',\n  '  ©' + year + ' ' + pjson.author,\n  '  ' + pjson.bugs.url,\n  '  Released under the ' + pjson.license + ' license.',\n  '*/',\n  '',\n].join('\\n');\n\nexport default defineConfig({\n  plugins: [\n    banner(puiHeader)\n  ],\n  build: {\n    lib: {\n      entry: path.resolve(__dirname, 'main.js'),\n      name: 'SkellyCSS',\n      fileName: () => `skelly.js`,\n    },\n  },\n});\n"
  }
]