@newtonedev/components 0.1.5 → 0.1.7

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 (69) hide show
  1. package/dist/composites/actions/Button/Button.d.ts.map +1 -1
  2. package/dist/composites/actions/Button/Button.styles.d.ts +3 -1
  3. package/dist/composites/actions/Button/Button.styles.d.ts.map +1 -1
  4. package/dist/index.cjs +603 -249
  5. package/dist/index.cjs.map +1 -1
  6. package/dist/index.d.ts +6 -5
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +599 -251
  9. package/dist/index.js.map +1 -1
  10. package/dist/primitives/Frame/Frame.d.ts +2 -3
  11. package/dist/primitives/Frame/Frame.d.ts.map +1 -1
  12. package/dist/primitives/Frame/Frame.types.d.ts +4 -15
  13. package/dist/primitives/Frame/Frame.types.d.ts.map +1 -1
  14. package/dist/primitives/Icon/Icon.d.ts +1 -1
  15. package/dist/primitives/Icon/Icon.d.ts.map +1 -1
  16. package/dist/primitives/Icon/Icon.types.d.ts +7 -12
  17. package/dist/primitives/Icon/Icon.types.d.ts.map +1 -1
  18. package/dist/primitives/Text/Text.d.ts.map +1 -1
  19. package/dist/primitives/Text/Text.types.d.ts +9 -4
  20. package/dist/primitives/Text/Text.types.d.ts.map +1 -1
  21. package/dist/primitives/Wrapper/Wrapper.d.ts +1 -1
  22. package/dist/primitives/Wrapper/Wrapper.types.d.ts +1 -1
  23. package/dist/registry/icons.d.ts +7 -0
  24. package/dist/registry/icons.d.ts.map +1 -0
  25. package/dist/registry/index.d.ts +2 -0
  26. package/dist/registry/index.d.ts.map +1 -1
  27. package/dist/registry/registry.d.ts.map +1 -1
  28. package/dist/registry/types.d.ts +1 -1
  29. package/dist/registry/types.d.ts.map +1 -1
  30. package/dist/theme/FrameContext.d.ts +7 -5
  31. package/dist/theme/FrameContext.d.ts.map +1 -1
  32. package/dist/theme/NewtoneProvider.d.ts +5 -6
  33. package/dist/theme/NewtoneProvider.d.ts.map +1 -1
  34. package/dist/theme/defaults.d.ts.map +1 -1
  35. package/dist/theme/types.d.ts +38 -24
  36. package/dist/theme/types.d.ts.map +1 -1
  37. package/dist/tokens/computeTokens.d.ts +82 -7
  38. package/dist/tokens/computeTokens.d.ts.map +1 -1
  39. package/dist/tokens/types.d.ts +58 -16
  40. package/dist/tokens/types.d.ts.map +1 -1
  41. package/dist/tokens/useTokens.d.ts +2 -23
  42. package/dist/tokens/useTokens.d.ts.map +1 -1
  43. package/package.json +1 -1
  44. package/src/composites/actions/Button/Button.styles.ts +53 -80
  45. package/src/composites/actions/Button/Button.tsx +6 -2
  46. package/src/composites/form-controls/Select/SelectOption.tsx +2 -2
  47. package/src/composites/form-controls/Toggle/Toggle.styles.ts +1 -1
  48. package/src/composites/range-inputs/ColorScaleSlider/ColorScaleSlider.styles.ts +1 -1
  49. package/src/composites/range-inputs/Slider/Slider.styles.ts +2 -2
  50. package/src/index.ts +13 -4
  51. package/src/primitives/Frame/Frame.tsx +10 -18
  52. package/src/primitives/Frame/Frame.types.ts +5 -17
  53. package/src/primitives/Icon/Icon.tsx +4 -6
  54. package/src/primitives/Icon/Icon.types.ts +7 -14
  55. package/src/primitives/Text/Text.tsx +18 -8
  56. package/src/primitives/Text/Text.types.ts +9 -4
  57. package/src/primitives/Wrapper/Wrapper.tsx +1 -1
  58. package/src/primitives/Wrapper/Wrapper.types.ts +1 -1
  59. package/src/registry/icons.ts +111 -0
  60. package/src/registry/index.ts +3 -0
  61. package/src/registry/registry.ts +40 -24
  62. package/src/registry/types.ts +1 -1
  63. package/src/theme/FrameContext.tsx +7 -5
  64. package/src/theme/NewtoneProvider.tsx +5 -10
  65. package/src/theme/defaults.ts +0 -9
  66. package/src/theme/types.ts +53 -26
  67. package/src/tokens/computeTokens.ts +338 -116
  68. package/src/tokens/types.ts +74 -16
  69. package/src/tokens/useTokens.ts +16 -33
@@ -15,11 +15,6 @@ export interface FontConfig {
15
15
  readonly fallback: string; // CSS fallback stack
16
16
  }
17
17
 
18
- /**
19
- * Theme names for different UI contexts
20
- */
21
- export type ThemeName = 'neutral' | 'primary' | 'secondary' | 'strong';
22
-
23
18
  /**
24
19
  * Elevation levels for surfaces (internal)
25
20
  * 0 = sunken, 1 = default, 2 = elevated
@@ -33,16 +28,6 @@ export type ElevationLevel = 0 | 1 | 2;
33
28
  */
34
29
  export type FrameElevation = -2 | -1 | 0 | 1 | 2;
35
30
 
