torch-glare 2.4.0 → 2.4.2
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 +21 -20
- package/apps/lib/components/ButtonGroup.tsx +31 -41
- package/apps/lib/components/Calendar.tsx +51 -29
- package/apps/lib/components/Card.tsx +40 -24
- package/apps/lib/components/Checkbox.tsx +9 -16
- package/apps/lib/components/ColorPicker.tsx +441 -0
- package/apps/lib/components/ConclusionHeader.tsx +148 -0
- 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 +200 -196
- package/apps/lib/components/Dialog.tsx +92 -105
- package/apps/lib/components/Divider.tsx +21 -24
- package/apps/lib/components/Drawer.tsx +124 -142
- 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/FormBuilder/DisplayField.tsx +40 -0
- package/apps/lib/components/FormBuilder/context.ts +71 -0
- package/apps/lib/components/FormBuilder/fields/ChoiceFields.tsx +65 -0
- package/apps/lib/components/FormBuilder/fields/ColorField.tsx +76 -0
- package/apps/lib/components/FormBuilder/fields/CustomField.tsx +16 -0
- package/apps/lib/components/FormBuilder/fields/DateField.tsx +34 -0
- package/apps/lib/components/FormBuilder/fields/FieldArray.tsx +79 -0
- package/apps/lib/components/FormBuilder/fields/FieldShell.tsx +174 -0
- package/apps/lib/components/FormBuilder/fields/FileField.tsx +40 -0
- package/apps/lib/components/FormBuilder/fields/OptionListFields.tsx +139 -0
- package/apps/lib/components/FormBuilder/fields/OtpField.tsx +32 -0
- package/apps/lib/components/FormBuilder/fields/PhoneField.tsx +82 -0
- package/apps/lib/components/FormBuilder/fields/RichTextEditorField.tsx +37 -0
- package/apps/lib/components/FormBuilder/fields/SelectField.tsx +101 -0
- package/apps/lib/components/FormBuilder/fields/SignatureField.tsx +175 -0
- package/apps/lib/components/FormBuilder/fields/SliderField.tsx +72 -0
- package/apps/lib/components/FormBuilder/fields/SwitchBoxField.tsx +42 -0
- package/apps/lib/components/FormBuilder/fields/TableField.tsx +312 -0
- package/apps/lib/components/FormBuilder/fields/TextField.tsx +222 -0
- package/apps/lib/components/FormBuilder/fields/TreeSelectField.tsx +49 -0
- package/apps/lib/components/FormBuilder/fields/countries.ts +303 -0
- package/apps/lib/components/FormBuilder/fields/index.ts +25 -0
- package/apps/lib/components/FormBuilder/form-builder.tsx +292 -0
- package/apps/lib/components/FormBuilder/header.tsx +105 -0
- package/apps/lib/components/FormBuilder/index.ts +37 -0
- package/apps/lib/components/FormBuilder/numberFormat.ts +16 -0
- package/apps/lib/components/FormBuilder/stepper.tsx +217 -0
- package/apps/lib/components/FormBuilder/submit.tsx +41 -0
- package/apps/lib/components/FormBuilder/types.ts +264 -0
- package/apps/lib/components/FormBuilder/viewFormat.tsx +137 -0
- package/apps/lib/components/FormRenderer/FormDrawer.tsx +121 -0
- package/apps/lib/components/FormRenderer/form-renderer.tsx +113 -0
- package/apps/lib/components/FormRenderer/index.ts +9 -0
- package/apps/lib/components/FormRenderer/types.ts +79 -0
- package/apps/lib/components/FormStepper.tsx +9 -39
- package/apps/lib/components/FormSummary.tsx +282 -0
- package/apps/lib/components/HeaderBar.tsx +1 -9
- package/apps/lib/components/ImageAttachment.tsx +106 -93
- 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 +61 -58
- 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 +11 -28
- package/apps/lib/components/ScrollArea.tsx +45 -43
- package/apps/lib/components/SearchField.tsx +49 -39
- package/apps/lib/components/SearchableSelect.tsx +16 -16
- 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 +19 -23
- package/apps/lib/components/Select.tsx +80 -186
- 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/{ChartBlockTool.ts → TextEditor/ChartBlockTool.ts} +17 -52
- package/apps/lib/components/TextEditor/RichTextField.tsx +46 -0
- package/apps/lib/components/{TableDnDWrapper.ts → TextEditor/TableDnDWrapper.ts} +15 -48
- package/apps/lib/components/{TextEditor.tsx → TextEditor/TextEditor.tsx} +156 -113
- package/apps/lib/components/TextEditor/TextEditorToolbar.tsx +429 -0
- package/apps/lib/components/TextEditor/editor-tools/AlignmentTune.ts +70 -0
- package/apps/lib/components/TextEditor/editor-tools/ColorInlineTool.ts +50 -0
- package/apps/lib/components/TextEditor/editor-tools/StrikethroughInlineTool.ts +48 -0
- package/apps/lib/components/TextEditor/editor-tools/inlineFormat.ts +98 -0
- package/apps/lib/{types → components/TextEditor}/editorjs.d.ts +19 -0
- package/apps/lib/components/TextEditor/index.ts +7 -0
- package/apps/lib/{utils → components/TextEditor}/markdownParser.ts +2 -7
- package/apps/lib/components/Textarea.tsx +9 -13
- 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 +997 -0
- package/apps/lib/tsconfig.json +9 -0
- package/apps/lib/tsconfig.tsbuildinfo +1 -0
- package/apps/lib/utils/cn.ts +1 -1
- package/apps/lib/utils/color.ts +175 -0
- 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/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 +23 -18
- package/docs/components/chart-block-tool.md +129 -0
- package/docs/components/checkbox.md +16 -8
- package/docs/components/cn-layout.md +7 -1
- package/docs/components/color-picker.md +101 -0
- package/docs/components/conclusion-header.md +80 -0
- 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 +161 -135
- 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-builder.md +270 -0
- package/docs/components/form-renderer.md +228 -0
- package/docs/components/form-stepper.md +6 -0
- package/docs/components/form-summary.md +123 -0
- package/docs/components/form.md +17 -20
- package/docs/components/header-bar.md +6 -0
- package/docs/components/image-attachment.md +43 -45
- 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 +107 -0
- package/docs/components/table-view.md +15 -5
- package/docs/components/table.md +28 -28
- package/docs/components/text-editor.md +37 -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/form-and-list-recipes.md +26 -19
- package/docs/how-to/forms-with-form-builder.md +408 -0
- package/docs/how-to/guides.md +177 -197
- 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 +170 -172
- 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
|
@@ -1,31 +1,28 @@
|
|
|
1
|
-
"use client"
|
|
1
|
+
"use client";
|
|
2
2
|
|
|
3
|
-
import * as React from "react"
|
|
4
|
-
import { cn } from "../utils/cn"
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { cn } from "../utils/cn";
|
|
5
5
|
|
|
6
6
|
interface DividerProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
orientation?: "horizontal" | "vertical";
|
|
8
|
+
decorative?: boolean;
|
|
9
9
|
}
|
|
10
10
|
|
|
11
11
|
const Divider = React.forwardRef<HTMLDivElement, DividerProps>(
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
)
|
|
28
|
-
)
|
|
29
|
-
Divider.displayName = "Divider"
|
|
12
|
+
({ className, orientation = "horizontal", decorative = true, ...props }, ref) => (
|
|
13
|
+
<div
|
|
14
|
+
ref={ref}
|
|
15
|
+
role={decorative ? "none" : "separator"}
|
|
16
|
+
aria-orientation={decorative ? undefined : orientation}
|
|
17
|
+
className={cn(
|
|
18
|
+
"bg-border-presentation-global-primary",
|
|
19
|
+
orientation === "horizontal" ? "h-[1px] w-full" : "h-full w-[1px]",
|
|
20
|
+
className,
|
|
21
|
+
)}
|
|
22
|
+
{...props}
|
|
23
|
+
/>
|
|
24
|
+
),
|
|
25
|
+
);
|
|
26
|
+
Divider.displayName = "Divider";
|
|
30
27
|
|
|
31
|
-
export { Divider }
|
|
28
|
+
export { Divider };
|
|
@@ -5,21 +5,19 @@ import { Drawer as DrawerPrimitive } from "vaul";
|
|
|
5
5
|
import { cva, type VariantProps } from "class-variance-authority";
|
|
6
6
|
|
|
7
7
|
import { cn } from "../utils/cn";
|
|
8
|
+
import { Button } from "./Button";
|
|
8
9
|
|
|
9
10
|
const Drawer = ({
|
|
10
11
|
shouldScaleBackground = true,
|
|
11
12
|
...props
|
|
12
13
|
}: React.ComponentProps<typeof DrawerPrimitive.Root>) => (
|
|
13
|
-
<DrawerPrimitive.Root
|
|
14
|
-
shouldScaleBackground={shouldScaleBackground}
|
|
15
|
-
{...props}
|
|
16
|
-
/>
|
|
14
|
+
<DrawerPrimitive.Root shouldScaleBackground={shouldScaleBackground} {...props} />
|
|
17
15
|
);
|
|
18
16
|
Drawer.displayName = "Drawer";
|
|
19
17
|
|
|
20
|
-
const DrawerNested = (
|
|
21
|
-
|
|
22
|
-
)
|
|
18
|
+
const DrawerNested = (props: React.ComponentProps<typeof DrawerPrimitive.NestedRoot>) => (
|
|
19
|
+
<DrawerPrimitive.NestedRoot {...props} />
|
|
20
|
+
);
|
|
23
21
|
DrawerNested.displayName = "DrawerNested";
|
|
24
22
|
|
|
25
23
|
const DrawerTrigger = DrawerPrimitive.Trigger;
|
|
@@ -32,11 +30,7 @@ const DrawerOverlay = React.forwardRef<
|
|
|
32
30
|
React.ElementRef<typeof DrawerPrimitive.Overlay>,
|
|
33
31
|
React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Overlay>
|
|
34
32
|
>(({ className, ...props }, ref) => (
|
|
35
|
-
<DrawerPrimitive.Overlay
|
|
36
|
-
ref={ref}
|
|
37
|
-
className={cn("fixed inset-0 z-50 ", className)}
|
|
38
|
-
{...props}
|
|
39
|
-
/>
|
|
33
|
+
<DrawerPrimitive.Overlay ref={ref} className={cn("fixed inset-0 z-50 ", className)} {...props} />
|
|
40
34
|
));
|
|
41
35
|
DrawerOverlay.displayName = DrawerPrimitive.Overlay.displayName;
|
|
42
36
|
|
|
@@ -54,9 +48,58 @@ interface DrawerContentProps extends React.ComponentPropsWithoutRef<
|
|
|
54
48
|
*/
|
|
55
49
|
framed?: boolean;
|
|
56
50
|
wrapperClassName?: string;
|
|
51
|
+
/**
|
|
52
|
+
* @deprecated Use `className` — it now targets the tray directly. Kept as an
|
|
53
|
+
* alias (merged last, so it still wins) for the pre-`DrawerPanel` API.
|
|
54
|
+
*/
|
|
57
55
|
trayClassName?: string;
|
|
58
56
|
}
|
|
59
57
|
|
|
58
|
+
interface DrawerPanelProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
59
|
+
/** Panel border + inset shadow that pairs with the tray's frame. Default `true`. */
|
|
60
|
+
framed?: boolean;
|
|
61
|
+
/** Show the drag handle (bottom sheets). Default `false`. */
|
|
62
|
+
showHandle?: boolean;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* The light `#F0F0F0` content surface inside a `DrawerContent`.
|
|
67
|
+
*
|
|
68
|
+
* It is an ordinary child, not something the tray paints — so a drawer can hold a panel
|
|
69
|
+
* and something else beside it (e.g. a `FormSummary`), each bringing its own background.
|
|
70
|
+
* Give the tray a `gap-*` to space them.
|
|
71
|
+
*
|
|
72
|
+
* ```tsx
|
|
73
|
+
* <DrawerContent className="gap-[6px]">
|
|
74
|
+
* <DrawerPanel>…form…</DrawerPanel>
|
|
75
|
+
* <FormSummary … />
|
|
76
|
+
* </DrawerContent>
|
|
77
|
+
* ```
|
|
78
|
+
*/
|
|
79
|
+
const DrawerPanel = React.forwardRef<HTMLDivElement, DrawerPanelProps>(
|
|
80
|
+
({ className, framed = true, showHandle = false, children, ...props }, ref) => (
|
|
81
|
+
<div
|
|
82
|
+
ref={ref}
|
|
83
|
+
// The content surface is always light (#F0F0F0) regardless of the page
|
|
84
|
+
// theme, so pin a light theme here. This makes theme-aware content tokens
|
|
85
|
+
// (DrawerTitle/Description and any consumer content) resolve to their
|
|
86
|
+
// dark-on-light values instead of following a dark page theme (which
|
|
87
|
+
// would render white-on-light = invisible).
|
|
88
|
+
data-theme="light"
|
|
89
|
+
className={cn(
|
|
90
|
+
"flex flex-1 gap-2 rounded-t-[16px] p-1 bg-[#F0F0F0] min-h-0",
|
|
91
|
+
framed && "border border-[#D4D4D4] shadow-[inset_0_-4px_16px_rgba(0,0,0,0.1)]",
|
|
92
|
+
className,
|
|
93
|
+
)}
|
|
94
|
+
{...props}
|
|
95
|
+
>
|
|
96
|
+
{showHandle && <div className="mx-auto h-2 w-[100px] rounded-full bg-[#D4D4D4]" />}
|
|
97
|
+
{children}
|
|
98
|
+
</div>
|
|
99
|
+
),
|
|
100
|
+
);
|
|
101
|
+
DrawerPanel.displayName = "DrawerPanel";
|
|
102
|
+
|
|
60
103
|
const DrawerContent = React.forwardRef<
|
|
61
104
|
React.ElementRef<typeof DrawerPrimitive.Content>,
|
|
62
105
|
DrawerContentProps
|
|
@@ -65,7 +108,6 @@ const DrawerContent = React.forwardRef<
|
|
|
65
108
|
{
|
|
66
109
|
className,
|
|
67
110
|
children,
|
|
68
|
-
showHandle = true,
|
|
69
111
|
notch,
|
|
70
112
|
notchSide = "left",
|
|
71
113
|
framed: framedProp,
|
|
@@ -77,77 +119,57 @@ const DrawerContent = React.forwardRef<
|
|
|
77
119
|
) => {
|
|
78
120
|
const framed = framedProp ?? true;
|
|
79
121
|
return (
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
className={cn(
|
|
85
|
-
"fixed inset-x-0 bottom-0 z-50 mt-24 flex h-auto flex-col items-stretch m-1",
|
|
86
|
-
wrapperClassName,
|
|
87
|
-
)}
|
|
88
|
-
{...props}
|
|
89
|
-
>
|
|
90
|
-
{notch && (
|
|
91
|
-
<div className={notchSide === "right" ? "self-end" : "self-start"}>
|
|
92
|
-
{React.isValidElement(notch)
|
|
93
|
-
? React.cloneElement(
|
|
94
|
-
notch as React.ReactElement<{ side?: "left" | "right" }>,
|
|
95
|
-
{ side: notchSide },
|
|
96
|
-
)
|
|
97
|
-
: notch}
|
|
98
|
-
</div>
|
|
99
|
-
)}
|
|
100
|
-
<div
|
|
122
|
+
<DrawerPortal>
|
|
123
|
+
<DrawerOverlay />
|
|
124
|
+
<DrawerPrimitive.Content
|
|
125
|
+
ref={ref}
|
|
101
126
|
className={cn(
|
|
102
|
-
"flex
|
|
103
|
-
|
|
104
|
-
? "p-1.5 bg-black-400 shadow-[0_0_4px_rgba(0,0,0,0.2),0_0_30px_rgba(0,0,0,0.4)]"
|
|
105
|
-
: "p-0",
|
|
106
|
-
framed && notch
|
|
107
|
-
? notchSide === "right"
|
|
108
|
-
? "rounded-tr-none rounded-tl-[22px] rounded-b-[22px]"
|
|
109
|
-
: "rounded-tl-none rounded-tr-[22px] rounded-b-[22px]"
|
|
110
|
-
: framed
|
|
111
|
-
? "rounded-t-[22px]"
|
|
112
|
-
: "",
|
|
113
|
-
trayClassName,
|
|
127
|
+
"fixed inset-x-0 bottom-0 z-50 mt-24 flex h-auto flex-col items-stretch m-1",
|
|
128
|
+
wrapperClassName,
|
|
114
129
|
)}
|
|
130
|
+
{...props}
|
|
115
131
|
>
|
|
132
|
+
{notch && (
|
|
133
|
+
<div className={notchSide === "right" ? "self-end" : "self-start"}>
|
|
134
|
+
{React.isValidElement(notch)
|
|
135
|
+
? React.cloneElement(notch as React.ReactElement<{ side?: "left" | "right" }>, {
|
|
136
|
+
side: notchSide,
|
|
137
|
+
})
|
|
138
|
+
: notch}
|
|
139
|
+
</div>
|
|
140
|
+
)}
|
|
141
|
+
{/* The tray. It frames and positions, but paints nothing over its children —
|
|
142
|
+
each child brings its own background (see `DrawerPanel`). Supply a `gap-*`
|
|
143
|
+
via `className` when the tray holds more than one. */}
|
|
116
144
|
<div
|
|
117
|
-
// The content surface is always light (#F0F0F0) regardless of the
|
|
118
|
-
// page theme, so pin a light theme here. This makes theme-aware
|
|
119
|
-
// content tokens (DrawerTitle/Description and any consumer content)
|
|
120
|
-
// resolve to their dark-on-light values instead of following a dark
|
|
121
|
-
// page theme (which would render white-on-light = invisible).
|
|
122
|
-
data-theme="light"
|
|
123
145
|
className={cn(
|
|
124
|
-
"flex flex-1
|
|
125
|
-
framed
|
|
146
|
+
"flex flex-1 min-h-0",
|
|
147
|
+
framed
|
|
148
|
+
? "p-1.5 bg-black-400 shadow-[0_0_4px_rgba(0,0,0,0.2),0_0_30px_rgba(0,0,0,0.4)]"
|
|
149
|
+
: "p-0",
|
|
150
|
+
framed && notch
|
|
151
|
+
? notchSide === "right"
|
|
152
|
+
? "rounded-tr-none rounded-tl-[22px] rounded-b-[22px]"
|
|
153
|
+
: "rounded-tl-none rounded-tr-[22px] rounded-b-[22px]"
|
|
154
|
+
: framed
|
|
155
|
+
? "rounded-t-[22px]"
|
|
156
|
+
: "",
|
|
126
157
|
className,
|
|
158
|
+
trayClassName,
|
|
127
159
|
)}
|
|
128
160
|
>
|
|
129
|
-
{showHandle && !notch && (
|
|
130
|
-
<div className="mx-auto h-2 w-[100px] rounded-full bg-[#D4D4D4]" />
|
|
131
|
-
)}
|
|
132
161
|
{children}
|
|
133
162
|
</div>
|
|
134
|
-
</
|
|
135
|
-
</
|
|
136
|
-
</DrawerPortal>
|
|
163
|
+
</DrawerPrimitive.Content>
|
|
164
|
+
</DrawerPortal>
|
|
137
165
|
);
|
|
138
166
|
},
|
|
139
167
|
);
|
|
140
168
|
DrawerContent.displayName = "DrawerContent";
|
|
141
169
|
|
|
142
|
-
const DrawerHeader = ({
|
|
143
|
-
className,
|
|
144
|
-
...props
|
|
145
|
-
}: React.HTMLAttributes<HTMLDivElement>) => (
|
|
170
|
+
const DrawerHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (
|
|
146
171
|
<div
|
|
147
|
-
className={cn(
|
|
148
|
-
"flex flex-row justify-between items-stretch gap-2 px-1 pt-1",
|
|
149
|
-
className,
|
|
150
|
-
)}
|
|
172
|
+
className={cn("flex flex-row justify-between items-stretch gap-2 px-1 pt-1", className)}
|
|
151
173
|
{...props}
|
|
152
174
|
/>
|
|
153
175
|
);
|
|
@@ -159,25 +181,15 @@ const drawerHeaderPane = cva(
|
|
|
159
181
|
"flex items-center gap-2 rounded-[14px] border p-2 bg-[#131415] border-[#2C2D2E] shadow-[0_0_32px_2px_rgba(0,0,0,0.05)] [&_[data-slot=drawer-title]]:text-white [&_[data-slot=drawer-description]]:text-[#9FA0A1]",
|
|
160
182
|
);
|
|
161
183
|
|
|
162
|
-
const DrawerHeaderTitle = ({
|
|
163
|
-
className,
|
|
164
|
-
...props
|
|
165
|
-
}: React.HTMLAttributes<HTMLDivElement>) => (
|
|
184
|
+
const DrawerHeaderTitle = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (
|
|
166
185
|
// Dark surface — pin a dark theme so any buttons/content inside resolve their
|
|
167
186
|
// theme tokens for dark (the surrounding content surface is data-theme=light).
|
|
168
187
|
<div data-theme="dark" className={cn(drawerHeaderPane(), className)} {...props} />
|
|
169
188
|
);
|
|
170
189
|
DrawerHeaderTitle.displayName = "DrawerHeaderTitle";
|
|
171
190
|
|
|
172
|
-
const DrawerHeaderActions = ({
|
|
173
|
-
className,
|
|
174
|
-
...props
|
|
175
|
-
}: React.HTMLAttributes<HTMLDivElement>) => (
|
|
176
|
-
<div
|
|
177
|
-
data-theme="dark"
|
|
178
|
-
className={cn(drawerHeaderPane(), "justify-end", className)}
|
|
179
|
-
{...props}
|
|
180
|
-
/>
|
|
191
|
+
const DrawerHeaderActions = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (
|
|
192
|
+
<div data-theme="dark" className={cn(drawerHeaderPane(), "justify-end", className)} {...props} />
|
|
181
193
|
);
|
|
182
194
|
DrawerHeaderActions.displayName = "DrawerHeaderActions";
|
|
183
195
|
|
|
@@ -199,29 +211,17 @@ const drawerBadge = cva(
|
|
|
199
211
|
);
|
|
200
212
|
|
|
201
213
|
interface DrawerBadgeProps
|
|
202
|
-
extends
|
|
203
|
-
Omit<React.HTMLAttributes<HTMLSpanElement>, "color">,
|
|
204
|
-
VariantProps<typeof drawerBadge> {}
|
|
214
|
+
extends Omit<React.HTMLAttributes<HTMLSpanElement>, "color">, VariantProps<typeof drawerBadge> {}
|
|
205
215
|
|
|
206
216
|
const DrawerBadge = React.forwardRef<HTMLSpanElement, DrawerBadgeProps>(
|
|
207
217
|
({ className, color, ...props }, ref) => (
|
|
208
|
-
<span
|
|
209
|
-
ref={ref}
|
|
210
|
-
className={cn(drawerBadge({ color }), className)}
|
|
211
|
-
{...props}
|
|
212
|
-
/>
|
|
218
|
+
<span ref={ref} className={cn(drawerBadge({ color }), className)} {...props} />
|
|
213
219
|
),
|
|
214
220
|
);
|
|
215
221
|
DrawerBadge.displayName = "DrawerBadge";
|
|
216
222
|
|
|
217
|
-
const DrawerFooter = ({
|
|
218
|
-
className,
|
|
219
|
-
...props
|
|
220
|
-
}: React.HTMLAttributes<HTMLDivElement>) => (
|
|
221
|
-
<div
|
|
222
|
-
className={cn("mt-auto flex flex-col gap-2 p-4", className)}
|
|
223
|
-
{...props}
|
|
224
|
-
/>
|
|
223
|
+
const DrawerFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (
|
|
224
|
+
<div className={cn("mt-auto flex flex-col gap-2 p-4", className)} {...props} />
|
|
225
225
|
);
|
|
226
226
|
DrawerFooter.displayName = "DrawerFooter";
|
|
227
227
|
|
|
@@ -229,23 +229,12 @@ interface DrawerNotchProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
|
229
229
|
side?: "left" | "right";
|
|
230
230
|
}
|
|
231
231
|
|
|
232
|
-
const DrawerNotch = ({
|
|
233
|
-
className,
|
|
234
|
-
children,
|
|
235
|
-
side = "left",
|
|
236
|
-
...props
|
|
237
|
-
}: DrawerNotchProps) => {
|
|
232
|
+
const DrawerNotch = ({ className, children, side = "left", ...props }: DrawerNotchProps) => {
|
|
238
233
|
// Wedge bridges the notch's bottom-edge corner into the tray's top edge.
|
|
239
234
|
// For a left-attached notch (the default), the wedge sits at the notch's
|
|
240
235
|
// bottom-right; for a right-attached notch, mirror it to the bottom-left.
|
|
241
236
|
const wedge = (
|
|
242
|
-
<svg
|
|
243
|
-
aria-hidden
|
|
244
|
-
width="12"
|
|
245
|
-
height="12"
|
|
246
|
-
viewBox="0 0 12 12"
|
|
247
|
-
className="block shrink-0 self-end"
|
|
248
|
-
>
|
|
237
|
+
<svg aria-hidden width="12" height="12" viewBox="0 0 12 12" className="block shrink-0 self-end">
|
|
249
238
|
<path
|
|
250
239
|
d={
|
|
251
240
|
side === "right"
|
|
@@ -280,18 +269,23 @@ const DrawerNotchClose = React.forwardRef<
|
|
|
280
269
|
HTMLButtonElement,
|
|
281
270
|
React.ButtonHTMLAttributes<HTMLButtonElement>
|
|
282
271
|
>(({ className, children, ...props }, ref) => (
|
|
283
|
-
<
|
|
272
|
+
<Button
|
|
284
273
|
ref={ref}
|
|
285
274
|
type="button"
|
|
286
275
|
aria-label="Close"
|
|
276
|
+
buttonType="icon"
|
|
277
|
+
size="S"
|
|
278
|
+
variant="PrimeContStyle"
|
|
287
279
|
className={cn(
|
|
288
|
-
|
|
280
|
+
// Glare Button (icon, S = 22×22) with the notch's own circular radius + translucent look
|
|
281
|
+
// (S is otherwise rounded-[4px]).
|
|
282
|
+
"!rounded-[13px] bg-white/15 text-white hover:bg-white/25 hover:text-white",
|
|
289
283
|
className,
|
|
290
284
|
)}
|
|
291
285
|
{...props}
|
|
292
286
|
>
|
|
293
|
-
{children ?? <i className="ri-close-fill text-[14px]" />}
|
|
294
|
-
</
|
|
287
|
+
{children ?? <i className="ri-close-fill !text-[14px]" />}
|
|
288
|
+
</Button>
|
|
295
289
|
));
|
|
296
290
|
DrawerNotchClose.displayName = "DrawerNotchClose";
|
|
297
291
|
|
|
@@ -314,30 +308,22 @@ interface DrawerNotchPillProps
|
|
|
314
308
|
Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, "color">,
|
|
315
309
|
VariantProps<typeof drawerNotchPill> {}
|
|
316
310
|
|
|
317
|
-
const DrawerNotchPill = React.forwardRef<
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
));
|
|
311
|
+
const DrawerNotchPill = React.forwardRef<HTMLButtonElement, DrawerNotchPillProps>(
|
|
312
|
+
({ className, color, children, ...props }, ref) => (
|
|
313
|
+
<button
|
|
314
|
+
ref={ref}
|
|
315
|
+
type="button"
|
|
316
|
+
className={cn(drawerNotchPill({ color }), className)}
|
|
317
|
+
{...props}
|
|
318
|
+
>
|
|
319
|
+
{children}
|
|
320
|
+
</button>
|
|
321
|
+
),
|
|
322
|
+
);
|
|
330
323
|
DrawerNotchPill.displayName = "DrawerNotchPill";
|
|
331
324
|
|
|
332
|
-
const DrawerNotchDivider = ({
|
|
333
|
-
className,
|
|
334
|
-
...props
|
|
335
|
-
}: React.HTMLAttributes<HTMLDivElement>) => (
|
|
336
|
-
<div
|
|
337
|
-
aria-hidden
|
|
338
|
-
className={cn("h-[18px] w-px bg-white/20", className)}
|
|
339
|
-
{...props}
|
|
340
|
-
/>
|
|
325
|
+
const DrawerNotchDivider = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (
|
|
326
|
+
<div aria-hidden className={cn("h-[18px] w-px bg-white/20", className)} {...props} />
|
|
341
327
|
);
|
|
342
328
|
DrawerNotchDivider.displayName = "DrawerNotchDivider";
|
|
343
329
|
|
|
@@ -346,12 +332,7 @@ interface DrawerNotchAppProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
|
346
332
|
name: React.ReactNode;
|
|
347
333
|
}
|
|
348
334
|
|
|
349
|
-
const DrawerNotchApp = ({
|
|
350
|
-
className,
|
|
351
|
-
icon,
|
|
352
|
-
name,
|
|
353
|
-
...props
|
|
354
|
-
}: DrawerNotchAppProps) => (
|
|
335
|
+
const DrawerNotchApp = ({ className, icon, name, ...props }: DrawerNotchAppProps) => (
|
|
355
336
|
<div className={cn("flex items-center gap-2.5 px-1", className)} {...props}>
|
|
356
337
|
{icon && (
|
|
357
338
|
<div className="flex h-[22px] w-[22px] items-center justify-center overflow-hidden rounded-[5.6px] bg-black shadow-[0_0_4.66px_rgba(0,0,0,0.3),0_0.75px_0.75px_rgba(0,0,0,0.2)]">
|
|
@@ -406,6 +387,7 @@ export {
|
|
|
406
387
|
DrawerTrigger,
|
|
407
388
|
DrawerClose,
|
|
408
389
|
DrawerContent,
|
|
390
|
+
DrawerPanel,
|
|
409
391
|
DrawerHeader,
|
|
410
392
|
DrawerHeaderTitle,
|
|
411
393
|
DrawerHeaderActions,
|