UNPKG

extra-tailwindcss-safe-area

Version:
288 lines (256 loc) 8.96 kB
const test = require("ava"); const postcss = require("postcss"); const tailwindcss = require("tailwindcss"); const safeArea = require("../index"); async function generateCSS(config) { const result = await postcss(tailwindcss(config)).process( "@tailwind utilities", { from: undefined }, ); return result.css; } test("generates all utilities", async (t) => { const config = { content: [{ raw: "" }], safelist: [{ pattern: /.*safe.*$/ }], theme: { spacing: { 1: "8px", }, extend: {}, }, plugins: [safeArea], }; const css = await generateCSS(config); console.log("🚀 ~ test ~ css:", css) t.snapshot(css); }); test("generates base spacing safe-area utilities", async (t) => { const config = { content: [ { raw: "m-safe mx-safe my-safe mt-safe mr-safe mb-safe ml-safe p-safe px-safe py-safe pt-safe pr-safe pb-safe pl-safe", }, ], theme: { extend: {}, }, plugins: [safeArea], }; const css = await generateCSS(config); t.true(css.includes(".m-safe")); t.true(css.includes(".mx-safe")); t.true(css.includes(".my-safe")); t.true(css.includes(".mt-safe")); t.true(css.includes(".mr-safe")); t.true(css.includes(".mb-safe")); t.true(css.includes(".ml-safe")); t.true(css.includes(".p-safe")); t.true(css.includes(".px-safe")); t.true(css.includes(".py-safe")); t.true(css.includes(".pt-safe")); t.true(css.includes(".pr-safe")); t.true(css.includes(".pb-safe")); t.true(css.includes(".pl-safe")); }); test("generates offset spacing safe-area utilities", async (t) => { const config = { content: [ { raw: "h-safe-top-offset-1 h-safe-bottom-offset-1 w-safe-left-offset-1 w-safe-right-offset-1 m-safe-offset-1 mx-safe-offset-1 my-safe-offset-1 ms-safe-offset-1 me-safe-offset-1 mt-safe-offset-1 mr-safe-offset-1 mb-safe-offset-1 ml-safe-offset-1 p-safe-offset-1 px-safe-offset-1 py-safe-offset-1 ps-safe-offset-1 pe-safe-offset-1 pt-safe-offset-1 pr-safe-offset-1 pb-safe-offset-1 pl-safe-offset-1", }, ], theme: { extend: {}, }, plugins: [safeArea], }; const css = await generateCSS(config); t.true(css.includes(".h-safe-top-offset-1")); t.true(css.includes(".h-safe-bottom-offset-1")); t.true(css.includes(".w-safe-left-offset-1")); t.true(css.includes(".w-safe-right-offset-1")); t.true(css.includes(".m-safe-offset-1")); t.true(css.includes(".mx-safe-offset-1")); t.true(css.includes(".my-safe-offset-1")); t.true(css.includes(".ms-safe-offset-1")); t.true(css.includes(".me-safe-offset-1")); t.true(css.includes(".mt-safe-offset-1")); t.true(css.includes(".mr-safe-offset-1")); t.true(css.includes(".mb-safe-offset-1")); t.true(css.includes(".ml-safe-offset-1")); t.true(css.includes(".p-safe-offset-1")); t.true(css.includes(".px-safe-offset-1")); t.true(css.includes(".py-safe-offset-1")); t.true(css.includes(".ps-safe-offset-1")); t.true(css.includes(".pe-safe-offset-1")); t.true(css.includes(".pt-safe-offset-1")); t.true(css.includes(".pr-safe-offset-1")); t.true(css.includes(".pb-safe-offset-1")); t.true(css.includes(".pl-safe-offset-1")); }); test("generates min spacing safe-area utilities", async (t) => { const config = { content: [ { raw: "h-safe-top-min-1 h-safe-bottom-min-1 w-safe-left-min-1 w-safe-right-min-1 m-safe-min-1 mx-safe-min-1 my-safe-min-1 ms-safe-min-1 me-safe-min-1 mt-safe-min-1 mr-safe-min-1 mb-safe-min-1 ml-safe-min-1 p-safe-min-1 px-safe-min-1 py-safe-min-1 ps-safe-min-1 pe-safe-min-1 pt-safe-min-1 pr-safe-min-1 pb-safe-min-1 pl-safe-min-1", }, ], theme: { extend: {}, }, plugins: [safeArea], }; const css = await generateCSS(config); t.true(css.includes(".h-safe-top-min-1")); t.true(css.includes(".h-safe-bottom-min-1")); t.true(css.includes(".w-safe-left-min-1")); t.true(css.includes(".w-safe-right-min-1")); t.true(css.includes(".m-safe-min-1")); t.true(css.includes(".mx-safe-min-1")); t.true(css.includes(".my-safe-min-1")); t.true(css.includes(".ms-safe-min-1")); t.true(css.includes(".me-safe-min-1")); t.true(css.includes(".mt-safe-min-1")); t.true(css.includes(".mr-safe-min-1")); t.true(css.includes(".mb-safe-min-1")); t.true(css.includes(".ml-safe-min-1")); t.true(css.includes(".p-safe-min-1")); t.true(css.includes(".px-safe-min-1")); t.true(css.includes(".py-safe-min-1")); t.true(css.includes(".ps-safe-min-1")); t.true(css.includes(".pe-safe-min-1")); t.true(css.includes(".pt-safe-min-1")); t.true(css.includes(".pr-safe-min-1")); t.true(css.includes(".pb-safe-min-1")); t.true(css.includes(".pl-safe-min-1")); }); test("generates max spacing safe-area utilities", async (t) => { const config = { content: [ { raw: "h-safe-top-max-1 h-safe-bottom-max-1 w-safe-left-max-1 w-safe-right-max-1 m-safe-max-1 mx-safe-max-1 my-safe-max-1 ms-safe-max-1 me-safe-max-1 mt-safe-max-1 mr-safe-max-1 mb-safe-max-1 ml-safe-max-1 p-safe-max-1 px-safe-max-1 py-safe-max-1 ps-safe-max-1 pe-safe-max-1 pt-safe-max-1 pr-safe-max-1 pb-safe-max-1 pl-safe-max-1", }, ], theme: { extend: {}, }, plugins: [safeArea], }; const css = await generateCSS(config); t.true(css.includes(".h-safe-top-max-1")); t.true(css.includes(".h-safe-bottom-max-1")); t.true(css.includes(".w-safe-left-max-1")); t.true(css.includes(".w-safe-right-max-1")); t.true(css.includes(".m-safe-max-1")); t.true(css.includes(".mx-safe-max-1")); t.true(css.includes(".my-safe-max-1")); t.true(css.includes(".ms-safe-max-1")); t.true(css.includes(".me-safe-max-1")); t.true(css.includes(".mt-safe-max-1")); t.true(css.includes(".mr-safe-max-1")); t.true(css.includes(".mb-safe-max-1")); t.true(css.includes(".ml-safe-max-1")); t.true(css.includes(".p-safe-max-1")); t.true(css.includes(".px-safe-max-1")); t.true(css.includes(".py-safe-max-1")); t.true(css.includes(".ps-safe-max-1")); t.true(css.includes(".pe-safe-max-1")); t.true(css.includes(".pt-safe-max-1")); t.true(css.includes(".pr-safe-max-1")); t.true(css.includes(".pb-safe-max-1")); t.true(css.includes(".pl-safe-max-1")); }); test("generates scroll spacing safe-area utilities", async (t) => { const config = { content: [ { raw: "scroll-m-safe scroll-mx-safe scroll-my-safe scroll-ms-safe scroll-me-safe scroll-mt-safe scroll-mr-safe scroll-mb-safe scroll-ml-safe scroll-p-safe scroll-px-safe scroll-py-safe scroll-ps-safe scroll-pe-safe scroll-pt-safe scroll-pr-safe scroll-pb-safe scroll-pl-safe", }, ], theme: { extend: {}, }, plugins: [safeArea], }; const css = await generateCSS(config); t.true(css.includes(".scroll-m-safe")); t.true(css.includes(".scroll-mx-safe")); t.true(css.includes(".scroll-my-safe")); t.true(css.includes(".scroll-ms-safe")); t.true(css.includes(".scroll-me-safe")); t.true(css.includes(".scroll-mt-safe")); t.true(css.includes(".scroll-mr-safe")); t.true(css.includes(".scroll-mb-safe")); t.true(css.includes(".scroll-ml-safe")); t.true(css.includes(".scroll-p-safe")); t.true(css.includes(".scroll-px-safe")); t.true(css.includes(".scroll-py-safe")); t.true(css.includes(".scroll-ps-safe")); t.true(css.includes(".scroll-pe-safe")); t.true(css.includes(".scroll-pt-safe")); t.true(css.includes(".scroll-pr-safe")); t.true(css.includes(".scroll-pb-safe")); t.true(css.includes(".scroll-pl-safe")); }); test("generates height safe-area utilities", async (t) => { const config = { content: [ { raw: "min-h-screen-safe max-h-screen-safe h-screen-safe h-safe-top h-safe-bottom", }, ], theme: { extend: {}, }, plugins: [safeArea], }; const css = await generateCSS(config); t.true(css.includes(".min-h-screen-safe")); t.true(css.includes(".max-h-screen-safe")); t.true(css.includes(".h-screen-safe")); t.true(css.includes(".h-safe-top")); t.true(css.includes(".h-safe-bottom")); }); test("generates width safe-area utilities", async (t) => { const config = { content: [ { raw: "min-w-screen-safe max-w-screen-safe w-screen-safe w-safe-left w-safe-right", }, ], theme: { extend: {}, }, plugins: [safeArea], }; const css = await generateCSS(config); t.true(css.includes(".min-w-screen-safe")); t.true(css.includes(".max-w-screen-safe")); t.true(css.includes(".w-screen-safe")); t.true(css.includes(".w-safe-left")); t.true(css.includes(".w-safe-right")); }); test("generates position safe-area utilities", async (t) => { const config = { content: [ { raw: "inset-safe inset-x-safe inset-y-safe start-safe end-safe top-safe right-safe bottom-safe left-safe", }, ], theme: { extend: {}, }, plugins: [safeArea], }; const css = await generateCSS(config); t.true(css.includes(".inset-safe")); t.true(css.includes(".inset-x-safe")); t.true(css.includes(".inset-y-safe")); t.true(css.includes(".start-safe")); t.true(css.includes(".end-safe")); t.true(css.includes(".top-safe")); t.true(css.includes(".right-safe")); t.true(css.includes(".bottom-safe")); t.true(css.includes(".left-safe")); });