@bookklik/senangstart-icons 1.0.7 → 1.0.8

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 (521) hide show
  1. package/.github/workflows/deploy-docs.yml +61 -0
  2. package/docs/.vitepress/config.mjs +171 -0
  3. package/docs/.vitepress/theme/custom.css +64 -0
  4. package/docs/.vitepress/theme/index.js +4 -0
  5. package/docs/guide/configuration.md +125 -0
  6. package/docs/guide/getting-started.md +34 -0
  7. package/docs/guide/installation.md +54 -0
  8. package/docs/guide/styling.md +156 -0
  9. package/docs/guide/usage.md +103 -0
  10. package/docs/icons/alert.md +59 -0
  11. package/docs/icons/align-bottom-object.md +59 -0
  12. package/docs/icons/align-center-object.md +59 -0
  13. package/docs/icons/align-left-object.md +59 -0
  14. package/docs/icons/align-middle-object.md +59 -0
  15. package/docs/icons/align-right-object.md +59 -0
  16. package/docs/icons/align-top-object.md +59 -0
  17. package/docs/icons/ar.md +59 -0
  18. package/docs/icons/archive-box.md +59 -0
  19. package/docs/icons/arrow-down.md +59 -0
  20. package/docs/icons/arrow-left-arrow-right.md +59 -0
  21. package/docs/icons/arrow-left-on-rectangle.md +59 -0
  22. package/docs/icons/arrow-left-right.md +59 -0
  23. package/docs/icons/arrow-left.md +59 -0
  24. package/docs/icons/arrow-long-down.md +59 -0
  25. package/docs/icons/arrow-long-left.md +59 -0
  26. package/docs/icons/arrow-long-right.md +59 -0
  27. package/docs/icons/arrow-long-up.md +59 -0
  28. package/docs/icons/arrow-path.md +59 -0
  29. package/docs/icons/arrow-right-on-rectangle.md +59 -0
  30. package/docs/icons/arrow-right.md +59 -0
  31. package/docs/icons/arrow-rotate-ccw.md +59 -0
  32. package/docs/icons/arrow-rotate-cw.md +59 -0
  33. package/docs/icons/arrow-top-right-on-square.md +59 -0
  34. package/docs/icons/arrow-up-arrow-down.md +59 -0
  35. package/docs/icons/arrow-up-down-left-right.md +59 -0
  36. package/docs/icons/arrow-up-down.md +59 -0
  37. package/docs/icons/arrow-up.md +59 -0
  38. package/docs/icons/banknotes.md +59 -0
  39. package/docs/icons/bars-3.md +59 -0
  40. package/docs/icons/basket.md +59 -0
  41. package/docs/icons/battery-0.md +59 -0
  42. package/docs/icons/battery-10.md +59 -0
  43. package/docs/icons/battery-100.md +59 -0
  44. package/docs/icons/battery-50.md +59 -0
  45. package/docs/icons/bell-alert.md +59 -0
  46. package/docs/icons/bell.md +59 -0
  47. package/docs/icons/bolt.md +59 -0
  48. package/docs/icons/book-close.md +59 -0
  49. package/docs/icons/book-open.md +59 -0
  50. package/docs/icons/book-stacked.md +59 -0
  51. package/docs/icons/bookmark.md +59 -0
  52. package/docs/icons/briefcase.md +59 -0
  53. package/docs/icons/brush.md +59 -0
  54. package/docs/icons/cake.md +59 -0
  55. package/docs/icons/calendar-approve.md +59 -0
  56. package/docs/icons/calendar-days.md +59 -0
  57. package/docs/icons/calendar-minus.md +59 -0
  58. package/docs/icons/calendar-plus.md +59 -0
  59. package/docs/icons/calendar-reject.md +59 -0
  60. package/docs/icons/calendar.md +59 -0
  61. package/docs/icons/camera.md +59 -0
  62. package/docs/icons/carousel.md +59 -0
  63. package/docs/icons/chart-bar.md +59 -0
  64. package/docs/icons/chart-line.md +59 -0
  65. package/docs/icons/chart-pie.md +59 -0
  66. package/docs/icons/chat-bubble-left-ellipsis.md +59 -0
  67. package/docs/icons/chat-bubble-left-right.md +59 -0
  68. package/docs/icons/chat-bubble-left.md +59 -0
  69. package/docs/icons/chat-bubble-right-ellipsis.md +59 -0
  70. package/docs/icons/chat-bubble-right.md +59 -0
  71. package/docs/icons/chatbot.md +59 -0
  72. package/docs/icons/check.md +59 -0
  73. package/docs/icons/chevron-double-down.md +59 -0
  74. package/docs/icons/chevron-double-left.md +59 -0
  75. package/docs/icons/chevron-double-right.md +59 -0
  76. package/docs/icons/chevron-double-up.md +59 -0
  77. package/docs/icons/chevron-down.md +59 -0
  78. package/docs/icons/chevron-left.md +59 -0
  79. package/docs/icons/chevron-right.md +59 -0
  80. package/docs/icons/chevron-up.md +59 -0
  81. package/docs/icons/circle.md +59 -0
  82. package/docs/icons/clipboard-document-check.md +59 -0
  83. package/docs/icons/clipboard.md +59 -0
  84. package/docs/icons/clock.md +59 -0
  85. package/docs/icons/cloud.md +59 -0
  86. package/docs/icons/code.md +59 -0
  87. package/docs/icons/cog-6-tooth.md +59 -0
  88. package/docs/icons/compress.md +59 -0
  89. package/docs/icons/computer-code.md +59 -0
  90. package/docs/icons/computer-desktop.md +59 -0
  91. package/docs/icons/computer-laptop.md +59 -0
  92. package/docs/icons/cone.md +59 -0
  93. package/docs/icons/console.md +59 -0
  94. package/docs/icons/container.md +59 -0
  95. package/docs/icons/contrast.md +59 -0
  96. package/docs/icons/controller.md +59 -0
  97. package/docs/icons/credit-card.md +59 -0
  98. package/docs/icons/crop.md +59 -0
  99. package/docs/icons/crosshair.md +59 -0
  100. package/docs/icons/cube.md +59 -0
  101. package/docs/icons/currency-dollar.md +59 -0
  102. package/docs/icons/currency-euro.md +59 -0
  103. package/docs/icons/currency-pound.md +59 -0
  104. package/docs/icons/currency-ringgit.md +59 -0
  105. package/docs/icons/currency-yen.md +59 -0
  106. package/docs/icons/cursor.md +59 -0
  107. package/docs/icons/cylinder-half.md +59 -0
  108. package/docs/icons/cylinder.md +59 -0
  109. package/docs/icons/device-phone-mobile.md +59 -0
  110. package/docs/icons/device-tablet.md +59 -0
  111. package/docs/icons/diamond.md +59 -0
  112. package/docs/icons/document-duplicate.md +59 -0
  113. package/docs/icons/document-text.md +59 -0
  114. package/docs/icons/document.md +59 -0
  115. package/docs/icons/dodecahedron.md +59 -0
  116. package/docs/icons/double-tick.md +59 -0
  117. package/docs/icons/draw-curve.md +59 -0
  118. package/docs/icons/draw-line.md +59 -0
  119. package/docs/icons/envelope-open.md +59 -0
  120. package/docs/icons/envelope.md +59 -0
  121. package/docs/icons/eraser.md +59 -0
  122. package/docs/icons/exclamation-circle.md +59 -0
  123. package/docs/icons/exclamation-triangle.md +59 -0
  124. package/docs/icons/expand.md +59 -0
  125. package/docs/icons/eye-slash.md +59 -0
  126. package/docs/icons/eye.md +59 -0
  127. package/docs/icons/flag.md +59 -0
  128. package/docs/icons/flip-horizontal.md +59 -0
  129. package/docs/icons/flip-vertical.md +59 -0
  130. package/docs/icons/focus.md +59 -0
  131. package/docs/icons/folder-minus.md +59 -0
  132. package/docs/icons/folder-open.md +59 -0
  133. package/docs/icons/folder-plus.md +59 -0
  134. package/docs/icons/folder.md +59 -0
  135. package/docs/icons/font.md +59 -0
  136. package/docs/icons/game.md +59 -0
  137. package/docs/icons/gift.md +59 -0
  138. package/docs/icons/globe-alt.md +59 -0
  139. package/docs/icons/gradient.md +59 -0
  140. package/docs/icons/grid.md +59 -0
  141. package/docs/icons/group-object.md +59 -0
  142. package/docs/icons/hand-grab.md +59 -0
  143. package/docs/icons/hand-thumb-down.md +59 -0
  144. package/docs/icons/hand-thumb-up.md +59 -0
  145. package/docs/icons/hand.md +59 -0
  146. package/docs/icons/heart-extruded.md +59 -0
  147. package/docs/icons/heart.md +59 -0
  148. package/docs/icons/hexagon.md +59 -0
  149. package/docs/icons/home.md +59 -0
  150. package/docs/icons/horizontal-3-dots.md +59 -0
  151. package/docs/icons/hourglass-0.md +59 -0
  152. package/docs/icons/hourglass-100.md +59 -0
  153. package/docs/icons/hourglass-50.md +59 -0
  154. package/docs/icons/hourglass-80.md +59 -0
  155. package/docs/icons/icosahedron.md +59 -0
  156. package/docs/icons/inbox.md +59 -0
  157. package/docs/icons/index.md +1295 -0
  158. package/docs/icons/information-circle.md +59 -0
  159. package/docs/icons/key.md +59 -0
  160. package/docs/icons/layer-stacks.md +59 -0
  161. package/docs/icons/layout.md +59 -0
  162. package/docs/icons/light-bulb.md +59 -0
  163. package/docs/icons/lock-closed.md +59 -0
  164. package/docs/icons/lock-open.md +59 -0
  165. package/docs/icons/magic-wand.md +59 -0
  166. package/docs/icons/magnifying-glass-focus.md +59 -0
  167. package/docs/icons/magnifying-glass-minus.md +59 -0
  168. package/docs/icons/magnifying-glass-plus.md +59 -0
  169. package/docs/icons/magnifying-glass.md +59 -0
  170. package/docs/icons/map-pin.md +59 -0
  171. package/docs/icons/map.md +59 -0
  172. package/docs/icons/marquee.md +59 -0
  173. package/docs/icons/maximize.md +59 -0
  174. package/docs/icons/medal.md +59 -0
  175. package/docs/icons/microphone-mute.md +59 -0
  176. package/docs/icons/microphone.md +59 -0
  177. package/docs/icons/minimize.md +59 -0
  178. package/docs/icons/minus.md +59 -0
  179. package/docs/icons/moon.md +59 -0
  180. package/docs/icons/musical-note.md +59 -0
  181. package/docs/icons/octahedron.md +59 -0
  182. package/docs/icons/panorama.md +59 -0
  183. package/docs/icons/paper-clip.md +59 -0
  184. package/docs/icons/pause-circle.md +59 -0
  185. package/docs/icons/pause.md +59 -0
  186. package/docs/icons/pencil.md +59 -0
  187. package/docs/icons/phone-x-mark.md +59 -0
  188. package/docs/icons/phone.md +59 -0
  189. package/docs/icons/photo.md +59 -0
  190. package/docs/icons/plane.md +59 -0
  191. package/docs/icons/play-circle.md +59 -0
  192. package/docs/icons/play.md +59 -0
  193. package/docs/icons/plus.md +59 -0
  194. package/docs/icons/polygon.md +59 -0
  195. package/docs/icons/presentation-chart-line.md +59 -0
  196. package/docs/icons/presentation-media.md +59 -0
  197. package/docs/icons/pyramid.md +59 -0
  198. package/docs/icons/qr-code.md +59 -0
  199. package/docs/icons/question-mark-circle.md +59 -0
  200. package/docs/icons/rectangle.md +59 -0
  201. package/docs/icons/reel.md +59 -0
  202. package/docs/icons/robot.md +59 -0
  203. package/docs/icons/roof.md +59 -0
  204. package/docs/icons/rotate-add.md +59 -0
  205. package/docs/icons/rotate-minus.md +59 -0
  206. package/docs/icons/save.md +59 -0
  207. package/docs/icons/scissor.md +59 -0
  208. package/docs/icons/shapes.md +59 -0
  209. package/docs/icons/shield-check.md +59 -0
  210. package/docs/icons/shield-exclamation.md +59 -0
  211. package/docs/icons/shopping-bag.md +59 -0
  212. package/docs/icons/shopping-cart.md +59 -0
  213. package/docs/icons/sliders-horizontal.md +59 -0
  214. package/docs/icons/sliders-vertical.md +59 -0
  215. package/docs/icons/sparkles.md +59 -0
  216. package/docs/icons/speaker-wave.md +59 -0
  217. package/docs/icons/speaker-x-mark.md +59 -0
  218. package/docs/icons/sphere-half.md +59 -0
  219. package/docs/icons/sphere.md +59 -0
  220. package/docs/icons/square.md +59 -0
  221. package/docs/icons/star.md +59 -0
  222. package/docs/icons/stop-circle.md +59 -0
  223. package/docs/icons/stop.md +59 -0
  224. package/docs/icons/sun.md +59 -0
  225. package/docs/icons/table.md +59 -0
  226. package/docs/icons/tabs.md +59 -0
  227. package/docs/icons/tetrahedron.md +59 -0
  228. package/docs/icons/text-align-center.md +59 -0
  229. package/docs/icons/text-align-justify.md +59 -0
  230. package/docs/icons/text-align-left.md +59 -0
  231. package/docs/icons/text-align-right.md +59 -0
  232. package/docs/icons/text.md +59 -0
  233. package/docs/icons/thunder.md +59 -0
  234. package/docs/icons/tic-tac-toe.md +59 -0
  235. package/docs/icons/time-reset.md +59 -0
  236. package/docs/icons/torus-knot.md +59 -0
  237. package/docs/icons/torus.md +59 -0
  238. package/docs/icons/trash.md +59 -0
  239. package/docs/icons/trophy.md +59 -0
  240. package/docs/icons/truck.md +59 -0
  241. package/docs/icons/tube.md +59 -0
  242. package/docs/icons/ungroup-object.md +59 -0
  243. package/docs/icons/user-circle.md +59 -0
  244. package/docs/icons/user-group.md +59 -0
  245. package/docs/icons/user-minus.md +59 -0
  246. package/docs/icons/user-plus.md +59 -0
  247. package/docs/icons/user.md +59 -0
  248. package/docs/icons/users.md +59 -0
  249. package/docs/icons/vertical-3-dots.md +59 -0
  250. package/docs/icons/video-camera.md +59 -0
  251. package/docs/icons/vr.md +59 -0
  252. package/docs/icons/wedge.md +59 -0
  253. package/docs/icons/whiteboard.md +59 -0
  254. package/docs/icons/wifi.md +59 -0
  255. package/docs/icons/window.md +59 -0
  256. package/docs/icons/x-mark.md +59 -0
  257. package/docs/index.md +48 -0
  258. package/docs/ms/guide/configuration.md +125 -0
  259. package/docs/ms/guide/getting-started.md +34 -0
  260. package/docs/ms/guide/installation.md +54 -0
  261. package/docs/ms/guide/styling.md +156 -0
  262. package/docs/ms/guide/usage.md +103 -0
  263. package/docs/ms/icons/alert.md +59 -0
  264. package/docs/ms/icons/align-bottom-object.md +59 -0
  265. package/docs/ms/icons/align-center-object.md +59 -0
  266. package/docs/ms/icons/align-left-object.md +59 -0
  267. package/docs/ms/icons/align-middle-object.md +59 -0
  268. package/docs/ms/icons/align-right-object.md +59 -0
  269. package/docs/ms/icons/align-top-object.md +59 -0
  270. package/docs/ms/icons/ar.md +59 -0
  271. package/docs/ms/icons/archive-box.md +59 -0
  272. package/docs/ms/icons/arrow-down.md +59 -0
  273. package/docs/ms/icons/arrow-left-arrow-right.md +59 -0
  274. package/docs/ms/icons/arrow-left-on-rectangle.md +59 -0
  275. package/docs/ms/icons/arrow-left-right.md +59 -0
  276. package/docs/ms/icons/arrow-left.md +59 -0
  277. package/docs/ms/icons/arrow-long-down.md +59 -0
  278. package/docs/ms/icons/arrow-long-left.md +59 -0
  279. package/docs/ms/icons/arrow-long-right.md +59 -0
  280. package/docs/ms/icons/arrow-long-up.md +59 -0
  281. package/docs/ms/icons/arrow-path.md +59 -0
  282. package/docs/ms/icons/arrow-right-on-rectangle.md +59 -0
  283. package/docs/ms/icons/arrow-right.md +59 -0
  284. package/docs/ms/icons/arrow-rotate-ccw.md +59 -0
  285. package/docs/ms/icons/arrow-rotate-cw.md +59 -0
  286. package/docs/ms/icons/arrow-top-right-on-square.md +59 -0
  287. package/docs/ms/icons/arrow-up-arrow-down.md +59 -0
  288. package/docs/ms/icons/arrow-up-down-left-right.md +59 -0
  289. package/docs/ms/icons/arrow-up-down.md +59 -0
  290. package/docs/ms/icons/arrow-up.md +59 -0
  291. package/docs/ms/icons/banknotes.md +59 -0
  292. package/docs/ms/icons/bars-3.md +59 -0
  293. package/docs/ms/icons/basket.md +59 -0
  294. package/docs/ms/icons/battery-0.md +59 -0
  295. package/docs/ms/icons/battery-10.md +59 -0
  296. package/docs/ms/icons/battery-100.md +59 -0
  297. package/docs/ms/icons/battery-50.md +59 -0
  298. package/docs/ms/icons/bell-alert.md +59 -0
  299. package/docs/ms/icons/bell.md +59 -0
  300. package/docs/ms/icons/bolt.md +59 -0
  301. package/docs/ms/icons/book-close.md +59 -0
  302. package/docs/ms/icons/book-open.md +59 -0
  303. package/docs/ms/icons/book-stacked.md +59 -0
  304. package/docs/ms/icons/bookmark.md +59 -0
  305. package/docs/ms/icons/briefcase.md +59 -0
  306. package/docs/ms/icons/brush.md +59 -0
  307. package/docs/ms/icons/cake.md +59 -0
  308. package/docs/ms/icons/calendar-approve.md +59 -0
  309. package/docs/ms/icons/calendar-days.md +59 -0
  310. package/docs/ms/icons/calendar-minus.md +59 -0
  311. package/docs/ms/icons/calendar-plus.md +59 -0
  312. package/docs/ms/icons/calendar-reject.md +59 -0
  313. package/docs/ms/icons/calendar.md +59 -0
  314. package/docs/ms/icons/camera.md +59 -0
  315. package/docs/ms/icons/carousel.md +59 -0
  316. package/docs/ms/icons/chart-bar.md +59 -0
  317. package/docs/ms/icons/chart-line.md +59 -0
  318. package/docs/ms/icons/chart-pie.md +59 -0
  319. package/docs/ms/icons/chat-bubble-left-ellipsis.md +59 -0
  320. package/docs/ms/icons/chat-bubble-left-right.md +59 -0
  321. package/docs/ms/icons/chat-bubble-left.md +59 -0
  322. package/docs/ms/icons/chat-bubble-right-ellipsis.md +59 -0
  323. package/docs/ms/icons/chat-bubble-right.md +59 -0
  324. package/docs/ms/icons/chatbot.md +59 -0
  325. package/docs/ms/icons/check.md +59 -0
  326. package/docs/ms/icons/chevron-double-down.md +59 -0
  327. package/docs/ms/icons/chevron-double-left.md +59 -0
  328. package/docs/ms/icons/chevron-double-right.md +59 -0
  329. package/docs/ms/icons/chevron-double-up.md +59 -0
  330. package/docs/ms/icons/chevron-down.md +59 -0
  331. package/docs/ms/icons/chevron-left.md +59 -0
  332. package/docs/ms/icons/chevron-right.md +59 -0
  333. package/docs/ms/icons/chevron-up.md +59 -0
  334. package/docs/ms/icons/circle.md +59 -0
  335. package/docs/ms/icons/clipboard-document-check.md +59 -0
  336. package/docs/ms/icons/clipboard.md +59 -0
  337. package/docs/ms/icons/clock.md +59 -0
  338. package/docs/ms/icons/cloud.md +59 -0
  339. package/docs/ms/icons/code.md +59 -0
  340. package/docs/ms/icons/cog-6-tooth.md +59 -0
  341. package/docs/ms/icons/compress.md +59 -0
  342. package/docs/ms/icons/computer-code.md +59 -0
  343. package/docs/ms/icons/computer-desktop.md +59 -0
  344. package/docs/ms/icons/computer-laptop.md +59 -0
  345. package/docs/ms/icons/cone.md +59 -0
  346. package/docs/ms/icons/console.md +59 -0
  347. package/docs/ms/icons/container.md +59 -0
  348. package/docs/ms/icons/contrast.md +59 -0
  349. package/docs/ms/icons/controller.md +59 -0
  350. package/docs/ms/icons/credit-card.md +59 -0
  351. package/docs/ms/icons/crop.md +59 -0
  352. package/docs/ms/icons/crosshair.md +59 -0
  353. package/docs/ms/icons/cube.md +59 -0
  354. package/docs/ms/icons/currency-dollar.md +59 -0
  355. package/docs/ms/icons/currency-euro.md +59 -0
  356. package/docs/ms/icons/currency-pound.md +59 -0
  357. package/docs/ms/icons/currency-ringgit.md +59 -0
  358. package/docs/ms/icons/currency-yen.md +59 -0
  359. package/docs/ms/icons/cursor.md +59 -0
  360. package/docs/ms/icons/cylinder-half.md +59 -0
  361. package/docs/ms/icons/cylinder.md +59 -0
  362. package/docs/ms/icons/device-phone-mobile.md +59 -0
  363. package/docs/ms/icons/device-tablet.md +59 -0
  364. package/docs/ms/icons/diamond.md +59 -0
  365. package/docs/ms/icons/document-duplicate.md +59 -0
  366. package/docs/ms/icons/document-text.md +59 -0
  367. package/docs/ms/icons/document.md +59 -0
  368. package/docs/ms/icons/dodecahedron.md +59 -0
  369. package/docs/ms/icons/double-tick.md +59 -0
  370. package/docs/ms/icons/draw-curve.md +59 -0
  371. package/docs/ms/icons/draw-line.md +59 -0
  372. package/docs/ms/icons/envelope-open.md +59 -0
  373. package/docs/ms/icons/envelope.md +59 -0
  374. package/docs/ms/icons/eraser.md +59 -0
  375. package/docs/ms/icons/exclamation-circle.md +59 -0
  376. package/docs/ms/icons/exclamation-triangle.md +59 -0
  377. package/docs/ms/icons/expand.md +59 -0
  378. package/docs/ms/icons/eye-slash.md +59 -0
  379. package/docs/ms/icons/eye.md +59 -0
  380. package/docs/ms/icons/flag.md +59 -0
  381. package/docs/ms/icons/flip-horizontal.md +59 -0
  382. package/docs/ms/icons/flip-vertical.md +59 -0
  383. package/docs/ms/icons/focus.md +59 -0
  384. package/docs/ms/icons/folder-minus.md +59 -0
  385. package/docs/ms/icons/folder-open.md +59 -0
  386. package/docs/ms/icons/folder-plus.md +59 -0
  387. package/docs/ms/icons/folder.md +59 -0
  388. package/docs/ms/icons/font.md +59 -0
  389. package/docs/ms/icons/game.md +59 -0
  390. package/docs/ms/icons/gift.md +59 -0
  391. package/docs/ms/icons/globe-alt.md +59 -0
  392. package/docs/ms/icons/gradient.md +59 -0
  393. package/docs/ms/icons/grid.md +59 -0
  394. package/docs/ms/icons/group-object.md +59 -0
  395. package/docs/ms/icons/hand-grab.md +59 -0
  396. package/docs/ms/icons/hand-thumb-down.md +59 -0
  397. package/docs/ms/icons/hand-thumb-up.md +59 -0
  398. package/docs/ms/icons/hand.md +59 -0
  399. package/docs/ms/icons/heart-extruded.md +59 -0
  400. package/docs/ms/icons/heart.md +59 -0
  401. package/docs/ms/icons/hexagon.md +59 -0
  402. package/docs/ms/icons/home.md +59 -0
  403. package/docs/ms/icons/horizontal-3-dots.md +59 -0
  404. package/docs/ms/icons/hourglass-0.md +59 -0
  405. package/docs/ms/icons/hourglass-100.md +59 -0
  406. package/docs/ms/icons/hourglass-50.md +59 -0
  407. package/docs/ms/icons/hourglass-80.md +59 -0
  408. package/docs/ms/icons/icosahedron.md +59 -0
  409. package/docs/ms/icons/inbox.md +59 -0
  410. package/docs/ms/icons/index.md +1295 -0
  411. package/docs/ms/icons/information-circle.md +59 -0
  412. package/docs/ms/icons/key.md +59 -0
  413. package/docs/ms/icons/layer-stacks.md +59 -0
  414. package/docs/ms/icons/layout.md +59 -0
  415. package/docs/ms/icons/light-bulb.md +59 -0
  416. package/docs/ms/icons/lock-closed.md +59 -0
  417. package/docs/ms/icons/lock-open.md +59 -0
  418. package/docs/ms/icons/magic-wand.md +59 -0
  419. package/docs/ms/icons/magnifying-glass-focus.md +59 -0
  420. package/docs/ms/icons/magnifying-glass-minus.md +59 -0
  421. package/docs/ms/icons/magnifying-glass-plus.md +59 -0
  422. package/docs/ms/icons/magnifying-glass.md +59 -0
  423. package/docs/ms/icons/map-pin.md +59 -0
  424. package/docs/ms/icons/map.md +59 -0
  425. package/docs/ms/icons/marquee.md +59 -0
  426. package/docs/ms/icons/maximize.md +59 -0
  427. package/docs/ms/icons/medal.md +59 -0
  428. package/docs/ms/icons/microphone-mute.md +59 -0
  429. package/docs/ms/icons/microphone.md +59 -0
  430. package/docs/ms/icons/minimize.md +59 -0
  431. package/docs/ms/icons/minus.md +59 -0
  432. package/docs/ms/icons/moon.md +59 -0
  433. package/docs/ms/icons/musical-note.md +59 -0
  434. package/docs/ms/icons/octahedron.md +59 -0
  435. package/docs/ms/icons/panorama.md +59 -0
  436. package/docs/ms/icons/paper-clip.md +59 -0
  437. package/docs/ms/icons/pause-circle.md +59 -0
  438. package/docs/ms/icons/pause.md +59 -0
  439. package/docs/ms/icons/pencil.md +59 -0
  440. package/docs/ms/icons/phone-x-mark.md +59 -0
  441. package/docs/ms/icons/phone.md +59 -0
  442. package/docs/ms/icons/photo.md +59 -0
  443. package/docs/ms/icons/plane.md +59 -0
  444. package/docs/ms/icons/play-circle.md +59 -0
  445. package/docs/ms/icons/play.md +59 -0
  446. package/docs/ms/icons/plus.md +59 -0
  447. package/docs/ms/icons/polygon.md +59 -0
  448. package/docs/ms/icons/presentation-chart-line.md +59 -0
  449. package/docs/ms/icons/presentation-media.md +59 -0
  450. package/docs/ms/icons/pyramid.md +59 -0
  451. package/docs/ms/icons/qr-code.md +59 -0
  452. package/docs/ms/icons/question-mark-circle.md +59 -0
  453. package/docs/ms/icons/rectangle.md +59 -0
  454. package/docs/ms/icons/reel.md +59 -0
  455. package/docs/ms/icons/robot.md +59 -0
  456. package/docs/ms/icons/roof.md +59 -0
  457. package/docs/ms/icons/rotate-add.md +59 -0
  458. package/docs/ms/icons/rotate-minus.md +59 -0
  459. package/docs/ms/icons/save.md +59 -0
  460. package/docs/ms/icons/scissor.md +59 -0
  461. package/docs/ms/icons/shapes.md +59 -0
  462. package/docs/ms/icons/shield-check.md +59 -0
  463. package/docs/ms/icons/shield-exclamation.md +59 -0
  464. package/docs/ms/icons/shopping-bag.md +59 -0
  465. package/docs/ms/icons/shopping-cart.md +59 -0
  466. package/docs/ms/icons/sliders-horizontal.md +59 -0
  467. package/docs/ms/icons/sliders-vertical.md +59 -0
  468. package/docs/ms/icons/sparkles.md +59 -0
  469. package/docs/ms/icons/speaker-wave.md +59 -0
  470. package/docs/ms/icons/speaker-x-mark.md +59 -0
  471. package/docs/ms/icons/sphere-half.md +59 -0
  472. package/docs/ms/icons/sphere.md +59 -0
  473. package/docs/ms/icons/square.md +59 -0
  474. package/docs/ms/icons/star.md +59 -0
  475. package/docs/ms/icons/stop-circle.md +59 -0
  476. package/docs/ms/icons/stop.md +59 -0
  477. package/docs/ms/icons/sun.md +59 -0
  478. package/docs/ms/icons/table.md +59 -0
  479. package/docs/ms/icons/tabs.md +59 -0
  480. package/docs/ms/icons/tetrahedron.md +59 -0
  481. package/docs/ms/icons/text-align-center.md +59 -0
  482. package/docs/ms/icons/text-align-justify.md +59 -0
  483. package/docs/ms/icons/text-align-left.md +59 -0
  484. package/docs/ms/icons/text-align-right.md +59 -0
  485. package/docs/ms/icons/text.md +59 -0
  486. package/docs/ms/icons/thunder.md +59 -0
  487. package/docs/ms/icons/tic-tac-toe.md +59 -0
  488. package/docs/ms/icons/time-reset.md +59 -0
  489. package/docs/ms/icons/torus-knot.md +59 -0
  490. package/docs/ms/icons/torus.md +59 -0
  491. package/docs/ms/icons/trash.md +59 -0
  492. package/docs/ms/icons/trophy.md +59 -0
  493. package/docs/ms/icons/truck.md +59 -0
  494. package/docs/ms/icons/tube.md +59 -0
  495. package/docs/ms/icons/ungroup-object.md +59 -0
  496. package/docs/ms/icons/user-circle.md +59 -0
  497. package/docs/ms/icons/user-group.md +59 -0
  498. package/docs/ms/icons/user-minus.md +59 -0
  499. package/docs/ms/icons/user-plus.md +59 -0
  500. package/docs/ms/icons/user.md +59 -0
  501. package/docs/ms/icons/users.md +59 -0
  502. package/docs/ms/icons/vertical-3-dots.md +59 -0
  503. package/docs/ms/icons/video-camera.md +59 -0
  504. package/docs/ms/icons/vr.md +59 -0
  505. package/docs/ms/icons/wedge.md +59 -0
  506. package/docs/ms/icons/whiteboard.md +59 -0
  507. package/docs/ms/icons/wifi.md +59 -0
  508. package/docs/ms/icons/window.md +59 -0
  509. package/docs/ms/icons/x-mark.md +59 -0
  510. package/docs/ms/index.md +48 -0
  511. package/package.json +13 -3
  512. package/scripts/build-icon-docs.js +331 -0
  513. package/scripts/build.js +40 -0
  514. package/test-results.json +11 -0
  515. package/tests/build-css.test.js +134 -0
  516. package/tests/build-icon-docs.test.js +132 -0
  517. package/tests/build-pipeline.test.js +138 -0
  518. package/tests/build-svgs.test.js +102 -0
  519. package/tests/ss-icon.test.js +178 -0
  520. package/tests/ss-loader.test.js +156 -0
  521. package/vitest.config.js +15 -0
