@nqlib/nqui 0.1.2 → 0.1.4

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 (630) hide show
  1. package/README.md +40 -2
  2. package/dist/abap-DV7Q1lGP.cjs +1 -0
  3. package/dist/abap-Y8Dl9g_6.js +6 -0
  4. package/dist/actionscript-3-DXOxkRa2.cjs +1 -0
  5. package/dist/actionscript-3-DZzbMeqX.js +6 -0
  6. package/dist/ada-D46EKCNf.cjs +1 -0
  7. package/dist/ada-vP6ak0IW.js +6 -0
  8. package/dist/andromeeda-BIpZ7gaU.js +4 -0
  9. package/dist/andromeeda-DVDxRwp5.cjs +1 -0
  10. package/dist/angular-html-DPB4Rf0C.js +32 -0
  11. package/dist/angular-html-KMf2QdtP.cjs +1 -0
  12. package/dist/angular-ts-BxIbo3R1.cjs +1 -0
  13. package/dist/angular-ts-CTOR2ofC.js +21 -0
  14. package/dist/apache-BUjz-sD2.js +6 -0
  15. package/dist/apache-DL1xuH1f.cjs +1 -0
  16. package/dist/apex-6AM9YZbQ.cjs +1 -0
  17. package/dist/apex-OyTfjCYK.js +6 -0
  18. package/dist/apl-CjNiDgad.js +16 -0
  19. package/dist/apl-Dj2G2M9w.cjs +1 -0
  20. package/dist/applescript-BPx7YFFu.js +6 -0
  21. package/dist/applescript-COilsSrZ.cjs +1 -0
  22. package/dist/ara-B6Lpq1YJ.cjs +1 -0
  23. package/dist/ara-Z2fSOxSw.js +6 -0
  24. package/dist/asciidoc-B-pCoB3G.js +6 -0
  25. package/dist/asciidoc-DcKqW72n.cjs +1 -0
  26. package/dist/asm-BTWLY5ym.js +6 -0
  27. package/dist/asm-DYMFy-sD.cjs +1 -0
  28. package/dist/astro-CFFExE8Q.js +18 -0
  29. package/dist/astro-DAOP_Xq6.cjs +1 -0
  30. package/dist/aurora-x-BwoVEUWZ.js +4 -0
  31. package/dist/aurora-x-C5IpmIOG.cjs +1 -0
  32. package/dist/awk-Fb0P9dkn.js +6 -0
  33. package/dist/awk-IEszImW6.cjs +1 -0
  34. package/dist/ayu-dark-CDpQIJw4.cjs +1 -0
  35. package/dist/ayu-dark-DG7aLdHp.js +4 -0
  36. package/dist/ballerina-Dr6dU4hP.cjs +1 -0
  37. package/dist/ballerina-oZK-YekG.js +6 -0
  38. package/dist/base-80a1f760-D0C4rGX6.js +23 -0
  39. package/dist/base-80a1f760-DjCXSyeI.cjs +1 -0
  40. package/dist/bat-0FvbqU9S.js +6 -0
  41. package/dist/bat-DGkUhhn2.cjs +1 -0
  42. package/dist/beancount-Bv1Sweoy.cjs +1 -0
  43. package/dist/beancount-DqJEb89h.js +6 -0
  44. package/dist/berry-DEMs4LK_.cjs +1 -0
  45. package/dist/berry-DODBq_Ff.js +6 -0
  46. package/dist/bibtex-BgA36Z3k.cjs +1 -0
  47. package/dist/bibtex-EULQRLY5.js +6 -0
  48. package/dist/bicep-BorU73w0.js +6 -0
  49. package/dist/bicep-DL0zb-7W.cjs +1 -0
  50. package/dist/blade-D0HyNvCw.js +20 -0
  51. package/dist/blade-DEjek0u9.cjs +1 -0
  52. package/dist/bsl-9bVgFeM9.cjs +1 -0
  53. package/dist/bsl-NkNNwerW.js +8 -0
  54. package/dist/c-CtlmKnPF.cjs +1 -0
  55. package/dist/c-eeMepfLm.js +6 -0
  56. package/dist/c3-Bt581sCe.js +6 -0
  57. package/dist/c3-DtfRRWXN.cjs +1 -0
  58. package/dist/cadence-02UX7mW8.js +6 -0
  59. package/dist/cadence-DcbmM5v3.cjs +1 -0
  60. package/dist/cairo-DM6WF2e3.js +8 -0
  61. package/dist/cairo-li7sQsxU.cjs +1 -0
  62. package/dist/catppuccin-frappe-Bn4lgmUk.cjs +1 -0
  63. package/dist/catppuccin-frappe-D3cH2rXe.js +4 -0
  64. package/dist/catppuccin-latte-BPtsb8jD.cjs +1 -0
  65. package/dist/catppuccin-latte-C0LRGUW4.js +4 -0
  66. package/dist/catppuccin-macchiato-BLfpQWhT.cjs +1 -0
  67. package/dist/catppuccin-macchiato-c5wQ11TT.js +4 -0
  68. package/dist/catppuccin-mocha-COMta283.cjs +1 -0
  69. package/dist/catppuccin-mocha-WMD6Qvya.js +4 -0
  70. package/dist/clarity-PKm5CwqM.js +6 -0
  71. package/dist/clarity-gPuvqtpF.cjs +1 -0
  72. package/dist/clojure-CXJfHrL3.js +6 -0
  73. package/dist/clojure-OUsr1SUl.cjs +1 -0
  74. package/dist/cmake-BJz8BOTU.js +6 -0
  75. package/dist/cmake-jM6P58qY.cjs +1 -0
  76. package/dist/cobol-CcrsCSUZ.cjs +1 -0
  77. package/dist/cobol-HihOMwht.js +10 -0
  78. package/dist/codeowners-Bt9yU6NX.js +6 -0
  79. package/dist/codeowners-QhPK6lIJ.cjs +1 -0
  80. package/dist/codeql-D9-TdUN8.cjs +1 -0
  81. package/dist/codeql-DHkodjjI.js +6 -0
  82. package/dist/coffee-DGBR_nr_.js +8 -0
  83. package/dist/coffee-DycxIFwY.cjs +1 -0
  84. package/dist/common-lisp-C77gR-8i.cjs +1 -0
  85. package/dist/common-lisp-EVqT9Zhp.js +6 -0
  86. package/dist/components/custom/enhanced-scroll-area.d.ts.map +1 -1
  87. package/dist/components/ui/dropdown-menu.d.ts.map +1 -1
  88. package/dist/components/ui/shadcn-io/code-block/index.d.ts +67 -0
  89. package/dist/components/ui/shadcn-io/code-block/index.d.ts.map +1 -0
  90. package/dist/components/ui/shadcn-io/code-block/server.d.ts +10 -0
  91. package/dist/components/ui/shadcn-io/code-block/server.d.ts.map +1 -0
  92. package/dist/components/ui/shadcn-io/code-editor/index.d.ts +35 -0
  93. package/dist/components/ui/shadcn-io/code-editor/index.d.ts.map +1 -0
  94. package/dist/components/ui/shadcn-io/sandbox/index.d.ts +38 -0
  95. package/dist/components/ui/shadcn-io/sandbox/index.d.ts.map +1 -0
  96. package/dist/components/ui/shadcn-io/snippet/index.d.ts +21 -0
  97. package/dist/components/ui/shadcn-io/snippet/index.d.ts.map +1 -0
  98. package/dist/consoleHook-59e792cb-Bn_kYimG.js +168 -0
  99. package/dist/consoleHook-59e792cb-Bo5H9MpE.cjs +2 -0
  100. package/dist/coq-B0L9upzn.js +6 -0
  101. package/dist/coq-vlPdR5hP.cjs +1 -0
  102. package/dist/cpp-Cj177cuW.js +18 -0
  103. package/dist/cpp-DvI2Eoso.cjs +1 -0
  104. package/dist/crystal-B_WXhL2O.cjs +1 -0
  105. package/dist/crystal-CRJyc4G-.js +18 -0
  106. package/dist/csharp-BUkAIRXW.cjs +1 -0
  107. package/dist/csharp-C7yUs7-w.js +6 -0
  108. package/dist/css-CECN5uSL.js +6 -0
  109. package/dist/css-Do0mp2lm.cjs +1 -0
  110. package/dist/csv-CmYOceLb.js +6 -0
  111. package/dist/csv-DiEdJzSJ.cjs +1 -0
  112. package/dist/cue-D1vJRJEx.cjs +1 -0
  113. package/dist/cue-ZzumE7IT.js +6 -0
  114. package/dist/cypher-atSM3NsM.cjs +1 -0
  115. package/dist/cypher-jpdmjtA6.js +6 -0
  116. package/dist/d-2qe3NhmZ.cjs +1 -0
  117. package/dist/d-CBagWSwH.js +6 -0
  118. package/dist/dark-plus-Cd5emcYO.cjs +1 -0
  119. package/dist/dark-plus-pUHDTVV0.js +4 -0
  120. package/dist/dart-6ObCrKr9.js +6 -0
  121. package/dist/dart-Ds0_0fwe.cjs +1 -0
  122. package/dist/dax-CcDT-8dH.js +6 -0
  123. package/dist/dax-DbkQa40E.cjs +1 -0
  124. package/dist/desktop-B93p9R9O.js +6 -0
  125. package/dist/desktop-tn3MFXCZ.cjs +1 -0
  126. package/dist/diff-BxzP2J8R.js +6 -0
  127. package/dist/diff-CA31fCOg.cjs +1 -0
  128. package/dist/docker-CsHqm9tx.js +6 -0
  129. package/dist/docker-zJpMwmYa.cjs +1 -0
  130. package/dist/dotenv-BMjVjUL1.js +6 -0
  131. package/dist/dotenv-DpcNCNek.cjs +1 -0
  132. package/dist/dracula-BNgwAJ-d.cjs +1 -0
  133. package/dist/dracula-BtZx2Kac.js +4 -0
  134. package/dist/dracula-soft-BHZ7sHFu.cjs +1 -0
  135. package/dist/dracula-soft-BKa-aqBv.js +4 -0
  136. package/dist/dream-maker-BkijXDkm.cjs +1 -0
  137. package/dist/dream-maker-PAx17jaB.js +6 -0
  138. package/dist/edge-BYQkOzbF.js +12 -0
  139. package/dist/edge-DaIYN5Mx.cjs +1 -0
  140. package/dist/elixir-BH_wmMK4.cjs +1 -0
  141. package/dist/elixir-Dh036GMp.js +8 -0
  142. package/dist/elm-BtNbw_Cd.js +8 -0
  143. package/dist/elm-Dc4sEBjc.cjs +1 -0
  144. package/dist/emacs-lisp-C1UCIjUO.cjs +1 -0
  145. package/dist/emacs-lisp-Cfxdx5D-.js +6 -0
  146. package/dist/erb-BqFQADjR.cjs +1 -0
  147. package/dist/erb-CS4zioBv.js +10 -0
  148. package/dist/erlang-CB2cfp6Z.cjs +1 -0
  149. package/dist/erlang-DNcDT8Hi.js +8 -0
  150. package/dist/everforest-dark-DMCBqXCK.js +4 -0
  151. package/dist/everforest-dark-_sBMomR1.cjs +1 -0
  152. package/dist/everforest-light-BbXl82Em.js +4 -0
  153. package/dist/everforest-light-H0xoYxl0.cjs +1 -0
  154. package/dist/fennel-Bz9-EMMc.cjs +1 -0
  155. package/dist/fennel-N4WcXuKx.js +6 -0
  156. package/dist/fish-BTDEUgqH.js +6 -0
  157. package/dist/fish-DwmQKRZi.cjs +1 -0
  158. package/dist/fluent-BMXUxfv1.js +6 -0
  159. package/dist/fluent-CJtpNuaO.cjs +1 -0
  160. package/dist/fortran-fixed-form-B67KFkXH.js +8 -0
  161. package/dist/fortran-fixed-form-CcXh5Xzk.cjs +1 -0
  162. package/dist/fortran-free-form-Cs4ztolN.cjs +1 -0
  163. package/dist/fortran-free-form-CwqYvCLJ.js +6 -0
  164. package/dist/fsharp-CYOiIVNx.js +8 -0
  165. package/dist/fsharp-DVcRF7k-.cjs +1 -0
  166. package/dist/gdresource-BwtMIoBm.js +10 -0
  167. package/dist/gdresource-CcLusmd_.cjs +1 -0
  168. package/dist/gdscript-BifyeYhI.js +6 -0
  169. package/dist/gdscript-DSegQKMB.cjs +1 -0
  170. package/dist/gdshader-Bk8fF6yr.js +6 -0
  171. package/dist/gdshader-DsmqQl4t.cjs +1 -0
  172. package/dist/genie-Dy2rU8CF.cjs +1 -0
  173. package/dist/genie-DzUvd7U9.js +6 -0
  174. package/dist/gherkin-BmiEVBJ1.cjs +1 -0
  175. package/dist/gherkin-DHRaV0YP.js +6 -0
  176. package/dist/git-commit-Bd32YZ0K.js +8 -0
  177. package/dist/git-commit-DlVDzq9L.cjs +1 -0
  178. package/dist/git-rebase-Bn4RLd7u.cjs +1 -0
  179. package/dist/git-rebase-ZWUFO_T4.js +8 -0
  180. package/dist/github-dark-BKL9xNgN.cjs +1 -0
  181. package/dist/github-dark-DenFmJkN.js +4 -0
  182. package/dist/github-dark-default-BJPUVz4H.js +4 -0
  183. package/dist/github-dark-default-Dsv5MuSi.cjs +1 -0
  184. package/dist/github-dark-dimmed-CtB9hz8U.cjs +1 -0
  185. package/dist/github-dark-dimmed-DUshB20C.js +4 -0
  186. package/dist/github-dark-high-contrast-BqZVM-jF.cjs +1 -0
  187. package/dist/github-dark-high-contrast-D3aGCnF8.js +4 -0
  188. package/dist/github-light-BFTOhCbz.cjs +1 -0
  189. package/dist/github-light-JYsPkUQd.js +4 -0
  190. package/dist/github-light-default-BZoWH9dH.cjs +1 -0
  191. package/dist/github-light-default-D99KPAby.js +4 -0
  192. package/dist/github-light-high-contrast-BbmZE-Mp.js +4 -0
  193. package/dist/github-light-high-contrast-Ks3kPGJU.cjs +1 -0
  194. package/dist/gleam-Bv284lvN.js +6 -0
  195. package/dist/gleam-DHVuTCr7.cjs +1 -0
  196. package/dist/glimmer-js-CzmC7OX8.cjs +1 -0
  197. package/dist/glimmer-js-DkxNrfPT.js +14 -0
  198. package/dist/glimmer-ts-D6YZEmK_.js +14 -0
  199. package/dist/glimmer-ts-DLN2_wRt.cjs +1 -0
  200. package/dist/glsl-CQekZ3Zq.cjs +1 -0
  201. package/dist/glsl-CkUcVZNK.js +8 -0
  202. package/dist/gn-0WGnAyGi.cjs +1 -0
  203. package/dist/gn-XtJxiLa4.js +6 -0
  204. package/dist/gnuplot-CDPKvI9X.cjs +1 -0
  205. package/dist/gnuplot-yPG9-sE_.js +6 -0
  206. package/dist/go-ChxJuLYK.js +6 -0
  207. package/dist/go-epHseFUa.cjs +1 -0
  208. package/dist/graphql-BnP1YhXQ.cjs +1 -0
  209. package/dist/graphql-CBu2ehBn.js +14 -0
  210. package/dist/groovy-CJQTphOW.js +6 -0
  211. package/dist/groovy-D7VuDBXz.cjs +1 -0
  212. package/dist/gruvbox-dark-hard-C5HOtKIh.js +4 -0
  213. package/dist/gruvbox-dark-hard-CUGefKS6.cjs +1 -0
  214. package/dist/gruvbox-dark-medium-BoKPlKfz.cjs +1 -0
  215. package/dist/gruvbox-dark-medium-FVgwJHuz.js +4 -0
  216. package/dist/gruvbox-dark-soft-B46F314v.js +4 -0
  217. package/dist/gruvbox-dark-soft-DSrhOWeL.cjs +1 -0
  218. package/dist/gruvbox-light-hard-CJD38wDZ.js +4 -0
  219. package/dist/gruvbox-light-hard-De4IuseP.cjs +1 -0
  220. package/dist/gruvbox-light-medium-BlIhMYTA.js +4 -0
  221. package/dist/gruvbox-light-medium-CzMY3IEJ.cjs +1 -0
  222. package/dist/gruvbox-light-soft-DoPHyLVZ.js +4 -0
  223. package/dist/gruvbox-light-soft-U4iAIpWZ.cjs +1 -0
  224. package/dist/hack-BaDv2o40.cjs +1 -0
  225. package/dist/hack-ItRNKiEb.js +10 -0
  226. package/dist/haml-Bk21rGjP.cjs +1 -0
  227. package/dist/haml-NZLVzu_R.js +10 -0
  228. package/dist/handlebars-CJJi3lrU.cjs +1 -0
  229. package/dist/handlebars-mxStpSE7.js +14 -0
  230. package/dist/haskell-BShesV2P.cjs +1 -0
  231. package/dist/haskell-WeIwNIP6.js +6 -0
  232. package/dist/haxe-Bo5XuRS0.cjs +1 -0
  233. package/dist/haxe-TztHsm5T.js +6 -0
  234. package/dist/hcl-CrZnvm-1.cjs +1 -0
  235. package/dist/hcl-D438OF-I.js +6 -0
  236. package/dist/hjson-CEESwTUP.cjs +1 -0
  237. package/dist/hjson-DYBUbqOl.js +6 -0
  238. package/dist/hlsl-Bk8TCZNL.js +6 -0
  239. package/dist/hlsl-CyvYRIb9.cjs +1 -0
  240. package/dist/houston-BDYrDoDW.js +4 -0
  241. package/dist/houston-T57H3gQZ.cjs +1 -0
  242. package/dist/html-B50bmoVb.js +10 -0
  243. package/dist/html-C62Zf2h4.cjs +1 -0
  244. package/dist/html-derivative-C6bxFbFW.js +8 -0
  245. package/dist/html-derivative-NDb86jON.cjs +1 -0
  246. package/dist/http-BPlLI56k.cjs +1 -0
  247. package/dist/http-DLvAkeD-.js +14 -0
  248. package/dist/hurl-BQGBr8gH.cjs +1 -0
  249. package/dist/hurl-CgkFN90t.js +12 -0
  250. package/dist/hxml-GbqSQCLa.js +8 -0
  251. package/dist/hxml-vnw7fzrV.cjs +1 -0
  252. package/dist/hy-Brt5EZ7-.js +6 -0
  253. package/dist/hy-a1E2Ed6P.cjs +1 -0
  254. package/dist/imba-CR1Q6r17.cjs +1 -0
  255. package/dist/imba-CimUv-Uh.js +6 -0
  256. package/dist/index-599aeaf7-D4wnsI9S.js +8813 -0
  257. package/dist/index-599aeaf7-DrU1PSR6.cjs +16 -0
  258. package/dist/index-BXIRKklr.js +1088 -0
  259. package/dist/index-BfXl0N5c.cjs +1 -0
  260. package/dist/index-Bh54my7Z.cjs +1 -0
  261. package/dist/index-Blaj1BKg.cjs +4 -0
  262. package/dist/index-DC77eP71.js +68816 -0
  263. package/dist/index-DXsoJSDt.cjs +1253 -0
  264. package/dist/index-Dk2p9rpx.js +2952 -0
  265. package/dist/index-y0wancIw.js +44 -0
  266. package/dist/index.d.ts +12 -2
  267. package/dist/index.d.ts.map +1 -1
  268. package/dist/ini-BZIuRIvJ.js +6 -0
  269. package/dist/ini-Dpu3Xy2p.cjs +1 -0
  270. package/dist/java--6gf61wy.cjs +1 -0
  271. package/dist/java-DY6VlHhP.js +6 -0
  272. package/dist/javascript-C25yR2R2.js +6 -0
  273. package/dist/javascript-DgmXW4Ha.cjs +1 -0
  274. package/dist/jinja-6NmewwV8.cjs +1 -0
  275. package/dist/jinja-CFW5uAwY.js +11 -0
  276. package/dist/jison-CD9Qsaj0.cjs +1 -0
  277. package/dist/jison-DdreslRX.js +8 -0
  278. package/dist/json-DxJze_jm.js +6 -0
  279. package/dist/json-YkPizm35.cjs +1 -0
  280. package/dist/json5-BT4Fjg39.js +6 -0
  281. package/dist/json5-CCgFZiQn.cjs +1 -0
  282. package/dist/jsonc-CHjZD8gR.js +6 -0
  283. package/dist/jsonc-CKPHIcXW.cjs +1 -0
  284. package/dist/jsonl-BGuvDmy9.js +6 -0
  285. package/dist/jsonl-Dq56Hab-.cjs +1 -0
  286. package/dist/jsonnet-Bx2cfsXg.js +6 -0
  287. package/dist/jsonnet-Csh7E68F.cjs +1 -0
  288. package/dist/jssm-BcADi6EI.js +6 -0
  289. package/dist/jssm-D0M9iZPY.cjs +1 -0
  290. package/dist/jsx-BtKADgXT.js +6 -0
  291. package/dist/jsx-DLX6UGgg.cjs +1 -0
  292. package/dist/julia-1BTSV8k5.cjs +1 -0
  293. package/dist/julia-CZiKXNNP.js +16 -0
  294. package/dist/kanagawa-dragon-BJZF7xDr.cjs +1 -0
  295. package/dist/kanagawa-dragon-CiKur4Hl.js +4 -0
  296. package/dist/kanagawa-lotus-BKu-smKu.js +4 -0
  297. package/dist/kanagawa-lotus-BhgzmRV4.cjs +1 -0
  298. package/dist/kanagawa-wave-BgJip59C.cjs +1 -0
  299. package/dist/kanagawa-wave-CQwozSzG.js +4 -0
  300. package/dist/kdl-BNOv9TC3.js +6 -0
  301. package/dist/kdl-CDG1p2Qi.cjs +1 -0
  302. package/dist/kotlin-BHZjvNqT.cjs +1 -0
  303. package/dist/kotlin-ByBMgTeR.js +6 -0
  304. package/dist/kusto-C6kOQWT0.cjs +1 -0
  305. package/dist/kusto-DH_XitHS.js +6 -0
  306. package/dist/laserwave--izBLY1I.cjs +1 -0
  307. package/dist/laserwave-6a00oqik.js +4 -0
  308. package/dist/latex-BH0OjEyf.cjs +1 -0
  309. package/dist/latex-DLWszopg.js +8 -0
  310. package/dist/lean-BnVxaZxY.js +6 -0
  311. package/dist/lean-DvVQmxVK.cjs +1 -0
  312. package/dist/less-B1GLI2Di.js +6 -0
  313. package/dist/less-Dtg8mm6P.cjs +1 -0
  314. package/dist/light-plus-B5D0le0o.cjs +1 -0
  315. package/dist/light-plus-CZuVqSLX.js +4 -0
  316. package/dist/liquid-CHzkx3jT.js +14 -0
  317. package/dist/liquid-DjlCV7Vm.cjs +1 -0
  318. package/dist/llvm-DcRvQ_r8.cjs +1 -0
  319. package/dist/llvm-co1rIKs3.js +6 -0
  320. package/dist/log-Al8wyEFV.js +6 -0
  321. package/dist/log-CjTZ0gSB.cjs +1 -0
  322. package/dist/logo-BAktp_5i.cjs +1 -0
  323. package/dist/logo-DBa4JDzV.js +6 -0
  324. package/dist/lua-BfOnSJPp.cjs +1 -0
  325. package/dist/lua-kX5WP_P5.js +8 -0
  326. package/dist/luau-BMXmwtw0.cjs +1 -0
  327. package/dist/luau-UQyhudEE.js +6 -0
  328. package/dist/make-CsMclxtr.js +6 -0
  329. package/dist/make-NcdIe21U.cjs +1 -0
  330. package/dist/markdown-Byu9Sdmq.cjs +1 -0
  331. package/dist/markdown-CrScaQ96.js +6 -0
  332. package/dist/marko-BAIoWxJR.cjs +1 -0
  333. package/dist/marko-Ns9BYtDO.js +14 -0
  334. package/dist/material-theme-D6KBX41T.js +4 -0
  335. package/dist/material-theme-Dj0-OyRN.cjs +1 -0
  336. package/dist/material-theme-darker-CkRroheE.js +4 -0
  337. package/dist/material-theme-darker-Dvfs29ir.cjs +1 -0
  338. package/dist/material-theme-lighter-BUBw43Yz.js +4 -0
  339. package/dist/material-theme-lighter-EU3ZGl_r.cjs +1 -0
  340. package/dist/material-theme-ocean-ClGX14Ja.js +4 -0
  341. package/dist/material-theme-ocean-px_3Pwqa.cjs +1 -0
  342. package/dist/material-theme-palenight-38jxvsGX.cjs +1 -0
  343. package/dist/material-theme-palenight-C1RVm8K1.js +4 -0
  344. package/dist/matlab-BOAaUVP0.js +6 -0
  345. package/dist/matlab-CHTOL9Kx.cjs +1 -0
  346. package/dist/mdc-DEPKJPdx.cjs +1 -0
  347. package/dist/mdc-uaivvctV.js +12 -0
  348. package/dist/mdx-BOhZZUJ8.js +6 -0
  349. package/dist/mdx-CjwI68TB.cjs +1 -0
  350. package/dist/mermaid-BXSwQYo5.cjs +1 -0
  351. package/dist/mermaid-C3rz4dYh.js +6 -0
  352. package/dist/min-dark-C7ak0t6c.js +4 -0
  353. package/dist/min-dark-tt5o_I5e.cjs +1 -0
  354. package/dist/min-light-CKFxVcPp.js +4 -0
  355. package/dist/min-light-tmTHl_CQ.cjs +1 -0
  356. package/dist/mipsasm-BSlRcFIy.cjs +1 -0
  357. package/dist/mipsasm-CTx18fBl.js +6 -0
  358. package/dist/mojo-CgKe2b8g.js +6 -0
  359. package/dist/mojo-D2tXKFxS.cjs +1 -0
  360. package/dist/monokai-C1KBYcO0.js +4 -0
  361. package/dist/monokai-DMIxv6MM.cjs +1 -0
  362. package/dist/moonbit-BweIWWUc.cjs +1 -0
  363. package/dist/moonbit-NVPuhMCm.js +6 -0
  364. package/dist/move-Bm1vlCWg.cjs +1 -0
  365. package/dist/move-F-dICmj2.js +6 -0
  366. package/dist/narrat-CBeKHgTl.cjs +1 -0
  367. package/dist/narrat-DmhDCBs-.js +6 -0
  368. package/dist/nextflow-CM8Ed358.cjs +1 -0
  369. package/dist/nextflow-DmSVRGjG.js +6 -0
  370. package/dist/nginx-5vhPAEw3.js +8 -0
  371. package/dist/nginx-ByVOUyIE.cjs +1 -0
  372. package/dist/night-owl-BN78kThQ.cjs +1 -0
  373. package/dist/night-owl-Bm2rzalh.js +4 -0
  374. package/dist/nim-Bqmp5Of3.cjs +1 -0
  375. package/dist/nim-QAjRdh9w.js +20 -0
  376. package/dist/nix-BOiBJUDf.cjs +1 -0
  377. package/dist/nix-fTRXMGic.js +9 -0
  378. package/dist/nord-CC5OiUXg.js +4 -0
  379. package/dist/nord-Ca5AGUWc.cjs +1 -0
  380. package/dist/nqui.cjs.js +1 -521
  381. package/dist/nqui.es.js +329 -35451
  382. package/dist/nushell-D8j3dhT-.js +6 -0
  383. package/dist/nushell-nGrB_wpI.cjs +1 -0
  384. package/dist/objective-c-Itk8tzmv.js +6 -0
  385. package/dist/objective-c-RjkWwFge.cjs +1 -0
  386. package/dist/objective-cpp-DGt5UKRO.js +6 -0
  387. package/dist/objective-cpp-HnfhWwRe.cjs +1 -0
  388. package/dist/ocaml-Cx8ewW_A.cjs +1 -0
  389. package/dist/ocaml-eSVK32Eg.js +6 -0
  390. package/dist/one-dark-pro-C09VQHwB.cjs +1 -0
  391. package/dist/one-dark-pro-DTA3VF0_.js +4 -0
  392. package/dist/one-light-020-h_lv.cjs +1 -0
  393. package/dist/one-light-D9sNaUtq.js +4 -0
  394. package/dist/openscad-D7eUrVPv.cjs +1 -0
  395. package/dist/openscad-Sp5uZ6f2.js +6 -0
  396. package/dist/pages/Dashboard.d.ts.map +1 -1
  397. package/dist/pascal-DBu9vQ2o.cjs +1 -0
  398. package/dist/pascal-xy8pJNns.js +6 -0
  399. package/dist/perl-CxWZPeDZ.cjs +1 -0
  400. package/dist/perl-DkVrgJBg.js +16 -0
  401. package/dist/php-BLXVJphD.cjs +1 -0
  402. package/dist/php-j2zCzTEz.js +18 -0
  403. package/dist/pkl-C-zSNmaA.js +6 -0
  404. package/dist/pkl-Dvyry4Rm.cjs +1 -0
  405. package/dist/plastic-CSTz3KZp.js +4 -0
  406. package/dist/plastic-r5piqq-S.cjs +1 -0
  407. package/dist/plsql-IJkoPJ9P.cjs +1 -0
  408. package/dist/plsql-pVbGZfOv.js +6 -0
  409. package/dist/po-BNfHvqmm.js +6 -0
  410. package/dist/po-Rhu6MvnX.cjs +1 -0
  411. package/dist/poimandres-BLP3NNjc.cjs +1 -0
  412. package/dist/poimandres-C-VADXHD.js +4 -0
  413. package/dist/polar-BtWqSUq2.cjs +1 -0
  414. package/dist/polar-CAZahv3u.js +6 -0
  415. package/dist/postcss-05aHdL-n.js +6 -0
  416. package/dist/postcss-Dh97DcaJ.cjs +1 -0
  417. package/dist/powerquery-BGL6VIw7.cjs +1 -0
  418. package/dist/powerquery-DI9HkTvs.js +6 -0
  419. package/dist/powershell-BiEPMjy-.cjs +1 -0
  420. package/dist/powershell-Clc4ydu-.js +6 -0
  421. package/dist/prisma-Dp473sn0.cjs +1 -0
  422. package/dist/prisma-FZjmVtSl.js +6 -0
  423. package/dist/prolog-C5-yg4TO.js +6 -0
  424. package/dist/prolog-N1U-3UeF.cjs +1 -0
  425. package/dist/proto-C7QgialS.js +6 -0
  426. package/dist/proto-DMjUErYA.cjs +1 -0
  427. package/dist/pug-DiGNE7sm.cjs +1 -0
  428. package/dist/pug-XOw9Q1Ho.js +12 -0
  429. package/dist/puppet-CUJHmnxV.js +6 -0
  430. package/dist/puppet-cDQP_ZC_.cjs +1 -0
  431. package/dist/purescript-DMxb59gF.cjs +1 -0
  432. package/dist/purescript-rUfGld-4.js +6 -0
  433. package/dist/python-BFNSHbwJ.js +6 -0
  434. package/dist/python-s9jfVbew.cjs +1 -0
  435. package/dist/qml-beorq0E4.cjs +1 -0
  436. package/dist/qml-rTNXsquU.js +8 -0
  437. package/dist/qmldir-BInDYbpo.js +6 -0
  438. package/dist/qmldir-DNF9H2ir.cjs +1 -0
  439. package/dist/qss-AeJTysr_.js +6 -0
  440. package/dist/qss-DwA_oiAM.cjs +1 -0
  441. package/dist/r-CSmzDPi7.js +6 -0
  442. package/dist/r-DAqIyZhh.cjs +1 -0
  443. package/dist/racket-B83wSAja.js +6 -0
  444. package/dist/racket-D4laxZit.cjs +1 -0
  445. package/dist/raku-DHySPsLw.cjs +1 -0
  446. package/dist/raku-nEQ4ZJJ7.js +6 -0
  447. package/dist/razor-C5CyrFEt.js +10 -0
  448. package/dist/razor-PuMYvsDx.cjs +1 -0
  449. package/dist/red-7y8PH7HH.js +4 -0
  450. package/dist/red-BQGOv1D5.cjs +1 -0
  451. package/dist/reg-CevkCKuZ.cjs +1 -0
  452. package/dist/reg-m_s_Kiip.js +6 -0
  453. package/dist/regexp-BazyLpPg.js +6 -0
  454. package/dist/regexp-DabTWNLE.cjs +1 -0
  455. package/dist/rel-BS5APza7.cjs +1 -0
  456. package/dist/rel-BcRfyd6Q.js +6 -0
  457. package/dist/riscv-BnGFr6V7.cjs +1 -0
  458. package/dist/riscv-Ce8MAQLP.js +6 -0
  459. package/dist/rose-pine-BKc3yVeu.js +4 -0
  460. package/dist/rose-pine-CfBWm6WX.cjs +1 -0
  461. package/dist/rose-pine-dawn-BulJcPZT.js +4 -0
  462. package/dist/rose-pine-dawn-CaZ5I2lt.cjs +1 -0
  463. package/dist/rose-pine-moon-Cql8LDLp.cjs +1 -0
  464. package/dist/rose-pine-moon-j6jiXKV8.js +4 -0
  465. package/dist/rosmsg-C7VSFzUC.cjs +1 -0
  466. package/dist/rosmsg-Cz0w1km8.js +6 -0
  467. package/dist/rst-CcbeA9zE.js +22 -0
  468. package/dist/rst-D08gsKw8.cjs +1 -0
  469. package/dist/ruby-B5H7kBtd.cjs +1 -0
  470. package/dist/ruby-DMPw6uKF.js +30 -0
  471. package/dist/rust-CLzF9zIN.js +6 -0
  472. package/dist/rust-CNeTMPbB.cjs +1 -0
  473. package/dist/sas-D5Fn8Q38.cjs +1 -0
  474. package/dist/sas-fpEvgATw.js +8 -0
  475. package/dist/sass-DxHp5rTx.js +6 -0
  476. package/dist/sass-vyo-bUwh.cjs +1 -0
  477. package/dist/scala-D4grkFkl.js +6 -0
  478. package/dist/scala-ZSekD-8-.cjs +1 -0
  479. package/dist/scheme-BCRWuEm4.js +6 -0
  480. package/dist/scheme-vM0LdD-_.cjs +1 -0
  481. package/dist/scss-B1FaCqwR.js +8 -0
  482. package/dist/scss-CKlduTMv.cjs +1 -0
  483. package/dist/sdbl-B7T8abf4.js +6 -0
  484. package/dist/sdbl-DeWT5r4i.cjs +1 -0
  485. package/dist/shaderlab-Cr62-Wb4.js +8 -0
  486. package/dist/shaderlab-DGJjQHxC.cjs +1 -0
  487. package/dist/shellscript-DYWjN7qW.cjs +1 -0
  488. package/dist/shellscript-InADTalH.js +6 -0
  489. package/dist/shellsession-DMUSXX8m.cjs +1 -0
  490. package/dist/shellsession-DiDJNQdy.js +8 -0
  491. package/dist/slack-dark-akqwQ7ED.cjs +1 -0
  492. package/dist/slack-dark-i7wN4OET.js +4 -0
  493. package/dist/slack-ochin-BoQQWmTv.cjs +1 -0
  494. package/dist/slack-ochin-ndHf0LoP.js +4 -0
  495. package/dist/smalltalk-BNs6hxu4.cjs +1 -0
  496. package/dist/smalltalk-BlI1_OkM.js +6 -0
  497. package/dist/snazzy-light-BlSJXAu4.js +4 -0
  498. package/dist/snazzy-light-D_IwRieF.cjs +1 -0
  499. package/dist/solarized-dark-UTmkh7lw.js +4 -0
  500. package/dist/solarized-dark-gmm-WbDC.cjs +1 -0
  501. package/dist/solarized-light-BheCkDPT.js +4 -0
  502. package/dist/solarized-light-DzcxRSZP.cjs +1 -0
  503. package/dist/solidity-DUWnFhS6.js +6 -0
  504. package/dist/solidity-uQuzgchP.cjs +1 -0
  505. package/dist/soy-C1-6njHa.js +8 -0
  506. package/dist/soy-CDFPDtGX.cjs +1 -0
  507. package/dist/sparql-6Cg9ppCl.cjs +1 -0
  508. package/dist/sparql-B0KWFEri.js +8 -0
  509. package/dist/splunk-CRXR8A9s.js +6 -0
  510. package/dist/splunk-CWPivao_.cjs +1 -0
  511. package/dist/sql-Cn_v3PB0.js +6 -0
  512. package/dist/sql-DhUUVgH1.cjs +1 -0
  513. package/dist/ssh-config-B93wBIBa.cjs +1 -0
  514. package/dist/ssh-config-DP-hNVbF.js +6 -0
  515. package/dist/stata-B8c5fTjX.js +8 -0
  516. package/dist/stata-DCWFCQQG.cjs +1 -0
  517. package/dist/styles.css +468 -21
  518. package/dist/stylus-B64Bt0D4.cjs +1 -0
  519. package/dist/stylus-CyKEU1Ej.js +6 -0
  520. package/dist/svelte-CYf4HR3U.js +14 -0
  521. package/dist/svelte-Do4zIqEL.cjs +1 -0
  522. package/dist/swift-9UzSvamq.js +6 -0
  523. package/dist/swift-BMbGdc3j.cjs +1 -0
  524. package/dist/synthwave-84-BBRLOmNT.cjs +1 -0
  525. package/dist/synthwave-84-NU3C_KFZ.js +4 -0
  526. package/dist/system-verilog-BCm7smPJ.js +6 -0
  527. package/dist/system-verilog-BFclLo9e.cjs +1 -0
  528. package/dist/systemd-C-4qm6XH.js +6 -0
  529. package/dist/systemd-Dtw7P4tb.cjs +1 -0
  530. package/dist/talonscript-CFF3LF_O.js +6 -0
  531. package/dist/talonscript-D8SvZJVc.cjs +1 -0
  532. package/dist/tasl--DC4oX-L.cjs +1 -0
  533. package/dist/tasl-Cg_WBUAe.js +6 -0
  534. package/dist/tcl-0Q0H86Yn.cjs +1 -0
  535. package/dist/tcl-DN7buRTF.js +6 -0
  536. package/dist/templ-BDNMUns0.cjs +1 -0
  537. package/dist/templ-peLZIM2D.js +12 -0
  538. package/dist/terraform-C0RDrmWi.cjs +1 -0
  539. package/dist/terraform-DGvcn9zM.js +6 -0
  540. package/dist/tex-BvKThJ8p.js +8 -0
  541. package/dist/tex-Dz7jjuD4.cjs +1 -0
  542. package/dist/tokyo-night-DP4TmcQl.js +4 -0
  543. package/dist/tokyo-night-GOhjzM5y.cjs +1 -0
  544. package/dist/toml-DY62mUL_.js +6 -0
  545. package/dist/toml-Q64DoSvG.cjs +1 -0
  546. package/dist/ts-tags-DILCom6A.cjs +1 -0
  547. package/dist/ts-tags-ioVe2PKw.js +41 -0
  548. package/dist/tsv-BtvSkaG0.js +6 -0
  549. package/dist/tsv-DqNGnuVj.cjs +1 -0
  550. package/dist/tsx-B8rCNbgL.js +6 -0
  551. package/dist/tsx-DIpfUf9u.cjs +1 -0
  552. package/dist/turtle-DipIidr5.cjs +1 -0
  553. package/dist/turtle-_H59FV7D.js +6 -0
  554. package/dist/twig-B42NGISI.cjs +1 -0
  555. package/dist/twig-CcRLVyUg.js +18 -0
  556. package/dist/typescript-RycA9KXf.js +6 -0
  557. package/dist/typescript-b48wo4zk.cjs +1 -0
  558. package/dist/typespec-DWqp-kUU.js +6 -0
  559. package/dist/typespec-DqXOE4_L.cjs +1 -0
  560. package/dist/typst-Cqq4j4V-.cjs +1 -0
  561. package/dist/typst-D_1QKWns.js +6 -0
  562. package/dist/v-81C2s01-.cjs +1 -0
  563. package/dist/v-BPCNiyYe.js +6 -0
  564. package/dist/vala-CsAYdCD2.cjs +1 -0
  565. package/dist/vala-uxaPR7d1.js +6 -0
  566. package/dist/vb-AiTMb16X.cjs +1 -0
  567. package/dist/vb-D8_c5-KN.js +6 -0
  568. package/dist/verilog-AMohXZcN.cjs +1 -0
  569. package/dist/verilog-B-bybjPF.js +6 -0
  570. package/dist/vesper-B59Iw4gV.cjs +1 -0
  571. package/dist/vesper-BckBta1U.js +4 -0
  572. package/dist/vhdl-CUlNa8ac.js +6 -0
  573. package/dist/vhdl-DIdR1NA5.cjs +1 -0
  574. package/dist/viml-D01eKeA4.cjs +1 -0
  575. package/dist/viml-DsfA-sWm.js +6 -0
  576. package/dist/vitesse-black-BoGvW84i.js +4 -0
  577. package/dist/vitesse-black-MF-1S1MG.cjs +1 -0
  578. package/dist/vitesse-dark-Cym-eLtO.js +4 -0
  579. package/dist/vitesse-dark-SIffJYSe.cjs +1 -0
  580. package/dist/vitesse-light-CcmG315c.js +4 -0
  581. package/dist/vitesse-light-U63SkYGT.cjs +1 -0
  582. package/dist/vue-DXEmyXn9.js +31 -0
  583. package/dist/vue-S9bl2EgW.cjs +1 -0
  584. package/dist/vue-html-B2-sfQT7.cjs +1 -0
  585. package/dist/vue-html-j9xNEdu3.js +8 -0
  586. package/dist/vue-vine-CpIsWjsQ.cjs +1 -0
  587. package/dist/vue-vine-D41-N99t.js +18 -0
  588. package/dist/vyper-CPQuu50u.js +6 -0
  589. package/dist/vyper-DTzyzn3a.cjs +1 -0
  590. package/dist/wasm-BBXxrAl7.js +6 -0
  591. package/dist/wasm-DQxwEHae.js +7 -0
  592. package/dist/wasm-Dp-QrJpp.cjs +1 -0
  593. package/dist/wasm-Dw4u1m6u.cjs +1 -0
  594. package/dist/wenyan-CRNx8UP3.cjs +1 -0
  595. package/dist/wenyan-pbVjoM9_.js +6 -0
  596. package/dist/wgsl-DF5qc9dd.cjs +1 -0
  597. package/dist/wgsl-DY4iK1q1.js +6 -0
  598. package/dist/wikitext-D7uzEIfK.cjs +1 -0
  599. package/dist/wikitext-Z-MoUasO.js +6 -0
  600. package/dist/wit-BjWgLsJj.cjs +1 -0
  601. package/dist/wit-CQMQOlTg.js +6 -0
  602. package/dist/wolfram-BR4t3Ffc.cjs +1 -0
  603. package/dist/wolfram-Dz4KXISs.js +6 -0
  604. package/dist/xml-BpsKWkuV.cjs +1 -0
  605. package/dist/xml-C2J0sS9M.js +8 -0
  606. package/dist/xsl-BmSZphgC.js +8 -0
  607. package/dist/xsl-D-3VYix6.cjs +1 -0
  608. package/dist/yaml-DaO7k5B1.js +6 -0
  609. package/dist/yaml-XVBmpKh-.cjs +1 -0
  610. package/dist/zenscript-CxBjpf9c.js +6 -0
  611. package/dist/zenscript-fNvwKexi.cjs +1 -0
  612. package/dist/zig-BAyIAcWK.cjs +1 -0
  613. package/dist/zig-Vm0PO9wB.js +6 -0
  614. package/package.json +13 -1
  615. package/scripts/build-styles.js +0 -10
  616. package/scripts/examples/nextjs-layout.tsx +2 -0
  617. package/scripts/examples.js +76 -0
  618. package/scripts/framework.js +68 -0
  619. package/scripts/getPackageRoot.js +26 -0
  620. package/scripts/help.js +34 -0
  621. package/scripts/init-css.js +88 -569
  622. package/scripts/pipeline/emit.js +21 -0
  623. package/scripts/pipeline/extract.js +118 -0
  624. package/scripts/pipeline/index.js +90 -0
  625. package/scripts/pipeline/tokens.js +25 -0
  626. package/scripts/pipeline/transform.js +51 -0
  627. package/scripts/postcss.config.mjs +10 -0
  628. package/scripts/setup-helper.js +72 -0
  629. package/scripts/wizard.js +57 -0
  630. package/dist/vite.svg +0 -1
