@newtonedev/components 0.1.3 → 0.1.5

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 (231) hide show
  1. package/dist/composites/actions/Button/Button.d.ts +37 -0
  2. package/dist/composites/actions/Button/Button.d.ts.map +1 -0
  3. package/dist/composites/actions/Button/Button.styles.d.ts +63 -0
  4. package/dist/composites/actions/Button/Button.styles.d.ts.map +1 -0
  5. package/dist/{Button → composites/actions/Button}/Button.types.d.ts +12 -3
  6. package/dist/composites/actions/Button/Button.types.d.ts.map +1 -0
  7. package/dist/composites/actions/Button/index.d.ts.map +1 -0
  8. package/dist/composites/form-controls/Select/Select.d.ts.map +1 -0
  9. package/dist/{Select → composites/form-controls/Select}/Select.styles.d.ts +1 -1
  10. package/dist/composites/form-controls/Select/Select.styles.d.ts.map +1 -0
  11. package/dist/composites/form-controls/Select/Select.types.d.ts.map +1 -0
  12. package/dist/composites/form-controls/Select/SelectOption.d.ts.map +1 -0
  13. package/dist/composites/form-controls/Select/index.d.ts.map +1 -0
  14. package/dist/composites/form-controls/Select/useSelect.d.ts.map +1 -0
  15. package/dist/composites/form-controls/TextInput/TextInput.d.ts.map +1 -0
  16. package/dist/{TextInput → composites/form-controls/TextInput}/TextInput.styles.d.ts +1 -1
  17. package/dist/composites/form-controls/TextInput/TextInput.styles.d.ts.map +1 -0
  18. package/dist/composites/form-controls/TextInput/TextInput.types.d.ts.map +1 -0
  19. package/dist/composites/form-controls/TextInput/index.d.ts.map +1 -0
  20. package/dist/composites/form-controls/Toggle/Toggle.d.ts.map +1 -0
  21. package/dist/{Toggle → composites/form-controls/Toggle}/Toggle.styles.d.ts +1 -1
  22. package/dist/composites/form-controls/Toggle/Toggle.styles.d.ts.map +1 -0
  23. package/dist/composites/form-controls/Toggle/Toggle.types.d.ts.map +1 -0
  24. package/dist/composites/form-controls/Toggle/index.d.ts.map +1 -0
  25. package/dist/composites/layout/AppShell/AppShell.d.ts.map +1 -0
  26. package/dist/{AppShell → composites/layout/AppShell}/AppShell.styles.d.ts +1 -1
  27. package/dist/composites/layout/AppShell/AppShell.styles.d.ts.map +1 -0
  28. package/dist/composites/layout/AppShell/AppShell.types.d.ts.map +1 -0
  29. package/dist/composites/layout/AppShell/index.d.ts.map +1 -0
  30. package/dist/composites/layout/Card/Card.d.ts.map +1 -0
  31. package/dist/{Card → composites/layout/Card}/Card.styles.d.ts +1 -1
  32. package/dist/composites/layout/Card/Card.styles.d.ts.map +1 -0
  33. package/dist/{Card → composites/layout/Card}/Card.types.d.ts +1 -1
  34. package/dist/composites/layout/Card/Card.types.d.ts.map +1 -0
  35. package/dist/composites/layout/Card/index.d.ts.map +1 -0
  36. package/dist/composites/layout/Navbar/Navbar.d.ts.map +1 -0
  37. package/dist/{Navbar → composites/layout/Navbar}/Navbar.styles.d.ts +1 -1
  38. package/dist/composites/layout/Navbar/Navbar.styles.d.ts.map +1 -0
  39. package/dist/composites/layout/Navbar/Navbar.types.d.ts.map +1 -0
  40. package/dist/composites/layout/Navbar/index.d.ts.map +1 -0
  41. package/dist/composites/layout/Sidebar/Sidebar.d.ts.map +1 -0
  42. package/dist/{Sidebar → composites/layout/Sidebar}/Sidebar.styles.d.ts +1 -1
  43. package/dist/composites/layout/Sidebar/Sidebar.styles.d.ts.map +1 -0
  44. package/dist/composites/layout/Sidebar/Sidebar.types.d.ts.map +1 -0
  45. package/dist/composites/layout/Sidebar/index.d.ts.map +1 -0
  46. package/dist/composites/overlays/Popover/Popover.d.ts.map +1 -0
  47. package/dist/{Popover → composites/overlays/Popover}/Popover.styles.d.ts +1 -1
  48. package/dist/composites/overlays/Popover/Popover.styles.d.ts.map +1 -0
  49. package/dist/composites/overlays/Popover/Popover.types.d.ts.map +1 -0
  50. package/dist/composites/overlays/Popover/index.d.ts.map +1 -0
  51. package/dist/composites/overlays/Popover/usePopover.d.ts.map +1 -0
  52. package/dist/composites/range-inputs/ColorScaleSlider/ColorScaleSlider.d.ts.map +1 -0
  53. package/dist/{ColorScaleSlider → composites/range-inputs/ColorScaleSlider}/ColorScaleSlider.styles.d.ts +1 -1
  54. package/dist/composites/range-inputs/ColorScaleSlider/ColorScaleSlider.styles.d.ts.map +1 -0
  55. package/dist/composites/range-inputs/ColorScaleSlider/ColorScaleSlider.types.d.ts.map +1 -0
  56. package/dist/composites/range-inputs/ColorScaleSlider/index.d.ts.map +1 -0
  57. package/dist/composites/range-inputs/HueSlider/HueSlider.d.ts.map +1 -0
  58. package/dist/{HueSlider → composites/range-inputs/HueSlider}/HueSlider.styles.d.ts +1 -1
  59. package/dist/composites/range-inputs/HueSlider/HueSlider.styles.d.ts.map +1 -0
  60. package/dist/composites/range-inputs/HueSlider/HueSlider.types.d.ts.map +1 -0
  61. package/dist/composites/range-inputs/HueSlider/index.d.ts.map +1 -0
  62. package/dist/composites/range-inputs/Slider/Slider.d.ts.map +1 -0
  63. package/dist/{Slider → composites/range-inputs/Slider}/Slider.styles.d.ts +1 -1
  64. package/dist/composites/range-inputs/Slider/Slider.styles.d.ts.map +1 -0
  65. package/dist/composites/range-inputs/Slider/Slider.types.d.ts.map +1 -0
  66. package/dist/composites/range-inputs/Slider/index.d.ts.map +1 -0
  67. package/dist/index.cjs +999 -620
  68. package/dist/index.cjs.map +1 -1
  69. package/dist/index.d.ts +26 -26
  70. package/dist/index.d.ts.map +1 -1
  71. package/dist/index.js +955 -576
  72. package/dist/index.js.map +1 -1
  73. package/dist/primitives/Icon/Icon.d.ts.map +1 -1
  74. package/dist/primitives/Wrapper/Wrapper.types.d.ts +1 -1
  75. package/dist/primitives/Wrapper/Wrapper.types.d.ts.map +1 -1
  76. package/dist/registry/registry.d.ts.map +1 -1
  77. package/dist/tokens/computeTokens.d.ts.map +1 -1
  78. package/dist/tokens/types.d.ts +10 -0
  79. package/dist/tokens/types.d.ts.map +1 -1
  80. package/dist/tokens/useTokens.d.ts +20 -2
  81. package/dist/tokens/useTokens.d.ts.map +1 -1
  82. package/package.json +1 -1
  83. package/src/composites/actions/Button/Button.styles.ts +365 -0
  84. package/src/composites/actions/Button/Button.tsx +115 -0
  85. package/src/{Button → composites/actions/Button}/Button.types.ts +14 -3
  86. package/src/{Select → composites/form-controls/Select}/Select.styles.ts +1 -1
  87. package/src/{Select → composites/form-controls/Select}/Select.tsx +4 -4
  88. package/src/{Select → composites/form-controls/Select}/SelectOption.tsx +2 -2
  89. package/src/{TextInput → composites/form-controls/TextInput}/TextInput.styles.ts +1 -1
  90. package/src/{TextInput → composites/form-controls/TextInput}/TextInput.tsx +1 -1
  91. package/src/{Toggle → composites/form-controls/Toggle}/Toggle.styles.ts +1 -1
  92. package/src/{Toggle → composites/form-controls/Toggle}/Toggle.tsx +1 -1
  93. package/src/{AppShell → composites/layout/AppShell}/AppShell.styles.ts +1 -1
  94. package/src/{AppShell → composites/layout/AppShell}/AppShell.tsx +1 -1
  95. package/src/{Card → composites/layout/Card}/Card.styles.ts +1 -1
  96. package/src/{Card → composites/layout/Card}/Card.tsx +1 -1
  97. package/src/{Card → composites/layout/Card}/Card.types.ts +1 -1
  98. package/src/{Navbar → composites/layout/Navbar}/Navbar.styles.ts +1 -1
  99. package/src/{Navbar → composites/layout/Navbar}/Navbar.tsx +1 -1
  100. package/src/{Sidebar → composites/layout/Sidebar}/Sidebar.styles.ts +1 -1
  101. package/src/{Sidebar → composites/layout/Sidebar}/Sidebar.tsx +1 -1
  102. package/src/{Popover → composites/overlays/Popover}/Popover.styles.ts +1 -1
  103. package/src/{Popover → composites/overlays/Popover}/Popover.tsx +1 -1
  104. package/src/{ColorScaleSlider → composites/range-inputs/ColorScaleSlider}/ColorScaleSlider.styles.ts +1 -1
  105. package/src/{ColorScaleSlider → composites/range-inputs/ColorScaleSlider}/ColorScaleSlider.tsx +1 -1
  106. package/src/{HueSlider → composites/range-inputs/HueSlider}/HueSlider.styles.ts +1 -1
  107. package/src/{HueSlider → composites/range-inputs/HueSlider}/HueSlider.tsx +1 -1
  108. package/src/{Slider → composites/range-inputs/Slider}/Slider.styles.ts +1 -1
  109. package/src/{Slider → composites/range-inputs/Slider}/Slider.tsx +1 -1
  110. package/src/index.ts +27 -27
  111. package/src/primitives/Icon/Icon.tsx +16 -1
  112. package/src/primitives/Wrapper/Wrapper.types.ts +1 -1
  113. package/src/registry/registry.ts +213 -1
  114. package/src/tokens/computeTokens.ts +16 -0
  115. package/src/tokens/types.ts +10 -0
  116. package/src/tokens/useTokens.ts +25 -3
  117. package/dist/AppShell/AppShell.d.ts.map +0 -1
  118. package/dist/AppShell/AppShell.styles.d.ts.map +0 -1
  119. package/dist/AppShell/AppShell.types.d.ts.map +0 -1
  120. package/dist/AppShell/index.d.ts.map +0 -1
  121. package/dist/Button/Button.d.ts +0 -28
  122. package/dist/Button/Button.d.ts.map +0 -1
  123. package/dist/Button/Button.styles.d.ts +0 -46
  124. package/dist/Button/Button.styles.d.ts.map +0 -1
  125. package/dist/Button/Button.types.d.ts.map +0 -1
  126. package/dist/Button/index.d.ts.map +0 -1
  127. package/dist/Card/Card.d.ts.map +0 -1
  128. package/dist/Card/Card.styles.d.ts.map +0 -1
  129. package/dist/Card/Card.types.d.ts.map +0 -1
  130. package/dist/Card/index.d.ts.map +0 -1
  131. package/dist/ColorScaleSlider/ColorScaleSlider.d.ts.map +0 -1
  132. package/dist/ColorScaleSlider/ColorScaleSlider.styles.d.ts.map +0 -1
  133. package/dist/ColorScaleSlider/ColorScaleSlider.types.d.ts.map +0 -1
  134. package/dist/ColorScaleSlider/index.d.ts.map +0 -1
  135. package/dist/HueSlider/HueSlider.d.ts.map +0 -1
  136. package/dist/HueSlider/HueSlider.styles.d.ts.map +0 -1
  137. package/dist/HueSlider/HueSlider.types.d.ts.map +0 -1
  138. package/dist/HueSlider/index.d.ts.map +0 -1
  139. package/dist/Navbar/Navbar.d.ts.map +0 -1
  140. package/dist/Navbar/Navbar.styles.d.ts.map +0 -1
  141. package/dist/Navbar/Navbar.types.d.ts.map +0 -1
  142. package/dist/Navbar/index.d.ts.map +0 -1
  143. package/dist/Popover/Popover.d.ts.map +0 -1
  144. package/dist/Popover/Popover.styles.d.ts.map +0 -1
  145. package/dist/Popover/Popover.types.d.ts.map +0 -1
  146. package/dist/Popover/index.d.ts.map +0 -1
  147. package/dist/Popover/usePopover.d.ts.map +0 -1
  148. package/dist/Select/Select.d.ts.map +0 -1
  149. package/dist/Select/Select.styles.d.ts.map +0 -1
  150. package/dist/Select/Select.types.d.ts.map +0 -1
  151. package/dist/Select/SelectOption.d.ts.map +0 -1
  152. package/dist/Select/index.d.ts.map +0 -1
  153. package/dist/Select/useSelect.d.ts.map +0 -1
  154. package/dist/Sidebar/Sidebar.d.ts.map +0 -1
  155. package/dist/Sidebar/Sidebar.styles.d.ts.map +0 -1
  156. package/dist/Sidebar/Sidebar.types.d.ts.map +0 -1
  157. package/dist/Sidebar/index.d.ts.map +0 -1
  158. package/dist/Slider/Slider.d.ts.map +0 -1
  159. package/dist/Slider/Slider.styles.d.ts.map +0 -1
  160. package/dist/Slider/Slider.types.d.ts.map +0 -1
  161. package/dist/Slider/index.d.ts.map +0 -1
  162. package/dist/TextInput/TextInput.d.ts.map +0 -1
  163. package/dist/TextInput/TextInput.styles.d.ts.map +0 -1
  164. package/dist/TextInput/TextInput.types.d.ts.map +0 -1
  165. package/dist/TextInput/index.d.ts.map +0 -1
  166. package/dist/Toggle/Toggle.d.ts.map +0 -1
  167. package/dist/Toggle/Toggle.styles.d.ts.map +0 -1
  168. package/dist/Toggle/Toggle.types.d.ts.map +0 -1
  169. package/dist/Toggle/index.d.ts.map +0 -1
  170. package/src/Button/Button.styles.ts +0 -133
  171. package/src/Button/Button.tsx +0 -86
  172. /package/dist/{Button → composites/actions/Button}/index.d.ts +0 -0
  173. /package/dist/{Select → composites/form-controls/Select}/Select.d.ts +0 -0
  174. /package/dist/{Select → composites/form-controls/Select}/Select.types.d.ts +0 -0
  175. /package/dist/{Select → composites/form-controls/Select}/SelectOption.d.ts +0 -0
  176. /package/dist/{Select → composites/form-controls/Select}/index.d.ts +0 -0
  177. /package/dist/{Select → composites/form-controls/Select}/useSelect.d.ts +0 -0
  178. /package/dist/{TextInput → composites/form-controls/TextInput}/TextInput.d.ts +0 -0
  179. /package/dist/{TextInput → composites/form-controls/TextInput}/TextInput.types.d.ts +0 -0
  180. /package/dist/{TextInput → composites/form-controls/TextInput}/index.d.ts +0 -0
  181. /package/dist/{Toggle → composites/form-controls/Toggle}/Toggle.d.ts +0 -0
  182. /package/dist/{Toggle → composites/form-controls/Toggle}/Toggle.types.d.ts +0 -0
  183. /package/dist/{Toggle → composites/form-controls/Toggle}/index.d.ts +0 -0
  184. /package/dist/{AppShell → composites/layout/AppShell}/AppShell.d.ts +0 -0
  185. /package/dist/{AppShell → composites/layout/AppShell}/AppShell.types.d.ts +0 -0
  186. /package/dist/{AppShell → composites/layout/AppShell}/index.d.ts +0 -0
  187. /package/dist/{Card → composites/layout/Card}/Card.d.ts +0 -0
  188. /package/dist/{Card → composites/layout/Card}/index.d.ts +0 -0
  189. /package/dist/{Navbar → composites/layout/Navbar}/Navbar.d.ts +0 -0
  190. /package/dist/{Navbar → composites/layout/Navbar}/Navbar.types.d.ts +0 -0
  191. /package/dist/{Navbar → composites/layout/Navbar}/index.d.ts +0 -0
  192. /package/dist/{Sidebar → composites/layout/Sidebar}/Sidebar.d.ts +0 -0
  193. /package/dist/{Sidebar → composites/layout/Sidebar}/Sidebar.types.d.ts +0 -0
  194. /package/dist/{Sidebar → composites/layout/Sidebar}/index.d.ts +0 -0
  195. /package/dist/{Popover → composites/overlays/Popover}/Popover.d.ts +0 -0
  196. /package/dist/{Popover → composites/overlays/Popover}/Popover.types.d.ts +0 -0
  197. /package/dist/{Popover → composites/overlays/Popover}/index.d.ts +0 -0
  198. /package/dist/{Popover → composites/overlays/Popover}/usePopover.d.ts +0 -0
  199. /package/dist/{ColorScaleSlider → composites/range-inputs/ColorScaleSlider}/ColorScaleSlider.d.ts +0 -0
  200. /package/dist/{ColorScaleSlider → composites/range-inputs/ColorScaleSlider}/ColorScaleSlider.types.d.ts +0 -0
  201. /package/dist/{ColorScaleSlider → composites/range-inputs/ColorScaleSlider}/index.d.ts +0 -0
  202. /package/dist/{HueSlider → composites/range-inputs/HueSlider}/HueSlider.d.ts +0 -0
  203. /package/dist/{HueSlider → composites/range-inputs/HueSlider}/HueSlider.types.d.ts +0 -0
  204. /package/dist/{HueSlider → composites/range-inputs/HueSlider}/index.d.ts +0 -0
  205. /package/dist/{Slider → composites/range-inputs/Slider}/Slider.d.ts +0 -0
  206. /package/dist/{Slider → composites/range-inputs/Slider}/Slider.types.d.ts +0 -0
  207. /package/dist/{Slider → composites/range-inputs/Slider}/index.d.ts +0 -0
  208. /package/src/{Button → composites/actions/Button}/index.ts +0 -0
  209. /package/src/{Select → composites/form-controls/Select}/Select.types.ts +0 -0
  210. /package/src/{Select → composites/form-controls/Select}/index.ts +0 -0
  211. /package/src/{Select → composites/form-controls/Select}/useSelect.ts +0 -0
  212. /package/src/{TextInput → composites/form-controls/TextInput}/TextInput.types.ts +0 -0
  213. /package/src/{TextInput → composites/form-controls/TextInput}/index.ts +0 -0
  214. /package/src/{Toggle → composites/form-controls/Toggle}/Toggle.types.ts +0 -0
  215. /package/src/{Toggle → composites/form-controls/Toggle}/index.ts +0 -0
  216. /package/src/{AppShell → composites/layout/AppShell}/AppShell.types.ts +0 -0
  217. /package/src/{AppShell → composites/layout/AppShell}/index.ts +0 -0
  218. /package/src/{Card → composites/layout/Card}/index.ts +0 -0
  219. /package/src/{Navbar → composites/layout/Navbar}/Navbar.types.ts +0 -0
  220. /package/src/{Navbar → composites/layout/Navbar}/index.ts +0 -0
  221. /package/src/{Sidebar → composites/layout/Sidebar}/Sidebar.types.ts +0 -0
  222. /package/src/{Sidebar → composites/layout/Sidebar}/index.ts +0 -0
  223. /package/src/{Popover → composites/overlays/Popover}/Popover.types.ts +0 -0
  224. /package/src/{Popover → composites/overlays/Popover}/index.ts +0 -0
  225. /package/src/{Popover → composites/overlays/Popover}/usePopover.ts +0 -0
  226. /package/src/{ColorScaleSlider → composites/range-inputs/ColorScaleSlider}/ColorScaleSlider.types.ts +0 -0
  227. /package/src/{ColorScaleSlider → composites/range-inputs/ColorScaleSlider}/index.ts +0 -0
  228. /package/src/{HueSlider → composites/range-inputs/HueSlider}/HueSlider.types.ts +0 -0
  229. /package/src/{HueSlider → composites/range-inputs/HueSlider}/index.ts +0 -0
  230. /package/src/{Slider → composites/range-inputs/Slider}/Slider.types.ts +0 -0
  231. /package/src/{Slider → composites/range-inputs/Slider}/index.ts +0 -0
