@telus-uds/system-theme-tokens 2.66.0 → 3.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.
package/.eslintrc.cjs ADDED
@@ -0,0 +1,20 @@
1
+ const path = require('path')
2
+ const base = require('../../eslintrc.base.cjs')
3
+
4
+ base.rules['import/no-extraneous-dependencies'] = [
5
+ 'error',
6
+ { packageDir: [__dirname, path.join(__dirname, '../..')] }
7
+ ]
8
+
9
+ base.rules['import/extensions'] = 'off'
10
+
11
+ base.parser = '@babel/eslint-parser'
12
+
13
+ base.parserOptions = {
14
+ requireConfigFile: false,
15
+ babelOptions: {
16
+ plugins: ['@babel/plugin-syntax-import-assertions']
17
+ }
18
+ }
19
+
20
+ module.exports = base
package/CHANGELOG.md CHANGED
@@ -1,12 +1,21 @@
1
1
  # Change Log - @telus-uds/system-theme-tokens
2
2
 
3
- This log was last generated on Thu, 31 Oct 2024 05:02:44 GMT and should not be manually modified.
3
+ <!-- This log was last generated on Fri, 22 Nov 2024 23:40:07 GMT and should not be manually modified. -->
4
4
 
5
5
  <!-- Start content -->
6
6
 
7
+ ## 3.0.0
8
+
9
+ Fri, 22 Nov 2024 23:40:07 GMT
10
+
11
+ ### Major changes
12
+
13
+ - Upgrade `react-native` and many other dependencies and refactor to ESM-only builds (shahzaibkhalidmalik@outlook.com)
14
+ - Bump @telus-uds/system-constants to v2.0.0
15
+
7
16
  ## 2.66.0
8
17
 
9
- Thu, 31 Oct 2024 05:02:44 GMT
18
+ Thu, 31 Oct 2024 05:09:12 GMT
10
19
 
11
20
  ### Minor changes
12
21
 
package/appearances.js CHANGED
@@ -1,4 +1,4 @@
1
- const { viewports } = require('@telus-uds/system-constants')
1
+ import { viewports } from '@telus-uds/system-constants'
2
2
 
