constellai 0.3.0

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 (1993) hide show
  1. package/.next/BUILD_ID +1 -0
  2. package/.next/app-path-routes-manifest.json +54 -0
  3. package/.next/build-manifest.json +20 -0
  4. package/.next/diagnostics/build-diagnostics.json +6 -0
  5. package/.next/diagnostics/framework.json +1 -0
  6. package/.next/export-marker.json +6 -0
  7. package/.next/images-manifest.json +68 -0
  8. package/.next/next-minimal-server.js.nft.json +1 -0
  9. package/.next/next-server.js.nft.json +1 -0
  10. package/.next/package.json +1 -0
  11. package/.next/prerender-manifest.json +36 -0
  12. package/.next/react-loadable-manifest.json +14 -0
  13. package/.next/required-server-files.js +346 -0
  14. package/.next/required-server-files.json +346 -0
  15. package/.next/routes-manifest.json +368 -0
  16. package/.next/server/app/(app)/activity/page.js +2 -0
  17. package/.next/server/app/(app)/activity/page.js.nft.json +1 -0
  18. package/.next/server/app/(app)/activity/page_client-reference-manifest.js +1 -0
  19. package/.next/server/app/(app)/agents/[handle]/page.js +18 -0
  20. package/.next/server/app/(app)/agents/[handle]/page.js.nft.json +1 -0
  21. package/.next/server/app/(app)/agents/[handle]/page_client-reference-manifest.js +1 -0
  22. package/.next/server/app/(app)/code/page.js +2 -0
  23. package/.next/server/app/(app)/code/page.js.nft.json +1 -0
  24. package/.next/server/app/(app)/code/page_client-reference-manifest.js +1 -0
  25. package/.next/server/app/(app)/config/page.js +2 -0
  26. package/.next/server/app/(app)/config/page.js.nft.json +1 -0
  27. package/.next/server/app/(app)/config/page_client-reference-manifest.js +1 -0
  28. package/.next/server/app/(app)/costs/page.js +2 -0
  29. package/.next/server/app/(app)/costs/page.js.nft.json +1 -0
  30. package/.next/server/app/(app)/costs/page_client-reference-manifest.js +1 -0
  31. package/.next/server/app/(app)/cron/page.js +2 -0
  32. package/.next/server/app/(app)/cron/page.js.nft.json +1 -0
  33. package/.next/server/app/(app)/cron/page_client-reference-manifest.js +1 -0
  34. package/.next/server/app/(app)/dashboard/page.js +2 -0
  35. package/.next/server/app/(app)/dashboard/page.js.nft.json +1 -0
  36. package/.next/server/app/(app)/dashboard/page_client-reference-manifest.js +1 -0
  37. package/.next/server/app/(app)/design/page.js +354 -0
  38. package/.next/server/app/(app)/design/page.js.nft.json +1 -0
  39. package/.next/server/app/(app)/design/page_client-reference-manifest.js +1 -0
  40. package/.next/server/app/(app)/docs/[id]/page.js +2 -0
  41. package/.next/server/app/(app)/docs/[id]/page.js.nft.json +1 -0
  42. package/.next/server/app/(app)/docs/[id]/page_client-reference-manifest.js +1 -0
  43. package/.next/server/app/(app)/docs/page.js +2 -0
  44. package/.next/server/app/(app)/docs/page.js.nft.json +1 -0
  45. package/.next/server/app/(app)/docs/page_client-reference-manifest.js +1 -0
  46. package/.next/server/app/(app)/github/page.js +2 -0
  47. package/.next/server/app/(app)/github/page.js.nft.json +1 -0
  48. package/.next/server/app/(app)/github/page_client-reference-manifest.js +1 -0
  49. package/.next/server/app/(app)/goals/page.js +2 -0
  50. package/.next/server/app/(app)/goals/page.js.nft.json +1 -0
  51. package/.next/server/app/(app)/goals/page_client-reference-manifest.js +1 -0
  52. package/.next/server/app/(app)/inbox/page.js +2 -0
  53. package/.next/server/app/(app)/inbox/page.js.nft.json +1 -0
  54. package/.next/server/app/(app)/inbox/page_client-reference-manifest.js +1 -0
  55. package/.next/server/app/(app)/knowledge/page.js +3 -0
  56. package/.next/server/app/(app)/knowledge/page.js.nft.json +1 -0
  57. package/.next/server/app/(app)/knowledge/page_client-reference-manifest.js +1 -0
  58. package/.next/server/app/(app)/models/page.js +2 -0
  59. package/.next/server/app/(app)/models/page.js.nft.json +1 -0
  60. package/.next/server/app/(app)/models/page_client-reference-manifest.js +1 -0
  61. package/.next/server/app/(app)/notifications/page.js +2 -0
  62. package/.next/server/app/(app)/notifications/page.js.nft.json +1 -0
  63. package/.next/server/app/(app)/notifications/page_client-reference-manifest.js +1 -0
  64. package/.next/server/app/(app)/org/page.js +22 -0
  65. package/.next/server/app/(app)/org/page.js.nft.json +1 -0
  66. package/.next/server/app/(app)/org/page_client-reference-manifest.js +1 -0
  67. package/.next/server/app/(app)/organizations/page.js +2 -0
  68. package/.next/server/app/(app)/organizations/page.js.nft.json +1 -0
  69. package/.next/server/app/(app)/organizations/page_client-reference-manifest.js +1 -0
  70. package/.next/server/app/(app)/page.js +3 -0
  71. package/.next/server/app/(app)/page.js.nft.json +1 -0
  72. package/.next/server/app/(app)/page_client-reference-manifest.js +1 -0
  73. package/.next/server/app/(app)/planner/page.js +12 -0
  74. package/.next/server/app/(app)/planner/page.js.nft.json +1 -0
  75. package/.next/server/app/(app)/planner/page_client-reference-manifest.js +1 -0
  76. package/.next/server/app/(app)/plugins/page.js +2 -0
  77. package/.next/server/app/(app)/plugins/page.js.nft.json +1 -0
  78. package/.next/server/app/(app)/plugins/page_client-reference-manifest.js +1 -0
  79. package/.next/server/app/(app)/pm/page.js +2 -0
  80. package/.next/server/app/(app)/pm/page.js.nft.json +1 -0
  81. package/.next/server/app/(app)/pm/page_client-reference-manifest.js +1 -0
  82. package/.next/server/app/(app)/prepare-deploy/page.js +19 -0
  83. package/.next/server/app/(app)/prepare-deploy/page.js.nft.json +1 -0
  84. package/.next/server/app/(app)/prepare-deploy/page_client-reference-manifest.js +1 -0
  85. package/.next/server/app/(app)/profile/page.js +2 -0
  86. package/.next/server/app/(app)/profile/page.js.nft.json +1 -0
  87. package/.next/server/app/(app)/profile/page_client-reference-manifest.js +1 -0
  88. package/.next/server/app/(app)/pulse/page.js +2 -0
  89. package/.next/server/app/(app)/pulse/page.js.nft.json +1 -0
  90. package/.next/server/app/(app)/pulse/page_client-reference-manifest.js +1 -0
  91. package/.next/server/app/(app)/reports/[id]/page.js +3 -0
  92. package/.next/server/app/(app)/reports/[id]/page.js.nft.json +1 -0
  93. package/.next/server/app/(app)/reports/[id]/page_client-reference-manifest.js +1 -0
  94. package/.next/server/app/(app)/reports/page.js +5 -0
  95. package/.next/server/app/(app)/reports/page.js.nft.json +1 -0
  96. package/.next/server/app/(app)/reports/page_client-reference-manifest.js +1 -0
  97. package/.next/server/app/(app)/routines/page.js +2 -0
  98. package/.next/server/app/(app)/routines/page.js.nft.json +1 -0
  99. package/.next/server/app/(app)/routines/page_client-reference-manifest.js +1 -0
  100. package/.next/server/app/(app)/search/page.js +2 -0
  101. package/.next/server/app/(app)/search/page.js.nft.json +1 -0
  102. package/.next/server/app/(app)/search/page_client-reference-manifest.js +1 -0
  103. package/.next/server/app/(app)/security/page.js +2 -0
  104. package/.next/server/app/(app)/security/page.js.nft.json +1 -0
  105. package/.next/server/app/(app)/security/page_client-reference-manifest.js +1 -0
  106. package/.next/server/app/(app)/skills/page.js +18 -0
  107. package/.next/server/app/(app)/skills/page.js.nft.json +1 -0
  108. package/.next/server/app/(app)/skills/page_client-reference-manifest.js +1 -0
  109. package/.next/server/app/(app)/tasks/page.js +2 -0
  110. package/.next/server/app/(app)/tasks/page.js.nft.json +1 -0
  111. package/.next/server/app/(app)/tasks/page_client-reference-manifest.js +1 -0
  112. package/.next/server/app/(app)/test-dev/page.js +2 -0
  113. package/.next/server/app/(app)/test-dev/page.js.nft.json +1 -0
  114. package/.next/server/app/(app)/test-dev/page_client-reference-manifest.js +1 -0
  115. package/.next/server/app/(app)/update/page.js +13 -0
  116. package/.next/server/app/(app)/update/page.js.nft.json +1 -0
  117. package/.next/server/app/(app)/update/page_client-reference-manifest.js +1 -0
  118. package/.next/server/app/(auth)/login/page.js +2 -0
  119. package/.next/server/app/(auth)/login/page.js.nft.json +1 -0
  120. package/.next/server/app/(auth)/login/page_client-reference-manifest.js +1 -0
  121. package/.next/server/app/(auth)/onboarding/page.js +2 -0
  122. package/.next/server/app/(auth)/onboarding/page.js.nft.json +1 -0
  123. package/.next/server/app/(auth)/onboarding/page_client-reference-manifest.js +1 -0
  124. package/.next/server/app/_global-error/page.js +32 -0
  125. package/.next/server/app/_global-error/page.js.nft.json +1 -0
  126. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -0
  127. package/.next/server/app/_global-error.html +1 -0
  128. package/.next/server/app/_global-error.meta +16 -0
  129. package/.next/server/app/_global-error.rsc +15 -0
  130. package/.next/server/app/_global-error.segments/_full.segment.rsc +15 -0
  131. package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +5 -0
  132. package/.next/server/app/_global-error.segments/_global-error.segment.rsc +5 -0
  133. package/.next/server/app/_global-error.segments/_head.segment.rsc +5 -0
  134. package/.next/server/app/_global-error.segments/_index.segment.rsc +6 -0
  135. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -0
  136. package/.next/server/app/_not-found/page.js +2 -0
  137. package/.next/server/app/_not-found/page.js.nft.json +1 -0
  138. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -0
  139. package/.next/server/app/api/auth/[...all]/route.js +1 -0
  140. package/.next/server/app/api/auth/[...all]/route.js.nft.json +1 -0
  141. package/.next/server/app/api/auth/[...all]/route_client-reference-manifest.js +1 -0
  142. package/.next/server/app/api/cron/tick/route.js +53 -0
  143. package/.next/server/app/api/cron/tick/route.js.nft.json +1 -0
  144. package/.next/server/app/api/cron/tick/route_client-reference-manifest.js +1 -0
  145. package/.next/server/app/api/health/route.js +1 -0
  146. package/.next/server/app/api/health/route.js.nft.json +1 -0
  147. package/.next/server/app/api/health/route_client-reference-manifest.js +1 -0
  148. package/.next/server/app/api/locks/acquire/route.js +1 -0
  149. package/.next/server/app/api/locks/acquire/route.js.nft.json +1 -0
  150. package/.next/server/app/api/locks/acquire/route_client-reference-manifest.js +1 -0
  151. package/.next/server/app/api/models/progress/route.js +1 -0
  152. package/.next/server/app/api/models/progress/route.js.nft.json +1 -0
  153. package/.next/server/app/api/models/progress/route_client-reference-manifest.js +1 -0
  154. package/.next/server/app/api/passkey/authenticate/options/route.js +1 -0
  155. package/.next/server/app/api/passkey/authenticate/options/route.js.nft.json +1 -0
  156. package/.next/server/app/api/passkey/authenticate/options/route_client-reference-manifest.js +1 -0
  157. package/.next/server/app/api/passkey/authenticate/verify/route.js +1 -0
  158. package/.next/server/app/api/passkey/authenticate/verify/route.js.nft.json +1 -0
  159. package/.next/server/app/api/passkey/authenticate/verify/route_client-reference-manifest.js +1 -0
  160. package/.next/server/app/api/passkey/register/options/route.js +1 -0
  161. package/.next/server/app/api/passkey/register/options/route.js.nft.json +1 -0
  162. package/.next/server/app/api/passkey/register/options/route_client-reference-manifest.js +1 -0
  163. package/.next/server/app/api/passkey/register/verify/route.js +1 -0
  164. package/.next/server/app/api/passkey/register/verify/route.js.nft.json +1 -0
  165. package/.next/server/app/api/passkey/register/verify/route_client-reference-manifest.js +1 -0
  166. package/.next/server/app/api/stream/route.js +4 -0
  167. package/.next/server/app/api/stream/route.js.nft.json +1 -0
  168. package/.next/server/app/api/stream/route_client-reference-manifest.js +1 -0
  169. package/.next/server/app/api/sync/file/route.js +2 -0
  170. package/.next/server/app/api/sync/file/route.js.nft.json +1 -0
  171. package/.next/server/app/api/sync/file/route_client-reference-manifest.js +1 -0
  172. package/.next/server/app/api/telegram/poll/route.js +133 -0
  173. package/.next/server/app/api/telegram/poll/route.js.nft.json +1 -0
  174. package/.next/server/app/api/telegram/poll/route_client-reference-manifest.js +1 -0
  175. package/.next/server/app/api/upload/route.js +1 -0
  176. package/.next/server/app/api/upload/route.js.nft.json +1 -0
  177. package/.next/server/app/api/upload/route_client-reference-manifest.js +1 -0
  178. package/.next/server/app/api/v1/[[...path]]/route.js +1 -0
  179. package/.next/server/app/api/v1/[[...path]]/route.js.nft.json +1 -0
  180. package/.next/server/app/api/v1/[[...path]]/route_client-reference-manifest.js +1 -0
  181. package/.next/server/app-paths-manifest.json +54 -0
  182. package/.next/server/chunks/1249.js +910 -0
  183. package/.next/server/chunks/1388.js +1 -0
  184. package/.next/server/chunks/1572.js +1 -0
  185. package/.next/server/chunks/1591.js +24 -0
  186. package/.next/server/chunks/1619.js +188 -0
  187. package/.next/server/chunks/162.js +1 -0
  188. package/.next/server/chunks/1845.js +462 -0
  189. package/.next/server/chunks/2341.js +1 -0
  190. package/.next/server/chunks/2517.js +1 -0
  191. package/.next/server/chunks/259.js +119 -0
  192. package/.next/server/chunks/2599.js +1 -0
  193. package/.next/server/chunks/260.js +1 -0
  194. package/.next/server/chunks/2867.js +147 -0
  195. package/.next/server/chunks/288.js +1 -0
  196. package/.next/server/chunks/2939.js +12 -0
  197. package/.next/server/chunks/2960.js +14 -0
  198. package/.next/server/chunks/3050.js +18 -0
  199. package/.next/server/chunks/3056.js +1 -0
  200. package/.next/server/chunks/3131.js +1 -0
  201. package/.next/server/chunks/3234.js +869 -0
  202. package/.next/server/chunks/3243.js +67 -0
  203. package/.next/server/chunks/3266.js +15 -0
  204. package/.next/server/chunks/3440.js +1 -0
  205. package/.next/server/chunks/3550.js +1 -0
  206. package/.next/server/chunks/3609.js +2 -0
  207. package/.next/server/chunks/3882.js +417 -0
  208. package/.next/server/chunks/4302.js +26 -0
  209. package/.next/server/chunks/4616.js +479 -0
  210. package/.next/server/chunks/4619.js +1 -0
  211. package/.next/server/chunks/4679.js +1 -0
  212. package/.next/server/chunks/4804.js +1 -0
  213. package/.next/server/chunks/4832.js +2 -0
  214. package/.next/server/chunks/4979.js +67 -0
  215. package/.next/server/chunks/5060.js +1 -0
  216. package/.next/server/chunks/5181.js +1 -0
  217. package/.next/server/chunks/5278.js +1 -0
  218. package/.next/server/chunks/5614.js +1 -0
  219. package/.next/server/chunks/6431.js +1 -0
  220. package/.next/server/chunks/6479.js +1 -0
  221. package/.next/server/chunks/658.js +14 -0
  222. package/.next/server/chunks/6658.js +1 -0
  223. package/.next/server/chunks/6706.js +1 -0
  224. package/.next/server/chunks/6719.js +1 -0
  225. package/.next/server/chunks/683.js +1 -0
  226. package/.next/server/chunks/6873.js +1 -0
  227. package/.next/server/chunks/7037.js +1 -0
  228. package/.next/server/chunks/73.js +17 -0
  229. package/.next/server/chunks/7336.js +1 -0
  230. package/.next/server/chunks/7514.js +1 -0
  231. package/.next/server/chunks/7589.js +22 -0
  232. package/.next/server/chunks/7622.js +1 -0
  233. package/.next/server/chunks/7778.js +1 -0
  234. package/.next/server/chunks/7912.js +1 -0
  235. package/.next/server/chunks/7949.js +1 -0
  236. package/.next/server/chunks/7971.js +1 -0
  237. package/.next/server/chunks/7976.js +1 -0
  238. package/.next/server/chunks/7989.js +1 -0
  239. package/.next/server/chunks/834.js +4 -0
  240. package/.next/server/chunks/8497.js +1 -0
  241. package/.next/server/chunks/850.js +1 -0
  242. package/.next/server/chunks/8561.js +22 -0
  243. package/.next/server/chunks/8623.js +1 -0
  244. package/.next/server/chunks/8762.js +15 -0
  245. package/.next/server/chunks/8823.js +85 -0
  246. package/.next/server/chunks/9459.js +21 -0
  247. package/.next/server/chunks/9676.js +1 -0
  248. package/.next/server/chunks/9680.js +1 -0
  249. package/.next/server/chunks/9783.js +22 -0
  250. package/.next/server/chunks/9969.js +3 -0
  251. package/.next/server/functions-config-manifest.json +18 -0
  252. package/.next/server/instrumentation.js +1 -0
  253. package/.next/server/instrumentation.js.nft.json +1 -0
  254. package/.next/server/interception-route-rewrite-manifest.js +1 -0
  255. package/.next/server/middleware-build-manifest.js +1 -0
  256. package/.next/server/middleware-manifest.json +6 -0
  257. package/.next/server/middleware-react-loadable-manifest.js +1 -0
  258. package/.next/server/middleware.js +18 -0
  259. package/.next/server/middleware.js.nft.json +1 -0
  260. package/.next/server/next-font-manifest.js +1 -0
  261. package/.next/server/next-font-manifest.json +1 -0
  262. package/.next/server/pages/500.html +1 -0
  263. package/.next/server/pages-manifest.json +3 -0
  264. package/.next/server/prefetch-hints.json +1 -0
  265. package/.next/server/server-reference-manifest.js +1 -0
  266. package/.next/server/server-reference-manifest.json +1 -0
  267. package/.next/server/webpack-runtime.js +1 -0
  268. package/.next/static/T0ETI55t9tc9pi5i_CGOe/_buildManifest.js +1 -0
  269. package/.next/static/T0ETI55t9tc9pi5i_CGOe/_ssgManifest.js +1 -0
  270. package/.next/static/chunks/2237-2a30470119df8616.js +1 -0
  271. package/.next/static/chunks/2320-fc8b39380e69d465.js +2 -0
  272. package/.next/static/chunks/23550918-ff694f70f4b0648c.js +1 -0
  273. package/.next/static/chunks/3219-9684aa1c634212de.js +1 -0
  274. package/.next/static/chunks/4263-adecb5b466380b6e.js +1 -0
  275. package/.next/static/chunks/5920.6451a68b63918988.js +1 -0
  276. package/.next/static/chunks/6834-4759af1ce7d95fb6.js +32 -0
  277. package/.next/static/chunks/7268-ac23e9901bf535af.js +4 -0
  278. package/.next/static/chunks/7509.721cd47a931c5518.js +1 -0
  279. package/.next/static/chunks/7555-d2209e697b0a798e.js +1 -0
  280. package/.next/static/chunks/8370-db3280cb1ba67bcd.js +12 -0
  281. package/.next/static/chunks/9219-4a39a98b5502d9d1.js +1 -0
  282. package/.next/static/chunks/9562-4b50b4e408bc0a42.js +1 -0
  283. package/.next/static/chunks/9690-53d5222618cbeddb.js +1 -0
  284. package/.next/static/chunks/9846-c853e71d4d8fbb80.js +1 -0
  285. package/.next/static/chunks/9950-703805abe4653068.js +1 -0
  286. package/.next/static/chunks/app/(app)/activity/page-f06add40c3785686.js +1 -0
  287. package/.next/static/chunks/app/(app)/agents/[handle]/page-2ddf1f9908c73eb1.js +1 -0
  288. package/.next/static/chunks/app/(app)/code/page-ef9dceeae728b9d1.js +1 -0
  289. package/.next/static/chunks/app/(app)/config/page-496e569efd86e75c.js +1 -0
  290. package/.next/static/chunks/app/(app)/costs/page-675f542fdd517bee.js +1 -0
  291. package/.next/static/chunks/app/(app)/cron/page-80a87a05492c0ffe.js +1 -0
  292. package/.next/static/chunks/app/(app)/dashboard/page-4bddca6808a3be40.js +1 -0
  293. package/.next/static/chunks/app/(app)/design/page-e0fd071fb7144c46.js +558 -0
  294. package/.next/static/chunks/app/(app)/docs/[id]/page-f05e389793127500.js +1 -0
  295. package/.next/static/chunks/app/(app)/docs/page-f6bbf5c6b9104cbe.js +1 -0
  296. package/.next/static/chunks/app/(app)/error-988cd28480809861.js +1 -0
  297. package/.next/static/chunks/app/(app)/github/page-5297c806ce6afa9b.js +1 -0
  298. package/.next/static/chunks/app/(app)/goals/page-3fa53e8541c8e9fc.js +1 -0
  299. package/.next/static/chunks/app/(app)/inbox/page-a2a74b5f6a6c326e.js +12 -0
  300. package/.next/static/chunks/app/(app)/knowledge/page-fb11b2bfa9ecd9a4.js +1 -0
  301. package/.next/static/chunks/app/(app)/layout-b74cd565406964d5.js +1 -0
  302. package/.next/static/chunks/app/(app)/models/page-c8acfc3d353fd9d0.js +1 -0
  303. package/.next/static/chunks/app/(app)/notifications/page-05a094d02d23f455.js +12 -0
  304. package/.next/static/chunks/app/(app)/org/page-883d6aa98b593c6b.js +12 -0
  305. package/.next/static/chunks/app/(app)/organizations/page-4595e8fa86ca3c01.js +1 -0
  306. package/.next/static/chunks/app/(app)/page-21d47e76fe9a6c63.js +1 -0
  307. package/.next/static/chunks/app/(app)/planner/page-1fc32005d05bbe69.js +1 -0
  308. package/.next/static/chunks/app/(app)/plugins/page-454613b9f5cb1d3d.js +1 -0
  309. package/.next/static/chunks/app/(app)/pm/page-8473da305f4c2880.js +1 -0
  310. package/.next/static/chunks/app/(app)/prepare-deploy/page-3ba948f5557dea38.js +1 -0
  311. package/.next/static/chunks/app/(app)/profile/page-05f25516fea20762.js +1 -0
  312. package/.next/static/chunks/app/(app)/pulse/page-540a80dbaf61453d.js +1 -0
  313. package/.next/static/chunks/app/(app)/reports/[id]/page-80a87a05492c0ffe.js +1 -0
  314. package/.next/static/chunks/app/(app)/reports/page-de1e69ca09d7cabb.js +1 -0
  315. package/.next/static/chunks/app/(app)/routines/page-83085c9ba3584ec9.js +1 -0
  316. package/.next/static/chunks/app/(app)/search/page-8769fd9075e21e36.js +1 -0
  317. package/.next/static/chunks/app/(app)/security/page-1baa88dc61c3fab8.js +1 -0
  318. package/.next/static/chunks/app/(app)/skills/page-fa75c290b456c629.js +1 -0
  319. package/.next/static/chunks/app/(app)/tasks/page-1eb62689244c8a79.js +1 -0
  320. package/.next/static/chunks/app/(app)/test-dev/page-c496b31087389906.js +1 -0
  321. package/.next/static/chunks/app/(app)/update/page-5a217e6479bc5289.js +1 -0
  322. package/.next/static/chunks/app/(auth)/login/page-ad50e3112f35f41c.js +1 -0
  323. package/.next/static/chunks/app/(auth)/onboarding/page-ab05f02e868c9eec.js +1 -0
  324. package/.next/static/chunks/app/_global-error/page-eacef2b697bd0982.js +1 -0
  325. package/.next/static/chunks/app/_not-found/page-dc38b02aebeab535.js +1 -0
  326. package/.next/static/chunks/app/api/auth/[...all]/route-eacef2b697bd0982.js +1 -0
  327. package/.next/static/chunks/app/api/cron/tick/route-eacef2b697bd0982.js +1 -0
  328. package/.next/static/chunks/app/api/health/route-eacef2b697bd0982.js +1 -0
  329. package/.next/static/chunks/app/api/locks/acquire/route-eacef2b697bd0982.js +1 -0
  330. package/.next/static/chunks/app/api/models/progress/route-eacef2b697bd0982.js +1 -0
  331. package/.next/static/chunks/app/api/passkey/authenticate/options/route-eacef2b697bd0982.js +1 -0
  332. package/.next/static/chunks/app/api/passkey/authenticate/verify/route-eacef2b697bd0982.js +1 -0
  333. package/.next/static/chunks/app/api/passkey/register/options/route-eacef2b697bd0982.js +1 -0
  334. package/.next/static/chunks/app/api/passkey/register/verify/route-eacef2b697bd0982.js +1 -0
  335. package/.next/static/chunks/app/api/stream/route-eacef2b697bd0982.js +1 -0
  336. package/.next/static/chunks/app/api/sync/file/route-eacef2b697bd0982.js +1 -0
  337. package/.next/static/chunks/app/api/telegram/poll/route-eacef2b697bd0982.js +1 -0
  338. package/.next/static/chunks/app/api/upload/route-eacef2b697bd0982.js +1 -0
  339. package/.next/static/chunks/app/api/v1/[[...path]]/route-eacef2b697bd0982.js +1 -0
  340. package/.next/static/chunks/app/error-09899a13c38b6e89.js +1 -0
  341. package/.next/static/chunks/app/global-error-c2ea8fef715f226d.js +1 -0
  342. package/.next/static/chunks/app/layout-e6008e66aea1a849.js +1 -0
  343. package/.next/static/chunks/framework-4b2c6b6043dd203f.js +1 -0
  344. package/.next/static/chunks/main-722e16032e7764d1.js +5 -0
  345. package/.next/static/chunks/main-app-761880af2b6f1962.js +1 -0
  346. package/.next/static/chunks/next/dist/client/components/builtin/app-error-eacef2b697bd0982.js +1 -0
  347. package/.next/static/chunks/next/dist/client/components/builtin/forbidden-eacef2b697bd0982.js +1 -0
  348. package/.next/static/chunks/next/dist/client/components/builtin/not-found-eacef2b697bd0982.js +1 -0
  349. package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-eacef2b697bd0982.js +1 -0
  350. package/.next/static/chunks/polyfills-42372ed130431b0a.js +1 -0
  351. package/.next/static/chunks/webpack-222e3894b78c67db.js +1 -0
  352. package/.next/static/css/e7b568809d5d9c72.css +1 -0
  353. package/.next/trace-build +1 -0
  354. package/.next/types/app/(app)/activity/page.ts +87 -0
  355. package/.next/types/app/(app)/agents/[handle]/page.ts +87 -0
  356. package/.next/types/app/(app)/code/page.ts +87 -0
  357. package/.next/types/app/(app)/config/page.ts +87 -0
  358. package/.next/types/app/(app)/costs/page.ts +87 -0
  359. package/.next/types/app/(app)/cron/page.ts +87 -0
  360. package/.next/types/app/(app)/dashboard/page.ts +87 -0
  361. package/.next/types/app/(app)/design/page.ts +87 -0
  362. package/.next/types/app/(app)/docs/[id]/page.ts +87 -0
  363. package/.next/types/app/(app)/docs/page.ts +87 -0
  364. package/.next/types/app/(app)/github/page.ts +87 -0
  365. package/.next/types/app/(app)/goals/page.ts +87 -0
  366. package/.next/types/app/(app)/inbox/page.ts +87 -0
  367. package/.next/types/app/(app)/knowledge/page.ts +87 -0
  368. package/.next/types/app/(app)/models/page.ts +87 -0
  369. package/.next/types/app/(app)/notifications/page.ts +87 -0
  370. package/.next/types/app/(app)/org/page.ts +87 -0
  371. package/.next/types/app/(app)/organizations/page.ts +87 -0
  372. package/.next/types/app/(app)/page.ts +87 -0
  373. package/.next/types/app/(app)/planner/page.ts +87 -0
  374. package/.next/types/app/(app)/plugins/page.ts +87 -0
  375. package/.next/types/app/(app)/pm/page.ts +87 -0
  376. package/.next/types/app/(app)/prepare-deploy/page.ts +87 -0
  377. package/.next/types/app/(app)/profile/page.ts +87 -0
  378. package/.next/types/app/(app)/pulse/page.ts +87 -0
  379. package/.next/types/app/(app)/reports/[id]/page.ts +87 -0
  380. package/.next/types/app/(app)/reports/page.ts +87 -0
  381. package/.next/types/app/(app)/routines/page.ts +87 -0
  382. package/.next/types/app/(app)/search/page.ts +87 -0
  383. package/.next/types/app/(app)/security/page.ts +87 -0
  384. package/.next/types/app/(app)/skills/page.ts +87 -0
  385. package/.next/types/app/(app)/tasks/page.ts +87 -0
  386. package/.next/types/app/(app)/test-dev/page.ts +87 -0
  387. package/.next/types/app/(app)/update/page.ts +87 -0
  388. package/.next/types/app/(auth)/login/page.ts +87 -0
  389. package/.next/types/app/(auth)/onboarding/page.ts +87 -0
  390. package/.next/types/app/api/auth/[...all]/route.ts +351 -0
  391. package/.next/types/app/api/cron/tick/route.ts +351 -0
  392. package/.next/types/app/api/health/route.ts +351 -0
  393. package/.next/types/app/api/locks/acquire/route.ts +351 -0
  394. package/.next/types/app/api/models/progress/route.ts +351 -0
  395. package/.next/types/app/api/passkey/authenticate/options/route.ts +351 -0
  396. package/.next/types/app/api/passkey/authenticate/verify/route.ts +351 -0
  397. package/.next/types/app/api/passkey/register/options/route.ts +351 -0
  398. package/.next/types/app/api/passkey/register/verify/route.ts +351 -0
  399. package/.next/types/app/api/stream/route.ts +351 -0
  400. package/.next/types/app/api/sync/file/route.ts +351 -0
  401. package/.next/types/app/api/telegram/poll/route.ts +351 -0
  402. package/.next/types/app/api/upload/route.ts +351 -0
  403. package/.next/types/app/api/v1/[[...path]]/route.ts +351 -0
  404. package/.next/types/cache-life.d.ts +145 -0
  405. package/.next/types/link.d.ts +211 -0
  406. package/.next/types/package.json +1 -0
  407. package/.next/types/routes.d.ts +121 -0
  408. package/.next/types/validator.ts +520 -0
  409. package/CHANGELOG.md +1084 -0
  410. package/LICENSE +21 -0
  411. package/README.md +477 -0
  412. package/README.pt-BR.md +487 -0
  413. package/bin/constella-update.mjs +131 -0
  414. package/bin/constella.mjs +455 -0
  415. package/bin/guard-hook.mjs +44 -0
  416. package/bin/lock-hook.mjs +49 -0
  417. package/bin/worker.mjs +142 -0
  418. package/docs/UPDATE.md +150 -0
  419. package/docs/assets/arch-orbit.svg +56 -0
  420. package/docs/assets/blackhole.svg +37 -0
  421. package/docs/assets/divider-orbit.svg +23 -0
  422. package/docs/assets/hero-constella.svg +72 -0
  423. package/docs/assets/screens/ceo-planner-specs.png +0 -0
  424. package/docs/assets/screens/ceo-planner.png +0 -0
  425. package/docs/assets/screens/dashboard.png +0 -0
  426. package/docs/assets/screens/design.png +0 -0
  427. package/docs/assets/screens/home.png +0 -0
  428. package/docs/assets/screens/knowledge-blocks.png +0 -0
  429. package/docs/assets/screens/knowledge.png +0 -0
  430. package/docs/assets/screens/models.png +0 -0
  431. package/docs/assets/screens/skills.png +0 -0
  432. package/docs/assets/screens/telegram.png +0 -0
  433. package/docs/en/AGENTS.md +279 -0
  434. package/docs/en/AI_ARCHITECTURE.md +373 -0
  435. package/docs/en/ARCHITECTURE.md +334 -0
  436. package/docs/en/CHAT_COMMANDS.md +305 -0
  437. package/docs/en/CONFIGURATION.md +340 -0
  438. package/docs/en/DEPLOY.md +341 -0
  439. package/docs/en/DESIGN.md +214 -0
  440. package/docs/en/DM.md +297 -0
  441. package/docs/en/FAQ.md +259 -0
  442. package/docs/en/GITHUB.md +341 -0
  443. package/docs/en/GOALS_SPECS_ISSUES.md +303 -0
  444. package/docs/en/INBOX.md +340 -0
  445. package/docs/en/INSTALLATION.md +374 -0
  446. package/docs/en/KB_AGENT.md +305 -0
  447. package/docs/en/KB_RAG.md +356 -0
  448. package/docs/en/MCP.md +313 -0
  449. package/docs/en/MEMORY_RAG.md +289 -0
  450. package/docs/en/MODELS.md +341 -0
  451. package/docs/en/ONBOARDING.md +327 -0
  452. package/docs/en/OPERATIONS.md +212 -0
  453. package/docs/en/PLUGINS.md +290 -0
  454. package/docs/en/PORTABLE_MODE.md +391 -0
  455. package/docs/en/PO_AGENT.md +379 -0
  456. package/docs/en/PREPARE_DEPLOY.md +308 -0
  457. package/docs/en/PROJECT_STACKS.md +258 -0
  458. package/docs/en/PUBLIC_API.md +315 -0
  459. package/docs/en/PUBLISHING.md +343 -0
  460. package/docs/en/README.md +98 -0
  461. package/docs/en/RELEASE_SMOKE.md +92 -0
  462. package/docs/en/SECURITY.md +280 -0
  463. package/docs/en/SKILLS.md +349 -0
  464. package/docs/en/START_MODE.md +285 -0
  465. package/docs/en/SYNCED_BLOCKS.md +320 -0
  466. package/docs/en/TEAM_ROOM.md +285 -0
  467. package/docs/en/TELEGRAM.md +294 -0
  468. package/docs/en/TEST_DEV.md +324 -0
  469. package/docs/en/TROUBLESHOOTING.md +294 -0
  470. package/docs/en/UPDATE.md +320 -0
  471. package/docs/en/VPS_MODE.md +405 -0
  472. package/docs/en/WORKFLOW.md +321 -0
  473. package/docs/pt/AGENTS.md +279 -0
  474. package/docs/pt/AI_ARCHITECTURE.md +373 -0
  475. package/docs/pt/ARCHITECTURE.md +334 -0
  476. package/docs/pt/CHAT_COMMANDS.md +307 -0
  477. package/docs/pt/CONFIGURATION.md +340 -0
  478. package/docs/pt/DEPLOY.md +341 -0
  479. package/docs/pt/DESIGN.md +215 -0
  480. package/docs/pt/DM.md +297 -0
  481. package/docs/pt/FAQ.md +259 -0
  482. package/docs/pt/GITHUB.md +341 -0
  483. package/docs/pt/GOALS_SPECS_ISSUES.md +303 -0
  484. package/docs/pt/INBOX.md +340 -0
  485. package/docs/pt/INSTALLATION.md +374 -0
  486. package/docs/pt/KB_AGENT.md +305 -0
  487. package/docs/pt/KB_RAG.md +356 -0
  488. package/docs/pt/MCP.md +313 -0
  489. package/docs/pt/MEMORY_RAG.md +289 -0
  490. package/docs/pt/MODELS.md +341 -0
  491. package/docs/pt/ONBOARDING.md +327 -0
  492. package/docs/pt/OPERATIONS.md +211 -0
  493. package/docs/pt/PLUGINS.md +290 -0
  494. package/docs/pt/PORTABLE_MODE.md +391 -0
  495. package/docs/pt/PO_AGENT.md +379 -0
  496. package/docs/pt/PREPARE_DEPLOY.md +308 -0
  497. package/docs/pt/PROJECT_STACKS.md +258 -0
  498. package/docs/pt/PUBLIC_API.md +315 -0
  499. package/docs/pt/PUBLISHING.md +343 -0
  500. package/docs/pt/README.md +98 -0
  501. package/docs/pt/RELEASE_SMOKE.md +94 -0
  502. package/docs/pt/SECURITY.md +280 -0
  503. package/docs/pt/SKILLS.md +349 -0
  504. package/docs/pt/START_MODE.md +284 -0
  505. package/docs/pt/SYNCED_BLOCKS.md +320 -0
  506. package/docs/pt/TEAM_ROOM.md +285 -0
  507. package/docs/pt/TELEGRAM.md +294 -0
  508. package/docs/pt/TEST_DEV.md +324 -0
  509. package/docs/pt/TROUBLESHOOTING.md +294 -0
  510. package/docs/pt/UPDATE.md +320 -0
  511. package/docs/pt/VPS_MODE.md +405 -0
  512. package/docs/pt/WORKFLOW.md +321 -0
  513. package/drizzle/0000_regular_nightshade.sql +644 -0
  514. package/drizzle/0001_mixed_zombie.sql +106 -0
  515. package/drizzle/0002_flimsy_kree.sql +48 -0
  516. package/drizzle/meta/0000_snapshot.json +4650 -0
  517. package/drizzle/meta/0001_snapshot.json +5418 -0
  518. package/drizzle/meta/0002_snapshot.json +5753 -0
  519. package/drizzle/meta/_journal.json +27 -0
  520. package/drizzle.config.mjs +16 -0
  521. package/next.config.mjs +21 -0
  522. package/package.json +139 -0
  523. package/scripts/clean-repo.mjs +20 -0
  524. package/scripts/dev-all.mjs +46 -0
  525. package/scripts/i18n-parity.mjs +57 -0
  526. package/scripts/install.sh +97 -0
  527. package/scripts/mcp-server.mjs +100 -0
  528. package/scripts/postbuild.mjs +11 -0
  529. package/scripts/postinstall.mjs +14 -0
  530. package/scripts/publish-public.mjs +116 -0
  531. package/scripts/smoke-login.mjs +138 -0
  532. package/scripts/start-all.mjs +45 -0
  533. package/scripts/trim-next.mjs +23 -0
  534. package/scripts/vps-clean.sh +66 -0
  535. package/scripts/vps-install.sh +84 -0
  536. package/scripts/vps-update.sh +28 -0
  537. package/skills/CONTRIBUTING.md +122 -0
  538. package/skills/COVERAGE.md +129 -0
  539. package/skills/INDEX.json +3443 -0
  540. package/skills/README.md +57 -0
  541. package/skills/design/agentic/DESIGN.md +55 -0
  542. package/skills/design/agentic/SKILL.md +89 -0
  543. package/skills/design/ai-audio-collection-playbook/SKILL.md +48 -0
  544. package/skills/design/algorithmic-art/LICENSE.txt +202 -0
  545. package/skills/design/algorithmic-art/SKILL.md +405 -0
  546. package/skills/design/algorithmic-art/templates/generator_template.js +223 -0
  547. package/skills/design/algorithmic-art/templates/viewer.html +599 -0
  548. package/skills/design/animation-motion/SKILL.md +60 -0
  549. package/skills/design/answers-surface-playbook/SKILL.md +102 -0
  550. package/skills/design/answers-surface-playbook/example.html +517 -0
  551. package/skills/design/ant/DESIGN.md +55 -0
  552. package/skills/design/ant/SKILL.md +89 -0
  553. package/skills/design/apple-interface-guidelines-playbook/SKILL.md +48 -0
  554. package/skills/design/application/DESIGN.md +55 -0
  555. package/skills/design/application/SKILL.md +84 -0
  556. package/skills/design/artistic/DESIGN.md +55 -0
  557. package/skills/design/artistic/SKILL.md +89 -0
  558. package/skills/design/bento/DESIGN.md +55 -0
  559. package/skills/design/bento/SKILL.md +83 -0
  560. package/skills/design/bold/DESIGN.md +55 -0
  561. package/skills/design/bold/SKILL.md +83 -0
  562. package/skills/design/brand-guidelines/LICENSE.txt +202 -0
  563. package/skills/design/brand-guidelines/SKILL.md +73 -0
  564. package/skills/design/brutalism/DESIGN.md +55 -0
  565. package/skills/design/brutalism/SKILL.md +97 -0
  566. package/skills/design/cafe/DESIGN.md +55 -0
  567. package/skills/design/cafe/SKILL.md +83 -0
  568. package/skills/design/campaign-concept-playbook/SKILL.md +48 -0
  569. package/skills/design/capture-playbook/SKILL.md +48 -0
  570. package/skills/design/captures-growth-playbook/SKILL.md +48 -0
  571. package/skills/design/claude/DESIGN.md +55 -0
  572. package/skills/design/claude/SKILL.md +81 -0
  573. package/skills/design/claymorphism/DESIGN.md +55 -0
  574. package/skills/design/claymorphism/SKILL.md +84 -0
  575. package/skills/design/clean/DESIGN.md +55 -0
  576. package/skills/design/clean/SKILL.md +84 -0
  577. package/skills/design/codex/DESIGN.md +55 -0
  578. package/skills/design/codex/SKILL.md +81 -0
  579. package/skills/design/color-and-typography/SKILL.md +60 -0
  580. package/skills/design/colorful/DESIGN.md +55 -0
  581. package/skills/design/colorful/SKILL.md +82 -0
  582. package/skills/design/commerce-visual-flow-playbook/SKILL.md +281 -0
  583. package/skills/design/commerce-visual-flow-playbook/example.html +504 -0
  584. package/skills/design/commerce-visual-flow-quality-gate/SKILL.md +78 -0
  585. package/skills/design/commerce-visual-flow-quality-gate/example.html +504 -0
  586. package/skills/design/composition-advisory-playbook/SKILL.md +48 -0
  587. package/skills/design/composition-audit-playbook/SKILL.md +48 -0
  588. package/skills/design/composition-markdown-playbook/SKILL.md +48 -0
  589. package/skills/design/composition-prompt-playbook/SKILL.md +234 -0
  590. package/skills/design/composition-taste-interface-playbook/LICENSE +21 -0
  591. package/skills/design/composition-taste-interface-playbook/SKILL.md +1222 -0
  592. package/skills/design/composition-taste-interface-v1-playbook/LICENSE +21 -0
  593. package/skills/design/composition-taste-interface-v1-playbook/SKILL.md +242 -0
  594. package/skills/design/concept-lead-playbook/SKILL.md +73 -0
  595. package/skills/design/constella-design/SKILL.md +97 -0
  596. package/skills/design/contemporary/DESIGN.md +55 -0
  597. package/skills/design/contemporary/SKILL.md +83 -0
  598. package/skills/design/corporate/DESIGN.md +55 -0
  599. package/skills/design/corporate/SKILL.md +89 -0
  600. package/skills/design/cosmic/DESIGN.md +55 -0
  601. package/skills/design/cosmic/SKILL.md +83 -0
  602. package/skills/design/creative/DESIGN.md +55 -0
  603. package/skills/design/creative/SKILL.md +83 -0
  604. package/skills/design/css-techniques/SKILL.md +58 -0
  605. package/skills/design/d3-visualization-playbook/SKILL.md +56 -0
  606. package/skills/design/dashboard/DESIGN.md +55 -0
  607. package/skills/design/dashboard/SKILL.md +89 -0
  608. package/skills/design/deliverables-assembler-playbook/SKILL.md +48 -0
  609. package/skills/design/delivery-save-diagnostics-playbook/SKILL.md +69 -0
  610. package/skills/design/design-systems/SKILL.md +60 -0
  611. package/skills/design/dithered/DESIGN.md +55 -0
  612. package/skills/design/dithered/SKILL.md +87 -0
  613. package/skills/design/document-paper-scroll-playbook/SKILL.md +54 -0
  614. package/skills/design/document-paper-scroll-playbook/example.html +84 -0
  615. package/skills/design/document-paper-scroll-sample-worked-sample/SKILL.md +45 -0
  616. package/skills/design/document-paper-scroll-sample-worked-sample/example.html +84 -0
  617. package/skills/design/document-playbook/SKILL.md +48 -0
  618. package/skills/design/doodle/DESIGN.md +55 -0
  619. package/skills/design/doodle/SKILL.md +97 -0
  620. package/skills/design/dramatic/DESIGN.md +55 -0
  621. package/skills/design/dramatic/SKILL.md +83 -0
  622. package/skills/design/editorial/DESIGN.md +55 -0
  623. package/skills/design/editorial/SKILL.md +86 -0
  624. package/skills/design/eight-bit-orbital-motion-blueprint/SKILL.md +58 -0
  625. package/skills/design/eight-bit-orbital-motion-blueprint/assets/template.html +506 -0
  626. package/skills/design/eight-bit-orbital-motion-blueprint/example.html +43 -0
  627. package/skills/design/eight-bit-orbital-motion-blueprint-quality-gate/SKILL.md +40 -0
  628. package/skills/design/eight-bit-orbital-motion-blueprint-quality-gate/assets/template.html +506 -0
  629. package/skills/design/eight-bit-orbital-motion-blueprint-quality-gate/example.html +43 -0
  630. package/skills/design/elegant/DESIGN.md +55 -0
  631. package/skills/design/elegant/SKILL.md +83 -0
  632. package/skills/design/energetic/DESIGN.md +51 -0
  633. package/skills/design/energetic/SKILL.md +86 -0
  634. package/skills/design/enterprise/DESIGN.md +55 -0
  635. package/skills/design/enterprise/SKILL.md +88 -0
  636. package/skills/design/expressive/DESIGN.md +55 -0
  637. package/skills/design/expressive/SKILL.md +83 -0
  638. package/skills/design/fal-3d-playbook/SKILL.md +48 -0
  639. package/skills/design/fal-compose-playbook/SKILL.md +48 -0
  640. package/skills/design/fal-enhance-playbook/SKILL.md +48 -0
  641. package/skills/design/fal-kling-o3-playbook/SKILL.md +48 -0
  642. package/skills/design/fal-lip-sync-playbook/SKILL.md +48 -0
  643. package/skills/design/fal-live-playbook/SKILL.md +48 -0
  644. package/skills/design/fal-motion-edit-playbook/SKILL.md +48 -0
  645. package/skills/design/fal-repair-playbook/SKILL.md +48 -0
  646. package/skills/design/fal-train-playbook/SKILL.md +48 -0
  647. package/skills/design/fal-tryon-playbook/SKILL.md +48 -0
  648. package/skills/design/fal-vision-playbook/SKILL.md +48 -0
  649. package/skills/design/fal-visual-edit-playbook/SKILL.md +48 -0
  650. package/skills/design/fantasy/DESIGN.md +55 -0
  651. package/skills/design/fantasy/SKILL.md +83 -0
  652. package/skills/design/fiction/DESIGN.md +55 -0
  653. package/skills/design/fiction/SKILL.md +81 -0
  654. package/skills/design/field-journal-magazine-blueprint/SKILL.md +61 -0
  655. package/skills/design/field-journal-magazine-blueprint/assets/template.html +287 -0
  656. package/skills/design/field-journal-magazine-blueprint/example.html +138 -0
  657. package/skills/design/field-journal-magazine-blueprint-quality-gate/SKILL.md +47 -0
  658. package/skills/design/field-journal-magazine-blueprint-quality-gate/assets/template.html +287 -0
  659. package/skills/design/field-journal-magazine-blueprint-quality-gate/example.html +138 -0
  660. package/skills/design/figma-author-composition-system-rules-playbook/SKILL.md +48 -0
  661. package/skills/design/figma-author-fresh-file-playbook/SKILL.md +48 -0
  662. package/skills/design/figma-build-composition-playbook/SKILL.md +48 -0
  663. package/skills/design/figma-code-bridge-parts-playbook/SKILL.md +48 -0
  664. package/skills/design/figma-compose-composition-playbook/SKILL.md +48 -0
  665. package/skills/design/figma-compose-library-playbook/SKILL.md +48 -0
  666. package/skills/design/figma-operator-playbook/SKILL.md +48 -0
  667. package/skills/design/flat/DESIGN.md +55 -0
  668. package/skills/design/flat/SKILL.md +101 -0
  669. package/skills/design/flutter-motion-apps-playbook/SKILL.md +48 -0
  670. package/skills/design/friendly/DESIGN.md +55 -0
  671. package/skills/design/friendly/SKILL.md +83 -0
  672. package/skills/design/full-delivery-enforcement-playbook/LICENSE +21 -0
  673. package/skills/design/full-delivery-enforcement-playbook/SKILL.md +65 -0
  674. package/skills/design/full-surface-capture-playbook/SKILL.md +48 -0
  675. package/skills/design/futuristic/DESIGN.md +55 -0
  676. package/skills/design/futuristic/SKILL.md +83 -0
  677. package/skills/design/generative-visuals-playbook/SKILL.md +48 -0
  678. package/skills/design/gif-sticker-maker-playbook/SKILL.md +48 -0
  679. package/skills/design/glassmorphism/DESIGN.md +55 -0
  680. package/skills/design/glassmorphism/SKILL.md +86 -0
  681. package/skills/design/gpt-taste-playbook/LICENSE +21 -0
  682. package/skills/design/gpt-taste-playbook/SKILL.md +91 -0
  683. package/skills/design/gradient/DESIGN.md +55 -0
  684. package/skills/design/gradient/SKILL.md +83 -0
  685. package/skills/design/gradients/SKILL.md +59 -0
  686. package/skills/design/graphic-design-basics/SKILL.md +55 -0
  687. package/skills/design/grid-concept-mode-blueprint/SKILL.md +62 -0
  688. package/skills/design/grid-concept-mode-blueprint/assets/template.html +375 -0
  689. package/skills/design/grid-concept-mode-blueprint/example.html +70 -0
  690. package/skills/design/grid-concept-mode-blueprint-quality-gate/SKILL.md +52 -0
  691. package/skills/design/grid-concept-mode-blueprint-quality-gate/assets/template.html +375 -0
  692. package/skills/design/grid-concept-mode-blueprint-quality-gate/example.html +70 -0
  693. package/skills/design/grid-user-research-motion-blueprint/SKILL.md +63 -0
  694. package/skills/design/grid-user-research-motion-blueprint/assets/template.html +265 -0
  695. package/skills/design/grid-user-research-motion-blueprint/example.html +265 -0
  696. package/skills/design/grid-user-research-motion-blueprint-quality-gate/SKILL.md +43 -0
  697. package/skills/design/grid-user-research-motion-blueprint-quality-gate/assets/template.html +265 -0
  698. package/skills/design/grid-user-research-motion-blueprint-quality-gate/example.html +265 -0
  699. package/skills/design/growth-psychology-playbook/SKILL.md +48 -0
  700. package/skills/design/gsap-core-playbook/SKILL.md +271 -0
  701. package/skills/design/gsap-frameworks-playbook/SKILL.md +254 -0
  702. package/skills/design/gsap-plugins-playbook/SKILL.md +450 -0
  703. package/skills/design/gsap-react-playbook/SKILL.md +153 -0
  704. package/skills/design/gsap-scrolltrigger-playbook/SKILL.md +314 -0
  705. package/skills/design/gsap-speed-playbook/SKILL.md +96 -0
  706. package/skills/design/gsap-timeline-playbook/SKILL.md +124 -0
  707. package/skills/design/gsap-utilities-playbook/SKILL.md +301 -0
  708. package/skills/design/hand-sketched-diagrams-playbook/SKILL.md +48 -0
  709. package/skills/design/high-end-visual-composition-playbook/LICENSE +21 -0
  710. package/skills/design/high-end-visual-composition-playbook/SKILL.md +114 -0
  711. package/skills/design/html-slides-retro-quarterly-audit-playbook/SKILL.md +65 -0
  712. package/skills/design/html-slides-retro-quarterly-audit-playbook/assets/template.html +164 -0
  713. package/skills/design/html-slides-retro-quarterly-audit-playbook/example.html +139 -0
  714. package/skills/design/html-slides-retro-quarterly-audit-quality-gate/SKILL.md +42 -0
  715. package/skills/design/html-slides-retro-quarterly-audit-quality-gate/assets/template.html +164 -0
  716. package/skills/design/html-slides-retro-quarterly-audit-quality-gate/example.html +139 -0
  717. package/skills/design/ideation-playbook/SKILL.md +48 -0
  718. package/skills/design/identity-capture-playbook/SKILL.md +222 -0
  719. package/skills/design/identity-capture-playbook/templates/brand-kit.html +757 -0
  720. package/skills/design/identity-kit-playbook/LICENSE +21 -0
  721. package/skills/design/identity-kit-playbook/SKILL.md +814 -0
  722. package/skills/design/identity-standards-playbook/SKILL.md +48 -0
  723. package/skills/design/imagecraft-interface-mobile-playbook/LICENSE +21 -0
  724. package/skills/design/imagecraft-interface-mobile-playbook/SKILL.md +1482 -0
  725. package/skills/design/imagecraft-interface-web-playbook/LICENSE +21 -0
  726. package/skills/design/imagecraft-interface-web-playbook/SKILL.md +1003 -0
  727. package/skills/design/imagecraft-playbook/SKILL.md +48 -0
  728. package/skills/design/imagen-playbook/SKILL.md +48 -0
  729. package/skills/design/immersive/DESIGN.md +55 -0
  730. package/skills/design/immersive/SKILL.md +81 -0
  731. package/skills/design/impeccable/DESIGN.md +55 -0
  732. package/skills/design/impeccable/SKILL.md +81 -0
  733. package/skills/design/improve-prompt-playbook/SKILL.md +48 -0
  734. package/skills/design/industrial-raw-ui-playbook/LICENSE +21 -0
  735. package/skills/design/industrial-raw-ui-playbook/SKILL.md +108 -0
  736. package/skills/design/interface-builder-playbook/SKILL.md +48 -0
  737. package/skills/design/interface-composition-playbook/LICENSE.txt +177 -0
  738. package/skills/design/interface-composition-playbook/SKILL.md +80 -0
  739. package/skills/design/interface-playbook/SKILL.md +48 -0
  740. package/skills/design/interface-slides-playbook/SKILL.md +48 -0
  741. package/skills/design/late-hours-magazine-blueprint/SKILL.md +62 -0
  742. package/skills/design/late-hours-magazine-blueprint/assets/template.html +173 -0
  743. package/skills/design/late-hours-magazine-blueprint/example.html +12 -0
  744. package/skills/design/late-hours-magazine-blueprint-quality-gate/SKILL.md +44 -0
  745. package/skills/design/late-hours-magazine-blueprint-quality-gate/assets/template.html +173 -0
  746. package/skills/design/late-hours-magazine-blueprint-quality-gate/example.html +12 -0
  747. package/skills/design/levels/DESIGN.md +55 -0
  748. package/skills/design/levels/SKILL.md +83 -0
  749. package/skills/design/lingo/DESIGN.md +55 -0
  750. package/skills/design/lingo/SKILL.md +87 -0
  751. package/skills/design/luxury/DESIGN.md +55 -0
  752. package/skills/design/luxury/SKILL.md +83 -0
  753. package/skills/design/magazine-wine-rules-blueprint/SKILL.md +59 -0
  754. package/skills/design/magazine-wine-rules-blueprint/assets/template.html +94 -0
  755. package/skills/design/magazine-wine-rules-blueprint/example.html +49 -0
  756. package/skills/design/magazine-wine-rules-blueprint-quality-gate/SKILL.md +41 -0
  757. package/skills/design/magazine-wine-rules-blueprint-quality-gate/assets/template.html +94 -0
  758. package/skills/design/magazine-wine-rules-blueprint-quality-gate/example.html +49 -0
  759. package/skills/design/market-campaigns-extractor-playbook/SKILL.md +48 -0
  760. package/skills/design/material/DESIGN.md +55 -0
  761. package/skills/design/material/SKILL.md +97 -0
  762. package/skills/design/matrix/DESIGN.md +55 -0
  763. package/skills/design/matrix/SKILL.md +82 -0
  764. package/skills/design/messagecraft-playbook/SKILL.md +48 -0
  765. package/skills/design/metrics-brief-playbook/SKILL.md +33 -0
  766. package/skills/design/metrics-brief-playbook/example.html +175 -0
  767. package/skills/design/metrics-brief-sample-worked-sample/SKILL.md +37 -0
  768. package/skills/design/metrics-brief-sample-worked-sample/example.html +175 -0
  769. package/skills/design/microinteractions/SKILL.md +58 -0
  770. package/skills/design/minimal/DESIGN.md +55 -0
  771. package/skills/design/minimal/SKILL.md +83 -0
  772. package/skills/design/minimal-ui-playbook/LICENSE +21 -0
  773. package/skills/design/minimal-ui-playbook/SKILL.md +101 -0
  774. package/skills/design/minimax-pdf-playbook/SKILL.md +48 -0
  775. package/skills/design/minimax-word-playbook/SKILL.md +48 -0
  776. package/skills/design/mockup-device-3d-playbook/SKILL.md +49 -0
  777. package/skills/design/mockup-device-3d-playbook/example.html +193 -0
  778. package/skills/design/mockup-device-3d-sample-worked-sample/SKILL.md +34 -0
  779. package/skills/design/mockup-device-3d-sample-worked-sample/example.html +193 -0
  780. package/skills/design/modern/DESIGN.md +55 -0
  781. package/skills/design/modern/SKILL.md +83 -0
  782. package/skills/design/mono/DESIGN.md +55 -0
  783. package/skills/design/mono/SKILL.md +88 -0
  784. package/skills/design/motion-craft-motion-playbook/SKILL.md +52 -0
  785. package/skills/design/motion-hyperframes-playbook/SKILL.md +32 -0
  786. package/skills/design/motion-hyperframes-playbook/example.html +140 -0
  787. package/skills/design/motion-hyperframes-sample-worked-sample/SKILL.md +44 -0
  788. package/skills/design/motion-hyperframes-sample-worked-sample/example.html +140 -0
  789. package/skills/design/motion-retriever-playbook/SKILL.md +48 -0
  790. package/skills/design/naming-name-brainstormer-playbook/SKILL.md +48 -0
  791. package/skills/design/nanobanana-slides-playbook/SKILL.md +48 -0
  792. package/skills/design/neobrutalism/DESIGN.md +55 -0
  793. package/skills/design/neobrutalism/SKILL.md +83 -0
  794. package/skills/design/neon-style/DESIGN.md +55 -0
  795. package/skills/design/neon-style/SKILL.md +83 -0
  796. package/skills/design/neumorphism/DESIGN.md +55 -0
  797. package/skills/design/neumorphism/SKILL.md +88 -0
  798. package/skills/design/numbers-finance-grid-blueprint/SKILL.md +56 -0
  799. package/skills/design/numbers-finance-grid-blueprint/assets/template.html +111 -0
  800. package/skills/design/numbers-finance-grid-blueprint/example.html +44 -0
  801. package/skills/design/numbers-finance-grid-blueprint-quality-gate/SKILL.md +42 -0
  802. package/skills/design/numbers-finance-grid-blueprint-quality-gate/assets/template.html +111 -0
  803. package/skills/design/numbers-finance-grid-blueprint-quality-gate/example.html +44 -0
  804. package/skills/design/operator-navigator-playbook/SKILL.md +227 -0
  805. package/skills/design/operators-operator-journal-playbook/SKILL.md +73 -0
  806. package/skills/design/orientation-guide/SKILL.md +44 -0
  807. package/skills/design/pacman/DESIGN.md +55 -0
  808. package/skills/design/pacman/SKILL.md +84 -0
  809. package/skills/design/palette-advisor-playbook/SKILL.md +48 -0
  810. package/skills/design/paper/DESIGN.md +55 -0
  811. package/skills/design/paper/SKILL.md +83 -0
  812. package/skills/design/paywall-upgrade-conversion-playbook/SKILL.md +48 -0
  813. package/skills/design/pdf-playbook/SKILL.md +48 -0
  814. package/skills/design/perspective/DESIGN.md +55 -0
  815. package/skills/design/perspective/SKILL.md +83 -0
  816. package/skills/design/pet-companion-animation-rows-reference-guide/LICENSE.txt +201 -0
  817. package/skills/design/pet-companion-animation-rows-reference-guide/SKILL.md +48 -0
  818. package/skills/design/pet-companion-animation-rows-reference-guide/agents/openai.yaml +4 -0
  819. package/skills/design/pet-companion-animation-rows-reference-guide/scripts/compose_atlas.py +150 -0
  820. package/skills/design/pet-companion-animation-rows-reference-guide/scripts/derive_running_left_from_running_right.py +143 -0
  821. package/skills/design/pet-companion-animation-rows-reference-guide/scripts/extract_strip_frames.py +323 -0
  822. package/skills/design/pet-companion-animation-rows-reference-guide/scripts/finalize_pet_run.py +382 -0
  823. package/skills/design/pet-companion-animation-rows-reference-guide/scripts/generate_pet_images.py +295 -0
  824. package/skills/design/pet-companion-animation-rows-reference-guide/scripts/inspect_frames.py +246 -0
  825. package/skills/design/pet-companion-animation-rows-reference-guide/scripts/make_contact_sheet.py +96 -0
  826. package/skills/design/pet-companion-animation-rows-reference-guide/scripts/package_custom_pet.py +108 -0
  827. package/skills/design/pet-companion-animation-rows-reference-guide/scripts/pet_job_status.py +117 -0
  828. package/skills/design/pet-companion-animation-rows-reference-guide/scripts/prepare_pet_run.py +674 -0
  829. package/skills/design/pet-companion-animation-rows-reference-guide/scripts/queue_pet_repairs.py +172 -0
  830. package/skills/design/pet-companion-animation-rows-reference-guide/scripts/record_imagegen_result.py +250 -0
  831. package/skills/design/pet-companion-animation-rows-reference-guide/scripts/render_animation_videos.py +134 -0
  832. package/skills/design/pet-companion-animation-rows-reference-guide/scripts/render_animation_videos.sh +5 -0
  833. package/skills/design/pet-companion-animation-rows-reference-guide/scripts/test_generate_pet_images.py +136 -0
  834. package/skills/design/pet-companion-animation-rows-reference-guide/scripts/validate_atlas.py +139 -0
  835. package/skills/design/pet-companion-codex-companion-contract-reference-guide/LICENSE.txt +201 -0
  836. package/skills/design/pet-companion-codex-companion-contract-reference-guide/SKILL.md +54 -0
  837. package/skills/design/pet-companion-codex-companion-contract-reference-guide/agents/openai.yaml +4 -0
  838. package/skills/design/pet-companion-codex-companion-contract-reference-guide/scripts/compose_atlas.py +150 -0
  839. package/skills/design/pet-companion-codex-companion-contract-reference-guide/scripts/derive_running_left_from_running_right.py +143 -0
  840. package/skills/design/pet-companion-codex-companion-contract-reference-guide/scripts/extract_strip_frames.py +323 -0
  841. package/skills/design/pet-companion-codex-companion-contract-reference-guide/scripts/finalize_pet_run.py +382 -0
  842. package/skills/design/pet-companion-codex-companion-contract-reference-guide/scripts/generate_pet_images.py +295 -0
  843. package/skills/design/pet-companion-codex-companion-contract-reference-guide/scripts/inspect_frames.py +246 -0
  844. package/skills/design/pet-companion-codex-companion-contract-reference-guide/scripts/make_contact_sheet.py +96 -0
  845. package/skills/design/pet-companion-codex-companion-contract-reference-guide/scripts/package_custom_pet.py +108 -0
  846. package/skills/design/pet-companion-codex-companion-contract-reference-guide/scripts/pet_job_status.py +117 -0
  847. package/skills/design/pet-companion-codex-companion-contract-reference-guide/scripts/prepare_pet_run.py +674 -0
  848. package/skills/design/pet-companion-codex-companion-contract-reference-guide/scripts/queue_pet_repairs.py +172 -0
  849. package/skills/design/pet-companion-codex-companion-contract-reference-guide/scripts/record_imagegen_result.py +250 -0
  850. package/skills/design/pet-companion-codex-companion-contract-reference-guide/scripts/render_animation_videos.py +134 -0
  851. package/skills/design/pet-companion-codex-companion-contract-reference-guide/scripts/render_animation_videos.sh +5 -0
  852. package/skills/design/pet-companion-codex-companion-contract-reference-guide/scripts/test_generate_pet_images.py +136 -0
  853. package/skills/design/pet-companion-codex-companion-contract-reference-guide/scripts/validate_atlas.py +139 -0
  854. package/skills/design/pet-companion-orientation-guide/LICENSE.txt +201 -0
  855. package/skills/design/pet-companion-orientation-guide/SKILL.md +75 -0
  856. package/skills/design/pet-companion-orientation-guide/agents/openai.yaml +4 -0
  857. package/skills/design/pet-companion-orientation-guide/scripts/compose_atlas.py +150 -0
  858. package/skills/design/pet-companion-orientation-guide/scripts/derive_running_left_from_running_right.py +143 -0
  859. package/skills/design/pet-companion-orientation-guide/scripts/extract_strip_frames.py +323 -0
  860. package/skills/design/pet-companion-orientation-guide/scripts/finalize_pet_run.py +382 -0
  861. package/skills/design/pet-companion-orientation-guide/scripts/generate_pet_images.py +295 -0
  862. package/skills/design/pet-companion-orientation-guide/scripts/inspect_frames.py +246 -0
  863. package/skills/design/pet-companion-orientation-guide/scripts/make_contact_sheet.py +96 -0
  864. package/skills/design/pet-companion-orientation-guide/scripts/package_custom_pet.py +108 -0
  865. package/skills/design/pet-companion-orientation-guide/scripts/pet_job_status.py +117 -0
  866. package/skills/design/pet-companion-orientation-guide/scripts/prepare_pet_run.py +674 -0
  867. package/skills/design/pet-companion-orientation-guide/scripts/queue_pet_repairs.py +172 -0
  868. package/skills/design/pet-companion-orientation-guide/scripts/record_imagegen_result.py +250 -0
  869. package/skills/design/pet-companion-orientation-guide/scripts/render_animation_videos.py +134 -0
  870. package/skills/design/pet-companion-orientation-guide/scripts/render_animation_videos.sh +5 -0
  871. package/skills/design/pet-companion-orientation-guide/scripts/test_generate_pet_images.py +136 -0
  872. package/skills/design/pet-companion-orientation-guide/scripts/validate_atlas.py +139 -0
  873. package/skills/design/pet-companion-playbook/LICENSE.txt +201 -0
  874. package/skills/design/pet-companion-playbook/SKILL.md +344 -0
  875. package/skills/design/pet-companion-playbook/agents/openai.yaml +4 -0
  876. package/skills/design/pet-companion-playbook/scripts/compose_atlas.py +150 -0
  877. package/skills/design/pet-companion-playbook/scripts/derive_running_left_from_running_right.py +143 -0
  878. package/skills/design/pet-companion-playbook/scripts/extract_strip_frames.py +323 -0
  879. package/skills/design/pet-companion-playbook/scripts/finalize_pet_run.py +382 -0
  880. package/skills/design/pet-companion-playbook/scripts/generate_pet_images.py +295 -0
  881. package/skills/design/pet-companion-playbook/scripts/inspect_frames.py +246 -0
  882. package/skills/design/pet-companion-playbook/scripts/make_contact_sheet.py +96 -0
  883. package/skills/design/pet-companion-playbook/scripts/package_custom_pet.py +108 -0
  884. package/skills/design/pet-companion-playbook/scripts/pet_job_status.py +117 -0
  885. package/skills/design/pet-companion-playbook/scripts/prepare_pet_run.py +674 -0
  886. package/skills/design/pet-companion-playbook/scripts/queue_pet_repairs.py +172 -0
  887. package/skills/design/pet-companion-playbook/scripts/record_imagegen_result.py +250 -0
  888. package/skills/design/pet-companion-playbook/scripts/render_animation_videos.py +134 -0
  889. package/skills/design/pet-companion-playbook/scripts/render_animation_videos.sh +5 -0
  890. package/skills/design/pet-companion-playbook/scripts/test_generate_pet_images.py +136 -0
  891. package/skills/design/pet-companion-playbook/scripts/validate_atlas.py +139 -0
  892. package/skills/design/pet-companion-qa-rubric-reference-guide/LICENSE.txt +201 -0
  893. package/skills/design/pet-companion-qa-rubric-reference-guide/SKILL.md +79 -0
  894. package/skills/design/pet-companion-qa-rubric-reference-guide/agents/openai.yaml +4 -0
  895. package/skills/design/pet-companion-qa-rubric-reference-guide/scripts/compose_atlas.py +150 -0
  896. package/skills/design/pet-companion-qa-rubric-reference-guide/scripts/derive_running_left_from_running_right.py +143 -0
  897. package/skills/design/pet-companion-qa-rubric-reference-guide/scripts/extract_strip_frames.py +323 -0
  898. package/skills/design/pet-companion-qa-rubric-reference-guide/scripts/finalize_pet_run.py +382 -0
  899. package/skills/design/pet-companion-qa-rubric-reference-guide/scripts/generate_pet_images.py +295 -0
  900. package/skills/design/pet-companion-qa-rubric-reference-guide/scripts/inspect_frames.py +246 -0
  901. package/skills/design/pet-companion-qa-rubric-reference-guide/scripts/make_contact_sheet.py +96 -0
  902. package/skills/design/pet-companion-qa-rubric-reference-guide/scripts/package_custom_pet.py +108 -0
  903. package/skills/design/pet-companion-qa-rubric-reference-guide/scripts/pet_job_status.py +117 -0
  904. package/skills/design/pet-companion-qa-rubric-reference-guide/scripts/prepare_pet_run.py +674 -0
  905. package/skills/design/pet-companion-qa-rubric-reference-guide/scripts/queue_pet_repairs.py +172 -0
  906. package/skills/design/pet-companion-qa-rubric-reference-guide/scripts/record_imagegen_result.py +250 -0
  907. package/skills/design/pet-companion-qa-rubric-reference-guide/scripts/render_animation_videos.py +134 -0
  908. package/skills/design/pet-companion-qa-rubric-reference-guide/scripts/render_animation_videos.sh +5 -0
  909. package/skills/design/pet-companion-qa-rubric-reference-guide/scripts/test_generate_pet_images.py +136 -0
  910. package/skills/design/pet-companion-qa-rubric-reference-guide/scripts/validate_atlas.py +139 -0
  911. package/skills/design/pixelbin-media-playbook/SKILL.md +48 -0
  912. package/skills/design/planning-composition-audit-playbook/SKILL.md +48 -0
  913. package/skills/design/platform-composition-playbook/SKILL.md +48 -0
  914. package/skills/design/polish-composition-finish-playbook/SKILL.md +54 -0
  915. package/skills/design/poster-hero-playbook/SKILL.md +31 -0
  916. package/skills/design/poster-hero-playbook/example.html +88 -0
  917. package/skills/design/poster-hero-sample-worked-sample/SKILL.md +32 -0
  918. package/skills/design/poster-hero-sample-worked-sample/example.html +88 -0
  919. package/skills/design/pr-feedback-quality-gate/SKILL.md +57 -0
  920. package/skills/design/premium/DESIGN.md +55 -0
  921. package/skills/design/premium/SKILL.md +83 -0
  922. package/skills/design/presentation-composer-playbook/SKILL.md +48 -0
  923. package/skills/design/presentation-html-fidelity-audit-font-discipline-aa2caa/SKILL.md +382 -0
  924. package/skills/design/presentation-html-fidelity-audit-font-discipline-aa2caa/scripts/extract_pptx.py +134 -0
  925. package/skills/design/presentation-html-fidelity-audit-font-discipline-aa2caa/scripts/verify_layout.py +144 -0
  926. package/skills/design/presentation-html-fidelity-audit-layout-discipline-d5a323/SKILL.md +390 -0
  927. package/skills/design/presentation-html-fidelity-audit-layout-discipline-d5a323/scripts/extract_pptx.py +134 -0
  928. package/skills/design/presentation-html-fidelity-audit-layout-discipline-d5a323/scripts/verify_layout.py +144 -0
  929. package/skills/design/presentation-html-fidelity-audit-playbook/SKILL.md +257 -0
  930. package/skills/design/presentation-html-fidelity-audit-playbook/scripts/extract_pptx.py +134 -0
  931. package/skills/design/presentation-html-fidelity-audit-playbook/scripts/verify_layout.py +144 -0
  932. package/skills/design/presentation-html-fidelity-audit-table-blueprint-1ad2ac/SKILL.md +77 -0
  933. package/skills/design/presentation-html-fidelity-audit-table-blueprint-1ad2ac/scripts/extract_pptx.py +134 -0
  934. package/skills/design/presentation-html-fidelity-audit-table-blueprint-1ad2ac/scripts/verify_layout.py +144 -0
  935. package/skills/design/presentation-playbook/SKILL.md +48 -0
  936. package/skills/design/professional/DESIGN.md +55 -0
  937. package/skills/design/professional/SKILL.md +83 -0
  938. package/skills/design/publication/DESIGN.md +55 -0
  939. package/skills/design/publication/SKILL.md +89 -0
  940. package/skills/design/reading-year-in-audit-motion-blueprint/SKILL.md +76 -0
  941. package/skills/design/reading-year-in-audit-motion-blueprint/assets/template.html +714 -0
  942. package/skills/design/reading-year-in-audit-motion-blueprint/example.html +63 -0
  943. package/skills/design/reading-year-in-audit-motion-blueprint-quality-gate/SKILL.md +45 -0
  944. package/skills/design/reading-year-in-audit-motion-blueprint-quality-gate/assets/template.html +714 -0
  945. package/skills/design/reading-year-in-audit-motion-blueprint-quality-gate/example.html +63 -0
  946. package/skills/design/reference-composition-contract-playbook/SKILL.md +97 -0
  947. package/skills/design/reference-composition-contract-playbook/example.html +236 -0
  948. package/skills/design/reference-composition-contract-quality-gate/SKILL.md +45 -0
  949. package/skills/design/reference-composition-contract-quality-gate/example.html +236 -0
  950. package/skills/design/refined/DESIGN.md +55 -0
  951. package/skills/design/refined/SKILL.md +83 -0
  952. package/skills/design/refresh-existing-projects-playbook/LICENSE +21 -0
  953. package/skills/design/refresh-existing-projects-playbook/SKILL.md +194 -0
  954. package/skills/design/release-journal-single-page-layouts-reference-guide/SKILL.md +318 -0
  955. package/skills/design/release-journal-single-page-layouts-reference-guide/assets/template.html +342 -0
  956. package/skills/design/release-journal-single-page-layouts-reference-guide/example.html +156 -0
  957. package/skills/design/release-journal-single-page-playbook/SKILL.md +100 -0
  958. package/skills/design/release-journal-single-page-playbook/assets/template.html +342 -0
  959. package/skills/design/release-journal-single-page-playbook/example.html +156 -0
  960. package/skills/design/release-journal-single-page-quality-gate/SKILL.md +60 -0
  961. package/skills/design/release-journal-single-page-quality-gate/assets/template.html +342 -0
  962. package/skills/design/release-journal-single-page-quality-gate/example.html +156 -0
  963. package/skills/design/remotion-playbook/SKILL.md +48 -0
  964. package/skills/design/replicate-playbook/SKILL.md +48 -0
  965. package/skills/design/research-decision-room-evidence-model-reference-guide/SKILL.md +96 -0
  966. package/skills/design/research-decision-room-evidence-model-reference-guide/example.html +890 -0
  967. package/skills/design/research-decision-room-playbook/SKILL.md +164 -0
  968. package/skills/design/research-decision-room-playbook/example.html +890 -0
  969. package/skills/design/research-decision-room-quality-gate/SKILL.md +66 -0
  970. package/skills/design/research-decision-room-quality-gate/example.html +890 -0
  971. package/skills/design/responsive-layout/SKILL.md +59 -0
  972. package/skills/design/resume-modern-playbook/SKILL.md +31 -0
  973. package/skills/design/resume-modern-playbook/example.html +122 -0
  974. package/skills/design/resume-modern-sample-worked-sample/SKILL.md +59 -0
  975. package/skills/design/resume-modern-sample-worked-sample/example.html +122 -0
  976. package/skills/design/retro/DESIGN.md +55 -0
  977. package/skills/design/retro/SKILL.md +83 -0
  978. package/skills/design/riso/DESIGN.md +55 -0
  979. package/skills/design/riso/SKILL.md +81 -0
  980. package/skills/design/scene-distortion-headline-playbook/SKILL.md +52 -0
  981. package/skills/design/scene-distortion-headline-playbook/example.html +99 -0
  982. package/skills/design/scene-distortion-headline-sample-worked-sample/SKILL.md +31 -0
  983. package/skills/design/scene-distortion-headline-sample-worked-sample/example.html +99 -0
  984. package/skills/design/scene-flow-notes/SKILL.md +51 -0
  985. package/skills/design/scene-flow-notes/example.html +137 -0
  986. package/skills/design/scene-flow-notes-sample-worked-sample/SKILL.md +32 -0
  987. package/skills/design/scene-flow-notes-sample-worked-sample/example.html +137 -0
  988. package/skills/design/scene-fluid-background-hero-playbook/SKILL.md +58 -0
  989. package/skills/design/scene-fluid-background-hero-playbook/example.html +64 -0
  990. package/skills/design/scene-fluid-background-hero-sample-worked-sample/SKILL.md +28 -0
  991. package/skills/design/scene-fluid-background-hero-sample-worked-sample/example.html +64 -0
  992. package/skills/design/scene-light-flare-cinema-playbook/SKILL.md +53 -0
  993. package/skills/design/scene-light-flare-cinema-playbook/example.html +81 -0
  994. package/skills/design/scene-light-flare-cinema-sample-worked-sample/SKILL.md +31 -0
  995. package/skills/design/scene-light-flare-cinema-sample-worked-sample/example.html +81 -0
  996. package/skills/design/scene-macos-alert-playbook/SKILL.md +57 -0
  997. package/skills/design/scene-macos-alert-playbook/example.html +60 -0
  998. package/skills/design/scene-macos-alert-sample-worked-sample/SKILL.md +29 -0
  999. package/skills/design/scene-macos-alert-sample-worked-sample/example.html +60 -0
  1000. package/skills/design/scene-mark-ending-playbook/SKILL.md +49 -0
  1001. package/skills/design/scene-mark-ending-playbook/example.html +80 -0
  1002. package/skills/design/scene-mark-ending-sample-worked-sample/SKILL.md +31 -0
  1003. package/skills/design/scene-mark-ending-sample-worked-sample/example.html +80 -0
  1004. package/skills/design/scene-metrics-chart-nyt-playbook/SKILL.md +46 -0
  1005. package/skills/design/scene-metrics-chart-nyt-playbook/example.html +101 -0
  1006. package/skills/design/scene-metrics-chart-nyt-sample-worked-sample/SKILL.md +37 -0
  1007. package/skills/design/scene-metrics-chart-nyt-sample-worked-sample/example.html +101 -0
  1008. package/skills/design/sega/DESIGN.md +55 -0
  1009. package/skills/design/sega/SKILL.md +81 -0
  1010. package/skills/design/shadcn/DESIGN.md +55 -0
  1011. package/skills/design/shadcn/SKILL.md +83 -0
  1012. package/skills/design/shadcn-ui-playbook/SKILL.md +48 -0
  1013. package/skills/design/shader-builder-playbook/SKILL.md +48 -0
  1014. package/skills/design/signin-flow-playbook/SKILL.md +51 -0
  1015. package/skills/design/signin-flow-playbook/example.html +362 -0
  1016. package/skills/design/signin-flow-quality-gate/SKILL.md +38 -0
  1017. package/skills/design/signin-flow-quality-gate/example.html +362 -0
  1018. package/skills/design/simple/DESIGN.md +55 -0
  1019. package/skills/design/simple/SKILL.md +83 -0
  1020. package/skills/design/sketch/DESIGN.md +55 -0
  1021. package/skills/design/sketch/SKILL.md +81 -0
  1022. package/skills/design/skeumorphism/DESIGN.md +55 -0
  1023. package/skills/design/skeumorphism/SKILL.md +97 -0
  1024. package/skills/design/slack-gif-creator-playbook/SKILL.md +48 -0
  1025. package/skills/design/sleek/DESIGN.md +55 -0
  1026. package/skills/design/sleek/SKILL.md +83 -0
  1027. package/skills/design/slides-grid-global-playbook/SKILL.md +65 -0
  1028. package/skills/design/slides-grid-global-playbook/example.html +117 -0
  1029. package/skills/design/slides-grid-global-sample-worked-sample/SKILL.md +34 -0
  1030. package/skills/design/slides-grid-global-sample-worked-sample/example.html +117 -0
  1031. package/skills/design/slides-guizang-magazine-playbook/SKILL.md +51 -0
  1032. package/skills/design/slides-guizang-magazine-playbook/example.html +92 -0
  1033. package/skills/design/slides-guizang-magazine-sample-worked-sample/SKILL.md +31 -0
  1034. package/skills/design/slides-guizang-magazine-sample-worked-sample/example.html +92 -0
  1035. package/skills/design/slides-keynote-playbook/SKILL.md +32 -0
  1036. package/skills/design/slides-keynote-playbook/example.html +130 -0
  1037. package/skills/design/slides-keynote-sample-worked-sample/SKILL.md +44 -0
  1038. package/skills/design/slides-keynote-sample-worked-sample/example.html +130 -0
  1039. package/skills/design/slides-live-canvas-workspace-playbook/SKILL.md +55 -0
  1040. package/skills/design/slides-live-canvas-workspace-playbook/example.html +51 -0
  1041. package/skills/design/slides-live-canvas-workspace-sample-worked-sample/SKILL.md +25 -0
  1042. package/skills/design/slides-live-canvas-workspace-sample-worked-sample/example.html +51 -0
  1043. package/skills/design/slides-playbook/SKILL.md +48 -0
  1044. package/skills/design/social-reddit-tile-playbook/SKILL.md +54 -0
  1045. package/skills/design/social-reddit-tile-playbook/example.html +56 -0
  1046. package/skills/design/social-reddit-tile-sample-worked-sample/SKILL.md +27 -0
  1047. package/skills/design/social-reddit-tile-sample-worked-sample/example.html +56 -0
  1048. package/skills/design/social-spotify-tile-playbook/SKILL.md +53 -0
  1049. package/skills/design/social-spotify-tile-playbook/example.html +70 -0
  1050. package/skills/design/social-spotify-tile-sample-worked-sample/SKILL.md +29 -0
  1051. package/skills/design/social-spotify-tile-sample-worked-sample/example.html +70 -0
  1052. package/skills/design/social-x-post-tile-playbook/SKILL.md +51 -0
  1053. package/skills/design/social-x-post-tile-playbook/example.html +53 -0
  1054. package/skills/design/social-x-post-tile-sample-worked-sample/SKILL.md +30 -0
  1055. package/skills/design/social-x-post-tile-sample-worked-sample/example.html +53 -0
  1056. package/skills/design/sora-playbook/SKILL.md +48 -0
  1057. package/skills/design/spacious/DESIGN.md +55 -0
  1058. package/skills/design/spacious/SKILL.md +89 -0
  1059. package/skills/design/speech-playbook/SKILL.md +48 -0
  1060. package/skills/design/stitch-composition-taste-playbook/LICENSE +21 -0
  1061. package/skills/design/stitch-composition-taste-playbook/SKILL.md +200 -0
  1062. package/skills/design/stitch-loop-playbook/SKILL.md +48 -0
  1063. package/skills/design/stitch-playbook-composition-journal/LICENSE +21 -0
  1064. package/skills/design/stitch-playbook-composition-journal/SKILL.md +141 -0
  1065. package/skills/design/story-publication-playbook/SKILL.md +32 -0
  1066. package/skills/design/story-publication-playbook/example.html +81 -0
  1067. package/skills/design/story-publication-sample-worked-sample/SKILL.md +57 -0
  1068. package/skills/design/story-publication-sample-worked-sample/example.html +81 -0
  1069. package/skills/design/storytelling/DESIGN.md +55 -0
  1070. package/skills/design/storytelling/SKILL.md +83 -0
  1071. package/skills/design/swiftui-composition-playbook/SKILL.md +48 -0
  1072. package/skills/design/terracotta/DESIGN.md +55 -0
  1073. package/skills/design/terracotta/SKILL.md +81 -0
  1074. package/skills/design/tetris/DESIGN.md +55 -0
  1075. package/skills/design/tetris/SKILL.md +83 -0
  1076. package/skills/design/theme-factory/LICENSE.txt +202 -0
  1077. package/skills/design/theme-factory/SKILL.md +59 -0
  1078. package/skills/design/theme-factory/theme-showcase.pdf +0 -0
  1079. package/skills/design/theme-factory/themes/arctic-frost.md +19 -0
  1080. package/skills/design/theme-factory/themes/botanical-garden.md +19 -0
  1081. package/skills/design/theme-factory/themes/desert-rose.md +19 -0
  1082. package/skills/design/theme-factory/themes/forest-canopy.md +19 -0
  1083. package/skills/design/theme-factory/themes/golden-hour.md +19 -0
  1084. package/skills/design/theme-factory/themes/midnight-galaxy.md +19 -0
  1085. package/skills/design/theme-factory/themes/modern-minimalist.md +19 -0
  1086. package/skills/design/theme-factory/themes/ocean-depths.md +19 -0
  1087. package/skills/design/theme-factory/themes/sunset-boulevard.md +19 -0
  1088. package/skills/design/theme-factory/themes/tech-innovation.md +19 -0
  1089. package/skills/design/theme-factory-playbook/SKILL.md +48 -0
  1090. package/skills/design/threejs-playbook/SKILL.md +48 -0
  1091. package/skills/design/tile-rednote-playbook/SKILL.md +31 -0
  1092. package/skills/design/tile-rednote-playbook/example.html +98 -0
  1093. package/skills/design/tile-rednote-sample-worked-sample/SKILL.md +46 -0
  1094. package/skills/design/tile-rednote-sample-worked-sample/example.html +98 -0
  1095. package/skills/design/tile-x-playbook/SKILL.md +31 -0
  1096. package/skills/design/tile-x-playbook/example.html +58 -0
  1097. package/skills/design/tile-x-sample-worked-sample/SKILL.md +24 -0
  1098. package/skills/design/tile-x-sample-worked-sample/example.html +58 -0
  1099. package/skills/design/ui-playbooks-playbook/SKILL.md +48 -0
  1100. package/skills/design/ui-ux-principles/SKILL.md +58 -0
  1101. package/skills/design/ui-ux-pro-max-playbook/SKILL.md +63 -0
  1102. package/skills/design/uupm-banner-design/SKILL.md +196 -0
  1103. package/skills/design/uupm-banner-design/references/banner-sizes-and-styles.md +118 -0
  1104. package/skills/design/uupm-brand/SKILL.md +97 -0
  1105. package/skills/design/uupm-brand/references/approval-checklist.md +169 -0
  1106. package/skills/design/uupm-brand/references/asset-organization.md +157 -0
  1107. package/skills/design/uupm-brand/references/brand-guideline-template.md +140 -0
  1108. package/skills/design/uupm-brand/references/color-palette-management.md +186 -0
  1109. package/skills/design/uupm-brand/references/consistency-checklist.md +94 -0
  1110. package/skills/design/uupm-brand/references/logo-usage-rules.md +185 -0
  1111. package/skills/design/uupm-brand/references/messaging-framework.md +85 -0
  1112. package/skills/design/uupm-brand/references/typography-specifications.md +214 -0
  1113. package/skills/design/uupm-brand/references/update.md +118 -0
  1114. package/skills/design/uupm-brand/references/visual-identity.md +96 -0
  1115. package/skills/design/uupm-brand/references/voice-framework.md +88 -0
  1116. package/skills/design/uupm-brand/scripts/extract-colors.cjs +341 -0
  1117. package/skills/design/uupm-brand/scripts/inject-brand-context.cjs +349 -0
  1118. package/skills/design/uupm-brand/scripts/sync-brand-to-tokens.cjs +266 -0
  1119. package/skills/design/uupm-brand/scripts/validate-asset.cjs +387 -0
  1120. package/skills/design/uupm-brand/templates/brand-guidelines-starter.md +275 -0
  1121. package/skills/design/uupm-design/SKILL.md +313 -0
  1122. package/skills/design/uupm-design/data/cip/deliverables.csv +51 -0
  1123. package/skills/design/uupm-design/data/cip/industries.csv +21 -0
  1124. package/skills/design/uupm-design/data/cip/mockup-contexts.csv +21 -0
  1125. package/skills/design/uupm-design/data/cip/styles.csv +21 -0
  1126. package/skills/design/uupm-design/data/icon/styles.csv +16 -0
  1127. package/skills/design/uupm-design/data/logo/colors.csv +56 -0
  1128. package/skills/design/uupm-design/data/logo/industries.csv +56 -0
  1129. package/skills/design/uupm-design/data/logo/styles.csv +56 -0
  1130. package/skills/design/uupm-design/references/banner-sizes-and-styles.md +118 -0
  1131. package/skills/design/uupm-design/references/cip-deliverable-guide.md +95 -0
  1132. package/skills/design/uupm-design/references/cip-design.md +121 -0
  1133. package/skills/design/uupm-design/references/cip-prompt-engineering.md +84 -0
  1134. package/skills/design/uupm-design/references/cip-style-guide.md +68 -0
  1135. package/skills/design/uupm-design/references/design-routing.md +207 -0
  1136. package/skills/design/uupm-design/references/icon-design.md +122 -0
  1137. package/skills/design/uupm-design/references/logo-color-psychology.md +101 -0
  1138. package/skills/design/uupm-design/references/logo-design.md +92 -0
  1139. package/skills/design/uupm-design/references/logo-prompt-engineering.md +158 -0
  1140. package/skills/design/uupm-design/references/logo-style-guide.md +109 -0
  1141. package/skills/design/uupm-design/references/slides-copywriting-formulas.md +84 -0
  1142. package/skills/design/uupm-design/references/slides-create.md +4 -0
  1143. package/skills/design/uupm-design/references/slides-html-template.md +295 -0
  1144. package/skills/design/uupm-design/references/slides-layout-patterns.md +137 -0
  1145. package/skills/design/uupm-design/references/slides-strategies.md +94 -0
  1146. package/skills/design/uupm-design/references/slides.md +42 -0
  1147. package/skills/design/uupm-design/references/social-photos-design.md +329 -0
  1148. package/skills/design/uupm-design/scripts/cip/core.py +215 -0
  1149. package/skills/design/uupm-design/scripts/cip/generate.py +484 -0
  1150. package/skills/design/uupm-design/scripts/cip/render-html.py +424 -0
  1151. package/skills/design/uupm-design/scripts/cip/search.py +127 -0
  1152. package/skills/design/uupm-design/scripts/icon/generate.py +487 -0
  1153. package/skills/design/uupm-design/scripts/logo/core.py +175 -0
  1154. package/skills/design/uupm-design/scripts/logo/generate.py +362 -0
  1155. package/skills/design/uupm-design/scripts/logo/search.py +114 -0
  1156. package/skills/design/uupm-design-system/SKILL.md +244 -0
  1157. package/skills/design/uupm-design-system/data/slide-backgrounds.csv +11 -0
  1158. package/skills/design/uupm-design-system/data/slide-charts.csv +26 -0
  1159. package/skills/design/uupm-design-system/data/slide-color-logic.csv +14 -0
  1160. package/skills/design/uupm-design-system/data/slide-copy.csv +26 -0
  1161. package/skills/design/uupm-design-system/data/slide-layout-logic.csv +16 -0
  1162. package/skills/design/uupm-design-system/data/slide-layouts.csv +26 -0
  1163. package/skills/design/uupm-design-system/data/slide-strategies.csv +16 -0
  1164. package/skills/design/uupm-design-system/data/slide-typography.csv +15 -0
  1165. package/skills/design/uupm-design-system/references/component-specs.md +236 -0
  1166. package/skills/design/uupm-design-system/references/component-tokens.md +214 -0
  1167. package/skills/design/uupm-design-system/references/primitive-tokens.md +203 -0
  1168. package/skills/design/uupm-design-system/references/semantic-tokens.md +215 -0
  1169. package/skills/design/uupm-design-system/references/states-and-variants.md +241 -0
  1170. package/skills/design/uupm-design-system/references/tailwind-integration.md +251 -0
  1171. package/skills/design/uupm-design-system/references/token-architecture.md +224 -0
  1172. package/skills/design/uupm-design-system/scripts/embed-tokens.cjs +99 -0
  1173. package/skills/design/uupm-design-system/scripts/fetch-background.py +317 -0
  1174. package/skills/design/uupm-design-system/scripts/generate-slide.py +770 -0
  1175. package/skills/design/uupm-design-system/scripts/generate-tokens.cjs +205 -0
  1176. package/skills/design/uupm-design-system/scripts/html-token-validator.py +327 -0
  1177. package/skills/design/uupm-design-system/scripts/search-slides.py +218 -0
  1178. package/skills/design/uupm-design-system/scripts/slide-token-validator.py +35 -0
  1179. package/skills/design/uupm-design-system/scripts/slide_search_core.py +453 -0
  1180. package/skills/design/uupm-design-system/scripts/validate-tokens.cjs +251 -0
  1181. package/skills/design/uupm-design-system/templates/design-tokens-starter.json +143 -0
  1182. package/skills/design/uupm-slides/SKILL.md +40 -0
  1183. package/skills/design/uupm-slides/references/copywriting-formulas.md +84 -0
  1184. package/skills/design/uupm-slides/references/create.md +4 -0
  1185. package/skills/design/uupm-slides/references/html-template.md +295 -0
  1186. package/skills/design/uupm-slides/references/layout-patterns.md +137 -0
  1187. package/skills/design/uupm-slides/references/slide-strategies.md +94 -0
  1188. package/skills/design/uupm-ui-styling/LICENSE.txt +202 -0
  1189. package/skills/design/uupm-ui-styling/SKILL.md +324 -0
  1190. package/skills/design/uupm-ui-styling/canvas-fonts/ArsenalSC-OFL.txt +93 -0
  1191. package/skills/design/uupm-ui-styling/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
  1192. package/skills/design/uupm-ui-styling/canvas-fonts/BigShoulders-Bold.ttf +0 -0
  1193. package/skills/design/uupm-ui-styling/canvas-fonts/BigShoulders-OFL.txt +93 -0
  1194. package/skills/design/uupm-ui-styling/canvas-fonts/BigShoulders-Regular.ttf +0 -0
  1195. package/skills/design/uupm-ui-styling/canvas-fonts/Boldonse-OFL.txt +93 -0
  1196. package/skills/design/uupm-ui-styling/canvas-fonts/Boldonse-Regular.ttf +0 -0
  1197. package/skills/design/uupm-ui-styling/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
  1198. package/skills/design/uupm-ui-styling/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
  1199. package/skills/design/uupm-ui-styling/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
  1200. package/skills/design/uupm-ui-styling/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
  1201. package/skills/design/uupm-ui-styling/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
  1202. package/skills/design/uupm-ui-styling/canvas-fonts/CrimsonPro-OFL.txt +93 -0
  1203. package/skills/design/uupm-ui-styling/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
  1204. package/skills/design/uupm-ui-styling/canvas-fonts/DMMono-OFL.txt +93 -0
  1205. package/skills/design/uupm-ui-styling/canvas-fonts/DMMono-Regular.ttf +0 -0
  1206. package/skills/design/uupm-ui-styling/canvas-fonts/EricaOne-OFL.txt +94 -0
  1207. package/skills/design/uupm-ui-styling/canvas-fonts/EricaOne-Regular.ttf +0 -0
  1208. package/skills/design/uupm-ui-styling/canvas-fonts/GeistMono-Bold.ttf +0 -0
  1209. package/skills/design/uupm-ui-styling/canvas-fonts/GeistMono-OFL.txt +93 -0
  1210. package/skills/design/uupm-ui-styling/canvas-fonts/GeistMono-Regular.ttf +0 -0
  1211. package/skills/design/uupm-ui-styling/canvas-fonts/Gloock-OFL.txt +93 -0
  1212. package/skills/design/uupm-ui-styling/canvas-fonts/Gloock-Regular.ttf +0 -0
  1213. package/skills/design/uupm-ui-styling/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
  1214. package/skills/design/uupm-ui-styling/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
  1215. package/skills/design/uupm-ui-styling/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
  1216. package/skills/design/uupm-ui-styling/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
  1217. package/skills/design/uupm-ui-styling/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
  1218. package/skills/design/uupm-ui-styling/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
  1219. package/skills/design/uupm-ui-styling/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
  1220. package/skills/design/uupm-ui-styling/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
  1221. package/skills/design/uupm-ui-styling/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
  1222. package/skills/design/uupm-ui-styling/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
  1223. package/skills/design/uupm-ui-styling/canvas-fonts/InstrumentSans-OFL.txt +93 -0
  1224. package/skills/design/uupm-ui-styling/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
  1225. package/skills/design/uupm-ui-styling/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
  1226. package/skills/design/uupm-ui-styling/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
  1227. package/skills/design/uupm-ui-styling/canvas-fonts/Italiana-OFL.txt +93 -0
  1228. package/skills/design/uupm-ui-styling/canvas-fonts/Italiana-Regular.ttf +0 -0
  1229. package/skills/design/uupm-ui-styling/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
  1230. package/skills/design/uupm-ui-styling/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
  1231. package/skills/design/uupm-ui-styling/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
  1232. package/skills/design/uupm-ui-styling/canvas-fonts/Jura-Light.ttf +0 -0
  1233. package/skills/design/uupm-ui-styling/canvas-fonts/Jura-Medium.ttf +0 -0
  1234. package/skills/design/uupm-ui-styling/canvas-fonts/Jura-OFL.txt +93 -0
  1235. package/skills/design/uupm-ui-styling/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
  1236. package/skills/design/uupm-ui-styling/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
  1237. package/skills/design/uupm-ui-styling/canvas-fonts/Lora-Bold.ttf +0 -0
  1238. package/skills/design/uupm-ui-styling/canvas-fonts/Lora-BoldItalic.ttf +0 -0
  1239. package/skills/design/uupm-ui-styling/canvas-fonts/Lora-Italic.ttf +0 -0
  1240. package/skills/design/uupm-ui-styling/canvas-fonts/Lora-OFL.txt +93 -0
  1241. package/skills/design/uupm-ui-styling/canvas-fonts/Lora-Regular.ttf +0 -0
  1242. package/skills/design/uupm-ui-styling/canvas-fonts/NationalPark-Bold.ttf +0 -0
  1243. package/skills/design/uupm-ui-styling/canvas-fonts/NationalPark-OFL.txt +93 -0
  1244. package/skills/design/uupm-ui-styling/canvas-fonts/NationalPark-Regular.ttf +0 -0
  1245. package/skills/design/uupm-ui-styling/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
  1246. package/skills/design/uupm-ui-styling/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
  1247. package/skills/design/uupm-ui-styling/canvas-fonts/Outfit-Bold.ttf +0 -0
  1248. package/skills/design/uupm-ui-styling/canvas-fonts/Outfit-OFL.txt +93 -0
  1249. package/skills/design/uupm-ui-styling/canvas-fonts/Outfit-Regular.ttf +0 -0
  1250. package/skills/design/uupm-ui-styling/canvas-fonts/PixelifySans-Medium.ttf +0 -0
  1251. package/skills/design/uupm-ui-styling/canvas-fonts/PixelifySans-OFL.txt +93 -0
  1252. package/skills/design/uupm-ui-styling/canvas-fonts/PoiretOne-OFL.txt +93 -0
  1253. package/skills/design/uupm-ui-styling/canvas-fonts/PoiretOne-Regular.ttf +0 -0
  1254. package/skills/design/uupm-ui-styling/canvas-fonts/RedHatMono-Bold.ttf +0 -0
  1255. package/skills/design/uupm-ui-styling/canvas-fonts/RedHatMono-OFL.txt +93 -0
  1256. package/skills/design/uupm-ui-styling/canvas-fonts/RedHatMono-Regular.ttf +0 -0
  1257. package/skills/design/uupm-ui-styling/canvas-fonts/Silkscreen-OFL.txt +93 -0
  1258. package/skills/design/uupm-ui-styling/canvas-fonts/Silkscreen-Regular.ttf +0 -0
  1259. package/skills/design/uupm-ui-styling/canvas-fonts/SmoochSans-Medium.ttf +0 -0
  1260. package/skills/design/uupm-ui-styling/canvas-fonts/SmoochSans-OFL.txt +93 -0
  1261. package/skills/design/uupm-ui-styling/canvas-fonts/Tektur-Medium.ttf +0 -0
  1262. package/skills/design/uupm-ui-styling/canvas-fonts/Tektur-OFL.txt +93 -0
  1263. package/skills/design/uupm-ui-styling/canvas-fonts/Tektur-Regular.ttf +0 -0
  1264. package/skills/design/uupm-ui-styling/canvas-fonts/WorkSans-Bold.ttf +0 -0
  1265. package/skills/design/uupm-ui-styling/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
  1266. package/skills/design/uupm-ui-styling/canvas-fonts/WorkSans-Italic.ttf +0 -0
  1267. package/skills/design/uupm-ui-styling/canvas-fonts/WorkSans-OFL.txt +93 -0
  1268. package/skills/design/uupm-ui-styling/canvas-fonts/WorkSans-Regular.ttf +0 -0
  1269. package/skills/design/uupm-ui-styling/canvas-fonts/YoungSerif-OFL.txt +93 -0
  1270. package/skills/design/uupm-ui-styling/canvas-fonts/YoungSerif-Regular.ttf +0 -0
  1271. package/skills/design/uupm-ui-styling/references/canvas-design-system.md +320 -0
  1272. package/skills/design/uupm-ui-styling/references/shadcn-accessibility.md +471 -0
  1273. package/skills/design/uupm-ui-styling/references/shadcn-components.md +424 -0
  1274. package/skills/design/uupm-ui-styling/references/shadcn-theming.md +373 -0
  1275. package/skills/design/uupm-ui-styling/references/tailwind-customization.md +483 -0
  1276. package/skills/design/uupm-ui-styling/references/tailwind-responsive.md +382 -0
  1277. package/skills/design/uupm-ui-styling/references/tailwind-utilities.md +455 -0
  1278. package/skills/design/uupm-ui-styling/scripts/.coverage +0 -0
  1279. package/skills/design/uupm-ui-styling/scripts/requirements.txt +17 -0
  1280. package/skills/design/uupm-ui-styling/scripts/shadcn_add.py +308 -0
  1281. package/skills/design/uupm-ui-styling/scripts/tailwind_config_gen.py +473 -0
  1282. package/skills/design/uupm-ui-styling/scripts/tests/coverage-ui.json +1 -0
  1283. package/skills/design/uupm-ui-styling/scripts/tests/requirements.txt +3 -0
  1284. package/skills/design/uupm-ui-styling/scripts/tests/test_shadcn_add.py +266 -0
  1285. package/skills/design/uupm-ui-styling/scripts/tests/test_tailwind_config_gen.py +336 -0
  1286. package/skills/design/uupm-ui-ux-pro-max/SKILL.md +661 -0
  1287. package/skills/design/uupm-ui-ux-pro-max/data +1 -0
  1288. package/skills/design/uupm-ui-ux-pro-max/scripts +1 -0
  1289. package/skills/design/venice-audio-playbook/SKILL.md +48 -0
  1290. package/skills/design/venice-audio-speech-playbook/SKILL.md +48 -0
  1291. package/skills/design/venice-motion-playbook/SKILL.md +48 -0
  1292. package/skills/design/venice-visual-compose-playbook/SKILL.md +48 -0
  1293. package/skills/design/venice-visual-edit-playbook/SKILL.md +48 -0
  1294. package/skills/design/vfx-text-cursor-playbook/SKILL.md +49 -0
  1295. package/skills/design/vfx-text-cursor-playbook/example.html +65 -0
  1296. package/skills/design/vfx-text-cursor-sample-worked-sample/SKILL.md +31 -0
  1297. package/skills/design/vfx-text-cursor-sample-worked-sample/example.html +65 -0
  1298. package/skills/design/vibrant/DESIGN.md +55 -0
  1299. package/skills/design/vibrant/SKILL.md +83 -0
  1300. package/skills/design/vintage/DESIGN.md +55 -0
  1301. package/skills/design/vintage/SKILL.md +83 -0
  1302. package/skills/design/visual-enhancer-playbook/SKILL.md +48 -0
  1303. package/skills/design/visual-to-code-playbook/LICENSE +21 -0
  1304. package/skills/design/visual-to-code-playbook/SKILL.md +1245 -0
  1305. package/skills/design/web-composition-standards-playbook/SKILL.md +48 -0
  1306. package/skills/design/web-deliverables-assembler-playbook/SKILL.md +48 -0
  1307. package/skills/design/word-playbook/SKILL.md +48 -0
  1308. package/skills/design/workspace-composition-playbook/SKILL.md +48 -0
  1309. package/skills/design/wpds-playbook/SKILL.md +48 -0
  1310. package/skills/design/youtube-clipper-playbook/SKILL.md +48 -0
  1311. package/skills/engineering/architecture/api-design-rest-graphql/SKILL.md +67 -0
  1312. package/skills/engineering/architecture/caching-strategies/SKILL.md +59 -0
  1313. package/skills/engineering/architecture/data-modeling/SKILL.md +64 -0
  1314. package/skills/engineering/architecture/message-queues-async/SKILL.md +58 -0
  1315. package/skills/engineering/architecture/scalability-reliability/SKILL.md +62 -0
  1316. package/skills/engineering/architecture/software-architecture-patterns/SKILL.md +56 -0
  1317. package/skills/engineering/architecture/system-design-fundamentals/SKILL.md +56 -0
  1318. package/skills/engineering/backend/auth-and-authorization/SKILL.md +62 -0
  1319. package/skills/engineering/backend/backend-fundamentals/SKILL.md +65 -0
  1320. package/skills/engineering/backend/observability-logging/SKILL.md +60 -0
  1321. package/skills/engineering/frontend/accessibility-wcag/SKILL.md +57 -0
  1322. package/skills/engineering/frontend/frontend-architecture/SKILL.md +65 -0
  1323. package/skills/engineering/frontend/rendering-strategies-ssr-csr/SKILL.md +60 -0
  1324. package/skills/engineering/frontend/state-management/SKILL.md +69 -0
  1325. package/skills/engineering/performance/backend-performance/SKILL.md +69 -0
  1326. package/skills/engineering/performance/database-query-optimization/SKILL.md +64 -0
  1327. package/skills/engineering/performance/profiling-and-benchmarking/SKILL.md +60 -0
  1328. package/skills/engineering/performance/web-performance-core-vitals/SKILL.md +72 -0
  1329. package/skills/engineering/practices/clean-code/SKILL.md +61 -0
  1330. package/skills/engineering/practices/code-optimization/SKILL.md +60 -0
  1331. package/skills/engineering/practices/code-review-practices/SKILL.md +58 -0
  1332. package/skills/engineering/practices/git-workflow/SKILL.md +62 -0
  1333. package/skills/engineering/practices/refactoring/SKILL.md +58 -0
  1334. package/skills/engineering/security/appsec-fundamentals/SKILL.md +70 -0
  1335. package/skills/engineering/security/dependency-supply-chain/SKILL.md +77 -0
  1336. package/skills/engineering/security/owasp-asvs/SKILL.md +54 -0
  1337. package/skills/engineering/security/owasp-top-10/SKILL.md +63 -0
  1338. package/skills/engineering/security/secrets-management/SKILL.md +58 -0
  1339. package/skills/engineering/security/secure-auth-sessions/SKILL.md +56 -0
  1340. package/skills/engineering/testing/tdd-and-coverage/SKILL.md +62 -0
  1341. package/skills/engineering/testing/testing-strategy-pyramid/SKILL.md +56 -0
  1342. package/skills/engineering/testing/unit-integration-e2e/SKILL.md +75 -0
  1343. package/skills/front-end/canvas-design/LICENSE.txt +202 -0
  1344. package/skills/front-end/canvas-design/SKILL.md +130 -0
  1345. package/skills/front-end/canvas-design/canvas-fonts/ArsenalSC-OFL.txt +93 -0
  1346. package/skills/front-end/canvas-design/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
  1347. package/skills/front-end/canvas-design/canvas-fonts/BigShoulders-Bold.ttf +0 -0
  1348. package/skills/front-end/canvas-design/canvas-fonts/BigShoulders-OFL.txt +93 -0
  1349. package/skills/front-end/canvas-design/canvas-fonts/BigShoulders-Regular.ttf +0 -0
  1350. package/skills/front-end/canvas-design/canvas-fonts/Boldonse-OFL.txt +93 -0
  1351. package/skills/front-end/canvas-design/canvas-fonts/Boldonse-Regular.ttf +0 -0
  1352. package/skills/front-end/canvas-design/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
  1353. package/skills/front-end/canvas-design/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
  1354. package/skills/front-end/canvas-design/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
  1355. package/skills/front-end/canvas-design/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
  1356. package/skills/front-end/canvas-design/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
  1357. package/skills/front-end/canvas-design/canvas-fonts/CrimsonPro-OFL.txt +93 -0
  1358. package/skills/front-end/canvas-design/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
  1359. package/skills/front-end/canvas-design/canvas-fonts/DMMono-OFL.txt +93 -0
  1360. package/skills/front-end/canvas-design/canvas-fonts/DMMono-Regular.ttf +0 -0
  1361. package/skills/front-end/canvas-design/canvas-fonts/EricaOne-OFL.txt +94 -0
  1362. package/skills/front-end/canvas-design/canvas-fonts/EricaOne-Regular.ttf +0 -0
  1363. package/skills/front-end/canvas-design/canvas-fonts/GeistMono-Bold.ttf +0 -0
  1364. package/skills/front-end/canvas-design/canvas-fonts/GeistMono-OFL.txt +93 -0
  1365. package/skills/front-end/canvas-design/canvas-fonts/GeistMono-Regular.ttf +0 -0
  1366. package/skills/front-end/canvas-design/canvas-fonts/Gloock-OFL.txt +93 -0
  1367. package/skills/front-end/canvas-design/canvas-fonts/Gloock-Regular.ttf +0 -0
  1368. package/skills/front-end/canvas-design/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
  1369. package/skills/front-end/canvas-design/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
  1370. package/skills/front-end/canvas-design/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
  1371. package/skills/front-end/canvas-design/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
  1372. package/skills/front-end/canvas-design/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
  1373. package/skills/front-end/canvas-design/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
  1374. package/skills/front-end/canvas-design/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
  1375. package/skills/front-end/canvas-design/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
  1376. package/skills/front-end/canvas-design/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
  1377. package/skills/front-end/canvas-design/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
  1378. package/skills/front-end/canvas-design/canvas-fonts/InstrumentSans-OFL.txt +93 -0
  1379. package/skills/front-end/canvas-design/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
  1380. package/skills/front-end/canvas-design/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
  1381. package/skills/front-end/canvas-design/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
  1382. package/skills/front-end/canvas-design/canvas-fonts/Italiana-OFL.txt +93 -0
  1383. package/skills/front-end/canvas-design/canvas-fonts/Italiana-Regular.ttf +0 -0
  1384. package/skills/front-end/canvas-design/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
  1385. package/skills/front-end/canvas-design/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
  1386. package/skills/front-end/canvas-design/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
  1387. package/skills/front-end/canvas-design/canvas-fonts/Jura-Light.ttf +0 -0
  1388. package/skills/front-end/canvas-design/canvas-fonts/Jura-Medium.ttf +0 -0
  1389. package/skills/front-end/canvas-design/canvas-fonts/Jura-OFL.txt +93 -0
  1390. package/skills/front-end/canvas-design/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
  1391. package/skills/front-end/canvas-design/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
  1392. package/skills/front-end/canvas-design/canvas-fonts/Lora-Bold.ttf +0 -0
  1393. package/skills/front-end/canvas-design/canvas-fonts/Lora-BoldItalic.ttf +0 -0
  1394. package/skills/front-end/canvas-design/canvas-fonts/Lora-Italic.ttf +0 -0
  1395. package/skills/front-end/canvas-design/canvas-fonts/Lora-OFL.txt +93 -0
  1396. package/skills/front-end/canvas-design/canvas-fonts/Lora-Regular.ttf +0 -0
  1397. package/skills/front-end/canvas-design/canvas-fonts/NationalPark-Bold.ttf +0 -0
  1398. package/skills/front-end/canvas-design/canvas-fonts/NationalPark-OFL.txt +93 -0
  1399. package/skills/front-end/canvas-design/canvas-fonts/NationalPark-Regular.ttf +0 -0
  1400. package/skills/front-end/canvas-design/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
  1401. package/skills/front-end/canvas-design/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
  1402. package/skills/front-end/canvas-design/canvas-fonts/Outfit-Bold.ttf +0 -0
  1403. package/skills/front-end/canvas-design/canvas-fonts/Outfit-OFL.txt +93 -0
  1404. package/skills/front-end/canvas-design/canvas-fonts/Outfit-Regular.ttf +0 -0
  1405. package/skills/front-end/canvas-design/canvas-fonts/PixelifySans-Medium.ttf +0 -0
  1406. package/skills/front-end/canvas-design/canvas-fonts/PixelifySans-OFL.txt +93 -0
  1407. package/skills/front-end/canvas-design/canvas-fonts/PoiretOne-OFL.txt +93 -0
  1408. package/skills/front-end/canvas-design/canvas-fonts/PoiretOne-Regular.ttf +0 -0
  1409. package/skills/front-end/canvas-design/canvas-fonts/RedHatMono-Bold.ttf +0 -0
  1410. package/skills/front-end/canvas-design/canvas-fonts/RedHatMono-OFL.txt +93 -0
  1411. package/skills/front-end/canvas-design/canvas-fonts/RedHatMono-Regular.ttf +0 -0
  1412. package/skills/front-end/canvas-design/canvas-fonts/Silkscreen-OFL.txt +93 -0
  1413. package/skills/front-end/canvas-design/canvas-fonts/Silkscreen-Regular.ttf +0 -0
  1414. package/skills/front-end/canvas-design/canvas-fonts/SmoochSans-Medium.ttf +0 -0
  1415. package/skills/front-end/canvas-design/canvas-fonts/SmoochSans-OFL.txt +93 -0
  1416. package/skills/front-end/canvas-design/canvas-fonts/Tektur-Medium.ttf +0 -0
  1417. package/skills/front-end/canvas-design/canvas-fonts/Tektur-OFL.txt +93 -0
  1418. package/skills/front-end/canvas-design/canvas-fonts/Tektur-Regular.ttf +0 -0
  1419. package/skills/front-end/canvas-design/canvas-fonts/WorkSans-Bold.ttf +0 -0
  1420. package/skills/front-end/canvas-design/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
  1421. package/skills/front-end/canvas-design/canvas-fonts/WorkSans-Italic.ttf +0 -0
  1422. package/skills/front-end/canvas-design/canvas-fonts/WorkSans-OFL.txt +93 -0
  1423. package/skills/front-end/canvas-design/canvas-fonts/WorkSans-Regular.ttf +0 -0
  1424. package/skills/front-end/canvas-design/canvas-fonts/YoungSerif-OFL.txt +93 -0
  1425. package/skills/front-end/canvas-design/canvas-fonts/YoungSerif-Regular.ttf +0 -0
  1426. package/skills/front-end/claude-api/LICENSE.txt +202 -0
  1427. package/skills/front-end/claude-api/SKILL.md +356 -0
  1428. package/skills/front-end/claude-api/csharp/claude-api.md +447 -0
  1429. package/skills/front-end/claude-api/curl/examples.md +216 -0
  1430. package/skills/front-end/claude-api/curl/managed-agents.md +338 -0
  1431. package/skills/front-end/claude-api/go/claude-api.md +440 -0
  1432. package/skills/front-end/claude-api/go/managed-agents/README.md +561 -0
  1433. package/skills/front-end/claude-api/java/claude-api.md +461 -0
  1434. package/skills/front-end/claude-api/java/managed-agents/README.md +442 -0
  1435. package/skills/front-end/claude-api/php/claude-api.md +402 -0
  1436. package/skills/front-end/claude-api/php/managed-agents/README.md +435 -0
  1437. package/skills/front-end/claude-api/python/claude-api/README.md +536 -0
  1438. package/skills/front-end/claude-api/python/claude-api/batches.md +198 -0
  1439. package/skills/front-end/claude-api/python/claude-api/files-api.md +170 -0
  1440. package/skills/front-end/claude-api/python/claude-api/streaming.md +179 -0
  1441. package/skills/front-end/claude-api/python/claude-api/tool-use.md +590 -0
  1442. package/skills/front-end/claude-api/python/managed-agents/README.md +334 -0
  1443. package/skills/front-end/claude-api/ruby/claude-api.md +140 -0
  1444. package/skills/front-end/claude-api/ruby/managed-agents/README.md +389 -0
  1445. package/skills/front-end/claude-api/shared/agent-design.md +101 -0
  1446. package/skills/front-end/claude-api/shared/anthropic-cli.md +246 -0
  1447. package/skills/front-end/claude-api/shared/claude-platform-on-aws.md +59 -0
  1448. package/skills/front-end/claude-api/shared/error-codes.md +233 -0
  1449. package/skills/front-end/claude-api/shared/live-sources.md +143 -0
  1450. package/skills/front-end/claude-api/shared/managed-agents-api-reference.md +422 -0
  1451. package/skills/front-end/claude-api/shared/managed-agents-client-patterns.md +211 -0
  1452. package/skills/front-end/claude-api/shared/managed-agents-core.md +252 -0
  1453. package/skills/front-end/claude-api/shared/managed-agents-environments.md +219 -0
  1454. package/skills/front-end/claude-api/shared/managed-agents-events.md +220 -0
  1455. package/skills/front-end/claude-api/shared/managed-agents-memory.md +197 -0
  1456. package/skills/front-end/claude-api/shared/managed-agents-multiagent.md +99 -0
  1457. package/skills/front-end/claude-api/shared/managed-agents-onboarding.md +144 -0
  1458. package/skills/front-end/claude-api/shared/managed-agents-outcomes.md +106 -0
  1459. package/skills/front-end/claude-api/shared/managed-agents-overview.md +71 -0
  1460. package/skills/front-end/claude-api/shared/managed-agents-scheduled-deployments.md +144 -0
  1461. package/skills/front-end/claude-api/shared/managed-agents-self-hosted-sandboxes.md +174 -0
  1462. package/skills/front-end/claude-api/shared/managed-agents-tools.md +358 -0
  1463. package/skills/front-end/claude-api/shared/managed-agents-webhooks.md +110 -0
  1464. package/skills/front-end/claude-api/shared/model-migration.md +1135 -0
  1465. package/skills/front-end/claude-api/shared/models.md +132 -0
  1466. package/skills/front-end/claude-api/shared/prompt-caching.md +223 -0
  1467. package/skills/front-end/claude-api/shared/token-counting.md +56 -0
  1468. package/skills/front-end/claude-api/shared/tool-use-concepts.md +347 -0
  1469. package/skills/front-end/claude-api/typescript/claude-api/README.md +372 -0
  1470. package/skills/front-end/claude-api/typescript/claude-api/batches.md +106 -0
  1471. package/skills/front-end/claude-api/typescript/claude-api/files-api.md +98 -0
  1472. package/skills/front-end/claude-api/typescript/claude-api/streaming.md +178 -0
  1473. package/skills/front-end/claude-api/typescript/claude-api/tool-use.md +527 -0
  1474. package/skills/front-end/claude-api/typescript/managed-agents/README.md +357 -0
  1475. package/skills/front-end/doc-coauthoring/SKILL.md +375 -0
  1476. package/skills/front-end/docx/LICENSE.txt +30 -0
  1477. package/skills/front-end/docx/SKILL.md +590 -0
  1478. package/skills/front-end/docx/scripts/__init__.py +1 -0
  1479. package/skills/front-end/docx/scripts/accept_changes.py +135 -0
  1480. package/skills/front-end/docx/scripts/comment.py +318 -0
  1481. package/skills/front-end/docx/scripts/office/helpers/__init__.py +0 -0
  1482. package/skills/front-end/docx/scripts/office/helpers/merge_runs.py +199 -0
  1483. package/skills/front-end/docx/scripts/office/helpers/simplify_redlines.py +197 -0
  1484. package/skills/front-end/docx/scripts/office/pack.py +159 -0
  1485. package/skills/front-end/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  1486. package/skills/front-end/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  1487. package/skills/front-end/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  1488. package/skills/front-end/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  1489. package/skills/front-end/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  1490. package/skills/front-end/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  1491. package/skills/front-end/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  1492. package/skills/front-end/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  1493. package/skills/front-end/docx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  1494. package/skills/front-end/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  1495. package/skills/front-end/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  1496. package/skills/front-end/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  1497. package/skills/front-end/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  1498. package/skills/front-end/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  1499. package/skills/front-end/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  1500. package/skills/front-end/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  1501. package/skills/front-end/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  1502. package/skills/front-end/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  1503. package/skills/front-end/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  1504. package/skills/front-end/docx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  1505. package/skills/front-end/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  1506. package/skills/front-end/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  1507. package/skills/front-end/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  1508. package/skills/front-end/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  1509. package/skills/front-end/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  1510. package/skills/front-end/docx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  1511. package/skills/front-end/docx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  1512. package/skills/front-end/docx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  1513. package/skills/front-end/docx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  1514. package/skills/front-end/docx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  1515. package/skills/front-end/docx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  1516. package/skills/front-end/docx/scripts/office/schemas/mce/mc.xsd +75 -0
  1517. package/skills/front-end/docx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
  1518. package/skills/front-end/docx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
  1519. package/skills/front-end/docx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
  1520. package/skills/front-end/docx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
  1521. package/skills/front-end/docx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
  1522. package/skills/front-end/docx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  1523. package/skills/front-end/docx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
  1524. package/skills/front-end/docx/scripts/office/soffice.py +183 -0
  1525. package/skills/front-end/docx/scripts/office/unpack.py +132 -0
  1526. package/skills/front-end/docx/scripts/office/validate.py +111 -0
  1527. package/skills/front-end/docx/scripts/office/validators/__init__.py +15 -0
  1528. package/skills/front-end/docx/scripts/office/validators/base.py +847 -0
  1529. package/skills/front-end/docx/scripts/office/validators/docx.py +446 -0
  1530. package/skills/front-end/docx/scripts/office/validators/pptx.py +275 -0
  1531. package/skills/front-end/docx/scripts/office/validators/redlining.py +247 -0
  1532. package/skills/front-end/docx/scripts/templates/comments.xml +3 -0
  1533. package/skills/front-end/docx/scripts/templates/commentsExtended.xml +3 -0
  1534. package/skills/front-end/docx/scripts/templates/commentsExtensible.xml +3 -0
  1535. package/skills/front-end/docx/scripts/templates/commentsIds.xml +3 -0
  1536. package/skills/front-end/docx/scripts/templates/people.xml +3 -0
  1537. package/skills/front-end/frontend-design/LICENSE.txt +177 -0
  1538. package/skills/front-end/frontend-design/SKILL.md +55 -0
  1539. package/skills/front-end/frontend-slides/SKILL.md +380 -0
  1540. package/skills/front-end/frontend-slides/STYLE_PRESETS.md +346 -0
  1541. package/skills/front-end/frontend-slides/animation-patterns.md +110 -0
  1542. package/skills/front-end/frontend-slides/bold-template-pack/README.md +77 -0
  1543. package/skills/front-end/frontend-slides/bold-template-pack/deck-stage.js +619 -0
  1544. package/skills/front-end/frontend-slides/bold-template-pack/selection-index.json +858 -0
  1545. package/skills/front-end/frontend-slides/bold-template-pack/templates/8-bit-orbit/design.md +573 -0
  1546. package/skills/front-end/frontend-slides/bold-template-pack/templates/8-bit-orbit/preview.md +55 -0
  1547. package/skills/front-end/frontend-slides/bold-template-pack/templates/biennale-yellow/design.md +579 -0
  1548. package/skills/front-end/frontend-slides/bold-template-pack/templates/biennale-yellow/preview.md +55 -0
  1549. package/skills/front-end/frontend-slides/bold-template-pack/templates/block-frame/design.md +609 -0
  1550. package/skills/front-end/frontend-slides/bold-template-pack/templates/block-frame/preview.md +55 -0
  1551. package/skills/front-end/frontend-slides/bold-template-pack/templates/blue-professional/design.md +712 -0
  1552. package/skills/front-end/frontend-slides/bold-template-pack/templates/blue-professional/preview.md +55 -0
  1553. package/skills/front-end/frontend-slides/bold-template-pack/templates/bold-poster/design.md +713 -0
  1554. package/skills/front-end/frontend-slides/bold-template-pack/templates/bold-poster/preview.md +55 -0
  1555. package/skills/front-end/frontend-slides/bold-template-pack/templates/broadside/design.md +504 -0
  1556. package/skills/front-end/frontend-slides/bold-template-pack/templates/broadside/preview.md +55 -0
  1557. package/skills/front-end/frontend-slides/bold-template-pack/templates/capsule/design.md +569 -0
  1558. package/skills/front-end/frontend-slides/bold-template-pack/templates/capsule/preview.md +55 -0
  1559. package/skills/front-end/frontend-slides/bold-template-pack/templates/cartesian/design.md +524 -0
  1560. package/skills/front-end/frontend-slides/bold-template-pack/templates/cartesian/preview.md +55 -0
  1561. package/skills/front-end/frontend-slides/bold-template-pack/templates/cobalt-grid/design.md +564 -0
  1562. package/skills/front-end/frontend-slides/bold-template-pack/templates/cobalt-grid/preview.md +55 -0
  1563. package/skills/front-end/frontend-slides/bold-template-pack/templates/coral/design.md +615 -0
  1564. package/skills/front-end/frontend-slides/bold-template-pack/templates/coral/preview.md +55 -0
  1565. package/skills/front-end/frontend-slides/bold-template-pack/templates/creative-mode/design.md +566 -0
  1566. package/skills/front-end/frontend-slides/bold-template-pack/templates/creative-mode/preview.md +55 -0
  1567. package/skills/front-end/frontend-slides/bold-template-pack/templates/daisy-days/design.md +510 -0
  1568. package/skills/front-end/frontend-slides/bold-template-pack/templates/daisy-days/preview.md +55 -0
  1569. package/skills/front-end/frontend-slides/bold-template-pack/templates/editorial-forest/design.md +508 -0
  1570. package/skills/front-end/frontend-slides/bold-template-pack/templates/editorial-forest/preview.md +55 -0
  1571. package/skills/front-end/frontend-slides/bold-template-pack/templates/editorial-tri-tone/design.md +601 -0
  1572. package/skills/front-end/frontend-slides/bold-template-pack/templates/editorial-tri-tone/preview.md +55 -0
  1573. package/skills/front-end/frontend-slides/bold-template-pack/templates/emerald-editorial/design.md +613 -0
  1574. package/skills/front-end/frontend-slides/bold-template-pack/templates/emerald-editorial/preview.md +55 -0
  1575. package/skills/front-end/frontend-slides/bold-template-pack/templates/grove/design.md +570 -0
  1576. package/skills/front-end/frontend-slides/bold-template-pack/templates/grove/preview.md +55 -0
  1577. package/skills/front-end/frontend-slides/bold-template-pack/templates/long-table/design.md +594 -0
  1578. package/skills/front-end/frontend-slides/bold-template-pack/templates/long-table/preview.md +55 -0
  1579. package/skills/front-end/frontend-slides/bold-template-pack/templates/mat/design.md +474 -0
  1580. package/skills/front-end/frontend-slides/bold-template-pack/templates/mat/preview.md +55 -0
  1581. package/skills/front-end/frontend-slides/bold-template-pack/templates/monochrome/design.md +493 -0
  1582. package/skills/front-end/frontend-slides/bold-template-pack/templates/monochrome/preview.md +55 -0
  1583. package/skills/front-end/frontend-slides/bold-template-pack/templates/neo-grid-bold/design.md +564 -0
  1584. package/skills/front-end/frontend-slides/bold-template-pack/templates/neo-grid-bold/preview.md +55 -0
  1585. package/skills/front-end/frontend-slides/bold-template-pack/templates/peoples-platform/design.md +701 -0
  1586. package/skills/front-end/frontend-slides/bold-template-pack/templates/peoples-platform/preview.md +55 -0
  1587. package/skills/front-end/frontend-slides/bold-template-pack/templates/pin-and-paper/design.md +641 -0
  1588. package/skills/front-end/frontend-slides/bold-template-pack/templates/pin-and-paper/preview.md +55 -0
  1589. package/skills/front-end/frontend-slides/bold-template-pack/templates/pink-script/design.md +673 -0
  1590. package/skills/front-end/frontend-slides/bold-template-pack/templates/pink-script/preview.md +55 -0
  1591. package/skills/front-end/frontend-slides/bold-template-pack/templates/playful/design.md +491 -0
  1592. package/skills/front-end/frontend-slides/bold-template-pack/templates/playful/preview.md +55 -0
  1593. package/skills/front-end/frontend-slides/bold-template-pack/templates/raw-grid/design.md +487 -0
  1594. package/skills/front-end/frontend-slides/bold-template-pack/templates/raw-grid/preview.md +55 -0
  1595. package/skills/front-end/frontend-slides/bold-template-pack/templates/retro-windows/design.md +578 -0
  1596. package/skills/front-end/frontend-slides/bold-template-pack/templates/retro-windows/preview.md +55 -0
  1597. package/skills/front-end/frontend-slides/bold-template-pack/templates/retro-zine/design.md +569 -0
  1598. package/skills/front-end/frontend-slides/bold-template-pack/templates/retro-zine/preview.md +55 -0
  1599. package/skills/front-end/frontend-slides/bold-template-pack/templates/sakura-chroma/design.md +627 -0
  1600. package/skills/front-end/frontend-slides/bold-template-pack/templates/sakura-chroma/preview.md +55 -0
  1601. package/skills/front-end/frontend-slides/bold-template-pack/templates/scatterbrain/design.md +575 -0
  1602. package/skills/front-end/frontend-slides/bold-template-pack/templates/scatterbrain/preview.md +55 -0
  1603. package/skills/front-end/frontend-slides/bold-template-pack/templates/signal/design.md +528 -0
  1604. package/skills/front-end/frontend-slides/bold-template-pack/templates/signal/preview.md +55 -0
  1605. package/skills/front-end/frontend-slides/bold-template-pack/templates/soft-editorial/design.md +626 -0
  1606. package/skills/front-end/frontend-slides/bold-template-pack/templates/soft-editorial/preview.md +55 -0
  1607. package/skills/front-end/frontend-slides/bold-template-pack/templates/stencil-tablet/design.md +678 -0
  1608. package/skills/front-end/frontend-slides/bold-template-pack/templates/stencil-tablet/preview.md +55 -0
  1609. package/skills/front-end/frontend-slides/bold-template-pack/templates/studio/design.md +497 -0
  1610. package/skills/front-end/frontend-slides/bold-template-pack/templates/studio/preview.md +55 -0
  1611. package/skills/front-end/frontend-slides/bold-template-pack/templates/vellum/design.md +547 -0
  1612. package/skills/front-end/frontend-slides/bold-template-pack/templates/vellum/preview.md +55 -0
  1613. package/skills/front-end/frontend-slides/html-template.md +350 -0
  1614. package/skills/front-end/frontend-slides/scripts/deploy.sh +218 -0
  1615. package/skills/front-end/frontend-slides/scripts/export-pdf.sh +418 -0
  1616. package/skills/front-end/frontend-slides/scripts/extract-pptx.py +96 -0
  1617. package/skills/front-end/frontend-slides/viewport-base.css +133 -0
  1618. package/skills/front-end/internal-comms/LICENSE.txt +202 -0
  1619. package/skills/front-end/internal-comms/SKILL.md +32 -0
  1620. package/skills/front-end/internal-comms/examples/3p-updates.md +47 -0
  1621. package/skills/front-end/internal-comms/examples/company-newsletter.md +65 -0
  1622. package/skills/front-end/internal-comms/examples/faq-answers.md +30 -0
  1623. package/skills/front-end/internal-comms/examples/general-comms.md +16 -0
  1624. package/skills/front-end/mcp-builder/LICENSE.txt +202 -0
  1625. package/skills/front-end/mcp-builder/SKILL.md +236 -0
  1626. package/skills/front-end/mcp-builder/reference/evaluation.md +602 -0
  1627. package/skills/front-end/mcp-builder/reference/mcp_best_practices.md +249 -0
  1628. package/skills/front-end/mcp-builder/reference/node_mcp_server.md +970 -0
  1629. package/skills/front-end/mcp-builder/reference/python_mcp_server.md +719 -0
  1630. package/skills/front-end/mcp-builder/scripts/connections.py +151 -0
  1631. package/skills/front-end/mcp-builder/scripts/evaluation.py +373 -0
  1632. package/skills/front-end/mcp-builder/scripts/example_evaluation.xml +22 -0
  1633. package/skills/front-end/mcp-builder/scripts/requirements.txt +2 -0
  1634. package/skills/front-end/pdf/LICENSE.txt +30 -0
  1635. package/skills/front-end/pdf/SKILL.md +314 -0
  1636. package/skills/front-end/pdf/forms.md +294 -0
  1637. package/skills/front-end/pdf/reference.md +612 -0
  1638. package/skills/front-end/pdf/scripts/check_bounding_boxes.py +65 -0
  1639. package/skills/front-end/pdf/scripts/check_fillable_fields.py +11 -0
  1640. package/skills/front-end/pdf/scripts/convert_pdf_to_images.py +33 -0
  1641. package/skills/front-end/pdf/scripts/create_validation_image.py +37 -0
  1642. package/skills/front-end/pdf/scripts/extract_form_field_info.py +122 -0
  1643. package/skills/front-end/pdf/scripts/extract_form_structure.py +115 -0
  1644. package/skills/front-end/pdf/scripts/fill_fillable_fields.py +98 -0
  1645. package/skills/front-end/pdf/scripts/fill_pdf_form_with_annotations.py +107 -0
  1646. package/skills/front-end/pptx/LICENSE.txt +30 -0
  1647. package/skills/front-end/pptx/SKILL.md +232 -0
  1648. package/skills/front-end/pptx/editing.md +205 -0
  1649. package/skills/front-end/pptx/pptxgenjs.md +420 -0
  1650. package/skills/front-end/pptx/scripts/__init__.py +0 -0
  1651. package/skills/front-end/pptx/scripts/add_slide.py +195 -0
  1652. package/skills/front-end/pptx/scripts/clean.py +286 -0
  1653. package/skills/front-end/pptx/scripts/office/helpers/__init__.py +0 -0
  1654. package/skills/front-end/pptx/scripts/office/helpers/merge_runs.py +199 -0
  1655. package/skills/front-end/pptx/scripts/office/helpers/simplify_redlines.py +197 -0
  1656. package/skills/front-end/pptx/scripts/office/pack.py +159 -0
  1657. package/skills/front-end/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  1658. package/skills/front-end/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  1659. package/skills/front-end/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  1660. package/skills/front-end/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  1661. package/skills/front-end/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  1662. package/skills/front-end/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  1663. package/skills/front-end/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  1664. package/skills/front-end/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  1665. package/skills/front-end/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  1666. package/skills/front-end/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  1667. package/skills/front-end/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  1668. package/skills/front-end/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  1669. package/skills/front-end/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  1670. package/skills/front-end/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  1671. package/skills/front-end/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  1672. package/skills/front-end/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  1673. package/skills/front-end/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  1674. package/skills/front-end/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  1675. package/skills/front-end/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  1676. package/skills/front-end/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  1677. package/skills/front-end/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  1678. package/skills/front-end/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  1679. package/skills/front-end/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  1680. package/skills/front-end/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  1681. package/skills/front-end/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  1682. package/skills/front-end/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  1683. package/skills/front-end/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  1684. package/skills/front-end/pptx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  1685. package/skills/front-end/pptx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  1686. package/skills/front-end/pptx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  1687. package/skills/front-end/pptx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  1688. package/skills/front-end/pptx/scripts/office/schemas/mce/mc.xsd +75 -0
  1689. package/skills/front-end/pptx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
  1690. package/skills/front-end/pptx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
  1691. package/skills/front-end/pptx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
  1692. package/skills/front-end/pptx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
  1693. package/skills/front-end/pptx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
  1694. package/skills/front-end/pptx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  1695. package/skills/front-end/pptx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
  1696. package/skills/front-end/pptx/scripts/office/soffice.py +183 -0
  1697. package/skills/front-end/pptx/scripts/office/unpack.py +132 -0
  1698. package/skills/front-end/pptx/scripts/office/validate.py +111 -0
  1699. package/skills/front-end/pptx/scripts/office/validators/__init__.py +15 -0
  1700. package/skills/front-end/pptx/scripts/office/validators/base.py +847 -0
  1701. package/skills/front-end/pptx/scripts/office/validators/docx.py +446 -0
  1702. package/skills/front-end/pptx/scripts/office/validators/pptx.py +275 -0
  1703. package/skills/front-end/pptx/scripts/office/validators/redlining.py +247 -0
  1704. package/skills/front-end/pptx/scripts/thumbnail.py +289 -0
  1705. package/skills/front-end/skill-creator/LICENSE.txt +202 -0
  1706. package/skills/front-end/skill-creator/SKILL.md +485 -0
  1707. package/skills/front-end/skill-creator/agents/analyzer.md +274 -0
  1708. package/skills/front-end/skill-creator/agents/comparator.md +202 -0
  1709. package/skills/front-end/skill-creator/agents/grader.md +223 -0
  1710. package/skills/front-end/skill-creator/assets/eval_review.html +146 -0
  1711. package/skills/front-end/skill-creator/eval-viewer/generate_review.py +471 -0
  1712. package/skills/front-end/skill-creator/eval-viewer/viewer.html +1325 -0
  1713. package/skills/front-end/skill-creator/references/schemas.md +430 -0
  1714. package/skills/front-end/skill-creator/scripts/__init__.py +0 -0
  1715. package/skills/front-end/skill-creator/scripts/aggregate_benchmark.py +401 -0
  1716. package/skills/front-end/skill-creator/scripts/generate_report.py +326 -0
  1717. package/skills/front-end/skill-creator/scripts/improve_description.py +247 -0
  1718. package/skills/front-end/skill-creator/scripts/package_skill.py +136 -0
  1719. package/skills/front-end/skill-creator/scripts/quick_validate.py +103 -0
  1720. package/skills/front-end/skill-creator/scripts/run_eval.py +310 -0
  1721. package/skills/front-end/skill-creator/scripts/run_loop.py +328 -0
  1722. package/skills/front-end/skill-creator/scripts/utils.py +47 -0
  1723. package/skills/front-end/slack-gif-creator/LICENSE.txt +202 -0
  1724. package/skills/front-end/slack-gif-creator/SKILL.md +254 -0
  1725. package/skills/front-end/slack-gif-creator/core/easing.py +234 -0
  1726. package/skills/front-end/slack-gif-creator/core/frame_composer.py +176 -0
  1727. package/skills/front-end/slack-gif-creator/core/gif_builder.py +269 -0
  1728. package/skills/front-end/slack-gif-creator/core/validators.py +136 -0
  1729. package/skills/front-end/slack-gif-creator/requirements.txt +4 -0
  1730. package/skills/front-end/web-artifacts-builder/LICENSE.txt +202 -0
  1731. package/skills/front-end/web-artifacts-builder/SKILL.md +74 -0
  1732. package/skills/front-end/web-artifacts-builder/scripts/bundle-artifact.sh +54 -0
  1733. package/skills/front-end/web-artifacts-builder/scripts/init-artifact.sh +322 -0
  1734. package/skills/front-end/web-artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
  1735. package/skills/front-end/webapp-testing/LICENSE.txt +202 -0
  1736. package/skills/front-end/webapp-testing/SKILL.md +96 -0
  1737. package/skills/front-end/webapp-testing/examples/console_logging.py +35 -0
  1738. package/skills/front-end/webapp-testing/examples/element_discovery.py +40 -0
  1739. package/skills/front-end/webapp-testing/examples/static_html_automation.py +33 -0
  1740. package/skills/front-end/webapp-testing/scripts/with_server.py +106 -0
  1741. package/skills/front-end/xlsx/LICENSE.txt +30 -0
  1742. package/skills/front-end/xlsx/SKILL.md +292 -0
  1743. package/skills/front-end/xlsx/scripts/office/helpers/__init__.py +0 -0
  1744. package/skills/front-end/xlsx/scripts/office/helpers/merge_runs.py +199 -0
  1745. package/skills/front-end/xlsx/scripts/office/helpers/simplify_redlines.py +197 -0
  1746. package/skills/front-end/xlsx/scripts/office/pack.py +159 -0
  1747. package/skills/front-end/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  1748. package/skills/front-end/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  1749. package/skills/front-end/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  1750. package/skills/front-end/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  1751. package/skills/front-end/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  1752. package/skills/front-end/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  1753. package/skills/front-end/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  1754. package/skills/front-end/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  1755. package/skills/front-end/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  1756. package/skills/front-end/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  1757. package/skills/front-end/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  1758. package/skills/front-end/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  1759. package/skills/front-end/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  1760. package/skills/front-end/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  1761. package/skills/front-end/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  1762. package/skills/front-end/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  1763. package/skills/front-end/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  1764. package/skills/front-end/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  1765. package/skills/front-end/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  1766. package/skills/front-end/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  1767. package/skills/front-end/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  1768. package/skills/front-end/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  1769. package/skills/front-end/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  1770. package/skills/front-end/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  1771. package/skills/front-end/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  1772. package/skills/front-end/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  1773. package/skills/front-end/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  1774. package/skills/front-end/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  1775. package/skills/front-end/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  1776. package/skills/front-end/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  1777. package/skills/front-end/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  1778. package/skills/front-end/xlsx/scripts/office/schemas/mce/mc.xsd +75 -0
  1779. package/skills/front-end/xlsx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
  1780. package/skills/front-end/xlsx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
  1781. package/skills/front-end/xlsx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
  1782. package/skills/front-end/xlsx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
  1783. package/skills/front-end/xlsx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
  1784. package/skills/front-end/xlsx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  1785. package/skills/front-end/xlsx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
  1786. package/skills/front-end/xlsx/scripts/office/soffice.py +183 -0
  1787. package/skills/front-end/xlsx/scripts/office/unpack.py +132 -0
  1788. package/skills/front-end/xlsx/scripts/office/validate.py +111 -0
  1789. package/skills/front-end/xlsx/scripts/office/validators/__init__.py +15 -0
  1790. package/skills/front-end/xlsx/scripts/office/validators/base.py +847 -0
  1791. package/skills/front-end/xlsx/scripts/office/validators/docx.py +446 -0
  1792. package/skills/front-end/xlsx/scripts/office/validators/pptx.py +275 -0
  1793. package/skills/front-end/xlsx/scripts/office/validators/redlining.py +247 -0
  1794. package/skills/front-end/xlsx/scripts/recalc.py +184 -0
  1795. package/skills/languages/c/SKILL.md +74 -0
  1796. package/skills/languages/clojure/SKILL.md +73 -0
  1797. package/skills/languages/cpp/SKILL.md +75 -0
  1798. package/skills/languages/csharp/SKILL.md +75 -0
  1799. package/skills/languages/dart/SKILL.md +82 -0
  1800. package/skills/languages/elixir/SKILL.md +74 -0
  1801. package/skills/languages/erlang/SKILL.md +76 -0
  1802. package/skills/languages/go/SKILL.md +83 -0
  1803. package/skills/languages/haskell/SKILL.md +70 -0
  1804. package/skills/languages/java/SKILL.md +71 -0
  1805. package/skills/languages/javascript/SKILL.md +62 -0
  1806. package/skills/languages/kotlin/SKILL.md +68 -0
  1807. package/skills/languages/lua/SKILL.md +79 -0
  1808. package/skills/languages/objectivec/SKILL.md +83 -0
  1809. package/skills/languages/php/SKILL.md +74 -0
  1810. package/skills/languages/python/SKILL.md +68 -0
  1811. package/skills/languages/r/SKILL.md +70 -0
  1812. package/skills/languages/ruby/SKILL.md +67 -0
  1813. package/skills/languages/rust/SKILL.md +72 -0
  1814. package/skills/languages/scala/SKILL.md +73 -0
  1815. package/skills/languages/swift/SKILL.md +73 -0
  1816. package/skills/languages/typescript/SKILL.md +69 -0
  1817. package/skills/meta/authoring-agent-skills/SKILL.md +73 -0
  1818. package/skills/meta/progressive-disclosure/SKILL.md +65 -0
  1819. package/skills/meta/skill-frontmatter-spec/SKILL.md +65 -0
  1820. package/skills/process/adr-technical-decisions/SKILL.md +59 -0
  1821. package/skills/process/app-planning/SKILL.md +63 -0
  1822. package/skills/process/architecture-before-code/SKILL.md +52 -0
  1823. package/skills/process/breaking-work-into-sprints/SKILL.md +53 -0
  1824. package/skills/process/idea-to-product/SKILL.md +50 -0
  1825. package/skills/process/mocks-and-screen-flows/SKILL.md +52 -0
  1826. package/skills/process/prioritization-moscow-rice/SKILL.md +64 -0
  1827. package/skills/process/problem-framing/SKILL.md +51 -0
  1828. package/skills/process/product-discovery/SKILL.md +53 -0
  1829. package/skills/process/readme-generation/SKILL.md +90 -0
  1830. package/skills/process/requirements-to-specs/SKILL.md +53 -0
  1831. package/skills/process/research-official-docs/SKILL.md +58 -0
  1832. package/skills/process/review-code-perf-security/SKILL.md +65 -0
  1833. package/skills/process/security-by-design/SKILL.md +68 -0
  1834. package/skills/process/specs-to-issues/SKILL.md +53 -0
  1835. package/skills/process/testing-before-done/SKILL.md +61 -0
  1836. package/skills/process/validating-ux-navigation/SKILL.md +63 -0
  1837. package/skills/references/ai-attachments-ui/SKILL.md +66 -0
  1838. package/skills/references/ai-in-browser-webllm/SKILL.md +74 -0
  1839. package/skills/references/ai-tool-ui-patterns/SKILL.md +63 -0
  1840. package/skills/references/component-patterns-gallery/SKILL.md +62 -0
  1841. package/skills/references/gradient-resources/SKILL.md +66 -0
  1842. package/skills/references/react-component-libraries/SKILL.md +61 -0
  1843. package/skills/references/saas-landing-patterns/SKILL.md +67 -0
  1844. package/skills/references/shadcn-tailwind-theming/SKILL.md +74 -0
  1845. package/skills/references/vercel-ai-sdk-elements/SKILL.md +66 -0
  1846. package/skills/references/web-animation-codrops/SKILL.md +68 -0
  1847. package/skills/stacks/aiml/jupyter/SKILL.md +68 -0
  1848. package/skills/stacks/aiml/keras/SKILL.md +77 -0
  1849. package/skills/stacks/aiml/numpy/SKILL.md +69 -0
  1850. package/skills/stacks/aiml/pandas/SKILL.md +72 -0
  1851. package/skills/stacks/aiml/pytorch/SKILL.md +77 -0
  1852. package/skills/stacks/aiml/scikit-learn/SKILL.md +74 -0
  1853. package/skills/stacks/aiml/tensorflow/SKILL.md +79 -0
  1854. package/skills/stacks/auth/auth0/SKILL.md +63 -0
  1855. package/skills/stacks/auth/authjs/SKILL.md +69 -0
  1856. package/skills/stacks/auth/clerk/SKILL.md +72 -0
  1857. package/skills/stacks/auth/keycloak/SKILL.md +63 -0
  1858. package/skills/stacks/auth/lucia/SKILL.md +56 -0
  1859. package/skills/stacks/auth/passport/SKILL.md +70 -0
  1860. package/skills/stacks/auth/supabase-auth/SKILL.md +66 -0
  1861. package/skills/stacks/baas/amplify/SKILL.md +71 -0
  1862. package/skills/stacks/baas/appwrite/SKILL.md +79 -0
  1863. package/skills/stacks/baas/firebase/SKILL.md +73 -0
  1864. package/skills/stacks/baas/heroku/SKILL.md +71 -0
  1865. package/skills/stacks/backend/actix/SKILL.md +77 -0
  1866. package/skills/stacks/backend/adonisjs/SKILL.md +65 -0
  1867. package/skills/stacks/backend/aspnet-core/SKILL.md +75 -0
  1868. package/skills/stacks/backend/codeigniter/SKILL.md +76 -0
  1869. package/skills/stacks/backend/django/SKILL.md +62 -0
  1870. package/skills/stacks/backend/express/SKILL.md +65 -0
  1871. package/skills/stacks/backend/fastapi/SKILL.md +64 -0
  1872. package/skills/stacks/backend/fastify/SKILL.md +64 -0
  1873. package/skills/stacks/backend/fiber/SKILL.md +68 -0
  1874. package/skills/stacks/backend/flask/SKILL.md +71 -0
  1875. package/skills/stacks/backend/gin/SKILL.md +68 -0
  1876. package/skills/stacks/backend/graphql/SKILL.md +70 -0
  1877. package/skills/stacks/backend/hono/SKILL.md +64 -0
  1878. package/skills/stacks/backend/koa/SKILL.md +63 -0
  1879. package/skills/stacks/backend/laravel/SKILL.md +73 -0
  1880. package/skills/stacks/backend/nestjs/SKILL.md +70 -0
  1881. package/skills/stacks/backend/nginx/SKILL.md +77 -0
  1882. package/skills/stacks/backend/phoenix/SKILL.md +68 -0
  1883. package/skills/stacks/backend/rails/SKILL.md +67 -0
  1884. package/skills/stacks/backend/spring/SKILL.md +70 -0
  1885. package/skills/stacks/backend/spring-boot/SKILL.md +70 -0
  1886. package/skills/stacks/backend/symfony/SKILL.md +77 -0
  1887. package/skills/stacks/container/containerd/SKILL.md +75 -0
  1888. package/skills/stacks/container/docker/SKILL.md +90 -0
  1889. package/skills/stacks/container/podman/SKILL.md +93 -0
  1890. package/skills/stacks/database/cassandra/SKILL.md +74 -0
  1891. package/skills/stacks/database/cockroachdb/SKILL.md +69 -0
  1892. package/skills/stacks/database/dynamodb/SKILL.md +62 -0
  1893. package/skills/stacks/database/mariadb/SKILL.md +71 -0
  1894. package/skills/stacks/database/mongodb/SKILL.md +71 -0
  1895. package/skills/stacks/database/mysql/SKILL.md +72 -0
  1896. package/skills/stacks/database/neon/SKILL.md +68 -0
  1897. package/skills/stacks/database/planetscale/SKILL.md +70 -0
  1898. package/skills/stacks/database/postgresql/SKILL.md +81 -0
  1899. package/skills/stacks/database/redis/SKILL.md +78 -0
  1900. package/skills/stacks/database/sqlite/SKILL.md +70 -0
  1901. package/skills/stacks/database/supabase/SKILL.md +79 -0
  1902. package/skills/stacks/dataviz/chart-js/SKILL.md +72 -0
  1903. package/skills/stacks/dataviz/d3/SKILL.md +77 -0
  1904. package/skills/stacks/dataviz/grafana/SKILL.md +69 -0
  1905. package/skills/stacks/dataviz/plotly/SKILL.md +71 -0
  1906. package/skills/stacks/frontend/alpine/SKILL.md +75 -0
  1907. package/skills/stacks/frontend/angular/SKILL.md +75 -0
  1908. package/skills/stacks/frontend/backbone/SKILL.md +82 -0
  1909. package/skills/stacks/frontend/ember/SKILL.md +85 -0
  1910. package/skills/stacks/frontend/htmx/SKILL.md +73 -0
  1911. package/skills/stacks/frontend/lit/SKILL.md +76 -0
  1912. package/skills/stacks/frontend/preact/SKILL.md +74 -0
  1913. package/skills/stacks/frontend/qwik/SKILL.md +65 -0
  1914. package/skills/stacks/frontend/react/SKILL.md +77 -0
  1915. package/skills/stacks/frontend/solidjs/SKILL.md +75 -0
  1916. package/skills/stacks/frontend/svelte/SKILL.md +70 -0
  1917. package/skills/stacks/frontend/vue/SKILL.md +69 -0
  1918. package/skills/stacks/infra/ansible/SKILL.md +76 -0
  1919. package/skills/stacks/infra/aws/SKILL.md +66 -0
  1920. package/skills/stacks/infra/azure/SKILL.md +72 -0
  1921. package/skills/stacks/infra/circleci/SKILL.md +78 -0
  1922. package/skills/stacks/infra/cloudflare/SKILL.md +65 -0
  1923. package/skills/stacks/infra/fly-io/SKILL.md +63 -0
  1924. package/skills/stacks/infra/gcp/SKILL.md +66 -0
  1925. package/skills/stacks/infra/jenkins/SKILL.md +73 -0
  1926. package/skills/stacks/infra/kubernetes/SKILL.md +64 -0
  1927. package/skills/stacks/infra/netlify/SKILL.md +60 -0
  1928. package/skills/stacks/infra/railway/SKILL.md +63 -0
  1929. package/skills/stacks/infra/tailscale/SKILL.md +65 -0
  1930. package/skills/stacks/infra/terraform/SKILL.md +75 -0
  1931. package/skills/stacks/infra/vagrant/SKILL.md +70 -0
  1932. package/skills/stacks/infra/vercel/SKILL.md +60 -0
  1933. package/skills/stacks/meta/astro/SKILL.md +64 -0
  1934. package/skills/stacks/meta/docusaurus/SKILL.md +71 -0
  1935. package/skills/stacks/meta/eleventy/SKILL.md +69 -0
  1936. package/skills/stacks/meta/gatsby/SKILL.md +63 -0
  1937. package/skills/stacks/meta/hugo/SKILL.md +73 -0
  1938. package/skills/stacks/meta/jekyll/SKILL.md +70 -0
  1939. package/skills/stacks/meta/nextjs/SKILL.md +62 -0
  1940. package/skills/stacks/meta/nuxt/SKILL.md +66 -0
  1941. package/skills/stacks/meta/remix/SKILL.md +67 -0
  1942. package/skills/stacks/meta/sveltekit/SKILL.md +70 -0
  1943. package/skills/stacks/meta/vite/SKILL.md +63 -0
  1944. package/skills/stacks/mobile/android/SKILL.md +77 -0
  1945. package/skills/stacks/mobile/flutter/SKILL.md +77 -0
  1946. package/skills/stacks/mobile/ionic/SKILL.md +72 -0
  1947. package/skills/stacks/mobile/nativescript/SKILL.md +71 -0
  1948. package/skills/stacks/mobile/react-native/SKILL.md +75 -0
  1949. package/skills/stacks/mobile/xamarin/SKILL.md +73 -0
  1950. package/skills/stacks/orm/diesel/SKILL.md +72 -0
  1951. package/skills/stacks/orm/django-orm/SKILL.md +58 -0
  1952. package/skills/stacks/orm/drizzle/SKILL.md +67 -0
  1953. package/skills/stacks/orm/gorm/SKILL.md +73 -0
  1954. package/skills/stacks/orm/knex/SKILL.md +64 -0
  1955. package/skills/stacks/orm/mongoose/SKILL.md +64 -0
  1956. package/skills/stacks/orm/prisma/SKILL.md +64 -0
  1957. package/skills/stacks/orm/sequelize/SKILL.md +65 -0
  1958. package/skills/stacks/orm/sqlalchemy/SKILL.md +71 -0
  1959. package/skills/stacks/orm/typeorm/SKILL.md +70 -0
  1960. package/skills/stacks/queue/bullmq/SKILL.md +69 -0
  1961. package/skills/stacks/queue/celery/SKILL.md +68 -0
  1962. package/skills/stacks/queue/kafka/SKILL.md +66 -0
  1963. package/skills/stacks/queue/nats/SKILL.md +66 -0
  1964. package/skills/stacks/queue/rabbitmq/SKILL.md +64 -0
  1965. package/skills/stacks/queue/redis/SKILL.md +66 -0
  1966. package/skills/stacks/runtime/beam/SKILL.md +72 -0
  1967. package/skills/stacks/runtime/bun/SKILL.md +80 -0
  1968. package/skills/stacks/runtime/deno/SKILL.md +74 -0
  1969. package/skills/stacks/runtime/dotnet/SKILL.md +64 -0
  1970. package/skills/stacks/runtime/jvm/SKILL.md +66 -0
  1971. package/skills/stacks/runtime/node/SKILL.md +70 -0
  1972. package/skills/stacks/runtime/pypy/SKILL.md +69 -0
  1973. package/skills/stacks/runtime/python3/SKILL.md +70 -0
  1974. package/skills/stacks/styling/bootstrap/SKILL.md +74 -0
  1975. package/skills/stacks/styling/bulma/SKILL.md +80 -0
  1976. package/skills/stacks/styling/chakra-ui/SKILL.md +61 -0
  1977. package/skills/stacks/styling/css-modules/SKILL.md +54 -0
  1978. package/skills/stacks/styling/mui/SKILL.md +60 -0
  1979. package/skills/stacks/styling/sass/SKILL.md +63 -0
  1980. package/skills/stacks/styling/shadcn-ui/SKILL.md +58 -0
  1981. package/skills/stacks/styling/styled-components/SKILL.md +62 -0
  1982. package/skills/stacks/styling/tailwind/SKILL.md +59 -0
  1983. package/skills/stacks/styling/unocss/SKILL.md +64 -0
  1984. package/skills/stacks/styling/vanilla-extract/SKILL.md +64 -0
  1985. package/skills/stacks/styling/vuetify/SKILL.md +89 -0
  1986. package/skills/stacks/testing/cypress/SKILL.md +68 -0
  1987. package/skills/stacks/testing/jasmine/SKILL.md +67 -0
  1988. package/skills/stacks/testing/jest/SKILL.md +67 -0
  1989. package/skills/stacks/testing/mocha/SKILL.md +71 -0
  1990. package/skills/stacks/testing/playwright/SKILL.md +68 -0
  1991. package/skills/stacks/testing/puppeteer/SKILL.md +70 -0
  1992. package/skills/stacks/testing/selenium/SKILL.md +70 -0
  1993. package/skills/stacks/testing/vitest/SKILL.md +68 -0
