@mrintel/villain-ui 0.1.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 (645) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +1131 -0
  3. package/dist/abap-Y8Dl9g_6.js +7 -0
  4. package/dist/abap-Y8Dl9g_6.js.map +1 -0
  5. package/dist/actionscript-3-DZzbMeqX.js +7 -0
  6. package/dist/actionscript-3-DZzbMeqX.js.map +1 -0
  7. package/dist/ada-vP6ak0IW.js +7 -0
  8. package/dist/ada-vP6ak0IW.js.map +1 -0
  9. package/dist/andromeeda-BIpZ7gaU.js +5 -0
  10. package/dist/andromeeda-BIpZ7gaU.js.map +1 -0
  11. package/dist/angular-html-DPB4Rf0C.js +33 -0
  12. package/dist/angular-html-DPB4Rf0C.js.map +1 -0
  13. package/dist/angular-ts-CTOR2ofC.js +22 -0
  14. package/dist/angular-ts-CTOR2ofC.js.map +1 -0
  15. package/dist/apache-BUjz-sD2.js +7 -0
  16. package/dist/apache-BUjz-sD2.js.map +1 -0
  17. package/dist/apex-oLhhs58q.js +7 -0
  18. package/dist/apex-oLhhs58q.js.map +1 -0
  19. package/dist/apl-CjNiDgad.js +17 -0
  20. package/dist/apl-CjNiDgad.js.map +1 -0
  21. package/dist/applescript-BPx7YFFu.js +7 -0
  22. package/dist/applescript-BPx7YFFu.js.map +1 -0
  23. package/dist/ara-Z2fSOxSw.js +7 -0
  24. package/dist/ara-Z2fSOxSw.js.map +1 -0
  25. package/dist/asciidoc-B-pCoB3G.js +7 -0
  26. package/dist/asciidoc-B-pCoB3G.js.map +1 -0
  27. package/dist/asm-BTWLY5ym.js +7 -0
  28. package/dist/asm-BTWLY5ym.js.map +1 -0
  29. package/dist/astro-CFFExE8Q.js +19 -0
  30. package/dist/astro-CFFExE8Q.js.map +1 -0
  31. package/dist/aurora-x-BwoVEUWZ.js +5 -0
  32. package/dist/aurora-x-BwoVEUWZ.js.map +1 -0
  33. package/dist/awk-Fb0P9dkn.js +7 -0
  34. package/dist/awk-Fb0P9dkn.js.map +1 -0
  35. package/dist/ayu-dark-CxPZkpb2.js +5 -0
  36. package/dist/ayu-dark-CxPZkpb2.js.map +1 -0
  37. package/dist/ballerina-oZK-YekG.js +7 -0
  38. package/dist/ballerina-oZK-YekG.js.map +1 -0
  39. package/dist/bat-0FvbqU9S.js +7 -0
  40. package/dist/bat-0FvbqU9S.js.map +1 -0
  41. package/dist/beancount-DqJEb89h.js +7 -0
  42. package/dist/beancount-DqJEb89h.js.map +1 -0
  43. package/dist/berry-DODBq_Ff.js +7 -0
  44. package/dist/berry-DODBq_Ff.js.map +1 -0
  45. package/dist/bibtex-EULQRLY5.js +7 -0
  46. package/dist/bibtex-EULQRLY5.js.map +1 -0
  47. package/dist/bicep-BorU73w0.js +7 -0
  48. package/dist/bicep-BorU73w0.js.map +1 -0
  49. package/dist/blade-CRa6j5zS.js +21 -0
  50. package/dist/blade-CRa6j5zS.js.map +1 -0
  51. package/dist/bsl-NkNNwerW.js +9 -0
  52. package/dist/bsl-NkNNwerW.js.map +1 -0
  53. package/dist/c-eeMepfLm.js +7 -0
  54. package/dist/c-eeMepfLm.js.map +1 -0
  55. package/dist/cadence-02UX7mW8.js +7 -0
  56. package/dist/cadence-02UX7mW8.js.map +1 -0
  57. package/dist/cairo-DM6WF2e3.js +9 -0
  58. package/dist/cairo-DM6WF2e3.js.map +1 -0
  59. package/dist/catppuccin-frappe-D3cH2rXe.js +5 -0
  60. package/dist/catppuccin-frappe-D3cH2rXe.js.map +1 -0
  61. package/dist/catppuccin-latte-C0LRGUW4.js +5 -0
  62. package/dist/catppuccin-latte-C0LRGUW4.js.map +1 -0
  63. package/dist/catppuccin-macchiato-c5wQ11TT.js +5 -0
  64. package/dist/catppuccin-macchiato-c5wQ11TT.js.map +1 -0
  65. package/dist/catppuccin-mocha-WMD6Qvya.js +5 -0
  66. package/dist/catppuccin-mocha-WMD6Qvya.js.map +1 -0
  67. package/dist/clarity-PKm5CwqM.js +7 -0
  68. package/dist/clarity-PKm5CwqM.js.map +1 -0
  69. package/dist/clojure-CXJfHrL3.js +7 -0
  70. package/dist/clojure-CXJfHrL3.js.map +1 -0
  71. package/dist/cmake-BJz8BOTU.js +7 -0
  72. package/dist/cmake-BJz8BOTU.js.map +1 -0
  73. package/dist/cobol-HihOMwht.js +11 -0
  74. package/dist/cobol-HihOMwht.js.map +1 -0
  75. package/dist/codeowners-Bt9yU6NX.js +7 -0
  76. package/dist/codeowners-Bt9yU6NX.js.map +1 -0
  77. package/dist/codeql-DHkodjjI.js +7 -0
  78. package/dist/codeql-DHkodjjI.js.map +1 -0
  79. package/dist/coffee-DGBR_nr_.js +9 -0
  80. package/dist/coffee-DGBR_nr_.js.map +1 -0
  81. package/dist/common-lisp-EVqT9Zhp.js +7 -0
  82. package/dist/common-lisp-EVqT9Zhp.js.map +1 -0
  83. package/dist/components/buttons/Button.svelte.d.ts +1 -0
  84. package/dist/components/buttons/ButtonGroup.svelte.d.ts +1 -0
  85. package/dist/components/buttons/FloatingActionButton.svelte.d.ts +1 -0
  86. package/dist/components/buttons/IconButton.svelte.d.ts +1 -0
  87. package/dist/components/buttons/LinkButton.svelte.d.ts +1 -0
  88. package/dist/components/buttons/buttonClasses.d.ts +10 -0
  89. package/dist/components/buttons/index.d.ts +5 -0
  90. package/dist/components/cards/Card.svelte.d.ts +1 -0
  91. package/dist/components/cards/Container.svelte.d.ts +1 -0
  92. package/dist/components/cards/Divider.svelte.d.ts +1 -0
  93. package/dist/components/cards/Grid.svelte.d.ts +1 -0
  94. package/dist/components/cards/Panel.svelte.d.ts +1 -0
  95. package/dist/components/cards/SectionHeader.svelte.d.ts +1 -0
  96. package/dist/components/cards/index.d.ts +6 -0
  97. package/dist/components/data/Avatar.svelte.d.ts +1 -0
  98. package/dist/components/data/Badge.svelte.d.ts +1 -0
  99. package/dist/components/data/CodeBlock.svelte.d.ts +1 -0
  100. package/dist/components/data/List.svelte.d.ts +1 -0
  101. package/dist/components/data/Pagination.svelte.d.ts +1 -0
  102. package/dist/components/data/Stat.svelte.d.ts +1 -0
  103. package/dist/components/data/Table.svelte.d.ts +1 -0
  104. package/dist/components/data/Tag.svelte.d.ts +1 -0
  105. package/dist/components/data/index.d.ts +8 -0
  106. package/dist/components/forms/Checkbox.svelte.d.ts +1 -0
  107. package/dist/components/forms/FileUpload.svelte.d.ts +1 -0
  108. package/dist/components/forms/Input.svelte.d.ts +1 -0
  109. package/dist/components/forms/InputGroup.svelte.d.ts +1 -0
  110. package/dist/components/forms/RadioGroup.svelte.d.ts +1 -0
  111. package/dist/components/forms/RangeSlider.svelte.d.ts +1 -0
  112. package/dist/components/forms/Select.svelte.d.ts +1 -0
  113. package/dist/components/forms/Switch.svelte.d.ts +1 -0
  114. package/dist/components/forms/Textarea.svelte.d.ts +1 -0
  115. package/dist/components/forms/index.d.ts +9 -0
  116. package/dist/components/navigation/Breadcrumbs.svelte.d.ts +1 -0
  117. package/dist/components/navigation/ContextMenu.svelte.d.ts +1 -0
  118. package/dist/components/navigation/DropdownMenu.svelte.d.ts +1 -0
  119. package/dist/components/navigation/Menu.svelte.d.ts +1 -0
  120. package/dist/components/navigation/Navbar.svelte.d.ts +1 -0
  121. package/dist/components/navigation/Sidebar.svelte.d.ts +1 -0
  122. package/dist/components/navigation/Tabs.svelte.d.ts +1 -0
  123. package/dist/components/navigation/index.d.ts +7 -0
  124. package/dist/components/overlays/Alert.svelte.d.ts +1 -0
  125. package/dist/components/overlays/CommandPalette.svelte.d.ts +1 -0
  126. package/dist/components/overlays/Drawer.svelte.d.ts +1 -0
  127. package/dist/components/overlays/Dropdown.svelte.d.ts +1 -0
  128. package/dist/components/overlays/Modal.svelte.d.ts +1 -0
  129. package/dist/components/overlays/Popover.svelte.d.ts +1 -0
  130. package/dist/components/overlays/ProgressBar.svelte.d.ts +1 -0
  131. package/dist/components/overlays/SkeletonLoader.svelte.d.ts +1 -0
  132. package/dist/components/overlays/Spinner.svelte.d.ts +1 -0
  133. package/dist/components/overlays/Toast.svelte.d.ts +1 -0
  134. package/dist/components/overlays/Tooltip.svelte.d.ts +1 -0
  135. package/dist/components/overlays/index.d.ts +11 -0
  136. package/dist/components/typography/Code.svelte.d.ts +1 -0
  137. package/dist/components/typography/Heading.svelte.d.ts +1 -0
  138. package/dist/components/typography/Text.svelte.d.ts +1 -0
  139. package/dist/components/typography/index.d.ts +3 -0
  140. package/dist/components/utilities/Accordion.svelte.d.ts +1 -0
  141. package/dist/components/utilities/Carousel.svelte.d.ts +1 -0
  142. package/dist/components/utilities/Collapse.svelte.d.ts +1 -0
  143. package/dist/components/utilities/Portal.svelte.d.ts +1 -0
  144. package/dist/components/utilities/ScrollArea.svelte.d.ts +1 -0
  145. package/dist/components/utilities/index.d.ts +5 -0
  146. package/dist/coq-B0L9upzn.js +7 -0
  147. package/dist/coq-B0L9upzn.js.map +1 -0
  148. package/dist/cpp-Cj177cuW.js +19 -0
  149. package/dist/cpp-Cj177cuW.js.map +1 -0
  150. package/dist/crystal-CRJyc4G-.js +19 -0
  151. package/dist/crystal-CRJyc4G-.js.map +1 -0
  152. package/dist/csharp-C7yUs7-w.js +7 -0
  153. package/dist/csharp-C7yUs7-w.js.map +1 -0
  154. package/dist/css-CECN5uSL.js +7 -0
  155. package/dist/css-CECN5uSL.js.map +1 -0
  156. package/dist/csv-CmYOceLb.js +7 -0
  157. package/dist/csv-CmYOceLb.js.map +1 -0
  158. package/dist/cue-ZzumE7IT.js +7 -0
  159. package/dist/cue-ZzumE7IT.js.map +1 -0
  160. package/dist/cypher-jpdmjtA6.js +7 -0
  161. package/dist/cypher-jpdmjtA6.js.map +1 -0
  162. package/dist/d-CBagWSwH.js +7 -0
  163. package/dist/d-CBagWSwH.js.map +1 -0
  164. package/dist/dark-plus-pUHDTVV0.js +5 -0
  165. package/dist/dark-plus-pUHDTVV0.js.map +1 -0
  166. package/dist/dart-6ObCrKr9.js +7 -0
  167. package/dist/dart-6ObCrKr9.js.map +1 -0
  168. package/dist/dax-CcDT-8dH.js +7 -0
  169. package/dist/dax-CcDT-8dH.js.map +1 -0
  170. package/dist/desktop-B93p9R9O.js +7 -0
  171. package/dist/desktop-B93p9R9O.js.map +1 -0
  172. package/dist/diff-BxzP2J8R.js +7 -0
  173. package/dist/diff-BxzP2J8R.js.map +1 -0
  174. package/dist/docker-CsHqm9tx.js +7 -0
  175. package/dist/docker-CsHqm9tx.js.map +1 -0
  176. package/dist/dotenv-BMjVjUL1.js +7 -0
  177. package/dist/dotenv-BMjVjUL1.js.map +1 -0
  178. package/dist/dracula-BtZx2Kac.js +5 -0
  179. package/dist/dracula-BtZx2Kac.js.map +1 -0
  180. package/dist/dracula-soft-BKa-aqBv.js +5 -0
  181. package/dist/dracula-soft-BKa-aqBv.js.map +1 -0
  182. package/dist/dream-maker-PAx17jaB.js +7 -0
  183. package/dist/dream-maker-PAx17jaB.js.map +1 -0
  184. package/dist/edge-BYQkOzbF.js +13 -0
  185. package/dist/edge-BYQkOzbF.js.map +1 -0
  186. package/dist/elixir-Dh036GMp.js +9 -0
  187. package/dist/elixir-Dh036GMp.js.map +1 -0
  188. package/dist/elm-BtNbw_Cd.js +9 -0
  189. package/dist/elm-BtNbw_Cd.js.map +1 -0
  190. package/dist/emacs-lisp-Cfxdx5D-.js +7 -0
  191. package/dist/emacs-lisp-Cfxdx5D-.js.map +1 -0
  192. package/dist/erb-CS4zioBv.js +11 -0
  193. package/dist/erb-CS4zioBv.js.map +1 -0
  194. package/dist/erlang-DNcDT8Hi.js +9 -0
  195. package/dist/erlang-DNcDT8Hi.js.map +1 -0
  196. package/dist/everforest-dark-DMCBqXCK.js +5 -0
  197. package/dist/everforest-dark-DMCBqXCK.js.map +1 -0
  198. package/dist/everforest-light-BbXl82Em.js +5 -0
  199. package/dist/everforest-light-BbXl82Em.js.map +1 -0
  200. package/dist/fennel-N4WcXuKx.js +7 -0
  201. package/dist/fennel-N4WcXuKx.js.map +1 -0
  202. package/dist/fish-BTDEUgqH.js +7 -0
  203. package/dist/fish-BTDEUgqH.js.map +1 -0
  204. package/dist/fluent-BMXUxfv1.js +7 -0
  205. package/dist/fluent-BMXUxfv1.js.map +1 -0
  206. package/dist/fortran-fixed-form-DUsA-VGo.js +9 -0
  207. package/dist/fortran-fixed-form-DUsA-VGo.js.map +1 -0
  208. package/dist/fortran-free-form-DPIT_jbP.js +7 -0
  209. package/dist/fortran-free-form-DPIT_jbP.js.map +1 -0
  210. package/dist/fsharp-CYOiIVNx.js +9 -0
  211. package/dist/fsharp-CYOiIVNx.js.map +1 -0
  212. package/dist/gdresource-BwtMIoBm.js +11 -0
  213. package/dist/gdresource-BwtMIoBm.js.map +1 -0
  214. package/dist/gdscript-BifyeYhI.js +7 -0
  215. package/dist/gdscript-BifyeYhI.js.map +1 -0
  216. package/dist/gdshader-Bk8fF6yr.js +7 -0
  217. package/dist/gdshader-Bk8fF6yr.js.map +1 -0
  218. package/dist/genie-DzUvd7U9.js +7 -0
  219. package/dist/genie-DzUvd7U9.js.map +1 -0
  220. package/dist/gherkin-DHRaV0YP.js +7 -0
  221. package/dist/gherkin-DHRaV0YP.js.map +1 -0
  222. package/dist/git-commit-Bd32YZ0K.js +9 -0
  223. package/dist/git-commit-Bd32YZ0K.js.map +1 -0
  224. package/dist/git-rebase-ZWUFO_T4.js +9 -0
  225. package/dist/git-rebase-ZWUFO_T4.js.map +1 -0
  226. package/dist/github-dark-DenFmJkN.js +5 -0
  227. package/dist/github-dark-DenFmJkN.js.map +1 -0
  228. package/dist/github-dark-default-BJPUVz4H.js +5 -0
  229. package/dist/github-dark-default-BJPUVz4H.js.map +1 -0
  230. package/dist/github-dark-dimmed-DUshB20C.js +5 -0
  231. package/dist/github-dark-dimmed-DUshB20C.js.map +1 -0
  232. package/dist/github-dark-high-contrast-D3aGCnF8.js +5 -0
  233. package/dist/github-dark-high-contrast-D3aGCnF8.js.map +1 -0
  234. package/dist/github-light-JYsPkUQd.js +5 -0
  235. package/dist/github-light-JYsPkUQd.js.map +1 -0
  236. package/dist/github-light-default-D99KPAby.js +5 -0
  237. package/dist/github-light-default-D99KPAby.js.map +1 -0
  238. package/dist/github-light-high-contrast-BbmZE-Mp.js +5 -0
  239. package/dist/github-light-high-contrast-BbmZE-Mp.js.map +1 -0
  240. package/dist/gleam-Bv284lvN.js +7 -0
  241. package/dist/gleam-Bv284lvN.js.map +1 -0
  242. package/dist/glimmer-js-DkxNrfPT.js +15 -0
  243. package/dist/glimmer-js-DkxNrfPT.js.map +1 -0
  244. package/dist/glimmer-ts-D6YZEmK_.js +15 -0
  245. package/dist/glimmer-ts-D6YZEmK_.js.map +1 -0
  246. package/dist/glsl-CkUcVZNK.js +9 -0
  247. package/dist/glsl-CkUcVZNK.js.map +1 -0
  248. package/dist/gnuplot-yPG9-sE_.js +7 -0
  249. package/dist/gnuplot-yPG9-sE_.js.map +1 -0
  250. package/dist/go-ChxJuLYK.js +7 -0
  251. package/dist/go-ChxJuLYK.js.map +1 -0
  252. package/dist/graphql-CBu2ehBn.js +15 -0
  253. package/dist/graphql-CBu2ehBn.js.map +1 -0
  254. package/dist/groovy-CJQTphOW.js +7 -0
  255. package/dist/groovy-CJQTphOW.js.map +1 -0
  256. package/dist/gruvbox-dark-hard-C5HOtKIh.js +5 -0
  257. package/dist/gruvbox-dark-hard-C5HOtKIh.js.map +1 -0
  258. package/dist/gruvbox-dark-medium-FVgwJHuz.js +5 -0
  259. package/dist/gruvbox-dark-medium-FVgwJHuz.js.map +1 -0
  260. package/dist/gruvbox-dark-soft-B46F314v.js +5 -0
  261. package/dist/gruvbox-dark-soft-B46F314v.js.map +1 -0
  262. package/dist/gruvbox-light-hard-CJD38wDZ.js +5 -0
  263. package/dist/gruvbox-light-hard-CJD38wDZ.js.map +1 -0
  264. package/dist/gruvbox-light-medium-BlIhMYTA.js +5 -0
  265. package/dist/gruvbox-light-medium-BlIhMYTA.js.map +1 -0
  266. package/dist/gruvbox-light-soft-DoPHyLVZ.js +5 -0
  267. package/dist/gruvbox-light-soft-DoPHyLVZ.js.map +1 -0
  268. package/dist/hack-ItRNKiEb.js +11 -0
  269. package/dist/hack-ItRNKiEb.js.map +1 -0
  270. package/dist/haml-NZLVzu_R.js +11 -0
  271. package/dist/haml-NZLVzu_R.js.map +1 -0
  272. package/dist/handlebars-mxStpSE7.js +15 -0
  273. package/dist/handlebars-mxStpSE7.js.map +1 -0
  274. package/dist/haskell-WeIwNIP6.js +7 -0
  275. package/dist/haskell-WeIwNIP6.js.map +1 -0
  276. package/dist/haxe-TztHsm5T.js +7 -0
  277. package/dist/haxe-TztHsm5T.js.map +1 -0
  278. package/dist/hcl-D438OF-I.js +7 -0
  279. package/dist/hcl-D438OF-I.js.map +1 -0
  280. package/dist/hjson-DYBUbqOl.js +7 -0
  281. package/dist/hjson-DYBUbqOl.js.map +1 -0
  282. package/dist/hlsl-Bk8TCZNL.js +7 -0
  283. package/dist/hlsl-Bk8TCZNL.js.map +1 -0
  284. package/dist/houston-BDYrDoDW.js +5 -0
  285. package/dist/houston-BDYrDoDW.js.map +1 -0
  286. package/dist/html-B50bmoVb.js +11 -0
  287. package/dist/html-B50bmoVb.js.map +1 -0
  288. package/dist/html-derivative-C6bxFbFW.js +9 -0
  289. package/dist/html-derivative-C6bxFbFW.js.map +1 -0
  290. package/dist/http-DLvAkeD-.js +15 -0
  291. package/dist/http-DLvAkeD-.js.map +1 -0
  292. package/dist/hurl-CgkFN90t.js +13 -0
  293. package/dist/hurl-CgkFN90t.js.map +1 -0
  294. package/dist/hxml-GbqSQCLa.js +9 -0
  295. package/dist/hxml-GbqSQCLa.js.map +1 -0
  296. package/dist/hy-Brt5EZ7-.js +7 -0
  297. package/dist/hy-Brt5EZ7-.js.map +1 -0
  298. package/dist/imba-CimUv-Uh.js +7 -0
  299. package/dist/imba-CimUv-Uh.js.map +1 -0
  300. package/dist/index.css +1 -0
  301. package/dist/index.d.ts +18 -0
  302. package/dist/index.js +12345 -0
  303. package/dist/index.js.map +1 -0
  304. package/dist/ini-BZIuRIvJ.js +7 -0
  305. package/dist/ini-BZIuRIvJ.js.map +1 -0
  306. package/dist/java-DY6VlHhP.js +7 -0
  307. package/dist/java-DY6VlHhP.js.map +1 -0
  308. package/dist/javascript-C25yR2R2.js +7 -0
  309. package/dist/javascript-C25yR2R2.js.map +1 -0
  310. package/dist/jinja-CFW5uAwY.js +12 -0
  311. package/dist/jinja-CFW5uAwY.js.map +1 -0
  312. package/dist/jison-DdreslRX.js +9 -0
  313. package/dist/jison-DdreslRX.js.map +1 -0
  314. package/dist/json-DxJze_jm.js +7 -0
  315. package/dist/json-DxJze_jm.js.map +1 -0
  316. package/dist/json5-BT4Fjg39.js +7 -0
  317. package/dist/json5-BT4Fjg39.js.map +1 -0
  318. package/dist/jsonc-CHjZD8gR.js +7 -0
  319. package/dist/jsonc-CHjZD8gR.js.map +1 -0
  320. package/dist/jsonl-BGuvDmy9.js +7 -0
  321. package/dist/jsonl-BGuvDmy9.js.map +1 -0
  322. package/dist/jsonnet-Bx2cfsXg.js +7 -0
  323. package/dist/jsonnet-Bx2cfsXg.js.map +1 -0
  324. package/dist/jssm-BcADi6EI.js +7 -0
  325. package/dist/jssm-BcADi6EI.js.map +1 -0
  326. package/dist/jsx-BtKADgXT.js +7 -0
  327. package/dist/jsx-BtKADgXT.js.map +1 -0
  328. package/dist/julia--2-efCjg.js +17 -0
  329. package/dist/julia--2-efCjg.js.map +1 -0
  330. package/dist/kanagawa-dragon-CiKur4Hl.js +5 -0
  331. package/dist/kanagawa-dragon-CiKur4Hl.js.map +1 -0
  332. package/dist/kanagawa-lotus-BKu-smKu.js +5 -0
  333. package/dist/kanagawa-lotus-BKu-smKu.js.map +1 -0
  334. package/dist/kanagawa-wave-CQwozSzG.js +5 -0
  335. package/dist/kanagawa-wave-CQwozSzG.js.map +1 -0
  336. package/dist/kdl-BNOv9TC3.js +7 -0
  337. package/dist/kdl-BNOv9TC3.js.map +1 -0
  338. package/dist/kotlin-ByBMgTeR.js +7 -0
  339. package/dist/kotlin-ByBMgTeR.js.map +1 -0
  340. package/dist/kusto-VWFLl2T0.js +7 -0
  341. package/dist/kusto-VWFLl2T0.js.map +1 -0
  342. package/dist/laserwave-6a00oqik.js +5 -0
  343. package/dist/laserwave-6a00oqik.js.map +1 -0
  344. package/dist/latex-Cs75fyNk.js +9 -0
  345. package/dist/latex-Cs75fyNk.js.map +1 -0
  346. package/dist/lean-D5yRrexI.js +7 -0
  347. package/dist/lean-D5yRrexI.js.map +1 -0
  348. package/dist/less-B1GLI2Di.js +7 -0
  349. package/dist/less-B1GLI2Di.js.map +1 -0
  350. package/dist/lib/internal/id.d.ts +12 -0
  351. package/dist/light-plus-CZuVqSLX.js +5 -0
  352. package/dist/light-plus-CZuVqSLX.js.map +1 -0
  353. package/dist/liquid-CHzkx3jT.js +15 -0
  354. package/dist/liquid-CHzkx3jT.js.map +1 -0
  355. package/dist/llvm-co1rIKs3.js +7 -0
  356. package/dist/llvm-co1rIKs3.js.map +1 -0
  357. package/dist/log-Al8wyEFV.js +7 -0
  358. package/dist/log-Al8wyEFV.js.map +1 -0
  359. package/dist/logo-DBa4JDzV.js +7 -0
  360. package/dist/logo-DBa4JDzV.js.map +1 -0
  361. package/dist/lua-kX5WP_P5.js +9 -0
  362. package/dist/lua-kX5WP_P5.js.map +1 -0
  363. package/dist/luau-DtBSxLyz.js +7 -0
  364. package/dist/luau-DtBSxLyz.js.map +1 -0
  365. package/dist/make-CsMclxtr.js +7 -0
  366. package/dist/make-CsMclxtr.js.map +1 -0
  367. package/dist/markdown-CrScaQ96.js +7 -0
  368. package/dist/markdown-CrScaQ96.js.map +1 -0
  369. package/dist/marko-ls0Jg2j8.js +15 -0
  370. package/dist/marko-ls0Jg2j8.js.map +1 -0
  371. package/dist/material-theme-D6KBX41T.js +5 -0
  372. package/dist/material-theme-D6KBX41T.js.map +1 -0
  373. package/dist/material-theme-darker-CkRroheE.js +5 -0
  374. package/dist/material-theme-darker-CkRroheE.js.map +1 -0
  375. package/dist/material-theme-lighter-BUBw43Yz.js +5 -0
  376. package/dist/material-theme-lighter-BUBw43Yz.js.map +1 -0
  377. package/dist/material-theme-ocean-ClGX14Ja.js +5 -0
  378. package/dist/material-theme-ocean-ClGX14Ja.js.map +1 -0
  379. package/dist/material-theme-palenight-C1RVm8K1.js +5 -0
  380. package/dist/material-theme-palenight-C1RVm8K1.js.map +1 -0
  381. package/dist/matlab-BOAaUVP0.js +7 -0
  382. package/dist/matlab-BOAaUVP0.js.map +1 -0
  383. package/dist/mdc-uaivvctV.js +13 -0
  384. package/dist/mdc-uaivvctV.js.map +1 -0
  385. package/dist/mdx-BOhZZUJ8.js +7 -0
  386. package/dist/mdx-BOhZZUJ8.js.map +1 -0
  387. package/dist/mermaid-B0ixDHKN.js +7 -0
  388. package/dist/mermaid-B0ixDHKN.js.map +1 -0
  389. package/dist/min-dark-C7ak0t6c.js +5 -0
  390. package/dist/min-dark-C7ak0t6c.js.map +1 -0
  391. package/dist/min-light-CKFxVcPp.js +5 -0
  392. package/dist/min-light-CKFxVcPp.js.map +1 -0
  393. package/dist/mipsasm-CTx18fBl.js +7 -0
  394. package/dist/mipsasm-CTx18fBl.js.map +1 -0
  395. package/dist/mojo-BD611d7o.js +7 -0
  396. package/dist/mojo-BD611d7o.js.map +1 -0
  397. package/dist/monokai-C1KBYcO0.js +5 -0
  398. package/dist/monokai-C1KBYcO0.js.map +1 -0
  399. package/dist/move-F-dICmj2.js +7 -0
  400. package/dist/move-F-dICmj2.js.map +1 -0
  401. package/dist/narrat-DmhDCBs-.js +7 -0
  402. package/dist/narrat-DmhDCBs-.js.map +1 -0
  403. package/dist/nextflow-DmSVRGjG.js +7 -0
  404. package/dist/nextflow-DmSVRGjG.js.map +1 -0
  405. package/dist/nginx-5vhPAEw3.js +9 -0
  406. package/dist/nginx-5vhPAEw3.js.map +1 -0
  407. package/dist/night-owl-Bm2rzalh.js +5 -0
  408. package/dist/night-owl-Bm2rzalh.js.map +1 -0
  409. package/dist/nim-QAjRdh9w.js +21 -0
  410. package/dist/nim-QAjRdh9w.js.map +1 -0
  411. package/dist/nix-BZK5F767.js +10 -0
  412. package/dist/nix-BZK5F767.js.map +1 -0
  413. package/dist/nord-CC5OiUXg.js +5 -0
  414. package/dist/nord-CC5OiUXg.js.map +1 -0
  415. package/dist/nushell-D8j3dhT-.js +7 -0
  416. package/dist/nushell-D8j3dhT-.js.map +1 -0
  417. package/dist/objective-c-Itk8tzmv.js +7 -0
  418. package/dist/objective-c-Itk8tzmv.js.map +1 -0
  419. package/dist/objective-cpp-DGt5UKRO.js +7 -0
  420. package/dist/objective-cpp-DGt5UKRO.js.map +1 -0
  421. package/dist/ocaml-eSVK32Eg.js +7 -0
  422. package/dist/ocaml-eSVK32Eg.js.map +1 -0
  423. package/dist/one-dark-pro-DTA3VF0_.js +5 -0
  424. package/dist/one-dark-pro-DTA3VF0_.js.map +1 -0
  425. package/dist/one-light-D9sNaUtq.js +5 -0
  426. package/dist/one-light-D9sNaUtq.js.map +1 -0
  427. package/dist/openscad-Sp5uZ6f2.js +7 -0
  428. package/dist/openscad-Sp5uZ6f2.js.map +1 -0
  429. package/dist/pascal-xy8pJNns.js +7 -0
  430. package/dist/pascal-xy8pJNns.js.map +1 -0
  431. package/dist/perl-DkVrgJBg.js +17 -0
  432. package/dist/perl-DkVrgJBg.js.map +1 -0
  433. package/dist/php-j2zCzTEz.js +19 -0
  434. package/dist/php-j2zCzTEz.js.map +1 -0
  435. package/dist/pkl-C-zSNmaA.js +7 -0
  436. package/dist/pkl-C-zSNmaA.js.map +1 -0
  437. package/dist/plastic-CSTz3KZp.js +5 -0
  438. package/dist/plastic-CSTz3KZp.js.map +1 -0
  439. package/dist/plsql-pVbGZfOv.js +7 -0
  440. package/dist/plsql-pVbGZfOv.js.map +1 -0
  441. package/dist/po-BNfHvqmm.js +7 -0
  442. package/dist/po-BNfHvqmm.js.map +1 -0
  443. package/dist/poimandres-C-VADXHD.js +5 -0
  444. package/dist/poimandres-C-VADXHD.js.map +1 -0
  445. package/dist/polar-CAZahv3u.js +7 -0
  446. package/dist/polar-CAZahv3u.js.map +1 -0
  447. package/dist/postcss-05aHdL-n.js +7 -0
  448. package/dist/postcss-05aHdL-n.js.map +1 -0
  449. package/dist/powerquery-DI9HkTvs.js +7 -0
  450. package/dist/powerquery-DI9HkTvs.js.map +1 -0
  451. package/dist/powershell-Clc4ydu-.js +7 -0
  452. package/dist/powershell-Clc4ydu-.js.map +1 -0
  453. package/dist/prisma-FZjmVtSl.js +7 -0
  454. package/dist/prisma-FZjmVtSl.js.map +1 -0
  455. package/dist/prolog-C5-yg4TO.js +7 -0
  456. package/dist/prolog-C5-yg4TO.js.map +1 -0
  457. package/dist/proto-MmCPeFAD.js +7 -0
  458. package/dist/proto-MmCPeFAD.js.map +1 -0
  459. package/dist/pug-XOw9Q1Ho.js +13 -0
  460. package/dist/pug-XOw9Q1Ho.js.map +1 -0
  461. package/dist/puppet-CUJHmnxV.js +7 -0
  462. package/dist/puppet-CUJHmnxV.js.map +1 -0
  463. package/dist/purescript-rUfGld-4.js +7 -0
  464. package/dist/purescript-rUfGld-4.js.map +1 -0
  465. package/dist/python-BFNSHbwJ.js +7 -0
  466. package/dist/python-BFNSHbwJ.js.map +1 -0
  467. package/dist/qml-rTNXsquU.js +9 -0
  468. package/dist/qml-rTNXsquU.js.map +1 -0
  469. package/dist/qmldir-BInDYbpo.js +7 -0
  470. package/dist/qmldir-BInDYbpo.js.map +1 -0
  471. package/dist/qss-AeJTysr_.js +7 -0
  472. package/dist/qss-AeJTysr_.js.map +1 -0
  473. package/dist/r-Bm0uF0U2.js +7 -0
  474. package/dist/r-Bm0uF0U2.js.map +1 -0
  475. package/dist/racket-B83wSAja.js +7 -0
  476. package/dist/racket-B83wSAja.js.map +1 -0
  477. package/dist/raku-nEQ4ZJJ7.js +7 -0
  478. package/dist/raku-nEQ4ZJJ7.js.map +1 -0
  479. package/dist/razor-B1z-bksM.js +11 -0
  480. package/dist/razor-B1z-bksM.js.map +1 -0
  481. package/dist/red-7y8PH7HH.js +5 -0
  482. package/dist/red-7y8PH7HH.js.map +1 -0
  483. package/dist/reg-m_s_Kiip.js +7 -0
  484. package/dist/reg-m_s_Kiip.js.map +1 -0
  485. package/dist/regexp-BazyLpPg.js +7 -0
  486. package/dist/regexp-BazyLpPg.js.map +1 -0
  487. package/dist/rel-BcRfyd6Q.js +7 -0
  488. package/dist/rel-BcRfyd6Q.js.map +1 -0
  489. package/dist/riscv-Ce8MAQLP.js +7 -0
  490. package/dist/riscv-Ce8MAQLP.js.map +1 -0
  491. package/dist/rose-pine-BKc3yVeu.js +5 -0
  492. package/dist/rose-pine-BKc3yVeu.js.map +1 -0
  493. package/dist/rose-pine-dawn-BulJcPZT.js +5 -0
  494. package/dist/rose-pine-dawn-BulJcPZT.js.map +1 -0
  495. package/dist/rose-pine-moon-j6jiXKV8.js +5 -0
  496. package/dist/rose-pine-moon-j6jiXKV8.js.map +1 -0
  497. package/dist/rosmsg-Cz0w1km8.js +7 -0
  498. package/dist/rosmsg-Cz0w1km8.js.map +1 -0
  499. package/dist/rst-CcbeA9zE.js +23 -0
  500. package/dist/rst-CcbeA9zE.js.map +1 -0
  501. package/dist/ruby-DMPw6uKF.js +31 -0
  502. package/dist/ruby-DMPw6uKF.js.map +1 -0
  503. package/dist/rust-CLzF9zIN.js +7 -0
  504. package/dist/rust-CLzF9zIN.js.map +1 -0
  505. package/dist/sas-fpEvgATw.js +9 -0
  506. package/dist/sas-fpEvgATw.js.map +1 -0
  507. package/dist/sass-DxHp5rTx.js +7 -0
  508. package/dist/sass-DxHp5rTx.js.map +1 -0
  509. package/dist/scala-D4grkFkl.js +7 -0
  510. package/dist/scala-D4grkFkl.js.map +1 -0
  511. package/dist/scheme-BCRWuEm4.js +7 -0
  512. package/dist/scheme-BCRWuEm4.js.map +1 -0
  513. package/dist/scss-B1FaCqwR.js +9 -0
  514. package/dist/scss-B1FaCqwR.js.map +1 -0
  515. package/dist/sdbl-B7T8abf4.js +7 -0
  516. package/dist/sdbl-B7T8abf4.js.map +1 -0
  517. package/dist/shaderlab-Cr62-Wb4.js +9 -0
  518. package/dist/shaderlab-Cr62-Wb4.js.map +1 -0
  519. package/dist/shellscript-InADTalH.js +7 -0
  520. package/dist/shellscript-InADTalH.js.map +1 -0
  521. package/dist/shellsession-DiDJNQdy.js +9 -0
  522. package/dist/shellsession-DiDJNQdy.js.map +1 -0
  523. package/dist/slack-dark-i7wN4OET.js +5 -0
  524. package/dist/slack-dark-i7wN4OET.js.map +1 -0
  525. package/dist/slack-ochin-ndHf0LoP.js +5 -0
  526. package/dist/slack-ochin-ndHf0LoP.js.map +1 -0
  527. package/dist/smalltalk-BlI1_OkM.js +7 -0
  528. package/dist/smalltalk-BlI1_OkM.js.map +1 -0
  529. package/dist/snazzy-light-BlSJXAu4.js +5 -0
  530. package/dist/snazzy-light-BlSJXAu4.js.map +1 -0
  531. package/dist/solarized-dark-UTmkh7lw.js +5 -0
  532. package/dist/solarized-dark-UTmkh7lw.js.map +1 -0
  533. package/dist/solarized-light-BheCkDPT.js +5 -0
  534. package/dist/solarized-light-BheCkDPT.js.map +1 -0
  535. package/dist/solidity-DUWnFhS6.js +7 -0
  536. package/dist/solidity-DUWnFhS6.js.map +1 -0
  537. package/dist/soy-C1-6njHa.js +9 -0
  538. package/dist/soy-C1-6njHa.js.map +1 -0
  539. package/dist/sparql-B0KWFEri.js +9 -0
  540. package/dist/sparql-B0KWFEri.js.map +1 -0
  541. package/dist/splunk-CRXR8A9s.js +7 -0
  542. package/dist/splunk-CRXR8A9s.js.map +1 -0
  543. package/dist/sql-Cn_v3PB0.js +7 -0
  544. package/dist/sql-Cn_v3PB0.js.map +1 -0
  545. package/dist/ssh-config-DP-hNVbF.js +7 -0
  546. package/dist/ssh-config-DP-hNVbF.js.map +1 -0
  547. package/dist/stata-B8c5fTjX.js +9 -0
  548. package/dist/stata-B8c5fTjX.js.map +1 -0
  549. package/dist/stylus-CyKEU1Ej.js +7 -0
  550. package/dist/stylus-CyKEU1Ej.js.map +1 -0
  551. package/dist/svelte-5UasyOg7.js +15 -0
  552. package/dist/svelte-5UasyOg7.js.map +1 -0
  553. package/dist/swift-9UzSvamq.js +7 -0
  554. package/dist/swift-9UzSvamq.js.map +1 -0
  555. package/dist/synthwave-84-NU3C_KFZ.js +5 -0
  556. package/dist/synthwave-84-NU3C_KFZ.js.map +1 -0
  557. package/dist/system-verilog-BCm7smPJ.js +7 -0
  558. package/dist/system-verilog-BCm7smPJ.js.map +1 -0
  559. package/dist/systemd-C-4qm6XH.js +7 -0
  560. package/dist/systemd-C-4qm6XH.js.map +1 -0
  561. package/dist/talonscript-CFF3LF_O.js +7 -0
  562. package/dist/talonscript-CFF3LF_O.js.map +1 -0
  563. package/dist/tasl-Cg_WBUAe.js +7 -0
  564. package/dist/tasl-Cg_WBUAe.js.map +1 -0
  565. package/dist/tcl-DN7buRTF.js +7 -0
  566. package/dist/tcl-DN7buRTF.js.map +1 -0
  567. package/dist/templ-peLZIM2D.js +13 -0
  568. package/dist/templ-peLZIM2D.js.map +1 -0
  569. package/dist/terraform-DGvcn9zM.js +7 -0
  570. package/dist/terraform-DGvcn9zM.js.map +1 -0
  571. package/dist/tex-DpOayVob.js +9 -0
  572. package/dist/tex-DpOayVob.js.map +1 -0
  573. package/dist/tokyo-night-DP4TmcQl.js +5 -0
  574. package/dist/tokyo-night-DP4TmcQl.js.map +1 -0
  575. package/dist/toml-DY62mUL_.js +7 -0
  576. package/dist/toml-DY62mUL_.js.map +1 -0
  577. package/dist/ts-tags-ioVe2PKw.js +42 -0
  578. package/dist/ts-tags-ioVe2PKw.js.map +1 -0
  579. package/dist/tsv-BtvSkaG0.js +7 -0
  580. package/dist/tsv-BtvSkaG0.js.map +1 -0
  581. package/dist/tsx-B8rCNbgL.js +7 -0
  582. package/dist/tsx-B8rCNbgL.js.map +1 -0
  583. package/dist/turtle-_H59FV7D.js +7 -0
  584. package/dist/turtle-_H59FV7D.js.map +1 -0
  585. package/dist/twig-CcRLVyUg.js +19 -0
  586. package/dist/twig-CcRLVyUg.js.map +1 -0
  587. package/dist/typescript-RycA9KXf.js +7 -0
  588. package/dist/typescript-RycA9KXf.js.map +1 -0
  589. package/dist/typespec-DWqp-kUU.js +7 -0
  590. package/dist/typespec-DWqp-kUU.js.map +1 -0
  591. package/dist/typst-D_1QKWns.js +7 -0
  592. package/dist/typst-D_1QKWns.js.map +1 -0
  593. package/dist/v-BPCNiyYe.js +7 -0
  594. package/dist/v-BPCNiyYe.js.map +1 -0
  595. package/dist/vala-uxaPR7d1.js +7 -0
  596. package/dist/vala-uxaPR7d1.js.map +1 -0
  597. package/dist/vb-D8_c5-KN.js +7 -0
  598. package/dist/vb-D8_c5-KN.js.map +1 -0
  599. package/dist/verilog-B-bybjPF.js +7 -0
  600. package/dist/verilog-B-bybjPF.js.map +1 -0
  601. package/dist/vesper-BckBta1U.js +5 -0
  602. package/dist/vesper-BckBta1U.js.map +1 -0
  603. package/dist/vhdl-CUlNa8ac.js +7 -0
  604. package/dist/vhdl-CUlNa8ac.js.map +1 -0
  605. package/dist/viml-DsfA-sWm.js +7 -0
  606. package/dist/viml-DsfA-sWm.js.map +1 -0
  607. package/dist/vitesse-black-BoGvW84i.js +5 -0
  608. package/dist/vitesse-black-BoGvW84i.js.map +1 -0
  609. package/dist/vitesse-dark-Cym-eLtO.js +5 -0
  610. package/dist/vitesse-dark-Cym-eLtO.js.map +1 -0
  611. package/dist/vitesse-light-CcmG315c.js +5 -0
  612. package/dist/vitesse-light-CcmG315c.js.map +1 -0
  613. package/dist/vue-DOVAQqiz.js +32 -0
  614. package/dist/vue-DOVAQqiz.js.map +1 -0
  615. package/dist/vue-html-C7WI2elu.js +11 -0
  616. package/dist/vue-html-C7WI2elu.js.map +1 -0
  617. package/dist/vue-vine-D386fra9.js +21 -0
  618. package/dist/vue-vine-D386fra9.js.map +1 -0
  619. package/dist/vyper-CPQuu50u.js +7 -0
  620. package/dist/vyper-CPQuu50u.js.map +1 -0
  621. package/dist/wasm-BBXxrAl7.js +7 -0
  622. package/dist/wasm-BBXxrAl7.js.map +1 -0
  623. package/dist/wasm-DQxwEHae.js +8 -0
  624. package/dist/wasm-DQxwEHae.js.map +1 -0
  625. package/dist/wenyan-pbVjoM9_.js +7 -0
  626. package/dist/wenyan-pbVjoM9_.js.map +1 -0
  627. package/dist/wgsl-DY4iK1q1.js +7 -0
  628. package/dist/wgsl-DY4iK1q1.js.map +1 -0
  629. package/dist/wikitext-Z-MoUasO.js +7 -0
  630. package/dist/wikitext-Z-MoUasO.js.map +1 -0
  631. package/dist/wit-CQMQOlTg.js +7 -0
  632. package/dist/wit-CQMQOlTg.js.map +1 -0
  633. package/dist/wolfram-Dz4KXISs.js +7 -0
  634. package/dist/wolfram-Dz4KXISs.js.map +1 -0
  635. package/dist/xml-C2J0sS9M.js +9 -0
  636. package/dist/xml-C2J0sS9M.js.map +1 -0
  637. package/dist/xsl-BmSZphgC.js +9 -0
  638. package/dist/xsl-BmSZphgC.js.map +1 -0
  639. package/dist/yaml-DaO7k5B1.js +7 -0
  640. package/dist/yaml-DaO7k5B1.js.map +1 -0
  641. package/dist/zenscript-CxBjpf9c.js +7 -0
  642. package/dist/zenscript-CxBjpf9c.js.map +1 -0
  643. package/dist/zig-Vm0PO9wB.js +7 -0
  644. package/dist/zig-Vm0PO9wB.js.map +1 -0
  645. package/package.json +78 -0