3
3
  /*
4
4
  * shared appearances
@@ -76,7 +76,7 @@ const checked = {
76
76
 
77
77
  const disabled = { values: [true], type: 'state' }
78
78
 
79
- module.exports = {
79
+ export default {
80
80
  // system-wide appearances
81
81
  system: {
82
82
  viewport: {
@@ -1,20 +1,26 @@
1
- const { writeFile, rm, mkdir } = require('fs/promises')
2
- const { resolve } = require('path')
3
- const chalk = require('chalk')
1
+ import { writeFile, rm, mkdir } from 'fs/promises'
2
+ import { resolve, dirname } from 'path'
3
+ import { fileURLToPath } from 'url'
4
+ import chalk from 'chalk'
4
5
 
5
- const components = require('../../components')
6
- const tokensTemplate = require('./templates/component')
7
- const modelsTemplate = require('./templates/model')
8
- const packageJson = require('../../package.json')
9
- const tokenTypes = require('./tokens')
10
- const { customEnums } = require('./types')
6
+ import components from '../../components.js'
7
+ import tokensTemplate from './templates/component.js'
8
+ import modelsTemplate from './templates/model.js'
9
+ // TODO: Prettier doesn't yet support import assertions
10
+ // eslint-disable-next-line prettier/prettier
11
+ import packageJson from '../../package.json' with { type: 'json' }
12
+ import tokenTypes from './tokens.js'
13
+ import { customEnums } from './types.js'
11
14
 
12
15
  // eslint-disable-next-line no-console
13
16
  const log = (message, colour = chalk.grey) => console.log(colour(message))
14
17
 
15
- async function build({ author = 'Telus' } = {}) {
18
+ export default async function build({ author = 'Telus' } = {}) {
16
19
  log(chalk.grey('Beginning system-theme-tokens/android build:'))
17
20
 
21
+ const __filename = fileURLToPath(import.meta.url)
22
+ const __dirname = dirname(__filename)
23
+
18
24
  const { version } = packageJson
19
25
  const credit = `Created by ${author} from @telus-uds/system-theme-tokens ${version}`
20
26
  const outputDir = resolve(__dirname, '../../generated/android')
@@ -64,5 +70,3 @@ async function build({ author = 'Telus' } = {}) {
64
70
 
65
71
  log(chalk.grey('✔️ Completed system-theme-tokens/android build.'))
66
72
  }
67
-
68
- module.exports = build
@@ -1,8 +1,7 @@
1
- const tokenTypes = require('../tokens')
2
- const getImports = require('./imports')
3
- const { customEnums } = require('../types')
4
-
5
- const headerTemplate = require('./header')
1
+ import tokenTypes from '../tokens.js'
2
+ import getImports from './imports.js'
3
+ import { customEnums } from '../types.js'
4
+ import headerTemplate from './header.js'
6
5
 
7
6
  function getKotlinType(tokenType) {
8
7
  const { type, nullable } = tokenTypes[tokenType]
@@ -46,7 +45,7 @@ function getKotlinDefault(tokenType) {
46
45
  return ` = ${formatDefaultValue(defaultValue, type)}`
47
46
  }
48
47
 
49
- function componentTemplate({ componentName, credit, tokens }) {
48
+ export default function componentTemplate({ componentName, credit, tokens }) {
50
49
  const header = headerTemplate({
51
50
  packageName: `com.telus.udsnative.components.${componentName.toLowerCase()}`,
52
51
  credit,
@@ -63,5 +62,3 @@ ${Object.entries(tokens)
63
62
  ): Tokens
64
63
  `
65
64
  }
66
-
67
- module.exports = componentTemplate
@@ -14,8 +14,6 @@ function formatImports(imports = []) {
14
14
  : ''
15
15
  }
16
16
 
17
- function headerTemplate({ packageName, imports }) {
17
+ export default function headerTemplate({ packageName, imports }) {
18
18
  return `${formatPackage(packageName)}${formatImports(imports)}`
19
19
  }
20
-
21
- module.exports = headerTemplate
@@ -1,5 +1,5 @@
1
- const { composeTypes, customTypes, customEnums } = require('../types')
2
- const tokenTypes = require('../tokens')
1
+ import { composeTypes, customTypes, customEnums } from '../types.js'
2
+ import tokenTypes from '../tokens.js'
3
3
 
4
4
  function mapImports(source, path) {
5
5
  // This pattern holds for everything so far; if there are exceptions, could add an object of them here
@@ -10,7 +10,7 @@ const composeImports = mapImports(composeTypes, 'androidx.compose.ui.unit.')
10
10
  const udsImports = mapImports({ ...customTypes, ...customEnums }, 'com.telus.udsnative.models.')
11
11
  const allImports = { ...composeImports, ...udsImports }
12
12
 
13
- function getImports(tokensValues, imports = []) {
13
+ export default function getImports(tokensValues, imports = []) {
14
14
  tokensValues.forEach((token) => {
15
15
  const { type: tokenType } = tokenTypes[token]
16
16
  const importPath = allImports[tokenType]
@@ -24,5 +24,3 @@ function getImports(tokensValues, imports = []) {
24
24
 
25
25
  return imports
26
26
  }
27
-
28
- module.exports = getImports
@@ -1,6 +1,6 @@
1
- const headerTemplate = require('./header')
1
+ import headerTemplate from './header.js'
2
2
 
3
- function modelTemplate({ type, values }) {
3
+ export default function modelTemplate({ type, values }) {
4
4
  const valuesKeys = Object.keys(values)
5
5
 
6
6
  const header = headerTemplate({ packageName: 'com.telus.udsnative.models' })
@@ -10,5 +10,3 @@ ${valuesKeys.map((valueKey) => ` ${valueKey}`).join(',\n')}
10
10
  }
11
11
  `
12
12
  }
13
-
14
- module.exports = modelTemplate
@@ -1,6 +1,6 @@
1
- const deepMerge = require('lodash.merge')
2
- const iosTokens = require('../ios/tokens')
3
- const { types } = require('./types')
1
+ import deepMerge from 'lodash.merge'
2
+ import iosTokens from '../ios/tokens.js'
3
+ import { types } from './types.js'
4
4
 
5
5
  const nilToNull = (tokens) =>
6
6
  Object.fromEntries(
@@ -10,7 +10,7 @@ const nilToNull = (tokens) =>
10
10
  ])
11
11
  )
12
12
 
13
- const androidTokens = deepMerge({}, nilToNull(iosTokens), {
13
+ export default deepMerge({}, nilToNull(iosTokens), {
14
14
  size: {
15
15
  // Gson sometimes has trouble deserializing Dp Optional; might need to use Int or Double?
16
16
  type: types.Dp
@@ -51,5 +51,3 @@ const androidTokens = deepMerge({}, nilToNull(iosTokens), {
51
51
  type: types.Double
52
52
  }
53
53
  })
54
-
55
- module.exports = androidTokens
@@ -1,5 +1,5 @@
1
1
  // Built-in Kotlin primitive types:
2
- const kotlinTypes = {
2
+ export const kotlinTypes = {
3
3
  Double: 'Double', // Numbers to use in calculations
4
4
  Int: 'Int', // Integers to use as indexes etc
5
5
  String: 'String', // Arbitrary strings without an existing enum
@@ -7,20 +7,20 @@ const kotlinTypes = {
7
7
  }
8
8
 
9
9
  // These types are available as imports from androidx.compose
10
- const composeTypes = {
10
+ export const composeTypes = {
11
11
  Dp: 'Dp',
12
12
  TextUnit: 'TextUnit'
13
13
  }
14
14
 
15
15
  // These types are pre-defined in universal-design-system-android
16
- const customTypes = {
16
+ export const customTypes = {
17
17
  Color: 'UDSColor', // Custom class for objects with red, green, blue, alpha
18
18
  PaletteGradient: 'PaletteGradient', // Custom class
19
19
  Shadow: 'Shadow'
20
20
  }
21
21
 
22
22
  // These are enum types generated here
23
- const customEnums = {
23
+ export const customEnums = {
24
24
  TextAlignment: 'TextAlignmentToken',
25
25
  TextLine: 'TextLineToken',
26
26
  TextLineStyle: 'TextLineStyleToken',
@@ -34,17 +34,9 @@ const customEnums = {
34
34
  TextTransform: 'TextTransformToken'
35
35
  }
36
36
 
37
- const types = {
37
+ export const types = {
38
38
  ...kotlinTypes,
39
39
  ...composeTypes,
40
40
  ...customEnums,
41
41
  ...customTypes
42
42
  }
43
-
44
- module.exports = {
45
- types,
46
- kotlinTypes,
47
- composeTypes,
48
- customEnums,
49
- customTypes
50
- }
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- require('dotenv').config()
4
- const buildAndroid = require('./android/build')
3
+ import 'dotenv/config'
4
+ import buildAndroid from './android/build.js'
5
5
 
6
6
  buildAndroid()
package/bin/build-ios.js CHANGED
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
 
3
- require('dotenv').config()
4
- const buildIos = require('./ios/build')
3
+ import 'dotenv/config'
4
+ import buildIos from './ios/build.js'
5
5
 
6
6
  buildIos()
package/bin/ios/build.js CHANGED
@@ -1,20 +1,28 @@
1
- const { writeFile, rm, mkdir } = require('fs/promises')
2
- const { resolve } = require('path')
3
- const chalk = require('chalk')
1
+ // Import necessary modules using ESM syntax
2
+ import { writeFile, rm, mkdir } from 'fs/promises'
3
+ import {resolve, dirname } from 'path'
4
+ import chalk from 'chalk'
4
5
 
5
- const components = require('../../components')
6
- const tokensTemplate = require('./templates/component')
7
- const modelsTemplate = require('./templates/model')
8
- const packageJson = require('../../package.json')
9
- const tokenTypes = require('./tokens')
10
- const { customEnums } = require('./types')
6
+ import { fileURLToPath } from 'url'
7
+
8
+ import components from '../../components.js'
9
+ import tokensTemplate from './templates/component.js'
10
+ import modelsTemplate from './templates/model.js'
11
+ // TODO: Prettier doesn't yet support import assertions
12
+ // eslint-disable-next-line prettier/prettier
13
+ import packageJson from '../../package.json' with { type: 'json' }
14
+ import tokenTypes from './tokens.js'
15
+ import { customEnums } from './types.js'
11
16
 
12
17
  // eslint-disable-next-line no-console
13
18
  const log = (message, colour = chalk.grey) => console.log(colour(message))
14
19
 
15
- async function build({ author = 'Telus' } = {}) {
20
+ export default async function build({ author = 'Telus' } = {}) {
16
21
  log(chalk.grey('Beginning system-theme-tokens/ios build:'))
17
22
 
23
+ const __filename = fileURLToPath(import.meta.url)
24
+ const __dirname = dirname(__filename)
25
+
18
26
  const { version } = packageJson
19
27
  const credit = `Created by ${author} from @telus-uds/system-theme-tokens ${version}`
20
28
  const outputDir = resolve(__dirname, '../../generated/ios')
@@ -64,5 +72,3 @@ async function build({ author = 'Telus' } = {}) {
64
72
 
65
73
  log(chalk.grey('✔️ Completed system-theme-tokens/ios build.'))
66
74
  }
67
-
68
- module.exports = build
@@ -1,6 +1,5 @@
1
- const tokenTypes = require('../tokens')
2
-
3
- const headerTemplate = require('./header')
1
+ import tokenTypes from '../tokens.js'
2
+ import headerTemplate from './header.js'
4
3
 
5
4
  function getSwiftType(tokenType) {
6
5
  const { type, nullable } = tokenTypes[tokenType]
@@ -11,7 +10,7 @@ function getSwiftDefault(tokenType) {
11
10
  return ` = ${tokenTypes[tokenType].default}`
12
11
  }
13
12
 
14
- function componentTemplate({ componentName, fileName, credit, tokens }) {
13
+ export default function componentTemplate({ componentName, fileName, credit, tokens }) {
15
14
  const tokensEntries = Object.entries(tokens)
16
15
  const header = headerTemplate({ fileName, credit, imports: ['SwiftUI'] })
17
16
 
@@ -42,5 +41,3 @@ ${tokensEntries
42
41
  }
43
42
  `
44
43
  }
45
-
46
- module.exports = componentTemplate
@@ -21,8 +21,6 @@ ${imports.map((importName) => `import ${importName}`).join('\n')}
21
21
  : ''
22
22
  }
23
23
 
24
- function headerTemplate({ fileName, credit, imports }) {
24
+ export default function headerTemplate({ fileName, credit, imports }) {
25
25
  return `${formatName(fileName)}${formatCredit(credit)}${formatImports(imports)}`
26
26
  }
27
-
28
- module.exports = headerTemplate
@@ -1,6 +1,6 @@
1
- const headerTemplate = require('./header')
1
+ import headerTemplate from './header.js'
2
2
 
3
- function modelTemplate({ type, values, fileName, credit }) {
3
+ export default function modelTemplate({ type, values, fileName, credit }) {
4
4
  const valuesKeys = Object.keys(values)
5
5
 
6
6
  const header = headerTemplate({ fileName, credit, imports: ['SwiftUI'] })
@@ -10,5 +10,3 @@ ${valuesKeys.map((valueKey) => ` case ${valueKey}`).join('\n')}
10
10
  }
11
11
  `
12
12
  }
13
-
14
- module.exports = modelTemplate
package/bin/ios/tokens.js CHANGED
@@ -1,8 +1,8 @@
1
- const deepMerge = require('lodash.merge')
2
- const rnTokens = require('../../tokens')
3
- const { types } = require('./types')
1
+ import deepMerge from 'lodash.merge'
2
+ import rnTokens from '../../tokens.js'
3
+ import { types } from './types.js'
4
4
 
5
- const iosTokens = deepMerge({}, rnTokens, {
5
+ export default deepMerge({}, rnTokens, {
6
6
  size: {
7
7
  type: types.Double
8
8
  },
@@ -103,5 +103,3 @@ const iosTokens = deepMerge({}, rnTokens, {
103
103
  default: '.none'
104
104
  }
105
105
  })
106
-
107
- module.exports = iosTokens
package/bin/ios/types.js CHANGED
@@ -1,5 +1,5 @@
1
1
  // Built-in Swift primitive types:
2
- const swiftTypes = {
2
+ export const swiftTypes = {
3
3
  CGFloat: 'CGFloat', // Numbers to pass to APIs that expect 32-bit or 64-bit floats depending on system
4
4
  Double: 'Double', // Numbers to pass to APIs that always expect 64-bit floats
5
5
  Int: 'Int', // Signed integer that is 32 bit or 64 bit depending on platform
@@ -8,19 +8,19 @@ const swiftTypes = {
8
8
  }
9
9
 
10
10
  // These types are available as imports from SwiftUi
11
- const swiftUiTypes = {
11
+ export const swiftUiTypes = {
12
12
  TextAlignment: 'TextAlignment',
13
13
  Color: 'Color'
14
14
  }
15
15
 
16
16
  // These types are pre-defined in universal-design-system-ios:
17
17
  // See https://github.com/telus/universal-design-system-ios/tree/main/Sources/UDSNative/Models
18
- const customStructs = {
18
+ export const customStructs = {
19
19
  Shadow: 'Shadow', // Custom UDS struct
20
20
  PaletteGradient: 'PaletteGradient' // Custom UDS struct
21
21
  }
22
22
 
23
- const customEnums = {
23
+ export const customEnums = {
24
24
  TextLine: 'TextLineToken',
25
25
  TextLineStyle: 'TextLineStyleToken',
26
26
  BorderStyle: 'BorderStyleToken',
@@ -33,17 +33,9 @@ const customEnums = {
33
33
  TextTransform: 'TextTransformToken'
34
34
  }
35
35
 
36
- const types = {
36
+ export const types = {
37
37
  ...swiftTypes,
38
38
  ...swiftUiTypes,
39
39
  ...customEnums,
40
40
  ...customStructs
41
41
  }
42
-
43
- module.exports = {
44
- types,
45
- swiftTypes,
46
- swiftUiTypes,
47
- customEnums,
48
- customStructs
49
- }
package/components.js CHANGED
@@ -1,5 +1,5 @@
1
1
  // Define the required components and their supported tokens
2
- module.exports = {
2
+ export default {
3
3
  ActionCard: {
4
4
  actionIcon: 'icon',
5
5
  actionIconColor: 'color',
package/index.js CHANGED
@@ -2,8 +2,9 @@
2
2
  * Make sure nothing in this directory references node-specific APIs
3
3
  * at least `components` will be accessed in the browser for proptype validation
4
4
  */