@@ -0,0 +1,48 @@
1
+ ---
2
+ layout: home
3
+
4
+ hero:
5
+ name: "SenangStart Icons"
6
+ text: "Ikon cantik untuk projek web moden"
7
+ tagline: Pustaka ikon terkurasi, boleh disesuaikan, dan mudah digunakan
8
+ actions:
9
+ - theme: brand
10
+ text: Bermula
11
+ link: /ms/guide/getting-started
12
+ - theme: alt
13
+ text: Lihat Ikon
14
+ link: /ms/icons/
15
+ image:
16
+ src: https://senangstart.com/img/use_senangstart.svg
17
+ alt: SenangStart Icons
18
+
19
+ features:
20
+ - icon: <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="m21.64 3.64-1.28-1.28a1.21 1.21 0 00-1.72 0L2.36 18.64a1.21 1.21 0 000 1.72l1.28 1.28a1.2 1.2 0 001.72 0L21.64 5.36a1.2 1.2 0 000-1.72M10.5 10.5l3 3M5 6v4M19 15v4M10 3v2M7 8H3M21 17h-4M11 4H9"></path></svg>
21
+ title: Boleh Disesuaikan
22
+ details: Mudah menyesuaikan warna, saiz, dan gaya untuk memadankan sistem reka bentuk anda.
23
+ - icon: <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M9 3h5L12 8 18 8 8.5 22l3.5-10h-6l2-9z"></path></svg>
24
+ title: Ringan
25
+ details: Ikon SVG yang dioptimumkan, pantas dimuatkan dan mesra prestasi.
26
+ - icon: <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="M9.90 5.32 L9.14 2.94 A9.5 9.5 0 0 1 14.86 2.94 L14.10 5.32 A7 7 0 0 1 16.73 6.84 L18.42 5.00 A9.5 9.5 0 0 1 21.27 9.94 L18.83 10.48 A7 7 0 0 1 18.83 13.52 L21.27 14.06 A9.5 9.5 0 0 1 18.42 19.00 L16.73 17.16 A7 7 0 0 1 14.10 18.68 L14.86 21.06 A9.5 9.5 0 0 1 9.14 21.06 L9.90 18.68 A7 7 0 0 1 7.27 17.16 L5.58 19.00 A9.5 9.5 0 0 1 2.73 14.06 L5.17 13.52 A7 7 0 0 1 5.17 10.48 L2.73 9.94 A9.5 9.5 0 0 1 5.58 5.00 L7.27 6.84 A7 7 0 0 1 9.90 5.32 Z M14.5 12 A2.5 2.5 0 1 0 9.5 12 A2.5 2.5 0 1 0 14.5 12 Z"></path></svg>
27
+ title: Integrasi Mudah
28
+ details: API mudah dengan pelbagai cara penggunaan - Web Components, CDN, atau npm.
29
+ ---
30
+
31
+ ## Mula Pantas
32
+
33
+ Tambah SenangStart Icons ke projek anda:
34
+
35
+ ```html
36
+ <!-- CDN -->
37
+ <script src="https://unpkg.com/@bookklik/senangstart-icons/dist/senangstart-icon.min.js"></script>
38
+
39
+ <!-- Gunakan ikon -->
40
+ <ss-icon name="home"></ss-icon>
41
+ <ss-icon name="search" size="24"></ss-icon>
42
+ ```
43
+
44
+ Atau pasang melalui npm:
45
+
46
+ ```bash
47
+ npm install @bookklik/senangstart-icons
48
+ ```
package/package.json CHANGED
@@ -1,15 +1,21 @@
1
1
  {
2
2
  "name": "@bookklik/senangstart-icons",
3
- "version": "1.0.7",
3
+ "version": "1.0.8",
4
4
  "description": "Curated Starter icons designed for web projects.",
5
5
  "main": "dist/senangstart-icon.min.js",
6
6
  "scripts": {
7
7
  "build:svg": "node scripts/build-svgs.js",
8
+ "build:icon-docs": "node scripts/build-icon-docs.js",
8
9
  "build:css": "node scripts/build-css.js",
9
- "build": "npm run build:svg && npm run build:css && webpack --mode production",
10
+ "build": "node scripts/build.js",
10
11
  "build:watch": "npm run build:svg && npm run build:css && webpack --mode production --watch",
11
12
  "dev": "npm run build:svg && npm run build:css && webpack --mode development --watch",
12
- "test": "echo \"Error: no test specified\" && exit 1"
13
+ "test": "vitest run",
14
+ "test:watch": "vitest",
15
+ "test:coverage": "vitest run --coverage",
16
+ "docs:dev": "vitepress dev docs",
17
+ "docs:build": "vitepress build docs",
18
+ "docs:preview": "vitepress preview docs"
13
19
  },
14
20
  "keywords": [
15
21
  "icons",
@@ -21,11 +27,15 @@
21
27
  "devDependencies": {
22
28
  "@babel/core": "^7.23.0",
23
29
  "@babel/preset-env": "^7.23.0",
30
+ "@vitest/coverage-v8": "^3.2.4",
24
31
  "babel-loader": "^9.1.3",
25
32
  "css-loader": "^6.8.1",
26
33
  "css-minimizer-webpack-plugin": "^5.0.1",
34
+ "jsdom": "^26.1.0",
27
35
  "mini-css-extract-plugin": "^2.7.6",
28
36
  "terser-webpack-plugin": "^5.3.9",
37
+ "vitepress": "^1.6.4",
38
+ "vitest": "^3.2.4",
29
39
  "webpack": "^5.89.0",
30
40
  "webpack-cli": "^5.1.4"
31
41
  }
@@ -0,0 +1,331 @@
1
+ const fs = require('fs');
2
+ const path = require('path');
3
+
4
+ // Paths
5
+ const iconsJsonPath = path.join(__dirname, '..', 'src', 'icons.json');
6
+ const docsIconsDir = path.join(__dirname, '..', 'docs', 'icons');
7
+ const docsIconsDirMs = path.join(__dirname, '..', 'docs', 'ms', 'icons');
8
+ const indexPath = path.join(docsIconsDir, 'index.md');
9
+ const indexPathMs = path.join(docsIconsDirMs, 'index.md');
10
+
11
+ // Read icons.json
12
+ const icons = JSON.parse(fs.readFileSync(iconsJsonPath, 'utf8'));
13
+
14
+ // Ensure docs/icons directories exist
15
+ fs.mkdirSync(docsIconsDir, { recursive: true });
16
+ fs.mkdirSync(docsIconsDirMs, { recursive: true });
17
+
18
+ console.log(`📝 Generating documentation for ${icons.length} icons...\n`);
19
+
20
+ // Generate markdown for each icon
21
+ const iconLinks = [];
22
+
23
+ icons.forEach((icon, index) => {
24
+ const { name, slug, src, tags } = icon;
25
+
26
+ // Create SVG preview (stroke-based icon)
27
+ const svgPreview = `<svg xmlns="http://www.w3.org/2000/svg" width="96" height="96" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="${src}"></path></svg>`;
28
+
29
+ // Generate English markdown content
30
+ const markdownEn = `---
31
+ title: ${name}
32
+ ---
33
+
34
+ # ${name}
35
+
36
+ <div style="display: flex; justify-content: center; padding: 2rem; background: var(--vp-c-bg-soft); border-radius: 8px; margin: 1rem 0;">
37
+ ${svgPreview}
38
+ </div>
39
+
40
+ ## Usage
41
+
42
+ \`\`\`html
43
+ <ss-icon name="${slug}"></ss-icon>
44
+ \`\`\`
45
+
46
+ ### With custom size
47
+
48
+ \`\`\`html
49
+ <ss-icon name="${slug}" size="32"></ss-icon>
50
+ \`\`\`
51
+
52
+ ### With custom color
53
+
54
+ \`\`\`html
55
+ <ss-icon name="${slug}" color="#3b82f6"></ss-icon>
56
+ \`\`\`
57
+
58
+ ### With custom stroke width
59
+
60
+ \`\`\`html
61
+ <ss-icon name="${slug}" stroke="2"></ss-icon>
62
+ \`\`\`
63
+
64
+ ## Icon Details
65
+
66
+ | Property | Value |
67
+ |----------|-------|
68
+ | **Name** | ${name} |
69
+ | **Slug** | \`${slug}\` |
70
+ | **Tags** | ${tags.map(t => `\`${t}\``).join(', ')} |
71
+
72
+ ## SVG Path
73
+
74
+ \`\`\`
75
+ ${src}
76
+ \`\`\`
77
+
78
+ ## Raw SVG
79
+
80
+ \`\`\`html
81
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
82
+ <path d="${src}"></path>
83
+ </svg>
84
+ \`\`\`
85
+
86
+ ---
87
+
88
+ [← Back to Icon Library](/icons/)
89
+ `;
90
+
91
+ // Generate Malay markdown content
92
+ const markdownMs = `---
93
+ title: ${name}
94
+ ---
95
+
96
+ # ${name}
97
+
98
+ <div style="display: flex; justify-content: center; padding: 2rem; background: var(--vp-c-bg-soft); border-radius: 8px; margin: 1rem 0;">
99
+ ${svgPreview}
100
+ </div>
101
+
102
+ ## Penggunaan
103
+
104
+ \`\`\`html
105
+ <ss-icon name="${slug}"></ss-icon>
106
+ \`\`\`
107
+
108
+ ### Dengan saiz tersuai
109
+
110
+ \`\`\`html
111
+ <ss-icon name="${slug}" size="32"></ss-icon>
112
+ \`\`\`
113
+
114
+ ### Dengan warna tersuai
115
+
116
+ \`\`\`html
117
+ <ss-icon name="${slug}" color="#3b82f6"></ss-icon>
118
+ \`\`\`
119
+
120
+ ### Dengan lebar garisan tersuai
121
+
122
+ \`\`\`html
123
+ <ss-icon name="${slug}" stroke="2"></ss-icon>
124
+ \`\`\`
125
+
126
+ ## Butiran Ikon
127
+
128
+ | Ciri | Nilai |
129
+ |------|-------|
130
+ | **Nama** | ${name} |
131
+ | **Slug** | \`${slug}\` |
132
+ | **Tag** | ${tags.map(t => `\`${t}\``).join(', ')} |
133
+
134
+ ## Laluan SVG
135
+
136
+ \`\`\`
137
+ ${src}
138
+ \`\`\`
139
+
140
+ ## SVG Mentah
141
+
142
+ \`\`\`html
143
+ <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
144
+ <path d="${src}"></path>
145
+ </svg>
146
+ \`\`\`
147
+
148
+ ---
149
+
150
+ [← Kembali ke Pustaka Ikon](/ms/icons/)
151
+ `;
152
+
153
+ // Write individual icon markdown files (English)
154
+ const iconFilePath = path.join(docsIconsDir, `${slug}.md`);
155
+ fs.writeFileSync(iconFilePath, markdownEn);
156
+
157
+ // Write individual icon markdown files (Malay)
158
+ const iconFilePathMs = path.join(docsIconsDirMs, `${slug}.md`);
159
+ fs.writeFileSync(iconFilePathMs, markdownMs);
160
+
161
+ // Add to links array
162
+ iconLinks.push({
163
+ name,
164
+ slug,
165
+ tags
166
+ });
167
+
168
+ // Progress indicator
169
+ if ((index + 1) % 50 === 0 || index === icons.length - 1) {
170
+ console.log(` ✓ Generated ${index + 1}/${icons.length} icon docs (EN + MS)`);
171
+ }
172
+ });
173
+
174
+ // Generate English index.md with links to all icons
175
+ const indexMarkdownEn = `---
176
+ title: Icon Library
177
+ ---
178
+
179
+ # Icon Library
180
+
181
+ Browse all **${icons.length}** available icons in SenangStart Icons.
182
+
183
+ ## Usage
184
+
185
+ Once you find the icon you need, use it like this:
186
+
187
+ \`\`\`html
188
+ <ss-icon name="icon-name"></ss-icon>
189
+ \`\`\`
190
+
191
+ ## All Icons
192
+
193
+ <div class="icon-grid">
194
+
195
+ ${iconLinks.map(icon => {
196
+ return `<a href="./${icon.slug}" class="icon-card" title="${icon.tags.join(', ')}">
197
+ <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="${icons.find(i => i.slug === icon.slug).src}"></path></svg>
198
+ <span>${icon.name}</span>
199
+ </a>`;
200
+ }).join('\n\n')}
201
+
202
+ </div>
203
+
204
+ <style>
205
+ .icon-grid {
206
+ display: grid;
207
+ grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
208
+ gap: 1rem;
209
+ margin-top: 1rem;
210
+ }
211
+
212
+ .icon-card {
213
+ display: flex;
214
+ flex-direction: column;
215
+ align-items: center;
216
+ justify-content: center;
217
+ padding: 1rem;
218
+ background: var(--vp-c-bg-soft);
219
+ border-radius: 8px;
220
+ text-decoration: none;
221
+ color: var(--vp-c-text-1) !important;
222
+ transition: all 0.2s ease;
223
+ text-align: center;
224
+ aspect-ratio: 1/1;
225
+ }
226
+
227
+ .icon-card:hover {
228
+ background: var(--vp-c-bg-soft-up);
229
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
230
+ }
231
+
232
+ .icon-card svg {
233
+ margin-bottom: 0.5rem;
234
+ width: 3rem;
235
+ height: 3rem;
236
+ }
237
+
238
+ .icon-card span {
239
+ font-size: 0.8rem;
240
+ word-break: break-word;
241
+ overflow: hidden;
242
+ display: -webkit-box;
243
+ -webkit-box-orient: vertical;
244
+ -webkit-line-clamp: 1;
245
+ }
246
+ </style>
247
+ `;
248
+
249
+ // Generate Malay index.md with links to all icons
250
+ const indexMarkdownMs = `---
251
+ title: Pustaka Ikon
252
+ ---
253
+
254
+ # Pustaka Ikon
255
+
256
+ Layari semua **${icons.length}** ikon yang tersedia dalam SenangStart Icons.
257
+
258
+ ## Penggunaan
259
+
260
+ Setelah anda menemui ikon yang diperlukan, gunakannya seperti ini:
261
+
262
+ \`\`\`html
263
+ <ss-icon name="nama-ikon"></ss-icon>
264
+ \`\`\`
265
+
266
+ ## Semua Ikon
267
+
268
+ <div class="icon-grid">
269
+
270
+ ${iconLinks.map(icon => {
271
+ return `<a href="./${icon.slug}" class="icon-card" title="${icon.tags.join(', ')}">
272
+ <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"><path d="${icons.find(i => i.slug === icon.slug).src}"></path></svg>
273
+ <span>${icon.name}</span>
274
+ </a>`;
275
+ }).join('\n\n')}
276
+
277
+ </div>
278
+
279
+ <style>
280
+ .icon-grid {
281
+ display: grid;
282
+ grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
283
+ gap: 1rem;
284
+ margin-top: 1rem;
285
+ }
286
+
287
+ .icon-card {
288
+ display: flex;
289
+ flex-direction: column;
290
+ align-items: center;
291
+ justify-content: center;
292
+ padding: 1rem;
293
+ background: var(--vp-c-bg-soft);
294
+ border-radius: 8px;
295
+ text-decoration: none;
296
+ color: var(--vp-c-text-1) !important;
297
+ transition: all 0.2s ease;
298
+ text-align: center;
299
+ aspect-ratio: 1/1;
300
+ }
301
+
302
+ .icon-card:hover {
303
+ background: var(--vp-c-bg-soft-up);
304
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
305
+ }
306
+
307
+ .icon-card svg {
308
+ margin-bottom: 0.5rem;
309
+ width: 3rem;
310
+ height: 3rem;
311
+ }
312
+
313
+ .icon-card span {
314
+ font-size: 0.8rem;
315
+ word-break: break-word;
316
+ overflow: hidden;
317
+ display: -webkit-box;
318
+ -webkit-box-orient: vertical;
319
+ -webkit-line-clamp: 1;
320
+ }
321
+ </style>
322
+ `;
323
+
324
+ fs.writeFileSync(indexPath, indexMarkdownEn);
325
+ fs.writeFileSync(indexPathMs, indexMarkdownMs);
326
+
327
+ console.log(`\n✅ Icon documentation generated successfully!`);
328
+ console.log(` - ${icons.length} English icon pages created`);
329
+ console.log(` - ${icons.length} Malay icon pages created`);
330
+ console.log(` - English index at docs/icons/index.md`);
331
+ console.log(` - Malay index at docs/ms/icons/index.md`);
@@ -0,0 +1,40 @@
1
+ const { execSync } = require('child_process');
2
+ const fs = require('fs');
3
+ const path = require('path');
4
+
5
+ // Helper function to recursively copy a directory
6
+ function copyDir(src, dest) {
7
+ fs.mkdirSync(dest, { recursive: true });
8
+ const entries = fs.readdirSync(src);
9
+
10
+ for (const entry of entries) {
11
+ const srcPath = path.join(src, entry);
12
+ const destPath = path.join(dest, entry);
13
+
14
+ if (fs.statSync(srcPath).isDirectory()) {
15
+ copyDir(srcPath, destPath);
16
+ } else {
17
+ fs.copyFileSync(srcPath, destPath);
18
+ }
19
+ }
20
+ }
21
+
22
+ console.log('🔨 Building SenangStart Icons...\n');
23
+
24
+ // Step 1: Build SVGs
25
+ console.log('📦 Step 1: Building SVGs...');
26
+ execSync('node scripts/build-svgs.js', { stdio: 'inherit' });
27
+
28
+ // Step 2: Build CSS
29
+ console.log('\n🎨 Step 2: Building CSS...');
30
+ execSync('node scripts/build-css.js', { stdio: 'inherit' });
31
+
32
+ // Step 3: Run Generate Icon Docs
33
+ console.log('\n⚙️ Step 3: Running Generate Icon Docs...');
34
+ execSync('node scripts/build-icon-docs.js', { stdio: 'inherit' });
35
+
36
+ // Step 4: Run Webpack
37
+ console.log('\n⚙️ Step 4: Running Webpack...');
38
+ execSync('npx webpack --mode production', { stdio: 'inherit' });
39
+
40
+ console.log('\n✅ Build complete! Files copied to docs/public/');
@@ -0,0 +1,11 @@
1
+ npx : The CJS build of Vite's Node API is deprecated. See
2
+ https://vite.dev/guide/troubleshooting.html#vite-cjs-node-api-deprecated for more
3
+ details.
4
+ At line:1 char:1
5
+ + npx vitest run tests/build-pipeline.test.js --reporter=json 2>&1 | Ou ...
6
+ + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
7
+ + CategoryInfo : NotSpecified: (The CJS bu...e details.:String
8
+ ) [], RemoteException
9
+ + FullyQualifiedErrorId : NativeCommandError
10
+
11
+ {"numTotalTestSuites":9,"numPassedTestSuites":6,"numFailedTestSuites":3,"numPendingTestSuites":0,"numTotalTests":14,"numPassedTests":13,"numFailedTests":1,"numPendingTests":0,"numTodoTests":0,"snapshot":{"added":0,"failure":false,"filesAdded":0,"filesRemoved":0,"filesRemovedList":[],"filesUnmatched":0,"filesUpdated":0,"matched":0,"total":0,"unchecked":0,"uncheckedKeysByFile":[],"unmatched":0,"updated":0,"didUpdate":false},"startTime":1768184278421,"success":false,"testResults":[{"assertionResults":[{"ancestorTitles":["Build Pipeline Integration","Source files"],"fullName":"Build Pipeline Integration Source files should have icons.json","status":"passed","title":"should have icons.json","duration":1.2354001998901367,"failureMessages":[],"meta":{}},{"ancestorTitles":["Build Pipeline Integration","Source files"],"fullName":"Build Pipeline Integration Source files should have all required source files","status":"passed","title":"should have all required source files","duration":0.46810007095336914,"failureMessages":[],"meta":{}},{"ancestorTitles":["Build Pipeline Integration","Generated SVG files"],"fullName":"Build Pipeline Integration Generated SVG files should have svg directory","status":"passed","title":"should have svg directory","duration":0.37180042266845703,"failureMessages":[],"meta":{}},{"ancestorTitles":["Build Pipeline Integration","Generated SVG files"],"fullName":"Build Pipeline Integration Generated SVG files should have SVG file for each icon in icons.json","status":"passed","title":"should have SVG file for each icon in icons.json","duration":21.953199863433838,"failureMessages":[],"meta":{}},{"ancestorTitles":["Build Pipeline Integration","Generated SVG files"],"fullName":"Build Pipeline Integration Generated SVG files should have index.js exporting all icons","status":"passed","title":"should have index.js exporting all icons","duration":0.5628995895385742,"failureMessages":[],"meta":{}},{"ancestorTitles":["Build Pipeline Integration","Generated CSS"],"fullName":"Build Pipeline Integration Generated CSS should have icons.css file","status":"passed","title":"should have icons.css file","duration":0.21340036392211914,"failureMessages":[],"meta":{}},{"ancestorTitles":["Build Pipeline Integration","Generated CSS"],"fullName":"Build Pipeline Integration Generated CSS should have CSS class for each icon","status":"passed","title":"should have CSS class for each icon","duration":9.665900230407715,"failureMessages":[],"meta":{}},{"ancestorTitles":["Build Pipeline Integration","Documentation files"],"fullName":"Build Pipeline Integration Documentation files should have docs directory structure","status":"passed","title":"should have docs directory structure","duration":0.31890010833740234,"failureMessages":[],"meta":{}},{"ancestorTitles":["Build Pipeline Integration","Documentation files"],"fullName":"Build Pipeline Integration Documentation files should have documentation for each icon","status":"passed","title":"should have documentation for each icon","duration":44.08650016784668,"failureMessages":[],"meta":{}},{"ancestorTitles":["Build Pipeline Integration","Icon data consistency"],"fullName":"Build Pipeline Integration Icon data consistency should have matching icon counts across all generated files","status":"failed","title":"should have matching icon counts across all generated files","duration":8.33899974822998,"failureMessages":["AssertionError: expected 248 to be 246 // Object.is equality\n at C:\\wamp64\\www\\senangstart-icons\\tests\\build-pipeline.test.js:93:31\n at file:///C:/wamp64/www/senangstart-icons/node_modules/@vitest/runner/dist/chunk-hooks.js:155:11\n at file:///C:/wamp64/www/senangstart-icons/node_modules/@vitest/runner/dist/chunk-hooks.js:752:26\n at file:///C:/wamp64/www/senangstart-icons/node_modules/@vitest/runner/dist/chunk-hooks.js:1897:20\n at new Promise (<anonymous>)\n at runWithTimeout (file:///C:/wamp64/www/senangstart-icons/node_modules/@vitest/runner/dist/chunk-hooks.js:1863:10)\n at runTest (file:///C:/wamp64/www/senangstart-icons/node_modules/@vitest/runner/dist/chunk-hooks.js:1574:12)\n at processTicksAndRejections (node:internal/process/task_queues:95:5)\n at runSuite (file:///C:/wamp64/www/senangstart-icons/node_modules/@vitest/runner/dist/chunk-hooks.js:1729:8)\n at runSuite (file:///C:/wamp64/www/senangstart-icons/node_modules/@vitest/runner/dist/chunk-hooks.js:1729:8)"],"meta":{}},{"ancestorTitles":["Build Pipeline Integration","Icon data consistency"],"fullName":"Build Pipeline Integration Icon data consistency should have valid SVG path data in icons.json","status":"passed","title":"should have valid SVG path data in icons.json","duration":9.310800075531006,"failureMessages":[],"meta":{}},{"ancestorTitles":["Build Pipeline Integration","Icon data consistency"],"fullName":"Build Pipeline Integration Icon data consistency should have normalized slugs (lowercase, hyphenated)","status":"passed","title":"should have normalized slugs (lowercase, hyphenated)","duration":7.935400009155273,"failureMessages":[],"meta":{}},{"ancestorTitles":["Build Pipeline Integration","Build scripts"],"fullName":"Build Pipeline Integration Build scripts should have all build scripts","status":"passed","title":"should have all build scripts","duration":0.5515999794006348,"failureMessages":[],"meta":{}},{"ancestorTitles":["Build Pipeline Integration","Webpack configuration"],"fullName":"Build Pipeline Integration Webpack configuration should have webpack.config.js","status":"passed","title":"should have webpack.config.js","duration":0.3931999206542969,"failureMessages":[],"meta":{}}],"startTime":1768184278865,"endTime":1768184278972.3933,"status":"failed","message":"","name":"C:/wamp64/www/senangstart-icons/tests/build-pipeline.test.js"}]}
@@ -0,0 +1,134 @@
1
+ /**
2
+ * Tests for build-css.js
3
+ *
4
+ * Tests CSS generation with SVG data URIs
5
+ */
6
+ import { describe, it, expect, beforeAll } from 'vitest';
7
+ import fs from 'fs';
8
+ import path from 'path';
9
+
10
+ const iconsPath = path.resolve(__dirname, '../src/icons.json');
11
+ const cssPath = path.resolve(__dirname, '../src/icons.css');
12
+
13
+ // Recreate the encodeSvg function from build-css.js for testing
14
+ function encodeSvg(svg) {
15
+ return svg
16
+ .replace(/"/g, "'")
17
+ .replace(/%/g, "%25")
18
+ .replace(/#/g, "%23")
19
+ .replace(/{/g, "%7B")
20
+ .replace(/}/g, "%7D")
21
+ .replace(/</g, "%3C")
22
+ .replace(/>/g, "%3E")
23
+ .replace(/\s+/g, " ")
24
+ .trim();
25
+ }
26
+
27
+ // Recreate generateSvg function from build-css.js
28
+ function generateSvg(icon) {
29
+ const { src, viewBox, fill, stroke, strokeWidth } = icon;
30
+ const vBox = viewBox || "0 0 24 24";
31
+ const fl = fill || "none";
32
+ const strk = stroke || "currentColor";
33
+ const strkWidth = strokeWidth || "2";
34
+
35
+ return `<svg xmlns='http://www.w3.org/2000/svg' viewBox='${vBox}' fill='${fl}' stroke='${strk}' stroke-width='${strkWidth}' stroke-linecap='round' stroke-linejoin='round'><path d='${src}'/></svg>`;
36
+ }
37
+
38
+ describe('build-css.js', () => {
39
+ let icons;
40
+ let cssContent;
41
+
42
+ beforeAll(() => {
43
+ icons = JSON.parse(fs.readFileSync(iconsPath, 'utf8'));
44
+ cssContent = fs.readFileSync(cssPath, 'utf8');
45
+ });
46
+
47
+ describe('encodeSvg function', () => {
48
+ it('should replace double quotes with single quotes', () => {
49
+ const result = encodeSvg('<svg viewBox="0 0 24 24">');
50
+ expect(result).not.toContain('"');
51
+ expect(result).toContain("'");
52
+ });
53
+
54
+ it('should URL-encode special characters', () => {
55
+ const result = encodeSvg('<svg>#test</svg>');
56
+ expect(result).toContain('%3C'); // <
57
+ expect(result).toContain('%3E'); // >
58
+ expect(result).toContain('%23'); // #
59
+ });
60
+
61
+ it('should collapse whitespace', () => {
62
+ const result = encodeSvg('<svg> test test </svg>');
63
+ expect(result).not.toContain(' '); // no double spaces
64
+ });
65
+ });
66
+
67
+ describe('generateSvg function', () => {
68
+ it('should generate valid SVG string', () => {
69
+ const icon = { src: 'M12 4.5v15m7.5-7.5h-15', name: 'test' };
70
+ const svg = generateSvg(icon);
71
+
72
+ expect(svg).toContain("<svg");
73
+ expect(svg).toContain("xmlns='http://www.w3.org/2000/svg'");
74
+ expect(svg).toContain("<path d='M12 4.5v15m7.5-7.5h-15'");
75
+ });
76
+
77
+ it('should apply default values', () => {
78
+ const icon = { src: 'M0 0', name: 'test' };
79
+ const svg = generateSvg(icon);
80
+
81
+ expect(svg).toContain("viewBox='0 0 24 24'");
82
+ expect(svg).toContain("fill='none'");
83
+ expect(svg).toContain("stroke='currentColor'");
84
+ expect(svg).toContain("stroke-width='2'");
85
+ });
86
+
87
+ it('should use custom values when provided', () => {
88
+ const icon = {
89
+ src: 'M0 0',
90
+ name: 'test',
91
+ viewBox: '0 0 48 48',
92
+ fill: 'red',
93
+ stroke: 'blue',
94
+ strokeWidth: '4'
95
+ };
96
+ const svg = generateSvg(icon);
97
+
98
+ expect(svg).toContain("viewBox='0 0 48 48'");
99
+ expect(svg).toContain("fill='red'");
100
+ expect(svg).toContain("stroke='blue'");
101
+ expect(svg).toContain("stroke-width='4'");
102
+ });
103
+ });
104
+
105
+ describe('CSS file generation', () => {
106
+ it('should contain base .ss class', () => {
107
+ expect(cssContent).toContain('.ss {');
108
+ expect(cssContent).toContain('display: inline-block;');
109
+ expect(cssContent).toContain('width: 1em;');
110
+ expect(cssContent).toContain('height: 1em;');
111
+ });
112
+
113
+ it('should contain mask properties in base class', () => {
114
+ expect(cssContent).toContain('mask-size: contain;');
115
+ expect(cssContent).toContain('mask-repeat: no-repeat;');
116
+ expect(cssContent).toContain('mask-position: center;');
117
+ });
118
+
119
+ it('should generate class for each icon', () => {
120
+ icons.forEach(icon => {
121
+ expect(cssContent).toContain(`.ss-${icon.slug}`);
122
+ });
123
+ });
124
+
125
+ it('should use data URI for mask-image', () => {
126
+ expect(cssContent).toContain('mask-image: url("data:image/svg+xml,');
127
+ });
128
+
129
+ it('should have proper header comment', () => {
130
+ expect(cssContent).toContain('Senangstart Icons - CSS Only');
131
+ expect(cssContent).toContain('Auto-generated');
132
+ });
133
+ });
134
+ });