css-calipers 0.9.3 โ 0.9.4
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/README.md +100 -0
- package/dist/cjs/comparisons/index.js +25 -0
- package/dist/cjs/containerQueries/containerQueries.js +115 -0
- package/dist/cjs/containerQueries/factory.js +123 -0
- package/dist/cjs/containerQueries/helpers.js +95 -0
- package/dist/cjs/containerQueries/index.js +16 -0
- package/dist/cjs/containerQueries/linting/aspectRatio.js +24 -0
- package/dist/cjs/containerQueries/linting/block.js +23 -0
- package/dist/cjs/containerQueries/linting/core.js +25 -0
- package/dist/cjs/containerQueries/linting/custom.js +11 -0
- package/dist/cjs/containerQueries/linting/inline.js +23 -0
- package/dist/cjs/containerQueries/linting/resolution.js +12 -0
- package/dist/cjs/containerQueries/linting/style.js +28 -0
- package/dist/cjs/containerQueries/linting.js +24 -0
- package/dist/cjs/containerQueries/moduleRegistry.js +5 -0
- package/dist/cjs/containerQueries/modules/aspectRatio.js +51 -0
- package/dist/cjs/containerQueries/modules/block.js +53 -0
- package/dist/cjs/containerQueries/modules/custom.js +43 -0
- package/dist/cjs/containerQueries/modules/index.js +21 -0
- package/dist/cjs/containerQueries/modules/inline.js +53 -0
- package/dist/cjs/containerQueries/modules/size.js +2 -0
- package/dist/cjs/containerQueries/modules/style.js +36 -0
- package/dist/cjs/containerQueries/types.js +2 -0
- package/dist/cjs/containerQueries/validation.js +191 -0
- package/dist/cjs/core.js +5 -278
- package/dist/cjs/factory.js +21 -0
- package/dist/cjs/fraction.js +139 -0
- package/dist/cjs/internal/buildMeasurementCreationError.js +16 -0
- package/dist/cjs/internal/buildMeasurementCreationError.tests.js +5 -0
- package/dist/cjs/internal/createComponentQueriesApi.js +56 -0
- package/dist/cjs/internal/createCoreApi.js +336 -0
- package/dist/cjs/internal/createMediaQueriesApi.js +74 -0
- package/dist/cjs/internal/createUnitsApi.js +18 -0
- package/dist/cjs/internal/errors.js +118 -5
- package/dist/cjs/internal/normalizeToArray.js +9 -0
- package/dist/cjs/libraryHelpers/vanilla-extract.js +6 -2
- package/dist/cjs/logicalOperators/index.js +18 -0
- package/dist/cjs/mediaQueries/factory.js +5 -4
- package/dist/cjs/mediaQueries/mediaQueries.js +7 -5
- package/dist/cjs/mediaQueries/modules/dimensions.js +10 -8
- package/dist/cjs/mediaQueries/modules/resolution.js +6 -4
- package/dist/cjs/mediaQueries/validation.js +128 -116
- package/dist/cjs/ratio.js +141 -0
- package/dist/cjs/types.js +2 -0
- package/dist/cjs/validation.js +20 -0
- package/dist/esm/comparisons/index.d.ts +23 -0
- package/dist/esm/comparisons/index.d.ts.map +1 -0
- package/dist/esm/comparisons/index.js +22 -0
- package/dist/esm/containerQueries/containerQueries.d.ts +36 -0
- package/dist/esm/containerQueries/containerQueries.d.ts.map +1 -0
- package/dist/esm/containerQueries/containerQueries.js +109 -0
- package/dist/esm/containerQueries/factory.d.ts +20 -0
- package/dist/esm/containerQueries/factory.d.ts.map +1 -0
- package/dist/esm/containerQueries/factory.js +119 -0
- package/dist/esm/containerQueries/helpers.d.ts +53 -0
- package/dist/esm/containerQueries/helpers.d.ts.map +1 -0
- package/dist/esm/containerQueries/helpers.js +82 -0
- package/dist/esm/containerQueries/index.d.ts +10 -0
- package/dist/esm/containerQueries/index.d.ts.map +1 -0
- package/dist/esm/containerQueries/index.js +4 -0
- package/dist/esm/containerQueries/linting/aspectRatio.d.ts +4 -0
- package/dist/esm/containerQueries/linting/aspectRatio.d.ts.map +1 -0
- package/dist/esm/containerQueries/linting/aspectRatio.js +19 -0
- package/dist/esm/containerQueries/linting/block.d.ts +4 -0
- package/dist/esm/containerQueries/linting/block.d.ts.map +1 -0
- package/dist/esm/containerQueries/linting/block.js +18 -0
- package/dist/esm/containerQueries/linting/core.d.ts +4 -0
- package/dist/esm/containerQueries/linting/core.d.ts.map +1 -0
- package/dist/esm/containerQueries/linting/core.js +20 -0
- package/dist/esm/containerQueries/linting/custom.d.ts +3 -0
- package/dist/esm/containerQueries/linting/custom.d.ts.map +1 -0
- package/dist/esm/containerQueries/linting/custom.js +7 -0
- package/dist/esm/containerQueries/linting/inline.d.ts +4 -0
- package/dist/esm/containerQueries/linting/inline.d.ts.map +1 -0
- package/dist/esm/containerQueries/linting/inline.js +18 -0
- package/dist/esm/containerQueries/linting/resolution.d.ts +1 -0
- package/dist/esm/containerQueries/linting/resolution.d.ts.map +1 -0
- package/dist/esm/containerQueries/linting/resolution.js +12 -0
- package/dist/esm/containerQueries/linting/style.d.ts +3 -0
- package/dist/esm/containerQueries/linting/style.d.ts.map +1 -0
- package/dist/esm/containerQueries/linting/style.js +24 -0
- package/dist/esm/containerQueries/linting.d.ts +4 -0
- package/dist/esm/containerQueries/linting.d.ts.map +1 -0
- package/dist/esm/containerQueries/linting.js +20 -0
- package/dist/esm/containerQueries/moduleRegistry.d.ts +25 -0
- package/dist/esm/containerQueries/moduleRegistry.d.ts.map +1 -0
- package/dist/esm/containerQueries/moduleRegistry.js +1 -0
- package/dist/esm/containerQueries/modules/aspectRatio.d.ts +17 -0
- package/dist/esm/containerQueries/modules/aspectRatio.d.ts.map +1 -0
- package/dist/esm/containerQueries/modules/aspectRatio.js +47 -0
- package/dist/esm/containerQueries/modules/block.d.ts +20 -0
- package/dist/esm/containerQueries/modules/block.d.ts.map +1 -0
- package/dist/esm/containerQueries/modules/block.js +49 -0
- package/dist/esm/containerQueries/modules/custom.d.ts +13 -0
- package/dist/esm/containerQueries/modules/custom.d.ts.map +1 -0
- package/dist/esm/containerQueries/modules/custom.js +39 -0
- package/dist/esm/containerQueries/modules/index.d.ts +6 -0
- package/dist/esm/containerQueries/modules/index.d.ts.map +1 -0
- package/dist/esm/containerQueries/modules/index.js +5 -0
- package/dist/esm/containerQueries/modules/inline.d.ts +20 -0
- package/dist/esm/containerQueries/modules/inline.d.ts.map +1 -0
- package/dist/esm/containerQueries/modules/inline.js +49 -0
- package/dist/esm/containerQueries/modules/size.d.ts +41 -0
- package/dist/esm/containerQueries/modules/size.d.ts.map +1 -0
- package/dist/esm/containerQueries/modules/size.js +1 -0
- package/dist/esm/containerQueries/modules/style.d.ts +11 -0
- package/dist/esm/containerQueries/modules/style.d.ts.map +1 -0
- package/dist/esm/containerQueries/modules/style.js +32 -0
- package/dist/esm/containerQueries/types.d.ts +81 -0
- package/dist/esm/containerQueries/types.d.ts.map +1 -0
- package/dist/esm/containerQueries/types.js +1 -0
- package/dist/esm/containerQueries/validation.d.ts +41 -0
- package/dist/esm/containerQueries/validation.d.ts.map +1 -0
- package/dist/esm/containerQueries/validation.js +187 -0
- package/dist/esm/core.d.ts +27 -26
- package/dist/esm/core.d.ts.map +1 -1
- package/dist/esm/core.js +5 -266
- package/dist/esm/factory.d.ts +13 -0
- package/dist/esm/factory.d.ts.map +1 -0
- package/dist/esm/factory.js +17 -0
- package/dist/esm/fraction.d.ts +23 -0
- package/dist/esm/fraction.d.ts.map +1 -0
- package/dist/esm/fraction.js +129 -0
- package/dist/esm/internal/buildMeasurementCreationError.d.ts +12 -0
- package/dist/esm/internal/buildMeasurementCreationError.d.ts.map +1 -0
- package/dist/esm/internal/buildMeasurementCreationError.js +12 -0
- package/dist/esm/internal/buildMeasurementCreationError.tests.d.ts +3 -0
- package/dist/esm/internal/buildMeasurementCreationError.tests.d.ts.map +1 -0
- package/dist/esm/internal/buildMeasurementCreationError.tests.js +1 -0
- package/dist/esm/internal/createComponentQueriesApi.d.ts +34 -0
- package/dist/esm/internal/createComponentQueriesApi.d.ts.map +1 -0
- package/dist/esm/internal/createComponentQueriesApi.js +52 -0
- package/dist/esm/internal/createCoreApi.d.ts +289 -0
- package/dist/esm/internal/createCoreApi.d.ts.map +1 -0
- package/dist/esm/internal/createCoreApi.js +332 -0
- package/dist/esm/internal/createMediaQueriesApi.d.ts +35 -0
- package/dist/esm/internal/createMediaQueriesApi.d.ts.map +1 -0
- package/dist/esm/internal/createMediaQueriesApi.js +70 -0
- package/dist/esm/internal/createUnitsApi.d.ts +13 -0
- package/dist/esm/internal/createUnitsApi.d.ts.map +1 -0
- package/dist/esm/internal/createUnitsApi.js +14 -0
- package/dist/esm/internal/errors.d.ts +30 -0
- package/dist/esm/internal/errors.d.ts.map +1 -1
- package/dist/esm/internal/errors.js +113 -4
- package/dist/esm/internal/normalizeToArray.d.ts +2 -0
- package/dist/esm/internal/normalizeToArray.d.ts.map +1 -0
- package/dist/esm/internal/normalizeToArray.js +5 -0
- package/dist/esm/libraryHelpers/vanilla-extract.d.ts +2 -1
- package/dist/esm/libraryHelpers/vanilla-extract.d.ts.map +1 -1
- package/dist/esm/libraryHelpers/vanilla-extract.js +4 -1
- package/dist/esm/logicalOperators/index.d.ts +2 -0
- package/dist/esm/logicalOperators/index.d.ts.map +1 -0
- package/dist/esm/logicalOperators/index.js +17 -0
- package/dist/esm/mediaQueries/factory.d.ts +16 -1
- package/dist/esm/mediaQueries/factory.d.ts.map +1 -1
- package/dist/esm/mediaQueries/factory.js +3 -2
- package/dist/esm/mediaQueries/libraryHelpers/vanilla-extract.d.ts +2 -2
- package/dist/esm/mediaQueries/libraryHelpers/vanilla-extract.d.ts.map +1 -1
- package/dist/esm/mediaQueries/mediaQueries.d.ts +2 -0
- package/dist/esm/mediaQueries/mediaQueries.d.ts.map +1 -1
- package/dist/esm/mediaQueries/mediaQueries.js +4 -2
- package/dist/esm/mediaQueries/modules/dimensions.d.ts +2 -0
- package/dist/esm/mediaQueries/modules/dimensions.d.ts.map +1 -1
- package/dist/esm/mediaQueries/modules/dimensions.js +4 -2
- package/dist/esm/mediaQueries/modules/resolution.d.ts +2 -0
- package/dist/esm/mediaQueries/modules/resolution.d.ts.map +1 -1
- package/dist/esm/mediaQueries/modules/resolution.js +4 -2
- package/dist/esm/mediaQueries/validation.d.ts +28 -8
- package/dist/esm/mediaQueries/validation.d.ts.map +1 -1
- package/dist/esm/mediaQueries/validation.js +126 -107
- package/dist/esm/ratio.d.ts +22 -0
- package/dist/esm/ratio.d.ts.map +1 -0
- package/dist/esm/ratio.js +131 -0
- package/dist/esm/types.d.ts +35 -0
- package/dist/esm/types.d.ts.map +1 -0
- package/dist/esm/types.js +1 -0
- package/dist/esm/validation.d.ts +10 -0
- package/dist/esm/validation.d.ts.map +1 -0
- package/dist/esm/validation.js +15 -0
- package/dist/examples/containerQueries.example.js +54 -0
- package/dist/examples/examples/containerQueries.example.js +54 -0
- package/dist/examples/examples/factory-wrapper.example.js +33 -0
- package/dist/examples/examples/lineHeight-normalizer.example.js +81 -0
- package/dist/examples/examples/mediaQueries-multipleInstances.example.js +127 -0
- package/dist/examples/examples/mixedQueries.example.js +55 -0
- package/dist/examples/examples/validation-and-runtime-checks.example.js +85 -0
- package/dist/examples/examples/validation-unit-tests.example.js +35 -0
- package/dist/examples/factory-wrapper.example.js +33 -0
- package/dist/examples/lineHeight-normalizer.example.js +81 -0
- package/dist/examples/mediaQueries-multipleInstances.example.js +127 -0
- package/dist/examples/mixedQueries.example.js +60 -0
- package/dist/examples/src/comparisons/index.js +25 -0
- package/dist/examples/src/containerQueries/containerQueries.js +96 -0
- package/dist/examples/src/containerQueries/factory.js +123 -0
- package/dist/examples/src/containerQueries/helpers.js +94 -0
- package/dist/examples/src/containerQueries/index.js +16 -0
- package/dist/examples/src/containerQueries/linting/aspectRatio.js +20 -0
- package/dist/examples/src/containerQueries/linting/block.js +20 -0
- package/dist/examples/src/containerQueries/linting/core.js +19 -0
- package/dist/examples/src/containerQueries/linting/custom.js +11 -0
- package/dist/examples/src/containerQueries/linting/inline.js +20 -0
- package/dist/examples/src/containerQueries/linting/style.js +28 -0
- package/dist/examples/src/containerQueries/linting.js +24 -0
- package/dist/examples/src/containerQueries/moduleRegistry.js +5 -0
- package/dist/examples/src/containerQueries/modules/aspectRatio.js +33 -0
- package/dist/examples/src/containerQueries/modules/block.js +44 -0
- package/dist/examples/src/containerQueries/modules/custom.js +31 -0
- package/dist/examples/src/containerQueries/modules/index.js +21 -0
- package/dist/examples/src/containerQueries/modules/inline.js +44 -0
- package/dist/examples/src/containerQueries/modules/style.js +36 -0
- package/dist/examples/src/containerQueries/types.js +2 -0
- package/dist/examples/src/containerQueries/validation.js +177 -0
- package/dist/examples/src/core.js +16 -0
- package/dist/examples/src/factory.js +21 -0
- package/dist/examples/src/index.js +30 -0
- package/dist/examples/src/internal/buildMeasurementCreationError.js +16 -0
- package/dist/examples/src/internal/createCoreApi.js +336 -0
- package/dist/examples/src/internal/createMediaQueriesApi.js +74 -0
- package/dist/examples/src/internal/createUnitsApi.js +18 -0
- package/dist/examples/src/internal/errors.js +130 -0
- package/dist/examples/src/libraryHelpers/vanilla-extract.js +11 -0
- package/dist/examples/src/mediaQueries/factory.js +163 -0
- package/dist/examples/src/mediaQueries/helpers.js +88 -0
- package/dist/examples/src/mediaQueries/index.js +23 -0
- package/dist/examples/src/mediaQueries/linting/core.js +19 -0
- package/dist/examples/src/mediaQueries/linting/resolution.js +11 -0
- package/dist/examples/src/mediaQueries/linting.js +24 -0
- package/dist/examples/src/mediaQueries/mediaQueries.js +53 -0
- package/dist/examples/src/mediaQueries/moduleRegistry.js +5 -0
- package/dist/examples/src/mediaQueries/modules/custom.js +26 -0
- package/dist/examples/src/mediaQueries/modules/dimensions.js +61 -0
- package/dist/examples/src/mediaQueries/modules/display.js +20 -0
- package/dist/examples/src/mediaQueries/modules/environment.js +20 -0
- package/dist/examples/src/mediaQueries/modules/index.js +23 -0
- package/dist/examples/src/mediaQueries/modules/interaction.js +26 -0
- package/dist/examples/src/mediaQueries/modules/preferences.js +26 -0
- package/dist/examples/src/mediaQueries/modules/resolution.js +31 -0
- package/dist/examples/src/mediaQueries/types.js +2 -0
- package/dist/examples/src/mediaQueries/validation.js +128 -0
- package/dist/examples/src/ratio.js +141 -0
- package/dist/examples/src/types.js +2 -0
- package/dist/examples/src/unitDefinitions.js +67 -0
- package/dist/examples/src/units/absolute.js +11 -0
- package/dist/examples/src/units/angle.js +8 -0
- package/dist/examples/src/units/container.js +10 -0
- package/dist/examples/src/units/font-relative.js +16 -0
- package/dist/examples/src/units/frequency.js +6 -0
- package/dist/examples/src/units/grid.js +5 -0
- package/dist/examples/src/units/percent.js +7 -0
- package/dist/examples/src/units/resolution.js +7 -0
- package/dist/examples/src/units/time.js +6 -0
- package/dist/examples/src/units/viewport-dynamic.js +10 -0
- package/dist/examples/src/units/viewport-large.js +10 -0
- package/dist/examples/src/units/viewport-small.js +10 -0
- package/dist/examples/src/units/viewport.js +10 -0
- package/dist/examples/src/validation.js +20 -0
- package/dist/examples/validation-and-runtime-checks.example.js +85 -0
- package/dist/examples/validation-unit-tests.example.js +35 -0
- package/package.json +16 -5
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mDvmax = exports.mDvmin = exports.mDvb = exports.mDvi = exports.mDvh = exports.mDvw = void 0;
|
|
4
|
+
const core_1 = require("../core");
|
|
5
|
+
exports.mDvw = (0, core_1.makeUnitHelperFromDefinition)('mDvw');
|
|
6
|
+
exports.mDvh = (0, core_1.makeUnitHelperFromDefinition)('mDvh');
|
|
7
|
+
exports.mDvi = (0, core_1.makeUnitHelperFromDefinition)('mDvi');
|
|
8
|
+
exports.mDvb = (0, core_1.makeUnitHelperFromDefinition)('mDvb');
|
|
9
|
+
exports.mDvmin = (0, core_1.makeUnitHelperFromDefinition)('mDvmin');
|
|
10
|
+
exports.mDvmax = (0, core_1.makeUnitHelperFromDefinition)('mDvmax');
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mLvmax = exports.mLvmin = exports.mLvb = exports.mLvi = exports.mLvh = exports.mLvw = void 0;
|
|
4
|
+
const core_1 = require("../core");
|
|
5
|
+
exports.mLvw = (0, core_1.makeUnitHelperFromDefinition)('mLvw');
|
|
6
|
+
exports.mLvh = (0, core_1.makeUnitHelperFromDefinition)('mLvh');
|
|
7
|
+
exports.mLvi = (0, core_1.makeUnitHelperFromDefinition)('mLvi');
|
|
8
|
+
exports.mLvb = (0, core_1.makeUnitHelperFromDefinition)('mLvb');
|
|
9
|
+
exports.mLvmin = (0, core_1.makeUnitHelperFromDefinition)('mLvmin');
|
|
10
|
+
exports.mLvmax = (0, core_1.makeUnitHelperFromDefinition)('mLvmax');
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mSvmax = exports.mSvmin = exports.mSvb = exports.mSvi = exports.mSvh = exports.mSvw = void 0;
|
|
4
|
+
const core_1 = require("../core");
|
|
5
|
+
exports.mSvw = (0, core_1.makeUnitHelperFromDefinition)('mSvw');
|
|
6
|
+
exports.mSvh = (0, core_1.makeUnitHelperFromDefinition)('mSvh');
|
|
7
|
+
exports.mSvi = (0, core_1.makeUnitHelperFromDefinition)('mSvi');
|
|
8
|
+
exports.mSvb = (0, core_1.makeUnitHelperFromDefinition)('mSvb');
|
|
9
|
+
exports.mSvmin = (0, core_1.makeUnitHelperFromDefinition)('mSvmin');
|
|
10
|
+
exports.mSvmax = (0, core_1.makeUnitHelperFromDefinition)('mSvmax');
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mVmax = exports.mVmin = exports.mVb = exports.mVi = exports.mVh = exports.mVw = void 0;
|
|
4
|
+
const core_1 = require("../core");
|
|
5
|
+
exports.mVw = (0, core_1.makeUnitHelperFromDefinition)('mVw');
|
|
6
|
+
exports.mVh = (0, core_1.makeUnitHelperFromDefinition)('mVh');
|
|
7
|
+
exports.mVi = (0, core_1.makeUnitHelperFromDefinition)('mVi');
|
|
8
|
+
exports.mVb = (0, core_1.makeUnitHelperFromDefinition)('mVb');
|
|
9
|
+
exports.mVmin = (0, core_1.makeUnitHelperFromDefinition)('mVmin');
|
|
10
|
+
exports.mVmax = (0, core_1.makeUnitHelperFromDefinition)('mVmax');
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.toValidationResult = exports.normalizeValidationResult = void 0;
|
|
4
|
+
const normalizeValidationResult = (result) => {
|
|
5
|
+
if (result === undefined || result === null)
|
|
6
|
+
return { valid: true };
|
|
7
|
+
if (typeof result === "boolean")
|
|
8
|
+
return { valid: result };
|
|
9
|
+
if (typeof result === "string") {
|
|
10
|
+
return result ? { valid: false, message: result } : { valid: true };
|
|
11
|
+
}
|
|
12
|
+
return result;
|
|
13
|
+
};
|
|
14
|
+
exports.normalizeValidationResult = normalizeValidationResult;
|
|
15
|
+
const toValidationResult = (error, fallback) => {
|
|
16
|
+
if (error instanceof Error && error.message)
|
|
17
|
+
return error.message;
|
|
18
|
+
return fallback;
|
|
19
|
+
};
|
|
20
|
+
exports.toValidationResult = toValidationResult;
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Example-only file.
|
|
4
|
+
*
|
|
5
|
+
* Not part of the public API surface or published bundle. This sketch shows
|
|
6
|
+
* how css-calipers can participate in dev-only validation around design
|
|
7
|
+
* tokens or configuration values inside style helpers or components. The
|
|
8
|
+
* helpers here are framework-agnostic; imagine them being called from React,
|
|
9
|
+
* a template system, or a Node script.
|
|
10
|
+
*
|
|
11
|
+
* The same `bodyLineHeight` token is used in two different places:
|
|
12
|
+
* - an icon + label row that returns a small HTML snippet and enforces
|
|
13
|
+
* "icon must not exceed line-height"
|
|
14
|
+
* - a table-of-contents heading row that returns a style object and enforces
|
|
15
|
+
* row height and body line-height invariants for readability
|
|
16
|
+
*
|
|
17
|
+
* See the sibling unit test example for how to assert related invariants in a unit test.
|
|
18
|
+
*
|
|
19
|
+
*/
|
|
20
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
21
|
+
exports.buildTocHeadingStyles = exports.renderIconWithLabelHtml = void 0;
|
|
22
|
+
const css_calipers_1 = require("css-calipers");
|
|
23
|
+
// Pretend these tokens come from a design token file or configuration layer.
|
|
24
|
+
// Two different components will enforce different invariants against the same
|
|
25
|
+
// underlying line-height measurement.
|
|
26
|
+
const bodyLineHeight = (0, css_calipers_1.m)(1.4, "rem");
|
|
27
|
+
const iconTokenSize = (0, css_calipers_1.m)(1.2, "rem");
|
|
28
|
+
const tocHeadingRowHeightToken = (0, css_calipers_1.m)(2, "rem");
|
|
29
|
+
// An icon+label row where you don't want the icon to visually dominate the
|
|
30
|
+
// text. In development, assert that the icon's size does not exceed the
|
|
31
|
+
// line-height it sits next to. Here we return a small HTML snippet to
|
|
32
|
+
// illustrate string-based consumers.
|
|
33
|
+
const renderIconWithLabelHtml = (labelText) => {
|
|
34
|
+
const iconSize = iconTokenSize;
|
|
35
|
+
if (process.env.NODE_ENV !== "production") {
|
|
36
|
+
// Make sure both measurements use the same unit family before comparing.
|
|
37
|
+
(0, css_calipers_1.assertMatchingUnits)(iconSize, bodyLineHeight, "iconWithLabel: icon and line-height units must match");
|
|
38
|
+
if (iconSize.getValue() > bodyLineHeight.getValue()) {
|
|
39
|
+
throw new Error(`iconWithLabel: icon must not exceed line-height; ` +
|
|
40
|
+
`iconSize=${iconSize.css()}, bodyLineHeight=${bodyLineHeight.css()}`);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
const iconStyle = `width:${iconSize.css()};height:${iconSize.css()};`;
|
|
44
|
+
const labelStyle = `line-height:${bodyLineHeight.css()};`;
|
|
45
|
+
return `
|
|
46
|
+
<span class="row">
|
|
47
|
+
<span class="icon" style="${iconStyle}"/>
|
|
48
|
+
<span class="label" style="${labelStyle}">${labelText}</span>
|
|
49
|
+
</span>`;
|
|
50
|
+
};
|
|
51
|
+
exports.renderIconWithLabelHtml = renderIconWithLabelHtml;
|
|
52
|
+
// A table-of-contents row where H2 entries should remain readable and aligned
|
|
53
|
+
// with the typography system. In development, enforce a minimum line-height
|
|
54
|
+
// and require that the H2 row height is at least the underlying line-height.
|
|
55
|
+
const buildTocHeadingStyles = () => {
|
|
56
|
+
const tocHeadingRowHeight = tocHeadingRowHeightToken;
|
|
57
|
+
if (process.env.NODE_ENV !== "production") {
|
|
58
|
+
// Require body line-height to stay within a reasonable range for body
|
|
59
|
+
// text, using the same measurement token.
|
|
60
|
+
const minBodyLineHeight = (0, css_calipers_1.m)(1.2, "rem");
|
|
61
|
+
const maxBodyLineHeight = (0, css_calipers_1.m)(1.8, "rem");
|
|
62
|
+
const bodyValue = bodyLineHeight.getValue();
|
|
63
|
+
if (!(bodyValue >= minBodyLineHeight.getValue() &&
|
|
64
|
+
bodyValue <= maxBodyLineHeight.getValue())) {
|
|
65
|
+
throw new Error(`tocHeading: body line-height out of range; ` +
|
|
66
|
+
`${bodyLineHeight.css()} (expected between ` +
|
|
67
|
+
`${minBodyLineHeight.css()} and ${maxBodyLineHeight.css()})`);
|
|
68
|
+
}
|
|
69
|
+
// Row height should not be smaller than the line-height it uses.
|
|
70
|
+
(0, css_calipers_1.assertMatchingUnits)(tocHeadingRowHeight, bodyLineHeight, "tocHeading: row height and line-height units must match");
|
|
71
|
+
if (tocHeadingRowHeight.getValue() < bodyLineHeight.getValue()) {
|
|
72
|
+
throw new Error(`tocHeading: row height must be >= line-height; ` +
|
|
73
|
+
`row=${tocHeadingRowHeight.css()}, bodyLineHeight=${bodyLineHeight.css()}`);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
// In real code these would be component or style objects. Here we just show
|
|
77
|
+
// that measurement values flow through `.css()` into plain style shapes.
|
|
78
|
+
return {
|
|
79
|
+
row: {
|
|
80
|
+
minHeight: tocHeadingRowHeight.css(),
|
|
81
|
+
lineHeight: bodyLineHeight.css(),
|
|
82
|
+
},
|
|
83
|
+
};
|
|
84
|
+
};
|
|
85
|
+
exports.buildTocHeadingStyles = buildTocHeadingStyles;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Example-only file.
|
|
4
|
+
*
|
|
5
|
+
* Not part of the public API surface or published bundle. This sketch shows
|
|
6
|
+
* how to exercise a simple design-token invariant in unit tests using Vitest,
|
|
7
|
+
* which this repo already uses for its own test suite. The pattern is test-
|
|
8
|
+
* runner agnostic; you can adapt it to Jest, Mocha, or any other framework.
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
const vitest_1 = require("vitest");
|
|
12
|
+
const css_calipers_1 = require("css-calipers");
|
|
13
|
+
// Pretend these spacing tokens come from a design token file or configuration
|
|
14
|
+
// layer. The intent is a simple invariant: small <= large and both share units.
|
|
15
|
+
const spacingTokens = {
|
|
16
|
+
spaceSm: (0, css_calipers_1.m)(4), // defaults to "px" if no unit is given
|
|
17
|
+
spaceLg: (0, css_calipers_1.m)(12),
|
|
18
|
+
};
|
|
19
|
+
(0, vitest_1.describe)("spacing tokens (example unit test)", () => {
|
|
20
|
+
(0, vitest_1.it)("use the same unit for related tokens", () => {
|
|
21
|
+
const { spaceSm, spaceLg } = spacingTokens;
|
|
22
|
+
// Unit consistency between related tokens.
|
|
23
|
+
(0, css_calipers_1.assertMatchingUnits)(spaceSm, spaceLg, "spacing tokens: spaceSm and spaceLg must share units");
|
|
24
|
+
});
|
|
25
|
+
(0, vitest_1.it)("keep small <= large", () => {
|
|
26
|
+
const { spaceSm, spaceLg } = spacingTokens;
|
|
27
|
+
// Ordering invariant: small should never exceed large.
|
|
28
|
+
const smValue = spaceSm.getValue();
|
|
29
|
+
const lgValue = spaceLg.getValue();
|
|
30
|
+
if (!(smValue <= lgValue)) {
|
|
31
|
+
throw new Error(`spacing tokens out of order: ` +
|
|
32
|
+
`spaceSm=${spaceSm.css()}, spaceLg=${spaceLg.css()}`);
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "css-calipers",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.4",
|
|
4
4
|
"description": "Compile-time unit safety for numeric, unit-bearing CSS values via typed measurements.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -47,6 +47,11 @@
|
|
|
47
47
|
"import": "./dist/esm/mediaQueries/index.js",
|
|
48
48
|
"require": "./dist/cjs/mediaQueries/index.js"
|
|
49
49
|
},
|
|
50
|
+
"./factory": {
|
|
51
|
+
"types": "./dist/esm/factory.d.ts",
|
|
52
|
+
"import": "./dist/esm/factory.js",
|
|
53
|
+
"require": "./dist/cjs/factory.js"
|
|
54
|
+
},
|
|
50
55
|
"./units": {
|
|
51
56
|
"types": "./dist/esm/units/index.d.ts",
|
|
52
57
|
"import": "./dist/esm/units/index.js",
|
|
@@ -74,15 +79,16 @@
|
|
|
74
79
|
"vitest": "^4.0.14"
|
|
75
80
|
},
|
|
76
81
|
"scripts": {
|
|
77
|
-
"build": "npm run build:cjs && npm run build:esm",
|
|
82
|
+
"build": "npm run build:cjs && npm run build:esm && npm run build:examples",
|
|
78
83
|
"build:cjs": "echo \"๐ ๏ธ Building CommonJS (cjs) bundle...\" && tsc -p tsconfig.build.cjs.json",
|
|
79
84
|
"build:esm": "echo \"๐ ๏ธ Building ES module (esm) bundle...\" && tsc -p tsconfig.build.esm.json && node scripts/emit-esm-package.mjs",
|
|
85
|
+
"build:examples": "tsc -p tsconfig.examples.json --noEmit",
|
|
80
86
|
"build:test": "npm run build && npm run test",
|
|
81
87
|
"build:delete": "node -e \"const { existsSync, rmSync } = require('fs'); const paths = ['dist/cjs', 'dist/esm']; for (const p of paths) { console.log('Scanning', p + '...'); if (existsSync(p)) { console.log('Found', p + ', deleting...'); rmSync(p, { recursive: true, force: true }); console.log('Deleted', p); } else { console.log(p + ' not found, skipping.'); } }\"",
|
|
82
|
-
"prepublishOnly": "node -e \"if (!process.env.CSS_CALIPERS_RELEASE) { console.error('Direct npm publish is disabled; use \\\"npm run release\\\" instead.'); process.exit(1); }\"",
|
|
88
|
+
"prepublishOnly": "node -e \"if (!process.env.CSS_CALIPERS_RELEASE) { console.error('Direct npm publish is disabled; use \\\"npm run release\\\" instead.'); process.exit(1); }\" && npm run test:internal",
|
|
83
89
|
"release": "node scripts/release.mjs",
|
|
84
90
|
"release:dry": "node scripts/release.mjs --dry-run",
|
|
85
|
-
"test": "npm run test:core && npm run test:mediaQueries && npm run test:dist && npm run test:types && npm run test:tsc && npm run lint",
|
|
91
|
+
"test": "npm run build && npm run test:core && npm run test:mediaQueries && npm run test:factory && npm run test:dist && npm run test:types && npm run test:tsc && npm run lint && npm run test:internal",
|
|
86
92
|
"test:mediaQueries": "vitest run tests/runtime/mediaQueries/mediaQueries.src.test.ts",
|
|
87
93
|
"test:mediaQueries:cjs": "vitest run tests/runtime/mediaQueries/mediaQueries.cjs.test.ts tests/runtime/api-surface/mediaQueries.api-surface.cjs.test.ts",
|
|
88
94
|
"test:mediaQueries:esm": "vitest run tests/runtime/mediaQueries/mediaQueries.esm.test.ts tests/runtime/api-surface/mediaQueries.api-surface.esm.test.ts",
|
|
@@ -95,6 +101,11 @@
|
|
|
95
101
|
"test:lint": "npm run lint",
|
|
96
102
|
"test:types": "echo \"\n ๐งช Starting tsd type checks...\n\" && tsd --files tests/types/**/*.test-d.ts && echo \"โ
tsd type checks passed!\n\"",
|
|
97
103
|
"test:tsc": "tsc -p tsconfig.json --noEmit",
|
|
98
|
-
"test:dist": "npm run
|
|
104
|
+
"test:dist": "npm run test:core:dist && npm run test:mediaQueries:dist && npm run test:factory:dist",
|
|
105
|
+
"test:factory": "vitest run tests/runtime/factory/factory.src.test.ts",
|
|
106
|
+
"test:factory:cjs": "vitest run tests/runtime/factory/factory.cjs.test.ts tests/runtime/api-surface/factory.api-surface.cjs.test.ts",
|
|
107
|
+
"test:factory:esm": "vitest run tests/runtime/factory/factory.esm.test.ts tests/runtime/api-surface/factory.api-surface.esm.test.ts",
|
|
108
|
+
"test:factory:dist": "npm run test:factory:cjs && npm run test:factory:esm",
|
|
109
|
+
"test:internal": "tsc -p tsconfig.internal.json --noEmit"
|
|
99
110
|
}
|
|
100
111
|
}
|