@stacksjs/stx 0.2.95 → 0.2.96

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 (612) hide show
  1. package/dist/a11y.js +598 -2
  2. package/dist/analytics.js +159 -2
  3. package/dist/analyzer.js +240 -2
  4. package/dist/animation.js +688 -2
  5. package/dist/app-shell.js +220 -2
  6. package/dist/app.js +79 -2
  7. package/dist/assets.js +155 -2
  8. package/dist/ast.js +630 -2
  9. package/dist/async-components.js +428 -2
  10. package/dist/auth.js +12 -2
  11. package/dist/broadcasting.js +102 -2
  12. package/dist/browser-composables.js +565 -2
  13. package/dist/build-assets.js +29 -2
  14. package/dist/build-mode-detector.js +50 -2
  15. package/dist/build-optimizer.js +433 -2
  16. package/dist/build-views.js +180 -2
  17. package/dist/build.js +33 -2
  18. package/dist/builtins/drawer.js +37 -2
  19. package/dist/builtins/escape.js +3 -2
  20. package/dist/builtins/icon.js +83 -2
  21. package/dist/builtins/index.js +34 -2
  22. package/dist/builtins/modal.js +38 -2
  23. package/dist/builtins/safe-image.js +51 -2
  24. package/dist/builtins/stx-image.js +200 -2
  25. package/dist/builtins/stx-link.js +41 -2
  26. package/dist/builtins/stx-loading-indicator.js +35 -2
  27. package/dist/builtins/suspense.js +24 -2
  28. package/dist/builtins/toast.js +42 -2
  29. package/dist/builtins/tooltip.js +106 -2
  30. package/dist/builtins/transition-group.js +22 -2
  31. package/dist/bundle-analyzer/collector.js +233 -2
  32. package/dist/bundle-analyzer/index.js +82 -2
  33. package/dist/bundle-analyzer/report.js +318 -2
  34. package/dist/bundle-analyzer/treemap.js +594 -2
  35. package/dist/caching.js +131 -2
  36. package/dist/cli.js +11317 -10982
  37. package/dist/client/directive.js +14 -2
  38. package/dist/client/index.js +2 -2
  39. package/dist/client-helpers.js +312 -2
  40. package/dist/client-script-bundler.js +216 -6
  41. package/dist/client-script.js +754 -2
  42. package/dist/client.js +73 -4
  43. package/dist/component-hmr.js +585 -2
  44. package/dist/component-library.d.ts +6 -0
  45. package/dist/component-library.js +683 -0
  46. package/dist/component-processing.js +613 -2
  47. package/dist/component-registry.js +90 -2
  48. package/dist/component-renderer.js +660 -2
  49. package/dist/components.js +213 -2
  50. package/dist/composables/index.js +220 -2
  51. package/dist/composables/use-battery.js +101 -2
  52. package/dist/composables/use-broadcast-channel.js +80 -2
  53. package/dist/composables/use-channel.js +124 -2
  54. package/dist/composables/use-clipboard.js +79 -2
  55. package/dist/composables/use-color-mode.js +131 -2
  56. package/dist/composables/use-cookie.js +86 -2
  57. package/dist/composables/use-device-orientation.js +181 -2
  58. package/dist/composables/use-event-listener.js +27 -2
  59. package/dist/composables/use-event-source.js +166 -2
  60. package/dist/composables/use-eye-dropper.js +142 -2
  61. package/dist/composables/use-fetch.js +223 -2
  62. package/dist/composables/use-fullscreen.js +110 -2
  63. package/dist/composables/use-geolocation.js +101 -2
  64. package/dist/composables/use-idle.js +182 -2
  65. package/dist/composables/use-intersection-observer.js +168 -2
  66. package/dist/composables/use-keyboard.js +224 -2
  67. package/dist/composables/use-media-query.js +62 -2
  68. package/dist/composables/use-meta.js +48 -2
  69. package/dist/composables/use-mouse.js +286 -2
  70. package/dist/composables/use-mutation-observer.js +129 -2
  71. package/dist/composables/use-network.js +85 -2
  72. package/dist/composables/use-notification.js +94 -2
  73. package/dist/composables/use-permissions.js +132 -2
  74. package/dist/composables/use-query.js +0 -1
  75. package/dist/composables/use-resize-observer.js +157 -2
  76. package/dist/composables/use-router.js +51 -2
  77. package/dist/composables/use-share.js +104 -2
  78. package/dist/composables/use-speech.js +294 -2
  79. package/dist/composables/use-storage.js +130 -2
  80. package/dist/composables/use-text-selection.js +205 -4
  81. package/dist/composables/use-timer.js +183 -2
  82. package/dist/composables/use-utilities.js +176 -2
  83. package/dist/composables/use-wake-lock.js +122 -2
  84. package/dist/composables/use-websocket.js +165 -2
  85. package/dist/composables/use-window.js +163 -2
  86. package/dist/composables.js +552 -2
  87. package/dist/composition-api.js +190 -2
  88. package/dist/computed.js +376 -8
  89. package/dist/conditionals.js +599 -2
  90. package/dist/config.js +751 -2
  91. package/dist/craft-bridge.js +432 -2
  92. package/dist/craft-compiler.js +810 -2
  93. package/dist/craft-components.js +945 -2
  94. package/dist/craft-entry.js +5 -2
  95. package/dist/craft-ssr.js +559 -2
  96. package/dist/csp.js +220 -2
  97. package/dist/csrf.js +38 -2
  98. package/dist/custom-directives.js +136 -2
  99. package/dist/defer.js +156 -2
  100. package/dist/deploy/config-generators.js +214 -2
  101. package/dist/deploy/index.js +203 -2
  102. package/dist/deploy/netlify.js +167 -2
  103. package/dist/dev-server/crosswind.js +379 -2
  104. package/dist/dev-server/index.js +7 -2
  105. package/dist/dev-server/keyboard-shortcuts.js +81 -2
  106. package/dist/dev-server/native-window.js +91 -2
  107. package/dist/dev-server/port-utils.js +40 -2
  108. package/dist/dev-server/serve-app.js +682 -2
  109. package/dist/dev-server/serve-file.js +439 -2
  110. package/dist/dev-server/serve-markdown.js +281 -2
  111. package/dist/dev-server/serve-multi.js +579 -2
  112. package/dist/dev-server/terminal-colors.js +45 -2
  113. package/dist/dev-server/theme-selector.js +111 -2
  114. package/dist/dev-server/types.js +43 -2
  115. package/dist/dev-server.js +4 -2
  116. package/dist/devtools.js +462 -18
  117. package/dist/directive-api.js +355 -2
  118. package/dist/docs.js +567 -2
  119. package/dist/doctor.js +123 -2
  120. package/dist/document-shell.js +105 -2
  121. package/dist/dynamic-components.js +78 -2
  122. package/dist/edge-runtime.js +539 -2
  123. package/dist/env.js +9 -2
  124. package/dist/error-boundaries.js +62 -12
  125. package/dist/error-handling.js +1 -2
  126. package/dist/errors/codes.js +97 -2
  127. package/dist/errors/formatter.js +196 -2
  128. package/dist/errors/index.js +44 -2
  129. package/dist/errors/logger.js +250 -2
  130. package/dist/errors/sanitizer.js +181 -2
  131. package/dist/errors/types.js +86 -2
  132. package/dist/events.js +382 -2
  133. package/dist/expressions.js +650 -2
  134. package/dist/formatter.js +265 -2
  135. package/dist/forms-validation.js +510 -4
  136. package/dist/forms.js +709 -2
  137. package/dist/head.js +224 -2
  138. package/dist/heatmap.js +566 -2
  139. package/dist/hot-reload.js +367 -2
  140. package/dist/html-masking.js +73 -2
  141. package/dist/hydration-runtime.js +195 -2
  142. package/dist/hydration.js +654 -2
  143. package/dist/i18n.js +633 -2
  144. package/dist/image-optimization/auto-sibling.js +88 -2
  145. package/dist/image-optimization/build-plugin.js +241 -2
  146. package/dist/image-optimization/component.js +244 -2
  147. package/dist/image-optimization/directive.js +203 -2
  148. package/dist/image-optimization/index.js +54 -2
  149. package/dist/image-optimization/processor.js +262 -2
  150. package/dist/image-optimization/serve.js +102 -2
  151. package/dist/includes.js +733 -2
  152. package/dist/index.d.ts +1 -0
  153. package/dist/index.js +134 -2
  154. package/dist/init.js +505 -2
  155. package/dist/inline-assets.js +82 -2
  156. package/dist/interactive.js +383 -2
  157. package/dist/internal-markdown.js +141 -2
  158. package/dist/island-chunking.js +52 -2
  159. package/dist/js-ts.js +57 -2
  160. package/dist/jsx-runtime.js +289 -2
  161. package/dist/keep-alive.js +421 -2
  162. package/dist/lazy-loader.js +245 -2
  163. package/dist/loading-indicator.js +322 -2
  164. package/dist/loops.js +643 -2
  165. package/dist/manifest.js +31 -2
  166. package/dist/markdown.js +68 -2
  167. package/dist/media/client/blur-up.js +217 -2
  168. package/dist/media/client/index.js +53 -2
  169. package/dist/media/client/lazy-load.js +283 -2
  170. package/dist/media/client/upload-handler.js +354 -2
  171. package/dist/media/image/component.js +574 -2
  172. package/dist/media/image/directive.js +160 -2
  173. package/dist/media/image/editing.js +193 -2
  174. package/dist/media/image/index.js +80 -2
  175. package/dist/media/image/placeholder.js +188 -2
  176. package/dist/media/image/processor/cache.js +51 -2
  177. package/dist/media/image/processor/index.js +3 -2
  178. package/dist/media/image/processor/optimizer.js +202 -2
  179. package/dist/media/image/processor/responsive.js +162 -2
  180. package/dist/media/image/srcset.js +194 -2
  181. package/dist/media/index.js +198 -2
  182. package/dist/media/manager/embed.js +253 -2
  183. package/dist/media/protected/component.js +235 -2
  184. package/dist/media/protected/index.js +20 -2
  185. package/dist/media/protected/signature.js +205 -2
  186. package/dist/media/shared/cache.js +132 -2
  187. package/dist/media/shared/hash.js +35 -2
  188. package/dist/media/shared/index.js +2 -2
  189. package/dist/media/types.js +0 -1
  190. package/dist/media/upload/component.js +320 -2
  191. package/dist/media/upload/index.js +1 -2
  192. package/dist/media/video/directive.js +142 -2
  193. package/dist/media/video/index.js +583 -2
  194. package/dist/media/video/processor/cache.js +52 -2
  195. package/dist/media/video/processor/index.js +4 -2
  196. package/dist/media/video/processor/streaming.js +197 -2
  197. package/dist/media/video/processor/thumbnail.js +134 -2
  198. package/dist/media/video/processor/transcoder.js +283 -2
  199. package/dist/method-spoofing.js +17 -2
  200. package/dist/middleware.js +40 -2
  201. package/dist/misc-directives.js +222 -2
  202. package/dist/native-build.js +511 -2
  203. package/dist/parser/directive-parser.js +239 -2
  204. package/dist/parser/expression-parser.js +358 -2
  205. package/dist/parser/index.js +23 -2
  206. package/dist/parser/tokenizer.js +534 -2
  207. package/dist/partial-hydration.js +427 -2
  208. package/dist/performance-utils.js +430 -2
  209. package/dist/placeholder.js +35 -2
  210. package/dist/plugin-system.js +214 -2
  211. package/dist/plugin.js +173 -2
  212. package/dist/precompiler.js +660 -81
  213. package/dist/process.js +711 -2
  214. package/dist/production-build.js +596 -2
  215. package/dist/production-builder.js +132 -2
  216. package/dist/production-server.js +188 -2
  217. package/dist/props.js +224 -2
  218. package/dist/public-env.js +19 -2
  219. package/dist/pwa/audit.js +255 -2
  220. package/dist/pwa/directives.js +332 -2
  221. package/dist/pwa/icons.js +109 -2
  222. package/dist/pwa/index.js +47 -2
  223. package/dist/pwa/inject.js +102 -2
  224. package/dist/pwa/manifest.js +186 -2
  225. package/dist/pwa/offline.js +259 -2
  226. package/dist/pwa/precache.js +116 -2
  227. package/dist/pwa/service-worker.js +860 -2
  228. package/dist/pwa/workbox-strategies.js +167 -2
  229. package/dist/pwa/workbox.js +382 -2
  230. package/dist/pwa.js +427 -427
  231. package/dist/reactive-bindings.js +266 -2
  232. package/dist/reactive.js +569 -2
  233. package/dist/reactivity.js +559 -2
  234. package/dist/release.js +1 -2
  235. package/dist/render.js +165 -2
  236. package/dist/route-middleware.js +17 -2
  237. package/dist/router.js +9 -2
  238. package/dist/routes.js +14 -2
  239. package/dist/runtime-injection.js +120 -2
  240. package/dist/runtime.js +94 -2
  241. package/dist/safe-evaluator.js +444 -2
  242. package/dist/scaffolding.js +897 -2
  243. package/dist/screenshot.js +87 -2
  244. package/dist/script-classifier.js +32 -2
  245. package/dist/script-validation.js +158 -2
  246. package/dist/seo.js +457 -2
  247. package/dist/serve.js +237 -2
  248. package/dist/server-bindings.js +108 -2
  249. package/dist/server-components.js +338 -11
  250. package/dist/signal-processing.js +946 -2
  251. package/dist/signals-api.js +154 -2
  252. package/dist/signals.js +5287 -2
  253. package/dist/site-builder/build.js +224 -2
  254. package/dist/site-builder/i18n.js +140 -2
  255. package/dist/site-builder/index.js +15 -2
  256. package/dist/site-builder/robots.js +26 -2
  257. package/dist/site-builder/router.js +27 -2
  258. package/dist/site-builder/seo.js +36 -2
  259. package/dist/site-builder/sitemap.js +26 -2
  260. package/dist/site-builder/theme.js +33 -2
  261. package/dist/site-builder/types.js +0 -1
  262. package/dist/slots.js +201 -2
  263. package/dist/source-maps.js +350 -2
  264. package/dist/spa-shell.js +34 -2
  265. package/dist/ssg.js +389 -389
  266. package/dist/ssr.js +355 -2
  267. package/dist/state-management.js +533 -2
  268. package/dist/store-imports.js +13 -2
  269. package/dist/store-loader.js +72 -5
  270. package/dist/stores-client.js +132 -2
  271. package/dist/story/addons.js +261 -2
  272. package/dist/story/analytics.js +235 -2
  273. package/dist/story/auto-stories.js +158 -2
  274. package/dist/story/bookmarks.js +277 -2
  275. package/dist/story/bun-test.js +102 -2
  276. package/dist/story/cli.js +155 -2
  277. package/dist/story/collect/analyzer.js +305 -2
  278. package/dist/story/collect/index.js +27 -2
  279. package/dist/story/collect/parser.js +129 -2
  280. package/dist/story/collect/scanner.js +101 -2
  281. package/dist/story/collect/tree.js +110 -2
  282. package/dist/story/commands/build.js +172 -2
  283. package/dist/story/commands/dev.js +78 -2
  284. package/dist/story/commands/index.js +3 -2
  285. package/dist/story/commands/preview.js +56 -2
  286. package/dist/story/compiled-output.js +151 -2
  287. package/dist/story/composition.js +261 -2
  288. package/dist/story/config-watcher.js +67 -2
  289. package/dist/story/config.js +64 -2
  290. package/dist/story/context.js +27 -2
  291. package/dist/story/controls/index.js +320 -2
  292. package/dist/story/crosswind.js +189 -2
  293. package/dist/story/desktop-preview.js +105 -2
  294. package/dist/story/docs-generator.js +186 -2
  295. package/dist/story/errors.js +239 -2
  296. package/dist/story/figma-export.js +224 -2
  297. package/dist/story/generator.js +165 -2
  298. package/dist/story/hmr.js +131 -2
  299. package/dist/story/hot-swap.js +207 -2
  300. package/dist/story/index.js +49 -2
  301. package/dist/story/interactions.js +225 -2
  302. package/dist/story/keyboard-shortcuts.js +345 -2
  303. package/dist/story/output.js +153 -2
  304. package/dist/story/performance.js +252 -2
  305. package/dist/story/presets.js +289 -2
  306. package/dist/story/props-validation.js +215 -2
  307. package/dist/story/renderer.js +209 -2
  308. package/dist/story/search-index.js +106 -2
  309. package/dist/story/search.js +140 -2
  310. package/dist/story/server.js +965 -2
  311. package/dist/story/setup.js +78 -2
  312. package/dist/story/snapshots.js +170 -2
  313. package/dist/story/testing.js +163 -2
  314. package/dist/story/theme.js +170 -2
  315. package/dist/story/types.js +0 -2
  316. package/dist/story/ui/code-panel.js +175 -2
  317. package/dist/story/ui/controls-panel.js +168 -2
  318. package/dist/story/ui/index.js +4 -2
  319. package/dist/story/ui/navigation.js +250 -2
  320. package/dist/story/ui/preview.js +251 -2
  321. package/dist/story/visual-testing.js +247 -2
  322. package/dist/streaming.js +537 -2
  323. package/dist/strict-lint.js +288 -2
  324. package/dist/style-scoping.js +50 -2
  325. package/dist/suspense.js +398 -2
  326. package/dist/teleport.js +109 -2
  327. package/dist/template-compiler.js +63 -2
  328. package/dist/template-hydrator.js +82 -2
  329. package/dist/template-tag-balance.js +93 -2
  330. package/dist/testing.js +581 -2
  331. package/dist/transitions.js +443 -2
  332. package/dist/type-checker.js +581 -2
  333. package/dist/types/component-types.d.ts +54 -0
  334. package/dist/types/component-types.js +0 -1
  335. package/dist/types/config-types.js +0 -1
  336. package/dist/types/context-types.js +0 -1
  337. package/dist/types/csp-types.js +0 -1
  338. package/dist/types/directive-types.js +3 -2
  339. package/dist/types/index.d.ts +5 -0
  340. package/dist/types/index.js +1 -2
  341. package/dist/types/pwa-types.js +0 -1
  342. package/dist/types.js +1 -2
  343. package/dist/typescript-templates.js +386 -4
  344. package/dist/utils.js +942 -2
  345. package/dist/validator.js +171 -2
  346. package/dist/variable-extractor.js +1094 -2
  347. package/dist/view-composers.js +29 -2
  348. package/dist/virtual-scrolling.js +454 -2
  349. package/dist/visual-editor.js +688 -28
  350. package/dist/vue-template.js +475 -2
  351. package/dist/web-components/css-scoping.js +177 -2
  352. package/dist/web-components/index.js +13 -2
  353. package/dist/web-components/reactive-generator.js +121 -56
  354. package/dist/web-components.js +1447 -2
  355. package/dist/x-element.js +17 -5
  356. package/package.json +5 -6
  357. package/dist/chunk-04n64bnt.js +0 -5
  358. package/dist/chunk-06w68hyg.js +0 -7
  359. package/dist/chunk-07y6m5xx.js +0 -3
  360. package/dist/chunk-095s3972.js +0 -99
  361. package/dist/chunk-09k66d8a.js +0 -3
  362. package/dist/chunk-0a61y94n.js +0 -24
  363. package/dist/chunk-0b9w2w1y.js +0 -1
  364. package/dist/chunk-0dx4q6yq.js +0 -3
  365. package/dist/chunk-0dz85jrp.js +0 -3
  366. package/dist/chunk-0jd0pndq.js +0 -3
  367. package/dist/chunk-0p0nyq50.js +0 -6
  368. package/dist/chunk-0p1h3p3w.js +0 -3
  369. package/dist/chunk-0qakwen3.js +0 -1
  370. package/dist/chunk-0qnz93q2.js +0 -3
  371. package/dist/chunk-10debkj5.js +0 -71
  372. package/dist/chunk-15nesxgt.js +0 -5224
  373. package/dist/chunk-1sr54zp8.js +0 -3
  374. package/dist/chunk-1v49fwr5.js +0 -3
  375. package/dist/chunk-1xz0w746.js +0 -1539
  376. package/dist/chunk-1z5nhbjt.js +0 -90
  377. package/dist/chunk-1zgsgk4b.js +0 -1
  378. package/dist/chunk-20swzkx3.js +0 -216
  379. package/dist/chunk-27zsyhrd.js +0 -4
  380. package/dist/chunk-29y0hk5z.js +0 -3
  381. package/dist/chunk-2cdvw21b.js +0 -274
  382. package/dist/chunk-2j21d3ka.js +0 -161
  383. package/dist/chunk-2jxbwnkz.js +0 -2
  384. package/dist/chunk-31dr4bys.js +0 -6
  385. package/dist/chunk-35faj94w.js +0 -15
  386. package/dist/chunk-39gm08bn.js +0 -39
  387. package/dist/chunk-3a4qsygv.js +0 -51
  388. package/dist/chunk-3te20hqw.js +0 -3
  389. package/dist/chunk-43t7faps.js +0 -24
  390. package/dist/chunk-44hd3kab.js +0 -1
  391. package/dist/chunk-47kpewks.js +0 -71
  392. package/dist/chunk-4aj7ftqb.js +0 -1
  393. package/dist/chunk-4d2y57k7.js +0 -3
  394. package/dist/chunk-4deg33rw.js +0 -57
  395. package/dist/chunk-4k7d8p8d.js +0 -188
  396. package/dist/chunk-4qcy5tx6.js +0 -53
  397. package/dist/chunk-4x7kae4j.js +0 -3
  398. package/dist/chunk-55nwdnsd.js +0 -3
  399. package/dist/chunk-55yp0q8t.js +0 -201
  400. package/dist/chunk-5f43yz6z.js +0 -12
  401. package/dist/chunk-5shey2e4.js +0 -3
  402. package/dist/chunk-6b5k6w2q.js +0 -7
  403. package/dist/chunk-6djzdes9.js +0 -14
  404. package/dist/chunk-6e4c6g46.js +0 -3
  405. package/dist/chunk-6eqbxcrd.js +0 -8
  406. package/dist/chunk-7074g241.js +0 -3
  407. package/dist/chunk-7b6s3g65.js +0 -179
  408. package/dist/chunk-7cgmq685.js +0 -33
  409. package/dist/chunk-7dkz6z2s.js +0 -3
  410. package/dist/chunk-7ed3tean.js +0 -3
  411. package/dist/chunk-7gd339hd.js +0 -109
  412. package/dist/chunk-7j5e8sdj.js +0 -3
  413. package/dist/chunk-7n8g0nfn.js +0 -38
  414. package/dist/chunk-7sqdeqsw.js +0 -1
  415. package/dist/chunk-80g54ncj.js +0 -3
  416. package/dist/chunk-8a5bxece.js +0 -4
  417. package/dist/chunk-8ahwt6a4.js +0 -721
  418. package/dist/chunk-8b3z0zd5.js +0 -8
  419. package/dist/chunk-8dhdpa5h.js +0 -4
  420. package/dist/chunk-8n9nnqr6.js +0 -3
  421. package/dist/chunk-8qc1bsym.js +0 -3
  422. package/dist/chunk-8va64c9n.js +0 -3
  423. package/dist/chunk-8vtm0m84.js +0 -3
  424. package/dist/chunk-8xj7c3mf.js +0 -8
  425. package/dist/chunk-988dw6q3.js +0 -9
  426. package/dist/chunk-9b6cec0v.js +0 -321
  427. package/dist/chunk-9cf97f9p.js +0 -3
  428. package/dist/chunk-9ecv8aqj.js +0 -14
  429. package/dist/chunk-9eq3ht5f.js +0 -8
  430. package/dist/chunk-9jtj77jx.js +0 -3
  431. package/dist/chunk-9t14se2t.js +0 -83
  432. package/dist/chunk-9wmq2272.js +0 -3
  433. package/dist/chunk-9zbk5zx5.js +0 -57
  434. package/dist/chunk-a2g2qb2y.js +0 -386
  435. package/dist/chunk-a3hyn4we.js +0 -79
  436. package/dist/chunk-a87qqft6.js +0 -194
  437. package/dist/chunk-ah88wzbg.js +0 -10
  438. package/dist/chunk-akf1r75r.js +0 -102
  439. package/dist/chunk-amaa1bev.js +0 -2
  440. package/dist/chunk-avx8aydt.js +0 -3
  441. package/dist/chunk-ay9qf4zj.js +0 -6
  442. package/dist/chunk-aywxfqev.js +0 -3
  443. package/dist/chunk-azkegjd8.js +0 -61
  444. package/dist/chunk-b77wjyn7.js +0 -84
  445. package/dist/chunk-baf1hfwh.js +0 -231
  446. package/dist/chunk-bdk6g1vj.js +0 -3
  447. package/dist/chunk-bhqgmyqw.js +0 -36
  448. package/dist/chunk-bk3j0n82.js +0 -341
  449. package/dist/chunk-bndmdahk.js +0 -3
  450. package/dist/chunk-bpgg59wa.js +0 -3
  451. package/dist/chunk-bs3gmfxz.js +0 -5
  452. package/dist/chunk-bxc7kjsk.js +0 -32
  453. package/dist/chunk-c7jg8w13.js +0 -3
  454. package/dist/chunk-ckxjqqn9.js +0 -3
  455. package/dist/chunk-cn8az1b4.js +0 -1
  456. package/dist/chunk-d0zjtdw4.js +0 -29
  457. package/dist/chunk-d1qh1x2g.js +0 -3
  458. package/dist/chunk-djddhmcc.js +0 -60
  459. package/dist/chunk-dqn9gyhb.js +0 -21
  460. package/dist/chunk-drjq2zwg.js +0 -3
  461. package/dist/chunk-dvfs1h3c.js +0 -117
  462. package/dist/chunk-e2q9c5vq.js +0 -8
  463. package/dist/chunk-e98v1bc6.js +0 -12
  464. package/dist/chunk-ejayeex8.js +0 -2
  465. package/dist/chunk-ejh8fyak.js +0 -3
  466. package/dist/chunk-ek2w6zvy.js +0 -4
  467. package/dist/chunk-ewa88139.js +0 -6
  468. package/dist/chunk-fjk3x41y.js +0 -3
  469. package/dist/chunk-frg705zq.js +0 -302
  470. package/dist/chunk-fzm3y0r3.js +0 -267
  471. package/dist/chunk-g1vt329s.js +0 -21
  472. package/dist/chunk-g4ps1dj8.js +0 -140
  473. package/dist/chunk-gkzq8zw4.js +0 -23
  474. package/dist/chunk-gz5fmp3q.js +0 -3
  475. package/dist/chunk-h0hjy0kn.js +0 -292
  476. package/dist/chunk-h5jxydqq.js +0 -147
  477. package/dist/chunk-h5wa62ek.js +0 -145
  478. package/dist/chunk-h7aq56qj.js +0 -28
  479. package/dist/chunk-h82kjdr4.js +0 -83
  480. package/dist/chunk-hbehnm18.js +0 -3
  481. package/dist/chunk-hbgxbgam.js +0 -58
  482. package/dist/chunk-hc2mf5h6.js +0 -4
  483. package/dist/chunk-hjm2xab3.js +0 -3
  484. package/dist/chunk-hjv76kcw.js +0 -1
  485. package/dist/chunk-hrnnh4tq.js +0 -142
  486. package/dist/chunk-ht43ds42.js +0 -236
  487. package/dist/chunk-hxx3za24.js +0 -62
  488. package/dist/chunk-hy8820vc.js +0 -6
  489. package/dist/chunk-j447q024.js +0 -28
  490. package/dist/chunk-j58vh0w6.js +0 -314
  491. package/dist/chunk-j8tn8enq.js +0 -3
  492. package/dist/chunk-jc0fc4ht.js +0 -11
  493. package/dist/chunk-jcs0ymw7.js +0 -3
  494. package/dist/chunk-jjamhxpm.js +0 -139
  495. package/dist/chunk-jjb05d21.js +0 -3
  496. package/dist/chunk-jjdq01dv.js +0 -128
  497. package/dist/chunk-jnmgm2xw.js +0 -5
  498. package/dist/chunk-jpndqst5.js +0 -3
  499. package/dist/chunk-jt0ezawy.js +0 -351
  500. package/dist/chunk-jz73j3qs.js +0 -169
  501. package/dist/chunk-k21df0pg.js +0 -10
  502. package/dist/chunk-k848dzsa.js +0 -429
  503. package/dist/chunk-kdfe4t91.js +0 -3
  504. package/dist/chunk-keawsbpn.js +0 -5
  505. package/dist/chunk-kgym7ch9.js +0 -8
  506. package/dist/chunk-khdn7jwe.js +0 -3
  507. package/dist/chunk-km25cwz6.js +0 -3
  508. package/dist/chunk-knm8a8yx.js +0 -398
  509. package/dist/chunk-krqn0ddk.js +0 -3
  510. package/dist/chunk-ktkmvaa8.js +0 -1
  511. package/dist/chunk-kx6eb6ma.js +0 -4
  512. package/dist/chunk-kypas8vy.js +0 -4
  513. package/dist/chunk-m167kjhv.js +0 -4
  514. package/dist/chunk-m491r0rj.js +0 -358
  515. package/dist/chunk-m8448qby.js +0 -11
  516. package/dist/chunk-mgj88zeq.js +0 -64
  517. package/dist/chunk-mhgk632d.js +0 -3
  518. package/dist/chunk-mv4fb50w.js +0 -1
  519. package/dist/chunk-n5kg7fpx.js +0 -7
  520. package/dist/chunk-n98x35xd.js +0 -8
  521. package/dist/chunk-n9dhs1dw.js +0 -106
  522. package/dist/chunk-nd9rmddh.js +0 -6
  523. package/dist/chunk-ngxfwzq3.js +0 -3
  524. package/dist/chunk-nhv099jv.js +0 -19
  525. package/dist/chunk-nm15ccsg.js +0 -5
  526. package/dist/chunk-npfmdb6y.js +0 -71
  527. package/dist/chunk-nvwb4x04.js +0 -3
  528. package/dist/chunk-nw34xajc.js +0 -8
  529. package/dist/chunk-p077sw22.js +0 -3
  530. package/dist/chunk-p1h8065h.js +0 -3
  531. package/dist/chunk-p3e0cqtt.js +0 -34
  532. package/dist/chunk-p3fpb79v.js +0 -477
  533. package/dist/chunk-p52yzjq6.js +0 -498
  534. package/dist/chunk-p73meypx.js +0 -134
  535. package/dist/chunk-pa9zb7ty.js +0 -4
  536. package/dist/chunk-payfb24w.js +0 -207
  537. package/dist/chunk-pcm1vd8w.js +0 -3
  538. package/dist/chunk-pcntd9h4.js +0 -3
  539. package/dist/chunk-pg1fvqb9.js +0 -167
  540. package/dist/chunk-psc3wfcf.js +0 -1115
  541. package/dist/chunk-pznnww6k.js +0 -6
  542. package/dist/chunk-q6zhd9yf.js +0 -3
  543. package/dist/chunk-qa59zejf.js +0 -246
  544. package/dist/chunk-qvrbjpdc.js +0 -3
  545. package/dist/chunk-qygvvygy.js +0 -12
  546. package/dist/chunk-r0jcmpv6.js +0 -68
  547. package/dist/chunk-r5m9xtm7.js +0 -3
  548. package/dist/chunk-rh80q1nd.js +0 -1
  549. package/dist/chunk-rkffm9sy.js +0 -128
  550. package/dist/chunk-rpx5fa65.js +0 -3
  551. package/dist/chunk-rqxf5hns.js +0 -3
  552. package/dist/chunk-rtr974rc.js +0 -30
  553. package/dist/chunk-rvptcndz.js +0 -3
  554. package/dist/chunk-rw26rpek.js +0 -171
  555. package/dist/chunk-rw7937v4.js +0 -19
  556. package/dist/chunk-rwrv9wbf.js +0 -3
  557. package/dist/chunk-rz2ec6g7.js +0 -347
  558. package/dist/chunk-s6ja2bdg.js +0 -66
  559. package/dist/chunk-scpkdrdb.js +0 -4
  560. package/dist/chunk-shv88d2d.js +0 -10
  561. package/dist/chunk-t0c9wvpr.js +0 -3
  562. package/dist/chunk-tffh3b1e.js +0 -35
  563. package/dist/chunk-tg2f1mzq.js +0 -11
  564. package/dist/chunk-trfswy66.js +0 -77
  565. package/dist/chunk-tzwtg722.js +0 -3
  566. package/dist/chunk-v7f8jj15.js +0 -4
  567. package/dist/chunk-v8j49spx.js +0 -3
  568. package/dist/chunk-v97390pe.js +0 -1
  569. package/dist/chunk-vcr5pzpx.js +0 -233
  570. package/dist/chunk-veeerpwa.js +0 -3
  571. package/dist/chunk-vg5kt6az.js +0 -4
  572. package/dist/chunk-vgv7jvyz.js +0 -219
  573. package/dist/chunk-vjbefncc.js +0 -3
  574. package/dist/chunk-vmxjghsm.js +0 -3
  575. package/dist/chunk-vw7vqd76.js +0 -3
  576. package/dist/chunk-vx22he47.js +0 -1
  577. package/dist/chunk-w3b6m427.js +0 -45
  578. package/dist/chunk-wazkqv7n.js +0 -3
  579. package/dist/chunk-wf7zrjsw.js +0 -138
  580. package/dist/chunk-wfg2gm11.js +0 -3
  581. package/dist/chunk-wg9k6h8w.js +0 -12
  582. package/dist/chunk-wkz2vwkr.js +0 -81
  583. package/dist/chunk-wvef3ngh.js +0 -127
  584. package/dist/chunk-wvf31nzs.js +0 -3
  585. package/dist/chunk-x05nxhyv.js +0 -262
  586. package/dist/chunk-x0770gt9.js +0 -4
  587. package/dist/chunk-x24s4heg.js +0 -1166
  588. package/dist/chunk-x3r64r0c.js +0 -6
  589. package/dist/chunk-x5g9w4hh.js +0 -5
  590. package/dist/chunk-xgkv66q5.js +0 -2230
  591. package/dist/chunk-xqq1vxb6.js +0 -1
  592. package/dist/chunk-xs03kc1h.js +0 -196
  593. package/dist/chunk-xv34zbp4.js +0 -3
  594. package/dist/chunk-xw36p73h.js +0 -90
  595. package/dist/chunk-xyg1r5w0.js +0 -4
  596. package/dist/chunk-xys2sxh6.js +0 -16
  597. package/dist/chunk-y0qg6rrv.js +0 -3
  598. package/dist/chunk-y1k17c8b.js +0 -21
  599. package/dist/chunk-y5xz0jc4.js +0 -141
  600. package/dist/chunk-y6xsqe9a.js +0 -10
  601. package/dist/chunk-yb1t2h8h.js +0 -11
  602. package/dist/chunk-ygvyc6wv.js +0 -90
  603. package/dist/chunk-yj4x5ehw.js +0 -21
  604. package/dist/chunk-yn38c15w.js +0 -4
  605. package/dist/chunk-ynhngsdh.js +0 -3
  606. package/dist/chunk-yrsb6j3z.js +0 -3
  607. package/dist/chunk-yywfvfph.js +0 -2
  608. package/dist/chunk-zcxzdrn7.js +0 -5
  609. package/dist/chunk-zen6ax1y.js +0 -27
  610. package/dist/chunk-zf2pek72.js +0 -3
  611. package/dist/chunk-zk3d0jjf.js +0 -7
  612. package/dist/chunk-zy3rp1ab.js +0 -93
