create-tauri-ui 0.3.2 → 1.0.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 (636) hide show
  1. package/README.md +188 -97
  2. package/assets/debug-panel/debug-events.ts.tmpl +97 -0
  3. package/assets/debug-panel/debug-panel.tsx.tmpl +1354 -0
  4. package/assets/debug-panel/tauri.ts.tmpl +53 -0
  5. package/assets/release.yml.tmpl +74 -0
  6. package/dist/index.mjs +483 -52
  7. package/index.js +2 -2
  8. package/package.json +53 -55
  9. package/templates/.shared/.github/workflows/release.yml +0 -112
  10. package/templates/.shared/src-tauri/Cargo.lock +0 -3835
  11. package/templates/.shared/src-tauri/Cargo.toml +0 -39
  12. package/templates/.shared/src-tauri/build.rs +0 -3
  13. package/templates/.shared/src-tauri/icons/128x128.png +0 -0
  14. package/templates/.shared/src-tauri/icons/128x128@2x.png +0 -0
  15. package/templates/.shared/src-tauri/icons/32x32.png +0 -0
  16. package/templates/.shared/src-tauri/icons/Square107x107Logo.png +0 -0
  17. package/templates/.shared/src-tauri/icons/Square142x142Logo.png +0 -0
  18. package/templates/.shared/src-tauri/icons/Square150x150Logo.png +0 -0
  19. package/templates/.shared/src-tauri/icons/Square284x284Logo.png +0 -0
  20. package/templates/.shared/src-tauri/icons/Square30x30Logo.png +0 -0
  21. package/templates/.shared/src-tauri/icons/Square310x310Logo.png +0 -0
  22. package/templates/.shared/src-tauri/icons/Square44x44Logo.png +0 -0
  23. package/templates/.shared/src-tauri/icons/Square71x71Logo.png +0 -0
  24. package/templates/.shared/src-tauri/icons/Square89x89Logo.png +0 -0
  25. package/templates/.shared/src-tauri/icons/StoreLogo.png +0 -0
  26. package/templates/.shared/src-tauri/icons/android/mipmap-hdpi/ic_launcher.png +0 -0
  27. package/templates/.shared/src-tauri/icons/android/mipmap-hdpi/ic_launcher_foreground.png +0 -0
  28. package/templates/.shared/src-tauri/icons/android/mipmap-hdpi/ic_launcher_round.png +0 -0
  29. package/templates/.shared/src-tauri/icons/android/mipmap-mdpi/ic_launcher.png +0 -0
  30. package/templates/.shared/src-tauri/icons/android/mipmap-mdpi/ic_launcher_foreground.png +0 -0
  31. package/templates/.shared/src-tauri/icons/android/mipmap-mdpi/ic_launcher_round.png +0 -0
  32. package/templates/.shared/src-tauri/icons/android/mipmap-xhdpi/ic_launcher.png +0 -0
  33. package/templates/.shared/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_foreground.png +0 -0
  34. package/templates/.shared/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_round.png +0 -0
  35. package/templates/.shared/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher.png +0 -0
  36. package/templates/.shared/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_foreground.png +0 -0
  37. package/templates/.shared/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_round.png +0 -0
  38. package/templates/.shared/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher.png +0 -0
  39. package/templates/.shared/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_foreground.png +0 -0
  40. package/templates/.shared/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_round.png +0 -0
  41. package/templates/.shared/src-tauri/icons/icon.icns +0 -0
  42. package/templates/.shared/src-tauri/icons/icon.ico +0 -0
  43. package/templates/.shared/src-tauri/icons/icon.png +0 -0
  44. package/templates/.shared/src-tauri/icons/ios/AppIcon-20x20@1x.png +0 -0
  45. package/templates/.shared/src-tauri/icons/ios/AppIcon-20x20@2x-1.png +0 -0
  46. package/templates/.shared/src-tauri/icons/ios/AppIcon-20x20@2x.png +0 -0
  47. package/templates/.shared/src-tauri/icons/ios/AppIcon-20x20@3x.png +0 -0
  48. package/templates/.shared/src-tauri/icons/ios/AppIcon-29x29@1x.png +0 -0
  49. package/templates/.shared/src-tauri/icons/ios/AppIcon-29x29@2x-1.png +0 -0
  50. package/templates/.shared/src-tauri/icons/ios/AppIcon-29x29@2x.png +0 -0
  51. package/templates/.shared/src-tauri/icons/ios/AppIcon-29x29@3x.png +0 -0
  52. package/templates/.shared/src-tauri/icons/ios/AppIcon-40x40@1x.png +0 -0
  53. package/templates/.shared/src-tauri/icons/ios/AppIcon-40x40@2x-1.png +0 -0
  54. package/templates/.shared/src-tauri/icons/ios/AppIcon-40x40@2x.png +0 -0
  55. package/templates/.shared/src-tauri/icons/ios/AppIcon-40x40@3x.png +0 -0
  56. package/templates/.shared/src-tauri/icons/ios/AppIcon-512@2x.png +0 -0
  57. package/templates/.shared/src-tauri/icons/ios/AppIcon-60x60@2x.png +0 -0
  58. package/templates/.shared/src-tauri/icons/ios/AppIcon-60x60@3x.png +0 -0
  59. package/templates/.shared/src-tauri/icons/ios/AppIcon-76x76@1x.png +0 -0
  60. package/templates/.shared/src-tauri/icons/ios/AppIcon-76x76@2x.png +0 -0
  61. package/templates/.shared/src-tauri/icons/ios/AppIcon-83.5x83.5@2x.png +0 -0
  62. package/templates/.shared/src-tauri/src/main.rs +0 -22
  63. package/templates/.shared/src-tauri/tauri.conf.json +0 -71
  64. package/templates/next/.env +0 -1
  65. package/templates/next/.github/workflows/release.yml +0 -108
  66. package/templates/next/.vscode/extensions.json +0 -3
  67. package/templates/next/LICENSE +0 -21
  68. package/templates/next/README.md +0 -95
  69. package/templates/next/app-icon.png +0 -0
  70. package/templates/next/components.json +0 -16
  71. package/templates/next/next-env.d.ts +0 -5
  72. package/templates/next/next.config.js +0 -14
  73. package/templates/next/package.json +0 -87
  74. package/templates/next/pnpm-lock.yaml +0 -4911
  75. package/templates/next/postcss.config.js +0 -6
  76. package/templates/next/prettier.config.js +0 -35
  77. package/templates/next/public/avatars/01.png +0 -0
  78. package/templates/next/public/avatars/02.png +0 -0
  79. package/templates/next/public/avatars/03.png +0 -0
  80. package/templates/next/public/avatars/04.png +0 -0
  81. package/templates/next/public/avatars/05.png +0 -0
  82. package/templates/next/src/app/examples/authentication/components/user-auth-form.tsx +0 -71
  83. package/templates/next/src/app/examples/authentication/page.tsx +0 -88
  84. package/templates/next/src/app/examples/cards/components/cookie-settings.tsx +0 -60
  85. package/templates/next/src/app/examples/cards/components/create-account.tsx +0 -60
  86. package/templates/next/src/app/examples/cards/components/date-picker.tsx +0 -20
  87. package/templates/next/src/app/examples/cards/components/github-card.tsx +0 -88
  88. package/templates/next/src/app/examples/cards/components/notifications.tsx +0 -53
  89. package/templates/next/src/app/examples/cards/components/payment-method.tsx +0 -129
  90. package/templates/next/src/app/examples/cards/components/report-an-issue.tsx +0 -85
  91. package/templates/next/src/app/examples/cards/components/share-document.tsx +0 -120
  92. package/templates/next/src/app/examples/cards/components/team-members.tsx +0 -149
  93. package/templates/next/src/app/examples/cards/page.tsx +0 -76
  94. package/templates/next/src/app/examples/dashboard/components/date-range-picker.tsx +0 -65
  95. package/templates/next/src/app/examples/dashboard/components/main-nav.tsx +0 -40
  96. package/templates/next/src/app/examples/dashboard/components/overview.tsx +0 -78
  97. package/templates/next/src/app/examples/dashboard/components/recent-sales.tsx +0 -71
  98. package/templates/next/src/app/examples/dashboard/components/search.tsx +0 -13
  99. package/templates/next/src/app/examples/dashboard/components/team-switcher.tsx +0 -213
  100. package/templates/next/src/app/examples/dashboard/components/user-nav.tsx +0 -62
  101. package/templates/next/src/app/examples/dashboard/page.tsx +0 -197
  102. package/templates/next/src/app/examples/forms/account/account-form.tsx +0 -219
  103. package/templates/next/src/app/examples/forms/account/page.tsx +0 -18
  104. package/templates/next/src/app/examples/forms/appearance/appearance-form.tsx +0 -164
  105. package/templates/next/src/app/examples/forms/appearance/page.tsx +0 -18
  106. package/templates/next/src/app/examples/forms/components/profile-form.tsx +0 -191
  107. package/templates/next/src/app/examples/forms/components/sidebar-nav.tsx +0 -44
  108. package/templates/next/src/app/examples/forms/display/display-form.tsx +0 -132
  109. package/templates/next/src/app/examples/forms/display/page.tsx +0 -17
  110. package/templates/next/src/app/examples/forms/layout.tsx +0 -59
  111. package/templates/next/src/app/examples/forms/notifications/notifications-form.tsx +0 -222
  112. package/templates/next/src/app/examples/forms/notifications/page.tsx +0 -17
  113. package/templates/next/src/app/examples/forms/page.tsx +0 -17
  114. package/templates/next/src/app/examples/layout.tsx +0 -7
  115. package/templates/next/src/app/examples/music/components/album-artwork.tsx +0 -95
  116. package/templates/next/src/app/examples/music/components/menu.tsx +0 -200
  117. package/templates/next/src/app/examples/music/components/podcast-empty-placeholder.tsx +0 -64
  118. package/templates/next/src/app/examples/music/components/sidebar.tsx +0 -204
  119. package/templates/next/src/app/examples/music/data/albums.ts +0 -71
  120. package/templates/next/src/app/examples/music/data/playlists.ts +0 -16
  121. package/templates/next/src/app/examples/music/page.tsx +0 -141
  122. package/templates/next/src/app/examples/playground/components/code-viewer.tsx +0 -89
  123. package/templates/next/src/app/examples/playground/components/maxlength-selector.tsx +0 -55
  124. package/templates/next/src/app/examples/playground/components/model-selector.tsx +0 -163
  125. package/templates/next/src/app/examples/playground/components/preset-actions.tsx +0 -122
  126. package/templates/next/src/app/examples/playground/components/preset-save.tsx +0 -44
  127. package/templates/next/src/app/examples/playground/components/preset-selector.tsx +0 -82
  128. package/templates/next/src/app/examples/playground/components/preset-share.tsx +0 -46
  129. package/templates/next/src/app/examples/playground/components/temperature-selector.tsx +0 -57
  130. package/templates/next/src/app/examples/playground/components/top-p-selector.tsx +0 -54
  131. package/templates/next/src/app/examples/playground/data/models.ts +0 -62
  132. package/templates/next/src/app/examples/playground/data/presets.ts +0 -47
  133. package/templates/next/src/app/examples/playground/page.tsx +0 -313
  134. package/templates/next/src/app/examples/tasks/components/columns.tsx +0 -120
  135. package/templates/next/src/app/examples/tasks/components/data-table-column-header.tsx +0 -71
  136. package/templates/next/src/app/examples/tasks/components/data-table-faceted-filter.tsx +0 -147
  137. package/templates/next/src/app/examples/tasks/components/data-table-pagination.tsx +0 -97
  138. package/templates/next/src/app/examples/tasks/components/data-table-row-actions.tsx +0 -69
  139. package/templates/next/src/app/examples/tasks/components/data-table-toolbar.tsx +0 -61
  140. package/templates/next/src/app/examples/tasks/components/data-table-view-options.tsx +0 -59
  141. package/templates/next/src/app/examples/tasks/components/data-table.tsx +0 -126
  142. package/templates/next/src/app/examples/tasks/components/user-nav.tsx +0 -62
  143. package/templates/next/src/app/examples/tasks/data/data.tsx +0 -71
  144. package/templates/next/src/app/examples/tasks/data/schema.ts +0 -13
  145. package/templates/next/src/app/examples/tasks/data/seed.ts +0 -20
  146. package/templates/next/src/app/examples/tasks/data/tasks.json +0 -702
  147. package/templates/next/src/app/examples/tasks/page.tsx +0 -49
  148. package/templates/next/src/app/layout.tsx +0 -47
  149. package/templates/next/src/app/page.tsx +0 -5
  150. package/templates/next/src/assets/Inter-VariableFont_slnt,wght.ttf +0 -0
  151. package/templates/next/src/assets/logo.png +0 -0
  152. package/templates/next/src/components/about-dialog.tsx +0 -111
  153. package/templates/next/src/components/example/date-picker-with-range.tsx +0 -65
  154. package/templates/next/src/components/examples-nav.tsx +0 -70
  155. package/templates/next/src/components/greeting.tsx +0 -21
  156. package/templates/next/src/components/icons.tsx +0 -156
  157. package/templates/next/src/components/menu-mode-toggle.tsx +0 -47
  158. package/templates/next/src/components/menu.tsx +0 -224
  159. package/templates/next/src/components/mode-toggle.tsx +0 -43
  160. package/templates/next/src/components/page-header.tsx +0 -52
  161. package/templates/next/src/components/style-switcher.tsx +0 -19
  162. package/templates/next/src/components/tailwind-indicator.tsx +0 -18
  163. package/templates/next/src/components/theme-provider.tsx +0 -9
  164. package/templates/next/src/components/ui/accordion.tsx +0 -60
  165. package/templates/next/src/components/ui/alert-dialog.tsx +0 -145
  166. package/templates/next/src/components/ui/alert.tsx +0 -59
  167. package/templates/next/src/components/ui/aspect-ratio.tsx +0 -7
  168. package/templates/next/src/components/ui/avatar.tsx +0 -50
  169. package/templates/next/src/components/ui/badge.tsx +0 -36
  170. package/templates/next/src/components/ui/button.tsx +0 -56
  171. package/templates/next/src/components/ui/calendar.tsx +0 -64
  172. package/templates/next/src/components/ui/card.tsx +0 -79
  173. package/templates/next/src/components/ui/checkbox.tsx +0 -30
  174. package/templates/next/src/components/ui/collapsible.tsx +0 -11
  175. package/templates/next/src/components/ui/command.tsx +0 -155
  176. package/templates/next/src/components/ui/context-menu.tsx +0 -200
  177. package/templates/next/src/components/ui/dialog.tsx +0 -123
  178. package/templates/next/src/components/ui/dropdown-menu.tsx +0 -200
  179. package/templates/next/src/components/ui/form.tsx +0 -176
  180. package/templates/next/src/components/ui/hover-card.tsx +0 -29
  181. package/templates/next/src/components/ui/input.tsx +0 -25
  182. package/templates/next/src/components/ui/label.tsx +0 -26
  183. package/templates/next/src/components/ui/menubar.tsx +0 -236
  184. package/templates/next/src/components/ui/navigation-menu.tsx +0 -128
  185. package/templates/next/src/components/ui/popover.tsx +0 -31
  186. package/templates/next/src/components/ui/progress.tsx +0 -28
  187. package/templates/next/src/components/ui/radio-group.tsx +0 -44
  188. package/templates/next/src/components/ui/scroll-area.tsx +0 -48
  189. package/templates/next/src/components/ui/select.tsx +0 -121
  190. package/templates/next/src/components/ui/separator.tsx +0 -31
  191. package/templates/next/src/components/ui/sheet.tsx +0 -144
  192. package/templates/next/src/components/ui/skeleton.tsx +0 -15
  193. package/templates/next/src/components/ui/slider.tsx +0 -28
  194. package/templates/next/src/components/ui/switch.tsx +0 -29
  195. package/templates/next/src/components/ui/table.tsx +0 -114
  196. package/templates/next/src/components/ui/tabs.tsx +0 -55
  197. package/templates/next/src/components/ui/textarea.tsx +0 -24
  198. package/templates/next/src/components/ui/toast.tsx +0 -127
  199. package/templates/next/src/components/ui/toaster.tsx +0 -35
  200. package/templates/next/src/components/ui/toggle.tsx +0 -45
  201. package/templates/next/src/components/ui/tooltip.tsx +0 -30
  202. package/templates/next/src/components/ui/use-toast.ts +0 -192
  203. package/templates/next/src/data/albums.ts +0 -71
  204. package/templates/next/src/data/playlists.ts +0 -16
  205. package/templates/next/src/hooks/use-lock-body.ts +0 -12
  206. package/templates/next/src/hooks/use-mounted.ts +0 -11
  207. package/templates/next/src/hooks/use-mutation-observer.ts +0 -20
  208. package/templates/next/src/lib/fonts.ts +0 -11
  209. package/templates/next/src/lib/utils.ts +0 -6
  210. package/templates/next/src/styles/globals.css +0 -88
  211. package/templates/next/src-tauri/Cargo.lock +0 -3835
  212. package/templates/next/src-tauri/Cargo.toml +0 -39
  213. package/templates/next/src-tauri/build.rs +0 -3
  214. package/templates/next/src-tauri/icons/128x128.png +0 -0
  215. package/templates/next/src-tauri/icons/128x128@2x.png +0 -0
  216. package/templates/next/src-tauri/icons/32x32.png +0 -0
  217. package/templates/next/src-tauri/icons/Square107x107Logo.png +0 -0
  218. package/templates/next/src-tauri/icons/Square142x142Logo.png +0 -0
  219. package/templates/next/src-tauri/icons/Square150x150Logo.png +0 -0
  220. package/templates/next/src-tauri/icons/Square284x284Logo.png +0 -0
  221. package/templates/next/src-tauri/icons/Square30x30Logo.png +0 -0
  222. package/templates/next/src-tauri/icons/Square310x310Logo.png +0 -0
  223. package/templates/next/src-tauri/icons/Square44x44Logo.png +0 -0
  224. package/templates/next/src-tauri/icons/Square71x71Logo.png +0 -0
  225. package/templates/next/src-tauri/icons/Square89x89Logo.png +0 -0
  226. package/templates/next/src-tauri/icons/StoreLogo.png +0 -0
  227. package/templates/next/src-tauri/icons/android/mipmap-hdpi/ic_launcher.png +0 -0
  228. package/templates/next/src-tauri/icons/android/mipmap-hdpi/ic_launcher_foreground.png +0 -0
  229. package/templates/next/src-tauri/icons/android/mipmap-hdpi/ic_launcher_round.png +0 -0
  230. package/templates/next/src-tauri/icons/android/mipmap-mdpi/ic_launcher.png +0 -0
  231. package/templates/next/src-tauri/icons/android/mipmap-mdpi/ic_launcher_foreground.png +0 -0
  232. package/templates/next/src-tauri/icons/android/mipmap-mdpi/ic_launcher_round.png +0 -0
  233. package/templates/next/src-tauri/icons/android/mipmap-xhdpi/ic_launcher.png +0 -0
  234. package/templates/next/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_foreground.png +0 -0
  235. package/templates/next/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_round.png +0 -0
  236. package/templates/next/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher.png +0 -0
  237. package/templates/next/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_foreground.png +0 -0
  238. package/templates/next/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_round.png +0 -0
  239. package/templates/next/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher.png +0 -0
  240. package/templates/next/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_foreground.png +0 -0
  241. package/templates/next/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_round.png +0 -0
  242. package/templates/next/src-tauri/icons/icon.icns +0 -0
  243. package/templates/next/src-tauri/icons/icon.ico +0 -0
  244. package/templates/next/src-tauri/icons/icon.png +0 -0
  245. package/templates/next/src-tauri/icons/ios/AppIcon-20x20@1x.png +0 -0
  246. package/templates/next/src-tauri/icons/ios/AppIcon-20x20@2x-1.png +0 -0
  247. package/templates/next/src-tauri/icons/ios/AppIcon-20x20@2x.png +0 -0
  248. package/templates/next/src-tauri/icons/ios/AppIcon-20x20@3x.png +0 -0
  249. package/templates/next/src-tauri/icons/ios/AppIcon-29x29@1x.png +0 -0
  250. package/templates/next/src-tauri/icons/ios/AppIcon-29x29@2x-1.png +0 -0
  251. package/templates/next/src-tauri/icons/ios/AppIcon-29x29@2x.png +0 -0
  252. package/templates/next/src-tauri/icons/ios/AppIcon-29x29@3x.png +0 -0
  253. package/templates/next/src-tauri/icons/ios/AppIcon-40x40@1x.png +0 -0
  254. package/templates/next/src-tauri/icons/ios/AppIcon-40x40@2x-1.png +0 -0
  255. package/templates/next/src-tauri/icons/ios/AppIcon-40x40@2x.png +0 -0
  256. package/templates/next/src-tauri/icons/ios/AppIcon-40x40@3x.png +0 -0
  257. package/templates/next/src-tauri/icons/ios/AppIcon-512@2x.png +0 -0
  258. package/templates/next/src-tauri/icons/ios/AppIcon-60x60@2x.png +0 -0
  259. package/templates/next/src-tauri/icons/ios/AppIcon-60x60@3x.png +0 -0
  260. package/templates/next/src-tauri/icons/ios/AppIcon-76x76@1x.png +0 -0
  261. package/templates/next/src-tauri/icons/ios/AppIcon-76x76@2x.png +0 -0
  262. package/templates/next/src-tauri/icons/ios/AppIcon-83.5x83.5@2x.png +0 -0
  263. package/templates/next/src-tauri/src/main.rs +0 -22
  264. package/templates/next/src-tauri/tauri.conf.json +0 -71
  265. package/templates/next/tailwind.config.js +0 -78
  266. package/templates/next/tsconfig.json +0 -35
  267. package/templates/sveltekit/.github/workflows/release.yml +0 -108
  268. package/templates/sveltekit/.prettierignore +0 -13
  269. package/templates/sveltekit/.prettierrc +0 -8
  270. package/templates/sveltekit/README.md +0 -1
  271. package/templates/sveltekit/app-icon.png +0 -0
  272. package/templates/sveltekit/package.json +0 -85
  273. package/templates/sveltekit/pnpm-lock.yaml +0 -4177
  274. package/templates/sveltekit/postcss.config.cjs +0 -13
  275. package/templates/sveltekit/src/app.d.ts +0 -18
  276. package/templates/sveltekit/src/app.html +0 -16
  277. package/templates/sveltekit/src/assets/Inter.var.woff2 +0 -0
  278. package/templates/sveltekit/src/index.test.ts +0 -7
  279. package/templates/sveltekit/src/lib/components/docs/TailwindIndicator.svelte +0 -10
  280. package/templates/sveltekit/src/lib/components/docs/charts/Bar.svelte +0 -152
  281. package/templates/sveltekit/src/lib/components/docs/dashboard/DashboardPage.svelte +0 -108
  282. package/templates/sveltekit/src/lib/components/docs/dashboard/MainNav.svelte +0 -31
  283. package/templates/sveltekit/src/lib/components/docs/dashboard/Overview.svelte +0 -5
  284. package/templates/sveltekit/src/lib/components/docs/dashboard/RecentSales.svelte +0 -61
  285. package/templates/sveltekit/src/lib/components/docs/dashboard/Search.svelte +0 -7
  286. package/templates/sveltekit/src/lib/components/docs/dashboard/index.ts +0 -1
  287. package/templates/sveltekit/src/lib/components/docs/examples-nav/ExampleCodeLink.svelte +0 -19
  288. package/templates/sveltekit/src/lib/components/docs/examples-nav/ExamplesNav.svelte +0 -27
  289. package/templates/sveltekit/src/lib/components/docs/examples-nav/index.ts +0 -2
  290. package/templates/sveltekit/src/lib/components/docs/icons/Apple.svelte +0 -12
  291. package/templates/sveltekit/src/lib/components/docs/icons/Aria.svelte +0 -11
  292. package/templates/sveltekit/src/lib/components/docs/icons/GitHub.svelte +0 -12
  293. package/templates/sveltekit/src/lib/components/docs/icons/Google.svelte +0 -12
  294. package/templates/sveltekit/src/lib/components/docs/icons/Logo.svelte +0 -17
  295. package/templates/sveltekit/src/lib/components/docs/icons/Minimize.svelte +0 -12
  296. package/templates/sveltekit/src/lib/components/docs/icons/Npm.svelte +0 -12
  297. package/templates/sveltekit/src/lib/components/docs/icons/PayPal.svelte +0 -12
  298. package/templates/sveltekit/src/lib/components/docs/icons/Pnpm.svelte +0 -12
  299. package/templates/sveltekit/src/lib/components/docs/icons/Radix.svelte +0 -14
  300. package/templates/sveltekit/src/lib/components/docs/icons/RadixSvelte.svelte +0 -14
  301. package/templates/sveltekit/src/lib/components/docs/icons/Tailwind.svelte +0 -12
  302. package/templates/sveltekit/src/lib/components/docs/icons/Yarn.svelte +0 -12
  303. package/templates/sveltekit/src/lib/components/docs/icons/index.ts +0 -78
  304. package/templates/sveltekit/src/lib/components/docs/index.ts +0 -6
  305. package/templates/sveltekit/src/lib/components/docs/light-switch/LightSwitch.svelte +0 -75
  306. package/templates/sveltekit/src/lib/components/docs/light-switch/index.ts +0 -1
  307. package/templates/sveltekit/src/lib/components/docs/light-switch/light-switch.ts +0 -87
  308. package/templates/sveltekit/src/lib/components/docs/light-switch/local-storage-store.ts +0 -81
  309. package/templates/sveltekit/src/lib/components/ui/accordion/Accordion.svelte +0 -11
  310. package/templates/sveltekit/src/lib/components/ui/accordion/AccordionContent.svelte +0 -19
  311. package/templates/sveltekit/src/lib/components/ui/accordion/AccordionItem.svelte +0 -13
  312. package/templates/sveltekit/src/lib/components/ui/accordion/AccordionTrigger.svelte +0 -21
  313. package/templates/sveltekit/src/lib/components/ui/accordion/index.ts +0 -4
  314. package/templates/sveltekit/src/lib/components/ui/alert/Alert.svelte +0 -29
  315. package/templates/sveltekit/src/lib/components/ui/alert/AlertDescription.svelte +0 -10
  316. package/templates/sveltekit/src/lib/components/ui/alert/AlertTitle.svelte +0 -15
  317. package/templates/sveltekit/src/lib/components/ui/alert/index.ts +0 -3
  318. package/templates/sveltekit/src/lib/components/ui/alert-dialog/AlertDialogAction.svelte +0 -12
  319. package/templates/sveltekit/src/lib/components/ui/alert-dialog/AlertDialogCancel.svelte +0 -15
  320. package/templates/sveltekit/src/lib/components/ui/alert-dialog/AlertDialogContent.svelte +0 -22
  321. package/templates/sveltekit/src/lib/components/ui/alert-dialog/AlertDialogDescription.svelte +0 -14
  322. package/templates/sveltekit/src/lib/components/ui/alert-dialog/AlertDialogFooter.svelte +0 -13
  323. package/templates/sveltekit/src/lib/components/ui/alert-dialog/AlertDialogHeader.svelte +0 -10
  324. package/templates/sveltekit/src/lib/components/ui/alert-dialog/AlertDialogOverlay.svelte +0 -15
  325. package/templates/sveltekit/src/lib/components/ui/alert-dialog/AlertDialogPortal.svelte +0 -9
  326. package/templates/sveltekit/src/lib/components/ui/alert-dialog/AlertDialogTitle.svelte +0 -11
  327. package/templates/sveltekit/src/lib/components/ui/alert-dialog/index.ts +0 -12
  328. package/templates/sveltekit/src/lib/components/ui/aspect-ratio/AspectRatio.svelte +0 -13
  329. package/templates/sveltekit/src/lib/components/ui/aspect-ratio/index.ts +0 -1
  330. package/templates/sveltekit/src/lib/components/ui/avatar/Avatar.svelte +0 -14
  331. package/templates/sveltekit/src/lib/components/ui/avatar/AvatarFallback.svelte +0 -14
  332. package/templates/sveltekit/src/lib/components/ui/avatar/AvatarImage.svelte +0 -17
  333. package/templates/sveltekit/src/lib/components/ui/avatar/index.ts +0 -3
  334. package/templates/sveltekit/src/lib/components/ui/badge/Badge.svelte +0 -39
  335. package/templates/sveltekit/src/lib/components/ui/badge/index.ts +0 -21
  336. package/templates/sveltekit/src/lib/components/ui/button/Button.svelte +0 -47
  337. package/templates/sveltekit/src/lib/components/ui/button/index.ts +0 -28
  338. package/templates/sveltekit/src/lib/components/ui/card/Card.svelte +0 -18
  339. package/templates/sveltekit/src/lib/components/ui/card/CardContent.svelte +0 -10
  340. package/templates/sveltekit/src/lib/components/ui/card/CardDescription.svelte +0 -10
  341. package/templates/sveltekit/src/lib/components/ui/card/CardFooter.svelte +0 -10
  342. package/templates/sveltekit/src/lib/components/ui/card/CardHeader.svelte +0 -10
  343. package/templates/sveltekit/src/lib/components/ui/card/CardTitle.svelte +0 -16
  344. package/templates/sveltekit/src/lib/components/ui/card/index.ts +0 -6
  345. package/templates/sveltekit/src/lib/components/ui/checkbox/Checkbox.svelte +0 -23
  346. package/templates/sveltekit/src/lib/components/ui/checkbox/index.ts +0 -1
  347. package/templates/sveltekit/src/lib/components/ui/collapsible/index.ts +0 -7
  348. package/templates/sveltekit/src/lib/components/ui/dialog/DialogContent.svelte +0 -29
  349. package/templates/sveltekit/src/lib/components/ui/dialog/DialogDescription.svelte +0 -14
  350. package/templates/sveltekit/src/lib/components/ui/dialog/DialogFooter.svelte +0 -13
  351. package/templates/sveltekit/src/lib/components/ui/dialog/DialogHeader.svelte +0 -10
  352. package/templates/sveltekit/src/lib/components/ui/dialog/DialogOverlay.svelte +0 -15
  353. package/templates/sveltekit/src/lib/components/ui/dialog/DialogPortal.svelte +0 -13
  354. package/templates/sveltekit/src/lib/components/ui/dialog/DialogTitle.svelte +0 -14
  355. package/templates/sveltekit/src/lib/components/ui/dialog/index.ts +0 -12
  356. package/templates/sveltekit/src/lib/components/ui/hover-card/HoverCardContent.svelte +0 -24
  357. package/templates/sveltekit/src/lib/components/ui/hover-card/index.ts +0 -6
  358. package/templates/sveltekit/src/lib/components/ui/input/Input.svelte +0 -30
  359. package/templates/sveltekit/src/lib/components/ui/input/index.ts +0 -1
  360. package/templates/sveltekit/src/lib/components/ui/label/Label.svelte +0 -16
  361. package/templates/sveltekit/src/lib/components/ui/label/index.ts +0 -1
  362. package/templates/sveltekit/src/lib/components/ui/progress/Progress.svelte +0 -22
  363. package/templates/sveltekit/src/lib/components/ui/progress/index.ts +0 -1
  364. package/templates/sveltekit/src/lib/components/ui/radio-group/RadioGroup.svelte +0 -13
  365. package/templates/sveltekit/src/lib/components/ui/radio-group/RadioGroupItem.svelte +0 -23
  366. package/templates/sveltekit/src/lib/components/ui/radio-group/index.ts +0 -2
  367. package/templates/sveltekit/src/lib/components/ui/select/SelectContent.svelte +0 -26
  368. package/templates/sveltekit/src/lib/components/ui/select/SelectItem.svelte +0 -29
  369. package/templates/sveltekit/src/lib/components/ui/select/SelectLabel.svelte +0 -14
  370. package/templates/sveltekit/src/lib/components/ui/select/SelectSeparator.svelte +0 -9
  371. package/templates/sveltekit/src/lib/components/ui/select/SelectTrigger.svelte +0 -21
  372. package/templates/sveltekit/src/lib/components/ui/select/index.ts +0 -10
  373. package/templates/sveltekit/src/lib/components/ui/separator/Separator.svelte +0 -22
  374. package/templates/sveltekit/src/lib/components/ui/separator/index.ts +0 -1
  375. package/templates/sveltekit/src/lib/components/ui/sheet/SheetContent.svelte +0 -27
  376. package/templates/sveltekit/src/lib/components/ui/sheet/SheetDescription.svelte +0 -11
  377. package/templates/sveltekit/src/lib/components/ui/sheet/SheetFooter.svelte +0 -13
  378. package/templates/sveltekit/src/lib/components/ui/sheet/SheetHeader.svelte +0 -10
  379. package/templates/sveltekit/src/lib/components/ui/sheet/SheetOverlay.svelte +0 -15
  380. package/templates/sveltekit/src/lib/components/ui/sheet/SheetPortal.svelte +0 -28
  381. package/templates/sveltekit/src/lib/components/ui/sheet/SheetTitle.svelte +0 -14
  382. package/templates/sveltekit/src/lib/components/ui/sheet/index.ts +0 -102
  383. package/templates/sveltekit/src/lib/components/ui/skeleton/Skeleton.svelte +0 -8
  384. package/templates/sveltekit/src/lib/components/ui/skeleton/index.ts +0 -1
  385. package/templates/sveltekit/src/lib/components/ui/slider/Slider.svelte +0 -22
  386. package/templates/sveltekit/src/lib/components/ui/slider/index.ts +0 -1
  387. package/templates/sveltekit/src/lib/components/ui/switch/Switch.svelte +0 -32
  388. package/templates/sveltekit/src/lib/components/ui/switch/index.ts +0 -1
  389. package/templates/sveltekit/src/lib/components/ui/table/Table.svelte +0 -12
  390. package/templates/sveltekit/src/lib/components/ui/table/TableBody.svelte +0 -10
  391. package/templates/sveltekit/src/lib/components/ui/table/TableCaption.svelte +0 -10
  392. package/templates/sveltekit/src/lib/components/ui/table/TableCell.svelte +0 -10
  393. package/templates/sveltekit/src/lib/components/ui/table/TableFooter.svelte +0 -10
  394. package/templates/sveltekit/src/lib/components/ui/table/TableHead.svelte +0 -16
  395. package/templates/sveltekit/src/lib/components/ui/table/TableHeader.svelte +0 -10
  396. package/templates/sveltekit/src/lib/components/ui/table/TableRow.svelte +0 -16
  397. package/templates/sveltekit/src/lib/components/ui/table/index.ts +0 -8
  398. package/templates/sveltekit/src/lib/components/ui/tabs/TabsContent.svelte +0 -20
  399. package/templates/sveltekit/src/lib/components/ui/tabs/TabsList.svelte +0 -17
  400. package/templates/sveltekit/src/lib/components/ui/tabs/TabsTrigger.svelte +0 -20
  401. package/templates/sveltekit/src/lib/components/ui/tabs/index.ts +0 -7
  402. package/templates/sveltekit/src/lib/components/ui/textarea/Textarea.svelte +0 -30
  403. package/templates/sveltekit/src/lib/components/ui/textarea/index.ts +0 -1
  404. package/templates/sveltekit/src/lib/components/ui/toggle/Toggle.svelte +0 -44
  405. package/templates/sveltekit/src/lib/components/ui/toggle/index.ts +0 -1
  406. package/templates/sveltekit/src/lib/components/ui/tooltip/TooltipContent.svelte +0 -22
  407. package/templates/sveltekit/src/lib/components/ui/tooltip/index.ts +0 -6
  408. package/templates/sveltekit/src/lib/config/components.ts +0 -306
  409. package/templates/sveltekit/src/lib/config/docs.ts +0 -356
  410. package/templates/sveltekit/src/lib/config/site.ts +0 -15
  411. package/templates/sveltekit/src/lib/types/docs.ts +0 -50
  412. package/templates/sveltekit/src/lib/types/nav.ts +0 -18
  413. package/templates/sveltekit/src/lib/utils.ts +0 -75
  414. package/templates/sveltekit/src/routes/+layout.svelte +0 -48
  415. package/templates/sveltekit/src/routes/+layout.ts +0 -4
  416. package/templates/sveltekit/src/routes/+page.svelte +0 -0
  417. package/templates/sveltekit/src/routes/+page.ts +0 -6
  418. package/templates/sveltekit/src/routes/authentication/+page.svelte +0 -57
  419. package/templates/sveltekit/src/routes/authentication/+page.ts +0 -7
  420. package/templates/sveltekit/src/routes/authentication/UserAuthForm.svelte +0 -61
  421. package/templates/sveltekit/src/routes/cards/+page.svelte +0 -26
  422. package/templates/sveltekit/src/routes/cards/+page.ts +0 -7
  423. package/templates/sveltekit/src/routes/cards/CookieSettings.svelte +0 -52
  424. package/templates/sveltekit/src/routes/cards/CreateAccount.svelte +0 -52
  425. package/templates/sveltekit/src/routes/cards/DemoContainer.svelte +0 -10
  426. package/templates/sveltekit/src/routes/cards/Notifications.svelte +0 -38
  427. package/templates/sveltekit/src/routes/cards/PaymentMethod.svelte +0 -110
  428. package/templates/sveltekit/src/routes/cards/ReportAnIssue.svelte +0 -71
  429. package/templates/sveltekit/src/routes/cards/ShareDocument.svelte +0 -91
  430. package/templates/sveltekit/src/routes/dashboard/+page.svelte +0 -5
  431. package/templates/sveltekit/src/routes/dashboard/+page.ts +0 -7
  432. package/templates/sveltekit/src/routes/forms/+page.svelte +0 -0
  433. package/templates/sveltekit/src/routes/music/+page.svelte +0 -0
  434. package/templates/sveltekit/src/routes/music/albums.ts +0 -61
  435. package/templates/sveltekit/src/routes/music/playlists.ts +0 -16
  436. package/templates/sveltekit/src/routes/playground/+page.svelte +0 -0
  437. package/templates/sveltekit/src/routes/tasks/+page.svelte +0 -0
  438. package/templates/sveltekit/src/styles/globals.css +0 -125
  439. package/templates/sveltekit/src/styles/mdsvex.css +0 -80
  440. package/templates/sveltekit/src-tauri/Cargo.lock +0 -3835
  441. package/templates/sveltekit/src-tauri/Cargo.toml +0 -39
  442. package/templates/sveltekit/src-tauri/build.rs +0 -3
  443. package/templates/sveltekit/src-tauri/icons/128x128.png +0 -0
  444. package/templates/sveltekit/src-tauri/icons/128x128@2x.png +0 -0
  445. package/templates/sveltekit/src-tauri/icons/32x32.png +0 -0
  446. package/templates/sveltekit/src-tauri/icons/Square107x107Logo.png +0 -0
  447. package/templates/sveltekit/src-tauri/icons/Square142x142Logo.png +0 -0
  448. package/templates/sveltekit/src-tauri/icons/Square150x150Logo.png +0 -0
  449. package/templates/sveltekit/src-tauri/icons/Square284x284Logo.png +0 -0
  450. package/templates/sveltekit/src-tauri/icons/Square30x30Logo.png +0 -0
  451. package/templates/sveltekit/src-tauri/icons/Square310x310Logo.png +0 -0
  452. package/templates/sveltekit/src-tauri/icons/Square44x44Logo.png +0 -0
  453. package/templates/sveltekit/src-tauri/icons/Square71x71Logo.png +0 -0
  454. package/templates/sveltekit/src-tauri/icons/Square89x89Logo.png +0 -0
  455. package/templates/sveltekit/src-tauri/icons/StoreLogo.png +0 -0
  456. package/templates/sveltekit/src-tauri/icons/android/mipmap-hdpi/ic_launcher.png +0 -0
  457. package/templates/sveltekit/src-tauri/icons/android/mipmap-hdpi/ic_launcher_foreground.png +0 -0
  458. package/templates/sveltekit/src-tauri/icons/android/mipmap-hdpi/ic_launcher_round.png +0 -0
  459. package/templates/sveltekit/src-tauri/icons/android/mipmap-mdpi/ic_launcher.png +0 -0
  460. package/templates/sveltekit/src-tauri/icons/android/mipmap-mdpi/ic_launcher_foreground.png +0 -0
  461. package/templates/sveltekit/src-tauri/icons/android/mipmap-mdpi/ic_launcher_round.png +0 -0
  462. package/templates/sveltekit/src-tauri/icons/android/mipmap-xhdpi/ic_launcher.png +0 -0
  463. package/templates/sveltekit/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_foreground.png +0 -0
  464. package/templates/sveltekit/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_round.png +0 -0
  465. package/templates/sveltekit/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher.png +0 -0
  466. package/templates/sveltekit/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_foreground.png +0 -0
  467. package/templates/sveltekit/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_round.png +0 -0
  468. package/templates/sveltekit/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher.png +0 -0
  469. package/templates/sveltekit/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_foreground.png +0 -0
  470. package/templates/sveltekit/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_round.png +0 -0
  471. package/templates/sveltekit/src-tauri/icons/icon.icns +0 -0
  472. package/templates/sveltekit/src-tauri/icons/icon.ico +0 -0
  473. package/templates/sveltekit/src-tauri/icons/icon.png +0 -0
  474. package/templates/sveltekit/src-tauri/icons/ios/AppIcon-20x20@1x.png +0 -0
  475. package/templates/sveltekit/src-tauri/icons/ios/AppIcon-20x20@2x-1.png +0 -0
  476. package/templates/sveltekit/src-tauri/icons/ios/AppIcon-20x20@2x.png +0 -0
  477. package/templates/sveltekit/src-tauri/icons/ios/AppIcon-20x20@3x.png +0 -0
  478. package/templates/sveltekit/src-tauri/icons/ios/AppIcon-29x29@1x.png +0 -0
  479. package/templates/sveltekit/src-tauri/icons/ios/AppIcon-29x29@2x-1.png +0 -0
  480. package/templates/sveltekit/src-tauri/icons/ios/AppIcon-29x29@2x.png +0 -0
  481. package/templates/sveltekit/src-tauri/icons/ios/AppIcon-29x29@3x.png +0 -0
  482. package/templates/sveltekit/src-tauri/icons/ios/AppIcon-40x40@1x.png +0 -0
  483. package/templates/sveltekit/src-tauri/icons/ios/AppIcon-40x40@2x-1.png +0 -0
  484. package/templates/sveltekit/src-tauri/icons/ios/AppIcon-40x40@2x.png +0 -0
  485. package/templates/sveltekit/src-tauri/icons/ios/AppIcon-40x40@3x.png +0 -0
  486. package/templates/sveltekit/src-tauri/icons/ios/AppIcon-512@2x.png +0 -0
  487. package/templates/sveltekit/src-tauri/icons/ios/AppIcon-60x60@2x.png +0 -0
  488. package/templates/sveltekit/src-tauri/icons/ios/AppIcon-60x60@3x.png +0 -0
  489. package/templates/sveltekit/src-tauri/icons/ios/AppIcon-76x76@1x.png +0 -0
  490. package/templates/sveltekit/src-tauri/icons/ios/AppIcon-76x76@2x.png +0 -0
  491. package/templates/sveltekit/src-tauri/icons/ios/AppIcon-83.5x83.5@2x.png +0 -0
  492. package/templates/sveltekit/src-tauri/src/main.rs +0 -22
  493. package/templates/sveltekit/src-tauri/tauri.conf.json +0 -71
  494. package/templates/sveltekit/static/avatars/01.png +0 -0
  495. package/templates/sveltekit/static/avatars/02.png +0 -0
  496. package/templates/sveltekit/static/avatars/03.png +0 -0
  497. package/templates/sveltekit/static/avatars/04.png +0 -0
  498. package/templates/sveltekit/static/avatars/05.png +0 -0
  499. package/templates/sveltekit/static/favicon.ico +0 -0
  500. package/templates/sveltekit/svelte.config.js +0 -22
  501. package/templates/sveltekit/tailwind.config.js +0 -67
  502. package/templates/sveltekit/tsconfig.json +0 -13
  503. package/templates/sveltekit/vite.config.js +0 -12
  504. package/templates/vite/.github/workflows/release.yml +0 -108
  505. package/templates/vite/.vscode/extensions.json +0 -3
  506. package/templates/vite/README.md +0 -7
  507. package/templates/vite/app-icon.png +0 -0
  508. package/templates/vite/components.json +0 -16
  509. package/templates/vite/index.html +0 -16
  510. package/templates/vite/package.json +0 -83
  511. package/templates/vite/pnpm-lock.yaml +0 -5176
  512. package/templates/vite/postcss.config.js +0 -6
  513. package/templates/vite/prettier.config.cjs +0 -35
  514. package/templates/vite/public/avatars/01.png +0 -0
  515. package/templates/vite/public/avatars/02.png +0 -0
  516. package/templates/vite/public/avatars/03.png +0 -0
  517. package/templates/vite/public/avatars/04.png +0 -0
  518. package/templates/vite/public/avatars/05.png +0 -0
  519. package/templates/vite/src/App.tsx +0 -39
  520. package/templates/vite/src/assets/Inter-VariableFont_slnt,wght.ttf +0 -0
  521. package/templates/vite/src/components/about-dialog.tsx +0 -101
  522. package/templates/vite/src/components/icons.tsx +0 -154
  523. package/templates/vite/src/components/menu-mode-toggle.tsx +0 -47
  524. package/templates/vite/src/components/menu.tsx +0 -212
  525. package/templates/vite/src/components/tailwind-indicator.tsx +0 -18
  526. package/templates/vite/src/components/theme-provider.tsx +0 -9
  527. package/templates/vite/src/components/ui/accordion.tsx +0 -58
  528. package/templates/vite/src/components/ui/alert-dialog.tsx +0 -143
  529. package/templates/vite/src/components/ui/alert.tsx +0 -59
  530. package/templates/vite/src/components/ui/aspect-ratio.tsx +0 -5
  531. package/templates/vite/src/components/ui/avatar.tsx +0 -48
  532. package/templates/vite/src/components/ui/badge.tsx +0 -36
  533. package/templates/vite/src/components/ui/button.tsx +0 -56
  534. package/templates/vite/src/components/ui/calendar.tsx +0 -62
  535. package/templates/vite/src/components/ui/card.tsx +0 -79
  536. package/templates/vite/src/components/ui/checkbox.tsx +0 -28
  537. package/templates/vite/src/components/ui/collapsible.tsx +0 -9
  538. package/templates/vite/src/components/ui/command.tsx +0 -153
  539. package/templates/vite/src/components/ui/context-menu.tsx +0 -198
  540. package/templates/vite/src/components/ui/dialog.tsx +0 -121
  541. package/templates/vite/src/components/ui/dropdown-menu.tsx +0 -198
  542. package/templates/vite/src/components/ui/form.tsx +0 -176
  543. package/templates/vite/src/components/ui/hover-card.tsx +0 -27
  544. package/templates/vite/src/components/ui/input.tsx +0 -25
  545. package/templates/vite/src/components/ui/label.tsx +0 -24
  546. package/templates/vite/src/components/ui/menubar.tsx +0 -234
  547. package/templates/vite/src/components/ui/navigation-menu.tsx +0 -128
  548. package/templates/vite/src/components/ui/popover.tsx +0 -29
  549. package/templates/vite/src/components/ui/progress.tsx +0 -26
  550. package/templates/vite/src/components/ui/radio-group.tsx +0 -42
  551. package/templates/vite/src/components/ui/scroll-area.tsx +0 -46
  552. package/templates/vite/src/components/ui/select.tsx +0 -119
  553. package/templates/vite/src/components/ui/separator.tsx +0 -29
  554. package/templates/vite/src/components/ui/sheet.tsx +0 -142
  555. package/templates/vite/src/components/ui/skeleton.tsx +0 -15
  556. package/templates/vite/src/components/ui/slider.tsx +0 -26
  557. package/templates/vite/src/components/ui/switch.tsx +0 -27
  558. package/templates/vite/src/components/ui/table.tsx +0 -114
  559. package/templates/vite/src/components/ui/tabs.tsx +0 -53
  560. package/templates/vite/src/components/ui/textarea.tsx +0 -24
  561. package/templates/vite/src/components/ui/toast.tsx +0 -127
  562. package/templates/vite/src/components/ui/toaster.tsx +0 -33
  563. package/templates/vite/src/components/ui/toggle.tsx +0 -43
  564. package/templates/vite/src/components/ui/tooltip.tsx +0 -28
  565. package/templates/vite/src/components/ui/use-toast.ts +0 -192
  566. package/templates/vite/src/dashboard/components/date-range-picker.tsx +0 -65
  567. package/templates/vite/src/dashboard/components/main-nav.tsx +0 -38
  568. package/templates/vite/src/dashboard/components/overview.tsx +0 -78
  569. package/templates/vite/src/dashboard/components/recent-sales.tsx +0 -71
  570. package/templates/vite/src/dashboard/components/search.tsx +0 -13
  571. package/templates/vite/src/dashboard/components/team-switcher.tsx +0 -213
  572. package/templates/vite/src/dashboard/components/user-nav.tsx +0 -62
  573. package/templates/vite/src/dashboard/page.tsx +0 -191
  574. package/templates/vite/src/lib/utils.ts +0 -19
  575. package/templates/vite/src/main.tsx +0 -10
  576. package/templates/vite/src/styles/globals.css +0 -88
  577. package/templates/vite/src/vite-env.d.ts +0 -1
  578. package/templates/vite/src-tauri/Cargo.lock +0 -3835
  579. package/templates/vite/src-tauri/Cargo.toml +0 -39
  580. package/templates/vite/src-tauri/build.rs +0 -3
  581. package/templates/vite/src-tauri/icons/128x128.png +0 -0
  582. package/templates/vite/src-tauri/icons/128x128@2x.png +0 -0
  583. package/templates/vite/src-tauri/icons/32x32.png +0 -0
  584. package/templates/vite/src-tauri/icons/Square107x107Logo.png +0 -0
  585. package/templates/vite/src-tauri/icons/Square142x142Logo.png +0 -0
  586. package/templates/vite/src-tauri/icons/Square150x150Logo.png +0 -0
  587. package/templates/vite/src-tauri/icons/Square284x284Logo.png +0 -0
  588. package/templates/vite/src-tauri/icons/Square30x30Logo.png +0 -0
  589. package/templates/vite/src-tauri/icons/Square310x310Logo.png +0 -0
  590. package/templates/vite/src-tauri/icons/Square44x44Logo.png +0 -0
  591. package/templates/vite/src-tauri/icons/Square71x71Logo.png +0 -0
  592. package/templates/vite/src-tauri/icons/Square89x89Logo.png +0 -0
  593. package/templates/vite/src-tauri/icons/StoreLogo.png +0 -0
  594. package/templates/vite/src-tauri/icons/android/mipmap-hdpi/ic_launcher.png +0 -0
  595. package/templates/vite/src-tauri/icons/android/mipmap-hdpi/ic_launcher_foreground.png +0 -0
  596. package/templates/vite/src-tauri/icons/android/mipmap-hdpi/ic_launcher_round.png +0 -0
  597. package/templates/vite/src-tauri/icons/android/mipmap-mdpi/ic_launcher.png +0 -0
  598. package/templates/vite/src-tauri/icons/android/mipmap-mdpi/ic_launcher_foreground.png +0 -0
  599. package/templates/vite/src-tauri/icons/android/mipmap-mdpi/ic_launcher_round.png +0 -0
  600. package/templates/vite/src-tauri/icons/android/mipmap-xhdpi/ic_launcher.png +0 -0
  601. package/templates/vite/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_foreground.png +0 -0
  602. package/templates/vite/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_round.png +0 -0
  603. package/templates/vite/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher.png +0 -0
  604. package/templates/vite/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_foreground.png +0 -0
  605. package/templates/vite/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_round.png +0 -0
  606. package/templates/vite/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher.png +0 -0
  607. package/templates/vite/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_foreground.png +0 -0
  608. package/templates/vite/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_round.png +0 -0
  609. package/templates/vite/src-tauri/icons/icon.icns +0 -0
  610. package/templates/vite/src-tauri/icons/icon.ico +0 -0
  611. package/templates/vite/src-tauri/icons/icon.png +0 -0
  612. package/templates/vite/src-tauri/icons/ios/AppIcon-20x20@1x.png +0 -0
  613. package/templates/vite/src-tauri/icons/ios/AppIcon-20x20@2x-1.png +0 -0
  614. package/templates/vite/src-tauri/icons/ios/AppIcon-20x20@2x.png +0 -0
  615. package/templates/vite/src-tauri/icons/ios/AppIcon-20x20@3x.png +0 -0
  616. package/templates/vite/src-tauri/icons/ios/AppIcon-29x29@1x.png +0 -0
  617. package/templates/vite/src-tauri/icons/ios/AppIcon-29x29@2x-1.png +0 -0
  618. package/templates/vite/src-tauri/icons/ios/AppIcon-29x29@2x.png +0 -0
  619. package/templates/vite/src-tauri/icons/ios/AppIcon-29x29@3x.png +0 -0
  620. package/templates/vite/src-tauri/icons/ios/AppIcon-40x40@1x.png +0 -0
  621. package/templates/vite/src-tauri/icons/ios/AppIcon-40x40@2x-1.png +0 -0
  622. package/templates/vite/src-tauri/icons/ios/AppIcon-40x40@2x.png +0 -0
  623. package/templates/vite/src-tauri/icons/ios/AppIcon-40x40@3x.png +0 -0
  624. package/templates/vite/src-tauri/icons/ios/AppIcon-512@2x.png +0 -0
  625. package/templates/vite/src-tauri/icons/ios/AppIcon-60x60@2x.png +0 -0
  626. package/templates/vite/src-tauri/icons/ios/AppIcon-60x60@3x.png +0 -0
  627. package/templates/vite/src-tauri/icons/ios/AppIcon-76x76@1x.png +0 -0
  628. package/templates/vite/src-tauri/icons/ios/AppIcon-76x76@2x.png +0 -0
  629. package/templates/vite/src-tauri/icons/ios/AppIcon-83.5x83.5@2x.png +0 -0
  630. package/templates/vite/src-tauri/src/main.rs +0 -22
  631. package/templates/vite/src-tauri/tauri.conf.json +0 -71
  632. package/templates/vite/tailwind.config.js +0 -78
  633. package/templates/vite/tsconfig.json +0 -26
  634. package/templates/vite/tsconfig.node.json +0 -9
  635. package/templates/vite/vite.config.ts +0 -33
  636. /package/{templates/.shared → assets}/app-icon.png +0 -0
