diff --git a/.eslintrc b/.eslintrc index 869c011..c218c14 100644 --- a/.eslintrc +++ b/.eslintrc @@ -14,7 +14,7 @@ "jsx": true } }, - "plugins": ["unicorn", "react-hooks", "no-unsanitized", "header"], + "plugins": ["unicorn", "react-hooks", "no-unsanitized", "header", "import"], "rules": { "@typescript-eslint/no-empty-function": "off", "@typescript-eslint/no-namespace": "off", @@ -59,7 +59,8 @@ [" Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.", " SPDX-License-Identifier: Apache-2.0"], 2 ], - "no-warning-comments": "warn" + "no-warning-comments": "warn", + "import/extensions": ["error", "ignorePackages"] }, "settings": { "react": { @@ -77,7 +78,7 @@ }, "overrides": [ { - "files": ["*.js"], + "files": ["*.js", "*.cjs"], "rules": { "@typescript-eslint/no-var-requires": "off" }, @@ -92,6 +93,12 @@ "jest": true } }, + { + "files": ["**/__tests__/**", "./test-pages/**"], + "rules": { + "import/extensions": ["off"] + } + }, { "files": ["**/__integ__/**"], "rules": { diff --git a/jest.integ.config.js b/jest.integ.config.cjs similarity index 74% rename from jest.integ.config.js rename to jest.integ.config.cjs index 077b9d7..7447645 100644 --- a/jest.integ.config.js +++ b/jest.integ.config.cjs @@ -16,9 +16,9 @@ module.exports = { }, testTimeout: 60_000, // 1min maxWorkers: os.cpus().length, - globalSetup: '/jest/global-setup.js', - globalTeardown: '/jest/global-teardown.js', - setupFilesAfterEnv: ['/jest/integ-setup.js'], + globalSetup: '/jest/global-setup.cjs', + globalTeardown: '/jest/global-teardown.cjs', + setupFilesAfterEnv: ['/jest/integ-setup.cjs'], moduleFileExtensions: ['js', 'ts'], testRegex: '(/(__integ__)/.*(\\.|/)test)\\.[jt]sx?$', }; diff --git a/jest.unit.config.js b/jest.unit.config.cjs similarity index 84% rename from jest.unit.config.js rename to jest.unit.config.cjs index f4cb898..6be4c6c 100644 --- a/jest.unit.config.js +++ b/jest.unit.config.cjs @@ -17,6 +17,9 @@ module.exports = merge({}, cloudscapePreset, { }, ], }, - setupFilesAfterEnv: ['/jest/unit-setup.js'], + moduleNameMapper: { + '^(\\.{1,2}/.*)\\.js$': '$1', + }, + setupFilesAfterEnv: ['/jest/unit-setup.cjs'], testRegex: '(/__tests__/.*(\\.|/)test)\\.[jt]sx?$', }); diff --git a/jest/global-setup.js b/jest/global-setup.cjs similarity index 100% rename from jest/global-setup.js rename to jest/global-setup.cjs diff --git a/jest/global-teardown.js b/jest/global-teardown.cjs similarity index 100% rename from jest/global-teardown.js rename to jest/global-teardown.cjs diff --git a/jest/integ-setup.js b/jest/integ-setup.cjs similarity index 100% rename from jest/integ-setup.js rename to jest/integ-setup.cjs diff --git a/jest/unit-setup.js b/jest/unit-setup.cjs similarity index 100% rename from jest/unit-setup.js rename to jest/unit-setup.cjs diff --git a/package-lock.json b/package-lock.json index 19d40b4..4f8ec30 100644 --- a/package-lock.json +++ b/package-lock.json @@ -25,6 +25,7 @@ "eslint": "^8.57.0", "eslint-config-prettier": "^8.3.0", "eslint-plugin-header": "3.1.0", + "eslint-plugin-import": "^2.32.0", "eslint-plugin-no-unsanitized": "^4.0.0", "eslint-plugin-prettier": "^3.4.1", "eslint-plugin-react": "^7.26.1", @@ -43,6 +44,9 @@ "ts-jest": "^29.1.5", "typescript": "^5.4.5", "vite": "^6.4.1" + }, + "peerDependencies": { + "react": ">=16.8.0" } }, "node_modules/@adobe/css-tools": { @@ -3804,6 +3808,13 @@ "win32" ] }, + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "dev": true, + "license": "MIT" + }, "node_modules/@sinclair/typebox": { "version": "0.34.41", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", @@ -4736,6 +4747,13 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/node": { "version": "25.0.0", "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.0.tgz", @@ -5643,6 +5661,28 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", + "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-shim-unscopables": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/array.prototype.flat": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", @@ -7801,6 +7841,77 @@ "eslint": ">=7.0.0" } }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/resolve": { + "version": "1.22.11", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", + "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz", + "integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, "node_modules/eslint-plugin-header": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/eslint-plugin-header/-/eslint-plugin-header-3.1.0.tgz", @@ -7811,6 +7922,63 @@ "eslint": ">=7.7.0" } }, + "node_modules/eslint-plugin-import": { + "version": "2.32.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz", + "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.9", + "array.prototype.findlastindex": "^1.2.6", + "array.prototype.flat": "^1.3.3", + "array.prototype.flatmap": "^1.3.3", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.12.1", + "hasown": "^2.0.2", + "is-core-module": "^2.16.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.1", + "semver": "^6.3.1", + "string.prototype.trimend": "^1.0.9", + "tsconfig-paths": "^3.15.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/eslint-plugin-no-unsanitized": { "version": "4.1.4", "resolved": "https://registry.npmjs.org/eslint-plugin-no-unsanitized/-/eslint-plugin-no-unsanitized-4.1.4.tgz", @@ -14180,6 +14348,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/object.values": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", @@ -16858,6 +17041,42 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/tsconfig-paths/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/tslib": { "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", diff --git a/package.json b/package.json index 8f987a6..cf8aa09 100644 --- a/package.json +++ b/package.json @@ -1,27 +1,54 @@ { "name": "@cloudscape-design/component-toolkit", "version": "1.0.0-beta", - "files": [ - "container-queries", - "dom", - "internal", - "use-controllable-state", - "*.js", - "*.d.ts" - ], + "type": "module", "main": "./index.js", + "module": "./mjs/index.js", + "sideEffects": false, "exports": { - ".": "./index.js", - "./dom": "./dom/index.js", - "./internal": "./internal/index.js", - "./internal/metrics": "./internal/metrics.js", - "./internal/testing": "./internal/testing.js", - "./internal/locale": "./internal/locale/index.js", - "./internal/analytics-metadata": "./internal/analytics-metadata/index.js", - "./internal/analytics-metadata/utils": "./internal/analytics-metadata/utils.js", + ".": { + "require": "./index.js", + "default": "./mjs/index.js" + }, + "./dom": { + "require": "./dom/index.js", + "default": "./mjs/dom/index.js" + }, + "./internal": { + "require": "./internal/index.js", + "default": "./mjs/internal/index.js" + }, + "./internal/metrics": { + "require": "./internal/metrics.js", + "default": "./mjs/internal/metrics.js" + }, + "./internal/testing": { + "require": "./internal/testing.js", + "default": "./mjs/internal/testing.js" + }, + "./internal/locale": { + "require": "./internal/locale/index.js", + "default": "./mjs/internal/locale/index.js" + }, + "./internal/analytics-metadata": { + "require": "./internal/analytics-metadata/index.js", + "default": "./mjs/internal/analytics-metadata/index.js" + }, + "./internal/analytics-metadata/utils": { + "require": "./internal/analytics-metadata/utils.js", + "default": "./mjs/internal/analytics-metadata/utils.js" + }, "./package.json": "./package.json" }, - "sideEffects": false, + "types": "./mjs/index.d.ts", + "typesVersions": { + "*": { + "internal": ["./mjs/internal/index.d.ts"], + "internal/*": ["./mjs/internal/*"], + "dom": ["./mjs/dom/index.d.ts"], + "dom/*": ["./mjs/dom/*"] + } + }, "repository": { "type": "git", "url": "https://github.com/cloudscape-design/component-toolkit.git" @@ -29,13 +56,13 @@ "homepage": "https://cloudscape.design", "scripts": { "prebuild": "rm -rf lib", - "build": "tsc", - "postbuild": "npm run postbuild:root && npm run postbuild:focus-visible", - "postbuild:root": "cp package.json README.md LICENSE lib", - "postbuild:focus-visible": "cp ./src/internal/focus-visible/index.scss lib/internal/focus-visible", + "build": "tsc -p ./tsconfig.json && tsc -p ./tsconfig.cjs.json", + "postbuild": "npm run postbuild:root && npm run postbuild:focus-visible && node ./scripts/generate-deep-package.js", + "postbuild:root": "cp package.json README.md LICENSE NOTICE lib", + "postbuild:focus-visible": "cp ./src/internal/focus-visible/index.scss lib/internal/focus-visible/index.scss", "test-pages": "vite --config ./test-pages/vite.config.mts", - "test:unit": "jest -c jest.unit.config.js", - "test:integ": "NODE_OPTIONS=\"$NODE_OPTIONS --experimental-vm-modules\" jest -c jest.integ.config.js", + "test:unit": "jest -c jest.unit.config.cjs", + "test:integ": "NODE_OPTIONS=\"$NODE_OPTIONS --experimental-vm-modules\" jest -c jest.integ.config.cjs", "test": "npm run test:unit && npm-run-all -r -p test-pages test:integ", "lint": "eslint --ignore-path .gitignore --ext ts,tsx,js .", "prepare": "husky" @@ -44,6 +71,9 @@ "tslib": "^2.3.1", "weekstart": "^2.0.0" }, + "peerDependencies": { + "react": ">=16.8.0" + }, "devDependencies": { "@cloudscape-design/browser-test-tools": "^3.0.0", "@cloudscape-design/jest-preset": "^2.0.0", @@ -58,6 +88,7 @@ "eslint": "^8.57.0", "eslint-config-prettier": "^8.3.0", "eslint-plugin-header": "3.1.0", + "eslint-plugin-import": "^2.32.0", "eslint-plugin-no-unsanitized": "^4.0.0", "eslint-plugin-prettier": "^3.4.1", "eslint-plugin-react": "^7.26.1", @@ -86,7 +117,7 @@ "eslint --fix" ], "package-lock.json": [ - "./scripts/prepare-package-lock.js" + "./scripts/prepare-package-lock.cjs" ] } } diff --git a/scripts/generate-deep-package.js b/scripts/generate-deep-package.js new file mode 100644 index 0000000..9b63510 --- /dev/null +++ b/scripts/generate-deep-package.js @@ -0,0 +1,22 @@ +#!/usr/bin/env node +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 + +import { readFileSync, writeFileSync } from 'fs'; +import { fileURLToPath } from 'url'; +import { dirname, join } from 'path'; + +const __dirname = dirname(fileURLToPath(import.meta.url)); +const rootDir = join(__dirname, '..'); + +const libDir = join(rootDir, 'lib'); +const libPkgPath = join(libDir, 'package.json'); + +const esmDir = join(libDir, 'mjs'); +const esmPkgPath = join(esmDir, 'package.json'); + +const packageCjs = JSON.parse(readFileSync(libPkgPath, 'utf8')); +packageCjs.type = 'commonjs'; + +writeFileSync(libPkgPath, JSON.stringify(packageCjs, null, 2) + '\n'); +writeFileSync(esmPkgPath, JSON.stringify({ type: 'module' }, null, 2) + '\n'); diff --git a/scripts/prepare-package-lock.js b/scripts/prepare-package-lock.cjs similarity index 100% rename from scripts/prepare-package-lock.js rename to scripts/prepare-package-lock.cjs diff --git a/src/container-queries/interfaces.ts b/src/container-queries/interfaces.ts index e69e702..f3bafe1 100644 --- a/src/container-queries/interfaces.ts +++ b/src/container-queries/interfaces.ts @@ -1,4 +1,4 @@ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 -export { ContainerQueryEntry, ElementReference } from '../internal/container-queries/interfaces'; +export { ContainerQueryEntry, ElementReference } from '../internal/container-queries/interfaces.js'; diff --git a/src/container-queries/use-container-query.ts b/src/container-queries/use-container-query.ts index 58603ef..a692206 100644 --- a/src/container-queries/use-container-query.ts +++ b/src/container-queries/use-container-query.ts @@ -2,8 +2,8 @@ // SPDX-License-Identifier: Apache-2.0 import React, { useRef, useState, useCallback } from 'react'; -import { ContainerQueryEntry } from './interfaces'; -import { useResizeObserver } from '../internal/container-queries/use-resize-observer'; +import { ContainerQueryEntry } from './interfaces.js'; +import { useResizeObserver } from '../internal/container-queries/use-resize-observer.js'; /** * Attaches resize-observer to the referenced element and keeps last observation in state. diff --git a/src/dom/find-up-until.ts b/src/dom/find-up-until.ts index cd78ad2..da5727c 100644 --- a/src/dom/find-up-until.ts +++ b/src/dom/find-up-until.ts @@ -1,7 +1,7 @@ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 -import { isHTMLElement } from './element-types'; +import { isHTMLElement } from './element-types.js'; /** * Checks if the current element or any of its parent is matched with `test` function. diff --git a/src/dom/index.ts b/src/dom/index.ts index 8271aff..7f17a95 100644 --- a/src/dom/index.ts +++ b/src/dom/index.ts @@ -1,6 +1,6 @@ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 -export { default as findUpUntil } from './find-up-until'; -export { default as nodeContains } from './node-contains'; -export { default as nodeBelongs } from './node-belongs'; +export { default as findUpUntil } from './find-up-until.js'; +export { default as nodeContains } from './node-contains.js'; +export { default as nodeBelongs } from './node-belongs.js'; diff --git a/src/dom/node-belongs.ts b/src/dom/node-belongs.ts index e9fab71..b1be9f2 100644 --- a/src/dom/node-belongs.ts +++ b/src/dom/node-belongs.ts @@ -1,9 +1,9 @@ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 -import { findUpUntil, nodeContains } from '.'; +import { findUpUntil, nodeContains } from './index.js'; -import { isHTMLElement, isNode } from './element-types'; +import { isHTMLElement, isNode } from './element-types.js'; /** * Checks whether the given node (target) belongs to the container. diff --git a/src/dom/node-contains.ts b/src/dom/node-contains.ts index 9c967d2..b7df675 100644 --- a/src/dom/node-contains.ts +++ b/src/dom/node-contains.ts @@ -1,7 +1,7 @@ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 -import { isNode } from './element-types'; +import { isNode } from './element-types.js'; /** * Checks whether the given node is a parent of the other descendant node. diff --git a/src/index.ts b/src/index.ts index 5dc265f..0c9a12c 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,8 +1,8 @@ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 -export { default as useContainerQuery } from './container-queries/use-container-query'; -export { default as useControllableState } from './use-controllable-state/use-controllable-state'; +export { default as useContainerQuery } from './container-queries/use-container-query.js'; +export { default as useControllableState } from './use-controllable-state/use-controllable-state.js'; export type { ContainerQueryEntry } from './container-queries/interfaces'; export type { PropertyDescriptions } from './use-controllable-state/interfaces'; diff --git a/src/internal/analytics-metadata/__tests__/components.tsx b/src/internal/analytics-metadata/__tests__/components.tsx index 682de00..d9460c3 100644 --- a/src/internal/analytics-metadata/__tests__/components.tsx +++ b/src/internal/analytics-metadata/__tests__/components.tsx @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 import React, { ReactNode, useEffect, useRef } from 'react'; -import { METADATA_ATTRIBUTE, getAnalyticsMetadataAttribute, getAnalyticsLabelAttribute } from '../attributes'; +import { METADATA_ATTRIBUTE, getAnalyticsMetadataAttribute, getAnalyticsLabelAttribute } from '../attributes.js'; import ReactDOM from 'react-dom'; export const ComponentOne = ({ malformed }: { malformed?: boolean }) => ( diff --git a/src/internal/analytics-metadata/attributes.ts b/src/internal/analytics-metadata/attributes.ts index f9ee324..f164abd 100644 --- a/src/internal/analytics-metadata/attributes.ts +++ b/src/internal/analytics-metadata/attributes.ts @@ -1,8 +1,8 @@ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 -import { GeneratedAnalyticsMetadataFragment } from './interfaces'; -import { getGlobalFlag } from '../global-flags'; +import { GeneratedAnalyticsMetadataFragment } from './interfaces.js'; +import { getGlobalFlag } from '../global-flags/index.js'; export const METADATA_DATA_ATTRIBUTE = 'awsuiAnalytics'; export const METADATA_ATTRIBUTE = 'data-awsui-analytics'; diff --git a/src/internal/analytics-metadata/dom-utils.ts b/src/internal/analytics-metadata/dom-utils.ts index f224dca..0f21282 100644 --- a/src/internal/analytics-metadata/dom-utils.ts +++ b/src/internal/analytics-metadata/dom-utils.ts @@ -1,7 +1,7 @@ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 -import { METADATA_DATA_ATTRIBUTE, REFERRER_DATA_ATTRIBUTE } from './attributes'; +import { METADATA_DATA_ATTRIBUTE, REFERRER_DATA_ATTRIBUTE } from './attributes.js'; export const findLogicalParent = (node: HTMLElement): HTMLElement | null => { try { diff --git a/src/internal/analytics-metadata/index.ts b/src/internal/analytics-metadata/index.ts index 00c937d..cbcc86e 100644 --- a/src/internal/analytics-metadata/index.ts +++ b/src/internal/analytics-metadata/index.ts @@ -1,10 +1,10 @@ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 -export { GeneratedAnalyticsMetadataFragment, GeneratedAnalyticsMetadata, LabelIdentifier } from './interfaces'; +export { GeneratedAnalyticsMetadataFragment, GeneratedAnalyticsMetadata, LabelIdentifier } from './interfaces.js'; export { getAnalyticsMetadataAttribute, copyAnalyticsMetadataAttribute, getAnalyticsLabelAttribute, activateAnalyticsMetadata, -} from './attributes'; +} from './attributes.js'; diff --git a/src/internal/analytics-metadata/labels-utils.ts b/src/internal/analytics-metadata/labels-utils.ts index 24b2317..5920334 100644 --- a/src/internal/analytics-metadata/labels-utils.ts +++ b/src/internal/analytics-metadata/labels-utils.ts @@ -1,9 +1,9 @@ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 -import { LABEL_DATA_ATTRIBUTE } from './attributes'; -import { findSelectorUp, findComponentUpUntil } from './dom-utils'; -import { LabelIdentifier, LabelSelectionMode } from './interfaces'; +import { LABEL_DATA_ATTRIBUTE } from './attributes.js'; +import { findSelectorUp, findComponentUpUntil } from './dom-utils.js'; +import { LabelIdentifier, LabelSelectionMode } from './interfaces.js'; export const processLabel = ( node: HTMLElement | null, diff --git a/src/internal/analytics-metadata/metadata-utils.ts b/src/internal/analytics-metadata/metadata-utils.ts index 81aa69e..08e7015 100644 --- a/src/internal/analytics-metadata/metadata-utils.ts +++ b/src/internal/analytics-metadata/metadata-utils.ts @@ -1,8 +1,8 @@ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 -import { GeneratedAnalyticsMetadataFragment } from './interfaces'; -import { processLabel } from './labels-utils'; +import { GeneratedAnalyticsMetadataFragment } from './interfaces.js'; +import { processLabel } from './labels-utils.js'; export const mergeMetadata = ( metadata: GeneratedAnalyticsMetadataFragment | null, diff --git a/src/internal/analytics-metadata/page-scanner-utils.ts b/src/internal/analytics-metadata/page-scanner-utils.ts index 743b1ab..065b9ab 100644 --- a/src/internal/analytics-metadata/page-scanner-utils.ts +++ b/src/internal/analytics-metadata/page-scanner-utils.ts @@ -1,9 +1,9 @@ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 -import { METADATA_ATTRIBUTE, REFERRER_ATTRIBUTE, REFERRER_DATA_ATTRIBUTE } from './attributes'; -import { findComponentUpUntil, isNodeComponent } from './dom-utils'; -import { getGeneratedAnalyticsMetadata } from './utils'; +import { METADATA_ATTRIBUTE, REFERRER_ATTRIBUTE, REFERRER_DATA_ATTRIBUTE } from './attributes.js'; +import { findComponentUpUntil, isNodeComponent } from './dom-utils.js'; +import { getGeneratedAnalyticsMetadata } from './utils.js'; interface GeneratedAnalyticsMetadataComponentTree { name: string; diff --git a/src/internal/analytics-metadata/testing-utils.ts b/src/internal/analytics-metadata/testing-utils.ts index 9409c34..590a3a2 100644 --- a/src/internal/analytics-metadata/testing-utils.ts +++ b/src/internal/analytics-metadata/testing-utils.ts @@ -1,9 +1,9 @@ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 -import { METADATA_DATA_ATTRIBUTE } from './attributes'; -import { GeneratedAnalyticsMetadataFragment, LabelIdentifier } from './interfaces'; -import { findLogicalParent } from './dom-utils'; +import { METADATA_DATA_ATTRIBUTE } from './attributes.js'; +import { GeneratedAnalyticsMetadataFragment, LabelIdentifier } from './interfaces.js'; +import { findLogicalParent } from './dom-utils.js'; interface RawAnalyticsMetadata { metadata: Array; diff --git a/src/internal/analytics-metadata/utils.ts b/src/internal/analytics-metadata/utils.ts index 3fbec90..b3db081 100644 --- a/src/internal/analytics-metadata/utils.ts +++ b/src/internal/analytics-metadata/utils.ts @@ -1,13 +1,13 @@ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 -export { getRawAnalyticsMetadata } from './testing-utils'; -export { getComponentsTree } from './page-scanner-utils'; +export { getRawAnalyticsMetadata } from './testing-utils.js'; +export { getComponentsTree } from './page-scanner-utils.js'; -import { METADATA_DATA_ATTRIBUTE } from './attributes'; -import { GeneratedAnalyticsMetadata, GeneratedAnalyticsMetadataFragment } from './interfaces'; -import { findLogicalParent } from './dom-utils'; -import { mergeMetadata, processMetadata } from './metadata-utils'; +import { METADATA_DATA_ATTRIBUTE } from './attributes.js'; +import { GeneratedAnalyticsMetadata, GeneratedAnalyticsMetadataFragment } from './interfaces.js'; +import { findLogicalParent } from './dom-utils.js'; +import { mergeMetadata, processMetadata } from './metadata-utils.js'; export const getGeneratedAnalyticsMetadata = (target: HTMLElement | null): GeneratedAnalyticsMetadata => { let metadata: GeneratedAnalyticsMetadataFragment = {}; diff --git a/src/internal/base-component/__tests__/metrics-init.ts b/src/internal/base-component/__tests__/metrics-init.ts index 1b689cd..a972b61 100644 --- a/src/internal/base-component/__tests__/metrics-init.ts +++ b/src/internal/base-component/__tests__/metrics-init.ts @@ -1,7 +1,7 @@ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 -import { Metrics } from '../metrics/metrics'; +import { Metrics } from '../metrics/metrics.js'; declare global { interface Window { diff --git a/src/internal/base-component/component-metadata.ts b/src/internal/base-component/component-metadata.ts index 70a83c8..0a79051 100644 --- a/src/internal/base-component/component-metadata.ts +++ b/src/internal/base-component/component-metadata.ts @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 import { useEffect, useRef } from 'react'; -import { AnalyticsMetadata } from './metrics/interfaces'; +import { AnalyticsMetadata } from './metrics/interfaces.js'; export const COMPONENT_METADATA_KEY = '__awsuiMetadata__'; diff --git a/src/internal/base-component/component-metrics.ts b/src/internal/base-component/component-metrics.ts index 0df3c66..4a584f4 100644 --- a/src/internal/base-component/component-metrics.ts +++ b/src/internal/base-component/component-metrics.ts @@ -2,8 +2,8 @@ // SPDX-License-Identifier: Apache-2.0 import { useEffect } from 'react'; -import { Metrics } from './metrics/metrics'; -import { ComponentConfiguration, PackageSettings } from './metrics/interfaces'; +import { Metrics } from './metrics/metrics.js'; +import { ComponentConfiguration, PackageSettings } from './metrics/interfaces.js'; export { ComponentConfiguration }; diff --git a/src/internal/base-component/metrics/formatters.ts b/src/internal/base-component/metrics/formatters.ts index 8c09c31..22171c3 100644 --- a/src/internal/base-component/metrics/formatters.ts +++ b/src/internal/base-component/metrics/formatters.ts @@ -1,7 +1,7 @@ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 -import { PackageSettings, ComponentMetricDetail, JSONObject } from './interfaces'; +import { PackageSettings, ComponentMetricDetail, JSONObject } from './interfaces.js'; declare const AWSUI_METRIC_ORIGIN: string | undefined; diff --git a/src/internal/base-component/metrics/metrics.ts b/src/internal/base-component/metrics/metrics.ts index 47ed3a6..f0993d9 100644 --- a/src/internal/base-component/metrics/metrics.ts +++ b/src/internal/base-component/metrics/metrics.ts @@ -1,9 +1,9 @@ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 -import { CLogClient, PanoramaClient, MetricsV2EventItem } from './log-clients'; -import { buildComponentMetricDetail, buildMetricDetail, getMajorVersion } from './formatters'; -import { ComponentConfiguration, ComponentMetricDetail, PackageSettings } from './interfaces'; +import { CLogClient, PanoramaClient, MetricsV2EventItem } from './log-clients.js'; +import { buildComponentMetricDetail, buildMetricDetail, getMajorVersion } from './formatters.js'; +import { ComponentConfiguration, ComponentMetricDetail, PackageSettings } from './interfaces.js'; const oneTimeMetrics = new Set(); diff --git a/src/internal/base-component/validate-props.ts b/src/internal/base-component/validate-props.ts index a1b32be..652e496 100644 --- a/src/internal/base-component/validate-props.ts +++ b/src/internal/base-component/validate-props.ts @@ -1,7 +1,7 @@ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 -import { isDevelopment } from '../is-development'; +import { isDevelopment } from '../is-development.js'; export function validateProps( componentName: string, diff --git a/src/internal/container-queries/use-resize-observer.ts b/src/internal/container-queries/use-resize-observer.ts index 4709178..ca69258 100644 --- a/src/internal/container-queries/use-resize-observer.ts +++ b/src/internal/container-queries/use-resize-observer.ts @@ -3,8 +3,8 @@ import { unstable_batchedUpdates } from 'react-dom'; import { useEffect, useLayoutEffect } from 'react'; -import { ContainerQueryEntry, ElementReference } from './interfaces'; -import { useStableCallback } from '../stable-callback'; +import { ContainerQueryEntry, ElementReference } from './interfaces.js'; +import { useStableCallback } from '../stable-callback/index.js'; /** * Attaches resize-observer to the referenced element. diff --git a/src/internal/focus-visible/index.ts b/src/internal/focus-visible/index.ts index 173d393..72b60bb 100644 --- a/src/internal/focus-visible/index.ts +++ b/src/internal/focus-visible/index.ts @@ -2,7 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 import React, { useEffect } from 'react'; -import { isModifierKey } from '../keycode'; +import { isModifierKey } from '../keycode.js'; const frames = new Map(); diff --git a/src/internal/index.ts b/src/internal/index.ts index ddb892c..d8d7436 100644 --- a/src/internal/index.ts +++ b/src/internal/index.ts @@ -1,22 +1,22 @@ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 -export { useComponentMetadata, COMPONENT_METADATA_KEY } from './base-component/component-metadata'; -export { useComponentMetrics, ComponentConfiguration } from './base-component/component-metrics'; -export { initAwsUiVersions } from './base-component/init-awsui-versions'; -export { useResizeObserver } from './container-queries/use-resize-observer'; -export { Metrics } from './metrics'; -export { createSingletonHandler, createSingletonState, UseSingleton } from './singleton-handler'; -export { useStableCallback } from './stable-callback'; +export { useComponentMetadata, COMPONENT_METADATA_KEY } from './base-component/component-metadata.js'; +export { useComponentMetrics, ComponentConfiguration } from './base-component/component-metrics.js'; +export { initAwsUiVersions } from './base-component/init-awsui-versions.js'; +export { useResizeObserver } from './container-queries/use-resize-observer.js'; +export { Metrics } from './metrics.js'; +export { createSingletonHandler, createSingletonState, UseSingleton } from './singleton-handler/index.js'; +export { useStableCallback } from './stable-callback/index.js'; export { isMotionDisabled, useCurrentMode, useDensityMode, useReducedMotion, useRuntimeVisualRefresh, -} from './visual-mode'; -export { isDevelopment } from './is-development'; -export { warnOnce, clearMessageCache } from './logging'; +} from './visual-mode/index.js'; +export { isDevelopment } from './is-development.js'; +export { warnOnce, clearMessageCache } from './logging.js'; export { getIsRtl, getOffsetInlineStart, @@ -24,22 +24,22 @@ export { getLogicalClientX, getLogicalBoundingClientRect, getLogicalPageX, -} from './direction'; -export { useFocusVisible } from './focus-visible'; -export { KeyCode, isModifierKey } from './keycode'; -export { getGlobalFlag } from './global-flags'; +} from './direction/index.js'; +export { useFocusVisible } from './focus-visible/index.js'; +export { KeyCode, isModifierKey } from './keycode.js'; +export { getGlobalFlag } from './global-flags/index.js'; export { SingleTabStopNavigationAPI, SingleTabStopNavigationProvider, SingleTabStopNavigationReset, useSingleTabStopNavigation, -} from './single-tab-stop'; -export { isFocusable, getAllFocusables, getFirstFocusable, getLastFocusable } from './focus-lock-utils/utils'; -export { default as handleKey } from './utils/handle-key'; -export { default as circleIndex } from './utils/circle-index'; -export { default as Portal, PortalProps } from './portal'; -export { useMergeRefs } from './use-merge-refs'; -export { useRandomId, useUniqueId } from './use-unique-id'; -export { validateProps } from './base-component/validate-props'; -export { TrackBy, getTrackableValue } from './track-by'; -export { SelectionTree, SelectionTreeProps, GroupSelectionState } from './selection-tree'; +} from './single-tab-stop/index.js'; +export { isFocusable, getAllFocusables, getFirstFocusable, getLastFocusable } from './focus-lock-utils/utils.js'; +export { default as handleKey } from './utils/handle-key.js'; +export { default as circleIndex } from './utils/circle-index.js'; +export { default as Portal, PortalProps } from './portal/index.js'; +export { useMergeRefs } from './use-merge-refs/index.js'; +export { useRandomId, useUniqueId } from './use-unique-id/index.js'; +export { validateProps } from './base-component/validate-props.js'; +export { TrackBy, getTrackableValue } from './track-by/index.js'; +export { SelectionTree, SelectionTreeProps, GroupSelectionState } from './selection-tree/index.js'; diff --git a/src/internal/locale/index.ts b/src/internal/locale/index.ts index 0fb2143..cc1c664 100644 --- a/src/internal/locale/index.ts +++ b/src/internal/locale/index.ts @@ -1,6 +1,6 @@ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 -export { mergeLocales } from './merge-locales'; -export { normalizeLocale } from './normalize-locale'; -export { DayIndex, normalizeStartOfWeek } from './normalize-start-of-week'; +export { mergeLocales } from './merge-locales.js'; +export { normalizeLocale } from './normalize-locale.js'; +export { DayIndex, normalizeStartOfWeek } from './normalize-start-of-week.js'; diff --git a/src/internal/locale/normalize-locale.ts b/src/internal/locale/normalize-locale.ts index ac131f5..d78eb03 100644 --- a/src/internal/locale/normalize-locale.ts +++ b/src/internal/locale/normalize-locale.ts @@ -1,9 +1,9 @@ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 -import { warnOnce } from '../logging'; +import { warnOnce } from '../logging.js'; -import { mergeLocales } from './merge-locales'; +import { mergeLocales } from './merge-locales.js'; export function normalizeLocale(component: string, locale: string | null): string { locale = checkLocale(component, locale); diff --git a/src/internal/logging.ts b/src/internal/logging.ts index 1f462a5..7fd6b6c 100644 --- a/src/internal/logging.ts +++ b/src/internal/logging.ts @@ -1,7 +1,7 @@ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 -import { isDevelopment } from './is-development'; +import { isDevelopment } from './is-development.js'; const messageCache = new Set(); diff --git a/src/internal/metrics.ts b/src/internal/metrics.ts index 156ceca..12f408a 100644 --- a/src/internal/metrics.ts +++ b/src/internal/metrics.ts @@ -1,4 +1,4 @@ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 -export { Metrics } from './base-component/metrics/metrics'; +export { Metrics } from './base-component/metrics/metrics.js'; diff --git a/src/internal/portal/index.tsx b/src/internal/portal/index.tsx index bc47c5c..1de7fbe 100644 --- a/src/internal/portal/index.tsx +++ b/src/internal/portal/index.tsx @@ -3,8 +3,8 @@ import React, { useLayoutEffect, useState } from 'react'; import { createPortal } from 'react-dom'; -import { isDevelopment } from '../is-development'; -import { warnOnce } from '../logging'; +import { isDevelopment } from '../is-development.js'; +import { warnOnce } from '../logging.js'; export interface PortalProps { container?: null | Element; diff --git a/src/internal/selection-tree/index.ts b/src/internal/selection-tree/index.ts index 7163037..fb8550f 100644 --- a/src/internal/selection-tree/index.ts +++ b/src/internal/selection-tree/index.ts @@ -1,7 +1,7 @@ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 -import { getTrackableValue, TrackBy } from '../track-by'; +import { getTrackableValue, TrackBy } from '../track-by/index.js'; const ROOT_KEY = Symbol('selection-tree-root'); diff --git a/src/internal/single-tab-stop/index.tsx b/src/internal/single-tab-stop/index.tsx index a855c45..a2d17c6 100644 --- a/src/internal/single-tab-stop/index.tsx +++ b/src/internal/single-tab-stop/index.tsx @@ -1,6 +1,7 @@ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 +'use client'; import React, { createContext, forwardRef, @@ -11,8 +12,8 @@ import React, { useState, } from 'react'; -import { useEffectOnUpdate } from '../use-effect-on-update'; -import nodeBelongs from '../../dom/node-belongs'; +import { useEffectOnUpdate } from '../use-effect-on-update/index.js'; +import nodeBelongs from '../../dom/node-belongs.js'; export type FocusableChangeHandler = (isFocusable: boolean) => void; diff --git a/src/internal/single-tab-stop/test-helpers/index.tsx b/src/internal/single-tab-stop/test-helpers/index.tsx index 046be03..33c5944 100644 --- a/src/internal/single-tab-stop/test-helpers/index.tsx +++ b/src/internal/single-tab-stop/test-helpers/index.tsx @@ -3,8 +3,8 @@ import React, { useCallback, useEffect, useRef } from 'react'; -import { FocusableChangeHandler, SingleTabStopNavigationContext } from '../'; -import { useUniqueId } from '../../use-unique-id'; +import { FocusableChangeHandler, SingleTabStopNavigationContext } from '../index.js'; +import { useUniqueId } from '../../use-unique-id/index.js'; type SetTarget = (focusTarget: null | Element, suppressed?: (null | Element)[]) => void; diff --git a/src/internal/testing.ts b/src/internal/testing.ts index d3b2454..12af494 100644 --- a/src/internal/testing.ts +++ b/src/internal/testing.ts @@ -1,11 +1,11 @@ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 -export { clearOneTimeMetricsCache } from './base-component/metrics/metrics'; -export { clearMessageCache } from './logging'; -export { setGlobalFlag } from './global-flags'; -export { clearVisualRefreshState } from './visual-mode'; +export { clearOneTimeMetricsCache } from './base-component/metrics/metrics.js'; +export { clearMessageCache } from './logging.js'; +export { setGlobalFlag } from './global-flags/index.js'; +export { clearVisualRefreshState } from './visual-mode/index.js'; export { TestSingleTabStopNavigationProvider, setTestSingleTabStopNavigationTarget, -} from './single-tab-stop/test-helpers'; +} from './single-tab-stop/test-helpers/index.js'; diff --git a/src/internal/use-mobile/_tests__/use-mobile.test.tsx b/src/internal/use-mobile/_tests__/use-mobile.test.tsx index dc087be..98d55eb 100644 --- a/src/internal/use-mobile/_tests__/use-mobile.test.tsx +++ b/src/internal/use-mobile/_tests__/use-mobile.test.tsx @@ -4,6 +4,7 @@ import React, { useRef } from 'react'; import { act, render } from '@testing-library/react'; +// eslint-disable-next-line import/extensions import { useMobile } from '../index'; function Demo() { diff --git a/src/internal/use-mobile/index.ts b/src/internal/use-mobile/index.ts index 92ba85a..02b28e0 100644 --- a/src/internal/use-mobile/index.ts +++ b/src/internal/use-mobile/index.ts @@ -1,10 +1,10 @@ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 -import { createSingletonState } from '../singleton-handler'; +import { createSingletonState } from '../singleton-handler/index.js'; -import { mobileBreakpoint } from '../breakpoints'; -import { safeMatchMedia } from '../utils/safe-match-media'; +import { mobileBreakpoint } from '../breakpoints.js'; +import { safeMatchMedia } from '../utils/safe-match-media.js'; export const forceMobileModeSymbol = Symbol.for('awsui-force-mobile-mode'); diff --git a/src/internal/utils/handle-key.ts b/src/internal/utils/handle-key.ts index 3d438fc..3e5b91d 100644 --- a/src/internal/utils/handle-key.ts +++ b/src/internal/utils/handle-key.ts @@ -1,10 +1,10 @@ // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 -import { getIsRtl } from '../direction'; +import { getIsRtl } from '../direction/index.js'; -import { KeyCode } from '../keycode'; -import { isHTMLElement, isSVGElement } from '../../dom/element-types'; +import { KeyCode } from '../keycode.js'; +import { isHTMLElement, isSVGElement } from '../../dom/element-types.js'; export function isEventLike(event: any): event is EventLike { return isHTMLElement(event.currentTarget) || isSVGElement(event.currentTarget); diff --git a/src/internal/visual-mode/index.ts b/src/internal/visual-mode/index.ts index 5b37f22..0d0438c 100644 --- a/src/internal/visual-mode/index.ts +++ b/src/internal/visual-mode/index.ts @@ -2,13 +2,13 @@ // SPDX-License-Identifier: Apache-2.0 import React, { useEffect, useState } from 'react'; -import { findUpUntil } from '../../dom'; -import { createSingletonHandler } from '../singleton-handler'; -import { useStableCallback } from '../stable-callback'; -import { isDevelopment } from '../is-development'; -import { warnOnce } from '../logging'; -import { awsuiVisualRefreshFlag, getGlobal } from '../global-flags'; -import { safeMatchMedia } from '../utils/safe-match-media'; +import { findUpUntil } from '../../dom/index.js'; +import { createSingletonHandler } from '../singleton-handler/index.js'; +import { useStableCallback } from '../stable-callback/index.js'; +import { isDevelopment } from '../is-development.js'; +import { warnOnce } from '../logging.js'; +import { awsuiVisualRefreshFlag, getGlobal } from '../global-flags/index.js'; +import { safeMatchMedia } from '../utils/safe-match-media.js'; export function isMotionDisabled(element: HTMLElement): boolean { return ( diff --git a/src/use-controllable-state/use-controllable-state.ts b/src/use-controllable-state/use-controllable-state.ts index 0cc7236..bb59bd2 100644 --- a/src/use-controllable-state/use-controllable-state.ts +++ b/src/use-controllable-state/use-controllable-state.ts @@ -2,10 +2,10 @@ // SPDX-License-Identifier: Apache-2.0 import { useState, useEffect, useCallback } from 'react'; -import { useStableCallback } from '../internal/stable-callback'; -import { isDevelopment } from '../internal/is-development'; -import { warnOnce } from '../internal/logging'; -import { PropertyDescriptions } from './interfaces'; +import { useStableCallback } from '../internal/stable-callback/index.js'; +import { isDevelopment } from '../internal/is-development.js'; +import { warnOnce } from '../internal/logging.js'; +import { PropertyDescriptions } from './interfaces.js'; /** * This hook allows you to make a component that can be used both in controlled diff --git a/tsconfig.cjs.json b/tsconfig.cjs.json new file mode 100644 index 0000000..1d890e9 --- /dev/null +++ b/tsconfig.cjs.json @@ -0,0 +1,7 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "module": "CommonJS", + "outDir": "lib" + } +} diff --git a/tsconfig.json b/tsconfig.json index 46ef802..d1c2326 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -10,7 +10,7 @@ "declaration": true, "jsx": "react", "rootDir": "src", - "outDir": "lib" + "outDir": "lib/mjs" }, "include": ["src"], "exclude": ["**/__tests__/**", "**/__integ__/**"] diff --git a/tsconfig.unit.json b/tsconfig.unit.json index 7ab1b8b..08dac40 100644 --- a/tsconfig.unit.json +++ b/tsconfig.unit.json @@ -1,13 +1,8 @@ { + "extends": "./tsconfig.json", "compilerOptions": { - "target": "es2018", - "lib": ["es2018", "dom"], "types": ["node", "jest", "@testing-library/jest-dom"], - "moduleResolution": "node", "downlevelIteration": true, - "esModuleInterop": true, - "strict": true, - "jsx": "react", "noEmit": true, "resolveJsonModule": true },