@@ -1,2 +1,379 @@
1
- // @bun
2
- import{Iw as a,Jw as b,Kw as c,Lw as d,Mw as e,Nw as f,Ow as g,Pw as h,Qw as i,Rw as j}from"../chunk-shv88d2d.js";import"../chunk-0dx4q6yq.js";import"../chunk-xv34zbp4.js";export{b as resetCssCache,c as resetCrosswindCache,f as rebuildCrosswindCSS,d as loadCrosswindConfig,a as loadCrosswind,j as injectCrosswindCSS,g as getCachedCSS,i as generateCrosswindCSS,h as extractClassNames,e as buildCrosswindCSS};
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import { colors } from "./terminal-colors.js";
4
+ let crosswindModule = null, crosswindLoadAttempted = !1, cachedConfig = null, cachedCSS = "", isBuilding = !1;
5
+ const MAX_CACHE = 256, cssByClassSet = new Map;
6
+ let diskCacheRoot = null, configFingerprint = null;
7
+ function shortHash(input) {
8
+ return Bun.hash(input).toString(16).padStart(16, "0").slice(0, 16);
9
+ }
10
+ function setLruCache(key, value) {
11
+ if (cssByClassSet.has(key))
12
+ cssByClassSet.delete(key);
13
+ else if (cssByClassSet.size >= MAX_CACHE)
14
+ cssByClassSet.delete(cssByClassSet.keys().next().value);
15
+ cssByClassSet.set(key, value);
16
+ }
17
+ async function readDiskCache(key) {
18
+ if (!diskCacheRoot)
19
+ return null;
20
+ try {
21
+ const file = Bun.file(path.join(diskCacheRoot, `cw-${shortHash(key)}.css`));
22
+ if (!await file.exists())
23
+ return null;
24
+ return await file.text();
25
+ } catch {
26
+ return null;
27
+ }
28
+ }
29
+ async function writeDiskCache(key, css) {
30
+ if (!diskCacheRoot)
31
+ return;
32
+ try {
33
+ if (!fs.existsSync(diskCacheRoot))
34
+ fs.mkdirSync(diskCacheRoot, { recursive: !0 });
35
+ await Bun.write(path.join(diskCacheRoot, `cw-${shortHash(key)}.css`), css);
36
+ } catch {}
37
+ }
38
+ async function tryImportCrosswind(importPath) {
39
+ try {
40
+ const pkg = await import(importPath);
41
+ if (pkg && pkg.CSSGenerator)
42
+ return {
43
+ CSSGenerator: pkg.CSSGenerator,
44
+ config: pkg.config,
45
+ build: pkg.build,
46
+ defaultConfig: pkg.defaultConfig
47
+ };
48
+ } catch {}
49
+ return null;
50
+ }
51
+ function findCrosswindPaths() {
52
+ const paths = [], homeDir = process.env.HOME || process.env.USERPROFILE || "";
53
+ let currentDir = process.cwd();
54
+ while (currentDir !== path.dirname(currentDir)) {
55
+ paths.push(path.join(currentDir, "node_modules", "@cwcss", "crosswind", "dist", "index.js"));
56
+ paths.push(path.join(currentDir, "node_modules", "@cwcss", "crosswind", "src", "index.ts"));
57
+ paths.push(path.join(currentDir, "pantry", "@cwcss", "crosswind", "dist", "index.js"));
58
+ paths.push(path.join(currentDir, "pantry", "@cwcss", "crosswind", "src", "index.ts"));
59
+ paths.push(path.join(currentDir, "node_modules", "@stacksjs", "crosswind", "dist", "index.js"));
60
+ paths.push(path.join(currentDir, "pantry", "@stacksjs", "crosswind", "dist", "index.js"));
61
+ currentDir = path.dirname(currentDir);
62
+ }
63
+ if (homeDir) {
64
+ const devPaths = [
65
+ path.join(homeDir, "Code", "Tools", "crosswind", "packages", "crosswind", "dist", "index.js"),
66
+ path.join(homeDir, "Code", "Tools", "crosswind", "packages", "crosswind", "src", "index.ts"),
67
+ path.join(homeDir, "repos", "stacks-org", "crosswind", "packages", "crosswind", "dist", "index.js"),
68
+ path.join(homeDir, "repos", "stacks-org", "crosswind", "packages", "crosswind", "src", "index.ts"),
69
+ path.join(homeDir, "Code", "Tools", "stx", "packages", "stx", "node_modules", "@cwcss", "crosswind", "dist", "index.js"),
70
+ path.join(homeDir, "Code", "Tools", "stx", "packages", "stx", "node_modules", "@stacksjs", "crosswind", "dist", "index.js")
71
+ ];
72
+ paths.push(...devPaths);
73
+ }
74
+ paths.push(path.join(process.cwd(), "..", "crosswind", "packages", "crosswind", "dist", "index.js"));
75
+ paths.push(path.join(process.cwd(), "..", "crosswind", "packages", "crosswind", "src", "index.ts"));
76
+ return paths;
77
+ }
78
+ export async function loadCrosswind() {
79
+ if (crosswindLoadAttempted)
80
+ return crosswindModule;
81
+ crosswindLoadAttempted = !0;
82
+ try {
83
+ const importPaths = [
84
+ "@cwcss/crosswind",
85
+ "@cwcss/crosswind/dist/index.js",
86
+ "@stacksjs/crosswind",
87
+ "@stacksjs/crosswind/dist/index.js"
88
+ ];
89
+ for (const importPath of importPaths) {
90
+ const result = await tryImportCrosswind(importPath);
91
+ if (result) {
92
+ crosswindModule = result;
93
+ if (!process.env.STACKS_DEV_QUIET)
94
+ console.log(`${colors.green}[Crosswind]${colors.reset} CSS engine loaded`);
95
+ return crosswindModule;
96
+ }
97
+ }
98
+ const localPaths = findCrosswindPaths();
99
+ for (const localPath of localPaths)
100
+ if (await Bun.file(localPath).exists()) {
101
+ const result = await tryImportCrosswind(localPath);
102
+ if (result) {
103
+ crosswindModule = result;
104
+ if (!process.env.STACKS_DEV_QUIET)
105
+ console.log(`${colors.green}[Crosswind]${colors.reset} CSS engine loaded from ${path.dirname(path.dirname(localPath))}`);
106
+ return crosswindModule;
107
+ }
108
+ }
109
+ throw Error("Crosswind CSSGenerator not found in any location");
110
+ } catch {
111
+ console.warn(`${colors.yellow}[Crosswind] CSS engine not available, Tailwind styles will not be generated${colors.reset}`);
112
+ console.warn(`${colors.yellow}Run 'bun add @stacksjs/crosswind' to enable CSS generation${colors.reset}`);
113
+ return null;
114
+ }
115
+ }
116
+ export function resetCssCache() {
117
+ cssByClassSet.clear();
118
+ }
119
+ export function resetCrosswindCache() {
120
+ crosswindModule = null;
121
+ crosswindLoadAttempted = !1;
122
+ cachedConfig = null;
123
+ cachedCSS = "";
124
+ cssByClassSet.clear();
125
+ configFingerprint = null;
126
+ }
127
+ export async function loadCrosswindConfig(cwd) {
128
+ try {
129
+ const configDirectories = ["", "config", ".config"], configNames = ["crosswind.config", "crosswind", ".crosswind.config", ".crosswind"], configExtensions = [".ts", ".js", ".mjs", ".cjs", ".json"];
130
+ if (!configDirectories.flatMap((directory) => configNames.flatMap((name) => configExtensions.map((extension) => path.join(directory, `${name}${extension}`)))).some((candidate) => fs.existsSync(path.join(cwd, candidate))))
131
+ return null;
132
+ const { loadConfigWithResult } = await import("bunfig"), result = await loadConfigWithResult({
133
+ name: "crosswind",
134
+ cwd,
135
+ defaultConfig: {},
136
+ checkEnv: !1,
137
+ verbose: !1
138
+ });
139
+ if (!result?.path || !result.config || Object.keys(result.config).length === 0)
140
+ return null;
141
+ const rel = path.relative(cwd, result.path);
142
+ if (!process.env.STACKS_DEV_QUIET)
143
+ console.log(`${colors.green}[Crosswind]${colors.reset} Loaded config from ${rel || result.path}`);
144
+ return result.config;
145
+ } catch (error) {
146
+ if (error instanceof Error && error.name === "ConfigNotFoundError")
147
+ return null;
148
+ console.warn(`${colors.yellow}[Crosswind]${colors.reset} Failed to load crosswind config:`, error instanceof Error ? error.message : error);
149
+ return null;
150
+ }
151
+ }
152
+ export async function buildCrosswindCSS(cwd) {
153
+ if (isBuilding)
154
+ return cachedCSS;
155
+ isBuilding = !0;
156
+ try {
157
+ const hw = await loadCrosswind();
158
+ if (!hw || !hw.build) {
159
+ isBuilding = !1;
160
+ return "";
161
+ }
162
+ if (!cachedConfig)
163
+ cachedConfig = await loadCrosswindConfig(cwd);
164
+ if (!cachedConfig) {
165
+ isBuilding = !1;
166
+ return "";
167
+ }
168
+ const defaultTheme = hw.defaultConfig?.theme || {}, userTheme = cachedConfig.theme || {}, config = {
169
+ ...hw.defaultConfig,
170
+ ...cachedConfig,
171
+ theme: {
172
+ ...defaultTheme,
173
+ ...userTheme,
174
+ extend: {
175
+ ...defaultTheme.extend || {},
176
+ ...userTheme.extend || {}
177
+ }
178
+ }
179
+ }, start = performance.now(), result = await hw.build(config), duration = performance.now() - start;
180
+ cachedCSS = result.css;
181
+ console.log(`${colors.cyan}[Crosswind]${colors.reset} Built ${result.classes.size} classes in ${duration.toFixed(1)}ms`);
182
+ if (config.output) {
183
+ const outputPath = path.isAbsolute(config.output) ? config.output : path.join(cwd, config.output), outputDir = path.dirname(outputPath);
184
+ if (!fs.existsSync(outputDir))
185
+ fs.mkdirSync(outputDir, { recursive: !0 });
186
+ await Bun.write(outputPath, result.css);
187
+ }
188
+ isBuilding = !1;
189
+ return result.css;
190
+ } catch (error) {
191
+ console.error(`${colors.red}[Crosswind]${colors.reset} Build error:`, error);
192
+ isBuilding = !1;
193
+ return cachedCSS;
194
+ }
195
+ }
196
+ export async function rebuildCrosswindCSS(cwd) {
197
+ cachedConfig = null;
198
+ await buildCrosswindCSS(cwd);
199
+ }
200
+ export function getCachedCSS() {
201
+ return cachedCSS;
202
+ }
203
+ export function extractClassNames(htmlContent) {
204
+ const classes = new Set, classRegex = /class\s*=\s*["']([^"']+)["']/gi;
205
+ let match = classRegex.exec(htmlContent);
206
+ while (match !== null) {
207
+ for (const cls of match[1].split(/\s+/))
208
+ if (cls.trim())
209
+ classes.add(cls.trim());
210
+ match = classRegex.exec(htmlContent);
211
+ }
212
+ const dynRegex = /(?:x-class|:class)\s*=\s*"([^"]+)"/gi;
213
+ let dynMatch = dynRegex.exec(htmlContent);
214
+ while (dynMatch !== null) {
215
+ const strLiterals = dynMatch[1].match(/'([^']+)'/g);
216
+ if (strLiterals) {
217
+ for (const lit of strLiterals)
218
+ for (const cls of lit.slice(1, -1).split(/\s+/))
219
+ if (cls.trim())
220
+ classes.add(cls.trim());
221
+ }
222
+ dynMatch = dynRegex.exec(htmlContent);
223
+ }
224
+ return classes;
225
+ }
226
+ export async function generateCrosswindCSS(htmlContent, appDir) {
227
+ try {
228
+ const hw = await loadCrosswind();
229
+ if (!hw)
230
+ return "";
231
+ const classes = extractClassNames(htmlContent);
232
+ if (classes.size === 0)
233
+ return "";
234
+ const resolveRoot = appDir ? path.resolve(appDir) : process.cwd();
235
+ if (!diskCacheRoot)
236
+ diskCacheRoot = path.join(resolveRoot, ".stx/cache");
237
+ const classSetKey = [...classes].sort().join(" "), cacheKey = `${configFingerprint || "default"}::${classSetKey}`, cached = cssByClassSet.get(cacheKey);
238
+ if (cached !== void 0) {
239
+ setLruCache(cacheKey, cached);
240
+ return cached;
241
+ }
242
+ const onDisk = await readDiskCache(cacheKey);
243
+ if (onDisk !== null) {
244
+ setLruCache(cacheKey, onDisk);
245
+ return onDisk;
246
+ }
247
+ if (!cachedConfig) {
248
+ let stxCssConfig = null;
249
+ try {
250
+ const { loadStxConfig } = await import("../config.js"), stxConfig = await loadStxConfig(resolveRoot);
251
+ if (stxConfig.css)
252
+ if (typeof stxConfig.css === "string") {
253
+ const configPath = path.isAbsolute(stxConfig.css) ? stxConfig.css : path.resolve(resolveRoot, stxConfig.css);
254
+ if (await Bun.file(configPath).exists()) {
255
+ const mod = await import(configPath);
256
+ stxCssConfig = mod.default || mod;
257
+ console.log(`${colors.green}[Crosswind]${colors.reset} Loaded config from stx.config.ts \u2192 ${stxConfig.css}`);
258
+ }
259
+ } else {
260
+ stxCssConfig = {
261
+ ...stxConfig.css,
262
+ content: stxConfig.css.content || [],
263
+ preflight: stxConfig.css.preflight ?? !0,
264
+ minify: stxConfig.css.minify ?? !1
265
+ };
266
+ if (stxConfig.css.config) {
267
+ const configPath = path.isAbsolute(stxConfig.css.config) ? stxConfig.css.config : path.resolve(resolveRoot, stxConfig.css.config);
268
+ if (await Bun.file(configPath).exists()) {
269
+ const mod = await import(configPath);
270
+ stxCssConfig = { ...mod.default || mod, ...stxCssConfig };
271
+ }
272
+ }
273
+ console.log(`${colors.green}[Crosswind]${colors.reset} Using inline CSS config from stx.config.ts`);
274
+ }
275
+ } catch {}
276
+ cachedConfig = stxCssConfig || await loadCrosswindConfig(resolveRoot);
277
+ try {
278
+ configFingerprint = shortHash(JSON.stringify(cachedConfig ?? {}));
279
+ } catch {
280
+ configFingerprint = "unhashable";
281
+ }
282
+ }
283
+ const baseConfig = hw.defaultConfig || hw.config, userConfig = cachedConfig || {}, baseTheme = baseConfig.theme || {}, userExtend = (userConfig.theme || {}).extend || {}, theme = { ...baseTheme };
284
+ if (Object.keys(userExtend).length > 0)
285
+ theme.extend = userExtend;
286
+ const safelist = [
287
+ ...baseConfig.safelist || [],
288
+ ...userConfig.safelist || []
289
+ ], crosswindConfig = {
290
+ ...baseConfig,
291
+ ...userConfig,
292
+ content: [],
293
+ output: "",
294
+ preflight: !0,
295
+ minify: !1,
296
+ theme,
297
+ safelist
298
+ }, generator = new hw.CSSGenerator(crosswindConfig);
299
+ for (const cls of safelist)
300
+ generator.generate(cls);
301
+ for (const className of classes)
302
+ generator.generate(className);
303
+ let css = generator.toCSS(!0, !1);
304
+ const shortcuts = crosswindConfig.shortcuts || userConfig.shortcuts || {};
305
+ for (const [name, classStr] of Object.entries(shortcuts)) {
306
+ if (!classes.has(name) && !safelist.includes(name))
307
+ continue;
308
+ const parts = classStr.split(/\s+/).filter(Boolean);
309
+ for (const p of parts)
310
+ generator.generate(p);
311
+ }
312
+ css = generator.toCSS(!0, !1);
313
+ const cssLines = css.split(`
314
+ `);
315
+ for (const [name, classStr] of Object.entries(shortcuts)) {
316
+ if (!classes.has(name) && !safelist.includes(name))
317
+ continue;
318
+ const parts = classStr.split(/\s+/).filter(Boolean), decls = [], darkDecls = [];
319
+ for (const cls of parts) {
320
+ const isDark = cls.startsWith("dark:"), selectorTarget = `.${(isDark ? cls.slice(5) : cls).replace(/\//g, "\\/").replace(/:/g, "\\:").replace(/\./g, "\\.").replace(/\[/g, "\\[").replace(/\]/g, "\\]").replace(/%/g, "\\%")}`;
321
+ for (let i = 0;i < cssLines.length; i++) {
322
+ const line = cssLines[i].trim();
323
+ if (line === `${selectorTarget} {` || line.startsWith(`${selectorTarget} {`)) {
324
+ let j = i, ruleContent = "";
325
+ while (j < cssLines.length) {
326
+ ruleContent += cssLines[j];
327
+ if (cssLines[j].includes("}"))
328
+ break;
329
+ j++;
330
+ }
331
+ const declMatch = ruleContent.match(/\{([^}]+)\}/);
332
+ if (declMatch)
333
+ if (isDark)
334
+ darkDecls.push(declMatch[1].trim());
335
+ else
336
+ decls.push(declMatch[1].trim());
337
+ break;
338
+ }
339
+ }
340
+ }
341
+ if (decls.length)
342
+ css += `
343
+ .${name} { ${decls.join(" ")} }`;
344
+ if (darkDecls.length)
345
+ css += `
346
+ @media (prefers-color-scheme: dark) { .dark .${name} { ${darkDecls.join(" ")} } }`;
347
+ }
348
+ setLruCache(cacheKey, css);
349
+ writeDiskCache(cacheKey, css);
350
+ return css;
351
+ } catch (error) {
352
+ console.warn("Failed to generate Crosswind CSS:", error);
353
+ return "";
354
+ }
355
+ }
356
+ export async function injectCrosswindCSS(htmlContent, appDir) {
357
+ const css = await generateCrosswindCSS(htmlContent, appDir);
358
+ if (!css)
359
+ return htmlContent;
360
+ const styleTag = `<style data-crosswind="generated">
361
+ ${css}
362
+ </style>`, existing = /<style data-crosswind="generated">[\s\S]*?<\/style>/g;
363
+ if (existing.test(htmlContent)) {
364
+ let placed = !1;
365
+ return htmlContent.replace(existing, () => {
366
+ if (placed)
367
+ return "";
368
+ placed = !0;
369
+ return styleTag;
370
+ });
371
+ }
372
+ if (htmlContent.includes("</head>"))
373
+ return htmlContent.replace("</head>", `${styleTag}
374
+ </head>`);
375
+ if (htmlContent.includes("<body"))
376
+ return htmlContent.replace(/<body([^>]*)>/, `<body$1>
377
+ ${styleTag}`);
378
+ return styleTag + htmlContent;
379
+ }
@@ -1,2 +1,7 @@
1
- // @bun
2
- import"../chunk-4aj7ftqb.js";import{bo as K,co as L,do as M}from"../chunk-km25cwz6.js";import{eo as B,fo as C,go as D,ho as E}from"../chunk-x3r64r0c.js";import{io as x,jo as y,ko as z,lo as A}from"../chunk-1sr54zp8.js";import{mo as r,no as s,oo as t,po as u,qo as v,ro as w}from"../chunk-9t14se2t.js";import{so as F,to as G,uo as H,vo as I,wo as J}from"../chunk-nm15ccsg.js";import{Iw as h,Jw as i,Kw as j,Lw as k,Mw as l,Nw as m,Ow as n,Pw as o,Qw as p,Rw as q}from"../chunk-shv88d2d.js";import{Sw as a,Tw as b,Uw as c,Vw as d,Ww as e,Xw as f,Yw as g}from"../chunk-0dx4q6yq.js";import"../chunk-xv34zbp4.js";export{d as warning,c as success,I as setupKeyboardShortcuts,i as resetCssCache,j as resetCrosswindCache,m as rebuildCrosswindCSS,F as printShortcutsHelp,G as printServerStatus,C as openNativeWindow,H as openInBrowser,k as loadCrosswindConfig,h as loadCrosswind,x as isPortAvailable,D as isNativeWindowSupported,w as isDarkTheme,q as injectCrosswindCSS,f as info,r as getThemeSelectorStyles,t as getThemeSelectorScript,s as getThemeSelectorHtml,L as getMimeType,u as getFrontmatterHtml,n as getCachedCSS,p as generateCrosswindCSS,A as findAvailablePortInRange,y as findAvailablePort,E as extractSidebarConfig,o as extractClassNames,e as error,g as dim,a as colors,b as colorize,J as cleanupKeyboardShortcuts,l as buildCrosswindCSS,K as MIME_TYPES,z as DEFAULT_PORT,B as DEFAULT_NATIVE_WINDOW_CONFIG,M as DEFAULT_DEV_OPTIONS,v as DARK_THEME_KEYWORDS};
1
+ export * from "./terminal-colors.js";
2
+ export * from "./crosswind.js";
3
+ export * from "./theme-selector.js";
4
+ export * from "./port-utils.js";
5
+ export * from "./native-window.js";
6
+ export * from "./keyboard-shortcuts.js";
7
+ export * from "./types.js";
@@ -1,2 +1,81 @@
1
- // @bun
2
- import{so as a,to as b,uo as c,vo as d,wo as e}from"../chunk-nm15ccsg.js";import"../chunk-0dx4q6yq.js";import"../chunk-xv34zbp4.js";export{d as setupKeyboardShortcuts,a as printShortcutsHelp,b as printServerStatus,c as openInBrowser,e as cleanupKeyboardShortcuts};
1
+ import { colors } from "./terminal-colors.js";
2
+ export function printShortcutsHelp() {
3
+ console.log(`
4
+ Keyboard shortcuts:`);
5
+ console.log(` ${colors.cyan}o${colors.reset} + Enter - Open in browser`);
6
+ console.log(` ${colors.cyan}c${colors.reset} + Enter - Clear console`);
7
+ console.log(` ${colors.cyan}q${colors.reset} + Enter (or ${colors.cyan}Ctrl+C${colors.reset}) - Quit server`);
8
+ console.log(` ${colors.cyan}h${colors.reset} + Enter - Show this help`);
9
+ }
10
+ export function printServerStatus(serverUrl) {
11
+ console.log(`${colors.green}Server running at ${colors.cyan}${serverUrl}${colors.reset}`);
12
+ console.log(`Press ${colors.cyan}Ctrl+C${colors.reset} to stop the server`);
13
+ printShortcutsHelp();
14
+ }
15
+ export function openInBrowser(url) {
16
+ console.log(`${colors.dim}Opening ${colors.cyan}${url}${colors.dim} in your browser...${colors.reset}`);
17
+ Bun.spawn(["open", url], { stderr: "inherit" });
18
+ }
19
+ export function setupKeyboardShortcuts(serverUrl, stopServer, customHandlers) {
20
+ if (!process.stdin.isTTY)
21
+ return;
22
+ process.stdin.setRawMode(!0);
23
+ process.stdin.setEncoding("utf8");
24
+ process.stdin.resume();
25
+ printShortcutsHelp();
26
+ let buffer = "";
27
+ process.stdin.on("data", (key) => {
28
+ if (key === "\x03") {
29
+ if (customHandlers?.onQuit)
30
+ customHandlers.onQuit();
31
+ stopServer();
32
+ process.exit(0);
33
+ }
34
+ buffer += key;
35
+ if (buffer.endsWith("\r") || buffer.endsWith(`
36
+ `)) {
37
+ const cmd = buffer.trim().toLowerCase();
38
+ buffer = "";
39
+ handleCommand(cmd, serverUrl, stopServer, customHandlers);
40
+ }
41
+ });
42
+ }
43
+ function handleCommand(cmd, serverUrl, stopServer, customHandlers) {
44
+ switch (cmd) {
45
+ case "o":
46
+ if (customHandlers?.onOpen)
47
+ customHandlers.onOpen();
48
+ else
49
+ openInBrowser(serverUrl);
50
+ break;
51
+ case "c":
52
+ if (customHandlers?.onClear)
53
+ customHandlers.onClear();
54
+ else {
55
+ console.clear();
56
+ printServerStatus(serverUrl);
57
+ }
58
+ break;
59
+ case "q":
60
+ if (customHandlers?.onQuit)
61
+ customHandlers.onQuit();
62
+ console.log(`${colors.yellow}Stopping server...${colors.reset}`);
63
+ stopServer();
64
+ process.exit(0);
65
+ break;
66
+ case "h":
67
+ if (customHandlers?.onHelp)
68
+ customHandlers.onHelp();
69
+ else
70
+ printShortcutsHelp();
71
+ break;
72
+ default:
73
+ break;
74
+ }
75
+ }
76
+ export function cleanupKeyboardShortcuts() {
77
+ if (process.stdin.isTTY) {
78
+ process.stdin.setRawMode(!1);
79
+ process.stdin.pause();
80
+ }
81
+ }
@@ -1,2 +1,91 @@
1
- // @bun
2
- import{eo as a,fo as b,go as c,ho as d}from"../chunk-x3r64r0c.js";import"../chunk-0dx4q6yq.js";import"../chunk-xv34zbp4.js";export{b as openNativeWindow,c as isNativeWindowSupported,d as extractSidebarConfig,a as DEFAULT_NATIVE_WINDOW_CONFIG};
1
+ import { colors } from "./terminal-colors.js";
2
+ export const DEFAULT_NATIVE_WINDOW_CONFIG = {
3
+ title: "stx Development",
4
+ width: 1400,
5
+ height: 900,
6
+ darkMode: !0,
7
+ hotReload: !0,
8
+ titlebarHidden: !1,
9
+ nativeSidebar: !1,
10
+ sidebarWidth: 260,
11
+ sidebarConfig: void 0
12
+ };
13
+ async function loadDesktop() {
14
+ try {
15
+ const mod = await import("@stacksjs/desktop");
16
+ if (typeof mod.openDevWindow !== "function")
17
+ return null;
18
+ return mod;
19
+ } catch {
20
+ return null;
21
+ }
22
+ }
23
+ export async function openNativeWindow(port, config = {}) {
24
+ const mergedConfig = {
25
+ ...DEFAULT_NATIVE_WINDOW_CONFIG,
26
+ ...config
27
+ }, desktop = await loadDesktop();
28
+ if (!desktop) {
29
+ console.log(`${colors.yellow}\u26A0${colors.reset} Native window requested, but @stacksjs/desktop is not available.`);
30
+ console.log(" Install & build the desktop package to enable --native.");
31
+ return !1;
32
+ }
33
+ try {
34
+ const success = await desktop.openDevWindow(port, {
35
+ title: mergedConfig.title,
36
+ width: mergedConfig.width,
37
+ height: mergedConfig.height,
38
+ darkMode: mergedConfig.darkMode,
39
+ hotReload: mergedConfig.hotReload,
40
+ titlebarHidden: mergedConfig.titlebarHidden,
41
+ nativeSidebar: mergedConfig.nativeSidebar,
42
+ sidebarWidth: mergedConfig.sidebarWidth,
43
+ sidebarConfig: mergedConfig.sidebarConfig
44
+ });
45
+ if (success && mergedConfig.nativeSidebar)
46
+ console.log(`${colors.green}\u2713${colors.reset} Native sidebar enabled (macOS Tahoe style)`);
47
+ return success;
48
+ } catch (error) {
49
+ console.log(`${colors.red}\u2717${colors.reset} Could not open native window:`, error);
50
+ return !1;
51
+ }
52
+ }
53
+ export async function isNativeWindowSupported() {
54
+ return await loadDesktop() !== null;
55
+ }
56
+ export function extractSidebarConfig(templateContent) {
57
+ if (templateContent.match(/<Sidebar[\s\S]*?variant=["'](?:tahoe|vibrancy|desktop)["'][\s\S]*?\/>/i)) {
58
+ const scriptMatch = templateContent.match(/<script\s+server[^>]*>([\s\S]*?)<\/script>/i);
59
+ if (scriptMatch) {
60
+ const scriptContent = scriptMatch[1];
61
+ try {
62
+ const evalScript = `
63
+ ${scriptContent}
64
+ return typeof sidebarConfig !== 'undefined' ? sidebarConfig : null;
65
+ `, config = Function(evalScript)();
66
+ if (config)
67
+ return config;
68
+ } catch (e) {
69
+ console.warn("Invalid sidebarConfig:", e);
70
+ }
71
+ }
72
+ return { sections: [] };
73
+ }
74
+ const directiveMatch = templateContent.match(/@nativeSidebar\s*\(\s*(\{[\s\S]*?\})\s*\)/m);
75
+ if (directiveMatch)
76
+ try {
77
+ return JSON.parse(directiveMatch[1]);
78
+ } catch {
79
+ console.warn("Invalid @nativeSidebar configuration");
80
+ }
81
+ const nativeSidebarScriptMatch = templateContent.match(/<script\s+native-sidebar[^>]*>([\s\S]*?)<\/script>/i);
82
+ if (nativeSidebarScriptMatch)
83
+ try {
84
+ const configObjMatch = nativeSidebarScriptMatch[1].match(/(?:export\s+(?:default\s+)?|const\s+\w+\s*=\s*)(\{[\s\S]*\})/m);
85
+ if (configObjMatch)
86
+ return Function(`return ${configObjMatch[1]}`)();
87
+ } catch (e) {
88
+ console.warn("Invalid native-sidebar script configuration:", e);
89
+ }
90
+ return;
91
+ }
@@ -1,2 +1,40 @@
1
- // @bun
2
- import{io as a,jo as b,ko as c,lo as d}from"../chunk-1sr54zp8.js";import"../chunk-xv34zbp4.js";export{a as isPortAvailable,d as findAvailablePortInRange,b as findAvailablePort,c as DEFAULT_PORT};
1
+ import net from "node:net";
2
+ async function isPortAvailableIPv4(port) {
3
+ return new Promise((resolve) => {
4
+ const server = net.createServer();
5
+ server.once("error", () => resolve(!1));
6
+ server.once("listening", () => {
7
+ server.close(() => resolve(!0));
8
+ });
9
+ server.listen(port, "0.0.0.0");
10
+ });
11
+ }
12
+ async function isPortAvailableIPv6(port) {
13
+ return new Promise((resolve) => {
14
+ const server = net.createServer();
15
+ server.once("error", () => resolve(!1));
16
+ server.once("listening", () => {
17
+ server.close(() => resolve(!0));
18
+ });
19
+ server.listen(port, "::");
20
+ });
21
+ }
22
+ export async function isPortAvailable(port) {
23
+ if (!await isPortAvailableIPv4(port))
24
+ return !1;
25
+ return await isPortAvailableIPv6(port);
26
+ }
27
+ export async function findAvailablePort(startPort, maxAttempts = 20) {
28
+ startPort = Number(startPort);
29
+ for (let i = 0;i < maxAttempts; i++) {
30
+ const port = startPort + i;
31
+ if (await isPortAvailable(port))
32
+ return port;
33
+ }
34
+ throw Error(`Could not find an available port between ${startPort} and ${startPort + maxAttempts - 1}`);
35
+ }
36
+ export const DEFAULT_PORT = 3000;
37
+ export async function findAvailablePortInRange(range) {
38
+ const maxAttempts = range.end - range.start + 1;
39
+ return findAvailablePort(range.start, maxAttempts);
40
+ }