@accelint/design-system 0.4.0 → 0.5.1
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 +12 -12
- package/dist/components/aria/aria.js.map +1 -1
- package/dist/components/button/button.d.ts +1 -1
- package/dist/components/button/button.js +1 -1
- package/dist/components/button/button.js.map +1 -1
- package/dist/components/button/types.d.ts +1 -1
- package/dist/components/checkbox/checkbox.d.ts +1 -1
- package/dist/components/checkbox/checkbox.js.map +1 -1
- package/dist/components/chip/chip.d.ts +1 -1
- package/dist/components/chip/chip.js.map +1 -1
- package/dist/components/chip/types.d.ts +1 -1
- package/dist/components/collection/collection.js.map +1 -1
- package/dist/components/combo-box/combo-box.d.ts +1 -1
- package/dist/components/combo-box/combo-box.js.map +1 -1
- package/dist/components/combo-box/types.d.ts +1 -1
- package/dist/components/dialog/dialog.d.ts +1 -1
- package/dist/components/dialog/dialog.js.map +1 -1
- package/dist/components/dialog/types.d.ts +1 -1
- package/dist/components/drawer/drawer.d.ts +1 -1
- package/dist/components/drawer/drawer.js +4 -3
- package/dist/components/drawer/drawer.js.map +1 -1
- package/dist/components/drawer/types.d.ts +2 -2
- package/dist/components/element/element.js.map +1 -1
- package/dist/components/group/group.d.ts +1 -1
- package/dist/components/group/group.js.map +1 -1
- package/dist/components/group/types.d.ts +1 -1
- package/dist/components/icon/icon.d.ts +1 -1
- package/dist/components/icon/types.d.ts +1 -1
- package/dist/components/input/input.css.d.ts +1 -1
- package/dist/components/input/input.d.ts +4 -4
- package/dist/components/input/input.js +3 -3
- package/dist/components/input/input.js.map +1 -1
- package/dist/components/input/types.d.ts +1 -1
- package/dist/components/menu/index.d.ts +1 -1
- package/dist/components/menu/menu.css.d.ts +1 -1
- package/dist/components/menu/menu.d.ts +2 -2
- package/dist/components/menu/menu.js.map +1 -1
- package/dist/components/menu/types.d.ts +2 -2
- package/dist/components/merge-provider/merge-provider.js +2 -2
- package/dist/components/merge-provider/merge-provider.js.map +1 -1
- package/dist/components/number-field/number-field.d.ts +1 -1
- package/dist/components/number-field/types.d.ts +1 -1
- package/dist/components/options/index.d.ts +1 -1
- package/dist/components/options/options.css.d.ts +1 -1
- package/dist/components/options/options.d.ts +2 -2
- package/dist/components/options/options.js.map +1 -1
- package/dist/components/options/types.d.ts +2 -2
- package/dist/components/picker/picker.d.ts +1 -1
- package/dist/components/picker/picker.js +2 -2
- package/dist/components/picker/picker.js.map +1 -1
- package/dist/components/picker/types.d.ts +1 -1
- package/dist/components/popover/popover.d.ts +1 -1
- package/dist/components/popover/popover.js +2 -2
- package/dist/components/popover/popover.js.map +1 -1
- package/dist/components/query-builder/dataset-sample.js +8 -24
- package/dist/components/query-builder/dataset-sample.js.map +1 -1
- package/dist/components/query-builder/group.js +1 -1
- package/dist/components/query-builder/group.js.map +1 -1
- package/dist/components/query-builder/query-builder.js +2 -2
- package/dist/components/query-builder/query-builder.js.map +1 -1
- package/dist/components/query-builder/rule.js.map +1 -1
- package/dist/components/query-builder/types.d.ts +3 -3
- package/dist/components/query-builder/utils.d.ts +1 -1
- package/dist/components/query-builder/utils.js.map +1 -1
- package/dist/components/query-builder/value-editor.js +1 -1
- package/dist/components/query-builder/value-editor.js.map +1 -1
- package/dist/components/query-builder/value-selector.js.map +1 -1
- package/dist/components/radio/radio.d.ts +1 -1
- package/dist/components/radio/radio.js.map +1 -1
- package/dist/components/radio/types.d.ts +1 -1
- package/dist/components/search-field/index.d.ts +1 -1
- package/dist/components/search-field/search-field.d.ts +1 -1
- package/dist/components/search-field/types.d.ts +1 -1
- package/dist/components/select/select.d.ts +1 -1
- package/dist/components/select/select.js.map +1 -1
- package/dist/components/switch/switch.d.ts +1 -1
- package/dist/components/tabs/tabs.css.d.ts +2 -2
- package/dist/components/tabs/tabs.d.ts +1 -1
- package/dist/components/tabs/tabs.js +2 -2
- package/dist/components/tabs/tabs.js.map +1 -1
- package/dist/components/tabs/types.d.ts +3 -3
- package/dist/components/text-field/text-field.d.ts +5 -4
- package/dist/components/text-field/types.d.ts +1 -1
- package/dist/components/textarea/textarea.css.d.ts +1 -1
- package/dist/components/textarea/textarea.d.ts +4 -4
- package/dist/components/textarea/textarea.js +5 -5
- package/dist/components/textarea/textarea.js.map +1 -1
- package/dist/components/textarea/types.d.ts +2 -2
- package/dist/components/tooltip/tooltip.d.ts +2 -2
- package/dist/components/tooltip/tooltip.js +3 -3
- package/dist/components/tooltip/tooltip.js.map +1 -1
- package/dist/components/tooltip/types.d.ts +1 -1
- package/dist/components/tree/tree.css.d.ts +1 -0
- package/dist/components/tree/tree.css.js +2 -2
- package/dist/components/tree/tree.css.js.map +1 -1
- package/dist/components/tree/tree.d.ts +1 -1
- package/dist/components/tree/tree.js +5 -2
- package/dist/components/tree/tree.js.map +1 -1
- package/dist/components/tree/types.d.ts +4 -4
- package/dist/components/tree/utils.js.map +1 -1
- package/dist/hooks/use-collection-render/use-collection-render.js +1 -0
- package/dist/hooks/use-collection-render/use-collection-render.js.map +1 -1
- package/dist/hooks/use-defaults/use-defaults.d.ts +1 -1
- package/dist/hooks/use-slot/use-slot.js +3 -3
- package/dist/hooks/use-slot/use-slot.js.map +1 -1
- package/dist/hooks/use-theme/types.d.ts +1 -1
- package/dist/hooks/use-theme/use-theme.d.ts +18 -1
- package/dist/hooks/use-theme/use-theme.js.map +1 -1
- package/dist/hooks/use-tree/index.d.ts +1 -1
- package/dist/hooks/use-tree/use-tree.d.ts +1 -1
- package/dist/hooks/use-tree/use-tree.js +10 -5
- package/dist/hooks/use-tree/use-tree.js.map +1 -1
- package/dist/hooks/use-tree/utils.d.ts +1 -1
- package/dist/hooks/use-tree/utils.js +3 -4
- package/dist/hooks/use-tree/utils.js.map +1 -1
- package/dist/index.css +34 -31
- package/dist/ladle/actions.js.map +1 -1
- package/dist/test/setup.js +347 -331
- package/dist/test/setup.js.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/react-aria.d.ts +1 -1
- package/dist/types/react.d.d.ts +16 -0
- package/dist/types/use-tree.d.ts +2 -1
- package/dist/utils/css.d.ts +2 -2
- package/dist/utils/css.js +5 -5
- package/dist/utils/css.js.map +1 -1
- package/dist/utils/props.js +5 -6
- package/dist/utils/props.js.map +1 -1
- package/dist/utils/validators.d.ts +2 -2
- package/dist/utils/validators.js.map +1 -1
- package/package.json +59 -56
package/README.md
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @accelint/design-system
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
This library is a collection of UI components and tools for engineers to build precise user experiences for specialized systems.
|
|
4
4
|
|
|
5
5
|
## Why does this design system exist?
|
|
6
6
|
|
|
7
|
-
This design system
|
|
7
|
+
This design system was born of three essential business priorities:
|
|
8
8
|
|
|
9
9
|
- We want to improve runtime performance of our applications.
|
|
10
10
|
- We require more flexible tools for building specialized UI than was available in traditional "out of the box" libraries.
|
|
@@ -12,13 +12,13 @@ This design system, which we've designated C2DS for simplicity, was born of thre
|
|
|
12
12
|
|
|
13
13
|
From an engineering perspective, we also want to future-proof our investment by switching to an approach more natively compatible with React Server Components. This is the future of React and getting out ahead of that transition is valuable before it becomes a significant pain point inhibiting rapid feature development.
|
|
14
14
|
|
|
15
|
-
Developed by the Core team at Accelint,
|
|
15
|
+
Developed by the Core team at Accelint, the design system is a shared platform that all engineers can -- and are encouraged -- to contribute to. This system is published as open source to invite collaboration across our partners and the engineering community in general.
|
|
16
16
|
|
|
17
17
|
### Performance
|
|
18
18
|
|
|
19
19
|
The runtime performance of our applications is an enduring central concern. Our applications place a high performance demand on the browser client, primarily due to the sheer data throughput and intensive rendering requirements. Therefore, it makes sense to move away from a runtime CSS-in-JS solution in favor of a build/compile time styling solution.
|
|
20
20
|
|
|
21
|
-
[Advantages >](./
|
|
21
|
+
[Advantages >](./documents/concepts#build-and-runtime)
|
|
22
22
|
|
|
23
23
|
### Flexibility and control
|
|
24
24
|
|
|
@@ -26,25 +26,25 @@ The highly bespoke nature of some of our feature implementation is a constant so
|
|
|
26
26
|
|
|
27
27
|
We also want to establish a common platform for multiple similar, but stylistically and functionally unique, applications to be built on a consistent design language with fewer established opinions. The intent here is to provide all the power and flexibility of a custom solution while maintaining a common foundation for interoperability with different digital properties.
|
|
28
28
|
|
|
29
|
-
## What does
|
|
29
|
+
## What does the design system consist of?
|
|
30
30
|
|
|
31
|
-
|
|
31
|
+
The design system is a semi-headless, themeless collection of components that express minimal opinions about layout and baked-in styles with an API of props for each component that strives to suit many common use cases.
|
|
32
32
|
|
|
33
33
|
The vast majority of spacing and color theming is left up to the implementer to define. For every element of this system, the priority has been flexibility over rigid requirements and an "escape hatch" for overriding style and behavior if necessary.
|
|
34
34
|
|
|
35
35
|
## Why isn't there a theme or icons?
|
|
36
36
|
|
|
37
|
-
While the exported modules of this package do not include a theme, the Ladle stories for each component utilize a theme established within the
|
|
37
|
+
While the exported modules of this package do not include a theme, the Ladle stories for each component utilize a theme established within the `.ladle/theme` folder for documentation purposes. You can feel free to use this as a starting point for your app's implementation and customize it to suit your needs.
|
|
38
38
|
|
|
39
39
|
The icons are also missing because we're trying to avoid locking this design system into a specific design language -- they are considered a part of the theming and an application-level concern. Each component that supports icons expects them to be implemented through composition. This enables maximum flexibility and freedom for the implementing app.
|
|
40
40
|
|
|
41
41
|
## Concepts
|
|
42
42
|
|
|
43
|
-
This design system is built on a number of concepts with which you may not be familiar. [Learn](./
|
|
43
|
+
This design system is built on a number of concepts with which you may not be familiar. [Learn](./documents/concepts) about the technologies, packages, abstractions and patterns that power this design system.
|
|
44
44
|
|
|
45
45
|
## Getting started
|
|
46
46
|
|
|
47
|
-
Check out what exists. You can review the components, tokens and primitives available in the system using the Ladle stories for each element: [
|
|
47
|
+
Check out what exists. You can review the components, tokens and primitives available in the system using the Ladle stories for each element: [Stories](https://gohypergiant.github.io/standard-toolkit).
|
|
48
48
|
|
|
49
49
|
From the root of the standard toolkit project, run:
|
|
50
50
|
|
|
@@ -60,8 +60,8 @@ If you run into errors, try running
|
|
|
60
60
|
|
|
61
61
|
### Implementation
|
|
62
62
|
|
|
63
|
-
[Learn](./
|
|
63
|
+
[Learn](./documents/implementation) how to get your app up and running.
|
|
64
64
|
|
|
65
65
|
### Contribution
|
|
66
66
|
|
|
67
|
-
[Learn](./
|
|
67
|
+
[Learn](./documents/contribution) how to craft components for this design system.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/aria/aria.tsx"],"names":["AriaSection","AriaSelectValue"],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"sources":["../../../src/components/aria/aria.tsx"],"names":["AriaSection","AriaSelectValue"],"mappings":";;;;;;AA0CA,SAAS,KACP,SACA,EAAA;AACA,EAAM,MAAA,OAAA,GAAU,cAAkC,IAAI,CAAA;AAEtD,EAAO,OAAA;AAAA;AAAA,IAEL,SAAW,EAAA,UAAA,CAAiB,SAAS,gBAAA,CAAiB,OAAO,GAAK,EAAA;AAChE,MAAA,CAAC,OAAO,GAAG,CAAA,GAAI,eAAgB,CAAA,KAAA,EAAO,KAAK,OAAO,CAAA;AAElD,MAAA,uBAAQ,GAAA,CAAA,SAAA,EAAA,EAAW,GAAG,KAAA,EAAO,GAAU,EAAA,CAAA;AAAA,KACxC,CAAA;AAAA,IACD;AAAA,GACF;AACF;AAEO,IAAM,EAAE,SAAW,EAAA,cAAA,EAAgB,SAAS,qBAAsB,EAAA,GACvE,KAAK,UAAU;AAEV,IAAM,EAAE,SAAW,EAAA,SAAA,EAAW,SAAS,gBAAiB,EAAA,GAAI,KAAK,KAAK;AAEtE,IAAM,EAAE,SAAW,EAAA,UAAA,EAAY,SAAS,iBAAkB,EAAA,GAC/D,KAAK,MAAM;AAEN,IAAM,EAAE,SAAW,EAAA,WAAA,EAAa,SAAS,kBAAmB,EAAA,GACjE,KAAK,OAAO;AAEP,IAAM,EAAE,SAAW,EAAA,YAAA,EAAc,SAAS,mBAAoB,EAAA,GACnE,KAAK,QAAQ;AAER,IAAM,EAAE,SAAW,EAAA,SAAA,EAAW,SAAS,gBAAiB,EAAA,GAAI,KAAK,KAAK;AAEtE,IAAM,EAAE,SAAW,EAAA,aAAA,EAAe,SAAS,oBAAqB,EAAA,GACrE,KAAK,SAAS;AAET,IAAM,EAAE,SAAW,EAAA,QAAA,EAAU,SAAS,eAAgB,EAAA,GAAI,KAAK,IAAI;AAQ7D,IAAA,kBAAA,GACX,cAA+D,IAAI;AAE9D,IAAM,WAAc,GAAA,UAAA,CAAW,SAASA,YAAAA,CAC7C,OACA,GACA,EAAA;AACA,EAAA,CAAC,OAAO,GAAG,CAAA,GAAI,eAAgB,CAAA,KAAA,EAAO,KAAK,kBAAkB,CAAA;AAE7D,EAAA,uBAAQ,GAAA,CAAA,OAAA,EAAA,EAAS,GAAG,KAAA,EAAO,GAAU,EAAA,CAAA;AACvC,CAAC;AAEY,IAAA,sBAAA,GACX,cAAuE,IAAI;AAEtE,IAAM,eAAkB,GAAA,UAAA,CAAW,SAASC,gBAAAA,CAEjD,OAA4B,GAAoC,EAAA;AAChE,EAAA,CAAC,OAAO,GAAG,CAAA,GAAI,eAAgB,CAAA,KAAA,EAAO,KAAK,sBAAsB,CAAA;AAEjE,EAAA,uBAAQ,GAAA,CAAA,WAAA,EAAA,EAAa,GAAG,KAAA,EAAO,GAAU,EAAA,CAAA;AAC3C,CAAC","file":"aria.js","sourcesContent":["/*\n * Copyright 2025 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {\n type ForwardedRef,\n type ReactNode,\n type RefAttributes,\n createContext,\n forwardRef,\n} from 'react';\nimport {\n type ContextValue,\n FieldError,\n Group,\n Header,\n Heading,\n Keyboard,\n Label,\n Section,\n type SectionProps,\n SelectValue,\n type SelectValueProps,\n Separator,\n Text,\n} from 'react-aria-components';\nimport { useContextProps } from '../../hooks';\n\n/**\n * To better align with the guidance from RAC about establishing a unique\n * context for components to avoid conflict of props being provided by RAC\n * and design system components, this wrapping utility accepts an RAC and returns\n * a wrapped version along with the new context for the design system to use\n */\nfunction wrap<P extends object, E extends HTMLElement>(\n Component: (props: P & RefAttributes<E>) => ReactNode,\n) {\n const Context = createContext<ContextValue<P, E>>(null);\n\n return {\n // biome-ignore lint/style/useNamingConvention: intentional\n Component: forwardRef<E, P>(function WrappedComponent(props, ref) {\n [props, ref] = useContextProps(props, ref, Context);\n\n return <Component {...props} ref={ref} />;\n }),\n Context,\n };\n}\n\nexport const { Component: AriaFieldError, Context: AriaFieldErrorContext } =\n wrap(FieldError);\n\nexport const { Component: AriaGroup, Context: AriaGroupContext } = wrap(Group);\n\nexport const { Component: AriaHeader, Context: AriaHeaderContext } =\n wrap(Header);\n\nexport const { Component: AriaHeading, Context: AriaHeadingContext } =\n wrap(Heading);\n\nexport const { Component: AriaKeyboard, Context: AriaKeyboardContext } =\n wrap(Keyboard);\n\nexport const { Component: AriaLabel, Context: AriaLabelContext } = wrap(Label);\n\nexport const { Component: AriaSeparator, Context: AriaSeparatorContext } =\n wrap(Separator);\n\nexport const { Component: AriaText, Context: AriaTextContext } = wrap(Text);\n\n/**\n * Due to the complexity of types and technical constraints of TS, it's not\n * possible for the above wrapping utility to support components that accept\n * generic parameters. This means that these components must be manually wrapped\n */\n\nexport const AriaSectionContext =\n createContext<ContextValue<SectionProps<object>, HTMLElement>>(null);\n\nexport const AriaSection = forwardRef(function AriaSection<T extends object>(\n props: SectionProps<T>,\n ref: ForwardedRef<HTMLElement>,\n) {\n [props, ref] = useContextProps(props, ref, AriaSectionContext);\n\n return <Section {...props} ref={ref} />;\n});\n\nexport const AriaSelectValueContext =\n createContext<ContextValue<SelectValueProps<object>, HTMLSpanElement>>(null);\n\nexport const AriaSelectValue = forwardRef(function AriaSelectValue<\n T extends object,\n>(props: SelectValueProps<T>, ref: ForwardedRef<HTMLSpanElement>) {\n [props, ref] = useContextProps(props, ref, AriaSelectValueContext);\n\n return <SelectValue {...props} ref={ref} />;\n});\n"]}
|
|
@@ -2,7 +2,7 @@ import * as react from 'react';
|
|
|
2
2
|
import { Context } from 'react';
|
|
3
3
|
import * as react_aria_components from 'react-aria-components';
|
|
4
4
|
import { ContextValue } from 'react-aria-components';
|
|
5
|
-
import {
|
|
5
|
+
import { ButtonRenderProps, ButtonColors, ButtonMapping, ButtonSizes, ButtonVariants, ButtonProps, LinkButtonProps, ToggleButtonProps } from './types.js';
|
|
6
6
|
import { RenderPropsChildren } from '../../types/react-aria.js';
|
|
7
7
|
import '../../types/props.js';
|
|
8
8
|
import '../icon/types.js';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import '../../chunk-PZ5AY32C.js';
|
|
2
|
-
import { clsx } from 'clsx';
|
|
3
2
|
import { noop } from '@accelint/core';
|
|
3
|
+
import { clsx } from 'clsx';
|
|
4
4
|
import { createContext, forwardRef, useMemo, useCallback } from 'react';
|
|
5
5
|
import { Button as Button$1, Link, ToggleButton as ToggleButton$1, Provider } from 'react-aria-components';
|
|
6
6
|
import { useContextProps, useDefaultProps, useTheme } from '../../hooks/index.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/button/button.tsx"],"names":["Button","RACButton","LinkButton","ToggleButton","RACToggleButton"],"mappings":";;;;;;;;;;;;
|
|
1
|
+
{"version":3,"sources":["../../../src/components/button/button.tsx"],"names":["Button","RACButton","LinkButton","ToggleButton","RACToggleButton"],"mappings":"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","file":"button.js","sourcesContent":["/*\n * Copyright 2025 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport { noop } from '@accelint/core';\nimport { clsx } from 'clsx';\nimport {\n type Context,\n type ForwardedRef,\n createContext,\n forwardRef,\n useCallback,\n useMemo,\n} from 'react';\nimport {\n type ButtonRenderProps,\n type ContextValue,\n Link,\n type LinkRenderProps,\n Provider,\n Button as RACButton,\n ToggleButton as RACToggleButton,\n type ToggleButtonRenderProps,\n} from 'react-aria-components';\nimport { useContextProps, useDefaultProps, useTheme } from '../../hooks';\nimport { bodies, surfaces } from '../../styles';\nimport type { OmitProtectedProps } from '../../types';\nimport { callRenderProps, inlineVars, mergeClassNames } from '../../utils';\nimport { IconContext, type IconProps } from '../icon';\nimport { buttonClassNames, buttonStateVars } from './button.css';\nimport type {\n ButtonMapping,\n ButtonProps,\n ButtonSizes,\n LinkButtonProps,\n ToggleButtonProps,\n} from './types';\n\nconst noopToggleState = { isSelected: false, setSelected: noop, toggle: noop };\nconst buttonSizes: ButtonSizes[] = ['xs', 'sm', 'md', 'lg', 'xl'];\n\nconst defaultMapping: ButtonMapping = {\n font: bodies,\n icon: buttonSizes.reduce(\n (acc, size) => {\n acc[size] = { size };\n\n return acc;\n },\n {} as Record<ButtonSizes, OmitProtectedProps<IconProps>>,\n ),\n};\n\nfunction useButton<\n P extends ButtonProps | LinkButtonProps | ToggleButtonProps,\n E extends HTMLElement,\n>(\n props: P,\n ref: ForwardedRef<E>,\n context: Context<ContextValue<P, E>>,\n key: 'Button' | 'LinkButton' | 'ToggleButton',\n) {\n [props, ref] = useContextProps(props, ref, context);\n\n props = useDefaultProps(props, key);\n\n const {\n children: childrenProp,\n classNames: classNamesProp,\n color = 'primary',\n mapping: mappingProp,\n size = 'md',\n variant = 'solid',\n ...rest\n } = props;\n\n const theme = useTheme();\n\n const mapping = useMemo(\n () => ({\n ...defaultMapping,\n ...mappingProp,\n }),\n [mappingProp],\n );\n\n const classNames = useMemo(\n () =>\n mergeClassNames(buttonClassNames, theme.Button, classNamesProp, {\n button: clsx(\n mapping.font[size],\n variant === 'floating' && surfaces.default.proud,\n ),\n }),\n [theme.Button, classNamesProp, mapping.font, size, variant],\n );\n\n const style = useCallback(\n (\n renderProps:\n | ButtonRenderProps\n | LinkRenderProps\n | ToggleButtonRenderProps,\n ) =>\n inlineVars(buttonStateVars, {\n isCurrent: false,\n isSelected: false,\n ...renderProps,\n color,\n size,\n variant,\n }),\n [color, size, variant],\n );\n\n const values = useMemo<\n [[typeof IconContext, ContextValue<IconProps, HTMLDivElement>]]\n >(() => [[IconContext, mapping.icon[size]]], [mapping.icon, size]);\n\n const children = useCallback(\n (\n renderProps:\n | ButtonRenderProps\n | LinkRenderProps\n | ToggleButtonRenderProps,\n ) => (\n <Provider values={values}>\n <span className={classNames?.button}>\n {callRenderProps(childrenProp, {\n state: noopToggleState,\n isCurrent: false,\n isPending: false,\n isSelected: false,\n ...renderProps,\n })}\n </span>\n </Provider>\n ),\n [values, classNames?.button, childrenProp],\n );\n\n return useMemo(\n () => ({ ...rest, ref, children, className: classNames?.container, style }),\n [rest, ref, children, classNames?.container, style],\n );\n}\n\nexport const ButtonContext =\n createContext<ContextValue<ButtonProps, HTMLButtonElement>>(null);\n\nexport const Button = forwardRef(function Button(\n props: ButtonProps,\n ref: ForwardedRef<HTMLButtonElement>,\n) {\n const buttonProps = useButton(props, ref, ButtonContext, 'Button');\n\n return <RACButton {...buttonProps} />;\n});\n\nexport const LinkButtonContext =\n createContext<ContextValue<LinkButtonProps, HTMLAnchorElement>>(null);\n\nexport const LinkButton = forwardRef(function LinkButton(\n props: LinkButtonProps,\n ref: ForwardedRef<HTMLAnchorElement>,\n) {\n const buttonProps = useButton(props, ref, LinkButtonContext, 'LinkButton');\n\n return <Link {...buttonProps} />;\n});\n\nexport const ToggleButtonContext =\n createContext<ContextValue<ToggleButtonProps, HTMLButtonElement>>(null);\n\nexport const ToggleButton = forwardRef(function ToggleButton(\n props: ToggleButtonProps,\n ref: ForwardedRef<HTMLButtonElement>,\n) {\n const buttonProps = useButton(\n props,\n ref,\n ToggleButtonContext,\n 'ToggleButton',\n );\n\n return <RACToggleButton {...buttonProps} />;\n});\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ButtonRenderProps as ButtonRenderProps$1, LinkRenderProps, ToggleButtonRenderProps, ButtonProps as ButtonProps$1, ToggleButtonProps as ToggleButtonProps$1
|
|
1
|
+
import { ButtonRenderProps as ButtonRenderProps$1, LinkRenderProps, ToggleButtonRenderProps, ButtonProps as ButtonProps$1, LinkProps, ToggleButtonProps as ToggleButtonProps$1 } from 'react-aria-components';
|
|
2
2
|
import { OmitProtectedProps } from '../../types/props.js';
|
|
3
3
|
import { RenderPropsChildren } from '../../types/react-aria.js';
|
|
4
4
|
import { IconProps } from '../icon/types.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as _react_types_shared from '@react-types/shared';
|
|
2
|
-
import {
|
|
2
|
+
import { CheckboxRenderProps, CheckboxClassNames, CheckboxAlignment, CheckboxProps, CheckboxGroupRenderProps, CheckboxGroupProps } from './types.js';
|
|
3
3
|
import * as react from 'react';
|
|
4
4
|
import * as react_aria_components from 'react-aria-components';
|
|
5
5
|
import { ContextValue } from 'react-aria-components';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/checkbox/checkbox.tsx"],"names":["Checkbox","RACCheckbox","CheckboxGroup","RACCheckboxGroup"],"mappings":";;;;;;;;;;
|
|
1
|
+
{"version":3,"sources":["../../../src/components/checkbox/checkbox.tsx"],"names":["Checkbox","RACCheckbox","CheckboxGroup","RACCheckboxGroup"],"mappings":"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","file":"checkbox.js","sourcesContent":["/*\n * Copyright 2025 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {\n type ForwardedRef,\n createContext,\n forwardRef,\n useCallback,\n useMemo,\n} from 'react';\nimport {\n type ContextValue,\n type LabelProps,\n Provider,\n Checkbox as RACCheckbox,\n CheckboxGroup as RACCheckboxGroup,\n TextContext,\n type TextProps,\n} from 'react-aria-components';\nimport {\n useContextProps,\n useDefaultProps,\n useSlot,\n useTheme,\n} from '../../hooks';\nimport { callRenderProps, inlineVars, mergeClassNames } from '../../utils';\nimport { AriaLabelContext, AriaTextContext } from '../aria';\nimport { IconContext, type IconProps } from '../icon';\nimport {\n checkboxClassNames,\n checkboxGroupStateVars,\n checkboxStateVars,\n} from './checkbox.css';\nimport type {\n CheckboxGroupProps,\n CheckboxGroupRenderProps,\n CheckboxProps,\n CheckboxRenderProps,\n} from './types';\n\nexport const CheckboxContext =\n createContext<ContextValue<CheckboxProps, HTMLLabelElement>>(null);\n\nexport const Checkbox = forwardRef(function Checkbox(\n props: CheckboxProps,\n ref: ForwardedRef<HTMLLabelElement>,\n) {\n [props, ref] = useContextProps(props, ref, CheckboxContext);\n\n props = useDefaultProps(props, 'Checkbox');\n\n const {\n children: childrenProp,\n classNames: classNamesProp,\n alignInput = 'end',\n ...rest\n } = props;\n\n const [iconRef, hasIcon] = useSlot();\n const theme = useTheme();\n\n const classNames = useMemo(\n () => mergeClassNames(checkboxClassNames, theme.Checkbox, classNamesProp),\n [theme.Checkbox, classNamesProp],\n );\n\n const style = useCallback(\n ({ ...renderProps }: CheckboxRenderProps) =>\n inlineVars(checkboxStateVars, {\n ...renderProps,\n alignInput,\n }),\n [alignInput],\n );\n\n const values = useMemo<\n [\n [typeof AriaTextContext, ContextValue<TextProps, HTMLElement>],\n [typeof IconContext, ContextValue<IconProps, HTMLDivElement>],\n [typeof TextContext, ContextValue<TextProps, HTMLElement>],\n ]\n >(\n () => [\n [AriaTextContext, { className: classNames?.checkbox?.label }],\n [\n IconContext,\n {\n ref: iconRef,\n classNames: classNames?.checkbox?.icon,\n },\n ],\n [TextContext, null],\n ],\n [classNames?.checkbox?.label, classNames?.checkbox?.icon, iconRef],\n );\n\n const children = useCallback(\n (renderProps: CheckboxRenderProps) => (\n <Provider values={values}>\n <div className={classNames?.checkbox?.checkbox}>\n {!hasIcon && (\n <span className={classNames?.checkbox?.icon?.container} />\n )}\n {callRenderProps(childrenProp, renderProps)}\n </div>\n </Provider>\n ),\n [childrenProp, classNames?.checkbox, hasIcon, values],\n );\n\n return (\n <RACCheckbox\n {...rest}\n ref={ref}\n className={classNames?.checkbox?.container}\n style={style}\n >\n {children}\n </RACCheckbox>\n );\n});\n\nexport const CheckboxGroupContext =\n createContext<ContextValue<CheckboxGroupProps, HTMLDivElement>>(null);\n\nexport const CheckboxGroup = forwardRef(function CheckboxGroup(\n props: CheckboxGroupProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n [props, ref] = useContextProps(props, ref, CheckboxGroupContext);\n\n props = useDefaultProps(props, 'CheckboxGroup');\n\n const {\n children: childrenProp,\n classNames: classNamesProp,\n alignInput = 'end',\n orientation = 'vertical',\n ...rest\n } = props;\n\n const theme = useTheme();\n\n const classNames = useMemo(\n () => mergeClassNames(checkboxClassNames, theme.Checkbox, classNamesProp),\n [classNamesProp, theme.Checkbox],\n );\n\n const style = useCallback(\n (renderProps: CheckboxGroupRenderProps) =>\n inlineVars(checkboxGroupStateVars, {\n ...renderProps,\n orientation,\n }),\n [orientation],\n );\n\n const values = useMemo<\n [\n [typeof AriaLabelContext, ContextValue<LabelProps, HTMLLabelElement>],\n [typeof CheckboxContext, ContextValue<CheckboxProps, HTMLLabelElement>],\n ]\n >(\n () => [\n [AriaLabelContext, { className: classNames?.group?.label }],\n [\n CheckboxContext,\n {\n classNames,\n alignInput,\n },\n ],\n ],\n [alignInput, classNames],\n );\n\n const children = useCallback(\n (renderProps: CheckboxGroupRenderProps) => (\n <Provider values={values}>\n <div className={classNames?.group?.group}>\n {callRenderProps(childrenProp, {\n ...renderProps,\n defaultChildren: null,\n })}\n </div>\n </Provider>\n ),\n [childrenProp, classNames?.group, values],\n );\n\n return (\n <RACCheckboxGroup\n {...rest}\n ref={ref}\n className={classNames?.group?.container}\n style={style}\n >\n {children}\n </RACCheckboxGroup>\n );\n});\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ChipProps, ChipItemProps, BaseChipProps,
|
|
1
|
+
import { ChipProps, ChipItemProps, BaseChipProps, ChipGroupProps, ChipListProps } from './types.js';
|
|
2
2
|
import * as react_aria_components from 'react-aria-components';
|
|
3
3
|
import { ContextValue } from 'react-aria-components';
|
|
4
4
|
import * as react from 'react';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/chip/chip.tsx"],"names":["ChipItem","RACTextContext","ChipGroup"],"mappings":"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","file":"chip.js","sourcesContent":["import {\n createContext,\n forwardRef,\n useCallback,\n useMemo,\n type ForwardedRef,\n} from 'react';\nimport {\n Provider,\n TextContext as RACTextContext,\n Tag,\n TagGroup,\n TagList,\n type ContextValue,\n type TagRenderProps,\n type TextProps,\n} from 'react-aria-components';\nimport { useContextProps, useDefaultProps, useTheme } from '../../hooks';\nimport { bodies } from '../../styles';\nimport { callRenderProps, inlineVars, mergeClassNames } from '../../utils';\nimport { AriaTextContext } from '../aria';\nimport { ButtonContext, type ButtonProps } from '../button';\nimport { chipClassNames, chipStateVars } from './chip.css';\nimport type {\n ChipGroupProps,\n ChipItemProps,\n ChipListProps,\n ChipMapping,\n ChipProps,\n} from './types';\n\nconst defaults: Required<Pick<ChipProps, 'color' | 'size'>> = {\n color: 'info',\n size: 'sm',\n};\n\nconst defaultMapping: ChipMapping = {\n font: {\n sm: bodies.sm,\n lg: bodies.sm,\n },\n remove: {\n sm: { size: 'sm', variant: 'icon' },\n lg: { size: 'sm', variant: 'icon' },\n },\n};\n\nexport function Chip(props: ChipProps) {\n props = useDefaultProps(props, 'Chip');\n\n const {\n children,\n classNames: classNamesProp,\n color = defaults.color,\n mapping: mappingProp,\n size = defaults.size,\n } = props;\n\n const theme = useTheme();\n\n const mapping = useMemo(\n () => ({\n ...defaultMapping,\n ...mappingProp,\n }),\n [mappingProp],\n );\n\n const classNames = useMemo(\n () =>\n mergeClassNames(chipClassNames, theme.Chip, classNamesProp, {\n chip: mapping.font[size],\n }),\n [theme.Chip, classNamesProp, mapping, size],\n );\n\n const values = useMemo<\n [[typeof AriaTextContext, ContextValue<TextProps, HTMLElement>]]\n >(\n () => [[AriaTextContext, { className: classNames?.label }]],\n [classNames?.label],\n );\n\n const style = useMemo(\n () =>\n inlineVars(chipStateVars, {\n allowsRemoving: false,\n color,\n selectionBehavior: 'toggle',\n selectionMode: 'none',\n size,\n isDisabled: false,\n isFocused: false,\n isFocusVisible: false,\n isHovered: false,\n isPressed: false,\n isSelected: false,\n }),\n [color, size],\n );\n\n return (\n <Provider values={values}>\n <div className={classNames?.container} style={style}>\n <div className={classNames?.chip}>{children}</div>\n </div>\n </Provider>\n );\n}\n\nexport const ChipContext =\n createContext<ContextValue<ChipItemProps, HTMLDivElement>>(null);\n\n/**\n * Must be used in conjunction with ChipList & ChipGroup and\n * cannot be used outside of ChipList, else will throw error\n *\n * Color & Size props can be passed in from ChipGroup and overriden\n * on each instance of this components\n *\n * Order of precedence (from lowest to highest):\n * Design System Defaults of Chip\n * Global Defaults of ChipGroup\n * Instance of ChipGroup\n * Global Defaults of ChipItem\n * Instance of ChipItem\n */\nexport const ChipItem = forwardRef(function ChipItem(\n props: ChipItemProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n [props, ref] = useContextProps(props, ref, ChipContext);\n props = useDefaultProps(props, 'Chip');\n\n const {\n children: childrenProp,\n id,\n classNames: classNamesProp,\n color = defaults.color,\n size = defaults.size,\n textValue,\n mapping: mappingProp,\n ...rest\n } = props;\n\n const theme = useTheme();\n\n const mapping = useMemo(\n () => ({\n ...defaultMapping,\n ...mappingProp,\n }),\n [mappingProp],\n );\n\n const classNames = useMemo(\n () =>\n mergeClassNames(chipClassNames, theme.Chip, classNamesProp, {\n chip: mapping.font[size],\n }),\n [theme.Chip, classNamesProp, mapping, size],\n );\n\n const values = useMemo<\n [\n [typeof RACTextContext, ContextValue<TextProps, HTMLElement>],\n [typeof AriaTextContext, ContextValue<TextProps, HTMLElement>],\n [typeof ButtonContext, ContextValue<ButtonProps, HTMLButtonElement>],\n ]\n >(\n () => [\n // Because ChipGroup (TagGroup) implements a TextContext, we need to block it inside of the Chip\n // so that there isn't a conflict of with our AriaTextContext. Otherwise there are slot errors\n [RACTextContext, null],\n [AriaTextContext, { className: classNames?.label }],\n [\n ButtonContext,\n {\n ...mapping.remove[size],\n classNames: { button: classNames?.remove },\n slot: 'remove',\n },\n ],\n ],\n [classNames?.label, classNames?.remove, mapping, size],\n );\n\n const style = useCallback(\n (renderProps: TagRenderProps) =>\n inlineVars(chipStateVars, {\n ...renderProps,\n color,\n size,\n }),\n [color, size],\n );\n\n const children = useCallback(\n (renderProps: TagRenderProps) => (\n <Provider values={values}>\n <div className={classNames?.chip}>\n {callRenderProps(childrenProp, renderProps)}\n </div>\n </Provider>\n ),\n [values, classNames?.chip, childrenProp],\n );\n\n return (\n <Tag\n {...rest}\n ref={ref}\n id={id ?? textValue}\n className={classNames?.container}\n style={style}\n textValue={textValue}\n >\n {children}\n </Tag>\n );\n});\n\n/**\n * Must be used in conjunction with ChipItem & ChipGroup and\n * cannot be used outside of ChipGroup, else will throw error\n */\nexport function ChipList<T extends object>({\n classNames: classNamesProp,\n ...rest\n}: ChipListProps<T>) {\n const theme = useTheme();\n\n const classNames = useMemo(\n () => mergeClassNames(chipClassNames, theme.Chip, classNamesProp),\n [theme.Chip, classNamesProp],\n );\n\n return <TagList<T> {...rest} className={classNames?.list} />;\n}\n\nexport const ChipGroupContext =\n createContext<ContextValue<ChipGroupProps, HTMLDivElement>>(null);\n\n/**\n * Color & Size props are passed down to ChipItem but can be overridden\n * on each component if desired\n */\nexport const ChipGroup = forwardRef(function ChipGroup(\n props: ChipGroupProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n [props, ref] = useContextProps(props, ref, ChipGroupContext);\n props = useDefaultProps(props, 'ChipGroup');\n\n const { children, classNames: classNamesProp, color, size, ...rest } = props;\n const theme = useTheme();\n\n const classNames = useMemo(\n () => mergeClassNames(chipClassNames, theme.Chip, classNamesProp),\n [theme.Chip, classNamesProp],\n );\n\n const values = useMemo<\n [[typeof ChipContext, ContextValue<ChipItemProps, HTMLDivElement>]]\n >(\n () => [[ChipContext, { classNames, color, size }]],\n [classNames, color, size],\n );\n\n return (\n <TagGroup {...rest} ref={ref} className={classNames?.group}>\n <Provider values={values}>{children}</Provider>\n </TagGroup>\n );\n});\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/chip/chip.tsx"],"names":["ChipItem","RACTextContext","ChipGroup"],"mappings":"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","file":"chip.js","sourcesContent":["/*\n * Copyright 2025 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {\n type ForwardedRef,\n createContext,\n forwardRef,\n useCallback,\n useMemo,\n} from 'react';\nimport {\n type ContextValue,\n Provider,\n TextContext as RACTextContext,\n Tag,\n TagGroup,\n TagList,\n type TagRenderProps,\n type TextProps,\n} from 'react-aria-components';\nimport { useContextProps, useDefaultProps, useTheme } from '../../hooks';\nimport { bodies } from '../../styles';\nimport { callRenderProps, inlineVars, mergeClassNames } from '../../utils';\nimport { AriaTextContext } from '../aria';\nimport { ButtonContext, type ButtonProps } from '../button';\nimport { chipClassNames, chipStateVars } from './chip.css';\nimport type {\n ChipGroupProps,\n ChipItemProps,\n ChipListProps,\n ChipMapping,\n ChipProps,\n} from './types';\n\nconst defaults: Required<Pick<ChipProps, 'color' | 'size'>> = {\n color: 'info',\n size: 'sm',\n};\n\nconst defaultMapping: ChipMapping = {\n font: {\n sm: bodies.sm,\n lg: bodies.sm,\n },\n remove: {\n sm: { size: 'sm', variant: 'icon' },\n lg: { size: 'sm', variant: 'icon' },\n },\n};\n\nexport function Chip(props: ChipProps) {\n props = useDefaultProps(props, 'Chip');\n\n const {\n children,\n classNames: classNamesProp,\n color = defaults.color,\n mapping: mappingProp,\n size = defaults.size,\n } = props;\n\n const theme = useTheme();\n\n const mapping = useMemo(\n () => ({\n ...defaultMapping,\n ...mappingProp,\n }),\n [mappingProp],\n );\n\n const classNames = useMemo(\n () =>\n mergeClassNames(chipClassNames, theme.Chip, classNamesProp, {\n chip: mapping.font[size],\n }),\n [theme.Chip, classNamesProp, mapping, size],\n );\n\n const values = useMemo<\n [[typeof AriaTextContext, ContextValue<TextProps, HTMLElement>]]\n >(\n () => [[AriaTextContext, { className: classNames?.label }]],\n [classNames?.label],\n );\n\n const style = useMemo(\n () =>\n inlineVars(chipStateVars, {\n allowsRemoving: false,\n color,\n selectionBehavior: 'toggle',\n selectionMode: 'none',\n size,\n isDisabled: false,\n isFocused: false,\n isFocusVisible: false,\n isHovered: false,\n isPressed: false,\n isSelected: false,\n }),\n [color, size],\n );\n\n return (\n <Provider values={values}>\n <div className={classNames?.container} style={style}>\n <div className={classNames?.chip}>{children}</div>\n </div>\n </Provider>\n );\n}\n\nexport const ChipContext =\n createContext<ContextValue<ChipItemProps, HTMLDivElement>>(null);\n\n/**\n * Must be used in conjunction with ChipList & ChipGroup and\n * cannot be used outside of ChipList, else will throw error\n *\n * Color & Size props can be passed in from ChipGroup and overriden\n * on each instance of this components\n *\n * Order of precedence (from lowest to highest):\n * Design System Defaults of Chip\n * Global Defaults of ChipGroup\n * Instance of ChipGroup\n * Global Defaults of ChipItem\n * Instance of ChipItem\n */\nexport const ChipItem = forwardRef(function ChipItem(\n props: ChipItemProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n [props, ref] = useContextProps(props, ref, ChipContext);\n props = useDefaultProps(props, 'Chip');\n\n const {\n children: childrenProp,\n id,\n classNames: classNamesProp,\n color = defaults.color,\n size = defaults.size,\n textValue,\n mapping: mappingProp,\n ...rest\n } = props;\n\n const theme = useTheme();\n\n const mapping = useMemo(\n () => ({\n ...defaultMapping,\n ...mappingProp,\n }),\n [mappingProp],\n );\n\n const classNames = useMemo(\n () =>\n mergeClassNames(chipClassNames, theme.Chip, classNamesProp, {\n chip: mapping.font[size],\n }),\n [theme.Chip, classNamesProp, mapping, size],\n );\n\n const values = useMemo<\n [\n [typeof RACTextContext, ContextValue<TextProps, HTMLElement>],\n [typeof AriaTextContext, ContextValue<TextProps, HTMLElement>],\n [typeof ButtonContext, ContextValue<ButtonProps, HTMLButtonElement>],\n ]\n >(\n () => [\n // Because ChipGroup (TagGroup) implements a TextContext, we need to block it inside of the Chip\n // so that there isn't a conflict of with our AriaTextContext. Otherwise there are slot errors\n [RACTextContext, null],\n [AriaTextContext, { className: classNames?.label }],\n [\n ButtonContext,\n {\n ...mapping.remove[size],\n classNames: { button: classNames?.remove },\n slot: 'remove',\n },\n ],\n ],\n [classNames?.label, classNames?.remove, mapping, size],\n );\n\n const style = useCallback(\n (renderProps: TagRenderProps) =>\n inlineVars(chipStateVars, {\n ...renderProps,\n color,\n size,\n }),\n [color, size],\n );\n\n const children = useCallback(\n (renderProps: TagRenderProps) => (\n <Provider values={values}>\n <div className={classNames?.chip}>\n {callRenderProps(childrenProp, renderProps)}\n </div>\n </Provider>\n ),\n [values, classNames?.chip, childrenProp],\n );\n\n return (\n <Tag\n {...rest}\n ref={ref}\n id={id ?? textValue}\n className={classNames?.container}\n style={style}\n textValue={textValue}\n >\n {children}\n </Tag>\n );\n});\n\n/**\n * Must be used in conjunction with ChipItem & ChipGroup and\n * cannot be used outside of ChipGroup, else will throw error\n */\nexport function ChipList<T extends object>({\n classNames: classNamesProp,\n ...rest\n}: ChipListProps<T>) {\n const theme = useTheme();\n\n const classNames = useMemo(\n () => mergeClassNames(chipClassNames, theme.Chip, classNamesProp),\n [theme.Chip, classNamesProp],\n );\n\n return <TagList<T> {...rest} className={classNames?.list} />;\n}\n\nexport const ChipGroupContext =\n createContext<ContextValue<ChipGroupProps, HTMLDivElement>>(null);\n\n/**\n * Color & Size props are passed down to ChipItem but can be overridden\n * on each component if desired\n */\nexport const ChipGroup = forwardRef(function ChipGroup(\n props: ChipGroupProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n [props, ref] = useContextProps(props, ref, ChipGroupContext);\n props = useDefaultProps(props, 'ChipGroup');\n\n const { children, classNames: classNamesProp, color, size, ...rest } = props;\n const theme = useTheme();\n\n const classNames = useMemo(\n () => mergeClassNames(chipClassNames, theme.Chip, classNamesProp),\n [theme.Chip, classNamesProp],\n );\n\n const values = useMemo<\n [[typeof ChipContext, ContextValue<ChipItemProps, HTMLDivElement>]]\n >(\n () => [[ChipContext, { classNames, color, size }]],\n [classNames, color, size],\n );\n\n return (\n <TagGroup {...rest} ref={ref} className={classNames?.group}>\n <Provider values={values}>{children}</Provider>\n </TagGroup>\n );\n});\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { PropsWithChildren } from 'react';
|
|
2
|
-
import { TagRenderProps, TagProps,
|
|
2
|
+
import { TagRenderProps, TagProps, TagGroupProps, TagListProps } from 'react-aria-components';
|
|
3
3
|
import { AsType } from '../../types/generic.js';
|
|
4
4
|
import { OmitProtectedProps } from '../../types/props.js';
|
|
5
5
|
import { RenderPropsChildren } from '../../types/react-aria.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/collection/collection.tsx"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"sources":["../../../src/components/collection/collection.tsx"],"names":[],"mappings":";;;;;;AAwBO,SAAS,wBAAA,CAGd,SAAqB,MAA+B,EAAA;AACpD,EAAO,OAAA;AAAA;AAAA,IAEL,gBAAgB,CAAC,EAAE,qBACjB,qBAAA,GAAA,CAAC,iBAAc,MACZ,EAAA,QAAA,EAAA,mBAAA;AAAA,MACC,UAAA,CAAW,OAAO,CAAG,EAAA,UAAA;AAAA,MACrB,IAAA;AAAA,MACA;AAAA,KAEJ,EAAA,CAAA;AAAA;AAAA,IAGF,gBAAkB,EAAA,CAAC,EAAE,UAAA,EAAY,QAAQ,mBAAoB,EAAA,qBAC1D,GAAA,CAAA,aAAA,EAAA,EAAc,MACZ,EAAA,QAAA,EAAA,mBAAA,CAAoB,UAAY,EAAA,MAAA,EAAQ,mBAAmB,CAC9D,EAAA;AAAA,GAEJ;AACF","file":"collection.js","sourcesContent":["/*\n * Copyright 2025 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport type { Collection, Node } from '@react-types/shared';\nimport { type Context, useContext } from 'react';\nimport type { CollectionRenderer } from 'react-aria-components';\nimport { useCollectionRender } from '../../hooks';\nimport { MergeProvider, type MergeProviderProps } from '../merge-provider';\n\n/**\n * Replace the default collection renderer to allow for injection of\n * context props for multiple composed components. Also enables use of\n * Section as wrapper of list items at the top level as a styleable\n * element within the RAC container\n */\nexport function createCollectionRenderer<\n C extends { readonly collection: Collection<Node<unknown>> },\n V extends MergeProviderProps['values'],\n>(context: Context<C>, values: V): CollectionRenderer {\n return {\n // biome-ignore lint/style/useNamingConvention: intentional\n CollectionRoot: ({ renderDropIndicator }) => (\n <MergeProvider values={values}>\n {useCollectionRender(\n useContext(context)?.collection,\n null,\n renderDropIndicator,\n )}\n </MergeProvider>\n ),\n // biome-ignore lint/style/useNamingConvention: intentional\n CollectionBranch: ({ collection, parent, renderDropIndicator }) => (\n <MergeProvider values={values}>\n {useCollectionRender(collection, parent, renderDropIndicator)}\n </MergeProvider>\n ),\n };\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ComboBoxClassNames, ComboBoxMapping, ComboBoxSizes, ComboBoxProps } from './types.js';
|
|
2
2
|
import * as react_aria_components from 'react-aria-components';
|
|
3
3
|
import { ContextValue } from 'react-aria-components';
|
|
4
4
|
import * as react from 'react';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/combo-box/combo-box.tsx"],"names":["ComboBox","RACComboBox"],"mappings":";;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"sources":["../../../src/components/combo-box/combo-box.tsx"],"names":["ComboBox","RACComboBox"],"mappings":"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","file":"combo-box.js","sourcesContent":["/*\n * Copyright 2025 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {\n type ForwardedRef,\n createContext,\n forwardRef,\n useCallback,\n useMemo,\n} from 'react';\nimport {\n type ComboBoxRenderProps,\n type ContextValue,\n type FieldErrorProps,\n type LabelProps,\n Provider,\n ComboBox as RACComboBox,\n type GroupProps as RACGroupProps,\n type TextProps,\n} from 'react-aria-components';\nimport { useContextProps, useDefaultProps, useTheme } from '../../hooks';\nimport { bodies } from '../../styles';\nimport { callRenderProps, inlineVars, mergeClassNames } from '../../utils';\nimport {\n AriaFieldErrorContext,\n AriaGroupContext,\n AriaLabelContext,\n AriaTextContext,\n} from '../aria';\nimport { ButtonContext, type ButtonProps } from '../button';\nimport { InputContext, type InputProps } from '../input';\nimport { OptionsContext, type OptionsProps } from '../options';\nimport { comboBoxClassNames, comboBoxStateVars } from './combo-box.css';\nimport type { ComboBoxMapping, ComboBoxProps } from './types';\n\nconst defaultMapping: ComboBoxMapping = {\n description: {\n sm: bodies.xs,\n lg: bodies.xs,\n },\n error: {\n sm: bodies.xs,\n lg: bodies.xs,\n },\n toggle: {\n sm: { size: 'sm', variant: 'icon' },\n lg: { size: 'md', variant: 'icon' },\n },\n};\n\nexport const ComboBoxContext =\n createContext<ContextValue<ComboBoxProps<object>, HTMLDivElement>>(null);\n\nexport const ComboBox = forwardRef(function ComboBox<T extends object>(\n props: ComboBoxProps<T>,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n [props, ref] = useContextProps(props, ref, ComboBoxContext);\n props = useDefaultProps(props, 'ComboBox');\n\n const {\n children: childrenProp,\n classNames: classNamesProp,\n mapping: mappingProp,\n size = 'lg',\n } = props;\n\n const theme = useTheme();\n\n const mapping = useMemo(\n () => ({\n ...defaultMapping,\n ...mappingProp,\n }),\n [mappingProp],\n );\n\n const classNames = useMemo(\n () =>\n mergeClassNames(comboBoxClassNames, theme.ComboBox, classNamesProp, {\n description: mapping.description[size],\n error: mapping.error[size],\n }),\n [theme.ComboBox, classNamesProp, mapping, size],\n );\n\n const values = useMemo<\n [\n [typeof AriaLabelContext, ContextValue<LabelProps, HTMLLabelElement>],\n [typeof AriaGroupContext, ContextValue<RACGroupProps, HTMLDivElement>],\n [typeof InputContext, ContextValue<InputProps, HTMLInputElement>],\n [typeof ButtonContext, ContextValue<ButtonProps, HTMLButtonElement>],\n [typeof AriaTextContext, ContextValue<TextProps, HTMLElement>],\n [\n typeof AriaFieldErrorContext,\n ContextValue<FieldErrorProps, HTMLElement>,\n ],\n [typeof OptionsContext, ContextValue<OptionsProps, HTMLElement>],\n ]\n >(\n () => [\n [\n AriaLabelContext,\n {\n className: classNames?.label,\n },\n ],\n [\n AriaGroupContext,\n {\n className: classNames?.group,\n },\n ],\n [InputContext, { classNames: classNames?.input, size }],\n [\n ButtonContext,\n {\n ...mapping.toggle[size],\n classNames: classNames?.toggle,\n },\n ],\n [\n AriaTextContext,\n {\n slots: {\n description: { className: classNames?.description },\n },\n },\n ],\n [AriaFieldErrorContext, { className: classNames?.error }],\n [OptionsContext, { classNames: classNames?.options, size }],\n ],\n [classNames, mapping, size],\n );\n\n const style = useCallback(\n (renderProps: ComboBoxRenderProps) =>\n inlineVars(comboBoxStateVars, {\n ...renderProps,\n size,\n }),\n [size],\n );\n\n const children = useCallback(\n (renderProps: ComboBoxRenderProps) => (\n <div className={classNames?.comboBox}>\n <Provider values={values}>\n {callRenderProps(childrenProp, {\n ...renderProps,\n defaultChildren: null,\n })}\n </Provider>\n </div>\n ),\n [classNames?.comboBox, values, childrenProp],\n );\n\n return (\n <RACComboBox\n {...props}\n ref={ref}\n className={classNames?.container}\n style={style}\n >\n {children}\n </RACComboBox>\n );\n});\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ComboBoxProps as ComboBoxProps$1, ComboBoxRenderProps as ComboBoxRenderProps$1 } from 'react-aria-components';
|
|
2
2
|
import { PartialDeep } from 'type-fest';
|
|
3
3
|
import { AsType } from '../../types/generic.js';
|
|
4
4
|
import { OmitProtectedProps } from '../../types/props.js';
|
|
@@ -2,7 +2,7 @@ import * as react from 'react';
|
|
|
2
2
|
import * as react_aria_components from 'react-aria-components';
|
|
3
3
|
import { ContextValue } from 'react-aria-components';
|
|
4
4
|
import { RenderPropsChildren } from '../../types/react-aria.js';
|
|
5
|
-
import {
|
|
5
|
+
import { DialogRenderProps, DialogMapping, DialogSizes, DialogProps } from './types.js';
|
|
6
6
|
import '../../types/props.js';
|
|
7
7
|
import '../button/types.js';
|
|
8
8
|
import '../icon/types.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/dialog/dialog.tsx"],"names":["Dialog","RACDialog"],"mappings":"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","file":"dialog.js","sourcesContent":["import { useIsSSR } from '@react-aria/ssr';\nimport {\n createContext,\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useState,\n type ForwardedRef,\n type HTMLAttributes,\n} from 'react';\nimport {\n DEFAULT_SLOT,\n Modal,\n ModalOverlay,\n Provider,\n Dialog as RACDialog,\n type ContextValue,\n type ModalRenderProps,\n} from 'react-aria-components';\nimport {\n useContextProps,\n useDefaultProps,\n useSlot,\n useTheme,\n} from '../../hooks';\nimport { headings } from '../../styles';\nimport type { OmitProtectedProps } from '../../types';\nimport { callRenderProps, inlineVars, mergeClassNames } from '../../utils';\nimport { AriaHeadingContext } from '../aria';\nimport { ButtonContext, type ButtonProps } from '../button';\nimport { ElementContext, type ElementProps } from '../element';\nimport { GroupContext, type GroupProps } from '../group';\nimport { dialogClassNames, dialogStateVars } from './dialog.css';\nimport type { DialogMapping, DialogProps, DialogSizes } from './types';\n\nconst dialogSizes: DialogSizes[] = ['sm', 'lg'];\n\nconst defaultMapping: DialogMapping = {\n heading: {\n sm: { className: headings.v4 },\n lg: { className: headings.v2 },\n },\n actions: {\n context: ButtonContext,\n orientation: 'horizontal',\n reverse: true,\n },\n primary: dialogSizes.reduce(\n (acc, size) => {\n acc[size] = { size };\n\n return acc;\n },\n {} as Record<DialogSizes, OmitProtectedProps<ButtonProps>>,\n ),\n secondary: dialogSizes.reduce(\n (acc, size) => {\n acc[size] = { size, variant: 'bare' };\n\n return acc;\n },\n {} as Record<DialogSizes, OmitProtectedProps<ButtonProps>>,\n ),\n};\n\nexport const DialogContext =\n createContext<ContextValue<DialogProps, HTMLDivElement>>(null);\n\nexport const Dialog = forwardRef(function Dialog(\n props: DialogProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n [props, ref] = useContextProps(props, ref, DialogContext);\n props = useDefaultProps(props, 'Dialog');\n\n const {\n children: childrenProp,\n classNames: classNamesProp,\n mapping: mappingProp,\n parentRef,\n role,\n size = 'lg',\n ...rest\n } = props;\n\n const theme = useTheme();\n const isSSR = useIsSSR();\n const [portal, setPortal] = useState(isSSR ? null : document.body);\n\n const isGlobal = useMemo(\n () => !isSSR && portal === document.body,\n [isSSR, portal],\n );\n\n const mapping = useMemo(\n () => ({ ...defaultMapping, ...mappingProp }),\n [mappingProp],\n );\n\n const classNames = useMemo(\n () =>\n mergeClassNames(dialogClassNames, theme.Dialog, classNamesProp, {\n container: isGlobal ? theme.className : undefined,\n }),\n [theme.Dialog, classNamesProp, isGlobal, theme.className],\n );\n\n const [headerRef, hasHeader] = useSlot();\n\n const style = useCallback(\n ({ state, ...renderProps }: ModalRenderProps) => ({\n ...(isGlobal ? theme.style : {}),\n ...inlineVars(dialogStateVars, {\n hasHeader,\n size,\n ...renderProps,\n isGlobal,\n }),\n }),\n [size, theme.style, isGlobal, hasHeader],\n );\n\n const values = useMemo<\n [\n [\n typeof ElementContext,\n ContextValue<\n ElementProps<\n ContextValue<HTMLAttributes<HTMLElement>, HTMLHeadingElement>,\n ContextValue<\n GroupProps<ButtonProps, HTMLButtonElement>,\n HTMLDivElement\n >\n >,\n HTMLElement\n >,\n ],\n ]\n >(\n () => [\n [\n ElementContext,\n {\n slots: {\n [DEFAULT_SLOT]: {},\n header: {\n as: 'header',\n className: classNames?.header,\n ref: headerRef,\n values: [\n [\n AriaHeadingContext,\n {\n ...mapping.heading[size],\n slot: 'title',\n },\n ],\n [GroupContext, null],\n ],\n },\n content: { className: classNames?.content },\n footer: {\n as: 'footer',\n className: classNames?.footer,\n values: [\n [AriaHeadingContext, null],\n [\n GroupContext,\n {\n values: {\n slots: {\n [DEFAULT_SLOT]: mapping.primary[size] ?? {},\n secondary: mapping.secondary[size] ?? {},\n },\n },\n ...mapping.actions,\n },\n ],\n ],\n },\n },\n },\n ],\n ],\n [\n classNames?.header,\n classNames?.content,\n classNames?.footer,\n headerRef,\n mapping.actions,\n mapping.heading,\n mapping.primary,\n mapping.secondary,\n size,\n ],\n );\n\n const children = useCallback(\n (renderProps: ModalRenderProps) => (\n <Provider values={values}>\n <Modal className={classNames?.modal}>\n <RACDialog className={classNames?.dialog} role={role}>\n {callRenderProps(childrenProp, {\n ...renderProps,\n isGlobal,\n isOpen: renderProps.state.isOpen,\n })}\n </RACDialog>\n </Modal>\n </Provider>\n ),\n [\n values,\n classNames?.modal,\n classNames?.dialog,\n role,\n childrenProp,\n isGlobal,\n ],\n );\n\n useEffect(() => {\n const node = parentRef?.current;\n const port = isSSR ? null : document.createElement('div');\n\n if (node && port) {\n port.classList.add(classNames?.portal ?? '');\n\n node.appendChild(port);\n\n setPortal(port);\n }\n\n return () => {\n port?.remove();\n\n setPortal(isSSR ? null : document.body);\n };\n }, [isSSR, parentRef, classNames?.portal]);\n\n if (!portal) return null;\n\n return (\n <ModalOverlay\n {...rest}\n ref={ref}\n className={classNames?.container}\n style={style}\n UNSTABLE_portalContainer={portal}\n >\n {children}\n </ModalOverlay>\n );\n});\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/dialog/dialog.tsx"],"names":["Dialog","RACDialog"],"mappings":"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","file":"dialog.js","sourcesContent":["/*\n * Copyright 2025 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport { useIsSSR } from '@react-aria/ssr';\nimport {\n type ForwardedRef,\n type HTMLAttributes,\n createContext,\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from 'react';\nimport {\n type ContextValue,\n DEFAULT_SLOT,\n Modal,\n ModalOverlay,\n type ModalRenderProps,\n Provider,\n Dialog as RACDialog,\n} from 'react-aria-components';\nimport {\n useContextProps,\n useDefaultProps,\n useSlot,\n useTheme,\n} from '../../hooks';\nimport { headings } from '../../styles';\nimport type { OmitProtectedProps } from '../../types';\nimport { callRenderProps, inlineVars, mergeClassNames } from '../../utils';\nimport { AriaHeadingContext } from '../aria';\nimport { ButtonContext, type ButtonProps } from '../button';\nimport { ElementContext, type ElementProps } from '../element';\nimport { GroupContext, type GroupProps } from '../group';\nimport { dialogClassNames, dialogStateVars } from './dialog.css';\nimport type { DialogMapping, DialogProps, DialogSizes } from './types';\n\nconst dialogSizes: DialogSizes[] = ['sm', 'lg'];\n\nconst defaultMapping: DialogMapping = {\n heading: {\n sm: { className: headings.v4 },\n lg: { className: headings.v2 },\n },\n actions: {\n context: ButtonContext,\n orientation: 'horizontal',\n reverse: true,\n },\n primary: dialogSizes.reduce(\n (acc, size) => {\n acc[size] = { size };\n\n return acc;\n },\n {} as Record<DialogSizes, OmitProtectedProps<ButtonProps>>,\n ),\n secondary: dialogSizes.reduce(\n (acc, size) => {\n acc[size] = { size, variant: 'bare' };\n\n return acc;\n },\n {} as Record<DialogSizes, OmitProtectedProps<ButtonProps>>,\n ),\n};\n\nexport const DialogContext =\n createContext<ContextValue<DialogProps, HTMLDivElement>>(null);\n\nexport const Dialog = forwardRef(function Dialog(\n props: DialogProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n [props, ref] = useContextProps(props, ref, DialogContext);\n props = useDefaultProps(props, 'Dialog');\n\n const {\n children: childrenProp,\n classNames: classNamesProp,\n mapping: mappingProp,\n parentRef,\n role,\n size = 'lg',\n ...rest\n } = props;\n\n const theme = useTheme();\n const isSSR = useIsSSR();\n const [portal, setPortal] = useState(isSSR ? null : document.body);\n\n const isGlobal = useMemo(\n () => !isSSR && portal === document.body,\n [isSSR, portal],\n );\n\n const mapping = useMemo(\n () => ({ ...defaultMapping, ...mappingProp }),\n [mappingProp],\n );\n\n const classNames = useMemo(\n () =>\n mergeClassNames(dialogClassNames, theme.Dialog, classNamesProp, {\n container: isGlobal ? theme.className : undefined,\n }),\n [theme.Dialog, classNamesProp, isGlobal, theme.className],\n );\n\n const [headerRef, hasHeader] = useSlot();\n\n const style = useCallback(\n ({ state, ...renderProps }: ModalRenderProps) => ({\n ...(isGlobal ? theme.style : {}),\n ...inlineVars(dialogStateVars, {\n hasHeader,\n size,\n ...renderProps,\n isGlobal,\n }),\n }),\n [size, theme.style, isGlobal, hasHeader],\n );\n\n const values = useMemo<\n [\n [\n typeof ElementContext,\n ContextValue<\n ElementProps<\n ContextValue<HTMLAttributes<HTMLElement>, HTMLHeadingElement>,\n ContextValue<\n GroupProps<ButtonProps, HTMLButtonElement>,\n HTMLDivElement\n >\n >,\n HTMLElement\n >,\n ],\n ]\n >(\n () => [\n [\n ElementContext,\n {\n slots: {\n [DEFAULT_SLOT]: {},\n header: {\n as: 'header',\n className: classNames?.header,\n ref: headerRef,\n values: [\n [\n AriaHeadingContext,\n {\n ...mapping.heading[size],\n slot: 'title',\n },\n ],\n [GroupContext, null],\n ],\n },\n content: { className: classNames?.content },\n footer: {\n as: 'footer',\n className: classNames?.footer,\n values: [\n [AriaHeadingContext, null],\n [\n GroupContext,\n {\n values: {\n slots: {\n [DEFAULT_SLOT]: mapping.primary[size] ?? {},\n secondary: mapping.secondary[size] ?? {},\n },\n },\n ...mapping.actions,\n },\n ],\n ],\n },\n },\n },\n ],\n ],\n [\n classNames?.header,\n classNames?.content,\n classNames?.footer,\n headerRef,\n mapping.actions,\n mapping.heading,\n mapping.primary,\n mapping.secondary,\n size,\n ],\n );\n\n const children = useCallback(\n (renderProps: ModalRenderProps) => (\n <Provider values={values}>\n <Modal className={classNames?.modal}>\n <RACDialog className={classNames?.dialog} role={role}>\n {callRenderProps(childrenProp, {\n ...renderProps,\n isGlobal,\n isOpen: renderProps.state.isOpen,\n })}\n </RACDialog>\n </Modal>\n </Provider>\n ),\n [\n values,\n classNames?.modal,\n classNames?.dialog,\n role,\n childrenProp,\n isGlobal,\n ],\n );\n\n useEffect(() => {\n const node = parentRef?.current;\n const port = isSSR ? null : document.createElement('div');\n\n if (node && port) {\n port.classList.add(classNames?.portal ?? '');\n\n node.appendChild(port);\n\n setPortal(port);\n }\n\n return () => {\n port?.remove();\n\n setPortal(isSSR ? null : document.body);\n };\n }, [isSSR, parentRef, classNames?.portal]);\n\n if (!portal) return null;\n\n return (\n <ModalOverlay\n {...rest}\n ref={ref}\n className={classNames?.container}\n style={style}\n UNSTABLE_portalContainer={portal}\n >\n {children}\n </ModalOverlay>\n );\n});\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { RefObject } from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { ModalRenderProps, HeadingProps, ModalOverlayProps, DialogProps as DialogProps$1 } from 'react-aria-components';
|
|
3
3
|
import { OmitProtectedProps } from '../../types/props.js';
|
|
4
4
|
import { RenderPropsChildren } from '../../types/react-aria.js';
|
|
5
5
|
import { ButtonProps } from '../button/types.js';
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DrawerProps,
|
|
1
|
+
import { DrawerProps, DrawerClassNames, DrawerMapping, DrawerTabProps, DrawerTabListProps, DrawerDialogProps } from './types.js';
|
|
2
2
|
import * as _react_types_shared from '@react-types/shared';
|
|
3
3
|
import * as react from 'react';
|
|
4
4
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import '../../chunk-PZ5AY32C.js';
|
|
2
2
|
import { toBoolean } from '@accelint/converters';
|
|
3
3
|
import { noop } from '@accelint/core';
|
|
4
|
-
import { useIsSSR } from '@react-aria/ssr';
|
|
5
4
|
import { useFocusWithin } from '@react-aria/interactions';
|
|
6
5
|
import { useOverlay } from '@react-aria/overlays';
|
|
6
|
+
import { useIsSSR } from '@react-aria/ssr';
|
|
7
7
|
import { useOverlayTriggerState } from '@react-stately/overlays';
|
|
8
8
|
import { createContext, forwardRef, useContext, useMemo, useCallback, useRef } from 'react';
|
|
9
9
|
import { DEFAULT_SLOT, Provider } from 'react-aria-components';
|
|
@@ -39,7 +39,8 @@ function Drawer(props) {
|
|
|
39
39
|
isDismissable = true,
|
|
40
40
|
isKeyboardDismissDisabled = false,
|
|
41
41
|
isOpen: isOpenProp,
|
|
42
|
-
onOpenChange
|
|
42
|
+
onOpenChange,
|
|
43
|
+
...rest
|
|
43
44
|
} = props;
|
|
44
45
|
const theme = useTheme();
|
|
45
46
|
const isSSR = useIsSSR();
|
|
@@ -109,7 +110,7 @@ function Drawer(props) {
|
|
|
109
110
|
ref,
|
|
110
111
|
className: classNames?.container,
|
|
111
112
|
style,
|
|
112
|
-
children: /* @__PURE__ */ jsx(Tabs, { classNames: classNames?.tabs, children })
|
|
113
|
+
children: /* @__PURE__ */ jsx(Tabs, { classNames: classNames?.tabs, ...rest, children })
|
|
113
114
|
}
|
|
114
115
|
) });
|
|
115
116
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/components/drawer/drawer.tsx"],"names":["isOpen","DrawerDialog"],"mappings":"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","file":"drawer.js","sourcesContent":["import { toBoolean } from '@accelint/converters';\nimport { noop } from '@accelint/core';\nimport { useIsSSR } from '@react-aria/ssr';\nimport { useFocusWithin } from '@react-aria/interactions';\nimport { useOverlay } from '@react-aria/overlays';\nimport { useOverlayTriggerState } from '@react-stately/overlays';\nimport type { PressEvent } from '@react-types/shared';\nimport {\n type ForwardedRef,\n type HTMLAttributes,\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useMemo,\n useRef,\n} from 'react';\nimport {\n DEFAULT_SLOT,\n Provider,\n type ContextValue,\n} from 'react-aria-components';\nimport {\n useContextProps,\n useDefaultProps,\n useSlot,\n useTheme,\n} from '../../hooks';\nimport { headings } from '../../styles';\nimport {\n callRenderProps,\n inlineVars,\n mergeClassNames,\n mergeProps,\n} from '../../utils';\nimport { AriaHeadingContext } from '../aria';\nimport { ButtonContext, type ButtonProps } from '../button';\nimport { ElementContext, type ElementProps } from '../element';\nimport { Tab, TabList, Tabs, type TabRenderProps } from '../tabs';\nimport {\n TooltipContext,\n TooltipTargetContext,\n type TooltipProps,\n type TooltipTargetProps,\n} from '../tooltip';\nimport {\n drawerClassNames,\n drawerDialogStateVars,\n drawerStateVars,\n} from './drawer.css';\nimport type {\n DrawerContextValue,\n DrawerDialogProps,\n DrawerMapping,\n DrawerProps,\n DrawerTabListProps,\n DrawerTabProps,\n} from './types';\n\nconst DrawerContext = createContext<DrawerContextValue>({\n anchor: 'right',\n layoutShift: false,\n isOpen: false,\n close: noop,\n open: noop,\n setOpen: noop,\n toggle: noop,\n});\n\nexport function Drawer(props: DrawerProps) {\n props = useDefaultProps(props, 'Drawer');\n\n const {\n children: childrenProp,\n classNames: classNamesProp,\n anchor = 'right',\n defaultOpen = false,\n layoutShift = false,\n shouldCloseOnBlur = false,\n isDismissable = true,\n isKeyboardDismissDisabled = false,\n isOpen: isOpenProp,\n onOpenChange,\n } = props;\n\n const theme = useTheme();\n const isSSR = useIsSSR();\n\n const classNames = useMemo(\n () => mergeClassNames(drawerClassNames, theme.Drawer, classNamesProp),\n [theme.Drawer, classNamesProp],\n );\n\n // Remove focus when Drawer closes\n const handleOpenChange = useCallback(\n (isOpen: boolean) => {\n if (!isOpen) {\n const focused = isSSR ? null : document.activeElement;\n\n if (\n focused &&\n 'blur' in focused &&\n typeof focused.blur === 'function'\n ) {\n focused.blur();\n }\n }\n\n onOpenChange?.(isOpen);\n },\n [isSSR, onOpenChange],\n );\n\n const state = useOverlayTriggerState({\n defaultOpen,\n isOpen: isOpenProp,\n onOpenChange: handleOpenChange,\n });\n\n const { isOpen, close, open } = state;\n const ref = useRef<HTMLDivElement>(null);\n\n const { overlayProps } = useOverlay(\n {\n isOpen,\n shouldCloseOnBlur,\n isDismissable,\n isKeyboardDismissDisabled,\n onClose: close,\n },\n ref,\n );\n\n // TODO: it may be desirable to disallow focus within the closed Drawer instead\n // If focus forces the Drawer open\n const { focusWithinProps } = useFocusWithin({\n onFocusWithin: open,\n });\n\n const context = useMemo(\n () => ({ ...state, anchor, layoutShift }),\n [state, anchor, layoutShift],\n );\n\n const values = useMemo<\n [\n [typeof DrawerContext, DrawerContextValue],\n [\n typeof DrawerDialogContext,\n ContextValue<DrawerDialogProps, HTMLDivElement>,\n ],\n ]\n >(\n () => [\n [DrawerContext, context],\n [DrawerDialogContext, { classNames }],\n ],\n [context, classNames],\n );\n\n const style = useMemo(\n () =>\n inlineVars(drawerStateVars, {\n anchor,\n layoutShift,\n isOpen,\n }),\n [anchor, layoutShift, isOpen],\n );\n\n const children = useMemo(\n () => callRenderProps(childrenProp, state),\n [childrenProp, state],\n );\n\n return (\n <Provider values={values}>\n <div\n {...mergeProps(overlayProps, focusWithinProps)}\n ref={ref}\n className={classNames?.container}\n style={style}\n >\n <Tabs classNames={classNames?.tabs}>{children}</Tabs>\n </div>\n </Provider>\n );\n}\n\nexport function DrawerTabList<T extends object>(props: DrawerTabListProps<T>) {\n props = useDefaultProps(props, 'DrawerTabList');\n\n const { children, classNames: classNamesProp, variant = 'fill' } = props;\n const { anchor } = useContext(DrawerContext);\n const theme = useTheme();\n\n const classNames = useMemo(\n () => mergeClassNames(drawerClassNames, theme.Drawer, classNamesProp),\n [theme.Drawer, classNamesProp],\n );\n\n const values = useMemo<\n [\n [typeof TooltipContext, ContextValue<TooltipProps, HTMLDivElement>],\n [\n typeof TooltipTargetContext,\n ContextValue<TooltipTargetProps, HTMLDivElement>,\n ],\n ]\n >(\n () => [\n [TooltipContext, { placement: anchor === 'left' ? 'right' : 'left' }],\n [TooltipTargetContext, { focusable: false, relative: 'parent' }],\n ],\n [anchor],\n );\n\n return (\n <Provider values={values}>\n <TabList<T>\n classNames={classNames?.tabs}\n align='center'\n anchor={anchor === 'left' ? 'start' : 'end'}\n orientation='vertical'\n variant={variant}\n >\n {children}\n </TabList>\n </Provider>\n );\n}\n\nexport function DrawerTab(props: DrawerTabProps) {\n props = useDefaultProps(props, 'DrawerTab');\n\n const { children: childrenProp, classNames: classNamesProp, ...rest } = props;\n const { isOpen, open, toggle } = useContext(DrawerContext);\n const theme = useTheme();\n\n const classNames = useMemo(\n () => mergeClassNames(drawerClassNames, theme.Drawer, classNamesProp),\n [theme.Drawer, classNamesProp],\n );\n\n // Must bind to press start (instead of later press events) due to Tab changing selected state on start\n const handlePressStart = useCallback(\n (event: PressEvent) => {\n const { selected } = event.target.parentElement?.dataset ?? {};\n\n if (toBoolean(selected)) {\n toggle();\n } else {\n open();\n }\n },\n [open, toggle],\n );\n\n const children = useCallback(\n (renderProps: TabRenderProps) =>\n callRenderProps(childrenProp, { ...renderProps, isOpen }),\n [childrenProp, isOpen],\n );\n\n return (\n <Tab\n {...rest}\n classNames={classNames?.tabs}\n onPressStart={handlePressStart}\n >\n {children}\n </Tab>\n );\n}\n\nconst defaultMapping: DrawerMapping = {\n heading: {\n child: headings.v4,\n parent: headings.v3,\n },\n back: {\n variant: 'icon',\n },\n close: {\n variant: 'icon',\n },\n};\n\nexport const DrawerDialogContext =\n createContext<ContextValue<DrawerDialogProps, HTMLDivElement>>(null);\n\nexport const DrawerDialog = forwardRef(function DrawerDialog(\n props: DrawerDialogProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n [props, ref] = useContextProps(props, ref, DrawerDialogContext);\n\n const {\n children,\n classNames: classNamesProp,\n mapping: mappingProp,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n ...rest\n } = props;\n\n const { close } = useContext(DrawerContext);\n const [backRef, hasBack] = useSlot();\n const [titleRef, hasTitle] = useSlot();\n const theme = useTheme();\n\n const mapping = useMemo(\n () => ({ ...defaultMapping, ...mappingProp }),\n [mappingProp],\n );\n\n const classNames = useMemo(\n () =>\n mergeClassNames(drawerClassNames, theme.Drawer, classNamesProp, {\n header: {\n title: hasBack ? mapping.heading.child : mapping.heading.parent,\n },\n }),\n [theme.Drawer, classNamesProp, hasBack, mapping],\n );\n\n const style = useMemo(\n () =>\n inlineVars(drawerDialogStateVars, {\n isChild: !!hasBack,\n }),\n [hasBack],\n );\n\n const values = useMemo<\n [\n [\n typeof ElementContext,\n ContextValue<\n ElementProps<\n ContextValue<ButtonProps, HTMLButtonElement>,\n ContextValue<HTMLAttributes<HTMLElement>, HTMLHeadingElement>\n >,\n HTMLElement\n >,\n ],\n ]\n >(\n () => [\n [\n ElementContext,\n {\n slots: {\n [DEFAULT_SLOT]: {},\n header: {\n as: 'header',\n className: classNames?.header?.header,\n values: [\n [\n ButtonContext,\n {\n slots: {\n [DEFAULT_SLOT]: {},\n back: {\n ...mapping.back,\n ref: backRef,\n classNames: classNames?.header?.back,\n },\n close: {\n ...mapping.close,\n classNames: classNames?.header?.close,\n onPress: close,\n },\n },\n },\n ],\n [\n AriaHeadingContext,\n {\n slots: {\n title: {\n ref: titleRef,\n className: classNames?.header?.title,\n },\n },\n },\n ],\n ],\n },\n content: { className: classNames?.content },\n footer: { as: 'footer', className: classNames?.footer },\n },\n },\n ],\n ],\n [\n classNames?.header?.header,\n classNames?.header?.back,\n classNames?.header?.close,\n classNames?.header?.title,\n classNames?.content,\n classNames?.footer,\n backRef,\n close,\n mapping,\n titleRef,\n ],\n );\n\n // biome-ignore lint/complexity/useSimplifiedLogicExpression: intentional\n if (!ariaLabel && !ariaLabelledBy && !hasTitle) {\n console.warn(\n 'If a Drawer does not contain a <Heading slot=\"title\">, it must have an aria-label or aria-labelledby attribute for accessibility.',\n );\n }\n\n return (\n <Provider values={values}>\n <div\n {...rest}\n className={classNames?.dialog?.container}\n style={style}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n >\n <div className={classNames?.dialog?.dialog}>{children}</div>\n </div>\n </Provider>\n );\n});\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/components/drawer/drawer.tsx"],"names":["isOpen","DrawerDialog"],"mappings":"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","file":"drawer.js","sourcesContent":["/*\n * Copyright 2025 Hypergiant Galactic Systems Inc. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport { toBoolean } from '@accelint/converters';\nimport { noop } from '@accelint/core';\nimport { useFocusWithin } from '@react-aria/interactions';\nimport { useOverlay } from '@react-aria/overlays';\nimport { useIsSSR } from '@react-aria/ssr';\nimport { useOverlayTriggerState } from '@react-stately/overlays';\nimport type { PressEvent } from '@react-types/shared';\nimport {\n type ForwardedRef,\n type HTMLAttributes,\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useMemo,\n useRef,\n} from 'react';\nimport {\n type ContextValue,\n DEFAULT_SLOT,\n Provider,\n} from 'react-aria-components';\nimport {\n useContextProps,\n useDefaultProps,\n useSlot,\n useTheme,\n} from '../../hooks';\nimport { headings } from '../../styles';\nimport {\n callRenderProps,\n inlineVars,\n mergeClassNames,\n mergeProps,\n} from '../../utils';\nimport { AriaHeadingContext } from '../aria';\nimport { ButtonContext, type ButtonProps } from '../button';\nimport { ElementContext, type ElementProps } from '../element';\nimport { Tab, TabList, type TabRenderProps, Tabs } from '../tabs';\nimport {\n TooltipContext,\n type TooltipProps,\n TooltipTargetContext,\n type TooltipTargetProps,\n} from '../tooltip';\nimport {\n drawerClassNames,\n drawerDialogStateVars,\n drawerStateVars,\n} from './drawer.css';\nimport type {\n DrawerContextValue,\n DrawerDialogProps,\n DrawerMapping,\n DrawerProps,\n DrawerTabListProps,\n DrawerTabProps,\n} from './types';\n\nconst DrawerContext = createContext<DrawerContextValue>({\n anchor: 'right',\n layoutShift: false,\n isOpen: false,\n close: noop,\n open: noop,\n setOpen: noop,\n toggle: noop,\n});\n\nexport function Drawer(props: DrawerProps) {\n props = useDefaultProps(props, 'Drawer');\n\n const {\n children: childrenProp,\n classNames: classNamesProp,\n anchor = 'right',\n defaultOpen = false,\n layoutShift = false,\n shouldCloseOnBlur = false,\n isDismissable = true,\n isKeyboardDismissDisabled = false,\n isOpen: isOpenProp,\n onOpenChange,\n ...rest\n } = props;\n\n const theme = useTheme();\n const isSSR = useIsSSR();\n\n const classNames = useMemo(\n () => mergeClassNames(drawerClassNames, theme.Drawer, classNamesProp),\n [theme.Drawer, classNamesProp],\n );\n\n // Remove focus when Drawer closes\n const handleOpenChange = useCallback(\n (isOpen: boolean) => {\n if (!isOpen) {\n const focused = isSSR ? null : document.activeElement;\n\n if (\n focused &&\n 'blur' in focused &&\n typeof focused.blur === 'function'\n ) {\n focused.blur();\n }\n }\n\n onOpenChange?.(isOpen);\n },\n [isSSR, onOpenChange],\n );\n\n const state = useOverlayTriggerState({\n defaultOpen,\n isOpen: isOpenProp,\n onOpenChange: handleOpenChange,\n });\n\n const { isOpen, close, open } = state;\n const ref = useRef<HTMLDivElement>(null);\n\n const { overlayProps } = useOverlay(\n {\n isOpen,\n shouldCloseOnBlur,\n isDismissable,\n isKeyboardDismissDisabled,\n onClose: close,\n },\n ref,\n );\n\n // TODO: it may be desirable to disallow focus within the closed Drawer instead\n // If focus forces the Drawer open\n const { focusWithinProps } = useFocusWithin({\n onFocusWithin: open,\n });\n\n const context = useMemo(\n () => ({ ...state, anchor, layoutShift }),\n [state, anchor, layoutShift],\n );\n\n const values = useMemo<\n [\n [typeof DrawerContext, DrawerContextValue],\n [\n typeof DrawerDialogContext,\n ContextValue<DrawerDialogProps, HTMLDivElement>,\n ],\n ]\n >(\n () => [\n [DrawerContext, context],\n [DrawerDialogContext, { classNames }],\n ],\n [context, classNames],\n );\n\n const style = useMemo(\n () =>\n inlineVars(drawerStateVars, {\n anchor,\n layoutShift,\n isOpen,\n }),\n [anchor, layoutShift, isOpen],\n );\n\n const children = useMemo(\n () => callRenderProps(childrenProp, state),\n [childrenProp, state],\n );\n\n return (\n <Provider values={values}>\n <div\n {...mergeProps(overlayProps, focusWithinProps)}\n ref={ref}\n className={classNames?.container}\n style={style}\n >\n <Tabs classNames={classNames?.tabs} {...rest}>\n {children}\n </Tabs>\n </div>\n </Provider>\n );\n}\n\nexport function DrawerTabList<T extends object>(props: DrawerTabListProps<T>) {\n props = useDefaultProps(props, 'DrawerTabList');\n\n const { children, classNames: classNamesProp, variant = 'fill' } = props;\n const { anchor } = useContext(DrawerContext);\n const theme = useTheme();\n\n const classNames = useMemo(\n () => mergeClassNames(drawerClassNames, theme.Drawer, classNamesProp),\n [theme.Drawer, classNamesProp],\n );\n\n const values = useMemo<\n [\n [typeof TooltipContext, ContextValue<TooltipProps, HTMLDivElement>],\n [\n typeof TooltipTargetContext,\n ContextValue<TooltipTargetProps, HTMLDivElement>,\n ],\n ]\n >(\n () => [\n [TooltipContext, { placement: anchor === 'left' ? 'right' : 'left' }],\n [TooltipTargetContext, { focusable: false, relative: 'parent' }],\n ],\n [anchor],\n );\n\n return (\n <Provider values={values}>\n <TabList<T>\n classNames={classNames?.tabs}\n align='center'\n anchor={anchor === 'left' ? 'start' : 'end'}\n orientation='vertical'\n variant={variant}\n >\n {children}\n </TabList>\n </Provider>\n );\n}\n\nexport function DrawerTab(props: DrawerTabProps) {\n props = useDefaultProps(props, 'DrawerTab');\n\n const { children: childrenProp, classNames: classNamesProp, ...rest } = props;\n const { isOpen, open, toggle } = useContext(DrawerContext);\n const theme = useTheme();\n\n const classNames = useMemo(\n () => mergeClassNames(drawerClassNames, theme.Drawer, classNamesProp),\n [theme.Drawer, classNamesProp],\n );\n\n // Must bind to press start (instead of later press events) due to Tab changing selected state on start\n const handlePressStart = useCallback(\n (event: PressEvent) => {\n const { selected } = event.target.parentElement?.dataset ?? {};\n\n if (toBoolean(selected)) {\n toggle();\n } else {\n open();\n }\n },\n [open, toggle],\n );\n\n const children = useCallback(\n (renderProps: TabRenderProps) =>\n callRenderProps(childrenProp, { ...renderProps, isOpen }),\n [childrenProp, isOpen],\n );\n\n return (\n <Tab\n {...rest}\n classNames={classNames?.tabs}\n onPressStart={handlePressStart}\n >\n {children}\n </Tab>\n );\n}\n\nconst defaultMapping: DrawerMapping = {\n heading: {\n child: headings.v4,\n parent: headings.v3,\n },\n back: {\n variant: 'icon',\n },\n close: {\n variant: 'icon',\n },\n};\n\nexport const DrawerDialogContext =\n createContext<ContextValue<DrawerDialogProps, HTMLDivElement>>(null);\n\nexport const DrawerDialog = forwardRef(function DrawerDialog(\n props: DrawerDialogProps,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n [props, ref] = useContextProps(props, ref, DrawerDialogContext);\n\n const {\n children,\n classNames: classNamesProp,\n mapping: mappingProp,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n ...rest\n } = props;\n\n const { close } = useContext(DrawerContext);\n const [backRef, hasBack] = useSlot();\n const [titleRef, hasTitle] = useSlot();\n const theme = useTheme();\n\n const mapping = useMemo(\n () => ({ ...defaultMapping, ...mappingProp }),\n [mappingProp],\n );\n\n const classNames = useMemo(\n () =>\n mergeClassNames(drawerClassNames, theme.Drawer, classNamesProp, {\n header: {\n title: hasBack ? mapping.heading.child : mapping.heading.parent,\n },\n }),\n [theme.Drawer, classNamesProp, hasBack, mapping],\n );\n\n const style = useMemo(\n () =>\n inlineVars(drawerDialogStateVars, {\n isChild: !!hasBack,\n }),\n [hasBack],\n );\n\n const values = useMemo<\n [\n [\n typeof ElementContext,\n ContextValue<\n ElementProps<\n ContextValue<ButtonProps, HTMLButtonElement>,\n ContextValue<HTMLAttributes<HTMLElement>, HTMLHeadingElement>\n >,\n HTMLElement\n >,\n ],\n ]\n >(\n () => [\n [\n ElementContext,\n {\n slots: {\n [DEFAULT_SLOT]: {},\n header: {\n as: 'header',\n className: classNames?.header?.header,\n values: [\n [\n ButtonContext,\n {\n slots: {\n [DEFAULT_SLOT]: {},\n back: {\n ...mapping.back,\n ref: backRef,\n classNames: classNames?.header?.back,\n },\n close: {\n ...mapping.close,\n classNames: classNames?.header?.close,\n onPress: close,\n },\n },\n },\n ],\n [\n AriaHeadingContext,\n {\n slots: {\n title: {\n ref: titleRef,\n className: classNames?.header?.title,\n },\n },\n },\n ],\n ],\n },\n content: { className: classNames?.content },\n footer: { as: 'footer', className: classNames?.footer },\n },\n },\n ],\n ],\n [\n classNames?.header?.header,\n classNames?.header?.back,\n classNames?.header?.close,\n classNames?.header?.title,\n classNames?.content,\n classNames?.footer,\n backRef,\n close,\n mapping,\n titleRef,\n ],\n );\n\n // biome-ignore lint/complexity/useSimplifiedLogicExpression: intentional\n if (!ariaLabel && !ariaLabelledBy && !hasTitle) {\n console.warn(\n 'If a Drawer does not contain a <Heading slot=\"title\">, it must have an aria-label or aria-labelledby attribute for accessibility.',\n );\n }\n\n return (\n <Provider values={values}>\n <div\n {...rest}\n className={classNames?.dialog?.container}\n style={style}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n >\n <div className={classNames?.dialog?.dialog}>{children}</div>\n </div>\n </Provider>\n );\n});\n"]}
|