@newtonedev/components 0.1.4 → 0.1.6
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/dist/composites/actions/Button/Button.d.ts +37 -0
- package/dist/composites/actions/Button/Button.d.ts.map +1 -0
- package/dist/composites/actions/Button/Button.styles.d.ts +65 -0
- package/dist/composites/actions/Button/Button.styles.d.ts.map +1 -0
- package/dist/{Button → composites/actions/Button}/Button.types.d.ts +12 -3
- package/dist/composites/actions/Button/Button.types.d.ts.map +1 -0
- package/dist/composites/actions/Button/index.d.ts.map +1 -0
- package/dist/composites/form-controls/Select/Select.d.ts.map +1 -0
- package/dist/{Select → composites/form-controls/Select}/Select.styles.d.ts +1 -1
- package/dist/composites/form-controls/Select/Select.styles.d.ts.map +1 -0
- package/dist/composites/form-controls/Select/Select.types.d.ts.map +1 -0
- package/dist/composites/form-controls/Select/SelectOption.d.ts.map +1 -0
- package/dist/composites/form-controls/Select/index.d.ts.map +1 -0
- package/dist/composites/form-controls/Select/useSelect.d.ts.map +1 -0
- package/dist/composites/form-controls/TextInput/TextInput.d.ts.map +1 -0
- package/dist/{TextInput → composites/form-controls/TextInput}/TextInput.styles.d.ts +1 -1
- package/dist/composites/form-controls/TextInput/TextInput.styles.d.ts.map +1 -0
- package/dist/composites/form-controls/TextInput/TextInput.types.d.ts.map +1 -0
- package/dist/composites/form-controls/TextInput/index.d.ts.map +1 -0
- package/dist/composites/form-controls/Toggle/Toggle.d.ts.map +1 -0
- package/dist/{Toggle → composites/form-controls/Toggle}/Toggle.styles.d.ts +1 -1
- package/dist/composites/form-controls/Toggle/Toggle.styles.d.ts.map +1 -0
- package/dist/composites/form-controls/Toggle/Toggle.types.d.ts.map +1 -0
- package/dist/composites/form-controls/Toggle/index.d.ts.map +1 -0
- package/dist/composites/layout/AppShell/AppShell.d.ts.map +1 -0
- package/dist/{AppShell → composites/layout/AppShell}/AppShell.styles.d.ts +1 -1
- package/dist/composites/layout/AppShell/AppShell.styles.d.ts.map +1 -0
- package/dist/composites/layout/AppShell/AppShell.types.d.ts.map +1 -0
- package/dist/composites/layout/AppShell/index.d.ts.map +1 -0
- package/dist/composites/layout/Card/Card.d.ts.map +1 -0
- package/dist/{Card → composites/layout/Card}/Card.styles.d.ts +1 -1
- package/dist/composites/layout/Card/Card.styles.d.ts.map +1 -0
- package/dist/{Card → composites/layout/Card}/Card.types.d.ts +1 -1
- package/dist/composites/layout/Card/Card.types.d.ts.map +1 -0
- package/dist/composites/layout/Card/index.d.ts.map +1 -0
- package/dist/composites/layout/Navbar/Navbar.d.ts.map +1 -0
- package/dist/{Navbar → composites/layout/Navbar}/Navbar.styles.d.ts +1 -1
- package/dist/composites/layout/Navbar/Navbar.styles.d.ts.map +1 -0
- package/dist/composites/layout/Navbar/Navbar.types.d.ts.map +1 -0
- package/dist/composites/layout/Navbar/index.d.ts.map +1 -0
- package/dist/composites/layout/Sidebar/Sidebar.d.ts.map +1 -0
- package/dist/{Sidebar → composites/layout/Sidebar}/Sidebar.styles.d.ts +1 -1
- package/dist/composites/layout/Sidebar/Sidebar.styles.d.ts.map +1 -0
- package/dist/composites/layout/Sidebar/Sidebar.types.d.ts.map +1 -0
- package/dist/composites/layout/Sidebar/index.d.ts.map +1 -0
- package/dist/composites/overlays/Popover/Popover.d.ts.map +1 -0
- package/dist/{Popover → composites/overlays/Popover}/Popover.styles.d.ts +1 -1
- package/dist/composites/overlays/Popover/Popover.styles.d.ts.map +1 -0
- package/dist/composites/overlays/Popover/Popover.types.d.ts.map +1 -0
- package/dist/composites/overlays/Popover/index.d.ts.map +1 -0
- package/dist/composites/overlays/Popover/usePopover.d.ts.map +1 -0
- package/dist/composites/range-inputs/ColorScaleSlider/ColorScaleSlider.d.ts.map +1 -0
- package/dist/{ColorScaleSlider → composites/range-inputs/ColorScaleSlider}/ColorScaleSlider.styles.d.ts +1 -1
- package/dist/composites/range-inputs/ColorScaleSlider/ColorScaleSlider.styles.d.ts.map +1 -0
- package/dist/composites/range-inputs/ColorScaleSlider/ColorScaleSlider.types.d.ts.map +1 -0
- package/dist/composites/range-inputs/ColorScaleSlider/index.d.ts.map +1 -0
- package/dist/composites/range-inputs/HueSlider/HueSlider.d.ts.map +1 -0
- package/dist/{HueSlider → composites/range-inputs/HueSlider}/HueSlider.styles.d.ts +1 -1
- package/dist/composites/range-inputs/HueSlider/HueSlider.styles.d.ts.map +1 -0
- package/dist/composites/range-inputs/HueSlider/HueSlider.types.d.ts.map +1 -0
- package/dist/composites/range-inputs/HueSlider/index.d.ts.map +1 -0
- package/dist/composites/range-inputs/Slider/Slider.d.ts.map +1 -0
- package/dist/{Slider → composites/range-inputs/Slider}/Slider.styles.d.ts +1 -1
- package/dist/composites/range-inputs/Slider/Slider.styles.d.ts.map +1 -0
- package/dist/composites/range-inputs/Slider/Slider.types.d.ts.map +1 -0
- package/dist/composites/range-inputs/Slider/index.d.ts.map +1 -0
- package/dist/index.cjs +1277 -764
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +30 -29
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1234 -726
- package/dist/index.js.map +1 -1
- package/dist/primitives/Frame/Frame.d.ts +2 -3
- package/dist/primitives/Frame/Frame.d.ts.map +1 -1
- package/dist/primitives/Frame/Frame.types.d.ts +4 -15
- package/dist/primitives/Frame/Frame.types.d.ts.map +1 -1
- package/dist/primitives/Icon/Icon.d.ts.map +1 -1
- package/dist/primitives/Text/Text.d.ts.map +1 -1
- package/dist/primitives/Text/Text.types.d.ts +9 -4
- package/dist/primitives/Text/Text.types.d.ts.map +1 -1
- package/dist/primitives/Wrapper/Wrapper.d.ts +1 -1
- package/dist/primitives/Wrapper/Wrapper.types.d.ts +1 -1
- package/dist/registry/registry.d.ts.map +1 -1
- package/dist/theme/FrameContext.d.ts +7 -5
- package/dist/theme/FrameContext.d.ts.map +1 -1
- package/dist/theme/NewtoneProvider.d.ts +5 -6
- package/dist/theme/NewtoneProvider.d.ts.map +1 -1
- package/dist/theme/defaults.d.ts.map +1 -1
- package/dist/theme/types.d.ts +38 -24
- package/dist/theme/types.d.ts.map +1 -1
- package/dist/tokens/computeTokens.d.ts +82 -7
- package/dist/tokens/computeTokens.d.ts.map +1 -1
- package/dist/tokens/types.d.ts +66 -14
- package/dist/tokens/types.d.ts.map +1 -1
- package/dist/tokens/useTokens.d.ts +11 -14
- package/dist/tokens/useTokens.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/composites/actions/Button/Button.styles.ts +338 -0
- package/src/composites/actions/Button/Button.tsx +119 -0
- package/src/{Button → composites/actions/Button}/Button.types.ts +14 -3
- package/src/{Select → composites/form-controls/Select}/Select.styles.ts +1 -1
- package/src/{Select → composites/form-controls/Select}/Select.tsx +4 -4
- package/src/{Select → composites/form-controls/Select}/SelectOption.tsx +4 -4
- package/src/{TextInput → composites/form-controls/TextInput}/TextInput.styles.ts +1 -1
- package/src/{TextInput → composites/form-controls/TextInput}/TextInput.tsx +1 -1
- package/src/{Toggle → composites/form-controls/Toggle}/Toggle.styles.ts +2 -2
- package/src/{Toggle → composites/form-controls/Toggle}/Toggle.tsx +1 -1
- package/src/{AppShell → composites/layout/AppShell}/AppShell.styles.ts +1 -1
- package/src/{AppShell → composites/layout/AppShell}/AppShell.tsx +1 -1
- package/src/{Card → composites/layout/Card}/Card.styles.ts +1 -1
- package/src/{Card → composites/layout/Card}/Card.tsx +1 -1
- package/src/{Card → composites/layout/Card}/Card.types.ts +1 -1
- package/src/{Navbar → composites/layout/Navbar}/Navbar.styles.ts +1 -1
- package/src/{Navbar → composites/layout/Navbar}/Navbar.tsx +1 -1
- package/src/{Sidebar → composites/layout/Sidebar}/Sidebar.styles.ts +1 -1
- package/src/{Sidebar → composites/layout/Sidebar}/Sidebar.tsx +1 -1
- package/src/{Popover → composites/overlays/Popover}/Popover.styles.ts +1 -1
- package/src/{Popover → composites/overlays/Popover}/Popover.tsx +1 -1
- package/src/{ColorScaleSlider → composites/range-inputs/ColorScaleSlider}/ColorScaleSlider.styles.ts +2 -2
- package/src/{ColorScaleSlider → composites/range-inputs/ColorScaleSlider}/ColorScaleSlider.tsx +1 -1
- package/src/{HueSlider → composites/range-inputs/HueSlider}/HueSlider.styles.ts +1 -1
- package/src/{HueSlider → composites/range-inputs/HueSlider}/HueSlider.tsx +1 -1
- package/src/{Slider → composites/range-inputs/Slider}/Slider.styles.ts +3 -3
- package/src/{Slider → composites/range-inputs/Slider}/Slider.tsx +1 -1
- package/src/index.ts +40 -33
- package/src/primitives/Frame/Frame.tsx +10 -18
- package/src/primitives/Frame/Frame.types.ts +5 -17
- package/src/primitives/Icon/Icon.tsx +16 -1
- package/src/primitives/Text/Text.tsx +18 -8
- package/src/primitives/Text/Text.types.ts +9 -4
- package/src/primitives/Wrapper/Wrapper.tsx +1 -1
- package/src/primitives/Wrapper/Wrapper.types.ts +1 -1
- package/src/registry/registry.ts +239 -6
- package/src/theme/FrameContext.tsx +7 -5
- package/src/theme/NewtoneProvider.tsx +5 -10
- package/src/theme/defaults.ts +0 -9
- package/src/theme/types.ts +53 -26
- package/src/tokens/computeTokens.ts +351 -113
- package/src/tokens/types.ts +82 -14
- package/src/tokens/useTokens.ts +29 -24
- package/dist/AppShell/AppShell.d.ts.map +0 -1
- package/dist/AppShell/AppShell.styles.d.ts.map +0 -1
- package/dist/AppShell/AppShell.types.d.ts.map +0 -1
- package/dist/AppShell/index.d.ts.map +0 -1
- package/dist/Button/Button.d.ts +0 -28
- package/dist/Button/Button.d.ts.map +0 -1
- package/dist/Button/Button.styles.d.ts +0 -46
- package/dist/Button/Button.styles.d.ts.map +0 -1
- package/dist/Button/Button.types.d.ts.map +0 -1
- package/dist/Button/index.d.ts.map +0 -1
- package/dist/Card/Card.d.ts.map +0 -1
- package/dist/Card/Card.styles.d.ts.map +0 -1
- package/dist/Card/Card.types.d.ts.map +0 -1
- package/dist/Card/index.d.ts.map +0 -1
- package/dist/ColorScaleSlider/ColorScaleSlider.d.ts.map +0 -1
- package/dist/ColorScaleSlider/ColorScaleSlider.styles.d.ts.map +0 -1
- package/dist/ColorScaleSlider/ColorScaleSlider.types.d.ts.map +0 -1
- package/dist/ColorScaleSlider/index.d.ts.map +0 -1
- package/dist/HueSlider/HueSlider.d.ts.map +0 -1
- package/dist/HueSlider/HueSlider.styles.d.ts.map +0 -1
- package/dist/HueSlider/HueSlider.types.d.ts.map +0 -1
- package/dist/HueSlider/index.d.ts.map +0 -1
- package/dist/Navbar/Navbar.d.ts.map +0 -1
- package/dist/Navbar/Navbar.styles.d.ts.map +0 -1
- package/dist/Navbar/Navbar.types.d.ts.map +0 -1
- package/dist/Navbar/index.d.ts.map +0 -1
- package/dist/Popover/Popover.d.ts.map +0 -1
- package/dist/Popover/Popover.styles.d.ts.map +0 -1
- package/dist/Popover/Popover.types.d.ts.map +0 -1
- package/dist/Popover/index.d.ts.map +0 -1
- package/dist/Popover/usePopover.d.ts.map +0 -1
- package/dist/Select/Select.d.ts.map +0 -1
- package/dist/Select/Select.styles.d.ts.map +0 -1
- package/dist/Select/Select.types.d.ts.map +0 -1
- package/dist/Select/SelectOption.d.ts.map +0 -1
- package/dist/Select/index.d.ts.map +0 -1
- package/dist/Select/useSelect.d.ts.map +0 -1
- package/dist/Sidebar/Sidebar.d.ts.map +0 -1
- package/dist/Sidebar/Sidebar.styles.d.ts.map +0 -1
- package/dist/Sidebar/Sidebar.types.d.ts.map +0 -1
- package/dist/Sidebar/index.d.ts.map +0 -1
- package/dist/Slider/Slider.d.ts.map +0 -1
- package/dist/Slider/Slider.styles.d.ts.map +0 -1
- package/dist/Slider/Slider.types.d.ts.map +0 -1
- package/dist/Slider/index.d.ts.map +0 -1
- package/dist/TextInput/TextInput.d.ts.map +0 -1
- package/dist/TextInput/TextInput.styles.d.ts.map +0 -1
- package/dist/TextInput/TextInput.types.d.ts.map +0 -1
- package/dist/TextInput/index.d.ts.map +0 -1
- package/dist/Toggle/Toggle.d.ts.map +0 -1
- package/dist/Toggle/Toggle.styles.d.ts.map +0 -1
- package/dist/Toggle/Toggle.types.d.ts.map +0 -1
- package/dist/Toggle/index.d.ts.map +0 -1
- package/src/Button/Button.styles.ts +0 -133
- package/src/Button/Button.tsx +0 -86
- /package/dist/{Button → composites/actions/Button}/index.d.ts +0 -0
- /package/dist/{Select → composites/form-controls/Select}/Select.d.ts +0 -0
- /package/dist/{Select → composites/form-controls/Select}/Select.types.d.ts +0 -0
- /package/dist/{Select → composites/form-controls/Select}/SelectOption.d.ts +0 -0
- /package/dist/{Select → composites/form-controls/Select}/index.d.ts +0 -0
- /package/dist/{Select → composites/form-controls/Select}/useSelect.d.ts +0 -0
- /package/dist/{TextInput → composites/form-controls/TextInput}/TextInput.d.ts +0 -0
- /package/dist/{TextInput → composites/form-controls/TextInput}/TextInput.types.d.ts +0 -0
- /package/dist/{TextInput → composites/form-controls/TextInput}/index.d.ts +0 -0
- /package/dist/{Toggle → composites/form-controls/Toggle}/Toggle.d.ts +0 -0
- /package/dist/{Toggle → composites/form-controls/Toggle}/Toggle.types.d.ts +0 -0
- /package/dist/{Toggle → composites/form-controls/Toggle}/index.d.ts +0 -0
- /package/dist/{AppShell → composites/layout/AppShell}/AppShell.d.ts +0 -0
- /package/dist/{AppShell → composites/layout/AppShell}/AppShell.types.d.ts +0 -0
- /package/dist/{AppShell → composites/layout/AppShell}/index.d.ts +0 -0
- /package/dist/{Card → composites/layout/Card}/Card.d.ts +0 -0
- /package/dist/{Card → composites/layout/Card}/index.d.ts +0 -0
- /package/dist/{Navbar → composites/layout/Navbar}/Navbar.d.ts +0 -0
- /package/dist/{Navbar → composites/layout/Navbar}/Navbar.types.d.ts +0 -0
- /package/dist/{Navbar → composites/layout/Navbar}/index.d.ts +0 -0
- /package/dist/{Sidebar → composites/layout/Sidebar}/Sidebar.d.ts +0 -0
- /package/dist/{Sidebar → composites/layout/Sidebar}/Sidebar.types.d.ts +0 -0
- /package/dist/{Sidebar → composites/layout/Sidebar}/index.d.ts +0 -0
- /package/dist/{Popover → composites/overlays/Popover}/Popover.d.ts +0 -0
- /package/dist/{Popover → composites/overlays/Popover}/Popover.types.d.ts +0 -0
- /package/dist/{Popover → composites/overlays/Popover}/index.d.ts +0 -0
- /package/dist/{Popover → composites/overlays/Popover}/usePopover.d.ts +0 -0
- /package/dist/{ColorScaleSlider → composites/range-inputs/ColorScaleSlider}/ColorScaleSlider.d.ts +0 -0
- /package/dist/{ColorScaleSlider → composites/range-inputs/ColorScaleSlider}/ColorScaleSlider.types.d.ts +0 -0
- /package/dist/{ColorScaleSlider → composites/range-inputs/ColorScaleSlider}/index.d.ts +0 -0
- /package/dist/{HueSlider → composites/range-inputs/HueSlider}/HueSlider.d.ts +0 -0
- /package/dist/{HueSlider → composites/range-inputs/HueSlider}/HueSlider.types.d.ts +0 -0
- /package/dist/{HueSlider → composites/range-inputs/HueSlider}/index.d.ts +0 -0
- /package/dist/{Slider → composites/range-inputs/Slider}/Slider.d.ts +0 -0
- /package/dist/{Slider → composites/range-inputs/Slider}/Slider.types.d.ts +0 -0
- /package/dist/{Slider → composites/range-inputs/Slider}/index.d.ts +0 -0
- /package/src/{Button → composites/actions/Button}/index.ts +0 -0
- /package/src/{Select → composites/form-controls/Select}/Select.types.ts +0 -0
- /package/src/{Select → composites/form-controls/Select}/index.ts +0 -0
- /package/src/{Select → composites/form-controls/Select}/useSelect.ts +0 -0
- /package/src/{TextInput → composites/form-controls/TextInput}/TextInput.types.ts +0 -0
- /package/src/{TextInput → composites/form-controls/TextInput}/index.ts +0 -0
- /package/src/{Toggle → composites/form-controls/Toggle}/Toggle.types.ts +0 -0
- /package/src/{Toggle → composites/form-controls/Toggle}/index.ts +0 -0
- /package/src/{AppShell → composites/layout/AppShell}/AppShell.types.ts +0 -0
- /package/src/{AppShell → composites/layout/AppShell}/index.ts +0 -0
- /package/src/{Card → composites/layout/Card}/index.ts +0 -0
- /package/src/{Navbar → composites/layout/Navbar}/Navbar.types.ts +0 -0
- /package/src/{Navbar → composites/layout/Navbar}/index.ts +0 -0
- /package/src/{Sidebar → composites/layout/Sidebar}/Sidebar.types.ts +0 -0
- /package/src/{Sidebar → composites/layout/Sidebar}/index.ts +0 -0
- /package/src/{Popover → composites/overlays/Popover}/Popover.types.ts +0 -0
- /package/src/{Popover → composites/overlays/Popover}/index.ts +0 -0
- /package/src/{Popover → composites/overlays/Popover}/usePopover.ts +0 -0
- /package/src/{ColorScaleSlider → composites/range-inputs/ColorScaleSlider}/ColorScaleSlider.types.ts +0 -0
- /package/src/{ColorScaleSlider → composites/range-inputs/ColorScaleSlider}/index.ts +0 -0
- /package/src/{HueSlider → composites/range-inputs/HueSlider}/HueSlider.types.ts +0 -0
- /package/src/{HueSlider → composites/range-inputs/HueSlider}/index.ts +0 -0
- /package/src/{Slider → composites/range-inputs/Slider}/Slider.types.ts +0 -0
- /package/src/{Slider → composites/range-inputs/Slider}/index.ts +0 -0
package/src/registry/registry.ts
CHANGED
|
@@ -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[] = [
|
|
@@ -18,13 +20,17 @@ export const COMPONENTS: readonly ComponentMeta[] = [
|
|
|
18
20
|
variants: [
|
|
19
21
|
{ id: 'primary-md', label: 'Primary', props: { variant: 'primary', size: 'md' } },
|
|
20
22
|
{ id: 'secondary-md', label: 'Secondary', props: { variant: 'secondary', size: 'md' } },
|
|
21
|
-
{ id: '
|
|
22
|
-
{ id: 'outline-md', label: 'Outline', props: { variant: 'outline', size: 'md' } },
|
|
23
|
+
{ id: 'tertiary-md', label: 'Tertiary', props: { variant: 'tertiary', size: 'md' } },
|
|
23
24
|
{ id: 'primary-sm', label: 'Primary Small', props: { variant: 'primary', size: 'sm' } },
|
|
24
25
|
{ id: 'primary-lg', label: 'Primary Large', props: { variant: 'primary', size: 'lg' } },
|
|
26
|
+
{ id: 'accent-primary', label: 'Accent Primary', props: { variant: 'primary', size: 'md', semantic: 'accent' } },
|
|
27
|
+
{ id: 'accent-secondary', label: 'Accent Secondary', props: { variant: 'secondary', size: 'md', semantic: 'accent' } },
|
|
28
|
+
{ id: 'success-primary', label: 'Success Primary', props: { variant: 'primary', size: 'md', semantic: 'success' } },
|
|
29
|
+
{ id: 'error-primary', label: 'Error Primary', props: { variant: 'primary', size: 'md', semantic: 'error' } },
|
|
30
|
+
{ id: 'warning-primary', label: 'Warning Primary', props: { variant: 'primary', size: 'md', semantic: 'warning' } },
|
|
25
31
|
{ id: 'icon-left', label: 'Icon Left', props: { variant: 'primary', size: 'md', icon: 'add' } },
|
|
26
32
|
{ id: 'icon-right', label: 'Icon Right', props: { variant: 'primary', size: 'md', icon: 'arrow_forward', iconPosition: 'right' } },
|
|
27
|
-
{ id: 'icon-only', label: 'Icon Only', props: { variant: '
|
|
33
|
+
{ id: 'icon-only', label: 'Icon Only', props: { variant: 'tertiary', size: 'md', icon: 'settings' } },
|
|
28
34
|
],
|
|
29
35
|
editableProps: [
|
|
30
36
|
{
|
|
@@ -34,11 +40,23 @@ export const COMPONENTS: readonly ComponentMeta[] = [
|
|
|
34
40
|
options: [
|
|
35
41
|
{ label: 'Primary', value: 'primary' },
|
|
36
42
|
{ label: 'Secondary', value: 'secondary' },
|
|
37
|
-
{ label: '
|
|
38
|
-
{ label: 'Outline', value: 'outline' },
|
|
43
|
+
{ label: 'Tertiary', value: 'tertiary' },
|
|
39
44
|
],
|
|
40
45
|
defaultValue: 'primary',
|
|
41
46
|
},
|
|
47
|
+
{
|
|
48
|
+
name: 'semantic',
|
|
49
|
+
label: 'Semantic',
|
|
50
|
+
control: 'select',
|
|
51
|
+
options: [
|
|
52
|
+
{ label: 'Neutral', value: 'neutral' },
|
|
53
|
+
{ label: 'Accent', value: 'accent' },
|
|
54
|
+
{ label: 'Success', value: 'success' },
|
|
55
|
+
{ label: 'Warning', value: 'warning' },
|
|
56
|
+
{ label: 'Error', value: 'error' },
|
|
57
|
+
],
|
|
58
|
+
defaultValue: 'neutral',
|
|
59
|
+
},
|
|
42
60
|
{
|
|
43
61
|
name: 'size',
|
|
44
62
|
label: 'Size',
|
|
@@ -387,6 +405,221 @@ export const COMPONENTS: readonly ComponentMeta[] = [
|
|
|
387
405
|
},
|
|
388
406
|
],
|
|
389
407
|
},
|
|
408
|
+
// ── Design Primitives ──
|
|
409
|
+
{
|
|
410
|
+
id: 'text',
|
|
411
|
+
name: 'Text',
|
|
412
|
+
importName: 'Text',
|
|
413
|
+
categoryId: 'primitives',
|
|
414
|
+
description: 'Typography primitive with semantic size, weight, color, font, and lineHeight',
|
|
415
|
+
hasChildren: true,
|
|
416
|
+
variants: [
|
|
417
|
+
{ id: 'default', label: 'Default', props: {} },
|
|
418
|
+
{ id: 'heading', label: 'Heading', props: { size: 'xl', weight: 'bold' } },
|
|
419
|
+
{ id: 'subheading', label: 'Subheading', props: { size: 'lg', weight: 'semibold' } },
|
|
420
|
+
{ id: 'body', label: 'Body', props: { size: 'base' } },
|
|
421
|
+
{ id: 'caption', label: 'Caption', props: { size: 'sm', color: 'secondary' } },
|
|
422
|
+
{ id: 'accent', label: 'Accent', props: { color: 'accent', weight: 'medium' } },
|
|
423
|
+
{ id: 'mono', label: 'Monospace', props: { font: 'mono', size: 'sm' } },
|
|
424
|
+
],
|
|
425
|
+
editableProps: [
|
|
426
|
+
{
|
|
427
|
+
name: 'size',
|
|
428
|
+
label: 'Size',
|
|
429
|
+
control: 'select',
|
|
430
|
+
options: [
|
|
431
|
+
{ label: 'Extra Small', value: 'xs' },
|
|
432
|
+
{ label: 'Small', value: 'sm' },
|
|
433
|
+
{ label: 'Base', value: 'base' },
|
|
434
|
+
{ label: 'Medium', value: 'md' },
|
|
435
|
+
{ label: 'Large', value: 'lg' },
|
|
436
|
+
{ label: 'Extra Large', value: 'xl' },
|
|
437
|
+
{ label: 'XXL', value: 'xxl' },
|
|
438
|
+
],
|
|
439
|
+
defaultValue: 'base',
|
|
440
|
+
},
|
|
441
|
+
{
|
|
442
|
+
name: 'weight',
|
|
443
|
+
label: 'Weight',
|
|
444
|
+
control: 'select',
|
|
445
|
+
options: [
|
|
446
|
+
{ label: 'Regular', value: 'regular' },
|
|
447
|
+
{ label: 'Medium', value: 'medium' },
|
|
448
|
+
{ label: 'Semibold', value: 'semibold' },
|
|
449
|
+
{ label: 'Bold', value: 'bold' },
|
|
450
|
+
],
|
|
451
|
+
defaultValue: 'regular',
|
|
452
|
+
},
|
|
453
|
+
{
|
|
454
|
+
name: 'color',
|
|
455
|
+
label: 'Color',
|
|
456
|
+
control: 'select',
|
|
457
|
+
options: [
|
|
458
|
+
{ label: 'Primary', value: 'primary' },
|
|
459
|
+
{ label: 'Secondary', value: 'secondary' },
|
|
460
|
+
{ label: 'Tertiary', value: 'tertiary' },
|
|
461
|
+
{ label: 'Disabled', value: 'disabled' },
|
|
462
|
+
{ label: 'Accent', value: 'accent' },
|
|
463
|
+
{ label: 'Success', value: 'success' },
|
|
464
|
+
{ label: 'Warning', value: 'warning' },
|
|
465
|
+
{ label: 'Error', value: 'error' },
|
|
466
|
+
],
|
|
467
|
+
defaultValue: 'primary',
|
|
468
|
+
},
|
|
469
|
+
{
|
|
470
|
+
name: 'font',
|
|
471
|
+
label: 'Font',
|
|
472
|
+
control: 'select',
|
|
473
|
+
options: [
|
|
474
|
+
{ label: 'Default', value: 'default' },
|
|
475
|
+
{ label: 'Display', value: 'display' },
|
|
476
|
+
{ label: 'Mono', value: 'mono' },
|
|
477
|
+
],
|
|
478
|
+
defaultValue: 'default',
|
|
479
|
+
},
|
|
480
|
+
],
|
|
481
|
+
},
|
|
482
|
+
{
|
|
483
|
+
id: 'icon',
|
|
484
|
+
name: 'Icon',
|
|
485
|
+
importName: 'Icon',
|
|
486
|
+
categoryId: 'primitives',
|
|
487
|
+
description: 'Material Symbols icon with size, fill, and color',
|
|
488
|
+
hasChildren: false,
|
|
489
|
+
variants: [
|
|
490
|
+
{ id: 'home', label: 'Home', props: { name: 'home' } },
|
|
491
|
+
{ id: 'settings', label: 'Settings', props: { name: 'settings' } },
|
|
492
|
+
{ id: 'check', label: 'Check', props: { name: 'check' } },
|
|
493
|
+
{ id: 'add', label: 'Add', props: { name: 'add' } },
|
|
494
|
+
{ id: 'delete', label: 'Delete', props: { name: 'delete' } },
|
|
495
|
+
{ id: 'search', label: 'Search', props: { name: 'search' } },
|
|
496
|
+
{ id: 'filled', label: 'Filled Icon', props: { name: 'favorite', fill: 1 } },
|
|
497
|
+
{ id: 'large', label: 'Large Icon', props: { name: 'star', size: 32 } },
|
|
498
|
+
],
|
|
499
|
+
editableProps: [
|
|
500
|
+
{
|
|
501
|
+
name: 'name',
|
|
502
|
+
label: 'Icon Name',
|
|
503
|
+
control: 'text',
|
|
504
|
+
defaultValue: 'home',
|
|
505
|
+
},
|
|
506
|
+
{
|
|
507
|
+
name: 'size',
|
|
508
|
+
label: 'Size',
|
|
509
|
+
control: 'number',
|
|
510
|
+
defaultValue: 24,
|
|
511
|
+
},
|
|
512
|
+
{
|
|
513
|
+
name: 'fill',
|
|
514
|
+
label: 'Fill',
|
|
515
|
+
control: 'select',
|
|
516
|
+
options: [
|
|
517
|
+
{ label: 'Outlined', value: 0 },
|
|
518
|
+
{ label: 'Filled', value: 1 },
|
|
519
|
+
],
|
|
520
|
+
defaultValue: 0,
|
|
521
|
+
},
|
|
522
|
+
],
|
|
523
|
+
},
|
|
524
|
+
{
|
|
525
|
+
id: 'wrapper',
|
|
526
|
+
name: 'Wrapper',
|
|
527
|
+
importName: 'Wrapper',
|
|
528
|
+
categoryId: 'primitives',
|
|
529
|
+
description: 'Lightweight layout container with direction, spacing, and alignment (no theming)',
|
|
530
|
+
hasChildren: true,
|
|
531
|
+
variants: [
|
|
532
|
+
{ id: 'vertical', label: 'Vertical Stack', props: { direction: 'vertical', gap: 'md' } },
|
|
533
|
+
{ id: 'horizontal', label: 'Horizontal Row', props: { direction: 'horizontal', gap: 'md', align: 'center' } },
|
|
534
|
+
{ id: 'padded', label: 'Padded', props: { padding: 'lg', gap: 'md' } },
|
|
535
|
+
{ id: 'centered', label: 'Centered', props: { align: 'center', justify: 'center', padding: 'xl' } },
|
|
536
|
+
],
|
|
537
|
+
editableProps: [
|
|
538
|
+
{
|
|
539
|
+
name: 'direction',
|
|
540
|
+
label: 'Direction',
|
|
541
|
+
control: 'select',
|
|
542
|
+
options: [
|
|
543
|
+
{ label: 'Vertical', value: 'vertical' },
|
|
544
|
+
{ label: 'Horizontal', value: 'horizontal' },
|
|
545
|
+
],
|
|
546
|
+
defaultValue: 'vertical',
|
|
547
|
+
},
|
|
548
|
+
{
|
|
549
|
+
name: 'gap',
|
|
550
|
+
label: 'Gap',
|
|
551
|
+
control: 'select',
|
|
552
|
+
options: [
|
|
553
|
+
{ label: 'None', value: '' },
|
|
554
|
+
{ label: 'Small', value: 'sm' },
|
|
555
|
+
{ label: 'Medium', value: 'md' },
|
|
556
|
+
{ label: 'Large', value: 'lg' },
|
|
557
|
+
],
|
|
558
|
+
defaultValue: '',
|
|
559
|
+
},
|
|
560
|
+
{
|
|
561
|
+
name: 'padding',
|
|
562
|
+
label: 'Padding',
|
|
563
|
+
control: 'select',
|
|
564
|
+
options: [
|
|
565
|
+
{ label: 'None', value: '' },
|
|
566
|
+
{ label: 'Small', value: 'sm' },
|
|
567
|
+
{ label: 'Medium', value: 'md' },
|
|
568
|
+
{ label: 'Large', value: 'lg' },
|
|
569
|
+
],
|
|
570
|
+
defaultValue: '',
|
|
571
|
+
},
|
|
572
|
+
{
|
|
573
|
+
name: 'align',
|
|
574
|
+
label: 'Align',
|
|
575
|
+
control: 'select',
|
|
576
|
+
options: [
|
|
577
|
+
{ label: 'Start', value: 'start' },
|
|
578
|
+
{ label: 'Center', value: 'center' },
|
|
579
|
+
{ label: 'End', value: 'end' },
|
|
580
|
+
],
|
|
581
|
+
defaultValue: 'start',
|
|
582
|
+
},
|
|
583
|
+
{
|
|
584
|
+
name: 'justify',
|
|
585
|
+
label: 'Justify',
|
|
586
|
+
control: 'select',
|
|
587
|
+
options: [
|
|
588
|
+
{ label: 'Start', value: 'start' },
|
|
589
|
+
{ label: 'Center', value: 'center' },
|
|
590
|
+
{ label: 'End', value: 'end' },
|
|
591
|
+
{ label: 'Space Between', value: 'space-between' },
|
|
592
|
+
],
|
|
593
|
+
defaultValue: 'start',
|
|
594
|
+
},
|
|
595
|
+
],
|
|
596
|
+
},
|
|
597
|
+
// ── Range Inputs (Addition: ColorScaleSlider) ──
|
|
598
|
+
{
|
|
599
|
+
id: 'color-scale-slider',
|
|
600
|
+
name: 'ColorScaleSlider',
|
|
601
|
+
importName: 'ColorScaleSlider',
|
|
602
|
+
categoryId: 'range-inputs',
|
|
603
|
+
description: 'Interactive palette preview slider with color segments',
|
|
604
|
+
hasChildren: false,
|
|
605
|
+
variants: [
|
|
606
|
+
{ id: 'default', label: 'Default', props: { label: 'Key Color' } },
|
|
607
|
+
],
|
|
608
|
+
editableProps: [
|
|
609
|
+
{
|
|
610
|
+
name: 'label',
|
|
611
|
+
label: 'Label',
|
|
612
|
+
control: 'text',
|
|
613
|
+
defaultValue: 'Key Color',
|
|
614
|
+
},
|
|
615
|
+
{
|
|
616
|
+
name: 'disabled',
|
|
617
|
+
label: 'Disabled',
|
|
618
|
+
control: 'toggle',
|
|
619
|
+
defaultValue: false,
|
|
620
|
+
},
|
|
621
|
+
],
|
|
622
|
+
},
|
|
390
623
|
];
|
|
391
624
|
|
|
392
625
|
export function getComponent(id: string): ComponentMeta | undefined {
|
|
@@ -1,19 +1,21 @@
|
|
|
1
1
|
import { createContext, useContext } from 'react';
|
|
2
|
-
import type {
|
|
2
|
+
import type { ElevationLevel } from './types';
|
|
3
|
+
import type { ResolvedTokens } from '../tokens/types';
|
|
3
4
|
|
|
4
5
|
/**
|
|
5
6
|
* Context value provided by Frame to its descendants.
|
|
6
|
-
* Contains the resolved
|
|
7
|
+
* Contains the resolved elevation and pre-computed tokens.
|
|
8
|
+
* Tokens are included to avoid redundant computeTokens calls in child components.
|
|
7
9
|
*/
|
|
8
10
|
export interface FrameContextValue {
|
|
9
|
-
readonly theme: ThemeName;
|
|
10
11
|
readonly elevation: ElevationLevel;
|
|
12
|
+
readonly tokens: ResolvedTokens;
|
|
11
13
|
}
|
|
12
14
|
|
|
13
15
|
/**
|
|
14
|
-
* FrameContext - Propagates
|
|
16
|
+
* FrameContext - Propagates elevation overrides from Frame to descendants.
|
|
15
17
|
*
|
|
16
|
-
* When null, components fall back to
|
|
18
|
+
* When null, components fall back to default elevation (1).
|
|
17
19
|
* When present, useTokens() reads from this context instead.
|
|
18
20
|
*/
|
|
19
21
|
export const FrameContext = createContext<FrameContextValue | null>(null);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React, { createContext, useState, useMemo, useContext } from 'react';
|
|
2
|
-
import type { NewtoneThemeConfig, NewtoneThemeContext, ColorMode
|
|
2
|
+
import type { NewtoneThemeConfig, NewtoneThemeContext, ColorMode } from './types';
|
|
3
3
|
import { DEFAULT_THEME_CONFIG } from './defaults';
|
|
4
4
|
import { GoogleFontLoader } from '../fonts/GoogleFontLoader';
|
|
5
5
|
import { IconFontLoader } from '../fonts/IconFontLoader';
|
|
@@ -9,18 +9,17 @@ const ThemeContext = createContext<NewtoneThemeContext | null>(null);
|
|
|
9
9
|
export interface NewtoneProviderProps {
|
|
10
10
|
readonly config?: NewtoneThemeConfig;
|
|
11
11
|
readonly initialMode?: ColorMode;
|
|
12
|
-
readonly initialTheme?: ThemeName;
|
|
13
12
|
readonly children: React.ReactNode;
|
|
14
13
|
}
|
|
15
14
|
|
|
16
15
|
/**
|
|
17
16
|
* NewtoneProvider - Provides theme context to all Newtone components
|
|
18
17
|
*
|
|
19
|
-
* Wrap your app with this provider to enable
|
|
18
|
+
* Wrap your app with this provider to enable mode switching.
|
|
20
19
|
*
|
|
21
20
|
* @example
|
|
22
21
|
* ```tsx
|
|
23
|
-
* <NewtoneProvider initialMode="light"
|
|
22
|
+
* <NewtoneProvider initialMode="light">
|
|
24
23
|
* <App />
|
|
25
24
|
* </NewtoneProvider>
|
|
26
25
|
* ```
|
|
@@ -28,21 +27,17 @@ export interface NewtoneProviderProps {
|
|
|
28
27
|
export function NewtoneProvider({
|
|
29
28
|
config = DEFAULT_THEME_CONFIG,
|
|
30
29
|
initialMode = 'light',
|
|
31
|
-
initialTheme = 'neutral',
|
|
32
30
|
children,
|
|
33
31
|
}: NewtoneProviderProps) {
|
|
34
32
|
const [mode, setMode] = useState<ColorMode>(initialMode);
|
|
35
|
-
const [theme, setTheme] = useState<ThemeName>(initialTheme);
|
|
36
33
|
|
|
37
34
|
const value = useMemo(
|
|
38
35
|
() => ({
|
|
39
36
|
config,
|
|
40
37
|
mode,
|
|
41
|
-
theme,
|
|
42
38
|
setMode,
|
|
43
|
-
setTheme,
|
|
44
39
|
}),
|
|
45
|
-
[config, mode
|
|
40
|
+
[config, mode]
|
|
46
41
|
);
|
|
47
42
|
|
|
48
43
|
return (
|
|
@@ -61,7 +56,7 @@ export function NewtoneProvider({
|
|
|
61
56
|
*
|
|
62
57
|
* @example
|
|
63
58
|
* ```tsx
|
|
64
|
-
* const { mode,
|
|
59
|
+
* const { mode, setMode } = useNewtoneTheme();
|
|
65
60
|
* ```
|
|
66
61
|
*/
|
|
67
62
|
export function useNewtoneTheme(): NewtoneThemeContext {
|
package/src/theme/defaults.ts
CHANGED
|
@@ -30,15 +30,6 @@ export const DEFAULT_THEME_CONFIG: NewtoneThemeConfig = {
|
|
|
30
30
|
{ hue: DEFAULT_ERROR_HUE, saturation: DEFAULT_ERROR_SATURATION },
|
|
31
31
|
],
|
|
32
32
|
},
|
|
33
|
-
themes: {
|
|
34
|
-
neutral: { paletteIndex: 0, lightModeNv: 0.95, darkModeNv: 0.1 },
|
|
35
|
-
primary: { paletteIndex: 1, lightModeNv: 0.95, darkModeNv: 0.1 },
|
|
36
|
-
secondary: { paletteIndex: 1, lightModeNv: 0.85, darkModeNv: 0.15 },
|
|
37
|
-
strong: { paletteIndex: 0, lightModeNv: 0.1, darkModeNv: 0.95 },
|
|
38
|
-
},
|
|
39
|
-
elevation: {
|
|
40
|
-
offsets: [-0.02, 0, 0.04], // [sunken, default, elevated]
|
|
41
|
-
},
|
|
42
33
|
spacing: {
|
|
43
34
|
'00': 0, // base * 0
|
|
44
35
|
'02': 2, // base * 0.25
|
package/src/theme/types.ts
CHANGED
|
@@ -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
|
}
|