@@ -1,606 +1,125 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  /**
4
- * nqui CSS initialization script
4
+ * nqui CSS initialization CLI
5
5
  *
6
- * Copies the nqui design system CSS (variables, colors, tokens) to the user's project.
7
- * Usage: npx nqui init-css [target-path]
6
+ * Usage:
7
+ * npx nqui init-css [output.css] [options]
8
8
  */
9
9
 
10
- import { readFileSync, writeFileSync, mkdirSync, existsSync } from 'fs';
11
- import { join, dirname, resolve } from 'path';
12
- import { fileURLToPath } from 'url';
13
- import { createInterface } from 'readline';
14
-
15
- const __filename = fileURLToPath(import.meta.url);
16
- const __dirname = dirname(__filename);
17
-
18
- // Get the project root (where package.json is)
19
- const projectRoot = resolve(__dirname, '..');
20
- const indexCssPath = join(projectRoot, 'src', 'index.css');
21
- const colorsCssPath = join(projectRoot, 'src', 'styles', 'colors.css');
22
- const distStylesPath = join(projectRoot, 'dist', 'styles.css');
23
- const examplesDir = join(projectRoot, 'scripts', 'examples');
24
-
25
- // Check if we're in a published package (source files don't exist, but dist/styles.css does)
26
- const isPublishedPackage = !existsSync(indexCssPath) && existsSync(distStylesPath);
27
-
28
- // Function to find actual CSS file location for Next.js
29
- function findNextJsCssFile() {
30
- // Check for existing CSS files first (prioritize globals.css)
31
- const possiblePaths = [
32
- 'src/app/globals.css',
33
- 'app/globals.css',
34
- 'src/app/layout.css',
35
- 'app/layout.css',
36
- ];
37
-
38
- for (const path of possiblePaths) {
39
- const fullPath = join(process.cwd(), path);
40
- if (existsSync(fullPath)) {
41
- return path;
42
- }
43
- }
44
-
45
- // If no CSS file exists, determine based on directory structure
46
- // Check for src/app/ first (Next.js with src directory)
47
- if (existsSync(join(process.cwd(), 'src', 'app'))) {
48
- return 'src/app/globals.css';
49
- }
50
- // Check for app/ (Next.js without src directory)
51
- if (existsSync(join(process.cwd(), 'app'))) {
52
- return 'app/globals.css';
53
- }
54
-
55
- // Final fallback: prefer src/app/ if src exists, otherwise app/
56
- if (existsSync(join(process.cwd(), 'src'))) {
57
- return 'src/app/globals.css';
58
- }
59
- return 'app/globals.css';
60
- }
61
-
62
- // Function to find actual CSS file location for Vite
63
- function findViteCssFile() {
64
- const possiblePaths = [
65
- 'src/index.css',
66
- 'src/main.css',
67
- 'src/App.css',
68
- ];
69
-
70
- for (const path of possiblePaths) {
71
- const fullPath = join(process.cwd(), path);
72
- if (existsSync(fullPath)) {
73
- return path;
74
- }
75
- }
10
+ import minimist from 'minimist';
11
+ import { resolve, dirname } from 'path';
12
+ import { readFileSync, existsSync } from 'fs';
13
+ import { getPackageRoot } from './getPackageRoot.js';
14
+ import { printHelp } from './help.js';
15
+ import { runPipeline } from './pipeline/index.js';
16
+ import { wizard, askAboutExamples } from './wizard.js';
17
+ import { detectFramework, findMainCssFile } from './framework.js';
18
+ import { generateSetupContent } from './setup-helper.js';
19
+ import { copyNextJsExamples } from './examples.js';
20
+ import { emit } from './pipeline/emit.js';
21
+
22
+ // Filter out command names from argv
23
+ const commandNames = ['init-css', 'nqui', 'nqui-init-css'];
24
+ const filteredArgs = process.argv.slice(2).filter(arg => !commandNames.includes(arg));
25
+
26
+ const args = minimist(filteredArgs, {
27
+ boolean: ['js', 'tokens-only', 'force', 'dry-run', 'wizard', 'setup', 'help', 'version', 'local-copy'],
28
+ alias: { h: 'help', v: 'version' },
29
+ });
76
30
 
77
- return 'src/index.css';
31
+ if (args.help) {
32
+ printHelp();
33
+ process.exit(0);
78
34
  }
79
35
 
80
- // Get default path based on project type (uses detection functions)
81
- function getDefaultPath(projectType) {
82
- switch (projectType) {
83
- case 'nextjs':
84
- return findNextJsCssFile();
85
- case 'vite':
86
- return findViteCssFile();
87
- case 'remix':
88
- return 'app/root.css';
89
- case 'create-react-app':
90
- return 'src/index.css';
91
- default:
92
- return 'nqui.css';
93
- }
36
+ if (args.version) {
37
+ const root = getPackageRoot();
38
+ const pkg = JSON.parse(readFileSync(resolve(root, 'package.json'), 'utf8'));
39
+ console.log(pkg.version);
40
+ process.exit(0);
94
41
  }
95
42
 
96
- function findProjectType() {
97
- // Check for framework-specific files
98
- // Next.js: check for next.config.js/ts OR app directory OR src/app directory
99
- if (existsSync(join(process.cwd(), 'next.config.js')) ||
100
- existsSync(join(process.cwd(), 'next.config.ts')) ||
101
- existsSync(join(process.cwd(), 'app')) ||
102
- existsSync(join(process.cwd(), 'src', 'app'))) {
103
- return 'nextjs';
104
- }
105
- if (existsSync(join(process.cwd(), 'vite.config.js')) ||
106
- existsSync(join(process.cwd(), 'vite.config.ts'))) {
107
- return 'vite';
108
- }
109
- if (existsSync(join(process.cwd(), 'remix.config.js'))) {
110
- return 'remix';
111
- }
112
- if (existsSync(join(process.cwd(), 'src', 'index.css'))) {
113
- return 'create-react-app';
114
- }
115
- return null;
116
- }
43
+ const output = args._[0] || 'nqui/index.css';
117
44
 
118
- function extractStandaloneCSS() {
119
- // If we're in a published package, use dist/styles.css directly
120
- if (isPublishedPackage) {
121
- if (!existsSync(distStylesPath)) {
122
- throw new Error(`Published package CSS file not found: ${distStylesPath}`);
123
- }
124
- return readFileSync(distStylesPath, 'utf-8');
125
- }
126
-
127
- // Read the source CSS files (for local development)
128
- if (!existsSync(indexCssPath)) {
129
- throw new Error(`Source CSS file not found: ${indexCssPath}`);
130
- }
131
- if (!existsSync(colorsCssPath)) {
132
- throw new Error(`Colors CSS file not found: ${colorsCssPath}`);
133
- }
134
-
135
- let indexCss = readFileSync(indexCssPath, 'utf-8');
136
- let colorsCss = readFileSync(colorsCssPath, 'utf-8');
137
-
138
- // Extract :root and .dark blocks from colors.css (they're wrapped in @layer base)
139
- // We need to unwrap them and merge with index.css's :root and .dark
140
- const colorsRootMatch = colorsCss.match(/@layer base\s*\{\s*:root\s*\{([^}]+(?:\{[^}]*\}[^}]*)*)\}\s*\.dark\s*\{([^}]+(?:\{[^}]*\}[^}]*)*)\}\s*\}/s);
141
-
142
- let colorsRootContent = '';
143
- let colorsDarkContent = '';
144
-
145
- if (colorsRootMatch) {
146
- colorsRootContent = colorsRootMatch[1].trim();
147
- colorsDarkContent = colorsRootMatch[2].trim();
148
- } else {
149
- // Fallback: try to extract without @layer base wrapper
150
- const rootMatch = colorsCss.match(/:root\s*\{([^}]+(?:\{[^}]*\}[^}]*)*)\}/s);
151
- const darkMatch = colorsCss.match(/\.dark\s*\{([^}]+(?:\{[^}]*\}[^}]*)*)\}/s);
152
- if (rootMatch) colorsRootContent = rootMatch[1].trim();
153
- if (darkMatch) colorsDarkContent = darkMatch[1].trim();
154
- }
155
-
156
- // Remove imports that require build tools (users should handle these in their own setup)
157
- // Keep only the design tokens and variables
158
- indexCss = indexCss
159
- .replace(/@import\s+["']tailwindcss["'];?\s*\n/g, '')
160
- .replace(/@import\s+["']tw-animate-css["'];?\s*\n/g, '')
161
- .replace(/@import\s+["']shadcn\/tailwind\.css["'];?\s*\n/g, '')
162
- .replace(/@import\s+["']@fontsource-variable\/inter["'];?\s*\n/g, '')
163
- .replace(/@import\s+["']\.\/styles\/colors\.css["'];?\s*\n/g, '')
164
- .replace(/\/\*\s*Import enhanced color system\s*\*\//g, '');
165
-
166
- // Extract :root and .dark blocks from index.css
167
- const indexRootMatch = indexCss.match(/:root\s*\{([^}]+(?:\{[^}]*\}[^}]*)*)\}/s);
168
- const indexDarkMatch = indexCss.match(/\.dark\s*\{([^}]+(?:\{[^}]*\}[^}]*)*)\}/s);
169
-
170
- let indexRootContent = '';
171
- let indexDarkContent = '';
172
-
173
- if (indexRootMatch) indexRootContent = indexRootMatch[1].trim();
174
- if (indexDarkMatch) indexDarkContent = indexDarkMatch[1].trim();
175
-
176
- // Merge :root blocks (colors.css first, then index.css)
177
- const mergedRootContent = colorsRootContent
178
- ? colorsRootContent + '\n\n /* Additional variables from index.css */\n ' + indexRootContent
179
- : indexRootContent;
180
-
181
- // Merge .dark blocks (colors.css first, then index.css)
182
- const mergedDarkContent = colorsDarkContent
183
- ? colorsDarkContent + '\n\n /* Additional variables from index.css */\n ' + indexDarkContent
184
- : indexDarkContent;
185
-
186
- // Replace :root and .dark in index.css with merged versions
187
- if (indexRootMatch) {
188
- indexCss = indexCss.replace(/:root\s*\{[^}]+(?:\{[^}]*\}[^}]*)*\}/s, `:root {\n ${mergedRootContent}\n}`);
189
- }
190
-
191
- if (indexDarkMatch) {
192
- indexCss = indexCss.replace(/\.dark\s*\{[^}]+(?:\{[^}]*\}[^}]*)*\}/s, `.dark {\n ${mergedDarkContent}\n}`);
193
- }
194
-
195
- // Remove duplicate @layer base blocks (there are two identical ones in index.css)
196
- // Match @layer base blocks with proper brace counting
197
- const lines = indexCss.split('\n');
198
- let inLayerBase = false;
199
- let layerBaseStart = -1;
200
- let braceCount = 0;
201
- const layerBaseBlocks = [];
202
-
203
- for (let i = 0; i < lines.length; i++) {
204
- const line = lines[i];
205
- if (line.includes('@layer base')) {
206
- if (!inLayerBase) {
207
- inLayerBase = true;
208
- layerBaseStart = i;
209
- braceCount = (line.match(/\{/g) || []).length - (line.match(/\}/g) || []).length;
210
- } else {
211
- braceCount += (line.match(/\{/g) || []).length - (line.match(/\}/g) || []).length;
212
- }
213
- } else if (inLayerBase) {
214
- braceCount += (line.match(/\{/g) || []).length - (line.match(/\}/g) || []).length;
215
- if (braceCount === 0) {
216
- layerBaseBlocks.push({ start: layerBaseStart, end: i });
217
- inLayerBase = false;
218
- }
219
- }
220
- }
221
-
222
- // If we found duplicate @layer base blocks, remove all but the first
223
- if (layerBaseBlocks.length > 1) {
224
- const firstBlock = layerBaseBlocks[0];
225
- const firstBlockContent = lines.slice(firstBlock.start, firstBlock.end + 1).join('\n');
226
-
227
- // Check if all blocks are identical
228
- const allIdentical = layerBaseBlocks.every(block => {
229
- const blockContent = lines.slice(block.start, block.end + 1).join('\n');
230
- return blockContent === firstBlockContent;
231
- });
232
-
233
- if (allIdentical) {
234
- // Remove all but the first block (working backwards to preserve indices)
235
- for (let i = layerBaseBlocks.length - 1; i > 0; i--) {
236
- const block = layerBaseBlocks[i];
237
- lines.splice(block.start, block.end - block.start + 1);
238
- }
239
- indexCss = lines.join('\n');
240
- }
241
- }
242
-
243
- // The :root and .dark blocks are already merged into indexCss
244
- // Now we just need to add a comment header
245
- let combinedCss = indexCss;
246
-
247
- // Add comment before :root if it doesn't already have one
248
- if (combinedCss.includes(':root') && !combinedCss.includes('nqui Color System')) {
249
- const rootIndex = combinedCss.indexOf(':root');
250
- combinedCss = combinedCss.slice(0, rootIndex) +
251
- '/* ============================================\n' +
252
- ' nqui Color System & Design Tokens\n' +
253
- ' ============================================ */\n\n' +
254
- combinedCss.slice(rootIndex);
255
- }
256
-
257
- // Clean up extra blank lines
258
- combinedCss = combinedCss.replace(/\n{4,}/g, '\n\n\n');
259
-
260
- // Add header comment
261
- const header = `/* nqui Design System CSS
262
- *
263
- * This file contains ALL design tokens, CSS variables, and color scales from nqui.
264
- * It includes everything the library needs to style components correctly.
265
- *
266
- * IMPORTANT: This file does NOT include Tailwind CSS imports.
267
- * You must have Tailwind CSS configured in your project.
268
- *
269
- * For Tailwind CSS v4, add this at the TOP of your CSS file:
270
- * @import "tailwindcss";
271
- *
272
- * For Tailwind CSS v3, configure it in your tailwind.config.js
45
+ /**
46
+ * Generate index.css that imports from library package
47
+ */
48
+ function generateIndexCssContent() {
49
+ return `/* nqui Design System
273
50
  *
274
- * This file includes:
275
- * - All CSS variables (--primary, --background, --foreground, etc.)
276
- * - Complete color scales (100-600) for all semantic colors
277
- * - Light and dark mode support
278
- * - Base layer styles
279
- * - Utility animations
51
+ * This file imports nqui styles from the library package.
52
+ * Import this file in your main CSS file (e.g. globals.css)
280
53
  *
281
- * Generated by: npx nqui init-css
282
- * Do not edit manually - regenerate if nqui is updated
54
+ * Usage in your globals.css:
55
+ * @import "./nqui/index.css";
283
56
  */
