Skip to content

Commit

Permalink
fix(modules): update scaffold tailwind (#553)
Browse files Browse the repository at this point in the history
Updating how scoping tailwind logic for modules work. Confirmed it works
in local dev, local prod, and platform. Tested with multiple modules on
one page as well ensuring that tailwind styles don't leak into inserted
page.

Instead of needing 

```
.tailwind {
   @tailwind base;
}
```

in the index.css we are using the `tailwindcss-scoped-preflight` library
in the `tailwind.config.ts ` to scope it to `tailwind tw-${moduleName}`.

So the module component will need to be wrapped by  

```
<div className="tailwind tw-${moduleName}">
  Module
</div>
```
  • Loading branch information
asanehisa authored Nov 15, 2024
1 parent 9073f4c commit daa62b0
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 9 deletions.
3 changes: 2 additions & 1 deletion packages/pages/src/scaffold/modules/generate.ts
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ export const generateModule = async (
if (response.useTailwind) {
fs.writeFileSync(
path.join(modulePath, "tailwind.config.ts"),
tailwindCode(projectStructure)
tailwindCode(projectStructure, response.moduleName)
);
fs.writeFileSync(path.join(modulePath, "postcss.config.js"), postcssCode());
}
Expand Down Expand Up @@ -146,5 +146,6 @@ function handleCancel(moduleName: string, projectStructure: ProjectStructure) {
const getDependencies = async () => {
await updatePackageDependency("@yext/pages-components", null, true);
await updatePackageDependency("tailwindcss", null, true);
await updatePackageDependency("tailwindcss-scoped-preflight", null, true);
await installDependencies();
};
23 changes: 15 additions & 8 deletions packages/pages/src/scaffold/modules/templates.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ export const moduleCode = (
moduleName: string,
useTailwind: boolean
): string => {
const tailwind = useTailwind ? ` className="tailwind"` : ``;
const tailwind = useTailwind ? ` className="tw-${moduleName}"` : ``;
const formattedModuleName = formatModuleName(moduleName);

return `import * as React from "react";
Expand Down Expand Up @@ -72,24 +72,31 @@ export default {

export const indexCssCode = (useTailwind: boolean): string => {
return useTailwind
? `.tailwind {
@tailwind base;
@tailwind components;
@tailwind utilities;
}
? `@tailwind base;
@tailwind components;
@tailwind utilities;
`
: ``;
};

export const tailwindCode = (projectStructure: ProjectStructure) => {
export const tailwindCode = (
projectStructure: ProjectStructure,
moduleName: string
) => {
return `import type { Config } from 'tailwindcss';
import { scopedPreflightStyles, isolateInsideOfContainer } from 'tailwindcss-scoped-preflight';
export default {
important: '.tw-${moduleName}',
content: ["./${projectStructure.config.rootFolders.source}/**/*.{js,jsx,ts,tsx}"],
theme: {
extend: {},
},
plugins: [],
plugins: [
scopedPreflightStyles({
isolationStrategy: isolateInsideOfContainer('.tw-${moduleName}'),
}),
]
} satisfies Config
`;
};

0 comments on commit daa62b0

Please sign in to comment.