5
- module.exports = {
6
- components: require('./components'),
7
- appearances: require('./appearances'),
8
- tokens: require('./tokens')
9
- }
5
+
6
+ import components from './components.js'
7
+ import appearances from './appearances.js'
8
+ import tokens from './tokens.js'
9
+
10
+ export { components, appearances, tokens }
package/package.json CHANGED
@@ -1,10 +1,11 @@
1
1
  {
2
2
  "name": "@telus-uds/system-theme-tokens",
3
- "version": "2.66.0",
3
+ "version": "3.0.0",
4
4
  "description": "Theme token schema for UDS",
5
5
  "keywords": [
6
6
  "system"
7
7
  ],
8
+ "type": "module",
8
9
  "author": "TELUS Digital",
9
10
  "homepage": "https://github.com/telus/universal-design-system#readme",
10
11
  "license": "MIT",
@@ -24,13 +25,22 @@
24
25
  "url": "https://github.com/telus/universal-design-system/issues"
25
26
  },
26
27
  "main": "index.js",
28
+ "exports": {
29
+ ".": {
30
+ "import": "./index.js",
31
+ "default": "./index.js"
32
+ },
33
+ "./package.json": "./package.json"
34
+ },
27
35
  "standard-engine": {
28
36
  "skip": true
29
37
  },
30
38
  "dependencies": {
31
- "@telus-uds/system-constants": "^1.3.0"
39
+ "@telus-uds/system-constants": "^2.0.0"
32
40
  },
33
41
  "devDependencies": {
42
+ "@babel/eslint-parser": "^7.25.9",
43
+ "@babel/plugin-syntax-import-attributes": "^7.26.0",
34
44
  "chalk": "^4.1.2",
35
45
  "dotenv": "^10.0.0",
36
46
  "lodash.merge": "^4.6.2"
package/tokens.js CHANGED
@@ -1,4 +1,4 @@
1
- const { fontBasePixels, viewports } = require('@telus-uds/system-constants')
1
+ import { fontBasePixels, viewports } from '@telus-uds/system-constants'
2
2
 
3
3
  /*
4
4
  * Simulates an object that has every positive integer as a property
@@ -377,4 +377,4 @@ const tokenTypes = applyDynamicTypes({
377
377
  }
378
378
  })
379
379
 
380
- module.exports = tokenTypes
380
+ export default tokenTypes