284
57
 
58
+ @import "@nqlib/nqui/styles";
285
59
  `;
286
-
287
- return header + combinedCss;
288
- }
289
-
290
- function getFrameworkDirectives(projectType) {
291
- switch (projectType) {
292
- case 'nextjs':
293
- return `@import "tailwindcss";
294
- @source "./**/*.{js,ts,jsx,tsx,mdx}";
295
- @source "../components/**/*.{js,ts,jsx,tsx,mdx}";
296
- @source "../node_modules/@nqlib/nqui/dist/**/*.js";
297
- @import "../node_modules/tw-animate-css/dist/tw-animate.css";
298
- @custom-variant dark (&:is(.dark *));
299
-
300
- `;
301
- case 'vite':
302
- case 'create-react-app':
303
- return `@import "tailwindcss";
304
- @import "../node_modules/tw-animate-css/dist/tw-animate.css";
305
-
306
- `;
307
- case 'remix':
308
- return `@import "tailwindcss";
309
- @import "../node_modules/tw-animate-css/dist/tw-animate.css";
310
-
311
- `;
312
- default:
313
- return '';
314
- }
315
- }
316
-
317
- // Function to ask user for input
318
- function askQuestion(question) {
319
- const rl = createInterface({
320
- input: process.stdin,
321
- output: process.stdout,
322
- });
323
-
324
- return new Promise((resolve) => {
325
- rl.question(question, (answer) => {
326
- rl.close();
327
- resolve(answer.trim().toLowerCase());
328
- });
329
- });
330
- }
331
-
332
- // Function to find Next.js page.tsx file
333
- function findNextJsPageFile() {
334
- const possiblePaths = [
335
- 'src/app/page.tsx',
336
- 'app/page.tsx',
337
- ];
338
-
339
- for (const path of possiblePaths) {
340
- const fullPath = join(process.cwd(), path);
341
- if (existsSync(fullPath)) {
342
- return path;
343
- }
344
- }
345
-
346
- // Default fallback based on directory structure
347
- if (existsSync(join(process.cwd(), 'src', 'app'))) {
348
- return 'src/app/page.tsx';
349
- }
350
- return 'app/page.tsx';
351
- }
352
-
353
- // Function to find Next.js layout.tsx file
354
- function findNextJsLayoutFile() {
355
- const possiblePaths = [
356
- 'src/app/layout.tsx',
357
- 'app/layout.tsx',
358
- ];
359
-
360
- for (const path of possiblePaths) {
361
- const fullPath = join(process.cwd(), path);
362
- if (existsSync(fullPath)) {
363
- return path;
364
- }
365
- }
366
-
367
- // Default fallback based on directory structure
368
- if (existsSync(join(process.cwd(), 'src', 'app'))) {
369
- return 'src/app/layout.tsx';
370
- }
371
- return 'app/layout.tsx';
372
- }
373
-
374
- // Function to copy example files for Next.js
375
- async function copyNextJsExamples() {
376
- const pageExamplePath = join(examplesDir, 'nextjs-page.tsx');
377
- const layoutExamplePath = join(examplesDir, 'nextjs-layout.tsx');
378
-
379
- if (!existsSync(pageExamplePath) || !existsSync(layoutExamplePath)) {
380
- console.log('⚠️ Example files not found. Skipping example copy.');
381
- return;
382
- }
383
-
384
- const targetPagePath = findNextJsPageFile();
385
- const targetLayoutPath = findNextJsLayoutFile();
386
- const fullPagePath = resolve(process.cwd(), targetPagePath);
387
- const fullLayoutPath = resolve(process.cwd(), targetLayoutPath);
388
-
389
- // Check if files exist
390
- const pageExists = existsSync(fullPagePath);
391
- const layoutExists = existsSync(fullLayoutPath);
392
-
393
- if (pageExists || layoutExists) {
394
- console.log('\n📄 Found existing Next.js files:');
395
- if (pageExists) console.log(` - ${targetPagePath}`);
396
- if (layoutExists) console.log(` - ${targetLayoutPath}`);
397
-
398
- const overwrite = await askQuestion('\n Do you want to overwrite them with nqui examples? (y/n): ');
399
- if (overwrite !== 'y' && overwrite !== 'yes') {
400
- console.log(' Skipping example files...');
401
- return;
402
- }
403
- }
404
-
405
- // Create directories if needed
406
- const pageDir = dirname(fullPagePath);
407
- const layoutDir = dirname(fullLayoutPath);
408
- if (!existsSync(pageDir)) {
409
- mkdirSync(pageDir, { recursive: true });
410
- }
411
- if (!existsSync(layoutDir)) {
412
- mkdirSync(layoutDir, { recursive: true });
413
- }
414
-
415
- // Copy example files
416
- try {
417
- const pageContent = readFileSync(pageExamplePath, 'utf-8');
418
- const layoutContent = readFileSync(layoutExamplePath, 'utf-8');
419
-
420
- writeFileSync(fullPagePath, pageContent, 'utf-8');
421
- writeFileSync(fullLayoutPath, layoutContent, 'utf-8');
422
-
423
- console.log(`✅ Copied example page: ${targetPagePath}`);
424
- console.log(`✅ Copied example layout: ${targetLayoutPath}`);
425
- console.log('\n📝 Note: Make sure to install next-themes if not already installed:');
426
- console.log(' npm install next-themes');
427
- } catch (error) {
428
- console.error('❌ Error copying example files:', error.message);
429
- }
430
60
  }
431
61
 
432
- async function main() {
433
- const args = process.argv.slice(2);
434
- let targetPath = args[0];
435
-
436
- // Ignore command names that might be passed as arguments when called via npx
437
- // Common command names: 'init-css', 'nqui', 'nqui-init-css'
438
- if (targetPath === 'init-css' || targetPath === 'nqui' || targetPath === 'nqui-init-css') {
439
- targetPath = args[1] || undefined;
440
- }
441
-
442
- // If targetPath doesn't look like a file path (no extension, no directory separators), ignore it
443
- // This prevents treating command names or other non-path arguments as file paths
444
- if (targetPath && !targetPath.includes('.') && !targetPath.includes('/') && !targetPath.includes('\\')) {
445
- targetPath = undefined;
446
- }
447
-
62
+ (async () => {
448
63
  try {
449
- // Extract standalone CSS
450
- const standaloneCss = extractStandaloneCSS();
64
+ const root = getPackageRoot();
65
+ const framework = detectFramework();
66
+ const wiz = args.wizard ? await wizard() : {};
451
67
 
452
- let finalTargetPath;
453
- let projectType = null;
68
+ const outCssPath = resolve(process.cwd(), output);
69
+ const useLibraryImport = !args['local-copy']; // Default to library import
454
70
 
455
- if (targetPath) {
456
- // User provided a custom path
457
- finalTargetPath = resolve(process.cwd(), targetPath);
458
- projectType = findProjectType();
71
+ if (useLibraryImport) {
72
+ // Create index.css that imports from library
73
+ const indexCssContent = generateIndexCssContent();
74
+ emit(outCssPath, indexCssContent, { force: args.force, dryRun: args['dry-run'] });
459
75
  } else {
460
- // Auto-detect project type
461
- projectType = findProjectType();
462
-
463
- if (projectType) {
464
- const defaultPath = getDefaultPath(projectType);
465
- finalTargetPath = resolve(process.cwd(), defaultPath);
466
- console.log(`📦 Detected ${projectType} project`);
467
- console.log(` Found CSS file: ${defaultPath}`);
468
- } else {
469
- // Fallback: create a new CSS file
470
- finalTargetPath = resolve(process.cwd(), 'nqui.css');
471
- console.log('⚠️ Could not detect project type.');
472
- console.log(` Creating standalone file: nqui.css`);
473
- console.log(' You can import this file manually in your app.');
474
- }
475
- }
476
-
477
- // Create target directory if it doesn't exist
478
- const targetDir = dirname(finalTargetPath);
479
- if (!existsSync(targetDir)) {
480
- mkdirSync(targetDir, { recursive: true });
76
+ // Original behavior: generate local copy
77
+ await runPipeline({
78
+ root,
79
+ outCss: outCssPath,
80
+ outJs: args.js || wiz.js
81
+ ? resolve(process.cwd(), output.replace('.css', '.tokens.js'))
82
+ : null,
83
+ tokensOnly: args['tokens-only'] || wiz.tokensOnly,
84
+ force: args.force,
85
+ dryRun: args['dry-run'],
86
+ });
481
87
  }
482
88
 
483
- // Get framework-specific directives
484
- const frameworkDirectives = projectType ? getFrameworkDirectives(projectType) : '';
485
- const fullCss = frameworkDirectives + standaloneCss;
486
-
487
- // Check if target file exists
488
- if (existsSync(finalTargetPath)) {
489
- console.log(`\n⚠️ File already exists: ${finalTargetPath}`);
490
-
491
- // Read existing content
492
- const existingContent = readFileSync(finalTargetPath, 'utf-8');
493
-
494
- // Check if nqui CSS is already present
495
- if (existingContent.includes('nqui Design System CSS') ||
496
- existingContent.includes('nqui Color System')) {
497
- console.log(' ⚠️ nqui CSS already present in file.');
498
- const update = await askQuestion(' Do you want to update it? (y/n): ');
499
- if (update !== 'y' && update !== 'yes') {
500
- console.log(' Skipping...');
501
- return;
502
- }
503
- // Remove old nqui CSS and add new
504
- const cleaned = existingContent.replace(
505
- /\/\* nqui Design System CSS[\s\S]*?(?=\n\n|\n$|$)/,
506
- ''
507
- ).replace(
508
- /\/\* ============================================[\s\S]*?============================================ \*\/[\s\S]*?}/g,
509
- ''
510
- );
511
- const hasTailwindImport = cleaned.includes('@import "tailwindcss"');
512
- if (hasTailwindImport && frameworkDirectives) {
513
- writeFileSync(finalTargetPath, cleaned.trim() + '\n\n' + standaloneCss, 'utf-8');
514
- } else {
515
- writeFileSync(finalTargetPath, fullCss + '\n\n' + cleaned.trim(), 'utf-8');
516
- }
517
- console.log(`✅ Updated nqui CSS in: ${finalTargetPath}`);
518
- console.log('\n✨ Done!');
519
- return;
520
- }
521
-
522
- // Ask user what to do
523
- console.log('\n What would you like to do?');
524
- console.log(' 1. Overwrite the file (replace all content)');
525
- console.log(' 2. Append nqui CSS to the file');
526
- console.log(' 3. Create a separate file (nqui.css) and import it');
89
+ // Generate setup helper file (always, unless dry-run)
90
+ if (!args['dry-run'] && (args.setup || !args['tokens-only'])) {
91
+ const setupContent = generateSetupContent(framework, output, useLibraryImport);
92
+ const setupPath = resolve(process.cwd(), dirname(output), 'nqui-setup.css');
93
+ emit(setupPath, setupContent, { force: args.force, dryRun: false });
527
94
 
528
- const choice = await askQuestion('\n Enter your choice (1/2/3): ');
95
+ const mainCssFile = findMainCssFile(framework);
529
96
 
530
- if (choice === '1') {
531
- // Overwrite
532
- const hasTailwindImport = existingContent.includes('@import "tailwindcss"');
533
- if (hasTailwindImport && frameworkDirectives) {
534
- // Keep existing Tailwind setup, add nqui CSS
535
- writeFileSync(finalTargetPath, existingContent + '\n\n' + standaloneCss, 'utf-8');
536
- } else {
537
- // Replace with framework directives + nqui CSS
538
- writeFileSync(finalTargetPath, fullCss, 'utf-8');
539
- }
540
- console.log(`✅ Updated: ${finalTargetPath}`);
541
- } else if (choice === '2') {
542
- // Append
543
- const hasTailwindImport = existingContent.includes('@import "tailwindcss"');
544
- if (hasTailwindImport && frameworkDirectives) {
545
- writeFileSync(finalTargetPath, existingContent + '\n\n' + standaloneCss, 'utf-8');
546
- } else {
547
- writeFileSync(finalTargetPath, fullCss + '\n\n' + existingContent, 'utf-8');
548
- }
549
- console.log(`✅ Appended nqui CSS to: ${finalTargetPath}`);
550
- } else if (choice === '3') {
551
- // Create separate file
552
- const separatePath = join(dirname(finalTargetPath), 'nqui.css');
553
- writeFileSync(separatePath, standaloneCss, 'utf-8');
554
- console.log(`✅ Created: ${separatePath}`);
555
- console.log(`\n📝 Next step: Import this file in ${finalTargetPath}:`);
556
- const relativeSeparatePath = separatePath.replace(process.cwd() + '/', '');
557
- const relativeTargetPath = finalTargetPath.replace(process.cwd() + '/', '');
558
- const importPath = relativeSeparatePath.replace(dirname(relativeTargetPath) + '/', './');
559
- console.log(` @import "${importPath}";`);
560
- console.log('\n✨ Done!');
561
- return;
562
- } else {
563
- console.log(' Invalid choice. Skipping...');
564
- return;
565
- }
566
- } else {
567
- // Create new file with framework directives + nqui CSS
568
- writeFileSync(finalTargetPath, fullCss, 'utf-8');
569
- console.log(`✅ Created: ${finalTargetPath}`);
570
- if (frameworkDirectives) {
571
- console.log(` Added ${projectType}-specific Tailwind setup`);
572
- }
97
+ console.log(`\n📝 Next steps:`);
98
+ console.log(` 1. Copy the contents of ${dirname(output)}/nqui-setup.css`);
99
+ console.log(` 2. Paste them at the VERY TOP of your main CSS file`);
100
+ console.log(` (e.g. ${mainCssFile})\n`);
573
101
  }
574
102
 
575
- // Provide next steps
576
- console.log('\n📝 Next steps:');
577
- if (!frameworkDirectives) {
578
- console.log(' 1. Ensure Tailwind CSS is configured in your project');
579
- console.log(' 2. Add Tailwind imports at the top of this CSS file if needed');
103
+ // Ask about copying examples (if not in wizard mode, ask for Next.js projects)
104
+ let shouldCopyExamples = wiz.copyExamples;
105
+ if (!args['dry-run'] && !shouldCopyExamples && framework === 'nextjs' && !args.wizard) {
106
+ shouldCopyExamples = await askAboutExamples(framework);
580
107
  }
581
- console.log(' 3. The CSS file is ready to use!');
582
108
 
583
- // Offer to copy example files for Next.js
584
- if (projectType === 'nextjs') {
585
- const copyExamples = await askQuestion('\n Would you like to copy example Next.js files (page.tsx, layout.tsx)? (y/n): ');
586
- if (copyExamples === 'y' || copyExamples === 'yes') {
587
- await copyNextJsExamples();
109
+ // Copy example files if requested
110
+ if (!args['dry-run'] && shouldCopyExamples) {
111
+ const copied = await copyNextJsExamples(framework, { force: args.force });
112
+ if (copied && copied.length === 0) {
113
+ // Files were skipped (user said no to overwrite)
114
+ console.log('\n⏭️ Example files skipped. Run with --force to overwrite existing files.\n');
588
115
  }
589
116
  }
590
117
 
591
- console.log('\n✨ Done!');
592
- } catch (error) {
593
- console.error('❌ Error:', error.message);
594
- if (error.message.includes('not found')) {
595
- console.error(' Please ensure you are running this from the nqui package directory');
596
- console.error(' or that the source CSS files exist.');
118
+ if (!args['dry-run']) {
119
+ console.log(`\n✅ nqui installed successfully`);
597
120
  }
121
+ } catch (err) {
122
+ console.error('❌ Error:', err.message);
598
123
  process.exit(1);
599
124
  }
600
- }
601
-
602
- main().catch((error) => {
603
- console.error('❌ Unexpected error:', error);
604
- process.exit(1);
605
- });
606
-
125
+ })();