@graphprotocol/gds-react 0.1.2 → 0.2.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/dist/GDSProvider.d.ts +12 -10
- package/dist/GDSProvider.d.ts.map +1 -1
- package/dist/GDSProvider.js +10 -8
- package/dist/GDSProvider.js.map +1 -1
- package/dist/components/Address.js +2 -2
- package/dist/components/Address.meta.d.ts +1 -13
- package/dist/components/Address.meta.d.ts.map +1 -1
- package/dist/components/Avatar.d.ts.map +1 -1
- package/dist/components/Avatar.js +2 -10
- package/dist/components/Avatar.js.map +1 -1
- package/dist/components/Avatar.meta.d.ts +0 -2
- package/dist/components/Avatar.meta.d.ts.map +1 -1
- package/dist/components/AvatarGroup.meta.d.ts +8 -2
- package/dist/components/AvatarGroup.meta.d.ts.map +1 -1
- package/dist/components/Breadcrumbs.meta.d.ts +2 -3
- package/dist/components/Breadcrumbs.meta.d.ts.map +1 -1
- package/dist/components/Breadcrumbs.meta.js +3 -1
- package/dist/components/Breadcrumbs.meta.js.map +1 -1
- package/dist/components/Breadcrumbs.parts.d.ts.map +1 -1
- package/dist/components/Breadcrumbs.parts.js +13 -21
- package/dist/components/Breadcrumbs.parts.js.map +1 -1
- package/dist/components/Button.d.ts.map +1 -1
- package/dist/components/Button.js +10 -9
- package/dist/components/Button.js.map +1 -1
- package/dist/components/Button.meta.d.ts +1 -4
- package/dist/components/Button.meta.d.ts.map +1 -1
- package/dist/components/ButtonGroup.d.ts.map +1 -1
- package/dist/components/ButtonGroup.js +1 -5
- package/dist/components/ButtonGroup.js.map +1 -1
- package/dist/components/ButtonGroup.meta.d.ts +1 -5
- package/dist/components/ButtonGroup.meta.d.ts.map +1 -1
- package/dist/components/ButtonGroup.meta.js +8 -0
- package/dist/components/ButtonGroup.meta.js.map +1 -1
- package/dist/components/Card.meta.d.ts +1 -2
- package/dist/components/Card.meta.d.ts.map +1 -1
- package/dist/components/Card.meta.js +1 -0
- package/dist/components/Card.meta.js.map +1 -1
- package/dist/components/Checkbox.meta.d.ts +1 -6
- package/dist/components/Checkbox.meta.d.ts.map +1 -1
- package/dist/components/Checkbox.meta.js +1 -5
- package/dist/components/Checkbox.meta.js.map +1 -1
- package/dist/components/Chip.meta.d.ts +2 -4
- package/dist/components/Chip.meta.d.ts.map +1 -1
- package/dist/components/Chip.parts.d.ts.map +1 -1
- package/dist/components/Chip.parts.js +1 -9
- package/dist/components/Chip.parts.js.map +1 -1
- package/dist/components/Cluster.meta.d.ts +8 -2
- package/dist/components/Cluster.meta.d.ts.map +1 -1
- package/dist/components/CodeBlock.d.ts +1 -1
- package/dist/components/CodeBlock.meta.d.ts +2 -4
- package/dist/components/CodeBlock.meta.d.ts.map +1 -1
- package/dist/components/CodeBlock.parts.d.ts +6 -7
- package/dist/components/CodeBlock.parts.d.ts.map +1 -1
- package/dist/components/CodeBlock.parts.js +28 -10
- package/dist/components/CodeBlock.parts.js.map +1 -1
- package/dist/components/CodeInline.js +3 -3
- package/dist/components/CodeInline.meta.d.ts +1 -1
- package/dist/components/CodeInline.meta.d.ts.map +1 -1
- package/dist/components/CopyButton.d.ts.map +1 -1
- package/dist/components/CopyButton.js +2 -4
- package/dist/components/CopyButton.js.map +1 -1
- package/dist/components/CopyButton.meta.d.ts +1 -12
- package/dist/components/CopyButton.meta.d.ts.map +1 -1
- package/dist/components/CopyButton.meta.js +1 -6
- package/dist/components/CopyButton.meta.js.map +1 -1
- package/dist/components/CurrencyInput.meta.d.ts +1 -6
- package/dist/components/CurrencyInput.meta.d.ts.map +1 -1
- package/dist/components/CurrencyInput.meta.js +1 -5
- package/dist/components/CurrencyInput.meta.js.map +1 -1
- package/dist/components/DescriptionList.meta.d.ts +2 -5
- package/dist/components/DescriptionList.meta.d.ts.map +1 -1
- package/dist/components/DescriptionList.parts.d.ts +3 -0
- package/dist/components/DescriptionList.parts.d.ts.map +1 -1
- package/dist/components/DescriptionList.parts.js +1 -0
- package/dist/components/DescriptionList.parts.js.map +1 -1
- package/dist/components/Divider.meta.d.ts +1 -3
- package/dist/components/Divider.meta.d.ts.map +1 -1
- package/dist/components/Icon.js +4 -4
- package/dist/components/Icon.js.map +1 -1
- package/dist/components/Icon.meta.d.ts +0 -2
- package/dist/components/Icon.meta.d.ts.map +1 -1
- package/dist/components/Icon.meta.js +1 -0
- package/dist/components/Icon.meta.js.map +1 -1
- package/dist/components/Input.d.ts +5 -4
- package/dist/components/Input.d.ts.map +1 -1
- package/dist/components/Input.js +1 -0
- package/dist/components/Input.js.map +1 -1
- package/dist/components/Input.meta.d.ts +1 -6
- package/dist/components/Input.meta.d.ts.map +1 -1
- package/dist/components/Input.meta.js +1 -5
- package/dist/components/Input.meta.js.map +1 -1
- package/dist/components/Keyboard.js +1 -1
- package/dist/components/Keyboard.meta.d.ts +0 -1
- package/dist/components/Keyboard.meta.d.ts.map +1 -1
- package/dist/components/Label.meta.d.ts +1 -3
- package/dist/components/Label.meta.d.ts.map +1 -1
- package/dist/components/Link.d.ts +1 -1
- package/dist/components/Link.d.ts.map +1 -1
- package/dist/components/Link.js +1 -2
- package/dist/components/Link.js.map +1 -1
- package/dist/components/Link.meta.d.ts +1 -2
- package/dist/components/Link.meta.d.ts.map +1 -1
- package/dist/components/Link.meta.js +1 -0
- package/dist/components/Link.meta.js.map +1 -1
- package/dist/components/Menu.meta.d.ts +31 -2
- package/dist/components/Menu.meta.d.ts.map +1 -1
- package/dist/components/Menu.meta.js +39 -1
- package/dist/components/Menu.meta.js.map +1 -1
- package/dist/components/Menu.parts.d.ts +23 -32
- package/dist/components/Menu.parts.d.ts.map +1 -1
- package/dist/components/Menu.parts.js +284 -303
- package/dist/components/Menu.parts.js.map +1 -1
- package/dist/components/Modal.d.ts +1 -1
- package/dist/components/Modal.meta.d.ts +1 -3
- package/dist/components/Modal.meta.d.ts.map +1 -1
- package/dist/components/Modal.meta.js +1 -1
- package/dist/components/Modal.meta.js.map +1 -1
- package/dist/components/Modal.parts.d.ts +14 -15
- package/dist/components/Modal.parts.d.ts.map +1 -1
- package/dist/components/Modal.parts.js +36 -32
- package/dist/components/Modal.parts.js.map +1 -1
- package/dist/components/OTCInput.js +1 -1
- package/dist/components/OTCInput.meta.d.ts +1 -6
- package/dist/components/OTCInput.meta.d.ts.map +1 -1
- package/dist/components/OTCInput.meta.js +1 -5
- package/dist/components/OTCInput.meta.js.map +1 -1
- package/dist/components/Radio.meta.d.ts +1 -6
- package/dist/components/Radio.meta.d.ts.map +1 -1
- package/dist/components/Radio.meta.js +1 -5
- package/dist/components/Radio.meta.js.map +1 -1
- package/dist/components/Search.meta.d.ts +1 -3
- package/dist/components/Search.meta.d.ts.map +1 -1
- package/dist/components/SegmentedControl.meta.d.ts +2 -3
- package/dist/components/SegmentedControl.meta.d.ts.map +1 -1
- package/dist/components/SegmentedControl.meta.js +3 -1
- package/dist/components/SegmentedControl.meta.js.map +1 -1
- package/dist/components/SegmentedControl.parts.d.ts.map +1 -1
- package/dist/components/SegmentedControl.parts.js +4 -9
- package/dist/components/SegmentedControl.parts.js.map +1 -1
- package/dist/components/Status.meta.d.ts +0 -2
- package/dist/components/Status.meta.d.ts.map +1 -1
- package/dist/components/Stepper.meta.d.ts +1 -2
- package/dist/components/Stepper.meta.d.ts.map +1 -1
- package/dist/components/Stepper.meta.js +1 -0
- package/dist/components/Stepper.meta.js.map +1 -1
- package/dist/components/Stepper.parts.d.ts.map +1 -1
- package/dist/components/Stepper.parts.js +1 -1
- package/dist/components/Stepper.parts.js.map +1 -1
- package/dist/components/Switch.meta.d.ts +1 -6
- package/dist/components/Switch.meta.d.ts.map +1 -1
- package/dist/components/Switch.meta.js +1 -5
- package/dist/components/Switch.meta.js.map +1 -1
- package/dist/components/TabSet.meta.d.ts +2 -5
- package/dist/components/TabSet.meta.d.ts.map +1 -1
- package/dist/components/TabSet.meta.js +3 -1
- package/dist/components/TabSet.meta.js.map +1 -1
- package/dist/components/Tag.meta.d.ts +0 -2
- package/dist/components/Tag.meta.d.ts.map +1 -1
- package/dist/components/TextArea.meta.d.ts +1 -6
- package/dist/components/TextArea.meta.d.ts.map +1 -1
- package/dist/components/TextArea.meta.js +1 -5
- package/dist/components/TextArea.meta.js.map +1 -1
- package/dist/components/ToggleButton.js +2 -2
- package/dist/components/ToggleButton.js.map +1 -1
- package/dist/components/ToggleButton.meta.d.ts +1 -12
- package/dist/components/ToggleButton.meta.d.ts.map +1 -1
- package/dist/components/ToggleButton.meta.js +1 -6
- package/dist/components/ToggleButton.meta.js.map +1 -1
- package/dist/components/Tooltip.d.ts +2 -2
- package/dist/components/Tooltip.d.ts.map +1 -1
- package/dist/components/Tooltip.js +2 -2
- package/dist/components/Tooltip.js.map +1 -1
- package/dist/components/Tooltip.meta.d.ts +12 -7
- package/dist/components/Tooltip.meta.d.ts.map +1 -1
- package/dist/components/Tooltip.meta.js +13 -2
- package/dist/components/Tooltip.meta.js.map +1 -1
- package/dist/components/Tooltip.parts.d.ts +20 -20
- package/dist/components/Tooltip.parts.d.ts.map +1 -1
- package/dist/components/Tooltip.parts.js +129 -88
- package/dist/components/Tooltip.parts.js.map +1 -1
- package/dist/components/base/Addon.meta.d.ts +1 -1
- package/dist/components/base/Addon.meta.d.ts.map +1 -1
- package/dist/components/base/Addon.meta.js +3 -1
- package/dist/components/base/Addon.meta.js.map +1 -1
- package/dist/components/base/ButtonOrLink.d.ts +1 -1
- package/dist/components/base/ButtonOrLink.parts.d.ts +6 -5
- package/dist/components/base/ButtonOrLink.parts.d.ts.map +1 -1
- package/dist/components/base/ButtonOrLink.parts.js +28 -31
- package/dist/components/base/ButtonOrLink.parts.js.map +1 -1
- package/dist/components/base/Checkable.meta.d.ts +1 -2
- package/dist/components/base/Checkable.meta.d.ts.map +1 -1
- package/dist/components/base/Checkable.parts.d.ts +6 -6
- package/dist/components/base/Checkable.parts.d.ts.map +1 -1
- package/dist/components/base/Checkable.parts.js +2 -2
- package/dist/components/base/Checkable.parts.js.map +1 -1
- package/dist/components/base/Field.meta.d.ts +1 -2
- package/dist/components/base/Field.meta.d.ts.map +1 -1
- package/dist/components/base/Field.parts.d.ts +5 -4
- package/dist/components/base/Field.parts.d.ts.map +1 -1
- package/dist/components/base/Field.parts.js +1 -1
- package/dist/components/base/Field.parts.js.map +1 -1
- package/dist/components/base/MaybeButtonOrLink.d.ts +1 -1
- package/dist/components/base/MaybeButtonOrLink.d.ts.map +1 -1
- package/dist/components/base/Portal.d.ts +1 -1
- package/dist/components/base/Portal.d.ts.map +1 -1
- package/dist/components/base/Portal.js +3 -6
- package/dist/components/base/Portal.js.map +1 -1
- package/dist/components/base/Render.d.ts +21 -6
- package/dist/components/base/Render.d.ts.map +1 -1
- package/dist/components/base/Render.js +3 -2
- package/dist/components/base/Render.js.map +1 -1
- package/dist/components/base/Transition.js +2 -2
- package/dist/components/base/Transition.meta.d.ts +1 -1
- package/dist/components/base/Transition.meta.d.ts.map +1 -1
- package/dist/components/base/Transition.meta.js +1 -0
- package/dist/components/base/Transition.meta.js.map +1 -1
- package/dist/components/base/index.d.ts +1 -2
- package/dist/components/base/index.d.ts.map +1 -1
- package/dist/components/base/index.js +1 -2
- 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/index.d.ts +1 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +1 -0
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/useCSSProp.d.ts.map +1 -1
- package/dist/hooks/useCSSProp.js +6 -6
- package/dist/hooks/useCSSProp.js.map +1 -1
- package/dist/hooks/useCSSProps.d.ts +11 -13
- package/dist/hooks/useCSSProps.d.ts.map +1 -1
- package/dist/hooks/useCSSProps.js +11 -19
- package/dist/hooks/useCSSProps.js.map +1 -1
- package/dist/hooks/useCSSPropsPolyfill.d.ts +1 -1
- package/dist/hooks/useCSSPropsPolyfill.d.ts.map +1 -1
- package/dist/hooks/useCSSPropsPolyfill.js +12 -20
- package/dist/hooks/useCSSPropsPolyfill.js.map +1 -1
- package/dist/hooks/useCSSState.d.ts.map +1 -1
- package/dist/hooks/useCSSState.js +7 -3
- package/dist/hooks/useCSSState.js.map +1 -1
- package/dist/hooks/useEffectWithRefDeps.d.ts +2 -2
- package/dist/hooks/useEffectWithRefDeps.d.ts.map +1 -1
- package/dist/hooks/useEffectWithRefDeps.js +1 -1
- package/dist/hooks/useEffectWithRefDeps.js.map +1 -1
- package/dist/hooks/useFirstRender.d.ts +14 -0
- package/dist/hooks/useFirstRender.d.ts.map +1 -0
- package/dist/hooks/useFirstRender.js +20 -0
- package/dist/hooks/useFirstRender.js.map +1 -0
- package/dist/hooks/useGDS.d.ts +1 -1
- package/dist/hooks/usePrevious.d.ts +6 -4
- package/dist/hooks/usePrevious.d.ts.map +1 -1
- package/dist/hooks/usePrevious.js +6 -4
- package/dist/hooks/usePrevious.js.map +1 -1
- package/dist/hooks/useRefWithInit.d.ts +2 -2
- package/dist/hooks/useRefWithInit.d.ts.map +1 -1
- package/dist/hooks/useRefWithInit.js.map +1 -1
- package/dist/hooks/useStyleObserver.d.ts +2 -2
- package/dist/hooks/useStyleObserver.d.ts.map +1 -1
- package/dist/hooks/useStyleObserver.js.map +1 -1
- package/dist/icons/CalendarDynamicIcon.d.ts +8 -5
- package/dist/icons/CalendarDynamicIcon.d.ts.map +1 -1
- package/dist/icons/CalendarDynamicIcon.js +5 -2
- package/dist/icons/CalendarDynamicIcon.js.map +1 -1
- package/dist/icons/CopyInteractiveIcon.d.ts +5 -4
- package/dist/icons/CopyInteractiveIcon.d.ts.map +1 -1
- package/dist/icons/CopyInteractiveIcon.js +2 -2
- package/dist/icons/CopyInteractiveIcon.js.map +1 -1
- package/dist/icons/SidebarLeftInteractiveIcon.d.ts +4 -3
- package/dist/icons/SidebarLeftInteractiveIcon.d.ts.map +1 -1
- package/dist/icons/SidebarLeftInteractiveIcon.js +2 -2
- package/dist/icons/SidebarLeftInteractiveIcon.js.map +1 -1
- package/dist/icons/SidebarRightInteractiveIcon.d.ts +4 -3
- package/dist/icons/SidebarRightInteractiveIcon.d.ts.map +1 -1
- package/dist/icons/SidebarRightInteractiveIcon.js +2 -2
- package/dist/icons/SidebarRightInteractiveIcon.js.map +1 -1
- package/dist/tailwind-plugin.js +5 -5
- package/dist/tailwind-plugin.js.map +1 -1
- package/dist/utils/cn.d.ts +3 -1
- package/dist/utils/cn.d.ts.map +1 -1
- package/dist/utils/cn.js +3 -1
- package/dist/utils/cn.js.map +1 -1
- package/dist/utils/getCSSPropsAttributes.d.ts +10 -3
- package/dist/utils/getCSSPropsAttributes.d.ts.map +1 -1
- package/dist/utils/getCSSPropsAttributes.js +4 -5
- package/dist/utils/getCSSPropsAttributes.js.map +1 -1
- package/dist/utils/splitProps.d.ts +1 -4
- package/dist/utils/splitProps.d.ts.map +1 -1
- package/dist/utils/splitProps.js +2 -7
- package/dist/utils/splitProps.js.map +1 -1
- package/dist/utils/trimReactNode.d.ts +10 -8
- package/dist/utils/trimReactNode.d.ts.map +1 -1
- package/dist/utils/trimReactNode.js +10 -8
- package/dist/utils/trimReactNode.js.map +1 -1
- package/package.json +17 -17
- package/src/GDSProvider.tsx +11 -9
- package/src/components/Address.tsx +2 -2
- package/src/components/Avatar.tsx +5 -10
- package/src/components/Breadcrumbs.meta.ts +3 -1
- package/src/components/Breadcrumbs.parts.tsx +16 -28
- package/src/components/Button.tsx +14 -10
- package/src/components/ButtonGroup.meta.ts +8 -0
- package/src/components/ButtonGroup.tsx +1 -5
- package/src/components/Card.meta.ts +1 -0
- package/src/components/Checkbox.meta.ts +1 -5
- package/src/components/Chip.parts.tsx +1 -11
- package/src/components/CodeBlock.parts.tsx +75 -50
- package/src/components/CodeInline.tsx +3 -3
- package/src/components/CopyButton.meta.ts +1 -6
- package/src/components/CopyButton.tsx +3 -4
- package/src/components/CurrencyInput.meta.ts +1 -5
- package/src/components/DescriptionList.parts.tsx +1 -0
- package/src/components/Icon.meta.ts +1 -0
- package/src/components/Icon.tsx +4 -4
- package/src/components/Input.meta.ts +1 -5
- package/src/components/Input.tsx +5 -6
- package/src/components/Keyboard.tsx +1 -1
- package/src/components/Link.meta.ts +1 -0
- package/src/components/Link.tsx +2 -3
- package/src/components/Menu.meta.ts +39 -1
- package/src/components/Menu.parts.tsx +553 -549
- package/src/components/Modal.meta.ts +1 -1
- package/src/components/Modal.parts.tsx +67 -68
- package/src/components/OTCInput.meta.ts +1 -5
- package/src/components/OTCInput.tsx +1 -1
- package/src/components/Radio.meta.ts +1 -5
- package/src/components/SegmentedControl.meta.ts +3 -1
- package/src/components/SegmentedControl.parts.tsx +7 -10
- package/src/components/Stepper.meta.ts +1 -0
- package/src/components/Stepper.parts.tsx +3 -1
- package/src/components/Switch.meta.ts +1 -5
- package/src/components/TabSet.meta.ts +3 -1
- package/src/components/TextArea.meta.ts +1 -5
- package/src/components/ToggleButton.meta.ts +1 -6
- package/src/components/ToggleButton.tsx +1 -1
- package/src/components/Tooltip.meta.ts +13 -2
- package/src/components/Tooltip.parts.tsx +215 -158
- package/src/components/Tooltip.tsx +2 -2
- package/src/components/base/Addon.meta.ts +3 -1
- package/src/components/base/ButtonOrLink.parts.tsx +52 -51
- package/src/components/base/Checkable.parts.tsx +6 -13
- package/src/components/base/Field.parts.tsx +5 -5
- package/src/components/base/Portal.tsx +5 -7
- package/src/components/base/Render.tsx +37 -15
- package/src/components/base/Transition.meta.ts +1 -0
- package/src/components/base/Transition.tsx +2 -2
- package/src/components/base/index.ts +8 -2
- package/src/components/index.ts +1 -2
- package/src/hooks/index.ts +1 -0
- package/src/hooks/useCSSProp.ts +6 -8
- package/src/hooks/useCSSProps.ts +13 -22
- package/src/hooks/useCSSPropsPolyfill.ts +15 -23
- package/src/hooks/useCSSState.ts +11 -6
- package/src/hooks/useEffectWithRefDeps.ts +2 -2
- package/src/hooks/useFirstRender.ts +36 -0
- package/src/hooks/usePrevious.ts +6 -4
- package/src/hooks/useRefWithInit.ts +2 -2
- package/src/hooks/useStyleObserver.ts +5 -1
- package/src/icons/CalendarDynamicIcon.tsx +16 -6
- package/src/icons/CopyInteractiveIcon.tsx +10 -5
- package/src/icons/SidebarLeftInteractiveIcon.tsx +9 -5
- package/src/icons/SidebarRightInteractiveIcon.tsx +9 -5
- package/src/tailwind-plugin.ts +5 -5
- package/src/utils/cn.ts +3 -1
- package/src/utils/getCSSPropsAttributes.ts +13 -8
- package/src/utils/splitProps.ts +9 -9
- package/src/utils/trimReactNode.tsx +10 -8
- package/dist/components/base/ButtonOrLink.meta.d.ts +0 -2
- package/dist/components/base/ButtonOrLink.meta.d.ts.map +0 -1
- package/dist/components/base/ButtonOrLink.meta.js +0 -6
- package/dist/components/base/ButtonOrLink.meta.js.map +0 -1
- package/src/components/base/ButtonOrLink.meta.ts +0 -6
|
@@ -20,7 +20,7 @@ export function useEffectWithRefDeps<T, RefDeps extends readonly Ref<T>[]>(
|
|
|
20
20
|
effect: EffectCallback,
|
|
21
21
|
regularDeps: unknown[],
|
|
22
22
|
refDeps: [...RefDeps],
|
|
23
|
-
options: { deepCompare?: boolean; hook?: EffectHook } = {},
|
|
23
|
+
options: { deepCompare?: boolean | undefined; hook?: EffectHook | undefined } = {},
|
|
24
24
|
) {
|
|
25
25
|
const { deepCompare = false, hook = useEffect } = options
|
|
26
26
|
|
|
@@ -53,7 +53,7 @@ export function useEffectWithRefDeps<T, RefDeps extends readonly Ref<T>[]>(
|
|
|
53
53
|
|
|
54
54
|
const runEffectNextTick = useCallback(() => {
|
|
55
55
|
const token = ++runEffectToken.current
|
|
56
|
-
queueMicrotask(() => {
|
|
56
|
+
window.queueMicrotask(() => {
|
|
57
57
|
if (runEffectToken.current === token) {
|
|
58
58
|
runEffect()
|
|
59
59
|
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { useEffect, useRef } from 'react'
|
|
2
|
+
|
|
3
|
+
import { useForceRerender } from './useForceRerender.ts'
|
|
4
|
+
|
|
5
|
+
interface UseFirstRenderOptions {
|
|
6
|
+
/** Callback to run on first render. */
|
|
7
|
+
callback?: () => void
|
|
8
|
+
/**
|
|
9
|
+
* If true, immediately triggers a re-render after the first render.
|
|
10
|
+
*
|
|
11
|
+
* @default false
|
|
12
|
+
*/
|
|
13
|
+
immediatelyRerender?: boolean | undefined
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export function useFirstRender(callback?: () => void): boolean
|
|
17
|
+
export function useFirstRender(options: UseFirstRenderOptions): boolean
|
|
18
|
+
export function useFirstRender(callbackOrOptions?: (() => void) | UseFirstRenderOptions) {
|
|
19
|
+
const options = typeof callbackOrOptions === 'function' ? undefined : callbackOrOptions
|
|
20
|
+
const callback = typeof callbackOrOptions === 'function' ? callbackOrOptions : options?.callback
|
|
21
|
+
|
|
22
|
+
const firstRender = useRef(true)
|
|
23
|
+
const [rerender] = useForceRerender()
|
|
24
|
+
|
|
25
|
+
useEffect(() => {
|
|
26
|
+
if (!firstRender.current) return
|
|
27
|
+
firstRender.current = false
|
|
28
|
+
callback?.()
|
|
29
|
+
if (options?.immediatelyRerender) {
|
|
30
|
+
rerender()
|
|
31
|
+
}
|
|
32
|
+
// oxlint-disable-next-line react-hooks/exhaustive-deps
|
|
33
|
+
}, [])
|
|
34
|
+
|
|
35
|
+
return firstRender.current
|
|
36
|
+
}
|
package/src/hooks/usePrevious.ts
CHANGED
|
@@ -12,10 +12,12 @@ const NOT_SET = Symbol('NOT_SET')
|
|
|
12
12
|
*
|
|
13
13
|
* @example
|
|
14
14
|
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
15
|
+
* ```ts
|
|
16
|
+
* const previous = usePrevious(someValue)
|
|
17
|
+
* if (previous.hasChanged) {
|
|
18
|
+
* // Value changed from `previous.value` to `someValue`
|
|
19
|
+
* }
|
|
20
|
+
* ```
|
|
19
21
|
*/
|
|
20
22
|
export function usePrevious<T>(value: T) {
|
|
21
23
|
const previousRenderValueRef = useRef<T | typeof NOT_SET>(NOT_SET)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { useRef, type
|
|
1
|
+
import { useRef, type RefObject } from 'react'
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Works like `useRef` but accepts an initializer function that runs once on the first render, like
|
|
@@ -11,5 +11,5 @@ export function useRefWithInit<T>(initFn: () => T) {
|
|
|
11
11
|
ref.current = initFn()
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
-
return ref as
|
|
14
|
+
return ref as RefObject<T>
|
|
15
15
|
}
|
|
@@ -17,7 +17,11 @@ export function useStyleObserver<T extends string>(
|
|
|
17
17
|
properties: T[],
|
|
18
18
|
onChange: (records: Record<T>[]) => void,
|
|
19
19
|
deps: unknown[],
|
|
20
|
-
options: {
|
|
20
|
+
options: {
|
|
21
|
+
ref?: Ref<HTMLElement> | undefined
|
|
22
|
+
immediate?: boolean | undefined
|
|
23
|
+
disabled?: boolean | undefined
|
|
24
|
+
} = {},
|
|
21
25
|
) {
|
|
22
26
|
const { ref: passedRef, immediate = false, disabled = false } = options
|
|
23
27
|
const elementRef = useRef<HTMLElement>(null)
|
|
@@ -2,17 +2,21 @@ import { useId } from 'react'
|
|
|
2
2
|
|
|
3
3
|
import { Icon, type IconProps } from '../components/Icon.tsx'
|
|
4
4
|
|
|
5
|
-
export interface CalendarDynamicIconProps extends IconProps {
|
|
5
|
+
export interface CalendarDynamicIconProps extends Omit<IconProps, 'alt'> {
|
|
6
|
+
/** Defaults to a formatted version of `date`. */
|
|
7
|
+
alt?: string
|
|
6
8
|
/**
|
|
7
|
-
* Day of the month.
|
|
9
|
+
* Day of the month, or a full date. If the latter, the icon will only display the day part, but
|
|
10
|
+
* the default `alt` will be the full formatted date.
|
|
8
11
|
*
|
|
9
|
-
* @default new Date()
|
|
12
|
+
* @default new Date()
|
|
10
13
|
*/
|
|
11
|
-
date?: number
|
|
14
|
+
date?: number | Date
|
|
12
15
|
}
|
|
13
16
|
|
|
14
17
|
export function CalendarDynamicIcon({
|
|
15
|
-
|
|
18
|
+
alt,
|
|
19
|
+
date = new Date(),
|
|
16
20
|
...props
|
|
17
21
|
}: CalendarDynamicIconProps) {
|
|
18
22
|
const uniqueId = useId()
|
|
@@ -37,13 +41,19 @@ export function CalendarDynamicIcon({
|
|
|
37
41
|
fontSize="7px"
|
|
38
42
|
fontWeight="bold"
|
|
39
43
|
>
|
|
40
|
-
{date}
|
|
44
|
+
{typeof date === 'number' ? date : date.getDate()}
|
|
41
45
|
</text>
|
|
42
46
|
</mask>
|
|
43
47
|
</defs>
|
|
44
48
|
<use href={`#${uniqueId}-calendar-path`} mask={`url(#${uniqueId}-text-mask)`} />
|
|
45
49
|
</svg>
|
|
46
50
|
}
|
|
51
|
+
alt={
|
|
52
|
+
alt ??
|
|
53
|
+
(typeof date === 'number'
|
|
54
|
+
? `Day ${date} of the month`
|
|
55
|
+
: date.toLocaleDateString(undefined, { dateStyle: 'long' }))
|
|
56
|
+
}
|
|
47
57
|
data-name="CalendarDynamic"
|
|
48
58
|
{...props}
|
|
49
59
|
/>
|
|
@@ -1,14 +1,19 @@
|
|
|
1
1
|
import { useId } from 'react'
|
|
2
|
-
import type { SetOptional } from 'type-fest'
|
|
3
2
|
|
|
4
3
|
import { Icon, type IconProps } from '../components/Icon.tsx'
|
|
5
4
|
|
|
6
|
-
export interface CopyInteractiveIconProps extends
|
|
5
|
+
export interface CopyInteractiveIconProps extends Omit<IconProps, 'alt'> {
|
|
6
|
+
/** @default 'Copy' */
|
|
7
|
+
alt?: IconProps['alt']
|
|
7
8
|
/** @default false */
|
|
8
|
-
copied?: boolean
|
|
9
|
+
copied?: boolean | undefined
|
|
9
10
|
}
|
|
10
11
|
|
|
11
|
-
export function CopyInteractiveIcon({
|
|
12
|
+
export function CopyInteractiveIcon({
|
|
13
|
+
alt = 'Copy',
|
|
14
|
+
copied = false,
|
|
15
|
+
...props
|
|
16
|
+
}: CopyInteractiveIconProps) {
|
|
12
17
|
const uniqueId = useId()
|
|
13
18
|
|
|
14
19
|
return (
|
|
@@ -85,7 +90,7 @@ export function CopyInteractiveIcon({ copied = false, ...props }: CopyInteractiv
|
|
|
85
90
|
</g>
|
|
86
91
|
</svg>
|
|
87
92
|
}
|
|
88
|
-
alt=
|
|
93
|
+
alt={alt}
|
|
89
94
|
data-name="CopyAnimated"
|
|
90
95
|
{...props}
|
|
91
96
|
/>
|
|
@@ -1,10 +1,14 @@
|
|
|
1
|
-
import type { SetOptional } from 'type-fest'
|
|
2
|
-
|
|
3
1
|
import { Icon, type IconProps } from '../components/Icon.tsx'
|
|
4
2
|
|
|
5
|
-
export interface SidebarLeftInteractiveIconProps extends
|
|
3
|
+
export interface SidebarLeftInteractiveIconProps extends Omit<IconProps, 'alt'> {
|
|
4
|
+
/** @default 'Toggle sidebar' */
|
|
5
|
+
alt?: IconProps['alt']
|
|
6
|
+
}
|
|
6
7
|
|
|
7
|
-
export function SidebarLeftInteractiveIcon(
|
|
8
|
+
export function SidebarLeftInteractiveIcon({
|
|
9
|
+
alt = 'Toggle sidebar',
|
|
10
|
+
...props
|
|
11
|
+
}: SidebarLeftInteractiveIconProps) {
|
|
8
12
|
return (
|
|
9
13
|
<Icon
|
|
10
14
|
src={
|
|
@@ -19,7 +23,7 @@ export function SidebarLeftInteractiveIcon(props: SidebarLeftInteractiveIconProp
|
|
|
19
23
|
/>
|
|
20
24
|
</svg>
|
|
21
25
|
}
|
|
22
|
-
alt=
|
|
26
|
+
alt={alt}
|
|
23
27
|
data-name="SidebarLeftInteractive"
|
|
24
28
|
{...props}
|
|
25
29
|
/>
|
|
@@ -1,10 +1,14 @@
|
|
|
1
|
-
import type { SetOptional } from 'type-fest'
|
|
2
|
-
|
|
3
1
|
import { Icon, type IconProps } from '../components/Icon.tsx'
|
|
4
2
|
|
|
5
|
-
export interface SidebarRightInteractiveIconProps extends
|
|
3
|
+
export interface SidebarRightInteractiveIconProps extends Omit<IconProps, 'alt'> {
|
|
4
|
+
/** @default 'Toggle sidebar' */
|
|
5
|
+
alt?: IconProps['alt']
|
|
6
|
+
}
|
|
6
7
|
|
|
7
|
-
export function SidebarRightInteractiveIcon(
|
|
8
|
+
export function SidebarRightInteractiveIcon({
|
|
9
|
+
alt = 'Toggle sidebar',
|
|
10
|
+
...props
|
|
11
|
+
}: SidebarRightInteractiveIconProps) {
|
|
8
12
|
return (
|
|
9
13
|
<Icon
|
|
10
14
|
src={
|
|
@@ -19,7 +23,7 @@ export function SidebarRightInteractiveIcon(props: SidebarRightInteractiveIconPr
|
|
|
19
23
|
/>
|
|
20
24
|
</svg>
|
|
21
25
|
}
|
|
22
|
-
alt=
|
|
26
|
+
alt={alt}
|
|
23
27
|
data-name="SidebarRightInteractive"
|
|
24
28
|
{...props}
|
|
25
29
|
/>
|
package/src/tailwind-plugin.ts
CHANGED
|
@@ -7,7 +7,6 @@ import { AddressMeta } from './components/Address.meta.ts'
|
|
|
7
7
|
import { AvatarMeta } from './components/Avatar.meta.ts'
|
|
8
8
|
import { AvatarGroupMeta } from './components/AvatarGroup.meta.ts'
|
|
9
9
|
import { AddonMeta } from './components/base/Addon.meta.ts'
|
|
10
|
-
import { ButtonOrLinkMeta } from './components/base/ButtonOrLink.meta.ts'
|
|
11
10
|
import { CheckableMeta } from './components/base/Checkable.meta.ts'
|
|
12
11
|
import { FieldMeta } from './components/base/Field.meta.ts'
|
|
13
12
|
import { TransitionMeta } from './components/base/Transition.meta.ts'
|
|
@@ -19,6 +18,7 @@ import { CheckboxMeta } from './components/Checkbox.meta.ts'
|
|
|
19
18
|
import { ChipGroupMeta, ChipMeta } from './components/Chip.meta.ts'
|
|
20
19
|
import { ClusterMeta } from './components/Cluster.meta.ts'
|
|
21
20
|
import { CodeBlockMeta, CodeBlockTabsMeta } from './components/CodeBlock.meta.ts'
|
|
21
|
+
import { CodeInlineMeta } from './components/CodeInline.meta.ts'
|
|
22
22
|
import { CopyButtonMeta } from './components/CopyButton.meta.ts'
|
|
23
23
|
import { CurrencyInputMeta } from './components/CurrencyInput.meta.ts'
|
|
24
24
|
import { DescriptionListItemMeta, DescriptionListMeta } from './components/DescriptionList.meta.ts'
|
|
@@ -78,17 +78,17 @@ const gdsTailwindPluginWithComponents: ReturnType<typeof createPlugin> = createP
|
|
|
78
78
|
AvatarGroupMeta,
|
|
79
79
|
BreadcrumbsItemMeta,
|
|
80
80
|
BreadcrumbsMeta,
|
|
81
|
-
ButtonOrLinkMeta,
|
|
82
81
|
ButtonMeta,
|
|
83
82
|
ButtonGroupMeta,
|
|
84
83
|
CardMeta,
|
|
85
|
-
CodeBlockMeta,
|
|
86
|
-
CodeBlockTabsMeta,
|
|
87
84
|
CheckableMeta,
|
|
88
85
|
CheckboxMeta,
|
|
89
86
|
ChipMeta,
|
|
90
87
|
ChipGroupMeta,
|
|
91
88
|
ClusterMeta,
|
|
89
|
+
CodeBlockMeta,
|
|
90
|
+
CodeBlockTabsMeta,
|
|
91
|
+
CodeInlineMeta,
|
|
92
92
|
CopyButtonMeta,
|
|
93
93
|
CurrencyInputMeta,
|
|
94
94
|
DescriptionListItemMeta,
|
|
@@ -111,8 +111,8 @@ const gdsTailwindPluginWithComponents: ReturnType<typeof createPlugin> = createP
|
|
|
111
111
|
StatusMeta,
|
|
112
112
|
StepperMeta,
|
|
113
113
|
SwitchMeta,
|
|
114
|
-
TabSetTabsMeta,
|
|
115
114
|
TabSetTabMeta,
|
|
115
|
+
TabSetTabsMeta,
|
|
116
116
|
TagMeta,
|
|
117
117
|
TextAreaMeta,
|
|
118
118
|
ToggleButtonMeta,
|
package/src/utils/cn.ts
CHANGED
|
@@ -3,7 +3,9 @@
|
|
|
3
3
|
*
|
|
4
4
|
* @example
|
|
5
5
|
*
|
|
6
|
-
*
|
|
6
|
+
* ```ts
|
|
7
|
+
* cn('base-class', condition && 'conditional-class', className)
|
|
8
|
+
* ```
|
|
7
9
|
*/
|
|
8
10
|
export function cn(...classes: (string | undefined | null | false)[]): string {
|
|
9
11
|
return classes.filter(Boolean).join(' ')
|
|
@@ -12,8 +12,14 @@ type AllCSSProps<C extends GDSComponent> = {
|
|
|
12
12
|
[K in keyof ComponentCSSProps<C>]-?: ComponentCSSProps<C>[K] | undefined
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
/**
|
|
16
|
+
* Validates the passed values object:
|
|
17
|
+
*
|
|
18
|
+
* - Rejects keys that are not CSS props.
|
|
19
|
+
* - For props with a `defaultValue`, ensures they can be `undefined` (preventing destructuring
|
|
20
|
+
* defaults, which would break `default-*` utilities).
|
|
21
|
+
* - For props without a `defaultValue`, allows any value since they're required.
|
|
22
|
+
*/
|
|
17
23
|
type ValidatePassedValues<C extends GDSComponent, T extends AllCSSProps<C>> = {
|
|
18
24
|
[K in keyof T]: K extends keyof ComponentCSSPropsConfig<C>
|
|
19
25
|
? 'defaultValue' extends keyof ComponentCSSPropsConfig<C>[K]
|
|
@@ -21,12 +27,11 @@ type ValidatePassedValues<C extends GDSComponent, T extends AllCSSProps<C>> = {
|
|
|
21
27
|
? T[K]
|
|
22
28
|
: never
|
|
23
29
|
: T[K]
|
|
24
|
-
:
|
|
30
|
+
: `"${K & string}" is not a CSS prop of this component`
|
|
25
31
|
}
|
|
26
32
|
|
|
27
33
|
/**
|
|
28
|
-
* Returns attributes to spread on the root element of a component that supports CSS
|
|
29
|
-
* enables the CSS Props system to apply prop-based styling.
|
|
34
|
+
* Returns attributes to spread on the root element of a component that supports CSS props.
|
|
30
35
|
*
|
|
31
36
|
* @param component The component metadata object created with createComponent.
|
|
32
37
|
* @param passedValues Object containing all the CSS prop values from the component props.
|
|
@@ -41,13 +46,13 @@ export function getCSSPropsAttributes<C extends GDSComponent, V extends AllCSSPr
|
|
|
41
46
|
const customProperties: Record<string, string> = {}
|
|
42
47
|
|
|
43
48
|
for (const propName in passedValues) {
|
|
44
|
-
const
|
|
49
|
+
const cssProp = component.getCSSPropByName(propName)
|
|
45
50
|
const value = passedValues[propName]
|
|
46
51
|
if (value === undefined) continue
|
|
47
|
-
customProperties[`--gds-passed-${
|
|
52
|
+
customProperties[`--gds-passed-${cssProp.kebabName}`] = getCSSPropRawValue(cssProp, value)
|
|
48
53
|
}
|
|
49
54
|
|
|
50
55
|
return {
|
|
51
|
-
style: { ...
|
|
56
|
+
style: { ...customProperties, ...style },
|
|
52
57
|
}
|
|
53
58
|
}
|
package/src/utils/splitProps.ts
CHANGED
|
@@ -10,28 +10,22 @@
|
|
|
10
10
|
* destructured), `style`, `inert`, `hidden`, and `aria-hidden` go in `rootProps`, along with data
|
|
11
11
|
* attributes, since they can be coupled to the `className` to apply styles conditionally, e.g.
|
|
12
12
|
* `<Button data-highlighted={highlighted} className="data-[highlighted]:prop-variant-primary" />`.
|
|
13
|
-
* However, data attributes can also be needed on the underlying element in some cases, so they are
|
|
14
|
-
* also included in the `nestedProps`, except the ones starting with `data-gds-`, to avoid messing
|
|
15
|
-
* with the CSS props or states systems.
|
|
16
13
|
*/
|
|
17
14
|
export function splitProps<T extends Record<string, unknown>>(props: T) {
|
|
18
15
|
const rootProps: Record<string, unknown> = {}
|
|
19
16
|
const nestedProps: Record<string, unknown> = {}
|
|
20
17
|
|
|
21
18
|
for (const [key, value] of Object.entries(props)) {
|
|
22
|
-
const isDataAttribute = key.startsWith('data-')
|
|
23
|
-
const isGDSDataAttribute = key.startsWith('data-gds-')
|
|
24
19
|
const isRootProp =
|
|
25
20
|
key === 'className' ||
|
|
26
21
|
key === 'style' ||
|
|
27
22
|
key === 'inert' ||
|
|
28
23
|
key === 'hidden' ||
|
|
29
24
|
key === 'aria-hidden' ||
|
|
30
|
-
|
|
25
|
+
key.startsWith('data-')
|
|
31
26
|
if (isRootProp) {
|
|
32
27
|
rootProps[key] = value
|
|
33
|
-
}
|
|
34
|
-
if (!isRootProp || (isDataAttribute && !isGDSDataAttribute)) {
|
|
28
|
+
} else {
|
|
35
29
|
nestedProps[key] = value
|
|
36
30
|
}
|
|
37
31
|
}
|
|
@@ -49,7 +43,13 @@ export function splitProps<T extends Record<string, unknown>>(props: T) {
|
|
|
49
43
|
: never]: T[K]
|
|
50
44
|
}
|
|
51
45
|
nestedProps: {
|
|
52
|
-
[K in keyof T as K extends
|
|
46
|
+
[K in keyof T as K extends
|
|
47
|
+
| 'className'
|
|
48
|
+
| 'style'
|
|
49
|
+
| 'inert'
|
|
50
|
+
| 'hidden'
|
|
51
|
+
| 'aria-hidden'
|
|
52
|
+
| `data-${string}`
|
|
53
53
|
? never
|
|
54
54
|
: K]: T[K]
|
|
55
55
|
}
|
|
@@ -12,14 +12,16 @@ import { Children, isValidElement, type ReactElement, type ReactNode } from 'rea
|
|
|
12
12
|
*
|
|
13
13
|
* @example
|
|
14
14
|
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
15
|
+
* ```tsx
|
|
16
|
+
* trimReactNode(' hello ') // 'hello'
|
|
17
|
+
* trimReactNode(
|
|
18
|
+
* <>
|
|
19
|
+
* {' '}
|
|
20
|
+
* <span>test</span>{' '}
|
|
21
|
+
* </>,
|
|
22
|
+
* ) // <><span>test</span></>
|
|
23
|
+
* trimReactNode([' ', <div>content</div>, ' ']) // [<div>content</div>]
|
|
24
|
+
* ```
|
|
23
25
|
*
|
|
24
26
|
* @param node - The `ReactNode` to trim.
|
|
25
27
|
* @returns A new `ReactNode` with leading and trailing whitespace removed.
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ButtonOrLink.meta.d.ts","sourceRoot":"","sources":["../../../src/components/base/ButtonOrLink.meta.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,gBAAgB,yGAE3B,CAAA"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { createComponent } from '@graphprotocol/gds-css';
|
|
2
|
-
// `ButtonOrLink` doesn't use CSS Props, but we register it for the `*-button-or-link` variants
|
|
3
|
-
export const ButtonOrLinkMeta = createComponent('ButtonOrLink', {
|
|
4
|
-
containerName: null,
|
|
5
|
-
});
|
|
6
|
-
//# sourceMappingURL=ButtonOrLink.meta.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ButtonOrLink.meta.js","sourceRoot":"","sources":["../../../src/components/base/ButtonOrLink.meta.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAExD,+FAA+F;AAC/F,MAAM,CAAC,MAAM,gBAAgB,GAAG,eAAe,CAAC,cAAc,EAAE;IAC9D,aAAa,EAAE,IAAI;CACpB,CAAC,CAAA"}
|