@changerawr/markdown 1.1.2 → 1.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,128 +1,192 @@
1
1
  // src/tailwind/plugin.ts
2
2
  import plugin from "tailwindcss/plugin";
3
- var CORE_CLASSES = [
4
- // Typography
5
- "text-3xl",
6
- "text-2xl",
7
- "text-xl",
8
- "text-lg",
9
- "text-base",
10
- "text-sm",
11
- "font-bold",
12
- "font-semibold",
13
- "font-medium",
14
- "italic",
15
- "underline",
16
- "line-through",
17
- "leading-7",
18
- "leading-relaxed",
19
- // Spacing
20
- "mt-8",
21
- "mt-6",
22
- "mt-5",
23
- "mt-4",
24
- "mt-3",
25
- "mb-6",
26
- "mb-4",
27
- "mb-3",
28
- "mb-2",
29
- "my-6",
30
- "my-4",
31
- "p-4",
32
- "p-6",
33
- "px-1.5",
34
- "px-2",
35
- "px-3",
36
- "px-4",
37
- "py-0.5",
38
- "py-1",
39
- "py-2",
40
- "pl-4",
41
- "pl-6",
42
- // Layout
43
- "flex",
44
- "inline-flex",
45
- "items-center",
46
- "justify-center",
47
- "gap-2",
48
- "space-y-1",
49
- "list-disc",
50
- "list-inside",
51
- "ml-4",
52
- // Borders and backgrounds
53
- "border-l-2",
54
- "border-l-4",
55
- "rounded",
56
- "rounded-lg",
57
- "rounded-md",
58
- "bg-muted",
59
- // Images
60
- "max-w-full",
61
- "h-auto",
62
- "overflow-x-auto",
63
- // Interactions
64
- "hover:underline",
65
- "transition-all",
66
- "duration-200",
67
- "cursor-pointer"
68
- ];
69
- var EXTENSION_CLASSES = [
70
- // Alert colors (using opacity syntax)
71
- "bg-blue-500/10",
72
- "border-blue-500/30",
73
- "text-blue-600",
74
- "border-l-blue-500",
75
- "bg-amber-500/10",
76
- "border-amber-500/30",
77
- "text-amber-600",
78
- "border-l-amber-500",
79
- "bg-red-500/10",
80
- "border-red-500/30",
81
- "text-red-600",
82
- "border-l-red-500",
83
- "bg-green-500/10",
84
- "border-green-500/30",
85
- "text-green-600",
86
- "border-l-green-500",
87
- // Button variants
88
- "bg-blue-600",
89
- "text-white",
90
- "hover:bg-blue-700",
91
- "bg-gray-200",
92
- "text-gray-900",
93
- "hover:bg-gray-300"
94
- ];
95
- var DARK_MODE_CLASSES = [
96
- "dark:text-blue-400",
97
- "dark:text-amber-400",
98
- "dark:text-red-400",
99
- "dark:text-green-400",
100
- "dark:bg-gray-800",
101
- "dark:text-gray-100"
102
- ];
3
+ function getSafelist(options = {}) {
4
+ const { includeExtensions = true, darkMode = true } = options;
5
+ const safelist = [
6
+ // Core typography
7
+ "text-3xl",
8
+ "text-2xl",
9
+ "text-xl",
10
+ "text-lg",
11
+ "text-base",
12
+ "text-sm",
13
+ "font-bold",
14
+ "font-semibold",
15
+ "font-medium",
16
+ "italic",
17
+ "underline",
18
+ "line-through",
19
+ "leading-7",
20
+ "leading-relaxed",
21
+ // Core spacing
22
+ "mt-8",
23
+ "mt-6",
24
+ "mt-5",
25
+ "mt-4",
26
+ "mt-3",
27
+ "mt-2",
28
+ "mb-6",
29
+ "mb-4",
30
+ "mb-3",
31
+ "mb-2",
32
+ "my-6",
33
+ "my-4",
34
+ "p-4",
35
+ "p-6",
36
+ "px-1.5",
37
+ "px-2",
38
+ "px-3",
39
+ "px-4",
40
+ "px-6",
41
+ "py-0.5",
42
+ "py-1",
43
+ "py-1.5",
44
+ "py-2",
45
+ "py-3",
46
+ "pl-4",
47
+ "pl-6",
48
+ "ml-1",
49
+ "ml-4",
50
+ // Core layout
51
+ "flex",
52
+ "inline-flex",
53
+ "items-center",
54
+ "justify-center",
55
+ "gap-1.5",
56
+ "gap-2",
57
+ "gap-2.5",
58
+ "space-y-1",
59
+ "list-disc",
60
+ "list-inside",
61
+ "relative",
62
+ "absolute",
63
+ "inset-0",
64
+ "z-10",
65
+ "overflow-hidden",
66
+ // Core borders and backgrounds
67
+ "border",
68
+ "border-transparent",
69
+ "border-l-2",
70
+ "border-l-4",
71
+ "rounded",
72
+ "rounded-lg",
73
+ "rounded-md",
74
+ "bg-muted",
75
+ "bg-transparent",
76
+ // Core images and overflow
77
+ "max-w-full",
78
+ "h-auto",
79
+ "w-4",
80
+ "h-4",
81
+ "overflow-x-auto",
82
+ // Core interactions and transitions
83
+ "cursor-pointer",
84
+ "cursor-not-allowed",
85
+ "hover:underline",
86
+ "transition-all",
87
+ "transition-colors",
88
+ "transition-opacity",
89
+ "duration-200",
90
+ "ease-out",
91
+ "focus:outline-none",
92
+ "focus:ring-2",
93
+ "focus:ring-offset-2",
94
+ "transform",
95
+ "opacity-50",
96
+ "opacity-75",
97
+ "shadow-sm",
98
+ "shadow-md",
99
+ "hover:shadow-md",
100
+ "active:shadow-sm"
101
+ ];
102
+ if (includeExtensions) {
103
+ const alertColors = ["blue", "amber", "red", "green", "purple", "gray"];
104
+ alertColors.forEach((color) => {
105
+ safelist.push(
106
+ `bg-${color}-500/10`,
107
+ `border-${color}-500/30`,
108
+ `text-${color}-600`,
109
+ `border-l-${color}-500`
110
+ );
111
+ });
112
+ const buttonColors = ["slate", "blue", "gray", "green", "red"];
113
+ const buttonShades = ["400", "500", "600", "700"];
114
+ buttonColors.forEach((color) => {
115
+ buttonShades.forEach((shade) => {
116
+ safelist.push(
117
+ `bg-${color}-${shade}`,
118
+ `border-${color}-${shade}`,
119
+ `text-${color}-${shade}`,
120
+ `hover:bg-${color}-${shade}`,
121
+ `hover:border-${color}-${shade}`,
122
+ `hover:text-${color}-${shade}`,
123
+ `focus:ring-${color}-${shade}`
124
+ );
125
+ });
126
+ });
127
+ safelist.push(
128
+ "text-white",
129
+ "text-gray-700",
130
+ "text-gray-900",
131
+ "bg-blue-50",
132
+ "bg-gray-100",
133
+ "hover:bg-blue-50",
134
+ "hover:bg-gray-100",
135
+ "hover:text-gray-900"
136
+ );
137
+ safelist.push(
138
+ "before:absolute",
139
+ "before:inset-0",
140
+ "before:rounded-lg",
141
+ "before:bg-gradient-to-br",
142
+ "before:from-white/20",
143
+ "before:to-transparent",
144
+ "before:opacity-0",
145
+ "hover:before:opacity-100",
146
+ "before:transition-opacity",
147
+ "before:duration-200"
148
+ );
149
+ safelist.push(
150
+ // Transform scales
151
+ { pattern: /^(hover:)?scale-\[1\.02\]$/ },
152
+ { pattern: /^(active:)?scale-\[0\.98\]$/ },
153
+ // Complex box shadows with arbitrary values
154
+ { pattern: /^shadow-\[.*\]$/ },
155
+ { pattern: /^hover:shadow-\[.*\]$/ },
156
+ { pattern: /^active:shadow-\[.*\]$/ }
157
+ );
158
+ safelist.push(
159
+ "disabled:opacity-50",
160
+ "disabled:cursor-not-allowed",
161
+ "disabled:pointer-events-none"
162
+ );
163
+ }
164
+ if (darkMode) {
165
+ safelist.push(
166
+ "dark:text-blue-400",
167
+ "dark:text-amber-400",
168
+ "dark:text-red-400",
169
+ "dark:text-green-400",
170
+ "dark:text-purple-400",
171
+ "dark:text-gray-400",
172
+ "dark:bg-gray-800",
173
+ "dark:text-gray-100"
174
+ );
175
+ }
176
+ return safelist;
177
+ }
103
178
  var changerawrMarkdownPlugin = plugin.withOptions(
104
- (options = {}) => ({ addUtilities }) => {
105
- const { includeExtensions = true, darkMode = true } = options;
106
- let allClasses = [...CORE_CLASSES];
107
- if (includeExtensions) {
108
- allClasses.push(...EXTENSION_CLASSES);
109
- }
110
- if (darkMode) {
111
- allClasses.push(...DARK_MODE_CLASSES);
112
- }
113
- const preserveRules = allClasses.reduce((acc, className) => {
114
- const safeClassName = className.replace(/[^a-zA-Z0-9]/g, "-");
115
- acc[`.changerawr-preserve-${safeClassName}`] = {
116
- // Use CSS custom properties to reference the class without creating actual styles
117
- "--tw-preserve": `"${className}"`
118
- };
119
- return acc;
120
- }, {});
121
- addUtilities(preserveRules);
179
+ () => () => {
180
+ },
181
+ (options = {}) => {
182
+ return {
183
+ safelist: getSafelist(options)
184
+ };
122
185
  }
123
186
  );
124
187
  export {
125
188
  changerawrMarkdownPlugin,
126
- changerawrMarkdownPlugin as default
189
+ changerawrMarkdownPlugin as default,
190
+ getSafelist
127
191
  };
128
192
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/tailwind/plugin.ts"],"sourcesContent":["/**\r\n * Tailwind CSS safelist plugin for @changerawr/markdown\r\n *\r\n * This plugin ensures standard Tailwind classes used by markdown rendering\r\n * are included in the final CSS build and not purged.\r\n *\r\n */\r\n\r\nimport plugin from 'tailwindcss/plugin';\r\n\r\nexport interface ChangerawrMarkdownPluginOptions {\r\n /** Whether to include extension classes for alerts and buttons (default: true) */\r\n includeExtensions?: boolean;\r\n /** Whether to include dark mode variants (default: true) */\r\n darkMode?: boolean;\r\n}\r\n\r\n/**\r\n * Core Tailwind classes used by markdown components\r\n */\r\nconst CORE_CLASSES = [\r\n // Typography\r\n 'text-3xl', 'text-2xl', 'text-xl', 'text-lg', 'text-base', 'text-sm',\r\n 'font-bold', 'font-semibold', 'font-medium',\r\n 'italic', 'underline', 'line-through',\r\n 'leading-7', 'leading-relaxed',\r\n\r\n // Spacing\r\n 'mt-8', 'mt-6', 'mt-5', 'mt-4', 'mt-3',\r\n 'mb-6', 'mb-4', 'mb-3', 'mb-2',\r\n 'my-6', 'my-4',\r\n 'p-4', 'p-6',\r\n 'px-1.5', 'px-2', 'px-3', 'px-4',\r\n 'py-0.5', 'py-1', 'py-2',\r\n 'pl-4', 'pl-6',\r\n\r\n // Layout\r\n 'flex', 'inline-flex', 'items-center', 'justify-center',\r\n 'gap-2', 'space-y-1',\r\n 'list-disc', 'list-inside', 'ml-4',\r\n\r\n // Borders and backgrounds\r\n 'border-l-2', 'border-l-4',\r\n 'rounded', 'rounded-lg', 'rounded-md',\r\n 'bg-muted',\r\n\r\n // Images\r\n 'max-w-full', 'h-auto', 'overflow-x-auto',\r\n\r\n // Interactions\r\n 'hover:underline', 'transition-all', 'duration-200',\r\n 'cursor-pointer'\r\n];\r\n\r\n/**\r\n * Extension classes for alerts and buttons\r\n */\r\nconst EXTENSION_CLASSES = [\r\n // Alert colors (using opacity syntax)\r\n 'bg-blue-500/10', 'border-blue-500/30', 'text-blue-600', 'border-l-blue-500',\r\n 'bg-amber-500/10', 'border-amber-500/30', 'text-amber-600', 'border-l-amber-500',\r\n 'bg-red-500/10', 'border-red-500/30', 'text-red-600', 'border-l-red-500',\r\n 'bg-green-500/10', 'border-green-500/30', 'text-green-600', 'border-l-green-500',\r\n\r\n // Button variants\r\n 'bg-blue-600', 'text-white', 'hover:bg-blue-700',\r\n 'bg-gray-200', 'text-gray-900', 'hover:bg-gray-300'\r\n];\r\n\r\n/**\r\n * Dark mode variants\r\n */\r\nconst DARK_MODE_CLASSES = [\r\n 'dark:text-blue-400', 'dark:text-amber-400', 'dark:text-red-400', 'dark:text-green-400',\r\n 'dark:bg-gray-800', 'dark:text-gray-100'\r\n];\r\n\r\nexport const changerawrMarkdownPlugin = plugin.withOptions<ChangerawrMarkdownPluginOptions>(\r\n (options = {}) => ({ addUtilities }) => {\r\n const { includeExtensions = true, darkMode = true } = options;\r\n\r\n let allClasses = [...CORE_CLASSES];\r\n\r\n if (includeExtensions) {\r\n allClasses.push(...EXTENSION_CLASSES);\r\n }\r\n\r\n if (darkMode) {\r\n allClasses.push(...DARK_MODE_CLASSES);\r\n }\r\n\r\n // Create hidden utilities that reference the classes\r\n // This ensures Tailwind includes them in the final CSS\r\n const preserveRules = allClasses.reduce((acc, className) => {\r\n const safeClassName = className.replace(/[^a-zA-Z0-9]/g, '-');\r\n acc[`.changerawr-preserve-${safeClassName}`] = {\r\n // Use CSS custom properties to reference the class without creating actual styles\r\n '--tw-preserve': `\"${className}\"`\r\n };\r\n return acc;\r\n }, {} as Record<string, Record<string, string>>);\r\n\r\n addUtilities(preserveRules);\r\n }\r\n);\r\n\r\nexport default changerawrMarkdownPlugin;"],"mappings":";AAQA,OAAO,YAAY;AAYnB,IAAM,eAAe;AAAA;AAAA,EAEjB;AAAA,EAAY;AAAA,EAAY;AAAA,EAAW;AAAA,EAAW;AAAA,EAAa;AAAA,EAC3D;AAAA,EAAa;AAAA,EAAiB;AAAA,EAC9B;AAAA,EAAU;AAAA,EAAa;AAAA,EACvB;AAAA,EAAa;AAAA;AAAA,EAGb;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAChC;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAAQ;AAAA,EACxB;AAAA,EAAQ;AAAA,EACR;AAAA,EAAO;AAAA,EACP;AAAA,EAAU;AAAA,EAAQ;AAAA,EAAQ;AAAA,EAC1B;AAAA,EAAU;AAAA,EAAQ;AAAA,EAClB;AAAA,EAAQ;AAAA;AAAA,EAGR;AAAA,EAAQ;AAAA,EAAe;AAAA,EAAgB;AAAA,EACvC;AAAA,EAAS;AAAA,EACT;AAAA,EAAa;AAAA,EAAe;AAAA;AAAA,EAG5B;AAAA,EAAc;AAAA,EACd;AAAA,EAAW;AAAA,EAAc;AAAA,EACzB;AAAA;AAAA,EAGA;AAAA,EAAc;AAAA,EAAU;AAAA;AAAA,EAGxB;AAAA,EAAmB;AAAA,EAAkB;AAAA,EACrC;AACJ;AAKA,IAAM,oBAAoB;AAAA;AAAA,EAEtB;AAAA,EAAkB;AAAA,EAAsB;AAAA,EAAiB;AAAA,EACzD;AAAA,EAAmB;AAAA,EAAuB;AAAA,EAAkB;AAAA,EAC5D;AAAA,EAAiB;AAAA,EAAqB;AAAA,EAAgB;AAAA,EACtD;AAAA,EAAmB;AAAA,EAAuB;AAAA,EAAkB;AAAA;AAAA,EAG5D;AAAA,EAAe;AAAA,EAAc;AAAA,EAC7B;AAAA,EAAe;AAAA,EAAiB;AACpC;AAKA,IAAM,oBAAoB;AAAA,EACtB;AAAA,EAAsB;AAAA,EAAuB;AAAA,EAAqB;AAAA,EAClE;AAAA,EAAoB;AACxB;AAEO,IAAM,2BAA2B,OAAO;AAAA,EAC3C,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,aAAa,MAAM;AACpC,UAAM,EAAE,oBAAoB,MAAM,WAAW,KAAK,IAAI;AAEtD,QAAI,aAAa,CAAC,GAAG,YAAY;AAEjC,QAAI,mBAAmB;AACnB,iBAAW,KAAK,GAAG,iBAAiB;AAAA,IACxC;AAEA,QAAI,UAAU;AACV,iBAAW,KAAK,GAAG,iBAAiB;AAAA,IACxC;AAIA,UAAM,gBAAgB,WAAW,OAAO,CAAC,KAAK,cAAc;AACxD,YAAM,gBAAgB,UAAU,QAAQ,iBAAiB,GAAG;AAC5D,UAAI,wBAAwB,aAAa,EAAE,IAAI;AAAA;AAAA,QAE3C,iBAAiB,IAAI,SAAS;AAAA,MAClC;AACA,aAAO;AAAA,IACX,GAAG,CAAC,CAA2C;AAE/C,iBAAa,aAAa;AAAA,EAC9B;AACJ;","names":[]}
1
+ {"version":3,"sources":["../../src/tailwind/plugin.ts"],"sourcesContent":["/**\r\n * Tailwind CSS plugin for @changerawr/markdown\r\n *\r\n * This plugin provides safelist configuration to ensure all dynamically-generated\r\n * Tailwind classes used by markdown rendering are included in the final CSS build.\r\n *\r\n * Works with both Tailwind v3 and v4.\r\n */\r\n\r\nimport plugin from 'tailwindcss/plugin';\r\n\r\nexport interface ChangerawrMarkdownPluginOptions {\r\n /** Whether to include extension classes for alerts and buttons (default: true) */\r\n includeExtensions?: boolean;\r\n /** Whether to include dark mode variants (default: true) */\r\n darkMode?: boolean;\r\n}\r\n\r\n/**\r\n * Safelist type - compatible with Tailwind v3 and v4\r\n */\r\nexport type Safelist = Array<string | { pattern: RegExp }>;\r\n\r\n/**\r\n * Get safelist configuration for Tailwind\r\n * Use this in your tailwind.config.js:\r\n *\r\n * @example\r\n * ```js\r\n * import { getSafelist } from '@changerawr/markdown/tailwind';\r\n *\r\n * export default {\r\n * safelist: getSafelist(),\r\n * // ... other config\r\n * }\r\n * ```\r\n */\r\nexport function getSafelist(options: ChangerawrMarkdownPluginOptions = {}): Safelist {\r\n const { includeExtensions = true, darkMode = true } = options;\r\n\r\n const safelist: Safelist = [\r\n // Core typography\r\n 'text-3xl', 'text-2xl', 'text-xl', 'text-lg', 'text-base', 'text-sm',\r\n 'font-bold', 'font-semibold', 'font-medium',\r\n 'italic', 'underline', 'line-through',\r\n 'leading-7', 'leading-relaxed',\r\n\r\n // Core spacing\r\n 'mt-8', 'mt-6', 'mt-5', 'mt-4', 'mt-3', 'mt-2',\r\n 'mb-6', 'mb-4', 'mb-3', 'mb-2',\r\n 'my-6', 'my-4',\r\n 'p-4', 'p-6',\r\n 'px-1.5', 'px-2', 'px-3', 'px-4', 'px-6',\r\n 'py-0.5', 'py-1', 'py-1.5', 'py-2', 'py-3',\r\n 'pl-4', 'pl-6',\r\n 'ml-1', 'ml-4',\r\n\r\n // Core layout\r\n 'flex', 'inline-flex', 'items-center', 'justify-center',\r\n 'gap-1.5', 'gap-2', 'gap-2.5', 'space-y-1',\r\n 'list-disc', 'list-inside',\r\n 'relative', 'absolute', 'inset-0', 'z-10',\r\n 'overflow-hidden',\r\n\r\n // Core borders and backgrounds\r\n 'border', 'border-transparent', 'border-l-2', 'border-l-4',\r\n 'rounded', 'rounded-lg', 'rounded-md',\r\n 'bg-muted', 'bg-transparent',\r\n\r\n // Core images and overflow\r\n 'max-w-full', 'h-auto', 'w-4', 'h-4',\r\n 'overflow-x-auto',\r\n\r\n // Core interactions and transitions\r\n 'cursor-pointer', 'cursor-not-allowed',\r\n 'hover:underline', 'transition-all', 'transition-colors', 'transition-opacity',\r\n 'duration-200', 'ease-out',\r\n 'focus:outline-none', 'focus:ring-2', 'focus:ring-offset-2',\r\n 'transform', 'opacity-50', 'opacity-75',\r\n 'shadow-sm', 'shadow-md', 'hover:shadow-md', 'active:shadow-sm',\r\n ];\r\n\r\n if (includeExtensions) {\r\n // Alert color patterns - covers all 6 alert types (info, warning, error, success, tip, note)\r\n const alertColors = ['blue', 'amber', 'red', 'green', 'purple', 'gray'];\r\n\r\n alertColors.forEach(color => {\r\n safelist.push(\r\n `bg-${color}-500/10`,\r\n `border-${color}-500/30`,\r\n `text-${color}-600`,\r\n `border-l-${color}-500`\r\n );\r\n });\r\n\r\n // Button color patterns - covers all button styles\r\n const buttonColors = ['slate', 'blue', 'gray', 'green', 'red'];\r\n const buttonShades = ['400', '500', '600', '700'];\r\n\r\n buttonColors.forEach(color => {\r\n buttonShades.forEach(shade => {\r\n safelist.push(\r\n `bg-${color}-${shade}`,\r\n `border-${color}-${shade}`,\r\n `text-${color}-${shade}`,\r\n `hover:bg-${color}-${shade}`,\r\n `hover:border-${color}-${shade}`,\r\n `hover:text-${color}-${shade}`,\r\n `focus:ring-${color}-${shade}`\r\n );\r\n });\r\n });\r\n\r\n // Button background utilities\r\n safelist.push(\r\n 'text-white',\r\n 'text-gray-700',\r\n 'text-gray-900',\r\n 'bg-blue-50',\r\n 'bg-gray-100',\r\n 'hover:bg-blue-50',\r\n 'hover:bg-gray-100',\r\n 'hover:text-gray-900'\r\n );\r\n\r\n // Button pseudo-element classes\r\n safelist.push(\r\n 'before:absolute',\r\n 'before:inset-0',\r\n 'before:rounded-lg',\r\n 'before:bg-gradient-to-br',\r\n 'before:from-white/20',\r\n 'before:to-transparent',\r\n 'before:opacity-0',\r\n 'hover:before:opacity-100',\r\n 'before:transition-opacity',\r\n 'before:duration-200'\r\n );\r\n\r\n // Button arbitrary values - must be explicitly safelisted\r\n safelist.push(\r\n // Transform scales\r\n { pattern: /^(hover:)?scale-\\[1\\.02\\]$/ },\r\n { pattern: /^(active:)?scale-\\[0\\.98\\]$/ },\r\n\r\n // Complex box shadows with arbitrary values\r\n { pattern: /^shadow-\\[.*\\]$/ },\r\n { pattern: /^hover:shadow-\\[.*\\]$/ },\r\n { pattern: /^active:shadow-\\[.*\\]$/ },\r\n );\r\n\r\n // Button disabled states\r\n safelist.push(\r\n 'disabled:opacity-50',\r\n 'disabled:cursor-not-allowed',\r\n 'disabled:pointer-events-none'\r\n );\r\n }\r\n\r\n if (darkMode) {\r\n safelist.push(\r\n 'dark:text-blue-400',\r\n 'dark:text-amber-400',\r\n 'dark:text-red-400',\r\n 'dark:text-green-400',\r\n 'dark:text-purple-400',\r\n 'dark:text-gray-400',\r\n 'dark:bg-gray-800',\r\n 'dark:text-gray-100'\r\n );\r\n }\r\n\r\n return safelist;\r\n}\r\n\r\n/**\r\n * Tailwind plugin for @changerawr/markdown\r\n *\r\n * This plugin is a no-op - all functionality is now handled via safelist configuration.\r\n * The safelist approach is more reliable and works with both Tailwind v3 and v4.\r\n *\r\n * For Tailwind v3: Use this plugin AND add getSafelist() to your config\r\n * For Tailwind v4: Just use getSafelist() in your config\r\n */\r\nexport const changerawrMarkdownPlugin = plugin.withOptions<ChangerawrMarkdownPluginOptions>(\r\n () => () => {\r\n // No-op - safelist handles everything\r\n // The actual safelist should be added via the config's safelist property\r\n },\r\n (options = {}) => {\r\n return {\r\n safelist: getSafelist(options)\r\n } as any; // Cast to any for compatibility with different Tailwind versions\r\n }\r\n);\r\n\r\nexport default changerawrMarkdownPlugin;"],"mappings":"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","names":[]}
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "@changerawr/markdown",
3
- "version": "1.1.2",
3
+ "version": "1.1.4",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
7
- "description": "Powerful markdown renderer with custom extensions for Changerawr - supports HTML, Tailwind CSS, and JSON outputs",
7
+ "description": "The universal markdown engine that powers Changerawr - supports HTML, Tailwind CSS, and JSON outputs",
8
8
  "keywords": [
9
9
  "markdown",
10
10
  "parser",
@@ -53,6 +53,9 @@
53
53
  "./css/core": "./dist/css/core.css",
54
54
  "./package.json": "./package.json"
55
55
  },
56
+ "sideEffects": [
57
+ "./dist/css/**"
58
+ ],
56
59
  "files": [
57
60
  "dist",
58
61
  "README.md",