torch-glare 2.4.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 +1 -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 +97 -96
- package/apps/lib/components/CountBadge.tsx +4 -6
- package/apps/lib/components/DataTable.tsx +196 -216
- package/apps/lib/components/DataViews/DataViewRadio.tsx +1 -6
- package/apps/lib/components/DataViews/DataViewsConfigPanel.tsx +13 -47
- 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 +155 -149
- 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 +30 -23
- 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 +104 -115
- package/apps/lib/components/DatePicker.tsx +198 -196
- 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 +131 -171
- 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 +1 -9
- 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 +8 -14
- package/apps/lib/components/SearchableTable.tsx +108 -118
- 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 +18 -25
- package/docs/components/count-badge.md +7 -1
- package/docs/components/data-table.md +45 -33
- package/docs/components/data-views-config-panel.md +15 -11
- package/docs/components/data-views-layout.md +13 -16
- 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 +25 -34
- 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 +6 -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 +18 -13
- package/docs/components/searchable-tree-dialog.md +190 -0
- package/docs/components/searchable-tree.md +200 -0
- package/docs/components/section-block.md +12 -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 +6 -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
|
@@ -5,86 +5,81 @@ import { Popover, PopoverContent, PopoverTrigger } from "./Popover";
|
|
|
5
5
|
|
|
6
6
|
// Define the base styles and variants using `cva`
|
|
7
7
|
export const profileItemStyles = cva(
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
8
|
+
"flex items-center justify-between group w-full p-[6px] outline-none rounded-[8px] fucus:bg-background-system-action-primary-selected active:bg-background-system-action-primary-selected transition-all ease-in-out duration-150",
|
|
9
|
+
{
|
|
10
|
+
variants: {
|
|
11
|
+
selected: {
|
|
12
|
+
true: "bg-background-system-action-primary-selected",
|
|
13
|
+
},
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
16
|
);
|
|
17
17
|
|
|
18
18
|
interface ProfileItemProps extends HTMLAttributes<HTMLButtonElement> {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
19
|
+
label: ReactNode;
|
|
20
|
+
selected?: boolean;
|
|
21
|
+
icon?: string;
|
|
22
|
+
theme?: "dark" | "light" | "default";
|
|
23
|
+
popoverChildren?: ReactNode;
|
|
24
|
+
overlayBlur?: boolean;
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
export const ProfileMenu: React.FC<ProfileItemProps> = ({
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
28
|
+
label,
|
|
29
|
+
selected,
|
|
30
|
+
icon,
|
|
31
|
+
theme,
|
|
32
|
+
className,
|
|
33
|
+
popoverChildren,
|
|
34
|
+
overlayBlur,
|
|
35
|
+
...props
|
|
36
36
|
}) => {
|
|
37
|
+
const [isOpen, setIsOpen] = useState(selected);
|
|
38
|
+
const [dropdownWidth, setDropdownWidth] = useState(0);
|
|
37
39
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
+
useEffect(() => {
|
|
41
|
+
setIsOpen(selected);
|
|
42
|
+
}, [selected]);
|
|
43
|
+
return (
|
|
44
|
+
<Popover onOpenChange={(open) => setIsOpen(open)}>
|
|
45
|
+
<PopoverTrigger asChild>
|
|
46
|
+
<button
|
|
47
|
+
{...props}
|
|
48
|
+
data-theme={theme}
|
|
49
|
+
className={cn(profileItemStyles({ selected }), className)}
|
|
50
|
+
onPointerDown={(e: React.PointerEvent<HTMLButtonElement>) => {
|
|
51
|
+
props.onPointerDown && props.onPointerDown(e);
|
|
52
|
+
setDropdownWidth(e.currentTarget.offsetWidth);
|
|
53
|
+
}}
|
|
54
|
+
>
|
|
55
|
+
<div className="flex items-center gap-2">
|
|
56
|
+
<div className="flex items-center">
|
|
57
|
+
<span className="h-[28px] w-[2px] bg-transparent group-hover:bg-[#9748FF] group-hover:mr-[6px] transition-all ease-in-out duration-150"></span>
|
|
58
|
+
<img className="w-[28px] h-[28px] rounded-full object-cover" src={icon} alt="" />
|
|
59
|
+
</div>
|
|
40
60
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
<Popover onOpenChange={(open) => setIsOpen(open)} >
|
|
46
|
-
<PopoverTrigger asChild>
|
|
47
|
-
<button
|
|
48
|
-
{...props}
|
|
49
|
-
data-theme={theme}
|
|
50
|
-
className={cn(
|
|
51
|
-
profileItemStyles({ selected }),
|
|
52
|
-
className
|
|
53
|
-
)}
|
|
54
|
-
onPointerDown={(e: any) => {
|
|
55
|
-
props.onPointerDown && props.onPointerDown(e);
|
|
56
|
-
setDropdownWidth(e.currentTarget.offsetWidth);
|
|
57
|
-
}}
|
|
58
|
-
>
|
|
59
|
-
<div className="flex items-center gap-2">
|
|
60
|
-
<div className="flex items-center">
|
|
61
|
-
<span className="h-[28px] w-[2px] bg-transparent group-hover:bg-[#9748FF] group-hover:mr-[6px] transition-all ease-in-out duration-150"></span>
|
|
62
|
-
<img className="w-[28px] h-[28px] rounded-full object-cover" src={icon} alt="" />
|
|
63
|
-
</div>
|
|
61
|
+
<p className={cn("typography-body-medium-medium text-content-system-global-primary")}>
|
|
62
|
+
{label}
|
|
63
|
+
</p>
|
|
64
|
+
</div>
|
|
64
65
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
{popoverChildren}
|
|
85
|
-
</PopoverContent>
|
|
86
|
-
}
|
|
87
|
-
</Popover>
|
|
88
|
-
);
|
|
66
|
+
<i
|
|
67
|
+
className={cn(
|
|
68
|
+
"ri-arrow-down-s-line text-[18px] text-content-system-global-primary group-hover:text-[#9748FF] transition-all ease-in-out duration-150",
|
|
69
|
+
{ "rotate-180": isOpen && popoverChildren },
|
|
70
|
+
)}
|
|
71
|
+
></i>
|
|
72
|
+
</button>
|
|
73
|
+
</PopoverTrigger>
|
|
74
|
+
{popoverChildren && (
|
|
75
|
+
<PopoverContent
|
|
76
|
+
overlayBlur={overlayBlur}
|
|
77
|
+
style={{ width: `${dropdownWidth}px` }}
|
|
78
|
+
theme={theme}
|
|
79
|
+
>
|
|
80
|
+
{popoverChildren}
|
|
81
|
+
</PopoverContent>
|
|
82
|
+
)}
|
|
83
|
+
</Popover>
|
|
84
|
+
);
|
|
89
85
|
};
|
|
90
|
-
|
|
@@ -9,11 +9,7 @@ const RadioGroup = React.forwardRef<
|
|
|
9
9
|
React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>
|
|
10
10
|
>(({ className, ...props }, ref) => {
|
|
11
11
|
return (
|
|
12
|
-
<RadioGroupPrimitive.Root
|
|
13
|
-
className={cn("grid gap-0.5", className)}
|
|
14
|
-
{...props}
|
|
15
|
-
ref={ref}
|
|
16
|
-
/>
|
|
12
|
+
<RadioGroupPrimitive.Root className={cn("grid gap-0.5", className)} {...props} ref={ref} />
|
|
17
13
|
);
|
|
18
14
|
});
|
|
19
15
|
RadioGroup.displayName = RadioGroupPrimitive.Root.displayName;
|
|
@@ -3,7 +3,6 @@ import { cn } from "../utils/cn";
|
|
|
3
3
|
import { Radio } from "./Radio";
|
|
4
4
|
import { Card, CardContent, CardDescription, CardHeader } from "./Card";
|
|
5
5
|
|
|
6
|
-
|
|
7
6
|
interface Props extends Omit<React.ComponentProps<typeof Radio>, "size" | "value"> {
|
|
8
7
|
headerLabel?: ReactNode;
|
|
9
8
|
id: string;
|
|
@@ -15,10 +14,7 @@ interface Props extends Omit<React.ComponentProps<typeof Radio>, "size" | "value
|
|
|
15
14
|
}
|
|
16
15
|
|
|
17
16
|
export const RadioCard = forwardRef<HTMLInputElement, Props>(
|
|
18
|
-
(
|
|
19
|
-
{ headerLabel, description, disabled, className, id, children, theme, value, ...props },
|
|
20
|
-
ref
|
|
21
|
-
) => {
|
|
17
|
+
({ headerLabel, description, disabled, className, id, children, theme, value, ...props }) => {
|
|
22
18
|
return (
|
|
23
19
|
<Card
|
|
24
20
|
data-theme={theme}
|
|
@@ -31,37 +27,22 @@ export const RadioCard = forwardRef<HTMLInputElement, Props>(
|
|
|
31
27
|
disabled && "!bg-background-presentation-action-disabled",
|
|
32
28
|
disabled && "cursor-not-allowed",
|
|
33
29
|
disabled && "hover:border-border-presentation-global-primary",
|
|
34
|
-
className
|
|
30
|
+
className,
|
|
35
31
|
)}
|
|
36
32
|
>
|
|
37
|
-
<section
|
|
38
|
-
|
|
39
|
-
>
|
|
40
|
-
<Radio
|
|
41
|
-
{...props}
|
|
42
|
-
value={value}
|
|
43
|
-
size="M"
|
|
44
|
-
id={id}
|
|
45
|
-
disabled={disabled}
|
|
46
|
-
/>
|
|
33
|
+
<section className={"absolute top-0 left-0 w-full p-[10px] flex justify-end"}>
|
|
34
|
+
<Radio {...props} value={value} size="M" id={id} disabled={disabled} />
|
|
47
35
|
</section>
|
|
48
36
|
|
|
49
|
-
<CardHeader
|
|
50
|
-
{headerLabel}
|
|
51
|
-
</CardHeader>
|
|
37
|
+
<CardHeader>{headerLabel}</CardHeader>
|
|
52
38
|
|
|
53
|
-
<CardContent
|
|
54
|
-
{description &&
|
|
55
|
-
<CardDescription >
|
|
56
|
-
{description}
|
|
57
|
-
</CardDescription>
|
|
58
|
-
)}
|
|
39
|
+
<CardContent>
|
|
40
|
+
{description && <CardDescription>{description}</CardDescription>}
|
|
59
41
|
{children}
|
|
60
42
|
</CardContent>
|
|
61
43
|
</Card>
|
|
62
44
|
);
|
|
63
|
-
}
|
|
45
|
+
},
|
|
64
46
|
);
|
|
65
47
|
|
|
66
|
-
|
|
67
|
-
RadioCard.displayName = "RadioCard"
|
|
48
|
+
RadioCard.displayName = "RadioCard";
|
|
@@ -1,52 +1,54 @@
|
|
|
1
|
-
"use client"
|
|
1
|
+
"use client";
|
|
2
2
|
|
|
3
|
-
import * as React from "react"
|
|
4
|
-
import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area"
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area";
|
|
5
5
|
|
|
6
|
-
import { cn } from "../utils/cn"
|
|
6
|
+
import { cn } from "../utils/cn";
|
|
7
7
|
|
|
8
8
|
const ScrollArea = React.forwardRef<
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
React.ElementRef<typeof ScrollAreaPrimitive.Root>,
|
|
10
|
+
React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root>
|
|
11
11
|
>(({ className, children, ...props }, ref) => (
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
12
|
+
<ScrollAreaPrimitive.Root
|
|
13
|
+
ref={ref}
|
|
14
|
+
className={cn(
|
|
15
|
+
[
|
|
16
|
+
"relative overflow-hidden",
|
|
17
|
+
"border-border-presentation-global-primary",
|
|
18
|
+
"bg-background-presentation-form-base",
|
|
19
|
+
"shadow-[0px_0px_10px_0px_rgba(0,0,0,0.4),0px_4px_4px_0px_rgba(0,0,0,0.2)]",
|
|
20
|
+
],
|
|
21
|
+
className,
|
|
22
|
+
)}
|
|
23
|
+
{...props}
|
|
24
|
+
>
|
|
25
|
+
<ScrollAreaPrimitive.Viewport className="h-full w-full rounded-[inherit]">
|
|
26
|
+
{children}
|
|
27
|
+
</ScrollAreaPrimitive.Viewport>
|
|
28
|
+
<ScrollBar />
|
|
29
|
+
<ScrollAreaPrimitive.Corner />
|
|
30
|
+
</ScrollAreaPrimitive.Root>
|
|
31
|
+
));
|
|
32
|
+
ScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;
|
|
29
33
|
|
|
30
34
|
const ScrollBar = React.forwardRef<
|
|
31
|
-
|
|
32
|
-
|
|
35
|
+
React.ElementRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>,
|
|
36
|
+
React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>
|
|
33
37
|
>(({ className, orientation = "vertical", ...props }, ref) => (
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
))
|
|
50
|
-
ScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName
|
|
38
|
+
<ScrollAreaPrimitive.ScrollAreaScrollbar
|
|
39
|
+
ref={ref}
|
|
40
|
+
orientation={orientation}
|
|
41
|
+
className={cn(
|
|
42
|
+
"flex touch-none select-none transition-colors",
|
|
43
|
+
orientation === "vertical" && "h-full w-2.5 border-l border-l-transparent p-[1px]",
|
|
44
|
+
orientation === "horizontal" && "h-2.5 flex-col border-t border-t-transparent p-[1px]",
|
|
45
|
+
className,
|
|
46
|
+
)}
|
|
47
|
+
{...props}
|
|
48
|
+
>
|
|
49
|
+
<ScrollAreaPrimitive.ScrollAreaThumb className="relative flex-1 rounded-full bg-border" />
|
|
50
|
+
</ScrollAreaPrimitive.ScrollAreaScrollbar>
|
|
51
|
+
));
|
|
52
|
+
ScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName;
|
|
51
53
|
|
|
52
|
-
export { ScrollArea, ScrollBar }
|
|
54
|
+
export { ScrollArea, ScrollBar };
|
|
@@ -2,51 +2,61 @@ import { forwardRef, ReactNode } from "react";
|
|
|
2
2
|
import { Props, InputField } from "./InputField";
|
|
3
3
|
|
|
4
4
|
interface SearchProps extends Props {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
Searchplaceholder?: ReactNode;
|
|
6
|
+
secondaryPlaceholder?: ReactNode;
|
|
7
|
+
childrenSide?: ReactNode;
|
|
8
8
|
}
|
|
9
9
|
// Use InputField types in the SearchInput component
|
|
10
10
|
export const SearchField = forwardRef<HTMLInputElement, SearchProps>(
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
11
|
+
({ Searchplaceholder, secondaryPlaceholder, childrenSide, ...props }, forwardedRef) => {
|
|
12
|
+
return (
|
|
13
|
+
<div className="mb-[10px] w-full h-fit justify-center items-center rounded-[12px] p-[3px] bg-[rgba(106,112,144,0.60)] shadow-[0px_0px_18px_0px_rgba(0,0,0,0.75)] backdrop-blur-[21px]">
|
|
14
|
+
<InputField
|
|
15
|
+
{...props}
|
|
16
|
+
ref={forwardedRef}
|
|
17
|
+
type="text"
|
|
18
|
+
variant="SystemStyle"
|
|
19
|
+
size="M"
|
|
20
|
+
className="h-[54px] rounded-[9px] p-[15px] border-border-system-global-primary bg-[rgba(0,0,0,0.60)]"
|
|
21
|
+
icon={
|
|
22
|
+
<SearchInputPlaceholder
|
|
23
|
+
value={props.value}
|
|
24
|
+
secondaryPlaceholder={secondaryPlaceholder}
|
|
25
|
+
Searchplaceholder={Searchplaceholder}
|
|
26
|
+
/>
|
|
27
|
+
}
|
|
28
|
+
childrenSide={childrenSide}
|
|
29
|
+
/>
|
|
30
|
+
</div>
|
|
31
|
+
);
|
|
32
|
+
},
|
|
31
33
|
);
|
|
32
34
|
|
|
33
35
|
SearchField.displayName = " SearchField"; // Set displayName for debugging
|
|
34
36
|
|
|
37
|
+
function SearchInputPlaceholder({
|
|
38
|
+
Searchplaceholder,
|
|
39
|
+
secondaryPlaceholder,
|
|
40
|
+
value,
|
|
41
|
+
}: {
|
|
42
|
+
Searchplaceholder?: ReactNode;
|
|
43
|
+
secondaryPlaceholder?: ReactNode;
|
|
44
|
+
value?: string | number | readonly string[];
|
|
45
|
+
}) {
|
|
46
|
+
return (
|
|
47
|
+
<div className="flex gap-[10px] justify-center items-center ">
|
|
48
|
+
<i className="ri-search-2-line text-[24px] text-[#E5E5E5]"></i>
|
|
35
49
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
<p className="text-content-system-global-primary typography-headers-medium-regular leading-none opacity-[0.8]">{Searchplaceholder}</p>
|
|
45
|
-
<p className="text-content-system-global-primary typography-body-medium-medium leading-none opacity-30 mix-blend-luminosity mt-[2px]">{secondaryPlaceholder}</p>
|
|
46
|
-
</div>
|
|
47
|
-
) : null
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
+
{value == "" ? (
|
|
51
|
+
<div className="flex gap-[5px] justify-center items-center ">
|
|
52
|
+
<p className="text-content-system-global-primary typography-headers-medium-regular leading-none opacity-[0.8]">
|
|
53
|
+
{Searchplaceholder}
|
|
54
|
+
</p>
|
|
55
|
+
<p className="text-content-system-global-primary typography-body-medium-medium leading-none opacity-30 mix-blend-luminosity mt-[2px]">
|
|
56
|
+
{secondaryPlaceholder}
|
|
57
|
+
</p>
|
|
50
58
|
</div>
|
|
51
|
-
|
|
52
|
-
|
|
59
|
+
) : null}
|
|
60
|
+
</div>
|
|
61
|
+
);
|
|
62
|
+
}
|
|
@@ -91,7 +91,7 @@ const menuContentStyles = cva(
|
|
|
91
91
|
},
|
|
92
92
|
},
|
|
93
93
|
defaultVariants: { variant: "PresentationStyle" },
|
|
94
|
-
}
|
|
94
|
+
},
|
|
95
95
|
);
|
|
96
96
|
|
|
97
97
|
export function SearchableSelect({
|
|
@@ -123,10 +123,7 @@ export function SearchableSelect({
|
|
|
123
123
|
|
|
124
124
|
const groupRef = useClickOutside<HTMLDivElement>((e) => {
|
|
125
125
|
const target = e?.target as Node;
|
|
126
|
-
if (
|
|
127
|
-
!groupRef.current?.contains(target) &&
|
|
128
|
-
!popoverContentRef.current?.contains(target)
|
|
129
|
-
) {
|
|
126
|
+
if (!groupRef.current?.contains(target) && !popoverContentRef.current?.contains(target)) {
|
|
130
127
|
setOpen(false);
|
|
131
128
|
}
|
|
132
129
|
});
|
|
@@ -168,7 +165,7 @@ export function SearchableSelect({
|
|
|
168
165
|
};
|
|
169
166
|
|
|
170
167
|
// Solid value: search text while typing, otherwise the selected label.
|
|
171
|
-
const displayValue = searching ? search : selectedOption?.label ?? "";
|
|
168
|
+
const displayValue = searching ? search : (selectedOption?.label ?? "");
|
|
172
169
|
|
|
173
170
|
return (
|
|
174
171
|
<Popover open={open}>
|
|
@@ -222,13 +219,13 @@ export function SearchableSelect({
|
|
|
222
219
|
}}
|
|
223
220
|
className={cn(
|
|
224
221
|
"shrink-0 h-[32px] w-[32px] rounded-[4px]",
|
|
225
|
-
open && "bg-background-presentation-action-hover text-white"
|
|
222
|
+
open && "bg-background-presentation-action-hover text-white",
|
|
226
223
|
)}
|
|
227
224
|
>
|
|
228
225
|
<i
|
|
229
226
|
className={cn(
|
|
230
|
-
"ri-arrow-down-s-line text-[
|
|
231
|
-
open && "rotate-180"
|
|
227
|
+
"ri-arrow-down-s-line text-[20px] transition-all duration-100 ease-in-out",
|
|
228
|
+
open && "rotate-180",
|
|
232
229
|
)}
|
|
233
230
|
/>
|
|
234
231
|
</Button>
|
|
@@ -269,15 +266,13 @@ export function SearchableSelect({
|
|
|
269
266
|
data-highlighted={isSelected ? "" : undefined}
|
|
270
267
|
className={cn(
|
|
271
268
|
MenuItemStyles({ variant: "Default", size: "M" }),
|
|
272
|
-
"shrink-0" // keep full row height; the list scrolls instead of squishing
|
|
269
|
+
"shrink-0", // keep full row height; the list scrolls instead of squishing
|
|
273
270
|
)}
|
|
274
271
|
>
|
|
275
272
|
<div>
|
|
276
273
|
{option.icon}
|
|
277
274
|
<span className="flex-1 text-start">{option.label}</span>
|
|
278
|
-
{isSelected &&
|
|
279
|
-
<i className="ri-check-line text-[16px] shrink-0" />
|
|
280
|
-
)}
|
|
275
|
+
{isSelected && <i className="ri-check-line text-[16px] shrink-0" />}
|
|
281
276
|
</div>
|
|
282
277
|
</button>
|
|
283
278
|
);
|
|
@@ -298,7 +293,6 @@ export function SearchableSelect({
|
|
|
298
293
|
<LoadingIcon size="M" />
|
|
299
294
|
</div>
|
|
300
295
|
)}
|
|
301
|
-
|
|
302
296
|
</div>
|
|
303
297
|
</PopoverContent>
|
|
304
298
|
</Popover>
|