@changerawr/markdown 1.1.0 → 1.1.2

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.
@@ -0,0 +1,33 @@
1
+ /* ===================================
2
+ * Core-only version without extensions
3
+ * =================================== */
4
+
5
+ @layer utilities {
6
+ /* Essential typography for markdown */
7
+ .text-3xl { font-size: 1.875rem; line-height: 2.25rem; }
8
+ .text-2xl { font-size: 1.5rem; line-height: 2rem; }
9
+ .text-xl { font-size: 1.25rem; line-height: 1.75rem; }
10
+ .text-lg { font-size: 1.125rem; line-height: 1.75rem; }
11
+
12
+ .font-bold { font-weight: 700; }
13
+ .font-semibold { font-weight: 600; }
14
+ .font-medium { font-weight: 500; }
15
+ .italic { font-style: italic; }
16
+ .underline { text-decoration-line: underline; }
17
+
18
+ /* Essential spacing */
19
+ .mt-8 { margin-top: 2rem; }
20
+ .mt-6 { margin-top: 1.5rem; }
21
+ .mb-4 { margin-bottom: 1rem; }
22
+ .mb-3 { margin-bottom: 0.75rem; }
23
+ .leading-7 { line-height: 1.75rem; }
24
+
25
+ /* Essential layout */
26
+ .flex { display: flex; }
27
+ .items-center { align-items: center; }
28
+ .gap-2 { gap: 0.5rem; }
29
+
30
+ /* Essential borders */
31
+ .border-l-2 { border-left-width: 2px; }
32
+ .rounded-lg { border-radius: 0.5rem; }
33
+ }
@@ -0,0 +1,156 @@
1
+ /*
2
+ * Main CSS file for Tailwind v4 import
3
+ */
4
+
5
+ @layer utilities {
6
+ /* Core typography classes that markdown components use */
7
+ .text-3xl { font-size: 1.875rem; line-height: 2.25rem; }
8
+ .text-2xl { font-size: 1.5rem; line-height: 2rem; }
9
+ .text-xl { font-size: 1.25rem; line-height: 1.75rem; }
10
+ .text-lg { font-size: 1.125rem; line-height: 1.75rem; }
11
+ .text-base { font-size: 1rem; line-height: 1.5rem; }
12
+ .text-sm { font-size: 0.875rem; line-height: 1.25rem; }
13
+
14
+ .font-bold { font-weight: 700; }
15
+ .font-semibold { font-weight: 600; }
16
+ .font-medium { font-weight: 500; }
17
+ .italic { font-style: italic; }
18
+ .underline { text-decoration-line: underline; }
19
+ .line-through { text-decoration-line: line-through; }
20
+
21
+ /* Spacing utilities */
22
+ .mt-8 { margin-top: 2rem; }
23
+ .mt-6 { margin-top: 1.5rem; }
24
+ .mt-5 { margin-top: 1.25rem; }
25
+ .mt-4 { margin-top: 1rem; }
26
+ .mt-3 { margin-top: 0.75rem; }
27
+ .mb-6 { margin-bottom: 1.5rem; }
28
+ .mb-4 { margin-bottom: 1rem; }
29
+ .mb-3 { margin-bottom: 0.75rem; }
30
+ .mb-2 { margin-bottom: 0.5rem; }
31
+ .my-6 { margin-top: 1.5rem; margin-bottom: 1.5rem; }
32
+ .my-4 { margin-top: 1rem; margin-bottom: 1rem; }
33
+
34
+ .p-4 { padding: 1rem; }
35
+ .p-6 { padding: 1.5rem; }
36
+ .px-1\.5 { padding-left: 0.375rem; padding-right: 0.375rem; }
37
+ .px-2 { padding-left: 0.5rem; padding-right: 0.5rem; }
38
+ .px-3 { padding-left: 0.75rem; padding-right: 0.75rem; }
39
+ .px-4 { padding-left: 1rem; padding-right: 1rem; }
40
+ .py-0\.5 { padding-top: 0.125rem; padding-bottom: 0.125rem; }
41
+ .py-1 { padding-top: 0.25rem; padding-bottom: 0.25rem; }
42
+ .py-2 { padding-top: 0.5rem; padding-bottom: 0.5rem; }
43
+ .pl-4 { padding-left: 1rem; }
44
+ .pl-6 { padding-left: 1.5rem; }
45
+
46
+ /* Layout utilities */
47
+ .flex { display: flex; }
48
+ .inline-flex { display: inline-flex; }
49
+ .items-center { align-items: center; }
50
+ .justify-center { justify-content: center; }
51
+ .gap-2 { gap: 0.5rem; }
52
+ .space-y-1 > :not([hidden]) ~ :not([hidden]) { margin-top: 0.25rem; }
53
+
54
+ /* List utilities */
55
+ .list-disc { list-style-type: disc; }
56
+ .list-inside { list-style-position: inside; }
57
+ .ml-4 { margin-left: 1rem; }
58
+
59
+ /* Border and background utilities */
60
+ .border-l-2 { border-left-width: 2px; }
61
+ .border-l-4 { border-left-width: 4px; }
62
+ .rounded { border-radius: 0.25rem; }
63
+ .rounded-lg { border-radius: 0.5rem; }
64
+ .rounded-md { border-radius: 0.375rem; }
65
+ .bg-muted { background-color: color-mix(in srgb, currentColor 8%, transparent); }
66
+
67
+ /* Image utilities */
68
+ .max-w-full { max-width: 100%; }
69
+ .h-auto { height: auto; }
70
+ .overflow-x-auto { overflow-x: auto; }
71
+
72
+ /* Interaction utilities */
73
+ .hover\:underline:hover { text-decoration-line: underline; }
74
+ .transition-all { transition-property: all; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 150ms; }
75
+ .duration-200 { transition-duration: 200ms; }
76
+ .cursor-pointer { cursor: pointer; }
77
+
78
+ /* Leading utilities */
79
+ .leading-7 { line-height: 1.75rem; }
80
+ .leading-relaxed { line-height: 1.625; }
81
+ }
82
+
83
+ @layer components {
84
+ /* Alert components */
85
+ .changerawr-alert {
86
+ @apply border-l-4 p-4 mb-4 rounded-md transition-all duration-200;
87
+ }
88
+
89
+ .changerawr-alert-info {
90
+ background-color: color-mix(in srgb, #3b82f6 10%, transparent);
91
+ border-color: color-mix(in srgb, #3b82f6 30%, transparent);
92
+ color: #3b82f6;
93
+ border-left-color: #3b82f6;
94
+ }
95
+
96
+ .changerawr-alert-warning {
97
+ background-color: color-mix(in srgb, #f59e0b 10%, transparent);
98
+ border-color: color-mix(in srgb, #f59e0b 30%, transparent);
99
+ color: #f59e0b;
100
+ border-left-color: #f59e0b;
101
+ }
102
+
103
+ .changerawr-alert-error {
104
+ background-color: color-mix(in srgb, #ef4444 10%, transparent);
105
+ border-color: color-mix(in srgb, #ef4444 30%, transparent);
106
+ color: #ef4444;
107
+ border-left-color: #ef4444;
108
+ }
109
+
110
+ .changerawr-alert-success {
111
+ background-color: color-mix(in srgb, #10b981 10%, transparent);
112
+ border-color: color-mix(in srgb, #10b981 30%, transparent);
113
+ color: #10b981;
114
+ border-left-color: #10b981;
115
+ }
116
+
117
+ /* Button components */
118
+ .changerawr-button {
119
+ @apply inline-flex items-center justify-center px-4 py-2 rounded-lg transition-all duration-200 cursor-pointer;
120
+ border: 1px solid transparent;
121
+ font-weight: 500;
122
+ text-decoration: none;
123
+ }
124
+
125
+ .changerawr-button-primary {
126
+ background-color: #3b82f6;
127
+ color: white;
128
+ }
129
+
130
+ .changerawr-button-primary:hover:not(:disabled) {
131
+ background-color: color-mix(in srgb, #3b82f6 90%, black);
132
+ }
133
+ }
134
+
135
+ /* Dark mode variants */
136
+ @media (prefers-color-scheme: dark) {
137
+ .changerawr-alert-info {
138
+ color: #60a5fa;
139
+ background-color: color-mix(in srgb, #3b82f6 20%, transparent);
140
+ }
141
+
142
+ .changerawr-alert-warning {
143
+ color: #fbbf24;
144
+ background-color: color-mix(in srgb, #f59e0b 20%, transparent);
145
+ }
146
+
147
+ .changerawr-alert-error {
148
+ color: #f87171;
149
+ background-color: color-mix(in srgb, #ef4444 20%, transparent);
150
+ }
151
+
152
+ .changerawr-alert-success {
153
+ color: #34d399;
154
+ background-color: color-mix(in srgb, #10b981 20%, transparent);
155
+ }
156
+ }
@@ -1,30 +1,17 @@
1
1
  import * as node_modules_tailwindcss_dist_types_B254mqw1_d_mts from 'node_modules/tailwindcss/dist/types-B254mqw1.d.mts';
2
2
 
3
3
  /**
4
- * Tailwind CSS plugin for @changerawr/markdown
5
- * Compatible with both Tailwind v3 and v4
4
+ * Tailwind CSS safelist plugin for @changerawr/markdown
5
+ *
6
+ * This plugin ensures standard Tailwind classes used by markdown rendering
7
+ * are included in the final CSS build and not purged.
8
+ *
6
9
  */
7
10
  interface ChangerawrMarkdownPluginOptions {
8
- /** Prefix for all markdown classes (default: none) */
9
- prefix?: string;
11
+ /** Whether to include extension classes for alerts and buttons (default: true) */
12
+ includeExtensions?: boolean;
10
13
  /** Whether to include dark mode variants (default: true) */
11
14
  darkMode?: boolean;
12
- /** Custom color palette */
13
- colors?: {
14
- primary?: string;
15
- secondary?: string;
16
- accent?: string;
17
- info?: string;
18
- warning?: string;
19
- error?: string;
20
- success?: string;
21
- muted?: string;
22
- border?: string;
23
- };
24
- /** Whether to include extension styles (alerts, buttons, etc.) */
25
- includeExtensions?: boolean;
26
- /** Custom class overrides */
27
- customClasses?: Record<string, string>;
28
15
  }
29
16
  declare const changerawrMarkdownPlugin: node_modules_tailwindcss_dist_types_B254mqw1_d_mts.c<ChangerawrMarkdownPluginOptions>;
30
17
 
@@ -1,30 +1,17 @@
1
1
  import * as node_modules_tailwindcss_dist_types_B254mqw1_d_mts from 'node_modules/tailwindcss/dist/types-B254mqw1.d.mts';
2
2
 
3
3
  /**
4
- * Tailwind CSS plugin for @changerawr/markdown
5
- * Compatible with both Tailwind v3 and v4
4
+ * Tailwind CSS safelist plugin for @changerawr/markdown
5
+ *
6
+ * This plugin ensures standard Tailwind classes used by markdown rendering
7
+ * are included in the final CSS build and not purged.
8
+ *
6
9
  */
7
10
  interface ChangerawrMarkdownPluginOptions {
8
- /** Prefix for all markdown classes (default: none) */
9
- prefix?: string;
11
+ /** Whether to include extension classes for alerts and buttons (default: true) */
12
+ includeExtensions?: boolean;
10
13
  /** Whether to include dark mode variants (default: true) */
11
14
  darkMode?: boolean;
12
- /** Custom color palette */
13
- colors?: {
14
- primary?: string;
15
- secondary?: string;
16
- accent?: string;
17
- info?: string;
18
- warning?: string;
19
- error?: string;
20
- success?: string;
21
- muted?: string;
22
- border?: string;
23
- };
24
- /** Whether to include extension styles (alerts, buttons, etc.) */
25
- includeExtensions?: boolean;
26
- /** Custom class overrides */
27
- customClasses?: Record<string, string>;
28
15
  }
29
16
  declare const changerawrMarkdownPlugin: node_modules_tailwindcss_dist_types_B254mqw1_d_mts.c<ChangerawrMarkdownPluginOptions>;
30
17
 
@@ -37,293 +37,125 @@ module.exports = __toCommonJS(index_exports);
37
37
 
38
38
  // src/tailwind/plugin.ts
39
39
  var import_plugin = __toESM(require("tailwindcss/plugin"));
40
- var defaultColors = {
41
- primary: "#3b82f6",
42
- secondary: "#6b7280",
43
- accent: "#8b5cf6",
44
- info: "#3b82f6",
45
- warning: "#f59e0b",
46
- error: "#ef4444",
47
- success: "#10b981",
48
- muted: "#6b7280",
49
- border: "#d1d5db"
50
- };
40
+ var CORE_CLASSES = [
41
+ // Typography
42
+ "text-3xl",
43
+ "text-2xl",
44
+ "text-xl",
45
+ "text-lg",
46
+ "text-base",
47
+ "text-sm",
48
+ "font-bold",
49
+ "font-semibold",
50
+ "font-medium",
51
+ "italic",
52
+ "underline",
53
+ "line-through",
54
+ "leading-7",
55
+ "leading-relaxed",
56
+ // Spacing
57
+ "mt-8",
58
+ "mt-6",
59
+ "mt-5",
60
+ "mt-4",
61
+ "mt-3",
62
+ "mb-6",
63
+ "mb-4",
64
+ "mb-3",
65
+ "mb-2",
66
+ "my-6",
67
+ "my-4",
68
+ "p-4",
69
+ "p-6",
70
+ "px-1.5",
71
+ "px-2",
72
+ "px-3",
73
+ "px-4",
74
+ "py-0.5",
75
+ "py-1",
76
+ "py-2",
77
+ "pl-4",
78
+ "pl-6",
79
+ // Layout
80
+ "flex",
81
+ "inline-flex",
82
+ "items-center",
83
+ "justify-center",
84
+ "gap-2",
85
+ "space-y-1",
86
+ "list-disc",
87
+ "list-inside",
88
+ "ml-4",
89
+ // Borders and backgrounds
90
+ "border-l-2",
91
+ "border-l-4",
92
+ "rounded",
93
+ "rounded-lg",
94
+ "rounded-md",
95
+ "bg-muted",
96
+ // Images
97
+ "max-w-full",
98
+ "h-auto",
99
+ "overflow-x-auto",
100
+ // Interactions
101
+ "hover:underline",
102
+ "transition-all",
103
+ "duration-200",
104
+ "cursor-pointer"
105
+ ];
106
+ var EXTENSION_CLASSES = [
107
+ // Alert colors (using opacity syntax)
108
+ "bg-blue-500/10",
109
+ "border-blue-500/30",
110
+ "text-blue-600",
111
+ "border-l-blue-500",
112
+ "bg-amber-500/10",
113
+ "border-amber-500/30",
114
+ "text-amber-600",
115
+ "border-l-amber-500",
116
+ "bg-red-500/10",
117
+ "border-red-500/30",
118
+ "text-red-600",
119
+ "border-l-red-500",
120
+ "bg-green-500/10",
121
+ "border-green-500/30",
122
+ "text-green-600",
123
+ "border-l-green-500",
124
+ // Button variants
125
+ "bg-blue-600",
126
+ "text-white",
127
+ "hover:bg-blue-700",
128
+ "bg-gray-200",
129
+ "text-gray-900",
130
+ "hover:bg-gray-300"
131
+ ];
132
+ var DARK_MODE_CLASSES = [
133
+ "dark:text-blue-400",
134
+ "dark:text-amber-400",
135
+ "dark:text-red-400",
136
+ "dark:text-green-400",
137
+ "dark:bg-gray-800",
138
+ "dark:text-gray-100"
139
+ ];
51
140
  var changerawrMarkdownPlugin = import_plugin.default.withOptions(
52
- (options = {}) => ({ addUtilities, addComponents }) => {
53
- const {
54
- prefix = "",
55
- darkMode = true,
56
- colors = {},
57
- includeExtensions = true,
58
- customClasses = {}
59
- } = options;
60
- const mergedColors = { ...defaultColors, ...colors };
61
- const prefixClass = (className) => prefix ? `${prefix}-${className}` : className;
62
- addUtilities({
63
- // Essential typography classes for markdown
64
- [`.${prefixClass("changerawr-text-3xl")}`]: {
65
- fontSize: "1.875rem",
66
- lineHeight: "2.25rem"
67
- },
68
- [`.${prefixClass("changerawr-text-2xl")}`]: {
69
- fontSize: "1.5rem",
70
- lineHeight: "2rem"
71
- },
72
- [`.${prefixClass("changerawr-text-xl")}`]: {
73
- fontSize: "1.25rem",
74
- lineHeight: "1.75rem"
75
- },
76
- [`.${prefixClass("changerawr-text-lg")}`]: {
77
- fontSize: "1.125rem",
78
- lineHeight: "1.75rem"
79
- },
80
- [`.${prefixClass("changerawr-font-bold")}`]: {
81
- fontWeight: "700"
82
- },
83
- [`.${prefixClass("changerawr-font-semibold")}`]: {
84
- fontWeight: "600"
85
- },
86
- [`.${prefixClass("changerawr-font-medium")}`]: {
87
- fontWeight: "500"
88
- },
89
- [`.${prefixClass("changerawr-italic")}`]: {
90
- fontStyle: "italic"
91
- },
92
- [`.${prefixClass("changerawr-underline")}`]: {
93
- textDecoration: "underline"
94
- },
95
- [`.${prefixClass("changerawr-line-through")}`]: {
96
- textDecoration: "line-through"
97
- },
98
- // Spacing utilities
99
- [`.${prefixClass("changerawr-mt-8")}`]: { marginTop: "2rem" },
100
- [`.${prefixClass("changerawr-mt-6")}`]: { marginTop: "1.5rem" },
101
- [`.${prefixClass("changerawr-mt-5")}`]: { marginTop: "1.25rem" },
102
- [`.${prefixClass("changerawr-mt-4")}`]: { marginTop: "1rem" },
103
- [`.${prefixClass("changerawr-mt-3")}`]: { marginTop: "0.75rem" },
104
- [`.${prefixClass("changerawr-mb-8")}`]: { marginBottom: "2rem" },
105
- [`.${prefixClass("changerawr-mb-6")}`]: { marginBottom: "1.5rem" },
106
- [`.${prefixClass("changerawr-mb-4")}`]: { marginBottom: "1rem" },
107
- [`.${prefixClass("changerawr-mb-3")}`]: { marginBottom: "0.75rem" },
108
- [`.${prefixClass("changerawr-mb-2")}`]: { marginBottom: "0.5rem" },
109
- [`.${prefixClass("changerawr-my-6")}`]: { marginTop: "1.5rem", marginBottom: "1.5rem" },
110
- [`.${prefixClass("changerawr-my-4")}`]: { marginTop: "1rem", marginBottom: "1rem" },
111
- [`.${prefixClass("changerawr-my-2")}`]: { marginTop: "0.5rem", marginBottom: "0.5rem" },
112
- // Padding utilities
113
- [`.${prefixClass("changerawr-p-4")}`]: { padding: "1rem" },
114
- [`.${prefixClass("changerawr-p-6")}`]: { padding: "1.5rem" },
115
- [`.${prefixClass("changerawr-px-2")}`]: { paddingLeft: "0.5rem", paddingRight: "0.5rem" },
116
- [`.${prefixClass("changerawr-px-3")}`]: { paddingLeft: "0.75rem", paddingRight: "0.75rem" },
117
- [`.${prefixClass("changerawr-px-4")}`]: { paddingLeft: "1rem", paddingRight: "1rem" },
118
- [`.${prefixClass("changerawr-px-6")}`]: { paddingLeft: "1.5rem", paddingRight: "1.5rem" },
119
- [`.${prefixClass("changerawr-py-1")}`]: { paddingTop: "0.25rem", paddingBottom: "0.25rem" },
120
- [`.${prefixClass("changerawr-py-2")}`]: { paddingTop: "0.5rem", paddingBottom: "0.5rem" },
121
- [`.${prefixClass("changerawr-py-3")}`]: { paddingTop: "0.75rem", paddingBottom: "0.75rem" },
122
- [`.${prefixClass("changerawr-pl-4")}`]: { paddingLeft: "1rem" },
123
- [`.${prefixClass("changerawr-pl-6")}`]: { paddingLeft: "1.5rem" },
124
- // Line height and leading
125
- [`.${prefixClass("changerawr-leading-7")}`]: { lineHeight: "1.75rem" },
126
- [`.${prefixClass("changerawr-leading-relaxed")}`]: { lineHeight: "1.625" },
127
- [`.${prefixClass("changerawr-leading-loose")}`]: { lineHeight: "2" },
128
- // Layout utilities
129
- [`.${prefixClass("changerawr-flex")}`]: { display: "flex" },
130
- [`.${prefixClass("changerawr-inline-flex")}`]: { display: "inline-flex" },
131
- [`.${prefixClass("changerawr-items-center")}`]: { alignItems: "center" },
132
- [`.${prefixClass("changerawr-justify-center")}`]: { justifyContent: "center" },
133
- [`.${prefixClass("changerawr-gap-1")}`]: { gap: "0.25rem" },
134
- [`.${prefixClass("changerawr-gap-2")}`]: { gap: "0.5rem" },
135
- [`.${prefixClass("changerawr-gap-3")}`]: { gap: "0.75rem" },
136
- [`.${prefixClass("changerawr-group")}`]: {
137
- /* group parent */
138
- },
139
- [`.${prefixClass("changerawr-relative")}`]: { position: "relative" },
140
- // Border utilities
141
- [`.${prefixClass("changerawr-border")}`]: { borderWidth: "1px" },
142
- [`.${prefixClass("changerawr-border-l-2")}`]: { borderLeftWidth: "2px" },
143
- [`.${prefixClass("changerawr-border-l-4")}`]: { borderLeftWidth: "4px" },
144
- [`.${prefixClass("changerawr-rounded")}`]: { borderRadius: "0.25rem" },
145
- [`.${prefixClass("changerawr-rounded-lg")}`]: { borderRadius: "0.5rem" },
146
- [`.${prefixClass("changerawr-rounded-md")}`]: { borderRadius: "0.375rem" },
147
- // Background utilities
148
- [`.${prefixClass("changerawr-bg-gray-50")}`]: { backgroundColor: "#f9fafb" },
149
- [`.${prefixClass("changerawr-bg-gray-100")}`]: { backgroundColor: "#f3f4f6" },
150
- [`.${prefixClass("changerawr-bg-gray-900")}`]: { backgroundColor: "#111827" },
151
- [`.${prefixClass("changerawr-bg-white")}`]: { backgroundColor: "#ffffff" },
152
- // Text colors
153
- [`.${prefixClass("changerawr-text-gray-100")}`]: { color: "#f3f4f6" },
154
- [`.${prefixClass("changerawr-text-gray-600")}`]: { color: "#4b5563" },
155
- [`.${prefixClass("changerawr-text-gray-700")}`]: { color: "#374151" },
156
- [`.${prefixClass("changerawr-text-gray-800")}`]: { color: "#1f2937" },
157
- [`.${prefixClass("changerawr-text-primary")}`]: { color: mergedColors.primary },
158
- [`.${prefixClass("changerawr-text-muted-foreground")}`]: { color: mergedColors.muted },
159
- // Border colors
160
- [`.${prefixClass("changerawr-border-border")}`]: { borderColor: mergedColors.border },
161
- // Display utilities
162
- [`.${prefixClass("changerawr-overflow-x-auto")}`]: { overflowX: "auto" },
163
- [`.${prefixClass("changerawr-max-w-full")}`]: { maxWidth: "100%" },
164
- [`.${prefixClass("changerawr-h-auto")}`]: { height: "auto" },
165
- [`.${prefixClass("changerawr-font-mono")}`]: {
166
- fontFamily: 'ui-monospace, SFMono-Regular, "SF Mono", Monaco, Consolas, "Liberation Mono", "Courier New", monospace'
167
- },
168
- // Opacity and transitions
169
- [`.${prefixClass("changerawr-opacity-0")}`]: { opacity: "0" },
170
- [`.${prefixClass("changerawr-transition-opacity")}`]: {
171
- transitionProperty: "opacity",
172
- transitionTimingFunction: "cubic-bezier(0.4, 0, 0.2, 1)",
173
- transitionDuration: "150ms"
174
- },
175
- [`.${prefixClass("changerawr-transition-colors")}`]: {
176
- transitionProperty: "color, background-color, border-color, text-decoration-color, fill, stroke",
177
- transitionTimingFunction: "cubic-bezier(0.4, 0, 0.2, 1)",
178
- transitionDuration: "150ms"
179
- },
180
- // Hover states
181
- [`.${prefixClass("changerawr-hover\\:underline")}:hover`]: { textDecoration: "underline" },
182
- [`.group:hover .${prefixClass("changerawr-group-hover\\:opacity-100")}`]: { opacity: "1" },
183
- // Shadow utilities
184
- [`.${prefixClass("changerawr-shadow-sm")}`]: {
185
- boxShadow: "0 1px 2px 0 rgb(0 0 0 / 0.05)"
186
- },
187
- // Custom markdown classes with overrides
188
- ...Object.fromEntries(
189
- Object.entries(customClasses).map(([key, value]) => [
190
- `.${prefixClass(`changerawr-${key}`)}`,
191
- typeof value === "string" ? { className: value } : value
192
- ])
193
- )
194
- });
141
+ (options = {}) => ({ addUtilities }) => {
142
+ const { includeExtensions = true, darkMode = true } = options;
143
+ let allClasses = [...CORE_CLASSES];
195
144
  if (includeExtensions) {
196
- addComponents({
197
- // Alert base styles
198
- [`.${prefixClass("changerawr-alert")}`]: {
199
- borderLeftWidth: "4px",
200
- padding: "1rem",
201
- marginBottom: "1rem",
202
- borderRadius: "0.375rem",
203
- transitionProperty: "color, background-color, border-color",
204
- transitionTimingFunction: "cubic-bezier(0.4, 0, 0.2, 1)",
205
- transitionDuration: "200ms"
206
- },
207
- // Alert variants using opacity for compatibility
208
- [`.${prefixClass("changerawr-alert-info")}`]: {
209
- backgroundColor: `color-mix(in srgb, ${mergedColors.info} 10%, transparent)`,
210
- borderColor: `color-mix(in srgb, ${mergedColors.info} 30%, transparent)`,
211
- color: mergedColors.info
212
- },
213
- [`.${prefixClass("changerawr-alert-warning")}`]: {
214
- backgroundColor: `color-mix(in srgb, ${mergedColors.warning} 10%, transparent)`,
215
- borderColor: `color-mix(in srgb, ${mergedColors.warning} 30%, transparent)`,
216
- color: mergedColors.warning
217
- },
218
- [`.${prefixClass("changerawr-alert-error")}`]: {
219
- backgroundColor: `color-mix(in srgb, ${mergedColors.error} 10%, transparent)`,
220
- borderColor: `color-mix(in srgb, ${mergedColors.error} 30%, transparent)`,
221
- color: mergedColors.error
222
- },
223
- [`.${prefixClass("changerawr-alert-success")}`]: {
224
- backgroundColor: `color-mix(in srgb, ${mergedColors.success} 10%, transparent)`,
225
- borderColor: `color-mix(in srgb, ${mergedColors.success} 30%, transparent)`,
226
- color: mergedColors.success
227
- },
228
- // Button base styles
229
- [`.${prefixClass("changerawr-button")}`]: {
230
- display: "inline-flex",
231
- alignItems: "center",
232
- justifyContent: "center",
233
- borderRadius: "0.5rem",
234
- fontWeight: "500",
235
- transitionProperty: "all",
236
- transitionTimingFunction: "cubic-bezier(0.4, 0, 0.2, 1)",
237
- transitionDuration: "150ms",
238
- border: "1px solid transparent",
239
- cursor: "pointer",
240
- textDecoration: "none",
241
- "&:focus": {
242
- outline: "none",
243
- ringWidth: "2px",
244
- ringOffsetWidth: "2px"
245
- },
246
- "&:disabled": {
247
- opacity: "0.5",
248
- cursor: "not-allowed"
249
- }
250
- },
251
- // Button variants
252
- [`.${prefixClass("changerawr-button-primary")}`]: {
253
- backgroundColor: mergedColors.primary,
254
- color: "#ffffff",
255
- "&:hover:not(:disabled)": {
256
- backgroundColor: `color-mix(in srgb, ${mergedColors.primary} 90%, black)`
257
- },
258
- "&:focus": {
259
- ringColor: `color-mix(in srgb, ${mergedColors.primary} 50%, transparent)`
260
- }
261
- },
262
- [`.${prefixClass("changerawr-button-secondary")}`]: {
263
- backgroundColor: mergedColors.secondary,
264
- color: "#ffffff",
265
- "&:hover:not(:disabled)": {
266
- backgroundColor: `color-mix(in srgb, ${mergedColors.secondary} 90%, black)`
267
- },
268
- "&:focus": {
269
- ringColor: `color-mix(in srgb, ${mergedColors.secondary} 50%, transparent)`
270
- }
271
- },
272
- [`.${prefixClass("changerawr-button-outline")}`]: {
273
- borderColor: mergedColors.primary,
274
- color: mergedColors.primary,
275
- "&:hover:not(:disabled)": {
276
- backgroundColor: `color-mix(in srgb, ${mergedColors.primary} 5%, transparent)`
277
- }
278
- },
279
- [`.${prefixClass("changerawr-button-ghost")}`]: {
280
- color: mergedColors.secondary,
281
- "&:hover:not(:disabled)": {
282
- backgroundColor: `color-mix(in srgb, ${mergedColors.secondary} 10%, transparent)`
283
- }
284
- },
285
- // Button sizes
286
- [`.${prefixClass("changerawr-button-sm")}`]: {
287
- paddingLeft: "0.75rem",
288
- paddingRight: "0.75rem",
289
- paddingTop: "0.375rem",
290
- paddingBottom: "0.375rem",
291
- fontSize: "0.875rem"
292
- },
293
- [`.${prefixClass("changerawr-button-md")}`]: {
294
- paddingLeft: "1rem",
295
- paddingRight: "1rem",
296
- paddingTop: "0.5rem",
297
- paddingBottom: "0.5rem",
298
- fontSize: "0.875rem"
299
- },
300
- [`.${prefixClass("changerawr-button-lg")}`]: {
301
- paddingLeft: "1.5rem",
302
- paddingRight: "1.5rem",
303
- paddingTop: "0.75rem",
304
- paddingBottom: "0.75rem",
305
- fontSize: "1rem"
306
- },
307
- // Embed styles
308
- [`.${prefixClass("changerawr-embed")}`]: {
309
- borderRadius: "0.5rem",
310
- border: "1px solid",
311
- borderColor: mergedColors.border,
312
- backgroundColor: "#ffffff",
313
- boxShadow: "0 1px 2px 0 rgb(0 0 0 / 0.05)",
314
- marginBottom: "1.5rem",
315
- overflow: "hidden"
316
- }
317
- });
145
+ allClasses.push(...EXTENSION_CLASSES);
318
146
  }
319
147
  if (darkMode) {
320
- addUtilities({
321
- [`.dark .${prefixClass("changerawr-dark\\:bg-gray-800")}`]: { backgroundColor: "#1f2937" },
322
- [`.dark .${prefixClass("changerawr-dark\\:text-gray-100")}`]: { color: "#f3f4f6" },
323
- [`.dark .${prefixClass("changerawr-dark\\:text-gray-300")}`]: { color: "#d1d5db" },
324
- [`.dark .${prefixClass("changerawr-dark\\:border-gray-600")}`]: { borderColor: "#4b5563" }
325
- });
148
+ allClasses.push(...DARK_MODE_CLASSES);
326
149
  }
150
+ const preserveRules = allClasses.reduce((acc, className) => {
151
+ const safeClassName = className.replace(/[^a-zA-Z0-9]/g, "-");
152
+ acc[`.changerawr-preserve-${safeClassName}`] = {
153
+ // Use CSS custom properties to reference the class without creating actual styles
154
+ "--tw-preserve": `"${className}"`
155
+ };
156
+ return acc;
157
+ }, {});
158
+ addUtilities(preserveRules);
327
159
  }
328
160
  );
329
161
  // Annotate the CommonJS export names for ESM import in node:
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/tailwind/index.ts","../../src/tailwind/plugin.ts"],"sourcesContent":["/**\r\n * Tailwind CSS plugin exports for @changerawr/markdown\r\n */\r\n\r\n// Export the main plugin and its types\r\nexport {\r\n changerawrMarkdownPlugin,\r\n type ChangerawrMarkdownPluginOptions\r\n} from './plugin';\r\n\r\n// Default export for convenience\r\nexport { changerawrMarkdownPlugin as default } from './plugin';","/**\r\n * Tailwind CSS plugin for @changerawr/markdown\r\n * Compatible with both Tailwind v3 and v4\r\n */\r\n\r\nimport plugin from 'tailwindcss/plugin';\r\n\r\nexport interface ChangerawrMarkdownPluginOptions {\r\n /** Prefix for all markdown classes (default: none) */\r\n prefix?: string;\r\n /** Whether to include dark mode variants (default: true) */\r\n darkMode?: boolean;\r\n /** Custom color palette */\r\n colors?: {\r\n primary?: string;\r\n secondary?: string;\r\n accent?: string;\r\n info?: string;\r\n warning?: string;\r\n error?: string;\r\n success?: string;\r\n muted?: string;\r\n border?: string;\r\n };\r\n /** Whether to include extension styles (alerts, buttons, etc.) */\r\n includeExtensions?: boolean;\r\n /** Custom class overrides */\r\n customClasses?: Record<string, string>;\r\n}\r\n\r\nconst defaultColors = {\r\n primary: '#3b82f6',\r\n secondary: '#6b7280',\r\n accent: '#8b5cf6',\r\n info: '#3b82f6',\r\n warning: '#f59e0b',\r\n error: '#ef4444',\r\n success: '#10b981',\r\n muted: '#6b7280',\r\n border: '#d1d5db',\r\n};\r\n\r\nexport const changerawrMarkdownPlugin = plugin.withOptions<ChangerawrMarkdownPluginOptions>(\r\n (options = {}) =>\r\n ({ addUtilities, addComponents }) => {\r\n const {\r\n prefix = '',\r\n darkMode = true,\r\n colors = {},\r\n includeExtensions = true,\r\n customClasses = {},\r\n } = options;\r\n\r\n const mergedColors = { ...defaultColors, ...colors };\r\n const prefixClass = (className: string) => (prefix ? `${prefix}-${className}` : className);\r\n\r\n // Base typography utilities\r\n addUtilities({\r\n // Essential typography classes for markdown\r\n [`.${prefixClass('changerawr-text-3xl')}`]: {\r\n fontSize: '1.875rem',\r\n lineHeight: '2.25rem',\r\n },\r\n [`.${prefixClass('changerawr-text-2xl')}`]: {\r\n fontSize: '1.5rem',\r\n lineHeight: '2rem',\r\n },\r\n [`.${prefixClass('changerawr-text-xl')}`]: {\r\n fontSize: '1.25rem',\r\n lineHeight: '1.75rem',\r\n },\r\n [`.${prefixClass('changerawr-text-lg')}`]: {\r\n fontSize: '1.125rem',\r\n lineHeight: '1.75rem',\r\n },\r\n [`.${prefixClass('changerawr-font-bold')}`]: {\r\n fontWeight: '700',\r\n },\r\n [`.${prefixClass('changerawr-font-semibold')}`]: {\r\n fontWeight: '600',\r\n },\r\n [`.${prefixClass('changerawr-font-medium')}`]: {\r\n fontWeight: '500',\r\n },\r\n [`.${prefixClass('changerawr-italic')}`]: {\r\n fontStyle: 'italic',\r\n },\r\n [`.${prefixClass('changerawr-underline')}`]: {\r\n textDecoration: 'underline',\r\n },\r\n [`.${prefixClass('changerawr-line-through')}`]: {\r\n textDecoration: 'line-through',\r\n },\r\n\r\n // Spacing utilities\r\n [`.${prefixClass('changerawr-mt-8')}`]: { marginTop: '2rem' },\r\n [`.${prefixClass('changerawr-mt-6')}`]: { marginTop: '1.5rem' },\r\n [`.${prefixClass('changerawr-mt-5')}`]: { marginTop: '1.25rem' },\r\n [`.${prefixClass('changerawr-mt-4')}`]: { marginTop: '1rem' },\r\n [`.${prefixClass('changerawr-mt-3')}`]: { marginTop: '0.75rem' },\r\n [`.${prefixClass('changerawr-mb-8')}`]: { marginBottom: '2rem' },\r\n [`.${prefixClass('changerawr-mb-6')}`]: { marginBottom: '1.5rem' },\r\n [`.${prefixClass('changerawr-mb-4')}`]: { marginBottom: '1rem' },\r\n [`.${prefixClass('changerawr-mb-3')}`]: { marginBottom: '0.75rem' },\r\n [`.${prefixClass('changerawr-mb-2')}`]: { marginBottom: '0.5rem' },\r\n [`.${prefixClass('changerawr-my-6')}`]: { marginTop: '1.5rem', marginBottom: '1.5rem' },\r\n [`.${prefixClass('changerawr-my-4')}`]: { marginTop: '1rem', marginBottom: '1rem' },\r\n [`.${prefixClass('changerawr-my-2')}`]: { marginTop: '0.5rem', marginBottom: '0.5rem' },\r\n\r\n // Padding utilities\r\n [`.${prefixClass('changerawr-p-4')}`]: { padding: '1rem' },\r\n [`.${prefixClass('changerawr-p-6')}`]: { padding: '1.5rem' },\r\n [`.${prefixClass('changerawr-px-2')}`]: { paddingLeft: '0.5rem', paddingRight: '0.5rem' },\r\n [`.${prefixClass('changerawr-px-3')}`]: { paddingLeft: '0.75rem', paddingRight: '0.75rem' },\r\n [`.${prefixClass('changerawr-px-4')}`]: { paddingLeft: '1rem', paddingRight: '1rem' },\r\n [`.${prefixClass('changerawr-px-6')}`]: { paddingLeft: '1.5rem', paddingRight: '1.5rem' },\r\n [`.${prefixClass('changerawr-py-1')}`]: { paddingTop: '0.25rem', paddingBottom: '0.25rem' },\r\n [`.${prefixClass('changerawr-py-2')}`]: { paddingTop: '0.5rem', paddingBottom: '0.5rem' },\r\n [`.${prefixClass('changerawr-py-3')}`]: { paddingTop: '0.75rem', paddingBottom: '0.75rem' },\r\n [`.${prefixClass('changerawr-pl-4')}`]: { paddingLeft: '1rem' },\r\n [`.${prefixClass('changerawr-pl-6')}`]: { paddingLeft: '1.5rem' },\r\n\r\n // Line height and leading\r\n [`.${prefixClass('changerawr-leading-7')}`]: { lineHeight: '1.75rem' },\r\n [`.${prefixClass('changerawr-leading-relaxed')}`]: { lineHeight: '1.625' },\r\n [`.${prefixClass('changerawr-leading-loose')}`]: { lineHeight: '2' },\r\n\r\n // Layout utilities\r\n [`.${prefixClass('changerawr-flex')}`]: { display: 'flex' },\r\n [`.${prefixClass('changerawr-inline-flex')}`]: { display: 'inline-flex' },\r\n [`.${prefixClass('changerawr-items-center')}`]: { alignItems: 'center' },\r\n [`.${prefixClass('changerawr-justify-center')}`]: { justifyContent: 'center' },\r\n [`.${prefixClass('changerawr-gap-1')}`]: { gap: '0.25rem' },\r\n [`.${prefixClass('changerawr-gap-2')}`]: { gap: '0.5rem' },\r\n [`.${prefixClass('changerawr-gap-3')}`]: { gap: '0.75rem' },\r\n [`.${prefixClass('changerawr-group')}`]: { /* group parent */ },\r\n [`.${prefixClass('changerawr-relative')}`]: { position: 'relative' },\r\n\r\n // Border utilities\r\n [`.${prefixClass('changerawr-border')}`]: { borderWidth: '1px' },\r\n [`.${prefixClass('changerawr-border-l-2')}`]: { borderLeftWidth: '2px' },\r\n [`.${prefixClass('changerawr-border-l-4')}`]: { borderLeftWidth: '4px' },\r\n [`.${prefixClass('changerawr-rounded')}`]: { borderRadius: '0.25rem' },\r\n [`.${prefixClass('changerawr-rounded-lg')}`]: { borderRadius: '0.5rem' },\r\n [`.${prefixClass('changerawr-rounded-md')}`]: { borderRadius: '0.375rem' },\r\n\r\n // Background utilities\r\n [`.${prefixClass('changerawr-bg-gray-50')}`]: { backgroundColor: '#f9fafb' },\r\n [`.${prefixClass('changerawr-bg-gray-100')}`]: { backgroundColor: '#f3f4f6' },\r\n [`.${prefixClass('changerawr-bg-gray-900')}`]: { backgroundColor: '#111827' },\r\n [`.${prefixClass('changerawr-bg-white')}`]: { backgroundColor: '#ffffff' },\r\n\r\n // Text colors\r\n [`.${prefixClass('changerawr-text-gray-100')}`]: { color: '#f3f4f6' },\r\n [`.${prefixClass('changerawr-text-gray-600')}`]: { color: '#4b5563' },\r\n [`.${prefixClass('changerawr-text-gray-700')}`]: { color: '#374151' },\r\n [`.${prefixClass('changerawr-text-gray-800')}`]: { color: '#1f2937' },\r\n [`.${prefixClass('changerawr-text-primary')}`]: { color: mergedColors.primary },\r\n [`.${prefixClass('changerawr-text-muted-foreground')}`]: { color: mergedColors.muted },\r\n\r\n // Border colors\r\n [`.${prefixClass('changerawr-border-border')}`]: { borderColor: mergedColors.border },\r\n\r\n // Display utilities\r\n [`.${prefixClass('changerawr-overflow-x-auto')}`]: { overflowX: 'auto' },\r\n [`.${prefixClass('changerawr-max-w-full')}`]: { maxWidth: '100%' },\r\n [`.${prefixClass('changerawr-h-auto')}`]: { height: 'auto' },\r\n [`.${prefixClass('changerawr-font-mono')}`]: {\r\n fontFamily: 'ui-monospace, SFMono-Regular, \"SF Mono\", Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace',\r\n },\r\n\r\n // Opacity and transitions\r\n [`.${prefixClass('changerawr-opacity-0')}`]: { opacity: '0' },\r\n [`.${prefixClass('changerawr-transition-opacity')}`]: {\r\n transitionProperty: 'opacity',\r\n transitionTimingFunction: 'cubic-bezier(0.4, 0, 0.2, 1)',\r\n transitionDuration: '150ms',\r\n },\r\n [`.${prefixClass('changerawr-transition-colors')}`]: {\r\n transitionProperty: 'color, background-color, border-color, text-decoration-color, fill, stroke',\r\n transitionTimingFunction: 'cubic-bezier(0.4, 0, 0.2, 1)',\r\n transitionDuration: '150ms',\r\n },\r\n\r\n // Hover states\r\n [`.${prefixClass('changerawr-hover\\\\:underline')}:hover`]: { textDecoration: 'underline' },\r\n [`.group:hover .${prefixClass('changerawr-group-hover\\\\:opacity-100')}`]: { opacity: '1' },\r\n\r\n // Shadow utilities\r\n [`.${prefixClass('changerawr-shadow-sm')}`]: {\r\n boxShadow: '0 1px 2px 0 rgb(0 0 0 / 0.05)',\r\n },\r\n\r\n // Custom markdown classes with overrides\r\n ...Object.fromEntries(\r\n Object.entries(customClasses).map(([key, value]) => [\r\n `.${prefixClass(`changerawr-${key}`)}`,\r\n typeof value === 'string' ? { className: value } : value,\r\n ])\r\n ),\r\n });\r\n\r\n // Extension components\r\n if (includeExtensions) {\r\n addComponents({\r\n // Alert base styles\r\n [`.${prefixClass('changerawr-alert')}`]: {\r\n borderLeftWidth: '4px',\r\n padding: '1rem',\r\n marginBottom: '1rem',\r\n borderRadius: '0.375rem',\r\n transitionProperty: 'color, background-color, border-color',\r\n transitionTimingFunction: 'cubic-bezier(0.4, 0, 0.2, 1)',\r\n transitionDuration: '200ms',\r\n },\r\n\r\n // Alert variants using opacity for compatibility\r\n [`.${prefixClass('changerawr-alert-info')}`]: {\r\n backgroundColor: `color-mix(in srgb, ${mergedColors.info} 10%, transparent)`,\r\n borderColor: `color-mix(in srgb, ${mergedColors.info} 30%, transparent)`,\r\n color: mergedColors.info,\r\n },\r\n\r\n [`.${prefixClass('changerawr-alert-warning')}`]: {\r\n backgroundColor: `color-mix(in srgb, ${mergedColors.warning} 10%, transparent)`,\r\n borderColor: `color-mix(in srgb, ${mergedColors.warning} 30%, transparent)`,\r\n color: mergedColors.warning,\r\n },\r\n\r\n [`.${prefixClass('changerawr-alert-error')}`]: {\r\n backgroundColor: `color-mix(in srgb, ${mergedColors.error} 10%, transparent)`,\r\n borderColor: `color-mix(in srgb, ${mergedColors.error} 30%, transparent)`,\r\n color: mergedColors.error,\r\n },\r\n\r\n [`.${prefixClass('changerawr-alert-success')}`]: {\r\n backgroundColor: `color-mix(in srgb, ${mergedColors.success} 10%, transparent)`,\r\n borderColor: `color-mix(in srgb, ${mergedColors.success} 30%, transparent)`,\r\n color: mergedColors.success,\r\n },\r\n\r\n // Button base styles\r\n [`.${prefixClass('changerawr-button')}`]: {\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n borderRadius: '0.5rem',\r\n fontWeight: '500',\r\n transitionProperty: 'all',\r\n transitionTimingFunction: 'cubic-bezier(0.4, 0, 0.2, 1)',\r\n transitionDuration: '150ms',\r\n border: '1px solid transparent',\r\n cursor: 'pointer',\r\n textDecoration: 'none',\r\n '&:focus': {\r\n outline: 'none',\r\n ringWidth: '2px',\r\n ringOffsetWidth: '2px',\r\n },\r\n '&:disabled': {\r\n opacity: '0.5',\r\n cursor: 'not-allowed',\r\n },\r\n },\r\n\r\n // Button variants\r\n [`.${prefixClass('changerawr-button-primary')}`]: {\r\n backgroundColor: mergedColors.primary,\r\n color: '#ffffff',\r\n '&:hover:not(:disabled)': {\r\n backgroundColor: `color-mix(in srgb, ${mergedColors.primary} 90%, black)`,\r\n },\r\n '&:focus': {\r\n ringColor: `color-mix(in srgb, ${mergedColors.primary} 50%, transparent)`,\r\n },\r\n },\r\n\r\n [`.${prefixClass('changerawr-button-secondary')}`]: {\r\n backgroundColor: mergedColors.secondary,\r\n color: '#ffffff',\r\n '&:hover:not(:disabled)': {\r\n backgroundColor: `color-mix(in srgb, ${mergedColors.secondary} 90%, black)`,\r\n },\r\n '&:focus': {\r\n ringColor: `color-mix(in srgb, ${mergedColors.secondary} 50%, transparent)`,\r\n },\r\n },\r\n\r\n [`.${prefixClass('changerawr-button-outline')}`]: {\r\n borderColor: mergedColors.primary,\r\n color: mergedColors.primary,\r\n '&:hover:not(:disabled)': {\r\n backgroundColor: `color-mix(in srgb, ${mergedColors.primary} 5%, transparent)`,\r\n },\r\n },\r\n\r\n [`.${prefixClass('changerawr-button-ghost')}`]: {\r\n color: mergedColors.secondary,\r\n '&:hover:not(:disabled)': {\r\n backgroundColor: `color-mix(in srgb, ${mergedColors.secondary} 10%, transparent)`,\r\n },\r\n },\r\n\r\n // Button sizes\r\n [`.${prefixClass('changerawr-button-sm')}`]: {\r\n paddingLeft: '0.75rem',\r\n paddingRight: '0.75rem',\r\n paddingTop: '0.375rem',\r\n paddingBottom: '0.375rem',\r\n fontSize: '0.875rem',\r\n },\r\n\r\n [`.${prefixClass('changerawr-button-md')}`]: {\r\n paddingLeft: '1rem',\r\n paddingRight: '1rem',\r\n paddingTop: '0.5rem',\r\n paddingBottom: '0.5rem',\r\n fontSize: '0.875rem',\r\n },\r\n\r\n [`.${prefixClass('changerawr-button-lg')}`]: {\r\n paddingLeft: '1.5rem',\r\n paddingRight: '1.5rem',\r\n paddingTop: '0.75rem',\r\n paddingBottom: '0.75rem',\r\n fontSize: '1rem',\r\n },\r\n\r\n // Embed styles\r\n [`.${prefixClass('changerawr-embed')}`]: {\r\n borderRadius: '0.5rem',\r\n border: '1px solid',\r\n borderColor: mergedColors.border,\r\n backgroundColor: '#ffffff',\r\n boxShadow: '0 1px 2px 0 rgb(0 0 0 / 0.05)',\r\n marginBottom: '1.5rem',\r\n overflow: 'hidden',\r\n },\r\n });\r\n }\r\n\r\n // Dark mode variants\r\n if (darkMode) {\r\n addUtilities({\r\n [`.dark .${prefixClass('changerawr-dark\\\\:bg-gray-800')}`]: { backgroundColor: '#1f2937' },\r\n [`.dark .${prefixClass('changerawr-dark\\\\:text-gray-100')}`]: { color: '#f3f4f6' },\r\n [`.dark .${prefixClass('changerawr-dark\\\\:text-gray-300')}`]: { color: '#d1d5db' },\r\n [`.dark .${prefixClass('changerawr-dark\\\\:border-gray-600')}`]: { borderColor: '#4b5563' },\r\n });\r\n }\r\n }\r\n);\r\n\r\n// CSS-only version for Tailwind v4\r\nexport const changerawrMarkdownCSS = (options: ChangerawrMarkdownPluginOptions = {}) => {\r\n const {\r\n prefix = '',\r\n colors = {},\r\n includeExtensions = true,\r\n } = options;\r\n\r\n const mergedColors = { ...defaultColors, ...colors };\r\n const prefixClass = (className: string) => (prefix ? `${prefix}-${className}` : className);\r\n\r\n return `\r\n/* Changerawr Markdown Styles */\r\n@layer utilities {\r\n /* Typography */\r\n .${prefixClass('changerawr-text-3xl')} { font-size: 1.875rem; line-height: 2.25rem; }\r\n .${prefixClass('changerawr-text-2xl')} { font-size: 1.5rem; line-height: 2rem; }\r\n .${prefixClass('changerawr-text-xl')} { font-size: 1.25rem; line-height: 1.75rem; }\r\n .${prefixClass('changerawr-text-lg')} { font-size: 1.125rem; line-height: 1.75rem; }\r\n .${prefixClass('changerawr-font-bold')} { font-weight: 700; }\r\n .${prefixClass('changerawr-font-semibold')} { font-weight: 600; }\r\n .${prefixClass('changerawr-font-medium')} { font-weight: 500; }\r\n .${prefixClass('changerawr-italic')} { font-style: italic; }\r\n .${prefixClass('changerawr-underline')} { text-decoration: underline; }\r\n \r\n /* Spacing */\r\n .${prefixClass('changerawr-mt-8')} { margin-top: 2rem; }\r\n .${prefixClass('changerawr-mt-6')} { margin-top: 1.5rem; }\r\n .${prefixClass('changerawr-mb-4')} { margin-bottom: 1rem; }\r\n .${prefixClass('changerawr-leading-7')} { line-height: 1.75rem; }\r\n \r\n /* Layout */\r\n .${prefixClass('changerawr-flex')} { display: flex; }\r\n .${prefixClass('changerawr-items-center')} { align-items: center; }\r\n .${prefixClass('changerawr-gap-2')} { gap: 0.5rem; }\r\n \r\n /* Colors */\r\n .${prefixClass('changerawr-text-primary')} { color: ${mergedColors.primary}; }\r\n .${prefixClass('changerawr-text-muted-foreground')} { color: ${mergedColors.muted}; }\r\n}\r\n\r\n${includeExtensions ? `\r\n@layer components {\r\n /* Alert Components */\r\n .${prefixClass('changerawr-alert')} {\r\n border-left-width: 4px;\r\n padding: 1rem;\r\n margin-bottom: 1rem;\r\n border-radius: 0.375rem;\r\n transition: color, background-color, border-color 200ms;\r\n }\r\n \r\n .${prefixClass('changerawr-alert-info')} {\r\n background-color: color-mix(in srgb, ${mergedColors.info} 10%, transparent);\r\n border-color: color-mix(in srgb, ${mergedColors.info} 30%, transparent);\r\n color: ${mergedColors.info};\r\n }\r\n \r\n .${prefixClass('changerawr-alert-warning')} {\r\n background-color: color-mix(in srgb, ${mergedColors.warning} 10%, transparent);\r\n border-color: color-mix(in srgb, ${mergedColors.warning} 30%, transparent);\r\n color: ${mergedColors.warning};\r\n }\r\n \r\n .${prefixClass('changerawr-alert-error')} {\r\n background-color: color-mix(in srgb, ${mergedColors.error} 10%, transparent);\r\n border-color: color-mix(in srgb, ${mergedColors.error} 30%, transparent);\r\n color: ${mergedColors.error};\r\n }\r\n \r\n .${prefixClass('changerawr-alert-success')} {\r\n background-color: color-mix(in srgb, ${mergedColors.success} 10%, transparent);\r\n border-color: color-mix(in srgb, ${mergedColors.success} 30%, transparent);\r\n color: ${mergedColors.success};\r\n }\r\n\r\n /* Button Components */\r\n .${prefixClass('changerawr-button')} {\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n border-radius: 0.5rem;\r\n font-weight: 500;\r\n transition: all 150ms;\r\n border: 1px solid transparent;\r\n cursor: pointer;\r\n text-decoration: none;\r\n }\r\n \r\n .${prefixClass('changerawr-button-primary')} {\r\n background-color: ${mergedColors.primary};\r\n color: white;\r\n }\r\n \r\n .${prefixClass('changerawr-button-primary')}:hover:not(:disabled) {\r\n background-color: color-mix(in srgb, ${mergedColors.primary} 90%, black);\r\n }\r\n \r\n .${prefixClass('changerawr-button-md')} {\r\n padding: 0.5rem 1rem;\r\n font-size: 0.875rem;\r\n }\r\n}\r\n` : ''}\r\n`;\r\n};\r\n\r\nexport default changerawrMarkdownPlugin;"],"mappings":"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","names":["plugin"]}
1
+ {"version":3,"sources":["../../src/tailwind/index.ts","../../src/tailwind/plugin.ts"],"sourcesContent":["/**\r\n * Tailwind CSS plugin exports for @changerawr/markdown\r\n */\r\n\r\n// Export the main plugin and its types\r\nexport {\r\n changerawrMarkdownPlugin,\r\n type ChangerawrMarkdownPluginOptions\r\n} from './plugin';\r\n\r\n// Default export for convenience\r\nexport { changerawrMarkdownPlugin as default } from './plugin';","/**\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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACQA,oBAAmB;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,cAAAA,QAAO;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":["plugin"]}
@@ -1,292 +1,124 @@
1
1
  // src/tailwind/plugin.ts
2
2
  import plugin from "tailwindcss/plugin";
3
- var defaultColors = {
4
- primary: "#3b82f6",
5
- secondary: "#6b7280",
6
- accent: "#8b5cf6",
7
- info: "#3b82f6",
8
- warning: "#f59e0b",
9
- error: "#ef4444",
10
- success: "#10b981",
11
- muted: "#6b7280",
12
- border: "#d1d5db"
13
- };
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
+ ];
14
103
  var changerawrMarkdownPlugin = plugin.withOptions(
15
- (options = {}) => ({ addUtilities, addComponents }) => {
16
- const {
17
- prefix = "",
18
- darkMode = true,
19
- colors = {},
20
- includeExtensions = true,
21
- customClasses = {}
22
- } = options;
23
- const mergedColors = { ...defaultColors, ...colors };
24
- const prefixClass = (className) => prefix ? `${prefix}-${className}` : className;
25
- addUtilities({
26
- // Essential typography classes for markdown
27
- [`.${prefixClass("changerawr-text-3xl")}`]: {
28
- fontSize: "1.875rem",
29
- lineHeight: "2.25rem"
30
- },
31
- [`.${prefixClass("changerawr-text-2xl")}`]: {
32
- fontSize: "1.5rem",
33
- lineHeight: "2rem"
34
- },
35
- [`.${prefixClass("changerawr-text-xl")}`]: {
36
- fontSize: "1.25rem",
37
- lineHeight: "1.75rem"
38
- },
39
- [`.${prefixClass("changerawr-text-lg")}`]: {
40
- fontSize: "1.125rem",
41
- lineHeight: "1.75rem"
42
- },
43
- [`.${prefixClass("changerawr-font-bold")}`]: {
44
- fontWeight: "700"
45
- },
46
- [`.${prefixClass("changerawr-font-semibold")}`]: {
47
- fontWeight: "600"
48
- },
49
- [`.${prefixClass("changerawr-font-medium")}`]: {
50
- fontWeight: "500"
51
- },
52
- [`.${prefixClass("changerawr-italic")}`]: {
53
- fontStyle: "italic"
54
- },
55
- [`.${prefixClass("changerawr-underline")}`]: {
56
- textDecoration: "underline"
57
- },
58
- [`.${prefixClass("changerawr-line-through")}`]: {
59
- textDecoration: "line-through"
60
- },
61
- // Spacing utilities
62
- [`.${prefixClass("changerawr-mt-8")}`]: { marginTop: "2rem" },
63
- [`.${prefixClass("changerawr-mt-6")}`]: { marginTop: "1.5rem" },
64
- [`.${prefixClass("changerawr-mt-5")}`]: { marginTop: "1.25rem" },
65
- [`.${prefixClass("changerawr-mt-4")}`]: { marginTop: "1rem" },
66
- [`.${prefixClass("changerawr-mt-3")}`]: { marginTop: "0.75rem" },
67
- [`.${prefixClass("changerawr-mb-8")}`]: { marginBottom: "2rem" },
68
- [`.${prefixClass("changerawr-mb-6")}`]: { marginBottom: "1.5rem" },
69
- [`.${prefixClass("changerawr-mb-4")}`]: { marginBottom: "1rem" },
70
- [`.${prefixClass("changerawr-mb-3")}`]: { marginBottom: "0.75rem" },
71
- [`.${prefixClass("changerawr-mb-2")}`]: { marginBottom: "0.5rem" },
72
- [`.${prefixClass("changerawr-my-6")}`]: { marginTop: "1.5rem", marginBottom: "1.5rem" },
73
- [`.${prefixClass("changerawr-my-4")}`]: { marginTop: "1rem", marginBottom: "1rem" },
74
- [`.${prefixClass("changerawr-my-2")}`]: { marginTop: "0.5rem", marginBottom: "0.5rem" },
75
- // Padding utilities
76
- [`.${prefixClass("changerawr-p-4")}`]: { padding: "1rem" },
77
- [`.${prefixClass("changerawr-p-6")}`]: { padding: "1.5rem" },
78
- [`.${prefixClass("changerawr-px-2")}`]: { paddingLeft: "0.5rem", paddingRight: "0.5rem" },
79
- [`.${prefixClass("changerawr-px-3")}`]: { paddingLeft: "0.75rem", paddingRight: "0.75rem" },
80
- [`.${prefixClass("changerawr-px-4")}`]: { paddingLeft: "1rem", paddingRight: "1rem" },
81
- [`.${prefixClass("changerawr-px-6")}`]: { paddingLeft: "1.5rem", paddingRight: "1.5rem" },
82
- [`.${prefixClass("changerawr-py-1")}`]: { paddingTop: "0.25rem", paddingBottom: "0.25rem" },
83
- [`.${prefixClass("changerawr-py-2")}`]: { paddingTop: "0.5rem", paddingBottom: "0.5rem" },
84
- [`.${prefixClass("changerawr-py-3")}`]: { paddingTop: "0.75rem", paddingBottom: "0.75rem" },
85
- [`.${prefixClass("changerawr-pl-4")}`]: { paddingLeft: "1rem" },
86
- [`.${prefixClass("changerawr-pl-6")}`]: { paddingLeft: "1.5rem" },
87
- // Line height and leading
88
- [`.${prefixClass("changerawr-leading-7")}`]: { lineHeight: "1.75rem" },
89
- [`.${prefixClass("changerawr-leading-relaxed")}`]: { lineHeight: "1.625" },
90
- [`.${prefixClass("changerawr-leading-loose")}`]: { lineHeight: "2" },
91
- // Layout utilities
92
- [`.${prefixClass("changerawr-flex")}`]: { display: "flex" },
93
- [`.${prefixClass("changerawr-inline-flex")}`]: { display: "inline-flex" },
94
- [`.${prefixClass("changerawr-items-center")}`]: { alignItems: "center" },
95
- [`.${prefixClass("changerawr-justify-center")}`]: { justifyContent: "center" },
96
- [`.${prefixClass("changerawr-gap-1")}`]: { gap: "0.25rem" },
97
- [`.${prefixClass("changerawr-gap-2")}`]: { gap: "0.5rem" },
98
- [`.${prefixClass("changerawr-gap-3")}`]: { gap: "0.75rem" },
99
- [`.${prefixClass("changerawr-group")}`]: {
100
- /* group parent */
101
- },
102
- [`.${prefixClass("changerawr-relative")}`]: { position: "relative" },
103
- // Border utilities
104
- [`.${prefixClass("changerawr-border")}`]: { borderWidth: "1px" },
105
- [`.${prefixClass("changerawr-border-l-2")}`]: { borderLeftWidth: "2px" },
106
- [`.${prefixClass("changerawr-border-l-4")}`]: { borderLeftWidth: "4px" },
107
- [`.${prefixClass("changerawr-rounded")}`]: { borderRadius: "0.25rem" },
108
- [`.${prefixClass("changerawr-rounded-lg")}`]: { borderRadius: "0.5rem" },
109
- [`.${prefixClass("changerawr-rounded-md")}`]: { borderRadius: "0.375rem" },
110
- // Background utilities
111
- [`.${prefixClass("changerawr-bg-gray-50")}`]: { backgroundColor: "#f9fafb" },
112
- [`.${prefixClass("changerawr-bg-gray-100")}`]: { backgroundColor: "#f3f4f6" },
113
- [`.${prefixClass("changerawr-bg-gray-900")}`]: { backgroundColor: "#111827" },
114
- [`.${prefixClass("changerawr-bg-white")}`]: { backgroundColor: "#ffffff" },
115
- // Text colors
116
- [`.${prefixClass("changerawr-text-gray-100")}`]: { color: "#f3f4f6" },
117
- [`.${prefixClass("changerawr-text-gray-600")}`]: { color: "#4b5563" },
118
- [`.${prefixClass("changerawr-text-gray-700")}`]: { color: "#374151" },
119
- [`.${prefixClass("changerawr-text-gray-800")}`]: { color: "#1f2937" },
120
- [`.${prefixClass("changerawr-text-primary")}`]: { color: mergedColors.primary },
121
- [`.${prefixClass("changerawr-text-muted-foreground")}`]: { color: mergedColors.muted },
122
- // Border colors
123
- [`.${prefixClass("changerawr-border-border")}`]: { borderColor: mergedColors.border },
124
- // Display utilities
125
- [`.${prefixClass("changerawr-overflow-x-auto")}`]: { overflowX: "auto" },
126
- [`.${prefixClass("changerawr-max-w-full")}`]: { maxWidth: "100%" },
127
- [`.${prefixClass("changerawr-h-auto")}`]: { height: "auto" },
128
- [`.${prefixClass("changerawr-font-mono")}`]: {
129
- fontFamily: 'ui-monospace, SFMono-Regular, "SF Mono", Monaco, Consolas, "Liberation Mono", "Courier New", monospace'
130
- },
131
- // Opacity and transitions
132
- [`.${prefixClass("changerawr-opacity-0")}`]: { opacity: "0" },
133
- [`.${prefixClass("changerawr-transition-opacity")}`]: {
134
- transitionProperty: "opacity",
135
- transitionTimingFunction: "cubic-bezier(0.4, 0, 0.2, 1)",
136
- transitionDuration: "150ms"
137
- },
138
- [`.${prefixClass("changerawr-transition-colors")}`]: {
139
- transitionProperty: "color, background-color, border-color, text-decoration-color, fill, stroke",
140
- transitionTimingFunction: "cubic-bezier(0.4, 0, 0.2, 1)",
141
- transitionDuration: "150ms"
142
- },
143
- // Hover states
144
- [`.${prefixClass("changerawr-hover\\:underline")}:hover`]: { textDecoration: "underline" },
145
- [`.group:hover .${prefixClass("changerawr-group-hover\\:opacity-100")}`]: { opacity: "1" },
146
- // Shadow utilities
147
- [`.${prefixClass("changerawr-shadow-sm")}`]: {
148
- boxShadow: "0 1px 2px 0 rgb(0 0 0 / 0.05)"
149
- },
150
- // Custom markdown classes with overrides
151
- ...Object.fromEntries(
152
- Object.entries(customClasses).map(([key, value]) => [
153
- `.${prefixClass(`changerawr-${key}`)}`,
154
- typeof value === "string" ? { className: value } : value
155
- ])
156
- )
157
- });
104
+ (options = {}) => ({ addUtilities }) => {
105
+ const { includeExtensions = true, darkMode = true } = options;
106
+ let allClasses = [...CORE_CLASSES];
158
107
  if (includeExtensions) {
159
- addComponents({
160
- // Alert base styles
161
- [`.${prefixClass("changerawr-alert")}`]: {
162
- borderLeftWidth: "4px",
163
- padding: "1rem",
164
- marginBottom: "1rem",
165
- borderRadius: "0.375rem",
166
- transitionProperty: "color, background-color, border-color",
167
- transitionTimingFunction: "cubic-bezier(0.4, 0, 0.2, 1)",
168
- transitionDuration: "200ms"
169
- },
170
- // Alert variants using opacity for compatibility
171
- [`.${prefixClass("changerawr-alert-info")}`]: {
172
- backgroundColor: `color-mix(in srgb, ${mergedColors.info} 10%, transparent)`,
173
- borderColor: `color-mix(in srgb, ${mergedColors.info} 30%, transparent)`,
174
- color: mergedColors.info
175
- },
176
- [`.${prefixClass("changerawr-alert-warning")}`]: {
177
- backgroundColor: `color-mix(in srgb, ${mergedColors.warning} 10%, transparent)`,
178
- borderColor: `color-mix(in srgb, ${mergedColors.warning} 30%, transparent)`,
179
- color: mergedColors.warning
180
- },
181
- [`.${prefixClass("changerawr-alert-error")}`]: {
182
- backgroundColor: `color-mix(in srgb, ${mergedColors.error} 10%, transparent)`,
183
- borderColor: `color-mix(in srgb, ${mergedColors.error} 30%, transparent)`,
184
- color: mergedColors.error
185
- },
186
- [`.${prefixClass("changerawr-alert-success")}`]: {
187
- backgroundColor: `color-mix(in srgb, ${mergedColors.success} 10%, transparent)`,
188
- borderColor: `color-mix(in srgb, ${mergedColors.success} 30%, transparent)`,
189
- color: mergedColors.success
190
- },
191
- // Button base styles
192
- [`.${prefixClass("changerawr-button")}`]: {
193
- display: "inline-flex",
194
- alignItems: "center",
195
- justifyContent: "center",
196
- borderRadius: "0.5rem",
197
- fontWeight: "500",
198
- transitionProperty: "all",
199
- transitionTimingFunction: "cubic-bezier(0.4, 0, 0.2, 1)",
200
- transitionDuration: "150ms",
201
- border: "1px solid transparent",
202
- cursor: "pointer",
203
- textDecoration: "none",
204
- "&:focus": {
205
- outline: "none",
206
- ringWidth: "2px",
207
- ringOffsetWidth: "2px"
208
- },
209
- "&:disabled": {
210
- opacity: "0.5",
211
- cursor: "not-allowed"
212
- }
213
- },
214
- // Button variants
215
- [`.${prefixClass("changerawr-button-primary")}`]: {
216
- backgroundColor: mergedColors.primary,
217
- color: "#ffffff",
218
- "&:hover:not(:disabled)": {
219
- backgroundColor: `color-mix(in srgb, ${mergedColors.primary} 90%, black)`
220
- },
221
- "&:focus": {
222
- ringColor: `color-mix(in srgb, ${mergedColors.primary} 50%, transparent)`
223
- }
224
- },
225
- [`.${prefixClass("changerawr-button-secondary")}`]: {
226
- backgroundColor: mergedColors.secondary,
227
- color: "#ffffff",
228
- "&:hover:not(:disabled)": {
229
- backgroundColor: `color-mix(in srgb, ${mergedColors.secondary} 90%, black)`
230
- },
231
- "&:focus": {
232
- ringColor: `color-mix(in srgb, ${mergedColors.secondary} 50%, transparent)`
233
- }
234
- },
235
- [`.${prefixClass("changerawr-button-outline")}`]: {
236
- borderColor: mergedColors.primary,
237
- color: mergedColors.primary,
238
- "&:hover:not(:disabled)": {
239
- backgroundColor: `color-mix(in srgb, ${mergedColors.primary} 5%, transparent)`
240
- }
241
- },
242
- [`.${prefixClass("changerawr-button-ghost")}`]: {
243
- color: mergedColors.secondary,
244
- "&:hover:not(:disabled)": {
245
- backgroundColor: `color-mix(in srgb, ${mergedColors.secondary} 10%, transparent)`
246
- }
247
- },
248
- // Button sizes
249
- [`.${prefixClass("changerawr-button-sm")}`]: {
250
- paddingLeft: "0.75rem",
251
- paddingRight: "0.75rem",
252
- paddingTop: "0.375rem",
253
- paddingBottom: "0.375rem",
254
- fontSize: "0.875rem"
255
- },
256
- [`.${prefixClass("changerawr-button-md")}`]: {
257
- paddingLeft: "1rem",
258
- paddingRight: "1rem",
259
- paddingTop: "0.5rem",
260
- paddingBottom: "0.5rem",
261
- fontSize: "0.875rem"
262
- },
263
- [`.${prefixClass("changerawr-button-lg")}`]: {
264
- paddingLeft: "1.5rem",
265
- paddingRight: "1.5rem",
266
- paddingTop: "0.75rem",
267
- paddingBottom: "0.75rem",
268
- fontSize: "1rem"
269
- },
270
- // Embed styles
271
- [`.${prefixClass("changerawr-embed")}`]: {
272
- borderRadius: "0.5rem",
273
- border: "1px solid",
274
- borderColor: mergedColors.border,
275
- backgroundColor: "#ffffff",
276
- boxShadow: "0 1px 2px 0 rgb(0 0 0 / 0.05)",
277
- marginBottom: "1.5rem",
278
- overflow: "hidden"
279
- }
280
- });
108
+ allClasses.push(...EXTENSION_CLASSES);
281
109
  }
282
110
  if (darkMode) {
283
- addUtilities({
284
- [`.dark .${prefixClass("changerawr-dark\\:bg-gray-800")}`]: { backgroundColor: "#1f2937" },
285
- [`.dark .${prefixClass("changerawr-dark\\:text-gray-100")}`]: { color: "#f3f4f6" },
286
- [`.dark .${prefixClass("changerawr-dark\\:text-gray-300")}`]: { color: "#d1d5db" },
287
- [`.dark .${prefixClass("changerawr-dark\\:border-gray-600")}`]: { borderColor: "#4b5563" }
288
- });
111
+ allClasses.push(...DARK_MODE_CLASSES);
289
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);
290
122
  }
291
123
  );
292
124
  export {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/tailwind/plugin.ts"],"sourcesContent":["/**\r\n * Tailwind CSS plugin for @changerawr/markdown\r\n * Compatible with both Tailwind v3 and v4\r\n */\r\n\r\nimport plugin from 'tailwindcss/plugin';\r\n\r\nexport interface ChangerawrMarkdownPluginOptions {\r\n /** Prefix for all markdown classes (default: none) */\r\n prefix?: string;\r\n /** Whether to include dark mode variants (default: true) */\r\n darkMode?: boolean;\r\n /** Custom color palette */\r\n colors?: {\r\n primary?: string;\r\n secondary?: string;\r\n accent?: string;\r\n info?: string;\r\n warning?: string;\r\n error?: string;\r\n success?: string;\r\n muted?: string;\r\n border?: string;\r\n };\r\n /** Whether to include extension styles (alerts, buttons, etc.) */\r\n includeExtensions?: boolean;\r\n /** Custom class overrides */\r\n customClasses?: Record<string, string>;\r\n}\r\n\r\nconst defaultColors = {\r\n primary: '#3b82f6',\r\n secondary: '#6b7280',\r\n accent: '#8b5cf6',\r\n info: '#3b82f6',\r\n warning: '#f59e0b',\r\n error: '#ef4444',\r\n success: '#10b981',\r\n muted: '#6b7280',\r\n border: '#d1d5db',\r\n};\r\n\r\nexport const changerawrMarkdownPlugin = plugin.withOptions<ChangerawrMarkdownPluginOptions>(\r\n (options = {}) =>\r\n ({ addUtilities, addComponents }) => {\r\n const {\r\n prefix = '',\r\n darkMode = true,\r\n colors = {},\r\n includeExtensions = true,\r\n customClasses = {},\r\n } = options;\r\n\r\n const mergedColors = { ...defaultColors, ...colors };\r\n const prefixClass = (className: string) => (prefix ? `${prefix}-${className}` : className);\r\n\r\n // Base typography utilities\r\n addUtilities({\r\n // Essential typography classes for markdown\r\n [`.${prefixClass('changerawr-text-3xl')}`]: {\r\n fontSize: '1.875rem',\r\n lineHeight: '2.25rem',\r\n },\r\n [`.${prefixClass('changerawr-text-2xl')}`]: {\r\n fontSize: '1.5rem',\r\n lineHeight: '2rem',\r\n },\r\n [`.${prefixClass('changerawr-text-xl')}`]: {\r\n fontSize: '1.25rem',\r\n lineHeight: '1.75rem',\r\n },\r\n [`.${prefixClass('changerawr-text-lg')}`]: {\r\n fontSize: '1.125rem',\r\n lineHeight: '1.75rem',\r\n },\r\n [`.${prefixClass('changerawr-font-bold')}`]: {\r\n fontWeight: '700',\r\n },\r\n [`.${prefixClass('changerawr-font-semibold')}`]: {\r\n fontWeight: '600',\r\n },\r\n [`.${prefixClass('changerawr-font-medium')}`]: {\r\n fontWeight: '500',\r\n },\r\n [`.${prefixClass('changerawr-italic')}`]: {\r\n fontStyle: 'italic',\r\n },\r\n [`.${prefixClass('changerawr-underline')}`]: {\r\n textDecoration: 'underline',\r\n },\r\n [`.${prefixClass('changerawr-line-through')}`]: {\r\n textDecoration: 'line-through',\r\n },\r\n\r\n // Spacing utilities\r\n [`.${prefixClass('changerawr-mt-8')}`]: { marginTop: '2rem' },\r\n [`.${prefixClass('changerawr-mt-6')}`]: { marginTop: '1.5rem' },\r\n [`.${prefixClass('changerawr-mt-5')}`]: { marginTop: '1.25rem' },\r\n [`.${prefixClass('changerawr-mt-4')}`]: { marginTop: '1rem' },\r\n [`.${prefixClass('changerawr-mt-3')}`]: { marginTop: '0.75rem' },\r\n [`.${prefixClass('changerawr-mb-8')}`]: { marginBottom: '2rem' },\r\n [`.${prefixClass('changerawr-mb-6')}`]: { marginBottom: '1.5rem' },\r\n [`.${prefixClass('changerawr-mb-4')}`]: { marginBottom: '1rem' },\r\n [`.${prefixClass('changerawr-mb-3')}`]: { marginBottom: '0.75rem' },\r\n [`.${prefixClass('changerawr-mb-2')}`]: { marginBottom: '0.5rem' },\r\n [`.${prefixClass('changerawr-my-6')}`]: { marginTop: '1.5rem', marginBottom: '1.5rem' },\r\n [`.${prefixClass('changerawr-my-4')}`]: { marginTop: '1rem', marginBottom: '1rem' },\r\n [`.${prefixClass('changerawr-my-2')}`]: { marginTop: '0.5rem', marginBottom: '0.5rem' },\r\n\r\n // Padding utilities\r\n [`.${prefixClass('changerawr-p-4')}`]: { padding: '1rem' },\r\n [`.${prefixClass('changerawr-p-6')}`]: { padding: '1.5rem' },\r\n [`.${prefixClass('changerawr-px-2')}`]: { paddingLeft: '0.5rem', paddingRight: '0.5rem' },\r\n [`.${prefixClass('changerawr-px-3')}`]: { paddingLeft: '0.75rem', paddingRight: '0.75rem' },\r\n [`.${prefixClass('changerawr-px-4')}`]: { paddingLeft: '1rem', paddingRight: '1rem' },\r\n [`.${prefixClass('changerawr-px-6')}`]: { paddingLeft: '1.5rem', paddingRight: '1.5rem' },\r\n [`.${prefixClass('changerawr-py-1')}`]: { paddingTop: '0.25rem', paddingBottom: '0.25rem' },\r\n [`.${prefixClass('changerawr-py-2')}`]: { paddingTop: '0.5rem', paddingBottom: '0.5rem' },\r\n [`.${prefixClass('changerawr-py-3')}`]: { paddingTop: '0.75rem', paddingBottom: '0.75rem' },\r\n [`.${prefixClass('changerawr-pl-4')}`]: { paddingLeft: '1rem' },\r\n [`.${prefixClass('changerawr-pl-6')}`]: { paddingLeft: '1.5rem' },\r\n\r\n // Line height and leading\r\n [`.${prefixClass('changerawr-leading-7')}`]: { lineHeight: '1.75rem' },\r\n [`.${prefixClass('changerawr-leading-relaxed')}`]: { lineHeight: '1.625' },\r\n [`.${prefixClass('changerawr-leading-loose')}`]: { lineHeight: '2' },\r\n\r\n // Layout utilities\r\n [`.${prefixClass('changerawr-flex')}`]: { display: 'flex' },\r\n [`.${prefixClass('changerawr-inline-flex')}`]: { display: 'inline-flex' },\r\n [`.${prefixClass('changerawr-items-center')}`]: { alignItems: 'center' },\r\n [`.${prefixClass('changerawr-justify-center')}`]: { justifyContent: 'center' },\r\n [`.${prefixClass('changerawr-gap-1')}`]: { gap: '0.25rem' },\r\n [`.${prefixClass('changerawr-gap-2')}`]: { gap: '0.5rem' },\r\n [`.${prefixClass('changerawr-gap-3')}`]: { gap: '0.75rem' },\r\n [`.${prefixClass('changerawr-group')}`]: { /* group parent */ },\r\n [`.${prefixClass('changerawr-relative')}`]: { position: 'relative' },\r\n\r\n // Border utilities\r\n [`.${prefixClass('changerawr-border')}`]: { borderWidth: '1px' },\r\n [`.${prefixClass('changerawr-border-l-2')}`]: { borderLeftWidth: '2px' },\r\n [`.${prefixClass('changerawr-border-l-4')}`]: { borderLeftWidth: '4px' },\r\n [`.${prefixClass('changerawr-rounded')}`]: { borderRadius: '0.25rem' },\r\n [`.${prefixClass('changerawr-rounded-lg')}`]: { borderRadius: '0.5rem' },\r\n [`.${prefixClass('changerawr-rounded-md')}`]: { borderRadius: '0.375rem' },\r\n\r\n // Background utilities\r\n [`.${prefixClass('changerawr-bg-gray-50')}`]: { backgroundColor: '#f9fafb' },\r\n [`.${prefixClass('changerawr-bg-gray-100')}`]: { backgroundColor: '#f3f4f6' },\r\n [`.${prefixClass('changerawr-bg-gray-900')}`]: { backgroundColor: '#111827' },\r\n [`.${prefixClass('changerawr-bg-white')}`]: { backgroundColor: '#ffffff' },\r\n\r\n // Text colors\r\n [`.${prefixClass('changerawr-text-gray-100')}`]: { color: '#f3f4f6' },\r\n [`.${prefixClass('changerawr-text-gray-600')}`]: { color: '#4b5563' },\r\n [`.${prefixClass('changerawr-text-gray-700')}`]: { color: '#374151' },\r\n [`.${prefixClass('changerawr-text-gray-800')}`]: { color: '#1f2937' },\r\n [`.${prefixClass('changerawr-text-primary')}`]: { color: mergedColors.primary },\r\n [`.${prefixClass('changerawr-text-muted-foreground')}`]: { color: mergedColors.muted },\r\n\r\n // Border colors\r\n [`.${prefixClass('changerawr-border-border')}`]: { borderColor: mergedColors.border },\r\n\r\n // Display utilities\r\n [`.${prefixClass('changerawr-overflow-x-auto')}`]: { overflowX: 'auto' },\r\n [`.${prefixClass('changerawr-max-w-full')}`]: { maxWidth: '100%' },\r\n [`.${prefixClass('changerawr-h-auto')}`]: { height: 'auto' },\r\n [`.${prefixClass('changerawr-font-mono')}`]: {\r\n fontFamily: 'ui-monospace, SFMono-Regular, \"SF Mono\", Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace',\r\n },\r\n\r\n // Opacity and transitions\r\n [`.${prefixClass('changerawr-opacity-0')}`]: { opacity: '0' },\r\n [`.${prefixClass('changerawr-transition-opacity')}`]: {\r\n transitionProperty: 'opacity',\r\n transitionTimingFunction: 'cubic-bezier(0.4, 0, 0.2, 1)',\r\n transitionDuration: '150ms',\r\n },\r\n [`.${prefixClass('changerawr-transition-colors')}`]: {\r\n transitionProperty: 'color, background-color, border-color, text-decoration-color, fill, stroke',\r\n transitionTimingFunction: 'cubic-bezier(0.4, 0, 0.2, 1)',\r\n transitionDuration: '150ms',\r\n },\r\n\r\n // Hover states\r\n [`.${prefixClass('changerawr-hover\\\\:underline')}:hover`]: { textDecoration: 'underline' },\r\n [`.group:hover .${prefixClass('changerawr-group-hover\\\\:opacity-100')}`]: { opacity: '1' },\r\n\r\n // Shadow utilities\r\n [`.${prefixClass('changerawr-shadow-sm')}`]: {\r\n boxShadow: '0 1px 2px 0 rgb(0 0 0 / 0.05)',\r\n },\r\n\r\n // Custom markdown classes with overrides\r\n ...Object.fromEntries(\r\n Object.entries(customClasses).map(([key, value]) => [\r\n `.${prefixClass(`changerawr-${key}`)}`,\r\n typeof value === 'string' ? { className: value } : value,\r\n ])\r\n ),\r\n });\r\n\r\n // Extension components\r\n if (includeExtensions) {\r\n addComponents({\r\n // Alert base styles\r\n [`.${prefixClass('changerawr-alert')}`]: {\r\n borderLeftWidth: '4px',\r\n padding: '1rem',\r\n marginBottom: '1rem',\r\n borderRadius: '0.375rem',\r\n transitionProperty: 'color, background-color, border-color',\r\n transitionTimingFunction: 'cubic-bezier(0.4, 0, 0.2, 1)',\r\n transitionDuration: '200ms',\r\n },\r\n\r\n // Alert variants using opacity for compatibility\r\n [`.${prefixClass('changerawr-alert-info')}`]: {\r\n backgroundColor: `color-mix(in srgb, ${mergedColors.info} 10%, transparent)`,\r\n borderColor: `color-mix(in srgb, ${mergedColors.info} 30%, transparent)`,\r\n color: mergedColors.info,\r\n },\r\n\r\n [`.${prefixClass('changerawr-alert-warning')}`]: {\r\n backgroundColor: `color-mix(in srgb, ${mergedColors.warning} 10%, transparent)`,\r\n borderColor: `color-mix(in srgb, ${mergedColors.warning} 30%, transparent)`,\r\n color: mergedColors.warning,\r\n },\r\n\r\n [`.${prefixClass('changerawr-alert-error')}`]: {\r\n backgroundColor: `color-mix(in srgb, ${mergedColors.error} 10%, transparent)`,\r\n borderColor: `color-mix(in srgb, ${mergedColors.error} 30%, transparent)`,\r\n color: mergedColors.error,\r\n },\r\n\r\n [`.${prefixClass('changerawr-alert-success')}`]: {\r\n backgroundColor: `color-mix(in srgb, ${mergedColors.success} 10%, transparent)`,\r\n borderColor: `color-mix(in srgb, ${mergedColors.success} 30%, transparent)`,\r\n color: mergedColors.success,\r\n },\r\n\r\n // Button base styles\r\n [`.${prefixClass('changerawr-button')}`]: {\r\n display: 'inline-flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n borderRadius: '0.5rem',\r\n fontWeight: '500',\r\n transitionProperty: 'all',\r\n transitionTimingFunction: 'cubic-bezier(0.4, 0, 0.2, 1)',\r\n transitionDuration: '150ms',\r\n border: '1px solid transparent',\r\n cursor: 'pointer',\r\n textDecoration: 'none',\r\n '&:focus': {\r\n outline: 'none',\r\n ringWidth: '2px',\r\n ringOffsetWidth: '2px',\r\n },\r\n '&:disabled': {\r\n opacity: '0.5',\r\n cursor: 'not-allowed',\r\n },\r\n },\r\n\r\n // Button variants\r\n [`.${prefixClass('changerawr-button-primary')}`]: {\r\n backgroundColor: mergedColors.primary,\r\n color: '#ffffff',\r\n '&:hover:not(:disabled)': {\r\n backgroundColor: `color-mix(in srgb, ${mergedColors.primary} 90%, black)`,\r\n },\r\n '&:focus': {\r\n ringColor: `color-mix(in srgb, ${mergedColors.primary} 50%, transparent)`,\r\n },\r\n },\r\n\r\n [`.${prefixClass('changerawr-button-secondary')}`]: {\r\n backgroundColor: mergedColors.secondary,\r\n color: '#ffffff',\r\n '&:hover:not(:disabled)': {\r\n backgroundColor: `color-mix(in srgb, ${mergedColors.secondary} 90%, black)`,\r\n },\r\n '&:focus': {\r\n ringColor: `color-mix(in srgb, ${mergedColors.secondary} 50%, transparent)`,\r\n },\r\n },\r\n\r\n [`.${prefixClass('changerawr-button-outline')}`]: {\r\n borderColor: mergedColors.primary,\r\n color: mergedColors.primary,\r\n '&:hover:not(:disabled)': {\r\n backgroundColor: `color-mix(in srgb, ${mergedColors.primary} 5%, transparent)`,\r\n },\r\n },\r\n\r\n [`.${prefixClass('changerawr-button-ghost')}`]: {\r\n color: mergedColors.secondary,\r\n '&:hover:not(:disabled)': {\r\n backgroundColor: `color-mix(in srgb, ${mergedColors.secondary} 10%, transparent)`,\r\n },\r\n },\r\n\r\n // Button sizes\r\n [`.${prefixClass('changerawr-button-sm')}`]: {\r\n paddingLeft: '0.75rem',\r\n paddingRight: '0.75rem',\r\n paddingTop: '0.375rem',\r\n paddingBottom: '0.375rem',\r\n fontSize: '0.875rem',\r\n },\r\n\r\n [`.${prefixClass('changerawr-button-md')}`]: {\r\n paddingLeft: '1rem',\r\n paddingRight: '1rem',\r\n paddingTop: '0.5rem',\r\n paddingBottom: '0.5rem',\r\n fontSize: '0.875rem',\r\n },\r\n\r\n [`.${prefixClass('changerawr-button-lg')}`]: {\r\n paddingLeft: '1.5rem',\r\n paddingRight: '1.5rem',\r\n paddingTop: '0.75rem',\r\n paddingBottom: '0.75rem',\r\n fontSize: '1rem',\r\n },\r\n\r\n // Embed styles\r\n [`.${prefixClass('changerawr-embed')}`]: {\r\n borderRadius: '0.5rem',\r\n border: '1px solid',\r\n borderColor: mergedColors.border,\r\n backgroundColor: '#ffffff',\r\n boxShadow: '0 1px 2px 0 rgb(0 0 0 / 0.05)',\r\n marginBottom: '1.5rem',\r\n overflow: 'hidden',\r\n },\r\n });\r\n }\r\n\r\n // Dark mode variants\r\n if (darkMode) {\r\n addUtilities({\r\n [`.dark .${prefixClass('changerawr-dark\\\\:bg-gray-800')}`]: { backgroundColor: '#1f2937' },\r\n [`.dark .${prefixClass('changerawr-dark\\\\:text-gray-100')}`]: { color: '#f3f4f6' },\r\n [`.dark .${prefixClass('changerawr-dark\\\\:text-gray-300')}`]: { color: '#d1d5db' },\r\n [`.dark .${prefixClass('changerawr-dark\\\\:border-gray-600')}`]: { borderColor: '#4b5563' },\r\n });\r\n }\r\n }\r\n);\r\n\r\n// CSS-only version for Tailwind v4\r\nexport const changerawrMarkdownCSS = (options: ChangerawrMarkdownPluginOptions = {}) => {\r\n const {\r\n prefix = '',\r\n colors = {},\r\n includeExtensions = true,\r\n } = options;\r\n\r\n const mergedColors = { ...defaultColors, ...colors };\r\n const prefixClass = (className: string) => (prefix ? `${prefix}-${className}` : className);\r\n\r\n return `\r\n/* Changerawr Markdown Styles */\r\n@layer utilities {\r\n /* Typography */\r\n .${prefixClass('changerawr-text-3xl')} { font-size: 1.875rem; line-height: 2.25rem; }\r\n .${prefixClass('changerawr-text-2xl')} { font-size: 1.5rem; line-height: 2rem; }\r\n .${prefixClass('changerawr-text-xl')} { font-size: 1.25rem; line-height: 1.75rem; }\r\n .${prefixClass('changerawr-text-lg')} { font-size: 1.125rem; line-height: 1.75rem; }\r\n .${prefixClass('changerawr-font-bold')} { font-weight: 700; }\r\n .${prefixClass('changerawr-font-semibold')} { font-weight: 600; }\r\n .${prefixClass('changerawr-font-medium')} { font-weight: 500; }\r\n .${prefixClass('changerawr-italic')} { font-style: italic; }\r\n .${prefixClass('changerawr-underline')} { text-decoration: underline; }\r\n \r\n /* Spacing */\r\n .${prefixClass('changerawr-mt-8')} { margin-top: 2rem; }\r\n .${prefixClass('changerawr-mt-6')} { margin-top: 1.5rem; }\r\n .${prefixClass('changerawr-mb-4')} { margin-bottom: 1rem; }\r\n .${prefixClass('changerawr-leading-7')} { line-height: 1.75rem; }\r\n \r\n /* Layout */\r\n .${prefixClass('changerawr-flex')} { display: flex; }\r\n .${prefixClass('changerawr-items-center')} { align-items: center; }\r\n .${prefixClass('changerawr-gap-2')} { gap: 0.5rem; }\r\n \r\n /* Colors */\r\n .${prefixClass('changerawr-text-primary')} { color: ${mergedColors.primary}; }\r\n .${prefixClass('changerawr-text-muted-foreground')} { color: ${mergedColors.muted}; }\r\n}\r\n\r\n${includeExtensions ? `\r\n@layer components {\r\n /* Alert Components */\r\n .${prefixClass('changerawr-alert')} {\r\n border-left-width: 4px;\r\n padding: 1rem;\r\n margin-bottom: 1rem;\r\n border-radius: 0.375rem;\r\n transition: color, background-color, border-color 200ms;\r\n }\r\n \r\n .${prefixClass('changerawr-alert-info')} {\r\n background-color: color-mix(in srgb, ${mergedColors.info} 10%, transparent);\r\n border-color: color-mix(in srgb, ${mergedColors.info} 30%, transparent);\r\n color: ${mergedColors.info};\r\n }\r\n \r\n .${prefixClass('changerawr-alert-warning')} {\r\n background-color: color-mix(in srgb, ${mergedColors.warning} 10%, transparent);\r\n border-color: color-mix(in srgb, ${mergedColors.warning} 30%, transparent);\r\n color: ${mergedColors.warning};\r\n }\r\n \r\n .${prefixClass('changerawr-alert-error')} {\r\n background-color: color-mix(in srgb, ${mergedColors.error} 10%, transparent);\r\n border-color: color-mix(in srgb, ${mergedColors.error} 30%, transparent);\r\n color: ${mergedColors.error};\r\n }\r\n \r\n .${prefixClass('changerawr-alert-success')} {\r\n background-color: color-mix(in srgb, ${mergedColors.success} 10%, transparent);\r\n border-color: color-mix(in srgb, ${mergedColors.success} 30%, transparent);\r\n color: ${mergedColors.success};\r\n }\r\n\r\n /* Button Components */\r\n .${prefixClass('changerawr-button')} {\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n border-radius: 0.5rem;\r\n font-weight: 500;\r\n transition: all 150ms;\r\n border: 1px solid transparent;\r\n cursor: pointer;\r\n text-decoration: none;\r\n }\r\n \r\n .${prefixClass('changerawr-button-primary')} {\r\n background-color: ${mergedColors.primary};\r\n color: white;\r\n }\r\n \r\n .${prefixClass('changerawr-button-primary')}:hover:not(:disabled) {\r\n background-color: color-mix(in srgb, ${mergedColors.primary} 90%, black);\r\n }\r\n \r\n .${prefixClass('changerawr-button-md')} {\r\n padding: 0.5rem 1rem;\r\n font-size: 0.875rem;\r\n }\r\n}\r\n` : ''}\r\n`;\r\n};\r\n\r\nexport default changerawrMarkdownPlugin;"],"mappings":"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","names":[]}
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":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@changerawr/markdown",
3
- "version": "1.1.0",
3
+ "version": "1.1.2",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -49,8 +49,9 @@
49
49
  "import": "./dist/standalone.mjs",
50
50
  "require": "./dist/standalone.js"
51
51
  },
52
- "./styles": "./dist/styles/index.css",
53
- "./styles/base": "./dist/styles/base.css"
52
+ "./css": "./dist/css/index.css",
53
+ "./css/core": "./dist/css/core.css",
54
+ "./package.json": "./package.json"
54
55
  },
55
56
  "files": [
56
57
  "dist",
@@ -59,6 +60,7 @@
59
60
  ],
60
61
  "scripts": {
61
62
  "build": "tsup",
63
+ "postbuild": "cpx 'src/css/**/*' dist/css",
62
64
  "dev": "tsup --watch",
63
65
  "test": "vitest",
64
66
  "test:watch": "vitest --watch",
@@ -100,6 +102,7 @@
100
102
  "@typescript-eslint/eslint-plugin": "^6.20.0",
101
103
  "@typescript-eslint/parser": "^6.20.0",
102
104
  "@vitest/coverage-v8": "^3.2.4",
105
+ "cpx2": "^8.0.0",
103
106
  "eslint": "^8.56.0",
104
107
  "jsdom": "^24.0.0",
105
108
  "react": "^18.2.0",
@@ -109,4 +112,4 @@
109
112
  "typescript": "^5.3.3",
110
113
  "vitest": "^3.2.4"
111
114
  }
112
- }
115
+ }