@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,2230 +0,0 @@
1
- // @bun
2
- var w={button:{nativeType:"craft-button",fallbackTag:"button",fallbackClasses:"craft-button",nativeProps:["variant","size","disabled","loading"]},"text-input":{nativeType:"craft-text-input",fallbackTag:"input",fallbackClasses:"craft-text-input",nativeProps:["placeholder","value","type","disabled","readonly"]},textarea:{nativeType:"craft-textarea",fallbackTag:"textarea",fallbackClasses:"craft-textarea",nativeProps:["placeholder","value","rows","disabled","readonly"]},checkbox:{nativeType:"craft-checkbox",fallbackTag:"input",fallbackClasses:"craft-checkbox",nativeProps:["checked","disabled","label"],render:(j,q)=>{let B=j.checked?"checked":"",K=j.disabled?"disabled":"";return`<label class="craft-checkbox-wrapper">
3
- <input type="checkbox" class="craft-checkbox" ${B} ${K}>
4
- <span class="craft-checkbox-label">${q||j.label||""}</span>
5
- </label>`}},radio:{nativeType:"craft-radio",fallbackTag:"input",fallbackClasses:"craft-radio",nativeProps:["checked","disabled","name","value","label"]},select:{nativeType:"craft-select",fallbackTag:"select",fallbackClasses:"craft-select",nativeProps:["value","disabled","options","placeholder"]},slider:{nativeType:"craft-slider",fallbackTag:"input",fallbackClasses:"craft-slider",nativeProps:["value","min","max","step","disabled"],render:(j,q)=>{let B=j.min??0,K=j.max??100,L=j.step??1,U=j.value??50,V=j.disabled?"disabled":"";return`<input type="range" class="craft-slider" min="${B}" max="${K}" step="${L}" value="${U}" ${V}>`}},label:{nativeType:"craft-label",fallbackTag:"span",fallbackClasses:"craft-label",nativeProps:["text","for"]},badge:{nativeType:"craft-badge",fallbackTag:"span",fallbackClasses:"craft-badge",nativeProps:["variant","size"]},avatar:{nativeType:"craft-avatar",fallbackTag:"div",fallbackClasses:"craft-avatar",nativeProps:["src","alt","size","fallback"],render:(j,q)=>{let B=j.size||40,K=j.src,L=String(j.alt||""),U=j.fallback||(L?L.charAt(0).toUpperCase():"?");if(K)return`<img class="craft-avatar" src="${K}" alt="${L}" style="width:${B}px;height:${B}px;border-radius:50%">`;return`<div class="craft-avatar craft-avatar-fallback" style="width:${B}px;height:${B}px;border-radius:50%;display:flex;align-items:center;justify-content:center">${U}</div>`}},progress:{nativeType:"craft-progress",fallbackTag:"div",fallbackClasses:"craft-progress",nativeProps:["value","max","variant"],render:(j,q)=>{let B=Number(j.value)||0,K=Number(j.max)||100;return`<div class="craft-progress"><div class="craft-progress-bar" style="width:${Math.min(100,Math.max(0,B/K*100))}%"></div></div>`}},spinner:{nativeType:"craft-spinner",fallbackTag:"div",fallbackClasses:"craft-spinner",nativeProps:["size"],render:(j,q)=>{let B=j.size||24;return`<div class="craft-spinner" style="width:${B}px;height:${B}px"></div>`}},card:{nativeType:"craft-card",fallbackTag:"div",fallbackClasses:"craft-card",nativeProps:["title","subtitle","variant"]},modal:{nativeType:"craft-modal",fallbackTag:"dialog",fallbackClasses:"craft-modal",nativeProps:["open","title","closable","size"],render:(j,q)=>{let B=j.open?"open":"",K=j.title||"";return`<dialog class="craft-modal" ${B}>
6
- <div class="craft-modal-content">
7
- ${K?`<div class="craft-modal-header"><h2>${K}</h2></div>`:""}
8
- <div class="craft-modal-body">${q}</div>
9
- </div>
10
- </dialog>`}},tabs:{nativeType:"craft-tabs",fallbackTag:"div",fallbackClasses:"craft-tabs",nativeProps:["activeTab","tabs"]},accordion:{nativeType:"craft-accordion",fallbackTag:"details",fallbackClasses:"craft-accordion",nativeProps:["open","title"],render:(j,q)=>{let B=j.open?"open":"",K=j.title||"Details";return`<details class="craft-accordion" ${B}>
11
- <summary class="craft-accordion-header">${K}</summary>
12
- <div class="craft-accordion-content">${q}</div>
13
- </details>`}},divider:{nativeType:"craft-divider",fallbackTag:"hr",fallbackClasses:"craft-divider",nativeProps:["orientation","variant"]},table:{nativeType:"craft-table",fallbackTag:"table",fallbackClasses:"craft-table",nativeProps:["columns","rows","sortable","selectable"]},list:{nativeType:"craft-list",fallbackTag:"ul",fallbackClasses:"craft-list",nativeProps:["items","selectable"]},tree:{nativeType:"craft-tree",fallbackTag:"div",fallbackClasses:"craft-tree",nativeProps:["nodes","expandable","selectable"]},alert:{nativeType:"craft-alert",fallbackTag:"div",fallbackClasses:"craft-alert",nativeProps:["variant","title","dismissible"],render:(j,q)=>{let B=j.variant||"info",K=j.title||"";return`<div class="craft-alert craft-alert-${B}" role="alert">
14
- ${K?`<div class="craft-alert-title">${K}</div>`:""}
15
- <div class="craft-alert-content">${q}</div>
16
- </div>`}},toast:{nativeType:"craft-toast",fallbackTag:"div",fallbackClasses:"craft-toast",nativeProps:["variant","duration","position"]},tooltip:{nativeType:"craft-tooltip",fallbackTag:"span",fallbackClasses:"craft-tooltip",nativeProps:["content","position"],render:(j,q)=>{let B=j.content||"",K=j.position||"top";return`<span class="craft-tooltip" data-tooltip="${B}" data-position="${K}">${q}</span>`}},menu:{nativeType:"craft-menu",fallbackTag:"nav",fallbackClasses:"craft-menu",nativeProps:["items","orientation"]},breadcrumb:{nativeType:"craft-breadcrumb",fallbackTag:"nav",fallbackClasses:"craft-breadcrumb",nativeProps:["items","separator"]},sidebar:{nativeType:"craft-sidebar",fallbackTag:"aside",fallbackClasses:"craft-sidebar craft-sidebar-tahoe",nativeProps:["id","variant","material","backgroundEffect","allowsVibrancy","materialOpacity","materialDarkOpacity","minWidth","maxWidth","canCollapse","searchPlaceholder","selectedItem","sections"],render:F},"sidebar-section":{nativeType:"craft-sidebar-section",fallbackTag:"section",fallbackClasses:"craft-sidebar-section",nativeProps:["id","title","header"],render:H},"sidebar-item":{nativeType:"craft-sidebar-item",fallbackTag:"button",fallbackClasses:"craft-sidebar-item",nativeProps:["id","label","icon","badge","tintColor"],render:k},pagination:{nativeType:"craft-pagination",fallbackTag:"nav",fallbackClasses:"craft-pagination",nativeProps:["total","page","pageSize"]},"code-editor":{nativeType:"craft-code-editor",fallbackTag:"textarea",fallbackClasses:"craft-code-editor",nativeProps:["value","language","theme","readonly","lineNumbers"]},"file-browser":{nativeType:"craft-file-browser",fallbackTag:"div",fallbackClasses:"craft-file-browser",nativeProps:["path","showHidden","selectable"]},"color-picker":{nativeType:"craft-color-picker",fallbackTag:"input",fallbackClasses:"craft-color-picker",nativeProps:["value","format"],render:(j,q)=>{return`<input type="color" class="craft-color-picker" value="${j.value||"#000000"}">`}},"date-picker":{nativeType:"craft-date-picker",fallbackTag:"input",fallbackClasses:"craft-date-picker",nativeProps:["value","min","max","format"],render:(j,q)=>{let B=j.value||"",K=j.min||"",L=j.max||"";return`<input type="date" class="craft-date-picker" value="${B}" min="${K}" max="${L}">`}},"time-picker":{nativeType:"craft-time-picker",fallbackTag:"input",fallbackClasses:"craft-time-picker",nativeProps:["value","min","max","step"],render:(j,q)=>{return`<input type="time" class="craft-time-picker" value="${j.value||""}">`}}},N=`
17
- <style id="craft-component-styles">
18
- /* Craft Component Base Styles */
19
- .craft-button {
20
- display: inline-flex;
21
- align-items: center;
22
- justify-content: center;
23
- padding: 8px 16px;
24
- border: none;
25
- border-radius: 6px;
26
- font-family: inherit;
27
- font-size: 14px;
28
- font-weight: 500;
29
- cursor: pointer;
30
- transition: all 0.2s ease;
31
- background: var(--craft-primary, #3b82f6);
32
- color: white;
33
- }
34
- .craft-button:hover { opacity: 0.9; }
35
- .craft-button:disabled { opacity: 0.5; cursor: not-allowed; }
36
- .craft-button-secondary { background: var(--craft-secondary, #6b7280); }
37
- .craft-button-outline { background: transparent; border: 1px solid currentColor; color: var(--craft-primary, #3b82f6); }
38
-
39
- .craft-text-input, .craft-textarea, .craft-select {
40
- padding: 8px 12px;
41
- border: 1px solid var(--craft-border, #d1d5db);
42
- border-radius: 6px;
43
- font-family: inherit;
44
- font-size: 14px;
45
- background: var(--craft-bg, #fff);
46
- color: var(--craft-text, #1f2937);
47
- transition: border-color 0.2s ease;
48
- }
49
- .craft-text-input:focus, .craft-textarea:focus, .craft-select:focus {
50
- outline: none;
51
- border-color: var(--craft-primary, #3b82f6);
52
- box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
53
- }
54
-
55
- .craft-checkbox-wrapper {
56
- display: inline-flex;
57
- align-items: center;
58
- gap: 8px;
59
- cursor: pointer;
60
- }
61
- .craft-checkbox {
62
- width: 18px;
63
- height: 18px;
64
- cursor: pointer;
65
- }
66
-
67
- .craft-slider {
68
- width: 100%;
69
- height: 6px;
70
- border-radius: 3px;
71
- cursor: pointer;
72
- }
73
-
74
- .craft-badge {
75
- display: inline-flex;
76
- align-items: center;
77
- padding: 2px 8px;
78
- border-radius: 9999px;
79
- font-size: 12px;
80
- font-weight: 500;
81
- background: var(--craft-primary, #3b82f6);
82
- color: white;
83
- }
84
-
85
- .craft-avatar {
86
- display: inline-flex;
87
- align-items: center;
88
- justify-content: center;
89
- background: var(--craft-secondary, #6b7280);
90
- color: white;
91
- font-weight: 600;
92
- overflow: hidden;
93
- }
94
- .craft-avatar img { width: 100%; height: 100%; object-fit: cover; }
95
-
96
- .craft-progress {
97
- width: 100%;
98
- height: 8px;
99
- background: var(--craft-border, #e5e7eb);
100
- border-radius: 4px;
101
- overflow: hidden;
102
- }
103
- .craft-progress-bar {
104
- height: 100%;
105
- background: var(--craft-primary, #3b82f6);
106
- transition: width 0.3s ease;
107
- }
108
-
109
- .craft-spinner {
110
- border: 2px solid var(--craft-border, #e5e7eb);
111
- border-top-color: var(--craft-primary, #3b82f6);
112
- border-radius: 50%;
113
- animation: craft-spin 0.8s linear infinite;
114
- }
115
- @keyframes craft-spin { to { transform: rotate(360deg); } }
116
-
117
- .craft-card {
118
- background: var(--craft-bg, #fff);
119
- border: 1px solid var(--craft-border, #e5e7eb);
120
- border-radius: 8px;
121
- padding: 16px;
122
- box-shadow: 0 1px 3px rgba(0,0,0,0.1);
123
- }
124
-
125
- .craft-modal {
126
- border: none;
127
- border-radius: 12px;
128
- padding: 0;
129
- max-width: 90vw;
130
- max-height: 90vh;
131
- box-shadow: 0 25px 50px -12px rgba(0,0,0,0.25);
132
- }
133
- .craft-modal::backdrop { background: rgba(0,0,0,0.5); }
134
- .craft-modal-header {
135
- padding: 16px 20px;
136
- border-bottom: 1px solid var(--craft-border, #e5e7eb);
137
- }
138
- .craft-modal-header h2 { margin: 0; font-size: 18px; }
139
- .craft-modal-body { padding: 20px; }
140
-
141
- .craft-accordion {
142
- border: 1px solid var(--craft-border, #e5e7eb);
143
- border-radius: 6px;
144
- overflow: hidden;
145
- }
146
- .craft-accordion-header {
147
- padding: 12px 16px;
148
- cursor: pointer;
149
- font-weight: 500;
150
- background: var(--craft-bg-secondary, #f9fafb);
151
- }
152
- .craft-accordion-content { padding: 16px; }
153
-
154
- .craft-divider {
155
- border: none;
156
- border-top: 1px solid var(--craft-border, #e5e7eb);
157
- margin: 16px 0;
158
- }
159
-
160
- .craft-alert {
161
- padding: 12px 16px;
162
- border-radius: 6px;
163
- border-left: 4px solid;
164
- }
165
- .craft-alert-info { background: #eff6ff; border-color: #3b82f6; color: #1e40af; }
166
- .craft-alert-success { background: #f0fdf4; border-color: #22c55e; color: #166534; }
167
- .craft-alert-warning { background: #fffbeb; border-color: #f59e0b; color: #92400e; }
168
- .craft-alert-error { background: #fef2f2; border-color: #ef4444; color: #991b1b; }
169
- .craft-alert-title { font-weight: 600; margin-bottom: 4px; }
170
-
171
- .craft-tooltip {
172
- position: relative;
173
- cursor: help;
174
- }
175
- .craft-tooltip::after {
176
- content: attr(data-tooltip);
177
- position: absolute;
178
- bottom: 100%;
179
- left: 50%;
180
- transform: translateX(-50%);
181
- padding: 4px 8px;
182
- background: #1f2937;
183
- color: white;
184
- font-size: 12px;
185
- border-radius: 4px;
186
- white-space: nowrap;
187
- opacity: 0;
188
- pointer-events: none;
189
- transition: opacity 0.2s;
190
- }
191
- .craft-tooltip:hover::after { opacity: 1; }
192
-
193
- .craft-table {
194
- width: 100%;
195
- border-collapse: collapse;
196
- }
197
- .craft-table th, .craft-table td {
198
- padding: 12px;
199
- text-align: left;
200
- border-bottom: 1px solid var(--craft-border, #e5e7eb);
201
- }
202
- .craft-table th { font-weight: 600; background: var(--craft-bg-secondary, #f9fafb); }
203
-
204
- .craft-list {
205
- list-style: none;
206
- padding: 0;
207
- margin: 0;
208
- }
209
- .craft-list li {
210
- padding: 12px;
211
- border-bottom: 1px solid var(--craft-border, #e5e7eb);
212
- }
213
- .craft-list li:last-child { border-bottom: none; }
214
-
215
- .craft-sidebar {
216
- --craft-sidebar-width: 286px;
217
- --craft-sidebar-bg: rgba(255, 255, 255, 0.68);
218
- --craft-sidebar-border: rgba(255, 255, 255, 0.62);
219
- --craft-sidebar-shadow: 0 24px 70px rgba(15, 23, 42, 0.22), 0 1px 0 rgba(255, 255, 255, 0.72) inset;
220
- --craft-sidebar-text: rgba(24, 24, 27, 0.86);
221
- --craft-sidebar-muted: rgba(63, 63, 70, 0.62);
222
- --craft-sidebar-hover: rgba(255, 255, 255, 0.42);
223
- --craft-sidebar-selected: rgba(10, 132, 255, 0.86);
224
- position: relative;
225
- display: flex;
226
- flex-direction: column;
227
- width: var(--craft-sidebar-width);
228
- min-width: var(--craft-sidebar-width);
229
- height: 100vh;
230
- padding: 58px 10px 12px;
231
- color: var(--craft-sidebar-text);
232
- background:
233
- linear-gradient(135deg, rgba(255,255,255,0.28), rgba(255,255,255,0.08)),
234
- var(--craft-sidebar-bg);
235
- border: 1px solid var(--craft-sidebar-border);
236
- border-radius: 18px;
237
- box-shadow: var(--craft-sidebar-shadow);
238
- backdrop-filter: blur(34px) saturate(180%);
239
- -webkit-backdrop-filter: blur(34px) saturate(180%);
240
- overflow: hidden;
241
- user-select: none;
242
- }
243
- .craft-sidebar::before {
244
- content: "";
245
- position: absolute;
246
- inset: 0;
247
- pointer-events: none;
248
- background:
249
- radial-gradient(circle at 18% 0%, rgba(255,255,255,0.68), transparent 32%),
250
- linear-gradient(100deg, transparent 0%, rgba(255,255,255,0.30) 42%, transparent 58%);
251
- mix-blend-mode: screen;
252
- opacity: 0.72;
253
- }
254
- .craft-sidebar[data-native-active="true"] { display: none; }
255
- .craft-sidebar-search {
256
- position: relative;
257
- z-index: 1;
258
- margin: 0 0 12px;
259
- }
260
- .craft-sidebar-search input {
261
- width: 100%;
262
- min-height: 28px;
263
- padding: 5px 10px;
264
- border: 1px solid rgba(0, 0, 0, 0.05);
265
- border-radius: 8px;
266
- background: rgba(255, 255, 255, 0.34);
267
- color: inherit;
268
- font: inherit;
269
- font-size: 13px;
270
- outline: none;
271
- }
272
- .craft-sidebar-section {
273
- position: relative;
274
- z-index: 1;
275
- margin: 0 0 14px;
276
- }
277
- .craft-sidebar-section-title {
278
- padding: 0 8px 5px;
279
- color: var(--craft-sidebar-muted);
280
- font-size: 11px;
281
- font-weight: 700;
282
- letter-spacing: 0;
283
- text-transform: uppercase;
284
- }
285
- .craft-sidebar-item {
286
- width: calc(100% - 4px);
287
- min-height: 28px;
288
- margin: 1px 2px;
289
- padding: 5px 8px;
290
- display: flex;
291
- align-items: center;
292
- gap: 8px;
293
- border: 0;
294
- border-radius: 8px;
295
- background: transparent;
296
- color: inherit;
297
- font: inherit;
298
- font-size: 13px;
299
- text-align: left;
300
- cursor: default;
301
- }
302
- .craft-sidebar-item:hover { background: var(--craft-sidebar-hover); }
303
- .craft-sidebar-item[data-selected="true"] {
304
- color: white;
305
- background: var(--craft-sidebar-selected);
306
- box-shadow: 0 1px 0 rgba(255,255,255,0.22) inset, 0 8px 18px rgba(10, 132, 255, 0.22);
307
- }
308
- .craft-sidebar-item-icon {
309
- position: relative;
310
- display: inline-block;
311
- width: 16px;
312
- height: 16px;
313
- min-width: 16px;
314
- opacity: 0.82;
315
- overflow: hidden;
316
- color: transparent;
317
- }
318
- .craft-sidebar-item-icon::before {
319
- content: "";
320
- position: absolute;
321
- inset: 2px;
322
- border-radius: 4px;
323
- background: var(--craft-sidebar-icon-color, rgba(63, 63, 70, 0.62));
324
- box-shadow: 0 1px 0 rgba(255,255,255,0.24) inset;
325
- }
326
- .craft-sidebar-item-icon[data-icon*="circle"]::before {
327
- inset: 4px;
328
- border-radius: 999px;
329
- }
330
- .craft-sidebar-item[data-selected="true"] .craft-sidebar-item-icon::before {
331
- background: rgba(255, 255, 255, 0.9);
332
- }
333
- .craft-sidebar-item-label {
334
- flex: 1;
335
- overflow: hidden;
336
- white-space: nowrap;
337
- text-overflow: ellipsis;
338
- }
339
- .craft-sidebar-item-badge {
340
- min-width: 18px;
341
- padding: 1px 6px;
342
- border-radius: 999px;
343
- background: rgba(0, 0, 0, 0.08);
344
- color: var(--craft-sidebar-muted);
345
- font-size: 10px;
346
- font-weight: 700;
347
- text-align: center;
348
- }
349
- .craft-sidebar-item[data-selected="true"] .craft-sidebar-item-badge {
350
- color: white;
351
- background: rgba(255, 255, 255, 0.24);
352
- }
353
-
354
- .craft-code-editor {
355
- font-family: 'SF Mono', 'Fira Code', monospace;
356
- font-size: 13px;
357
- line-height: 1.5;
358
- padding: 12px;
359
- background: #1e1e1e;
360
- color: #d4d4d4;
361
- border-radius: 6px;
362
- resize: vertical;
363
- }
364
-
365
- /* Dark mode support */
366
- @media (prefers-color-scheme: dark) {
367
- .craft-text-input, .craft-textarea, .craft-select, .craft-card {
368
- background: #1f2937;
369
- color: #f3f4f6;
370
- border-color: #374151;
371
- }
372
- .craft-modal {
373
- background: #1f2937;
374
- color: #f3f4f6;
375
- }
376
- .craft-accordion-header { background: #374151; }
377
- .craft-table th { background: #374151; }
378
- .craft-sidebar {
379
- --craft-sidebar-bg: rgba(24, 24, 27, 0.58);
380
- --craft-sidebar-border: rgba(255, 255, 255, 0.12);
381
- --craft-sidebar-shadow: 0 26px 74px rgba(0, 0, 0, 0.44), 0 1px 0 rgba(255, 255, 255, 0.11) inset;
382
- --craft-sidebar-text: rgba(244, 244, 245, 0.92);
383
- --craft-sidebar-muted: rgba(212, 212, 216, 0.58);
384
- --craft-sidebar-hover: rgba(255, 255, 255, 0.10);
385
- }
386
- .craft-sidebar-search input {
387
- border-color: rgba(255,255,255,0.08);
388
- background: rgba(255,255,255,0.08);
389
- }
390
- }
391
- </style>
392
- `,C=`
393
- <script id="craft-component-runtime">
394
- (function() {
395
- if (window.__stxCraftComponentRuntime) return;
396
- window.__stxCraftComponentRuntime = true;
397
-
398
- function parseConfig(sidebar) {
399
- var id = sidebar.getAttribute('data-craft-sidebar-id');
400
- var script = id && document.querySelector('script[data-craft-sidebar-config="' + id + '"]');
401
- if (!script) return null;
402
- try {
403
- return JSON.parse(script.textContent || '{}');
404
- } catch (error) {
405
- console.warn('[stx] Invalid Craft sidebar config', error);
406
- return null;
407
- }
408
- }
409
-
410
- function getNativeUI() {
411
- if (!window.craft) return null;
412
- var hasNativeHost = window.craft.isCraft?.() ||
413
- !!(window.webkit?.messageHandlers?.craft || window.CraftBridge || window.craftIPC);
414
- if (!hasNativeHost) return null;
415
- return window.craft.nativeUI || window.craft.components;
416
- }
417
-
418
- function initializeSidebar(sidebar) {
419
- if (sidebar.dataset.craftInitialized === 'true') return;
420
- if (sidebar.dataset.native === 'false') return;
421
-
422
- var nativeUI = getNativeUI();
423
- if (!nativeUI || typeof nativeUI.createSidebar !== 'function') return;
424
-
425
- var config = parseConfig(sidebar);
426
- if (!config) return;
427
-
428
- try {
429
- var nativeConfig = Object.assign({}, config);
430
- delete nativeConfig.sections;
431
- var nativeSidebar = nativeUI.createSidebar(nativeConfig);
432
- if (nativeSidebar && config.sections) {
433
- config.sections.forEach(function(section) {
434
- if (nativeSidebar.addSection) nativeSidebar.addSection(section);
435
- });
436
- }
437
- if (nativeSidebar && config.selectedItem && nativeSidebar.setSelectedItem) {
438
- nativeSidebar.setSelectedItem(config.selectedItem);
439
- }
440
- if (nativeSidebar && nativeSidebar.onSelect) {
441
- nativeSidebar.onSelect(function(itemId) {
442
- sidebar.dispatchEvent(new CustomEvent('craft-sidebar:select', {
443
- bubbles: true,
444
- detail: { itemId: itemId, sidebarId: config.id }
445
- }));
446
- });
447
- }
448
- sidebar.dataset.craftInitialized = 'true';
449
- sidebar.dataset.nativeActive = 'true';
450
- window.__stxCraftNativeSidebars = window.__stxCraftNativeSidebars || {};
451
- window.__stxCraftNativeSidebars[config.id] = nativeSidebar;
452
- } catch (error) {
453
- sidebar.dataset.nativeError = error.message || 'unknown';
454
- console.warn('[stx] Failed to create native Craft sidebar', error);
455
- }
456
- }
457
-
458
- function initializeCraftComponents() {
459
- document.querySelectorAll('[data-craft-native-sidebar]').forEach(initializeSidebar);
460
- }
461
-
462
- if (document.readyState === 'loading') {
463
- document.addEventListener('DOMContentLoaded', initializeCraftComponents);
464
- } else {
465
- initializeCraftComponents();
466
- }
467
- window.addEventListener('craft:ready', initializeCraftComponents);
468
- document.addEventListener('craft:nativeui:ready', initializeCraftComponents);
469
- })();
470
- </script>
471
- `;function _(j,q={}){let{classPrefix:B="craft"}=q;if(!j.includes("craft-component-styles"))if(j.includes("</head>"))j=j.replace("</head>",`
472
- <style id="craft-component-styles">
473
- /* Craft Component Base Styles */
474
- .craft-button {
475
- display: inline-flex;
476
- align-items: center;
477
- justify-content: center;
478
- padding: 8px 16px;
479
- border: none;
480
- border-radius: 6px;
481
- font-family: inherit;
482
- font-size: 14px;
483
- font-weight: 500;
484
- cursor: pointer;
485
- transition: all 0.2s ease;
486
- background: var(--craft-primary, #3b82f6);
487
- color: white;
488
- }
489
- .craft-button:hover { opacity: 0.9; }
490
- .craft-button:disabled { opacity: 0.5; cursor: not-allowed; }
491
- .craft-button-secondary { background: var(--craft-secondary, #6b7280); }
492
- .craft-button-outline { background: transparent; border: 1px solid currentColor; color: var(--craft-primary, #3b82f6); }
493
-
494
- .craft-text-input, .craft-textarea, .craft-select {
495
- padding: 8px 12px;
496
- border: 1px solid var(--craft-border, #d1d5db);
497
- border-radius: 6px;
498
- font-family: inherit;
499
- font-size: 14px;
500
- background: var(--craft-bg, #fff);
501
- color: var(--craft-text, #1f2937);
502
- transition: border-color 0.2s ease;
503
- }
504
- .craft-text-input:focus, .craft-textarea:focus, .craft-select:focus {
505
- outline: none;
506
- border-color: var(--craft-primary, #3b82f6);
507
- box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
508
- }
509
-
510
- .craft-checkbox-wrapper {
511
- display: inline-flex;
512
- align-items: center;
513
- gap: 8px;
514
- cursor: pointer;
515
- }
516
- .craft-checkbox {
517
- width: 18px;
518
- height: 18px;
519
- cursor: pointer;
520
- }
521
-
522
- .craft-slider {
523
- width: 100%;
524
- height: 6px;
525
- border-radius: 3px;
526
- cursor: pointer;
527
- }
528
-
529
- .craft-badge {
530
- display: inline-flex;
531
- align-items: center;
532
- padding: 2px 8px;
533
- border-radius: 9999px;
534
- font-size: 12px;
535
- font-weight: 500;
536
- background: var(--craft-primary, #3b82f6);
537
- color: white;
538
- }
539
-
540
- .craft-avatar {
541
- display: inline-flex;
542
- align-items: center;
543
- justify-content: center;
544
- background: var(--craft-secondary, #6b7280);
545
- color: white;
546
- font-weight: 600;
547
- overflow: hidden;
548
- }
549
- .craft-avatar img { width: 100%; height: 100%; object-fit: cover; }
550
-
551
- .craft-progress {
552
- width: 100%;
553
- height: 8px;
554
- background: var(--craft-border, #e5e7eb);
555
- border-radius: 4px;
556
- overflow: hidden;
557
- }
558
- .craft-progress-bar {
559
- height: 100%;
560
- background: var(--craft-primary, #3b82f6);
561
- transition: width 0.3s ease;
562
- }
563
-
564
- .craft-spinner {
565
- border: 2px solid var(--craft-border, #e5e7eb);
566
- border-top-color: var(--craft-primary, #3b82f6);
567
- border-radius: 50%;
568
- animation: craft-spin 0.8s linear infinite;
569
- }
570
- @keyframes craft-spin { to { transform: rotate(360deg); } }
571
-
572
- .craft-card {
573
- background: var(--craft-bg, #fff);
574
- border: 1px solid var(--craft-border, #e5e7eb);
575
- border-radius: 8px;
576
- padding: 16px;
577
- box-shadow: 0 1px 3px rgba(0,0,0,0.1);
578
- }
579
-
580
- .craft-modal {
581
- border: none;
582
- border-radius: 12px;
583
- padding: 0;
584
- max-width: 90vw;
585
- max-height: 90vh;
586
- box-shadow: 0 25px 50px -12px rgba(0,0,0,0.25);
587
- }
588
- .craft-modal::backdrop { background: rgba(0,0,0,0.5); }
589
- .craft-modal-header {
590
- padding: 16px 20px;
591
- border-bottom: 1px solid var(--craft-border, #e5e7eb);
592
- }
593
- .craft-modal-header h2 { margin: 0; font-size: 18px; }
594
- .craft-modal-body { padding: 20px; }
595
-
596
- .craft-accordion {
597
- border: 1px solid var(--craft-border, #e5e7eb);
598
- border-radius: 6px;
599
- overflow: hidden;
600
- }
601
- .craft-accordion-header {
602
- padding: 12px 16px;
603
- cursor: pointer;
604
- font-weight: 500;
605
- background: var(--craft-bg-secondary, #f9fafb);
606
- }
607
- .craft-accordion-content { padding: 16px; }
608
-
609
- .craft-divider {
610
- border: none;
611
- border-top: 1px solid var(--craft-border, #e5e7eb);
612
- margin: 16px 0;
613
- }
614
-
615
- .craft-alert {
616
- padding: 12px 16px;
617
- border-radius: 6px;
618
- border-left: 4px solid;
619
- }
620
- .craft-alert-info { background: #eff6ff; border-color: #3b82f6; color: #1e40af; }
621
- .craft-alert-success { background: #f0fdf4; border-color: #22c55e; color: #166534; }
622
- .craft-alert-warning { background: #fffbeb; border-color: #f59e0b; color: #92400e; }
623
- .craft-alert-error { background: #fef2f2; border-color: #ef4444; color: #991b1b; }
624
- .craft-alert-title { font-weight: 600; margin-bottom: 4px; }
625
-
626
- .craft-tooltip {
627
- position: relative;
628
- cursor: help;
629
- }
630
- .craft-tooltip::after {
631
- content: attr(data-tooltip);
632
- position: absolute;
633
- bottom: 100%;
634
- left: 50%;
635
- transform: translateX(-50%);
636
- padding: 4px 8px;
637
- background: #1f2937;
638
- color: white;
639
- font-size: 12px;
640
- border-radius: 4px;
641
- white-space: nowrap;
642
- opacity: 0;
643
- pointer-events: none;
644
- transition: opacity 0.2s;
645
- }
646
- .craft-tooltip:hover::after { opacity: 1; }
647
-
648
- .craft-table {
649
- width: 100%;
650
- border-collapse: collapse;
651
- }
652
- .craft-table th, .craft-table td {
653
- padding: 12px;
654
- text-align: left;
655
- border-bottom: 1px solid var(--craft-border, #e5e7eb);
656
- }
657
- .craft-table th { font-weight: 600; background: var(--craft-bg-secondary, #f9fafb); }
658
-
659
- .craft-list {
660
- list-style: none;
661
- padding: 0;
662
- margin: 0;
663
- }
664
- .craft-list li {
665
- padding: 12px;
666
- border-bottom: 1px solid var(--craft-border, #e5e7eb);
667
- }
668
- .craft-list li:last-child { border-bottom: none; }
669
-
670
- .craft-sidebar {
671
- --craft-sidebar-width: 286px;
672
- --craft-sidebar-bg: rgba(255, 255, 255, 0.68);
673
- --craft-sidebar-border: rgba(255, 255, 255, 0.62);
674
- --craft-sidebar-shadow: 0 24px 70px rgba(15, 23, 42, 0.22), 0 1px 0 rgba(255, 255, 255, 0.72) inset;
675
- --craft-sidebar-text: rgba(24, 24, 27, 0.86);
676
- --craft-sidebar-muted: rgba(63, 63, 70, 0.62);
677
- --craft-sidebar-hover: rgba(255, 255, 255, 0.42);
678
- --craft-sidebar-selected: rgba(10, 132, 255, 0.86);
679
- position: relative;
680
- display: flex;
681
- flex-direction: column;
682
- width: var(--craft-sidebar-width);
683
- min-width: var(--craft-sidebar-width);
684
- height: 100vh;
685
- padding: 58px 10px 12px;
686
- color: var(--craft-sidebar-text);
687
- background:
688
- linear-gradient(135deg, rgba(255,255,255,0.28), rgba(255,255,255,0.08)),
689
- var(--craft-sidebar-bg);
690
- border: 1px solid var(--craft-sidebar-border);
691
- border-radius: 18px;
692
- box-shadow: var(--craft-sidebar-shadow);
693
- backdrop-filter: blur(34px) saturate(180%);
694
- -webkit-backdrop-filter: blur(34px) saturate(180%);
695
- overflow: hidden;
696
- user-select: none;
697
- }
698
- .craft-sidebar::before {
699
- content: "";
700
- position: absolute;
701
- inset: 0;
702
- pointer-events: none;
703
- background:
704
- radial-gradient(circle at 18% 0%, rgba(255,255,255,0.68), transparent 32%),
705
- linear-gradient(100deg, transparent 0%, rgba(255,255,255,0.30) 42%, transparent 58%);
706
- mix-blend-mode: screen;
707
- opacity: 0.72;
708
- }
709
- .craft-sidebar[data-native-active="true"] { display: none; }
710
- .craft-sidebar-search {
711
- position: relative;
712
- z-index: 1;
713
- margin: 0 0 12px;
714
- }
715
- .craft-sidebar-search input {
716
- width: 100%;
717
- min-height: 28px;
718
- padding: 5px 10px;
719
- border: 1px solid rgba(0, 0, 0, 0.05);
720
- border-radius: 8px;
721
- background: rgba(255, 255, 255, 0.34);
722
- color: inherit;
723
- font: inherit;
724
- font-size: 13px;
725
- outline: none;
726
- }
727
- .craft-sidebar-section {
728
- position: relative;
729
- z-index: 1;
730
- margin: 0 0 14px;
731
- }
732
- .craft-sidebar-section-title {
733
- padding: 0 8px 5px;
734
- color: var(--craft-sidebar-muted);
735
- font-size: 11px;
736
- font-weight: 700;
737
- letter-spacing: 0;
738
- text-transform: uppercase;
739
- }
740
- .craft-sidebar-item {
741
- width: calc(100% - 4px);
742
- min-height: 28px;
743
- margin: 1px 2px;
744
- padding: 5px 8px;
745
- display: flex;
746
- align-items: center;
747
- gap: 8px;
748
- border: 0;
749
- border-radius: 8px;
750
- background: transparent;
751
- color: inherit;
752
- font: inherit;
753
- font-size: 13px;
754
- text-align: left;
755
- cursor: default;
756
- }
757
- .craft-sidebar-item:hover { background: var(--craft-sidebar-hover); }
758
- .craft-sidebar-item[data-selected="true"] {
759
- color: white;
760
- background: var(--craft-sidebar-selected);
761
- box-shadow: 0 1px 0 rgba(255,255,255,0.22) inset, 0 8px 18px rgba(10, 132, 255, 0.22);
762
- }
763
- .craft-sidebar-item-icon {
764
- position: relative;
765
- display: inline-block;
766
- width: 16px;
767
- height: 16px;
768
- min-width: 16px;
769
- opacity: 0.82;
770
- overflow: hidden;
771
- color: transparent;
772
- }
773
- .craft-sidebar-item-icon::before {
774
- content: "";
775
- position: absolute;
776
- inset: 2px;
777
- border-radius: 4px;
778
- background: var(--craft-sidebar-icon-color, rgba(63, 63, 70, 0.62));
779
- box-shadow: 0 1px 0 rgba(255,255,255,0.24) inset;
780
- }
781
- .craft-sidebar-item-icon[data-icon*="circle"]::before {
782
- inset: 4px;
783
- border-radius: 999px;
784
- }
785
- .craft-sidebar-item[data-selected="true"] .craft-sidebar-item-icon::before {
786
- background: rgba(255, 255, 255, 0.9);
787
- }
788
- .craft-sidebar-item-label {
789
- flex: 1;
790
- overflow: hidden;
791
- white-space: nowrap;
792
- text-overflow: ellipsis;
793
- }
794
- .craft-sidebar-item-badge {
795
- min-width: 18px;
796
- padding: 1px 6px;
797
- border-radius: 999px;
798
- background: rgba(0, 0, 0, 0.08);
799
- color: var(--craft-sidebar-muted);
800
- font-size: 10px;
801
- font-weight: 700;
802
- text-align: center;
803
- }
804
- .craft-sidebar-item[data-selected="true"] .craft-sidebar-item-badge {
805
- color: white;
806
- background: rgba(255, 255, 255, 0.24);
807
- }
808
-
809
- .craft-code-editor {
810
- font-family: 'SF Mono', 'Fira Code', monospace;
811
- font-size: 13px;
812
- line-height: 1.5;
813
- padding: 12px;
814
- background: #1e1e1e;
815
- color: #d4d4d4;
816
- border-radius: 6px;
817
- resize: vertical;
818
- }
819
-
820
- /* Dark mode support */
821
- @media (prefers-color-scheme: dark) {
822
- .craft-text-input, .craft-textarea, .craft-select, .craft-card {
823
- background: #1f2937;
824
- color: #f3f4f6;
825
- border-color: #374151;
826
- }
827
- .craft-modal {
828
- background: #1f2937;
829
- color: #f3f4f6;
830
- }
831
- .craft-accordion-header { background: #374151; }
832
- .craft-table th { background: #374151; }
833
- .craft-sidebar {
834
- --craft-sidebar-bg: rgba(24, 24, 27, 0.58);
835
- --craft-sidebar-border: rgba(255, 255, 255, 0.12);
836
- --craft-sidebar-shadow: 0 26px 74px rgba(0, 0, 0, 0.44), 0 1px 0 rgba(255, 255, 255, 0.11) inset;
837
- --craft-sidebar-text: rgba(244, 244, 245, 0.92);
838
- --craft-sidebar-muted: rgba(212, 212, 216, 0.58);
839
- --craft-sidebar-hover: rgba(255, 255, 255, 0.10);
840
- }
841
- .craft-sidebar-search input {
842
- border-color: rgba(255,255,255,0.08);
843
- background: rgba(255,255,255,0.08);
844
- }
845
- }
846
- </style>
847
-
848
- </head>`);else if(j.includes("<style>"))j=j.replace("<style>",`
849
- <style id="craft-component-styles">
850
- /* Craft Component Base Styles */
851
- .craft-button {
852
- display: inline-flex;
853
- align-items: center;
854
- justify-content: center;
855
- padding: 8px 16px;
856
- border: none;
857
- border-radius: 6px;
858
- font-family: inherit;
859
- font-size: 14px;
860
- font-weight: 500;
861
- cursor: pointer;
862
- transition: all 0.2s ease;
863
- background: var(--craft-primary, #3b82f6);
864
- color: white;
865
- }
866
- .craft-button:hover { opacity: 0.9; }
867
- .craft-button:disabled { opacity: 0.5; cursor: not-allowed; }
868
- .craft-button-secondary { background: var(--craft-secondary, #6b7280); }
869
- .craft-button-outline { background: transparent; border: 1px solid currentColor; color: var(--craft-primary, #3b82f6); }
870
-
871
- .craft-text-input, .craft-textarea, .craft-select {
872
- padding: 8px 12px;
873
- border: 1px solid var(--craft-border, #d1d5db);
874
- border-radius: 6px;
875
- font-family: inherit;
876
- font-size: 14px;
877
- background: var(--craft-bg, #fff);
878
- color: var(--craft-text, #1f2937);
879
- transition: border-color 0.2s ease;
880
- }
881
- .craft-text-input:focus, .craft-textarea:focus, .craft-select:focus {
882
- outline: none;
883
- border-color: var(--craft-primary, #3b82f6);
884
- box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
885
- }
886
-
887
- .craft-checkbox-wrapper {
888
- display: inline-flex;
889
- align-items: center;
890
- gap: 8px;
891
- cursor: pointer;
892
- }
893
- .craft-checkbox {
894
- width: 18px;
895
- height: 18px;
896
- cursor: pointer;
897
- }
898
-
899
- .craft-slider {
900
- width: 100%;
901
- height: 6px;
902
- border-radius: 3px;
903
- cursor: pointer;
904
- }
905
-
906
- .craft-badge {
907
- display: inline-flex;
908
- align-items: center;
909
- padding: 2px 8px;
910
- border-radius: 9999px;
911
- font-size: 12px;
912
- font-weight: 500;
913
- background: var(--craft-primary, #3b82f6);
914
- color: white;
915
- }
916
-
917
- .craft-avatar {
918
- display: inline-flex;
919
- align-items: center;
920
- justify-content: center;
921
- background: var(--craft-secondary, #6b7280);
922
- color: white;
923
- font-weight: 600;
924
- overflow: hidden;
925
- }
926
- .craft-avatar img { width: 100%; height: 100%; object-fit: cover; }
927
-
928
- .craft-progress {
929
- width: 100%;
930
- height: 8px;
931
- background: var(--craft-border, #e5e7eb);
932
- border-radius: 4px;
933
- overflow: hidden;
934
- }
935
- .craft-progress-bar {
936
- height: 100%;
937
- background: var(--craft-primary, #3b82f6);
938
- transition: width 0.3s ease;
939
- }
940
-
941
- .craft-spinner {
942
- border: 2px solid var(--craft-border, #e5e7eb);
943
- border-top-color: var(--craft-primary, #3b82f6);
944
- border-radius: 50%;
945
- animation: craft-spin 0.8s linear infinite;
946
- }
947
- @keyframes craft-spin { to { transform: rotate(360deg); } }
948
-
949
- .craft-card {
950
- background: var(--craft-bg, #fff);
951
- border: 1px solid var(--craft-border, #e5e7eb);
952
- border-radius: 8px;
953
- padding: 16px;
954
- box-shadow: 0 1px 3px rgba(0,0,0,0.1);
955
- }
956
-
957
- .craft-modal {
958
- border: none;
959
- border-radius: 12px;
960
- padding: 0;
961
- max-width: 90vw;
962
- max-height: 90vh;
963
- box-shadow: 0 25px 50px -12px rgba(0,0,0,0.25);
964
- }
965
- .craft-modal::backdrop { background: rgba(0,0,0,0.5); }
966
- .craft-modal-header {
967
- padding: 16px 20px;
968
- border-bottom: 1px solid var(--craft-border, #e5e7eb);
969
- }
970
- .craft-modal-header h2 { margin: 0; font-size: 18px; }
971
- .craft-modal-body { padding: 20px; }
972
-
973
- .craft-accordion {
974
- border: 1px solid var(--craft-border, #e5e7eb);
975
- border-radius: 6px;
976
- overflow: hidden;
977
- }
978
- .craft-accordion-header {
979
- padding: 12px 16px;
980
- cursor: pointer;
981
- font-weight: 500;
982
- background: var(--craft-bg-secondary, #f9fafb);
983
- }
984
- .craft-accordion-content { padding: 16px; }
985
-
986
- .craft-divider {
987
- border: none;
988
- border-top: 1px solid var(--craft-border, #e5e7eb);
989
- margin: 16px 0;
990
- }
991
-
992
- .craft-alert {
993
- padding: 12px 16px;
994
- border-radius: 6px;
995
- border-left: 4px solid;
996
- }
997
- .craft-alert-info { background: #eff6ff; border-color: #3b82f6; color: #1e40af; }
998
- .craft-alert-success { background: #f0fdf4; border-color: #22c55e; color: #166534; }
999
- .craft-alert-warning { background: #fffbeb; border-color: #f59e0b; color: #92400e; }
1000
- .craft-alert-error { background: #fef2f2; border-color: #ef4444; color: #991b1b; }
1001
- .craft-alert-title { font-weight: 600; margin-bottom: 4px; }
1002
-
1003
- .craft-tooltip {
1004
- position: relative;
1005
- cursor: help;
1006
- }
1007
- .craft-tooltip::after {
1008
- content: attr(data-tooltip);
1009
- position: absolute;
1010
- bottom: 100%;
1011
- left: 50%;
1012
- transform: translateX(-50%);
1013
- padding: 4px 8px;
1014
- background: #1f2937;
1015
- color: white;
1016
- font-size: 12px;
1017
- border-radius: 4px;
1018
- white-space: nowrap;
1019
- opacity: 0;
1020
- pointer-events: none;
1021
- transition: opacity 0.2s;
1022
- }
1023
- .craft-tooltip:hover::after { opacity: 1; }
1024
-
1025
- .craft-table {
1026
- width: 100%;
1027
- border-collapse: collapse;
1028
- }
1029
- .craft-table th, .craft-table td {
1030
- padding: 12px;
1031
- text-align: left;
1032
- border-bottom: 1px solid var(--craft-border, #e5e7eb);
1033
- }
1034
- .craft-table th { font-weight: 600; background: var(--craft-bg-secondary, #f9fafb); }
1035
-
1036
- .craft-list {
1037
- list-style: none;
1038
- padding: 0;
1039
- margin: 0;
1040
- }
1041
- .craft-list li {
1042
- padding: 12px;
1043
- border-bottom: 1px solid var(--craft-border, #e5e7eb);
1044
- }
1045
- .craft-list li:last-child { border-bottom: none; }
1046
-
1047
- .craft-sidebar {
1048
- --craft-sidebar-width: 286px;
1049
- --craft-sidebar-bg: rgba(255, 255, 255, 0.68);
1050
- --craft-sidebar-border: rgba(255, 255, 255, 0.62);
1051
- --craft-sidebar-shadow: 0 24px 70px rgba(15, 23, 42, 0.22), 0 1px 0 rgba(255, 255, 255, 0.72) inset;
1052
- --craft-sidebar-text: rgba(24, 24, 27, 0.86);
1053
- --craft-sidebar-muted: rgba(63, 63, 70, 0.62);
1054
- --craft-sidebar-hover: rgba(255, 255, 255, 0.42);
1055
- --craft-sidebar-selected: rgba(10, 132, 255, 0.86);
1056
- position: relative;
1057
- display: flex;
1058
- flex-direction: column;
1059
- width: var(--craft-sidebar-width);
1060
- min-width: var(--craft-sidebar-width);
1061
- height: 100vh;
1062
- padding: 58px 10px 12px;
1063
- color: var(--craft-sidebar-text);
1064
- background:
1065
- linear-gradient(135deg, rgba(255,255,255,0.28), rgba(255,255,255,0.08)),
1066
- var(--craft-sidebar-bg);
1067
- border: 1px solid var(--craft-sidebar-border);
1068
- border-radius: 18px;
1069
- box-shadow: var(--craft-sidebar-shadow);
1070
- backdrop-filter: blur(34px) saturate(180%);
1071
- -webkit-backdrop-filter: blur(34px) saturate(180%);
1072
- overflow: hidden;
1073
- user-select: none;
1074
- }
1075
- .craft-sidebar::before {
1076
- content: "";
1077
- position: absolute;
1078
- inset: 0;
1079
- pointer-events: none;
1080
- background:
1081
- radial-gradient(circle at 18% 0%, rgba(255,255,255,0.68), transparent 32%),
1082
- linear-gradient(100deg, transparent 0%, rgba(255,255,255,0.30) 42%, transparent 58%);
1083
- mix-blend-mode: screen;
1084
- opacity: 0.72;
1085
- }
1086
- .craft-sidebar[data-native-active="true"] { display: none; }
1087
- .craft-sidebar-search {
1088
- position: relative;
1089
- z-index: 1;
1090
- margin: 0 0 12px;
1091
- }
1092
- .craft-sidebar-search input {
1093
- width: 100%;
1094
- min-height: 28px;
1095
- padding: 5px 10px;
1096
- border: 1px solid rgba(0, 0, 0, 0.05);
1097
- border-radius: 8px;
1098
- background: rgba(255, 255, 255, 0.34);
1099
- color: inherit;
1100
- font: inherit;
1101
- font-size: 13px;
1102
- outline: none;
1103
- }
1104
- .craft-sidebar-section {
1105
- position: relative;
1106
- z-index: 1;
1107
- margin: 0 0 14px;
1108
- }
1109
- .craft-sidebar-section-title {
1110
- padding: 0 8px 5px;
1111
- color: var(--craft-sidebar-muted);
1112
- font-size: 11px;
1113
- font-weight: 700;
1114
- letter-spacing: 0;
1115
- text-transform: uppercase;
1116
- }
1117
- .craft-sidebar-item {
1118
- width: calc(100% - 4px);
1119
- min-height: 28px;
1120
- margin: 1px 2px;
1121
- padding: 5px 8px;
1122
- display: flex;
1123
- align-items: center;
1124
- gap: 8px;
1125
- border: 0;
1126
- border-radius: 8px;
1127
- background: transparent;
1128
- color: inherit;
1129
- font: inherit;
1130
- font-size: 13px;
1131
- text-align: left;
1132
- cursor: default;
1133
- }
1134
- .craft-sidebar-item:hover { background: var(--craft-sidebar-hover); }
1135
- .craft-sidebar-item[data-selected="true"] {
1136
- color: white;
1137
- background: var(--craft-sidebar-selected);
1138
- box-shadow: 0 1px 0 rgba(255,255,255,0.22) inset, 0 8px 18px rgba(10, 132, 255, 0.22);
1139
- }
1140
- .craft-sidebar-item-icon {
1141
- position: relative;
1142
- display: inline-block;
1143
- width: 16px;
1144
- height: 16px;
1145
- min-width: 16px;
1146
- opacity: 0.82;
1147
- overflow: hidden;
1148
- color: transparent;
1149
- }
1150
- .craft-sidebar-item-icon::before {
1151
- content: "";
1152
- position: absolute;
1153
- inset: 2px;
1154
- border-radius: 4px;
1155
- background: var(--craft-sidebar-icon-color, rgba(63, 63, 70, 0.62));
1156
- box-shadow: 0 1px 0 rgba(255,255,255,0.24) inset;
1157
- }
1158
- .craft-sidebar-item-icon[data-icon*="circle"]::before {
1159
- inset: 4px;
1160
- border-radius: 999px;
1161
- }
1162
- .craft-sidebar-item[data-selected="true"] .craft-sidebar-item-icon::before {
1163
- background: rgba(255, 255, 255, 0.9);
1164
- }
1165
- .craft-sidebar-item-label {
1166
- flex: 1;
1167
- overflow: hidden;
1168
- white-space: nowrap;
1169
- text-overflow: ellipsis;
1170
- }
1171
- .craft-sidebar-item-badge {
1172
- min-width: 18px;
1173
- padding: 1px 6px;
1174
- border-radius: 999px;
1175
- background: rgba(0, 0, 0, 0.08);
1176
- color: var(--craft-sidebar-muted);
1177
- font-size: 10px;
1178
- font-weight: 700;
1179
- text-align: center;
1180
- }
1181
- .craft-sidebar-item[data-selected="true"] .craft-sidebar-item-badge {
1182
- color: white;
1183
- background: rgba(255, 255, 255, 0.24);
1184
- }
1185
-
1186
- .craft-code-editor {
1187
- font-family: 'SF Mono', 'Fira Code', monospace;
1188
- font-size: 13px;
1189
- line-height: 1.5;
1190
- padding: 12px;
1191
- background: #1e1e1e;
1192
- color: #d4d4d4;
1193
- border-radius: 6px;
1194
- resize: vertical;
1195
- }
1196
-
1197
- /* Dark mode support */
1198
- @media (prefers-color-scheme: dark) {
1199
- .craft-text-input, .craft-textarea, .craft-select, .craft-card {
1200
- background: #1f2937;
1201
- color: #f3f4f6;
1202
- border-color: #374151;
1203
- }
1204
- .craft-modal {
1205
- background: #1f2937;
1206
- color: #f3f4f6;
1207
- }
1208
- .craft-accordion-header { background: #374151; }
1209
- .craft-table th { background: #374151; }
1210
- .craft-sidebar {
1211
- --craft-sidebar-bg: rgba(24, 24, 27, 0.58);
1212
- --craft-sidebar-border: rgba(255, 255, 255, 0.12);
1213
- --craft-sidebar-shadow: 0 26px 74px rgba(0, 0, 0, 0.44), 0 1px 0 rgba(255, 255, 255, 0.11) inset;
1214
- --craft-sidebar-text: rgba(244, 244, 245, 0.92);
1215
- --craft-sidebar-muted: rgba(212, 212, 216, 0.58);
1216
- --craft-sidebar-hover: rgba(255, 255, 255, 0.10);
1217
- }
1218
- .craft-sidebar-search input {
1219
- border-color: rgba(255,255,255,0.08);
1220
- background: rgba(255,255,255,0.08);
1221
- }
1222
- }
1223
- </style>
1224
-
1225
- <style>`);else j=`
1226
- <style id="craft-component-styles">
1227
- /* Craft Component Base Styles */
1228
- .craft-button {
1229
- display: inline-flex;
1230
- align-items: center;
1231
- justify-content: center;
1232
- padding: 8px 16px;
1233
- border: none;
1234
- border-radius: 6px;
1235
- font-family: inherit;
1236
- font-size: 14px;
1237
- font-weight: 500;
1238
- cursor: pointer;
1239
- transition: all 0.2s ease;
1240
- background: var(--craft-primary, #3b82f6);
1241
- color: white;
1242
- }
1243
- .craft-button:hover { opacity: 0.9; }
1244
- .craft-button:disabled { opacity: 0.5; cursor: not-allowed; }
1245
- .craft-button-secondary { background: var(--craft-secondary, #6b7280); }
1246
- .craft-button-outline { background: transparent; border: 1px solid currentColor; color: var(--craft-primary, #3b82f6); }
1247
-
1248
- .craft-text-input, .craft-textarea, .craft-select {
1249
- padding: 8px 12px;
1250
- border: 1px solid var(--craft-border, #d1d5db);
1251
- border-radius: 6px;
1252
- font-family: inherit;
1253
- font-size: 14px;
1254
- background: var(--craft-bg, #fff);
1255
- color: var(--craft-text, #1f2937);
1256
- transition: border-color 0.2s ease;
1257
- }
1258
- .craft-text-input:focus, .craft-textarea:focus, .craft-select:focus {
1259
- outline: none;
1260
- border-color: var(--craft-primary, #3b82f6);
1261
- box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
1262
- }
1263
-
1264
- .craft-checkbox-wrapper {
1265
- display: inline-flex;
1266
- align-items: center;
1267
- gap: 8px;
1268
- cursor: pointer;
1269
- }
1270
- .craft-checkbox {
1271
- width: 18px;
1272
- height: 18px;
1273
- cursor: pointer;
1274
- }
1275
-
1276
- .craft-slider {
1277
- width: 100%;
1278
- height: 6px;
1279
- border-radius: 3px;
1280
- cursor: pointer;
1281
- }
1282
-
1283
- .craft-badge {
1284
- display: inline-flex;
1285
- align-items: center;
1286
- padding: 2px 8px;
1287
- border-radius: 9999px;
1288
- font-size: 12px;
1289
- font-weight: 500;
1290
- background: var(--craft-primary, #3b82f6);
1291
- color: white;
1292
- }
1293
-
1294
- .craft-avatar {
1295
- display: inline-flex;
1296
- align-items: center;
1297
- justify-content: center;
1298
- background: var(--craft-secondary, #6b7280);
1299
- color: white;
1300
- font-weight: 600;
1301
- overflow: hidden;
1302
- }
1303
- .craft-avatar img { width: 100%; height: 100%; object-fit: cover; }
1304
-
1305
- .craft-progress {
1306
- width: 100%;
1307
- height: 8px;
1308
- background: var(--craft-border, #e5e7eb);
1309
- border-radius: 4px;
1310
- overflow: hidden;
1311
- }
1312
- .craft-progress-bar {
1313
- height: 100%;
1314
- background: var(--craft-primary, #3b82f6);
1315
- transition: width 0.3s ease;
1316
- }
1317
-
1318
- .craft-spinner {
1319
- border: 2px solid var(--craft-border, #e5e7eb);
1320
- border-top-color: var(--craft-primary, #3b82f6);
1321
- border-radius: 50%;
1322
- animation: craft-spin 0.8s linear infinite;
1323
- }
1324
- @keyframes craft-spin { to { transform: rotate(360deg); } }
1325
-
1326
- .craft-card {
1327
- background: var(--craft-bg, #fff);
1328
- border: 1px solid var(--craft-border, #e5e7eb);
1329
- border-radius: 8px;
1330
- padding: 16px;
1331
- box-shadow: 0 1px 3px rgba(0,0,0,0.1);
1332
- }
1333
-
1334
- .craft-modal {
1335
- border: none;
1336
- border-radius: 12px;
1337
- padding: 0;
1338
- max-width: 90vw;
1339
- max-height: 90vh;
1340
- box-shadow: 0 25px 50px -12px rgba(0,0,0,0.25);
1341
- }
1342
- .craft-modal::backdrop { background: rgba(0,0,0,0.5); }
1343
- .craft-modal-header {
1344
- padding: 16px 20px;
1345
- border-bottom: 1px solid var(--craft-border, #e5e7eb);
1346
- }
1347
- .craft-modal-header h2 { margin: 0; font-size: 18px; }
1348
- .craft-modal-body { padding: 20px; }
1349
-
1350
- .craft-accordion {
1351
- border: 1px solid var(--craft-border, #e5e7eb);
1352
- border-radius: 6px;
1353
- overflow: hidden;
1354
- }
1355
- .craft-accordion-header {
1356
- padding: 12px 16px;
1357
- cursor: pointer;
1358
- font-weight: 500;
1359
- background: var(--craft-bg-secondary, #f9fafb);
1360
- }
1361
- .craft-accordion-content { padding: 16px; }
1362
-
1363
- .craft-divider {
1364
- border: none;
1365
- border-top: 1px solid var(--craft-border, #e5e7eb);
1366
- margin: 16px 0;
1367
- }
1368
-
1369
- .craft-alert {
1370
- padding: 12px 16px;
1371
- border-radius: 6px;
1372
- border-left: 4px solid;
1373
- }
1374
- .craft-alert-info { background: #eff6ff; border-color: #3b82f6; color: #1e40af; }
1375
- .craft-alert-success { background: #f0fdf4; border-color: #22c55e; color: #166534; }
1376
- .craft-alert-warning { background: #fffbeb; border-color: #f59e0b; color: #92400e; }
1377
- .craft-alert-error { background: #fef2f2; border-color: #ef4444; color: #991b1b; }
1378
- .craft-alert-title { font-weight: 600; margin-bottom: 4px; }
1379
-
1380
- .craft-tooltip {
1381
- position: relative;
1382
- cursor: help;
1383
- }
1384
- .craft-tooltip::after {
1385
- content: attr(data-tooltip);
1386
- position: absolute;
1387
- bottom: 100%;
1388
- left: 50%;
1389
- transform: translateX(-50%);
1390
- padding: 4px 8px;
1391
- background: #1f2937;
1392
- color: white;
1393
- font-size: 12px;
1394
- border-radius: 4px;
1395
- white-space: nowrap;
1396
- opacity: 0;
1397
- pointer-events: none;
1398
- transition: opacity 0.2s;
1399
- }
1400
- .craft-tooltip:hover::after { opacity: 1; }
1401
-
1402
- .craft-table {
1403
- width: 100%;
1404
- border-collapse: collapse;
1405
- }
1406
- .craft-table th, .craft-table td {
1407
- padding: 12px;
1408
- text-align: left;
1409
- border-bottom: 1px solid var(--craft-border, #e5e7eb);
1410
- }
1411
- .craft-table th { font-weight: 600; background: var(--craft-bg-secondary, #f9fafb); }
1412
-
1413
- .craft-list {
1414
- list-style: none;
1415
- padding: 0;
1416
- margin: 0;
1417
- }
1418
- .craft-list li {
1419
- padding: 12px;
1420
- border-bottom: 1px solid var(--craft-border, #e5e7eb);
1421
- }
1422
- .craft-list li:last-child { border-bottom: none; }
1423
-
1424
- .craft-sidebar {
1425
- --craft-sidebar-width: 286px;
1426
- --craft-sidebar-bg: rgba(255, 255, 255, 0.68);
1427
- --craft-sidebar-border: rgba(255, 255, 255, 0.62);
1428
- --craft-sidebar-shadow: 0 24px 70px rgba(15, 23, 42, 0.22), 0 1px 0 rgba(255, 255, 255, 0.72) inset;
1429
- --craft-sidebar-text: rgba(24, 24, 27, 0.86);
1430
- --craft-sidebar-muted: rgba(63, 63, 70, 0.62);
1431
- --craft-sidebar-hover: rgba(255, 255, 255, 0.42);
1432
- --craft-sidebar-selected: rgba(10, 132, 255, 0.86);
1433
- position: relative;
1434
- display: flex;
1435
- flex-direction: column;
1436
- width: var(--craft-sidebar-width);
1437
- min-width: var(--craft-sidebar-width);
1438
- height: 100vh;
1439
- padding: 58px 10px 12px;
1440
- color: var(--craft-sidebar-text);
1441
- background:
1442
- linear-gradient(135deg, rgba(255,255,255,0.28), rgba(255,255,255,0.08)),
1443
- var(--craft-sidebar-bg);
1444
- border: 1px solid var(--craft-sidebar-border);
1445
- border-radius: 18px;
1446
- box-shadow: var(--craft-sidebar-shadow);
1447
- backdrop-filter: blur(34px) saturate(180%);
1448
- -webkit-backdrop-filter: blur(34px) saturate(180%);
1449
- overflow: hidden;
1450
- user-select: none;
1451
- }
1452
- .craft-sidebar::before {
1453
- content: "";
1454
- position: absolute;
1455
- inset: 0;
1456
- pointer-events: none;
1457
- background:
1458
- radial-gradient(circle at 18% 0%, rgba(255,255,255,0.68), transparent 32%),
1459
- linear-gradient(100deg, transparent 0%, rgba(255,255,255,0.30) 42%, transparent 58%);
1460
- mix-blend-mode: screen;
1461
- opacity: 0.72;
1462
- }
1463
- .craft-sidebar[data-native-active="true"] { display: none; }
1464
- .craft-sidebar-search {
1465
- position: relative;
1466
- z-index: 1;
1467
- margin: 0 0 12px;
1468
- }
1469
- .craft-sidebar-search input {
1470
- width: 100%;
1471
- min-height: 28px;
1472
- padding: 5px 10px;
1473
- border: 1px solid rgba(0, 0, 0, 0.05);
1474
- border-radius: 8px;
1475
- background: rgba(255, 255, 255, 0.34);
1476
- color: inherit;
1477
- font: inherit;
1478
- font-size: 13px;
1479
- outline: none;
1480
- }
1481
- .craft-sidebar-section {
1482
- position: relative;
1483
- z-index: 1;
1484
- margin: 0 0 14px;
1485
- }
1486
- .craft-sidebar-section-title {
1487
- padding: 0 8px 5px;
1488
- color: var(--craft-sidebar-muted);
1489
- font-size: 11px;
1490
- font-weight: 700;
1491
- letter-spacing: 0;
1492
- text-transform: uppercase;
1493
- }
1494
- .craft-sidebar-item {
1495
- width: calc(100% - 4px);
1496
- min-height: 28px;
1497
- margin: 1px 2px;
1498
- padding: 5px 8px;
1499
- display: flex;
1500
- align-items: center;
1501
- gap: 8px;
1502
- border: 0;
1503
- border-radius: 8px;
1504
- background: transparent;
1505
- color: inherit;
1506
- font: inherit;
1507
- font-size: 13px;
1508
- text-align: left;
1509
- cursor: default;
1510
- }
1511
- .craft-sidebar-item:hover { background: var(--craft-sidebar-hover); }
1512
- .craft-sidebar-item[data-selected="true"] {
1513
- color: white;
1514
- background: var(--craft-sidebar-selected);
1515
- box-shadow: 0 1px 0 rgba(255,255,255,0.22) inset, 0 8px 18px rgba(10, 132, 255, 0.22);
1516
- }
1517
- .craft-sidebar-item-icon {
1518
- position: relative;
1519
- display: inline-block;
1520
- width: 16px;
1521
- height: 16px;
1522
- min-width: 16px;
1523
- opacity: 0.82;
1524
- overflow: hidden;
1525
- color: transparent;
1526
- }
1527
- .craft-sidebar-item-icon::before {
1528
- content: "";
1529
- position: absolute;
1530
- inset: 2px;
1531
- border-radius: 4px;
1532
- background: var(--craft-sidebar-icon-color, rgba(63, 63, 70, 0.62));
1533
- box-shadow: 0 1px 0 rgba(255,255,255,0.24) inset;
1534
- }
1535
- .craft-sidebar-item-icon[data-icon*="circle"]::before {
1536
- inset: 4px;
1537
- border-radius: 999px;
1538
- }
1539
- .craft-sidebar-item[data-selected="true"] .craft-sidebar-item-icon::before {
1540
- background: rgba(255, 255, 255, 0.9);
1541
- }
1542
- .craft-sidebar-item-label {
1543
- flex: 1;
1544
- overflow: hidden;
1545
- white-space: nowrap;
1546
- text-overflow: ellipsis;
1547
- }
1548
- .craft-sidebar-item-badge {
1549
- min-width: 18px;
1550
- padding: 1px 6px;
1551
- border-radius: 999px;
1552
- background: rgba(0, 0, 0, 0.08);
1553
- color: var(--craft-sidebar-muted);
1554
- font-size: 10px;
1555
- font-weight: 700;
1556
- text-align: center;
1557
- }
1558
- .craft-sidebar-item[data-selected="true"] .craft-sidebar-item-badge {
1559
- color: white;
1560
- background: rgba(255, 255, 255, 0.24);
1561
- }
1562
-
1563
- .craft-code-editor {
1564
- font-family: 'SF Mono', 'Fira Code', monospace;
1565
- font-size: 13px;
1566
- line-height: 1.5;
1567
- padding: 12px;
1568
- background: #1e1e1e;
1569
- color: #d4d4d4;
1570
- border-radius: 6px;
1571
- resize: vertical;
1572
- }
1573
-
1574
- /* Dark mode support */
1575
- @media (prefers-color-scheme: dark) {
1576
- .craft-text-input, .craft-textarea, .craft-select, .craft-card {
1577
- background: #1f2937;
1578
- color: #f3f4f6;
1579
- border-color: #374151;
1580
- }
1581
- .craft-modal {
1582
- background: #1f2937;
1583
- color: #f3f4f6;
1584
- }
1585
- .craft-accordion-header { background: #374151; }
1586
- .craft-table th { background: #374151; }
1587
- .craft-sidebar {
1588
- --craft-sidebar-bg: rgba(24, 24, 27, 0.58);
1589
- --craft-sidebar-border: rgba(255, 255, 255, 0.12);
1590
- --craft-sidebar-shadow: 0 26px 74px rgba(0, 0, 0, 0.44), 0 1px 0 rgba(255, 255, 255, 0.11) inset;
1591
- --craft-sidebar-text: rgba(244, 244, 245, 0.92);
1592
- --craft-sidebar-muted: rgba(212, 212, 216, 0.58);
1593
- --craft-sidebar-hover: rgba(255, 255, 255, 0.10);
1594
- }
1595
- .craft-sidebar-search input {
1596
- border-color: rgba(255,255,255,0.08);
1597
- background: rgba(255,255,255,0.08);
1598
- }
1599
- }
1600
- </style>
1601
- `+j;if(!j.includes("craft-component-runtime"))if(j.includes("</body>"))j=j.replace("</body>",`
1602
- <script id="craft-component-runtime">
1603
- (function() {
1604
- if (window.__stxCraftComponentRuntime) return;
1605
- window.__stxCraftComponentRuntime = true;
1606
-
1607
- function parseConfig(sidebar) {
1608
- var id = sidebar.getAttribute('data-craft-sidebar-id');
1609
- var script = id && document.querySelector('script[data-craft-sidebar-config="' + id + '"]');
1610
- if (!script) return null;
1611
- try {
1612
- return JSON.parse(script.textContent || '{}');
1613
- } catch (error) {
1614
- console.warn('[stx] Invalid Craft sidebar config', error);
1615
- return null;
1616
- }
1617
- }
1618
-
1619
- function getNativeUI() {
1620
- if (!window.craft) return null;
1621
- var hasNativeHost = window.craft.isCraft?.() ||
1622
- !!(window.webkit?.messageHandlers?.craft || window.CraftBridge || window.craftIPC);
1623
- if (!hasNativeHost) return null;
1624
- return window.craft.nativeUI || window.craft.components;
1625
- }
1626
-
1627
- function initializeSidebar(sidebar) {
1628
- if (sidebar.dataset.craftInitialized === 'true') return;
1629
- if (sidebar.dataset.native === 'false') return;
1630
-
1631
- var nativeUI = getNativeUI();
1632
- if (!nativeUI || typeof nativeUI.createSidebar !== 'function') return;
1633
-
1634
- var config = parseConfig(sidebar);
1635
- if (!config) return;
1636
-
1637
- try {
1638
- var nativeConfig = Object.assign({}, config);
1639
- delete nativeConfig.sections;
1640
- var nativeSidebar = nativeUI.createSidebar(nativeConfig);
1641
- if (nativeSidebar && config.sections) {
1642
- config.sections.forEach(function(section) {
1643
- if (nativeSidebar.addSection) nativeSidebar.addSection(section);
1644
- });
1645
- }
1646
- if (nativeSidebar && config.selectedItem && nativeSidebar.setSelectedItem) {
1647
- nativeSidebar.setSelectedItem(config.selectedItem);
1648
- }
1649
- if (nativeSidebar && nativeSidebar.onSelect) {
1650
- nativeSidebar.onSelect(function(itemId) {
1651
- sidebar.dispatchEvent(new CustomEvent('craft-sidebar:select', {
1652
- bubbles: true,
1653
- detail: { itemId: itemId, sidebarId: config.id }
1654
- }));
1655
- });
1656
- }
1657
- sidebar.dataset.craftInitialized = 'true';
1658
- sidebar.dataset.nativeActive = 'true';
1659
- window.__stxCraftNativeSidebars = window.__stxCraftNativeSidebars || {};
1660
- window.__stxCraftNativeSidebars[config.id] = nativeSidebar;
1661
- } catch (error) {
1662
- sidebar.dataset.nativeError = error.message || 'unknown';
1663
- console.warn('[stx] Failed to create native Craft sidebar', error);
1664
- }
1665
- }
1666
-
1667
- function initializeCraftComponents() {
1668
- document.querySelectorAll('[data-craft-native-sidebar]').forEach(initializeSidebar);
1669
- }
1670
-
1671
- if (document.readyState === 'loading') {
1672
- document.addEventListener('DOMContentLoaded', initializeCraftComponents);
1673
- } else {
1674
- initializeCraftComponents();
1675
- }
1676
- window.addEventListener('craft:ready', initializeCraftComponents);
1677
- document.addEventListener('craft:nativeui:ready', initializeCraftComponents);
1678
- })();
1679
- </script>
1680
-
1681
- </body>`);else j+=`
1682
- <script id="craft-component-runtime">
1683
- (function() {
1684
- if (window.__stxCraftComponentRuntime) return;
1685
- window.__stxCraftComponentRuntime = true;
1686
-
1687
- function parseConfig(sidebar) {
1688
- var id = sidebar.getAttribute('data-craft-sidebar-id');
1689
- var script = id && document.querySelector('script[data-craft-sidebar-config="' + id + '"]');
1690
- if (!script) return null;
1691
- try {
1692
- return JSON.parse(script.textContent || '{}');
1693
- } catch (error) {
1694
- console.warn('[stx] Invalid Craft sidebar config', error);
1695
- return null;
1696
- }
1697
- }
1698
-
1699
- function getNativeUI() {
1700
- if (!window.craft) return null;
1701
- var hasNativeHost = window.craft.isCraft?.() ||
1702
- !!(window.webkit?.messageHandlers?.craft || window.CraftBridge || window.craftIPC);
1703
- if (!hasNativeHost) return null;
1704
- return window.craft.nativeUI || window.craft.components;
1705
- }
1706
-
1707
- function initializeSidebar(sidebar) {
1708
- if (sidebar.dataset.craftInitialized === 'true') return;
1709
- if (sidebar.dataset.native === 'false') return;
1710
-
1711
- var nativeUI = getNativeUI();
1712
- if (!nativeUI || typeof nativeUI.createSidebar !== 'function') return;
1713
-
1714
- var config = parseConfig(sidebar);
1715
- if (!config) return;
1716
-
1717
- try {
1718
- var nativeConfig = Object.assign({}, config);
1719
- delete nativeConfig.sections;
1720
- var nativeSidebar = nativeUI.createSidebar(nativeConfig);
1721
- if (nativeSidebar && config.sections) {
1722
- config.sections.forEach(function(section) {
1723
- if (nativeSidebar.addSection) nativeSidebar.addSection(section);
1724
- });
1725
- }
1726
- if (nativeSidebar && config.selectedItem && nativeSidebar.setSelectedItem) {
1727
- nativeSidebar.setSelectedItem(config.selectedItem);
1728
- }
1729
- if (nativeSidebar && nativeSidebar.onSelect) {
1730
- nativeSidebar.onSelect(function(itemId) {
1731
- sidebar.dispatchEvent(new CustomEvent('craft-sidebar:select', {
1732
- bubbles: true,
1733
- detail: { itemId: itemId, sidebarId: config.id }
1734
- }));
1735
- });
1736
- }
1737
- sidebar.dataset.craftInitialized = 'true';
1738
- sidebar.dataset.nativeActive = 'true';
1739
- window.__stxCraftNativeSidebars = window.__stxCraftNativeSidebars || {};
1740
- window.__stxCraftNativeSidebars[config.id] = nativeSidebar;
1741
- } catch (error) {
1742
- sidebar.dataset.nativeError = error.message || 'unknown';
1743
- console.warn('[stx] Failed to create native Craft sidebar', error);
1744
- }
1745
- }
1746
-
1747
- function initializeCraftComponents() {
1748
- document.querySelectorAll('[data-craft-native-sidebar]').forEach(initializeSidebar);
1749
- }
1750
-
1751
- if (document.readyState === 'loading') {
1752
- document.addEventListener('DOMContentLoaded', initializeCraftComponents);
1753
- } else {
1754
- initializeCraftComponents();
1755
- }
1756
- window.addEventListener('craft:ready', initializeCraftComponents);
1757
- document.addEventListener('craft:nativeui:ready', initializeCraftComponents);
1758
- })();
1759
- </script>
1760
- `;return j=j.replace(/<@craft-sidebar\s*([^>]*)>([\s\S]*?)<\/@craft-sidebar>/g,(K,L,U)=>{return $("sidebar",L,U.trim(),q,B)}),j=j.replace(/<@craft-sidebar\s*([^>]*?)\/>/g,(K,L)=>{return $("sidebar",L,"",q,B)}),j=j.replace(/<@craft-(\w+[-\w]*)\s*([^>]*?)\/>/g,(K,L,U)=>{return $(L,U,"",q,B)}),j=j.replace(/<@craft-(\w+[-\w]*)\s*([^>]*)>([\s\S]*?)<\/@craft-\1>/g,(K,L,U,V)=>{return $(L,U,V.trim(),q,B)}),j}function $(j,q,B,K,L){let U=K.components?.[j]||w[j];if(!U)return console.warn(`[stx] Unknown Craft component: @craft-${j}`),`<div class="${L}-unknown" data-component="${j}">${B}</div>`;let V=J(q),X=[U.fallbackClasses||`${L}-${j}`];if(V.class)X.push(V.class),delete V.class;if(U.render)return V.__fallbackClasses=X.join(" "),U.render(V,B);let W=x(V,U,X);if(["input","hr","br","img"].includes(U.fallbackTag))return`<${U.fallbackTag} ${W}>`;return`<${U.fallbackTag} ${W}>${B}</${U.fallbackTag}>`}function J(j){let q={},B=/(?::|@)?(\w+[-\w]*)(?:=(?:"([^"]*)"|'([^']*)'))?/g,K;while((K=B.exec(j))!==null){let[L,U,V,X]=K,W=V??X;if(L.startsWith(":"))q[U]=W;else if(L.startsWith("@"))q[`on${U.charAt(0).toUpperCase()}${U.slice(1)}`]=W;else if(W===void 0)q[U]=!0;else q[U]=W}return q}function F(j,q){let B=G(String(j.id||`craft-sidebar-${D(q||JSON.stringify(j))}`)),K=M(j.sections)||O(q),L=String(j.selectedItem||j.selected||K[0]?.items[0]?.id||""),U={id:B,variant:String(j.variant||"desktop"),material:String(j.material||"sidebar"),backgroundEffect:String(j.backgroundEffect||"shimmer"),allowsVibrancy:j.allowsVibrancy!==!1&&j.allowsVibrancy!=="false",materialOpacity:Number(j.materialOpacity??0.68),materialDarkOpacity:j.materialDarkOpacity===void 0?void 0:Number(j.materialDarkOpacity),minWidth:j.minWidth===void 0?240:Number(j.minWidth),maxWidth:j.maxWidth===void 0?340:Number(j.maxWidth),canCollapse:j.canCollapse!==!1&&j.canCollapse!=="false",searchPlaceholder:j.searchPlaceholder?String(j.searchPlaceholder):void 0,selectedItem:L,sections:K},V=String(j.__fallbackClasses||"craft-sidebar craft-sidebar-tahoe"),X=Number(j.width||j.sidebarWidth||286),W=j.native===!1||j.native==="false"?"false":"true",Q=U.searchPlaceholder?`<div class="craft-sidebar-search"><input type="search" placeholder="${Z(U.searchPlaceholder)}"></div>`:"",E=K.length?K.map((R)=>z(R,L)).join(""):q;return`<aside class="${Y(V)}" data-craft="craft-sidebar" data-craft-native-sidebar data-craft-sidebar-id="${Y(B)}" data-native="${W}" style="--craft-sidebar-width:${X}px">
1761
- ${Q}
1762
- ${E}
1763
- </aside>
1764
- <script type="application/json" data-craft-sidebar-config="${Y(B)}">${I(U)}</script>`}function H(j,q){let B=String(j.header||j.title||"");return`<section class="craft-sidebar-section" data-craft="craft-sidebar-section" data-section-id="${Y(String(j.id||"section"))}">
1765
- ${B?`<div class="craft-sidebar-section-title">${Z(B)}</div>`:""}
1766
- ${q}
1767
- </section>`}function k(j,q){let B={id:String(j.id||G(String(j.label||q||"item"))),label:String(j.label||q||""),icon:j.icon?String(j.icon):void 0,badge:j.badge?String(j.badge):void 0,tintColor:j.tintColor?String(j.tintColor):void 0};return y(B,String(j.selected||"")==="true")}function O(j){let q=[],B=/<@craft-sidebar-section\s*([^>]*?)(?:\/>|>([\s\S]*?)<\/@craft-sidebar-section>)/g,K;while((K=B.exec(j))!==null){let L=J(K[1]||""),U=K[2]||"",V=String(L.id||G(String(L.header||L.title||`section-${q.length+1}`))),X=String(L.header||L.title||V),W=T(U);q.push({id:V,header:X,title:X,items:W})}return q}function T(j){let q=[],B=/<@craft-sidebar-item\s*([^>]*?)(?:\/>|>([\s\S]*?)<\/@craft-sidebar-item>)/g,K;while((K=B.exec(j))!==null){let L=J(K[1]||""),U=String(L.label||(K[2]||"").replace(/<[^>]*>/g,"").trim()),V=String(L.id||G(U||`item-${q.length+1}`));q.push({id:V,label:U,icon:L.icon?String(L.icon):void 0,badge:L.badge?String(L.badge):void 0,tintColor:L.tintColor?String(L.tintColor):void 0})}return q}function M(j){if(!j)return;if(Array.isArray(j))return j;if(typeof j!=="string")return;try{let q=JSON.parse(j);return Array.isArray(q)?q:void 0}catch{return}}function z(j,q){let B=j.header||j.title||j.id;return`<section class="craft-sidebar-section" data-section-id="${Y(j.id)}">
1768
- <div class="craft-sidebar-section-title">${Z(B)}</div>
1769
- ${j.items.map((K)=>y(K,K.id===q)).join("")}
1770
- </section>`}function y(j,q){let B=j.tintColor?` style="--craft-sidebar-icon-color:${Y(j.tintColor)}"`:"";return`<button class="craft-sidebar-item" type="button" data-item-id="${Y(j.id)}" data-selected="${q?"true":"false"}">
1771
- ${j.icon?`<span class="craft-sidebar-item-icon" data-icon="${Y(j.icon)}"${B}></span>`:""}
1772
- <span class="craft-sidebar-item-label">${Z(j.label)}</span>
1773
- ${j.badge?`<span class="craft-sidebar-item-badge">${Z(j.badge)}</span>`:""}
1774
- </button>`}function G(j){return j.trim().toLowerCase().replace(/[^a-z0-9_-]+/g,"-").replace(/^-|-$/g,"")||"craft-sidebar"}function D(j){let q=5381;for(let B=0;B<j.length;B++)q=q*33^j.charCodeAt(B);return(q>>>0).toString(36)}function Z(j){return j.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function Y(j){return Z(j).replace(/`/g,"&#96;")}function I(j){return JSON.stringify(j).replace(/</g,"\\u003c").replace(/>/g,"\\u003e").replace(/&/g,"\\u0026")}function x(j,q,B){let K=[];K.push(`class="${B.join(" ")}"`),K.push(`data-craft="${q.nativeType}"`);for(let[L,U]of Object.entries(j))if(U===!0)K.push(L);else if(U!==!1&&U!==void 0&&U!==null){let V=String(U).replace(/"/g,"&quot;");K.push(`${L}="${V}"`)}return K.join(" ")}function A(j,q){w[j]=q}function P(){return{...w}}var g={CRAFT_COMPONENTS:w,CRAFT_COMPONENT_STYLES:`
1775
- <style id="craft-component-styles">
1776
- /* Craft Component Base Styles */
1777
- .craft-button {
1778
- display: inline-flex;
1779
- align-items: center;
1780
- justify-content: center;
1781
- padding: 8px 16px;
1782
- border: none;
1783
- border-radius: 6px;
1784
- font-family: inherit;
1785
- font-size: 14px;
1786
- font-weight: 500;
1787
- cursor: pointer;
1788
- transition: all 0.2s ease;
1789
- background: var(--craft-primary, #3b82f6);
1790
- color: white;
1791
- }
1792
- .craft-button:hover { opacity: 0.9; }
1793
- .craft-button:disabled { opacity: 0.5; cursor: not-allowed; }
1794
- .craft-button-secondary { background: var(--craft-secondary, #6b7280); }
1795
- .craft-button-outline { background: transparent; border: 1px solid currentColor; color: var(--craft-primary, #3b82f6); }
1796
-
1797
- .craft-text-input, .craft-textarea, .craft-select {
1798
- padding: 8px 12px;
1799
- border: 1px solid var(--craft-border, #d1d5db);
1800
- border-radius: 6px;
1801
- font-family: inherit;
1802
- font-size: 14px;
1803
- background: var(--craft-bg, #fff);
1804
- color: var(--craft-text, #1f2937);
1805
- transition: border-color 0.2s ease;
1806
- }
1807
- .craft-text-input:focus, .craft-textarea:focus, .craft-select:focus {
1808
- outline: none;
1809
- border-color: var(--craft-primary, #3b82f6);
1810
- box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
1811
- }
1812
-
1813
- .craft-checkbox-wrapper {
1814
- display: inline-flex;
1815
- align-items: center;
1816
- gap: 8px;
1817
- cursor: pointer;
1818
- }
1819
- .craft-checkbox {
1820
- width: 18px;
1821
- height: 18px;
1822
- cursor: pointer;
1823
- }
1824
-
1825
- .craft-slider {
1826
- width: 100%;
1827
- height: 6px;
1828
- border-radius: 3px;
1829
- cursor: pointer;
1830
- }
1831
-
1832
- .craft-badge {
1833
- display: inline-flex;
1834
- align-items: center;
1835
- padding: 2px 8px;
1836
- border-radius: 9999px;
1837
- font-size: 12px;
1838
- font-weight: 500;
1839
- background: var(--craft-primary, #3b82f6);
1840
- color: white;
1841
- }
1842
-
1843
- .craft-avatar {
1844
- display: inline-flex;
1845
- align-items: center;
1846
- justify-content: center;
1847
- background: var(--craft-secondary, #6b7280);
1848
- color: white;
1849
- font-weight: 600;
1850
- overflow: hidden;
1851
- }
1852
- .craft-avatar img { width: 100%; height: 100%; object-fit: cover; }
1853
-
1854
- .craft-progress {
1855
- width: 100%;
1856
- height: 8px;
1857
- background: var(--craft-border, #e5e7eb);
1858
- border-radius: 4px;
1859
- overflow: hidden;
1860
- }
1861
- .craft-progress-bar {
1862
- height: 100%;
1863
- background: var(--craft-primary, #3b82f6);
1864
- transition: width 0.3s ease;
1865
- }
1866
-
1867
- .craft-spinner {
1868
- border: 2px solid var(--craft-border, #e5e7eb);
1869
- border-top-color: var(--craft-primary, #3b82f6);
1870
- border-radius: 50%;
1871
- animation: craft-spin 0.8s linear infinite;
1872
- }
1873
- @keyframes craft-spin { to { transform: rotate(360deg); } }
1874
-
1875
- .craft-card {
1876
- background: var(--craft-bg, #fff);
1877
- border: 1px solid var(--craft-border, #e5e7eb);
1878
- border-radius: 8px;
1879
- padding: 16px;
1880
- box-shadow: 0 1px 3px rgba(0,0,0,0.1);
1881
- }
1882
-
1883
- .craft-modal {
1884
- border: none;
1885
- border-radius: 12px;
1886
- padding: 0;
1887
- max-width: 90vw;
1888
- max-height: 90vh;
1889
- box-shadow: 0 25px 50px -12px rgba(0,0,0,0.25);
1890
- }
1891
- .craft-modal::backdrop { background: rgba(0,0,0,0.5); }
1892
- .craft-modal-header {
1893
- padding: 16px 20px;
1894
- border-bottom: 1px solid var(--craft-border, #e5e7eb);
1895
- }
1896
- .craft-modal-header h2 { margin: 0; font-size: 18px; }
1897
- .craft-modal-body { padding: 20px; }
1898
-
1899
- .craft-accordion {
1900
- border: 1px solid var(--craft-border, #e5e7eb);
1901
- border-radius: 6px;
1902
- overflow: hidden;
1903
- }
1904
- .craft-accordion-header {
1905
- padding: 12px 16px;
1906
- cursor: pointer;
1907
- font-weight: 500;
1908
- background: var(--craft-bg-secondary, #f9fafb);
1909
- }
1910
- .craft-accordion-content { padding: 16px; }
1911
-
1912
- .craft-divider {
1913
- border: none;
1914
- border-top: 1px solid var(--craft-border, #e5e7eb);
1915
- margin: 16px 0;
1916
- }
1917
-
1918
- .craft-alert {
1919
- padding: 12px 16px;
1920
- border-radius: 6px;
1921
- border-left: 4px solid;
1922
- }
1923
- .craft-alert-info { background: #eff6ff; border-color: #3b82f6; color: #1e40af; }
1924
- .craft-alert-success { background: #f0fdf4; border-color: #22c55e; color: #166534; }
1925
- .craft-alert-warning { background: #fffbeb; border-color: #f59e0b; color: #92400e; }
1926
- .craft-alert-error { background: #fef2f2; border-color: #ef4444; color: #991b1b; }
1927
- .craft-alert-title { font-weight: 600; margin-bottom: 4px; }
1928
-
1929
- .craft-tooltip {
1930
- position: relative;
1931
- cursor: help;
1932
- }
1933
- .craft-tooltip::after {
1934
- content: attr(data-tooltip);
1935
- position: absolute;
1936
- bottom: 100%;
1937
- left: 50%;
1938
- transform: translateX(-50%);
1939
- padding: 4px 8px;
1940
- background: #1f2937;
1941
- color: white;
1942
- font-size: 12px;
1943
- border-radius: 4px;
1944
- white-space: nowrap;
1945
- opacity: 0;
1946
- pointer-events: none;
1947
- transition: opacity 0.2s;
1948
- }
1949
- .craft-tooltip:hover::after { opacity: 1; }
1950
-
1951
- .craft-table {
1952
- width: 100%;
1953
- border-collapse: collapse;
1954
- }
1955
- .craft-table th, .craft-table td {
1956
- padding: 12px;
1957
- text-align: left;
1958
- border-bottom: 1px solid var(--craft-border, #e5e7eb);
1959
- }
1960
- .craft-table th { font-weight: 600; background: var(--craft-bg-secondary, #f9fafb); }
1961
-
1962
- .craft-list {
1963
- list-style: none;
1964
- padding: 0;
1965
- margin: 0;
1966
- }
1967
- .craft-list li {
1968
- padding: 12px;
1969
- border-bottom: 1px solid var(--craft-border, #e5e7eb);
1970
- }
1971
- .craft-list li:last-child { border-bottom: none; }
1972
-
1973
- .craft-sidebar {
1974
- --craft-sidebar-width: 286px;
1975
- --craft-sidebar-bg: rgba(255, 255, 255, 0.68);
1976
- --craft-sidebar-border: rgba(255, 255, 255, 0.62);
1977
- --craft-sidebar-shadow: 0 24px 70px rgba(15, 23, 42, 0.22), 0 1px 0 rgba(255, 255, 255, 0.72) inset;
1978
- --craft-sidebar-text: rgba(24, 24, 27, 0.86);
1979
- --craft-sidebar-muted: rgba(63, 63, 70, 0.62);
1980
- --craft-sidebar-hover: rgba(255, 255, 255, 0.42);
1981
- --craft-sidebar-selected: rgba(10, 132, 255, 0.86);
1982
- position: relative;
1983
- display: flex;
1984
- flex-direction: column;
1985
- width: var(--craft-sidebar-width);
1986
- min-width: var(--craft-sidebar-width);
1987
- height: 100vh;
1988
- padding: 58px 10px 12px;
1989
- color: var(--craft-sidebar-text);
1990
- background:
1991
- linear-gradient(135deg, rgba(255,255,255,0.28), rgba(255,255,255,0.08)),
1992
- var(--craft-sidebar-bg);
1993
- border: 1px solid var(--craft-sidebar-border);
1994
- border-radius: 18px;
1995
- box-shadow: var(--craft-sidebar-shadow);
1996
- backdrop-filter: blur(34px) saturate(180%);
1997
- -webkit-backdrop-filter: blur(34px) saturate(180%);
1998
- overflow: hidden;
1999
- user-select: none;
2000
- }
2001
- .craft-sidebar::before {
2002
- content: "";
2003
- position: absolute;
2004
- inset: 0;
2005
- pointer-events: none;
2006
- background:
2007
- radial-gradient(circle at 18% 0%, rgba(255,255,255,0.68), transparent 32%),
2008
- linear-gradient(100deg, transparent 0%, rgba(255,255,255,0.30) 42%, transparent 58%);
2009
- mix-blend-mode: screen;
2010
- opacity: 0.72;
2011
- }
2012
- .craft-sidebar[data-native-active="true"] { display: none; }
2013
- .craft-sidebar-search {
2014
- position: relative;
2015
- z-index: 1;
2016
- margin: 0 0 12px;
2017
- }
2018
- .craft-sidebar-search input {
2019
- width: 100%;
2020
- min-height: 28px;
2021
- padding: 5px 10px;
2022
- border: 1px solid rgba(0, 0, 0, 0.05);
2023
- border-radius: 8px;
2024
- background: rgba(255, 255, 255, 0.34);
2025
- color: inherit;
2026
- font: inherit;
2027
- font-size: 13px;
2028
- outline: none;
2029
- }
2030
- .craft-sidebar-section {
2031
- position: relative;
2032
- z-index: 1;
2033
- margin: 0 0 14px;
2034
- }
2035
- .craft-sidebar-section-title {
2036
- padding: 0 8px 5px;
2037
- color: var(--craft-sidebar-muted);
2038
- font-size: 11px;
2039
- font-weight: 700;
2040
- letter-spacing: 0;
2041
- text-transform: uppercase;
2042
- }
2043
- .craft-sidebar-item {
2044
- width: calc(100% - 4px);
2045
- min-height: 28px;
2046
- margin: 1px 2px;
2047
- padding: 5px 8px;
2048
- display: flex;
2049
- align-items: center;
2050
- gap: 8px;
2051
- border: 0;
2052
- border-radius: 8px;
2053
- background: transparent;
2054
- color: inherit;
2055
- font: inherit;
2056
- font-size: 13px;
2057
- text-align: left;
2058
- cursor: default;
2059
- }
2060
- .craft-sidebar-item:hover { background: var(--craft-sidebar-hover); }
2061
- .craft-sidebar-item[data-selected="true"] {
2062
- color: white;
2063
- background: var(--craft-sidebar-selected);
2064
- box-shadow: 0 1px 0 rgba(255,255,255,0.22) inset, 0 8px 18px rgba(10, 132, 255, 0.22);
2065
- }
2066
- .craft-sidebar-item-icon {
2067
- position: relative;
2068
- display: inline-block;
2069
- width: 16px;
2070
- height: 16px;
2071
- min-width: 16px;
2072
- opacity: 0.82;
2073
- overflow: hidden;
2074
- color: transparent;
2075
- }
2076
- .craft-sidebar-item-icon::before {
2077
- content: "";
2078
- position: absolute;
2079
- inset: 2px;
2080
- border-radius: 4px;
2081
- background: var(--craft-sidebar-icon-color, rgba(63, 63, 70, 0.62));
2082
- box-shadow: 0 1px 0 rgba(255,255,255,0.24) inset;
2083
- }
2084
- .craft-sidebar-item-icon[data-icon*="circle"]::before {
2085
- inset: 4px;
2086
- border-radius: 999px;
2087
- }
2088
- .craft-sidebar-item[data-selected="true"] .craft-sidebar-item-icon::before {
2089
- background: rgba(255, 255, 255, 0.9);
2090
- }
2091
- .craft-sidebar-item-label {
2092
- flex: 1;
2093
- overflow: hidden;
2094
- white-space: nowrap;
2095
- text-overflow: ellipsis;
2096
- }
2097
- .craft-sidebar-item-badge {
2098
- min-width: 18px;
2099
- padding: 1px 6px;
2100
- border-radius: 999px;
2101
- background: rgba(0, 0, 0, 0.08);
2102
- color: var(--craft-sidebar-muted);
2103
- font-size: 10px;
2104
- font-weight: 700;
2105
- text-align: center;
2106
- }
2107
- .craft-sidebar-item[data-selected="true"] .craft-sidebar-item-badge {
2108
- color: white;
2109
- background: rgba(255, 255, 255, 0.24);
2110
- }
2111
-
2112
- .craft-code-editor {
2113
- font-family: 'SF Mono', 'Fira Code', monospace;
2114
- font-size: 13px;
2115
- line-height: 1.5;
2116
- padding: 12px;
2117
- background: #1e1e1e;
2118
- color: #d4d4d4;
2119
- border-radius: 6px;
2120
- resize: vertical;
2121
- }
2122
-
2123
- /* Dark mode support */
2124
- @media (prefers-color-scheme: dark) {
2125
- .craft-text-input, .craft-textarea, .craft-select, .craft-card {
2126
- background: #1f2937;
2127
- color: #f3f4f6;
2128
- border-color: #374151;
2129
- }
2130
- .craft-modal {
2131
- background: #1f2937;
2132
- color: #f3f4f6;
2133
- }
2134
- .craft-accordion-header { background: #374151; }
2135
- .craft-table th { background: #374151; }
2136
- .craft-sidebar {
2137
- --craft-sidebar-bg: rgba(24, 24, 27, 0.58);
2138
- --craft-sidebar-border: rgba(255, 255, 255, 0.12);
2139
- --craft-sidebar-shadow: 0 26px 74px rgba(0, 0, 0, 0.44), 0 1px 0 rgba(255, 255, 255, 0.11) inset;
2140
- --craft-sidebar-text: rgba(244, 244, 245, 0.92);
2141
- --craft-sidebar-muted: rgba(212, 212, 216, 0.58);
2142
- --craft-sidebar-hover: rgba(255, 255, 255, 0.10);
2143
- }
2144
- .craft-sidebar-search input {
2145
- border-color: rgba(255,255,255,0.08);
2146
- background: rgba(255,255,255,0.08);
2147
- }
2148
- }
2149
- </style>
2150
- `,CRAFT_COMPONENT_RUNTIME:`
2151
- <script id="craft-component-runtime">
2152
- (function() {
2153
- if (window.__stxCraftComponentRuntime) return;
2154
- window.__stxCraftComponentRuntime = true;
2155
-
2156
- function parseConfig(sidebar) {
2157
- var id = sidebar.getAttribute('data-craft-sidebar-id');
2158
- var script = id && document.querySelector('script[data-craft-sidebar-config="' + id + '"]');
2159
- if (!script) return null;
2160
- try {
2161
- return JSON.parse(script.textContent || '{}');
2162
- } catch (error) {
2163
- console.warn('[stx] Invalid Craft sidebar config', error);
2164
- return null;
2165
- }
2166
- }
2167
-
2168
- function getNativeUI() {
2169
- if (!window.craft) return null;
2170
- var hasNativeHost = window.craft.isCraft?.() ||
2171
- !!(window.webkit?.messageHandlers?.craft || window.CraftBridge || window.craftIPC);
2172
- if (!hasNativeHost) return null;
2173
- return window.craft.nativeUI || window.craft.components;
2174
- }
2175
-
2176
- function initializeSidebar(sidebar) {
2177
- if (sidebar.dataset.craftInitialized === 'true') return;
2178
- if (sidebar.dataset.native === 'false') return;
2179
-
2180
- var nativeUI = getNativeUI();
2181
- if (!nativeUI || typeof nativeUI.createSidebar !== 'function') return;
2182
-
2183
- var config = parseConfig(sidebar);
2184
- if (!config) return;
2185
-
2186
- try {
2187
- var nativeConfig = Object.assign({}, config);
2188
- delete nativeConfig.sections;
2189
- var nativeSidebar = nativeUI.createSidebar(nativeConfig);
2190
- if (nativeSidebar && config.sections) {
2191
- config.sections.forEach(function(section) {
2192
- if (nativeSidebar.addSection) nativeSidebar.addSection(section);
2193
- });
2194
- }
2195
- if (nativeSidebar && config.selectedItem && nativeSidebar.setSelectedItem) {
2196
- nativeSidebar.setSelectedItem(config.selectedItem);
2197
- }
2198
- if (nativeSidebar && nativeSidebar.onSelect) {
2199
- nativeSidebar.onSelect(function(itemId) {
2200
- sidebar.dispatchEvent(new CustomEvent('craft-sidebar:select', {
2201
- bubbles: true,
2202
- detail: { itemId: itemId, sidebarId: config.id }
2203
- }));
2204
- });
2205
- }
2206
- sidebar.dataset.craftInitialized = 'true';
2207
- sidebar.dataset.nativeActive = 'true';
2208
- window.__stxCraftNativeSidebars = window.__stxCraftNativeSidebars || {};
2209
- window.__stxCraftNativeSidebars[config.id] = nativeSidebar;
2210
- } catch (error) {
2211
- sidebar.dataset.nativeError = error.message || 'unknown';
2212
- console.warn('[stx] Failed to create native Craft sidebar', error);
2213
- }
2214
- }
2215
-
2216
- function initializeCraftComponents() {
2217
- document.querySelectorAll('[data-craft-native-sidebar]').forEach(initializeSidebar);
2218
- }
2219
-
2220
- if (document.readyState === 'loading') {
2221
- document.addEventListener('DOMContentLoaded', initializeCraftComponents);
2222
- } else {
2223
- initializeCraftComponents();
2224
- }
2225
- window.addEventListener('craft:ready', initializeCraftComponents);
2226
- document.addEventListener('craft:nativeui:ready', initializeCraftComponents);
2227
- })();
2228
- </script>
2229
- `,processCraftComponents:_,registerCraftComponent:A,getCraftComponents:P},S=g;
2230
- export{w as Fo,N as Go,C as Ho,_ as Io,A as Jo,P as Ko,S as Lo};