generator-white-label 3.0.0 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (334) hide show
  1. package/README.md +140 -81
  2. package/app/404.hbs +20 -0
  3. package/app/README.md +19 -0
  4. package/app/assets/data/view/toolkit/colors.json +17 -0
  5. package/app/assets/data/view/toolkit/components.json +39 -0
  6. package/app/assets/data/view/toolkit/elements.json +119 -0
  7. package/app/assets/data/view/toolkit/grids.json +17 -0
  8. package/app/assets/data/view/toolkit/icons.json +17 -0
  9. package/app/assets/data/view/toolkit/index.json +17 -0
  10. package/app/assets/data/view/toolkit/type.json +17 -0
  11. package/app/assets/font/opensans/stylesheet.css +20 -60
  12. package/app/assets/image/demo/fallback.avif +0 -0
  13. package/app/assets/image/demo/fallback.jpg +0 -0
  14. package/app/assets/image/demo/fallback.webp +0 -0
  15. package/app/assets/image/demo/large.avif +0 -0
  16. package/app/assets/image/demo/large.webp +0 -0
  17. package/app/assets/image/demo/small.avif +0 -0
  18. package/app/assets/image/demo/small.webp +0 -0
  19. package/app/assets/markup/element/a.hbs +29 -0
  20. package/app/assets/markup/element/button.hbs +30 -0
  21. package/app/assets/markup/element/div.hbs +11 -0
  22. package/app/assets/markup/element/head.hbs +78 -0
  23. package/app/assets/markup/element/iframe.hbs +20 -0
  24. package/app/assets/markup/element/img.hbs +30 -0
  25. package/app/assets/markup/element/input.hbs +43 -0
  26. package/app/assets/markup/element/label.hbs +14 -0
  27. package/app/assets/markup/element/legend.hbs +5 -0
  28. package/app/assets/markup/element/meta.hbs +11 -0
  29. package/app/assets/markup/element/nav.hbs +13 -0
  30. package/app/assets/markup/element/p.hbs +8 -0
  31. package/app/assets/markup/element/picture.hbs +58 -0
  32. package/app/assets/markup/element/script.hbs +3 -0
  33. package/app/assets/markup/element/select.hbs +35 -0
  34. package/app/assets/markup/element/span.hbs +8 -0
  35. package/app/assets/markup/element/svg.hbs +11 -0
  36. package/app/assets/markup/element/table.hbs +50 -0
  37. package/app/assets/markup/element/textarea.hbs +24 -0
  38. package/app/assets/markup/element/ul.hbs +13 -0
  39. package/app/assets/markup/modal/modal-example-1.handlebars +8 -0
  40. package/app/assets/markup/toolkit/accessibility-skip-to-element-1.handlebars +1 -0
  41. package/app/assets/markup/toolkit/accessibility-speaker-1.handlebars +1 -0
  42. package/app/assets/markup/toolkit/anchor-1.handlebars +1 -0
  43. package/app/assets/markup/toolkit/button-1.handlebars +1 -0
  44. package/app/assets/markup/toolkit/footer-1.handlebars +3 -0
  45. package/app/assets/markup/toolkit/header-1.handlebars +1 -0
  46. package/app/assets/markup/toolkit/heading-1.handlebars +1 -0
  47. package/app/assets/markup/toolkit/heading-2.handlebars +1 -0
  48. package/app/assets/markup/toolkit/heading-3.handlebars +1 -0
  49. package/app/assets/markup/toolkit/heading-4.handlebars +1 -0
  50. package/app/assets/markup/toolkit/image-1.handlebars +1 -0
  51. package/app/assets/markup/toolkit/input-checkbox-1.handlebars +1 -0
  52. package/app/assets/markup/toolkit/input-error-1.handlebars +8 -0
  53. package/app/assets/markup/toolkit/input-radio-1.handlebars +1 -0
  54. package/app/assets/markup/toolkit/input-text-1.handlebars +1 -0
  55. package/app/assets/markup/toolkit/label-1.handlebars +1 -0
  56. package/app/assets/markup/toolkit/legend-1.handlebars +1 -0
  57. package/app/assets/markup/toolkit/list-1.handlebars +1 -0
  58. package/app/assets/markup/toolkit/modal-1.handlebars +4 -0
  59. package/app/assets/markup/toolkit/nav-1.handlebars +1 -0
  60. package/app/assets/markup/toolkit/picture-1.handlebars +1 -0
  61. package/app/assets/markup/toolkit/select-1.handlebars +1 -0
  62. package/app/assets/markup/toolkit/table-1.handlebars +1 -0
  63. package/app/assets/markup/toolkit/text-1.handlebars +1 -0
  64. package/app/assets/markup/toolkit/textarea-1.handlebars +1 -0
  65. package/app/assets/markup/toolkit/youtube-player-1.handlebars +1 -0
  66. package/app/assets/script/api/facebook.ts +41 -0
  67. package/app/assets/script/api/youtube.ts +22 -0
  68. package/app/assets/script/index.ts +2 -0
  69. package/app/assets/script/mediator/global.ts +4 -0
  70. package/app/assets/script/model/singletons/countries.ts +5 -0
  71. package/app/assets/script/model/singletons/global.ts +5 -0
  72. package/app/assets/script/model/singletons/states.ts +5 -0
  73. package/app/assets/script/model/user.ts +4 -0
  74. package/app/assets/script/toolkit.ts +11 -0
  75. package/app/assets/script/types.d.ts +16 -0
  76. package/app/assets/script/utility/ajax.ts +15 -0
  77. package/app/assets/script/utility/form.ts +119 -0
  78. package/app/assets/script/utility/{regex.js → regex.ts} +15 -6
  79. package/app/assets/script/utility/share.ts +77 -0
  80. package/app/assets/script/utility/string.ts +148 -0
  81. package/app/assets/script/view/default.tsx +14 -0
  82. package/app/assets/script/view/toolkit/youtube-player-1.ts +31 -0
  83. package/app/assets/style/base/_toolkit.scss +31 -15
  84. package/app/assets/style/base/components/_modal-1.scss +80 -0
  85. package/app/assets/style/base/components/_sticky-1.scss +19 -0
  86. package/app/assets/style/base/components/_tabpanel-1.scss +115 -0
  87. package/app/assets/style/base/components/_tabpanel-2.scss +64 -0
  88. package/app/assets/style/base/components/_tabpanel-base-1.scss +13 -0
  89. package/app/assets/style/base/components/_youtube-player-1.scss +16 -0
  90. package/app/assets/style/base/elements/_anchors.scss +12 -0
  91. package/app/assets/style/base/elements/_buttons.scss +15 -0
  92. package/app/assets/style/base/elements/_fieldsets.scss +9 -0
  93. package/app/assets/style/base/elements/_images.scss +6 -2
  94. package/app/assets/style/base/elements/_inputs.scss +70 -0
  95. package/app/assets/style/base/elements/_labels.scss +8 -0
  96. package/app/assets/style/base/elements/_landmarks.scss +3 -0
  97. package/app/assets/style/base/elements/_legends.scss +11 -0
  98. package/app/assets/style/base/elements/_lists.scss +8 -1
  99. package/app/assets/style/base/elements/_tables.scss +32 -1
  100. package/app/assets/style/base/layouts/_staggered-1.scss +29 -0
  101. package/app/assets/style/base/type/_fonts.scss +39 -1
  102. package/app/assets/style/base/type/_headings.scss +29 -0
  103. package/app/assets/style/base/type/_text.scss +2 -0
  104. package/app/assets/style/base/utilities/_accessibility.scss +5 -2
  105. package/app/assets/style/base/utilities/_functions.scss +62 -9
  106. package/app/assets/style/global.scss +108 -10
  107. package/app/assets/style/print.scss +2 -3
  108. package/app/assets/style/toolkit.scss +387 -0
  109. package/app/index.hbs +21 -0
  110. package/app/package.json +1 -0
  111. package/app/toolkit/colors.hbs +102 -0
  112. package/app/toolkit/components.hbs +261 -0
  113. package/app/toolkit/elements.hbs +497 -0
  114. package/app/toolkit/grids.hbs +413 -0
  115. package/app/toolkit/icons.hbs +87 -0
  116. package/app/toolkit/index.hbs +144 -0
  117. package/app/toolkit/type.hbs +120 -0
  118. package/dist/app/assets/data/coutries.json +992 -0
  119. package/dist/app/assets/data/states.json +204 -0
  120. package/dist/app/assets/script/api/facebook.d.ts +8 -0
  121. package/dist/app/assets/script/api/facebook.js +42 -0
  122. package/dist/app/assets/script/api/facebook.js.map +1 -0
  123. package/dist/app/assets/script/api/youtube.d.ts +8 -0
  124. package/dist/app/assets/script/api/youtube.js +22 -0
  125. package/dist/app/assets/script/api/youtube.js.map +1 -0
  126. package/dist/app/assets/script/index.d.ts +2 -0
  127. package/dist/app/assets/script/index.js +2 -0
  128. package/dist/app/assets/script/index.js.map +1 -0
  129. package/dist/app/assets/script/mediator/global.d.ts +4 -0
  130. package/dist/app/assets/script/mediator/global.js +4 -0
  131. package/dist/app/assets/script/mediator/global.js.map +1 -0
  132. package/dist/app/assets/script/model/singletons/countries.d.ts +20 -0
  133. package/dist/app/assets/script/model/singletons/countries.js +5 -0
  134. package/dist/app/assets/script/model/singletons/countries.js.map +1 -0
  135. package/dist/app/assets/script/model/singletons/global.d.ts +20 -0
  136. package/dist/app/assets/script/model/singletons/global.js +5 -0
  137. package/dist/app/assets/script/model/singletons/global.js.map +1 -0
  138. package/dist/app/assets/script/model/singletons/states.d.ts +20 -0
  139. package/dist/app/assets/script/model/singletons/states.js +5 -0
  140. package/dist/app/assets/script/model/singletons/states.js.map +1 -0
  141. package/dist/app/assets/script/model/user.d.ts +4 -0
  142. package/dist/app/assets/script/model/user.js +6 -0
  143. package/dist/app/assets/script/model/user.js.map +1 -0
  144. package/dist/app/assets/script/toolkit.d.ts +1 -0
  145. package/dist/app/assets/script/toolkit.js +7 -0
  146. package/dist/app/assets/script/toolkit.js.map +1 -0
  147. package/dist/app/assets/script/utility/ajax.d.ts +8 -0
  148. package/dist/app/assets/script/utility/ajax.js +17 -0
  149. package/dist/app/assets/script/utility/ajax.js.map +1 -0
  150. package/dist/app/assets/script/utility/form.d.ts +64 -0
  151. package/dist/app/assets/script/utility/form.js +111 -0
  152. package/dist/app/assets/script/utility/form.js.map +1 -0
  153. package/dist/app/assets/script/utility/regex.d.ts +14 -0
  154. package/dist/app/assets/script/utility/regex.js +27 -0
  155. package/dist/app/assets/script/utility/regex.js.map +1 -0
  156. package/dist/app/assets/script/utility/share.d.ts +68 -0
  157. package/dist/app/assets/script/utility/share.js +81 -0
  158. package/dist/app/assets/script/utility/share.js.map +1 -0
  159. package/dist/app/assets/script/utility/string.d.ts +64 -0
  160. package/dist/app/assets/script/utility/string.js +135 -0
  161. package/dist/app/assets/script/utility/string.js.map +1 -0
  162. package/dist/app/assets/script/view/default.d.ts +11 -0
  163. package/dist/app/assets/script/view/default.js +15 -0
  164. package/dist/app/assets/script/view/default.js.map +1 -0
  165. package/dist/app/assets/script/view/toolkit/youtube-player-1.d.ts +23 -0
  166. package/dist/app/assets/script/view/toolkit/youtube-player-1.js +32 -0
  167. package/dist/app/assets/script/view/toolkit/youtube-player-1.js.map +1 -0
  168. package/dist/generators/app/index.d.ts +18 -0
  169. package/dist/generators/app/index.js +59 -0
  170. package/dist/generators/app/index.js.map +1 -0
  171. package/dist/scripts/build.d.ts +22 -0
  172. package/dist/scripts/build.js +158 -0
  173. package/dist/scripts/build.js.map +1 -0
  174. package/generators/app/index.js +2 -43
  175. package/generators/app/index.ts +61 -0
  176. package/package.json +78 -109
  177. package/scripts/build.ts +175 -0
  178. package/tsconfig.site.json +26 -0
  179. package/.babelrc +0 -7
  180. package/.editorconfig +0 -13
  181. package/.eslintrc +0 -64
  182. package/.htmllintrc +0 -6
  183. package/.npmignore +0 -12
  184. package/.sass-lint.yml +0 -16
  185. package/.travis.yml +0 -18
  186. package/app/assets/font/opensans/generator_config.txt +0 -5
  187. package/app/assets/font/opensans/opensans-bold-webfont.eot +0 -0
  188. package/app/assets/font/opensans/opensans-bold-webfont.svg +0 -1824
  189. package/app/assets/font/opensans/opensans-bold-webfont.ttf +0 -0
  190. package/app/assets/font/opensans/opensans-bold-webfont.woff +0 -0
  191. package/app/assets/font/opensans/opensans-bolditalic-webfont.eot +0 -0
  192. package/app/assets/font/opensans/opensans-bolditalic-webfont.svg +0 -1824
  193. package/app/assets/font/opensans/opensans-bolditalic-webfont.ttf +0 -0
  194. package/app/assets/font/opensans/opensans-bolditalic-webfont.woff +0 -0
  195. package/app/assets/font/opensans/opensans-extrabold-webfont.eot +0 -0
  196. package/app/assets/font/opensans/opensans-extrabold-webfont.svg +0 -1824
  197. package/app/assets/font/opensans/opensans-extrabold-webfont.ttf +0 -0
  198. package/app/assets/font/opensans/opensans-extrabold-webfont.woff +0 -0
  199. package/app/assets/font/opensans/opensans-extrabolditalic-webfont.eot +0 -0
  200. package/app/assets/font/opensans/opensans-extrabolditalic-webfont.svg +0 -1824
  201. package/app/assets/font/opensans/opensans-extrabolditalic-webfont.ttf +0 -0
  202. package/app/assets/font/opensans/opensans-extrabolditalic-webfont.woff +0 -0
  203. package/app/assets/font/opensans/opensans-italic-webfont.eot +0 -0
  204. package/app/assets/font/opensans/opensans-italic-webfont.svg +0 -1824
  205. package/app/assets/font/opensans/opensans-italic-webfont.ttf +0 -0
  206. package/app/assets/font/opensans/opensans-italic-webfont.woff +0 -0
  207. package/app/assets/font/opensans/opensans-light-webfont.eot +0 -0
  208. package/app/assets/font/opensans/opensans-light-webfont.svg +0 -1824
  209. package/app/assets/font/opensans/opensans-light-webfont.ttf +0 -0
  210. package/app/assets/font/opensans/opensans-light-webfont.woff +0 -0
  211. package/app/assets/font/opensans/opensans-lightitalic-webfont.eot +0 -0
  212. package/app/assets/font/opensans/opensans-lightitalic-webfont.svg +0 -1824
  213. package/app/assets/font/opensans/opensans-lightitalic-webfont.ttf +0 -0
  214. package/app/assets/font/opensans/opensans-lightitalic-webfont.woff +0 -0
  215. package/app/assets/font/opensans/opensans-regular-webfont.eot +0 -0
  216. package/app/assets/font/opensans/opensans-regular-webfont.svg +0 -1824
  217. package/app/assets/font/opensans/opensans-regular-webfont.ttf +0 -0
  218. package/app/assets/font/opensans/opensans-regular-webfont.woff +0 -0
  219. package/app/assets/font/opensans/opensans-semibold-webfont.eot +0 -0
  220. package/app/assets/font/opensans/opensans-semibold-webfont.svg +0 -1824
  221. package/app/assets/font/opensans/opensans-semibold-webfont.ttf +0 -0
  222. package/app/assets/font/opensans/opensans-semibold-webfont.woff +0 -0
  223. package/app/assets/font/opensans/opensans-semibolditalic-webfont.eot +0 -0
  224. package/app/assets/font/opensans/opensans-semibolditalic-webfont.svg +0 -1824
  225. package/app/assets/font/opensans/opensans-semibolditalic-webfont.ttf +0 -0
  226. package/app/assets/font/opensans/opensans-semibolditalic-webfont.woff +0 -0
  227. package/app/assets/font/opensans/specimen_files/grid_12-825-55-15.css +0 -129
  228. package/app/assets/font/opensans/specimen_files/specimen_stylesheet.css +0 -396
  229. package/app/assets/script/index.js +0 -11
  230. package/app/assets/script/mediator/global.js +0 -5
  231. package/app/assets/script/model/singletons/countries.js +0 -6
  232. package/app/assets/script/model/singletons/global.js +0 -6
  233. package/app/assets/script/model/singletons/states.js +0 -6
  234. package/app/assets/script/model/user.js +0 -5
  235. package/app/assets/script/utility/form.js +0 -86
  236. package/app/assets/script/utility/share.js +0 -52
  237. package/app/assets/script/utility/string.js +0 -70
  238. package/app/assets/script/view/default.js +0 -11
  239. package/app/assets/style/base/vendor/_foundation.scss +0 -2
  240. package/app/assets/test/spec/shareSpec.js +0 -137
  241. package/app/index.html +0 -43
  242. package/app/report/istanbul/base.css +0 -213
  243. package/app/report/istanbul/index.html +0 -93
  244. package/app/report/istanbul/prettify.css +0 -1
  245. package/app/report/istanbul/prettify.js +0 -1
  246. package/app/report/istanbul/sort-arrow-sprite.png +0 -0
  247. package/app/report/istanbul/sorter.js +0 -158
  248. package/app/report/istanbul/utility/form.js.html +0 -524
  249. package/app/report/istanbul/utility/index.html +0 -132
  250. package/app/report/istanbul/utility/regex.js.html +0 -203
  251. package/app/report/istanbul/utility/share.js.html +0 -401
  252. package/app/report/istanbul/utility/string.js.html +0 -446
  253. package/app/report/jsdoc/DragEvent.html +0 -303
  254. package/app/report/jsdoc/Event.html +0 -773
  255. package/app/report/jsdoc/EventPropagators.html +0 -336
  256. package/app/report/jsdoc/FocusEvent.html +0 -303
  257. package/app/report/jsdoc/ForEachBookKeeping.html +0 -425
  258. package/app/report/jsdoc/KeyboardEvent.html +0 -303
  259. package/app/report/jsdoc/MapBookKeeping.html +0 -457
  260. package/app/report/jsdoc/MouseEvent.html +0 -303
  261. package/app/report/jsdoc/ReactClass.html +0 -330
  262. package/app/report/jsdoc/ReactClassInterface.html +0 -311
  263. package/app/report/jsdoc/ReactDOMComponent.html +0 -349
  264. package/app/report/jsdoc/ReactDOMTextComponent.html +0 -348
  265. package/app/report/jsdoc/ReactMountReady.html +0 -340
  266. package/app/report/jsdoc/ReactMultiChild.html +0 -330
  267. package/app/report/jsdoc/ReactOwner.html +0 -351
  268. package/app/report/jsdoc/ReactReconcileTransaction.html +0 -342
  269. package/app/report/jsdoc/ReactServerRenderingTransaction.html +0 -376
  270. package/app/report/jsdoc/ReactServerUpdateQueue.html +0 -382
  271. package/app/report/jsdoc/TouchEvent.html +0 -303
  272. package/app/report/jsdoc/Transaction.html +0 -459
  273. package/app/report/jsdoc/UIEvent.html +0 -303
  274. package/app/report/jsdoc/WheelEvent.html +0 -303
  275. package/app/report/jsdoc/classes.list.html +0 -339
  276. package/app/report/jsdoc/fonts/glyphicons-halflings-regular.eot +0 -0
  277. package/app/report/jsdoc/fonts/glyphicons-halflings-regular.svg +0 -288
  278. package/app/report/jsdoc/fonts/glyphicons-halflings-regular.ttf +0 -0
  279. package/app/report/jsdoc/fonts/glyphicons-halflings-regular.woff +0 -0
  280. package/app/report/jsdoc/fonts/glyphicons-halflings-regular.woff2 +0 -0
  281. package/app/report/jsdoc/global.html +0 -1653
  282. package/app/report/jsdoc/img/glyphicons-halflings-white.png +0 -0
  283. package/app/report/jsdoc/img/glyphicons-halflings.png +0 -0
  284. package/app/report/jsdoc/index.html +0 -236
  285. package/app/report/jsdoc/interfaces.list.html +0 -339
  286. package/app/report/jsdoc/quicksearch.html +0 -31
  287. package/app/report/jsdoc/scripts/docstrap.lib.js +0 -11
  288. package/app/report/jsdoc/scripts/fulltext-search-ui.js +0 -89
  289. package/app/report/jsdoc/scripts/fulltext-search.js +0 -36
  290. package/app/report/jsdoc/scripts/lunr.min.js +0 -6
  291. package/app/report/jsdoc/scripts/prettify/Apache-License-2.0.txt +0 -202
  292. package/app/report/jsdoc/scripts/prettify/jquery.min.js +0 -6
  293. package/app/report/jsdoc/scripts/prettify/lang-css.js +0 -21
  294. package/app/report/jsdoc/scripts/prettify/prettify.js +0 -496
  295. package/app/report/jsdoc/scripts/sunlight.js +0 -1157
  296. package/app/report/jsdoc/scripts/toc.js +0 -203
  297. package/app/report/jsdoc/styles/darkstrap.css +0 -960
  298. package/app/report/jsdoc/styles/prettify-tomorrow.css +0 -132
  299. package/app/report/jsdoc/styles/site.cerulean.css +0 -7008
  300. package/app/report/jsdoc/styles/site.cosmo.css +0 -7061
  301. package/app/report/jsdoc/styles/site.cyborg.css +0 -7048
  302. package/app/report/jsdoc/styles/site.darkly.css +0 -7171
  303. package/app/report/jsdoc/styles/site.darkstrap.css +0 -5638
  304. package/app/report/jsdoc/styles/site.dibs-bootstrap.css +0 -5899
  305. package/app/report/jsdoc/styles/site.flatly.css +0 -7147
  306. package/app/report/jsdoc/styles/site.journal.css +0 -6973
  307. package/app/report/jsdoc/styles/site.lumen.css +0 -7298
  308. package/app/report/jsdoc/styles/site.paper.css +0 -7623
  309. package/app/report/jsdoc/styles/site.readable.css +0 -6997
  310. package/app/report/jsdoc/styles/site.sandstone.css +0 -7035
  311. package/app/report/jsdoc/styles/site.simplex.css +0 -7023
  312. package/app/report/jsdoc/styles/site.slate.css +0 -7343
  313. package/app/report/jsdoc/styles/site.spacelab.css +0 -7055
  314. package/app/report/jsdoc/styles/site.superhero.css +0 -7131
  315. package/app/report/jsdoc/styles/site.united.css +0 -6895
  316. package/app/report/jsdoc/styles/site.yeti.css +0 -7195
  317. package/app/report/jsdoc/styles/sunlight.dark.css +0 -345
  318. package/app/report/jsdoc/styles/sunlight.default.css +0 -344
  319. package/gulp/config.js +0 -207
  320. package/gulp/tasks/accessibility.js +0 -34
  321. package/gulp/tasks/build.js +0 -18
  322. package/gulp/tasks/clean.js +0 -18
  323. package/gulp/tasks/data.js +0 -22
  324. package/gulp/tasks/default.js +0 -9
  325. package/gulp/tasks/deploy.js +0 -222
  326. package/gulp/tasks/documentation.js +0 -28
  327. package/gulp/tasks/markup.js +0 -26
  328. package/gulp/tasks/script.js +0 -92
  329. package/gulp/tasks/style.js +0 -42
  330. package/gulp/tasks/unit.js +0 -38
  331. package/gulp/tasks/watch.js +0 -77
  332. package/gulpfile.js +0 -8
  333. package/jsdoc.json +0 -23
  334. package/karma.conf.js +0 -58
