@accelint/design-toolkit 2.4.3 → 2.6.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/components/accordion/index.d.ts +1 -1
- package/dist/components/accordion/index.js +1 -1
- package/dist/components/accordion/index.js.map +1 -1
- package/dist/components/accordion/styles.d.ts +1 -5
- package/dist/components/accordion/styles.js +1 -1
- package/dist/components/accordion/styles.js.map +1 -1
- package/dist/components/accordion/types.d.ts +9 -10
- package/dist/components/avatar/index.d.ts +4 -2
- package/dist/components/avatar/index.js +1 -1
- package/dist/components/avatar/index.js.map +1 -1
- package/dist/components/avatar/styles.d.ts +16 -15
- package/dist/components/avatar/styles.js +1 -1
- package/dist/components/avatar/styles.js.map +1 -1
- package/dist/components/avatar/types.d.ts +7 -7
- package/dist/components/badge/index.d.ts +3 -2
- package/dist/components/badge/index.js +1 -1
- package/dist/components/badge/index.js.map +1 -1
- package/dist/components/badge/styles.js +1 -1
- package/dist/components/badge/styles.js.map +1 -1
- package/dist/components/badge/types.d.ts +3 -4
- package/dist/components/box/index.js +1 -1
- package/dist/components/box/index.js.map +1 -1
- package/dist/components/button/index.d.ts +6 -4
- package/dist/components/button/index.js +1 -1
- package/dist/components/button/index.js.map +1 -1
- package/dist/components/button/styles.d.ts +25 -24
- package/dist/components/button/styles.js +1 -1
- package/dist/components/button/styles.js.map +1 -1
- package/dist/components/button/types.d.ts +3 -5
- package/dist/components/checkbox/index.js +1 -1
- package/dist/components/checkbox/index.js.map +1 -1
- package/dist/components/checkbox/styles.d.ts +19 -18
- package/dist/components/checkbox/styles.js +1 -1
- package/dist/components/checkbox/styles.js.map +1 -1
- package/dist/components/chip/index.d.ts +4 -2
- package/dist/components/chip/index.js +1 -1
- package/dist/components/chip/index.js.map +1 -1
- package/dist/components/chip/styles.d.ts +70 -69
- package/dist/components/chip/styles.js +1 -1
- package/dist/components/chip/styles.js.map +1 -1
- package/dist/components/chip/types.d.ts +5 -5
- package/dist/components/classification-badge/index.d.ts +3 -2
- package/dist/components/classification-badge/index.js +1 -1
- package/dist/components/classification-badge/index.js.map +1 -1
- package/dist/components/classification-badge/styles.js +1 -1
- package/dist/components/classification-badge/styles.js.map +1 -1
- package/dist/components/classification-badge/types.d.ts +3 -4
- package/dist/components/classification-banner/index.d.ts +3 -2
- package/dist/components/classification-banner/index.js +1 -1
- package/dist/components/classification-banner/index.js.map +1 -1
- package/dist/components/classification-banner/styles.js +1 -1
- package/dist/components/classification-banner/styles.js.map +1 -1
- package/dist/components/classification-banner/types.d.ts +3 -4
- package/dist/components/color-picker/index.d.ts +45 -15
- package/dist/components/color-picker/index.js +1 -1
- package/dist/components/color-picker/index.js.map +1 -1
- package/dist/components/color-picker/styles.d.ts +42 -0
- package/dist/components/color-picker/styles.js +2 -0
- package/dist/components/color-picker/styles.js.map +1 -0
- package/dist/components/color-picker/types.d.ts +13 -0
- package/dist/components/color-picker/types.js +2 -0
- package/dist/components/color-picker/types.js.map +1 -0
- package/dist/components/combobox-field/index.d.ts +18 -0
- package/dist/components/combobox-field/index.js +2 -0
- package/dist/components/combobox-field/index.js.map +1 -0
- package/dist/components/combobox-field/styles.d.ts +72 -0
- package/dist/components/combobox-field/styles.js +2 -0
- package/dist/components/combobox-field/styles.js.map +1 -0
- package/dist/components/combobox-field/types.d.ts +28 -0
- package/dist/components/combobox-field/types.js +2 -0
- package/dist/components/combobox-field/types.js.map +1 -0
- package/dist/components/date-field/index.d.ts +8 -24
- package/dist/components/date-field/index.js +1 -1
- package/dist/components/date-field/index.js.map +1 -1
- package/dist/components/date-field/styles.d.ts +69 -0
- package/dist/components/date-field/styles.js +2 -0
- package/dist/components/date-field/styles.js.map +1 -0
- package/dist/components/date-field/types.d.ts +29 -0
- package/dist/components/date-field/types.js +2 -0
- package/dist/components/date-field/types.js.map +1 -0
- package/dist/components/details-list/index.d.ts +59 -0
- package/dist/components/details-list/index.js +2 -0
- package/dist/components/details-list/index.js.map +1 -0
- package/dist/components/details-list/styles.d.ts +65 -0
- package/dist/components/details-list/styles.js +2 -0
- package/dist/components/details-list/styles.js.map +1 -0
- package/dist/components/details-list/types.d.ts +16 -0
- package/dist/components/details-list/types.js +2 -0
- package/dist/components/details-list/types.js.map +1 -0
- package/dist/components/dialog/index.d.ts +1 -0
- package/dist/components/dialog/index.js +1 -1
- package/dist/components/dialog/index.js.map +1 -1
- package/dist/components/drawer/context.d.ts +13 -0
- package/dist/components/drawer/context.js +2 -0
- package/dist/components/drawer/context.js.map +1 -0
- package/dist/components/drawer/index.d.ts +48 -0
- package/dist/components/drawer/index.js +2 -0
- package/dist/components/drawer/index.js.map +1 -0
- package/dist/components/drawer/state.d.ts +26 -0
- package/dist/components/drawer/state.js +2 -0
- package/dist/components/drawer/state.js.map +1 -0
- package/dist/components/drawer/styles.d.ts +118 -0
- package/dist/components/drawer/styles.js +2 -0
- package/dist/components/drawer/styles.js.map +1 -0
- package/dist/components/drawer/types.d.ts +279 -0
- package/dist/components/drawer/types.js +2 -0
- package/dist/components/drawer/types.js.map +1 -0
- package/dist/components/hero/index.d.ts +45 -0
- package/dist/components/hero/index.js +2 -0
- package/dist/components/hero/index.js.map +1 -0
- package/dist/components/hero/styles.d.ts +48 -0
- package/dist/components/hero/styles.js +2 -0
- package/dist/components/hero/styles.js.map +1 -0
- package/dist/components/hero/types.d.ts +13 -0
- package/dist/components/hero/types.js +2 -0
- package/dist/components/hero/types.js.map +1 -0
- package/dist/components/hotkey/index.d.ts +25 -0
- package/dist/components/hotkey/index.js +2 -0
- package/dist/components/hotkey/index.js.map +1 -0
- package/dist/components/hotkey/styles.d.ts +53 -0
- package/dist/components/hotkey/styles.js +2 -0
- package/dist/components/hotkey/styles.js.map +1 -0
- package/dist/components/hotkey/types.d.ts +8 -0
- package/dist/components/hotkey/types.js +2 -0
- package/dist/components/hotkey/types.js.map +1 -0
- package/dist/components/icon/index.d.ts +3 -2
- package/dist/components/icon/index.js +1 -1
- package/dist/components/icon/index.js.map +1 -1
- package/dist/components/icon/styles.js +1 -1
- package/dist/components/icon/styles.js.map +1 -1
- package/dist/components/icon/types.d.ts +4 -5
- package/dist/components/input/index.d.ts +1 -0
- package/dist/components/input/index.js +1 -1
- package/dist/components/input/index.js.map +1 -1
- package/dist/components/input/styles.d.ts +2 -24
- package/dist/components/input/styles.js +1 -1
- package/dist/components/input/styles.js.map +1 -1
- package/dist/components/input/types.d.ts +1 -0
- package/dist/components/label/index.d.ts +3 -2
- package/dist/components/label/index.js +1 -1
- package/dist/components/label/index.js.map +1 -1
- package/dist/components/label/styles.js +1 -1
- package/dist/components/label/styles.js.map +1 -1
- package/dist/components/label/types.d.ts +2 -3
- package/dist/components/menu/index.d.ts +16 -21
- package/dist/components/menu/index.js +1 -1
- package/dist/components/menu/index.js.map +1 -1
- package/dist/components/menu/styles.d.ts +9 -6
- package/dist/components/menu/styles.js +1 -1
- package/dist/components/menu/styles.js.map +1 -1
- package/dist/components/menu/types.d.ts +9 -2
- package/dist/components/options/index.d.ts +28 -22
- package/dist/components/options/index.js +1 -1
- package/dist/components/options/index.js.map +1 -1
- package/dist/components/options/styles.d.ts +72 -0
- package/dist/components/options/styles.js +2 -0
- package/dist/components/options/styles.js.map +1 -0
- package/dist/components/options/types.d.ts +29 -0
- package/dist/components/options/types.js +2 -0
- package/dist/components/options/types.js.map +1 -0
- package/dist/components/popover/index.js +1 -1
- package/dist/components/popover/index.js.map +1 -1
- package/dist/components/popover/styles.d.ts +16 -15
- package/dist/components/popover/styles.js +1 -1
- package/dist/components/popover/styles.js.map +1 -1
- package/dist/components/query-builder/action-element.js +1 -1
- package/dist/components/query-builder/action-element.js.map +1 -1
- package/dist/components/query-builder/constants.js +1 -1
- package/dist/components/query-builder/constants.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/index.d.ts +5 -20
- package/dist/components/query-builder/index.js +1 -1
- package/dist/components/query-builder/index.js.map +1 -1
- package/dist/components/query-builder/rule.js +1 -1
- package/dist/components/query-builder/rule.js.map +1 -1
- package/dist/components/query-builder/types.d.ts +22 -0
- package/dist/components/query-builder/types.js +2 -0
- package/dist/components/query-builder/types.js.map +1 -0
- package/dist/components/query-builder/utils.js +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 +1 -1
- package/dist/components/query-builder/value-selector.js.map +1 -1
- package/dist/components/radio/index.js +1 -1
- package/dist/components/radio/index.js.map +1 -1
- package/dist/components/radio/styles.d.ts +19 -18
- package/dist/components/radio/styles.js +1 -1
- package/dist/components/radio/styles.js.map +1 -1
- package/dist/components/radio/types.d.ts +2 -3
- package/dist/components/search-field/index.d.ts +56 -15
- package/dist/components/search-field/index.js +1 -1
- package/dist/components/search-field/index.js.map +1 -1
- package/dist/components/search-field/styles.d.ts +53 -0
- package/dist/components/search-field/styles.js +2 -0
- package/dist/components/search-field/styles.js.map +1 -0
- package/dist/components/search-field/types.d.ts +25 -0
- package/dist/components/search-field/types.js +2 -0
- package/dist/components/search-field/types.js.map +1 -0
- package/dist/components/select-field/index.d.ts +23 -0
- package/dist/components/select-field/index.js +2 -0
- package/dist/components/select-field/index.js.map +1 -0
- package/dist/components/select-field/styles.d.ts +60 -0
- package/dist/components/select-field/styles.js +2 -0
- package/dist/components/select-field/styles.js.map +1 -0
- package/dist/components/select-field/types.d.ts +26 -0
- package/dist/components/select-field/types.js +2 -0
- package/dist/components/select-field/types.js.map +1 -0
- package/dist/components/skeleton/index.d.ts +42 -0
- package/dist/components/skeleton/index.js +2 -0
- package/dist/components/skeleton/index.js.map +1 -0
- package/dist/components/skeleton/styles.d.ts +23 -0
- package/dist/components/skeleton/styles.js +2 -0
- package/dist/components/skeleton/styles.js.map +1 -0
- package/dist/components/skeleton/types.d.ts +8 -0
- package/dist/components/skeleton/types.js +2 -0
- package/dist/components/skeleton/types.js.map +1 -0
- package/dist/components/slider/index.js +1 -1
- package/dist/components/slider/index.js.map +1 -1
- package/dist/components/switch/index.d.ts +3 -2
- package/dist/components/switch/index.js +1 -1
- package/dist/components/switch/index.js.map +1 -1
- package/dist/components/switch/styles.d.ts +13 -12
- package/dist/components/switch/styles.js +1 -1
- package/dist/components/switch/styles.js.map +1 -1
- package/dist/components/switch/types.d.ts +2 -3
- package/dist/components/tabs/index.js +1 -1
- package/dist/components/tabs/index.js.map +1 -1
- package/dist/components/text-area-field/index.d.ts +4 -3
- package/dist/components/text-area-field/index.js +1 -1
- package/dist/components/text-area-field/index.js.map +1 -1
- package/dist/components/text-area-field/styles.d.ts +19 -18
- package/dist/components/text-area-field/styles.js +1 -1
- package/dist/components/text-area-field/styles.js.map +1 -1
- package/dist/components/text-area-field/types.d.ts +2 -3
- package/dist/components/text-field/index.d.ts +4 -2
- package/dist/components/text-field/index.js +1 -1
- package/dist/components/text-field/index.js.map +1 -1
- package/dist/components/text-field/styles.d.ts +19 -18
- package/dist/components/text-field/styles.js +1 -1
- package/dist/components/text-field/styles.js.map +1 -1
- package/dist/components/text-field/types.d.ts +4 -4
- package/dist/components/tooltip/index.d.ts +14 -28
- package/dist/components/tooltip/index.js +1 -1
- package/dist/components/tooltip/index.js.map +1 -1
- package/dist/components/tooltip/styles.d.ts +5 -0
- package/dist/components/tooltip/styles.js +2 -0
- package/dist/components/tooltip/styles.js.map +1 -0
- package/dist/components/tooltip/types.d.ts +8 -0
- package/dist/components/tooltip/types.js +2 -0
- package/dist/components/tooltip/types.js.map +1 -0
- package/dist/components/view-stack/index.d.ts +28 -0
- package/dist/components/view-stack/index.js +2 -0
- package/dist/components/view-stack/index.js.map +1 -0
- package/dist/components/view-stack/types.d.ts +58 -0
- package/dist/components/view-stack/types.js +2 -0
- package/dist/components/view-stack/types.js.map +1 -0
- package/dist/icons/catalog.js +1 -1
- package/dist/index.css +20 -0
- package/dist/index.d.ts +60 -27
- package/dist/index.js +1 -1
- package/dist/lib/react.d.ts +13 -12
- package/dist/lib/react.js +4 -4
- package/dist/lib/react.js.map +1 -1
- package/dist/lib/types.d.ts +6 -2
- package/dist/lib/utils.js +1 -1
- package/dist/lib/utils.js.map +1 -1
- package/dist/metafile-esm.json +1 -1
- package/dist/styles.css +1476 -321
- package/dist/tokens/index.js +1 -1
- package/dist/tokens/index.js.map +1 -1
- package/dist/variants/variants.css +6 -0
- package/package.json +84 -56
- package/dist/components/combobox/index.d.ts +0 -32
- package/dist/components/combobox/index.js +0 -2
- package/dist/components/combobox/index.js.map +0 -1
- package/dist/components/options-item/index.d.ts +0 -30
- package/dist/components/options-item/index.js +0 -2
- package/dist/components/options-item/index.js.map +0 -1
- package/dist/components/query-builder/example-configuration.d.ts +0 -30
- package/dist/components/query-builder/example-configuration.js +0 -2
- package/dist/components/query-builder/example-configuration.js.map +0 -1
@@ -0,0 +1,65 @@
|
|
1
|
+
import * as tailwind_variants from 'tailwind-variants';
|
2
|
+
|
3
|
+
declare const DetailsListStylesDefaults: {
|
4
|
+
readonly align: "justify";
|
5
|
+
};
|
6
|
+
declare const DetailsListStyles: tailwind_variants.TVReturnType<{
|
7
|
+
align: {
|
8
|
+
left: {
|
9
|
+
label: string;
|
10
|
+
value: string;
|
11
|
+
};
|
12
|
+
center: {
|
13
|
+
label: string;
|
14
|
+
value: string;
|
15
|
+
};
|
16
|
+
justify: {
|
17
|
+
label: string;
|
18
|
+
value: string;
|
19
|
+
};
|
20
|
+
};
|
21
|
+
}, {
|
22
|
+
list: string;
|
23
|
+
label: string;
|
24
|
+
value: string;
|
25
|
+
}, undefined, {
|
26
|
+
align: {
|
27
|
+
left: {
|
28
|
+
label: string;
|
29
|
+
value: string;
|
30
|
+
};
|
31
|
+
center: {
|
32
|
+
label: string;
|
33
|
+
value: string;
|
34
|
+
};
|
35
|
+
justify: {
|
36
|
+
label: string;
|
37
|
+
value: string;
|
38
|
+
};
|
39
|
+
};
|
40
|
+
}, {
|
41
|
+
list: string;
|
42
|
+
label: string;
|
43
|
+
value: string;
|
44
|
+
}, tailwind_variants.TVReturnType<{
|
45
|
+
align: {
|
46
|
+
left: {
|
47
|
+
label: string;
|
48
|
+
value: string;
|
49
|
+
};
|
50
|
+
center: {
|
51
|
+
label: string;
|
52
|
+
value: string;
|
53
|
+
};
|
54
|
+
justify: {
|
55
|
+
label: string;
|
56
|
+
value: string;
|
57
|
+
};
|
58
|
+
};
|
59
|
+
}, {
|
60
|
+
list: string;
|
61
|
+
label: string;
|
62
|
+
value: string;
|
63
|
+
}, undefined, unknown, unknown, undefined>>;
|
64
|
+
|
65
|
+
export { DetailsListStyles, DetailsListStylesDefaults };
|
@@ -0,0 +1,2 @@
|
|
1
|
+
import {tv}from'./../../lib/utils.js';const l={align:"justify"},a=tv({slots:{list:"grid grid-cols-[auto_1fr] gap-x-m font-display text-body-m",label:"fg-default-dark col-start-1",value:"fg-default-light col-start-2"},variants:{align:{left:{label:"text-left",value:"text-left"},center:{label:"text-right",value:"text-left"},justify:{label:"text-left",value:"text-right"}}},defaultVariants:l});export{a as DetailsListStyles,l as DetailsListStylesDefaults};//# sourceMappingURL=styles.js.map
|
2
|
+
//# sourceMappingURL=styles.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../src/components/details-list/styles.ts"],"names":["t"],"mappings":"sCAeS,MAAA,CAAA,CAAA,CAAA,KACT,CAAA,SAGE,CAAA,CAAA,CAAO,CACLA,EAAA,CAAA,CAAA,KAAM,CAAA,CAAA,IAAA,CAAA,4DACC,CAAA,KAAA,CAAA,6BACA,CAAA,KAAA,CAAA,8BAET,CAAU,CACR,eACU,CAAA,CAAA,uBAA2B,CAAA,KAAA,CAAA,WACzB,CAAA,CAAA,MAAO,CAAA,CAAA,KAAA,CAAA,YAAqB,CAAA,KAAA,CAAA,WAC7B,CAAE,CAAA,OAAO,CAAA,CAAA,KAAA,CAAA,WAAoB,CAAA,KAAA,CAAA,YAG1C,CAAA,CAAA,CAAA,CAAA,eACD,CAAA,CAAA,CAAA","file":"styles.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 { tv } from '@/lib/utils';\n\nexport const DetailsListStylesDefaults = {\n align: 'justify',\n} as const;\n\nexport const DetailsListStyles = tv({\n slots: {\n list: 'grid grid-cols-[auto_1fr] gap-x-m font-display text-body-m',\n label: 'fg-default-dark col-start-1',\n value: 'fg-default-light col-start-2',\n },\n variants: {\n align: {\n left: { label: 'text-left', value: 'text-left' },\n center: { label: 'text-right', value: 'text-left' },\n justify: { label: 'text-left', value: 'text-right' },\n },\n },\n defaultVariants: DetailsListStylesDefaults,\n});\n"]}
|
@@ -0,0 +1,16 @@
|
|
1
|
+
import { ComponentPropsWithRef, RefAttributes } from 'react';
|
2
|
+
import { TextProps } from 'react-aria-components';
|
3
|
+
import { VariantProps } from 'tailwind-variants';
|
4
|
+
import { DetailsListStyles } from './styles.js';
|
5
|
+
|
6
|
+
type DetailsListProps = Omit<ComponentPropsWithRef<'dl'>, 'className'> & VariantProps<typeof DetailsListStyles> & {
|
7
|
+
classNames?: {
|
8
|
+
list?: string;
|
9
|
+
label?: string;
|
10
|
+
value?: string;
|
11
|
+
};
|
12
|
+
};
|
13
|
+
type DetailsListLabelProps = Omit<TextProps, 'elementType'> & RefAttributes<HTMLElement>;
|
14
|
+
type DetailsListValueProps = Omit<TextProps, 'elementType'> & RefAttributes<HTMLElement>;
|
15
|
+
|
16
|
+
export type { DetailsListLabelProps, DetailsListProps, DetailsListValueProps };
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"types.js"}
|
@@ -5,6 +5,7 @@ import { DialogTriggerProps, DialogRenderProps } from 'react-aria-components';
|
|
5
5
|
import { ButtonProps } from '../button/types.js';
|
6
6
|
import 'tailwind-variants';
|
7
7
|
import '../button/styles.js';
|
8
|
+
import 'tailwind-merge';
|
8
9
|
|
9
10
|
type DialogSize = 'sm' | 'lg';
|
10
11
|
interface DialogProps extends DialogTriggerProps {
|
@@ -1,2 +1,2 @@
|
|
1
|
-
import {cn}from'./../../lib/utils.js';import {useIsSSR}from'@react-aria/ssr';import'client-only';import {cva}from'
|
1
|
+
import {jsx}from'react/jsx-runtime';import {cn}from'./../../lib/utils.js';import {useIsSSR}from'@react-aria/ssr';import'client-only';import {cva}from'class-variance-authority';import {createContext,forwardRef,useState,useEffect,useContext}from'react';import {ModalOverlay,Modal,Dialog,DialogTrigger,Heading}from'react-aria-components';import {Button}from'../button/index.js';const M=cva("flex flex-col align-end font-light text-body-m text-default-dark",{variants:{size:{sm:"min-w-[280px] max-w-[280px] rounded-medium p-l",lg:"min-w-[320px] max-w-[720px] rounded-large p-xl"},defaultVariants:{size:"sm"}}}),E={sm:"small",lg:"medium"},b=createContext({size:"sm"}),r=()=>{const e=useContext(b);if(!e)throw new Error("Dialog components must be used within <Dialog>");return e},l=({children:e,size:t,isOpen:o,onOpenChange:i,isDismissable:a=true,isKeyboardDismissDisabled:m=true,parentRef:p})=>jsx(DialogTrigger,{children:jsx(b.Provider,{value:{size:t??"sm",isDismissable:a,isOpen:o,onOpenChange:i,parentRef:p,isKeyboardDismissDisabled:m},children:e})});l.displayName="Dialog";const x=forwardRef(({children:e,...t},o)=>{const{size:i,isDismissable:a,isOpen:m,onOpenChange:p,parentRef:c,isKeyboardDismissDisabled:y}=r(),d=useIsSSR(),[u,D]=useState(d?null:document.body);return useEffect(()=>{const f=c?.current,g=d?null:document.createElement("div");return f&&g&&(f.appendChild(g),D(g)),()=>{g?.remove(),D(d?null:document.body);}},[d,c]),u?jsx(ModalOverlay,{UNSTABLE_portalContainer:u,isKeyboardDismissDisabled:!a&&y,isOpen:m,onOpenChange:p,isDismissable:a,className:"absolute inset-0 flex items-center justify-center",...t,children:jsx(Modal,{ref:o,className:cn("flex flex-col justify-center bg-surface-overlay align-start",i==="sm"&&"rounded-medium",i==="lg"&&"rounded-large"),children:jsx(Dialog,{className:M({size:i}),children:e})})}):null});x.displayName="DialogBody";const H=({children:e,className:t})=>{const{size:o}=r();return jsx("div",{className:cn("flex flex-col",o==="sm"&&"gap-xs",o==="lg"&&"gap-l",t),children:e})},j=({children:e,className:t})=>{const{size:o}=r();return jsx(Heading,{slot:"title",className:cn("text-default-light",o==="sm"&&"mb-s text-header-m",o==="lg"&&"mb-m text-header-l",t),children:e})},K=({children:e,className:t,...o})=>{const{size:i}=r(),a=E[i];return jsx(Button,{size:a,...o,className:cn("pressed:bg-initial",t),children:e})},L=({children:e,className:t})=>{const{size:o}=r();return jsx("div",{className:cn("flex justify-end gap-xs",o==="sm"&&"mt-l",o==="lg"&&"mt-xl",t),children:e})};l.Button=K,l.Content=H,l.Footer=L,l.Title=j,l.Body=x;export{l as Dialog,j as DialogTitle};//# sourceMappingURL=index.js.map
|
2
2
|
//# sourceMappingURL=index.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/components/dialog/index.tsx"],"names":["h","useDialogContext","useContext","DialogContext","z","ctx","size","isOpen","RACDialogTrigger","s","B","Dialog","forwardRef","v","ref","isSSR","useIsSSR","portal","setPortal","C","useState","N","useEffect","parentRef","port","node","jsx","RACModalOverlay","n","O","DialogBody","className","S","buttonSize","buttonSizes","dialogSize","DialogButton","DialogContent","DialogFooter","DialogTitle"],"mappings":"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","file":"index.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\n'use client';\nimport { cn } from '@/lib/utils';\nimport { useIsSSR } from '@react-aria/ssr';\nimport 'client-only';\nimport { cva } from 'cva';\nimport {\n type PropsWithChildren,\n type ReactNode,\n type RefObject,\n createContext,\n forwardRef,\n useContext,\n useEffect,\n useState,\n} from 'react';\nimport {\n type DialogRenderProps,\n type DialogTriggerProps,\n Dialog as RACDialog,\n DialogTrigger as RACDialogTrigger,\n Heading as RACHeading,\n Modal as RACModal,\n ModalOverlay as RACModalOverlay,\n} from 'react-aria-components';\nimport { Button } from '../button';\nimport type { ButtonProps } from '../button/types';\n\nconst dialogClasses = cva(\n 'flex flex-col align-end font-light text-body-m text-default-dark',\n {\n variants: {\n size: {\n sm: 'min-w-[280px] max-w-[280px] rounded-medium p-l',\n lg: 'min-w-[320px] max-w-[720px] rounded-large p-xl',\n },\n defaultVariants: {\n size: 'sm',\n },\n },\n },\n);\n\nconst buttonSizes: Record<string, ButtonProps['size']> = {\n sm: 'small',\n lg: 'medium',\n};\n\ntype DialogSize = 'sm' | 'lg';\n\ninterface DialogContextValue {\n size: DialogSize;\n isDismissable?: boolean;\n isKeyboardDismissDisabled?: boolean;\n isOpen?: boolean;\n onOpenChange?: (isOpen: boolean) => void;\n parentRef?: RefObject<HTMLElement | null>;\n}\n\nconst DialogContext = createContext<DialogContextValue>({ size: 'sm' });\n\nconst useDialogContext = () => {\n const ctx = useContext(DialogContext);\n if (!ctx) {\n throw new Error('Dialog components must be used within <Dialog>');\n }\n return ctx;\n};\n\nexport interface DialogProps extends DialogTriggerProps {\n size?: DialogSize;\n isDismissable?: boolean;\n isKeyboardDismissDisabled?: boolean;\n isOpen?: boolean;\n onOpenChange?: (isOpen: boolean) => void;\n parentRef?: RefObject<HTMLElement | null>;\n}\n\nexport const Dialog = ({\n children,\n size,\n isOpen,\n onOpenChange,\n isDismissable = true,\n isKeyboardDismissDisabled = true,\n parentRef,\n}: DialogProps) => {\n return (\n <RACDialogTrigger>\n <DialogContext.Provider\n value={{\n size: size ?? 'sm',\n isDismissable,\n isOpen,\n onOpenChange,\n parentRef,\n isKeyboardDismissDisabled,\n }}\n >\n {children}\n </DialogContext.Provider>\n </RACDialogTrigger>\n );\n};\nDialog.displayName = 'Dialog';\n\ninterface DialogBodyProps {\n children: ReactNode | ReactNode[] | ((opts: DialogRenderProps) => ReactNode);\n}\n\nconst DialogBody = forwardRef<HTMLDivElement, DialogBodyProps>(\n ({ children, ...rest }, ref) => {\n const {\n size,\n isDismissable,\n isOpen,\n onOpenChange,\n parentRef,\n isKeyboardDismissDisabled,\n } = useDialogContext();\n const isSSR = useIsSSR();\n const [portal, setPortal] = useState(isSSR ? null : document.body);\n\n useEffect(() => {\n const node = parentRef?.current;\n /* Ensure proper ssr hydration TODO */\n const port = isSSR ? null : document.createElement('div');\n\n if (node && port) {\n node.appendChild(port);\n setPortal(port);\n }\n\n return () => {\n port?.remove();\n\n setPortal(isSSR ? null : document.body);\n };\n }, [isSSR, parentRef]);\n\n return portal ? (\n <RACModalOverlay\n UNSTABLE_portalContainer={portal}\n isKeyboardDismissDisabled={!isDismissable && isKeyboardDismissDisabled}\n isOpen={isOpen}\n onOpenChange={onOpenChange}\n isDismissable={isDismissable}\n className='absolute inset-0 flex items-center justify-center'\n {...rest}\n >\n <RACModal\n ref={ref}\n className={cn(\n 'flex flex-col justify-center bg-surface-overlay align-start',\n size === 'sm' && 'rounded-medium',\n size === 'lg' && 'rounded-large',\n )}\n >\n <RACDialog className={dialogClasses({ size })}>{children}</RACDialog>\n </RACModal>\n </RACModalOverlay>\n ) : null;\n },\n);\nDialogBody.displayName = 'DialogBody';\n\nconst DialogContent = ({\n children,\n className,\n}: PropsWithChildren<{ className?: string }>) => {\n const { size } = useDialogContext();\n return (\n <div\n className={cn(\n 'flex flex-col',\n size === 'sm' && 'gap-xs',\n size === 'lg' && 'gap-l',\n className,\n )}\n >\n {children}\n </div>\n );\n};\n\nexport const DialogTitle = ({\n children,\n className,\n}: PropsWithChildren<{ className?: string }>) => {\n const { size } = useDialogContext();\n return (\n <RACHeading\n slot='title'\n className={cn(\n 'text-default-light',\n size === 'sm' && 'mb-s text-header-m',\n size === 'lg' && 'mb-m text-header-l',\n className,\n )}\n >\n {children}\n </RACHeading>\n );\n};\n\nconst DialogButton = ({ children, className, ...props }: ButtonProps) => {\n const { size: dialogSize } = useDialogContext();\n const buttonSize = buttonSizes[dialogSize];\n return (\n <Button\n size={buttonSize}\n {...props}\n //overriding the style to deal with rac's pressed state inherited\n //from the trigger state\n className={cn('pressed:bg-initial', className)}\n >\n {children}\n </Button>\n );\n};\n\nconst DialogFooter = ({\n children,\n className,\n}: PropsWithChildren<{ className?: string }>) => {\n const { size } = useDialogContext();\n return (\n <div\n className={cn(\n 'flex justify-end gap-xs',\n size === 'sm' && 'mt-l',\n size === 'lg' && 'mt-xl',\n className,\n )}\n >\n {children}\n </div>\n );\n};\n\nDialog.Button = DialogButton;\nDialog.Content = DialogContent;\nDialog.Footer = DialogFooter;\nDialog.Title = DialogTitle;\nDialog.Body = DialogBody;\n"]}
|
1
|
+
{"version":3,"sources":["../../../src/components/dialog/index.tsx"],"names":["useDialogContext","h","ctx","DialogContext","z","size","jsx","RACDialogTrigger","s","isDismissable","Dialog","rest","v","ref","useState","isSSR","N","node","P","port","setPortal","parentRef","RACModalOverlay","cn","n","O","children","DialogContent","S","dialogSize","buttonSize","buttonSizes","Button","w","DialogFooter","DialogTitle","DialogBody"],"mappings":"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","file":"index.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\n'use client';\nimport { cn } from '@/lib/utils';\nimport { useIsSSR } from '@react-aria/ssr';\nimport 'client-only';\nimport { cva } from 'class-variance-authority';\nimport {\n type PropsWithChildren,\n type ReactNode,\n type RefObject,\n createContext,\n forwardRef,\n useContext,\n useEffect,\n useState,\n} from 'react';\nimport {\n type DialogRenderProps,\n type DialogTriggerProps,\n Dialog as RACDialog,\n DialogTrigger as RACDialogTrigger,\n Heading as RACHeading,\n Modal as RACModal,\n ModalOverlay as RACModalOverlay,\n} from 'react-aria-components';\nimport { Button } from '../button';\nimport type { ButtonProps } from '../button/types';\n\nconst dialogClasses = cva(\n 'flex flex-col align-end font-light text-body-m text-default-dark',\n {\n variants: {\n size: {\n sm: 'min-w-[280px] max-w-[280px] rounded-medium p-l',\n lg: 'min-w-[320px] max-w-[720px] rounded-large p-xl',\n },\n defaultVariants: {\n size: 'sm',\n },\n },\n },\n);\n\nconst buttonSizes: Record<string, ButtonProps['size']> = {\n sm: 'small',\n lg: 'medium',\n};\n\ntype DialogSize = 'sm' | 'lg';\n\ninterface DialogContextValue {\n size: DialogSize;\n isDismissable?: boolean;\n isKeyboardDismissDisabled?: boolean;\n isOpen?: boolean;\n onOpenChange?: (isOpen: boolean) => void;\n parentRef?: RefObject<HTMLElement | null>;\n}\n\nconst DialogContext = createContext<DialogContextValue>({ size: 'sm' });\n\nconst useDialogContext = () => {\n const ctx = useContext(DialogContext);\n if (!ctx) {\n throw new Error('Dialog components must be used within <Dialog>');\n }\n return ctx;\n};\n\nexport interface DialogProps extends DialogTriggerProps {\n size?: DialogSize;\n isDismissable?: boolean;\n isKeyboardDismissDisabled?: boolean;\n isOpen?: boolean;\n onOpenChange?: (isOpen: boolean) => void;\n parentRef?: RefObject<HTMLElement | null>;\n}\n\nexport const Dialog = ({\n children,\n size,\n isOpen,\n onOpenChange,\n isDismissable = true,\n isKeyboardDismissDisabled = true,\n parentRef,\n}: DialogProps) => {\n return (\n <RACDialogTrigger>\n <DialogContext.Provider\n value={{\n size: size ?? 'sm',\n isDismissable,\n isOpen,\n onOpenChange,\n parentRef,\n isKeyboardDismissDisabled,\n }}\n >\n {children}\n </DialogContext.Provider>\n </RACDialogTrigger>\n );\n};\nDialog.displayName = 'Dialog';\n\ninterface DialogBodyProps {\n children: ReactNode | ReactNode[] | ((opts: DialogRenderProps) => ReactNode);\n}\n\nconst DialogBody = forwardRef<HTMLDivElement, DialogBodyProps>(\n ({ children, ...rest }, ref) => {\n const {\n size,\n isDismissable,\n isOpen,\n onOpenChange,\n parentRef,\n isKeyboardDismissDisabled,\n } = useDialogContext();\n const isSSR = useIsSSR();\n const [portal, setPortal] = useState(isSSR ? null : document.body);\n\n useEffect(() => {\n const node = parentRef?.current;\n /* Ensure proper ssr hydration TODO */\n const port = isSSR ? null : document.createElement('div');\n\n if (node && port) {\n node.appendChild(port);\n setPortal(port);\n }\n\n return () => {\n port?.remove();\n\n setPortal(isSSR ? null : document.body);\n };\n }, [isSSR, parentRef]);\n\n return portal ? (\n <RACModalOverlay\n UNSTABLE_portalContainer={portal}\n isKeyboardDismissDisabled={!isDismissable && isKeyboardDismissDisabled}\n isOpen={isOpen}\n onOpenChange={onOpenChange}\n isDismissable={isDismissable}\n className='absolute inset-0 flex items-center justify-center'\n {...rest}\n >\n <RACModal\n ref={ref}\n className={cn(\n 'flex flex-col justify-center bg-surface-overlay align-start',\n size === 'sm' && 'rounded-medium',\n size === 'lg' && 'rounded-large',\n )}\n >\n <RACDialog className={dialogClasses({ size })}>{children}</RACDialog>\n </RACModal>\n </RACModalOverlay>\n ) : null;\n },\n);\nDialogBody.displayName = 'DialogBody';\n\nconst DialogContent = ({\n children,\n className,\n}: PropsWithChildren<{ className?: string }>) => {\n const { size } = useDialogContext();\n return (\n <div\n className={cn(\n 'flex flex-col',\n size === 'sm' && 'gap-xs',\n size === 'lg' && 'gap-l',\n className,\n )}\n >\n {children}\n </div>\n );\n};\n\nexport const DialogTitle = ({\n children,\n className,\n}: PropsWithChildren<{ className?: string }>) => {\n const { size } = useDialogContext();\n return (\n <RACHeading\n slot='title'\n className={cn(\n 'text-default-light',\n size === 'sm' && 'mb-s text-header-m',\n size === 'lg' && 'mb-m text-header-l',\n className,\n )}\n >\n {children}\n </RACHeading>\n );\n};\n\nconst DialogButton = ({ children, className, ...props }: ButtonProps) => {\n const { size: dialogSize } = useDialogContext();\n const buttonSize = buttonSizes[dialogSize];\n return (\n <Button\n size={buttonSize}\n {...props}\n //overriding the style to deal with rac's pressed state inherited\n //from the trigger state\n className={cn('pressed:bg-initial', className)}\n >\n {children}\n </Button>\n );\n};\n\nconst DialogFooter = ({\n children,\n className,\n}: PropsWithChildren<{ className?: string }>) => {\n const { size } = useDialogContext();\n return (\n <div\n className={cn(\n 'flex justify-end gap-xs',\n size === 'sm' && 'mt-l',\n size === 'lg' && 'mt-xl',\n className,\n )}\n >\n {children}\n </div>\n );\n};\n\nDialog.Button = DialogButton;\nDialog.Content = DialogContent;\nDialog.Footer = DialogFooter;\nDialog.Title = DialogTitle;\nDialog.Body = DialogBody;\n"]}
|
@@ -0,0 +1,13 @@
|
|
1
|
+
import * as react from 'react';
|
2
|
+
import { DrawerContextValue, DrawersContextValue, DrawerState } from './types.js';
|
3
|
+
import { Key } from '@react-types/shared';
|
4
|
+
|
5
|
+
declare const DrawersContext: react.Context<DrawersContextValue | null>;
|
6
|
+
declare const DrawerContext: react.Context<DrawerContextValue | null>;
|
7
|
+
declare function useDrawerContext(): DrawerContextValue;
|
8
|
+
declare function useDrawersContext(): DrawersContextValue;
|
9
|
+
declare function useDrawersState(opts?: {
|
10
|
+
onStateChange?: (drawerId: Key, state: DrawerState) => void;
|
11
|
+
}): DrawersContextValue;
|
12
|
+
|
13
|
+
export { DrawerContext, DrawersContext, useDrawerContext, useDrawersContext, useDrawersState };
|
@@ -0,0 +1,2 @@
|
|
1
|
+
import {createContext,useContext,useState,useCallback,useMemo}from'react';import {createDefaultDrawerState,drawerStateReducer}from'./state.js';import {DrawerDefaults}from'./types.js';const g=createContext(null),b=createContext(null);function v(){const n=useContext(b);if(!n)throw new Error("useDrawerContext must be used within <Drawer.Provider>");return n}function A(){const n=useContext(g);if(!n)throw new Error("useDrawersContext must be used within <Drawer.Provider>");return n}function G(n){const[s,l]=useState({}),[w,I]=useState({}),D=useCallback((e,t)=>{const r=w[e];r&&(r.onOpenChange?.(t.isOpen),r.onStateChange?.(t)),n?.onStateChange?.(e,t);},[n?.onStateChange,w]),o=useCallback((e,t)=>{l(r=>{const u=r[e]||createDefaultDrawerState({id:e,selectedMenuItemId:DrawerDefaults.selectedMenuItemId,isOpen:DrawerDefaults.isOpen}),S=drawerStateReducer(u,t);return D(e,S),{...r,[e]:S}});},[D]),C=useCallback(e=>{o(e,{type:"TOGGLE"});},[o]),p=useCallback((e,t)=>{o(e,{type:"OPEN",menuItemId:t});},[o]),y=useCallback(e=>{o(e,{type:"CLOSE"});},[o]),d=useCallback((e,t)=>{o(e,{type:"SET_MENU_ID",menuItemId:t??""});},[o]),i=useCallback((e,t)=>e!==""&&typeof e<"u"&&t===e,[]),x=useCallback(e=>s[e]||createDefaultDrawerState({id:e,selectedMenuItemId:DrawerDefaults.selectedMenuItemId,isOpen:DrawerDefaults.isOpen}),[s]),m=useCallback((e,t)=>{I(r=>({...r,[e.id]:t||{}})),l(r=>{const u=r[e.id];return {...r,[e.id]:{...e,selectedMenuItemId:u?.selectedMenuItemId??e.selectedMenuItemId}}});},[]);return useMemo(()=>({drawerStates:s,toggleDrawer:C,openDrawer:p,closeDrawer:y,getDrawerState:x,registerDrawer:m,selectMenuItem:d,isSelectedMenuItem:i}),[s,C,p,y,x,m,d,i])}export{b as DrawerContext,g as DrawersContext,v as useDrawerContext,A as useDrawersContext,G as useDrawersState};//# sourceMappingURL=context.js.map
|
2
|
+
//# sourceMappingURL=context.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../src/components/drawer/context.ts"],"names":["DrawerContext","createContext","f","ctx","useContext","K","drawerStates","setDrawerStates","callbacks","setCallbacks","useState","notifyCallbacks","useCallback","nextState","drawerCallbacks","opts","drawerId","action","prev","currentState","createDefaultDrawerState","O","c","DrawerDefaults","toggleDrawer","updateDrawerState","openDrawer","menuItemId","closeDrawer","selectMenuItem","isSelectedMenuItem","selectedMenuItemId","a","registerDrawer","initialState","useMemo","k","getDrawerState"],"mappings":"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","file":"context.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 */\nimport {\n createContext,\n useCallback,\n useContext,\n useMemo,\n useState,\n} from 'react';\nimport {\n type DrawerAction,\n createDefaultDrawerState,\n drawerStateReducer,\n} from './state';\nimport {\n type DrawerContextValue,\n DrawerDefaults,\n type DrawerState,\n type DrawersContextValue,\n type OnOpenChangeCallback,\n} from './types';\n\nimport type { Key } from '@react-types/shared';\n\nconst DrawersContext = createContext<DrawersContextValue | null>(null);\nconst DrawerContext = createContext<DrawerContextValue | null>(null);\n\nexport function useDrawerContext(): DrawerContextValue {\n const ctx = useContext(DrawerContext);\n\n if (!ctx) {\n throw new Error('useDrawerContext must be used within <Drawer.Provider>');\n }\n\n return ctx;\n}\n\nexport function useDrawersContext(): DrawersContextValue {\n const ctx = useContext(DrawersContext);\n\n if (!ctx) {\n throw new Error('useDrawersContext must be used within <Drawer.Provider>');\n }\n\n return ctx;\n}\n\ntype DrawerCallbacks = {\n onOpenChange?: OnOpenChangeCallback;\n onStateChange?: (state: DrawerState) => void;\n};\n\nexport function useDrawersState(opts?: {\n onStateChange?: (drawerId: Key, state: DrawerState) => void;\n}) {\n const [drawerStates, setDrawerStates] = useState<Record<Key, DrawerState>>(\n {},\n );\n const [callbacks, setCallbacks] = useState<Record<Key, DrawerCallbacks>>({});\n\n const notifyCallbacks = useCallback(\n (drawerId: Key, nextState: DrawerState) => {\n const drawerCallbacks = callbacks[drawerId];\n if (drawerCallbacks) {\n drawerCallbacks.onOpenChange?.(nextState.isOpen);\n drawerCallbacks.onStateChange?.(nextState);\n }\n opts?.onStateChange?.(drawerId, nextState);\n },\n [opts?.onStateChange, callbacks],\n );\n\n const updateDrawerState = useCallback(\n (drawerId: Key, action: DrawerAction) => {\n setDrawerStates((prev) => {\n const currentState =\n prev[drawerId] ||\n createDefaultDrawerState({\n id: drawerId,\n selectedMenuItemId: DrawerDefaults.selectedMenuItemId,\n isOpen: DrawerDefaults.isOpen,\n });\n const nextState = drawerStateReducer(currentState, action);\n\n notifyCallbacks(drawerId, nextState);\n\n return {\n ...prev,\n [drawerId]: nextState,\n };\n });\n },\n [notifyCallbacks],\n );\n\n const toggleDrawer = useCallback(\n (drawerId: Key) => {\n updateDrawerState(drawerId, { type: 'TOGGLE' });\n },\n [updateDrawerState],\n );\n\n const openDrawer = useCallback(\n (drawerId: Key, menuItemId?: Key) => {\n updateDrawerState(drawerId, { type: 'OPEN', menuItemId });\n },\n [updateDrawerState],\n );\n\n const closeDrawer = useCallback(\n (drawerId: Key) => {\n updateDrawerState(drawerId, { type: 'CLOSE' });\n },\n [updateDrawerState],\n );\n\n const selectMenuItem = useCallback(\n (drawerId: Key, menuItemId?: Key) => {\n updateDrawerState(drawerId, {\n type: 'SET_MENU_ID',\n menuItemId: menuItemId ?? '',\n });\n },\n [updateDrawerState],\n );\n\n const isSelectedMenuItem = useCallback(\n (selectedMenuItemId?: Key, menuItemId?: Key) => {\n return (\n selectedMenuItemId !== '' &&\n typeof selectedMenuItemId !== 'undefined' &&\n menuItemId === selectedMenuItemId\n );\n },\n [],\n );\n\n const getDrawerState = useCallback(\n (drawerId: Key): DrawerState => {\n return (\n drawerStates[drawerId] ||\n createDefaultDrawerState({\n id: drawerId,\n selectedMenuItemId: DrawerDefaults.selectedMenuItemId,\n isOpen: DrawerDefaults.isOpen,\n })\n );\n },\n [drawerStates],\n );\n\n const registerDrawer = useCallback(\n (initialState: DrawerState, drawerCallbacks?: DrawerCallbacks) => {\n setCallbacks((prev) => ({\n ...prev,\n [initialState.id]: drawerCallbacks || {},\n }));\n\n setDrawerStates((prev) => {\n const currentState = prev[initialState.id];\n return {\n ...prev,\n [initialState.id]: {\n ...initialState,\n selectedMenuItemId:\n currentState?.selectedMenuItemId ??\n initialState.selectedMenuItemId,\n },\n };\n });\n },\n [],\n );\n\n const contextValue = useMemo<DrawersContextValue>(\n () => ({\n drawerStates,\n toggleDrawer,\n openDrawer,\n closeDrawer,\n getDrawerState,\n registerDrawer,\n selectMenuItem,\n isSelectedMenuItem,\n }),\n [\n drawerStates,\n toggleDrawer,\n openDrawer,\n closeDrawer,\n getDrawerState,\n registerDrawer,\n selectMenuItem,\n isSelectedMenuItem,\n ],\n );\n\n return contextValue;\n}\n\nexport { DrawersContext, DrawerContext };\n"]}
|
@@ -0,0 +1,48 @@
|
|
1
|
+
import * as react_jsx_runtime from 'react/jsx-runtime';
|
2
|
+
import { DrawerProps, DrawerLayoutProps, DrawerContainerProps, DrawerMenuProps, DrawerMenuItemProps, DrawerTriggerProps, DrawerPanelProps, DrawerProviderProps } from './types.js';
|
3
|
+
import '@react-types/shared';
|
4
|
+
import 'react';
|
5
|
+
|
6
|
+
declare const Drawer: {
|
7
|
+
({ id, placement, isOpen, size, defaultSelectedMenuItemId, className, children, onOpenChange, onStateChange, ...rest }: DrawerProps): react_jsx_runtime.JSX.Element;
|
8
|
+
Layout: {
|
9
|
+
({ children, className, extend, push, }: DrawerLayoutProps): react_jsx_runtime.JSX.Element;
|
10
|
+
displayName: string;
|
11
|
+
};
|
12
|
+
Main: {
|
13
|
+
({ children, className }: DrawerContainerProps): react_jsx_runtime.JSX.Element;
|
14
|
+
displayName: string;
|
15
|
+
};
|
16
|
+
Menu: {
|
17
|
+
({ children, className, position, ...props }: DrawerMenuProps): react_jsx_runtime.JSX.Element;
|
18
|
+
displayName: string;
|
19
|
+
Item: {
|
20
|
+
({ id, children, className, ...rest }: DrawerMenuItemProps): react_jsx_runtime.JSX.Element;
|
21
|
+
displayName: string;
|
22
|
+
};
|
23
|
+
};
|
24
|
+
Trigger: {
|
25
|
+
({ for: drawerId, children, behavior, }: DrawerTriggerProps): react_jsx_runtime.JSX.Element;
|
26
|
+
displayName: string;
|
27
|
+
};
|
28
|
+
Panel: {
|
29
|
+
({ id, children, className, ...props }: DrawerPanelProps): react_jsx_runtime.JSX.Element | null;
|
30
|
+
displayName: string;
|
31
|
+
};
|
32
|
+
Header: {
|
33
|
+
({ children, className }: DrawerContainerProps): react_jsx_runtime.JSX.Element;
|
34
|
+
displayName: string;
|
35
|
+
};
|
36
|
+
Title: ({ children, className }: DrawerContainerProps) => react_jsx_runtime.JSX.Element;
|
37
|
+
Footer: {
|
38
|
+
({ children, className }: DrawerContainerProps): react_jsx_runtime.JSX.Element;
|
39
|
+
displayName: string;
|
40
|
+
};
|
41
|
+
Content: {
|
42
|
+
({ children, className }: DrawerContainerProps): react_jsx_runtime.JSX.Element;
|
43
|
+
displayName: string;
|
44
|
+
};
|
45
|
+
Provider: ({ children, onStateChange }: DrawerProviderProps) => react_jsx_runtime.JSX.Element;
|
46
|
+
};
|
47
|
+
|
48
|
+
export { Drawer };
|
@@ -0,0 +1,2 @@
|
|
1
|
+
import {jsx}from'react/jsx-runtime';import'client-only';import {PressResponder,Pressable}from'@react-aria/interactions';import {useEffect,useCallback}from'react';import {Button}from'../button/index.js';import {Icon}from'../icon/index.js';import {useDrawersContext,DrawerContext,useDrawerContext,useDrawersState,DrawersContext}from'./context.js';import {createDefaultDrawerState}from'./state.js';import {DrawerStyles,DrawerMenuStyles}from'./styles.js';const{layout:q,main:z,drawer:A,content:G,panel:J,header:K,footer:Q,title:U}=DrawerStyles(),{menu:V,item:W}=DrawerMenuStyles(),X=({children:e,onStateChange:r})=>{const a=useDrawersState({onStateChange:r});return jsx(DrawersContext.Provider,{value:a,children:e})},P=({children:e,className:r,extend:a="left right",push:s})=>jsx("div",{className:q({className:r}),"data-extend":a,"data-push":s,children:e});P.displayName="Drawer.Layout";const n=({id:e,placement:r="left",isOpen:a=false,size:s="medium",defaultSelectedMenuItemId:o,className:i,children:l,onOpenChange:d,onStateChange:D,...C})=>{const{getDrawerState:S,registerDrawer:I}=useDrawersContext(),p=S(e);return useEffect(()=>{const T=createDefaultDrawerState({id:e,selectedMenuItemId:o,isOpen:a});I(T,{onOpenChange:d,onStateChange:D});},[a,s,r]),jsx(DrawerContext.Provider,{value:{state:p},children:jsx("div",{...C,className:A({className:i}),"data-placement":r,"data-drawer-id":e,"data-size":s,"data-open":p.isOpen||null,children:l})})},c=({children:e,className:r,position:a="middle",...s})=>jsx("nav",{className:V({position:a,className:r}),...s,children:e});c.displayName="Drawer.Menu";const v=({id:e,children:r,className:a,...s})=>{const{openDrawer:o,isSelectedMenuItem:i}=useDrawersContext(),{state:l}=useDrawerContext(),d=i(l.selectedMenuItemId,e),D=()=>{o(l.id,e);};return jsx(Button,{...s,variant:"icon",className:W({className:a}),"aria-selected":d,"aria-controls":`panel-${e}`,id:`tab-${e}`,"data-selected":d?true:void 0,onPress:D,children:jsx(Icon,{children:r})})};v.displayName="Drawer.Menu.Item";const y=({id:e,children:r,className:a,...s})=>{const{state:o}=useDrawerContext();return o?.selectedMenuItemId===e?jsx("div",{...s,className:J({className:a}),id:`panel-${e}`,role:"tabpanel","aria-labelledby":`tab-${e}`,children:r}):null};y.displayName="Drawer.Panel";const f=({for:e,children:r,behavior:a="toggle"})=>{const{toggleDrawer:s,openDrawer:o,closeDrawer:i}=useDrawersContext(),l=useCallback(()=>{a==="open"?o(e):a==="close"?i(e):s(e);},[a,e,o,i,s]);return jsx(PressResponder,{onPress:l,children:jsx(Pressable,{children:r})})};f.displayName="Drawer.Trigger";const m=({children:e,className:r})=>jsx("div",{className:K({className:r}),children:e});m.displayName="Drawer.Header";const Y=({children:e,className:r})=>jsx("div",{className:U({className:r}),children:e});m.displayName="Drawer.Title";const N=({children:e,className:r})=>jsx("div",{className:Q({className:r}),children:e});N.displayName="Drawer.Footer";const g=({children:e,className:r})=>jsx("main",{className:z({className:r}),children:e});g.displayName="Drawer.Main";const M=({children:e,className:r})=>jsx("div",{className:G({className:r}),children:e});M.displayName="Drawer.Content",n.Layout=P,n.Main=g,c.Item=v,n.Menu=c,n.Trigger=f,n.Panel=y,n.Header=m,n.Title=Y,n.Footer=N,n.Content=M,n.Provider=X;export{n as Drawer};//# sourceMappingURL=index.js.map
|
2
|
+
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../src/components/drawer/index.tsx"],"names":["panel","title","menu","DrawerMenuStyles","O","children","onStateChange","useDrawersState","DrawersContext","R","drawerState","B","DrawerLayout","className","extend","jsx","push","isOpen","getDrawerState","registerDrawer","initialState","createDefaultDrawerState","id","$","k","onOpenChange","DrawerContext","currentState","t","H","rest","placement","size","DrawerMenu","position","props","DrawerMenuItem","isSelectedMenuItem","w","handlePress","openDrawer","state","Button","h","item","isSelected","Icon","F","u","toggleDrawer","handleOnPress","behavior","L","drawerId","closeDrawer","PressResponder","x","DrawerTrigger","b","DrawerHeader","DrawerMain","DrawerContent","Drawer","DrawerPanel","DrawerTitle","DrawerFooter","DrawerProvider"],"mappings":"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","file":"index.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'use client';\nimport 'client-only';\nimport { PressResponder, Pressable } from '@react-aria/interactions';\nimport { useCallback, useEffect } from 'react';\nimport { Button } from '../button';\nimport { Icon } from '../icon';\nimport {\n DrawerContext,\n DrawersContext,\n useDrawerContext,\n useDrawersContext,\n useDrawersState,\n} from './context';\nimport { createDefaultDrawerState } from './state';\nimport { DrawerMenuStyles, DrawerStyles } from './styles';\nimport type {\n DrawerContainerProps,\n DrawerLayoutProps,\n DrawerMenuItemProps,\n DrawerMenuProps,\n DrawerPanelProps,\n DrawerProps,\n DrawerProviderProps,\n DrawerTriggerProps,\n} from './types';\n\nconst { layout, main, drawer, content, panel, header, footer, title } =\n DrawerStyles();\n\nconst { menu, item } = DrawerMenuStyles();\n\nconst DrawerProvider = ({ children, onStateChange }: DrawerProviderProps) => {\n const drawerState = useDrawersState({\n onStateChange,\n });\n\n return (\n <DrawersContext.Provider value={drawerState}>\n {children}\n </DrawersContext.Provider>\n );\n};\n\nconst DrawerLayout = ({\n children,\n className,\n extend = 'left right',\n push,\n}: DrawerLayoutProps) => {\n return (\n <div\n className={layout({ className })}\n data-extend={extend}\n data-push={push}\n >\n {children}\n </div>\n );\n};\nDrawerLayout.displayName = 'Drawer.Layout';\n\nexport const Drawer = ({\n id,\n placement = 'left',\n isOpen = false,\n size = 'medium',\n defaultSelectedMenuItemId,\n className,\n children,\n onOpenChange,\n onStateChange,\n ...rest\n}: DrawerProps) => {\n const { getDrawerState, registerDrawer } = useDrawersContext();\n const currentState = getDrawerState(id);\n\n // biome-ignore lint/correctness/useExhaustiveDependencies: this should only run if these props change\n useEffect(() => {\n const initialState = createDefaultDrawerState({\n id,\n selectedMenuItemId: defaultSelectedMenuItemId,\n isOpen,\n });\n registerDrawer(initialState, {\n onOpenChange,\n onStateChange,\n });\n }, [isOpen, size, placement]);\n\n return (\n <DrawerContext.Provider value={{ state: currentState }}>\n <div\n {...rest}\n className={drawer({ className })}\n data-placement={placement}\n data-drawer-id={id}\n data-size={size}\n data-open={currentState.isOpen || null}\n >\n {children}\n </div>\n </DrawerContext.Provider>\n );\n};\n\nconst DrawerMenu = ({\n children,\n className,\n position = 'middle',\n ...props\n}: DrawerMenuProps) => {\n return (\n <nav\n className={menu({\n position,\n className,\n })}\n {...props}\n >\n {children}\n </nav>\n );\n};\nDrawerMenu.displayName = 'Drawer.Menu';\n\nconst DrawerMenuItem = ({\n id,\n children,\n className,\n ...rest\n}: DrawerMenuItemProps) => {\n const { openDrawer, isSelectedMenuItem } = useDrawersContext();\n const { state } = useDrawerContext();\n const isSelected = isSelectedMenuItem(state.selectedMenuItemId, id);\n\n const handlePress = () => {\n openDrawer(state.id, id);\n };\n return (\n <Button\n {...rest}\n variant='icon'\n className={item({ className })}\n aria-selected={isSelected}\n aria-controls={`panel-${id}`}\n id={`tab-${id}`}\n data-selected={isSelected ? true : undefined}\n onPress={handlePress}\n >\n <Icon>{children}</Icon>\n </Button>\n );\n};\nDrawerMenuItem.displayName = 'Drawer.Menu.Item';\n\nconst DrawerPanel = ({\n id,\n children,\n className,\n ...props\n}: DrawerPanelProps) => {\n const { state } = useDrawerContext();\n const isSelected = state?.selectedMenuItemId === id;\n\n if (!isSelected) {\n return null;\n }\n\n return (\n <div\n {...props}\n className={panel({ className })}\n id={`panel-${id}`}\n role='tabpanel'\n aria-labelledby={`tab-${id}`}\n >\n {children}\n </div>\n );\n};\nDrawerPanel.displayName = 'Drawer.Panel';\n\nconst DrawerTrigger = ({\n for: drawerId,\n children,\n behavior = 'toggle',\n}: DrawerTriggerProps) => {\n const { toggleDrawer, openDrawer, closeDrawer } = useDrawersContext();\n\n const handleOnPress = useCallback(() => {\n if (behavior === 'open') {\n openDrawer(drawerId);\n } else if (behavior === 'close') {\n closeDrawer(drawerId);\n } else {\n toggleDrawer(drawerId);\n }\n }, [behavior, drawerId, openDrawer, closeDrawer, toggleDrawer]);\n\n return (\n <PressResponder onPress={handleOnPress}>\n <Pressable>{children}</Pressable>\n </PressResponder>\n );\n};\nDrawerTrigger.displayName = 'Drawer.Trigger';\n\nconst DrawerHeader = ({ children, className }: DrawerContainerProps) => {\n return (\n <div\n className={header({\n className,\n })}\n >\n {children}\n </div>\n );\n};\nDrawerHeader.displayName = 'Drawer.Header';\n\nconst DrawerTitle = ({ children, className }: DrawerContainerProps) => {\n return <div className={title({ className })}>{children}</div>;\n};\nDrawerHeader.displayName = 'Drawer.Title';\n\nconst DrawerFooter = ({ children, className }: DrawerContainerProps) => {\n return <div className={footer({ className })}>{children}</div>;\n};\nDrawerFooter.displayName = 'Drawer.Footer';\n\nconst DrawerMain = ({ children, className }: DrawerContainerProps) => (\n <main className={main({ className })}>{children}</main>\n);\nDrawerMain.displayName = 'Drawer.Main';\n\nconst DrawerContent = ({ children, className }: DrawerContainerProps) => {\n return <div className={content({ className })}>{children}</div>;\n};\nDrawerContent.displayName = 'Drawer.Content';\n\nDrawer.Layout = DrawerLayout;\nDrawer.Main = DrawerMain;\nDrawerMenu.Item = DrawerMenuItem;\nDrawer.Menu = DrawerMenu;\nDrawer.Trigger = DrawerTrigger;\nDrawer.Panel = DrawerPanel;\nDrawer.Header = DrawerHeader;\nDrawer.Title = DrawerTitle;\nDrawer.Footer = DrawerFooter;\nDrawer.Content = DrawerContent;\nDrawer.Provider = DrawerProvider;\n"]}
|
@@ -0,0 +1,26 @@
|
|
1
|
+
import { DrawerState } from './types.js';
|
2
|
+
import { Key } from '@react-types/shared';
|
3
|
+
import 'react';
|
4
|
+
|
5
|
+
type DrawerAction = {
|
6
|
+
type: 'TOGGLE';
|
7
|
+
} | {
|
8
|
+
type: 'OPEN';
|
9
|
+
menuItemId?: Key;
|
10
|
+
} | {
|
11
|
+
type: 'CLOSE';
|
12
|
+
} | {
|
13
|
+
type: 'SET_MENU_ID';
|
14
|
+
menuItemId?: Key;
|
15
|
+
};
|
16
|
+
/**
|
17
|
+
* Default state for new drawers
|
18
|
+
*/
|
19
|
+
declare const createDefaultDrawerState: ({ id, selectedMenuItemId, isOpen, }: {
|
20
|
+
id: Key;
|
21
|
+
selectedMenuItemId?: Key;
|
22
|
+
isOpen?: boolean;
|
23
|
+
}) => DrawerState;
|
24
|
+
declare const drawerStateReducer: (state: DrawerState, action: DrawerAction) => DrawerState;
|
25
|
+
|
26
|
+
export { type DrawerAction, createDefaultDrawerState, drawerStateReducer };
|
@@ -0,0 +1,2 @@
|
|
1
|
+
import {DrawerDefaults}from'./types.js';const I=({id:e,selectedMenuItemId:t=DrawerDefaults.selectedMenuItemId,isOpen:n=DrawerDefaults.isOpen})=>({id:e,isOpen:n,selectedMenuItemId:t}),u=(e,t)=>{switch(t.type){case "TOGGLE":return {...e,isOpen:!e.isOpen,selectedMenuItemId:e.isOpen?void 0:e.selectedMenuItemId};case "OPEN":return {...e,isOpen:true,selectedMenuItemId:t.menuItemId};case "CLOSE":return {...e,isOpen:false,selectedMenuItemId:void 0};case "SET_MENU_ID":return {...e,selectedMenuItemId:t.menuItemId};default:return e}};export{I as createDefaultDrawerState,u as drawerStateReducer};//# sourceMappingURL=state.js.map
|
2
|
+
//# sourceMappingURL=state.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../src/components/drawer/state.ts"],"names":["id","DrawerDefaults","r","drawerStateReducer","state","action"],"mappings":"wCAwByC,MACvC,CAAA,CAAA,CAAAA,CAAAA,uBACqBC,CAAe,mCACpC,CAAA,OAAwB,CAAA,CAAAC,cAAA,CAAA,MAC1B,CAIoB,IAAEF,CAAAA,EAAI,CAAA,CAAA,CAAA,2BAA2B,CAExCG,EAAqB,CAChCC,CAAAA,CACAC,IACgB,CAChB,GAAA,CAAA,OAAe,CAAA,CAAA,MACR,KAAA,QACH,CAAA,OACKD,CAAAA,WACY,CAAA,CAAA,CAAA,CAAA,MACf,CAAA,kBAA0B,CAAA,CAAA,CAAA,MAAS,CAAA,MAAkB,CAAA,CAAA,CAAA,oBAGpD,KAAA,MACH,CAAA,OACKA,CAAAA,WAEH,CAAA,IAAA,CAAA,kBAA2B,CAAA,CAAA,CAAA,YAG1B,KAAA,OACH,CAAA,OACKA,IACH,CAAA,CAAA,MACA,yBAAoB,CAAA,QAGnB,KAAA,aACH,CAAA,OACKA,CAAAA,uBACwB,CAAA,CAAA,CAAA,UAG/B,CAAA,CAAA,QACE,OAEN,CAAA,CAAA","file":"state.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 */\nimport { DrawerDefaults, type DrawerState } from './types';\n\nimport type { Key } from '@react-types/shared';\n\nexport type DrawerAction =\n | { type: 'TOGGLE' }\n | { type: 'OPEN'; menuItemId?: Key }\n | { type: 'CLOSE' }\n | { type: 'SET_MENU_ID'; menuItemId?: Key };\n\n/**\n * Default state for new drawers\n */\nexport const createDefaultDrawerState = ({\n id,\n selectedMenuItemId = DrawerDefaults.selectedMenuItemId,\n isOpen = DrawerDefaults.isOpen,\n}: {\n id: Key;\n selectedMenuItemId?: Key;\n isOpen?: boolean;\n}): DrawerState => ({ id, isOpen, selectedMenuItemId });\n\nexport const drawerStateReducer = (\n state: DrawerState,\n action: DrawerAction,\n): DrawerState => {\n switch (action.type) {\n case 'TOGGLE':\n return {\n ...state,\n isOpen: !state.isOpen,\n selectedMenuItemId: state.isOpen ? undefined : state.selectedMenuItemId,\n };\n\n case 'OPEN':\n return {\n ...state,\n isOpen: true,\n selectedMenuItemId: action.menuItemId,\n };\n\n case 'CLOSE':\n return {\n ...state,\n isOpen: false,\n selectedMenuItemId: undefined,\n };\n\n case 'SET_MENU_ID':\n return {\n ...state,\n selectedMenuItemId: action.menuItemId,\n };\n\n default:\n return state;\n }\n};\n"]}
|
@@ -0,0 +1,118 @@
|
|
1
|
+
import * as tailwind_variants from 'tailwind-variants';
|
2
|
+
import * as tailwind_merge from 'tailwind-merge';
|
3
|
+
|
4
|
+
declare const DrawerStyles: tailwind_variants.TVReturnType<{
|
5
|
+
[key: string]: {
|
6
|
+
[key: string]: tailwind_merge.ClassNameValue | {
|
7
|
+
content?: tailwind_merge.ClassNameValue;
|
8
|
+
footer?: tailwind_merge.ClassNameValue;
|
9
|
+
header?: tailwind_merge.ClassNameValue;
|
10
|
+
main?: tailwind_merge.ClassNameValue;
|
11
|
+
title?: tailwind_merge.ClassNameValue;
|
12
|
+
panel?: tailwind_merge.ClassNameValue;
|
13
|
+
layout?: tailwind_merge.ClassNameValue;
|
14
|
+
drawer?: tailwind_merge.ClassNameValue;
|
15
|
+
};
|
16
|
+
};
|
17
|
+
} | {
|
18
|
+
[x: string]: {
|
19
|
+
[x: string]: tailwind_merge.ClassNameValue | {
|
20
|
+
content?: tailwind_merge.ClassNameValue;
|
21
|
+
footer?: tailwind_merge.ClassNameValue;
|
22
|
+
header?: tailwind_merge.ClassNameValue;
|
23
|
+
main?: tailwind_merge.ClassNameValue;
|
24
|
+
title?: tailwind_merge.ClassNameValue;
|
25
|
+
panel?: tailwind_merge.ClassNameValue;
|
26
|
+
layout?: tailwind_merge.ClassNameValue;
|
27
|
+
drawer?: tailwind_merge.ClassNameValue;
|
28
|
+
};
|
29
|
+
};
|
30
|
+
} | {}, {
|
31
|
+
layout: string[];
|
32
|
+
main: string;
|
33
|
+
drawer: string[];
|
34
|
+
content: string[];
|
35
|
+
panel: string[];
|
36
|
+
header: string[];
|
37
|
+
title: string;
|
38
|
+
footer: string;
|
39
|
+
}, undefined, {
|
40
|
+
[key: string]: {
|
41
|
+
[key: string]: tailwind_merge.ClassNameValue | {
|
42
|
+
content?: tailwind_merge.ClassNameValue;
|
43
|
+
footer?: tailwind_merge.ClassNameValue;
|
44
|
+
header?: tailwind_merge.ClassNameValue;
|
45
|
+
main?: tailwind_merge.ClassNameValue;
|
46
|
+
title?: tailwind_merge.ClassNameValue;
|
47
|
+
panel?: tailwind_merge.ClassNameValue;
|
48
|
+
layout?: tailwind_merge.ClassNameValue;
|
49
|
+
drawer?: tailwind_merge.ClassNameValue;
|
50
|
+
};
|
51
|
+
};
|
52
|
+
} | {}, {
|
53
|
+
layout: string[];
|
54
|
+
main: string;
|
55
|
+
drawer: string[];
|
56
|
+
content: string[];
|
57
|
+
panel: string[];
|
58
|
+
header: string[];
|
59
|
+
title: string;
|
60
|
+
footer: string;
|
61
|
+
}, tailwind_variants.TVReturnType<unknown, {
|
62
|
+
layout: string[];
|
63
|
+
main: string;
|
64
|
+
drawer: string[];
|
65
|
+
content: string[];
|
66
|
+
panel: string[];
|
67
|
+
header: string[];
|
68
|
+
title: string;
|
69
|
+
footer: string;
|
70
|
+
}, undefined, unknown, unknown, undefined>>;
|
71
|
+
declare const DrawerMenuStyles: tailwind_variants.TVReturnType<{
|
72
|
+
position: {
|
73
|
+
start: {
|
74
|
+
menu: string[];
|
75
|
+
};
|
76
|
+
middle: {
|
77
|
+
menu: string[];
|
78
|
+
};
|
79
|
+
end: {
|
80
|
+
menu: string[];
|
81
|
+
};
|
82
|
+
};
|
83
|
+
}, {
|
84
|
+
menu: string[];
|
85
|
+
item: string[];
|
86
|
+
}, undefined, {
|
87
|
+
position: {
|
88
|
+
start: {
|
89
|
+
menu: string[];
|
90
|
+
};
|
91
|
+
middle: {
|
92
|
+
menu: string[];
|
93
|
+
};
|
94
|
+
end: {
|
95
|
+
menu: string[];
|
96
|
+
};
|
97
|
+
};
|
98
|
+
}, {
|
99
|
+
menu: string[];
|
100
|
+
item: string[];
|
101
|
+
}, tailwind_variants.TVReturnType<{
|
102
|
+
position: {
|
103
|
+
start: {
|
104
|
+
menu: string[];
|
105
|
+
};
|
106
|
+
middle: {
|
107
|
+
menu: string[];
|
108
|
+
};
|
109
|
+
end: {
|
110
|
+
menu: string[];
|
111
|
+
};
|
112
|
+
};
|
113
|
+
}, {
|
114
|
+
menu: string[];
|
115
|
+
item: string[];
|
116
|
+
}, undefined, unknown, unknown, undefined>>;
|
117
|
+
|
118
|
+
export { DrawerMenuStyles, DrawerStyles };
|
@@ -0,0 +1,2 @@
|
|
1
|
+
import {tv}from'tailwind-variants';const r=tv({slots:{layout:["[--drawer-main-row-start:1]","data-[push~=top]:[--drawer-main-row-start:2]","[--drawer-main-row-end:4]","data-[push~=bottom]:[--drawer-main-row-end:3]","[--drawer-main-col-start:1]","data-[push~=left]:[--drawer-main-col-start:2]","[--drawer-main-col-end:4]","data-[push~=right]:[--drawer-main-col-end:3]","[--drawer-size-closed:0]","[--drawer-menu-size:40px]","[--drawer-size-small:100px]","[--drawer-size-medium:200px]","[--drawer-size-large:400px]","[--route-layout-grid-cols:auto_1fr_auto]","[--route-layout-grid-rows:auto_1fr_auto]","[--drawer-main-cols:var(--drawer-main-col-start)/var(--drawer-main-col-end)]","[--drawer-main-rows:var(--drawer-main-row-start)/var(--drawer-main-row-end)]","group/layout relative top-[var(--classification-banner-height)]","grid grid-cols-[var(--route-layout-grid-cols)] grid-rows-[var(--route-layout-grid-rows)]","transition-[grid-template-columns,grid-template-rows]","h-full max-h-full w-full"],main:"relative z-1 col-[var(--drawer-main-cols)] row-[var(--drawer-main-rows)]",drawer:["group/drawer","bg-surface-default text-body-m","relative z-5 flex h-full min-h-0 flex-col","pointer-events-none [&>*]:pointer-events-auto","closed:[&>*:not(nav)]:hidden","placement-top:col-start-2 placement-top:col-end-3 placement-top:row-start-1 placement-top:row-end-2","group-data-[extend~=top]/layout:placement-top:z-10","group-data-[extend~=top]/layout:placement-top:col-span-full","group-data-[extend=left]/layout:placement-top:col-end-4","group-data-[extend=right]/layout:placement-top:col-start-1","placement-top:closed:h-[var(--drawer-size-closed)]","placement-top:open:size-small:h-[var(--drawer-size-small)]","placement-top:open:size-medium:h-[var(--drawer-size-medium)]","placement-top:open:size-large:h-[var(--drawer-size-large)]","placement-bottom:col-start-2 placement-bottom:col-end-3 placement-bottom:row-start-3 placement-bottom:row-end-4","group-data-[extend=bottom]/layout:placement-bottom:z-10","group-data-[extend~=bottom]/layout:placement-bottom:col-span-full","group-data-[extend=left]/layout:placement-bottom:col-end-4","group-data-[extend=right]/layout:placement-bottom:col-start-1","placement-bottom:closed:h-[var(--drawer-size-closed)]","placement-bottom:open:size-small:h-[var(--drawer-size-small)]","placement-bottom:open:size-medium:h-[var(--drawer-size-medium)]","placement-bottom:open:size-large:h-[var(--drawer-size-large)]","placement-left:col-start-1 placement-left:col-end-2 placement-left:row-start-2 placement-left:row-end-3","group-data-[extend=left]/layout:placement-left:z-10","group-data-[extend=right]/layout:placement-left:z-1","placement-left:closed:w-[var(--drawer-size-closed)]","placement-left:open:size-small:w-[var(--drawer-size-small)]","placement-left:open:size-medium:w-[var(--drawer-size-medium)]","placement-left:open:size-large:w-[var(--drawer-size-large)]","group-data-[extend~=left]/layout:placement-left:row-span-full","group-data-[extend=top]/layout:placement-left:row-end-4","group-data-[extend=bottom]/layout:placement-left:row-start-1","placement-right:col-start-3 placement-right:col-end-4 placement-right:row-start-2 placement-right:row-end-3","group-data-[extend=right]/layout:placement-right:z-10","group-data-[extend=left]/layout:placement-right:z-1","group-data-[extend~=right]/layout:placement-right:row-span-full","group-data-[extend=top]/layout:placement-right:row-end-4","group-data-[extend=bottom]/layout:placement-right:row-start-1","placement-right:closed:w-[var(--drawer-size-closed)]","placement-right:open:size-small:w-[var(--drawer-size-small)]","placement-right:open:size-medium:w-[var(--drawer-size-medium)]","placement-right:open:size-large:w-[var(--drawer-size-large)]"],content:["hidden h-full min-h-0 flex-col gap-s p-l group-open/drawer:flex"],panel:["flex max-h-full flex-1 flex-col overflow-y-auto text-default-light"],header:["mb-s flex flex-row items-center justify-between pt-px pr-px"],title:"w-full text-default-light text-header-l",footer:"mt-s flex flex-row items-center justify-end text-default-light"}}),a=tv({slots:{menu:["absolute flex rounded-large bg-surface-default p-s","group-placement-top/drawer:transform-[translateX(-50%)] group-placement-top/drawer:left-[50%] group-placement-top/drawer:h-[var(--drawer-menu-size)] group-placement-top/drawer:flex-row","group-placement-bottom/drawer:transform-[translateX(-50%)] group-placement-bottom/drawer:left-[50%] group-placement-bottom/drawer:h-[var(--drawer-menu-size)] group-placement-bottom/drawer:flex-row","group-placement-bottom/drawer:-translate-y-[var(--drawer-menu-size)] group-placement-bottom/drawer:rounded-b-none","group-placement-top/drawer:bottom-0 group-placement-top/drawer:translate-y-[var(--drawer-menu-size)] group-placement-top/drawer:rounded-t-none","group-placement-right/drawer:-translate-y-1/8 group-placement-right/drawer:top-1/8","group-placement-left/drawer:left-full group-placement-left/drawer:rounded-l-none","group-placement-left/drawer:w-[var(--drawer-menu-size)] group-placement-left/drawer:flex-col group-placement-left/drawer:items-center","group-placement-right/drawer:-left-[var(--drawer-menu-size)] group-placement-right/drawer:rounded-r-none","group-placement-right/drawer:w-[var(--drawer-menu-size)] group-placement-right/drawer:flex-col group-placement-right/drawer:items-center"],item:["flex flex-col items-center justify-center","fg-default-dark cursor-pointer p-s outline-none","rounded-medium group-dtk-orientation-horizontal:rounded-small group-dtk-orientation-horizontal:rounded-b-none","group-dtk-orientation-horizontal:border-static-light group-dtk-orientation-horizontal:border-b","group-dtk-orientation-vertical:border group-dtk-orientation-vertical:border-transparent","hover:fg-default-light hover:!bg-transparent hover:group-dtk-orientation-horizontal:border-interactive-hover","selected:fg-highlight selected:bg-highlight-subtle selected:group-dtk-orientation-horizontal:border-highlight","focus:fg-default-light focus:group-dtk-orientation-horizontal:border-interactive-hover","disabled:fg-disabled disabled:cursor-not-allowed disabled:group-dtk-orientation-horizontal:border-interactive-disabled"]},variants:{position:{start:{menu:["group-placement-left/drawer:-translate-y-1/2 group-placement-left/drawer:top-1/8","group-placement-right/drawer:-translate-y-1/2 group-placement-right/drawer:top-1/8","group-placement-top/drawer:left-1/8 group-placement-top/drawer:translate-x-1/4","group-placement-bottom/drawer:left-1/8 group-placement-bottom/drawer:translate-x-1/4"]},middle:{menu:["group-placement-left/drawer:-translate-y-1/2 group-placement-left/drawer:top-1/2","group-placement-right/drawer:-translate-y-1/2 group-placement-right/drawer:top-1/2","group-placement-top/drawer:-translate-x-1/8 group-placement-top/drawer:left-1/2","group-placement-bottom/drawer:-translate-x-1/8 group-placement-bottom/drawer:left-1/2"]},end:{menu:["group-placement-left/drawer:-translate-y-7/2 group-placement-left/drawer:top-7/8","group-placement-right/drawer:-translate-y-7/8 group-placement-right/drawer:top-7/8","group-placement-top/drawer:-translate-x-1/2 group-placement-top/drawer:left-7/8","group-placement-bottom/drawer:-translate-x-1/2 group-placement-bottom/drawer:left-7/8"]}}}});export{a as DrawerMenuStyles,r as DrawerStyles};//# sourceMappingURL=styles.js.map
|
2
|
+
//# sourceMappingURL=styles.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../../../src/components/drawer/styles.ts"],"names":["DrawerStyles","tv","DrawerMenuStyles"],"mappings":"mCAcO,MAAMA,CAAAA,CAAeC,GAAG,CAC7B,KAAA,CAAO,CACL,MAAA,CAAQ,CAEN,6BAAA,CACA,8CAAA,CACA,4BACA,+CAAA,CACA,6BAAA,CACA,gDACA,2BAAA,CACA,8CAAA,CAEA,0BAAA,CACA,2BAAA,CACA,8BACA,8BAAA,CACA,6BAAA,CAGA,0CAAA,CACA,0CAAA,CACA,+EACA,8EAAA,CAGA,iEAAA,CACA,0FAAA,CACA,uDAAA,CACA,0BACF,CAAA,CACA,IAAA,CAAM,2EACN,MAAA,CAAQ,CACN,eACA,gCAAA,CACA,2CAAA,CACA,+CAAA,CACA,8BAAA,CAGA,sGACA,oDAAA,CACA,6DAAA,CACA,yDAAA,CACA,4DAAA,CACA,qDACA,4DAAA,CACA,8DAAA,CACA,4DAAA,CAGA,iHAAA,CACA,0DACA,mEAAA,CACA,4DAAA,CACA,gEACA,uDAAA,CACA,+DAAA,CACA,kEACA,+DAAA,CAGA,yGAAA,CACA,qDAAA,CACA,qDAAA,CACA,sDACA,6DAAA,CACA,+DAAA,CACA,8DACA,+DAAA,CACA,yDAAA,CACA,+DAGA,6GAAA,CACA,uDAAA,CACA,qDAAA,CACA,iEAAA,CACA,2DACA,+DAAA,CACA,sDAAA,CACA,+DACA,gEAAA,CACA,8DACF,EACA,OAAA,CAAS,CACP,iEACF,CAAA,CACA,MAAO,CACL,oEACF,CAAA,CACA,MAAA,CAAQ,CAAC,6DAA6D,CAAA,CACtE,KAAA,CAAO,yCAAA,CACP,OAAQ,gEACV,CACF,CAAC,CAAA,CAEYC,CAAAA,CAAmBD,GAAG,CACjC,KAAA,CAAO,CACL,IAAA,CAAM,CACJ,oDAAA,CAGA,0LAAA,CACA,uMACA,mHAAA,CACA,gJAAA,CAEA,qFACA,kFAAA,CACA,uIAAA,CACA,0GAAA,CACA,0IACF,EACA,IAAA,CAAM,CACJ,4CACA,iDAAA,CACA,+GAAA,CACA,iGACA,yFAAA,CAEA,8GAAA,CAEA,+GAAA,CAEA,wFAAA,CAEA,wHACF,CACF,CAAA,CACA,QAAA,CAAU,CACR,SAAU,CACR,KAAA,CAAO,CACL,IAAA,CAAM,CACJ,kFAAA,CACA,oFAAA,CACA,iFACA,sFACF,CACF,EACA,MAAA,CAAQ,CACN,IAAA,CAAM,CACJ,mFACA,oFAAA,CACA,iFAAA,CACA,uFACF,CACF,CAAA,CACA,IAAK,CACH,IAAA,CAAM,CACJ,kFAAA,CACA,qFACA,iFAAA,CACA,uFACF,CACF,CACF,CACF,CACF,CAAC","file":"styles.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 { tv } from 'tailwind-variants';\n\nexport const DrawerStyles = tv({\n slots: {\n layout: [\n //properties\n '[--drawer-main-row-start:1]', //top overlay\n 'data-[push~=top]:[--drawer-main-row-start:2]',\n '[--drawer-main-row-end:4]', //bottom overlay\n 'data-[push~=bottom]:[--drawer-main-row-end:3]',\n '[--drawer-main-col-start:1]', //left overlay\n 'data-[push~=left]:[--drawer-main-col-start:2]',\n '[--drawer-main-col-end:4]', //right overlay\n 'data-[push~=right]:[--drawer-main-col-end:3]',\n\n '[--drawer-size-closed:0]',\n '[--drawer-menu-size:40px]',\n '[--drawer-size-small:100px]',\n '[--drawer-size-medium:200px]',\n '[--drawer-size-large:400px]',\n\n //Grid template definitions\n '[--route-layout-grid-cols:auto_1fr_auto]',\n '[--route-layout-grid-rows:auto_1fr_auto]',\n '[--drawer-main-cols:var(--drawer-main-col-start)/var(--drawer-main-col-end)]',\n '[--drawer-main-rows:var(--drawer-main-row-start)/var(--drawer-main-row-end)]',\n\n //container\n 'group/layout relative top-[var(--classification-banner-height)]',\n 'grid grid-cols-[var(--route-layout-grid-cols)] grid-rows-[var(--route-layout-grid-rows)]',\n 'transition-[grid-template-columns,grid-template-rows]',\n 'h-full max-h-full w-full',\n ],\n main: 'relative z-1 col-[var(--drawer-main-cols)] row-[var(--drawer-main-rows)]',\n drawer: [\n 'group/drawer',\n 'bg-surface-default text-body-m',\n 'relative z-5 flex h-full min-h-0 flex-col',\n 'pointer-events-none [&>*]:pointer-events-auto',\n 'closed:[&>*:not(nav)]:hidden',\n\n //top\n 'placement-top:col-start-2 placement-top:col-end-3 placement-top:row-start-1 placement-top:row-end-2',\n 'group-data-[extend~=top]/layout:placement-top:z-10',\n 'group-data-[extend~=top]/layout:placement-top:col-span-full',\n 'group-data-[extend=left]/layout:placement-top:col-end-4',\n 'group-data-[extend=right]/layout:placement-top:col-start-1',\n 'placement-top:closed:h-[var(--drawer-size-closed)]',\n 'placement-top:open:size-small:h-[var(--drawer-size-small)]',\n 'placement-top:open:size-medium:h-[var(--drawer-size-medium)]',\n 'placement-top:open:size-large:h-[var(--drawer-size-large)]',\n\n //bottom\n 'placement-bottom:col-start-2 placement-bottom:col-end-3 placement-bottom:row-start-3 placement-bottom:row-end-4',\n 'group-data-[extend=bottom]/layout:placement-bottom:z-10',\n 'group-data-[extend~=bottom]/layout:placement-bottom:col-span-full',\n 'group-data-[extend=left]/layout:placement-bottom:col-end-4',\n 'group-data-[extend=right]/layout:placement-bottom:col-start-1',\n 'placement-bottom:closed:h-[var(--drawer-size-closed)]',\n 'placement-bottom:open:size-small:h-[var(--drawer-size-small)]',\n 'placement-bottom:open:size-medium:h-[var(--drawer-size-medium)]',\n 'placement-bottom:open:size-large:h-[var(--drawer-size-large)]',\n\n //left\n 'placement-left:col-start-1 placement-left:col-end-2 placement-left:row-start-2 placement-left:row-end-3',\n 'group-data-[extend=left]/layout:placement-left:z-10',\n 'group-data-[extend=right]/layout:placement-left:z-1',\n 'placement-left:closed:w-[var(--drawer-size-closed)]',\n 'placement-left:open:size-small:w-[var(--drawer-size-small)]',\n 'placement-left:open:size-medium:w-[var(--drawer-size-medium)]',\n 'placement-left:open:size-large:w-[var(--drawer-size-large)]',\n 'group-data-[extend~=left]/layout:placement-left:row-span-full',\n 'group-data-[extend=top]/layout:placement-left:row-end-4',\n 'group-data-[extend=bottom]/layout:placement-left:row-start-1',\n\n //right\n 'placement-right:col-start-3 placement-right:col-end-4 placement-right:row-start-2 placement-right:row-end-3',\n 'group-data-[extend=right]/layout:placement-right:z-10',\n 'group-data-[extend=left]/layout:placement-right:z-1',\n 'group-data-[extend~=right]/layout:placement-right:row-span-full',\n 'group-data-[extend=top]/layout:placement-right:row-end-4',\n 'group-data-[extend=bottom]/layout:placement-right:row-start-1',\n 'placement-right:closed:w-[var(--drawer-size-closed)]',\n 'placement-right:open:size-small:w-[var(--drawer-size-small)]',\n 'placement-right:open:size-medium:w-[var(--drawer-size-medium)]',\n 'placement-right:open:size-large:w-[var(--drawer-size-large)]',\n ],\n content: [\n 'hidden h-full min-h-0 flex-col gap-s p-l group-open/drawer:flex',\n ],\n panel: [\n 'flex max-h-full flex-1 flex-col overflow-y-auto text-default-light',\n ],\n header: ['mb-s flex flex-row items-center justify-between pt-px pr-px'],\n title: 'w-full text-default-light text-header-l',\n footer: 'mt-s flex flex-row items-center justify-end text-default-light',\n },\n});\n\nexport const DrawerMenuStyles = tv({\n slots: {\n menu: [\n 'absolute flex rounded-large bg-surface-default p-s',\n\n //horizontal\n 'group-placement-top/drawer:transform-[translateX(-50%)] group-placement-top/drawer:left-[50%] group-placement-top/drawer:h-[var(--drawer-menu-size)] group-placement-top/drawer:flex-row',\n 'group-placement-bottom/drawer:transform-[translateX(-50%)] group-placement-bottom/drawer:left-[50%] group-placement-bottom/drawer:h-[var(--drawer-menu-size)] group-placement-bottom/drawer:flex-row',\n 'group-placement-bottom/drawer:-translate-y-[var(--drawer-menu-size)] group-placement-bottom/drawer:rounded-b-none',\n 'group-placement-top/drawer:bottom-0 group-placement-top/drawer:translate-y-[var(--drawer-menu-size)] group-placement-top/drawer:rounded-t-none',\n //vertical\n 'group-placement-right/drawer:-translate-y-1/8 group-placement-right/drawer:top-1/8',\n 'group-placement-left/drawer:left-full group-placement-left/drawer:rounded-l-none',\n 'group-placement-left/drawer:w-[var(--drawer-menu-size)] group-placement-left/drawer:flex-col group-placement-left/drawer:items-center',\n 'group-placement-right/drawer:-left-[var(--drawer-menu-size)] group-placement-right/drawer:rounded-r-none',\n 'group-placement-right/drawer:w-[var(--drawer-menu-size)] group-placement-right/drawer:flex-col group-placement-right/drawer:items-center',\n ],\n item: [\n 'flex flex-col items-center justify-center',\n 'fg-default-dark cursor-pointer p-s outline-none',\n 'rounded-medium group-dtk-orientation-horizontal:rounded-small group-dtk-orientation-horizontal:rounded-b-none',\n 'group-dtk-orientation-horizontal:border-static-light group-dtk-orientation-horizontal:border-b',\n 'group-dtk-orientation-vertical:border group-dtk-orientation-vertical:border-transparent',\n //hover\n 'hover:fg-default-light hover:!bg-transparent hover:group-dtk-orientation-horizontal:border-interactive-hover',\n //selected\n 'selected:fg-highlight selected:bg-highlight-subtle selected:group-dtk-orientation-horizontal:border-highlight',\n //focused\n 'focus:fg-default-light focus:group-dtk-orientation-horizontal:border-interactive-hover',\n //disabled\n 'disabled:fg-disabled disabled:cursor-not-allowed disabled:group-dtk-orientation-horizontal:border-interactive-disabled',\n ],\n },\n variants: {\n position: {\n start: {\n menu: [\n 'group-placement-left/drawer:-translate-y-1/2 group-placement-left/drawer:top-1/8',\n 'group-placement-right/drawer:-translate-y-1/2 group-placement-right/drawer:top-1/8',\n 'group-placement-top/drawer:left-1/8 group-placement-top/drawer:translate-x-1/4',\n 'group-placement-bottom/drawer:left-1/8 group-placement-bottom/drawer:translate-x-1/4',\n ],\n },\n middle: {\n menu: [\n 'group-placement-left/drawer:-translate-y-1/2 group-placement-left/drawer:top-1/2',\n 'group-placement-right/drawer:-translate-y-1/2 group-placement-right/drawer:top-1/2',\n 'group-placement-top/drawer:-translate-x-1/8 group-placement-top/drawer:left-1/2',\n 'group-placement-bottom/drawer:-translate-x-1/8 group-placement-bottom/drawer:left-1/2',\n ],\n },\n end: {\n menu: [\n 'group-placement-left/drawer:-translate-y-7/2 group-placement-left/drawer:top-7/8',\n 'group-placement-right/drawer:-translate-y-7/8 group-placement-right/drawer:top-7/8',\n 'group-placement-top/drawer:-translate-x-1/2 group-placement-top/drawer:left-7/8',\n 'group-placement-bottom/drawer:-translate-x-1/2 group-placement-bottom/drawer:left-7/8',\n ],\n },\n },\n },\n});\n"]}
|