@@ -71,6 +71,67 @@ describe('theme', async () => {
7171 ` )
7272 } )
7373
74+ test ( 'keyframes added via addUtilities are appended to the AST' , async ( ) => {
75+ let input = css `
76+ @tailwind utilities;
77+ @plugin "my-plugin" ;
78+ `
79+
80+ let compiler = await compile ( input , {
81+ loadModule : async ( id , base ) => {
82+ return {
83+ base,
84+ module : plugin (
85+ function ( { addUtilities, theme } ) {
86+ addUtilities ( {
87+ '@keyframes enter' : theme ( 'keyframes.enter' ) ,
88+ '@keyframes exit' : theme ( 'keyframes.exit' ) ,
89+ } )
90+ } ,
91+ {
92+ theme : {
93+ extend : {
94+ keyframes : {
95+ enter : {
96+ from : {
97+ opacity : 'var(--tw-enter-opacity, 1)' ,
98+ transform :
99+ 'translate3d(var(--tw-enter-translate-x, 0), var(--tw-enter-translate-y, 0), 0) scale3d(var(--tw-enter-scale, 1), var(--tw-enter-scale, 1), var(--tw-enter-scale, 1)) rotate(var(--tw-enter-rotate, 0))' ,
100+ } ,
101+ } ,
102+ exit : {
103+ to : {
104+ opacity : 'var(--tw-exit-opacity, 1)' ,
105+ transform :
106+ 'translate3d(var(--tw-exit-translate-x, 0), var(--tw-exit-translate-y, 0), 0) scale3d(var(--tw-exit-scale, 1), var(--tw-exit-scale, 1), var(--tw-exit-scale, 1)) rotate(var(--tw-exit-rotate, 0))' ,
107+ } ,
108+ } ,
109+ } ,
110+ } ,
111+ } ,
112+ } ,
113+ ) ,
114+ }
115+ } ,
116+ } )
117+
118+ expect ( compiler . build ( [ ] ) ) . toMatchInlineSnapshot ( `
119+ "@keyframes enter {
120+ from {
121+ opacity: var(--tw-enter-opacity, 1);
122+ transform: translate3d(var(--tw-enter-translate-x, 0), var(--tw-enter-translate-y, 0), 0) scale3d(var(--tw-enter-scale, 1), var(--tw-enter-scale, 1), var(--tw-enter-scale, 1)) rotate(var(--tw-enter-rotate, 0));
123+ }
124+ }
125+ @keyframes exit {
126+ to {
127+ opacity: var(--tw-exit-opacity, 1);
128+ transform: translate3d(var(--tw-exit-translate-x, 0), var(--tw-exit-translate-y, 0), 0) scale3d(var(--tw-exit-scale, 1), var(--tw-exit-scale, 1), var(--tw-exit-scale, 1)) rotate(var(--tw-exit-rotate, 0));
129+ }
130+ }
131+ "
132+ ` )
133+ } )
134+
74135 test ( 'plugin theme can extend colors' , async ( ) => {
75136 let input = css `
76137 @theme reference {
0 commit comments