@edgeandnode/eds-react 1.0.2 → 1.1.0
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/README.md +32 -7
- package/dist/EDSContext.d.ts +2 -2
- package/dist/EDSContext.d.ts.map +1 -1
- package/dist/EDSContext.js +1 -1
- package/dist/EDSContext.js.map +1 -1
- package/dist/EDSProvider.d.ts +13 -6
- package/dist/EDSProvider.d.ts.map +1 -1
- package/dist/EDSProvider.js +48 -63
- package/dist/EDSProvider.js.map +1 -1
- package/dist/components/Address.d.ts +3 -3
- package/dist/components/Address.d.ts.map +1 -1
- package/dist/components/Address.js.map +1 -1
- package/dist/components/Avatar.d.ts +3 -3
- package/dist/components/Avatar.d.ts.map +1 -1
- package/dist/components/Avatar.js.map +1 -1
- package/dist/components/Breadcrumbs.parts.d.ts +3 -3
- package/dist/components/Breadcrumbs.parts.d.ts.map +1 -1
- package/dist/components/Breadcrumbs.parts.js.map +1 -1
- package/dist/components/Button.d.ts.map +1 -1
- package/dist/components/Button.js +1 -1
- package/dist/components/Button.js.map +1 -1
- package/dist/components/Card.d.ts +8 -4
- package/dist/components/Card.d.ts.map +1 -1
- package/dist/components/Card.js +2 -1
- package/dist/components/Card.js.map +1 -1
- package/dist/components/Cluster.d.ts +3 -3
- package/dist/components/Cluster.d.ts.map +1 -1
- package/dist/components/Cluster.js.map +1 -1
- package/dist/components/Keyboard.js +1 -1
- package/dist/components/LocalTheme.d.ts +21 -8
- package/dist/components/LocalTheme.d.ts.map +1 -1
- package/dist/components/LocalTheme.js +10 -4
- package/dist/components/LocalTheme.js.map +1 -1
- package/dist/components/Menu.parts.d.ts +43 -9
- package/dist/components/Menu.parts.d.ts.map +1 -1
- package/dist/components/Menu.parts.js +118 -114
- package/dist/components/Menu.parts.js.map +1 -1
- package/dist/components/Modal.parts.d.ts +1 -1
- package/dist/components/Modal.parts.d.ts.map +1 -1
- package/dist/components/Modal.parts.js +2 -2
- package/dist/components/Modal.parts.js.map +1 -1
- package/dist/components/Pane.parts.d.ts +23 -22
- package/dist/components/Pane.parts.d.ts.map +1 -1
- package/dist/components/Pane.parts.js +3 -3
- package/dist/components/Pane.parts.js.map +1 -1
- package/dist/components/Prose.d.ts +1 -1
- package/dist/components/Prose.d.ts.map +1 -1
- package/dist/components/Prose.js +3 -3
- package/dist/components/Prose.js.map +1 -1
- package/dist/components/Prose.meta.d.ts +5 -0
- package/dist/components/Prose.meta.d.ts.map +1 -1
- package/dist/components/Prose.meta.js +10 -0
- package/dist/components/Prose.meta.js.map +1 -1
- package/dist/components/Select.parts.d.ts +8 -3
- package/dist/components/Select.parts.d.ts.map +1 -1
- package/dist/components/Select.parts.js +26 -17
- package/dist/components/Select.parts.js.map +1 -1
- package/dist/components/ThemeSwitcher.d.ts +5 -5
- package/dist/components/ThemeSwitcher.d.ts.map +1 -1
- package/dist/components/ThemeSwitcher.js +5 -4
- package/dist/components/ThemeSwitcher.js.map +1 -1
- package/dist/components/base/MaybeButtonOrLink.d.ts +7 -5
- package/dist/components/base/MaybeButtonOrLink.d.ts.map +1 -1
- package/dist/components/base/MaybeButtonOrLink.js +7 -2
- package/dist/components/base/MaybeButtonOrLink.js.map +1 -1
- package/dist/components/base/Render.d.ts +25 -6
- package/dist/components/base/Render.d.ts.map +1 -1
- package/dist/components/base/Render.js +4 -3
- package/dist/components/base/Render.js.map +1 -1
- package/dist/components/base/index.d.ts +1 -1
- package/dist/components/base/index.d.ts.map +1 -1
- package/dist/components/base/index.js.map +1 -1
- package/dist/components/index.d.ts +1 -1
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +1 -1
- package/dist/components/index.js.map +1 -1
- package/dist/hooks/useEDS.d.ts +16 -8
- package/dist/hooks/useEDS.d.ts.map +1 -1
- package/dist/hooks/useEDS.js +16 -8
- package/dist/hooks/useEDS.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/theme-persistence.d.ts +18 -0
- package/dist/theme-persistence.d.ts.map +1 -0
- package/dist/theme-persistence.js +25 -0
- package/dist/theme-persistence.js.map +1 -0
- package/package.json +20 -20
- package/skill/SKILL.md +90 -56
- package/skill/references/tokens.md +1 -1
- package/src/EDSContext.ts +2 -2
- package/src/EDSProvider.tsx +80 -74
- package/src/components/Address.tsx +4 -3
- package/src/components/Avatar.tsx +7 -3
- package/src/components/Breadcrumbs.parts.tsx +4 -3
- package/src/components/Button.tsx +4 -0
- package/src/components/Card.tsx +14 -8
- package/src/components/Cluster.tsx +5 -3
- package/src/components/Keyboard.tsx +1 -1
- package/src/components/LocalTheme.tsx +22 -14
- package/src/components/Menu.parts.tsx +365 -244
- package/src/components/Modal.parts.tsx +8 -1
- package/src/components/Pane.parts.tsx +31 -26
- package/src/components/Prose.meta.ts +10 -0
- package/src/components/Prose.tsx +4 -3
- package/src/components/Select.parts.tsx +37 -29
- package/src/components/ThemeSwitcher.tsx +11 -13
- package/src/components/base/MaybeButtonOrLink.tsx +11 -6
- package/src/components/base/Render.tsx +28 -4
- package/src/components/base/index.ts +2 -0
- package/src/components/index.ts +8 -1
- package/src/hooks/useEDS.ts +16 -8
- package/src/index.ts +2 -1
- package/src/theme-persistence.ts +31 -0
|
@@ -168,6 +168,10 @@ export function Button({
|
|
|
168
168
|
u:*:transition-opacity
|
|
169
169
|
u:*:@state-disabled/button:opacity-disabled
|
|
170
170
|
u:*:@state-disabled/button:grayscale
|
|
171
|
+
u:*:@prop-variant-inverse/button:scheme-only-dark
|
|
172
|
+
u:*:@prop-variant-inverse/button:dark:scheme-only-light
|
|
173
|
+
u:*:@prop-variant-primary/button:scheme-only-dark
|
|
174
|
+
u:*:@prop-variant-danger/button:scheme-only-dark
|
|
171
175
|
u:@prop-size-xsmall/button:addon-small
|
|
172
176
|
u:@prop-size-small/button:addon-small
|
|
173
177
|
u:@prop-size-medium/button:addon-medium
|
package/src/components/Card.tsx
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
'use client'
|
|
2
2
|
|
|
3
|
-
import { useId, type ReactNode } from 'react'
|
|
3
|
+
import { useId, type ElementType, type ReactNode, type Ref } from 'react'
|
|
4
4
|
import { mergeProps } from '@base-ui/react'
|
|
5
|
+
import type { DistributedOmit } from 'type-fest'
|
|
5
6
|
|
|
6
7
|
import type { EDSComponentProps } from '@edgeandnode/eds-css'
|
|
7
8
|
import { ArrowUpRightInteractiveIcon } from '@edgeandnode/eds-react/icons'
|
|
@@ -32,20 +33,24 @@ export declare namespace CardProps {
|
|
|
32
33
|
*/
|
|
33
34
|
autoIcon?: boolean | undefined
|
|
34
35
|
}
|
|
36
|
+
interface CommonProps extends EDSComponentProps<typeof CardMeta> {
|
|
37
|
+
/** Attached to the card's outer element, even when the card is a button or link. */
|
|
38
|
+
ref?: Ref<HTMLElement> | undefined
|
|
39
|
+
}
|
|
35
40
|
interface ButtonProps
|
|
36
41
|
extends
|
|
37
|
-
|
|
42
|
+
CommonProps,
|
|
38
43
|
ClickableProps,
|
|
39
|
-
MaybeButtonOrLinkProps.ButtonProps,
|
|
44
|
+
Omit<MaybeButtonOrLinkProps.ButtonProps, 'ref' | 'render'>,
|
|
40
45
|
MaybeButtonOrLinkProps.DisableableProps {}
|
|
41
46
|
interface LinkProps
|
|
42
47
|
extends
|
|
43
|
-
|
|
48
|
+
CommonProps,
|
|
44
49
|
ClickableProps,
|
|
45
|
-
MaybeButtonOrLinkProps.LinkProps,
|
|
50
|
+
Omit<MaybeButtonOrLinkProps.LinkProps, 'ref' | 'render'>,
|
|
46
51
|
MaybeButtonOrLinkProps.DisableableProps {}
|
|
47
52
|
interface OtherElementProps
|
|
48
|
-
extends
|
|
53
|
+
extends CommonProps, Omit<MaybeButtonOrLinkProps.OtherElementProps, 'ref' | 'render'> {}
|
|
49
54
|
}
|
|
50
55
|
|
|
51
56
|
export type CardProps = CardProps.ButtonProps | CardProps.LinkProps | CardProps.OtherElementProps
|
|
@@ -57,7 +62,7 @@ export function Card({ ref: passedRef, as, variant, disabled, children, ...props
|
|
|
57
62
|
interactiveContent = false,
|
|
58
63
|
autoIcon = true,
|
|
59
64
|
...remainingProps
|
|
60
|
-
} = props as CardProps.ButtonProps | CardProps.LinkProps
|
|
65
|
+
} = props as DistributedOmit<CardProps.ButtonProps | CardProps.LinkProps, 'ref'>
|
|
61
66
|
const { rootProps, nestedProps } = splitProps(remainingProps)
|
|
62
67
|
|
|
63
68
|
const [statePassedRef, state] = useCSSState(
|
|
@@ -75,7 +80,8 @@ export function Card({ ref: passedRef, as, variant, disabled, children, ...props
|
|
|
75
80
|
{ ref: statePassedRef },
|
|
76
81
|
)
|
|
77
82
|
|
|
78
|
-
|
|
83
|
+
// The union of every HTML tag name is too complex a type for JSX
|
|
84
|
+
const Element = (as ?? 'div') as ElementType
|
|
79
85
|
const uniqueId = useId()
|
|
80
86
|
|
|
81
87
|
return (
|
|
@@ -11,11 +11,13 @@ import { ClusterMeta } from './Cluster.meta.ts'
|
|
|
11
11
|
|
|
12
12
|
export declare namespace ClusterProps {
|
|
13
13
|
interface ButtonProps
|
|
14
|
-
extends EDSComponentProps<typeof ClusterMeta>, MaybeButtonOrLinkProps.ButtonProps {}
|
|
14
|
+
extends EDSComponentProps<typeof ClusterMeta>, Omit<MaybeButtonOrLinkProps.ButtonProps, 'as'> {}
|
|
15
15
|
interface LinkProps
|
|
16
|
-
extends EDSComponentProps<typeof ClusterMeta>, MaybeButtonOrLinkProps.LinkProps {}
|
|
16
|
+
extends EDSComponentProps<typeof ClusterMeta>, Omit<MaybeButtonOrLinkProps.LinkProps, 'as'> {}
|
|
17
17
|
interface OtherElementProps
|
|
18
|
-
extends
|
|
18
|
+
extends
|
|
19
|
+
EDSComponentProps<typeof ClusterMeta>,
|
|
20
|
+
Omit<MaybeButtonOrLinkProps.OtherElementProps, 'as'> {}
|
|
19
21
|
}
|
|
20
22
|
|
|
21
23
|
export type ClusterProps =
|
|
@@ -54,7 +54,7 @@ export function Keyboard({ ref: passedRef, size, children, ...props }: KeyboardP
|
|
|
54
54
|
>
|
|
55
55
|
<span
|
|
56
56
|
className={cn(
|
|
57
|
-
`inline-flex h-(--height) min-w-(--height) items-center justify-center rounded-4 border border-
|
|
57
|
+
`inline-flex h-(--height) min-w-(--height) items-center justify-center rounded-4 border border-current/15
|
|
58
58
|
@prop-size-small/keyboard:gap-0.5
|
|
59
59
|
@prop-size-small/keyboard:px-0.75
|
|
60
60
|
@prop-size-small/keyboard:text-10
|
|
@@ -1,39 +1,47 @@
|
|
|
1
1
|
'use client'
|
|
2
2
|
|
|
3
|
-
import type { ComponentProps, ElementType } from 'react'
|
|
4
3
|
import { mergeProps } from '@base-ui/react'
|
|
4
|
+
import type { DistributedOmit } from 'type-fest'
|
|
5
5
|
|
|
6
6
|
import { LocalThemeContext, THEME_CLASSES, type ResolvedTheme } from '../EDSContext.ts'
|
|
7
|
+
import { Render, type AsOrRenderProps, type HTMLElementProps } from './base/Render.tsx'
|
|
7
8
|
|
|
8
|
-
export
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
export declare namespace LocalThemeProps {
|
|
10
|
+
interface CommonProps extends HTMLElementProps {
|
|
11
|
+
/** The theme to render the content in. */
|
|
12
|
+
theme: ResolvedTheme
|
|
13
|
+
}
|
|
11
14
|
}
|
|
12
15
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
export type LocalThemeProps = LocalThemeProps.CommonProps & AsOrRenderProps
|
|
17
|
+
export type DarkProps = DistributedOmit<LocalThemeProps, 'theme'>
|
|
18
|
+
export type LightProps = DistributedOmit<LocalThemeProps, 'theme'>
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Renders its content in the given theme, whatever the page's theme is. Unlike switching between
|
|
22
|
+
* `Dark` and `Light`, changing `theme` doesn't remount the content. Components that need to know
|
|
23
|
+
* the theme in JavaScript can read it with `useEDS().activeTheme`.
|
|
24
|
+
*/
|
|
25
|
+
export function LocalTheme({ theme, ...props }: LocalThemeProps) {
|
|
18
26
|
return (
|
|
19
27
|
<LocalThemeContext.Provider value={theme}>
|
|
20
|
-
<
|
|
28
|
+
<Render {...mergeProps({ className: THEME_CLASSES[theme] }, props)} />
|
|
21
29
|
</LocalThemeContext.Provider>
|
|
22
30
|
)
|
|
23
31
|
}
|
|
24
32
|
|
|
25
33
|
/**
|
|
26
34
|
* Renders its content in the dark theme, whatever the page's theme is. Components that need to know
|
|
27
|
-
* the theme in JavaScript can read it with `useEDS().
|
|
35
|
+
* the theme in JavaScript can read it with `useEDS().activeTheme`.
|
|
28
36
|
*/
|
|
29
|
-
export function Dark(props:
|
|
37
|
+
export function Dark(props: DarkProps) {
|
|
30
38
|
return <LocalTheme theme="dark" {...props} />
|
|
31
39
|
}
|
|
32
40
|
|
|
33
41
|
/**
|
|
34
42
|
* Renders its content in the light theme, whatever the page's theme is. Components that need to
|
|
35
|
-
* know the theme in JavaScript can read it with `useEDS().
|
|
43
|
+
* know the theme in JavaScript can read it with `useEDS().activeTheme`.
|
|
36
44
|
*/
|
|
37
|
-
export function Light(props:
|
|
45
|
+
export function Light(props: LightProps) {
|
|
38
46
|
return <LocalTheme theme="light" {...props} />
|
|
39
47
|
}
|