@zambit/elevate-ts 0.1.2

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.
Files changed (170) hide show
  1. package/CLA-CORPORATE.md +72 -0
  2. package/CLA-INDIVIDUAL.md +71 -0
  3. package/DUAL-PUBLISHING-STRATEGY.md +571 -0
  4. package/LICENSE +610 -0
  5. package/README.md +77 -0
  6. package/dist/cjs/Either.d.ts +67 -0
  7. package/dist/cjs/Either.d.ts.map +1 -0
  8. package/dist/cjs/Either.js +147 -0
  9. package/dist/cjs/Either.js.map +1 -0
  10. package/dist/cjs/EitherAsync.d.ts +139 -0
  11. package/dist/cjs/EitherAsync.d.ts.map +1 -0
  12. package/dist/cjs/EitherAsync.js +171 -0
  13. package/dist/cjs/EitherAsync.js.map +1 -0
  14. package/dist/cjs/Function.d.ts +153 -0
  15. package/dist/cjs/Function.d.ts.map +1 -0
  16. package/dist/cjs/Function.js +110 -0
  17. package/dist/cjs/Function.js.map +1 -0
  18. package/dist/cjs/List.d.ts +134 -0
  19. package/dist/cjs/List.d.ts.map +1 -0
  20. package/dist/cjs/List.js +243 -0
  21. package/dist/cjs/List.js.map +1 -0
  22. package/dist/cjs/Maybe.d.ts +64 -0
  23. package/dist/cjs/Maybe.d.ts.map +1 -0
  24. package/dist/cjs/Maybe.js +122 -0
  25. package/dist/cjs/Maybe.js.map +1 -0
  26. package/dist/cjs/MaybeAsync.d.ts +115 -0
  27. package/dist/cjs/MaybeAsync.d.ts.map +1 -0
  28. package/dist/cjs/MaybeAsync.js +151 -0
  29. package/dist/cjs/MaybeAsync.js.map +1 -0
  30. package/dist/cjs/NonEmptyList.d.ts +86 -0
  31. package/dist/cjs/NonEmptyList.d.ts.map +1 -0
  32. package/dist/cjs/NonEmptyList.js +128 -0
  33. package/dist/cjs/NonEmptyList.js.map +1 -0
  34. package/dist/cjs/Reader.d.ts +53 -0
  35. package/dist/cjs/Reader.d.ts.map +1 -0
  36. package/dist/cjs/Reader.js +60 -0
  37. package/dist/cjs/Reader.js.map +1 -0
  38. package/dist/cjs/State.d.ts +71 -0
  39. package/dist/cjs/State.d.ts.map +1 -0
  40. package/dist/cjs/State.js +94 -0
  41. package/dist/cjs/State.js.map +1 -0
  42. package/dist/cjs/Tuple.d.ts +69 -0
  43. package/dist/cjs/Tuple.d.ts.map +1 -0
  44. package/dist/cjs/Tuple.js +73 -0
  45. package/dist/cjs/Tuple.js.map +1 -0
  46. package/dist/cjs/Validation.d.ts +53 -0
  47. package/dist/cjs/Validation.d.ts.map +1 -0
  48. package/dist/cjs/Validation.js +77 -0
  49. package/dist/cjs/Validation.js.map +1 -0
  50. package/dist/cjs/index.d.ts +12 -0
  51. package/dist/cjs/index.d.ts.map +1 -0
  52. package/dist/cjs/index.js +25 -0
  53. package/dist/cjs/index.js.map +1 -0
  54. package/dist/cjs/tokens/config.d.ts +43 -0
  55. package/dist/cjs/tokens/config.d.ts.map +1 -0
  56. package/dist/cjs/tokens/config.js +162 -0
  57. package/dist/cjs/tokens/config.js.map +1 -0
  58. package/dist/cjs/tokens/cssGen.d.ts +18 -0
  59. package/dist/cjs/tokens/cssGen.d.ts.map +1 -0
  60. package/dist/cjs/tokens/cssGen.js +144 -0
  61. package/dist/cjs/tokens/cssGen.js.map +1 -0
  62. package/dist/cjs/tokens/generateCSS.d.ts +18 -0
  63. package/dist/cjs/tokens/generateCSS.d.ts.map +1 -0
  64. package/dist/cjs/tokens/generateCSS.js +83 -0
  65. package/dist/cjs/tokens/generateCSS.js.map +1 -0
  66. package/dist/cjs/tokens/index.d.ts +13 -0
  67. package/dist/cjs/tokens/index.d.ts.map +1 -0
  68. package/dist/cjs/tokens/index.js +12 -0
  69. package/dist/cjs/tokens/index.js.map +1 -0
  70. package/dist/cjs/tsconfig.tsbuildinfo +1 -0
  71. package/dist/esm/Either.d.ts +67 -0
  72. package/dist/esm/Either.d.ts.map +1 -0
  73. package/dist/esm/Either.js +136 -0
  74. package/dist/esm/Either.js.map +1 -0
  75. package/dist/esm/EitherAsync.d.ts +139 -0
  76. package/dist/esm/EitherAsync.d.ts.map +1 -0
  77. package/dist/esm/EitherAsync.js +173 -0
  78. package/dist/esm/EitherAsync.js.map +1 -0
  79. package/dist/esm/Function.d.ts +153 -0
  80. package/dist/esm/Function.d.ts.map +1 -0
  81. package/dist/esm/Function.js +109 -0
  82. package/dist/esm/Function.js.map +1 -0
  83. package/dist/esm/List.d.ts +134 -0
  84. package/dist/esm/List.d.ts.map +1 -0
  85. package/dist/esm/List.js +243 -0
  86. package/dist/esm/List.js.map +1 -0
  87. package/dist/esm/Maybe.d.ts +64 -0
  88. package/dist/esm/Maybe.d.ts.map +1 -0
  89. package/dist/esm/Maybe.js +113 -0
  90. package/dist/esm/Maybe.js.map +1 -0
  91. package/dist/esm/MaybeAsync.d.ts +115 -0
  92. package/dist/esm/MaybeAsync.d.ts.map +1 -0
  93. package/dist/esm/MaybeAsync.js +150 -0
  94. package/dist/esm/MaybeAsync.js.map +1 -0
  95. package/dist/esm/NonEmptyList.d.ts +86 -0
  96. package/dist/esm/NonEmptyList.d.ts.map +1 -0
  97. package/dist/esm/NonEmptyList.js +128 -0
  98. package/dist/esm/NonEmptyList.js.map +1 -0
  99. package/dist/esm/Reader.d.ts +53 -0
  100. package/dist/esm/Reader.d.ts.map +1 -0
  101. package/dist/esm/Reader.js +60 -0
  102. package/dist/esm/Reader.js.map +1 -0
  103. package/dist/esm/State.d.ts +71 -0
  104. package/dist/esm/State.d.ts.map +1 -0
  105. package/dist/esm/State.js +94 -0
  106. package/dist/esm/State.js.map +1 -0
  107. package/dist/esm/Tuple.d.ts +69 -0
  108. package/dist/esm/Tuple.d.ts.map +1 -0
  109. package/dist/esm/Tuple.js +73 -0
  110. package/dist/esm/Tuple.js.map +1 -0
  111. package/dist/esm/Validation.d.ts +53 -0
  112. package/dist/esm/Validation.d.ts.map +1 -0
  113. package/dist/esm/Validation.js +79 -0
  114. package/dist/esm/Validation.js.map +1 -0
  115. package/dist/esm/index.d.ts +12 -0
  116. package/dist/esm/index.d.ts.map +1 -0
  117. package/dist/esm/index.js +22 -0
  118. package/dist/esm/index.js.map +1 -0
  119. package/dist/esm/src/Either.d.ts +67 -0
  120. package/dist/esm/src/Either.d.ts.map +1 -0
  121. package/dist/esm/src/Either.js +147 -0
  122. package/dist/esm/src/Either.js.map +1 -0
  123. package/dist/esm/src/EitherAsync.d.ts +139 -0
  124. package/dist/esm/src/EitherAsync.d.ts.map +1 -0
  125. package/dist/esm/src/EitherAsync.js +171 -0
  126. package/dist/esm/src/EitherAsync.js.map +1 -0
  127. package/dist/esm/src/Function.d.ts +153 -0
  128. package/dist/esm/src/Function.d.ts.map +1 -0
  129. package/dist/esm/src/Function.js +110 -0
  130. package/dist/esm/src/Function.js.map +1 -0
  131. package/dist/esm/src/List.d.ts +134 -0
  132. package/dist/esm/src/List.d.ts.map +1 -0
  133. package/dist/esm/src/List.js +243 -0
  134. package/dist/esm/src/List.js.map +1 -0
  135. package/dist/esm/src/Maybe.d.ts +64 -0
  136. package/dist/esm/src/Maybe.d.ts.map +1 -0
  137. package/dist/esm/src/Maybe.js +122 -0
  138. package/dist/esm/src/Maybe.js.map +1 -0
  139. package/dist/esm/src/MaybeAsync.d.ts +115 -0
  140. package/dist/esm/src/MaybeAsync.d.ts.map +1 -0
  141. package/dist/esm/src/MaybeAsync.js +151 -0
  142. package/dist/esm/src/MaybeAsync.js.map +1 -0
  143. package/dist/esm/src/NonEmptyList.d.ts +86 -0
  144. package/dist/esm/src/NonEmptyList.d.ts.map +1 -0
  145. package/dist/esm/src/NonEmptyList.js +128 -0
  146. package/dist/esm/src/NonEmptyList.js.map +1 -0
  147. package/dist/esm/src/Reader.d.ts +53 -0
  148. package/dist/esm/src/Reader.d.ts.map +1 -0
  149. package/dist/esm/src/Reader.js +60 -0
  150. package/dist/esm/src/Reader.js.map +1 -0
  151. package/dist/esm/src/State.d.ts +71 -0
  152. package/dist/esm/src/State.d.ts.map +1 -0
  153. package/dist/esm/src/State.js +94 -0
  154. package/dist/esm/src/State.js.map +1 -0
  155. package/dist/esm/src/Tuple.d.ts +69 -0
  156. package/dist/esm/src/Tuple.d.ts.map +1 -0
  157. package/dist/esm/src/Tuple.js +73 -0
  158. package/dist/esm/src/Tuple.js.map +1 -0
  159. package/dist/esm/src/Validation.d.ts +53 -0
  160. package/dist/esm/src/Validation.d.ts.map +1 -0
  161. package/dist/esm/src/Validation.js +77 -0
  162. package/dist/esm/src/Validation.js.map +1 -0
  163. package/dist/esm/src/index.d.ts +12 -0
  164. package/dist/esm/src/index.d.ts.map +1 -0
  165. package/dist/esm/src/index.js +25 -0
  166. package/dist/esm/src/index.js.map +1 -0
  167. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -0
  168. package/elevate-ts-vs-effect-critique.md +806 -0
  169. package/eslint.config.js +104 -0
  170. package/package.json +139 -0