36
- /**
37
- * Theme mapping: which palette and normalizedValue to use for backgrounds/text
38
- * Based on playground theme preview logic
39
- */
40
- export interface ThemeMapping {
41
- readonly paletteIndex: number; // Index into ColorSystemConfig.palettes
42
- readonly lightModeNv: number; // normalizedValue for light mode background
43
- readonly darkModeNv: number; // normalizedValue for dark mode background
44
- }
45
-
46
31
  /**
47
32
  * Complete color system configuration
48
33
  */
@@ -51,20 +36,63 @@ export interface ColorSystemConfig {
51
36
  readonly palettes: ReadonlyArray<PaletteConfig>;
52
37
  }
53
38
 
39
+ /**
40
+ * Overrides for hardcoded token computation constants.
41
+ * All values are optional — omitted fields fall back to engine defaults.
42
+ *
43
+ * All values are NV (normalized value / luminosity) offsets on a unified scale.
44
+ * 0.10 means the same 10% luminosity shift whether applied to borders, text,
45
+ * or interactive components. Direction auto-inverts per effective mode
46
+ * (darker in light mode, lighter in dark mode) unless noted otherwise.
47
+ */
48
+ export interface TokenOverrides {
49
+ // --- Offset fields (all magnitudes, direction auto-inverts per effective mode) ---
50
+ // Light mode
51
+ readonly interactiveComponentOffset?: number; // default: 0.04 (auto-inverts)
52
+ readonly hoverShift?: number; // default: 0.06 (auto-inverts)
53
+ readonly activeShift?: number; // default: 0.08 (auto-inverts)
54
+ readonly borderOffset?: number; // default: 0.08 (auto-inverts)
55
+ // Dark mode
56
+ readonly interactiveComponentOffsetDark?: number; // default: 0.04 (auto-inverts)
57
+ readonly hoverShiftDark?: number; // default: 0.06 (auto-inverts)
58
+ readonly activeShiftDark?: number; // default: 0.08 (auto-inverts)
59
+ readonly borderOffsetDark?: number; // default: 0.08 (auto-inverts)
60
+ readonly borderFocusedOffset?: number; // default: 0.16 (auto-inverts)
61
+ readonly borderFocusedOffsetDark?: number; // default: 0.16 (auto-inverts)
62
+ readonly borderFilledOffset?: number; // default: 0.24 (auto-inverts)
63
+ readonly borderFilledOffsetDark?: number; // default: 0.24 (auto-inverts)
64
+
65
+ // --- Normalized tokens (light mode: 0 = lightest, 1 = darkest) ---
66
+ // When present, computeTokens uses absolute positions instead of baseNv + offset.
67
+ // All themes share the same lightness positions; palette (hue/sat) varies per theme.
68
+ // Background: absolute positions — ground is Background/01 (elevated)
69
+ readonly backgroundElevated?: number; // default: 0 (ground — lightest)
70
+ readonly backgroundDefault?: number; // default: 0.03
71
+ readonly backgroundSunken?: number; // default: 0.06
72
+ // Text: absolute positions at bg01 — elevation-compensated by computeTokens on deeper surfaces
73
+ readonly textPrimaryNormalized?: number; // default: 0.9 (max contrast)
74
+ readonly textSecondaryNormalized?: number; // default: 0.7
75
+ readonly textTertiaryNormalized?: number; // default: 0.5
76
+ readonly textDisabledNormalized?: number; // default: 0.3
77
+
78
+ // --- Normalized tokens (dark mode: 0 = darkest, 1 = lightest) ---
79
+ // Same semantics as light mode but scale direction is inverted.
80
+ // Background: ground is Background/01 (elevated = lightest dark surface)
81
+ readonly backgroundElevatedDark?: number; // default: 0.24 (ground — lightest dark surface)
82
+ readonly backgroundDefaultDark?: number; // default: 0.20
83
+ readonly backgroundSunkenDark?: number; // default: 0.16
84
+ // Text: absolute positions at bg01 — elevation-compensated by computeTokens on deeper surfaces
85
+ readonly textPrimaryNormalizedDark?: number; // default: 1.0 (max contrast — lightest)
86
+ readonly textSecondaryNormalizedDark?: number; // default: 0.8
87
+ readonly textTertiaryNormalizedDark?: number; // default: 0.6
88
+ readonly textDisabledNormalizedDark?: number; // default: 0.4
89
+ }
90
+
54
91
  /**
55
92
  * Newtone theme configuration
56
93
  */
57
94
  export interface NewtoneThemeConfig {
58
95
  readonly colorSystem: ColorSystemConfig;
59
- readonly themes: {
60
- readonly neutral: ThemeMapping;
61
- readonly primary: ThemeMapping;
62
- readonly secondary: ThemeMapping;
63
- readonly strong: ThemeMapping;
64
- };
65
- readonly elevation: {
66
- readonly offsets: readonly [number, number, number]; // NV offsets for [sunken, default, elevated]
67
- };
68
96
  readonly spacing: {
69
97
  readonly '00': number; // base * 0
70
98
  readonly '02': number; // base * 0.25
@@ -120,6 +148,7 @@ export interface NewtoneThemeConfig {
120
148
  readonly weight: 100 | 200 | 300 | 400 | 500 | 600 | 700;
121
149
  readonly autoGrade: boolean; // true = mode-aware grade (light=-25, dark=200)
122
150
  };
151
+ readonly tokenOverrides?: TokenOverrides;
123
152
  }
124
153
 
125
154
  /**
@@ -128,7 +157,5 @@ export interface NewtoneThemeConfig {
128
157
  export interface NewtoneThemeContext {
129
158
  readonly config: NewtoneThemeConfig;
130
159
  readonly mode: ColorMode;
131
- readonly theme: ThemeName;
132
160
  readonly setMode: (mode: ColorMode) => void;
133
- readonly setTheme: (theme: ThemeName) => void;
134
161
  }