tailwind-styled-v4 5.0.0 → 5.0.1

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.
Files changed (177) hide show
  1. package/CHANGELOG.md +398 -0
  2. package/LICENSE +21 -0
  3. package/README.md +532 -0
  4. package/dist/analyzer.d.mts +114 -0
  5. package/dist/analyzer.d.ts +114 -0
  6. package/dist/analyzer.js +1555 -0
  7. package/dist/analyzer.js.map +1 -0
  8. package/dist/analyzer.mjs +1544 -0
  9. package/dist/analyzer.mjs.map +1 -0
  10. package/dist/{animate.d.cts → animate.d.mts} +3 -30
  11. package/dist/animate.d.ts +3 -30
  12. package/dist/animate.js +149 -99
  13. package/dist/animate.js.map +1 -1
  14. package/dist/{animate.cjs → animate.mjs} +130 -119
  15. package/dist/animate.mjs.map +1 -0
  16. package/dist/atomic.d.mts +18 -0
  17. package/dist/atomic.d.ts +18 -0
  18. package/dist/atomic.js +191 -0
  19. package/dist/atomic.js.map +1 -0
  20. package/dist/atomic.mjs +185 -0
  21. package/dist/atomic.mjs.map +1 -0
  22. package/dist/cli.d.mts +1 -0
  23. package/dist/cli.d.ts +1 -0
  24. package/dist/cli.js +6063 -0
  25. package/dist/cli.js.map +1 -0
  26. package/dist/cli.mjs +6053 -0
  27. package/dist/cli.mjs.map +1 -0
  28. package/dist/compiler.d.mts +1009 -0
  29. package/dist/compiler.d.ts +1009 -0
  30. package/dist/compiler.js +4518 -0
  31. package/dist/compiler.js.map +1 -0
  32. package/dist/compiler.mjs +4443 -0
  33. package/dist/compiler.mjs.map +1 -0
  34. package/dist/dashboard.d.mts +272 -0
  35. package/dist/dashboard.d.ts +272 -0
  36. package/dist/dashboard.js +249 -0
  37. package/dist/dashboard.js.map +1 -0
  38. package/dist/dashboard.mjs +239 -0
  39. package/dist/dashboard.mjs.map +1 -0
  40. package/dist/devtools.js +170 -157
  41. package/dist/devtools.js.map +1 -1
  42. package/dist/{devtools.cjs → devtools.mjs} +165 -166
  43. package/dist/devtools.mjs.map +1 -0
  44. package/dist/engine.d.mts +84 -0
  45. package/dist/engine.d.ts +84 -0
  46. package/dist/engine.js +3014 -0
  47. package/dist/engine.js.map +1 -0
  48. package/dist/engine.mjs +3005 -0
  49. package/dist/engine.mjs.map +1 -0
  50. package/dist/{index.d.cts → index.d.mts} +2 -2
  51. package/dist/index.d.ts +2 -2
  52. package/dist/index.js +945 -36
  53. package/dist/index.js.map +1 -1
  54. package/dist/{index.cjs → index.mjs} +899 -90
  55. package/dist/index.mjs.map +1 -0
  56. package/dist/liveTokenEngine-DYN3Zale.d.mts +34 -0
  57. package/dist/liveTokenEngine-DYN3Zale.d.ts +34 -0
  58. package/dist/{next.d.cts → next.d.mts} +2 -1
  59. package/dist/next.d.ts +2 -1
  60. package/dist/next.js +6853 -35
  61. package/dist/next.js.map +1 -1
  62. package/dist/next.mjs +7050 -0
  63. package/dist/next.mjs.map +1 -0
  64. package/dist/plugin.d.mts +90 -0
  65. package/dist/plugin.d.ts +90 -0
  66. package/dist/plugin.js +185 -0
  67. package/dist/plugin.js.map +1 -0
  68. package/dist/plugin.mjs +174 -0
  69. package/dist/plugin.mjs.map +1 -0
  70. package/dist/pluginRegistry.d.mts +83 -0
  71. package/dist/pluginRegistry.d.ts +83 -0
  72. package/dist/pluginRegistry.js +303 -0
  73. package/dist/pluginRegistry.js.map +1 -0
  74. package/dist/pluginRegistry.mjs +298 -0
  75. package/dist/pluginRegistry.mjs.map +1 -0
  76. package/dist/preset.js +9 -4
  77. package/dist/preset.js.map +1 -1
  78. package/dist/{preset.cjs → preset.mjs} +5 -14
  79. package/dist/preset.mjs.map +1 -0
  80. package/dist/rspack.d.mts +33 -0
  81. package/dist/rspack.d.ts +33 -0
  82. package/dist/rspack.js +55 -0
  83. package/dist/rspack.js.map +1 -0
  84. package/dist/rspack.mjs +45 -0
  85. package/dist/rspack.mjs.map +1 -0
  86. package/dist/runtime.d.mts +62 -0
  87. package/dist/runtime.d.ts +62 -0
  88. package/dist/runtime.js +207 -0
  89. package/dist/runtime.js.map +1 -0
  90. package/dist/runtime.mjs +188 -0
  91. package/dist/runtime.mjs.map +1 -0
  92. package/dist/runtimeCss.d.mts +65 -0
  93. package/dist/runtimeCss.d.ts +65 -0
  94. package/dist/{css.cjs → runtimeCss.js} +71 -4
  95. package/dist/runtimeCss.js.map +1 -0
  96. package/dist/{css.js → runtimeCss.mjs} +66 -5
  97. package/dist/runtimeCss.mjs.map +1 -0
  98. package/dist/scanner.d.mts +25 -0
  99. package/dist/scanner.d.ts +25 -0
  100. package/dist/scanner.js +717 -0
  101. package/dist/scanner.js.map +1 -0
  102. package/dist/scanner.mjs +703 -0
  103. package/dist/scanner.mjs.map +1 -0
  104. package/dist/shared.d.mts +85 -0
  105. package/dist/shared.d.ts +85 -0
  106. package/dist/shared.js +255 -0
  107. package/dist/shared.js.map +1 -0
  108. package/dist/shared.mjs +233 -0
  109. package/dist/shared.mjs.map +1 -0
  110. package/dist/storybookAddon.d.mts +108 -0
  111. package/dist/storybookAddon.d.ts +108 -0
  112. package/dist/storybookAddon.js +95 -0
  113. package/dist/storybookAddon.js.map +1 -0
  114. package/dist/storybookAddon.mjs +88 -0
  115. package/dist/storybookAddon.mjs.map +1 -0
  116. package/dist/svelte.d.mts +114 -0
  117. package/dist/svelte.d.ts +114 -0
  118. package/dist/svelte.js +67 -0
  119. package/dist/svelte.js.map +1 -0
  120. package/dist/svelte.mjs +59 -0
  121. package/dist/svelte.mjs.map +1 -0
  122. package/dist/testing.d.mts +185 -0
  123. package/dist/testing.d.ts +185 -0
  124. package/dist/testing.js +173 -0
  125. package/dist/testing.js.map +1 -0
  126. package/dist/testing.mjs +158 -0
  127. package/dist/testing.mjs.map +1 -0
  128. package/dist/theme.d.mts +188 -0
  129. package/dist/theme.d.ts +188 -0
  130. package/dist/theme.js +334 -0
  131. package/dist/theme.js.map +1 -0
  132. package/dist/theme.mjs +311 -0
  133. package/dist/theme.mjs.map +1 -0
  134. package/dist/types-DXr2PmGP.d.mts +31 -0
  135. package/dist/types-DXr2PmGP.d.ts +31 -0
  136. package/dist/vite.js +4181 -16
  137. package/dist/vite.js.map +1 -1
  138. package/dist/vite.mjs +4281 -0
  139. package/dist/vite.mjs.map +1 -0
  140. package/dist/vue.d.mts +89 -0
  141. package/dist/vue.d.ts +89 -0
  142. package/dist/vue.js +104 -0
  143. package/dist/vue.js.map +1 -0
  144. package/dist/vue.mjs +96 -0
  145. package/dist/vue.mjs.map +1 -0
  146. package/package.json +168 -65
  147. package/dist/animate.cjs.map +0 -1
  148. package/dist/chunk-VZEJV27B.js +0 -11
  149. package/dist/chunk-VZEJV27B.js.map +0 -1
  150. package/dist/chunk-Y5D3E72P.cjs +0 -13
  151. package/dist/chunk-Y5D3E72P.cjs.map +0 -1
  152. package/dist/css.cjs.map +0 -1
  153. package/dist/css.d.cts +0 -30
  154. package/dist/css.d.ts +0 -30
  155. package/dist/css.js.map +0 -1
  156. package/dist/devtools.cjs.map +0 -1
  157. package/dist/index.cjs.map +0 -1
  158. package/dist/next.cjs +0 -248
  159. package/dist/next.cjs.map +0 -1
  160. package/dist/preset.cjs.map +0 -1
  161. package/dist/turbopackLoader.cjs +0 -37
  162. package/dist/turbopackLoader.cjs.map +0 -1
  163. package/dist/turbopackLoader.d.cts +0 -12
  164. package/dist/turbopackLoader.d.ts +0 -12
  165. package/dist/turbopackLoader.js +0 -35
  166. package/dist/turbopackLoader.js.map +0 -1
  167. package/dist/vite.cjs +0 -138
  168. package/dist/vite.cjs.map +0 -1
  169. package/dist/webpackLoader.cjs +0 -51
  170. package/dist/webpackLoader.cjs.map +0 -1
  171. package/dist/webpackLoader.d.cts +0 -17
  172. package/dist/webpackLoader.d.ts +0 -17
  173. package/dist/webpackLoader.js +0 -49
  174. package/dist/webpackLoader.js.map +0 -1
  175. /package/dist/{devtools.d.cts → devtools.d.mts} +0 -0
  176. /package/dist/{preset.d.cts → preset.d.mts} +0 -0
  177. /package/dist/{vite.d.cts → vite.d.mts} +0 -0