package/README.md CHANGED
@@ -1,136 +1,195 @@
1
- # white label
1
+ # white-label
2
2
 
3
- [![Build Status](https://travis-ci.org/bshack/white-label.svg?branch=master)](https://travis-ci.org/bshack/white-label)
3
+ `white-label` is a Yeoman generator and build system for creating static websites. It provides a working project structure with Handlebars templates, Sass styles, Bootstrap, responsive images, and TypeScript sources compiled to bundled JavaScript.
4
4
 
5
- Scaffolding for developing and deploying sites.
5
+ Use it when you want a small, understandable static-site foundation that you can brand and extend without adopting a full application framework.
6
6
 
7
- ## Key Libraries
7
+ ## What it builds
8
8
 
9
- - Babel
10
- - Foundation
11
- - Browserify
12
- - Browsersync
13
- - Gulp
14
- - Handlebars
15
- - Jasmine
16
- - Modernizr
17
- - Node Events
18
- - Karma
19
- - ReactJS
20
- - SCSS
21
- - [White Label Model](https://github.com/bshack/white-label-model)
9
+ The project separates source files by responsibility:
22
10
 
23
- ## Install Dependancies
11
+ - `app/*.hbs` contains pages.
12
+ - `app/assets/markup` contains reusable Handlebars partials.
13
+ - `app/assets/data/view` contains global and page-specific JSON data.
14
+ - `app/assets/style` contains Sass entry points and partials.
15
+ - `app/assets/script` contains TypeScript and TSX entry points.
16
+ - `app/assets/image` and `app/assets/font` contain static assets.
17
+ - `scripts/build.ts` turns those sources into a deployable `_deploy` directory.
24
18
 
25
- IMPORTANT: Verify you have the latest versions of each of these if you have previously installed them.
19
+ The build renders Handlebars pages, compiles Sass, bundles JavaScript with esbuild, copies static assets, and writes the deployment configuration to `assets/data/config.json`. `global.css` includes the complete compiled Bootstrap CSS followed by the project's styles.
26
20
 
27
- ### Nodejs
21
+ Generated formatting utilities use native `Intl` and `Date` APIs, so new projects do not need Lodash, Moment, or Numeral for the included examples.
28
22
 
29
- http://nodejs.org
23
+ ## Requirements
30
24
 
31
- _This project works with 'LTS' or 'Current'_
25
+ - Node.js 20 or newer
26
+ - npm 10 or newer
32
27
 
33
- ### Gulp
28
+ ## Generate a new site
34
29
 
35
- http://gulpjs.com
30
+ Install Yeoman and the generator, then run it in an empty project directory:
36
31
 
37
- ### Other
38
-
39
- Debian/Ubuntu Users:
40
- build-essential package
32
+ ```sh
33
+ npm install --global yo generator-white-label
34
+ mkdir my-site
35
+ cd my-site
36
+ yo white-label
37
+ ```
41
38
 
42
- ### Node Modules
39
+ The generator copies the `app` and `scripts` directories and creates a project `package.json`. It intentionally does not install dependencies automatically, so you can review that manifest first:
43
40
 
44
- ```
45
- npm install;
41
+ ```sh
42
+ npm install
43
+ npm test
46
44
  ```
47
45
 
48
- ### Text Editor Config
46
+ ## Build the site
49
47
 
50
- Install the correct plugin for your text editor here:
48
+ A build with defaults is enough for local inspection:
51
49
 
52
- http://editorconfig.org/#download
53
-
54
- This will normalize settings like what tab character(s) to use and will avoid linting errors.
50
+ ```sh
51
+ npm run build
52
+ ```
55
53
 
56
- ## Gulp Tasks
54
+ The generated site is written to `_deploy`. Each asset build is placed under `_deploy/release/<version>/assets`; when no version is supplied, the build uses the current Unix timestamp.
57
55
 
58
- ### Watch
56
+ For a deployment build, pass explicit values after `--`:
59
57
 
60
- ```
61
- gulp watch;
58
+ ```sh
59
+ npm run build -- \
60
+ --www=https://www.example.com \
61
+ --cdn=https://cdn.example.com \
62
+ --service=https://api.example.com \
63
+ --version=2026.09.06 \
64
+ --production=true
62
65
  ```
63
66
 
64
- This will create a Browsersync server and reload your browser window(s) as you make code changes.
67
+ | Option | Default | Purpose |
68
+ | --- | --- | --- |
69
+ | `--www` | `/` | Public website base URL exposed to templates and configuration. |
70
+ | `--cdn` | `/` | Asset base URL exposed to templates and configuration. |
71
+ | `--service` | `/service-endpoint` | Backend service URL exposed to the site. |
72
+ | `--version` | Current Unix timestamp | Directory name used for versioned assets. |
73
+ | `--production` | `false` | Minifies CSS and JavaScript when set to `true`. |
65
74
 
66
- Learn more about Browsersync here: https://www.browsersync.io
75
+ The version may contain only letters, numbers, dots, underscores, and hyphens. This prevents it from escaping the deployment directory.
67
76
 
68
- ### Deploy
77
+ ## Add a page
69
78
 
70
- This compiles and bundles everything into a deploy ready package outputted in the '\_deploy' directory.
79
+ Create `app/about.hbs`:
71
80
 
81
+ ```handlebars
82
+ {{> element/head}}
83
+ <main>
84
+ <h1>{{title}}</h1>
85
+ <p>{{introduction}}</p>
86
+ </main>
72
87
  ```
73
- gulp deploy --www=(www domain - required) --cdn=(cdn domain - required) --service=(service domain - required) --production=(true|false - optional) --version=(unique deploy version - optional);
88
+
89
+ Then create matching data at `app/assets/data/view/about.json`:
90
+
91
+ ```json
92
+ {
93
+ "title": "About us",
94
+ "introduction": "A short description of the organization."
95
+ }
74
96
  ```
75
97
 
76
- _The 'version' argument defaults to an epoch timestamp and the 'production' argument defaults to 'false'._
98
+ Global data from `app/assets/data/view/global.json`, page data, and build options are merged before the template is rendered. Page-specific values take precedence over global values, and build options take precedence over both.
77
99
 
78
- #### Example
100
+ ## Responsive images
79
101
 
80
- ```
81
- gulp deploy --www=//www.example.com --cdn=//cdn.example.com --service=//service.example.com --version=123456789 --production=true;
102
+ The included `picture` partial supports AVIF and WebP sources at each responsive breakpoint, with an ordinary image as the final fallback:
103
+
104
+ ```handlebars
105
+ {{> element/picture
106
+ imageFallback='assets/image/hero/fallback.jpg'
107
+ imageSmallAvif='assets/image/hero/small.avif'
108
+ imageSmallWebp='assets/image/hero/small.webp'
109
+ imageLargeAvif='assets/image/hero/large.avif'
110
+ imageLargeWebp='assets/image/hero/large.webp'
111
+ width='2048'
112
+ height='1600'
113
+ loading='lazy'
114
+ decoding='async'
115
+ alt='A human-readable description of the image'
116
+ }}
82
117
  ```
83
118
 
84
- ### Unit Tests
119
+ Browsers choose the first supported source whose media query matches. Browsers without AVIF or WebP support use `imageFallback`. Supplying width and height also reserves layout space and helps avoid content movement while the image loads.
85
120
 
86
- watch:
121
+ ## Development checks
87
122
 
88
- ```
89
- gulp unitWatch;
123
+ Run the same basic checks before proposing a change:
124
+
125
+ ```sh
126
+ npm run build
127
+ npm run typecheck
128
+ npm test
129
+ npm run coverage
130
+ npm run audit
90
131
  ```
91
132
 
92
- single run:
133
+ ## Version 4 migration notes
93
134
 
94
- ```
95
- gulp unit;
96
- ```
135
+ Version 4 intentionally replaced the unsupported Gulp 3, Babel 6, PhantomJS, Karma, Bower, and legacy plugin pipeline. It also replaced Foundation with Bootstrap 5.3.8 and migrated the grid markup to Bootstrap `row` and responsive `col-*` classes. Projects upgrading from an older major version should treat the build tooling, supported Node.js versions, CSS framework, and generated markup as breaking changes.
97
136
 
98
- ### More
137
+ Version 4.1 removes Lodash, Moment, and Numeral from generated projects. If application code added its own imports from those packages, either retain the dependency in that application or migrate those calls before upgrading.
99
138
 
100
- These in additional to other tasks run as dependencies of the 'watch' and 'deploy' tasks.
139
+ ## Related packages
101
140
 
102
- ```
103
- gulp markup;
104
- gulp style;
105
- gulp script;
106
- gulp accessibility;
107
- gulp documentation;
108
- ```
141
+ - [`white-label-model`](https://github.com/bshack/white-label-model) provides event-emitting models and collections.
142
+ - [`white-label-view`](https://github.com/bshack/white-label-view) renders templates and manages delegated DOM events.
143
+ - [`white-label-router`](https://github.com/bshack/white-label-router) provides History API navigation.
144
+ - [`white-label-mediator`](https://github.com/bshack/white-label-mediator) provides shared application messaging.
145
+ - [`white-label-service`](https://github.com/bshack/white-label-service) provides an authenticated JSON service backed by MySQL.
109
146
 
110
- ## Test If Your Project Will Build
147
+ ## TypeScript development and version 5.0.0 migration
111
148
 
112
- Run this when you want to verify your changes will build properly on the CI server before pushing:
149
+ Implementation code now uses strict TypeScript. Builds emit JavaScript, source maps with embedded source, and `.d.ts` declarations into `dist`. JavaScript callers can still use the package without compiling TypeScript themselves. JSDoc comments describe parameters, return values, lifecycle behavior, and validation at the implementation, and are retained in declarations.
113
150
 
114
- ```
115
- npm test;
151
+ ```ts
152
+ // app/assets/script/profile.ts
153
+ import User from './model/user.js';
154
+
155
+ const profile = new User({name: 'Ada'});
156
+ console.log(profile.get().name);
116
157
  ```
117
158
 
118
- ## NPM Shrinkwrap
159
+ Write implementation files as `.ts`, or `.tsx` for React markup. Keep `.js` extensions on relative imports: TypeScript resolves them to source files and emits imports usable by Node. Every top-level script entry is bundled, except declaration-only `.d.ts` files. The build checks all sample modules, including modules not imported by an entry point.
119
160
 
120
- This project uses npm shrinkwrap to freeze npm module versions for improved project stability. More information here: https://docs.npmjs.com/cli/shrinkwrap.
161
+ The `types.d.ts` file documents the subset of older published white-label dependencies used by the scaffold. It also declares optional SDK callbacks on `window`. These are explicit compatibility declarations, not unrestricted `any` modules. New releases of the related packages are not required from npm until they are actually published.
121
162
 
122
- ## Using it with Yeoman
163
+ Version 5 is a major release because generated projects now contain TypeScript and use a two-stage TypeScript/esbuild pipeline. Use Node.js 24 for development and CI. Existing generated sites are not changed automatically: migrate their script files, copy the new build configuration, and resolve strict type errors before deploying. The small `generators/app/index.js` file is only Yeoman's discovery bridge to compiled TypeScript.
123
164
 
124
- Install as a node module:
165
+ The generated project includes its own README. Full Bootstrap CSS remains included. Old inactive Gulp and Karma configuration has been removed; all historical share-URL assertions now run in the active Node test suite.
125
166
 
126
- ```
127
- npm install generator-white-label -g;
128
- ```
167
+ ### Sample utility reference
129
168
 
130
- Then in an empty directory:
169
+ | Module | Functionality and example |
170
+ | --- | --- |
171
+ | `utility/ajax.ts` | `getScript('/sdk.js')` appends an asynchronous script; call it only when needed. |
172
+ | `utility/form.ts` | Read multiselect values, select or find an option, decorate/split metadata, and build named options: `buildOptions([{id: 1, name: 'Ada'}], 1)`. Metadata helpers mutate their supplied arrays. |
173
+ | `utility/string.ts` | Parse trusted HTML, read query values, format local dates, numbers and USD currency, and create phone/email links: `formatCurrency(12.5)` returns `$12.50`. `getQueryStringParamater` retains its historical spelling. |
174
+ | `utility/share.ts` | Construct encoded Facebook, Twitter, LinkedIn and email URLs. Missing required values return `false`. Twitter retains its legacy 140-character rule; Google Plus support is a deprecated URL formatter for a discontinued service. |
175
+ | `utility/regex.ts` | Legacy presentation-validation expressions for dates, passwords, phone numbers, ZIP codes, length and currency. These are not substitutes for server validation or a modern password policy. |
176
+ | `model/user.ts` | An extendable observable object model. Country/state singletons contain the bundled JSON data. The global model starts with local URL defaults; the build separately writes deployment settings to `assets/data/config.json`. |
177
+ | `api/facebook.ts`, `api/youtube.ts` | Optional SDK adapters that emit readiness events through the shared mediator. They are tested with local browser doubles, not live provider accounts. Review provider configuration before enabling them in a real site. |
178
+ | `view/default.tsx` | A React greeting component: `<HelloMessage name="Ada" />`. |
179
+ | `view/toolkit/youtube-player-1.ts` | An extension skeleton for a concrete player, with the legacy `removeListners` hook retained. |
131
180
 
181
+ ### Verification and coverage
182
+
183
+ ```sh
184
+ npm ci --ignore-scripts
185
+ npm run typecheck
186
+ npm test
187
+ npm run coverage
188
+ npm pack --dry-run
132
189
  ```
133
- yo white-label;
134
- ```
135
190
 
136
- Learn more about Yeoman here: https://yeoman.io
191
+ `npm test` builds the code, checks TypeScript consumer examples against the emitted declarations, and runs the tests. `npm run coverage` additionally enforces **100% statements, branches, functions, and lines for each implementation file**. Unexecuted implementation files count toward the result; declaration-only files contain no executable code and are excluded. Reports are written to `coverage`, including `lcov.info` for coverage viewers. CI runs the same gate and checks committed build output for drift.
192
+
193
+ Tests exercise the compiled JavaScript interface used by downstream callers. Coverage is an execution metric, not proof that all possible inputs or external integrations are correct. Tests for third-party SDKs use local doubles. No live provider requests are needed.
194
+
195
+ To undo this migration, revert its commit and run `npm ci` from the restored lockfile. No npm release, database migration, or production deployment is performed by these development changes.
package/app/404.hbs ADDED
@@ -0,0 +1,20 @@
1
+ <!DOCTYPE html>
2
+ <html id="error-404" lang="en-US" dir="ltr">
3
+ {{> element/head}}
4
+ <body itemscope itemtype="http://schema.org/WebPage">
5
+ <div id="wrapper">
6
+ <main id="main" tabindex="-1" class="container">
7
+ <p>Sorry, but the page you were trying to view does not exist.</p>
8
+ </main>
9
+ </div>
10
+ {{#if scripts.global}}
11
+ {{> element/script script=scripts.global}}
12
+ {{/if}}
13
+ {{#if scripts.section}}
14
+ {{> element/script script=scripts.section}}
15
+ {{/if}}
16
+ {{#if scripts.page}}
17
+ {{> element/script script=scripts.page}}
18
+ {{/if}}
19
+ </body>
20
+ </html>
package/app/README.md ADDED
@@ -0,0 +1,19 @@
1
+ # Your white-label site
2
+
3
+ This site uses TypeScript for application code, Handlebars for pages, and Sass plus full Bootstrap CSS for styling.
4
+
5
+ ## Start developing
6
+
7
+ Use Node.js 24. Run `npm install`, then `npm run typecheck` and `npm run build`. The build output is `_deploy`; serve that directory with your preferred static server. `npm test` runs the generated site's build check. The generator repository has the broader unit and coverage suites; add application-specific tests as your site grows.
8
+
9
+ Edit `.ts` files under `app/assets/script`, and use `.tsx` for React components. Keep `.js` extensions in relative imports, for example `import User from './model/user.js'`. TypeScript resolves the source and emits valid JavaScript imports. Do not edit `dist`, which is generated by the compiler.
10
+
11
+ Pages live in `app/*.hbs`, partials in `app/assets/markup`, and page data in `app/assets/data/view`. Add shared styles in `app/assets/style`. The full Bootstrap stylesheet is included before the project styles.
12
+
13
+ ```sh
14
+ npm run build -- --version=release-1 --production=true
15
+ ```
16
+
17
+ Optional flags are `--www`, `--cdn`, and `--service`. Their defaults are `/`, `/`, and `/service-endpoint`. The version selects `_deploy/release/<version>/assets`; without a version, the current timestamp is used. Each build replaces `_deploy`.
18
+
19
+ Document new functions with JSDoc comments explaining behavior, parameters, return values, and meaningful errors. Keep strict type checking enabled. Templates accept trusted HTML, so validate or escape external content before rendering it. Optional SDK adapters need real provider configuration before use.
@@ -0,0 +1,17 @@
1
+ {
2
+ "title":"Colors - Toolkit",
3
+ "webRepo": "https://github.com/bshack/white-label",
4
+ "styles":{
5
+ "all":{
6
+ "global":"assets/style/global.css",
7
+ "section":"assets/style/toolkit.css"
8
+ },
9
+ "print":{
10
+ "global":"assets/style/print.css"
11
+ }
12
+ },
13
+ "scripts":{
14
+ "global":"assets/script/global.compiled.js",
15
+ "section":"assets/script/toolkit.compiled.js"
16
+ }
17
+ }
@@ -0,0 +1,39 @@
1
+ {
2
+ "title":"Components - Toolkit",
3
+ "webRepo": "https://github.com/bshack/white-label",
4
+ "styles":{
5
+ "all":{
6
+ "global":"assets/style/global.css",
7
+ "section":"assets/style/toolkit.css"
8
+ },
9
+ "print":{
10
+ "global":"assets/style/print.css"
11
+ }
12
+ },
13
+ "accessible-ajax-1":"New content has been added to the page, now the screen reader will read it.",
14
+ "select-1":{
15
+ "data":[
16
+ {
17
+ "value":"",
18
+ "name":"choose",
19
+ "selected":true
20
+ },
21
+ {
22
+ "value":"option-1",
23
+ "name":"car"
24
+ },
25
+ {
26
+ "value":"option-2",
27
+ "name":"truck"
28
+ },
29
+ {
30
+ "value":"option-3",
31
+ "name":"suv"
32
+ }
33
+ ]
34
+ },
35
+ "scripts":{
36
+ "global":"assets/script/global.compiled.js",
37
+ "section":"assets/script/toolkit.compiled.js"
38
+ }
39
+ }
@@ -0,0 +1,119 @@
1
+ {
2
+ "title":"Elements - Toolkit",
3
+ "webRepo": "https://github.com/bshack/white-label",
4
+ "styles":{
5
+ "all":{
6
+ "global":"assets/style/global.css",
7
+ "section":"assets/style/toolkit.css"
8
+ },
9
+ "print":{
10
+ "global":"assets/style/print.css"
11
+ }
12
+ },
13
+ "elements":{
14
+ "list-1":{
15
+ "items":[
16
+ {
17
+ "text":"eggs"
18
+ },
19
+ {
20
+ "text":"milk"
21
+ },
22
+ {
23
+ "text":"flour"
24
+ }
25
+ ]
26
+ },
27
+ "table-1":{
28
+ "caption":"percent of people in the group",
29
+ "head":[
30
+ {
31
+ "text":""
32
+ },
33
+ {
34
+ "text":"males"
35
+ },
36
+ {
37
+ "text":"females"
38
+ }
39
+ ],
40
+ "body":[
41
+ [
42
+ {
43
+ "text":"decided",
44
+ "isHead":true
45
+ },
46
+ {
47
+ "text":"50%"
48
+ },
49
+ {
50
+ "text":"25%"
51
+ }
52
+ ],
53
+ [
54
+ {
55
+ "text":"undecided",
56
+ "isHead":true
57
+ },
58
+ {
59
+ "text":"25%"
60
+ },
61
+ {
62
+ "text":"50%"
63
+ }
64
+ ],
65
+ [
66
+ {
67
+ "text":"did not respond",
68
+ "isHead":true
69
+ },
70
+ {
71
+ "text":"25%"
72
+ },
73
+ {
74
+ "text":"25%"
75
+ }
76
+ ]
77
+ ],
78
+ "foot":[
79
+ [
80
+ {
81
+ "text":"totals",
82
+ "isHead":true
83
+ },
84
+ {
85
+ "text":"100%"
86
+ },
87
+ {
88
+ "text":"100%"
89
+ }
90
+ ]
91
+ ]
92
+ },
93
+ "select-1":{
94
+ "data":[
95
+ {
96
+ "value":"",
97
+ "name":"choose",
98
+ "selected":true
99
+ },
100
+ {
101
+ "value":"option-1",
102
+ "name":"car"
103
+ },
104
+ {
105
+ "value":"option-2",
106
+ "name":"truck"
107
+ },
108
+ {
109
+ "value":"option-3",
110
+ "name":"suv"
111
+ }
112
+ ]
113
+ }
114
+ },
115
+ "scripts":{
116
+ "global":"assets/script/global.compiled.js",
117
+ "section":"assets/script/toolkit.compiled.js"
118
+ }
119
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "title":"Grids - Toolkit",
3
+ "webRepo": "https://github.com/bshack/white-label",
4
+ "styles":{
5
+ "all":{
6
+ "global":"assets/style/global.css",
7
+ "section":"assets/style/toolkit.css"
8
+ },
9
+ "print":{
10
+ "global":"assets/style/print.css"
11
+ }
12
+ },
13
+ "scripts":{
14
+ "global":"assets/script/global.compiled.js",
15
+ "section":"assets/script/toolkit.compiled.js"
16
+ }
17
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "title":"Icons - Toolkit",
3
+ "webRepo": "https://github.com/bshack/white-label",
4
+ "styles":{
5
+ "all":{
6
+ "global":"assets/style/global.css",
7
+ "section":"assets/style/toolkit.css"
8
+ },
9
+ "print":{
10
+ "global":"assets/style/print.css"
11
+ }
12
+ },
13
+ "scripts":{
14
+ "global":"assets/script/global.compiled.js",
15
+ "section":"assets/script/toolkit.compiled.js"
16
+ }
17
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "title":"Toolkit",
3
+ "webRepo": "https://github.com/bshack/white-label",
4
+ "styles":{
5
+ "all":{
6
+ "global":"assets/style/global.css",
7
+ "section":"assets/style/toolkit.css"
8
+ },
9
+ "print":{
10
+ "global":"assets/style/print.css"
11
+ }
12
+ },
13
+ "scripts":{
14
+ "global":"assets/script/global.compiled.js",
15
+ "section":"assets/script/toolkit.compiled.js"
16
+ }
17
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "title":"Type - Toolkit",
3
+ "webRepo": "https://github.com/bshack/white-label",
4
+ "styles":{
5
+ "all":{
6
+ "global":"assets/style/global.css",
7
+ "section":"assets/style/toolkit.css"
8
+ },
9
+ "print":{
10
+ "global":"assets/style/print.css"
11
+ }
12
+ },
13
+ "scripts":{
14
+ "global":"assets/script/global.compiled.js",
15
+ "section":"assets/script/toolkit.compiled.js"
16
+ }
17
+ }