@@ -1,8 +1,8 @@
1
1
  import React from 'react';
2
2
  import { Pressable, Text, View } from 'react-native';
3
3
  import type { SelectOption as SelectOptionType, SelectProps } from './Select.types';
4
- import { useTokens } from '../tokens/useTokens';
5
- import { Icon } from '../primitives/Icon/Icon';
4
+ import { useTokens } from '../../../tokens/useTokens';
5
+ import { Icon } from '../../../primitives/Icon/Icon';
6
6
  import { srgbToHex } from 'newtone';
7
7
 
8
8
  interface SelectOptionRowProps {
@@ -1,6 +1,6 @@
1
1
  import { StyleSheet } from 'react-native';
2
2
  import { srgbToHex } from 'newtone';
3
- import type { ResolvedTokens } from '../tokens/types';
3
+ import type { ResolvedTokens } from '../../../tokens/types';
4
4
 
5
5
  export function getTextInputStyles(tokens: ResolvedTokens, disabled: boolean) {
6
6
  return StyleSheet.create({
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import { View, Text, TextInput as RNTextInput } from 'react-native';
3
3
  import type { TextInputProps } from './TextInput.types';
4
- import { useTokens } from '../tokens/useTokens';
4
+ import { useTokens } from '../../../tokens/useTokens';
5
5
  import { getTextInputStyles } from './TextInput.styles';
6
6
  import { srgbToHex } from 'newtone';
7
7
 
@@ -1,6 +1,6 @@
1
1
  import { StyleSheet } from 'react-native';
2
2
  import { srgbToHex } from 'newtone';
3
- import type { ResolvedTokens } from '../tokens/types';
3
+ import type { ResolvedTokens } from '../../../tokens/types';
4
4
 
5
5
  const TRACK_WIDTH = 40;
6
6
  const TRACK_HEIGHT = 22;
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import { View, Text, Pressable } from 'react-native';
3
3
  import type { ToggleProps } from './Toggle.types';
4
- import { useTokens } from '../tokens/useTokens';
4
+ import { useTokens } from '../../../tokens/useTokens';
5
5
  import { getToggleStyles } from './Toggle.styles';
6
6
 
7
7
  export function Toggle({
@@ -1,6 +1,6 @@
1
1
  import { StyleSheet } from 'react-native';
2
2
  import { srgbToHex } from 'newtone';
3
- import type { ResolvedTokens } from '../tokens/types';
3
+ import type { ResolvedTokens } from '../../../tokens/types';
4
4
 
5
5
  export function getAppShellStyles(tokens: ResolvedTokens) {
6
6
  return StyleSheet.create({
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import { View } from 'react-native';
3
3
  import type { AppShellProps } from './AppShell.types';
4
- import { useTokens } from '../tokens/useTokens';
4
+ import { useTokens } from '../../../tokens/useTokens';
5
5
  import { getAppShellStyles } from './AppShell.styles';
6
6
 
7
7
  export function AppShell({ sidebar, children }: AppShellProps) {
@@ -1,6 +1,6 @@
1
1
  import { StyleSheet } from 'react-native';
2
2
  import { srgbToHex } from 'newtone';
3
- import type { ResolvedTokens } from '../tokens/types';
3
+ import type { ResolvedTokens } from '../../../tokens/types';
4
4
 
5
5
  export function getCardStyles(tokens: ResolvedTokens, disabled: boolean) {
6
6
  return StyleSheet.create({
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import { View } from 'react-native';
3
3
  import type { CardProps } from './Card.types';
4
- import { useTokens } from '../tokens/useTokens';
4
+ import { useTokens } from '../../../tokens/useTokens';
5
5
  import { getCardStyles } from './Card.styles';
6
6
 
7
7
  export function Card({
@@ -1,5 +1,5 @@
1
1
  import type { ViewStyle } from 'react-native';
2
- import type { ElevationLevel } from '../theme/types';
2
+ import type { ElevationLevel } from '../../../theme/types';
3
3
 
4
4
  export interface CardProps {
5
5
  readonly children: React.ReactNode;
@@ -1,6 +1,6 @@
1
1
  import { StyleSheet } from 'react-native';
2
2
  import { srgbToHex } from 'newtone';
3
- import type { ResolvedTokens } from '../tokens/types';
3
+ import type { ResolvedTokens } from '../../../tokens/types';
4
4
 
5
5
  interface NavbarStyleInput {
6
6
  readonly tokens: ResolvedTokens;
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import { View } from 'react-native';
3
3
  import type { NavbarProps } from './Navbar.types';
4
- import { useTokens } from '../tokens/useTokens';
4
+ import { useTokens } from '../../../tokens/useTokens';
5
5
  import { getNavbarStyles } from './Navbar.styles';
6
6
 
7
7
  export function Navbar({
@@ -1,6 +1,6 @@
1
1
  import { StyleSheet } from 'react-native';
2
2
  import { srgbToHex } from 'newtone';
3
- import type { ResolvedTokens } from '../tokens/types';
3
+ import type { ResolvedTokens } from '../../../tokens/types';
4
4
 
5
5
  interface SidebarStyleInput {
6
6
  readonly tokens: ResolvedTokens;
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import { View, ScrollView } from 'react-native';
3
3
  import type { SidebarProps } from './Sidebar.types';
4
- import { useTokens } from '../tokens/useTokens';
4
+ import { useTokens } from '../../../tokens/useTokens';
5
5
  import { getSidebarStyles } from './Sidebar.styles';
6
6
 
7
7
  export function Sidebar({
@@ -1,6 +1,6 @@
1
1
  import { StyleSheet } from 'react-native';
2
2
  import { srgbToHex } from 'newtone';
3
- import type { ResolvedTokens } from '../tokens/types';
3
+ import type { ResolvedTokens } from '../../../tokens/types';
4
4
 
5
5
  export function getPopoverStyles(
6
6
  tokens: ResolvedTokens,
@@ -1,7 +1,7 @@
1
1
  import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
2
2
  import { View } from 'react-native';
3
3
  import type { PopoverProps } from './Popover.types';
4
- import { useTokens } from '../tokens/useTokens';
4
+ import { useTokens } from '../../../tokens/useTokens';
5
5
  import { getPopoverStyles } from './Popover.styles';
6
6
 
7
7
  // Module-level: set of close callbacks for all open Popovers.
@@ -1,6 +1,6 @@
1
1
  import { StyleSheet } from 'react-native';
2
2
  import { srgbToHex } from 'newtone';
3
- import type { ResolvedTokens } from '../tokens/types';
3
+ import type { ResolvedTokens } from '../../../tokens/types';
4
4
 
5
5
  const TRACK_HEIGHT = 22;
6
6
  export const THUMB_SIZE = 18;
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  import { View, Text, PanResponder, Animated } from 'react-native';
3
3
  import { srgbToHex } from 'newtone';
4
4
  import type { ColorScaleSliderProps } from './ColorScaleSlider.types';
5
- import { useTokens } from '../tokens/useTokens';
5
+ import { useTokens } from '../../../tokens/useTokens';
6
6
  import { getColorScaleSliderStyles, THUMB_SIZE } from './ColorScaleSlider.styles';
7
7
 
8
8
  /**
@@ -1,6 +1,6 @@
1
1
  import { StyleSheet } from 'react-native';
2
2
  import { srgbToHex } from 'newtone';
3
- import type { ResolvedTokens } from '../tokens/types';
3
+ import type { ResolvedTokens } from '../../../tokens/types';
4
4
 
5
5
  const TRACK_HEIGHT = 22;
6
6
  export const THUMB_SIZE = 18;
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import { View, Text, TextInput, PanResponder } from 'react-native';
3
3
  import type { HueSliderProps } from './HueSlider.types';
4
- import { useTokens } from '../tokens/useTokens';
4
+ import { useTokens } from '../../../tokens/useTokens';
5
5
  import {
6
6
  getHueSliderStyles,
7
7
  buildHueSegments,
@@ -1,6 +1,6 @@
1
1
  import { StyleSheet } from 'react-native';
2
2
  import { srgbToHex } from 'newtone';
3
- import type { ResolvedTokens } from '../tokens/types';
3
+ import type { ResolvedTokens } from '../../../tokens/types';
4
4
 
5
5
  const TRACK_HEIGHT = 6;
6
6
  export const THUMB_SIZE = 16;
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import { View, Text, TextInput, PanResponder } from 'react-native';
3
3
  import type { SliderProps } from './Slider.types';
4
- import { useTokens } from '../tokens/useTokens';
4
+ import { useTokens } from '../../../tokens/useTokens';
5
5
  import { getSliderStyles, THUMB_SIZE } from './Slider.styles';
6
6
 
7
7
  export function Slider({
package/src/index.ts CHANGED
@@ -20,12 +20,12 @@ export { useTokens } from './tokens/useTokens';
20
20
  export { computeTokens } from './tokens/computeTokens';
21
21
  export type { ResolvedTokens } from './tokens/types';
22
22
 
23
- // Components
24
- export { Button } from './Button/Button';
25
- export type { ButtonProps, ButtonVariant, ButtonSize, ButtonIconPosition } from './Button/Button.types';
23
+ // Composite Components
24
+ export { Button } from './composites/actions/Button/Button';
25
+ export type { ButtonProps, ButtonVariant, ButtonSemantic, ButtonSize, ButtonIconPosition } from './composites/actions/Button/Button.types';
26
26
 
27
- export { Card } from './Card/Card';
28
- export type { CardProps } from './Card/Card.types';
27
+ export { Card } from './composites/layout/Card/Card';
28
+ export type { CardProps } from './composites/layout/Card/Card.types';
29
29
 
30
30
  export { useFocusVisible } from './primitives/useFocusVisible';
31
31
  export type { FocusVisibleResult } from './primitives/useFocusVisible';
@@ -52,28 +52,28 @@ export type {
52
52
  } from './primitives/Frame/Frame.types';
53
53
  export type { ResolvedCorners } from './primitives/Frame/Frame.utils';
54
54
 
55
- export { TextInput } from './TextInput/TextInput';
56
- export type { TextInputProps } from './TextInput/TextInput.types';
55
+ export { TextInput } from './composites/form-controls/TextInput/TextInput';
56
+ export type { TextInputProps } from './composites/form-controls/TextInput/TextInput.types';
57
57
 
58
- export { Popover } from './Popover/Popover';
59
- export type { PopoverProps, PopoverPlacement } from './Popover/Popover.types';
60
- export { usePopover } from './Popover/usePopover';
58
+ export { Popover } from './composites/overlays/Popover/Popover';
59
+ export type { PopoverProps, PopoverPlacement } from './composites/overlays/Popover/Popover.types';
60
+ export { usePopover } from './composites/overlays/Popover/usePopover';
61
61
 
62
- export { Select } from './Select/Select';
63
- export type { SelectProps, SelectOption, SelectOptionGroup, SelectItem } from './Select/Select.types';
64
- export { isOptionGroup } from './Select/Select.types';
62
+ export { Select } from './composites/form-controls/Select/Select';
63
+ export type { SelectProps, SelectOption, SelectOptionGroup, SelectItem } from './composites/form-controls/Select/Select.types';
64
+ export { isOptionGroup } from './composites/form-controls/Select/Select.types';
65
65
 
66
- export { Toggle } from './Toggle/Toggle';
67
- export type { ToggleProps } from './Toggle/Toggle.types';
66
+ export { Toggle } from './composites/form-controls/Toggle/Toggle';
67
+ export type { ToggleProps } from './composites/form-controls/Toggle/Toggle.types';
68
68
 
69
- export { Slider } from './Slider/Slider';
70
- export type { SliderProps } from './Slider/Slider.types';
69
+ export { Slider } from './composites/range-inputs/Slider/Slider';
70
+ export type { SliderProps } from './composites/range-inputs/Slider/Slider.types';
71
71
 
72
- export { HueSlider } from './HueSlider/HueSlider';
73
- export type { HueSliderProps } from './HueSlider/HueSlider.types';
72
+ export { HueSlider } from './composites/range-inputs/HueSlider/HueSlider';
73
+ export type { HueSliderProps } from './composites/range-inputs/HueSlider/HueSlider.types';
74
74
 
75
- export { ColorScaleSlider } from './ColorScaleSlider/ColorScaleSlider';
76
- export type { ColorScaleSliderProps } from './ColorScaleSlider/ColorScaleSlider.types';
75
+ export { ColorScaleSlider } from './composites/range-inputs/ColorScaleSlider/ColorScaleSlider';
76
+ export type { ColorScaleSliderProps } from './composites/range-inputs/ColorScaleSlider/ColorScaleSlider.types';
77
77
 
78
78
  export { Icon } from './primitives/Icon/Icon';
79
79
  export type { IconProps } from './primitives/Icon/Icon.types';
@@ -92,14 +92,14 @@ export type {
92
92
  TextAlign,
93
93
  } from './primitives/Text/Text.types';
94
94
 
95
- export { AppShell } from './AppShell/AppShell';
96
- export type { AppShellProps } from './AppShell/AppShell.types';
95
+ export { AppShell } from './composites/layout/AppShell/AppShell';
96
+ export type { AppShellProps } from './composites/layout/AppShell/AppShell.types';
97
97
 
98
- export { Sidebar } from './Sidebar/Sidebar';
99
- export type { SidebarProps } from './Sidebar/Sidebar.types';
98
+ export { Sidebar } from './composites/layout/Sidebar/Sidebar';
99
+ export type { SidebarProps } from './composites/layout/Sidebar/Sidebar.types';
100
100
 
101
- export { Navbar } from './Navbar/Navbar';
102
- export type { NavbarProps } from './Navbar/Navbar.types';
101
+ export { Navbar } from './composites/layout/Navbar/Navbar';
102
+ export type { NavbarProps } from './composites/layout/Navbar/Navbar.types';
103
103
 
104
104
  // Component registry + code generation
105
105
  export type {
@@ -42,8 +42,20 @@ export function Icon({
42
42
  const iconStyle = useMemo<TextStyle>(() => {
43
43
  // Use the provided size, or fall back to the theme's default text size.
44
44
  const fontSize = size ?? tokens.typography.size.base;
45
+
46
+ // Round to nearest Material Symbols optical size (20, 24, 40, 48)
47
+ // for optimal stroke weight and detail rendering.
48
+ const getOpticalSize = (size: number): number => {
49
+ if (size <= 22) return 20;
50
+ if (size <= 32) return 24;
51
+ if (size <= 44) return 40;
52
+ return 48;
53
+ };
54
+
45
55
  // Optical size adjusts stroke weight for readability at small sizes.
46
- const opsz = opticalSize ?? fontSize;
56
+ // Use explicit opticalSize if provided, otherwise auto-calculate from fontSize.
57
+ const opsz = opticalSize ?? getOpticalSize(fontSize);
58
+
47
59
  // Use the provided color, or fall back to the theme's primary text color.
48
60
  const iconColor = color ?? srgbToHex(tokens.textPrimary.srgb);
49
61
 
@@ -62,6 +74,9 @@ export function Icon({
62
74
  return {
63
75
  fontFamily,
64
76
  fontSize,
77
+ width: fontSize, // Explicit width ensures square rendering
78
+ height: fontSize, // Explicit height ensures square rendering
79
+ lineHeight: fontSize, // Prevent text line-height from affecting total height
65
80
  color: iconColor,
66
81
  userSelect: 'none', // web-only: prevents users from selecting the icon as text
67
82
  fontVariationSettings, // web-only: controls the variable font axes listed above
@@ -49,7 +49,7 @@ export interface WrapperProps {
49
49
  * Child elements. Must be React Native elements (View, Text, etc.).
50
50
  * Unlike Frame, raw strings are NOT auto-wrapped in `<Text>`.
51
51
  */
52
- readonly children: React.ReactNode;
52
+ readonly children?: React.ReactNode;
53
53
 
54
54
  // ── Layout ──
55
55
 
@@ -1,10 +1,12 @@
1
1
  import type { CategoryMeta, ComponentMeta } from './types';
2
2
 
3
3
  export const CATEGORIES: readonly CategoryMeta[] = [
4
+ { id: 'primitives', name: 'Design Primitives', description: 'Core building blocks for theme-aware layouts and typography' },
4
5
  { id: 'actions', name: 'Actions', description: 'Interactive elements that trigger actions' },
5
6
  { id: 'form-controls', name: 'Form Controls', description: 'Input elements for user data entry' },
6
- { id: 'range-inputs', name: 'Range Inputs', description: 'Slider controls for numeric values' },
7
+ { id: 'range-inputs', name: 'Range Inputs', description: 'Slider controls for numeric and continuous values' },
7
8
  { id: 'layout', name: 'Layout', description: 'Structural and container components' },
9
+ { id: 'overlays', name: 'Overlays', description: 'Floating and portal-based UI elements' },
8
10
  ];
9
11
 
10
12
  export const COMPONENTS: readonly ComponentMeta[] = [
@@ -387,6 +389,216 @@ export const COMPONENTS: readonly ComponentMeta[] = [
387
389
  },
388
390
  ],
389
391
  },
392
+ // ── Design Primitives ──
393
+ {
394
+ id: 'text',
395
+ name: 'Text',
396
+ importName: 'Text',
397
+ categoryId: 'primitives',
398
+ description: 'Typography primitive with semantic size, weight, color, font, and lineHeight',
399
+ hasChildren: true,
400
+ variants: [
401
+ { id: 'default', label: 'Default', props: {} },
402
+ { id: 'heading', label: 'Heading', props: { size: 'xl', weight: 'bold' } },
403
+ { id: 'subheading', label: 'Subheading', props: { size: 'lg', weight: 'semibold' } },
404
+ { id: 'body', label: 'Body', props: { size: 'base' } },
405
+ { id: 'caption', label: 'Caption', props: { size: 'sm', color: 'secondary' } },
406
+ { id: 'link', label: 'Link', props: { color: 'interactive', weight: 'medium' } },
407
+ { id: 'mono', label: 'Monospace', props: { font: 'mono', size: 'sm' } },
408
+ ],
409
+ editableProps: [
410
+ {
411
+ name: 'size',
412
+ label: 'Size',
413
+ control: 'select',
414
+ options: [
415
+ { label: 'Extra Small', value: 'xs' },
416
+ { label: 'Small', value: 'sm' },
417
+ { label: 'Base', value: 'base' },
418
+ { label: 'Medium', value: 'md' },
419
+ { label: 'Large', value: 'lg' },
420
+ { label: 'Extra Large', value: 'xl' },
421
+ { label: 'XXL', value: 'xxl' },
422
+ ],
423
+ defaultValue: 'base',
424
+ },
425
+ {
426
+ name: 'weight',
427
+ label: 'Weight',
428
+ control: 'select',
429
+ options: [
430
+ { label: 'Regular', value: 'regular' },
431
+ { label: 'Medium', value: 'medium' },
432
+ { label: 'Semibold', value: 'semibold' },
433
+ { label: 'Bold', value: 'bold' },
434
+ ],
435
+ defaultValue: 'regular',
436
+ },
437
+ {
438
+ name: 'color',
439
+ label: 'Color',
440
+ control: 'select',
441
+ options: [
442
+ { label: 'Primary', value: 'primary' },
443
+ { label: 'Secondary', value: 'secondary' },
444
+ { label: 'Interactive', value: 'interactive' },
445
+ ],
446
+ defaultValue: 'primary',
447
+ },
448
+ {
449
+ name: 'font',
450
+ label: 'Font',
451
+ control: 'select',
452
+ options: [
453
+ { label: 'Default', value: 'default' },
454
+ { label: 'Display', value: 'display' },
455
+ { label: 'Mono', value: 'mono' },
456
+ ],
457
+ defaultValue: 'default',
458
+ },
459
+ ],
460
+ },
461
+ {
462
+ id: 'icon',
463
+ name: 'Icon',
464
+ importName: 'Icon',
465
+ categoryId: 'primitives',
466
+ description: 'Material Symbols icon with size, fill, and color',
467
+ hasChildren: false,
468
+ variants: [
469
+ { id: 'home', label: 'Home', props: { name: 'home' } },
470
+ { id: 'settings', label: 'Settings', props: { name: 'settings' } },
471
+ { id: 'check', label: 'Check', props: { name: 'check' } },
472
+ { id: 'add', label: 'Add', props: { name: 'add' } },
473
+ { id: 'delete', label: 'Delete', props: { name: 'delete' } },
474
+ { id: 'search', label: 'Search', props: { name: 'search' } },
475
+ { id: 'filled', label: 'Filled Icon', props: { name: 'favorite', fill: 1 } },
476
+ { id: 'large', label: 'Large Icon', props: { name: 'star', size: 32 } },
477
+ ],
478
+ editableProps: [
479
+ {
480
+ name: 'name',
481
+ label: 'Icon Name',
482
+ control: 'text',
483
+ defaultValue: 'home',
484
+ },
485
+ {
486
+ name: 'size',
487
+ label: 'Size',
488
+ control: 'number',
489
+ defaultValue: 24,
490
+ },
491
+ {
492
+ name: 'fill',
493
+ label: 'Fill',
494
+ control: 'select',
495
+ options: [
496
+ { label: 'Outlined', value: 0 },
497
+ { label: 'Filled', value: 1 },
498
+ ],
499
+ defaultValue: 0,
500
+ },
501
+ ],
502
+ },
503
+ {
504
+ id: 'wrapper',
505
+ name: 'Wrapper',
506
+ importName: 'Wrapper',
507
+ categoryId: 'primitives',
508
+ description: 'Lightweight layout container with direction, spacing, and alignment (no theming)',
509
+ hasChildren: true,
510
+ variants: [
511
+ { id: 'vertical', label: 'Vertical Stack', props: { direction: 'vertical', gap: 'md' } },
512
+ { id: 'horizontal', label: 'Horizontal Row', props: { direction: 'horizontal', gap: 'md', align: 'center' } },
513
+ { id: 'padded', label: 'Padded', props: { padding: 'lg', gap: 'md' } },
514
+ { id: 'centered', label: 'Centered', props: { align: 'center', justify: 'center', padding: 'xl' } },
515
+ ],
516
+ editableProps: [
517
+ {
518
+ name: 'direction',
519
+ label: 'Direction',
520
+ control: 'select',
521
+ options: [
522
+ { label: 'Vertical', value: 'vertical' },
523
+ { label: 'Horizontal', value: 'horizontal' },
524
+ ],
525
+ defaultValue: 'vertical',
526
+ },
527
+ {
528
+ name: 'gap',
529
+ label: 'Gap',
530
+ control: 'select',
531
+ options: [
532
+ { label: 'None', value: '' },
533
+ { label: 'Small', value: 'sm' },
534
+ { label: 'Medium', value: 'md' },
535
+ { label: 'Large', value: 'lg' },
536
+ ],
537
+ defaultValue: '',
538
+ },
539
+ {
540
+ name: 'padding',
541
+ label: 'Padding',
542
+ control: 'select',
543
+ options: [
544
+ { label: 'None', value: '' },
545
+ { label: 'Small', value: 'sm' },
546
+ { label: 'Medium', value: 'md' },
547
+ { label: 'Large', value: 'lg' },
548
+ ],
549
+ defaultValue: '',
550
+ },
551
+ {
552
+ name: 'align',
553
+ label: 'Align',
554
+ control: 'select',
555
+ options: [
556
+ { label: 'Start', value: 'start' },
557
+ { label: 'Center', value: 'center' },
558
+ { label: 'End', value: 'end' },
559
+ ],
560
+ defaultValue: 'start',
561
+ },
562
+ {
563
+ name: 'justify',
564
+ label: 'Justify',
565
+ control: 'select',
566
+ options: [
567
+ { label: 'Start', value: 'start' },
568
+ { label: 'Center', value: 'center' },
569
+ { label: 'End', value: 'end' },
570
+ { label: 'Space Between', value: 'space-between' },
571
+ ],
572
+ defaultValue: 'start',
573
+ },
574
+ ],
575
+ },
576
+ // ── Range Inputs (Addition: ColorScaleSlider) ──
577
+ {
578
+ id: 'color-scale-slider',
579
+ name: 'ColorScaleSlider',
580
+ importName: 'ColorScaleSlider',
581
+ categoryId: 'range-inputs',
582
+ description: 'Interactive palette preview slider with color segments',
583
+ hasChildren: false,
584
+ variants: [
585
+ { id: 'default', label: 'Default', props: { label: 'Key Color' } },
586
+ ],
587
+ editableProps: [
588
+ {
589
+ name: 'label',
590
+ label: 'Label',
591
+ control: 'text',
592
+ defaultValue: 'Key Color',
593
+ },
594
+ {
595
+ name: 'disabled',
596
+ label: 'Disabled',
597
+ control: 'toggle',
598
+ defaultValue: false,
599
+ },
600
+ ],
601
+ },
390
602
  ];
391
603
 
392
604
  export function getComponent(id: string): ComponentMeta | undefined {
@@ -114,6 +114,21 @@ export function computeTokens(
114
114
  palette.paletteHueGrading
115
115
  );
116
116
 
117
+ // Compute interactive component background (FIXED -0.035 NV offset from current elevation)
118
+ // Unlike backgroundElevated/backgroundSunken which use discrete levels, this uses a fixed
119
+ // luminosity offset to ensure CONSISTENT visual contrast across all elevations (-2 to 2).
120
+ // Used by: Button (neutral primary variant) and future components with neutral filled backgrounds.
121
+ const INTERACTIVE_COMPONENT_OFFSET = -0.035; // Slightly darker than container for depth
122
+ const interactiveComponentNv = Math.max(0, Math.min(1, backgroundNv + INTERACTIVE_COMPONENT_OFFSET));
123
+ const backgroundInteractive = getColor(
124
+ palette.hue,
125
+ palette.saturation,
126
+ dynamicRange,
127
+ interactiveComponentNv,
128
+ palette.desaturation,
129
+ palette.paletteHueGrading
130
+ );
131
+
117
132
  // Compute text colors with WCAG contrast against actual background
118
133
  // Primary text: WCAG AA (4.5:1 for body text)
119
134
  const textPrimary = getColorByContrast(
@@ -242,6 +257,7 @@ export function computeTokens(
242
257
  background,
243
258
  backgroundElevated,
244
259
  backgroundSunken,
260
+ backgroundInteractive,
245
261
  textPrimary,
246
262
  textSecondary,
247
263
  interactive,
@@ -10,6 +10,16 @@ export interface ResolvedTokens {
10
10
  readonly backgroundElevated: ColorResult;
11
11
  /** Background color for sunken surfaces (input fields, wells) */
12
12
  readonly backgroundSunken: ColorResult;
13
+ /**
14
+ * Background color for interactive components with neutral backgrounds.
15
+ * Uses a fixed -0.035 NV (luminosity) offset from current background to ensure
16
+ * consistent visual contrast across all elevations (-2 to 2).
17
+ *
18
+ * Use for: Button (neutral primary), and future components with neutral filled backgrounds.
19
+ * Don't use for: Semantic variants (accent/success/error/warning), transparent backgrounds,
20
+ * or primitives (Frame/Wrapper/Text/Icon already handle elevation correctly).
21
+ */
22
+ readonly backgroundInteractive: ColorResult;
13
23
  /** Primary text color (high contrast for body text) */
14
24
  readonly textPrimary: ColorResult;
15
25
  /** Secondary text color (lower contrast for captions, labels) */