@@ -0,0 +1,77 @@
1
+ // Validation — Accumulating Errors
2
+ /** Create a Failure with one or more errors. */
3
+ export const Failure = (errors) => ({
4
+ tag: 'Failure',
5
+ errors
6
+ });
7
+ /** Create a Success value. */
8
+ export const Success = (value) => ({
9
+ tag: 'Success',
10
+ value
11
+ });
12
+ /** Test if a Validation is Failure. */
13
+ export const isFailure = (va) => va.tag === 'Failure';
14
+ /** Test if a Validation is Success. */
15
+ export const isSuccess = (va) => va.tag === 'Success';
16
+ /** Lift an Either into Validation. */
17
+ export const fromEither = (ea) => (ea.tag === 'Left' ? Failure([ea.left]) : Success(ea.right));
18
+ /** Convert Validation to Either with errors array. */
19
+ export const toEither = (va) => (va.tag === 'Failure' ? { tag: 'Left', left: va.errors } : { tag: 'Right', right: va.value });
20
+ /** Construct Success if predicate holds, Failure otherwise. */
21
+ export const fromPredicate = (predicate, onFalse) => (a) => predicate(a) ? Success(a) : Failure([onFalse(a)]);
22
+ /** Functor map over Success. */
23
+ export const map = (f) => (va) => va.tag === 'Success' ? Success(f(va.value)) : va;
24
+ /** Applicative ap: accumulates errors when both are Failures. */
25
+ export const ap = (vf) => (va) => {
26
+ if (vf.tag === 'Failure' && va.tag === 'Failure') {
27
+ return Failure([...vf.errors, ...va.errors]);
28
+ }
29
+ if (vf.tag === 'Failure')
30
+ return vf;
31
+ if (va.tag === 'Failure')
32
+ return va;
33
+ return Success(vf.value(va.value));
34
+ };
35
+ /** Monadic bind (short-circuits on first Failure). */
36
+ export const chain = (f) => (va) => va.tag === 'Failure' ? va : f(va.value);
37
+ /** Extract Success or default. */
38
+ export const getOrElse = (a) => (va) => va.tag === 'Success' ? va.value : a;
39
+ /** Case analysis. */
40
+ export const fold = (onFailure, onSuccess) => (va) => va.tag === 'Failure' ? onFailure(va.errors) : onSuccess(va.value);
41
+ /** Merge two Validations; if both are Failure, concatenate errors. */
42
+ export const concat = (va2) => (va1) => {
43
+ if (va1.tag === 'Failure' && va2.tag === 'Failure') {
44
+ return Failure([...va1.errors, ...va2.errors]);
45
+ }
46
+ if (va1.tag === 'Failure')
47
+ return va1;
48
+ return va2;
49
+ };
50
+ /** Sequence all-or-Failure, collecting all errors. */
51
+ export const sequence = (validations) => {
52
+ const result = [];
53
+ const errors = [];
54
+ for (const va of validations) {
55
+ if (va.tag === 'Failure') {
56
+ errors.push(...va.errors);
57
+ }
58
+ else {
59
+ result.push(va.value);
60
+ }
61
+ }
62
+ return errors.length > 0 ? Failure(errors) : Success(result);
63
+ };
64
+ /** Traverse a sequence, collecting all errors. */
65
+ export const traverse = (f) => (as) => sequence(as.map(f));
66
+ // Fantasy Land symbols
67
+ // Note: FL methods are excluded to work around vitest coverage serialization issues.
68
+ // The core functionality is complete and all point-free functions work correctly.
69
+ // TODO: Re-enable Fantasy Land methods when vitest issue is resolved.
70
+ //
71
+ // Object.defineProperty(Success, 'fantasy-land/of', { value: Success })
72
+ // Object.defineProperty(Failure, 'fantasy-land/zero', { value: Failure([]) })
73
+ //
74
+ // const successProto = Object.getPrototypeOf(Success(0))
75
+ // successProto['fantasy-land/map'] = ...
76
+ // etc.
77
+ //# sourceMappingURL=Validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Validation.js","sourceRoot":"","sources":["../../src/Validation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ export * as Maybe from './Maybe.js';
2
+ export * as Either from './Either.js';
3
+ export * as Validation from './Validation.js';
4
+ export * as Reader from './Reader.js';
5
+ export * as State from './State.js';
6
+ export * as Tuple from './Tuple.js';
7
+ export * as NonEmptyList from './NonEmptyList.js';
8
+ export * as List from './List.js';
9
+ export * as Function from './Function.js';
10
+ export * as MaybeAsync from './MaybeAsync.js';
11
+ export * as EitherAsync from './EitherAsync.js';
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,25 @@
1
+ // SPDX-License-Identifier: AGPL-3.0-or-later OR LicenseRef-Commercial
2
+ // Copyright (C) 2024 Zambit Technologies Corp
3
+ // See LICENSE or COMMERCIAL-LICENSE.md in the package root.
4
+ // elevate-ts
5
+ // Re-exports added as each module is implemented.
6
+ // See prompts/README.md for implementation order.
7
+ //
8
+ // TODO(audit): add @paralleldrive/cuid2 when time-travel audit subsystem
9
+ // is implemented. Each audited operation will receive a cuid2-stamped ID
10
+ // (monotonically sortable, collision-resistant across distributed Worker
11
+ // instances) enabling deterministic replay and rewind of operation sequences.
12
+ // Note: Individual modules are exported with namespace prefixes to avoid
13
+ // naming conflicts (all monads export map, chain, ap, etc.)
14
+ export * as Maybe from './Maybe.js';
15
+ export * as Either from './Either.js';
16
+ export * as Validation from './Validation.js';
17
+ export * as Reader from './Reader.js';
18
+ export * as State from './State.js';
19
+ export * as Tuple from './Tuple.js';
20
+ export * as NonEmptyList from './NonEmptyList.js';
21
+ export * as List from './List.js';
22
+ export * as Function from './Function.js';
23
+ export * as MaybeAsync from './MaybeAsync.js';
24
+ export * as EitherAsync from './EitherAsync.js';
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,8CAA8C;AAC9C,4DAA4D;AAE5D,aAAa;AACb,kDAAkD;AAClD,kDAAkD;AAClD,EAAE;AACF,yEAAyE;AACzE,yEAAyE;AACzE,yEAAyE;AACzE,8EAA8E;AAE9E,yEAAyE;AACzE,4DAA4D;AAC5D,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,YAAY,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Design Token Configuration
3
+ *
4
+ * Single source of truth for all design tokens across all samples.
5
+ * This config is processed at build time to generate tokens.css in each sample.
6
+ */
7
+ export interface TokenConfig {
8
+ colors: Record<string, string>;
9
+ typography: {
10
+ fontFamilies: Record<string, string>;
11
+ fontSizes: Record<string, string>;
12
+ fontWeights: Record<string, number>;
13
+ lineHeights: Record<string, number>;
14
+ };
15
+ spacing: Record<string, string>;
16
+ radius: Record<string, string>;
17
+ shadows: Record<string, string>;
18
+ transitions: Record<string, string>;
19
+ zIndex: Record<string, number>;
20
+ }
21
+ export declare const tokenConfig: TokenConfig;
22
+ /**
23
+ * Extract all color token names as a union type.
24
+ * Useful for component props: type ColorName = ColorTokens
25
+ */
26
+ export type ColorTokens = keyof typeof tokenConfig.colors;
27
+ /**
28
+ * Extract all spacing token names as a union type.
29
+ */
30
+ export type SpacingTokens = keyof typeof tokenConfig.spacing;
31
+ /**
32
+ * Extract all font size names as a union type.
33
+ */
34
+ export type FontSizeTokens = keyof typeof tokenConfig.typography.fontSizes;
35
+ /**
36
+ * Extract all radius names as a union type.
37
+ */
38
+ export type RadiusTokens = keyof typeof tokenConfig.radius;
39
+ /**
40
+ * Extract all transition names as a union type.
41
+ */
42
+ export type TransitionTokens = keyof typeof tokenConfig.transitions;
43
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/tokens/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,UAAU,EAAE;QACV,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACrC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAClC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACpC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACrC,CAAC;IACF,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;AA2HD,eAAO,MAAM,WAAW,EAAE,WAiEzB,CAAC;AAMF;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,OAAO,WAAW,CAAC,MAAM,CAAC;AAE1D;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,WAAW,CAAC,OAAO,CAAC;AAE7D;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,OAAO,WAAW,CAAC,UAAU,CAAC,SAAS,CAAC;AAE3E;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,OAAO,WAAW,CAAC,MAAM,CAAC;AAE3D;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,OAAO,WAAW,CAAC,WAAW,CAAC"}
@@ -0,0 +1,162 @@
1
+ /**
2
+ * Design Token Configuration
3
+ *
4
+ * Single source of truth for all design tokens across all samples.
5
+ * This config is processed at build time to generate tokens.css in each sample.
6
+ */
7
+ // ============================================================================
8
+ // COLOR GENERATION
9
+ // ============================================================================
10
+ /**
11
+ * Generate neutral color scale using HSL adjustments.
12
+ * Base: 50% lightness, no saturation (pure gray)
13
+ */
14
+ function generateNeutralScale() {
15
+ const colors = {};
16
+ // Neutral scale: 50 (lightest) to 900 (darkest)
17
+ // Each step adjusts lightness by ~5%
18
+ const steps = [
19
+ { name: '50', lightness: 97.5 },
20
+ { name: '100', lightness: 95 },
21
+ { name: '200', lightness: 90 },
22
+ { name: '300', lightness: 83 },
23
+ { name: '400', lightness: 60 },
24
+ { name: '500', lightness: 42 },
25
+ { name: '600', lightness: 32 },
26
+ { name: '700', lightness: 21 },
27
+ { name: '800', lightness: 12 },
28
+ { name: '900', lightness: 6 }
29
+ ];
30
+ steps.forEach(({ name, lightness }) => {
31
+ colors[`neutral-${name}`] = `hsl(0, 0%, ${lightness}%)`;
32
+ });
33
+ return colors;
34
+ }
35
+ /**
36
+ * Generate semantic color scales using HSL.
37
+ */
38
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
39
+ function generateColorScale(name, hue, baseSaturation) {
40
+ const colors = {};
41
+ const steps = [
42
+ { suffix: '', lightness: 95 },
43
+ { suffix: '-dark', lightness: 47 },
44
+ { suffix: '-light', lightness: 93 }
45
+ ];
46
+ steps.forEach(({ suffix, lightness }) => {
47
+ colors[`${name}${suffix}`] = `hsl(${hue}, ${baseSaturation}%, ${lightness}%)`;
48
+ });
49
+ return colors;
50
+ }
51
+ // ============================================================================
52
+ // SPACING GENERATION
53
+ // ============================================================================
54
+ function generateSpacing() {
55
+ const base = 0.25; // rem
56
+ const spacing = {
57
+ '0': '0'
58
+ };
59
+ // Linear scale: 1-16
60
+ for (let i = 1; i <= 16; i++) {
61
+ spacing[i.toString()] = `${base * i}rem`;
62
+ }
63
+ return spacing;
64
+ }
65
+ // ============================================================================
66
+ // FONT SIZE GENERATION (MODULAR SCALE)
67
+ // ============================================================================
68
+ function generateFontSizes() {
69
+ const base = 1; // 1rem = 16px
70
+ const ratio = 1.125; // 12.5% step (perfect fifth in music)
71
+ return {
72
+ xs: `${(base / (ratio * ratio)).toFixed(3)}rem`, // ~0.704rem
73
+ sm: `${(base / ratio).toFixed(3)}rem`, // ~0.889rem
74
+ base: `${base}rem`, // 1rem
75
+ lg: `${(base * ratio).toFixed(3)}rem`, // ~1.125rem
76
+ xl: `${(base * ratio * ratio).toFixed(3)}rem`, // ~1.266rem
77
+ '2xl': `${(base * ratio * ratio * ratio).toFixed(3)}rem` // ~1.424rem
78
+ };
79
+ }
80
+ // ============================================================================
81
+ // BORDER RADIUS GENERATION
82
+ // ============================================================================
83
+ function generateRadius() {
84
+ const base = 0.25; // rem
85
+ return {
86
+ sm: `${base}rem`,
87
+ md: `${base * 1.5}rem`,
88
+ lg: `${base * 2}rem`,
89
+ xl: `${base * 3}rem`,
90
+ '2xl': `${base * 4}rem`
91
+ };
92
+ }
93
+ // ============================================================================
94
+ // TRANSITION GENERATION
95
+ // ============================================================================
96
+ function generateTransitions() {
97
+ const base = 150; // ms
98
+ return {
99
+ fast: `${base}ms ease-in-out`,
100
+ normal: `${Math.round(base * 1.67)}ms ease-in-out`, // ~250ms
101
+ slow: `${Math.round(base * 2.33)}ms ease-in-out` // ~350ms
102
+ };
103
+ }
104
+ // ============================================================================
105
+ // MAIN CONFIG
106
+ // ============================================================================
107
+ export const tokenConfig = {
108
+ colors: {
109
+ // Brand color — customize this when brand identity is finalized
110
+ brand: 'hsl(260, 85%, 55%)',
111
+ 'brand-dark': 'hsl(260, 85%, 35%)',
112
+ 'brand-light': 'hsl(260, 85%, 92%)',
113
+ // Semantic colors
114
+ primary: 'hsl(217, 91%, 60%)',
115
+ 'primary-dark': 'hsl(217, 91%, 31%)',
116
+ 'primary-light': 'hsl(217, 100%, 87%)',
117
+ success: 'hsl(142, 71%, 45%)',
118
+ 'success-dark': 'hsl(142, 77%, 36%)',
119
+ 'success-light': 'hsl(142, 71%, 82%)',
120
+ error: 'hsl(0, 91%, 71%)',
121
+ 'error-dark': 'hsl(0, 91%, 48%)',
122
+ 'error-light': 'hsl(0, 91%, 95%)',
123
+ warning: 'hsl(38, 92%, 50%)',
124
+ 'warning-dark': 'hsl(38, 92%, 48%)',
125
+ 'warning-light': 'hsl(38, 100%, 92%)',
126
+ // Neutral scale
127
+ ...generateNeutralScale()
128
+ },
129
+ typography: {
130
+ fontFamilies: {
131
+ sans: "-apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif",
132
+ mono: "'Menlo', 'Monaco', 'Courier New', monospace"
133
+ },
134
+ fontSizes: generateFontSizes(),
135
+ fontWeights: {
136
+ normal: 400,
137
+ medium: 500,
138
+ semibold: 600,
139
+ bold: 700
140
+ },
141
+ lineHeights: {
142
+ tight: 1.25,
143
+ normal: 1.5,
144
+ relaxed: 1.625
145
+ }
146
+ },
147
+ spacing: generateSpacing(),
148
+ radius: generateRadius(),
149
+ shadows: {
150
+ sm: '0 1px 2px 0 rgba(0, 0, 0, 0.05)',
151
+ md: '0 4px 6px -1px rgba(0, 0, 0, 0.1)',
152
+ lg: '0 10px 15px -3px rgba(0, 0, 0, 0.1)',
153
+ xl: '0 20px 25px -5px rgba(0, 0, 0, 0.1)'
154
+ },
155
+ transitions: generateTransitions(),
156
+ zIndex: {
157
+ dropdown: 1000,
158
+ modal: 1050,
159
+ tooltip: 1100
160
+ }
161
+ };
162
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/tokens/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Design Token CSS Generation — Pure Functions
3
+ *
4
+ * Extracted pure functions for CSS generation.
5
+ * These can be imported and tested without side effects.
6
+ */
7
+ /**
8
+ * Convert token names from camelCase/kebab-case to CSS variable names.
9
+ * Examples:
10
+ * primaryDark -> primary-dark
11
+ * colorNeutral500 -> color-neutral-500
12
+ */
13
+ export declare function toCSSVarName(prefix: string, name: string): string;
14
+ /**
15
+ * Generate CSS custom properties from token config.
16
+ */
17
+ export declare function generateCSS(): string;
18
+ //# sourceMappingURL=cssGen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cssGen.d.ts","sourceRoot":"","sources":["../../../src/tokens/cssGen.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAIjE;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAuIpC"}
@@ -0,0 +1,144 @@
1
+ /**
2
+ * Design Token CSS Generation — Pure Functions
3
+ *
4
+ * Extracted pure functions for CSS generation.
5
+ * These can be imported and tested without side effects.
6
+ */
7
+ import { tokenConfig } from './config.js';
8
+ /**
9
+ * Convert token names from camelCase/kebab-case to CSS variable names.
10
+ * Examples:
11
+ * primaryDark -> primary-dark
12
+ * colorNeutral500 -> color-neutral-500
13
+ */
14
+ export function toCSSVarName(prefix, name) {
15
+ // Insert hyphens before capital letters, convert to lowercase
16
+ const kebab = name.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();
17
+ return `--${prefix}-${kebab}`;
18
+ }
19
+ /**
20
+ * Generate CSS custom properties from token config.
21
+ */
22
+ export function generateCSS() {
23
+ const lines = [
24
+ '/* Design Tokens - GENERATED FILE */',
25
+ '/* Do not edit manually. Update src/tokens/config.ts in workspace root and run: npm run generate:tokens */',
26
+ '/* This file is auto-generated at build time for immutability */',
27
+ '',
28
+ ':root {'
29
+ ];
30
+ // ========================================================================
31
+ // COLORS
32
+ // ========================================================================
33
+ lines.push(' /* Colors */');
34
+ Object.entries(tokenConfig.colors).forEach(([name, value]) => {
35
+ const varName = toCSSVarName('color', name);
36
+ lines.push(` ${varName}: ${value};`);
37
+ });
38
+ lines.push('');
39
+ // ========================================================================
40
+ // TYPOGRAPHY
41
+ // ========================================================================
42
+ lines.push(' /* Typography */');
43
+ // Font families
44
+ Object.entries(tokenConfig.typography.fontFamilies).forEach(([name, value]) => {
45
+ const varName = toCSSVarName('font', name);
46
+ lines.push(` ${varName}: ${value};`);
47
+ });
48
+ lines.push('');
49
+ // Font sizes
50
+ Object.entries(tokenConfig.typography.fontSizes).forEach(([name, value]) => {
51
+ const varName = toCSSVarName('font-size', name);
52
+ lines.push(` ${varName}: ${value};`);
53
+ });
54
+ lines.push('');
55
+ // Font weights
56
+ Object.entries(tokenConfig.typography.fontWeights).forEach(([name, value]) => {
57
+ const varName = toCSSVarName('font-weight', name);
58
+ lines.push(` ${varName}: ${value};`);
59
+ });
60
+ lines.push('');
61
+ // Line heights
62
+ Object.entries(tokenConfig.typography.lineHeights).forEach(([name, value]) => {
63
+ const varName = toCSSVarName('line-height', name);
64
+ lines.push(` ${varName}: ${value};`);
65
+ });
66
+ lines.push('');
67
+ // ========================================================================
68
+ // SPACING
69
+ // ========================================================================
70
+ lines.push(' /* Spacing */');
71
+ Object.entries(tokenConfig.spacing).forEach(([name, value]) => {
72
+ const varName = toCSSVarName('spacing', name);
73
+ lines.push(` ${varName}: ${value};`);
74
+ });
75
+ lines.push('');
76
+ // ========================================================================
77
+ // BORDER RADIUS
78
+ // ========================================================================
79
+ lines.push(' /* Border Radius */');
80
+ Object.entries(tokenConfig.radius).forEach(([name, value]) => {
81
+ const varName = toCSSVarName('radius', name);
82
+ lines.push(` ${varName}: ${value};`);
83
+ });
84
+ lines.push('');
85
+ // ========================================================================
86
+ // SHADOWS
87
+ // ========================================================================
88
+ lines.push(' /* Shadows */');
89
+ Object.entries(tokenConfig.shadows).forEach(([name, value]) => {
90
+ const varName = toCSSVarName('shadow', name);
91
+ lines.push(` ${varName}: ${value};`);
92
+ });
93
+ lines.push('');
94
+ // ========================================================================
95
+ // TRANSITIONS
96
+ // ========================================================================
97
+ lines.push(' /* Transitions */');
98
+ Object.entries(tokenConfig.transitions).forEach(([name, value]) => {
99
+ const varName = toCSSVarName('transition', name);
100
+ lines.push(` ${varName}: ${value};`);
101
+ });
102
+ lines.push('');
103
+ // ========================================================================
104
+ // Z-INDEX
105
+ // ========================================================================
106
+ lines.push(' /* Z-Index */');
107
+ Object.entries(tokenConfig.zIndex).forEach(([name, value]) => {
108
+ const varName = toCSSVarName('z', name);
109
+ lines.push(` ${varName}: ${value};`);
110
+ });
111
+ lines.push('}');
112
+ lines.push('');
113
+ // ========================================================================
114
+ // GLOBAL STYLES
115
+ // ========================================================================
116
+ lines.push('/* Global Styles */');
117
+ lines.push('* {');
118
+ lines.push(' box-sizing: border-box;');
119
+ lines.push('}');
120
+ lines.push('');
121
+ lines.push('html {');
122
+ lines.push(' font-family: var(--font-sans);');
123
+ lines.push(' font-size: 16px;');
124
+ lines.push(' -webkit-font-smoothing: antialiased;');
125
+ lines.push(' -moz-osx-font-smoothing: grayscale;');
126
+ lines.push('}');
127
+ lines.push('');
128
+ lines.push('body {');
129
+ lines.push(' margin: 0;');
130
+ lines.push(' padding: 0;');
131
+ lines.push(' background-color: var(--color-neutral-50);');
132
+ lines.push(' color: var(--color-neutral-900);');
133
+ lines.push(' font-size: var(--font-size-base);');
134
+ lines.push(' line-height: var(--line-height-normal);');
135
+ lines.push('}');
136
+ lines.push('');
137
+ lines.push('#app {');
138
+ lines.push(' min-height: 100vh;');
139
+ lines.push(' display: flex;');
140
+ lines.push(' flex-direction: column;');
141
+ lines.push('}');
142
+ return lines.join('\n');
143
+ }
144
+ //# sourceMappingURL=cssGen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cssGen.js","sourceRoot":"","sources":["../../../src/tokens/cssGen.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Design Token CSS Generator
3
+ *
4
+ * Shared generator for all samples. Reads the workspace token configuration
5
+ * and generates immutable CSS variables for each sample.
6
+ *
7
+ * Usage (from workspace root):
8
+ * npx tsx src/tokens/generateCSS.ts
9
+ * OR with npm script:
10
+ * npm run generate:tokens
11
+ *
12
+ * Generates CSS files in:
13
+ * samples/spa-examples/[name]/src/styles/tokens.css
14
+ * samples/worker-examples/[name]/src/styles/tokens.css
15
+ * samples/fullstack-examples/[name]/src/styles/tokens.css
16
+ */
17
+ export {};
18
+ //# sourceMappingURL=generateCSS.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateCSS.d.ts","sourceRoot":"","sources":["../../../src/tokens/generateCSS.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;;GAeG"}
@@ -0,0 +1,83 @@
1
+ /* eslint-disable no-console */
2
+ /**
3
+ * Design Token CSS Generator
4
+ *
5
+ * Shared generator for all samples. Reads the workspace token configuration
6
+ * and generates immutable CSS variables for each sample.
7
+ *
8
+ * Usage (from workspace root):
9
+ * npx tsx src/tokens/generateCSS.ts
10
+ * OR with npm script:
11
+ * npm run generate:tokens
12
+ *
13
+ * Generates CSS files in:
14
+ * samples/spa-examples/[name]/src/styles/tokens.css
15
+ * samples/worker-examples/[name]/src/styles/tokens.css
16
+ * samples/fullstack-examples/[name]/src/styles/tokens.css
17
+ */
18
+ import { writeFileSync, mkdirSync } from 'fs';
19
+ import { dirname, resolve } from 'path';
20
+ import { glob } from 'glob';
21
+ import { tokenConfig } from './config.js';
22
+ import { generateCSS } from './cssGen.js';
23
+ /**
24
+ * Find all sample directories that need tokens generated.
25
+ */
26
+ async function findSampleDirs() {
27
+ const patterns = ['samples/spa-examples/*/src/styles', 'samples/worker-examples/*/src/styles', 'samples/fullstack-examples/*/src/styles'];
28
+ const dirs = new Set();
29
+ for (const pattern of patterns) {
30
+ try {
31
+ const matches = await glob(pattern, { cwd: process.cwd() });
32
+ matches.forEach((dir) => dirs.add(dir));
33
+ }
34
+ catch {
35
+ // Pattern may not have matches yet, that's OK
36
+ }
37
+ }
38
+ return Array.from(dirs).sort();
39
+ }
40
+ /**
41
+ * Main function: generate and write CSS file to each sample.
42
+ */
43
+ async function main() {
44
+ try {
45
+ const css = generateCSS();
46
+ const sampleDirs = await findSampleDirs();
47
+ if (sampleDirs.length === 0) {
48
+ console.log('⚠ No sample directories found. Create samples and run again.');
49
+ return;
50
+ }
51
+ let successCount = 0;
52
+ const errors = [];
53
+ for (const sampleDir of sampleDirs) {
54
+ try {
55
+ const outputPath = resolve(sampleDir, 'tokens.css');
56
+ mkdirSync(dirname(outputPath), { recursive: true });
57
+ writeFileSync(outputPath, css, 'utf-8');
58
+ console.log(`✓ ${sampleDir}/tokens.css`);
59
+ successCount++;
60
+ }
61
+ catch (error) {
62
+ errors.push(`✗ ${sampleDir}: ${error instanceof Error ? error.message : String(error)}`);
63
+ }
64
+ }
65
+ console.log('');
66
+ console.log(`Generated tokens for ${successCount} sample(s)`);
67
+ console.log(` ${css.split('\n').length} lines per file`);
68
+ console.log(` ${Object.keys(tokenConfig.colors).length} colors`);
69
+ console.log(` ${Object.keys(tokenConfig.spacing).length} spacing tokens`);
70
+ console.log(` ${Object.keys(tokenConfig.typography.fontSizes).length} font sizes`);
71
+ if (errors.length > 0) {
72
+ console.error('\nErrors:');
73
+ errors.forEach((err) => console.error(` ${err}`));
74
+ process.exit(1);
75
+ }
76
+ }
77
+ catch (error) {
78
+ console.error('✗ Failed to generate tokens CSS:', error);
79
+ process.exit(1);
80
+ }
81
+ }
82
+ main();
83
+ //# sourceMappingURL=generateCSS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateCSS.js","sourceRoot":"","sources":["../../../src/tokens/generateCSS.ts"],"names":[],"mappings":"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"}