package/dist/devtools.js CHANGED
@@ -1,7 +1,12 @@
1
- import './chunk-VZEJV27B.js';
2
- import React, { useState, useRef, useEffect, useCallback } from 'react';
1
+ 'use strict';
3
2
 
4
- /* tailwind-styled-v4 v4 | MIT | https://github.com/dictionar32/tailwind-styled-v4 */
3
+ var React = require('react');
4
+
5
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
6
+
7
+ var React__default = /*#__PURE__*/_interopDefault(React);
8
+
9
+ /* tailwind-styled-v4 v5.0.1 | MIT | https://github.com/dictionar32/tailwind-styled-v4 */
5
10
  function parseDataTw(dataTw) {
6
11
  if (!dataTw) return { name: "Unknown", classes: [] };
7
12
  const colonIdx = dataTw.indexOf(":");
@@ -68,53 +73,53 @@ function InspectorPanel({
68
73
  pinned: _pinned
69
74
  }) {
70
75
  if (!inspected) {
71
- return React.createElement(
76
+ return React__default.default.createElement(
72
77
  "div",
73
78
  { style: S.emptyPanel },
74
- React.createElement("span", { style: { opacity: 0.4 } }, "Hover an element to inspect")
79
+ React__default.default.createElement("span", { style: { opacity: 0.4 } }, "Hover an element to inspect")
75
80
  );
76
81
  }
77
- return React.createElement(
82
+ return React__default.default.createElement(
78
83
  "div",
79
84
  { style: S.scrollArea },
80
85
  // Variant props
81
- Object.keys(inspected.variantProps).length > 0 && React.createElement(
86
+ Object.keys(inspected.variantProps).length > 0 && React__default.default.createElement(
82
87
  "div",
83
88
  { style: S.section },
84
- React.createElement("div", { style: S.sectionTitle }, "Variants"),
89
+ React__default.default.createElement("div", { style: S.sectionTitle }, "Variants"),
85
90
  Object.entries(inspected.variantProps).map(
86
- ([k, v]) => React.createElement(
91
+ ([k, v]) => React__default.default.createElement(
87
92
  "div",
88
93
  { key: k, style: S.row },
89
- React.createElement("span", { style: S.varKey }, k),
90
- React.createElement("span", { style: S.varValue }, `"${v}"`)
94
+ React__default.default.createElement("span", { style: S.varKey }, k),
95
+ React__default.default.createElement("span", { style: S.varValue }, `"${v}"`)
91
96
  )
92
97
  )
93
98
  ),
94
99
  // Active states
95
- Object.keys(inspected.activeStates).length > 0 && React.createElement(
100
+ Object.keys(inspected.activeStates).length > 0 && React__default.default.createElement(
96
101
  "div",
97
102
  { style: S.section },
98
- React.createElement("div", { style: S.sectionTitle }, "Active Data Attrs"),
103
+ React__default.default.createElement("div", { style: S.sectionTitle }, "Active Data Attrs"),
99
104
  Object.entries(inspected.activeStates).map(
100
- ([k, v]) => React.createElement(
105
+ ([k, v]) => React__default.default.createElement(
101
106
  "div",
102
107
  { key: k, style: S.row },
103
- React.createElement("code", { style: { ...S.varKey, color: "#f59e0b" } }, `data-${k}`),
104
- React.createElement("span", { style: { ...S.varValue, color: "#34d399" } }, `"${v}"`)
108
+ React__default.default.createElement("code", { style: { ...S.varKey, color: "#f59e0b" } }, `data-${k}`),
109
+ React__default.default.createElement("span", { style: { ...S.varValue, color: "#34d399" } }, `"${v}"`)
105
110
  )
106
111
  )
107
112
  ),
108
113
  // State names
109
- inspected.stateNames.length > 0 && React.createElement(
114
+ inspected.stateNames.length > 0 && React__default.default.createElement(
110
115
  "div",
111
116
  { style: S.section },
112
- React.createElement("div", { style: S.sectionTitle }, "Reactive States"),
113
- React.createElement(
117
+ React__default.default.createElement("div", { style: S.sectionTitle }, "Reactive States"),
118
+ React__default.default.createElement(
114
119
  "div",
115
120
  { style: S.classGrid },
116
121
  inspected.stateNames.map(
117
- (s) => React.createElement(
122
+ (s) => React__default.default.createElement(
118
123
  "code",
119
124
  {
120
125
  key: s,
@@ -130,15 +135,15 @@ function InspectorPanel({
130
135
  )
131
136
  ),
132
137
  // Container breakpoints
133
- inspected.containerBps.length > 0 && React.createElement(
138
+ inspected.containerBps.length > 0 && React__default.default.createElement(
134
139
  "div",
135
140
  { style: S.section },
136
- React.createElement("div", { style: S.sectionTitle }, "Container Breakpoints"),
137
- React.createElement(
141
+ React__default.default.createElement("div", { style: S.sectionTitle }, "Container Breakpoints"),
142
+ React__default.default.createElement(
138
143
  "div",
139
144
  { style: S.classGrid },
140
145
  inspected.containerBps.map(
141
- (bp) => React.createElement(
146
+ (bp) => React__default.default.createElement(
142
147
  "code",
143
148
  { key: bp, style: { ...S.classChip, color: "#818cf8" } },
144
149
  bp
@@ -147,15 +152,15 @@ function InspectorPanel({
147
152
  )
148
153
  ),
149
154
  // Tailwind classes
150
- inspected.twClasses.length > 0 && React.createElement(
155
+ inspected.twClasses.length > 0 && React__default.default.createElement(
151
156
  "div",
152
157
  { style: S.section },
153
- React.createElement("div", { style: S.sectionTitle }, "Classes"),
154
- React.createElement(
158
+ React__default.default.createElement("div", { style: S.sectionTitle }, "Classes"),
159
+ React__default.default.createElement(
155
160
  "div",
156
161
  { style: S.classGrid },
157
162
  inspected.twClasses.map(
158
- (cls) => React.createElement(
163
+ (cls) => React__default.default.createElement(
159
164
  "code",
160
165
  { key: cls, style: S.classChip, title: inspected.atomicMap[cls] },
161
166
  cls
@@ -164,7 +169,7 @@ function InspectorPanel({
164
169
  )
165
170
  ),
166
171
  // Copy
167
- React.createElement(
172
+ React__default.default.createElement(
168
173
  "button",
169
174
  {
170
175
  style: S.copyBtn,
@@ -188,8 +193,8 @@ function InspectorPanel({
188
193
  );
189
194
  }
190
195
  function StatePanel() {
191
- const [entries, setEntries] = useState([]);
192
- useEffect(() => {
196
+ const [entries, setEntries] = React.useState([]);
197
+ React.useEffect(() => {
193
198
  const refresh = () => {
194
199
  const reg = window.__TW_STATE_REGISTRY__;
195
200
  setEntries(reg ? Array.from(reg.values()) : []);
@@ -199,54 +204,54 @@ function StatePanel() {
199
204
  return () => clearInterval(interval);
200
205
  }, []);
201
206
  if (entries.length === 0) {
202
- return React.createElement(
207
+ return React__default.default.createElement(
203
208
  "div",
204
209
  { style: S.emptyPanel },
205
- React.createElement(
210
+ React__default.default.createElement(
206
211
  "span",
207
212
  { style: { opacity: 0.4 } },
208
213
  "No state-enabled components found."
209
214
  ),
210
- React.createElement("br", null),
211
- React.createElement(
215
+ React__default.default.createElement("br", null),
216
+ React__default.default.createElement(
212
217
  "span",
213
218
  { style: { opacity: 0.3, fontSize: "11px" } },
214
219
  'Use tw.button({ state: { active: "..." } }) to register.'
215
220
  )
216
221
  );
217
222
  }
218
- return React.createElement(
223
+ return React__default.default.createElement(
219
224
  "div",
220
225
  { style: S.scrollArea },
221
226
  entries.map(
222
- (entry) => React.createElement(
227
+ (entry) => React__default.default.createElement(
223
228
  "div",
224
229
  { key: entry.id, style: S.section },
225
- React.createElement(
230
+ React__default.default.createElement(
226
231
  "div",
227
232
  { style: S.sectionTitle },
228
- React.createElement("span", { style: { color: "#60a5fa" } }, entry.tag.toUpperCase()),
229
- React.createElement(
233
+ React__default.default.createElement("span", { style: { color: "#60a5fa" } }, entry.tag.toUpperCase()),
234
+ React__default.default.createElement(
230
235
  "span",
231
236
  { style: { marginLeft: "8px", color: "#52525b", fontSize: "10px" } },
232
237
  entry.id
233
238
  )
234
239
  ),
235
- React.createElement(
240
+ React__default.default.createElement(
236
241
  "div",
237
242
  { style: S.classGrid },
238
243
  entry.states.map(
239
- (s) => React.createElement(
244
+ (s) => React__default.default.createElement(
240
245
  "code",
241
246
  { key: s, style: { ...S.classChip, color: "#f59e0b" } },
242
247
  `data-${s}`
243
248
  )
244
249
  )
245
250
  ),
246
- React.createElement(
251
+ React__default.default.createElement(
247
252
  "div",
248
253
  { style: { ...S.row, marginTop: "4px" } },
249
- React.createElement(
254
+ React__default.default.createElement(
250
255
  "span",
251
256
  {
252
257
  style: {
@@ -263,8 +268,8 @@ function StatePanel() {
263
268
  );
264
269
  }
265
270
  function ContainerPanel() {
266
- const [entries, setEntries] = useState([]);
267
- useEffect(() => {
271
+ const [entries, setEntries] = React.useState([]);
272
+ React.useEffect(() => {
268
273
  const refresh = () => {
269
274
  const reg = window.__TW_CONTAINER_REGISTRY__;
270
275
  setEntries(reg ? Array.from(reg.values()) : []);
@@ -274,57 +279,57 @@ function ContainerPanel() {
274
279
  return () => clearInterval(interval);
275
280
  }, []);
276
281
  if (entries.length === 0) {
277
- return React.createElement(
282
+ return React__default.default.createElement(
278
283
  "div",
279
284
  { style: S.emptyPanel },
280
- React.createElement(
285
+ React__default.default.createElement(
281
286
  "span",
282
287
  { style: { opacity: 0.4 } },
283
288
  "No container query components found."
284
289
  ),
285
- React.createElement("br", null),
286
- React.createElement(
290
+ React__default.default.createElement("br", null),
291
+ React__default.default.createElement(
287
292
  "span",
288
293
  { style: { opacity: 0.3, fontSize: "11px" } },
289
294
  'Use tw.div({ container: { md: "flex-row" } }) to register.'
290
295
  )
291
296
  );
292
297
  }
293
- return React.createElement(
298
+ return React__default.default.createElement(
294
299
  "div",
295
300
  { style: S.scrollArea },
296
301
  entries.map(
297
- (entry) => React.createElement(
302
+ (entry) => React__default.default.createElement(
298
303
  "div",
299
304
  { key: entry.id, style: S.section },
300
- React.createElement(
305
+ React__default.default.createElement(
301
306
  "div",
302
307
  { style: S.sectionTitle },
303
- React.createElement("span", { style: { color: "#60a5fa" } }, entry.tag.toUpperCase()),
304
- entry.containerName && React.createElement(
308
+ React__default.default.createElement("span", { style: { color: "#60a5fa" } }, entry.tag.toUpperCase()),
309
+ entry.containerName && React__default.default.createElement(
305
310
  "span",
306
311
  { style: { marginLeft: "6px", color: "#818cf8" } },
307
312
  `[${entry.containerName}]`
308
313
  ),
309
- React.createElement(
314
+ React__default.default.createElement(
310
315
  "span",
311
316
  { style: { marginLeft: "8px", color: "#52525b", fontSize: "10px" } },
312
317
  entry.id
313
318
  )
314
319
  ),
315
- React.createElement(
320
+ React__default.default.createElement(
316
321
  "div",
317
322
  null,
318
323
  entry.breakpoints.map(
319
- (bp, i) => React.createElement(
324
+ (bp, i) => React__default.default.createElement(
320
325
  "div",
321
326
  { key: i, style: { ...S.row, marginBottom: "2px" } },
322
- React.createElement(
327
+ React__default.default.createElement(
323
328
  "code",
324
329
  { style: { color: "#818cf8", fontSize: "11px" } },
325
330
  `\u2265 ${bp.minWidth}`
326
331
  ),
327
- React.createElement(
332
+ React__default.default.createElement(
328
333
  "span",
329
334
  { style: { color: "#6b7280", fontSize: "11px" } },
330
335
  bp.classes
@@ -337,8 +342,8 @@ function ContainerPanel() {
337
342
  );
338
343
  }
339
344
  function TokensPanel() {
340
- const [tokens, setTokens_] = useState({});
341
- useEffect(() => {
345
+ const [tokens, setTokens_] = React.useState({});
346
+ React.useEffect(() => {
342
347
  const engine = window.__TW_TOKEN_ENGINE__;
343
348
  if (!engine) return;
344
349
  setTokens_(engine.getTokens());
@@ -347,35 +352,35 @@ function TokensPanel() {
347
352
  }, []);
348
353
  const entries = Object.entries(tokens);
349
354
  if (entries.length === 0) {
350
- return React.createElement(
355
+ return React__default.default.createElement(
351
356
  "div",
352
357
  { style: S.emptyPanel },
353
- React.createElement("span", { style: { opacity: 0.4 } }, "No live tokens registered."),
354
- React.createElement("br", null),
355
- React.createElement(
358
+ React__default.default.createElement("span", { style: { opacity: 0.4 } }, "No live tokens registered."),
359
+ React__default.default.createElement("br", null),
360
+ React__default.default.createElement(
356
361
  "span",
357
362
  { style: { opacity: 0.3, fontSize: "11px" } },
358
363
  'Use liveToken({ primary: "#3b82f6" }) to register tokens.'
359
364
  )
360
365
  );
361
366
  }
362
- return React.createElement(
367
+ return React__default.default.createElement(
363
368
  "div",
364
369
  { style: S.scrollArea },
365
- React.createElement(
370
+ React__default.default.createElement(
366
371
  "div",
367
372
  { style: { ...S.sectionTitle, padding: "8px 12px 4px", color: "#52525b" } },
368
373
  "Click color to edit \xB7 Changes apply instantly"
369
374
  ),
370
375
  entries.map(([name, value]) => {
371
376
  const isColor = value.startsWith("#") || value.startsWith("rgb") || value.startsWith("hsl");
372
- return React.createElement(
377
+ return React__default.default.createElement(
373
378
  "div",
374
379
  { key: name, style: { ...S.row, padding: "6px 12px", borderBottom: "1px solid #18181b" } },
375
- React.createElement(
380
+ React__default.default.createElement(
376
381
  "div",
377
382
  { style: { display: "flex", alignItems: "center", gap: "8px" } },
378
- isColor && React.createElement("div", {
383
+ isColor && React__default.default.createElement("div", {
379
384
  style: {
380
385
  width: "16px",
381
386
  height: "16px",
@@ -385,9 +390,9 @@ function TokensPanel() {
385
390
  flexShrink: 0
386
391
  }
387
392
  }),
388
- React.createElement("span", { style: { color: "#a1a1aa", fontSize: "12px" } }, name)
393
+ React__default.default.createElement("span", { style: { color: "#a1a1aa", fontSize: "12px" } }, name)
389
394
  ),
390
- isColor ? React.createElement("input", {
395
+ isColor ? React__default.default.createElement("input", {
391
396
  type: "color",
392
397
  defaultValue: value.startsWith("#") ? value : "#000000",
393
398
  style: {
@@ -401,7 +406,7 @@ function TokensPanel() {
401
406
  const engine = window.__TW_TOKEN_ENGINE__;
402
407
  if (engine) engine.setToken(name, e.target.value);
403
408
  }
404
- }) : React.createElement("input", {
409
+ }) : React__default.default.createElement("input", {
405
410
  type: "text",
406
411
  defaultValue: value,
407
412
  style: {
@@ -424,16 +429,18 @@ function TokensPanel() {
424
429
  );
425
430
  }
426
431
  function AnalyzerPanel() {
427
- const [scanning, setScanning] = useState(false);
428
- const [results, setResults] = useState(null);
429
- const [engineMetrics, setEngineMetrics] = useState(null);
430
- const [metricsFetching, setMetricsFetching] = useState(false);
431
- const [metricsError, setMetricsError] = useState(null);
432
- const loadEngineMetrics = useCallback(async () => {
432
+ const [scanning, setScanning] = React.useState(false);
433
+ const [results, setResults] = React.useState(null);
434
+ const [engineMetrics, setEngineMetrics] = React.useState(null);
435
+ const [metricsFetching, setMetricsFetching] = React.useState(false);
436
+ const [metricsError, setMetricsError] = React.useState(null);
437
+ const loadEngineMetrics = React.useCallback(async () => {
433
438
  setMetricsFetching(true);
434
439
  setMetricsError(null);
435
440
  try {
436
- const res = await fetch("http://localhost:3000/metrics", { signal: AbortSignal.timeout(2e3) });
441
+ const res = await fetch("http://localhost:3000/metrics", {
442
+ signal: AbortSignal.timeout(2e3)
443
+ });
437
444
  if (!res.ok) throw new Error(`HTTP ${res.status}`);
438
445
  const data = await res.json();
439
446
  setEngineMetrics(data);
@@ -447,7 +454,7 @@ function AnalyzerPanel() {
447
454
  setMetricsFetching(false);
448
455
  }
449
456
  }, []);
450
- const runScan = useCallback(() => {
457
+ const runScan = React.useCallback(() => {
451
458
  setScanning(true);
452
459
  setTimeout(() => {
453
460
  const twEls = document.querySelectorAll("[data-tw]");
@@ -479,14 +486,14 @@ function AnalyzerPanel() {
479
486
  setScanning(false);
480
487
  }, 100);
481
488
  }, []);
482
- return React.createElement(
489
+ return React__default.default.createElement(
483
490
  "div",
484
491
  { style: S.scrollArea },
485
- React.createElement(
492
+ React__default.default.createElement(
486
493
  "div",
487
494
  { style: { padding: "10px 12px" } },
488
495
  // ── DOM Scan ──────────────────────────────────────────────────────────
489
- React.createElement(
496
+ React__default.default.createElement(
490
497
  "button",
491
498
  {
492
499
  style: { ...S.copyBtn, borderTop: "none", color: "#60a5fa", fontWeight: "600" },
@@ -496,58 +503,58 @@ function AnalyzerPanel() {
496
503
  scanning ? "Scanning DOM..." : "\u25B6 Run DOM Scan"
497
504
  ),
498
505
  // ── Engine Metrics (dari dashboard) ───────────────────────────────────
499
- React.createElement(
506
+ React__default.default.createElement(
500
507
  "div",
501
508
  { style: { ...S.section, marginTop: "8px" } },
502
- React.createElement(
509
+ React__default.default.createElement(
503
510
  "div",
504
511
  { style: { ...S.sectionTitle, marginBottom: "6px" } },
505
512
  "\u26A1 Engine Metrics"
506
513
  ),
507
- engineMetrics ? React.createElement(
514
+ engineMetrics ? React__default.default.createElement(
508
515
  "div",
509
516
  null,
510
- React.createElement(
517
+ React__default.default.createElement(
511
518
  "div",
512
519
  { style: S.row },
513
- React.createElement("span", { style: S.varKey }, "Build"),
514
- React.createElement(
520
+ React__default.default.createElement("span", { style: S.varKey }, "Build"),
521
+ React__default.default.createElement(
515
522
  "span",
516
523
  { style: { ...S.varValue, color: "#34d399" } },
517
524
  engineMetrics.buildMs != null ? `${engineMetrics.buildMs}ms` : "\u2014"
518
525
  )
519
526
  ),
520
- React.createElement(
527
+ React__default.default.createElement(
521
528
  "div",
522
529
  { style: S.row },
523
- React.createElement("span", { style: S.varKey }, "Classes"),
524
- React.createElement(
530
+ React__default.default.createElement("span", { style: S.varKey }, "Classes"),
531
+ React__default.default.createElement(
525
532
  "span",
526
533
  { style: { ...S.varValue, color: "#34d399" } },
527
534
  String(engineMetrics.classCount ?? "\u2014")
528
535
  )
529
536
  ),
530
- React.createElement(
537
+ React__default.default.createElement(
531
538
  "div",
532
539
  { style: S.row },
533
- React.createElement("span", { style: S.varKey }, "Files"),
534
- React.createElement(
540
+ React__default.default.createElement("span", { style: S.varKey }, "Files"),
541
+ React__default.default.createElement(
535
542
  "span",
536
543
  { style: { ...S.varValue, color: "#34d399" } },
537
544
  String(engineMetrics.fileCount ?? "\u2014")
538
545
  )
539
546
  ),
540
- React.createElement(
547
+ React__default.default.createElement(
541
548
  "div",
542
549
  { style: S.row },
543
- React.createElement("span", { style: S.varKey }, "Mode"),
544
- React.createElement(
550
+ React__default.default.createElement("span", { style: S.varKey }, "Mode"),
551
+ React__default.default.createElement(
545
552
  "span",
546
553
  { style: { color: "#a1a1aa", fontSize: "11px" } },
547
554
  String(engineMetrics.mode ?? "\u2014")
548
555
  )
549
556
  ),
550
- React.createElement(
557
+ React__default.default.createElement(
551
558
  "button",
552
559
  {
553
560
  style: {
@@ -562,15 +569,15 @@ function AnalyzerPanel() {
562
569
  },
563
570
  "\u21BB Refresh"
564
571
  )
565
- ) : metricsError ? React.createElement(
572
+ ) : metricsError ? React__default.default.createElement(
566
573
  "div",
567
574
  null,
568
- React.createElement(
575
+ React__default.default.createElement(
569
576
  "div",
570
577
  { style: { color: "#f87171", fontSize: "11px", marginBottom: "6px" } },
571
578
  metricsError
572
579
  ),
573
- React.createElement(
580
+ React__default.default.createElement(
574
581
  "button",
575
582
  {
576
583
  style: { ...S.copyBtn, borderTop: "none", color: "#34d399", fontWeight: "600" },
@@ -579,23 +586,28 @@ function AnalyzerPanel() {
579
586
  },
580
587
  metricsFetching ? "Connecting..." : "\u21BB Retry"
581
588
  )
582
- ) : React.createElement(
589
+ ) : React__default.default.createElement(
583
590
  "div",
584
591
  null,
585
- React.createElement(
592
+ React__default.default.createElement(
586
593
  "div",
587
594
  {
588
- style: { color: "#71717a", fontSize: "11px", lineHeight: 1.6, marginBottom: "6px" }
595
+ style: {
596
+ color: "#71717a",
597
+ fontSize: "11px",
598
+ lineHeight: 1.6,
599
+ marginBottom: "6px"
600
+ }
589
601
  },
590
602
  "Rust analyzer hanya tersedia via CLI atau dashboard.",
591
- React.createElement("br", null),
592
- React.createElement(
603
+ React__default.default.createElement("br", null),
604
+ React__default.default.createElement(
593
605
  "code",
594
606
  { style: { color: "#52525b", fontSize: "10px" } },
595
607
  "tw analyze . | tw dashboard"
596
608
  )
597
609
  ),
598
- React.createElement(
610
+ React__default.default.createElement(
599
611
  "button",
600
612
  {
601
613
  style: { ...S.copyBtn, borderTop: "none", color: "#34d399", fontWeight: "600" },
@@ -607,46 +619,46 @@ function AnalyzerPanel() {
607
619
  )
608
620
  ),
609
621
  // ── DOM Scan Results ──────────────────────────────────────────────────
610
- results && React.createElement(
622
+ results && React__default.default.createElement(
611
623
  "div",
612
624
  null,
613
- React.createElement(
625
+ React__default.default.createElement(
614
626
  "div",
615
627
  { style: S.section },
616
- React.createElement("div", { style: S.sectionTitle }, "Summary"),
617
- React.createElement(
628
+ React__default.default.createElement("div", { style: S.sectionTitle }, "Summary"),
629
+ React__default.default.createElement(
618
630
  "div",
619
631
  { style: S.row },
620
- React.createElement("span", { style: S.varKey }, "State components"),
621
- React.createElement("span", { style: S.varValue }, String(results.stateCount))
632
+ React__default.default.createElement("span", { style: S.varKey }, "State components"),
633
+ React__default.default.createElement("span", { style: S.varValue }, String(results.stateCount))
622
634
  ),
623
- React.createElement(
635
+ React__default.default.createElement(
624
636
  "div",
625
637
  { style: S.row },
626
- React.createElement("span", { style: S.varKey }, "Container components"),
627
- React.createElement("span", { style: S.varValue }, String(results.containerCount))
638
+ React__default.default.createElement("span", { style: S.varKey }, "Container components"),
639
+ React__default.default.createElement("span", { style: S.varValue }, String(results.containerCount))
628
640
  ),
629
- React.createElement(
641
+ React__default.default.createElement(
630
642
  "div",
631
643
  { style: S.row },
632
- React.createElement("span", { style: S.varKey }, "Live tokens"),
633
- React.createElement("span", { style: S.varValue }, String(results.tokenCount))
644
+ React__default.default.createElement("span", { style: S.varKey }, "Live tokens"),
645
+ React__default.default.createElement("span", { style: S.varValue }, String(results.tokenCount))
634
646
  )
635
647
  ),
636
- results.duplicates.length > 0 ? React.createElement(
648
+ results.duplicates.length > 0 ? React__default.default.createElement(
637
649
  "div",
638
650
  { style: S.section },
639
- React.createElement("div", { style: S.sectionTitle }, "Duplicate Class Sets"),
651
+ React__default.default.createElement("div", { style: S.sectionTitle }, "Duplicate Class Sets"),
640
652
  results.duplicates.map(
641
- (d, i) => React.createElement(
653
+ (d, i) => React__default.default.createElement(
642
654
  "div",
643
655
  { key: i, style: { marginBottom: "8px" } },
644
- React.createElement(
656
+ React__default.default.createElement(
645
657
  "div",
646
658
  { style: { color: "#f59e0b", fontSize: "11px", marginBottom: "2px" } },
647
659
  d.names.join(", ")
648
660
  ),
649
- React.createElement(
661
+ React__default.default.createElement(
650
662
  "code",
651
663
  {
652
664
  style: {
@@ -659,10 +671,10 @@ function AnalyzerPanel() {
659
671
  )
660
672
  )
661
673
  )
662
- ) : React.createElement(
674
+ ) : React__default.default.createElement(
663
675
  "div",
664
676
  { style: S.section },
665
- React.createElement(
677
+ React__default.default.createElement(
666
678
  "span",
667
679
  { style: { color: "#34d399", fontSize: "12px" } },
668
680
  "\u2713 No duplicate class sets in current DOM"
@@ -674,16 +686,16 @@ function AnalyzerPanel() {
674
686
  }
675
687
  function TwDevTools() {
676
688
  if (process.env.NODE_ENV === "production") return null;
677
- const [state, setState] = useState({
689
+ const [state, setState] = React.useState({
678
690
  open: false,
679
691
  panel: "inspector",
680
692
  pinned: false,
681
693
  inspected: null,
682
694
  position: { x: 0, y: 0 }
683
695
  });
684
- const overlayRef = useRef(null);
696
+ const overlayRef = React.useRef(null);
685
697
  const isInspecting = state.open && state.panel === "inspector";
686
- useEffect(() => {
698
+ React.useEffect(() => {
687
699
  const onKey = (e) => {
688
700
  if (e.ctrlKey && e.shiftKey && e.key === "D") {
689
701
  e.preventDefault();
@@ -700,7 +712,7 @@ function TwDevTools() {
700
712
  window.addEventListener("keydown", onKey);
701
713
  return () => window.removeEventListener("keydown", onKey);
702
714
  }, []);
703
- const onMouseMove = useCallback(
715
+ const onMouseMove = React.useCallback(
704
716
  (e) => {
705
717
  if (!isInspecting || state.pinned) return;
706
718
  const twEl = findNearestTwElement(e.target);
@@ -728,7 +740,7 @@ function TwDevTools() {
728
740
  },
729
741
  [isInspecting, state.pinned]
730
742
  );
731
- const onClick = useCallback(
743
+ const onClick = React.useCallback(
732
744
  (e) => {
733
745
  if (!isInspecting) return;
734
746
  if (overlayRef.current?.contains(e.target)) return;
@@ -736,7 +748,7 @@ function TwDevTools() {
736
748
  },
737
749
  [isInspecting]
738
750
  );
739
- useEffect(() => {
751
+ React.useEffect(() => {
740
752
  if (!isInspecting) return;
741
753
  window.addEventListener("mousemove", onMouseMove);
742
754
  window.addEventListener("click", onClick);
@@ -746,7 +758,7 @@ function TwDevTools() {
746
758
  };
747
759
  }, [isInspecting, onMouseMove, onClick]);
748
760
  if (!state.open) {
749
- return React.createElement(
761
+ return React__default.default.createElement(
750
762
  "button",
751
763
  {
752
764
  onClick: () => setState((s) => ({ ...s, open: true })),
@@ -763,11 +775,11 @@ function TwDevTools() {
763
775
  { id: "tokens", label: "Tokens", icon: "\u{1F3A8}" },
764
776
  { id: "analyzer", label: "Analyzer", icon: "\u{1F4CA}" }
765
777
  ];
766
- return React.createElement(
778
+ return React__default.default.createElement(
767
779
  "div",
768
780
  { style: S.root },
769
781
  // ── Element highlight (inspector only) ──────────────────────────────
770
- isInspecting && state.inspected && React.createElement("div", {
782
+ isInspecting && state.inspected && React__default.default.createElement("div", {
771
783
  style: {
772
784
  ...S.highlight,
773
785
  top: state.inspected.rect.top + window.scrollY,
@@ -777,7 +789,7 @@ function TwDevTools() {
777
789
  }
778
790
  }),
779
791
  // ── Component name label ────────────────────────────────────────────
780
- isInspecting && state.inspected && React.createElement(
792
+ isInspecting && state.inspected && React__default.default.createElement(
781
793
  "div",
782
794
  {
783
795
  style: {
@@ -797,7 +809,7 @@ function TwDevTools() {
797
809
  state.inspected.componentName
798
810
  ),
799
811
  // ── Main DevTools panel ─────────────────────────────────────────────
800
- React.createElement(
812
+ React__default.default.createElement(
801
813
  "div",
802
814
  {
803
815
  ref: overlayRef,
@@ -814,19 +826,19 @@ function TwDevTools() {
814
826
  }
815
827
  },
816
828
  // Header
817
- React.createElement(
829
+ React__default.default.createElement(
818
830
  "div",
819
831
  { style: S.header },
820
- React.createElement(
832
+ React__default.default.createElement(
821
833
  "span",
822
834
  { style: S.componentName },
823
835
  state.inspected && state.panel === "inspector" ? state.inspected.componentName : "tailwind-styled-v4"
824
836
  ),
825
- React.createElement(
837
+ React__default.default.createElement(
826
838
  "div",
827
839
  { style: S.headerActions },
828
- state.pinned && React.createElement("span", { style: S.pinBadge }, "\u{1F4CC}"),
829
- React.createElement(
840
+ state.pinned && React__default.default.createElement("span", { style: S.pinBadge }, "\u{1F4CC}"),
841
+ React__default.default.createElement(
830
842
  "button",
831
843
  {
832
844
  style: S.closeBtn,
@@ -837,11 +849,11 @@ function TwDevTools() {
837
849
  )
838
850
  ),
839
851
  // Tab bar
840
- React.createElement(
852
+ React__default.default.createElement(
841
853
  "div",
842
854
  { style: S.tabBar },
843
855
  PANELS.map(
844
- (p) => React.createElement(
856
+ (p) => React__default.default.createElement(
845
857
  "button",
846
858
  {
847
859
  key: p.id,
@@ -859,22 +871,22 @@ function TwDevTools() {
859
871
  )
860
872
  ),
861
873
  // Panel content
862
- state.panel === "inspector" && React.createElement(InspectorPanel, {
874
+ state.panel === "inspector" && React__default.default.createElement(InspectorPanel, {
863
875
  inspected: state.inspected,
864
876
  position: state.position,
865
877
  pinned: state.pinned
866
878
  }),
867
- state.panel === "state" && React.createElement(StatePanel, null),
868
- state.panel === "container" && React.createElement(ContainerPanel, null),
869
- state.panel === "tokens" && React.createElement(TokensPanel, null),
870
- state.panel === "analyzer" && React.createElement(AnalyzerPanel, null)
879
+ state.panel === "state" && React__default.default.createElement(StatePanel, null),
880
+ state.panel === "container" && React__default.default.createElement(ContainerPanel, null),
881
+ state.panel === "tokens" && React__default.default.createElement(TokensPanel, null),
882
+ state.panel === "analyzer" && React__default.default.createElement(AnalyzerPanel, null)
871
883
  ),
872
884
  // ── Status bar ──────────────────────────────────────────────────────
873
- React.createElement(
885
+ React__default.default.createElement(
874
886
  "div",
875
887
  { style: S.statusBar },
876
- React.createElement("span", null, "\u{1F3A8} tailwind-styled-v4 DevTools"),
877
- React.createElement(
888
+ React__default.default.createElement("span", null, "\u{1F3A8} tailwind-styled-v4 DevTools"),
889
+ React__default.default.createElement(
878
890
  "span",
879
891
  { style: { opacity: 0.6, fontSize: "10px" } },
880
892
  state.pinned ? "Click to unpin" : isInspecting ? "Hover to inspect \xB7 Click to pin \xB7 1-5 switch panel \xB7 Esc close" : "Ctrl+Shift+D close \xB7 1-5 switch panel"
@@ -1056,9 +1068,10 @@ var S = {
1056
1068
  };
1057
1069
  function DevToolsProvider() {
1058
1070
  if (process.env.NODE_ENV === "production") return null;
1059
- return React.createElement(TwDevTools);
1071
+ return React__default.default.createElement(TwDevTools);
1060
1072
  }
1061
1073
 
1062
- export { DevToolsProvider, TwDevTools };
1074
+ exports.DevToolsProvider = DevToolsProvider;
1075
+ exports.TwDevTools = TwDevTools;
1063
1076
  //# sourceMappingURL=devtools.js.map
1064
1077
  //# sourceMappingURL=devtools.js.map