@@ -0,0 +1,558 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[338],{275:(e,t,a)=>{"use strict";a.d(t,{K:()=>n});var r=a(7814);let n=(0,r.createServerReference)("409d4cbe6ec07ab8ba3752b7baf907850f79f1584c",r.callServer,void 0,r.findSourceMapURL,"previewFrameableAction")},4924:(e,t,a)=>{"use strict";a.d(t,{DesignClient:()=>ed});var r=a(5076),n=a(8488),s=a(9860),i=a(5629),o=a(8576),d=a(4552),l=a(9158),c=a(1152),p=a(5115),u=a(7814);let g=(0,u.createServerReference)("40efca1b9d4ba273817cb7d8ccd73df095d8e8f922",u.callServer,void 0,u.findSourceMapURL,"getDesignScreen"),m=(0,u.createServerReference)("40772803f1b35987781227336f23ecdbd55cf41fd1",u.callServer,void 0,u.findSourceMapURL,"setTokens"),h=(0,u.createServerReference)("7089c528fa1527363d04960b5ebfedacd2614a4547",u.callServer,void 0,u.findSourceMapURL,"askDesign"),x=(0,u.createServerReference)("408e54a9df74874379d27e7c956b7b0de75c3665c1",u.callServer,void 0,u.findSourceMapURL,"listDesignComments"),b=(0,u.createServerReference)("0077056643e96edd170af179462053352972b27b5d",u.callServer,void 0,u.findSourceMapURL,"listDesignVersions"),f=(0,u.createServerReference)("00b8671f7cffcd5befee5520a52a5ec820587c104e",u.callServer,void 0,u.findSourceMapURL,"listDesignDocs"),v=(0,u.createServerReference)("40bb21cbee60051771dac14e01d11aa866d00e3d27",u.callServer,void 0,u.findSourceMapURL,"readDesignDoc"),y=(0,u.createServerReference)("00e24c29c4b238e08be9728ea3975ef50ce267c56b",u.callServer,void 0,u.findSourceMapURL,"scaffoldDesignFromBrief"),z=(0,u.createServerReference)("600359c903bcdc4ad6575d966b7463b7f9e19aa7e5",u.callServer,void 0,u.findSourceMapURL,"commitDesignScreen"),w=(0,u.createServerReference)("40a4c8e3e773086f343e2bb6cf58c57b07351ab827",u.callServer,void 0,u.findSourceMapURL,"saveDesignCheckpoint"),k=(0,u.createServerReference)("70dd1e0eac2da0e73b3af34ed3d5b754ea6cc7e20a",u.callServer,void 0,u.findSourceMapURL,"applyDesignTextEdit"),j=(0,u.createServerReference)("40ec36241c94b82fe0ccce5fc92b08e8c1267bda9b",u.callServer,void 0,u.findSourceMapURL,"approveDesign"),N=(0,u.createServerReference)("00e4e84e3295f14df7ae45000ba0c854a30927c6ac",u.callServer,void 0,u.findSourceMapURL,"handoffToExecution"),S=(0,u.createServerReference)("00188698481b69c79e5b3aa893fc26e4d0c1ad2c80",u.callServer,void 0,u.findSourceMapURL,"resumeDesignHandoff"),C=(0,u.createServerReference)("0081233510153f0339f73d725b2024d1229ff56c30",u.callServer,void 0,u.findSourceMapURL,"buildDesignProduction"),I=(0,u.createServerReference)("70de59fd4b9e86e3f6429fa542c6f89009bb22ad9f",u.callServer,void 0,u.findSourceMapURL,"addDesignMarkup"),E=(0,u.createServerReference)("7cbcc33e46ce24b17bb67eeeab3fcf2664c489efe0",u.callServer,void 0,u.findSourceMapURL,"addDesignComment"),M=(0,u.createServerReference)("4077353cf164d10e348831f1282672c44d3bdf3683",u.callServer,void 0,u.findSourceMapURL,"deleteDesignComment"),T=(0,u.createServerReference)("40fa257cf42313ca1a9fed2fb49ec7bf574cdbb57f",u.callServer,void 0,u.findSourceMapURL,"restoreDesignCheckpoint"),R=(0,u.createServerReference)("602efc219059d5ba747378f56cb838f0e2cedcdc44",u.callServer,void 0,u.findSourceMapURL,"restoreDesignVersion");var D=a(4302),P=a(5393);let A=`(function(){
2
+ var MODE = "select";
3
+ var ZOOM = 1, ZOX = 0, ZOY = 0;
4
+
5
+ // ── Stable element identity ──────────────────────────────────────────────────────────────────────
6
+ // Every element the operator touches gets a persistent data-cstla-id ("c7") so the host can target live
7
+ // edits by id and ids survive a commit→reload round-trip. Seed the counter from any ids already in the
8
+ // (previously committed) body so we never reissue one.
9
+ var CIDN = 0;
10
+ (function(){ var a=document.querySelectorAll("[data-cstla-id]"); for(var i=0;i<a.length;i++){ var n=parseInt(((a[i].getAttribute("data-cstla-id")||"").replace(/^c/,"")),10); if(n>CIDN)CIDN=n; } })();
11
+ function cid(el){ var id=el.getAttribute&&el.getAttribute("data-cstla-id"); if(id)return id; CIDN++; id="c"+CIDN; el.setAttribute("data-cstla-id",id); return id; }
12
+ function byId(id){ try{ return document.querySelector('[data-cstla-id="'+id+'"]'); }catch(e){ return null; } }
13
+ function isInstrumentNode(n){ return n && n.nodeType===1 && n.getAttribute && n.getAttribute("data-cstla-instrument")!=null; }
14
+ function isZoomRoot(n){ return n && n.nodeType===1 && n.getAttribute && n.getAttribute("data-cstla-zoom-root")!=null; }
15
+ // Zoom is applied HOST-SIDE now (the host scales the iframe wrapper); inside the iframe everything stays 1:1, so
16
+ // coordinates/drag/resize are plain px and the body gets NO transform (a transform on <body> would re-anchor
17
+ // position:fixed children and break the screen). ZOOM stays 1 → logicalX/logicalY/unzoomRect below are kept as
18
+ // identity helpers (call sites unchanged) and applyZoom just re-reports content size + the layers tree.
19
+ function applyZoom(){ sz(); emitTree(); }
20
+ function logicalX(x){ return (x-ZOX)/ZOOM; }
21
+ function logicalY(y){ return (y-ZOY)/ZOOM; }
22
+ function unzoomRect(r){ var sx=window.scrollX||0, sy=window.scrollY||0; return { x:logicalX(r.left+sx), y:logicalY(r.top+sy), w:r.width/ZOOM, h:r.height/ZOOM }; }
23
+
24
+ // ── Persist backbone ─────────────────────────────────────────────────────────────────────────────
25
+ // After any direct-manipulation edit, debounce a "commit": serialize <body> (minus the instrument script
26
+ // + transient editing attrs) back to the host, which writes it into the screen file. "dirty" fires first
27
+ // so the host can suppress reload races + show a Saving indicator while the operator is editing.
28
+ var ctimer=null;
29
+ function touch(){ post("canvas:dirty", null); if(ctimer)clearTimeout(ctimer); ctimer=setTimeout(commitNow,450); }
30
+ // Serialize <body> minus the instrument script + transient editing attrs → the clean source we persist.
31
+ function serializeBody(){
32
+ var clone=document.body.cloneNode(true);
33
+ var mk=clone.querySelectorAll("[data-cstla-instrument]"); for(var i=0;i<mk.length;i++){ if(mk[i].parentNode)mk[i].parentNode.removeChild(mk[i]); }
34
+ var ce=clone.querySelectorAll("[contenteditable]"); for(var j=0;j<ce.length;j++){ ce[j].removeAttribute("contenteditable"); ce[j].style.outline=""; }
35
+ return clone.innerHTML;
36
+ }
37
+ function commitNow(){ ctimer=null; post("canvas:commit", { html: serializeBody() }); }
38
+ // History is HOST-owned (per screen, survives reload + screen-switch). The iframe only reports snapshots:
39
+ // - emitHistory(): one discrete undo state (after a finished gesture / structural cmd / field commit).
40
+ // - canvas:baseline (on ready): seeds the host's per-screen baseline.
41
+ // - setBody(html): the host sends a snapshot back for undo/redo; swap the body, preserving the instrument
42
+ // script + its document-level listeners (no history/commit emit — the host already persisted it).
43
+ function emitHistory(label){ post("canvas:history", { html: serializeBody(), label: label||"" }); emitTree(); }
44
+ function setBody(html){
45
+ var sc=document.querySelector("[data-cstla-instrument]"); if(sc&&sc.parentNode)sc.parentNode.removeChild(sc);
46
+ document.body.innerHTML=html; if(sc) document.body.appendChild(sc);
47
+ applyZoom(ZOOM); post("canvas:removed", { cstlaId:"" }); sz();
48
+ }
49
+
50
+ function lbl(el){
51
+ var ed = el.getAttribute && el.getAttribute("data-ed"); if(ed) return ed;
52
+ var aria = el.getAttribute && el.getAttribute("aria-label"); if(aria) return aria;
53
+ var tag = el.tagName.toLowerCase();
54
+ if(tag==="button"||tag==="a"){ var tx=(el.textContent||"").replace(/\\s+/g," ").trim().slice(0,24); return tx||tag; }
55
+ if(el.id) return tag+"#"+el.id;
56
+ if(typeof el.className==="string" && el.className.trim()){ var c=el.className.trim().split(/\\s+/)[0]; if(c) return tag+"."+c; }
57
+ return tag;
58
+ }
59
+ function docSize(){ var d=document.documentElement, b=document.body; return { w: Math.max(d.scrollWidth,b?b.scrollWidth:0,d.clientWidth), h: Math.max(d.scrollHeight,b?b.scrollHeight:0,d.clientHeight) }; }
60
+ function boxOf(el){ var b=unzoomRect(el.getBoundingClientRect()); return { x:b.x, y:b.y, w:b.w, h:b.h, label: lbl(el) }; }
61
+ function describe(el){
62
+ var r=el.getBoundingClientRect(), cs=getComputedStyle(el);
63
+ var b=unzoomRect(r);
64
+ var path=[], n=el, d=0;
65
+ while(n && n!==document.documentElement && d<6){ var p=n.tagName.toLowerCase(); var ed=n.getAttribute&&n.getAttribute("data-ed"); if(ed)p+="\\u00b7"+ed.split(" ")[0]; path.unshift(p); n=n.parentElement; d++; }
66
+ var sec = el.closest ? el.closest("[data-section]") : null;
67
+ return {
68
+ selectionId: "sel_"+Math.random().toString(36).slice(2,8),
69
+ cstlaId: cid(el),
70
+ elementType: el.tagName.toLowerCase(),
71
+ componentName: (el.getAttribute&&(el.getAttribute("data-comp")||el.getAttribute("data-ed")))||lbl(el),
72
+ domPath: path.join(" \\u203a "),
73
+ boundingBox: { x:b.x, y:b.y, w:b.w, h:b.h },
74
+ tx: txOf(el).x, ty: txOf(el).y, nodePath: pathOf(el),
75
+ computedStyles: {
76
+ display:cs.display, position:cs.position,
77
+ width:Math.round(b.w)+"px", height:Math.round(b.h)+"px",
78
+ margin:cs.margin, marginTop:cs.marginTop, marginRight:cs.marginRight, marginBottom:cs.marginBottom, marginLeft:cs.marginLeft,
79
+ padding:cs.padding, paddingTop:cs.paddingTop, paddingRight:cs.paddingRight, paddingBottom:cs.paddingBottom, paddingLeft:cs.paddingLeft,
80
+ gap:(cs.gap&&cs.gap!=="normal")?cs.gap:(cs.columnGap&&cs.columnGap!=="normal"?cs.columnGap:""),
81
+ color:cs.color, fontSize:cs.fontSize, fontWeight:cs.fontWeight, lineHeight:cs.lineHeight, letterSpacing:cs.letterSpacing, textAlign:cs.textAlign,
82
+ background:cs.backgroundColor, border:cs.borderTopWidth+" "+cs.borderTopStyle+" "+cs.borderTopColor, borderRadius:cs.borderTopLeftRadius,
83
+ boxShadow:cs.boxShadow, opacity:cs.opacity, zIndex:(cs.zIndex==="auto"?"":cs.zIndex)
84
+ },
85
+ textContent: (el.textContent||"").replace(/\\s+/g," ").trim().slice(0,120),
86
+ parentContainer: el.parentElement ? ((el.parentElement.getAttribute&&el.parentElement.getAttribute("data-ed"))||el.parentElement.tagName.toLowerCase()) : "\\u2014",
87
+ children: el.children.length,
88
+ pageId: "",
89
+ sectionId: (sec&&sec.getAttribute("data-section"))||"",
90
+ locked: el.getAttribute("data-cstla-lock")!=null,
91
+ isGroup: el.getAttribute("data-cstla-group")!=null
92
+ };
93
+ }
94
+ // Re-describe + re-emit the element after a live edit so the host's selection box + panel reflect the new box/styles.
95
+ function reselect(el){ if(valid(el)) post("canvas:reselect", describe(el)); }
96
+ function post(type, payload){ try{ parent.postMessage({ __cstla:1, type:type, payload:payload }, "*"); }catch(e){} }
97
+ function valid(el){ return el && el.nodeType===1 && el!==document.documentElement && el!==document.body && !isZoomRoot(el); }
98
+
99
+ // ── Pointer gestures (capture-based, leak-proof) ─────────────────────────────────────────────────
100
+ // EVERY canvas gesture uses Pointer Events + setPointerCapture so move/up always land here even when the
101
+ // pointer is released OUTSIDE the iframe or over a host overlay (handles/menu). A single finishGesture()/
102
+ // clearGesture() ends every gesture on pointerup / pointercancel / lostpointercapture / window blur → the
103
+ // "stuck button" can't happen. Move = transform:translate (non-destructive), 8px grid + alignment guides.
104
+ var drawing=null, suppressClick=false, gpid=null;
105
+ function txOf(el){ var t=el.getAttribute("data-cstla-tx"); if(!t)return{x:0,y:0}; var p=t.split(","); return{x:parseFloat(p[0])||0,y:parseFloat(p[1])||0}; }
106
+ function captureNow(pid){ gpid=pid; try{ document.documentElement.setPointerCapture(pid); }catch(e){} }
107
+ function releaseCap(){ if(gpid!=null){ try{ document.documentElement.releasePointerCapture(gpid); }catch(e){} gpid=null; } }
108
+ function noSelect(on){ var s=document.documentElement.style; s.userSelect=on?"none":""; s.webkitUserSelect=on?"none":""; }
109
+ function resetCursor(){ noSelect(false); document.documentElement.style.cursor = MODE==="preview"?"":(MODE==="comments"?"copy":"crosshair"); }
110
+ function draw(e){ if(!drawing)return; var d=docSize(), ex=logicalX(e.pageX), ey=logicalY(e.pageY); var x=Math.min(drawing.x,ex),y=Math.min(drawing.y,ey),w=Math.abs(ex-drawing.x),h=Math.abs(ey-drawing.y); post("canvas:markupDraw", { xPct:x/d.w*100, yPct:y/d.h*100, wPct:w/d.w*100, hPct:h/d.h*100 }); }
111
+ function finishGesture(e){
112
+ if(drawing){ var dd=docSize(), ex=logicalX(e.pageX), ey=logicalY(e.pageY); var x=Math.min(drawing.x,ex),y=Math.min(drawing.y,ey),w=Math.abs(ex-drawing.x),h=Math.abs(ey-drawing.y); drawing=null; releaseCap(); post("canvas:markupDraw", null); resetCursor(); if(w>6&&h>6) post("canvas:markup", { xPct:x/dd.w*100, yPct:y/dd.h*100, wPct:w/dd.w*100, hPct:h/dd.h*100 }); return; }
113
+ releaseCap(); resetCursor();
114
+ }
115
+ function clearGesture(){
116
+ if(drawing){ drawing=null; post("canvas:markupDraw", null); }
117
+ releaseCap(); resetCursor();
118
+ }
119
+
120
+ document.addEventListener("pointermove", function(e){
121
+ if(drawing){ draw(e); return; }
122
+ if(MODE==="preview"||MODE==="comments"||MODE==="markup") return;
123
+ if(!valid(e.target)){ post("canvas:hover", null); return; }
124
+ post("canvas:hover", boxOf(e.target));
125
+ }, true);
126
+ document.addEventListener("pointerleave", function(){ if(!drawing) post("canvas:hover", null); });
127
+ document.addEventListener("pointerdown", function(e){
128
+ if(e.button!==0) return; // left button only (middle/right → host pan)
129
+ if(MODE==="markup"){ e.preventDefault(); drawing={ x:logicalX(e.pageX), y:logicalY(e.pageY) }; captureNow(e.pointerId); return; }
130
+ if(MODE==="edit"){
131
+ // Edit mode is TEXT-ONLY (the design must stay faithful to the approved mock): click selects, double-click
132
+ // edits text inline. No move/resize/add/structural manipulation — those were intentionally removed.
133
+ if(e.target && e.target.isContentEditable) return; // editing text inline → leave native selection alone
134
+ if(!valid(e.target)) return;
135
+ e.preventDefault(); // suppress text-selection on the press; the click selects
136
+ return;
137
+ }
138
+ if(MODE==="select"){ if(valid(e.target)) e.preventDefault(); return; } // click still selects; just suppress text-selection on drag
139
+ }, true);
140
+ document.addEventListener("pointerup", function(e){ finishGesture(e); }, true);
141
+ document.addEventListener("pointercancel", function(){ clearGesture(); }, true);
142
+ document.documentElement.addEventListener("lostpointercapture", function(){ if(drawing) clearGesture(); });
143
+ window.addEventListener("blur", function(){ clearGesture(); });
144
+
145
+ document.addEventListener("click", function(e){
146
+ if(suppressClick){ suppressClick=false; e.preventDefault(); e.stopPropagation(); return; } // swallow the click that ends a gesture
147
+ // Anchor guard: this prototype lives in an opaque-origin srcdoc iframe whose relative/absolute hrefs resolve
148
+ // against the HOST page, so a real click would navigate the frame OUT to the app (e.g. the login). Intercept
149
+ // link clicks so they NEVER break out of the sandbox; in Preview, ask the host to switch prototype screens.
150
+ var lnk = e.target && e.target.closest ? e.target.closest("a[href]") : null;
151
+ if(lnk){ var href = lnk.getAttribute("href") || "";
152
+ if(href && href.charAt(0)!=="#"){ // in-page #anchors scroll natively; everything else is cross-doc
153
+ e.preventDefault(); // block the breakout in EVERY mode
154
+ if(MODE==="preview"){ e.stopPropagation(); post("canvas:nav", { href: href }); return; }
155
+ // select/edit/etc.: nav blocked; fall through so the click still SELECTS the link element
156
+ }
157
+ }
158
+ if(MODE==="preview") return;
159
+ if(MODE==="comments"){ e.preventDefault(); e.stopPropagation(); var d=docSize(); var ce=document.elementFromPoint(e.clientX,e.clientY); var cs=valid(ce)?describe(ce):null; post("canvas:comment", { xpPct:(logicalX(e.pageX)/d.w)*100, ypPct:(logicalY(e.pageY)/d.h)*100, selection:cs }); return; }
160
+ if(MODE==="markup") { e.preventDefault(); return; }
161
+ if(!valid(e.target)) return;
162
+ if(e.target.isContentEditable) return; // already editing this element → let the native caret/selection work
163
+ e.preventDefault(); e.stopPropagation();
164
+ if(e.shiftKey||e.metaKey||e.ctrlKey){ post("canvas:selectToggle", describe(e.target)); return; } // add/remove from the multi-set
165
+ post("canvas:select", describe(e.target)); // SELECT (select + edit modes)
166
+ if(MODE==="edit") edit(e.target, e.clientX, e.clientY); // text-only mode: a single click drops straight into inline text edit (caret at the click)
167
+ }, true);
168
+ // Edit mode: double-click also edits (with a word-select once inside an active edit).
169
+ document.addEventListener("dblclick", function(e){
170
+ if(MODE!=="edit") return;
171
+ if(e.target && e.target.isContentEditable) return; // double-click inside an active edit → native word-select
172
+ if(!valid(e.target)) return;
173
+ e.preventDefault(); e.stopPropagation();
174
+ edit(e.target, e.clientX, e.clientY);
175
+ }, true);
176
+ // A prototype is a mock — it never really submits. Block form submission so a <form action> can't navigate the
177
+ // sandbox frame out to the host app (same breakout class as the anchor guard above).
178
+ document.addEventListener("submit", function(e){ e.preventDefault(); }, true);
179
+
180
+ // Drop a visible caret at the click point (pointerdown preventDefault suppressed the native one), falling back
181
+ // to the end of the element's text when the point isn't inside it.
182
+ function placeCaret(el, cx, cy){ try{ var range=null;
183
+ if(cx!=null){ if(document.caretRangeFromPoint) range=document.caretRangeFromPoint(cx,cy);
184
+ else if(document.caretPositionFromPoint){ var cp=document.caretPositionFromPoint(cx,cy); if(cp){ range=document.createRange(); range.setStart(cp.offsetNode,cp.offset); range.collapse(true); } } }
185
+ if(!range || !el.contains(range.startContainer)){ range=document.createRange(); range.selectNodeContents(el); range.collapse(false); }
186
+ var s=window.getSelection(); if(s){ s.removeAllRanges(); s.addRange(range); }
187
+ }catch(e){} }
188
+ // Inline TEXT edit (the only edit in text-only mode): contentEditable + a caret at the click, "Saving…" live as
189
+ // the operator types (canvas:dirty), and on blur persist the change (→ "Saved") or clear the indicator if the
190
+ // text ended up unchanged (canvas:editEnd).
191
+ function edit(el, cx, cy){
192
+ if(!el || el.nodeType!==1) return;
193
+ if(el.children.length>0 && !(el.textContent||"").trim()) return; // a container with no own text isn't editable
194
+ if(el.getAttribute("contenteditable")==="true") return; // already editing this element
195
+ cid(el); var old=el.textContent, touched=false;
196
+ el.setAttribute("contenteditable","true"); el.style.outline="2px solid #6366f1"; el.style.cursor="text"; el.style.caretColor="#6366f1";
197
+ try{ el.focus(); }catch(e){}
198
+ placeCaret(el, cx, cy);
199
+ function onInput(){ touched=true; post("canvas:dirty", null); } // live "Saving…" while typing
200
+ function done(){ el.removeEventListener("blur",done); el.removeEventListener("input",onInput);
201
+ el.removeAttribute("contenteditable"); el.style.outline=""; el.style.cursor=""; el.style.caretColor="";
202
+ var nw=el.textContent;
203
+ if(nw!==old){ reselect(el); emitHistory("Edited text"); } // persist + "Saved"
204
+ else if(touched){ post("canvas:editEnd", null); } // typed then reverted → clear "Saving…"
205
+ }
206
+ el.addEventListener("input", onInput); el.addEventListener("blur", done);
207
+ }
208
+
209
+ // Live restyle from the Styles panel: write the operator's tokens onto :root CSS variables (several common
210
+ // aliases for hit-rate) + set [data-theme]. Screens built to the token contract re-skin instantly.
211
+ function applyTokens(t){
212
+ if(!t) return; var de=document.documentElement, st=de.style;
213
+ function setv(names,val){ for(var i=0;i<names.length;i++) st.setProperty(names[i],val); }
214
+ if(t.accent) setv(["--accent","--accent-color","--primary","--color-primary","--color-accent","--brand","--btn-accent"], t.accent);
215
+ if(t.accentFg) setv(["--accent-fg","--on-accent","--accent-contrast","--accent-foreground"], t.accentFg);
216
+ if(t.font){ setv(["--font","--font-family","--font-sans","--ff"], t.font); st.setProperty("font-family", t.font); }
217
+ if(t.radius!=null) setv(["--radius","--border-radius","--radius-card","--radius-btn","--rounded"], t.radius+"px");
218
+ if(t.space!=null) setv(["--space","--gap","--spacing","--space-unit"], t.space+"px");
219
+ if(t.fontScale!=null){ setv(["--font-scale","--text-scale"], String(t.fontScale)); st.setProperty("font-size", Math.round(16*t.fontScale)+"px"); }
220
+ if(t.theme){ de.setAttribute("data-theme", t.theme); st.setProperty("color-scheme", t.theme); }
221
+ // ── Expanded tokens (each restyles screens that adopt the var; Grace's builds follow the extended contract) ──
222
+ if(t.secondary) setv(["--secondary","--color-secondary","--accent-2","--accent-secondary"], t.secondary);
223
+ if(t.surface) setv(["--surface","--bg-surface","--card-bg","--surface-1","--panel"], t.surface);
224
+ if(t.success) setv(["--success","--color-success","--positive"], t.success);
225
+ if(t.warning) setv(["--warning","--color-warning"], t.warning);
226
+ if(t.danger) setv(["--danger","--color-danger","--error","--negative"], t.danger);
227
+ if(t.headingFont) setv(["--font-heading","--heading-font","--font-display","--font-title"], t.headingFont);
228
+ if(t.fontWeight!=null) setv(["--font-weight","--weight","--fw"], String(t.fontWeight));
229
+ if(t.lineHeight!=null) setv(["--line-height","--leading","--lh"], String(t.lineHeight));
230
+ if(t.letterSpacing!=null) setv(["--letter-spacing","--tracking","--ls"], t.letterSpacing+"px");
231
+ if(t.borderWidth!=null) setv(["--border-width","--bw","--hairline-w"], t.borderWidth+"px");
232
+ if(t.borderColor) setv(["--border-color","--hairline","--border-c","--stroke"], t.borderColor);
233
+ if(t.shadow){ var SH={none:"none",sm:"0 1px 2px rgba(0,0,0,.08)",md:"0 6px 18px -6px rgba(0,0,0,.18)",lg:"0 18px 48px -12px rgba(0,0,0,.30)"}; setv(["--shadow","--elevation","--box-shadow","--shadow-card"], SH[t.shadow]||SH.md); }
234
+ if(t.containerWidth!=null) setv(["--container","--max-width","--content-width","--wrap"], t.containerWidth+"px");
235
+ if(t.motionMs!=null) setv(["--transition","--duration","--motion","--speed"], t.motionMs+"ms");
236
+ if(t.ease) setv(["--ease","--easing","--ease-fn"], t.ease);
237
+ }
238
+ // ── Layers tree (select from a list instead of clicking the canvas) ──────────────────────────────
239
+ // Identify elements by a stable child-index PATH (e.g. "0/2/1") so the panel can select any node without
240
+ // stamping ids on the whole document just by opening the tab.
241
+ function pathOf(el){ var p=[], n=el; while(n && n.parentElement && n!==document.body){ p.unshift(Array.prototype.indexOf.call(n.parentElement.children, n)); n=n.parentElement; } return p.join("/"); }
242
+ function elByPath(path){ var idx=(path===""?[]:String(path).split("/").map(Number)), n=document.body; for(var i=0;i<idx.length;i++){ n=n.children[idx[i]]; if(!n)return null; } return n; }
243
+ function buildTree(){
244
+ var out=[], MAXN=600;
245
+ function walk(el, depth){
246
+ for(var i=0;i<el.children.length;i++){
247
+ if(out.length>=MAXN) return;
248
+ var c=el.children[i], tg=c.tagName;
249
+ if(tg==="SCRIPT"||tg==="STYLE") continue;
250
+ if(c.getAttribute && c.getAttribute("data-cstla-instrument")!=null) continue;
251
+ if(isZoomRoot(c)){ walk(c, depth); continue; }
252
+ out.push({ path:pathOf(c), tag:tg.toLowerCase(), label:lbl(c), depth:depth, kids:c.children.length });
253
+ if(depth<12) walk(c, depth+1);
254
+ }
255
+ }
256
+ walk(document.body, 0);
257
+ return out;
258
+ }
259
+ function emitTree(){ post("canvas:tree", { items: buildTree() }); }
260
+ function selectByPath(path){ var el=elByPath(path); if(valid(el)) post("canvas:select", describe(el)); }
261
+
262
+ // Host → iframe. The editor is text-only now: the canvas only takes mode, live token restyle, the layers tree
263
+ // queries and undo/redo body swaps. (Structural/style/insert/resize/align/image messages were removed with the
264
+ // direct-manipulation UI — the design is a faithful reference; structural changes go through Grace.)
265
+ window.addEventListener("message", function(e){ var m=e.data; if(!m||!m.__cstlaHost)return;
266
+ if(m.type==="canvas:setMode"){ MODE=m.mode; document.documentElement.style.cursor=(MODE==="preview"||MODE==="comments")?"":"crosshair"; if(MODE==="comments")document.documentElement.style.cursor="copy"; }
267
+ else if(m.type==="canvas:applyTokens"){ applyTokens(m.tokens); }
268
+ else if(m.type==="canvas:requestTree"){ emitTree(); }
269
+ else if(m.type==="canvas:selectByPath"){ selectByPath(m.path); }
270
+ else if(m.type==="canvas:setBody"){ setBody(m.html); }
271
+ });
272
+
273
+ function viewport(){
274
+ var d=docSize(), de=document.documentElement;
275
+ post("canvas:viewport", {
276
+ scrollX: window.scrollX||0,
277
+ scrollY: window.scrollY||0,
278
+ viewportW: window.innerWidth||de.clientWidth||1,
279
+ viewportH: window.innerHeight||de.clientHeight||1,
280
+ docW: d.w,
281
+ docH: d.h
282
+ });
283
+ }
284
+ function sz(){ var d=docSize(); post("canvas:size", { height: d.h }); viewport(); }
285
+ window.addEventListener("load", function(){ applyZoom(ZOOM); });
286
+ window.addEventListener("resize", function(){ applyZoom(ZOOM); });
287
+ window.addEventListener("scroll", viewport, true);
288
+ setTimeout(function(){ applyZoom(ZOOM); },60); setTimeout(function(){ applyZoom(ZOOM); },400); setTimeout(function(){ applyZoom(ZOOM); },1200);
289
+ document.documentElement.style.cursor="crosshair";
290
+ // INTERACTIVE = the screen ships its OWN <script> (it builds/changes its DOM at runtime). Serializing the
291
+ // post-execution DOM back to the file would bake generated nodes in AND the script re-runs on reload →
292
+ // duplication. So the host treats edits on interactive screens as preview-only (persist via Grace instead).
293
+ var INTERACTIVE=false; (function(){ var ss=document.getElementsByTagName("script"); for(var i=0;i<ss.length;i++){ if(!ss[i].hasAttribute("data-cstla-instrument")){ INTERACTIVE=true; break; } } })();
294
+ applyZoom(ZOOM);
295
+ // Themed scrollbar INSIDE the prototype iframe (the screen scrolls itself, so the host CSS can't reach
296
+ // it — this replaces the native Windows/browser bar). Injected into <head> so it's never serialized into
297
+ // the saved screen; also tagged data-cstla-instrument as a belt-and-braces strip. Neutral semi-transparent
298
+ // so it reads on any prototype background (dark hero, light page, etc.).
299
+ (function(){ try{ if(!document.getElementById("cstla-scrollbar")){ var st=document.createElement("style"); st.id="cstla-scrollbar"; st.setAttribute("data-cstla-instrument",""); st.textContent="::-webkit-scrollbar{width:11px;height:11px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:rgba(128,128,128,.45);border-radius:6px;border:3px solid transparent;background-clip:padding-box}::-webkit-scrollbar-thumb:hover{background:rgba(128,128,128,.78);background-clip:padding-box}::-webkit-scrollbar-corner{background:transparent}"; (document.head||document.documentElement).appendChild(st); } }catch(e){} })();
300
+ post("canvas:ready", { interactive: INTERACTIVE });
301
+ if(!INTERACTIVE) post("canvas:baseline", { html: serializeBody() }); // history/persist only for static screens
302
+ setTimeout(emitTree, 80);
303
+ })();`;var L=a(2606),O=a(4188),W=a(8163),$=a(9130),H=a(275),F=a(5232);let U=(0,u.createServerReference)("005f3317d8b38b3db4c2f37199d1a5916eef4d4794",u.callServer,void 0,u.findSourceMapURL,"stopLiveInspectAction"),B=(0,u.createServerReference)("0069fb8636b418f3a58772240c6bf50253c71b1f2c",u.callServer,void 0,u.findSourceMapURL,"startLiveInspectAction"),X=[{id:"desktop",w:"100%",label:"Desktop"},{id:"tablet",w:"768px",label:"Tablet"},{id:"mobile",w:"390px",label:"Mobile"}];function Y({onAskGrace:e,asking:t}){let[a,s]=(0,n.useState)({running:!1,status:"idle",logs:[]}),[i,d]=(0,n.useTransition)(),[l,c]=(0,n.useState)(""),[p,u]=(0,n.useState)(""),[g,m]=(0,n.useState)(0),[h,x]=(0,n.useState)("desktop"),[b,f]=(0,n.useState)(!0),[v,y]=(0,n.useState)(""),[z,w]=(0,n.useState)(!1),[k,j]=(0,n.useState)(""),[N,S]=(0,n.useTransition)(),[C,I]=(0,n.useState)(""),[E,M]=(0,n.useState)(null),T=(0,n.useRef)(null),R=a.url??"",D="running"===a.status&&!!R,P=X.find(e=>e.id===h)?.w??"100%",A=(z&&k?k:p)||R;return(0,n.useEffect)(()=>{let e=!0;(0,$.j)().then(t=>{e&&s(t)}).catch(()=>{});let t=setInterval(()=>{"running"!==a.status&&"error"!==a.status&&(0,$.j)().then(t=>{e&&s(t)}).catch(()=>{})},3e3);return()=>{e=!1,clearInterval(t)}},[a.status]),(0,n.useEffect)(()=>{R?(c(e=>e||R),u(e=>e||R)):(c(""),u(""))},[R]),(0,n.useEffect)(()=>{if(!D||!p)return void f(!0);let e=!0;return(0,H.K)(p).then(t=>{e&&f(t.frameable)}).catch(()=>{}),()=>{e=!1}},[D,p,g]),(0,n.useEffect)(()=>{function e(e){let t=e.data;if(t&&t.__cstlaLive)if("live:ready"===t.type)try{T.current?.contentWindow?.postMessage({__cstlaLiveHost:1,type:"live:setMode",mode:z?"inspect":"off"},"*")}catch{}else"live:select"===t.type&&t.payload&&M(t.payload)}return window.addEventListener("message",e),()=>window.removeEventListener("message",e)},[z]),(0,r.jsxs)("div",{style:{position:"absolute",inset:0,zIndex:40,display:"flex",flexDirection:"column",background:"var(--bg-app)"},children:[(0,r.jsxs)("div",{className:"dz-live-bar",children:[(0,r.jsx)("span",{className:"dz-live-dot "+(D?"on":"error"===a.status?"err":"")}),(0,r.jsx)("button",{className:"dz-ico",title:"Reload",disabled:!D,onClick:()=>m(e=>e+1),children:(0,r.jsx)(o.I,{name:"refresh",size:14})}),(0,r.jsxs)("form",{className:"dz-live-addr",onSubmit:function(e){let t;e?.preventDefault();let a=(t=l.trim())?/^https?:\/\//i.test(t)?t:R.replace(/\/$/,"")+(t.startsWith("/")?t:"/"+t):R;u(a),c(a),m(e=>e+1)},children:[(0,r.jsx)(o.I,{name:D?"shield":"goto",size:12}),(0,r.jsx)("input",{value:l,placeholder:R||"the app isn't running yet",disabled:!D||z,onChange:e=>c(e.target.value),spellCheck:!1})]}),(0,r.jsx)("button",{className:"dz-ico"+(z?" on":""),title:z?"Inspecting — click an element to target it (click again to turn off)":"Inspect: click a real element to ask Grace to change it",disabled:!D||N,onClick:function(){if(I(""),z){w(!1),M(null),m(e=>e+1),U().catch(()=>{});return}S(async()=>{try{let e=await B();if(!e.ok||!e.url)return void I(e.error||"Couldn't start inspect.");j(e.url),w(!0),M(null),m(e=>e+1)}catch{I("Couldn't start inspect.")}})},children:(0,r.jsx)(o.I,{name:N?"refresh":"target",size:14,className:N?"sync-spin":""})}),(0,r.jsx)("div",{className:"dz-seg",children:X.map(e=>(0,r.jsx)("button",{className:h===e.id?"on":"",disabled:!D,onClick:()=>x(e.id),children:e.label},e.id))}),D&&(0,r.jsx)("a",{className:"dz-ico",title:"Open in a new tab",href:p,target:"_blank",rel:"noreferrer",children:(0,r.jsx)(o.I,{name:"goto",size:14})})]}),C&&(0,r.jsx)("div",{className:"dz-uperr",style:{margin:"0 10px"},children:C}),(0,r.jsx)("div",{className:"dz-live-stage",children:D&&!b?(0,r.jsxs)("div",{className:"dz-live-empty",children:[(0,r.jsx)(o.I,{name:"shield",size:26}),(0,r.jsx)("div",{className:"t",children:"The app blocks embedding"}),(0,r.jsx)("div",{className:"s",children:"It sends X-Frame-Options / CSP that prevents the preview frame."}),(0,r.jsxs)("a",{className:"btn-accent",style:{marginTop:10},href:p,target:"_blank",rel:"noreferrer",children:[(0,r.jsx)(o.I,{name:"goto",size:13})," Open in a new tab"]})]}):D?(0,r.jsx)("iframe",{ref:T,className:"dz-live-frame",src:A,style:{width:P,maxWidth:"100%"},title:"Live app preview",onLoad:()=>{try{T.current?.contentWindow?.postMessage({__cstlaLiveHost:1,type:"live:setMode",mode:z?"inspect":"off"},"*")}catch{}},sandbox:"allow-scripts allow-same-origin allow-forms allow-popups allow-modals allow-downloads"},A+":"+g):(0,r.jsxs)("div",{className:"dz-live-empty",children:[(0,r.jsx)("span",{className:i||"starting"===a.status?"sync-spin":"",children:(0,r.jsx)(o.I,{name:i||"starting"===a.status?"refresh":"play",size:26})}),(0,r.jsx)("div",{className:"t",children:"error"===a.status?"The dev server failed to start":i||"starting"===a.status?"Starting the dev server…":"Run the real app"}),(0,r.jsx)("div",{className:"s",children:"error"===a.status?"Check the project boots (Test Dev shows the logs).":"Boot the project's dev server to see the real running app here — any stack."}),"running"!==a.status&&"starting"!==a.status&&!i&&(0,r.jsxs)("button",{className:"btn-accent",style:{marginTop:10},onClick:function(){d(async()=>{try{let e=await (0,F.R)();s(e)}catch{}})},children:[(0,r.jsx)(o.I,{name:"play",size:13})," Start the app"]})]})}),E&&(0,r.jsxs)("div",{className:"dz-attach",style:{margin:"0 10px 6px"},children:[(0,r.jsx)("span",{className:"sw",style:{background:"#6366f1"}})," Editing ",(0,r.jsxs)("b",{style:{fontWeight:700},children:["<",E.tag,">",E.id?" #"+E.id:""]}),E.text?` \xb7 “${E.text.slice(0,40)}”`:"",(0,r.jsx)("span",{className:"x",onClick:()=>M(null),children:(0,r.jsx)(o.I,{name:"close",size:12})})]}),(0,r.jsxs)("form",{className:"dz-live-ask",onSubmit:function(a){a?.preventDefault();let r=v.trim();if(r&&!t){if(E){let t=[`<${E.tag}>`,E.id?`#${E.id}`:"",E.text?`text "${E.text}"`:"",E.landmark?`in "${E.landmark}"`:"",`selector \`${E.selector}\``,`on route ${E.path}`].filter(Boolean).join(" \xb7 ");e(`On the live app, change THIS element (${t}) — edit the real source, keep everything else intact: ${r}`)}else e(`On the live app: ${r}`);y(""),M(null)}},children:[(0,r.jsx)(o.I,{name:"skill",size:14}),(0,r.jsx)("input",{value:v,placeholder:E?"Describe the change to this element — Grace edits the real source…":"Ask Grace to change the live app — she edits the real source (HMR repaints it)…",onChange:e=>y(e.target.value),disabled:t}),(0,r.jsxs)("button",{className:"dz-mini-btn accent",disabled:t||!v.trim(),type:"submit",children:[(0,r.jsx)(o.I,{name:t?"refresh":"send",size:13,className:t?"sync-spin":""})," Ask Grace"]})]})]})}let G=`
304
+ .dz-wrap{flex:1;min-height:480px;display:flex;background:var(--bg-app);position:relative;height:100%;}
305
+ .dz-chat{width:312px;flex:0 0 312px;display:flex;flex-direction:column;min-height:0;border-right:1px solid var(--border-subtle);background:var(--bg-panel);}
306
+ .dz-chat-head{flex:0 0 auto;display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid var(--border-subtle);}
307
+ .dz-ch-t{font-size:13px;font-weight:700;color:var(--text);line-height:1.2;}
308
+ .dz-ch-s{font-size:11px;color:var(--text-dim);}
309
+ .dz-live{margin-left:auto;display:inline-flex;align-items:center;gap:5px;font-size:10.5px;font-weight:700;color:var(--accent);text-transform:uppercase;letter-spacing:.5px;}
310
+ .dz-live .dot{width:6px;height:6px;border-radius:50%;background:var(--accent);animation:dzpulse 1.3s infinite;}
311
+ @keyframes dzpulse{0%,100%{opacity:.35;transform:scale(.8)}50%{opacity:1;transform:scale(1.15)}}
312
+ .dz-pulse{animation:dzbtnpulse 1.6s ease-in-out infinite;}
313
+ @keyframes dzbtnpulse{0%,100%{box-shadow:0 0 0 0 rgba(224,164,78,0)}50%{box-shadow:0 0 0 4px rgba(224,164,78,.30)}}
314
+ .dz-work{background:var(--bg-elevated);border:1px solid var(--border);border-radius:12px;padding:11px 12px;font-size:12px;color:var(--text);}
315
+ .dz-composer{flex:0 0 auto;border-top:1px solid var(--border-subtle);padding:11px 13px 13px;}
316
+ .dz-chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:9px;}
317
+ .dz-chip{font-size:11px;font-weight:600;color:var(--text-dim);background:var(--bg-elevated);border:1px solid var(--border);border-radius:999px;padding:5px 10px;cursor:pointer;transition:.15s;}
318
+ .dz-chip:hover{color:var(--accent);border-color:var(--accent);}
319
+ .dz-attach{display:flex;align-items:center;gap:7px;font-size:11px;color:var(--text);background:var(--bg-elevated);border:1px solid var(--accent);border-radius:9px;padding:6px 9px;margin-bottom:8px;}
320
+ .dz-attach .sw{width:13px;height:13px;border-radius:3px;border:1px solid var(--border);}
321
+ .dz-attach .x{margin-left:auto;cursor:pointer;color:var(--text-dim);display:grid;place-items:center;}
322
+ .dz-input{display:flex;align-items:center;gap:8px;background:var(--bg-input,var(--bg-elevated));border:1px solid var(--border);border-radius:11px;padding:8px 8px 8px 12px;}
323
+ .dz-input input{flex:1;background:none;border:none;outline:none;color:var(--text);font-size:12.5px;font-family:inherit;}
324
+ .dz-input input::placeholder{color:var(--text-faint);}
325
+ .dz-send{width:30px;height:30px;flex:0 0 30px;border-radius:8px;border:none;background:var(--accent);color:var(--accent-fg,#1a1205);display:grid;place-items:center;cursor:pointer;}
326
+ .dz-send:disabled{opacity:.5;cursor:default;}
327
+ .dz-center{flex:1;min-width:0;display:flex;flex-direction:column;min-height:0;background:var(--bg-app);}
328
+ .dz-bar{flex:0 0 auto;display:flex;align-items:center;gap:8px;padding:8px 12px;border-bottom:1px solid var(--border-subtle);flex-wrap:wrap;}
329
+ .dz-modes{display:flex;gap:1px;background:var(--bg-elevated);border:1px solid var(--border);border-radius:9px;padding:3px;}
330
+ .dz-mode{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:600;color:var(--text-dim);padding:5px 9px;border-radius:6px;cursor:pointer;transition:.12s;}
331
+ .dz-mode:hover{color:var(--text);}
332
+ .dz-mode.on{background:var(--accent);color:var(--accent-fg,#1a1205);}
333
+ .dz-seg{display:flex;background:var(--bg-elevated);border:1px solid var(--border);border-radius:8px;padding:3px;}
334
+ .dz-seg button{border:none;background:none;color:var(--text-dim);font-size:11px;font-weight:600;padding:4px 8px;border-radius:5px;cursor:pointer;display:inline-flex;align-items:center;gap:5px;}
335
+ .dz-seg button.on{background:var(--bg-app);color:var(--text);box-shadow:var(--shadow);}
336
+ .dz-spacer{flex:1;}
337
+ .dz-pagestrip{flex:0 0 auto;display:flex;align-items:center;gap:8px;padding:7px 12px;border-bottom:1px solid var(--border-subtle);overflow-x:auto;}
338
+ .dz-ptabs{display:flex;gap:2px;}
339
+ .dz-ptab{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:600;color:var(--text-dim);padding:5px 10px;border-radius:7px;cursor:pointer;transition:.15s;white-space:nowrap;}
340
+ .dz-ptab:hover{color:var(--text);}
341
+ .dz-ptab.active{background:var(--bg-elevated);color:var(--text);}
342
+ .dz-hint{margin-left:auto;font-size:11px;color:var(--text-faint);display:inline-flex;align-items:center;gap:6px;white-space:nowrap;}
343
+ /* Browser-viewport zoom: when a screen exists the preview frame fills the canvas surface. The iframe document
344
+ applies one global page scale, so the frame stays put and every prototype element zooms together. */
345
+ .dz-canvas{flex:1;min-height:0;overflow:hidden;display:grid;align-items:safe center;justify-items:safe center;padding:32px;background:radial-gradient(circle at 50% 0,rgba(224,164,78,.05),transparent 60%),var(--bg-app);}
346
+ .dz-canvas.has-screen{padding:0;align-items:stretch;justify-items:stretch;}
347
+ .dz-canvas.has-screen.framed{padding:24px;align-items:center;justify-items:center;overflow:auto;}
348
+ .dz-artwrap{position:relative;}
349
+ .dz-art{position:absolute;top:0;left:0;overflow:hidden;background:#fff;}
350
+ .dz-canvas.has-screen.framed .dz-art{border:1px solid var(--border);border-radius:18px;box-shadow:0 18px 55px -18px rgba(0,0,0,.45);}
351
+ .dz-bpw{width:46px;border:none;background:none;color:var(--text);font-size:11px;font-weight:600;text-align:center;border-radius:5px;outline:none;-moz-appearance:textfield;}
352
+ .dz-bpw::-webkit-outer-spin-button,.dz-bpw::-webkit-inner-spin-button{-webkit-appearance:none;margin:0;}
353
+ .dz-bpw::placeholder{color:var(--text-faint);}
354
+ .dz-bpw:focus{background:var(--bg-app);}
355
+ .dz-live-bar{flex:0 0 auto;display:flex;align-items:center;gap:8px;padding:8px 12px;border-bottom:1px solid var(--border-subtle);background:var(--bg-panel);}
356
+ .dz-live-dot{width:9px;height:9px;border-radius:50%;background:var(--text-faint);flex:0 0 auto;}
357
+ .dz-live-dot.on{background:var(--sx-string,#3fb950);box-shadow:0 0 0 3px rgba(63,185,80,.18);}
358
+ .dz-live-dot.err{background:#e8688f;}
359
+ .dz-ico{width:28px;height:28px;border:1px solid var(--border);border-radius:7px;background:var(--bg-app);color:var(--text-dim);display:inline-grid;place-items:center;cursor:pointer;flex:0 0 auto;text-decoration:none;}
360
+ .dz-ico:hover{color:var(--text);}.dz-ico:disabled{opacity:.4;cursor:default;}
361
+ .dz-live-addr{flex:1;min-width:0;display:flex;align-items:center;gap:7px;padding:0 10px;height:28px;border:1px solid var(--border);border-radius:7px;background:var(--bg-app);color:var(--text-dim);}
362
+ .dz-live-addr input{flex:1;min-width:0;border:none;background:none;outline:none;color:var(--text);font-size:12px;font-family:var(--mono-font);}
363
+ .dz-live-stage{flex:1;min-height:0;overflow:auto;display:grid;place-items:start center;padding:20px;background:radial-gradient(circle at 50% 0,rgba(99,102,241,.05),transparent 60%),var(--bg-app);}
364
+ .dz-live-frame{height:100%;min-height:560px;border:1px solid var(--border);border-radius:12px;background:#fff;box-shadow:0 18px 55px -18px rgba(0,0,0,.45);}
365
+ .dz-live-empty{margin:auto;display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center;color:var(--text-dim);padding:40px;max-width:380px;}
366
+ .dz-live-empty .t{font-size:14px;font-weight:600;color:var(--text);}.dz-live-empty .s{font-size:12px;line-height:1.5;}
367
+ .dz-live-ask{flex:0 0 auto;display:flex;align-items:center;gap:8px;padding:9px 12px;border-top:1px solid var(--border-subtle);background:var(--bg-panel);}
368
+ .dz-live-ask>svg{color:var(--accent);flex:0 0 auto;}
369
+ .dz-live-ask input{flex:1;min-width:0;border:1px solid var(--border);border-radius:8px;background:var(--bg-app);color:var(--text);font-size:12.5px;padding:8px 11px;outline:none;}
370
+ .dz-live-ask input:focus{border-color:var(--accent);}
371
+ .dz-emptywrap{margin:auto;display:grid;place-items:center;}
372
+ .dz-empty{display:flex;flex-direction:column;align-items:center;gap:10px;text-align:center;padding:40px;max-width:380px;}
373
+ .dz-empty .ic{width:46px;height:46px;border-radius:13px;background:var(--bg-elevated);border:1px solid var(--border);display:grid;place-items:center;color:var(--accent);}
374
+ .dz-empty .t{font-size:14px;font-weight:700;color:var(--text);}
375
+ .dz-empty .s{font-size:12px;color:var(--text-dim);line-height:1.5;}
376
+ .dz-ovl{position:absolute;inset:0;pointer-events:none;z-index:6;}
377
+ .dz-hl{position:absolute;border:1.5px solid var(--accent);border-radius:3px;pointer-events:none;}
378
+ .dz-hl .tag{position:absolute;top:-18px;left:-1.5px;font-size:10px;font-weight:700;color:var(--accent-fg,#1a1205);background:var(--accent);padding:1px 6px;border-radius:4px;white-space:nowrap;}
379
+ .dz-selbox{position:absolute;border:2px solid var(--accent);border-radius:3px;pointer-events:none;}
380
+ .dz-selbox .h{position:absolute;width:9px;height:9px;background:var(--bg-app);border:1.5px solid var(--accent);border-radius:2px;pointer-events:auto;z-index:9;}
381
+ .dz-selbox .h.tl{left:-5px;top:-5px;cursor:nwse-resize}.dz-selbox .h.tr{right:-5px;top:-5px;cursor:nesw-resize}.dz-selbox .h.bl{left:-5px;bottom:-5px;cursor:nesw-resize}.dz-selbox .h.br{right:-5px;bottom:-5px;cursor:nwse-resize}
382
+ .dz-selbox .h.tm{left:50%;top:-5px;transform:translateX(-50%);cursor:ns-resize}.dz-selbox .h.bm{left:50%;bottom:-5px;transform:translateX(-50%);cursor:ns-resize}
383
+ .dz-selbox .h.ml{left:-5px;top:50%;transform:translateY(-50%);cursor:ew-resize}.dz-selbox .h.mr{right:-5px;top:50%;transform:translateY(-50%);cursor:ew-resize}
384
+ .dz-guide{position:absolute;background:var(--accent);pointer-events:none;z-index:8;opacity:.9;}
385
+ .dz-guide.v{top:0;bottom:0;width:1px;}
386
+ .dz-guide.h{left:0;right:0;height:1px;}
387
+ .dz-ctx{position:absolute;z-index:9;pointer-events:auto;display:flex;align-items:center;gap:3px;background:var(--bg-elevated);border:1px solid var(--border);border-radius:10px;padding:4px;box-shadow:0 10px 30px -8px rgba(0,0,0,.5);}
388
+ .dz-ctx button{height:28px;padding:0 8px;border:none;background:none;border-radius:7px;color:var(--text-dim);display:inline-flex;align-items:center;gap:5px;cursor:pointer;font-size:11px;font-weight:600;}
389
+ .dz-ctx button:hover{background:var(--bg-app);color:var(--accent);}
390
+ .dz-ctx .sep{width:1px;height:18px;background:var(--border);margin:0 2px;}
391
+ .dz-ctx .ask{background:var(--accent);color:var(--accent-fg,#1a1205);}
392
+ .dz-mk{position:absolute;border:2px dashed var(--accent);background:rgba(224,164,78,.1);border-radius:4px;pointer-events:none;}
393
+ .dz-pin{position:absolute;width:23px;height:23px;border-radius:50% 50% 50% 3px;background:var(--accent);color:var(--accent-fg,#1a1205);display:grid;place-items:center;font-size:11px;font-weight:800;pointer-events:auto;cursor:pointer;box-shadow:0 4px 12px -2px rgba(0,0,0,.5);transform:translate(-2px,-23px);}
394
+ .dz-cpop{position:absolute;z-index:11;width:216px;background:var(--bg-elevated);border:1px solid var(--border);border-radius:11px;padding:11px;box-shadow:0 14px 40px -10px rgba(0,0,0,.6);pointer-events:auto;}
395
+ .dz-cpop textarea{width:100%;background:var(--bg-app);border:1px solid var(--border);border-radius:8px;color:var(--text);font-family:inherit;font-size:12px;padding:8px;resize:none;outline:none;box-sizing:border-box;}
396
+ .dz-cpop .row{display:flex;gap:6px;justify-content:flex-end;margin-top:8px;}
397
+ .dz-build-bar{position:absolute;left:0;right:0;bottom:0;display:flex;align-items:center;gap:8px;padding:8px 14px;font-size:11px;font-weight:600;color:#fff;background:linear-gradient(90deg,rgba(224,164,78,.92),rgba(224,164,78,.7));z-index:7;}
398
+ .dz-build-bar .sh{flex:1;height:4px;border-radius:3px;background:rgba(255,255,255,.3);overflow:hidden;}
399
+ .dz-build-bar .sh::after{content:"";display:block;height:100%;width:40%;background:#fff;border-radius:3px;animation:dzshim 1.3s infinite;}
400
+ @keyframes dzshim{0%{transform:translateX(-120%)}100%{transform:translateX(320%)}}
401
+ .dz-approve-banner{flex:0 0 auto;display:flex;align-items:center;gap:12px;padding:10px 14px;background:linear-gradient(90deg,rgba(224,164,78,.14),rgba(224,164,78,.02));border-bottom:1px solid var(--border-subtle);}
402
+ .dz-ab-ic{width:30px;height:30px;border-radius:9px;background:var(--accent);color:var(--accent-fg,#1a1205);display:grid;place-items:center;flex:0 0 30px;}
403
+ .dz-ab-t{font-size:12.5px;font-weight:700;color:var(--text);}
404
+ .dz-ab-s{font-size:11px;color:var(--text-dim);}
405
+ .dz-ab-actions{margin-left:auto;display:flex;gap:7px;flex-wrap:wrap;}
406
+ .dz-mini-btn{font-size:11px;font-weight:600;border-radius:7px;padding:5px 10px;cursor:pointer;border:1px solid var(--border);background:var(--bg-elevated);color:var(--text);display:inline-flex;align-items:center;gap:6px;}
407
+ .dz-mini-btn.accent{background:var(--accent);color:var(--accent-fg,#1a1205);border-color:transparent;}
408
+ .dz-mini-btn:disabled{opacity:.6;cursor:default;}
409
+ .dz-rail{width:240px;flex:0 0 240px;display:flex;flex-direction:column;min-height:0;border-left:1px solid var(--border-subtle);background:var(--bg-panel);}
410
+ .dz-rail-tabs{flex:0 0 auto;display:flex;border-bottom:1px solid var(--border-subtle);padding:6px 7px;gap:2px;overflow-x:auto;}
411
+ .dz-rt{flex:1;font-size:10.5px;font-weight:600;color:var(--text-dim);padding:7px 4px;border-radius:7px;cursor:pointer;text-align:center;white-space:nowrap;transition:.15s;}
412
+ .dz-rt.active{background:var(--bg-elevated);color:var(--text);}
413
+ .dz-rail-body{flex:1;min-height:0;overflow-y:auto;padding:13px;}
414
+ /* Custom scrollbar — same look as the lateral menu (the global themed bar). Explicit on the Design
415
+ module's scroll surfaces so they never fall back to the native thin bar. */
416
+ .dz-rail-body::-webkit-scrollbar,.dz-rail-tabs::-webkit-scrollbar,.dz-pagestrip::-webkit-scrollbar,.dz-canvas::-webkit-scrollbar{width:11px;height:11px;}
417
+ .dz-rail-body::-webkit-scrollbar-track,.dz-rail-tabs::-webkit-scrollbar-track,.dz-pagestrip::-webkit-scrollbar-track,.dz-canvas::-webkit-scrollbar-track{background:transparent;}
418
+ .dz-rail-body::-webkit-scrollbar-thumb,.dz-rail-tabs::-webkit-scrollbar-thumb,.dz-pagestrip::-webkit-scrollbar-thumb,.dz-canvas::-webkit-scrollbar-thumb{background:var(--scroll-thumb);border-radius:6px;border:3px solid transparent;background-clip:padding-box;}
419
+ .dz-rail-body::-webkit-scrollbar-thumb:hover,.dz-rail-tabs::-webkit-scrollbar-thumb:hover,.dz-pagestrip::-webkit-scrollbar-thumb:hover,.dz-canvas::-webkit-scrollbar-thumb:hover{background:var(--text-faint);background-clip:padding-box;}
420
+ .dz-rail-body::-webkit-scrollbar-corner,.dz-canvas::-webkit-scrollbar-corner{background:transparent;}
421
+ .dz-sec{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--text-faint);margin:4px 0 9px;}
422
+ .dz-row{display:flex;align-items:center;gap:9px;padding:8px 9px;border-radius:9px;border:1px solid transparent;cursor:pointer;transition:.15s;}
423
+ .dz-row:hover{background:var(--bg-elevated);}
424
+ .dz-row.active{background:var(--bg-elevated);border-color:var(--border);}
425
+ .dz-r-ic{width:26px;height:26px;flex:0 0 26px;border-radius:7px;background:var(--bg-app);border:1px solid var(--border);display:grid;place-items:center;color:var(--accent);}
426
+ .dz-r-t{font-size:12px;font-weight:600;color:var(--text);word-break:break-all;}
427
+ .dz-r-s{font-size:10.5px;color:var(--text-dim);}
428
+ .dz-r-meta{margin-left:auto;font-size:10px;color:var(--text-faint);flex:0 0 auto;}
429
+ .dz-addrow{display:flex;align-items:center;justify-content:center;gap:6px;padding:9px;border:1px dashed var(--border);border-radius:9px;color:var(--text-dim);font-size:11.5px;font-weight:600;cursor:pointer;margin-top:8px;}
430
+ .dz-addrow:hover{color:var(--accent);border-color:var(--accent);}
431
+ .dz-pp-row{display:flex;justify-content:space-between;gap:10px;padding:7px 0;border-bottom:1px solid var(--border-subtle);font-size:11px;align-items:center;}
432
+ .dz-pp-row .k{color:var(--text-dim);flex:0 0 auto;}
433
+ .dz-pp-row .v{color:var(--text);text-align:right;word-break:break-word;font-family:var(--mono-font);font-size:10px;}
434
+ .dz-insw{width:11px;height:11px;border-radius:3px;display:inline-block;vertical-align:-1px;margin-right:5px;border:1px solid var(--border);}
435
+ .dz-swatches{display:flex;flex-wrap:wrap;gap:8px;}
436
+ .dz-sw{width:32px;height:32px;border-radius:9px;cursor:pointer;border:2px solid transparent;position:relative;transition:.15s;}
437
+ .dz-sw.on{border-color:var(--text);}
438
+ .dz-sw.on::after{content:"✓";position:absolute;inset:0;display:grid;place-items:center;color:#fff;font-size:13px;font-weight:800;text-shadow:0 1px 2px rgba(0,0,0,.5);}
439
+ .dz-opt{display:flex;gap:6px;flex-wrap:wrap;}
440
+ .dz-pill2{font-size:11px;font-weight:600;color:var(--text-dim);background:var(--bg-elevated);border:1px solid var(--border);border-radius:8px;padding:6px 11px;cursor:pointer;transition:.15s;}
441
+ .dz-pill2.on{color:var(--accent);border-color:var(--accent);background:rgba(224,164,78,.08);}
442
+ .dz-comp-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;}
443
+ .dz-comp{border:1px solid var(--border);border-radius:9px;padding:9px;background:var(--bg-elevated);}
444
+ .dz-comp .nm{font-size:11px;font-weight:600;color:var(--text);margin-top:7px;word-break:break-all;}
445
+ .dz-comp .ct{font-size:10px;color:var(--text-faint);}
446
+ .dz-preset{position:relative;}
447
+ .dz-preset-x{position:absolute;top:4px;right:4px;width:16px;height:16px;border:none;border-radius:5px;background:var(--bg-app);color:var(--text-dim);display:grid;place-items:center;cursor:pointer;opacity:0;transition:.12s;}
448
+ .dz-preset:hover .dz-preset-x{opacity:1;}
449
+ .dz-preset-x:hover{background:var(--danger,#e5484d);color:#fff;}
450
+ .dz-cmt{border:1px solid var(--border);border-radius:10px;padding:10px;margin-bottom:8px;background:var(--bg-elevated);}
451
+ .dz-cmt .h{display:flex;align-items:center;gap:7px;font-size:11px;font-weight:700;color:var(--text);}
452
+ .dz-cmt .pin{width:18px;height:18px;border-radius:50%;background:var(--accent);color:var(--accent-fg,#1a1205);display:grid;place-items:center;font-size:10px;font-weight:800;}
453
+ .dz-cmt .x{margin-left:auto;cursor:pointer;color:var(--text-faint);}
454
+ .dz-cmt .bd{font-size:11.5px;color:var(--text);margin:6px 0;line-height:1.45;}
455
+ .dz-cmt .rep{font-size:11px;color:var(--text-dim);border-left:2px solid var(--accent);padding-left:8px;line-height:1.45;display:flex;gap:6px;}
456
+ .dz-vnode{position:relative;padding:8px 9px;border-radius:9px;cursor:pointer;border:1px solid transparent;margin-bottom:4px;margin-left:16px;}
457
+ .dz-vnode:hover{background:var(--bg-elevated);}
458
+ .dz-vnode.active{background:var(--bg-elevated);border-color:var(--border);}
459
+ .dz-vnode::before{content:"";position:absolute;left:-13px;top:13px;width:9px;height:9px;border-radius:50%;background:var(--bg-panel);border:2px solid var(--border);}
460
+ .dz-vnode.active::before{background:var(--accent);border-color:var(--accent);}
461
+ .dz-vnode .vt{font-size:12px;font-weight:600;color:var(--text);display:flex;align-items:center;gap:6px;}
462
+ .dz-vnode .vs{font-size:10.5px;color:var(--text-dim);}
463
+ .dz-vnode .vtime{font-size:10px;color:var(--text-faint);}
464
+ .dz-tag{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:var(--accent);background:rgba(224,164,78,.12);border-radius:5px;padding:1px 6px;}
465
+ .dz-modal-bg{position:fixed;inset:0;z-index:60;background:rgba(0,0,0,.55);display:grid;place-items:center;padding:24px;}
466
+ .dz-modal{width:560px;max-width:100%;max-height:90vh;display:flex;flex-direction:column;background:var(--bg-panel);border:1px solid var(--border);border-radius:14px;box-shadow:0 30px 80px -20px rgba(0,0,0,.7);overflow:hidden;}
467
+ .dz-modal-h{display:flex;align-items:center;gap:11px;padding:16px 18px;border-bottom:1px solid var(--border-subtle);}
468
+ .dz-modal-h .ic{width:34px;height:34px;border-radius:9px;background:var(--accent);color:var(--accent-fg,#1a1205);display:grid;place-items:center;}
469
+ .dz-modal-h .t{font-size:15px;font-weight:800;color:var(--text);}
470
+ .dz-modal-h .s{font-size:11.5px;color:var(--text-dim);}
471
+ .dz-modal-h .x{margin-left:auto;cursor:pointer;color:var(--text-dim);width:30px;height:30px;display:grid;place-items:center;border-radius:8px;}
472
+ .dz-modal-b{padding:16px 18px;overflow-y:auto;display:flex;flex-direction:column;gap:8px;}
473
+ .dz-dl{display:flex;align-items:center;gap:9px;padding:9px 11px;border:1px solid var(--border);border-radius:9px;background:var(--bg-app);font-size:12px;color:var(--text);}
474
+ .dz-dl .ck{width:18px;height:18px;border-radius:50%;background:rgba(224,164,78,.16);color:var(--accent);display:grid;place-items:center;flex:0 0 18px;}
475
+ .dz-dl .n{margin-left:auto;font-size:10px;color:var(--text-faint);}
476
+ .dz-modal-f{display:flex;align-items:center;gap:10px;padding:14px 18px;border-top:1px solid var(--border-subtle);}
477
+ .dz-modal-f .note{font-size:11px;color:var(--text-dim);}
478
+ .dz-flash{position:absolute;bottom:14px;left:50%;transform:translateX(-50%);z-index:50;background:var(--bg-elevated);border:1px solid var(--accent);color:var(--text);font-size:12px;font-weight:600;border-radius:9px;padding:8px 14px;box-shadow:0 10px 30px -8px rgba(0,0,0,.5);}
479
+ .dz-composer.drag{outline:2px dashed var(--accent);outline-offset:-3px;background:rgba(224,164,78,.05);}
480
+ .dz-atts{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px;}
481
+ .dz-att{display:flex;align-items:center;gap:6px;background:var(--bg-elevated);border:1px solid var(--border);border-radius:8px;padding:3px 4px 3px 6px;font-size:10.5px;color:var(--text-dim);max-width:158px;}
482
+ .dz-att img{width:22px;height:22px;border-radius:4px;object-fit:cover;flex:0 0 22px;}
483
+ .dz-att .nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
484
+ .dz-att .rm{cursor:pointer;color:var(--text-faint);display:grid;place-items:center;width:16px;height:16px;border-radius:4px;flex:0 0 16px;}
485
+ .dz-att .rm:hover{color:var(--text);background:var(--bg-app);}
486
+ .dz-clip{width:30px;height:30px;flex:0 0 30px;border-radius:8px;border:1px solid var(--border);background:var(--bg-elevated);color:var(--text-dim);display:grid;place-items:center;cursor:pointer;}
487
+ .dz-clip:hover{color:var(--accent);border-color:var(--accent);}
488
+ .dz-clip:disabled{opacity:.5;cursor:default;}
489
+ .dz-uperr{font-size:10.5px;color:#e5687a;margin-bottom:6px;}
490
+ .dz-strip{flex:0 0 40px;width:40px;display:flex;flex-direction:column;align-items:center;gap:12px;padding:12px 0;background:var(--bg-panel);cursor:pointer;color:var(--text-dim);}
491
+ .dz-strip.left{border-right:1px solid var(--border-subtle);}
492
+ .dz-strip.right{border-left:1px solid var(--border-subtle);}
493
+ .dz-strip:hover{color:var(--accent);background:var(--bg-elevated);}
494
+ .dz-collapse-btn{margin-left:auto;width:24px;height:24px;border-radius:6px;border:none;background:none;color:var(--text-dim);display:grid;place-items:center;cursor:pointer;flex:0 0 auto;}
495
+ .dz-collapse-btn:hover{color:var(--accent);background:var(--bg-elevated);}
496
+ .dz-save{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:600;border-radius:7px;padding:5px 9px;border:1px solid var(--border);white-space:nowrap;}
497
+ .dz-save.saving{color:var(--accent);border-color:var(--accent);background:rgba(224,164,78,.08);}
498
+ .dz-save.saved{color:#34d399;border-color:rgba(52,211,153,.4);background:rgba(52,211,153,.08);}
499
+ .dz-save.preview{color:var(--text-dim);border-color:var(--border);}
500
+ /* Per-element Property panel (live editor) */
501
+ .dz-pgrp-h{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--text-faint);margin:13px 0 7px;display:flex;align-items:center;gap:6px;}
502
+ .dz-pgrp-h:first-child{margin-top:4px;}
503
+ .dz-fgrid{display:grid;grid-template-columns:1fr 1fr;gap:7px;}
504
+ .dz-f{display:flex;flex-direction:column;gap:3px;min-width:0;}
505
+ .dz-f.full{grid-column:1 / -1;}
506
+ .dz-f>label{font-size:9.5px;font-weight:600;color:var(--text-dim);text-transform:uppercase;letter-spacing:.3px;}
507
+ .dz-f input,.dz-f select{width:100%;box-sizing:border-box;background:var(--bg-app);border:1px solid var(--border);border-radius:7px;color:var(--text);font-size:11px;font-family:var(--mono-font);padding:5px 7px;outline:none;}
508
+ .dz-f input:focus,.dz-f select:focus{border-color:var(--accent);}
509
+ .dz-colorrow{display:flex;align-items:center;gap:6px;}
510
+ .dz-colorrow input[type=color]{width:26px;height:26px;flex:0 0 26px;padding:1px;border:1px solid var(--border);border-radius:6px;background:none;cursor:pointer;}
511
+ .dz-colorrow input[type=text]{flex:1;min-width:0;}
512
+ /* Styles-panel token controls (sliders / color rows / sub-headers) */
513
+ .dz-trow{margin:9px 0;}
514
+ .dz-trow>label{display:flex;justify-content:space-between;align-items:center;font-size:11px;font-weight:600;color:var(--text-dim);margin-bottom:5px;}
515
+ .dz-trow>label .v{color:var(--accent);font-variant-numeric:tabular-nums;font-weight:700;}
516
+ .dz-trow input[type=range]{width:100%;height:4px;-webkit-appearance:none;appearance:none;background:var(--border);border-radius:3px;outline:none;cursor:pointer;}
517
+ .dz-trow input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;border-radius:50%;background:var(--accent);cursor:pointer;border:2px solid var(--bg-elevated);}
518
+ .dz-trow input[type=range]::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:var(--accent);cursor:pointer;border:none;}
519
+ .dz-trow input[type=text]{background:var(--bg-input,var(--bg-elevated));border:1px solid var(--border);border-radius:8px;color:var(--text);font-size:11.5px;font-family:inherit;padding:6px 9px;outline:none;}
520
+ .dz-sub{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--text-faint);margin:12px 0 6px;}
521
+ .dz-adv{margin:10px 0;border-top:1px solid var(--border);padding-top:9px;}
522
+ .dz-adv>summary{font-size:11px;font-weight:600;color:var(--text-dim);cursor:pointer;}
523
+ .dz-f>label.dz-scrub{cursor:ew-resize;user-select:none;}
524
+ .dz-numf{position:relative;display:flex;align-items:stretch;}
525
+ .dz-numf input{flex:1;min-width:0;padding-right:16px;}
526
+ .dz-numf input::-webkit-outer-spin-button,.dz-numf input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0;}
527
+ .dz-steps{position:absolute;right:1px;top:1px;bottom:1px;width:15px;display:flex;flex-direction:column;}
528
+ .dz-steps button{flex:1;border:none;background:var(--bg-elevated);color:var(--text-dim);display:grid;place-items:center;cursor:pointer;padding:0;border-radius:0;}
529
+ .dz-steps button:first-child{border-top-right-radius:6px;}
530
+ .dz-steps button:last-child{border-bottom-right-radius:6px;}
531
+ .dz-steps button:hover{color:var(--accent);background:var(--bg-app);}
532
+ .dz-layer{display:flex;align-items:center;gap:7px;padding:5px 8px;border-radius:7px;cursor:pointer;font-size:11.5px;color:var(--text);border:1px solid transparent;}
533
+ .dz-layer:hover{background:var(--bg-elevated);}
534
+ .dz-layer.active{background:var(--bg-elevated);border-color:var(--accent);}
535
+ .dz-layer .lt{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
536
+ .dz-layer .lg{font-size:9px;color:var(--text-faint);font-family:var(--mono-font);flex:0 0 auto;}
537
+ .dz-layer>svg{flex:0 0 auto;color:var(--text-dim);}
538
+ .dz-docnav{display:flex;flex-direction:column;gap:3px;margin-bottom:11px;}
539
+ .dz-doctab{display:flex;align-items:center;gap:7px;padding:6px 9px;border-radius:8px;cursor:pointer;font-size:11.5px;color:var(--text);border:1px solid transparent;transition:.15s;}
540
+ .dz-doctab:hover{background:var(--bg-elevated);}
541
+ .dz-doctab.active{background:var(--bg-elevated);border-color:var(--accent);color:var(--accent);}
542
+ .dz-doctab>span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
543
+ .dz-doctab>svg{flex:0 0 auto;color:var(--text-dim);}
544
+ .dz-doctab.active>svg{color:var(--accent);}
545
+ .dz-docbody{font-size:12px;line-height:1.6;color:var(--text);border-top:1px solid var(--border-subtle);padding-top:11px;overflow-wrap:anywhere;}
546
+ .dz-docbody h1{font-size:15px;}.dz-docbody h2{font-size:13.5px;margin-top:14px;}.dz-docbody h3{font-size:12.5px;}
547
+ .dz-docbody code{font-family:var(--mono-font);font-size:11px;background:var(--bg-app);padding:1px 4px;border-radius:4px;}
548
+ .dz-docbody pre{background:var(--bg-app);border:1px solid var(--border-subtle);border-radius:8px;padding:9px;overflow-x:auto;}
549
+ .dz-docbody pre code{background:none;padding:0;}
550
+ .dz-docbody table{border-collapse:collapse;width:100%;font-size:11px;}
551
+ .dz-docbody th,.dz-docbody td{border:1px solid var(--border-subtle);padding:4px 7px;text-align:left;}
552
+ .dz-docbody a{color:var(--accent);}
553
+ .dz-quick{display:flex;gap:6px;flex-wrap:wrap;margin:14px 0 2px;}
554
+ .dz-quick .dz-mini-btn{flex:1;min-width:62px;justify-content:center;}
555
+ .dz-seg-mini{display:flex;background:var(--bg-app);border:1px solid var(--border);border-radius:7px;padding:2px;gap:1px;}
556
+ .dz-seg-mini button{flex:1;border:none;background:none;color:var(--text-dim);font-size:10.5px;font-weight:600;padding:4px 5px;border-radius:5px;cursor:pointer;display:grid;place-items:center;}
557
+ .dz-seg-mini button.on{background:var(--accent);color:var(--accent-fg,#1a1205);}
558
+ `,Z=[{name:"Indigo",c:"#6366f1"},{name:"Violet",c:"#8b5cf6"},{name:"Blue",c:"#3b82f6"},{name:"Sky",c:"#0ea5e9"},{name:"Cyan",c:"#06b6d4"},{name:"Teal",c:"#14b8a6"},{name:"Emerald",c:"#10b981"},{name:"Lime",c:"#84cc16"},{name:"Amber",c:"#f59e0b"},{name:"Orange",c:"#f97316"},{name:"Rose",c:"#f43f5e"},{name:"Pink",c:"#ec4899"}],_=[{n:"Inter",s:"'Inter',system-ui,sans-serif"},{n:"IBM Plex",s:"'IBM Plex Sans',sans-serif"},{n:"Geist",s:"'Geist','Inter',ui-sans-serif,sans-serif"},{n:"System",s:"system-ui,-apple-system,Segoe UI,sans-serif"},{n:"Serif",s:"Georgia,'Times New Roman',serif"},{n:"Mono",s:"ui-monospace,'SF Mono',Menlo,monospace"},{n:"Display",s:"'Poppins','Inter',system-ui,sans-serif"}],K=[{n:"Sharp",r:6},{n:"Soft",r:16},{n:"Round",r:26}],V=[{id:"select",ic:"target"},{id:"edit",ic:"newFile"},{id:"markup",ic:"skill"},{id:"comments",ic:"chat"},{id:"inspect",ic:"search"},{id:"preview",ic:"play"}];function q(e,t){let a=parseInt(e.replace("#",""),16);return`rgba(${a>>16&255},${a>>8&255},${255&a},${t})`}function J(e){return(e.split("/").pop()||e).replace(/\.html?$/i,"")}function Q(e){let t=(e||"").replace(/\\/g,"/"),a=t.toLowerCase().lastIndexOf("design-mock/");return a>=0?t.slice(a):null}let ee=/\b(remov(i|ido|eu|idos)|adicion(ei|ado|ou|ados)|cri(ei|ado|ou|ados)|corrig(i|ido|iu)|ajust(ei|ado|ou)|atualiz(ei|ado|ou)|mud(ei|ado|ou)|delet(ei|ado|ou)|limp(ei|ado|ou)|troqu(ei)|troc(ado|ou)|inseri|inserido|fiz|feit[oa]s?|pront[oa]s?|conclu(i|í|ido|ída)|finaliz(ei|ado|ou)|implement(ei|ado|ou)|ger(ei|ado|ou)|salv(ei|o|ado)|apliqu(ei)|aplic(ado|ou)|added|removed|deleted|created|fixed|updated|changed|cleaned|adjusted|renamed|moved|made|done|ready|here'?s|i'?ve|i\s+have|i\s+just|i\s+made)\b/i,et=[["design.sugg.adjustPalette","Adjust the color palette"],["design.sugg.improveSpacing","Improve the spacing"],["design.sugg.mobileVersion","Create a mobile version"],["design.sugg.darkTheme","Try a dark theme"],["design.sugg.addSection","Add a section"],["design.sugg.newScreen","Create a new screen"],["design.sugg.visualDocs","Generate the visual docs"],["design.sugg.askReview","Ask Grace for a review"],["design.sugg.approve","Approve design"],["design.sugg.sendExec","Send to execution"]],ea=[["design.sugg.firstScreen","Build the first screen"],["design.sugg.proposePalette","Propose a color palette"],["design.sugg.defineTypography","Define the typography"],["design.sugg.mainFlow","Design the main flow"],["design.sugg.heroSection","Add a hero section"],["design.sugg.mobileVersion","Create a mobile version"]],er={accent:"#6366f1",accentName:"Indigo",accentFg:"",secondary:"",surface:"",success:"",warning:"",danger:"",theme:"dark",font:_[0].s,fontName:"Inter",headingFont:_[0].s,headingFontName:"Inter",fontWeight:400,lineHeight:1.5,letterSpacing:0,fontScale:1,radius:16,borderWidth:1,borderColor:"",shadow:"md",density:12,containerWidth:1200,motionMs:200,ease:"ease"};function en(e){return!!(e.selection&&"object"==typeof e.selection&&"markup"===e.selection.kind)}function es(e){return e.selection.rect}function ei(e){let t=e.x+e.w/2,a=e.y+e.h/2;return`${a<33?"top":a<66?"middle":"bottom"}-${t<33?"left":t<66?"center":"right"} area, roughly ${Math.round(e.w)}%\xd7${Math.round(e.h)}% of the page`}function eo({grace:e,context:t,status:a,tokens:u}){var $;let H,F,U,B,X,ed=(0,s.useRouter)(),el=(0,i.k)(),[ec,ep]=(0,n.useState)("approved"===a||t.approved?"approved":"building"),[eu,eg]=(0,n.useState)(!1),[em,eh]=(0,n.useState)("screens"),[ex,eb]=(0,n.useState)(!0),[ef,ev]=(0,n.useState)(!0),[ey,ez]=(0,n.useState)("desktop"),[ew,ek]=(0,n.useState)(null),[ej,eN]=(0,n.useState)(!1),[eS,eC]=(0,n.useState)(100),[eI,eE]=(0,n.useState)("select"),[eM,eT]=(0,n.useState)({...er,...u??{}}),[eR,eD]=(0,n.useState)(""),[eP,eA]=(0,n.useState)(!1),[eL,eO]=(0,n.useState)(!1),[eW,e$]=(0,n.useState)(""),[eH,eF]=(0,n.useState)([]),[eU,eB]=(0,n.useState)(!1),[eX,eY]=(0,n.useState)(!1),[eG,eZ]=(0,n.useState)(""),e_=(0,n.useRef)(null),eK=(0,n.useRef)(!0),[eV,eq]=(0,n.useState)(""),[eJ,eQ]=(0,n.useState)(null),[e0,e1]=(0,n.useState)(""),[e2,e5]=(0,n.useState)([]),[e6,e4]=(0,n.useState)([]),[e8,e3]=(0,n.useState)(!0),[e7,e9]=(0,n.useState)(!1),te=(0,n.useRef)(0),tt=(0,n.useRef)(0),ta=(0,n.useRef)(null),[tr,tn]=(0,n.useState)([]),[ts,ti]=(0,n.useState)(null),[to,td]=(0,n.useState)(null),[tl,tc]=(0,n.useState)({scrollX:0,scrollY:0,viewportW:980,viewportH:560,docW:980,docH:560}),[tp,tu]=(0,n.useState)({w:1200,h:700}),[tg,tm]=(0,n.useState)([]),[th,tx]=(0,n.useState)(!1),tb=(0,n.useRef)(!1),[tf,tv]=(0,n.useState)(null),[ty,tz]=(0,n.useState)([]),tw=(0,n.useRef)([]),[tk,tj]=(0,n.useState)(!1),[tN,tS]=(0,n.useState)(null),[tC,tI]=(0,n.useState)(null),[tE,tM]=(0,n.useState)(null),[tT,tR]=(0,n.useState)(""),[tD,tP]=(0,n.useState)([]),[tA,tL]=(0,n.useState)([]),[tO,tW]=(0,n.useState)(null),[t$,tH]=(0,n.useState)(null),[tF,tU]=(0,n.useState)(!1),[tB,tX]=(0,n.useState)([]),[tY,tG]=(0,n.useState)(null),[tZ,t_]=(0,n.useState)(""),[tK,tV]=(0,n.useState)(0),[tq,tJ]=(0,n.useState)("idle"),tQ=(0,n.useRef)(!1),t0=(0,n.useRef)(""),t1=(0,n.useRef)(null),t2=(0,n.useRef)(new Map),[t5,t6]=(0,n.useState)(0),t4=(0,n.useRef)(null),t8=(0,n.useRef)(null),t3=(0,n.useRef)(""),t7=(0,n.useRef)(eI),t9=(0,n.useRef)(""),ae=(0,n.useRef)(eM),at=(0,n.useRef)([]),aa=(0,n.useRef)(null),ar=(0,n.useRef)(!1),an=(0,n.useRef)(!1),as=Array.from(new Set([...t.designMockFiles.filter(e=>/\.html?$/i.test(e)),...tr]));at.current=as;let ai=t.designMockFiles.filter(e=>e.startsWith("design-mock/components/")),ao="approved"===ec,ad=eV&&as.includes(eV)?eV:as[0]??"";t9.current=ad,ar.current=ao,an.current=e7,t7.current=eI,ae.current=eM;let al=as.length>0&&null!=eJ&&!e0,ac=eS/100,ap=null!=ew?{w:Math.max(320,Math.min(1920,ew)),h:Math.max(560,Math.round(1.5*Math.max(320,Math.min(1920,ew))))}:"tablet"===ey?{w:768,h:1024}:"mobile"===ey?{w:390,h:844}:null,au=null!=ap,ag=au?ap.w:Math.max(1,tp.w/ac),am=au?ap.h:Math.max(1,tp.h/ac),ah=Math.max(1,tl.docW||tl.viewportW||1),ax=Math.max(1,tl.docH||tl.viewportH||1),ab=e=>({left:e.x-tl.scrollX,top:e.y-tl.scrollY,width:e.w,height:e.h}),af=e=>({left:e.x/100*ah-tl.scrollX,top:e.y/100*ax-tl.scrollY,width:e.w/100*ah,height:e.h/100*ax}),av=(e,t)=>({left:e/100*ah-tl.scrollX,top:t/100*ax-tl.scrollY}),{canUndo:ay,canRedo:az}=(0,n.useMemo)(()=>{let e=t2.current.get(ad);return{canUndo:!!e&&e.pos>0,canRedo:!!e&&e.pos<e.stack.length-1}},[t5,ad]);(0,n.useEffect)(()=>{if(document.getElementById("dz-style"))return;let e=document.createElement("style");e.id="dz-style",e.textContent=G,document.head.appendChild(e)},[]),(0,n.useEffect)(()=>{try{"0"===localStorage.getItem("bx.dzChat")&&eb(!1),"0"===localStorage.getItem("bx.dzRail")&&ev(!1)}catch{}},[]),(0,n.useEffect)(()=>{try{localStorage.setItem("bx.dzChat",ex?"1":"0")}catch{}},[ex]),(0,n.useEffect)(()=>{try{localStorage.setItem("bx.dzRail",ef?"1":"0")}catch{}},[ef]),(0,n.useEffect)(()=>{let e=!1,t=e=>e.length>250?e.slice(-250):e;function a(){if(e||document.hidden||ta.current)return;let a=new EventSource(`/api/stream?channel=design&evCursor=${te.current}&msgCursor=${tt.current}`);ta.current=a,a.addEventListener("ev",e=>{let a=JSON.parse(e.data);a.seq>te.current&&(te.current=a.seq),e4(e=>e.some(e=>e.id===a.id)?e:t([...e,a]))}),a.addEventListener("msg",e=>{let a=JSON.parse(e.data),r=a.createdAt?new Date(a.createdAt).getTime():0;if(r>tt.current&&(tt.current=r),e5(e=>e.some(e=>e.id===a.id)?e:t([...e,a])),e4(e=>e.filter(e=>e.runId!==a.id||"text"!==e.kind)),"agent"===a.fromKind){e9(!1),tV(e=>e+1),ed.refresh();let e=t9.current;e&&setTimeout(()=>{tQ.current||(t2.current.delete(e),t6(e=>e+1),g(e).then(e=>{e.ok&&null!=e.html&&(eQ(e.html),e1(""))}))},300)}})}function r(){ta.current&&(ta.current.close(),ta.current=null)}(async function(){let[t,a]=await Promise.all([(0,c.V)("design"),(0,p.k)("design",0)]);e||(e5(t),e4(a),te.current=a.reduce((e,t)=>Math.max(e,t.seq),0),tt.current=t.reduce((e,t)=>Math.max(e,t.createdAt?new Date(t.createdAt).getTime():0),0))})().catch(()=>{}).finally(()=>{!e&&(e3(!1),document.hidden||a())});let n=()=>{document.hidden?r():a()};return document.addEventListener("visibilitychange",n),()=>{e=!0,document.removeEventListener("visibilitychange",n),r()}},[]),(0,n.useEffect)(()=>{if(aM(),eK.current){eK.current=!1;return}let e=setTimeout(()=>{m(eM)},500);return eg(!0),ao&&(aa.current&&clearTimeout(aa.current),aa.current=setTimeout(()=>{aa.current=null,function(){if(!ar.current||an.current)return;let e=ae.current;e9(!0),h(`I changed the design directly on the canvas via the Styles panel — the canvas is the source of truth now. RECONCILE the source to match it; do NOT ask, just do it: write the current tokens into design-mock/styles/global.css (:root) — accent ${e.accent}, secondary ${e.secondary}, surface ${e.surface}, body font ${e.font}, heading font ${e.headingFont}, radius ${e.radius}px, theme ${e.theme} — and update design-mock/design-system.md (palette / typography / tokens) plus any affected component docs to reflect it, keeping every screen VISUALLY IDENTICAL. Then briefly summarize what you synced.`).then(e=>{e.ok||e9(!1)}),aW("Grace is syncing your change into the source CSS + docs…")}()},9e3)),()=>clearTimeout(e)},[eM]),(0,n.useEffect)(()=>{if(!ad)return void eQ(null);if(tQ.current&&ad===t0.current)return;tQ.current&&(tQ.current=!1,t0.current="",tJ("idle")),tc(e=>({...e,scrollX:0,scrollY:0}));let e=!0;return e1(""),g(ad).then(t=>{e&&(t.ok&&null!=t.html?eQ(t.html):(eQ(null),e1(t.error||el("design.toast.screenLoadFail"))))}),()=>{e=!1}},[as.join("|"),ad]),(0,n.useEffect)(()=>{if(tQ.current)return;let e=new Set(e2.map(e=>e.id)),t=e6.filter(t=>{if("create"!==t.kind&&"edit"!==t.kind||e.has(t.runId))return!1;let a=Q(t.target||"");return null!=a&&/^design-mock\/screens\/[^/]+\.html?$/i.test(a)});if(!t.length)return;let a=t[t.length-1];if(a.id===t3.current)return;t3.current=a.id;let r=Q(a.target||"");tn(e=>e.includes(r)?e:[...e,r]),eq(r),t2.current.delete(r),t6(e=>e+1),setTimeout(()=>{g(r).then(e=>{e.ok&&null!=e.html&&(eQ(e.html),e1(""))})},550)},[e6,e2]),(0,n.useEffect)(()=>{let e=new Set(e2.map(e=>e.id));e6.some(t=>!e.has(t.runId))&&e9(!1)},[e6,e2]),(0,n.useEffect)(()=>{let e=!0;return Promise.all([x().catch(()=>({comments:[]})),b().catch(()=>({versions:[]})),f().catch(()=>({docs:[]}))]).then(([t,a,r])=>{e&&(tP(t.comments||[]),tL(a.versions||[]),tX(r.docs||[]))}),()=>{e=!1}},[tK]);let aw=async()=>{try{let e=await (0,L.p)("design");if(e.used>=e.max&&!tF){tU(!0);try{await (0,O.L)("design"),e=await (0,L.p)("design")}finally{tU(!1)}}tH(e)}catch{}};async function ak(){if(!tF){tU(!0);try{await (0,O.L)("design"),await aw()}finally{tU(!1)}}}function aj(e){tG(e),t_(""),v(e).then(e=>{e.ok&&null!=e.body?t_(e.body):t_(el("design.docs.readErr"))})}(0,n.useEffect)(()=>{ex&&aw()},[ex,e2.length]),(0,n.useEffect)(()=>{"docs"===em&&tB.length&&(tY&&tB.some(e=>e.path===tY)||aj(tB[0].path))},[em,tB]);let aN=(0,n.useRef)(!1);(0,n.useEffect)(()=>{!t.gatePending||t.gateScaffolded||aN.current||e7||(aN.current=!0,e9(!0),y().then(e=>{e.ok||(e9(!1),aN.current=!1)}))},[t.gatePending,t.gateScaffolded]),(0,n.useEffect)(()=>{function e(e){var t,a,r;let n=e.data;if(n&&n.__cstla&&(!t4.current||e.source===t4.current.contentWindow))if("canvas:viewport"===n.type){let e=n.payload;tc({scrollX:Math.max(0,e.scrollX||0),scrollY:Math.max(0,e.scrollY||0),viewportW:Math.max(1,e.viewportW||1),viewportH:Math.max(1,e.viewportH||1),docW:Math.max(1,e.docW||e.viewportW||1),docH:Math.max(1,e.docH||e.viewportH||1)})}else if("canvas:ready"===n.type){aE(),aM();let e=!!n.payload?.interactive;tb.current=e,tx(e)}else if("canvas:hover"===n.type)ti(n.payload);else if("canvas:guides"===n.type)td(n.payload);else if("canvas:tree"===n.type)tm(n.payload.items);else if("canvas:nav"===n.type){let e,r,s,i=(t=String(n.payload?.href||""),a=at.current,r=((e=t.split("#")[0].split("?")[0].replace(/\/+$/,"")).split("/").pop()||e).replace(/\.html?$/i,"").toLowerCase(),(s=a.find(e=>(e.split("/").pop()||e).replace(/\.html?$/i,"").toLowerCase()===r))||""!==r&&"index"!==r&&"home"!==r||(s=a.find(e=>/(^|\/)(index|home)\.html?$/i.test(e))||a[0]),s||null);i&&(eq(i),tv(null),tz([]),tj(!1))}else if("canvas:select"===n.type){let e={...n.payload,pageId:t9.current};tv(e),tz([e]),tj("select"===t7.current||"edit"===t7.current)}else if("canvas:selectToggle"===n.type){let e={...n.payload,pageId:t9.current},t=tw.current,a=t.findIndex(t=>t.cstlaId===e.cstlaId),r=a>=0?t.filter((e,t)=>t!==a):[...t,e];tz(r),tv(r.length?r[r.length-1]:null),tj(!1)}else if("canvas:reselect"===n.type){let e={...n.payload,pageId:t9.current};tv(e),tz(t=>t.length?t.map(t=>t.cstlaId===e.cstlaId?e:t):[e])}else if("canvas:reselectMany"===n.type){let e=(n.payload||[]).map(e=>({...e,pageId:t9.current}));tz(e),tv(e.length?e[e.length-1]:null)}else if("canvas:removed"===n.type)tv(null),tz([]),tj(!1);else if("canvas:dirty"===n.type)tQ.current=!0,t0.current=t9.current,tJ("saving"),t1.current&&(clearTimeout(t1.current),t1.current=null);else if("canvas:editEnd"===n.type)tQ.current=!1,tJ("idle");else if("canvas:commit"===n.type)tb.current||aR(n.payload.html);else if("canvas:history"===n.type)tb.current?(tJ("idle"),aT()):(function(e,t){let a=t0.current||t9.current;if(!a)return;let r=t2.current.get(a);r||(r={stack:[],labels:[],pos:-1},t2.current.set(a,r)),r.pos>=0&&r.stack[r.pos]===e||(r.stack=r.stack.slice(0,r.pos+1),r.labels=r.labels.slice(0,r.pos+1),r.stack.push(e),r.labels.push(t||el("design.history.edited")),r.stack.length>60&&(r.stack.shift(),r.labels.shift()),r.pos=r.stack.length-1,t6(e=>e+1))}(n.payload.html,n.payload.label),aR(n.payload.html),eg(!0));else if("canvas:baseline"===n.type){let e;tb.current||(r=n.payload.html,!(e=t9.current)||t2.current.has(e)||(t2.current.set(e,{stack:[r],labels:[el("design.history.original")],pos:0}),t6(e=>e+1)))}else if("canvas:comment"===n.type)tM(n.payload);else if("canvas:markupDraw"===n.type)tI(n.payload);else if("canvas:markup"===n.type){let e=n.payload;tI(e),tM({xpPct:e.xPct,ypPct:e.yPct,markup:{x:e.xPct,y:e.yPct,w:e.wPct,h:e.hPct}})}else"canvas:edit"===n.type&&aO(n.payload.oldText,n.payload.newText)}return window.addEventListener("message",e),()=>window.removeEventListener("message",e)},[]),(0,n.useEffect)(()=>{aE(),td(null),"preview"===eI&&(ti(null),tj(!1))},[eI,ad]),(0,n.useEffect)(()=>{ti(null),td(null)},[eS,ad]),(0,n.useEffect)(()=>{let e=t8.current;if(!e)return;let t=()=>tu({w:Math.max(1,e.clientWidth),h:Math.max(1,e.clientHeight)});t();let a=new ResizeObserver(t);return a.observe(e),()=>a.disconnect()},[al]),(0,n.useEffect)(()=>{"layers"===em&&function(){try{t4.current?.contentWindow?.postMessage({__cstlaHost:1,type:"canvas:requestTree"},"*")}catch{}}()},[em,ad,tK]),(0,n.useEffect)(()=>{let e=e=>{let t=document.activeElement;t&&("INPUT"===t.tagName||"TEXTAREA"===t.tagName||t.isContentEditable)||((e.ctrlKey||e.metaKey)&&("z"===e.key||"Z"===e.key)?(e.preventDefault(),e.shiftKey?aA():aP()):(e.ctrlKey||e.metaKey)&&("y"===e.key||"Y"===e.key)?(e.preventDefault(),aA()):"Escape"===e.key&&(tz([]),tv(null),tj(!1)))};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[]),(0,n.useEffect)(()=>{tw.current=ty},[ty]);let aS=e=>eT(t=>({...t,...e}));function aC(e,t,a=""){let n=String(eM[t]??"");return(0,r.jsxs)("div",{className:"dz-trow",children:[(0,r.jsx)("label",{children:e}),(0,r.jsxs)("div",{className:"dz-colorrow",children:[(0,r.jsx)("input",{type:"color",value:n||a||"#888888",onChange:e=>aS({[t]:e.target.value})}),(0,r.jsx)("input",{type:"text",value:n,placeholder:a||el("design.styles.auto"),spellCheck:!1,onChange:e=>aS({[t]:e.target.value})})]})]},String(t))}function aI(e,t,a,n,s,i=""){let o=Number(eM[t]??0);return(0,r.jsxs)("div",{className:"dz-trow",children:[(0,r.jsxs)("label",{children:[e,(0,r.jsxs)("span",{className:"v",children:[o,i]})]}),(0,r.jsx)("input",{type:"range",min:a,max:n,step:s,value:o,onChange:e=>aS({[t]:Number(e.target.value)})})]},String(t))}function aE(){try{t4.current?.contentWindow?.postMessage({__cstlaHost:1,type:"canvas:setMode",mode:t7.current},"*")}catch{}}function aM(){let e=ae.current;try{let t,a;t4.current?.contentWindow?.postMessage({__cstlaHost:1,type:"canvas:applyTokens",tokens:{accent:e.accent,accentFg:e.accentFg||(t=e.accent.replace("#",""),a=parseInt(3===t.length?t.split("").map(e=>e+e).join(""):t,16),(.299*(a>>16&255)+.587*(a>>8&255)+.114*(255&a))/255>.6?"#15171c":"#ffffff"),secondary:e.secondary,surface:e.surface,success:e.success,warning:e.warning,danger:e.danger,font:e.font,headingFont:e.headingFont,fontWeight:e.fontWeight,lineHeight:e.lineHeight,letterSpacing:e.letterSpacing,radius:e.radius,borderWidth:e.borderWidth,borderColor:e.borderColor,shadow:e.shadow,space:e.density,containerWidth:e.containerWidth,motionMs:e.motionMs,ease:e.ease,fontScale:e.fontScale,theme:e.theme}},"*")}catch{}}function aT(){t1.current&&clearTimeout(t1.current),t1.current=setTimeout(()=>{tQ.current=!1,t0.current="",tJ("idle"),t1.current=null},1400)}function aR(e){let t=t0.current||t9.current;t&&z(t,e).then(e=>{e.ok?(tJ("saved"),tV(e=>e+1)):(tJ("idle"),aW(e.error||el("design.toast.couldNotSaveEdit"))),aT()})}function aD(e,t){let a=t.stack[t.pos];tv(null),tj(!1),tQ.current=!0,t0.current=e,tJ("saving"),t1.current&&(clearTimeout(t1.current),t1.current=null);try{t4.current?.contentWindow?.postMessage({__cstlaHost:1,type:"canvas:setBody",html:a},"*")}catch{}z(e,a).then(()=>{tJ("saved"),tV(e=>e+1),aT()}),t6(e=>e+1)}function aP(){let e=t9.current,t=t2.current.get(e);t&&!(t.pos<=0)&&(t.pos--,aD(e,t))}function aA(){let e=t9.current,t=t2.current.get(e);t&&!(t.pos>=t.stack.length-1)&&(t.pos++,aD(e,t))}async function aL(){let e=t9.current;if(!e||!al)return;eA(!0);let t=await w(e);eA(!1),t.ok?(aW(el("design.toast.savedCheckpoint",{label:t.label??""})),tV(e=>e+1)):aW(t.error||el("design.toast.couldNotSaveCheckpoint"))}async function aO(e,t){let a=t9.current;if(a&&e!==t)if((await k(a,e,t)).ok){let e=await g(a);e.ok&&null!=e.html&&eQ(e.html),aW(el("design.toast.editApplied"))}else aW(el("design.toast.sendingEdit")),e9(!0),h(`On screen ${a}, change the text "${e}" to "${t}".`)}function aW(e){e$(e),setTimeout(()=>e$(t=>t===e?"":t),2400)}async function a$(e){if(!e)return;let t=Array.from(e).filter(e=>e instanceof File);if(!t.length)return;eZ("");let a=t.slice(0,Math.max(0,6-eH.length));if(!a.length)return void eZ(el("design.toast.upTo6"));let r=new FormData;for(let e of a)r.append("files",e);eY(!0);try{let e=await fetch("/api/upload",{method:"POST",body:r}),t=await e.json();if(!e.ok||!t.ok)return void eZ(t.error||el("design.toast.uploadFailed"));eF(e=>[...e,...t.attachments].slice(0,6))}catch{eZ(el("design.toast.uploadFailed"))}finally{eY(!1),e_.current&&(e_.current.value="")}}function aH(e){let t=(e??eR).trim();if(!t&&!eH.length&&!tN||e7)return;e9(!0);let a=eH.slice();eD(""),eF([]),eZ(""),tS(null),h(t||(tN?"Adjust this element.":"Use the attached image(s) as the visual reference."),a,tN??void 0).then(e=>{e.ok||(aW(e.error||el("design.toast.couldNotStart")),e9(!1))})}async function aF(){eA(!0);let e=await j();(eA(!1),e.ok)?(ep("approved"),aW(el("design.toast.designApproved")),ed.refresh()):aW(e.error||el("design.toast.approveFailed"))}async function aU(){eA(!0);let e=await N();(eA(!1),e.ok)?(ep("approved"),eg(!1),e9(!0),eh("docs"),aW(el("design.toast.sentToExec"))):aW(e.error||el("design.toast.couldNotSendExec"))}async function aB(){eA(!0);let e=await S();(eA(!1),e.ok)?(e9(!0),eh("docs"),aW("Resuming handoff — Grace is finishing the documentation, then Ada plans it.")):aW(e.error||"Couldn't resume the handoff.")}async function aX(){eA(!0);let e=await C();if(eA(!1),!e.ok)return void aW(e.error||el("design.toast.buildFailed"));let t=e.built.reduce((e,t)=>e+t.before,0),a=e.built.reduce((e,t)=>e+t.after,0),r=t?Math.round((1-a/t)*100):0,n=e.built.filter(e=>e.obfuscated).length;aW(el("design.toast.built",{count:e.built.length,plural:1===e.built.length?"":"s",pct:r,obf:n?el("design.toast.builtObf",{n:n}):""})),ed.refresh()}async function aY(e=!1){if(!tE){tM(null),tR(""),tI(null);return}if(tE.markup){let t=tT.trim(),a=tE.markup;if(await I(t9.current,a,t),tM(null),tR(""),tI(null),tV(e=>e+1),eh("comments"),e){e9(!0);let e=ei(a);h(`On screen ${t9.current}, I marked a region for review (${e}).${t?` My note: "${t}"`:" Please review and refine it."} Update the screen accordingly.`)}return}if(!tT.trim()){tM(null),tR("");return}let t=tE.selection??tf,a=t?{...t,pageId:t9.current}:void 0;await E(t9.current,tE.xpPct,tE.ypPct,tT.trim(),a),tM(null),tR(""),tV(e=>e+1),eh("comments")}let aG=[...e2].sort((e,t)=>(e.createdAt?new Date(e.createdAt).getTime():0)-(t.createdAt?new Date(t.createdAt).getTime():0)).at(-1),aZ=e7||0!==e2.length&&aG?.fromKind!=="agent"?[]:function(e,t,a){let r=[],n=e=>(e??"").replace(/\s+/g," ").replace(/^[-•*\s]+/,"").replace(/[.:;,!?]+$/,"").trim(),s=(e,t)=>{let a=n(e);a.length>=2&&a.length<=42&&!r.some(e=>e.label.toLowerCase()===a.toLowerCase())&&r.push({label:a?a.charAt(0).toUpperCase()+a.slice(1):a,prompt:t})},i=[...e].reverse().find(e=>"agent"===e.fromKind&&e.text);if(i?.text)for(let e of i.text.matchAll(/\*\*(.+?)\*\*/g)){let t=n(e[1]);if(t.length<2||t.length>42||ee.test(t)||(t.match(/\s+/g)||[]).length>6||s(t,t),r.length>=4)break}for(let[e,n]of t.designMockFiles.some(e=>/\.html?$/i.test(e))?et:ea)if(s(a(e),n),r.length>=4)break;return r.slice(0,4)}(e2,t,el),a_=e?{id:e.id,handle:e.handle,name:e.name,role:"Frontend",color:e.color,image:e.image??null,adapter:"claude",status:"idle",health:null}:null,aK=a_?[a_]:[],aV={};for(let e of e6)(aV[e.runId]??=[]).push(e);let aq=new Set(e2.map(e=>e.id)),aJ=Object.entries(aV).filter(([e])=>!aq.has(e)),aQ=e7||aJ.length>0,a0=tD.filter(e=>e.pageKey===ad&&!en(e)),a1=tD.filter(e=>e.pageKey===ad&&en(e)),a2=[];a2.push(["layers",el("design.tab.layers")],["screens",el("design.tab.screens")],["docs",el("design.tab.docs")],["styles",el("design.tab.styles")],["history",el("design.tab.history")],["comments",`${el("design.tab.comments")}${a0.length?" "+a0.length:""}`],["versions",`${el("design.tab.versions")}${tA.length?" "+tA.length:""}`]);let a5=a2.some(([e])=>e===em)?em:"screens",a6=ts?ab(ts):null,a4=tf?ab(tf.boundingBox):null;return(0,r.jsxs)("div",{className:"dz-wrap",children:[ex?(0,r.jsxs)("div",{className:"dz-chat",children:[(0,r.jsxs)("div",{className:"dz-chat-head",children:[(0,r.jsx)(d.e,{name:e?.name||"Grace",color:e?.color||"#84aef5",image:e?.image,size:28}),(0,r.jsxs)("div",{children:[(0,r.jsxs)("div",{className:"dz-ch-t",children:[e?.name||"Grace"," \xb7 ",el("design.chat.role")]}),(0,r.jsx)("div",{className:"dz-ch-s",children:el("design.chat.subtitle")})]}),aQ&&(0,r.jsxs)("span",{className:"dz-live",children:[(0,r.jsx)("span",{className:"dot"})," ",el("design.chat.live")]}),(0,r.jsx)("button",{className:"dz-collapse-btn",title:el("design.chat.collapse"),onClick:()=>eb(!1),children:(0,r.jsx)(o.I,{name:"chevronLeft",size:15})})]}),t$&&(0,r.jsxs)("div",{className:"ctx-bar",children:[(0,r.jsx)(W.m,{stat:t$,onCompact:ak,compacting:tF}),(0,r.jsx)("span",{})]}),(0,r.jsx)(l.H8,{msgs:e2,typing:e7&&a_?[a_.handle]:[],agents:aK,byRun:aV,liveRuns:aJ,loading:e8,markdownAgent:!0,avatarSize:28,emptyHint:el("design.chat.emptyHint")}),(0,r.jsxs)("div",{className:"dz-composer"+(eU?" drag":""),onDragOver:e=>{e.preventDefault(),eB(!0)},onDragLeave:e=>{e.preventDefault(),eB(!1)},onDrop:e=>{e.preventDefault(),eB(!1),a$(e.dataTransfer.files)},children:[!ao&&aZ.length>0&&!tN&&(0,r.jsx)("div",{className:"dz-chips",children:aZ.map(e=>(0,r.jsx)("span",{className:"dz-chip",onClick:()=>aH(e.prompt),children:e.label},e.label))}),tN&&(0,r.jsxs)("div",{className:"dz-attach",children:[(0,r.jsx)("span",{className:"sw",style:{background:eM.accent}})," ",el("design.composer.elementLabel")," ",(0,r.jsx)("b",{style:{fontWeight:700},children:tN.componentName}),(0,r.jsx)("span",{className:"x",onClick:()=>tS(null),children:(0,r.jsx)(o.I,{name:"close",size:12})})]}),eG&&(0,r.jsx)("div",{className:"dz-uperr",children:eG}),eH.length>0&&(0,r.jsx)("div",{className:"dz-atts",children:eH.map((e,t)=>(0,r.jsxs)("span",{className:"dz-att",children:[e.type.startsWith("image/")&&(0,r.jsx)("img",{src:`/api/upload?path=${encodeURIComponent(e.path)}`,alt:""}),(0,r.jsx)("span",{className:"nm",children:e.name}),(0,r.jsx)("span",{className:"rm",title:el("design.composer.remove"),onClick:()=>eF(e=>e.filter((e,a)=>a!==t)),children:(0,r.jsx)(o.I,{name:"close",size:11})})]},e.path))}),(0,r.jsxs)("div",{className:"dz-input",children:[(0,r.jsx)("button",{className:"dz-clip",disabled:e7||eX,title:el("design.composer.attach"),onClick:()=>e_.current?.click(),children:(0,r.jsx)(o.I,{name:eX?"refresh":"add",size:15,className:eX?"sync-spin":""})}),(0,r.jsx)("input",{placeholder:tN?el("design.composer.changePlaceholder",{name:tN.componentName}):el("design.composer.placeholder"),value:eR,disabled:e7,onChange:e=>eD(e.target.value),onKeyDown:e=>{"Enter"===e.key&&aH()},onPaste:function(e){let t=Array.from(e.clipboardData?.items||[]).filter(e=>"file"===e.kind&&e.type.startsWith("image/")).map(e=>e.getAsFile()).filter(e=>!!e);t.length&&(e.preventDefault(),a$(t))}}),(0,r.jsx)("button",{className:"dz-send",disabled:e7||!eR.trim()&&!eH.length&&!tN,onClick:()=>aH(),children:(0,r.jsx)(o.I,{name:e7?"refresh":"send",size:15,className:e7?"sync-spin":""})})]}),(0,r.jsx)("input",{ref:e_,type:"file",accept:"image/*,.pdf",multiple:!0,style:{display:"none"},onChange:e=>a$(e.target.files)})]})]}):(0,r.jsxs)("div",{className:"dz-strip left",onClick:()=>eb(!0),title:el("design.chat.expand"),children:[(0,r.jsx)(o.I,{name:"chevronRight",size:16}),(0,r.jsx)(o.I,{name:"chat",size:16}),aQ&&(0,r.jsx)("span",{style:{width:7,height:7,borderRadius:"50%",background:"var(--accent)"}})]}),(0,r.jsxs)("div",{className:"dz-center",children:[t.handoffPending&&(0,r.jsxs)("div",{className:"dz-approve-banner",style:{background:"linear-gradient(90deg,rgba(224,164,78,.20),rgba(224,164,78,.03))"},children:[(0,r.jsx)("div",{className:"dz-ab-ic",style:{background:"rgba(224,164,78,.22)",color:"var(--accent)"},children:(0,r.jsx)(o.I,{name:aQ?"refresh":"warn",size:17,className:aQ?"sync-spin":""})}),(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"dz-ab-t",children:aQ?el("design.handoff.finishing"):el("design.handoff.interrupted")}),(0,r.jsx)("div",{className:"dz-ab-s",children:aQ?el("design.handoff.finishingSub"):el("design.handoff.interruptedSub")})]}),!aQ&&(0,r.jsx)("div",{className:"dz-ab-actions",children:(0,r.jsxs)("button",{className:"dz-mini-btn accent",disabled:eP,onClick:aB,children:[(0,r.jsx)(o.I,{name:eP?"refresh":"sync",size:13,className:eP?"sync-spin":""})," ",el("design.handoff.resume")]})})]}),t.handoffDone&&!t.handoffPending&&(0,r.jsxs)("div",{className:"dz-approve-banner",style:{background:eu?"linear-gradient(90deg,rgba(224,164,78,.22),rgba(224,164,78,.03))":"linear-gradient(90deg,rgba(74,165,114,.20),rgba(74,165,114,.03))"},children:[(0,r.jsx)("div",{className:"dz-ab-ic",style:{background:eu?"rgba(224,164,78,.22)":"rgba(74,165,114,.22)",color:eu?"var(--accent)":"#3fa971"},children:(0,r.jsx)(o.I,{name:eu?"edit":"goto",size:17})}),(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"dz-ab-t",children:eu?"Design updated \xb7 send it to Ada":"Handed off to execution \xb7 Ada is building"}),(0,r.jsx)("div",{className:"dz-ab-s",children:eu?"You edited the design after the last hand-off — send the update so Ada applies it on top (backend wiring preserved).":"This design is the real frontend. Keep refining it with Grace — re-send to push an update (engineers&apos; backend wiring is preserved)."})]}),(0,r.jsx)("div",{className:"dz-ab-actions",children:(0,r.jsxs)("button",{className:"dz-mini-btn accent"+(eu?" dz-pulse":""),disabled:eP,onClick:aU,children:[(0,r.jsx)(o.I,{name:eP?"refresh":eu?"goto":"sync",size:13,className:eP?"sync-spin":""})," ",eu?"Send update to execution":"Re-send update"]})})]}),ao&&!t.handoffPending&&!t.handoffDone&&(0,r.jsxs)("div",{className:"dz-approve-banner",children:[(0,r.jsx)("div",{className:"dz-ab-ic",children:(0,r.jsx)(o.I,{name:eu?"edit":"check",size:17})}),(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"dz-ab-t",children:eu?"Design updated \xb7 ready to send":el("design.banner.approvedTitle")}),(0,r.jsx)("div",{className:"dz-ab-s",children:eu?"You edited the approved design — send it to execution to push the update.":el("design.banner.approvedSub")})]}),(0,r.jsx)("div",{className:"dz-ab-actions",children:(0,r.jsxs)("button",{className:"dz-mini-btn accent"+(eu?" dz-pulse":""),disabled:eP,onClick:aU,children:[(0,r.jsx)(o.I,{name:eP?"refresh":"goto",size:13,className:eP?"sync-spin":""})," ",eu?"Send update to execution":el("design.banner.sendToExecution")]})})]}),!ao&&t.gatePending&&(0,r.jsxs)("div",{className:"dz-approve-banner",style:{background:"linear-gradient(90deg,rgba(99,102,241,.16),rgba(99,102,241,.02))"},children:[(0,r.jsx)("div",{className:"dz-ab-ic",style:{background:"rgba(99,102,241,.18)",color:"#6366f1"},children:(0,r.jsx)(o.I,{name:"bot",size:17})}),(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"dz-ab-t",children:el("design.banner.adaWaitingTitle")}),(0,r.jsxs)("div",{className:"dz-ab-s",children:[el("design.banner.adaWaitingPre")," ",(0,r.jsx)("b",{children:el("design.banner.adaWaitingAction")})," ",el("design.banner.adaWaitingPost")," ",aQ?el("design.banner.gridSettingUp"):el("design.banner.gridStart")]})]}),(0,r.jsx)("div",{className:"dz-ab-actions",children:(0,r.jsxs)("button",{className:"dz-mini-btn",disabled:e7,onClick:()=>{e9(!0),y().then(e=>{e.ok||e9(!1)})},children:[(0,r.jsx)(o.I,{name:e7?"refresh":"skill",size:13,className:e7?"sync-spin":""})," ",el("design.banner.setUpWithGrace")]})})]}),(0,r.jsxs)("div",{className:"dz-bar",children:[(0,r.jsx)("div",{className:"dz-modes",children:V.map(e=>(0,r.jsxs)("span",{className:"dz-mode "+(eI===e.id?"on":""),onClick:()=>eE(e.id),title:el("design.mode."+e.id),children:[(0,r.jsx)(o.I,{name:e.ic,size:13})," ",el("design.mode."+e.id)]},e.id))}),as.length>0&&(0,r.jsxs)("div",{className:"dz-seg",children:[(0,r.jsx)("button",{onClick:aP,disabled:!ay,title:el("design.toolbar.undo"),children:(0,r.jsx)(o.I,{name:"chevronLeft",size:13})}),(0,r.jsx)("button",{onClick:aA,disabled:!az,title:el("design.toolbar.redo"),children:(0,r.jsx)(o.I,{name:"chevronRight",size:13})}),(0,r.jsxs)("button",{onClick:function(){let e=t9.current,t=t2.current.get(e);t&&!(t.pos<=0)&&(t.pos=0,aD(e,t),aW(el("design.toast.reset")))},disabled:!ay,title:el("design.toolbar.resetTitle"),children:[(0,r.jsx)(o.I,{name:"repeat",size:13})," ",el("design.toolbar.reset")]}),(0,r.jsxs)("button",{onClick:aL,disabled:eP||!al,title:el("design.toolbar.saveTitle"),children:[(0,r.jsx)(o.I,{name:"check",size:13})," ",el("design.toolbar.save")]}),(0,r.jsxs)("button",{onClick:function(){let e=t9.current;e&&(e9(!0),h(`I manually edited the screen ${e} directly on the canvas — it now has inline-style overrides, transform:translate offsets and data-cstla-id/data-cstla-tx attributes added by the visual editor. Refactor it into CLEAN, token-driven, professional CSS per the CSS STANDARD: fold the inline styles into the <style> sheet under semantic BEM-ish classes, turn transform offsets into real layout (flex/grid/margins/gap), drop every data-cstla-* attribute, and keep the screen VISUALLY IDENTICAL. Then summarize what you cleaned up.`))},title:el("design.toolbar.cleanUpTitle"),children:[(0,r.jsx)(o.I,{name:"skill",size:13})," ",el("design.toolbar.cleanUp")]})]}),(0,r.jsx)("div",{className:"dz-spacer"}),(0,r.jsx)("div",{className:"dz-seg",children:[50,75,100].map(e=>(0,r.jsxs)("button",{className:eS===e?"on":"",onClick:()=>eC(e),title:el("design.toolbar.zoom",{pct:e}),children:[e,"%"]},e))}),(0,r.jsxs)("div",{className:"dz-seg",children:[(0,r.jsx)("button",{className:"desktop"===ey&&null==ew?"on":"",onClick:()=>{ez("desktop"),ek(null)},title:el("design.toolbar.desktop"),children:(0,r.jsx)(o.I,{name:"sidebarIcon",size:13})}),(0,r.jsx)("button",{className:"tablet"===ey&&null==ew?"on":"",onClick:()=>{ez("tablet"),ek(null)},title:el("design.toolbar.tabletTitle"),children:el("design.toolbar.tablet")}),(0,r.jsx)("button",{className:"mobile"===ey&&null==ew?"on":"",onClick:()=>{ez("mobile"),ek(null)},title:el("design.toolbar.mobileTitle"),children:el("design.toolbar.mobile")}),(0,r.jsx)("input",{className:"dz-bpw",type:"number",min:320,max:1920,placeholder:"px",value:ew??"",title:el("design.toolbar.customWidth"),onChange:e=>{let t=parseInt(e.target.value,10);ek(Number.isFinite(t)&&t>0?Math.max(320,Math.min(1920,t)):null)}})]}),(0,r.jsxs)("div",{className:"dz-seg",children:[(0,r.jsx)("button",{className:"dark"===eM.theme?"on":"",onClick:()=>eT(e=>({...e,theme:"dark"})),title:el("design.toolbar.dark"),children:(0,r.jsx)(o.I,{name:"moon",size:13})}),(0,r.jsx)("button",{className:"light"===eM.theme?"on":"",onClick:()=>eT(e=>({...e,theme:"light"})),title:el("design.toolbar.light"),children:(0,r.jsx)(o.I,{name:"sun",size:13})})]}),(0,r.jsxs)("div",{className:"dz-seg",title:el("design.mode2.tip"),children:[(0,r.jsxs)("button",{className:ej?"":"on",onClick:()=>eN(!1),children:[(0,r.jsx)(o.I,{name:"grid",size:13})," ",el("design.mode2.design")]}),(0,r.jsxs)("button",{className:ej?"on":"",onClick:()=>eN(!0),children:[(0,r.jsx)(o.I,{name:"play",size:13})," ",el("design.mode2.live")]})]}),th?(0,r.jsxs)("span",{className:"dz-save preview",title:el("design.toolbar.previewOnlyTitle"),children:[(0,r.jsx)(o.I,{name:"play",size:12})," ",el("design.toolbar.previewOnly")]}):"idle"!==tq&&(0,r.jsxs)("span",{className:"dz-save "+tq,title:"saving"===tq?el("design.toolbar.savingTitle"):el("design.toolbar.savedTitle"),children:[(0,r.jsx)(o.I,{name:"saving"===tq?"refresh":"check",size:12,className:"saving"===tq?"sync-spin":""})," ","saving"===tq?el("design.toolbar.saving"):el("design.toolbar.saved")]}),(0,r.jsxs)("button",{className:"dz-mini-btn",onClick:()=>eO(!0),children:[(0,r.jsx)(o.I,{name:"arrowDown",size:13})," ",el("design.toolbar.export")]}),(0,r.jsxs)("button",{className:"dz-mini-btn accent",disabled:eP,onClick:aF,title:ao?"Re-approve the current design as the official reference":void 0,children:[(0,r.jsx)(o.I,{name:"check",size:13})," ",ao?"Approve changes":el("design.toolbar.approve")]})]}),as.length>0&&(0,r.jsxs)("div",{className:"dz-pagestrip",children:[(0,r.jsx)("div",{className:"dz-ptabs",children:as.slice(0,8).map(e=>(0,r.jsxs)("span",{className:"dz-ptab "+(ad===e?"active":""),onClick:()=>{eq(e),tv(null),tj(!1)},children:[(0,r.jsx)(o.I,{name:"grid",size:13})," ",J(e)]},e))}),(0,r.jsxs)("span",{className:"dz-hint",children:[(0,r.jsx)(o.I,{name:V.find(e=>e.id===eI).ic,size:12})," ","edit"===eI?"Click to select \xb7 double-click to edit text (the design stays faithful to the mock — no move/resize/add)":"select"===eI?"Click to select an element \xb7 switch to Edit to edit its text":el("design.hint."+eI)]})]}),(0,r.jsxs)("div",{className:"dz-canvas"+(al?` has-screen ${au?"framed":"desktop"}`:""),ref:t8,children:[ej&&(0,r.jsx)(Y,{onAskGrace:e=>aH(e),asking:e7}),al?(0,r.jsxs)("div",{className:"dz-artwrap",style:{width:ag*ac,height:am*ac},children:[(0,r.jsxs)("div",{className:"dz-art","data-viewport":ey,style:{width:ag,height:am,transform:`scale(${ac})`,transformOrigin:"top left"},children:[(0,r.jsx)("iframe",{ref:t4,title:el("design.canvas.previewTitle"),sandbox:"allow-scripts",srcDoc:($=eJ??"",H=`<script data-cstla-instrument>${A}</script>`,/<\/body>/i.test($)?$.replace(/<\/body>/i,`${H}</body>`):$+H),onLoad:()=>{aE(),aM()},style:{width:"100%",height:"100%",border:"none",background:"#fff",display:"block"}}),(0,r.jsxs)("div",{className:"dz-ovl",children:[to&&"edit"===eI&&(0,r.jsxs)(r.Fragment,{children:[to.v.map((e,t)=>(0,r.jsx)("div",{className:"dz-guide v",style:{left:e-tl.scrollX}},"gv"+t)),to.h.map((e,t)=>(0,r.jsx)("div",{className:"dz-guide h",style:{top:e-tl.scrollY}},"gh"+t))]}),ts&&a6&&!tf&&"preview"!==eI&&"markup"!==eI&&"comments"!==eI&&(0,r.jsx)("div",{className:"dz-hl",style:a6,children:(0,r.jsx)("span",{className:"tag",children:ts.label})}),"preview"!==eI&&ty.map(e=>(0,r.jsx)("div",{className:"dz-selbox",style:ab(e.boundingBox)},e.cstlaId)),a1.map(e=>(0,r.jsx)("div",{className:"dz-mk",style:af(es(e))},e.id)),tC&&(0,r.jsx)("div",{className:"dz-mk",style:af({x:tC.xPct,y:tC.yPct,w:tC.wPct,h:tC.hPct})}),a0.map((e,t)=>(0,r.jsx)("div",{className:"dz-pin",style:av(e.xp,e.yp),onClick:e=>{e.stopPropagation(),eh("comments")},children:t+1},e.id))]})]}),tk&&tf&&a4&&"preview"!==eI&&ty.length<=1&&(0,r.jsxs)("div",{className:"dz-ctx",style:{left:Math.max(6,a4.left*ac),top:Math.max(4,a4.top*ac-40)},onClick:e=>e.stopPropagation(),children:[(0,r.jsxs)("button",{className:"ask",onClick:()=>{tS(tf),tj(!1),aW(el("design.toast.elementAttached"))},children:[(0,r.jsx)(o.I,{name:"bot",size:13})," ",el("design.ctx.askFront")]}),(0,r.jsx)("button",{onClick:()=>tj(!1),children:(0,r.jsx)(o.I,{name:"close",size:13})})]}),tE&&(0,r.jsxs)("div",{className:"dz-cpop",style:{left:Math.max(6,Math.min((F=av(tE.xpPct,tE.ypPct)).left*ac,Math.max(6,ag*ac-226))),top:Math.max(6,Math.min(F.top*ac,Math.max(6,am*ac-120)))},onClick:e=>e.stopPropagation(),children:[(0,r.jsx)("textarea",{rows:3,autoFocus:!0,placeholder:tE.markup?el("design.cmt.markupPlaceholder"):el("design.cmt.pointPlaceholder"),value:tT,onChange:e=>tR(e.target.value),onKeyDown:e=>{"Enter"===e.key&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),aY())}}),tE.markup?(0,r.jsxs)("div",{className:"row",style:{flexDirection:"column",alignItems:"stretch"},children:[(0,r.jsxs)("button",{className:"dz-mini-btn accent",style:{justifyContent:"center"},onClick:()=>aY(!0),children:[(0,r.jsx)(o.I,{name:"bot",size:12})," ",el("design.cmt.markAskGrace")]}),(0,r.jsx)("button",{className:"dz-mini-btn",style:{justifyContent:"center"},onClick:()=>aY(!1),children:el("design.cmt.markRegion")}),(0,r.jsx)("button",{className:"dz-mini-btn",style:{justifyContent:"center"},onClick:()=>{tM(null),tR(""),tI(null)},children:el("design.cmt.cancel")})]}):(0,r.jsxs)("div",{className:"row",children:[(0,r.jsx)("button",{className:"dz-mini-btn",onClick:()=>{tM(null),tR(""),tI(null)},children:el("design.cmt.cancel")}),(0,r.jsx)("button",{className:"dz-mini-btn accent",onClick:()=>aY(),children:el("design.cmt.comment")})]})]}),aQ&&(0,r.jsxs)("div",{className:"dz-build-bar",children:[(0,r.jsx)(o.I,{name:"skill",size:13})," ",el("design.canvas.working")," ",(0,r.jsx)("span",{className:"sh"})]})]}):(0,r.jsx)("div",{className:"dz-emptywrap",children:e0?(0,r.jsxs)("div",{className:"dz-empty",children:[(0,r.jsx)("div",{className:"ic",children:(0,r.jsx)(o.I,{name:"error",size:22})}),(0,r.jsx)("div",{className:"t",children:el("design.empty.loadErrTitle")}),(0,r.jsx)("div",{className:"s",children:e0})]}):0===as.length&&ai.length>0?(0,r.jsxs)("div",{className:"dz-empty",children:[(0,r.jsx)("div",{className:"ic",children:(0,r.jsx)(o.I,{name:"doc",size:22})}),(0,r.jsx)("div",{className:"t",children:el("design.empty.componentsTitle",{count:ai.length,plural:ai.length>1?"s":""})}),(0,r.jsx)("div",{className:"s",children:el("design.empty.componentsBody")})]}):(0,r.jsxs)("div",{className:"dz-empty",children:[(0,r.jsx)("div",{className:"ic",children:(0,r.jsx)(o.I,{name:"grid",size:22})}),(0,r.jsx)("div",{className:"t",children:el("design.empty.noPrototypeTitle")}),(0,r.jsxs)("div",{className:"s",children:[el("design.empty.noPrototypePre")," ",(0,r.jsx)("span",{className:"mono",children:"design-mock/"}),". ",el("design.empty.noPrototypePost")]})]})})]})]}),ef?(0,r.jsxs)("div",{className:"dz-rail",children:[(0,r.jsxs)("div",{className:"dz-rail-tabs",children:[a2.map(([e,t])=>(0,r.jsx)("div",{className:"dz-rt "+(a5===e?"active":""),onClick:()=>eh(e),children:t},e)),(0,r.jsx)("button",{className:"dz-collapse-btn",title:el("design.rail.collapse"),onClick:()=>ev(!1),children:(0,r.jsx)(o.I,{name:"chevronRight",size:15})})]}),(0,r.jsxs)("div",{className:"dz-rail-body",children:["layers"===a5&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("div",{className:"dz-sec",children:el("design.layers.title")}),al?0===tg.length?(0,r.jsx)("div",{style:{fontSize:11.5,color:"var(--text-dim)",lineHeight:1.5},children:el("design.layers.reading")}):tg.map(e=>(0,r.jsxs)("div",{className:"dz-layer"+(tf?.nodePath===e.path?" active":""),style:{paddingLeft:8+11*e.depth},onClick:()=>(function(e){try{t4.current?.contentWindow?.postMessage({__cstlaHost:1,type:"canvas:selectByPath",path:e},"*")}catch{}})(e.path),title:`<${e.tag}>`,children:[(0,r.jsx)(o.I,{name:e.kids>0?"grid":"dot",size:10}),(0,r.jsx)("span",{className:"lt",children:e.label}),(0,r.jsxs)("span",{className:"lg",children:[e.tag,e.kids>0?` \xb7 ${e.kids}`:""]})]},e.path)):(0,r.jsx)("div",{style:{fontSize:11.5,color:"var(--text-dim)",lineHeight:1.5},children:el("design.layers.openScreen")})]}),"screens"===a5&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("div",{className:"dz-sec",children:el("design.screens.title")}),0===as.length?(0,r.jsx)("div",{style:{fontSize:11.5,color:"var(--text-dim)",lineHeight:1.5},children:el("design.screens.empty")}):as.map(e=>(0,r.jsxs)("div",{className:"dz-row "+(ad===e?"active":""),onClick:()=>{eq(e),tv(null),tj(!1)},children:[(0,r.jsx)("div",{className:"dz-r-ic",children:(0,r.jsx)(o.I,{name:"grid",size:14})}),(0,r.jsxs)("div",{style:{minWidth:0},children:[(0,r.jsx)("div",{className:"dz-r-t",children:J(e)}),(0,r.jsx)("div",{className:"dz-r-s",children:e.replace(/^design-mock\//,"")})]}),ad===e&&(0,r.jsx)("span",{className:"dz-r-meta",children:el("design.screens.active")})]},e)),(0,r.jsxs)("div",{className:"dz-addrow",onClick:()=>aH("Build a new screen for the prototype."),children:[(0,r.jsx)(o.I,{name:"add",size:13})," ",el("design.screens.newScreen")]}),ai.length>0&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("div",{className:"dz-sec",style:{marginTop:16},children:el("design.screens.components",{count:ai.length})}),(0,r.jsx)("div",{className:"dz-comp-grid",children:ai.slice(0,8).map((e,t)=>(0,r.jsxs)("div",{className:"dz-comp",children:[(0,r.jsx)("div",{style:{height:30,borderRadius:7,background:t%2?q(eM.accent,.16):"var(--bg-app)",border:"1px solid var(--border)",display:"grid",placeItems:"center",color:"var(--accent)",fontSize:12},children:"◧"}),(0,r.jsx)("div",{className:"nm",children:(e.split("/").pop()||e).replace(/\.[a-z]+$/i,"")})]},e))})]})]}),"docs"===a5&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("div",{className:"dz-sec",children:el("design.docs.title")}),0===tB.length?(0,r.jsx)("div",{style:{fontSize:11.5,color:"var(--text-dim)",lineHeight:1.5},children:el("design.docs.empty")}):(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("div",{className:"dz-docnav",children:tB.map(e=>(0,r.jsxs)("div",{className:"dz-doctab "+(tY===e.path?"active":""),onClick:()=>aj(e.path),title:e.label,children:[(0,r.jsx)(o.I,{name:/APPROVED/i.test(e.path)?"check":"doc",size:12}),(0,r.jsx)("span",{children:e.label})]},e.path))}),(0,r.jsx)("div",{className:"dz-docbody md",children:tZ?(0,r.jsx)(D.oz,{remarkPlugins:[P.A],children:tZ}):(0,r.jsx)("div",{style:{fontSize:11.5,color:"var(--text-dim)"},children:el("design.docs.reading")})})]})]}),"styles"===a5&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("div",{className:"dz-sec",children:el("design.styles.palette")}),(0,r.jsx)("div",{className:"dz-swatches",children:Z.map(e=>(0,r.jsx)("span",{title:e.name,className:"dz-sw "+(eM.accent===e.c?"on":""),style:{background:e.c},onClick:()=>aS({accent:e.c,accentName:e.name})},e.name))}),aC(el("design.styles.accentCustom"),"accent"),aC(el("design.styles.secondary"),"secondary"),aC(el("design.styles.surface"),"surface"),(0,r.jsxs)("details",{className:"dz-adv",children:[(0,r.jsx)("summary",{children:el("design.styles.semanticColors")}),aC(el("design.styles.success"),"success","#10b981"),aC(el("design.styles.warning"),"warning","#f59e0b"),aC(el("design.styles.danger"),"danger","#ef4444"),aC(el("design.styles.accentText"),"accentFg")]}),(0,r.jsx)("div",{className:"dz-sec",style:{marginTop:18},children:el("design.styles.typography")}),(0,r.jsx)("div",{className:"dz-sub",children:el("design.styles.bodyFont")}),(0,r.jsx)("div",{className:"dz-opt",children:_.map(e=>(0,r.jsx)("span",{className:"dz-pill2 "+(eM.fontName===e.n?"on":""),onClick:()=>aS({font:e.s,fontName:e.n}),children:e.n},e.n))}),(0,r.jsx)("div",{className:"dz-sub",children:el("design.styles.headingFont")}),(0,r.jsx)("div",{className:"dz-opt",children:_.map(e=>(0,r.jsx)("span",{className:"dz-pill2 "+(eM.headingFontName===e.n?"on":""),onClick:()=>aS({headingFont:e.s,headingFontName:e.n}),children:e.n},e.n))}),aI(el("design.styles.weight"),"fontWeight",300,800,100),aI(el("design.styles.lineHeight"),"lineHeight",1,2,.05),aI(el("design.styles.letterSpacing"),"letterSpacing",-1,4,.1,"px"),(0,r.jsx)("div",{className:"dz-sub",children:el("design.styles.textSize")}),(0,r.jsx)("div",{className:"dz-opt",children:[[el("design.styles.sizeSmall"),.9],[el("design.styles.sizeDefault"),1],[el("design.styles.sizeLarge"),1.15]].map(([e,t])=>(0,r.jsx)("span",{className:"dz-pill2 "+(eM.fontScale===t?"on":""),onClick:()=>aS({fontScale:t}),children:e},e))}),(0,r.jsx)("div",{className:"dz-sec",style:{marginTop:18},children:el("design.styles.shapeDepth")}),(0,r.jsx)("div",{className:"dz-opt",children:K.map(e=>(0,r.jsx)("span",{className:"dz-pill2 "+(eM.radius===e.r?"on":""),onClick:()=>aS({radius:e.r}),children:el("design.styles.radius"+e.n)},e.n))}),aI(el("design.styles.radius"),"radius",0,32,1,"px"),aI(el("design.styles.borderWidth"),"borderWidth",0,4,1,"px"),aC(el("design.styles.borderColor"),"borderColor"),(0,r.jsx)("div",{className:"dz-sub",children:el("design.styles.shadow")}),(0,r.jsx)("div",{className:"dz-opt",children:["none","sm","md","lg"].map(e=>(0,r.jsx)("span",{className:"dz-pill2 "+(eM.shadow===e?"on":""),onClick:()=>aS({shadow:e}),children:"none"===e?el("design.styles.shadowNone"):e.toUpperCase()},e))}),(0,r.jsx)("div",{className:"dz-sec",style:{marginTop:18},children:el("design.styles.theme")}),(0,r.jsxs)("div",{className:"dz-opt",children:[(0,r.jsx)("span",{className:"dz-pill2 "+("dark"===eM.theme?"on":""),onClick:()=>aS({theme:"dark"}),children:el("design.styles.dark")}),(0,r.jsx)("span",{className:"dz-pill2 "+("light"===eM.theme?"on":""),onClick:()=>aS({theme:"light"}),children:el("design.styles.light")})]}),(0,r.jsx)("div",{className:"dz-sec",style:{marginTop:18},children:el("design.styles.spacingLayoutMotion")}),(0,r.jsx)("div",{className:"dz-opt",children:[[el("design.styles.densityCompact"),8],[el("design.styles.densityCozy"),12],[el("design.styles.densityComfy"),16]].map(([e,t])=>(0,r.jsx)("span",{className:"dz-pill2 "+(eM.density===t?"on":""),onClick:()=>aS({density:t}),children:e},e))}),aI(el("design.styles.density"),"density",4,28,1,"px"),aI(el("design.styles.containerWidth"),"containerWidth",880,1600,20,"px"),aI(el("design.styles.motionSpeed"),"motionMs",0,600,20,"ms"),(0,r.jsx)("div",{className:"dz-sub",children:el("design.styles.easing")}),(0,r.jsx)("div",{className:"dz-opt",children:[[el("design.styles.easeEase"),"ease"],[el("design.styles.easeInOut"),"ease-in-out"],[el("design.styles.easeLinear"),"linear"],[el("design.styles.easeSmooth"),"cubic-bezier(.4,0,.2,1)"]].map(([e,t])=>(0,r.jsx)("span",{className:"dz-pill2 "+(eM.ease===t?"on":""),onClick:()=>aS({ease:t}),children:e},e))}),(0,r.jsx)("div",{className:"dz-sec",style:{marginTop:18},children:el("design.styles.spacingScale")}),(0,r.jsx)("div",{style:{display:"flex",gap:5,alignItems:"flex-end"},children:[.5,1,1.5,2,3,4].map(e=>{let t=Math.round(eM.density*e);return(0,r.jsxs)("div",{style:{textAlign:"center"},children:[(0,r.jsx)("div",{style:{width:20,height:Math.max(3,t),background:q(eM.accent,.5),borderRadius:3}}),(0,r.jsx)("div",{style:{fontSize:9,color:"var(--text-faint)",marginTop:3},children:t})]},e)})}),(0,r.jsxs)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginTop:16,gap:8},children:[(0,r.jsx)("span",{style:{fontSize:10.5,color:"var(--text-faint)"},children:el("design.styles.restyleNote")}),(0,r.jsx)("button",{className:"dz-mini-btn",onClick:()=>aS(er),children:el("design.styles.reset")})]})]}),"comments"===a5&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("div",{className:"dz-sec",children:el("design.comments.title")}),0===a0.length&&(0,r.jsxs)("div",{style:{fontSize:11.5,color:"var(--text-dim)",lineHeight:1.5},children:[el("design.comments.emptyPre")," ",(0,r.jsx)("b",{children:el("design.comments.emptyTool")})," ",el("design.comments.emptyPost")]}),a0.map((e,t)=>(0,r.jsxs)("div",{className:"dz-cmt",children:[(0,r.jsxs)("div",{className:"h",children:[(0,r.jsx)("span",{className:"pin",children:t+1})," ",el("design.comments.comment")," ",(0,r.jsx)("span",{className:"x",onClick:()=>{M(e.id).then(()=>tV(e=>e+1))},children:(0,r.jsx)(o.I,{name:"trash",size:12})})]}),(0,r.jsx)("div",{className:"bd",children:e.body}),e.reply?(0,r.jsxs)("div",{className:"rep",children:[(0,r.jsx)(o.I,{name:"bot",size:12})," ",e.reply]}):(0,r.jsxs)("button",{className:"dz-mini-btn",onClick:()=>{e9(!0);let t=e.selection&&"object"==typeof e.selection&&e.selection.componentName?e.selection:void 0;h(`Apply this canvas comment on screen ${ad}${t?` (it is pinned on the ${t.componentName} element)`:""}: "${e.body}"`,void 0,t)},children:[(0,r.jsx)(o.I,{name:"bot",size:12})," ",el("design.comments.askGrace")]})]},e.id)),a1.length>0&&(0,r.jsx)("div",{className:"dz-sec",style:{marginTop:14},children:el("design.comments.markedRegions",{count:a1.length})}),a1.map((e,t)=>{let a=e.body&&"(region marked for review)"!==e.body?e.body:"";return(0,r.jsxs)("div",{className:"dz-cmt",children:[(0,r.jsxs)("div",{className:"h",children:[(0,r.jsxs)("span",{className:"pin",children:["M",t+1]})," ",el("design.comments.region")," ",(0,r.jsx)("span",{className:"x",onClick:()=>{M(e.id).then(()=>tV(e=>e+1))},children:(0,r.jsx)(o.I,{name:"trash",size:12})})]}),a&&(0,r.jsx)("div",{className:"bd",children:a}),e.reply?(0,r.jsxs)("div",{className:"rep",children:[(0,r.jsx)(o.I,{name:"bot",size:12})," ",e.reply]}):(0,r.jsxs)("button",{className:"dz-mini-btn",onClick:()=>{e9(!0);let t=ei(es(e));h(`On screen ${ad}, I marked a region for review (${t}).${a?` My note: "${a}"`:" Please review and refine it."} Update the screen accordingly.`)},children:[(0,r.jsx)(o.I,{name:"bot",size:12})," ",el("design.comments.askGrace")]})]},e.id)})]}),"history"===a5&&(U=t2.current.get(ad),B=U?.pos??-1,X=U?U.labels.map((e,t)=>({lab:e,i:t})):[],(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("div",{className:"dz-sec",children:U&&U.stack.length>1?el("design.history.pos",{pos:B+1,total:U.stack.length}):el("design.history.title")}),al?X.length<=1?(0,r.jsx)("div",{style:{fontSize:11.5,color:"var(--text-dim)",lineHeight:1.5},children:el("design.history.noEdits")}):(0,r.jsx)("div",{style:{display:"flex",flexDirection:"column",gap:2},children:X.slice().reverse().map(({lab:e,i:t})=>(0,r.jsxs)("div",{onClick:()=>{let e,a;return e=t9.current,void((a=t2.current.get(e))&&!(t<0)&&!(t>=a.stack.length)&&t!==a.pos&&(a.pos=t,aD(e,a)))},style:{display:"flex",alignItems:"center",gap:8,padding:"7px 9px",borderRadius:8,cursor:"pointer",fontSize:12,background:t===B?"rgba(224,164,78,.12)":"transparent",color:t===B?"var(--accent)":"var(--text-dim)",border:"1px solid "+(t===B?"var(--accent)":"transparent")},children:[(0,r.jsx)("span",{style:{fontVariantNumeric:"tabular-nums",opacity:.6,minWidth:16,textAlign:"right"},children:0===t?"•":t}),(0,r.jsx)("span",{style:{flex:1,fontWeight:t===B?700:500},children:e||el("design.history.edited")}),t===B&&(0,r.jsx)("span",{style:{fontSize:10,fontWeight:700},children:el("design.history.current")})]},t))}):(0,r.jsx)("div",{style:{fontSize:11.5,color:"var(--text-dim)"},children:el("design.history.openScreen")})]})),"versions"===a5&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("div",{className:"dz-sec",children:el("design.versions.title")}),0===tA.length?(0,r.jsx)("div",{style:{fontSize:11.5,color:"var(--text-dim)",lineHeight:1.5},children:el("design.versions.empty")}):tA.map(e=>(0,r.jsxs)("div",{className:"dz-vnode"+(tO===e.id?" active":""),onClick:()=>tW(tO===e.id?null:e.id),title:el("design.versions.revertHint"),children:[(0,r.jsxs)("div",{className:"vt",children:[e.label," ",(0,r.jsx)("span",{className:"dz-tag",children:el("design.versions.files",{count:e.files.length,plural:1===e.files.length?"":"s"})})]}),(0,r.jsx)("div",{className:"vs",children:e.note}),(0,r.jsx)("div",{className:"vtime",children:function(e,t){let a=Math.max(0,Math.round((new Date().getTime()-e)/1e3));if(a<60)return t("design.time.justNow");let r=Math.round(a/60);if(r<60)return t("design.time.minAgo",{n:r});let n=Math.round(r/60);return n<24?t("design.time.hAgo",{n:n}):t("design.time.dAgo",{n:Math.round(n/24)})}(e.createdAt,el)}),tO===e.id&&(0,r.jsxs)("div",{className:"dz-addrow",style:{marginTop:8,padding:"6px"},onClick:t=>{t.stopPropagation(),e.restorable?T(e.id).then(async t=>{if(!t.ok)return void aW(t.error||el("design.toast.restoreFailed"));let a=t9.current;tQ.current=!1,t0.current="",t2.current.delete(a),t6(e=>e+1);let r=await g(a);r.ok&&null!=r.html&&(eQ(r.html),tv(null)),aW(el("design.toast.restored",{label:e.label}))}):(e9(!0),R(e.label,e.note)),tW(null)},children:[(0,r.jsx)(o.I,{name:"refresh",size:12})," ",el("design.versions.revertTo",{label:e.label})]})]},e.id))]})]})]}):(0,r.jsxs)("div",{className:"dz-strip right",onClick:()=>ev(!0),title:el("design.rail.expand"),children:[(0,r.jsx)(o.I,{name:"chevronLeft",size:16}),(0,r.jsx)(o.I,{name:"sidebarIcon",size:16})]}),eL&&(0,r.jsx)("div",{className:"dz-modal-bg",onClick:()=>eO(!1),children:(0,r.jsxs)("div",{className:"dz-modal",onClick:e=>e.stopPropagation(),children:[(0,r.jsxs)("div",{className:"dz-modal-h",children:[(0,r.jsx)("div",{className:"ic",children:(0,r.jsx)(o.I,{name:"arrowDown",size:17})}),(0,r.jsxs)("div",{children:[(0,r.jsx)("div",{className:"t",children:el("design.export.title")}),(0,r.jsx)("div",{className:"s",children:el("design.export.sub")})]}),(0,r.jsx)("div",{className:"x",onClick:()=>eO(!1),children:(0,r.jsx)(o.I,{name:"close",size:16})})]}),(0,r.jsx)("div",{className:"dz-modal-b",children:[[el("design.export.row.screens"),String(as.length)],[el("design.export.row.comments"),String(tD.filter(e=>!en(e)).length)],[el("design.export.row.versions"),String(tA.length)],[el("design.export.row.tokens"),el("design.export.row.tokensVal")],[el("design.export.row.approvedMd"),""],[el("design.export.row.kbRag"),""],[el("design.export.row.adaNotified"),""],[el("design.export.row.planner"),""]].map(e=>(0,r.jsxs)("div",{className:"dz-dl",children:[(0,r.jsx)("span",{className:"ck",children:(0,r.jsx)(o.I,{name:"check",size:11})}),e[0],e[1]&&(0,r.jsx)("span",{className:"n",children:e[1]})]},e[0]))}),(0,r.jsxs)("div",{className:"dz-modal-f",children:[(0,r.jsx)("span",{className:"note",children:el("design.export.note")}),(0,r.jsx)("div",{className:"dz-spacer"}),(0,r.jsxs)("button",{className:"dz-mini-btn",disabled:eP,onClick:aX,children:[(0,r.jsx)(o.I,{name:"cpu",size:13})," ",el("design.export.buildProd")]}),(0,r.jsx)("button",{className:"dz-mini-btn",onClick:()=>eO(!1),children:el("design.export.close")}),(0,r.jsxs)("button",{className:"dz-mini-btn accent",disabled:eP||ao,onClick:()=>{eO(!1),aF()},children:[(0,r.jsx)(o.I,{name:"check",size:13})," ",el("design.export.approveDesign")]})]})]})}),eW&&(0,r.jsx)("div",{className:"dz-flash",children:eW})]})}function ed(e){return(0,r.jsx)(eo,{grace:e.grace,context:e.context,status:e.status,tokens:e.tokens})}},5052:(e,t,a)=>{Promise.resolve().then(a.t.bind(a,3283,23)),Promise.resolve().then(a.bind(a,4924)),Promise.resolve().then(a.bind(a,235)),Promise.resolve().then(a.bind(a,6588)),Promise.resolve().then(a.bind(a,4414)),Promise.resolve().then(a.bind(a,6556)),Promise.resolve().then(a.bind(a,4942)),Promise.resolve().then(a.bind(a,2444)),Promise.resolve().then(a.bind(a,5787))},5232:(e,t,a)=>{"use strict";a.d(t,{R:()=>n});var r=a(7814);let n=(0,r.createServerReference)("009513f8ddea5c0533a4b07002daa235220c6fcac6",r.callServer,void 0,r.findSourceMapURL,"startDevServerAction")},9130:(e,t,a)=>{"use strict";a.d(t,{j:()=>n});var r=a(7814);let n=(0,r.createServerReference)("00489557c06166ea2ca69911c0a571a148ac5bf6f3",r.callServer,void 0,r.findSourceMapURL,"devServerStatusAction")}},e=>{e.O(0,[9219,9690,3219,9950,8370,7268,6646,6834,7358],()=>e(e.s=5052)),_N_E=e.O()}]);