@arbor-css/typography 0.0.1

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.
@@ -0,0 +1,22 @@
1
+ import { GlobalConfig } from '../../globals/dist/globalProps.js';
2
+ export interface TypographyLevel {
3
+ size: string;
4
+ weight: number;
5
+ lineHeight: number;
6
+ }
7
+ export declare function isTypographyLevel(value: any): value is TypographyLevel;
8
+ export interface CompiledTypography<TLevels extends string = DefaultTypographyLevel> {
9
+ defaultLevel: TLevels;
10
+ levels: {
11
+ [K in TLevels]: TypographyLevel;
12
+ };
13
+ }
14
+ export declare const defaultTypographyLevels: readonly ["xs", "sm", "md", "lg", "xl", "2xl", "3xl", "4xl", "5xl", "6xl"];
15
+ export type DefaultTypographyLevel = (typeof defaultTypographyLevels)[number];
16
+ export type TypographyConfig<TLevels extends string> = {
17
+ levels?: Record<TLevels, Partial<TypographyLevel>>;
18
+ defaultLevel?: TLevels;
19
+ globals?: Partial<GlobalConfig>;
20
+ };
21
+ export declare function compileTypography<TLevels extends string = DefaultTypographyLevel>(config: TypographyConfig<TLevels>): CompiledTypography<TLevels>;
22
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAgB,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAE/E,MAAM,WAAW,eAAe;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,GAAG,GAAG,KAAK,IAAI,eAAe,CAEtE;AAED,MAAM,WAAW,kBAAkB,CAClC,OAAO,SAAS,MAAM,GAAG,sBAAsB;IAE/C,YAAY,EAAE,OAAO,CAAC;IACtB,MAAM,EAAE;SACN,CAAC,IAAI,OAAO,GAAG,eAAe;KAC/B,CAAC;CACF;AAED,eAAO,MAAM,uBAAuB,4EAW1B,CAAC;AACX,MAAM,MAAM,sBAAsB,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE9E,MAAM,MAAM,gBAAgB,CAAC,OAAO,SAAS,MAAM,IAAI;IACtD,MAAM,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC;IACnD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;CAChC,CAAC;AAEF,wBAAgB,iBAAiB,CAChC,OAAO,SAAS,MAAM,GAAG,sBAAsB,EAC9C,MAAM,EAAE,gBAAgB,CAAC,OAAO,CAAC,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAgDhE"}
package/dist/index.js ADDED
@@ -0,0 +1,53 @@
1
+ import { $, computeEquation, printComputationResult, } from '@arbor-css/calc';
2
+ import { $globalProps } from '../../globals/dist/globalProps.js';
3
+ export function isTypographyLevel(value) {
4
+ return value && 'size' in value && 'weight' in value && 'lineHeight' in value;
5
+ }
6
+ export const defaultTypographyLevels = [
7
+ 'xs',
8
+ 'sm',
9
+ 'md',
10
+ 'lg',
11
+ 'xl',
12
+ '2xl',
13
+ '3xl',
14
+ '4xl',
15
+ '5xl',
16
+ '6xl',
17
+ ];
18
+ export function compileTypography(config) {
19
+ const levelNames = config.levels ?
20
+ Object.keys(config.levels)
21
+ : defaultTypographyLevels;
22
+ const baseIndex =
23
+ // user passed an explicit value
24
+ config.defaultLevel ? levelNames.indexOf(config.defaultLevel)
25
+ // user did not give us one, but did supply custom levels
26
+ : config.levels ? Math.floor(levelNames.length / 2)
27
+ // we're using default levels, and md is the base.
28
+ : levelNames.indexOf('md');
29
+ const evalContext = {
30
+ propertyValues: {
31
+ [$globalProps.baseFontSize.name]: config.globals?.baseFontSize?.toString(),
32
+ },
33
+ };
34
+ const levels = levelNames.reduce((acc, name, i) => {
35
+ const nameCast = name;
36
+ const levelConfig = config.levels?.[nameCast] ?? {};
37
+ acc[nameCast] = {
38
+ size: printComputationResult(computeEquation(typographySizeEquation(i - baseIndex), evalContext)),
39
+ weight: printComputationResult(computeEquation(typographyWeightEquation(i - baseIndex), evalContext)),
40
+ lineHeight: printComputationResult(computeEquation(typographyLineHeightEquation(i - baseIndex), evalContext)),
41
+ ...levelConfig,
42
+ };
43
+ return acc;
44
+ }, {});
45
+ return {
46
+ defaultLevel: config.defaultLevel ?? levelNames[baseIndex],
47
+ levels,
48
+ };
49
+ }
50
+ const typographySizeEquation = (step) => $.multiply($.literal('1rem'), $.fn('pow', $.literal(1.25), $.literal(step)));
51
+ const typographyWeightEquation = (step) => $.add($.literal(400), $.multiply($.literal(25), $.literal(step)));
52
+ const typographyLineHeightEquation = (step) => $.clamp($.subtract($.literal(1.5), $.multiply($.literal(0.05), $.literal(step))), $.literal(1.1), $.literal(1.5));
53
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,33 @@
1
+ {
2
+ "name": "@arbor-css/typography",
3
+ "version": "0.0.1",
4
+ "type": "module",
5
+ "publishConfig": {
6
+ "access": "public"
7
+ },
8
+ "files": [
9
+ "dist"
10
+ ],
11
+ "exports": {
12
+ ".": {
13
+ "development": "./src/index.ts",
14
+ "import": "./dist/index.js",
15
+ "node": "./dist/index.js",
16
+ "types": "./dist/index.d.ts",
17
+ "default": "./dist/index.js"
18
+ }
19
+ },
20
+ "sideEffects": false,
21
+ "devDependencies": {
22
+ "typescript": "^6.0.3"
23
+ },
24
+ "dependencies": {
25
+ "@arbor-css/tokens": "0.0.1",
26
+ "@arbor-css/globals": "0.0.1",
27
+ "@arbor-css/calc": "0.0.1"
28
+ },
29
+ "scripts": {
30
+ "build": "tsc",
31
+ "dev": "tsc -w --preserveWatchOutput"
32
+ }
33
+ }