torch-glare 2.3.0 → 2.4.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 +8 -0
- package/apps/lib/components/ActionButton.tsx +7 -12
- package/apps/lib/components/ActionsGroup.tsx +4 -15
- package/apps/lib/components/AlertDialog.tsx +173 -191
- package/apps/lib/components/Avatar.tsx +13 -16
- package/apps/lib/components/Badge.tsx +7 -3
- package/apps/lib/components/BadgeField.tsx +76 -71
- package/apps/lib/components/Breadcrumb.tsx +49 -85
- package/apps/lib/components/Button.tsx +20 -19
- package/apps/lib/components/ButtonGroup.tsx +31 -41
- package/apps/lib/components/Calendar.tsx +51 -29
- package/apps/lib/components/Card.tsx +2 -13
- package/apps/lib/components/ChartBlockTool.ts +17 -52
- package/apps/lib/components/Checkbox.tsx +9 -16
- package/apps/lib/components/ContextMenu.tsx +110 -106
- package/apps/lib/components/CountBadge.tsx +4 -6
- package/apps/lib/components/DataTable.tsx +196 -216
- package/apps/lib/components/DataViews/DataViewRadio.tsx +10 -8
- package/apps/lib/components/DataViews/DataViewsConfigPanel.tsx +21 -55
- package/apps/lib/components/DataViews/DataViewsHeader.tsx +1 -3
- package/apps/lib/components/DataViews/DataViewsLayout.tsx +5 -12
- package/apps/lib/components/DataViews/FilterPanel.tsx +173 -150
- package/apps/lib/components/DataViews/HeaderSearch.tsx +1 -5
- package/apps/lib/components/DataViews/InboxView.tsx +22 -68
- package/apps/lib/components/DataViews/InboxViewCard.tsx +68 -77
- package/apps/lib/components/DataViews/KanbanView.tsx +8 -25
- package/apps/lib/components/DataViews/PanelControls.tsx +3 -13
- package/apps/lib/components/DataViews/SettingsPanel.tsx +83 -89
- package/apps/lib/components/DataViews/TableView.tsx +8 -28
- package/apps/lib/components/DataViews/TreeView.tsx +12 -40
- package/apps/lib/components/DataViews/badgeAdapter.ts +32 -28
- package/apps/lib/components/DataViews/fieldRenderers.tsx +106 -141
- package/apps/lib/components/DataViews/filters/DatePickerRangeFilter.tsx +87 -0
- package/apps/lib/components/DataViews/filters/DateRangePopover.tsx +39 -32
- package/apps/lib/components/DataViews/filters/PresetChips.tsx +15 -15
- package/apps/lib/components/DataViews/filters/RangeSliderWithInputs.tsx +69 -58
- package/apps/lib/components/DataViews/index.ts +26 -26
- package/apps/lib/components/DataViews/tree/TreeDrawer.tsx +12 -16
- package/apps/lib/components/DataViews/tree/TreeSidebar.tsx +28 -31
- package/apps/lib/components/DataViews/types.ts +111 -114
- package/apps/lib/components/DatePicker.tsx +198 -191
- package/apps/lib/components/Dialog.tsx +92 -105
- package/apps/lib/components/Divider.tsx +21 -24
- package/apps/lib/components/Drawer.tsx +79 -139
- package/apps/lib/components/DropdownMenu.tsx +144 -181
- package/apps/lib/components/FieldHint.tsx +4 -11
- package/apps/lib/components/Form.tsx +146 -155
- package/apps/lib/components/FormStepper.tsx +9 -39
- package/apps/lib/components/HeaderBar.tsx +119 -0
- package/apps/lib/components/ImageAttachment.tsx +111 -73
- package/apps/lib/components/InnerLabelField.tsx +20 -16
- package/apps/lib/components/Input.tsx +171 -172
- package/apps/lib/components/InputField.tsx +44 -45
- package/apps/lib/components/InputOTP.tsx +68 -69
- package/apps/lib/components/Label.tsx +31 -35
- package/apps/lib/components/LabelField.tsx +4 -5
- package/apps/lib/components/LabeledCheckBox.tsx +8 -12
- package/apps/lib/components/LabeledRadio.tsx +7 -5
- package/apps/lib/components/LinkButton.tsx +2 -9
- package/apps/lib/components/LoginButton.tsx +4 -9
- package/apps/lib/components/PasswordLevel.tsx +5 -5
- package/apps/lib/components/Popover.tsx +15 -33
- package/apps/lib/components/ProfileMenu.tsx +67 -72
- package/apps/lib/components/Radio.tsx +1 -5
- package/apps/lib/components/RadioCard.tsx +9 -28
- package/apps/lib/components/ScrollArea.tsx +45 -43
- package/apps/lib/components/SearchField.tsx +49 -39
- package/apps/lib/components/SearchableSelect.tsx +46 -52
- package/apps/lib/components/SearchableTable.tsx +199 -219
- package/apps/lib/components/SearchableTree.tsx +469 -0
- package/apps/lib/components/SearchableTreeDialog.tsx +493 -0
- package/apps/lib/components/SectionBlock.tsx +4 -16
- package/apps/lib/components/Select.tsx +53 -80
- package/apps/lib/components/SimpleSelect.tsx +196 -187
- package/apps/lib/components/Skeleton.tsx +9 -12
- package/apps/lib/components/SlideDatePicker.tsx +215 -166
- package/apps/lib/components/SpinLoading.tsx +33 -49
- package/apps/lib/components/Stepper.tsx +13 -56
- package/apps/lib/components/Switch.tsx +8 -10
- package/apps/lib/components/TabFormItem.tsx +3 -12
- package/apps/lib/components/TabSwitch.tsx +7 -34
- package/apps/lib/components/Table.tsx +60 -75
- package/apps/lib/components/TableDnDWrapper.ts +15 -48
- package/apps/lib/components/TextEditor.tsx +93 -104
- package/apps/lib/components/Textarea.tsx +8 -12
- package/apps/lib/components/Timeline.tsx +21 -41
- package/apps/lib/components/Toast.tsx +83 -83
- package/apps/lib/components/Toggle.tsx +112 -114
- package/apps/lib/components/ToggleButton.tsx +1 -1
- package/apps/lib/components/Tooltip.tsx +24 -19
- package/apps/lib/components/TransparentLabel.tsx +61 -62
- package/apps/lib/components/TreeDropDown.tsx +86 -52
- package/apps/lib/components/TreeFolder/TreeFolder.tsx +15 -48
- package/apps/lib/components/TreeFolder/TreeFolderBreadcrumb.tsx +16 -21
- package/apps/lib/components/TreeFolder/TreeFolderRow.tsx +9 -20
- package/apps/lib/components/TreeFolder/TreeFolderStyles.tsx +3 -3
- package/apps/lib/components/TreeFolder/icons.tsx +14 -17
- package/apps/lib/components/TreeFolder/index.ts +15 -8
- package/apps/lib/components/TreeFolder/treeFolderUtils.ts +47 -52
- package/apps/lib/components/TreeFolder/types.ts +32 -32
- package/apps/lib/components/TreeFolder/useTreeFolderDnD.ts +117 -123
- package/apps/lib/hooks/useActiveTreeItem.ts +52 -55
- package/apps/lib/hooks/useClickOutside.ts +21 -20
- package/apps/lib/hooks/useDataViewsState.ts +86 -80
- package/apps/lib/hooks/useIsMobile.ts +12 -12
- package/apps/lib/hooks/useResize.ts +54 -65
- package/apps/lib/hooks/useTagSelection.ts +201 -201
- package/apps/lib/layouts/CNLayout.tsx +181 -140
- package/apps/lib/layouts/DataViewCard.tsx +4 -18
- package/apps/lib/layouts/FieldSection.tsx +2 -6
- package/apps/lib/layouts/TreeSubLayout.tsx +24 -38
- package/apps/lib/providers/ThemeProvider.tsx +8 -23
- package/apps/lib/registry.json +1004 -0
- package/apps/lib/tsconfig.json +9 -0
- package/apps/lib/utils/cn.ts +1 -1
- package/apps/lib/utils/dataViews/columnUtils.ts +46 -44
- package/apps/lib/utils/dataViews/fieldUtils.ts +70 -71
- package/apps/lib/utils/dataViews/nestedDataUtils.tsx +129 -122
- package/apps/lib/utils/dataViews/pathUtils.ts +74 -67
- package/apps/lib/utils/dataViews/rangeUtils.ts +121 -112
- package/apps/lib/utils/dataViews/treeUtils.ts +204 -211
- package/apps/lib/utils/dateFormat.ts +64 -54
- package/apps/lib/utils/markdownParser.ts +2 -7
- package/apps/lib/utils/resize.ts +21 -25
- package/apps/lib/utils/types.ts +13 -13
- package/dist/bin/index.js +8 -2
- package/dist/bin/index.js.map +1 -1
- package/dist/src/shared/getAvailableFiles.d.ts.map +1 -1
- package/dist/src/shared/getAvailableFiles.js +6 -1
- package/dist/src/shared/getAvailableFiles.js.map +1 -1
- package/dist/src/shared/loadRegistry.d.ts +7 -0
- package/dist/src/shared/loadRegistry.d.ts.map +1 -0
- package/dist/src/shared/loadRegistry.js +31 -0
- package/dist/src/shared/loadRegistry.js.map +1 -0
- package/dist/src/shared/resolveInstallPlan.d.ts +12 -0
- package/dist/src/shared/resolveInstallPlan.d.ts.map +1 -0
- package/dist/src/shared/resolveInstallPlan.js +39 -0
- package/dist/src/shared/resolveInstallPlan.js.map +1 -0
- package/dist/src/types/main.d.ts +24 -0
- package/dist/src/types/main.d.ts.map +1 -1
- package/docs/README.md +10 -2
- package/docs/components/action-button.md +30 -24
- package/docs/components/actions-group.md +26 -20
- package/docs/components/alert-dialog.md +45 -45
- package/docs/components/avatar.md +6 -2
- package/docs/components/badge-field.md +6 -2
- package/docs/components/badge.md +7 -1
- package/docs/components/breadcrumb.md +15 -40
- package/docs/components/button-group.md +13 -10
- package/docs/components/button.md +58 -33
- package/docs/components/calendar.md +26 -19
- package/docs/components/card.md +19 -16
- package/docs/components/chart-block-tool.md +128 -0
- package/docs/components/checkbox.md +16 -8
- package/docs/components/cn-layout.md +7 -1
- package/docs/components/context-menu.md +47 -24
- package/docs/components/count-badge.md +7 -1
- package/docs/components/data-table.md +45 -33
- package/docs/components/data-views-config-panel.md +18 -14
- package/docs/components/data-views-layout.md +20 -17
- package/docs/components/date-picker.md +30 -23
- package/docs/components/dialog.md +43 -42
- package/docs/components/divider.md +10 -4
- package/docs/components/drawer.md +8 -33
- package/docs/components/dropdown-menu.md +51 -32
- package/docs/components/field-hint.md +37 -25
- package/docs/components/field-section.md +9 -3
- package/docs/components/form-stepper.md +6 -0
- package/docs/components/form.md +17 -20
- package/docs/components/header-bar.md +187 -0
- package/docs/components/image-attachment.md +33 -41
- package/docs/components/inbox-view.md +16 -5
- package/docs/components/inner-label-field.md +34 -24
- package/docs/components/input-field.md +18 -10
- package/docs/components/input-otp.md +14 -11
- package/docs/components/input.md +22 -16
- package/docs/components/kanban-view.md +15 -5
- package/docs/components/label-field.md +32 -22
- package/docs/components/label.md +43 -32
- package/docs/components/labeled-check-box.md +16 -8
- package/docs/components/labeled-radio.md +18 -11
- package/docs/components/link-button.md +7 -1
- package/docs/components/login-button.md +8 -2
- package/docs/components/password-level.md +37 -24
- package/docs/components/popover.md +26 -23
- package/docs/components/profile-menu.md +38 -27
- package/docs/components/radio-card.md +16 -9
- package/docs/components/radio.md +16 -8
- package/docs/components/scroll-area.md +6 -2
- package/docs/components/search-field.md +14 -6
- package/docs/components/searchable-select.md +19 -14
- package/docs/components/searchable-table.md +60 -41
- package/docs/components/searchable-tree-dialog.md +190 -0
- package/docs/components/searchable-tree.md +200 -0
- package/docs/components/section-block.md +130 -4
- package/docs/components/select.md +23 -18
- package/docs/components/simple-select.md +14 -10
- package/docs/components/skeleton.md +43 -33
- package/docs/components/slide-date-picker.md +37 -29
- package/docs/components/spin-loading.md +32 -23
- package/docs/components/stepper.md +6 -0
- package/docs/components/switch.md +14 -6
- package/docs/components/tab-form-item.md +7 -1
- package/docs/components/tab-switch.md +13 -6
- package/docs/components/table-dnd-wrapper.md +105 -0
- package/docs/components/table-view.md +15 -5
- package/docs/components/table.md +28 -28
- package/docs/components/text-editor.md +19 -13
- package/docs/components/textarea.md +15 -7
- package/docs/components/timeline.md +6 -0
- package/docs/components/toast.md +35 -26
- package/docs/components/toggle-button.md +24 -21
- package/docs/components/toggle.md +23 -15
- package/docs/components/tooltip.md +42 -30
- package/docs/components/transparent-label.md +29 -20
- package/docs/components/tree-drop-down.md +31 -23
- package/docs/components/tree-sub-layout.md +6 -2
- package/docs/components/tree-view.md +16 -5
- package/docs/explanation/architecture.md +54 -0
- package/docs/explanation/design-system.md +52 -0
- package/docs/how-to/data-views-from-backend-response.md +7 -4
- package/docs/how-to/guides.md +24 -18
- package/docs/migration/changelog.md +38 -0
- package/docs/reference/cli.md +87 -0
- package/docs/reference/components.md +11 -12
- package/docs/reference/hooks.md +8 -8
- package/docs/reference/providers.md +22 -22
- package/docs/reference/tailwind-plugins.md +2 -2
- package/docs/reference/theme.md +85 -0
- package/docs/reference/types.md +4 -4
- package/docs/reference/utilities.md +19 -26
- package/docs/tutorials/building-first-form.md +20 -13
- package/docs/tutorials/component-composition.md +34 -50
- package/docs/tutorials/getting-started.md +2 -2
- package/docs/tutorials/theming-basics.md +13 -10
- package/package.json +31 -3
- package/dist/src/commands/block.d.ts +0 -5
- package/dist/src/commands/block.d.ts.map +0 -1
- package/dist/src/commands/block.js +0 -255
- package/dist/src/commands/block.js.map +0 -1
- package/dist/src/shared/configureFonts.d.ts +0 -6
- package/dist/src/shared/configureFonts.d.ts.map +0 -1
- package/dist/src/shared/configureFonts.js +0 -106
- package/dist/src/shared/configureFonts.js.map +0 -1
- package/dist/src/shared/configureGlobalCss.d.ts +0 -6
- package/dist/src/shared/configureGlobalCss.d.ts.map +0 -1
- package/dist/src/shared/configureGlobalCss.js +0 -154
- package/dist/src/shared/configureGlobalCss.js.map +0 -1
- package/dist/src/shared/configureTailwind.d.ts +0 -7
- package/dist/src/shared/configureTailwind.d.ts.map +0 -1
- package/dist/src/shared/configureTailwind.js +0 -163
- package/dist/src/shared/configureTailwind.js.map +0 -1
- package/dist/src/shared/detectFramework.d.ts +0 -23
- package/dist/src/shared/detectFramework.d.ts.map +0 -1
- package/dist/src/shared/detectFramework.js +0 -119
- package/dist/src/shared/detectFramework.js.map +0 -1
- package/dist/src/shared/installBaseUtils.d.ts +0 -5
- package/dist/src/shared/installBaseUtils.d.ts.map +0 -1
- package/dist/src/shared/installBaseUtils.js +0 -79
- package/dist/src/shared/installBaseUtils.js.map +0 -1
- package/dist/src/shared/resolveAliases.d.ts +0 -24
- package/dist/src/shared/resolveAliases.d.ts.map +0 -1
- package/dist/src/shared/resolveAliases.js +0 -98
- package/dist/src/shared/resolveAliases.js.map +0 -1
|
@@ -4,14 +4,12 @@ import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
|
|
|
4
4
|
import { cn } from "../utils/cn";
|
|
5
5
|
import { Themes } from "../utils/types";
|
|
6
6
|
|
|
7
|
-
|
|
8
7
|
interface DropdownMenuProps {
|
|
9
8
|
variant?: "PresentationStyle";
|
|
10
9
|
className?: string;
|
|
11
|
-
theme?: Themes
|
|
10
|
+
theme?: Themes;
|
|
12
11
|
}
|
|
13
12
|
|
|
14
|
-
|
|
15
13
|
const DropdownMenu = DropdownMenuPrimitive.Root;
|
|
16
14
|
|
|
17
15
|
const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;
|
|
@@ -19,7 +17,7 @@ const DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;
|
|
|
19
17
|
const DropdownMenuGroup = React.forwardRef<
|
|
20
18
|
React.ElementRef<typeof DropdownMenuPrimitive.Group>,
|
|
21
19
|
React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Group> &
|
|
22
|
-
|
|
20
|
+
VariantProps<typeof menuGroupStyles>
|
|
23
21
|
>(({ className, variant = "Boxed", ...props }, ref) => (
|
|
24
22
|
<DropdownMenuPrimitive.Group
|
|
25
23
|
ref={ref}
|
|
@@ -36,7 +34,7 @@ const DropdownMenuSub = DropdownMenuPrimitive.Sub;
|
|
|
36
34
|
const DropdownMenuRadioGroup = React.forwardRef<
|
|
37
35
|
React.ElementRef<typeof DropdownMenuPrimitive.RadioGroup>,
|
|
38
36
|
React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioGroup> &
|
|
39
|
-
|
|
37
|
+
VariantProps<typeof menuGroupStyles>
|
|
40
38
|
>(({ className, variant = "Boxed", ...props }, ref) => (
|
|
41
39
|
<DropdownMenuPrimitive.RadioGroup
|
|
42
40
|
ref={ref}
|
|
@@ -44,13 +42,12 @@ const DropdownMenuRadioGroup = React.forwardRef<
|
|
|
44
42
|
{...props}
|
|
45
43
|
/>
|
|
46
44
|
));
|
|
47
|
-
DropdownMenuRadioGroup.displayName =
|
|
48
|
-
DropdownMenuPrimitive.RadioGroup.displayName;
|
|
45
|
+
DropdownMenuRadioGroup.displayName = DropdownMenuPrimitive.RadioGroup.displayName;
|
|
49
46
|
|
|
50
47
|
const DropdownMenuContent = React.forwardRef<
|
|
51
48
|
React.ElementRef<typeof DropdownMenuPrimitive.Content>,
|
|
52
49
|
React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Content> &
|
|
53
|
-
|
|
50
|
+
DropdownMenuProps & { autoGroup?: boolean; maxHeight?: number }
|
|
54
51
|
>(
|
|
55
52
|
(
|
|
56
53
|
{
|
|
@@ -60,10 +57,12 @@ const DropdownMenuContent = React.forwardRef<
|
|
|
60
57
|
variant = "PresentationStyle",
|
|
61
58
|
autoGroup = true,
|
|
62
59
|
collisionPadding = 8,
|
|
60
|
+
maxHeight = 320,
|
|
61
|
+
style,
|
|
63
62
|
children,
|
|
64
63
|
...props
|
|
65
64
|
},
|
|
66
|
-
ref
|
|
65
|
+
ref,
|
|
67
66
|
) => (
|
|
68
67
|
<DropdownMenuPrimitive.Portal>
|
|
69
68
|
<DropdownMenuPrimitive.Content
|
|
@@ -71,19 +70,19 @@ const DropdownMenuContent = React.forwardRef<
|
|
|
71
70
|
ref={ref}
|
|
72
71
|
sideOffset={sideOffset}
|
|
73
72
|
collisionPadding={collisionPadding}
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
)}
|
|
73
|
+
// Cap at maxHeight, but never exceed the space Radix has after collision
|
|
74
|
+
// handling. The menu scrolls (overflow on the surface) past this height.
|
|
75
|
+
style={{
|
|
76
|
+
maxHeight: `min(${maxHeight}px, var(--radix-dropdown-menu-content-available-height))`,
|
|
77
|
+
...style,
|
|
78
|
+
}}
|
|
79
|
+
className={cn(menuContentStyles({ variant }), className)}
|
|
81
80
|
{...props}
|
|
82
81
|
>
|
|
83
82
|
{autoGroup ? autoGroupChildren(children) : children}
|
|
84
83
|
</DropdownMenuPrimitive.Content>
|
|
85
84
|
</DropdownMenuPrimitive.Portal>
|
|
86
|
-
)
|
|
85
|
+
),
|
|
87
86
|
);
|
|
88
87
|
DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;
|
|
89
88
|
|
|
@@ -96,33 +95,28 @@ const DropdownMenuSubTrigger = React.forwardRef<
|
|
|
96
95
|
(
|
|
97
96
|
{
|
|
98
97
|
className,
|
|
98
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars -- excluded from {...props} spread
|
|
99
99
|
inset,
|
|
100
100
|
children,
|
|
101
101
|
variant = "Default",
|
|
102
102
|
size = "M",
|
|
103
103
|
...props
|
|
104
104
|
},
|
|
105
|
-
ref
|
|
105
|
+
ref,
|
|
106
106
|
) => (
|
|
107
107
|
<DropdownMenuPrimitive.SubTrigger
|
|
108
108
|
ref={ref}
|
|
109
|
-
className={cn(
|
|
110
|
-
MenuItemStyles({ variant, size }),
|
|
111
|
-
"justify-between",
|
|
112
|
-
className
|
|
113
|
-
)}
|
|
109
|
+
className={cn(MenuItemStyles({ variant, size }), "justify-between", className)}
|
|
114
110
|
{...props}
|
|
115
111
|
>
|
|
116
|
-
<div className="justify-between"
|
|
117
|
-
{children}
|
|
112
|
+
<div className="justify-between">
|
|
113
|
+
<div className="flex gap-2">{children}</div>
|
|
114
|
+
<i className="ri-arrow-right-s-line text-[16px] rtl:rotate-180"></i>
|
|
118
115
|
</div>
|
|
119
|
-
<i className="ri-arrow-right-s-line text-[16px] rtl:rotate-180"></i></div>
|
|
120
|
-
|
|
121
116
|
</DropdownMenuPrimitive.SubTrigger>
|
|
122
|
-
)
|
|
117
|
+
),
|
|
123
118
|
);
|
|
124
|
-
DropdownMenuSubTrigger.displayName =
|
|
125
|
-
DropdownMenuPrimitive.SubTrigger.displayName;
|
|
119
|
+
DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;
|
|
126
120
|
|
|
127
121
|
const DropdownMenuSubContent = React.forwardRef<
|
|
128
122
|
React.ElementRef<typeof DropdownMenuPrimitive.SubContent>,
|
|
@@ -130,30 +124,18 @@ const DropdownMenuSubContent = React.forwardRef<
|
|
|
130
124
|
variant?: "PresentationStyle";
|
|
131
125
|
autoGroup?: boolean;
|
|
132
126
|
}
|
|
133
|
-
>(
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
variant
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
<DropdownMenuPrimitive.SubContent
|
|
146
|
-
ref={ref}
|
|
147
|
-
className={cn(menuContentStyles({ variant }), className)}
|
|
148
|
-
{...props}
|
|
149
|
-
>
|
|
150
|
-
{autoGroup ? autoGroupChildren(children) : children}
|
|
151
|
-
</DropdownMenuPrimitive.SubContent>
|
|
152
|
-
</DropdownMenuPrimitive.Portal>
|
|
153
|
-
)
|
|
154
|
-
);
|
|
155
|
-
DropdownMenuSubContent.displayName =
|
|
156
|
-
DropdownMenuPrimitive.SubContent.displayName;
|
|
127
|
+
>(({ className, variant = "PresentationStyle", autoGroup = true, children, ...props }, ref) => (
|
|
128
|
+
<DropdownMenuPrimitive.Portal>
|
|
129
|
+
<DropdownMenuPrimitive.SubContent
|
|
130
|
+
ref={ref}
|
|
131
|
+
className={cn(menuContentStyles({ variant }), className)}
|
|
132
|
+
{...props}
|
|
133
|
+
>
|
|
134
|
+
{autoGroup ? autoGroupChildren(children) : children}
|
|
135
|
+
</DropdownMenuPrimitive.SubContent>
|
|
136
|
+
</DropdownMenuPrimitive.Portal>
|
|
137
|
+
));
|
|
138
|
+
DropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;
|
|
157
139
|
|
|
158
140
|
const DropdownMenuItem = React.forwardRef<
|
|
159
141
|
React.ElementRef<typeof DropdownMenuPrimitive.Item>,
|
|
@@ -164,6 +146,7 @@ const DropdownMenuItem = React.forwardRef<
|
|
|
164
146
|
(
|
|
165
147
|
{
|
|
166
148
|
className,
|
|
149
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars -- excluded from {...props} spread
|
|
167
150
|
inset,
|
|
168
151
|
children,
|
|
169
152
|
variant = "Default",
|
|
@@ -171,126 +154,104 @@ const DropdownMenuItem = React.forwardRef<
|
|
|
171
154
|
active,
|
|
172
155
|
...props
|
|
173
156
|
},
|
|
174
|
-
ref
|
|
157
|
+
ref,
|
|
175
158
|
) => (
|
|
176
159
|
<DropdownMenuPrimitive.Item
|
|
177
160
|
{...props}
|
|
178
161
|
ref={ref}
|
|
179
|
-
className={cn(
|
|
180
|
-
MenuItemStyles({ variant, size, active }),
|
|
181
|
-
className
|
|
182
|
-
)}
|
|
162
|
+
className={cn(MenuItemStyles({ variant, size, active }), className)}
|
|
183
163
|
>
|
|
184
|
-
<div
|
|
164
|
+
<div>{children}</div>
|
|
185
165
|
</DropdownMenuPrimitive.Item>
|
|
186
|
-
)
|
|
166
|
+
),
|
|
187
167
|
);
|
|
188
168
|
DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;
|
|
189
169
|
|
|
190
170
|
const DropdownMenuCheckboxItem = React.forwardRef<
|
|
191
171
|
React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>,
|
|
192
172
|
React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.CheckboxItem> &
|
|
193
|
-
|
|
194
|
-
>(
|
|
195
|
-
|
|
196
|
-
{
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
onSelect
|
|
203
|
-
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
</div>
|
|
173
|
+
VariantProps<typeof MenuItemStyles>
|
|
174
|
+
>(({ className, children, checked, variant = "Default", size = "M", onSelect, ...props }, ref) => (
|
|
175
|
+
<DropdownMenuPrimitive.CheckboxItem
|
|
176
|
+
ref={ref}
|
|
177
|
+
className={cn(MenuItemStyles({ variant, size }), "relative", className)}
|
|
178
|
+
checked={checked}
|
|
179
|
+
// Keep the menu open when toggling; preventDefault stops Radix's auto-close.
|
|
180
|
+
onSelect={(event) => {
|
|
181
|
+
event.preventDefault();
|
|
182
|
+
onSelect?.(event);
|
|
183
|
+
}}
|
|
184
|
+
{...props}
|
|
185
|
+
>
|
|
186
|
+
<div className="relative flex items-center">
|
|
187
|
+
<span className="h-full flex items-center justify-center">
|
|
188
|
+
{/* Red dot is the default; hidden once the item is checked. */}
|
|
189
|
+
<div className=" flex justify-center items-center h-full [[data-state=checked]_&]:hidden">
|
|
190
|
+
<div className="w-[16px] h-[16px] rounded-[3px] border border-white-alpha-40 bg-black-alpha-15 group-hover:border-white-700 group-hover:bg-black-alpha-075"></div>
|
|
191
|
+
</div>
|
|
192
|
+
|
|
193
|
+
{/* Blue dot only renders when the item is checked. */}
|
|
194
|
+
<DropdownMenuPrimitive.ItemIndicator>
|
|
195
|
+
<div className="bg-blue-sparkle-600 flex justify-center items-center w-[16px] h-[16px] rounded-[3px]">
|
|
196
|
+
<svg
|
|
197
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
198
|
+
width="14"
|
|
199
|
+
height="14"
|
|
200
|
+
viewBox="0 0 14 14"
|
|
201
|
+
fill="none"
|
|
202
|
+
>
|
|
203
|
+
<path
|
|
204
|
+
d="M5.8339 8.84977L11.1961 3.48755L12.0211 4.3125L5.8339 10.4997L2.12158 6.7874L2.94654 5.96245L5.8339 8.84977Z"
|
|
205
|
+
fill="#F9F9F9"
|
|
206
|
+
/>
|
|
207
|
+
</svg>
|
|
229
208
|
</div>
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
</svg>
|
|
238
|
-
</div>
|
|
239
|
-
</DropdownMenuPrimitive.ItemIndicator>
|
|
240
|
-
</span> {children}</div>
|
|
241
|
-
</DropdownMenuPrimitive.CheckboxItem>
|
|
242
|
-
)
|
|
243
|
-
);
|
|
244
|
-
DropdownMenuCheckboxItem.displayName =
|
|
245
|
-
DropdownMenuPrimitive.CheckboxItem.displayName;
|
|
209
|
+
</DropdownMenuPrimitive.ItemIndicator>
|
|
210
|
+
</span>{" "}
|
|
211
|
+
{children}
|
|
212
|
+
</div>
|
|
213
|
+
</DropdownMenuPrimitive.CheckboxItem>
|
|
214
|
+
));
|
|
215
|
+
DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName;
|
|
246
216
|
|
|
247
217
|
const DropdownMenuRadioItem = React.forwardRef<
|
|
248
218
|
React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>,
|
|
249
219
|
React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.RadioItem> &
|
|
250
|
-
|
|
251
|
-
>(
|
|
252
|
-
|
|
253
|
-
{
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
onSelect
|
|
259
|
-
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="14" height="16" viewBox="0 0 14 14" fill="none">
|
|
286
|
-
<rect width="14" height="14" rx="7" fill="#005ECC" />
|
|
287
|
-
<rect x="5" y="5" width="4" height="4" rx="2" fill="white" />
|
|
288
|
-
</svg> </DropdownMenuPrimitive.ItemIndicator>
|
|
289
|
-
</span>
|
|
290
|
-
{children} </div>
|
|
291
|
-
</DropdownMenuPrimitive.RadioItem>
|
|
292
|
-
)
|
|
293
|
-
);
|
|
220
|
+
VariantProps<typeof MenuItemStyles>
|
|
221
|
+
>(({ className, children, variant = "Default", size = "M", onSelect, ...props }, ref) => (
|
|
222
|
+
<DropdownMenuPrimitive.RadioItem
|
|
223
|
+
ref={ref}
|
|
224
|
+
className={cn(MenuItemStyles({ variant, size }), "relative", className)}
|
|
225
|
+
// Keep the menu open when selecting; preventDefault stops Radix's auto-close.
|
|
226
|
+
onSelect={(event) => {
|
|
227
|
+
event.preventDefault();
|
|
228
|
+
onSelect?.(event);
|
|
229
|
+
}}
|
|
230
|
+
{...props}
|
|
231
|
+
>
|
|
232
|
+
<div className="relative flex items-center">
|
|
233
|
+
<span className="h-full left-2 flex h-3.5 w-3.5 items-center justify-center">
|
|
234
|
+
{/* Red dot is the default; hidden once the item is checked. */}
|
|
235
|
+
<div className=" flex justify-center items-center h-full [[data-state=checked]_&]:hidden">
|
|
236
|
+
<div className="w-[14px] h-[14px] rounded-[100px] border border-white-alpha-40 bg-black-alpha-15 group-hover:border-white-700 group-hover:bg-black-alpha-075"></div>
|
|
237
|
+
</div>
|
|
238
|
+
<DropdownMenuPrimitive.ItemIndicator>
|
|
239
|
+
<svg
|
|
240
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
241
|
+
width="14"
|
|
242
|
+
height="16"
|
|
243
|
+
viewBox="0 0 14 14"
|
|
244
|
+
fill="none"
|
|
245
|
+
>
|
|
246
|
+
<rect width="14" height="14" rx="7" fill="#005ECC" />
|
|
247
|
+
<rect x="5" y="5" width="4" height="4" rx="2" fill="white" />
|
|
248
|
+
</svg>{" "}
|
|
249
|
+
</DropdownMenuPrimitive.ItemIndicator>
|
|
250
|
+
</span>
|
|
251
|
+
{children}{" "}
|
|
252
|
+
</div>
|
|
253
|
+
</DropdownMenuPrimitive.RadioItem>
|
|
254
|
+
));
|
|
294
255
|
DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;
|
|
295
256
|
|
|
296
257
|
// Item types that should be boxed together when sitting loose in the menu.
|
|
@@ -305,9 +266,7 @@ const GROUPABLE_TYPES = [
|
|
|
305
266
|
|
|
306
267
|
const isGroupable = (child: React.ReactNode): child is React.ReactElement =>
|
|
307
268
|
React.isValidElement(child) &&
|
|
308
|
-
(GROUPABLE_TYPES as readonly React.ElementType[]).includes(
|
|
309
|
-
child.type as React.ElementType
|
|
310
|
-
);
|
|
269
|
+
(GROUPABLE_TYPES as readonly React.ElementType[]).includes(child.type as React.ElementType);
|
|
311
270
|
|
|
312
271
|
// Wraps consecutive runs of loose items in a Boxed DropdownMenuGroup so items
|
|
313
272
|
// render inside a container even when the consumer doesn't write one. Labels,
|
|
@@ -321,7 +280,7 @@ function autoGroupChildren(children: React.ReactNode): React.ReactNode {
|
|
|
321
280
|
out.push(
|
|
322
281
|
<DropdownMenuGroup key={key} variant="Boxed">
|
|
323
282
|
{run}
|
|
324
|
-
</DropdownMenuGroup
|
|
283
|
+
</DropdownMenuGroup>,
|
|
325
284
|
);
|
|
326
285
|
run = [];
|
|
327
286
|
};
|
|
@@ -344,25 +303,28 @@ const DropdownMenuLabel = React.forwardRef<
|
|
|
344
303
|
React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Label> & {
|
|
345
304
|
inset?: boolean;
|
|
346
305
|
}
|
|
347
|
-
>(
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
className
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
306
|
+
>(
|
|
307
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars -- excluded from {...props} spread
|
|
308
|
+
({ className, inset, ...props }, ref) => (
|
|
309
|
+
<DropdownMenuPrimitive.Label
|
|
310
|
+
ref={ref}
|
|
311
|
+
className={cn(
|
|
312
|
+
"text-content-presentation-global-primary-light typography-body-small-medium px-[12px] pt-1 flex justify-start items-center",
|
|
313
|
+
className,
|
|
314
|
+
)}
|
|
315
|
+
{...props}
|
|
316
|
+
/>
|
|
317
|
+
),
|
|
318
|
+
);
|
|
357
319
|
DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;
|
|
358
320
|
|
|
359
|
-
const DropdownMenuShortcut = ({
|
|
360
|
-
className,
|
|
361
|
-
...props
|
|
362
|
-
}: React.HTMLAttributes<HTMLSpanElement>) => {
|
|
321
|
+
const DropdownMenuShortcut = ({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>) => {
|
|
363
322
|
return (
|
|
364
323
|
<span
|
|
365
|
-
className={cn(
|
|
324
|
+
className={cn(
|
|
325
|
+
"ltr:ml-auto rtl:mr-auto rtl:ml-0 text-xs tracking-widest opacity-60",
|
|
326
|
+
className,
|
|
327
|
+
)}
|
|
366
328
|
{...props}
|
|
367
329
|
/>
|
|
368
330
|
);
|
|
@@ -398,6 +360,7 @@ export const MenuItemStyles = cva(
|
|
|
398
360
|
"border",
|
|
399
361
|
"border-transparent",
|
|
400
362
|
"flex",
|
|
363
|
+
"shrink-0", // keep full row height so the menu scrolls instead of squishing
|
|
401
364
|
"items-center",
|
|
402
365
|
"justify-start",
|
|
403
366
|
"text-overflow",
|
|
@@ -484,7 +447,7 @@ export const MenuItemStyles = cva(
|
|
|
484
447
|
className: ["text-content-presentation-state-negative"],
|
|
485
448
|
},
|
|
486
449
|
],
|
|
487
|
-
}
|
|
450
|
+
},
|
|
488
451
|
);
|
|
489
452
|
|
|
490
453
|
export const menuContentStyles = cva(
|
|
@@ -493,13 +456,13 @@ export const menuContentStyles = cva(
|
|
|
493
456
|
"rounded-[14px]",
|
|
494
457
|
"min-w-[240px]",
|
|
495
458
|
"outline-none",
|
|
496
|
-
"overflow-
|
|
459
|
+
"overflow-y-auto",
|
|
460
|
+
"overflow-x-hidden",
|
|
497
461
|
// Only animate the OPEN (enter) state. An exit animation on [data-state=closed]
|
|
498
462
|
// holds the old DOM node during close, which breaks the context menu's
|
|
499
463
|
// close/reposition on a second right-click (Radix issue #2572).
|
|
500
464
|
"data-[state=open]:animate-in",
|
|
501
465
|
"data-[state=open]:fade-in-0",
|
|
502
|
-
"overflow-x-hidden",
|
|
503
466
|
"scrollbar-hide",
|
|
504
467
|
"backdrop-blur-[21px]",
|
|
505
468
|
"flex gap-1 flex-col",
|
|
@@ -516,10 +479,10 @@ export const menuContentStyles = cva(
|
|
|
516
479
|
variant: "PresentationStyle",
|
|
517
480
|
},
|
|
518
481
|
},
|
|
519
|
-
}
|
|
482
|
+
},
|
|
520
483
|
);
|
|
521
484
|
|
|
522
|
-
export const menuGroupStyles = cva(["flex", "flex-col"], {
|
|
485
|
+
export const menuGroupStyles = cva(["flex", "flex-col", "shrink-0"], {
|
|
523
486
|
variants: {
|
|
524
487
|
variant: {
|
|
525
488
|
// Visually contains its items in a bordered card.
|
|
@@ -20,7 +20,7 @@ export const glareFieldAlert = cva(
|
|
|
20
20
|
defaultVariants: {
|
|
21
21
|
state: "info",
|
|
22
22
|
},
|
|
23
|
-
}
|
|
23
|
+
},
|
|
24
24
|
);
|
|
25
25
|
|
|
26
26
|
type FieldAlertVariant = "success" | "error" | "warning" | "info";
|
|
@@ -29,17 +29,10 @@ interface Props extends HTMLAttributes<HTMLDivElement> {
|
|
|
29
29
|
label: ReactNode;
|
|
30
30
|
state?: FieldAlertVariant;
|
|
31
31
|
icon?: ReactNode;
|
|
32
|
-
theme?: Themes
|
|
32
|
+
theme?: Themes;
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
-
export const FieldHint: React.FC<Props> = ({
|
|
36
|
-
label,
|
|
37
|
-
state,
|
|
38
|
-
theme,
|
|
39
|
-
icon,
|
|
40
|
-
className,
|
|
41
|
-
...props
|
|
42
|
-
}) => {
|
|
35
|
+
export const FieldHint: React.FC<Props> = ({ label, state, theme, icon, className, ...props }) => {
|
|
43
36
|
return (
|
|
44
37
|
<section
|
|
45
38
|
{...props}
|
|
@@ -48,7 +41,7 @@ export const FieldHint: React.FC<Props> = ({
|
|
|
48
41
|
glareFieldAlert({
|
|
49
42
|
state,
|
|
50
43
|
}),
|
|
51
|
-
className
|
|
44
|
+
className,
|
|
52
45
|
)}
|
|
53
46
|
>
|
|
54
47
|
<section className="flex items-center justify-center min-w-[26px] min-h-[26px] h-full rounded-[4px] text-[18px]">
|