Layout scaffolding for Web apps.
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.
 
 
 

36 lignes
890 B

  1. import config from '../config.json'
  2. const mangledVarNames: Record<string, string> = {}
  3. export const configVar = (varName: keyof typeof config) => {
  4. let { [varName]: mangledVarName } = mangledVarNames
  5. if (!mangledVarName) {
  6. mangledVarNames[varName] = mangledVarName = `config-${varName}`
  7. }
  8. return `var(--${mangledVarName}, ${config[varName]})`
  9. }
  10. export const loadConfig = (): any => {
  11. return ({
  12. ':root': Object.entries(mangledVarNames).reduce(
  13. (varNames, [key, cssVarName]) => {
  14. switch (key as keyof typeof config) {
  15. case 'base-width':
  16. if (typeof config[key as keyof typeof config] === 'number') {
  17. return ({
  18. ...varNames,
  19. [`--${cssVarName}`]: `${config[key as keyof typeof config]}px`,
  20. })
  21. }
  22. break
  23. }
  24. return ({
  25. ...varNames,
  26. [`--${cssVarName}`]: config[key as keyof typeof config],
  27. })
  28. },
  29. {},
  30. ),
  31. })
  32. }