torch-glare 2.5.6 → 2.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -3
- package/dist/bin/index.js +9 -24
- package/dist/bin/index.js.map +1 -1
- package/dist/src/commands/add.d.ts +2 -2
- package/dist/src/commands/add.d.ts.map +1 -1
- package/dist/src/commands/add.js +4 -70
- package/dist/src/commands/add.js.map +1 -1
- package/dist/src/commands/hook.d.ts +5 -4
- package/dist/src/commands/hook.d.ts.map +1 -1
- package/dist/src/commands/hook.js +7 -75
- package/dist/src/commands/hook.js.map +1 -1
- package/dist/src/commands/init.js +1 -1
- package/dist/src/commands/init.js.map +1 -1
- package/dist/src/commands/layout.d.ts +5 -4
- package/dist/src/commands/layout.d.ts.map +1 -1
- package/dist/src/commands/layout.js +7 -75
- package/dist/src/commands/layout.js.map +1 -1
- package/dist/src/commands/provider.d.ts +5 -4
- package/dist/src/commands/provider.d.ts.map +1 -1
- package/dist/src/commands/provider.js +7 -75
- package/dist/src/commands/provider.js.map +1 -1
- package/dist/src/commands/update.d.ts.map +1 -1
- package/dist/src/commands/update.js +78 -43
- package/dist/src/commands/update.js.map +1 -1
- package/dist/src/commands/utils.d.ts +5 -4
- package/dist/src/commands/utils.d.ts.map +1 -1
- package/dist/src/commands/utils.js +7 -80
- package/dist/src/commands/utils.js.map +1 -1
- package/dist/src/shared/addFromRegistry.d.ts +16 -0
- package/dist/src/shared/addFromRegistry.d.ts.map +1 -0
- package/dist/src/shared/addFromRegistry.js +88 -0
- package/dist/src/shared/addFromRegistry.js.map +1 -0
- package/dist/src/shared/getInstallCommand.d.ts.map +1 -1
- package/dist/src/shared/getInstallCommand.js +5 -0
- package/dist/src/shared/getInstallCommand.js.map +1 -1
- package/dist/src/shared/installDependencies.d.ts +0 -10
- package/dist/src/shared/installDependencies.d.ts.map +1 -1
- package/dist/src/shared/installDependencies.js +0 -17
- package/dist/src/shared/installDependencies.js.map +1 -1
- package/dist/src/shared/installFromPlan.d.ts +7 -5
- package/dist/src/shared/installFromPlan.d.ts.map +1 -1
- package/dist/src/shared/installFromPlan.js +103 -36
- package/dist/src/shared/installFromPlan.js.map +1 -1
- package/dist/src/shared/loadRegistry.d.ts +12 -3
- package/dist/src/shared/loadRegistry.d.ts.map +1 -1
- package/dist/src/shared/loadRegistry.js +19 -20
- package/dist/src/shared/loadRegistry.js.map +1 -1
- package/dist/src/shared/registryClient.d.ts +19 -0
- package/dist/src/shared/registryClient.d.ts.map +1 -0
- package/dist/src/shared/registryClient.js +128 -0
- package/dist/src/shared/registryClient.js.map +1 -0
- package/dist/src/shared/resolveEntry.d.ts +10 -7
- package/dist/src/shared/resolveEntry.d.ts.map +1 -1
- package/dist/src/shared/resolveEntry.js +18 -13
- package/dist/src/shared/resolveEntry.js.map +1 -1
- package/dist/src/shared/suggestOtherCommand.d.ts +7 -1
- package/dist/src/shared/suggestOtherCommand.d.ts.map +1 -1
- package/dist/src/shared/suggestOtherCommand.js +29 -23
- package/dist/src/shared/suggestOtherCommand.js.map +1 -1
- package/dist/src/types/main.d.ts +31 -2
- package/dist/src/types/main.d.ts.map +1 -1
- package/package.json +6 -11
- package/apps/lib/components/ActionButton.tsx +0 -93
- package/apps/lib/components/ActionsGroup.tsx +0 -27
- package/apps/lib/components/AlertDialog.tsx +0 -204
- package/apps/lib/components/Avatar.tsx +0 -46
- package/apps/lib/components/Badge.tsx +0 -250
- package/apps/lib/components/BadgeField.tsx +0 -403
- package/apps/lib/components/Breadcrumb.tsx +0 -280
- package/apps/lib/components/Button.tsx +0 -325
- package/apps/lib/components/ButtonGroup.tsx +0 -190
- package/apps/lib/components/Calendar.tsx +0 -115
- package/apps/lib/components/Card.tsx +0 -95
- package/apps/lib/components/Checkbox.tsx +0 -42
- package/apps/lib/components/ColorPicker.tsx +0 -441
- package/apps/lib/components/ConclusionHeader.tsx +0 -148
- package/apps/lib/components/ContextMenu.tsx +0 -571
- package/apps/lib/components/CountBadge.tsx +0 -52
- package/apps/lib/components/DataTable.tsx +0 -213
- package/apps/lib/components/DataViews/badge.ts +0 -49
- package/apps/lib/components/DataViews/cell.tsx +0 -324
- package/apps/lib/components/DataViews/context.ts +0 -144
- package/apps/lib/components/DataViews/data-views.tsx +0 -395
- package/apps/lib/components/DataViews/filters/children.tsx +0 -98
- package/apps/lib/components/DataViews/filters/custom.tsx +0 -34
- package/apps/lib/components/DataViews/filters/filters.tsx +0 -157
- package/apps/lib/components/DataViews/filters/index.ts +0 -4
- package/apps/lib/components/DataViews/filters/labelled.tsx +0 -20
- package/apps/lib/components/DataViews/filters/presets.tsx +0 -65
- package/apps/lib/components/DataViews/filters/sync.tsx +0 -35
- package/apps/lib/components/DataViews/filters/values.ts +0 -173
- package/apps/lib/components/DataViews/header.tsx +0 -220
- package/apps/lib/components/DataViews/hooks/index.ts +0 -5
- package/apps/lib/components/DataViews/hooks/useActiveRow.ts +0 -22
- package/apps/lib/components/DataViews/hooks/useControllable.ts +0 -52
- package/apps/lib/components/DataViews/index.ts +0 -88
- package/apps/lib/components/DataViews/panel/columns.tsx +0 -153
- package/apps/lib/components/DataViews/panel/controls.tsx +0 -106
- package/apps/lib/components/DataViews/panel/index.ts +0 -3
- package/apps/lib/components/DataViews/panel/panel.tsx +0 -164
- package/apps/lib/components/DataViews/panel/saved-views.tsx +0 -67
- package/apps/lib/components/DataViews/panel/section.tsx +0 -81
- package/apps/lib/components/DataViews/panel/sort.tsx +0 -42
- package/apps/lib/components/DataViews/panel/tab.tsx +0 -31
- package/apps/lib/components/DataViews/slots.ts +0 -72
- package/apps/lib/components/DataViews/states.tsx +0 -73
- package/apps/lib/components/DataViews/types.ts +0 -510
- package/apps/lib/components/DataViews/views/board-view.tsx +0 -381
- package/apps/lib/components/DataViews/views/card-rows.tsx +0 -36
- package/apps/lib/components/DataViews/views/inbox-view.tsx +0 -260
- package/apps/lib/components/DataViews/views/pane-views.tsx +0 -196
- package/apps/lib/components/DataViews/views/table-view.tsx +0 -493
- package/apps/lib/components/DataViews/views/tree-view.tsx +0 -367
- package/apps/lib/components/DatePicker.tsx +0 -232
- package/apps/lib/components/Dialog.tsx +0 -116
- package/apps/lib/components/Divider.tsx +0 -28
- package/apps/lib/components/Drawer.tsx +0 -451
- package/apps/lib/components/DropdownMenu.tsx +0 -554
- package/apps/lib/components/FieldHint.tsx +0 -69
- package/apps/lib/components/Form.tsx +0 -182
- package/apps/lib/components/FormBuilder/context.ts +0 -85
- package/apps/lib/components/FormBuilder/field-kind.ts +0 -28
- package/apps/lib/components/FormBuilder/fields/ChoiceFields.tsx +0 -60
- package/apps/lib/components/FormBuilder/fields/ColorField.tsx +0 -59
- package/apps/lib/components/FormBuilder/fields/CustomField.tsx +0 -11
- package/apps/lib/components/FormBuilder/fields/DateField.tsx +0 -32
- package/apps/lib/components/FormBuilder/fields/FieldArray.tsx +0 -74
- package/apps/lib/components/FormBuilder/fields/FieldShell.tsx +0 -168
- package/apps/lib/components/FormBuilder/fields/FileField.tsx +0 -39
- package/apps/lib/components/FormBuilder/fields/OptionListFields.tsx +0 -132
- package/apps/lib/components/FormBuilder/fields/OtpField.tsx +0 -31
- package/apps/lib/components/FormBuilder/fields/PhoneField.tsx +0 -109
- package/apps/lib/components/FormBuilder/fields/RichTextEditorField.tsx +0 -31
- package/apps/lib/components/FormBuilder/fields/SelectField.tsx +0 -114
- package/apps/lib/components/FormBuilder/fields/SignatureField.tsx +0 -157
- package/apps/lib/components/FormBuilder/fields/SliderField.tsx +0 -67
- package/apps/lib/components/FormBuilder/fields/SwitchBoxField.tsx +0 -41
- package/apps/lib/components/FormBuilder/fields/TableField.tsx +0 -336
- package/apps/lib/components/FormBuilder/fields/TextField.tsx +0 -213
- package/apps/lib/components/FormBuilder/fields/TreeSelectField.tsx +0 -43
- package/apps/lib/components/FormBuilder/fields/countries.ts +0 -303
- package/apps/lib/components/FormBuilder/fields/index.ts +0 -25
- package/apps/lib/components/FormBuilder/form-builder.tsx +0 -198
- package/apps/lib/components/FormBuilder/index.ts +0 -31
- package/apps/lib/components/FormBuilder/numberFormat.ts +0 -16
- package/apps/lib/components/FormBuilder/submit.tsx +0 -67
- package/apps/lib/components/FormBuilder/types.ts +0 -316
- package/apps/lib/components/FormRenderer/FormDrawer.tsx +0 -250
- package/apps/lib/components/FormRenderer/detail.tsx +0 -256
- package/apps/lib/components/FormRenderer/form-renderer.tsx +0 -358
- package/apps/lib/components/FormRenderer/header.tsx +0 -88
- package/apps/lib/components/FormRenderer/index.ts +0 -17
- package/apps/lib/components/FormRenderer/notch-action.tsx +0 -64
- package/apps/lib/components/FormRenderer/section.tsx +0 -39
- package/apps/lib/components/FormRenderer/stepper.tsx +0 -393
- package/apps/lib/components/FormRenderer/types.ts +0 -115
- package/apps/lib/components/FormSummary.tsx +0 -282
- package/apps/lib/components/HeaderBar.tsx +0 -117
- package/apps/lib/components/ImageAttachment.tsx +0 -209
- package/apps/lib/components/InnerLabelField.tsx +0 -154
- package/apps/lib/components/Input.tsx +0 -224
- package/apps/lib/components/InputField.tsx +0 -147
- package/apps/lib/components/InputOTP.tsx +0 -84
- package/apps/lib/components/Label.tsx +0 -129
- package/apps/lib/components/LabelField.tsx +0 -76
- package/apps/lib/components/LabeledCheckBox.tsx +0 -51
- package/apps/lib/components/LabeledRadio.tsx +0 -51
- package/apps/lib/components/LinkButton.tsx +0 -94
- package/apps/lib/components/LoginButton.tsx +0 -51
- package/apps/lib/components/PasswordLevel.tsx +0 -58
- package/apps/lib/components/Popover.tsx +0 -312
- package/apps/lib/components/ProfileMenu.tsx +0 -85
- package/apps/lib/components/Radio.tsx +0 -59
- package/apps/lib/components/RadioCard.tsx +0 -50
- package/apps/lib/components/ScrollArea.tsx +0 -54
- package/apps/lib/components/SearchField.tsx +0 -62
- package/apps/lib/components/SearchableSelect.tsx +0 -318
- package/apps/lib/components/SearchableTable.tsx +0 -344
- package/apps/lib/components/SearchableTree.tsx +0 -485
- package/apps/lib/components/SearchableTreeDialog.tsx +0 -502
- package/apps/lib/components/SectionBlock.tsx +0 -168
- package/apps/lib/components/Select.tsx +0 -347
- package/apps/lib/components/SimpleSelect.tsx +0 -225
- package/apps/lib/components/Skeleton.tsx +0 -12
- package/apps/lib/components/SlideDatePicker.tsx +0 -255
- package/apps/lib/components/SpinLoading.tsx +0 -174
- package/apps/lib/components/Stepper.tsx +0 -480
- package/apps/lib/components/Switch.tsx +0 -82
- package/apps/lib/components/TabFormItem.tsx +0 -153
- package/apps/lib/components/TabSwitch.tsx +0 -172
- package/apps/lib/components/Table.tsx +0 -597
- package/apps/lib/components/TextEditor/ChartBlockTool.ts +0 -676
- package/apps/lib/components/TextEditor/RichTextField.tsx +0 -46
- package/apps/lib/components/TextEditor/TableDnDWrapper.ts +0 -462
- package/apps/lib/components/TextEditor/TextEditor.tsx +0 -1164
- package/apps/lib/components/TextEditor/TextEditorToolbar.tsx +0 -429
- package/apps/lib/components/TextEditor/editor-tools/AlignmentTune.ts +0 -70
- package/apps/lib/components/TextEditor/editor-tools/ColorInlineTool.ts +0 -50
- package/apps/lib/components/TextEditor/editor-tools/StrikethroughInlineTool.ts +0 -48
- package/apps/lib/components/TextEditor/editor-tools/inlineFormat.ts +0 -98
- package/apps/lib/components/TextEditor/editorjs.d.ts +0 -60
- package/apps/lib/components/TextEditor/index.ts +0 -7
- package/apps/lib/components/TextEditor/markdownParser.ts +0 -346
- package/apps/lib/components/Textarea.tsx +0 -117
- package/apps/lib/components/Timeline.tsx +0 -263
- package/apps/lib/components/Toast.tsx +0 -87
- package/apps/lib/components/Toggle.tsx +0 -125
- package/apps/lib/components/ToggleButton.tsx +0 -140
- package/apps/lib/components/Tooltip.tsx +0 -116
- package/apps/lib/components/TransparentLabel.tsx +0 -71
- package/apps/lib/components/TreeDropDown.tsx +0 -115
- package/apps/lib/components/TreeFolder/TreeFolder.tsx +0 -380
- package/apps/lib/components/TreeFolder/TreeFolderBreadcrumb.tsx +0 -75
- package/apps/lib/components/TreeFolder/TreeFolderRow.tsx +0 -354
- package/apps/lib/components/TreeFolder/TreeFolderStyles.tsx +0 -60
- package/apps/lib/components/TreeFolder/icons.tsx +0 -60
- package/apps/lib/components/TreeFolder/index.ts +0 -24
- package/apps/lib/components/TreeFolder/treeFolderUtils.ts +0 -109
- package/apps/lib/components/TreeFolder/types.ts +0 -77
- package/apps/lib/components/TreeFolder/useTreeFolderDnD.ts +0 -118
- package/apps/lib/hooks/useActiveTreeItem.ts +0 -61
- package/apps/lib/hooks/useClickOutside.ts +0 -27
- package/apps/lib/hooks/useDragDrop.tsx +0 -365
- package/apps/lib/hooks/useHtmlDir.ts +0 -31
- package/apps/lib/hooks/useInfiniteScroll.ts +0 -108
- package/apps/lib/hooks/useIsMobile.ts +0 -21
- package/apps/lib/hooks/useResize.ts +0 -67
- package/apps/lib/hooks/useTagSelection.ts +0 -300
- package/apps/lib/layouts/CNLayout.tsx +0 -372
- package/apps/lib/layouts/DataViewCard.tsx +0 -62
- package/apps/lib/layouts/FieldSection.tsx +0 -91
- package/apps/lib/layouts/TreeSubLayout.tsx +0 -173
- package/apps/lib/providers/ThemeProvider.tsx +0 -84
- package/apps/lib/registry.json +0 -1217
- package/apps/lib/tsconfig.json +0 -9
- package/apps/lib/tsconfig.tsbuildinfo +0 -1
- package/apps/lib/utils/cn.ts +0 -6
- package/apps/lib/utils/color.ts +0 -175
- package/apps/lib/utils/dataViews/path.ts +0 -67
- package/apps/lib/utils/dataViews/query.ts +0 -73
- package/apps/lib/utils/dataViews/types.ts +0 -187
- package/apps/lib/utils/dateFormat.ts +0 -108
- package/apps/lib/utils/resize.ts +0 -31
- package/apps/lib/utils/scroller.ts +0 -26
- package/apps/lib/utils/types.ts +0 -16
- package/docs/BLOCKS.md +0 -129
- package/docs/CHANGELOG-1.1.16.md +0 -108
- package/docs/Cover.png +0 -0
- package/docs/README.md +0 -215
- package/docs/components/action-button.md +0 -638
- package/docs/components/actions-group.md +0 -708
- package/docs/components/alert-dialog.md +0 -920
- package/docs/components/avatar.md +0 -709
- package/docs/components/badge-field.md +0 -738
- package/docs/components/badge.md +0 -301
- package/docs/components/breadcrumb.md +0 -930
- package/docs/components/button-group.md +0 -650
- package/docs/components/button.md +0 -639
- package/docs/components/calendar.md +0 -555
- package/docs/components/card.md +0 -622
- package/docs/components/chart-block-tool.md +0 -129
- package/docs/components/checkbox.md +0 -699
- package/docs/components/cn-layout.md +0 -854
- package/docs/components/color-picker.md +0 -101
- package/docs/components/conclusion-header.md +0 -80
- package/docs/components/context-menu.md +0 -483
- package/docs/components/count-badge.md +0 -560
- package/docs/components/data-table.md +0 -854
- package/docs/components/data-views/backend-response.md +0 -324
- package/docs/components/data-views/examples/a11y-rtl.md +0 -250
- package/docs/components/data-views/examples/api-orders-route.md +0 -130
- package/docs/components/data-views/examples/fields.md +0 -362
- package/docs/components/data-views/examples/filters.md +0 -307
- package/docs/components/data-views/examples/inbox-routing.md +0 -218
- package/docs/components/data-views/examples/index.md +0 -29
- package/docs/components/data-views/examples/overview.md +0 -244
- package/docs/components/data-views/examples/panel.md +0 -212
- package/docs/components/data-views/examples/scale.md +0 -231
- package/docs/components/data-views/examples/server-side.md +0 -210
- package/docs/components/data-views/examples/state.md +0 -250
- package/docs/components/data-views/examples/tree-custom.md +0 -388
- package/docs/components/data-views/examples/view-registry.md +0 -313
- package/docs/components/data-views/examples/views.md +0 -534
- package/docs/components/data-views/guide.md +0 -405
- package/docs/components/data-views/index.md +0 -1521
- package/docs/components/data-views/migration.md +0 -81
- package/docs/components/date-picker.md +0 -857
- package/docs/components/dialog.md +0 -929
- package/docs/components/divider.md +0 -766
- package/docs/components/drawer.md +0 -654
- package/docs/components/dropdown-menu.md +0 -668
- package/docs/components/field-hint.md +0 -898
- package/docs/components/field-section.md +0 -781
- package/docs/components/form-builder.md +0 -284
- package/docs/components/form-renderer.md +0 -396
- package/docs/components/form-summary.md +0 -138
- package/docs/components/form.md +0 -785
- package/docs/components/header-bar.md +0 -188
- package/docs/components/image-attachment.md +0 -906
- package/docs/components/inner-label-field.md +0 -819
- package/docs/components/input-field.md +0 -623
- package/docs/components/input-otp.md +0 -756
- package/docs/components/input.md +0 -634
- package/docs/components/label-field.md +0 -770
- package/docs/components/label.md +0 -761
- package/docs/components/labeled-check-box.md +0 -642
- package/docs/components/labeled-radio.md +0 -796
- package/docs/components/link-button.md +0 -685
- package/docs/components/login-button.md +0 -872
- package/docs/components/password-level.md +0 -803
- package/docs/components/popover.md +0 -649
- package/docs/components/profile-menu.md +0 -656
- package/docs/components/radio-card.md +0 -801
- package/docs/components/radio.md +0 -735
- package/docs/components/scroll-area.md +0 -691
- package/docs/components/search-field.md +0 -702
- package/docs/components/searchable-select.md +0 -368
- package/docs/components/searchable-table.md +0 -438
- package/docs/components/searchable-tree-dialog.md +0 -190
- package/docs/components/searchable-tree.md +0 -200
- package/docs/components/section-block.md +0 -483
- package/docs/components/select.md +0 -709
- package/docs/components/simple-select.md +0 -741
- package/docs/components/skeleton.md +0 -706
- package/docs/components/slide-date-picker.md +0 -837
- package/docs/components/spin-loading.md +0 -696
- package/docs/components/stepper.md +0 -316
- package/docs/components/switch.md +0 -770
- package/docs/components/tab-form-item.md +0 -773
- package/docs/components/tab-switch.md +0 -170
- package/docs/components/table-dnd-wrapper.md +0 -107
- package/docs/components/table.md +0 -1088
- package/docs/components/text-editor.md +0 -735
- package/docs/components/textarea.md +0 -681
- package/docs/components/timeline.md +0 -254
- package/docs/components/toast.md +0 -773
- package/docs/components/toggle-button.md +0 -643
- package/docs/components/toggle.md +0 -882
- package/docs/components/tooltip.md +0 -513
- package/docs/components/transparent-label.md +0 -721
- package/docs/components/tree-drop-down.md +0 -740
- package/docs/components/tree-folder.md +0 -110
- package/docs/components/tree-sub-layout.md +0 -707
- package/docs/explanation/architecture.md +0 -54
- package/docs/explanation/design-system.md +0 -52
- package/docs/how-to/form-and-list-recipes.md +0 -386
- package/docs/how-to/forms-with-form-builder.md +0 -472
- package/docs/how-to/guides.md +0 -1027
- package/docs/migration/changelog.md +0 -60
- package/docs/migration/form-builder-2.5.2.md +0 -113
- package/docs/reference/cli.md +0 -112
- package/docs/reference/components.md +0 -572
- package/docs/reference/hooks.md +0 -1523
- package/docs/reference/providers.md +0 -866
- package/docs/reference/tailwind-plugins.md +0 -942
- package/docs/reference/theme.md +0 -85
- package/docs/reference/types.md +0 -1016
- package/docs/reference/utilities.md +0 -726
- package/docs/tutorials/building-first-form.md +0 -846
- package/docs/tutorials/component-composition.md +0 -882
- package/docs/tutorials/getting-started.md +0 -302
- package/docs/tutorials/theming-basics.md +0 -785
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
|
|
3
|
-
import * as React from "react";
|
|
4
|
-
import * as DialogPrimitive from "@radix-ui/react-dialog";
|
|
5
|
-
|
|
6
|
-
import { cn } from "../utils/cn";
|
|
7
|
-
|
|
8
|
-
const Dialog = DialogPrimitive.Root;
|
|
9
|
-
|
|
10
|
-
const DialogTrigger = DialogPrimitive.Trigger;
|
|
11
|
-
|
|
12
|
-
const DialogPortal = DialogPrimitive.Portal;
|
|
13
|
-
|
|
14
|
-
const DialogClose = DialogPrimitive.Close;
|
|
15
|
-
|
|
16
|
-
const DialogOverlay = React.forwardRef<
|
|
17
|
-
React.ElementRef<typeof DialogPrimitive.Overlay>,
|
|
18
|
-
React.ComponentPropsWithoutRef<typeof DialogPrimitive.Overlay>
|
|
19
|
-
>(({ className, ...props }, ref) => (
|
|
20
|
-
<DialogPrimitive.Overlay
|
|
21
|
-
ref={ref}
|
|
22
|
-
className={cn(
|
|
23
|
-
"fixed inset-0 z-50 bg-black/80 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
|
|
24
|
-
className,
|
|
25
|
-
)}
|
|
26
|
-
{...props}
|
|
27
|
-
/>
|
|
28
|
-
));
|
|
29
|
-
DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
|
|
30
|
-
|
|
31
|
-
const DialogContent = React.forwardRef<
|
|
32
|
-
React.ElementRef<typeof DialogPrimitive.Content>,
|
|
33
|
-
React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>
|
|
34
|
-
>(({ className, children, ...props }, ref) => (
|
|
35
|
-
<DialogPortal>
|
|
36
|
-
<DialogOverlay />
|
|
37
|
-
<DialogPrimitive.Content
|
|
38
|
-
ref={ref}
|
|
39
|
-
className={cn(
|
|
40
|
-
"fixed left-[50%] top-[50%] z-50 flex flex-col items-start w-fit translate-x-[-50%] translate-y-[-50%] shadow-lg duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%]",
|
|
41
|
-
"flex justify-center items-center",
|
|
42
|
-
className,
|
|
43
|
-
)}
|
|
44
|
-
{...props}
|
|
45
|
-
>
|
|
46
|
-
{children}
|
|
47
|
-
</DialogPrimitive.Content>
|
|
48
|
-
</DialogPortal>
|
|
49
|
-
));
|
|
50
|
-
DialogContent.displayName = DialogPrimitive.Content.displayName;
|
|
51
|
-
|
|
52
|
-
const DialogCloseButton = React.forwardRef<
|
|
53
|
-
React.ElementRef<typeof DialogPrimitive.Close>,
|
|
54
|
-
React.ComponentPropsWithoutRef<typeof DialogPrimitive.Close>
|
|
55
|
-
>(({ className, children, ...props }, ref) => (
|
|
56
|
-
<DialogPrimitive.Close ref={ref} {...props} className={cn("m-0 p-0 h-fit", className)}>
|
|
57
|
-
{children}
|
|
58
|
-
</DialogPrimitive.Close>
|
|
59
|
-
));
|
|
60
|
-
DialogCloseButton.displayName = DialogPrimitive.Close.displayName;
|
|
61
|
-
const DialogHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (
|
|
62
|
-
<div className={cn("flex flex-col space-y-1.5 text-center sm:text-left", className)} {...props} />
|
|
63
|
-
);
|
|
64
|
-
DialogHeader.displayName = "DialogHeader";
|
|
65
|
-
|
|
66
|
-
const DialogFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (
|
|
67
|
-
<div
|
|
68
|
-
className={cn("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2", className)}
|
|
69
|
-
{...props}
|
|
70
|
-
/>
|
|
71
|
-
);
|
|
72
|
-
DialogFooter.displayName = "DialogFooter";
|
|
73
|
-
|
|
74
|
-
const DialogTitle = React.forwardRef<
|
|
75
|
-
React.ElementRef<typeof DialogPrimitive.Title>,
|
|
76
|
-
React.ComponentPropsWithoutRef<typeof DialogPrimitive.Title>
|
|
77
|
-
>(({ className, ...props }, ref) => (
|
|
78
|
-
<DialogPrimitive.Title
|
|
79
|
-
ref={ref}
|
|
80
|
-
className={cn(
|
|
81
|
-
"text-lg font-semibold leading-none tracking-tight text-content-presentation-global-primary",
|
|
82
|
-
className,
|
|
83
|
-
)}
|
|
84
|
-
{...props}
|
|
85
|
-
/>
|
|
86
|
-
));
|
|
87
|
-
DialogTitle.displayName = DialogPrimitive.Title.displayName;
|
|
88
|
-
|
|
89
|
-
const DialogDescription = React.forwardRef<
|
|
90
|
-
React.ElementRef<typeof DialogPrimitive.Description>,
|
|
91
|
-
React.ComponentPropsWithoutRef<typeof DialogPrimitive.Description>
|
|
92
|
-
>(({ className, ...props }, ref) => (
|
|
93
|
-
<DialogPrimitive.Description
|
|
94
|
-
ref={ref}
|
|
95
|
-
className={cn(
|
|
96
|
-
"text-sm text-muted-foreground text-content-presentation-global-primary",
|
|
97
|
-
className,
|
|
98
|
-
)}
|
|
99
|
-
{...props}
|
|
100
|
-
/>
|
|
101
|
-
));
|
|
102
|
-
DialogDescription.displayName = DialogPrimitive.Description.displayName;
|
|
103
|
-
|
|
104
|
-
export {
|
|
105
|
-
Dialog,
|
|
106
|
-
DialogPortal,
|
|
107
|
-
DialogOverlay,
|
|
108
|
-
DialogTrigger,
|
|
109
|
-
DialogClose,
|
|
110
|
-
DialogContent,
|
|
111
|
-
DialogHeader,
|
|
112
|
-
DialogFooter,
|
|
113
|
-
DialogTitle,
|
|
114
|
-
DialogDescription,
|
|
115
|
-
DialogCloseButton,
|
|
116
|
-
};
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
|
|
3
|
-
import * as React from "react";
|
|
4
|
-
import { cn } from "../utils/cn";
|
|
5
|
-
|
|
6
|
-
interface DividerProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
7
|
-
orientation?: "horizontal" | "vertical";
|
|
8
|
-
decorative?: boolean;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
const Divider = React.forwardRef<HTMLDivElement, DividerProps>(
|
|
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";
|
|
27
|
-
|
|
28
|
-
export { Divider };
|
|
@@ -1,451 +0,0 @@
|
|
|
1
|
-
"use client";
|
|
2
|
-
|
|
3
|
-
import * as React from "react";
|
|
4
|
-
import { Drawer as DrawerPrimitive } from "vaul";
|
|
5
|
-
import { cva, type VariantProps } from "class-variance-authority";
|
|
6
|
-
|
|
7
|
-
import { cn } from "../utils/cn";
|
|
8
|
-
import { Button } from "./Button";
|
|
9
|
-
|
|
10
|
-
const Drawer = ({
|
|
11
|
-
shouldScaleBackground = true,
|
|
12
|
-
...props
|
|
13
|
-
}: React.ComponentProps<typeof DrawerPrimitive.Root>) => (
|
|
14
|
-
<DrawerPrimitive.Root shouldScaleBackground={shouldScaleBackground} {...props} />
|
|
15
|
-
);
|
|
16
|
-
Drawer.displayName = "Drawer";
|
|
17
|
-
|
|
18
|
-
const DrawerNested = (props: React.ComponentProps<typeof DrawerPrimitive.NestedRoot>) => (
|
|
19
|
-
<DrawerPrimitive.NestedRoot {...props} />
|
|
20
|
-
);
|
|
21
|
-
DrawerNested.displayName = "DrawerNested";
|
|
22
|
-
|
|
23
|
-
const DrawerTrigger = DrawerPrimitive.Trigger;
|
|
24
|
-
|
|
25
|
-
const DrawerPortal = DrawerPrimitive.Portal;
|
|
26
|
-
|
|
27
|
-
const DrawerClose = DrawerPrimitive.Close;
|
|
28
|
-
|
|
29
|
-
const DrawerOverlay = React.forwardRef<
|
|
30
|
-
React.ElementRef<typeof DrawerPrimitive.Overlay>,
|
|
31
|
-
React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Overlay>
|
|
32
|
-
>(({ className, ...props }, ref) => (
|
|
33
|
-
<DrawerPrimitive.Overlay ref={ref} className={cn("fixed inset-0 z-50 ", className)} {...props} />
|
|
34
|
-
));
|
|
35
|
-
DrawerOverlay.displayName = DrawerPrimitive.Overlay.displayName;
|
|
36
|
-
|
|
37
|
-
interface DrawerContentProps extends React.ComponentPropsWithoutRef<
|
|
38
|
-
typeof DrawerPrimitive.Content
|
|
39
|
-
> {
|
|
40
|
-
/** @deprecated No effect here — the drag handle is `DrawerPanel`'s `showHandle`. */
|
|
41
|
-
showHandle?: boolean;
|
|
42
|
-
notch?: React.ReactNode;
|
|
43
|
-
/**
|
|
44
|
-
* Which INLINE edge the notch attaches to — `"start"` follows the document direction
|
|
45
|
-
* (left under LTR, right under RTL), so callers never compute `dir` themselves.
|
|
46
|
-
*
|
|
47
|
-
* LOCAL PATCH (Contact Center): these were physical `"left" | "right"` and every consumer
|
|
48
|
-
* passed `isRtl ? "right" : "left"`, duplicating a decision CSS already knows. The
|
|
49
|
-
* alignment (`self-start`) and the corner radii below are logical properties, so the
|
|
50
|
-
* browser mirrors them; only the wedge's SVG path needs a flip, which it does itself with
|
|
51
|
-
* `rtl:-scale-x-100`.
|
|
52
|
-
*/
|
|
53
|
-
notchSide?: "start" | "end";
|
|
54
|
-
/**
|
|
55
|
-
* Show the dark "tray" frame (and panel border + inset shadow) around the
|
|
56
|
-
* drawer panel. Defaults to `true`. Set to `false` for bottom-anchored
|
|
57
|
-
* drawers (slide up from below) where a surrounding frame would just look
|
|
58
|
-
* like a stray border at the top.
|
|
59
|
-
*/
|
|
60
|
-
framed?: boolean;
|
|
61
|
-
wrapperClassName?: string;
|
|
62
|
-
/**
|
|
63
|
-
* @deprecated Use `className` — it now targets the tray directly. Kept as an
|
|
64
|
-
* alias (merged last, so it still wins) for the pre-`DrawerPanel` API.
|
|
65
|
-
*/
|
|
66
|
-
trayClassName?: string;
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
interface DrawerPanelProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
70
|
-
/** Panel border + inset shadow that pairs with the tray's frame. Default `true`. */
|
|
71
|
-
framed?: boolean;
|
|
72
|
-
/** Show the drag handle (bottom sheets). Default `false`. */
|
|
73
|
-
showHandle?: boolean;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
/**
|
|
77
|
-
* The body surface inside a `DrawerContent` — the same surface a page draws, anchored to an
|
|
78
|
-
* edge, so it follows the app theme.
|
|
79
|
-
*
|
|
80
|
-
* It is an ordinary child, not something the tray paints — so a drawer can hold a panel
|
|
81
|
-
* and something else beside it (e.g. a `FormSummary`), each bringing its own background.
|
|
82
|
-
* Give the tray a `gap-*` to space them.
|
|
83
|
-
*
|
|
84
|
-
* ```tsx
|
|
85
|
-
* <DrawerContent className="gap-[6px]">
|
|
86
|
-
* <DrawerPanel>…form…</DrawerPanel>
|
|
87
|
-
* <FormSummary … />
|
|
88
|
-
* </DrawerContent>
|
|
89
|
-
* ```
|
|
90
|
-
*/
|
|
91
|
-
const DrawerPanel = React.forwardRef<HTMLDivElement, DrawerPanelProps>(
|
|
92
|
-
({ className, framed = true, showHandle = false, children, ...props }, ref) => (
|
|
93
|
-
<div
|
|
94
|
-
ref={ref}
|
|
95
|
-
className={cn(
|
|
96
|
-
// `flex-col` is load-bearing: this panel stacks header / body / footer, and its own
|
|
97
|
-
// `showHandle` centres the drag handle with `mx-auto`, which only centres in a column.
|
|
98
|
-
// It was dropped in 37fddd5 alongside the tray's — on the tray that was deliberate (FormDrawer
|
|
99
|
-
// puts the panel and its summary side by side), here it was not, and every consumer that puts
|
|
100
|
-
// a header/body/footer straight into a panel rendered them in a row.
|
|
101
|
-
//
|
|
102
|
-
// `min-w-0` for the same reason, one axis over: the tray is a row now, so width is its
|
|
103
|
-
// main axis, and a flex item's default `min-width: auto` pins it to its content — a wide
|
|
104
|
-
// form pushed the panel straight out past the tray. `min-h-0` alone covered the old
|
|
105
|
-
// column tray; the row needs both.
|
|
106
|
-
//
|
|
107
|
-
// LOCAL PATCH (Contact Center): the surface was `bg-[#F0F0F0]` with a `#D4D4D4` border —
|
|
108
|
-
// frozen copies of the LIGHT values of the two tokens below — and the panel pinned
|
|
109
|
-
// `data-theme="light"` so its content didn't render white-on-light against them.
|
|
110
|
-
// mapping-color-system-v4 selects on a BARE `[data-theme="light"]`, so that attribute
|
|
111
|
-
// re-declared every colour variable on this element and inherited to the whole subtree:
|
|
112
|
-
// a drawer was immune to the app's theme, and its content was correctly themed to the
|
|
113
|
-
// WRONG theme. A drawer is the same surface as a page, only anchored to an edge, so it
|
|
114
|
-
// reads the same tokens and follows `<html>` like everything else. Light and default
|
|
115
|
-
// resolve to the exact literals removed here (#F0F0F0 / #D4D4D4), so only dark changes.
|
|
116
|
-
"flex flex-1 flex-col gap-2 rounded-t-[16px] p-1 bg-background-presentation-body-primary min-h-0 min-w-0",
|
|
117
|
-
framed &&
|
|
118
|
-
"border border-border-presentation-global-primary shadow-[inset_0_-4px_16px_rgba(0,0,0,0.1)]",
|
|
119
|
-
className,
|
|
120
|
-
)}
|
|
121
|
-
{...props}
|
|
122
|
-
>
|
|
123
|
-
{showHandle && (
|
|
124
|
-
<div className="mx-auto h-2 w-[100px] rounded-full bg-border-presentation-global-primary" />
|
|
125
|
-
)}
|
|
126
|
-
{children}
|
|
127
|
-
</div>
|
|
128
|
-
),
|
|
129
|
-
);
|
|
130
|
-
DrawerPanel.displayName = "DrawerPanel";
|
|
131
|
-
|
|
132
|
-
const DrawerContent = React.forwardRef<
|
|
133
|
-
React.ElementRef<typeof DrawerPrimitive.Content>,
|
|
134
|
-
DrawerContentProps
|
|
135
|
-
>(
|
|
136
|
-
(
|
|
137
|
-
{
|
|
138
|
-
className,
|
|
139
|
-
children,
|
|
140
|
-
notch,
|
|
141
|
-
notchSide = "start",
|
|
142
|
-
framed: framedProp,
|
|
143
|
-
wrapperClassName,
|
|
144
|
-
trayClassName,
|
|
145
|
-
// Destructured only to keep it out of `...props`. The handle belongs to `DrawerPanel` now, so
|
|
146
|
-
// this does nothing here — but it was never pulled out either, so it was being spread onto the
|
|
147
|
-
// DOM node and React warned "does not recognize the `showHandle` prop on a DOM element" every
|
|
148
|
-
// time a drawer opened. Kept in the props type rather than removed: consumers still pass it.
|
|
149
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
150
|
-
showHandle,
|
|
151
|
-
...props
|
|
152
|
-
},
|
|
153
|
-
ref,
|
|
154
|
-
) => {
|
|
155
|
-
const framed = framedProp ?? true;
|
|
156
|
-
return (
|
|
157
|
-
<DrawerPortal>
|
|
158
|
-
<DrawerOverlay />
|
|
159
|
-
<DrawerPrimitive.Content
|
|
160
|
-
ref={ref}
|
|
161
|
-
className={cn(
|
|
162
|
-
"fixed inset-x-0 bottom-0 z-50 mt-24 flex h-auto flex-col items-stretch m-1",
|
|
163
|
-
wrapperClassName,
|
|
164
|
-
)}
|
|
165
|
-
{...props}
|
|
166
|
-
>
|
|
167
|
-
{/* `self-start` / `self-end` are LOGICAL — the browser flips them under
|
|
168
|
-
`dir="rtl"`, so this needs no direction check. */}
|
|
169
|
-
{notch && (
|
|
170
|
-
<div className={notchSide === "end" ? "self-end" : "self-start"}>
|
|
171
|
-
{React.isValidElement(notch)
|
|
172
|
-
? React.cloneElement(notch as React.ReactElement<{ side?: "start" | "end" }>, {
|
|
173
|
-
side: notchSide,
|
|
174
|
-
})
|
|
175
|
-
: notch}
|
|
176
|
-
</div>
|
|
177
|
-
)}
|
|
178
|
-
{/* The tray. It frames and positions, but paints nothing over its children —
|
|
179
|
-
each child brings its own background (see `DrawerPanel`). Supply a `gap-*`
|
|
180
|
-
via `className` when the tray holds more than one. */}
|
|
181
|
-
<div
|
|
182
|
-
className={cn(
|
|
183
|
-
"flex flex-1 min-h-0",
|
|
184
|
-
framed
|
|
185
|
-
? "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)]"
|
|
186
|
-
: "p-0",
|
|
187
|
-
// Logical corner radii (`ss` = start-start, `se` = start-end): the squared
|
|
188
|
-
// corner follows the notch under either direction with no JS.
|
|
189
|
-
framed && notch
|
|
190
|
-
? notchSide === "end"
|
|
191
|
-
? "rounded-se-none rounded-ss-[22px] rounded-b-[22px]"
|
|
192
|
-
: "rounded-ss-none rounded-se-[22px] rounded-b-[22px]"
|
|
193
|
-
: framed
|
|
194
|
-
? "rounded-t-[22px]"
|
|
195
|
-
: "",
|
|
196
|
-
className,
|
|
197
|
-
trayClassName,
|
|
198
|
-
)}
|
|
199
|
-
>
|
|
200
|
-
{children}
|
|
201
|
-
</div>
|
|
202
|
-
</DrawerPrimitive.Content>
|
|
203
|
-
</DrawerPortal>
|
|
204
|
-
);
|
|
205
|
-
},
|
|
206
|
-
);
|
|
207
|
-
DrawerContent.displayName = "DrawerContent";
|
|
208
|
-
|
|
209
|
-
const DrawerHeader = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (
|
|
210
|
-
<div
|
|
211
|
-
className={cn("flex flex-row justify-between items-stretch gap-2 px-1 pt-1", className)}
|
|
212
|
-
{...props}
|
|
213
|
-
/>
|
|
214
|
-
);
|
|
215
|
-
DrawerHeader.displayName = "DrawerHeader";
|
|
216
|
-
|
|
217
|
-
const drawerHeaderPane = cva(
|
|
218
|
-
// A deliberately dark pill in every theme — the same slab the page-mode FormHeaderBar draws
|
|
219
|
-
// (FormRenderer/header.tsx). Its fill is a literal on purpose, not a frozen token: it must not
|
|
220
|
-
// follow the panel. So the title/description are forced to light text against it.
|
|
221
|
-
"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]",
|
|
222
|
-
);
|
|
223
|
-
|
|
224
|
-
const DrawerHeaderTitle = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (
|
|
225
|
-
// The pane is dark in every theme, so pin dark here: the Buttons and content inside must
|
|
226
|
-
// resolve against THIS slab, not against the panel (which now follows the app theme).
|
|
227
|
-
<div data-theme="dark" className={cn(drawerHeaderPane(), className)} {...props} />
|
|
228
|
-
);
|
|
229
|
-
DrawerHeaderTitle.displayName = "DrawerHeaderTitle";
|
|
230
|
-
|
|
231
|
-
const DrawerHeaderActions = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (
|
|
232
|
-
<div data-theme="dark" className={cn(drawerHeaderPane(), "justify-end", className)} {...props} />
|
|
233
|
-
);
|
|
234
|
-
DrawerHeaderActions.displayName = "DrawerHeaderActions";
|
|
235
|
-
|
|
236
|
-
const drawerBadge = cva(
|
|
237
|
-
"inline-flex items-center justify-center rounded-[8px] px-1 py-0.5 typography-display-medium-medium uppercase",
|
|
238
|
-
{
|
|
239
|
-
variants: {
|
|
240
|
-
color: {
|
|
241
|
-
Blue: "bg-[rgba(0,117,255,0.5)] text-[#CCE3FF]",
|
|
242
|
-
Green: "bg-[rgba(34,197,94,0.5)] text-[#D1FAE5]",
|
|
243
|
-
Red: "bg-[rgba(239,68,68,0.5)] text-[#FEE2E2]",
|
|
244
|
-
Yellow: "bg-[rgba(234,179,8,0.5)] text-[#FEF3C7]",
|
|
245
|
-
Purple: "bg-[rgba(139,92,246,0.5)] text-[#EDE9FE]",
|
|
246
|
-
Gray: "bg-[rgba(255,255,255,0.15)] text-[#E5E5E5]",
|
|
247
|
-
},
|
|
248
|
-
},
|
|
249
|
-
defaultVariants: { color: "Blue" },
|
|
250
|
-
},
|
|
251
|
-
);
|
|
252
|
-
|
|
253
|
-
interface DrawerBadgeProps
|
|
254
|
-
extends Omit<React.HTMLAttributes<HTMLSpanElement>, "color">, VariantProps<typeof drawerBadge> {}
|
|
255
|
-
|
|
256
|
-
const DrawerBadge = React.forwardRef<HTMLSpanElement, DrawerBadgeProps>(
|
|
257
|
-
({ className, color, ...props }, ref) => (
|
|
258
|
-
<span ref={ref} className={cn(drawerBadge({ color }), className)} {...props} />
|
|
259
|
-
),
|
|
260
|
-
);
|
|
261
|
-
DrawerBadge.displayName = "DrawerBadge";
|
|
262
|
-
|
|
263
|
-
const DrawerFooter = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (
|
|
264
|
-
<div className={cn("mt-auto flex flex-col gap-2 p-4", className)} {...props} />
|
|
265
|
-
);
|
|
266
|
-
DrawerFooter.displayName = "DrawerFooter";
|
|
267
|
-
|
|
268
|
-
interface DrawerNotchProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
269
|
-
/** Logical edge, mirrored by the browser under `dir="rtl"`. See `notchSide`. */
|
|
270
|
-
side?: "start" | "end";
|
|
271
|
-
}
|
|
272
|
-
|
|
273
|
-
const DrawerNotch = ({ className, children, side = "start", ...props }: DrawerNotchProps) => {
|
|
274
|
-
// Wedge bridges the notch's bottom inline-end corner into the tray's top edge.
|
|
275
|
-
//
|
|
276
|
-
// LOCAL PATCH (Contact Center): both the DOM order and the SVG path used to be picked from a
|
|
277
|
-
// physical left/right. Neither needs to be: the row is `flex-row`, which is direction-aware, so
|
|
278
|
-
// writing {pill}{wedge} already renders wedge-on-the-left under RTL. Only the path's curve is
|
|
279
|
-
// physical, and `rtl:-scale-x-100` mirrors it.
|
|
280
|
-
//
|
|
281
|
-
// That class, not a rule in some stylesheet: an earlier draft of this comment pointed at an
|
|
282
|
-
// `rtl.css` that does not exist in this repo — so under `dir="rtl"` the wedge pointed the wrong
|
|
283
|
-
// way and nothing failed loudly. Keeping the mirror on the element means it travels with the
|
|
284
|
-
// component when a consumer copies it in, which a global stylesheet would not.
|
|
285
|
-
const wedge = (
|
|
286
|
-
<svg
|
|
287
|
-
aria-hidden
|
|
288
|
-
data-drawer-wedge
|
|
289
|
-
width="12"
|
|
290
|
-
height="12"
|
|
291
|
-
viewBox="0 0 12 12"
|
|
292
|
-
className="block shrink-0 self-end rtl:-scale-x-100"
|
|
293
|
-
>
|
|
294
|
-
<path d="M 0 0 L 0 12 L 12 12 A 12 12 0 0 1 0 0 Z" fill="#434446" />
|
|
295
|
-
</svg>
|
|
296
|
-
);
|
|
297
|
-
|
|
298
|
-
return (
|
|
299
|
-
<div className="relative flex flex-row items-end">
|
|
300
|
-
{side === "end" && wedge}
|
|
301
|
-
<div
|
|
302
|
-
className={cn(
|
|
303
|
-
"flex flex-row items-center gap-1 rounded-t-[18px] bg-black-400 px-1.5 pt-1.5 pb-1.5",
|
|
304
|
-
className,
|
|
305
|
-
)}
|
|
306
|
-
{...props}
|
|
307
|
-
>
|
|
308
|
-
{children}
|
|
309
|
-
</div>
|
|
310
|
-
{side === "start" && wedge}
|
|
311
|
-
</div>
|
|
312
|
-
);
|
|
313
|
-
};
|
|
314
|
-
DrawerNotch.displayName = "DrawerNotch";
|
|
315
|
-
|
|
316
|
-
const DrawerNotchClose = React.forwardRef<
|
|
317
|
-
HTMLButtonElement,
|
|
318
|
-
React.ButtonHTMLAttributes<HTMLButtonElement>
|
|
319
|
-
>(({ className, children, ...props }, ref) => (
|
|
320
|
-
<Button
|
|
321
|
-
ref={ref}
|
|
322
|
-
type="button"
|
|
323
|
-
aria-label="Close"
|
|
324
|
-
buttonType="icon"
|
|
325
|
-
size="S"
|
|
326
|
-
variant="PrimeContStyle"
|
|
327
|
-
className={cn(
|
|
328
|
-
// Glare Button (icon, S = 22×22) with the notch's own circular radius + translucent look
|
|
329
|
-
// (S is otherwise rounded-[4px]).
|
|
330
|
-
"!rounded-[13px] bg-white/15 text-white hover:bg-white/25 hover:text-white",
|
|
331
|
-
className,
|
|
332
|
-
)}
|
|
333
|
-
{...props}
|
|
334
|
-
>
|
|
335
|
-
{children ?? <i className="ri-close-fill !text-[14px]" />}
|
|
336
|
-
</Button>
|
|
337
|
-
));
|
|
338
|
-
DrawerNotchClose.displayName = "DrawerNotchClose";
|
|
339
|
-
|
|
340
|
-
const drawerNotchPill = cva(
|
|
341
|
-
"inline-flex items-center gap-1 rounded-[16px] px-1.5 py-0.5 typography-body-small-medium text-white transition-colors",
|
|
342
|
-
{
|
|
343
|
-
variants: {
|
|
344
|
-
color: {
|
|
345
|
-
Yellow: "bg-white/15 hover:bg-white/25",
|
|
346
|
-
Blue: "bg-[#005ECC] hover:bg-[#0070E0]",
|
|
347
|
-
Gray: "bg-white/10 hover:bg-white/20",
|
|
348
|
-
},
|
|
349
|
-
},
|
|
350
|
-
defaultVariants: { color: "Yellow" },
|
|
351
|
-
},
|
|
352
|
-
);
|
|
353
|
-
|
|
354
|
-
interface DrawerNotchPillProps
|
|
355
|
-
extends
|
|
356
|
-
Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, "color">,
|
|
357
|
-
VariantProps<typeof drawerNotchPill> {}
|
|
358
|
-
|
|
359
|
-
const DrawerNotchPill = React.forwardRef<HTMLButtonElement, DrawerNotchPillProps>(
|
|
360
|
-
({ className, color, children, ...props }, ref) => (
|
|
361
|
-
<button
|
|
362
|
-
ref={ref}
|
|
363
|
-
type="button"
|
|
364
|
-
className={cn(drawerNotchPill({ color }), className)}
|
|
365
|
-
{...props}
|
|
366
|
-
>
|
|
367
|
-
{children}
|
|
368
|
-
</button>
|
|
369
|
-
),
|
|
370
|
-
);
|
|
371
|
-
DrawerNotchPill.displayName = "DrawerNotchPill";
|
|
372
|
-
|
|
373
|
-
const DrawerNotchDivider = ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) => (
|
|
374
|
-
<div aria-hidden className={cn("h-[18px] w-px bg-white/20", className)} {...props} />
|
|
375
|
-
);
|
|
376
|
-
DrawerNotchDivider.displayName = "DrawerNotchDivider";
|
|
377
|
-
|
|
378
|
-
interface DrawerNotchAppProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
379
|
-
icon?: React.ReactNode;
|
|
380
|
-
name: React.ReactNode;
|
|
381
|
-
}
|
|
382
|
-
|
|
383
|
-
const DrawerNotchApp = ({ className, icon, name, ...props }: DrawerNotchAppProps) => (
|
|
384
|
-
<div className={cn("flex items-center gap-2.5 px-1", className)} {...props}>
|
|
385
|
-
{icon && (
|
|
386
|
-
<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)]">
|
|
387
|
-
{icon}
|
|
388
|
-
</div>
|
|
389
|
-
)}
|
|
390
|
-
<span className="text-white text-[14px] leading-[1.475]">{name}</span>
|
|
391
|
-
</div>
|
|
392
|
-
);
|
|
393
|
-
DrawerNotchApp.displayName = "DrawerNotchApp";
|
|
394
|
-
|
|
395
|
-
const DrawerTitle = React.forwardRef<
|
|
396
|
-
React.ElementRef<typeof DrawerPrimitive.Title>,
|
|
397
|
-
React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Title>
|
|
398
|
-
>(({ className, ...props }, ref) => (
|
|
399
|
-
<DrawerPrimitive.Title
|
|
400
|
-
ref={ref}
|
|
401
|
-
data-slot="drawer-title"
|
|
402
|
-
// Dark text by default — the title usually sits on the light content
|
|
403
|
-
// surface. Inside the dark DrawerHeaderTitle pill it is flipped back to
|
|
404
|
-
// white via a descendant selector on `drawerHeaderPane`.
|
|
405
|
-
className={cn(
|
|
406
|
-
"typography-display-medium-medium uppercase text-content-presentation-global-primary leading-none",
|
|
407
|
-
className,
|
|
408
|
-
)}
|
|
409
|
-
{...props}
|
|
410
|
-
/>
|
|
411
|
-
));
|
|
412
|
-
DrawerTitle.displayName = DrawerPrimitive.Title.displayName;
|
|
413
|
-
|
|
414
|
-
const DrawerDescription = React.forwardRef<
|
|
415
|
-
React.ElementRef<typeof DrawerPrimitive.Description>,
|
|
416
|
-
React.ComponentPropsWithoutRef<typeof DrawerPrimitive.Description>
|
|
417
|
-
>(({ className, ...props }, ref) => (
|
|
418
|
-
<DrawerPrimitive.Description
|
|
419
|
-
ref={ref}
|
|
420
|
-
data-slot="drawer-description"
|
|
421
|
-
className={cn(
|
|
422
|
-
"typography-body-small-regular text-content-presentation-action-light-secondary",
|
|
423
|
-
className,
|
|
424
|
-
)}
|
|
425
|
-
{...props}
|
|
426
|
-
/>
|
|
427
|
-
));
|
|
428
|
-
DrawerDescription.displayName = DrawerPrimitive.Description.displayName;
|
|
429
|
-
|
|
430
|
-
export {
|
|
431
|
-
Drawer,
|
|
432
|
-
DrawerNested,
|
|
433
|
-
DrawerPortal,
|
|
434
|
-
DrawerOverlay,
|
|
435
|
-
DrawerTrigger,
|
|
436
|
-
DrawerClose,
|
|
437
|
-
DrawerContent,
|
|
438
|
-
DrawerPanel,
|
|
439
|
-
DrawerHeader,
|
|
440
|
-
DrawerHeaderTitle,
|
|
441
|
-
DrawerHeaderActions,
|
|
442
|
-
DrawerBadge,
|
|
443
|
-
DrawerFooter,
|
|
444
|
-
DrawerTitle,
|
|
445
|
-
DrawerDescription,
|
|
446
|
-
DrawerNotch,
|
|
447
|
-
DrawerNotchClose,
|
|
448
|
-
DrawerNotchPill,
|
|
449
|
-
DrawerNotchDivider,
|
|
450
|
-
DrawerNotchApp,
|
|
451
|
-
};
|