package/dist/index.mjs CHANGED
@@ -1,52 +1,483 @@
1
- import $ from"node:fs";import x from"node:path";import{fileURLToPath as yt}from"node:url";import le from"readline";import D from"sisteransi";import he from"events";function $t(s){return s&&s.__esModule&&Object.prototype.hasOwnProperty.call(s,"default")?s.default:s}function ae(s,t){var e=s;t.slice(0,-1).forEach(function(n){e=e[n]||{}});var i=t[t.length-1];return i in e}function xt(s){return typeof s=="number"||/^0x[0-9a-f]+$/i.test(s)?!0:/^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(s)}function St(s,t){return t==="constructor"&&typeof s[t]=="function"||t==="__proto__"}var ue=function(s,t){t||(t={});var e={bools:{},strings:{},unknownFn:null};typeof t.unknown=="function"&&(e.unknownFn=t.unknown),typeof t.boolean=="boolean"&&t.boolean?e.allBools=!0:[].concat(t.boolean).filter(Boolean).forEach(function(u){e.bools[u]=!0});var i={};function n(u){return i[u].some(function(y){return e.bools[y]})}Object.keys(t.alias||{}).forEach(function(u){i[u]=[].concat(t.alias[u]),i[u].forEach(function(y){i[y]=[u].concat(i[u].filter(function(C){return y!==C}))})}),[].concat(t.string).filter(Boolean).forEach(function(u){e.strings[u]=!0,i[u]&&[].concat(i[u]).forEach(function(y){e.strings[y]=!0})});var o=t.default||{},r={_:[]};function l(u,y){return e.allBools&&/^--[^=]+$/.test(y)||e.strings[u]||e.bools[u]||i[u]}function b(u,y,C){for(var d=u,p=0;p<y.length-1;p++){var w=y[p];if(St(d,w))return;d[w]===void 0&&(d[w]={}),(d[w]===Object.prototype||d[w]===Number.prototype||d[w]===String.prototype)&&(d[w]={}),d[w]===Array.prototype&&(d[w]=[]),d=d[w]}var P=y[y.length-1];St(d,P)||((d===Object.prototype||d===Number.prototype||d===String.prototype)&&(d={}),d===Array.prototype&&(d=[]),d[P]===void 0||e.bools[P]||typeof d[P]=="boolean"?d[P]=C:Array.isArray(d[P])?d[P].push(C):d[P]=[d[P],C])}function h(u,y,C){if(!(C&&e.unknownFn&&!l(u,C)&&e.unknownFn(C)===!1)){var d=!e.strings[u]&&xt(y)?Number(y):y;b(r,u.split("."),d),(i[u]||[]).forEach(function(p){b(r,p.split("."),d)})}}Object.keys(e.bools).forEach(function(u){h(u,o[u]===void 0?!1:o[u])});var T=[];s.indexOf("--")!==-1&&(T=s.slice(s.indexOf("--")+1),s=s.slice(0,s.indexOf("--")));for(var m=0;m<s.length;m++){var a=s[m],c,v;if(/^--.+=/.test(a)){var O=a.match(/^--([^=]+)=([\s\S]*)$/);c=O[1];var z=O[2];e.bools[c]&&(z=z!=="false"),h(c,z,a)}else if(/^--no-.+/.test(a))c=a.match(/^--no-(.+)/)[1],h(c,!1,a);else if(/^--.+/.test(a))c=a.match(/^--(.+)/)[1],v=s[m+1],v!==void 0&&!/^(-|--)[^-]/.test(v)&&!e.bools[c]&&!e.allBools&&(!i[c]||!n(c))?(h(c,v,a),m+=1):/^(true|false)$/.test(v)?(h(c,v==="true",a),m+=1):h(c,e.strings[c]?"":!0,a);else if(/^-[^-]+/.test(a)){for(var M=a.slice(1,-1).split(""),F=!1,S=0;S<M.length;S++){if(v=a.slice(S+2),v==="-"){h(M[S],v,a);continue}if(/[A-Za-z]/.test(M[S])&&v[0]==="="){h(M[S],v.slice(1),a),F=!0;break}if(/[A-Za-z]/.test(M[S])&&/-?\d+(\.\d*)?(e-?\d+)?$/.test(v)){h(M[S],v,a),F=!0;break}if(M[S+1]&&M[S+1].match(/\W/)){h(M[S],a.slice(S+2),a),F=!0;break}else h(M[S],e.strings[M[S]]?"":!0,a)}c=a.slice(-1)[0],!F&&c!=="-"&&(s[m+1]&&!/^(-|--)[^-]/.test(s[m+1])&&!e.bools[c]&&(!i[c]||!n(c))?(h(c,s[m+1],a),m+=1):s[m+1]&&/^(true|false)$/.test(s[m+1])?(h(c,s[m+1]==="true",a),m+=1):h(c,e.strings[c]?"":!0,a))}else if((!e.unknownFn||e.unknownFn(a)!==!1)&&r._.push(e.strings._||!xt(a)?a:Number(a)),t.stopEarly){r._.push.apply(r._,s.slice(m+1));break}}return Object.keys(o).forEach(function(u){ae(r,u.split("."))||(b(r,u.split("."),o[u]),(i[u]||[]).forEach(function(y){b(r,y.split("."),o[u])}))}),t["--"]?r["--"]=T.slice():T.forEach(function(u){r._.push(u)}),r};const ce=$t(ue);var Ot={};const{FORCE_COLOR:de,NODE_DISABLE_COLORS:fe,TERM:pe}=process.env,f={enabled:!fe&&pe!=="dumb"&&de!=="0",reset:g(0,0),bold:g(1,22),dim:g(2,22),italic:g(3,23),underline:g(4,24),inverse:g(7,27),hidden:g(8,28),strikethrough:g(9,29),black:g(30,39),red:g(31,39),green:g(32,39),yellow:g(33,39),blue:g(34,39),magenta:g(35,39),cyan:g(36,39),white:g(37,39),gray:g(90,39),grey:g(90,39),bgBlack:g(40,49),bgRed:g(41,49),bgGreen:g(42,49),bgYellow:g(43,49),bgBlue:g(44,49),bgMagenta:g(45,49),bgCyan:g(46,49),bgWhite:g(47,49)};function Mt(s,t){let e=0,i,n="",o="";for(;e<s.length;e++)i=s[e],n+=i.open,o+=i.close,t.includes(i.close)&&(t=t.replace(i.rgx,i.close+i.open));return n+t+o}function me(s,t){let e={has:s,keys:t};return e.reset=f.reset.bind(e),e.bold=f.bold.bind(e),e.dim=f.dim.bind(e),e.italic=f.italic.bind(e),e.underline=f.underline.bind(e),e.inverse=f.inverse.bind(e),e.hidden=f.hidden.bind(e),e.strikethrough=f.strikethrough.bind(e),e.black=f.black.bind(e),e.red=f.red.bind(e),e.green=f.green.bind(e),e.yellow=f.yellow.bind(e),e.blue=f.blue.bind(e),e.magenta=f.magenta.bind(e),e.cyan=f.cyan.bind(e),e.white=f.white.bind(e),e.gray=f.gray.bind(e),e.grey=f.grey.bind(e),e.bgBlack=f.bgBlack.bind(e),e.bgRed=f.bgRed.bind(e),e.bgGreen=f.bgGreen.bind(e),e.bgYellow=f.bgYellow.bind(e),e.bgBlue=f.bgBlue.bind(e),e.bgMagenta=f.bgMagenta.bind(e),e.bgCyan=f.bgCyan.bind(e),e.bgWhite=f.bgWhite.bind(e),e}function g(s,t){let e={open:`\x1B[${s}m`,close:`\x1B[${t}m`,rgx:new RegExp(`\\x1b\\[${t}m`,"g")};return function(i){return this!==void 0&&this.has!==void 0?(this.has.includes(s)||(this.has.push(s),this.keys.push(e)),i===void 0?this:f.enabled?Mt(this.keys,i+""):i+""):i===void 0?me([s],[e]):f.enabled?Mt([e],i+""):i+""}}var E=f,ge=(s,t)=>{if(!(s.meta&&s.name!=="escape")){if(s.ctrl){if(s.name==="a")return"first";if(s.name==="c"||s.name==="d")return"abort";if(s.name==="e")return"last";if(s.name==="g")return"reset"}if(t){if(s.name==="j")return"down";if(s.name==="k")return"up"}return s.name==="return"||s.name==="enter"?"submit":s.name==="backspace"?"delete":s.name==="delete"?"deleteForward":s.name==="abort"?"abort":s.name==="escape"?"exit":s.name==="tab"?"next":s.name==="pagedown"?"nextPage":s.name==="pageup"?"prevPage":s.name==="home"?"home":s.name==="end"?"end":s.name==="up"?"up":s.name==="down"?"down":s.name==="right"?"right":s.name==="left"?"left":!1}},rt=s=>{const t=["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)","(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PRZcf-ntqry=><~]))"].join("|"),e=new RegExp(t,"g");return typeof s=="string"?s.replace(e,""):s};const be=rt,{erase:Pt,cursor:ve}=D,we=s=>[...be(s)].length;var ye=function(s,t){if(!t)return Pt.line+ve.to(0);let e=0;const i=s.split(/\r?\n/);for(let n of i)e+=1+Math.floor(Math.max(we(n)-1,0)/t);return Pt.lines(e)};const J={arrowUp:"\u2191",arrowDown:"\u2193",arrowLeft:"\u2190",arrowRight:"\u2192",radioOn:"\u25C9",radioOff:"\u25EF",tick:"\u2714",cross:"\u2716",ellipsis:"\u2026",pointerSmall:"\u203A",line:"\u2500",pointer:"\u276F"},$e={arrowUp:J.arrowUp,arrowDown:J.arrowDown,arrowLeft:J.arrowLeft,arrowRight:J.arrowRight,radioOn:"(*)",radioOff:"( )",tick:"\u221A",cross:"\xD7",ellipsis:"...",pointerSmall:"\xBB",line:"\u2500",pointer:">"},xe=process.platform==="win32"?$e:J;var Tt=xe;const k=E,V=Tt,nt=Object.freeze({password:{scale:1,render:s=>"*".repeat(s.length)},emoji:{scale:2,render:s=>"\u{1F603}".repeat(s.length)},invisible:{scale:0,render:s=>""},default:{scale:1,render:s=>`${s}`}}),Se=s=>nt[s]||nt.default,G=Object.freeze({aborted:k.red(V.cross),done:k.green(V.tick),exited:k.yellow(V.cross),default:k.cyan("?")}),Oe=(s,t,e)=>t?G.aborted:e?G.exited:s?G.done:G.default,Me=s=>k.gray(s?V.ellipsis:V.pointerSmall),Pe=(s,t)=>k.gray(s?t?V.pointerSmall:"+":V.line);var Te={styles:nt,render:Se,symbols:G,symbol:Oe,delimiter:Me,item:Pe};const Ce=rt;var De=function(s,t){let e=String(Ce(s)||"").split(/\r?\n/);return t?e.map(i=>Math.ceil(i.length/t)).reduce((i,n)=>i+n):e.length},Ee=(s,t={})=>{const e=Number.isSafeInteger(parseInt(t.margin))?new Array(parseInt(t.margin)).fill(" ").join(""):t.margin||"",i=t.width;return(s||"").split(/\r?\n/g).map(n=>n.split(/\s+/g).reduce((o,r)=>(r.length+e.length>=i||o[o.length-1].length+r.length+1<i?o[o.length-1]+=` ${r}`:o.push(`${e}${r}`),o),[e]).join(`
2
- `)).join(`
3
- `)},Ie=(s,t,e)=>{e=e||t;let i=Math.min(t-e,s-Math.floor(e/2));i<0&&(i=0);let n=Math.min(i+e,t);return{startIndex:i,endIndex:n}},I={action:ge,clear:ye,style:Te,strip:rt,figures:Tt,lines:De,wrap:Ee,entriesToDisplay:Ie};const Ct=le,{action:_e}=I,Re=he,{beep:Ae,cursor:je}=D,Fe=E;let Ne=class extends Re{constructor(t={}){super(),this.firstRender=!0,this.in=t.stdin||process.stdin,this.out=t.stdout||process.stdout,this.onRender=(t.onRender||(()=>{})).bind(this);const e=Ct.createInterface({input:this.in,escapeCodeTimeout:50});Ct.emitKeypressEvents(this.in,e),this.in.isTTY&&this.in.setRawMode(!0);const i=["SelectPrompt","MultiselectPrompt"].indexOf(this.constructor.name)>-1,n=(o,r)=>{let l=_e(r,i);l===!1?this._&&this._(o,r):typeof this[l]=="function"?this[l](r):this.bell()};this.close=()=>{this.out.write(je.show),this.in.removeListener("keypress",n),this.in.isTTY&&this.in.setRawMode(!1),e.close(),this.emit(this.aborted?"abort":this.exited?"exit":"submit",this.value),this.closed=!0},this.in.on("keypress",n)}fire(){this.emit("state",{value:this.value,aborted:!!this.aborted,exited:!!this.exited})}bell(){this.out.write(Ae)}render(){this.onRender(Fe),this.firstRender&&(this.firstRender=!1)}};var N=Ne;const q=E,Le=N,{erase:Ye,cursor:W}=D,{style:ot,clear:lt,lines:Ve,figures:He}=I;class ke extends Le{constructor(t={}){super(t),this.transform=ot.render(t.style),this.scale=this.transform.scale,this.msg=t.message,this.initial=t.initial||"",this.validator=t.validate||(()=>!0),this.value="",this.errorMsg=t.error||"Please Enter A Valid Value",this.cursor=+!!this.initial,this.cursorOffset=0,this.clear=lt("",this.out.columns),this.render()}set value(t){!t&&this.initial?(this.placeholder=!0,this.rendered=q.gray(this.transform.render(this.initial))):(this.placeholder=!1,this.rendered=this.transform.render(t)),this._value=t,this.fire()}get value(){return this._value}reset(){this.value="",this.cursor=+!!this.initial,this.cursorOffset=0,this.fire(),this.render()}exit(){this.abort()}abort(){this.value=this.value||this.initial,this.done=this.aborted=!0,this.error=!1,this.red=!1,this.fire(),this.render(),this.out.write(`
4
- `),this.close()}async validate(){let t=await this.validator(this.value);typeof t=="string"&&(this.errorMsg=t,t=!1),this.error=!t}async submit(){if(this.value=this.value||this.initial,this.cursorOffset=0,this.cursor=this.rendered.length,await this.validate(),this.error){this.red=!0,this.fire(),this.render();return}this.done=!0,this.aborted=!1,this.fire(),this.render(),this.out.write(`
5
- `),this.close()}next(){if(!this.placeholder)return this.bell();this.value=this.initial,this.cursor=this.rendered.length,this.fire(),this.render()}moveCursor(t){this.placeholder||(this.cursor=this.cursor+t,this.cursorOffset+=t)}_(t,e){let i=this.value.slice(0,this.cursor),n=this.value.slice(this.cursor);this.value=`${i}${t}${n}`,this.red=!1,this.cursor=this.placeholder?0:i.length+1,this.render()}delete(){if(this.isCursorAtStart())return this.bell();let t=this.value.slice(0,this.cursor-1),e=this.value.slice(this.cursor);this.value=`${t}${e}`,this.red=!1,this.isCursorAtStart()?this.cursorOffset=0:(this.cursorOffset++,this.moveCursor(-1)),this.render()}deleteForward(){if(this.cursor*this.scale>=this.rendered.length||this.placeholder)return this.bell();let t=this.value.slice(0,this.cursor),e=this.value.slice(this.cursor+1);this.value=`${t}${e}`,this.red=!1,this.isCursorAtEnd()?this.cursorOffset=0:this.cursorOffset++,this.render()}first(){this.cursor=0,this.render()}last(){this.cursor=this.value.length,this.render()}left(){if(this.cursor<=0||this.placeholder)return this.bell();this.moveCursor(-1),this.render()}right(){if(this.cursor*this.scale>=this.rendered.length||this.placeholder)return this.bell();this.moveCursor(1),this.render()}isCursorAtStart(){return this.cursor===0||this.placeholder&&this.cursor===1}isCursorAtEnd(){return this.cursor===this.rendered.length||this.placeholder&&this.cursor===this.rendered.length+1}render(){this.closed||(this.firstRender||(this.outputError&&this.out.write(W.down(Ve(this.outputError,this.out.columns)-1)+lt(this.outputError,this.out.columns)),this.out.write(lt(this.outputText,this.out.columns))),super.render(),this.outputError="",this.outputText=[ot.symbol(this.done,this.aborted),q.bold(this.msg),ot.delimiter(this.done),this.red?q.red(this.rendered):this.rendered].join(" "),this.error&&(this.outputError+=this.errorMsg.split(`
6
- `).reduce((t,e,i)=>t+`
7
- ${i?" ":He.pointerSmall} ${q.red().italic(e)}`,"")),this.out.write(Ye.line+W.to(0)+this.outputText+W.save+this.outputError+W.restore+W.move(this.cursorOffset,0)))}}var Be=ke;const R=E,Ue=N,{style:Dt,clear:Et,figures:X,wrap:ze,entriesToDisplay:Je}=I,{cursor:Ge}=D;class We extends Ue{constructor(t={}){super(t),this.msg=t.message,this.hint=t.hint||"- Use arrow-keys. Return to submit.",this.warn=t.warn||"- This option is disabled",this.cursor=t.initial||0,this.choices=t.choices.map((e,i)=>(typeof e=="string"&&(e={title:e,value:i}),{title:e&&(e.title||e.value||e),value:e&&(e.value===void 0?i:e.value),description:e&&e.description,selected:e&&e.selected,disabled:e&&e.disabled})),this.optionsPerPage=t.optionsPerPage||10,this.value=(this.choices[this.cursor]||{}).value,this.clear=Et("",this.out.columns),this.render()}moveCursor(t){this.cursor=t,this.value=this.choices[t].value,this.fire()}reset(){this.moveCursor(0),this.fire(),this.render()}exit(){this.abort()}abort(){this.done=this.aborted=!0,this.fire(),this.render(),this.out.write(`
8
- `),this.close()}submit(){this.selection.disabled?this.bell():(this.done=!0,this.aborted=!1,this.fire(),this.render(),this.out.write(`
9
- `),this.close())}first(){this.moveCursor(0),this.render()}last(){this.moveCursor(this.choices.length-1),this.render()}up(){this.cursor===0?this.moveCursor(this.choices.length-1):this.moveCursor(this.cursor-1),this.render()}down(){this.cursor===this.choices.length-1?this.moveCursor(0):this.moveCursor(this.cursor+1),this.render()}next(){this.moveCursor((this.cursor+1)%this.choices.length),this.render()}_(t,e){if(t===" ")return this.submit()}get selection(){return this.choices[this.cursor]}render(){if(this.closed)return;this.firstRender?this.out.write(Ge.hide):this.out.write(Et(this.outputText,this.out.columns)),super.render();let{startIndex:t,endIndex:e}=Je(this.cursor,this.choices.length,this.optionsPerPage);if(this.outputText=[Dt.symbol(this.done,this.aborted),R.bold(this.msg),Dt.delimiter(!1),this.done?this.selection.title:this.selection.disabled?R.yellow(this.warn):R.gray(this.hint)].join(" "),!this.done){this.outputText+=`
10
- `;for(let i=t;i<e;i++){let n,o,r="",l=this.choices[i];i===t&&t>0?o=X.arrowUp:i===e-1&&e<this.choices.length?o=X.arrowDown:o=" ",l.disabled?(n=this.cursor===i?R.gray().underline(l.title):R.strikethrough().gray(l.title),o=(this.cursor===i?R.bold().gray(X.pointer)+" ":" ")+o):(n=this.cursor===i?R.cyan().underline(l.title):l.title,o=(this.cursor===i?R.cyan(X.pointer)+" ":" ")+o,l.description&&this.cursor===i&&(r=` - ${l.description}`,(o.length+n.length+r.length>=this.out.columns||l.description.split(/\r?\n/).length>1)&&(r=`
11
- `+ze(l.description,{margin:3,width:this.out.columns})))),this.outputText+=`${o} ${n}${R.gray(r)}
12
- `}}this.out.write(this.outputText)}}var Ke=We;const Q=E,Ze=N,{style:It,clear:qe}=I,{cursor:_t,erase:Xe}=D;class Qe extends Ze{constructor(t={}){super(t),this.msg=t.message,this.value=!!t.initial,this.active=t.active||"on",this.inactive=t.inactive||"off",this.initialValue=this.value,this.render()}reset(){this.value=this.initialValue,this.fire(),this.render()}exit(){this.abort()}abort(){this.done=this.aborted=!0,this.fire(),this.render(),this.out.write(`
13
- `),this.close()}submit(){this.done=!0,this.aborted=!1,this.fire(),this.render(),this.out.write(`
14
- `),this.close()}deactivate(){if(this.value===!1)return this.bell();this.value=!1,this.render()}activate(){if(this.value===!0)return this.bell();this.value=!0,this.render()}delete(){this.deactivate()}left(){this.deactivate()}right(){this.activate()}down(){this.deactivate()}up(){this.activate()}next(){this.value=!this.value,this.fire(),this.render()}_(t,e){if(t===" ")this.value=!this.value;else if(t==="1")this.value=!0;else if(t==="0")this.value=!1;else return this.bell();this.render()}render(){this.closed||(this.firstRender?this.out.write(_t.hide):this.out.write(qe(this.outputText,this.out.columns)),super.render(),this.outputText=[It.symbol(this.done,this.aborted),Q.bold(this.msg),It.delimiter(this.done),this.value?this.inactive:Q.cyan().underline(this.inactive),Q.gray("/"),this.value?Q.cyan().underline(this.active):this.active].join(" "),this.out.write(Xe.line+_t.to(0)+this.outputText))}}var ts=Qe;let es=class wt{constructor({token:t,date:e,parts:i,locales:n}){this.token=t,this.date=e||new Date,this.parts=i||[this],this.locales=n||{}}up(){}down(){}next(){const t=this.parts.indexOf(this);return this.parts.find((e,i)=>i>t&&e instanceof wt)}setTo(t){}prev(){let t=[].concat(this.parts).reverse();const e=t.indexOf(this);return t.find((i,n)=>n>e&&i instanceof wt)}toString(){return String(this.date)}};var A=es;const ss=A;let is=class extends ss{constructor(t={}){super(t)}up(){this.date.setHours((this.date.getHours()+12)%24)}down(){this.up()}toString(){let t=this.date.getHours()>12?"pm":"am";return/\A/.test(this.token)?t.toUpperCase():t}};var rs=is;const ns=A,os=s=>(s=s%10,s===1?"st":s===2?"nd":s===3?"rd":"th");let ls=class extends ns{constructor(t={}){super(t)}up(){this.date.setDate(this.date.getDate()+1)}down(){this.date.setDate(this.date.getDate()-1)}setTo(t){this.date.setDate(parseInt(t.substr(-2)))}toString(){let t=this.date.getDate(),e=this.date.getDay();return this.token==="DD"?String(t).padStart(2,"0"):this.token==="Do"?t+os(t):this.token==="d"?e+1:this.token==="ddd"?this.locales.weekdaysShort[e]:this.token==="dddd"?this.locales.weekdays[e]:t}};var hs=ls;const as=A;let us=class extends as{constructor(t={}){super(t)}up(){this.date.setHours(this.date.getHours()+1)}down(){this.date.setHours(this.date.getHours()-1)}setTo(t){this.date.setHours(parseInt(t.substr(-2)))}toString(){let t=this.date.getHours();return/h/.test(this.token)&&(t=t%12||12),this.token.length>1?String(t).padStart(2,"0"):t}};var cs=us;const ds=A;let fs=class extends ds{constructor(t={}){super(t)}up(){this.date.setMilliseconds(this.date.getMilliseconds()+1)}down(){this.date.setMilliseconds(this.date.getMilliseconds()-1)}setTo(t){this.date.setMilliseconds(parseInt(t.substr(-this.token.length)))}toString(){return String(this.date.getMilliseconds()).padStart(4,"0").substr(0,this.token.length)}};var ps=fs;const ms=A;let gs=class extends ms{constructor(t={}){super(t)}up(){this.date.setMinutes(this.date.getMinutes()+1)}down(){this.date.setMinutes(this.date.getMinutes()-1)}setTo(t){this.date.setMinutes(parseInt(t.substr(-2)))}toString(){let t=this.date.getMinutes();return this.token.length>1?String(t).padStart(2,"0"):t}};var bs=gs;const vs=A;let ws=class extends vs{constructor(t={}){super(t)}up(){this.date.setMonth(this.date.getMonth()+1)}down(){this.date.setMonth(this.date.getMonth()-1)}setTo(t){t=parseInt(t.substr(-2))-1,this.date.setMonth(t<0?0:t)}toString(){let t=this.date.getMonth(),e=this.token.length;return e===2?String(t+1).padStart(2,"0"):e===3?this.locales.monthsShort[t]:e===4?this.locales.months[t]:String(t+1)}};var ys=ws;const $s=A;let xs=class extends $s{constructor(t={}){super(t)}up(){this.date.setSeconds(this.date.getSeconds()+1)}down(){this.date.setSeconds(this.date.getSeconds()-1)}setTo(t){this.date.setSeconds(parseInt(t.substr(-2)))}toString(){let t=this.date.getSeconds();return this.token.length>1?String(t).padStart(2,"0"):t}};var Ss=xs;const Os=A;let Ms=class extends Os{constructor(t={}){super(t)}up(){this.date.setFullYear(this.date.getFullYear()+1)}down(){this.date.setFullYear(this.date.getFullYear()-1)}setTo(t){this.date.setFullYear(t.substr(-4))}toString(){let t=String(this.date.getFullYear()).padStart(4,"0");return this.token.length===2?t.substr(-2):t}};var Ps=Ms,Ts={DatePart:A,Meridiem:rs,Day:hs,Hours:cs,Milliseconds:ps,Minutes:bs,Month:ys,Seconds:Ss,Year:Ps};const ht=E,Cs=N,{style:Rt,clear:At,figures:Ds}=I,{erase:Es,cursor:jt}=D,{DatePart:Ft,Meridiem:Is,Day:_s,Hours:Rs,Milliseconds:As,Minutes:js,Month:Fs,Seconds:Ns,Year:Ls}=Ts,Ys=/\\(.)|"((?:\\["\\]|[^"])+)"|(D[Do]?|d{3,4}|d)|(M{1,4})|(YY(?:YY)?)|([aA])|([Hh]{1,2})|(m{1,2})|(s{1,2})|(S{1,4})|./g,Nt={1:({token:s})=>s.replace(/\\(.)/g,"$1"),2:s=>new _s(s),3:s=>new Fs(s),4:s=>new Ls(s),5:s=>new Is(s),6:s=>new Rs(s),7:s=>new js(s),8:s=>new Ns(s),9:s=>new As(s)},Vs={months:"January,February,March,April,May,June,July,August,September,October,November,December".split(","),monthsShort:"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec".split(","),weekdays:"Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday".split(","),weekdaysShort:"Sun,Mon,Tue,Wed,Thu,Fri,Sat".split(",")};class Hs extends Cs{constructor(t={}){super(t),this.msg=t.message,this.cursor=0,this.typed="",this.locales=Object.assign(Vs,t.locales),this._date=t.initial||new Date,this.errorMsg=t.error||"Please Enter A Valid Value",this.validator=t.validate||(()=>!0),this.mask=t.mask||"YYYY-MM-DD HH:mm:ss",this.clear=At("",this.out.columns),this.render()}get value(){return this.date}get date(){return this._date}set date(t){t&&this._date.setTime(t.getTime())}set mask(t){let e;for(this.parts=[];e=Ys.exec(t);){let n=e.shift(),o=e.findIndex(r=>r!=null);this.parts.push(o in Nt?Nt[o]({token:e[o]||n,date:this.date,parts:this.parts,locales:this.locales}):e[o]||n)}let i=this.parts.reduce((n,o)=>(typeof o=="string"&&typeof n[n.length-1]=="string"?n[n.length-1]+=o:n.push(o),n),[]);this.parts.splice(0),this.parts.push(...i),this.reset()}moveCursor(t){this.typed="",this.cursor=t,this.fire()}reset(){this.moveCursor(this.parts.findIndex(t=>t instanceof Ft)),this.fire(),this.render()}exit(){this.abort()}abort(){this.done=this.aborted=!0,this.error=!1,this.fire(),this.render(),this.out.write(`
15
- `),this.close()}async validate(){let t=await this.validator(this.value);typeof t=="string"&&(this.errorMsg=t,t=!1),this.error=!t}async submit(){if(await this.validate(),this.error){this.color="red",this.fire(),this.render();return}this.done=!0,this.aborted=!1,this.fire(),this.render(),this.out.write(`
16
- `),this.close()}up(){this.typed="",this.parts[this.cursor].up(),this.render()}down(){this.typed="",this.parts[this.cursor].down(),this.render()}left(){let t=this.parts[this.cursor].prev();if(t==null)return this.bell();this.moveCursor(this.parts.indexOf(t)),this.render()}right(){let t=this.parts[this.cursor].next();if(t==null)return this.bell();this.moveCursor(this.parts.indexOf(t)),this.render()}next(){let t=this.parts[this.cursor].next();this.moveCursor(t?this.parts.indexOf(t):this.parts.findIndex(e=>e instanceof Ft)),this.render()}_(t){/\d/.test(t)&&(this.typed+=t,this.parts[this.cursor].setTo(this.typed),this.render())}render(){this.closed||(this.firstRender?this.out.write(jt.hide):this.out.write(At(this.outputText,this.out.columns)),super.render(),this.outputText=[Rt.symbol(this.done,this.aborted),ht.bold(this.msg),Rt.delimiter(!1),this.parts.reduce((t,e,i)=>t.concat(i===this.cursor&&!this.done?ht.cyan().underline(e.toString()):e),[]).join("")].join(" "),this.error&&(this.outputText+=this.errorMsg.split(`
17
- `).reduce((t,e,i)=>t+`
18
- ${i?" ":Ds.pointerSmall} ${ht.red().italic(e)}`,"")),this.out.write(Es.line+jt.to(0)+this.outputText))}}var ks=Hs;const tt=E,Bs=N,{cursor:et,erase:Us}=D,{style:at,figures:zs,clear:Lt,lines:Js}=I,Gs=/[0-9]/,ut=s=>s!==void 0,Yt=(s,t)=>{let e=Math.pow(10,t);return Math.round(s*e)/e};class Ws extends Bs{constructor(t={}){super(t),this.transform=at.render(t.style),this.msg=t.message,this.initial=ut(t.initial)?t.initial:"",this.float=!!t.float,this.round=t.round||2,this.inc=t.increment||1,this.min=ut(t.min)?t.min:-1/0,this.max=ut(t.max)?t.max:1/0,this.errorMsg=t.error||"Please Enter A Valid Value",this.validator=t.validate||(()=>!0),this.color="cyan",this.value="",this.typed="",this.lastHit=0,this.render()}set value(t){!t&&t!==0?(this.placeholder=!0,this.rendered=tt.gray(this.transform.render(`${this.initial}`)),this._value=""):(this.placeholder=!1,this.rendered=this.transform.render(`${Yt(t,this.round)}`),this._value=Yt(t,this.round)),this.fire()}get value(){return this._value}parse(t){return this.float?parseFloat(t):parseInt(t)}valid(t){return t==="-"||t==="."&&this.float||Gs.test(t)}reset(){this.typed="",this.value="",this.fire(),this.render()}exit(){this.abort()}abort(){let t=this.value;this.value=t!==""?t:this.initial,this.done=this.aborted=!0,this.error=!1,this.fire(),this.render(),this.out.write(`
19
- `),this.close()}async validate(){let t=await this.validator(this.value);typeof t=="string"&&(this.errorMsg=t,t=!1),this.error=!t}async submit(){if(await this.validate(),this.error){this.color="red",this.fire(),this.render();return}let t=this.value;this.value=t!==""?t:this.initial,this.done=!0,this.aborted=!1,this.error=!1,this.fire(),this.render(),this.out.write(`
20
- `),this.close()}up(){if(this.typed="",this.value===""&&(this.value=this.min-this.inc),this.value>=this.max)return this.bell();this.value+=this.inc,this.color="cyan",this.fire(),this.render()}down(){if(this.typed="",this.value===""&&(this.value=this.min+this.inc),this.value<=this.min)return this.bell();this.value-=this.inc,this.color="cyan",this.fire(),this.render()}delete(){let t=this.value.toString();if(t.length===0)return this.bell();this.value=this.parse(t=t.slice(0,-1))||"",this.value!==""&&this.value<this.min&&(this.value=this.min),this.color="cyan",this.fire(),this.render()}next(){this.value=this.initial,this.fire(),this.render()}_(t,e){if(!this.valid(t))return this.bell();const i=Date.now();if(i-this.lastHit>1e3&&(this.typed=""),this.typed+=t,this.lastHit=i,this.color="cyan",t===".")return this.fire();this.value=Math.min(this.parse(this.typed),this.max),this.value>this.max&&(this.value=this.max),this.value<this.min&&(this.value=this.min),this.fire(),this.render()}render(){this.closed||(this.firstRender||(this.outputError&&this.out.write(et.down(Js(this.outputError,this.out.columns)-1)+Lt(this.outputError,this.out.columns)),this.out.write(Lt(this.outputText,this.out.columns))),super.render(),this.outputError="",this.outputText=[at.symbol(this.done,this.aborted),tt.bold(this.msg),at.delimiter(this.done),!this.done||!this.done&&!this.placeholder?tt[this.color]().underline(this.rendered):this.rendered].join(" "),this.error&&(this.outputError+=this.errorMsg.split(`
21
- `).reduce((t,e,i)=>t+`
22
- ${i?" ":zs.pointerSmall} ${tt.red().italic(e)}`,"")),this.out.write(Us.line+et.to(0)+this.outputText+et.save+this.outputError+et.restore))}}var Ks=Ws;const _=E,{cursor:Zs}=D,qs=N,{clear:Vt,figures:L,style:Ht,wrap:Xs,entriesToDisplay:Qs}=I;let ti=class extends qs{constructor(t={}){super(t),this.msg=t.message,this.cursor=t.cursor||0,this.scrollIndex=t.cursor||0,this.hint=t.hint||"",this.warn=t.warn||"- This option is disabled -",this.minSelected=t.min,this.showMinError=!1,this.maxChoices=t.max,this.instructions=t.instructions,this.optionsPerPage=t.optionsPerPage||10,this.value=t.choices.map((e,i)=>(typeof e=="string"&&(e={title:e,value:i}),{title:e&&(e.title||e.value||e),description:e&&e.description,value:e&&(e.value===void 0?i:e.value),selected:e&&e.selected,disabled:e&&e.disabled})),this.clear=Vt("",this.out.columns),t.overrideRender||this.render()}reset(){this.value.map(t=>!t.selected),this.cursor=0,this.fire(),this.render()}selected(){return this.value.filter(t=>t.selected)}exit(){this.abort()}abort(){this.done=this.aborted=!0,this.fire(),this.render(),this.out.write(`
23
- `),this.close()}submit(){const t=this.value.filter(e=>e.selected);this.minSelected&&t.length<this.minSelected?(this.showMinError=!0,this.render()):(this.done=!0,this.aborted=!1,this.fire(),this.render(),this.out.write(`
24
- `),this.close())}first(){this.cursor=0,this.render()}last(){this.cursor=this.value.length-1,this.render()}next(){this.cursor=(this.cursor+1)%this.value.length,this.render()}up(){this.cursor===0?this.cursor=this.value.length-1:this.cursor--,this.render()}down(){this.cursor===this.value.length-1?this.cursor=0:this.cursor++,this.render()}left(){this.value[this.cursor].selected=!1,this.render()}right(){if(this.value.filter(t=>t.selected).length>=this.maxChoices)return this.bell();this.value[this.cursor].selected=!0,this.render()}handleSpaceToggle(){const t=this.value[this.cursor];if(t.selected)t.selected=!1,this.render();else{if(t.disabled||this.value.filter(e=>e.selected).length>=this.maxChoices)return this.bell();t.selected=!0,this.render()}}toggleAll(){if(this.maxChoices!==void 0||this.value[this.cursor].disabled)return this.bell();const t=!this.value[this.cursor].selected;this.value.filter(e=>!e.disabled).forEach(e=>e.selected=t),this.render()}_(t,e){if(t===" ")this.handleSpaceToggle();else if(t==="a")this.toggleAll();else return this.bell()}renderInstructions(){return this.instructions===void 0||this.instructions?typeof this.instructions=="string"?this.instructions:`
25
- Instructions:
26
- ${L.arrowUp}/${L.arrowDown}: Highlight option
27
- ${L.arrowLeft}/${L.arrowRight}/[space]: Toggle selection
28
- `+(this.maxChoices===void 0?` a: Toggle all
29
- `:"")+" enter/return: Complete answer":""}renderOption(t,e,i,n){const o=(e.selected?_.green(L.radioOn):L.radioOff)+" "+n+" ";let r,l;return e.disabled?r=t===i?_.gray().underline(e.title):_.strikethrough().gray(e.title):(r=t===i?_.cyan().underline(e.title):e.title,t===i&&e.description&&(l=` - ${e.description}`,(o.length+r.length+l.length>=this.out.columns||e.description.split(/\r?\n/).length>1)&&(l=`
30
- `+Xs(e.description,{margin:o.length,width:this.out.columns})))),o+r+_.gray(l||"")}paginateOptions(t){if(t.length===0)return _.red("No matches for this query.");let{startIndex:e,endIndex:i}=Qs(this.cursor,t.length,this.optionsPerPage),n,o=[];for(let r=e;r<i;r++)r===e&&e>0?n=L.arrowUp:r===i-1&&i<t.length?n=L.arrowDown:n=" ",o.push(this.renderOption(this.cursor,t[r],r,n));return`
31
- `+o.join(`
32
- `)}renderOptions(t){return this.done?"":this.paginateOptions(t)}renderDoneOrInstructions(){if(this.done)return this.value.filter(e=>e.selected).map(e=>e.title).join(", ");const t=[_.gray(this.hint),this.renderInstructions()];return this.value[this.cursor].disabled&&t.push(_.yellow(this.warn)),t.join(" ")}render(){if(this.closed)return;this.firstRender&&this.out.write(Zs.hide),super.render();let t=[Ht.symbol(this.done,this.aborted),_.bold(this.msg),Ht.delimiter(!1),this.renderDoneOrInstructions()].join(" ");this.showMinError&&(t+=_.red(`You must select a minimum of ${this.minSelected} choices.`),this.showMinError=!1),t+=this.renderOptions(this.value),this.out.write(this.clear+t),this.clear=Vt(t,this.out.columns)}};var kt=ti;const K=E,ei=N,{erase:si,cursor:Bt}=D,{style:ct,clear:Ut,figures:dt,wrap:ii,entriesToDisplay:ri}=I,zt=(s,t)=>s[t]&&(s[t].value||s[t].title||s[t]),ni=(s,t)=>s[t]&&(s[t].title||s[t].value||s[t]),oi=(s,t)=>{const e=s.findIndex(i=>i.value===t||i.title===t);return e>-1?e:void 0};class li extends ei{constructor(t={}){super(t),this.msg=t.message,this.suggest=t.suggest,this.choices=t.choices,this.initial=typeof t.initial=="number"?t.initial:oi(t.choices,t.initial),this.select=this.initial||t.cursor||0,this.i18n={noMatches:t.noMatches||"no matches found"},this.fallback=t.fallback||this.initial,this.clearFirst=t.clearFirst||!1,this.suggestions=[],this.input="",this.limit=t.limit||10,this.cursor=0,this.transform=ct.render(t.style),this.scale=this.transform.scale,this.render=this.render.bind(this),this.complete=this.complete.bind(this),this.clear=Ut("",this.out.columns),this.complete(this.render),this.render()}set fallback(t){this._fb=Number.isSafeInteger(parseInt(t))?parseInt(t):t}get fallback(){let t;return typeof this._fb=="number"?t=this.choices[this._fb]:typeof this._fb=="string"&&(t={title:this._fb}),t||this._fb||{title:this.i18n.noMatches}}moveSelect(t){this.select=t,this.suggestions.length>0?this.value=zt(this.suggestions,t):this.value=this.fallback.value,this.fire()}async complete(t){const e=this.completing=this.suggest(this.input,this.choices),i=await e;if(this.completing!==e)return;this.suggestions=i.map((o,r,l)=>({title:ni(l,r),value:zt(l,r),description:o.description})),this.completing=!1;const n=Math.max(i.length-1,0);this.moveSelect(Math.min(n,this.select)),t&&t()}reset(){this.input="",this.complete(()=>{this.moveSelect(this.initial!==void 0?this.initial:0),this.render()}),this.render()}exit(){this.clearFirst&&this.input.length>0?this.reset():(this.done=this.exited=!0,this.aborted=!1,this.fire(),this.render(),this.out.write(`
33
- `),this.close())}abort(){this.done=this.aborted=!0,this.exited=!1,this.fire(),this.render(),this.out.write(`
34
- `),this.close()}submit(){this.done=!0,this.aborted=this.exited=!1,this.fire(),this.render(),this.out.write(`
35
- `),this.close()}_(t,e){let i=this.input.slice(0,this.cursor),n=this.input.slice(this.cursor);this.input=`${i}${t}${n}`,this.cursor=i.length+1,this.complete(this.render),this.render()}delete(){if(this.cursor===0)return this.bell();let t=this.input.slice(0,this.cursor-1),e=this.input.slice(this.cursor);this.input=`${t}${e}`,this.complete(this.render),this.cursor=this.cursor-1,this.render()}deleteForward(){if(this.cursor*this.scale>=this.rendered.length)return this.bell();let t=this.input.slice(0,this.cursor),e=this.input.slice(this.cursor+1);this.input=`${t}${e}`,this.complete(this.render),this.render()}first(){this.moveSelect(0),this.render()}last(){this.moveSelect(this.suggestions.length-1),this.render()}up(){this.select===0?this.moveSelect(this.suggestions.length-1):this.moveSelect(this.select-1),this.render()}down(){this.select===this.suggestions.length-1?this.moveSelect(0):this.moveSelect(this.select+1),this.render()}next(){this.select===this.suggestions.length-1?this.moveSelect(0):this.moveSelect(this.select+1),this.render()}nextPage(){this.moveSelect(Math.min(this.select+this.limit,this.suggestions.length-1)),this.render()}prevPage(){this.moveSelect(Math.max(this.select-this.limit,0)),this.render()}left(){if(this.cursor<=0)return this.bell();this.cursor=this.cursor-1,this.render()}right(){if(this.cursor*this.scale>=this.rendered.length)return this.bell();this.cursor=this.cursor+1,this.render()}renderOption(t,e,i,n){let o,r=i?dt.arrowUp:n?dt.arrowDown:" ",l=e?K.cyan().underline(t.title):t.title;return r=(e?K.cyan(dt.pointer)+" ":" ")+r,t.description&&(o=` - ${t.description}`,(r.length+l.length+o.length>=this.out.columns||t.description.split(/\r?\n/).length>1)&&(o=`
36
- `+ii(t.description,{margin:3,width:this.out.columns}))),r+" "+l+K.gray(o||"")}render(){if(this.closed)return;this.firstRender?this.out.write(Bt.hide):this.out.write(Ut(this.outputText,this.out.columns)),super.render();let{startIndex:t,endIndex:e}=ri(this.select,this.choices.length,this.limit);if(this.outputText=[ct.symbol(this.done,this.aborted,this.exited),K.bold(this.msg),ct.delimiter(this.completing),this.done&&this.suggestions[this.select]?this.suggestions[this.select].title:this.rendered=this.transform.render(this.input)].join(" "),!this.done){const i=this.suggestions.slice(t,e).map((n,o)=>this.renderOption(n,this.select===o+t,o===0&&t>0,o+t===e-1&&e<this.choices.length)).join(`
37
- `);this.outputText+=`
38
- `+(i||K.gray(this.fallback.title))}this.out.write(si.line+Bt.to(0)+this.outputText)}}var hi=li;const j=E,{cursor:ai}=D,ui=kt,{clear:Jt,style:Gt,figures:B}=I;class ci extends ui{constructor(t={}){t.overrideRender=!0,super(t),this.inputValue="",this.clear=Jt("",this.out.columns),this.filteredOptions=this.value,this.render()}last(){this.cursor=this.filteredOptions.length-1,this.render()}next(){this.cursor=(this.cursor+1)%this.filteredOptions.length,this.render()}up(){this.cursor===0?this.cursor=this.filteredOptions.length-1:this.cursor--,this.render()}down(){this.cursor===this.filteredOptions.length-1?this.cursor=0:this.cursor++,this.render()}left(){this.filteredOptions[this.cursor].selected=!1,this.render()}right(){if(this.value.filter(t=>t.selected).length>=this.maxChoices)return this.bell();this.filteredOptions[this.cursor].selected=!0,this.render()}delete(){this.inputValue.length&&(this.inputValue=this.inputValue.substr(0,this.inputValue.length-1),this.updateFilteredOptions())}updateFilteredOptions(){const t=this.filteredOptions[this.cursor];this.filteredOptions=this.value.filter(i=>this.inputValue?!!(typeof i.title=="string"&&i.title.toLowerCase().includes(this.inputValue.toLowerCase())||typeof i.value=="string"&&i.value.toLowerCase().includes(this.inputValue.toLowerCase())):!0);const e=this.filteredOptions.findIndex(i=>i===t);this.cursor=e<0?0:e,this.render()}handleSpaceToggle(){const t=this.filteredOptions[this.cursor];if(t.selected)t.selected=!1,this.render();else{if(t.disabled||this.value.filter(e=>e.selected).length>=this.maxChoices)return this.bell();t.selected=!0,this.render()}}handleInputChange(t){this.inputValue=this.inputValue+t,this.updateFilteredOptions()}_(t,e){t===" "?this.handleSpaceToggle():this.handleInputChange(t)}renderInstructions(){return this.instructions===void 0||this.instructions?typeof this.instructions=="string"?this.instructions:`
39
- Instructions:
40
- ${B.arrowUp}/${B.arrowDown}: Highlight option
41
- ${B.arrowLeft}/${B.arrowRight}/[space]: Toggle selection
42
- [a,b,c]/delete: Filter choices
43
- enter/return: Complete answer
44
- `:""}renderCurrentInput(){return`
45
- Filtered results for: ${this.inputValue?this.inputValue:j.gray("Enter something to filter")}
46
- `}renderOption(t,e,i){let n;return e.disabled?n=t===i?j.gray().underline(e.title):j.strikethrough().gray(e.title):n=t===i?j.cyan().underline(e.title):e.title,(e.selected?j.green(B.radioOn):B.radioOff)+" "+n}renderDoneOrInstructions(){if(this.done)return this.value.filter(e=>e.selected).map(e=>e.title).join(", ");const t=[j.gray(this.hint),this.renderInstructions(),this.renderCurrentInput()];return this.filteredOptions.length&&this.filteredOptions[this.cursor].disabled&&t.push(j.yellow(this.warn)),t.join(" ")}render(){if(this.closed)return;this.firstRender&&this.out.write(ai.hide),super.render();let t=[Gt.symbol(this.done,this.aborted),j.bold(this.msg),Gt.delimiter(!1),this.renderDoneOrInstructions()].join(" ");this.showMinError&&(t+=j.red(`You must select a minimum of ${this.minSelected} choices.`),this.showMinError=!1),t+=this.renderOptions(this.filteredOptions),this.out.write(this.clear+t),this.clear=Jt(t,this.out.columns)}}var di=ci;const Wt=E,fi=N,{style:Kt,clear:pi}=I,{erase:mi,cursor:Zt}=D;class gi extends fi{constructor(t={}){super(t),this.msg=t.message,this.value=t.initial,this.initialValue=!!t.initial,this.yesMsg=t.yes||"yes",this.yesOption=t.yesOption||"(Y/n)",this.noMsg=t.no||"no",this.noOption=t.noOption||"(y/N)",this.render()}reset(){this.value=this.initialValue,this.fire(),this.render()}exit(){this.abort()}abort(){this.done=this.aborted=!0,this.fire(),this.render(),this.out.write(`
47
- `),this.close()}submit(){this.value=this.value||!1,this.done=!0,this.aborted=!1,this.fire(),this.render(),this.out.write(`
48
- `),this.close()}_(t,e){return t.toLowerCase()==="y"?(this.value=!0,this.submit()):t.toLowerCase()==="n"?(this.value=!1,this.submit()):this.bell()}render(){this.closed||(this.firstRender?this.out.write(Zt.hide):this.out.write(pi(this.outputText,this.out.columns)),super.render(),this.outputText=[Kt.symbol(this.done,this.aborted),Wt.bold(this.msg),Kt.delimiter(this.done),this.done?this.value?this.yesMsg:this.noMsg:Wt.gray(this.initialValue?this.yesOption:this.noOption)].join(" "),this.out.write(mi.line+Zt.to(0)+this.outputText))}}var bi=gi,vi={TextPrompt:Be,SelectPrompt:Ke,TogglePrompt:ts,DatePrompt:ks,NumberPrompt:Ks,MultiselectPrompt:kt,AutocompletePrompt:hi,AutocompleteMultiselectPrompt:di,ConfirmPrompt:bi};(function(s){const t=s,e=vi,i=r=>r;function n(r,l,b={}){return new Promise((h,T)=>{const m=new e[r](l),a=b.onAbort||i,c=b.onSubmit||i,v=b.onExit||i;m.on("state",l.onState||i),m.on("submit",O=>h(c(O))),m.on("exit",O=>h(v(O))),m.on("abort",O=>T(a(O)))})}t.text=r=>n("TextPrompt",r),t.password=r=>(r.style="password",t.text(r)),t.invisible=r=>(r.style="invisible",t.text(r)),t.number=r=>n("NumberPrompt",r),t.date=r=>n("DatePrompt",r),t.confirm=r=>n("ConfirmPrompt",r),t.list=r=>{const l=r.separator||",";return n("TextPrompt",r,{onSubmit:b=>b.split(l).map(h=>h.trim())})},t.toggle=r=>n("TogglePrompt",r),t.select=r=>n("SelectPrompt",r),t.multiselect=r=>{r.choices=[].concat(r.choices||[]);const l=b=>b.filter(h=>h.selected).map(h=>h.value);return n("MultiselectPrompt",r,{onAbort:l,onSubmit:l})},t.autocompleteMultiselect=r=>{r.choices=[].concat(r.choices||[]);const l=b=>b.filter(h=>h.selected).map(h=>h.value);return n("AutocompleteMultiselectPrompt",r,{onAbort:l,onSubmit:l})};const o=(r,l)=>Promise.resolve(l.filter(b=>b.title.slice(0,r.length).toLowerCase()===r.toLowerCase()));t.autocomplete=r=>(r.suggest=r.suggest||o,r.choices=[].concat(r.choices||[]),n("AutocompletePrompt",r))})(Ot);const ft=Ot,wi=["suggest","format","onState","validate","onRender","type"],qt=()=>{};async function Y(s=[],{onSubmit:t=qt,onCancel:e=qt}={}){const i={},n=Y._override||{};s=[].concat(s);let o,r,l,b,h,T;const m=async(a,c,v=!1)=>{if(!(!v&&a.validate&&a.validate(c)!==!0))return a.format?await a.format(c,i):c};for(r of s)if({name:b,type:h}=r,typeof h=="function"&&(h=await h(o,{...i},r),r.type=h),!!h){for(let a in r){if(wi.includes(a))continue;let c=r[a];r[a]=typeof c=="function"?await c(o,{...i},T):c}if(T=r,typeof r.message!="string")throw new Error("prompt message is required");if({name:b,type:h}=r,ft[h]===void 0)throw new Error(`prompt type (${h}) is not defined`);if(n[r.name]!==void 0&&(o=await m(r,n[r.name]),o!==void 0)){i[b]=o;continue}try{o=Y._injected?yi(Y._injected,r.initial):await ft[h](r),i[b]=o=await m(r,o,!0),l=await t(r,o,i)}catch{l=!await e(r,i)}if(l)return i}return i}function yi(s,t){const e=s.shift();if(e instanceof Error)throw e;return e===void 0?t:e}function $i(s){Y._injected=(Y._injected||[]).concat(s)}function xi(s){Y._override=Object.assign({},s)}var Si=Object.assign(Y,{prompt:Y,prompts:ft,inject:$i,override:xi});const Oi=$t(Si);let H=!0;const U=typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{};let Z=0;if(U.process&&U.process.env&&U.process.stdout){const{FORCE_COLOR:s,NODE_DISABLE_COLORS:t,NO_COLOR:e,TERM:i,COLORTERM:n}=U.process.env;t||e||s==="0"?H=!1:s==="1"||s==="2"||s==="3"?H=!0:i==="dumb"?H=!1:"CI"in U.process.env&&["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","GITHUB_ACTIONS","BUILDKITE","DRONE"].some(o=>o in U.process.env)?H=!0:H=process.stdout.isTTY,H&&(process.platform==="win32"||n&&(n==="truecolor"||n==="24bit")?Z=3:i&&(i.endsWith("-256color")||i.endsWith("256"))?Z=2:Z=1)}let Xt={enabled:H,supportLevel:Z};function st(s,t,e=1){const i=`\x1B[${s}m`,n=`\x1B[${t}m`,o=new RegExp(`\\x1b\\[${t}m`,"g");return r=>Xt.enabled&&Xt.supportLevel>=e?i+(""+r).replace(o,i)+n:""+r}const it=st(0,0),Qt=st(31,39),pt=st(34,39),Mi=st(90,39);function te(s){return s?.trim().replace(/\/+$/g,"")}function mt(s,t){$.statSync(s).isDirectory()?Ti(s,t):$.copyFileSync(s,t)}function ee(s){return/^(?:@[a-z\d\-*~][a-z\d\-*._~]*\/)?[a-z\d\-~][a-z\d\-._~]*$/.test(s)}function Pi(s){return s.trim().toLowerCase().replace(/\s+/g,"-").replace(/^[._]/,"").replace(/[^a-z\d\-~]+/g,"-")}function Ti(s,t){$.mkdirSync(t,{recursive:!0});for(const e of $.readdirSync(s)){const i=x.resolve(s,e),n=x.resolve(t,e);mt(i,n)}}function Ci(s){const t=$.readdirSync(s);return t.length===0||t.length===1&&t[0]===".git"}function Di(s){if($.existsSync(s))for(const t of $.readdirSync(s))t!==".git"&&$.rmSync(x.resolve(s,t),{recursive:!0,force:!0})}function Ei(s){if(!s)return;const t=s.split(" ")[0].split("/");return{name:t[0],version:t[1]}}const gt=ce(process.argv.slice(2),{string:["_"]}),bt=process.cwd(),se=[{name:"vite",display:"\u26A1Vite + React",color:pt},{name:"next",display:"\u25B2 Next.js",color:pt},{name:"sveltekit",display:"\u26A1Vite + SvelteKit",color:pt}],ie=se.map(s=>s.name),re=[{title:"Windows (x64)",value:"windows-latest"},{title:"macOS (x64)",value:"macos-latest"},{title:"Linux (x64)",value:"ubuntu-latest"}],ne=re.map(s=>s.value),Ii={_gitignore:".gitignore"},vt="tauri-ui";async function _i(){const s=te(gt._[0]),t=gt.selectedTemplate||gt.t;let e=s||vt;const i=()=>e==="."?x.basename(x.resolve()):e,n=await Oi([{type:s?null:"text",name:"projectName",message:it("Project name:"),initial:vt,onState:p=>{e=te(p.value)||vt}},{type:()=>!$.existsSync(e)||Ci(e)?null:"confirm",name:"overwrite",message:()=>(e==="."?"Current directory":`Target directory "${e}"`)+" is not empty. Remove existing templateFiles and continue?"},{type:(p,{overwrite:w})=>{if(w===!1)throw new Error(Qt("\u2716")+" Operation cancelled");return null},name:"overwriteChecker"},{type:()=>ee(i())?null:"text",name:"packageName",message:it("Package name:"),initial:()=>Pi(i()),validate:p=>ee(p)||"Invalid package.json name"},{type:t&&ie.includes(t)?null:"select",name:"framework",message:typeof t=="string"&&!ie.includes(t)?it(`"${t}" isn't a valid selectedTemplate . Please choose from below: `):it("Select a framework:"),initial:0,choices:se.map(p=>{const w=p.color;return{title:w(p.display||p.name),value:p}})},{type:"multiselect",name:"releaseOS",message:"Target operating systems for the Tauri Github Action",choices:re.map(p=>({title:p.title,value:p.value,selected:!0})),instructions:!1,hint:"- Space to select/deselect. Press Enter to submit"}],{onCancel:()=>{throw new Error(Qt("\u2716")+" Operation cancelled")}}),{framework:o,overwrite:r,packageName:l,releaseOS:b}=n,h=x.join(bt,e);r?Di(h):$.existsSync(h)||$.mkdirSync(h,{recursive:!0});let T=o?.name||t;const m=Ei(process.env.npm_config_user_agent),a=m?m.name:"npm";console.log(`
49
- Scaffolding project in ${Mi(h)}`);const c=x.resolve(yt(import.meta.url),"../../templates/",T),v=x.resolve(yt(import.meta.url),"../../templates/.shared"),O=(p,w)=>{const P=x.join(h,Ii[p]??p);w?$.writeFileSync(P,w):mt(x.join(c,p),P)},z=$.readdirSync(c);for(const p of z.filter(w=>w!=="package.json"||"tauri.conf.json"))O(p);if(T!=="sveltekit"){const p=$.readdirSync(v);for(const w of p){const P=x.join(v,w),oe=x.join(h,w);mt(P,oe)}}const M=JSON.parse($.readFileSync(x.join(c,"package.json"),"utf-8"));M.name=l||i(),O("package.json",JSON.stringify(M,null,2)+`
50
- `);const F=JSON.parse($.readFileSync(x.join(c,"/src-tauri/tauri.conf.json"),"utf-8"));F.tauri.windows[0].title=l||i(),F.package.productName=l||i(),O("/src-tauri/tauri.conf.json",JSON.stringify(F,null,2)+`
51
- `);const S=x.join(v,"/src-tauri/Cargo.toml"),u=$.readFileSync(S,"utf-8").replace(/name\s*=\s*"tauri-ui"/,`name = "${l||i()}"`);O("/src-tauri/Cargo.toml",u);const y=x.join(v,".github/workflows/release.yml"),C=$.readFileSync(y,"utf-8").replace("platform: [macos-latest, ubuntu-latest, windows-latest]",`platform: [${b.join(", ")}]`+(b.length<ne.length?` # ${ne.filter(p=>!b.includes(p)).join(", ")}`:""));O(".github/workflows/release.yml",C);const d=x.relative(bt,h);switch(console.log(`
52
- Done. Now run:`),h!==bt&&console.log(` cd ${d.includes(" ")?`"${d}"`:d}`),a){case"yarn":console.log(" yarn"),console.log(" yarn tauri dev");break;case"pnpm":console.log(" pnpm i"),console.log(" pnpm tauri dev");break;default:console.log(` ${a} install`),console.log(` ${a} run tauri dev`);break}console.log()}_i().catch(s=>{console.error(s)});
1
+ import s from"node:fs";import a from"node:path";import S from"node:process";import{text as _,confirm as P,select as we,multiselect as ve,isCancel as xe,cancel as W,log as h,intro as ye,spinner as be,outro as ke,note as K}from"@clack/prompts";import A from"picocolors";import z from"node:os";import{execFile as Ee}from"node:child_process";import{fileURLToPath as I}from"node:url";const D=new Set;let Y=!1,X=!1;class L extends Error{constructor(t,r,n,i){super(t),this.stdout=r,this.stderr=n,this.code=i}}class w extends Error{constructor(t,r,n){super(r),this.tool=t,this.stderr=n}}class u extends Error{constructor(t,r){super(r),this.file=t}}function $e(e){return e?.trim().replace(/\/+$/g,"")}function q(e,t){s.statSync(e).isDirectory()?Z(e,t):(s.mkdirSync(a.dirname(t),{recursive:!0}),s.copyFileSync(e,t))}function R(e){return/^(?:@[a-z\d\-*~][a-z\d\-*._~]*\/)?[a-z\d\-~][a-z\d\-._~]*$/.test(e)}function J(e){return e.trim().toLowerCase().replace(/\s+/g,"-").replace(/^[._]/,"").replace(/[^a-z\d\-~]+/g,"-")}function Z(e,t){s.mkdirSync(t,{recursive:!0});for(const r of s.readdirSync(e)){const n=a.resolve(e,r),i=a.resolve(t,r);q(n,i)}}function je(e){const t=s.readdirSync(e);return t.length===0||t.length===1&&t[0]===".git"}function l(e,t){const r=s.readFileSync(e,"utf-8");s.writeFileSync(e,t(r),"utf-8")}function m(e,t){const r=JSON.parse(s.readFileSync(e,"utf-8")),n=t(r);s.writeFileSync(e,JSON.stringify(n,null,2)+`
2
+ `)}async function C(e,t,r){return await new Promise((n,i)=>{Ee(e,t,{cwd:r?.cwd,env:{...process.env,...r?.env},maxBuffer:1024*1024*10},(o,c,N)=>{if(o){i(new L(`Command failed: ${e} ${t.join(" ")}`,c,N,typeof o.code=="number"?o.code:null));return}n(c.trim())})})}function Q(e){return s.mkdtempSync(a.join(z.tmpdir(),e))}function O(e){D.add(e)}function f(e){D.delete(e)}function g(e){s.existsSync(e)&&s.rmSync(e,{recursive:!0,force:!0})}function Se(){const e=[...D].sort((t,r)=>r.length-t.length);for(const t of e)try{g(t)}catch{}finally{D.delete(t)}}function _e(){if(Y)return;Y=!0;const e=(t,r)=>{X&&process.exit(r),X=!0,Se(),process.exit(r)};process.once("SIGINT",()=>e("SIGINT",130)),process.once("SIGTERM",()=>e("SIGTERM",143))}function Pe(e){return e.replace(/^@[^/]+\//,"").replace(/[^a-zA-Z0-9]+/g,"_").replace(/^_+|_+$/g,"")}const De={name:"astro",async apply(e,t){l(a.join(e,"astro.config.mjs"),r=>{if(r.includes("server: {"))return r;const n=r.lastIndexOf(`
3
+ })`);if(n===-1)throw new u("astro.config.mjs","Could not find the Astro config closing brace.");return`${r.slice(0,n)}
4
+ server: {
5
+ port: 1420,
6
+ },${r.slice(n)}`})},tauriConfig(){return{frontendDist:"../dist",devUrl:"http://localhost:1420",beforeDevCommand:"bun run dev",beforeBuildCommand:"bun run build"}}},Le={name:"next",async apply(e,t){l(a.join(e,"next.config.mjs"),r=>{if(r.includes('output: "export"'))return r;if(!r.includes("const nextConfig = {}"))throw new u("next.config.mjs","Could not find the default Next.js config shape.");return r.replace("const nextConfig = {}",`const nextConfig = {
7
+ output: "export",
8
+ images: {
9
+ unoptimized: true,
10
+ },
11
+ }`)}),m(a.join(e,"package.json"),r=>(r.scripts?.dev&&(r.scripts.dev=r.scripts.dev.replace("next dev --turbopack","next dev --turbopack -p 1420")),r))},tauriConfig(){return{frontendDist:"../out",devUrl:"http://localhost:1420",beforeDevCommand:"bun run dev",beforeBuildCommand:"bun run build"}}};function Ce(e){if(e.includes("strictPort: true"))return e;const t=e.lastIndexOf(`
12
+ })`);if(t===-1)throw new u("vite.config.ts","Could not find the React Router Vite config closing brace.");return`${e.slice(0,t)}
13
+ server: {
14
+ port: 1420,
15
+ strictPort: true,
16
+ },${e.slice(t)}`}const Te={name:"react-router",async apply(e,t){l(a.join(e,"react-router.config.ts"),r=>{if(r.includes("ssr: false"))return r;if(!r.includes("ssr: true"))throw new u("react-router.config.ts","Could not find the SSR flag in the generated React Router config.");return r.replace("ssr: true","ssr: false")}),l(a.join(e,"vite.config.ts"),Ce)},tauriConfig(){return{frontendDist:"../build/client",devUrl:"http://localhost:1420",beforeDevCommand:"bun run dev",beforeBuildCommand:"bun run build"}}};function Ge(e){if(e.includes("strictPort: true"))return e;const t=e.lastIndexOf(`
17
+ })`);if(t===-1)throw new u("vite.config.ts","Could not find the TanStack Start config closing brace.");return`${e.slice(0,t)}
18
+ server: {
19
+ port: 1420,
20
+ strictPort: true,
21
+ },${e.slice(t)}`}const Ne={name:"start",async apply(e,t){l(a.join(e,"vite.config.ts"),r=>{let n=Ge(r);if(!n.includes("tanstackStart({ spa: { enabled: true } })")){if(!n.includes("tanstackStart(),"))throw new u("vite.config.ts","Could not find tanstackStart() in the generated Vite config.");n=n.replace("tanstackStart(),","tanstackStart({ spa: { enabled: true } }),")}return n}),m(a.join(e,"package.json"),r=>(r.scripts?.dev&&(r.scripts.dev=r.scripts.dev.replace("--port 3000","--port 1420")),r))},tauriConfig(){return{frontendDist:"../.output/public",devUrl:"http://localhost:1420",beforeDevCommand:"bun run dev",beforeBuildCommand:"bun run build"}}};function Ae(e){if(e.includes("strictPort: true"))return e;const t=e.lastIndexOf(`
22
+ })`);if(t===-1)throw new u("vite.config.ts","Could not find the Vite config closing brace.");return`${e.slice(0,t)}
23
+ server: {
24
+ port: 1420,
25
+ strictPort: true,
26
+ },${e.slice(t)}`}const Ie={name:"vite",async apply(e,t){l(a.join(e,"vite.config.ts"),Ae)},tauriConfig(){return{frontendDist:"../dist",devUrl:"http://localhost:1420",beforeDevCommand:"bun run dev",beforeBuildCommand:"bun run build"}}},Re={vite:Ie,next:Le,start:Ne,"react-router":Te,astro:De};function Oe(e){return Re[e]}async function ee(e,t){try{await C("bunx",["--bun","shadcn@latest",...t],{cwd:e})}catch(r){throw r instanceof L?new w("shadcn","shadcn CLI failed while updating the frontend scaffold.",r.stderr||r.stdout):r}}const Fe="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 96 96'%3E%3Crect width='96' height='96' rx='24' fill='%23181f2a'/%3E%3Ccircle cx='48' cy='34' r='18' fill='%23f8fafc'/%3E%3Cpath d='M18 82c6-14 18-22 30-22s24 8 30 22' fill='%23f8fafc'/%3E%3C/svg%3E";function Ue(e){const t=a.join(e,"app/layout.tsx");s.existsSync(t)&&l(t,r=>{let n=r;if(n.includes('import { TooltipProvider } from "@/components/ui/tooltip"')||(n=n.replace(`import { ThemeProvider } from "@/components/theme-provider"
27
+ `,`import { ThemeProvider } from "@/components/theme-provider"
28
+ import { TooltipProvider } from "@/components/ui/tooltip"
29
+ `)),n.includes("<TooltipProvider>"))return n;const i=n.replace(/<ThemeProvider>([\s\S]*?)<\/ThemeProvider>/,"<ThemeProvider><TooltipProvider>$1</TooltipProvider></ThemeProvider>");if(i===n)throw new u(t,"Could not wrap the Next.js layout with TooltipProvider.");return i})}function Ve(e,t){const r=t.template==="next"?a.join(e,"components/app-sidebar.tsx"):t.template==="react-router"?a.join(e,"app/components/app-sidebar.tsx"):a.join(e,"src/components/app-sidebar.tsx");s.existsSync(r)&&l(r,n=>n.replace('avatar: "/avatars/shadcn.jpg"',`avatar: "${Fe}"`))}function v(e,t,r,n){return`import type { CSSProperties } from "react"
30
+ import { AppSidebar } from "${t}components/app-sidebar"
31
+ import { ChartAreaInteractive } from "${t}components/chart-area-interactive"
32
+ import { DataTable } from "${t}components/data-table"
33
+ import { SectionCards } from "${t}components/section-cards"
34
+ import { SiteHeader } from "${t}components/site-header"
35
+ import {
36
+ SidebarInset,
37
+ SidebarProvider,
38
+ } from "${t}components/ui/sidebar"
39
+ import { TooltipProvider } from "${t}components/ui/tooltip"
40
+ ${n?`import { Greet } from "${t}components/greet"
41
+ `:""}import data from "${r}"
42
+
43
+ export default function ${e}() {
44
+ return (
45
+ <TooltipProvider>
46
+ <SidebarProvider
47
+ style={
48
+ {
49
+ "--sidebar-width": "calc(var(--spacing) * 72)",
50
+ "--header-height": "calc(var(--spacing) * 12)",
51
+ } as CSSProperties
52
+ }
53
+ >
54
+ <AppSidebar variant="inset" />
55
+ <SidebarInset>
56
+ <SiteHeader />
57
+ <div className="flex flex-1 flex-col">
58
+ <div className="@container/main flex flex-1 flex-col gap-2">
59
+ <div className="flex flex-col gap-4 py-4 md:gap-6 md:py-6">
60
+ <SectionCards />
61
+ ${n?` <div className="px-4 lg:px-6">
62
+ <Greet />
63
+ </div>
64
+ `:""} <div className="px-4 lg:px-6">
65
+ <ChartAreaInteractive />
66
+ </div>
67
+ <DataTable data={data} />
68
+ </div>
69
+ </div>
70
+ </div>
71
+ </SidebarInset>
72
+ </SidebarProvider>
73
+ </TooltipProvider>
74
+ )
75
+ }
76
+ `}function Be(e){return`import { createFileRoute } from "@tanstack/react-router"
77
+ ${v("DashboardPage","@/","@/app/dashboard/data.json",e)}export const Route = createFileRoute("/")({
78
+ component: DashboardPage,
79
+ })
80
+ `}function Me(e){return v("DashboardShell","@/","@/app/dashboard/data.json",e).replace("export default function DashboardShell()","export function DashboardShell()")}function He(e,t){try{s.renameSync(e,t);return}catch(r){if(!(r instanceof Error)||!("code"in r)||r.code!=="EXDEV")throw r}s.cpSync(e,t,{recursive:!0,force:!0}),s.rmSync(e,{recursive:!0,force:!0})}async function We(e){s.mkdirSync(a.dirname(e.targetDir),{recursive:!0});const t=Q("create-tauri-ui-frontend-"),r=a.join(t,e.projectName);O(t);try{if(await C("bunx",["--bun","shadcn@latest","init","--name",e.projectName,"--template",e.template,"--preset",e.preset,"--yes"],{cwd:t}),!s.existsSync(r))throw new Error("shadcn CLI did not produce the expected project directory.");s.rmSync(a.join(r,"node_modules"),{recursive:!0,force:!0}),He(r,e.targetDir)}catch(n){if(n instanceof L){f(t);try{g(t)}catch{}throw new w("shadcn","shadcn CLI failed while creating the frontend scaffold.",n.stderr||n.stdout)}f(t);try{g(t)}catch{}throw n}finally{f(t);try{g(t)}catch{}}return e.targetDir}async function Ke(e){const t=Q("create-tauri-ui-"),r="tauri-native";O(t);try{await C("bunx",["create-tauri-app",r,"--template","vanilla-ts","--manager","bun","--identifier",e.identifier,"--yes"],{cwd:t})}catch(n){if(n instanceof L){f(t);try{g(t)}catch{}throw new w("cta","create-tauri-app failed while creating the native scaffold.",n.stderr||n.stdout)}f(t);try{g(t)}catch{}throw n}return{tempDir:t,projectDir:a.join(t,r)}}async function ze(e,t){await ee(e,["add","dashboard-01","--yes"]),Ve(e,t);const r=t.template==="next"?a.join(e,"components/site-header.tsx"):t.template==="react-router"?a.join(e,"app/components/site-header.tsx"):a.join(e,"src/components/site-header.tsx");switch(s.existsSync(r)&&l(r,n=>n.includes("<Button")?n:n.replace(/import \{ Button \} from ["'][@~]\/components\/ui\/button["']\n/,"")),t.template){case"next":Ue(e),s.writeFileSync(a.join(e,"app/page.tsx"),v("Page","@/","@/app/dashboard/data.json",t.includeInvokeExample));return;case"vite":s.writeFileSync(a.join(e,"src/App.tsx"),v("App","@/","@/app/dashboard/data.json",t.includeInvokeExample));return;case"start":s.writeFileSync(a.join(e,"src/routes/index.tsx"),Be(t.includeInvokeExample));return;case"react-router":s.writeFileSync(a.join(e,"app/routes/home.tsx"),v("Home","~/","~/dashboard/data.json",t.includeInvokeExample));return;case"astro":s.writeFileSync(a.join(e,"src/components/dashboard-shell.tsx"),Me(t.includeInvokeExample)),s.writeFileSync(a.join(e,"src/pages/index.astro"),`---
81
+ import Layout from "@/layouts/main.astro"
82
+ import { DashboardShell } from "@/components/dashboard-shell"
83
+ ---
84
+
85
+ <Layout>
86
+ <DashboardShell client:load />
87
+ </Layout>
88
+ `);return;default:throw new u(e,`No starter UI implementation exists for template "${t.template}".`)}}async function te(e,t){await ee(e,["add",t,"--yes"])}const T="use tauri_plugin_log::{Target, TargetKind};",re=` log::info!("greet command executed for {}", name);
89
+ `,ne=` log::info!("opening external link in system browser: {}", url);
90
+ `,ie=` log::info!("main webview finished loading");
91
+ `,Ye=` .plugin(
92
+ tauri_plugin_log::Builder::new()
93
+ .targets([
94
+ Target::new(TargetKind::Stdout),
95
+ Target::new(TargetKind::LogDir { file_name: None }),
96
+ Target::new(TargetKind::Webview),
97
+ ])
98
+ .build(),
99
+ )
100
+ `;function Xe(){const e=a.dirname(I(import.meta.url)),t=[a.resolve(e,"../assets/debug-panel"),a.resolve(e,"../../assets/debug-panel")];return t.find(r=>s.existsSync(r))??t[0]}const qe=Xe();function Je(e){return e==="react-router"?"~/":"@/"}function ae(e,t){switch(t.template){case"next":return a.join(e,"components");case"vite":case"start":case"astro":return a.join(e,"src/components");case"react-router":return a.join(e,"app/components")}}function Ze(e,t){switch(t.template){case"next":return a.join(e,"lib");case"vite":case"start":case"astro":return a.join(e,"src/lib");case"react-router":return a.join(e,"app/lib")}}function Qe(e,t){return a.join(ae(e,t),"ui")}function x(e){switch(e.template){case"next":return"@/components/debug-panel";case"vite":return"./components/debug-panel.tsx";case"start":return"../components/debug-panel";case"react-router":return"./components/debug-panel";case"astro":return"@/components/debug-panel"}}async function et(e,t){for(const r of["button","badge","sheet","tabs","toggle-group"]){const n=a.join(Qe(e,t),`${r}.tsx`);s.existsSync(n)||await te(e,r)}}function F(e){return s.readFileSync(a.join(qe,e),"utf-8")}function tt(e,t){const r=a.join(ae(e,t),"debug-panel.tsx"),n=Ze(e,t);s.mkdirSync(a.dirname(r),{recursive:!0}),s.mkdirSync(n,{recursive:!0}),s.writeFileSync(r,F("debug-panel.tsx.tmpl").split("__ALIAS_PREFIX__").join(Je(t.template)),"utf-8"),s.writeFileSync(a.join(n,"debug-events.ts"),F("debug-events.ts.tmpl"),"utf-8"),s.writeFileSync(a.join(n,"tauri.ts"),F("tauri.ts.tmpl"),"utf-8")}function rt(e){m(a.join(e,"package.json"),t=>(t.dependencies=t.dependencies||{},t.dependencies["@tauri-apps/plugin-log"]||(t.dependencies["@tauri-apps/plugin-log"]="^2"),t))}function oe(e,t){if(e.includes(t))return e;if(!e.includes(`[dependencies]
101
+ `))throw new Error(`Could not find [dependencies] while inserting ${t}.`);return e.replace(`[dependencies]
102
+ `,`[dependencies]
103
+ ${t}
104
+ `)}function nt(e){const t=a.join(e,"src-tauri/Cargo.toml"),r=a.join(e,"src-tauri/src/lib.rs");l(t,n=>{let i=n;return i=oe(i,'tauri-plugin-log = "2"'),i=oe(i,'log = "0.4"'),i}),m(a.join(e,"src-tauri/capabilities/default.json"),n=>(n.permissions=Array.isArray(n.permissions)?n.permissions:[],n.permissions.includes("log:default")||n.permissions.push("log:default"),n)),l(r,n=>{let i=n;if(i.includes(T)||(i.includes(`use tauri_plugin_opener::OpenerExt;
105
+ `)?i=i.replace(`use tauri_plugin_opener::OpenerExt;
106
+ `,`use tauri_plugin_opener::OpenerExt;
107
+ ${T}
108
+ `):i.includes(`use tauri::webview::PageLoadEvent;
109
+ `)?i=i.replace(`use tauri::webview::PageLoadEvent;
110
+ `,`use tauri::webview::PageLoadEvent;
111
+ ${T}
112
+ `):i=`${T}
113
+ ${i}`),i.includes("tauri_plugin_log::Builder::new()"))return i;const o=i.replace(` tauri::Builder::default()
114
+ `,` tauri::Builder::default()
115
+ ${Ye}`);if(o===i)throw new u(r,"Could not register the Tauri log plugin.");return i=o,!i.includes(re.trim())&&i.includes(` let message = format!("Hello, {}! You've been greeted from Rust!", name);
116
+ `)&&(i=i.replace(` let message = format!("Hello, {}! You've been greeted from Rust!", name);
117
+ `,` let message = format!("Hello, {}! You've been greeted from Rust!", name);
118
+ ${re}`)),!i.includes(ne.trim())&&i.includes(` let _ = webview.opener().open_url(url.as_str(), None::<&str>);
119
+ `)&&(i=i.replace(` let _ = webview.opener().open_url(url.as_str(), None::<&str>);
120
+ `,`${ne} let _ = webview.opener().open_url(url.as_str(), None::<&str>);
121
+ `)),!i.includes(ie.trim())&&i.includes(` let _ = webview.window().show();
122
+ `)&&(i=i.replace(` let _ = webview.window().show();
123
+ `,`${ie} let _ = webview.window().show();
124
+ `)),i})}function it(e,t){const r=a.join(e,"src/main.tsx"),n=x(t);l(r,i=>{let o=i;if(o.includes(`import { DebugPanel } from "${n}"`)||(o=o.replace(`import { ExternalLinkGuard } from "./components/external-link-guard.tsx"
125
+ `,`import { ExternalLinkGuard } from "./components/external-link-guard.tsx"
126
+ import { DebugPanel } from "${n}"
127
+ `)),o.includes("<DebugPanel />"))return o;const c=o.replace(`<ExternalLinkGuard />
128
+ <main><App /></main>`,`<ExternalLinkGuard />
129
+ {import.meta.env.DEV ? <DebugPanel /> : null}
130
+ <main><App /></main>`);if(c===o)throw new u(r,"Could not mount DebugPanel in the Vite entrypoint.");return c})}function at(e,t){const r=a.join(e,"app/layout.tsx"),n=x(t);l(r,i=>{let o=i;if(o.includes(`import { DebugPanel } from "${n}"`)||(o.includes(`import { ExternalLinkGuard } from "@/components/external-link-guard"
131
+ `)?o=o.replace(`import { ExternalLinkGuard } from "@/components/external-link-guard"
132
+ `,`import { ExternalLinkGuard } from "@/components/external-link-guard"
133
+ import { DebugPanel } from "${n}"
134
+ `):o.includes(`import { ThemeProvider } from "@/components/theme-provider"
135
+ `)&&(o=o.replace(`import { ThemeProvider } from "@/components/theme-provider"
136
+ `,`import { ThemeProvider } from "@/components/theme-provider"
137
+ import { DebugPanel } from "${n}"
138
+ `))),o.includes("<DebugPanel />"))return o;const c=o.replace("<ExternalLinkGuard />{children}",'<ExternalLinkGuard />{process.env.NODE_ENV === "development" ? <DebugPanel /> : null}{children}');if(c===o)throw new u(r,"Could not mount DebugPanel in the Next.js layout.");return c})}function ot(e,t){const r=a.join(e,"src/routes/__root.tsx"),n=x(t);l(r,i=>{let o=i;if(o.includes(`import { DebugPanel } from "${n}"`)||(o=o.replace(`import { ExternalLinkGuard } from "../components/external-link-guard"
139
+ `,`import { ExternalLinkGuard } from "../components/external-link-guard"
140
+ import { DebugPanel } from "${n}"
141
+ `)),o.includes("<DebugPanel />"))return o;const c=o.replace("<main><ExternalLinkGuard />{children}</main>","<main><ExternalLinkGuard />{import.meta.env.DEV ? <DebugPanel /> : null}{children}</main>");if(c===o)throw new u(r,"Could not mount DebugPanel in the TanStack Start root route.");return c})}function st(e,t){const r=a.join(e,"app/root.tsx"),n=x(t);l(r,i=>{let o=i;if(o.includes(`import { DebugPanel } from "${n}"`)||(o=o.replace(`import { ExternalLinkGuard } from "./components/external-link-guard"
142
+ `,`import { ExternalLinkGuard } from "./components/external-link-guard"
143
+ import { DebugPanel } from "${n}"
144
+ `)),o.includes("<DebugPanel />"))return o;const c=o.replace(`<ExternalLinkGuard />
145
+ {children}`,`<ExternalLinkGuard />
146
+ {import.meta.env.DEV ? <DebugPanel /> : null}
147
+ {children}`);if(c===o)throw new u(r,"Could not mount DebugPanel in the React Router root layout.");return c})}function ct(e,t){const r=a.join(e,"src/layouts/main.astro"),n=x(t);l(r,i=>{let o=i;if(o.includes(`import { DebugPanel } from "${n}"`)||(o=o.replace(`import { ExternalLinkGuard } from "@/components/external-link-guard"
148
+ `,`import { ExternalLinkGuard } from "@/components/external-link-guard"
149
+ import { DebugPanel } from "${n}"
150
+ `)),o.includes("<DebugPanel client:load />"))return o;const c=o.replace("<main><ExternalLinkGuard client:load /><slot /></main>","<main><ExternalLinkGuard client:load />{import.meta.env.DEV ? <DebugPanel client:load /> : null}<slot /></main>");if(c===o)throw new u(r,"Could not mount DebugPanel in the Astro layout.");return c})}async function lt(e,t){switch(await et(e,t),tt(e,t),rt(e),nt(e),t.template){case"vite":it(e,t);return;case"next":at(e,t);return;case"start":ot(e,t);return;case"react-router":st(e,t);return;case"astro":ct(e,t);return}}const U="use tauri_plugin_opener::OpenerExt;",ut=`fn external_navigation_plugin<R: tauri::Runtime>() -> tauri::plugin::TauriPlugin<R> {
151
+ tauri::plugin::Builder::<R>::new("external-navigation")
152
+ .on_navigation(|webview, url| {
153
+ let is_internal_host = matches!(
154
+ url.host_str(),
155
+ Some("localhost") | Some("127.0.0.1") | Some("tauri.localhost") | Some("::1")
156
+ );
157
+
158
+ let is_internal = url.scheme() == "tauri" || is_internal_host;
159
+
160
+ if is_internal {
161
+ return true;
162
+ }
163
+
164
+ let is_external_link = matches!(url.scheme(), "http" | "https" | "mailto" | "tel");
165
+
166
+ if is_external_link {
167
+ let _ = webview.opener().open_url(url.as_str(), None::<&str>);
168
+ return false;
169
+ }
170
+
171
+ true
172
+ })
173
+ .build()
174
+ }
175
+
176
+ `,pt=`"use client"
177
+
178
+ import { useEffect } from "react"
179
+
180
+ const DEBUG_EVENT_NAME = "ctui:debug"
181
+ const EXTERNAL_PROTOCOLS = new Set(["http:", "https:", "mailto:", "tel:"])
182
+
183
+ function isModifiedClick(event: MouseEvent) {
184
+ return (
185
+ event.defaultPrevented ||
186
+ event.button !== 0 ||
187
+ event.metaKey ||
188
+ event.ctrlKey ||
189
+ event.shiftKey ||
190
+ event.altKey
191
+ )
192
+ }
193
+
194
+ function shouldOpenExternally(anchor: HTMLAnchorElement) {
195
+ const href = anchor.getAttribute("href")
196
+
197
+ if (!href || href.startsWith("#") || anchor.hasAttribute("download")) {
198
+ return false
199
+ }
200
+
201
+ try {
202
+ const url = new URL(anchor.href, window.location.href)
203
+
204
+ if (!EXTERNAL_PROTOCOLS.has(url.protocol)) {
205
+ return false
206
+ }
207
+
208
+ if (url.protocol === "mailto:" || url.protocol === "tel:") {
209
+ return true
210
+ }
211
+
212
+ return url.origin !== window.location.origin
213
+ } catch {
214
+ return false
215
+ }
216
+ }
217
+
218
+ async function openExternalLink(href: string) {
219
+ const { openUrl } = await import("@tauri-apps/plugin-opener")
220
+ await openUrl(href)
221
+ }
222
+
223
+ function emitExternalLinkDebugEvent(href: string) {
224
+ if (typeof window === "undefined") {
225
+ return
226
+ }
227
+
228
+ window.dispatchEvent(
229
+ new CustomEvent(DEBUG_EVENT_NAME, {
230
+ detail: {
231
+ id: crypto.randomUUID(),
232
+ kind: "external-link",
233
+ href,
234
+ timestamp: new Date().toISOString(),
235
+ },
236
+ })
237
+ )
238
+ }
239
+
240
+ export function ExternalLinkGuard() {
241
+ useEffect(() => {
242
+ function handleClick(event: MouseEvent) {
243
+ if (isModifiedClick(event)) {
244
+ return
245
+ }
246
+
247
+ const target = event.target
248
+
249
+ if (!(target instanceof Element)) {
250
+ return
251
+ }
252
+
253
+ const anchor = target.closest("a[href]")
254
+
255
+ if (!(anchor instanceof HTMLAnchorElement)) {
256
+ return
257
+ }
258
+
259
+ if (!shouldOpenExternally(anchor)) {
260
+ return
261
+ }
262
+
263
+ event.preventDefault()
264
+ emitExternalLinkDebugEvent(anchor.href)
265
+ void openExternalLink(anchor.href)
266
+ }
267
+
268
+ document.addEventListener("click", handleClick, true)
269
+
270
+ return () => {
271
+ document.removeEventListener("click", handleClick, true)
272
+ }
273
+ }, [])
274
+
275
+ return null
276
+ }
277
+ `;function y(e){s.mkdirSync(a.dirname(e),{recursive:!0}),s.writeFileSync(e,pt,"utf-8")}function dt(e){const t=a.join(e,"src-tauri/src/lib.rs");l(t,r=>{let n=r;if(n.includes(U)||(n.includes(`use tauri::webview::PageLoadEvent;
278
+ `)?n=n.replace(`use tauri::webview::PageLoadEvent;
279
+ `,`use tauri::webview::PageLoadEvent;
280
+ ${U}
281
+ `):n=`${U}
282
+ ${n}`),!n.includes("fn external_navigation_plugin<R: tauri::Runtime>()")){if(!n.includes("#[cfg_attr(mobile, tauri::mobile_entry_point)]"))throw new u(t,"Could not find the Tauri entry point while inserting the external navigation plugin.");n=n.replace("#[cfg_attr(mobile, tauri::mobile_entry_point)]",`${ut}#[cfg_attr(mobile, tauri::mobile_entry_point)]`)}if(!n.includes(".plugin(external_navigation_plugin())")){if(!n.includes(".plugin(tauri_plugin_opener::init())"))throw new u(t,"Could not find the opener plugin while inserting the external navigation guard.");n=n.replace(` .plugin(tauri_plugin_opener::init())
283
+ `,` .plugin(tauri_plugin_opener::init())
284
+ .plugin(external_navigation_plugin())
285
+ `)}return n})}function mt(e){const t=a.join(e,"src/components/external-link-guard.tsx"),r=a.join(e,"src/main.tsx");y(t),l(r,n=>{let i=n;if(i.includes('import { ExternalLinkGuard } from "./components/external-link-guard.tsx"')||(i=i.replace(`import { ThemeProvider } from "@/components/theme-provider.tsx"
286
+ `,`import { ThemeProvider } from "@/components/theme-provider.tsx"
287
+ import { ExternalLinkGuard } from "./components/external-link-guard.tsx"
288
+ `)),i.includes("<ExternalLinkGuard />"))return i;const o=i.replace(`<ThemeProvider>
289
+ <main><App /></main>`,`<ThemeProvider>
290
+ <ExternalLinkGuard />
291
+ <main><App /></main>`);if(o===i)throw new u(r,"Could not mount ExternalLinkGuard in the Vite entrypoint.");return o})}function ft(e){const t=a.join(e,"components/external-link-guard.tsx"),r=a.join(e,"app/layout.tsx");y(t),l(r,n=>{let i=n;if(i.includes('import { ExternalLinkGuard } from "@/components/external-link-guard"')||(i.includes(`import { TooltipProvider } from "@/components/ui/tooltip"
292
+ `)?i=i.replace(`import { TooltipProvider } from "@/components/ui/tooltip"
293
+ `,`import { TooltipProvider } from "@/components/ui/tooltip"
294
+ import { ExternalLinkGuard } from "@/components/external-link-guard"
295
+ `):i=i.replace(`import { ThemeProvider } from "@/components/theme-provider"
296
+ `,`import { ThemeProvider } from "@/components/theme-provider"
297
+ import { ExternalLinkGuard } from "@/components/external-link-guard"
298
+ `)),i.includes("<ExternalLinkGuard />"))return i;const o=i.replace("<main>{children}</main>","<main><ExternalLinkGuard />{children}</main>");if(o===i)throw new u(r,"Could not mount ExternalLinkGuard in the Next.js layout.");return o})}function gt(e){const t=a.join(e,"src/components/external-link-guard.tsx"),r=a.join(e,"src/routes/__root.tsx");y(t),l(r,n=>{let i=n;if(i.includes('import { ExternalLinkGuard } from "../components/external-link-guard"')||(i=i.replace(`import appCss from "../styles.css?url"
299
+ `,`import appCss from "../styles.css?url"
300
+ import { ExternalLinkGuard } from "../components/external-link-guard"
301
+ `)),i.includes("<ExternalLinkGuard />"))return i;const o=i.replace("<main>{children}</main>","<main><ExternalLinkGuard />{children}</main>");if(o===i)throw new u(r,"Could not mount ExternalLinkGuard in the TanStack Start root route.");return o})}function ht(e){const t=a.join(e,"app/components/external-link-guard.tsx"),r=a.join(e,"app/root.tsx");y(t),l(r,n=>{let i=n;if(i.includes('import { ExternalLinkGuard } from "./components/external-link-guard"')||(i=i.replace(`import "./app.css"
302
+ `,`import "./app.css"
303
+ import { ExternalLinkGuard } from "./components/external-link-guard"
304
+ `)),i.includes("<ExternalLinkGuard />"))return i;const o=i.replace(`<body>
305
+ {children}`,`<body>
306
+ <ExternalLinkGuard />
307
+ {children}`);if(o===i)throw new u(r,"Could not mount ExternalLinkGuard in the React Router root layout.");return o})}function wt(e){const t=a.join(e,"src/components/external-link-guard.tsx"),r=a.join(e,"src/layouts/main.astro");y(t),l(r,n=>{let i=n;if(i.includes('import { ExternalLinkGuard } from "@/components/external-link-guard"')||(i=i.replace(`import "@/styles/global.css"
308
+ `,`import "@/styles/global.css"
309
+ import { ExternalLinkGuard } from "@/components/external-link-guard"
310
+ `)),i.includes("<ExternalLinkGuard client:load />"))return i;const o=i.replace(` <body>
311
+ <main><slot /></main>
312
+ </body>`,` <body>
313
+ <main><ExternalLinkGuard client:load /><slot /></main>
314
+ </body>`);if(o===i)throw new u(r,"Could not mount ExternalLinkGuard in the Astro layout.");return o})}async function vt(e,t){switch(dt(e),t.template){case"vite":mt(e);return;case"next":ft(e);return;case"start":gt(e);return;case"react-router":ht(e);return;case"astro":wt(e);return}}const V="use tauri::webview::PageLoadEvent;",xt=` .on_page_load(|webview, payload| {
315
+ if webview.label() == "main" && matches!(payload.event(), PageLoadEvent::Finished) {
316
+ let _ = webview.window().show();
317
+ }
318
+ })
319
+ `;async function yt(e){m(a.join(e,"src-tauri/tauri.conf.json"),r=>{r.app=r.app||{},r.app.windows=Array.isArray(r.app.windows)?r.app.windows:[{}];const n=r.app.windows[0]||{};return r.app.windows[0]={...n,visible:!1},r});const t=a.join(e,"src-tauri/src/lib.rs");l(t,r=>{let n=r;if(n.includes(V)||(n.includes(`use tauri::Manager;
320
+ `)?n=n.replace(`use tauri::Manager;
321
+ `,`${V}
322
+ `):n=`${V}
323
+ ${n}`),n.includes(".on_page_load("))return n;const i=n.replace(" .run(tauri::generate_context!())",`${xt} .run(tauri::generate_context!())`);if(i===n)throw new u(t,"Could not insert the startup flash-prevention page-load hook.");return i})}function bt(){const e=a.dirname(I(import.meta.url)),t=[a.resolve(e,"../assets"),a.resolve(e,"../../assets")];return t.find(r=>s.existsSync(r))??t[0]}const kt=bt();async function Et(e){q(a.join(kt,"app-icon.png"),a.join(e,"app-icon.png"))}function $t(e){return`"use client"
324
+
325
+ import { useState } from "react"
326
+ import { Button } from "${e}components/ui/button"
327
+ import { Input } from "${e}components/ui/input"
328
+ import { trackedInvoke } from "${e}lib/tauri"
329
+
330
+ export function Greet() {
331
+ const [name, setName] = useState("")
332
+ const [greeting, setGreeting] = useState("")
333
+
334
+ async function handleGreet() {
335
+ const result = await trackedInvoke<string>("greet", {
336
+ name: name.trim() || "World",
337
+ })
338
+
339
+ setGreeting(result)
340
+ }
341
+
342
+ return (
343
+ <div className="rounded-xl border bg-card p-4 shadow-sm">
344
+ <div className="mb-4 space-y-1">
345
+ <h2 className="font-medium">Rust bridge</h2>
346
+ <p className="text-sm text-muted-foreground">
347
+ Call the bundled Tauri command and render the response from Rust.
348
+ </p>
349
+ </div>
350
+ <div className="flex flex-col gap-3 sm:flex-row">
351
+ <Input
352
+ value={name}
353
+ onChange={(event) => setName(event.target.value)}
354
+ placeholder="Enter a name"
355
+ />
356
+ <Button onClick={handleGreet} disabled={!name.trim()}>
357
+ Greet
358
+ </Button>
359
+ </div>
360
+ {greeting ? (
361
+ <p className="mt-3 text-sm text-muted-foreground">{greeting}</p>
362
+ ) : null}
363
+ </div>
364
+ )
365
+ }
366
+ `}function jt(e,t){return`import { Greet } from "${t}components/greet"
367
+
368
+ export default function ${e}() {
369
+ return (
370
+ <div className="flex min-h-svh items-center justify-center p-6">
371
+ <div className="w-full max-w-xl space-y-6">
372
+ <div className="space-y-2">
373
+ <h1 className="text-2xl font-semibold tracking-tight">Project ready!</h1>
374
+ <p className="text-sm text-muted-foreground">
375
+ Your shadcn frontend and Tauri native layer are wired together.
376
+ </p>
377
+ </div>
378
+ <Greet />
379
+ </div>
380
+ </div>
381
+ )
382
+ }
383
+ `}function St(){return`import { createFileRoute } from "@tanstack/react-router"
384
+ import { Greet } from "@/components/greet"
385
+
386
+ export const Route = createFileRoute("/")({
387
+ component: Home,
388
+ })
389
+
390
+ function Home() {
391
+ return (
392
+ <div className="flex min-h-svh items-center justify-center p-6">
393
+ <div className="w-full max-w-xl space-y-6">
394
+ <div className="space-y-2">
395
+ <h1 className="text-2xl font-semibold tracking-tight">Project ready!</h1>
396
+ <p className="text-sm text-muted-foreground">
397
+ Your shadcn frontend and Tauri native layer are wired together.
398
+ </p>
399
+ </div>
400
+ <Greet />
401
+ </div>
402
+ </div>
403
+ )
404
+ }
405
+ `}function se(e,t){switch(e){case"next":return a.join(t,"app/page.tsx");case"vite":return a.join(t,"src/App.tsx");case"start":return a.join(t,"src/routes/index.tsx");case"react-router":return a.join(t,"app/routes/home.tsx");case"astro":return a.join(t,"src/pages/index.astro")}}function _t(e,t){switch(e){case"next":return a.join(t,"components/greet.tsx");case"vite":case"start":case"astro":return a.join(t,"src/components/greet.tsx");case"react-router":return a.join(t,"app/components/greet.tsx")}}async function Pt(e,t){t.includeStarterUI||await te(e,"input");const r=t.template==="react-router"?"~/":"@/";if(s.writeFileSync(_t(t.template,e),$t(r)),t.includeStarterUI)return;if(t.template==="astro"){s.writeFileSync(se(t.template,e),`---
406
+ import Layout from "@/layouts/main.astro"
407
+ import { Greet } from "@/components/greet"
408
+ ---
409
+
410
+ <Layout>
411
+ <div class="flex min-h-svh items-center justify-center p-6">
412
+ <div class="w-full max-w-xl space-y-6">
413
+ <div class="space-y-2">
414
+ <h1 class="text-2xl font-semibold tracking-tight">Project ready!</h1>
415
+ <p class="text-sm text-muted-foreground">
416
+ Your shadcn frontend and Tauri native layer are wired together.
417
+ </p>
418
+ </div>
419
+ <Greet client:load />
420
+ </div>
421
+ </div>
422
+ </Layout>
423
+ `);return}const n=t.template==="start"?St():jt(t.template==="vite"?"App":t.template==="react-router"?"Home":"Page",r);s.writeFileSync(se(t.template,e),n)}const b=`
424
+ html,
425
+ body {
426
+ height: 100%;
427
+ overscroll-behavior: none;
428
+ }
429
+
430
+ body {
431
+ overflow: hidden;
432
+ }
433
+
434
+ main {
435
+ height: 100%;
436
+ overflow: auto;
437
+ overscroll-behavior: none;
438
+ }
439
+ `,Dt=`
440
+ #root {
441
+ height: 100%;
442
+ }
443
+ `;function k(e,t){l(e,r=>r.includes("overscroll-behavior: none;")?r:`${r.trimEnd()}
444
+ ${t}`)}function E(e,t,r){l(e,n=>{if(n.includes("<main>"))return n;const i=n.replace(t,r);if(i===n)throw new u(e,"Could not insert the scroll container <main> wrapper.");return i})}async function Lt(e,t){switch(t.template){case"next":k(a.join(e,"app/globals.css"),b),E(a.join(e,"app/layout.tsx"),/\{children\}/,"<main>{children}</main>");return;case"vite":k(a.join(e,"src/index.css"),`${b}${Dt}`),E(a.join(e,"src/main.tsx"),/<App \/>/,"<main><App /></main>");return;case"start":k(a.join(e,"src/styles.css"),b),E(a.join(e,"src/routes/__root.tsx"),/\{children\}/,"<main>{children}</main>");return;case"react-router":k(a.join(e,"app/app.css"),b),E(a.join(e,"app/root.tsx"),/return <Outlet \/>/,"return <main><Outlet /></main>");return;case"astro":k(a.join(e,"src/styles/global.css"),b),E(a.join(e,"src/layouts/main.astro"),/<slot \/>/,"<main><slot /></main>");return;default:throw new u(e,`No scroll container battery implementation exists for template "${t.template}".`)}}const $=`
445
+ @layer base {
446
+ body {
447
+ @apply select-none;
448
+ }
449
+
450
+ input,
451
+ textarea,
452
+ [contenteditable="true"],
453
+ pre,
454
+ code {
455
+ @apply select-text;
456
+ }
457
+ }
458
+
459
+ @layer utilities {
460
+ .ui-selectable {
461
+ @apply select-text;
462
+ }
463
+ }
464
+ `;function j(e,t){l(e,r=>r.includes(".ui-selectable")?r:`${r.trimEnd()}
465
+ ${t}`)}async function Ct(e,t){switch(t.template){case"next":j(a.join(e,"app/globals.css"),$);return;case"vite":j(a.join(e,"src/index.css"),$);return;case"start":j(a.join(e,"src/styles.css"),$);return;case"react-router":j(a.join(e,"app/app.css"),$);return;case"astro":j(a.join(e,"src/styles/global.css"),$);return;default:throw new u(e,`No selection behavior battery implementation exists for template "${t.template}".`)}}function Tt(){const e=a.dirname(I(import.meta.url)),t=[a.resolve(e,"../assets"),a.resolve(e,"../../assets")];return t.find(r=>s.existsSync(r))??t[0]}const Gt=Tt();function Nt(e){const t=[];for(const r of e){if(r==="macos-latest"){t.push({name:"macOS Apple Silicon",platform:"macos-latest",args:"--target aarch64-apple-darwin"},{name:"macOS Intel",platform:"macos-latest",args:"--target x86_64-apple-darwin"});continue}if(r==="ubuntu-latest"){t.push({name:"Linux",platform:"ubuntu-22.04",args:""});continue}t.push({name:"Windows",platform:r,args:""})}return t.map(r=>` - name: "${r.name}"
466
+ platform: "${r.platform}"
467
+ args: "${r.args}"`).join(`
468
+ `)}async function At(e,t){const r=s.readFileSync(a.join(Gt,"release.yml.tmpl"),"utf-8").replace("{{PLATFORMS}}",Nt(t.targetOS)),n=a.join(e,".github/workflows");s.mkdirSync(n,{recursive:!0}),s.writeFileSync(a.join(n,"release.yml"),r)}const It=1400,Rt=918;async function Ot(e,t,r){Z(a.join(t,"src-tauri"),a.join(e,"src-tauri")),m(a.join(e,"package.json"),o=>(o.name=r.packageName,o.dependencies=o.dependencies||{},o.dependencies["@tauri-apps/api"]="^2",o.dependencies["@tauri-apps/plugin-opener"]="^2",o.devDependencies=o.devDependencies||{},o.devDependencies["@tauri-apps/cli"]="^2",o.scripts=o.scripts||{},o.scripts.tauri="tauri",o));const n=Pe(r.packageName),i=`${n}_lib`;l(a.join(e,"src-tauri/Cargo.toml"),o=>o.replace(/^name = "tauri-app"$/m,`name = "${n}"`).replace(/^name = "tauri_app_lib"$/m,`name = "${i}"`)),l(a.join(e,"src-tauri/src/main.rs"),o=>o.replace("tauri_app_lib::run()",`${i}::run()`))}async function Ft(e,t,r){m(a.join(e,"src-tauri/tauri.conf.json"),n=>{n.productName=t.projectName,n.identifier=t.identifier,n.build={...n.build,...r},n.app=n.app||{},n.app.windows=Array.isArray(n.app.windows)?n.app.windows:[{}];const i=n.app.windows[0]||{};return n.app.windows[0]={...i,title:t.projectName,center:!0,width:It,height:Rt},n})}const B=["vite","next","start","react-router","astro"],M=["windows-latest","macos-latest","ubuntu-latest"],ce="tauri-ui",le="b0",Ut={vite:"Vite",next:"Next.js",start:"TanStack Start","react-router":"React Router",astro:"Astro"};function p(e,t="Operation cancelled"){if(xe(e))throw new Error(t);return e}function Vt(e){if(B.includes(e))return e;throw new Error(`Unsupported template "${e}". Expected one of: ${B.join(", ")}`)}function ue(e){try{return`com.${J(z.userInfo().username)||"example"}.${e}`}catch{return`com.example.${e}`}}function G(e){return{placeholder:e,defaultValue:e}}async function Bt(e,t=process.cwd()){let r=$e(e.targetDir);if(r||(r=p(await _({message:"Project name",...G(ce)}))),r||(r=ce),r===".")throw new Error("Scaffolding into the current directory is not supported yet.");const n=a.resolve(t,r),i=a.basename(n),o=R(i)?i:J(i);if(s.existsSync(n)&&!je(n))if(e.force)s.rmSync(n,{recursive:!0,force:!0});else{if(e.yes)throw new Error(`Target directory "${r}" is not empty. Re-run with --force to overwrite it.`);if(!p(await P({message:`Target directory "${r}" is not empty. Remove it and continue?`,initialValue:!1})))throw new Error("Operation cancelled");s.rmSync(n,{recursive:!0,force:!0})}let c=o;R(i)||(e.yes?c=o:c=p(await _({message:"Package name",...G(o),validate(d){if(!d||!R(d))return"Enter a valid package.json name"}})));const N=e.template?Vt(e.template):e.yes?"vite":p(await we({message:"Frontend template",initialValue:"vite",options:B.map(d=>({value:d,label:Ut[d]}))})),de=e.identifier?e.identifier:e.yes?ue(c):p(await _({message:"App identifier",...G(ue(c))})),me=e.preset?e.preset:e.yes?le:p(await _({message:"shadcn preset",...G(le)})),fe=e.includeStarterUI??(e.yes?!0:p(await P({message:"Include starter UI?",initialValue:!0}))),ge=e.includeInvokeExample??(e.yes?!0:p(await P({message:"Include Rust invoke example?",initialValue:!0}))),H=e.includeWorkflow??(e.yes?!0:p(await P({message:"Include GitHub release workflow?",initialValue:!0}))),he=H?e.yes?[...M]:p(await ve({message:"Target operating systems",initialValues:[...M],required:!0,options:M.map(d=>({value:d,label:d}))})):[];return{projectName:i,packageName:c,template:N,identifier:de,preset:me,includeStarterUI:fe,includeInvokeExample:ge,includeWorkflow:H,targetOS:he,targetDir:n}}function Mt(){console.log(`Usage: create-tauri-ui [target-dir] [options]
469
+
470
+ Options:
471
+ -t, --template <name> vite | next | start | react-router | astro
472
+ --identifier <value> set the Tauri app identifier
473
+ --preset <value> set the shadcn preset (default: b0)
474
+ --starter include the starter dashboard
475
+ --no-starter skip the starter dashboard
476
+ --invoke-example include the Rust invoke example
477
+ --no-invoke-example skip the Rust invoke example
478
+ --workflow include the GitHub release workflow
479
+ --no-workflow skip the GitHub release workflow
480
+ -f, --force overwrite an existing target directory
481
+ -y, --yes accept defaults
482
+ -h, --help display help`)}function Ht(e){const t={},r=[],n=(i,o)=>{const c=e[i+1];if(!c||c.startsWith("-"))throw new Error(`Missing value for ${o}`);return c};for(let i=0;i<e.length;i+=1){const o=e[i];switch(o){case"-h":case"--help":t.help=!0;break;case"-t":case"--template":t.template=n(i,o),i+=1;break;case"--identifier":t.identifier=n(i,o),i+=1;break;case"--preset":t.preset=n(i,o),i+=1;break;case"--starter":t.includeStarterUI=!0;break;case"--no-starter":t.includeStarterUI=!1;break;case"--invoke-example":case"--example":t.includeInvokeExample=!0;break;case"--no-invoke-example":case"--no-example":t.includeInvokeExample=!1;break;case"--workflow":t.includeWorkflow=!0;break;case"--no-workflow":t.includeWorkflow=!1;break;case"-f":case"--force":t.force=!0;break;case"-y":case"--yes":t.yes=!0;break;default:if(o.startsWith("-"))throw new Error(`Unknown flag: ${o}`);r.push(o)}}if(r.length>1)throw new Error("Only one target directory may be provided.");return r[0]&&(t.targetDir=r[0]),t}function Wt(e){const t=a.relative(S.cwd(),e)||".";return t.includes(" ")?`"${t}"`:t}function Kt(e){s.rmSync(a.join(e,"node_modules"),{recursive:!0,force:!0})}function zt(e,t){const r=[`cd ${Wt(e)}`,"bun install","bun run tauri dev","bunx tauri icon app-icon.png"];K(r.join(`
483
+ `),"Next steps"),t&&K("Configure the GitHub release workflow secrets before publishing builds.","Release workflow")}async function Yt(){try{await C("bun",["--version"])}catch{throw new Error("bun is required. Install it from https://bun.sh.")}}function pe(e){return e instanceof w?{message:e.message,detail:e.stderr.trim()}:e instanceof Error?{message:e.message,detail:""}:{message:"An unknown error occurred.",detail:""}}async function Xt(){const e=Ht(S.argv.slice(2));if(e.help){Mt();return}ye(A.bold("create-tauri-ui")),await Yt();const t=await Bt(e);_e(),O(t.targetDir);const r=be();let n;try{r.start("Creating the shadcn frontend scaffold"),await We(t),r.message("Creating the Tauri native scaffold");const i=await Ke(t);n=i.tempDir,r.message("Merging the native layer into the frontend project"),await Ot(t.targetDir,i.projectDir,t);const o=Oe(t.template);r.message(`Patching the ${t.template} project for Tauri`);try{await o.apply(t.targetDir,t)}catch(c){if(c instanceof u)h.warn(`${c.message} (${c.file})`);else throw c}if(await Ft(t.targetDir,t,o.tauriConfig()),r.message("Applying the startup flash-prevention battery"),await yt(t.targetDir),r.message("Applying the desktop scroll container battery"),await Lt(t.targetDir,t),r.message("Applying the external link guard battery"),await vt(t.targetDir,t),r.message("Applying the development debug panel battery"),await lt(t.targetDir,t),r.message("Applying the desktop selection-behavior battery"),await Ct(t.targetDir,t),t.includeStarterUI){r.message("Installing the starter dashboard");try{await ze(t.targetDir,t)}catch(c){if(c instanceof w)h.warn(c.message),c.stderr.trim()&&h.message(c.stderr.trim());else throw c}}t.includeInvokeExample&&(r.message("Adding the Rust invoke example"),await Pt(t.targetDir,t)),t.includeWorkflow&&(r.message("Writing the GitHub release workflow"),await At(t.targetDir,t)),r.message("Copying the app icon source"),await Et(t.targetDir),Kt(t.targetDir),f(t.targetDir),r.stop("Project ready"),zt(t.targetDir,t.includeWorkflow),ke(`Scaffolded ${A.cyan(t.projectName)} in ${A.dim(t.targetDir)}`)}catch(i){const o=pe(i);r.error("Scaffolding failed"),W(o.message),o.detail&&h.message(o.detail),S.exitCode=1}finally{if(n){f(n);try{g(n)}catch{}}}}Xt().catch(e=>{const t=pe(e);W(t.message),t.detail&&h.message(t.detail),S.exit(1)});