package/README.md ADDED
@@ -0,0 +1,1131 @@
1
+ # @mrintel/villain-ui
2
+
3
+ [![npm version](https://img.shields.io/npm/v/@mrintel/villain-ui.svg)](https://www.npmjs.com/package/@mrintel/villain-ui)
4
+ [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
5
+
6
+ A luxury Svelte 5 component library with a distinctive dark aesthetic. Built for modern web applications that demand elegance, performance, and exceptional user experience.
7
+
8
+ ## ✨ Features
9
+
10
+ - **🚀 Svelte 5 with Runes** - Built on the latest Svelte 5 reactivity system with full TypeScript support
11
+ - **🎨 Luxury Dark Aesthetic** - Premium glass morphism, accent glows, and sophisticated depth
12
+ - **🎭 Tailwind CSS v4** - Powered by the latest Tailwind with CSS variable theming
13
+ - **🌳 Tree-Shakeable** - Import only what you need for optimal bundle size
14
+ - **🎯 Fully Typed** - Strict TypeScript mode with complete type definitions
15
+ - **🎬 Premium Motion** - Smooth animations with custom luxury easing curves
16
+ - **🔧 Highly Customizable** - Theme via CSS variables without touching component code
17
+ - **♿ Accessible** - ARIA-compliant components following WAI-ARIA best practices
18
+
19
+ ## 📦 Installation
20
+
21
+ ```bash
22
+ # npm
23
+ npm install @mrintel/villain-ui
24
+
25
+ # pnpm
26
+ pnpm add @mrintel/villain-ui
27
+
28
+ # yarn
29
+ yarn add @mrintel/villain-ui
30
+ ```
31
+
32
+ > **Note on Imports:** All components are exported from the root package (`@mrintel/villain-ui`). Category-specific subpath imports (e.g., `@mrintel/villain-ui/buttons`) are not provided, as the library is designed for tree-shaking at the component level. Your bundler will automatically include only the components you import.
33
+
34
+ ### Peer Dependencies
35
+
36
+ Install the required peer dependencies if you haven't already:
37
+
38
+ ```bash
39
+ npm install svelte@^5.0.0 tailwindcss@^4.0.0
40
+ ```
41
+
42
+ ### Import Theme
43
+
44
+ **Important:** The theme CSS is **not** automatically imported when you use components. You must explicitly import it in your app's entry point to apply the default styles.
45
+
46
+ Import the theme CSS in your app's entry point (e.g., `+layout.svelte` in SvelteKit or `main.ts` in Vite):
47
+
48
+ ```typescript
49
+ import '@mrintel/villain-ui/theme.css';
50
+ ```
51
+
52
+ This explicit import strategy gives you full control over styling and allows you to:
53
+ - Use a custom theme instead of the default
54
+ - Conditionally load themes
55
+ - Override theme variables before or after the default theme loads
56
+
57
+ ## 🚀 Quick Start
58
+
59
+ ### SvelteKit Setup
60
+
61
+ ```svelte
62
+ <!-- src/routes/+layout.svelte -->
63
+ <script>
64
+ import '@mrintel/villain-ui/theme.css';
65
+ </script>
66
+
67
+ <slot />
68
+ ```
69
+
70
+ ### Basic Usage
71
+
72
+ ```svelte
73
+ <script>
74
+ import { Button, Card } from '@mrintel/villain-ui';
75
+ </script>
76
+
77
+ <Card padding="lg">
78
+ <h1>Welcome to @mrintel/villain-ui</h1>
79
+ <p>Build luxury interfaces with ease.</p>
80
+ <Button variant="primary">Get Started</Button>
81
+ </Card>
82
+ ```
83
+
84
+ ## 📚 Components
85
+
86
+ ### Buttons
87
+
88
+ **Button** - Primary interactive element with variants
89
+
90
+ ```svelte
91
+ <script>
92
+ import { Button } from '@mrintel/villain-ui';
93
+ </script>
94
+
95
+ <Button variant="primary" size="md">Primary Button</Button>
96
+ <Button variant="secondary" size="md">Secondary Button</Button>
97
+ <Button variant="ghost" size="sm">Ghost Button</Button>
98
+ <Button variant="primary" size="lg" disabled>Disabled</Button>
99
+ ```
100
+
101
+ **IconButton** - Compact button for icon-only interactions
102
+
103
+ ```svelte
104
+ <script>
105
+ import { IconButton } from '@mrintel/villain-ui';
106
+ </script>
107
+
108
+ <IconButton variant="primary" size="md" aria-label="Settings">
109
+ <SettingsIcon />
110
+ </IconButton>
111
+ ```
112
+
113
+ **ButtonGroup** - Group related buttons together
114
+
115
+ ```svelte
116
+ <script>
117
+ import { ButtonGroup, Button } from '@mrintel/villain-ui';
118
+ </script>
119
+
120
+ <ButtonGroup>
121
+ <Button variant="secondary">Left</Button>
122
+ <Button variant="secondary">Center</Button>
123
+ <Button variant="secondary">Right</Button>
124
+ </ButtonGroup>
125
+ ```
126
+
127
+ **LinkButton** - Button styled as link
128
+
129
+ ```svelte
130
+ <script>
131
+ import { LinkButton } from '@mrintel/villain-ui';
132
+ </script>
133
+
134
+ <LinkButton href="/docs" variant="primary">View Documentation</LinkButton>
135
+ ```
136
+
137
+ **FloatingActionButton** - Prominent floating action button
138
+
139
+ ```svelte
140
+ <script>
141
+ import { FloatingActionButton } from '@mrintel/villain-ui';
142
+ </script>
143
+
144
+ <FloatingActionButton position="bottom-right" onclick={() => console.log('FAB clicked')}>
145
+ <PlusIcon />
146
+ </FloatingActionButton>
147
+ ```
148
+
149
+ ### Forms
150
+
151
+ **Input** - Text input with label and error states
152
+
153
+ ```svelte
154
+ <script>
155
+ import { Input } from '@mrintel/villain-ui';
156
+
157
+ let email = $state('');
158
+ let hasError = $state(false);
159
+ </script>
160
+
161
+ <Input
162
+ type="email"
163
+ label="Email Address"
164
+ placeholder="you@example.com"
165
+ bind:value={email}
166
+ error={hasError}
167
+ />
168
+ ```
169
+
170
+ **Textarea** - Multi-line text input
171
+
172
+ ```svelte
173
+ <script>
174
+ import { Textarea } from '@mrintel/villain-ui';
175
+
176
+ let comment = $state('');
177
+ </script>
178
+
179
+ <Textarea
180
+ label="Comment"
181
+ placeholder="Enter your comment..."
182
+ rows={5}
183
+ bind:value={comment}
184
+ />
185
+ ```
186
+
187
+ **Select** - Dropdown selection
188
+
189
+ ```svelte
190
+ <script>
191
+ import { Select } from '@mrintel/villain-ui';
192
+
193
+ let selected = $state('');
194
+ const options = [
195
+ { value: 'option1', label: 'Option 1' },
196
+ { value: 'option2', label: 'Option 2' },
197
+ { value: 'option3', label: 'Option 3' }
198
+ ];
199
+ </script>
200
+
201
+ <Select label="Choose an option" {options} bind:value={selected} />
202
+ ```
203
+
204
+ **Checkbox** - Boolean selection
205
+
206
+ ```svelte
207
+ <script>
208
+ import { Checkbox } from '@mrintel/villain-ui';
209
+
210
+ let accepted = $state(false);
211
+ </script>
212
+
213
+ <Checkbox label="I accept the terms and conditions" bind:checked={accepted} />
214
+ ```
215
+
216
+ **Switch** - Toggle switch
217
+
218
+ ```svelte
219
+ <script>
220
+ import { Switch } from '@mrintel/villain-ui';
221
+
222
+ let enabled = $state(false);
223
+ </script>
224
+
225
+ <Switch label="Enable notifications" bind:checked={enabled} />
226
+ ```
227
+
228
+ **RadioGroup** - Single selection from multiple options
229
+
230
+ ```svelte
231
+ <script>
232
+ import { RadioGroup } from '@mrintel/villain-ui';
233
+
234
+ let selected = $state('');
235
+ const options = [
236
+ { value: 'small', label: 'Small' },
237
+ { value: 'medium', label: 'Medium' },
238
+ { value: 'large', label: 'Large' }
239
+ ];
240
+ </script>
241
+
242
+ <RadioGroup label="Select size" {options} bind:value={selected} />
243
+ ```
244
+
245
+ **RangeSlider** - Numeric range selection
246
+
247
+ ```svelte
248
+ <script>
249
+ import { RangeSlider } from '@mrintel/villain-ui';
250
+
251
+ let volume = $state(50);
252
+ </script>
253
+
254
+ <RangeSlider label="Volume" min={0} max={100} bind:value={volume} />
255
+ ```
256
+
257
+ **FileUpload** - File selection with drag & drop
258
+
259
+ ```svelte
260
+ <script>
261
+ import { FileUpload } from '@mrintel/villain-ui';
262
+
263
+ function handleUpload(files) {
264
+ console.log('Files:', files);
265
+ }
266
+ </script>
267
+
268
+ <FileUpload
269
+ accept="image/*"
270
+ multiple
271
+ onchange={handleUpload}
272
+ label="Upload Images"
273
+ />
274
+ ```
275
+
276
+ **InputGroup** - Grouped input with addons
277
+
278
+ ```svelte
279
+ <script>
280
+ import { InputGroup } from '@mrintel/villain-ui';
281
+ </script>
282
+
283
+ <InputGroup>
284
+ {#snippet prepend()}
285
+ https://
286
+ {/snippet}
287
+
288
+ <input type="text" placeholder="example.com" />
289
+
290
+ {#snippet append()}
291
+ .com
292
+ {/snippet}
293
+ </InputGroup>
294
+ ```
295
+
296
+ ### Layout
297
+
298
+ **Card** - Content container with optional header and footer
299
+
300
+ ```svelte
301
+ <script>
302
+ import { Card } from '@mrintel/villain-ui';
303
+ </script>
304
+
305
+ <Card padding="lg" hoverable>
306
+ {#snippet header()}
307
+ <h2>Card Title</h2>
308
+ {/snippet}
309
+
310
+ <p>Card content goes here with beautiful glass morphism effect.</p>
311
+
312
+ {#snippet footer()}
313
+ <Button variant="primary">Action</Button>
314
+ {/snippet}
315
+ </Card>
316
+ ```
317
+
318
+ **Panel** - Simple content panel
319
+
320
+ ```svelte
321
+ <script>
322
+ import { Panel } from '@mrintel/villain-ui';
323
+ </script>
324
+
325
+ <Panel>
326
+ <p>Panel content with default styling</p>
327
+ </Panel>
328
+ ```
329
+
330
+ **Grid** - Responsive grid layout
331
+
332
+ ```svelte
333
+ <script>
334
+ import { Grid, Card } from '@mrintel/villain-ui';
335
+ </script>
336
+
337
+ <Grid columns={3} gap="lg">
338
+ <Card>Item 1</Card>
339
+ <Card>Item 2</Card>
340
+ <Card>Item 3</Card>
341
+ </Grid>
342
+ ```
343
+
344
+ **Container** - Centered content container
345
+
346
+ ```svelte
347
+ <script>
348
+ import { Container } from '@mrintel/villain-ui';
349
+ </script>
350
+
351
+ <Container maxWidth="lg">
352
+ <h1>Centered Content</h1>
353
+ </Container>
354
+ ```
355
+
356
+ **SectionHeader** - Section heading with divider
357
+
358
+ ```svelte
359
+ <script>
360
+ import { SectionHeader } from '@mrintel/villain-ui';
361
+ </script>
362
+
363
+ <SectionHeader title="Features" subtitle="What makes us different" />
364
+ ```
365
+
366
+ **Divider** - Visual separator
367
+
368
+ ```svelte
369
+ <script>
370
+ import { Divider } from '@mrintel/villain-ui';
371
+ </script>
372
+
373
+ <Divider />
374
+ <Divider orientation="vertical" />
375
+ ```
376
+
377
+ ### Navigation
378
+
379
+ **Navbar** - Top navigation bar
380
+
381
+ ```svelte
382
+ <script>
383
+ import { Navbar } from '@mrintel/villain-ui';
384
+ </script>
385
+
386
+ <Navbar>
387
+ {#snippet logo()}
388
+ <Logo />
389
+ {/snippet}
390
+
391
+ {#snippet links()}
392
+ <a href="/">Home</a>
393
+ <a href="/about">About</a>
394
+ <a href="/contact">Contact</a>
395
+ {/snippet}
396
+
397
+ {#snippet actions()}
398
+ <Button variant="primary">Sign In</Button>
399
+ {/snippet}
400
+ </Navbar>
401
+ ```
402
+
403
+ **Sidebar** - Side navigation with collapsible state
404
+
405
+ ```svelte
406
+ <script>
407
+ import { Sidebar } from '@mrintel/villain-ui';
408
+
409
+ let collapsed = $state(false);
410
+ </script>
411
+
412
+ <Sidebar bind:collapsed>
413
+ <nav>
414
+ <a href="/dashboard">Dashboard</a>
415
+ <a href="/settings">Settings</a>
416
+ <a href="/profile">Profile</a>
417
+ </nav>
418
+ </Sidebar>
419
+ ```
420
+
421
+ **Tabs** - Tabbed interface
422
+
423
+ ```svelte
424
+ <script>
425
+ import { Tabs } from '@mrintel/villain-ui';
426
+
427
+ let activeTab = $state('tab1');
428
+ const tabs = [
429
+ { id: 'tab1', label: 'Overview' },
430
+ { id: 'tab2', label: 'Analytics' },
431
+ { id: 'tab3', label: 'Reports' }
432
+ ];
433
+ </script>
434
+
435
+ <Tabs {tabs} bind:activeTab>
436
+ {#if activeTab === 'tab1'}
437
+ <div>Overview content</div>
438
+ {:else if activeTab === 'tab2'}
439
+ <div>Analytics content</div>
440
+ {:else}
441
+ <div>Reports content</div>
442
+ {/if}
443
+ </Tabs>
444
+ ```
445
+
446
+ **Breadcrumbs** - Navigation breadcrumb trail
447
+
448
+ ```svelte
449
+ <script>
450
+ import { Breadcrumbs } from '@mrintel/villain-ui';
451
+
452
+ const items = [
453
+ { label: 'Home', href: '/' },
454
+ { label: 'Products', href: '/products' },
455
+ { label: 'Category', href: '/products/category' },
456
+ { label: 'Item' }
457
+ ];
458
+ </script>
459
+
460
+ <Breadcrumbs {items} />
461
+ ```
462
+
463
+ **Menu** - Vertical navigation menu
464
+
465
+ ```svelte
466
+ <script>
467
+ import { Menu } from '@mrintel/villain-ui';
468
+
469
+ const items = [
470
+ { label: 'Dashboard', icon: DashboardIcon, href: '/dashboard' },
471
+ { label: 'Settings', icon: SettingsIcon, href: '/settings' }
472
+ ];
473
+ </script>
474
+
475
+ <Menu {items} />
476
+ ```
477
+
478
+ **DropdownMenu** - Dropdown menu with items
479
+
480
+ ```svelte
481
+ <script>
482
+ import { DropdownMenu } from '@mrintel/villain-ui';
483
+
484
+ const items = [
485
+ { label: 'Edit', onclick: () => console.log('Edit') },
486
+ { label: 'Delete', onclick: () => console.log('Delete') }
487
+ ];
488
+ </script>
489
+
490
+ <DropdownMenu {items} trigger="Options" />
491
+ ```
492
+
493
+ **ContextMenu** - Right-click context menu
494
+
495
+ ```svelte
496
+ <script>
497
+ import { ContextMenu } from '@mrintel/villain-ui';
498
+
499
+ const items = [
500
+ { label: 'Copy', onclick: () => console.log('Copy') },
501
+ { label: 'Paste', onclick: () => console.log('Paste') }
502
+ ];
503
+ </script>
504
+
505
+ <ContextMenu {items}>
506
+ <div>Right click me</div>
507
+ </ContextMenu>
508
+ ```
509
+
510
+ ### Overlays & Feedback
511
+
512
+ **Modal** - Modal dialog with backdrop
513
+
514
+ ```svelte
515
+ <script>
516
+ import { Modal, Button } from '@mrintel/villain-ui';
517
+
518
+ let open = $state(false);
519
+ </script>
520
+
521
+ <Button onclick={() => open = true}>Open Modal</Button>
522
+
523
+ <Modal bind:open title="Confirm Action">
524
+ <p>Are you sure you want to proceed?</p>
525
+
526
+ {#snippet footer()}
527
+ <Button variant="ghost" onclick={() => open = false}>Cancel</Button>
528
+ <Button variant="primary" onclick={() => open = false}>Confirm</Button>
529
+ {/snippet}
530
+ </Modal>
531
+ ```
532
+
533
+ **Alert** - Alert message with variants
534
+
535
+ ```svelte
536
+ <script>
537
+ import { Alert } from '@mrintel/villain-ui';
538
+ </script>
539
+
540
+ <Alert variant="success" title="Success">
541
+ Operation completed successfully!
542
+ </Alert>
543
+
544
+ <Alert variant="warning" title="Warning">
545
+ Please review your changes.
546
+ </Alert>
547
+
548
+ <Alert variant="error" title="Error">
549
+ An error occurred.
550
+ </Alert>
551
+ ```
552
+
553
+ **Spinner** - Loading spinner
554
+
555
+ ```svelte
556
+ <script>
557
+ import { Spinner } from '@mrintel/villain-ui';
558
+ </script>
559
+
560
+ <Spinner size="lg" />
561
+ ```
562
+
563
+ **Tooltip** - Hover tooltip
564
+
565
+ ```svelte
566
+ <script>
567
+ import { Tooltip } from '@mrintel/villain-ui';
568
+ </script>
569
+
570
+ <Tooltip content="This is a helpful tip" position="top">
571
+ <Button>Hover me</Button>
572
+ </Tooltip>
573
+ ```
574
+
575
+ **ProgressBar** - Progress indicator
576
+
577
+ ```svelte
578
+ <script>
579
+ import { ProgressBar } from '@mrintel/villain-ui';
580
+
581
+ let progress = $state(45);
582
+ </script>
583
+
584
+ <ProgressBar value={progress} max={100} showLabel />
585
+ ```
586
+
587
+ **SkeletonLoader** - Content loading placeholder
588
+
589
+ ```svelte
590
+ <script>
591
+ import { SkeletonLoader } from '@mrintel/villain-ui';
592
+ </script>
593
+
594
+ <SkeletonLoader variant="text" count={3} />
595
+ <SkeletonLoader variant="circle" width="60px" height="60px" />
596
+ <SkeletonLoader variant="rectangle" width="100%" height="200px" />
597
+ ```
598
+
599
+ **Toast** - Notification toast
600
+
601
+ ```svelte
602
+ <script>
603
+ import { Toast } from '@mrintel/villain-ui';
604
+
605
+ let show = $state(false);
606
+ </script>
607
+
608
+ <Toast bind:show variant="success" duration={3000}>
609
+ Changes saved successfully!
610
+ </Toast>
611
+ ```
612
+
613
+ **Drawer** - Slide-out drawer panel
614
+
615
+ ```svelte
616
+ <script>
617
+ import { Drawer, Button } from '@mrintel/villain-ui';
618
+
619
+ let open = $state(false);
620
+ </script>
621
+
622
+ <Button onclick={() => open = true}>Open Drawer</Button>
623
+
624
+ <Drawer bind:open position="right">
625
+ <h2>Drawer Content</h2>
626
+ <p>This slides in from the side.</p>
627
+ </Drawer>
628
+ ```
629
+
630
+ **Popover** - Popover content
631
+
632
+ ```svelte
633
+ <script>
634
+ import { Popover } from '@mrintel/villain-ui';
635
+ </script>
636
+
637
+ <Popover>
638
+ {#snippet trigger()}
639
+ <Button>Click me</Button>
640
+ {/snippet}
641
+
642
+ {#snippet content()}
643
+ <div>Popover content here</div>
644
+ {/snippet}
645
+ </Popover>
646
+ ```
647
+
648
+ **Dropdown** - Generic dropdown container
649
+
650
+ ```svelte
651
+ <script>
652
+ import { Dropdown } from '@mrintel/villain-ui';
653
+ </script>
654
+
655
+ <Dropdown trigger="Select Option">
656
+ <a href="#">Option 1</a>
657
+ <a href="#">Option 2</a>
658
+ <a href="#">Option 3</a>
659
+ </Dropdown>
660
+ ```
661
+
662
+ **CommandPalette** - Command palette with fuzzy search
663
+
664
+ ```svelte
665
+ <script>
666
+ import { CommandPalette } from '@mrintel/villain-ui';
667
+
668
+ let open = $state(false);
669
+ const commands = [
670
+ { id: '1', label: 'New File', onSelect: () => console.log('New File') },
671
+ { id: '2', label: 'Open Settings', onSelect: () => console.log('Settings') }
672
+ ];
673
+ </script>
674
+
675
+ <CommandPalette bind:open {commands} placeholder="Search commands..." />
676
+ ```
677
+
678
+ ### Typography
679
+
680
+ **Heading** - Semantic heading levels
681
+
682
+ ```svelte
683
+ <script>
684
+ import { Heading } from '@mrintel/villain-ui';
685
+ </script>
686
+
687
+ <Heading level={1}>Main Title</Heading>
688
+ <Heading level={2}>Section Title</Heading>
689
+ <Heading level={3}>Subsection</Heading>
690
+ ```
691
+
692
+ **Text** - Text with variants
693
+
694
+ ```svelte
695
+ <script>
696
+ import { Text } from '@mrintel/villain-ui';
697
+ </script>
698
+
699
+ <Text variant="body">Regular body text</Text>
700
+ <Text variant="caption">Caption text</Text>
701
+ <Text variant="muted">Muted text</Text>
702
+ ```
703
+
704
+ **Code** - Inline code
705
+
706
+ ```svelte
707
+ <script>
708
+ import { Code } from '@mrintel/villain-ui';
709
+ </script>
710
+
711
+ <p>Install with <Code>npm install @mrintel/villain-ui</Code></p>
712
+ ```
713
+
714
+ ### Data Display
715
+
716
+ **Table** - Data table
717
+
718
+ ```svelte
719
+ <script>
720
+ import { Table } from '@mrintel/villain-ui';
721
+
722
+ const columns = [
723
+ { key: 'name', label: 'Name' },
724
+ { key: 'email', label: 'Email' },
725
+ { key: 'role', label: 'Role' }
726
+ ];
727
+
728
+ const data = [
729
+ { name: 'John Doe', email: 'john@example.com', role: 'Admin' },
730
+ { name: 'Jane Smith', email: 'jane@example.com', role: 'User' }
731
+ ];
732
+ </script>
733
+
734
+ <Table {columns} {data} hoverable striped />
735
+ ```
736
+
737
+ **Pagination** - Page navigation
738
+
739
+ ```svelte
740
+ <script>
741
+ import { Pagination } from '@mrintel/villain-ui';
742
+
743
+ let currentPage = $state(1);
744
+ const totalPages = 10;
745
+ </script>
746
+
747
+ <Pagination bind:currentPage {totalPages} />
748
+ ```
749
+
750
+ **Badge** - Status badge
751
+
752
+ ```svelte
753
+ <script>
754
+ import { Badge } from '@mrintel/villain-ui';
755
+ </script>
756
+
757
+ <Badge variant="success">Active</Badge>
758
+ <Badge variant="warning">Pending</Badge>
759
+ <Badge variant="error">Error</Badge>
760
+ ```
761
+
762
+ **Tag** - Removable tag
763
+
764
+ ```svelte
765
+ <script>
766
+ import { Tag } from '@mrintel/villain-ui';
767
+ </script>
768
+
769
+ <Tag onRemove={() => console.log('Removed')}>JavaScript</Tag>
770
+ <Tag>TypeScript</Tag>
771
+ ```
772
+
773
+ **List** - Styled list
774
+
775
+ ```svelte
776
+ <script>
777
+ import { List } from '@mrintel/villain-ui';
778
+
779
+ const items = ['Item 1', 'Item 2', 'Item 3'];
780
+ </script>
781
+
782
+ <List {items} variant="ordered" />
783
+ ```
784
+
785
+ **Avatar** - User avatar
786
+
787
+ ```svelte
788
+ <script>
789
+ import { Avatar } from '@mrintel/villain-ui';
790
+ </script>
791
+
792
+ <Avatar src="/avatar.jpg" alt="User" size="md" />
793
+ <Avatar initials="JD" size="lg" />
794
+ ```
795
+
796
+ **CodeBlock** - Syntax-highlighted code block
797
+
798
+ ```svelte
799
+ <script>
800
+ import { CodeBlock } from '@mrintel/villain-ui';
801
+
802
+ const code = `function hello() {
803
+ console.log('Hello, world!');
804
+ }`;
805
+ </script>
806
+
807
+ <CodeBlock {code} language="javascript" showLineNumbers />
808
+ ```
809
+
810
+ **Stat** - Statistic display
811
+
812
+ ```svelte
813
+ <script>
814
+ import { Stat } from '@mrintel/villain-ui';
815
+ </script>
816
+
817
+ <Stat label="Total Users" value="1,234" change="+12.5%" trend="up" />
818
+ ```
819
+
820
+ ### Utilities
821
+
822
+ **Portal** - Render content in different DOM location
823
+
824
+ ```svelte
825
+ <script>
826
+ import { Portal } from '@mrintel/villain-ui';
827
+ </script>
828
+
829
+ <Portal target="body">
830
+ <div>This renders at the end of body</div>
831
+ </Portal>
832
+ ```
833
+
834
+ **Collapse** - Collapsible content
835
+
836
+ ```svelte
837
+ <script>
838
+ import { Collapse } from '@mrintel/villain-ui';
839
+
840
+ let open = $state(false);
841
+ </script>
842
+
843
+ <Collapse title="Click to expand" open={open} onToggle={() => open = !open}>
844
+ <p>Hidden content that can be toggled</p>
845
+ </Collapse>
846
+ ```
847
+
848
+ **Accordion** - Accordion with multiple items
849
+
850
+ ```svelte
851
+ <script>
852
+ import { Accordion } from '@mrintel/villain-ui';
853
+
854
+ const items = [
855
+ { id: '1', title: 'Section 1', content: 'Content for section 1' },
856
+ { id: '2', title: 'Section 2', content: 'Content for section 2' }
857
+ ];
858
+
859
+ let openItems = $state([]);
860
+ </script>
861
+
862
+ <Accordion {items} bind:openItems mode="multiple" />
863
+ ```
864
+
865
+ **Carousel** - Image/content carousel
866
+
867
+ ```svelte
868
+ <script>
869
+ import { Carousel } from '@mrintel/villain-ui';
870
+
871
+ const items = [
872
+ { id: '1', content: 'Slide 1' },
873
+ { id: '2', content: 'Slide 2' },
874
+ { id: '3', content: 'Slide 3' }
875
+ ];
876
+
877
+ let currentIndex = $state(0);
878
+ </script>
879
+
880
+ <Carousel {items} bind:currentIndex autoplay showDots showArrows />
881
+ ```
882
+
883
+ **ScrollArea** - Custom scrollable area
884
+
885
+ ```svelte
886
+ <script>
887
+ import { ScrollArea } from '@mrintel/villain-ui';
888
+ </script>
889
+
890
+ <ScrollArea height="300px">
891
+ <div>Long scrollable content...</div>
892
+ </ScrollArea>
893
+ ```
894
+
895
+ ## 🎨 Theming
896
+
897
+ ### CSS Variable System
898
+
899
+ @mrintel/villain-ui uses a comprehensive CSS variable system that allows complete customization without touching component code. All theme variables are defined in `theme.css` and can be overridden in your own CSS.
900
+
901
+ ### Custom Theme Example
902
+
903
+ Create a custom CSS file (e.g., `custom-theme.css`) and import it **after** the library theme:
904
+
905
+ ```css
906
+ /* custom-theme.css */
907
+
908
+ /* Override accent color from purple to blue */
909
+ :root {
910
+ --color-accent: #3B82F6;
911
+ --color-accent-soft: #60A5FA;
912
+ --color-accent-dark: #1E40AF;
913
+
914
+ --shadow-accent-glow:
915
+ 0 0 20px rgba(59, 130, 246, 0.4),
916
+ 0 0 40px rgba(59, 130, 246, 0.2),
917
+ 0 0 60px rgba(59, 130, 246, 0.1);
918
+
919
+ --shadow-text-glow:
920
+ 0 0 20px rgba(59, 130, 246, 0.5),
921
+ 0 0 40px rgba(59, 130, 246, 0.3);
922
+ }
923
+ ```
924
+
925
+ Import order in your app:
926
+
927
+ ```typescript
928
+ import '@mrintel/villain-ui/theme.css';
929
+ import './custom-theme.css'; // Your overrides
930
+ ```
931
+
932
+ ### Typography Customization
933
+
934
+ ```css
935
+ :root {
936
+ --font-heading: 'Montserrat', sans-serif;
937
+ --font-body: 'Open Sans', sans-serif;
938
+ --font-mono: 'Fira Code', monospace;
939
+
940
+ --text-h1-size: 4rem;
941
+ --text-body-size: 1.125rem;
942
+ }
943
+ ```
944
+
945
+ ### Border Radius Customization
946
+
947
+ ```css
948
+ :root {
949
+ --radius-sm: 6px;
950
+ --radius-md: 10px;
951
+ --radius-lg: 14px;
952
+ --radius-xl: 20px;
953
+ --radius-2xl: 28px;
954
+ }
955
+ ```
956
+
957
+ ### Complete Variable Reference
958
+
959
+ #### Colors
960
+
961
+ **Base Colors**
962
+ - `--color-base-0` through `--color-base-3`: Background layers
963
+ - `--color-surface`: Default surface color
964
+ - `--color-panel`: Panel background
965
+ - `--color-overlay`: Modal/overlay backdrop
966
+
967
+ **Accent Colors**
968
+ - `--color-accent`: Primary accent color
969
+ - `--color-accent-soft`: Lighter accent variant
970
+ - `--color-accent-dark`: Darker accent variant
971
+
972
+ **Text Colors**
973
+ - `--color-text`: Primary text color
974
+ - `--color-text-soft`: Secondary text color
975
+ - `--color-text-muted`: Muted/disabled text
976
+
977
+ **State Colors**
978
+ - `--color-success`: Success state
979
+ - `--color-warning`: Warning state
980
+ - `--color-error`: Error state
981
+
982
+ **Border Colors**
983
+ - `--color-border`: Default border
984
+ - `--color-border-strong`: Emphasized border
985
+
986
+ #### Typography
987
+
988
+ **Font Families**
989
+ - `--font-heading`: Heading font stack
990
+ - `--font-body`: Body text font stack
991
+ - `--font-mono`: Monospace font stack
992
+
993
+ **Text Scales** (h1-h6, body, caption)
994
+ - `--text-{level}-size`: Font size
995
+ - `--text-{level}-line-height`: Line height
996
+ - `--text-{level}-weight`: Font weight
997
+
998
+ #### Layout
999
+
1000
+ **Border Radii**
1001
+ - `--radius-none` through `--radius-2xl`, `--radius-pill`
1002
+
1003
+ **Spacing**
1004
+ - `--spacing-4.5`: 1.125rem
1005
+ - `--spacing-18`: 4.5rem
1006
+
1007
+ #### Effects
1008
+
1009
+ **Shadows**
1010
+ - `--shadow-accent-glow`: Accent glow effect
1011
+ - `--shadow-deep`: Deep shadow
1012
+ - `--shadow-text-glow`: Text glow effect
1013
+
1014
+ **Glass Effect**
1015
+ - `--glass-panel-background`: Glass panel background
1016
+
1017
+ #### Motion
1018
+
1019
+ **Easing Curves**
1020
+ - `--ease-luxe`: Primary luxury easing
1021
+ - `--ease-sharp`: Sharp transitions
1022
+
1023
+ ### Custom Utility Classes
1024
+
1025
+ The library provides custom utility classes you can use:
1026
+
1027
+ - `.text-glow` - Apply accent glow to text
1028
+ - `.glass-panel` - Glass morphism effect with backdrop blur
1029
+ - `.accent-glow` - Accent color glow effect
1030
+ - `.hover-lift` - Lift and glow on hover
1031
+
1032
+ Example usage:
1033
+
1034
+ ```svelte
1035
+ <div class="glass-panel accent-glow">
1036
+ <h2 class="text-glow">Glowing Title</h2>
1037
+ </div>
1038
+ ```
1039
+
1040
+ ### Theme Persistence
1041
+
1042
+ The brand structure (depth system, spacing, motion curves) persists even when colors change, maintaining the luxury aesthetic regardless of your chosen palette.
1043
+
1044
+ ## 🛠️ Development
1045
+
1046
+ ### Clone and Setup
1047
+
1048
+ ```bash
1049
+ git clone <repository-url>
1050
+ cd villain-ui
1051
+ npm install
1052
+ ```
1053
+
1054
+ ### Available Scripts
1055
+
1056
+ - `npm run dev` - Start Vite dev server
1057
+ - `npm run build` - Build the library for production
1058
+ - `npm run type-check` - Run TypeScript type checking
1059
+ - `npm run check` - Alias for type-check
1060
+
1061
+ ### Build Output
1062
+
1063
+ The build creates a `dist/` directory with:
1064
+
1065
+ ```
1066
+ dist/
1067
+ ├── index.js # Compiled components
1068
+ ├── index.d.ts # TypeScript declarations
1069
+ └── theme.css # Compiled theme styles
1070
+ ```
1071
+
1072
+ ### Manual Build Before Publishing
1073
+
1074
+ If you want to verify the build manually:
1075
+
1076
+ ```bash
1077
+ npm run build
1078
+ npm pack
1079
+ ```
1080
+
1081
+ This creates a `.tgz` file you can inspect before publishing.
1082
+
1083
+ ## 📘 TypeScript Support
1084
+
1085
+ @mrintel/villain-ui is built with TypeScript in strict mode and includes complete type definitions.
1086
+
1087
+ - ✅ Full TypeScript support
1088
+ - ✅ Strict mode enabled
1089
+ - ✅ Type definitions included in `dist/index.d.ts`
1090
+ - ✅ All components have typed Props interfaces
1091
+ - ✅ IntelliSense support in VS Code and other editors
1092
+
1093
+ Import types directly from components:
1094
+
1095
+ ```typescript
1096
+ import type { Button } from '@mrintel/villain-ui';
1097
+
1098
+ // Component props are fully typed
1099
+ const props: ComponentProps<typeof Button> = {
1100
+ variant: 'primary',
1101
+ size: 'md',
1102
+ disabled: false
1103
+ };
1104
+ ```
1105
+
1106
+ ## 🌐 Browser Support
1107
+
1108
+ @mrintel/villain-ui targets modern browsers that support:
1109
+
1110
+ - ✅ CSS Variables (Custom Properties)
1111
+ - ✅ CSS `backdrop-filter` for glass morphism
1112
+ - ✅ ES2022+ JavaScript features
1113
+ - ✅ Tailwind CSS v4 requirements
1114
+
1115
+ **Supported Browsers:**
1116
+ - Chrome/Edge 88+
1117
+ - Firefox 94+
1118
+ - Safari 15.4+
1119
+ - Opera 74+
1120
+
1121
+ ## 📄 License
1122
+
1123
+ MIT License - see LICENSE file for details
1124
+
1125
+ ## 🤝 Contributing
1126
+
1127
+ Contributions are welcome! Please feel free to submit issues and pull requests.
1128
+
1129
+ ---
1130
+
1131
+ **Built with ❤️ for the modern web**