@flikk/ui 1.0.0-beta.1 → 1.0.0-beta.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/ai/ApprovalCard/ApprovalCard.js +3 -2
- package/dist/components/ai/ApprovalCard/ApprovalCard.types.d.ts +2 -2
- package/dist/components/ai/CodeBlock/CodeBlock.theme.js +2 -2
- package/dist/components/ai/PromptInput/PromptInput.animations.d.ts +25 -0
- package/dist/components/ai/PromptInput/PromptInput.animations.js +61 -0
- package/dist/components/ai/PromptInput/PromptInput.js +264 -31
- package/dist/components/ai/PromptInput/PromptInput.theme.js +6 -1
- package/dist/components/ai/PromptInput/PromptInput.types.d.ts +68 -0
- package/dist/components/ai/PromptInput/VoiceRecorder.d.ts +10 -0
- package/dist/components/ai/PromptInput/VoiceRecorder.js +258 -0
- package/dist/components/ai/PromptInput/VoiceRecorder.types.d.ts +17 -0
- package/dist/components/ai/PromptInput/index.d.ts +1 -0
- package/dist/components/ai/PromptSuggestions/PromptSuggestion.theme.js +1 -1
- package/dist/components/ai/StreamingResponse/MarkdownRenderer.d.ts +5 -2
- package/dist/components/ai/StreamingResponse/MarkdownRenderer.js +51 -27
- package/dist/components/ai/StreamingResponse/StreamingCursor.d.ts +4 -5
- package/dist/components/ai/StreamingResponse/StreamingCursor.js +5 -12
- package/dist/components/ai/StreamingResponse/StreamingResponse.animations.d.ts +7 -0
- package/dist/components/ai/StreamingResponse/StreamingResponse.animations.js +20 -1
- package/dist/components/ai/StreamingResponse/StreamingResponse.js +2 -2
- package/dist/components/ai/StreamingResponse/StreamingResponse.theme.js +4 -4
- package/dist/components/ai/StreamingResponse/StreamingResponse.types.d.ts +2 -0
- package/dist/components/ai/StreamingResponse/WordAnimationContext.d.ts +27 -0
- package/dist/components/ai/StreamingResponse/WordAnimationContext.js +134 -0
- package/dist/components/ai/StreamingResponse/index.d.ts +3 -1
- package/dist/components/ai/ThinkingIndicator/ThinkingIndicator.theme.js +2 -2
- package/dist/components/ai/TokenCounter/TokenCounter.theme.js +6 -6
- package/dist/components/ai/index.js +1 -0
- package/dist/components/charts/ActivityRings/ActivityRings.js +1 -1
- package/dist/components/charts/ActivityRings/ActivityRings.theme.js +2 -2
- package/dist/components/charts/BarChart/BarChart.js +3 -3
- package/dist/components/charts/ChartContainer.js +1 -1
- package/dist/components/charts/ComboChart/ComboChart.js +2 -2
- package/dist/components/charts/DonutChart/DonutChart.theme.js +1 -1
- package/dist/components/charts/DonutChart/DonutChart.types.d.ts +1 -2
- package/dist/components/charts/DonutChart/MultiSegmentDonutChart.js +1 -1
- package/dist/components/charts/DonutChart/MultiSegmentDonutChart.theme.js +1 -1
- package/dist/components/charts/DonutChart/MultiSegmentDonutChart.types.d.ts +1 -2
- package/dist/components/charts/FunnelChart/FunnelChart.js +7 -7
- package/dist/components/charts/Heatmap/Heatmap.theme.js +1 -1
- package/dist/components/charts/Heatmap/HeatmapCell.js +1 -1
- package/dist/components/charts/Heatmap/HeatmapLegend.js +1 -1
- package/dist/components/charts/RadarChart/RadarChart.theme.js +2 -2
- package/dist/components/charts/ScatterPlot/ScatterPlot.js +1 -1
- package/dist/components/charts/ScatterPlot/ScatterPlot.theme.js +2 -2
- package/dist/components/charts/StackedBarChart/StackedBarChart.js +2 -2
- package/dist/components/charts/shared/ChartErrorBoundary/ChartErrorBoundary.js +1 -1
- package/dist/components/charts/shared/ChartLegend/ChartLegendContent.js +1 -1
- package/dist/components/charts/shared/ChartText/ChartText.js +1 -1
- package/dist/components/charts/shared/ChartText/ChartText.theme.js +1 -1
- package/dist/components/charts/shared/ChartTooltip/ChartTooltip.theme.js +4 -4
- package/dist/components/core/Accordion/Accordion.animations.d.ts +6 -1
- package/dist/components/core/Accordion/Accordion.animations.js +15 -1
- package/dist/components/core/Accordion/Accordion.theme.js +5 -5
- package/dist/components/core/Accordion/Accordion.types.d.ts +25 -0
- package/dist/components/core/Accordion/AccordionContent.js +1 -1
- package/dist/components/core/Accordion/AccordionTrigger.js +11 -6
- package/dist/components/core/Alert/Alert.js +3 -2
- package/dist/components/core/Alert/Alert.theme.js +4 -8
- package/dist/components/core/Alert/Alert.types.d.ts +4 -3
- package/dist/components/core/AlertDialog/AlertDialog.d.ts +1 -1
- package/dist/components/core/AlertDialog/AlertDialog.js +2 -2
- package/dist/components/core/AlertDialog/AlertDialog.types.d.ts +2 -2
- package/dist/components/core/Avatar/Avatar.theme.js +5 -5
- package/dist/components/core/AvatarGroup/AvatarGroup.theme.js +1 -1
- package/dist/components/core/Badge/Badge.d.ts +1 -1
- package/dist/components/core/Badge/Badge.js +11 -9
- package/dist/components/core/Badge/Badge.theme.js +24 -20
- package/dist/components/core/Badge/Badge.types.d.ts +10 -5
- package/dist/components/core/Breadcrumbs/Breadcrumbs.js +1 -1
- package/dist/components/core/Button/Button.d.ts +1 -1
- package/dist/components/core/Button/Button.js +21 -18
- package/dist/components/core/Button/Button.ripple.d.ts +5 -1
- package/dist/components/core/Button/Button.ripple.js +27 -17
- package/dist/components/core/Button/Button.theme.d.ts +1 -2
- package/dist/components/core/Button/Button.theme.js +46 -41
- package/dist/components/core/Button/Button.types.d.ts +3 -3
- package/dist/components/core/Button/index.d.ts +2 -0
- package/dist/components/core/ButtonGroup/ButtonGroup.theme.js +1 -1
- package/dist/components/core/Calendar/Calendar.js +1 -1
- package/dist/components/core/Calendar/Calendar.theme.js +9 -9
- package/dist/components/core/Calendar/CalendarMini/CalendarMini.js +1 -1
- package/dist/components/core/Card/Card.d.ts +2 -2
- package/dist/components/core/Card/Card.js +6 -7
- package/dist/components/core/Card/Card.theme.js +2 -2
- package/dist/components/core/Card/Card.types.d.ts +7 -27
- package/dist/components/core/Card/CardSubtitle.d.ts +3 -0
- package/dist/components/core/Card/CardSubtitle.js +11 -0
- package/dist/components/core/Card/CardTitle.d.ts +1 -1
- package/dist/components/core/Card/index.d.ts +2 -2
- package/dist/components/core/CommandPalette/CommandItem.d.ts +1 -1
- package/dist/components/core/CommandPalette/CommandItem.js +2 -2
- package/dist/components/core/CommandPalette/CommandPalette.js +2 -2
- package/dist/components/core/CommandPalette/CommandPalette.theme.js +6 -6
- package/dist/components/core/CommandPalette/CommandPalette.types.d.ts +2 -2
- package/dist/components/core/ContextMenu/ContextMenu.theme.js +3 -3
- package/dist/components/core/ContextMenu/ContextMenu.types.d.ts +1 -1
- package/dist/components/core/ContextMenu/ContextMenuItem.js +3 -3
- package/dist/components/core/Drawer/Drawer.d.ts +13 -1
- package/dist/components/core/Drawer/Drawer.js +23 -10
- package/dist/components/core/Drawer/Drawer.theme.d.ts +2 -0
- package/dist/components/core/Drawer/Drawer.theme.js +15 -13
- package/dist/components/core/Drawer/Drawer.types.d.ts +26 -9
- package/dist/components/core/Drawer/DrawerContent.js +1 -1
- package/dist/components/core/Drawer/DrawerHeader.d.ts +5 -0
- package/dist/components/core/Drawer/DrawerHeader.js +15 -0
- package/dist/components/core/Drawer/DrawerSubtitle.d.ts +5 -0
- package/dist/components/core/Drawer/DrawerSubtitle.js +11 -0
- package/dist/components/core/Drawer/DrawerTitle.d.ts +5 -0
- package/dist/components/core/Drawer/DrawerTitle.js +11 -0
- package/dist/components/core/Drawer/index.d.ts +1 -1
- package/dist/components/core/Dropdown/Dropdown.theme.js +1 -1
- package/dist/components/core/Dropdown/Dropdown.types.d.ts +4 -4
- package/dist/components/core/Dropdown/DropdownItem.js +2 -2
- package/dist/components/core/Dropdown/DropdownMenu.js +1 -0
- package/dist/components/core/Empty/Empty.js +2 -2
- package/dist/components/core/Empty/Empty.theme.d.ts +1 -1
- package/dist/components/core/Empty/Empty.theme.js +3 -3
- package/dist/components/core/Empty/Empty.types.d.ts +2 -2
- package/dist/components/core/Kbd/Kbd.theme.js +3 -3
- package/dist/components/core/Link/Link.d.ts +1 -1
- package/dist/components/core/Link/Link.types.d.ts +2 -2
- package/dist/components/core/Loader/Loader.theme.js +1 -1
- package/dist/components/core/MenuItem/MenuItem.js +2 -2
- package/dist/components/core/MenuItem/MenuItem.theme.d.ts +1 -2
- package/dist/components/core/MenuItem/MenuItem.theme.js +9 -11
- package/dist/components/core/MenuItem/MenuItem.types.d.ts +1 -1
- package/dist/components/core/Message/Message.d.ts +3 -2
- package/dist/components/core/Message/Message.js +30 -24
- package/dist/components/core/Message/Message.theme.d.ts +1 -1
- package/dist/components/core/Message/Message.theme.js +22 -24
- package/dist/components/core/Message/Message.types.d.ts +0 -7
- package/dist/components/core/Message/MessageList.animations.d.ts +6 -0
- package/dist/components/core/Message/MessageList.animations.js +32 -0
- package/dist/components/core/Message/MessageList.d.ts +5 -0
- package/dist/components/core/Message/MessageList.js +78 -0
- package/dist/components/core/Message/MessageList.theme.d.ts +2 -0
- package/dist/components/core/Message/MessageList.theme.js +6 -0
- package/dist/components/core/Message/MessageList.types.d.ts +32 -0
- package/dist/components/core/Message/index.d.ts +2 -0
- package/dist/components/core/Modal/Modal.d.ts +2 -2
- package/dist/components/core/Modal/Modal.js +5 -5
- package/dist/components/core/Modal/Modal.theme.js +6 -6
- package/dist/components/core/Modal/Modal.types.d.ts +4 -4
- package/dist/components/core/Modal/ModalHeader.js +1 -0
- package/dist/components/core/Modal/ModalSubtitle.d.ts +5 -0
- package/dist/components/core/Modal/ModalSubtitle.js +11 -0
- package/dist/components/core/ModalStack/ModalStack.animations.js +3 -3
- package/dist/components/core/ModalStack/ModalStackModal.js +3 -3
- package/dist/components/core/NavItem/NavItem.js +1 -1
- package/dist/components/core/NavItem/NavItem.theme.js +1 -1
- package/dist/components/core/OfflineIndicator/OfflineIndicator.theme.js +3 -3
- package/dist/components/core/PageHeading/PageHeading.d.ts +8 -0
- package/dist/components/core/PageHeading/PageHeading.js +28 -0
- package/dist/components/core/PageHeading/PageHeading.theme.d.ts +2 -0
- package/dist/components/core/PageHeading/PageHeading.theme.js +11 -0
- package/dist/components/core/PageHeading/PageHeading.types.d.ts +55 -0
- package/dist/components/core/PageHeading/PageHeadingActions.d.ts +3 -0
- package/dist/components/core/PageHeading/PageHeadingActions.js +11 -0
- package/dist/components/core/PageHeading/PageHeadingBackButton.d.ts +3 -0
- package/dist/components/core/PageHeading/PageHeadingBackButton.js +12 -0
- package/dist/components/core/PageHeading/PageHeadingIcon.d.ts +3 -0
- package/dist/components/core/PageHeading/PageHeadingIcon.js +11 -0
- package/dist/components/core/PageHeading/PageHeadingSubtitle.d.ts +3 -0
- package/dist/components/core/PageHeading/PageHeadingSubtitle.js +11 -0
- package/dist/components/core/PageHeading/PageHeadingTitle.d.ts +3 -0
- package/dist/components/core/PageHeading/PageHeadingTitle.js +11 -0
- package/dist/components/core/PageHeading/index.d.ts +2 -0
- package/dist/components/core/Pagination/Pagination.theme.js +2 -2
- package/dist/components/core/Pill/Pill.theme.js +3 -3
- package/dist/components/core/Popover/Popover.theme.js +1 -1
- package/dist/components/core/Popover/Popover.types.d.ts +6 -0
- package/dist/components/core/Popover/PopoverContent.js +8 -2
- package/dist/components/core/Progress/Progress.theme.js +10 -7
- package/dist/components/core/Progress/Progress.types.d.ts +2 -1
- package/dist/components/core/Segmented/Segmented.theme.js +5 -5
- package/dist/components/core/Sidebar/Sidebar.js +1 -0
- package/dist/components/core/Sidebar/SidebarNavGroup.js +1 -1
- package/dist/components/core/SocialIcon/SocialIcon.d.ts +3 -0
- package/dist/components/core/SocialIcon/SocialIcon.js +30 -0
- package/dist/components/core/SocialIcon/SocialIcon.theme.d.ts +2 -0
- package/dist/components/core/SocialIcon/SocialIcon.theme.js +12 -0
- package/dist/components/core/SocialIcon/SocialIcon.types.d.ts +18 -0
- package/dist/components/core/SocialIcon/index.d.ts +2 -0
- package/dist/components/core/SocialIcon/platforms.d.ts +17 -0
- package/dist/components/core/SocialIcon/platforms.js +234 -0
- package/dist/components/core/Spinner/Spinner.theme.js +3 -5
- package/dist/components/core/Spinner/Spinner.types.d.ts +2 -1
- package/dist/components/core/Tabs/Tabs.theme.js +2 -2
- package/dist/components/core/Tag/Tag.d.ts +2 -2
- package/dist/components/core/Tag/Tag.js +21 -4
- package/dist/components/core/Tag/Tag.theme.js +12 -4
- package/dist/components/core/Tag/Tag.types.d.ts +24 -1
- package/dist/components/core/Toast/Toast.js +4 -4
- package/dist/components/core/Toast/Toast.theme.js +4 -4
- package/dist/components/core/Toast/Toast.types.d.ts +9 -9
- package/dist/components/core/Toast/useToast.js +6 -6
- package/dist/components/core/Tooltip/Tooltip.theme.js +1 -1
- package/dist/components/core/Tree/Tree.theme.js +1 -1
- package/dist/components/core/index.d.ts +2 -7
- package/dist/components/core/index.js +10 -19
- package/dist/components/data-display/DescriptionList/DescriptionList.theme.js +8 -0
- package/dist/components/{core → data-display}/Feed/Feed.js +3 -3
- package/dist/components/{core → data-display}/Feed/Feed.theme.js +2 -2
- package/dist/components/data-display/GanttChart/GanttChart.animations.d.ts +4 -0
- package/dist/components/data-display/GanttChart/GanttChart.animations.js +21 -0
- package/dist/components/data-display/GanttChart/GanttChart.d.ts +8 -0
- package/dist/components/data-display/GanttChart/GanttChart.js +170 -0
- package/dist/components/data-display/GanttChart/GanttChart.theme.d.ts +2 -0
- package/dist/components/data-display/GanttChart/GanttChart.theme.js +23 -0
- package/dist/components/data-display/GanttChart/GanttChart.types.d.ts +162 -0
- package/dist/components/data-display/GanttChart/GanttChart.types.js +9 -0
- package/dist/components/data-display/GanttChart/GanttChart.utils.d.ts +80 -0
- package/dist/components/data-display/GanttChart/GanttChart.utils.js +274 -0
- package/dist/components/data-display/GanttChart/GanttChartPanel.d.ts +9 -0
- package/dist/components/data-display/GanttChart/GanttChartPanel.js +82 -0
- package/dist/components/data-display/GanttChart/GanttDependencyArrows.d.ts +2 -0
- package/dist/components/data-display/GanttChart/GanttDependencyArrows.js +35 -0
- package/dist/components/data-display/GanttChart/GanttGroupBar.d.ts +8 -0
- package/dist/components/data-display/GanttChart/GanttGroupBar.js +26 -0
- package/dist/components/data-display/GanttChart/GanttMilestone.d.ts +9 -0
- package/dist/components/data-display/GanttChart/GanttMilestone.js +44 -0
- package/dist/components/data-display/GanttChart/GanttProgressCircle.d.ts +9 -0
- package/dist/components/data-display/GanttChart/GanttProgressCircle.js +11 -0
- package/dist/components/data-display/GanttChart/GanttSplitter.d.ts +2 -0
- package/dist/components/data-display/GanttChart/GanttSplitter.js +39 -0
- package/dist/components/data-display/GanttChart/GanttTableGroupRow.d.ts +7 -0
- package/dist/components/data-display/GanttChart/GanttTableGroupRow.js +23 -0
- package/dist/components/data-display/GanttChart/GanttTableHeader.d.ts +2 -0
- package/dist/components/data-display/GanttChart/GanttTableHeader.js +13 -0
- package/dist/components/data-display/GanttChart/GanttTablePanel.d.ts +6 -0
- package/dist/components/data-display/GanttChart/GanttTablePanel.js +20 -0
- package/dist/components/data-display/GanttChart/GanttTableTaskRow.d.ts +8 -0
- package/dist/components/data-display/GanttChart/GanttTableTaskRow.js +30 -0
- package/dist/components/data-display/GanttChart/GanttTaskBar.d.ts +9 -0
- package/dist/components/data-display/GanttChart/GanttTaskBar.js +206 -0
- package/dist/components/data-display/GanttChart/GanttTaskContextMenu.d.ts +8 -0
- package/dist/components/data-display/GanttChart/GanttTaskContextMenu.js +17 -0
- package/dist/components/data-display/GanttChart/GanttTimelineGrid.d.ts +7 -0
- package/dist/components/data-display/GanttChart/GanttTimelineGrid.js +33 -0
- package/dist/components/data-display/GanttChart/GanttTimelineHeader.d.ts +8 -0
- package/dist/components/data-display/GanttChart/GanttTimelineHeader.js +43 -0
- package/dist/components/data-display/GanttChart/GanttToolbar.d.ts +2 -0
- package/dist/components/data-display/GanttChart/GanttToolbar.js +29 -0
- package/dist/components/data-display/GanttChart/hooks/useGanttDates.d.ts +12 -0
- package/dist/components/data-display/GanttChart/hooks/useGanttDates.js +25 -0
- package/dist/components/data-display/GanttChart/hooks/useGanttDrag.d.ts +25 -0
- package/dist/components/data-display/GanttChart/hooks/useGanttDrag.js +144 -0
- package/dist/components/data-display/GanttChart/hooks/useGanttLayout.d.ts +2 -0
- package/dist/components/data-display/GanttChart/hooks/useGanttLayout.js +33 -0
- package/dist/components/data-display/GanttChart/hooks/useGanttScrollSync.d.ts +6 -0
- package/dist/components/data-display/GanttChart/hooks/useGanttScrollSync.js +32 -0
- package/dist/components/data-display/GanttChart/index.d.ts +3 -0
- package/dist/components/{core → data-display}/KPI/KPI.js +10 -8
- package/dist/components/{core → data-display}/KPI/KPI.theme.js +12 -12
- package/dist/components/{core → data-display}/KPI/KPI.types.d.ts +6 -5
- package/dist/components/{core → data-display}/KPI/index.d.ts +1 -0
- package/dist/components/{core → data-display}/Metric/Metric.js +4 -7
- package/dist/components/{core → data-display}/Metric/Metric.theme.js +17 -13
- package/dist/components/{core → data-display}/Metric/Metric.types.d.ts +8 -7
- package/dist/components/{core → data-display}/Table/Table.theme.js +4 -4
- package/dist/components/{core → data-display}/Table/TableActions.js +8 -8
- package/dist/components/{core → data-display}/Table/TableActionsMenu.js +1 -1
- package/dist/components/{core → data-display}/Table/TableColumnManager.js +6 -5
- package/dist/components/{core → data-display}/Table/TableFilter.js +6 -6
- package/dist/components/{core → data-display}/Table/TableHeader.js +1 -1
- package/dist/components/data-display/Table/TablePagination.js +25 -0
- package/dist/components/{core → data-display}/Table/TableRow.js +1 -1
- package/dist/components/{core → data-display}/Table/TableSelectionHeader.js +3 -3
- package/dist/components/{core → data-display}/Timeline/Timeline.theme.js +2 -2
- package/dist/components/data-display/index.d.ts +7 -0
- package/dist/components/data-display/index.js +20 -0
- package/dist/components/effects/3d/index.d.ts +6 -0
- package/dist/components/effects/3d/index.js +3 -0
- package/dist/components/effects/Aurora/Aurora.d.ts +24 -0
- package/dist/components/effects/Aurora/Aurora.js +119 -0
- package/dist/components/effects/Aurora/Aurora.types.d.ts +15 -0
- package/dist/components/effects/Aurora/index.d.ts +2 -0
- package/dist/components/effects/CustomCursor/CustomCursor.d.ts +2 -2
- package/dist/components/effects/CustomCursor/CustomCursor.js +1 -1
- package/dist/components/effects/CustomCursor/CustomCursor.theme.js +3 -1
- package/dist/components/effects/CustomCursor/CustomCursor.types.d.ts +5 -4
- package/dist/components/effects/DotPattern/DotPattern.d.ts +18 -0
- package/dist/components/effects/DotPattern/DotPattern.js +65 -0
- package/dist/components/effects/DotPattern/DotPattern.types.d.ts +47 -0
- package/dist/components/effects/DotPattern/index.d.ts +2 -0
- package/dist/components/effects/GridPattern/GridPattern.d.ts +18 -0
- package/dist/components/effects/GridPattern/GridPattern.js +64 -0
- package/dist/components/effects/GridPattern/GridPattern.types.d.ts +47 -0
- package/dist/components/effects/GridPattern/index.d.ts +2 -0
- package/dist/components/effects/MagneticElement/MagneticElement.d.ts +30 -0
- package/dist/components/effects/MagneticElement/MagneticElement.js +110 -0
- package/dist/components/effects/MagneticElement/MagneticElement.types.d.ts +44 -0
- package/dist/components/effects/MagneticElement/index.d.ts +2 -0
- package/dist/components/effects/MorphingText/MorphingText.d.ts +17 -0
- package/dist/components/effects/MorphingText/MorphingText.js +91 -0
- package/dist/components/effects/MorphingText/MorphingText.types.d.ts +18 -0
- package/dist/components/effects/MorphingText/index.d.ts +2 -0
- package/dist/components/effects/NoiseOverlay/NoiseOverlay.d.ts +28 -0
- package/dist/components/effects/NoiseOverlay/NoiseOverlay.js +61 -0
- package/dist/components/effects/NoiseOverlay/NoiseOverlay.types.d.ts +35 -0
- package/dist/components/effects/NoiseOverlay/index.d.ts +2 -0
- package/dist/components/effects/ParallaxSection/ParallaxSection.d.ts +26 -0
- package/dist/components/effects/ParallaxSection/ParallaxSection.js +71 -0
- package/dist/components/effects/ParallaxSection/ParallaxSection.types.d.ts +11 -0
- package/dist/components/effects/ParallaxSection/index.d.ts +2 -0
- package/dist/components/effects/Particles/Particles.d.ts +22 -0
- package/dist/components/effects/Particles/Particles.js +33 -0
- package/dist/components/effects/Particles/Particles.scene.d.ts +3 -0
- package/dist/components/effects/Particles/Particles.scene.js +284 -0
- package/dist/components/effects/Particles/Particles.types.d.ts +65 -0
- package/dist/components/effects/Particles/index.d.ts +2 -0
- package/dist/components/effects/ProgressiveBlur/ProgressiveBlur.d.ts +3 -0
- package/dist/components/effects/ProgressiveBlur/ProgressiveBlur.js +75 -0
- package/dist/components/effects/ProgressiveBlur/ProgressiveBlur.theme.d.ts +7 -0
- package/dist/components/effects/ProgressiveBlur/ProgressiveBlur.theme.js +12 -0
- package/dist/components/effects/ProgressiveBlur/ProgressiveBlur.types.d.ts +47 -0
- package/dist/components/effects/ProgressiveBlur/index.d.ts +2 -0
- package/dist/components/effects/ScrollReveal/ScrollReveal.d.ts +29 -0
- package/dist/components/effects/ScrollReveal/ScrollReveal.js +121 -0
- package/dist/components/effects/ScrollReveal/ScrollReveal.types.d.ts +25 -0
- package/dist/components/effects/ScrollReveal/index.d.ts +2 -0
- package/dist/components/effects/Spotlight/Spotlight.d.ts +36 -0
- package/dist/components/effects/Spotlight/Spotlight.js +112 -0
- package/dist/components/effects/Spotlight/Spotlight.types.d.ts +29 -0
- package/dist/components/effects/Spotlight/index.d.ts +2 -0
- package/dist/components/effects/StickyScroll/StickyScroll.d.ts +30 -0
- package/dist/components/effects/StickyScroll/StickyScroll.js +128 -0
- package/dist/components/effects/StickyScroll/StickyScroll.types.d.ts +19 -0
- package/dist/components/effects/StickyScroll/index.d.ts +2 -0
- package/dist/components/effects/index.d.ts +22 -4
- package/dist/components/effects/index.js +11 -2
- package/dist/components/forms/Checkbox/Checkbox.d.ts +3 -4
- package/dist/components/forms/Checkbox/Checkbox.js +36 -12
- package/dist/components/forms/Checkbox/Checkbox.theme.js +9 -5
- package/dist/components/forms/Checkbox/Checkbox.types.d.ts +28 -2
- package/dist/components/forms/Checkbox/CheckboxContext.d.ts +14 -0
- package/dist/components/forms/Checkbox/CheckboxContext.js +12 -0
- package/dist/components/forms/Checkbox/CheckboxGroup.d.ts +3 -0
- package/dist/components/forms/Checkbox/CheckboxGroup.js +40 -0
- package/dist/components/forms/Checkbox/index.d.ts +1 -1
- package/dist/components/forms/ColorPicker/ColorPicker.js +1 -1
- package/dist/components/forms/ColorPicker/ColorPicker.theme.js +3 -3
- package/dist/components/forms/ColorPicker/ColorPickerInput.js +7 -7
- package/dist/components/forms/CronInput/CronInput.d.ts +3 -0
- package/dist/components/forms/CronInput/CronInput.js +107 -0
- package/dist/components/forms/CronInput/CronInput.theme.d.ts +6 -0
- package/dist/components/forms/CronInput/CronInput.theme.js +84 -0
- package/dist/components/forms/CronInput/CronInput.types.d.ts +98 -0
- package/dist/components/forms/CronInput/CronInput.utils.d.ts +67 -0
- package/dist/components/forms/CronInput/CronInput.utils.js +505 -0
- package/dist/components/forms/CronInput/index.d.ts +4 -0
- package/dist/components/forms/DatePicker/DatePicker.theme.js +3 -3
- package/dist/components/forms/DatePicker/DatePickerContent.js +1 -1
- package/dist/components/forms/FileUpload/FileUpload.js +80 -2
- package/dist/components/forms/FileUpload/FileUpload.theme.js +4 -4
- package/dist/components/forms/FormLabel/FormLabel.theme.js +1 -1
- package/dist/components/forms/Input/Input.theme.js +1 -1
- package/dist/components/forms/InputCounter/InputCounter.d.ts +1 -1
- package/dist/components/forms/InputCounter/InputCounter.theme.js +1 -1
- package/dist/components/forms/InputCounter/InputCounter.types.d.ts +3 -2
- package/dist/components/forms/InputOTP/InputOTP.theme.js +2 -2
- package/dist/components/forms/InputTag/InputTag.js +1 -1
- package/dist/components/forms/Mention/Mention.d.ts +3 -0
- package/dist/components/forms/Mention/Mention.js +607 -0
- package/dist/components/forms/Mention/Mention.theme.d.ts +6 -0
- package/dist/components/forms/Mention/Mention.theme.js +55 -0
- package/dist/components/forms/Mention/Mention.types.d.ts +151 -0
- package/dist/components/forms/Mention/Mention.utils.d.ts +42 -0
- package/dist/components/forms/Mention/Mention.utils.js +285 -0
- package/dist/components/forms/Mention/index.d.ts +3 -0
- package/dist/components/forms/Radio/Radio.d.ts +3 -4
- package/dist/components/forms/Radio/Radio.js +25 -12
- package/dist/components/forms/Radio/Radio.theme.js +34 -5
- package/dist/components/forms/Radio/Radio.types.d.ts +30 -4
- package/dist/components/forms/Radio/RadioContext.d.ts +14 -0
- package/dist/components/forms/Radio/RadioContext.js +12 -0
- package/dist/components/forms/Radio/RadioGroup.d.ts +3 -0
- package/dist/components/forms/Radio/RadioGroup.js +36 -0
- package/dist/components/forms/Radio/index.d.ts +1 -1
- package/dist/components/forms/RichTextEditor/RichTextEditor.js +2 -2
- package/dist/components/forms/RichTextEditor/RichTextEditor.theme.js +1 -1
- package/dist/components/forms/Select/Select.theme.js +1 -1
- package/dist/components/forms/SelectableCard/SelectableCard.animations.d.ts +2 -0
- package/dist/components/forms/SelectableCard/SelectableCard.animations.js +9 -0
- package/dist/components/forms/SelectableCard/SelectableCard.d.ts +5 -0
- package/dist/components/forms/SelectableCard/SelectableCard.js +58 -0
- package/dist/components/forms/SelectableCard/SelectableCard.theme.d.ts +2 -0
- package/dist/components/forms/SelectableCard/SelectableCard.theme.js +38 -0
- package/dist/components/forms/SelectableCard/SelectableCard.types.d.ts +33 -0
- package/dist/components/forms/SelectableCard/SelectableCardContext.d.ts +3 -0
- package/dist/components/forms/SelectableCard/SelectableCardContext.js +12 -0
- package/dist/components/forms/SelectableCard/SelectableCardGroup.d.ts +3 -0
- package/dist/components/forms/SelectableCard/SelectableCardGroup.js +37 -0
- package/dist/components/forms/SelectableCard/index.d.ts +3 -0
- package/dist/components/forms/Signature/Signature.theme.js +1 -1
- package/dist/components/forms/Slider/Slider.theme.js +3 -3
- package/dist/components/forms/Switch/Switch.theme.js +1 -1
- package/dist/components/forms/TimePicker/TimePicker.theme.js +2 -2
- package/dist/components/forms/TimePicker/TimePickerContent.js +78 -1
- package/dist/components/forms/TransferList/TransferList.animations.d.ts +10 -0
- package/dist/components/forms/TransferList/TransferList.animations.js +32 -0
- package/dist/components/forms/TransferList/TransferList.d.ts +28 -0
- package/dist/components/forms/TransferList/TransferList.js +199 -0
- package/dist/components/forms/TransferList/TransferList.theme.d.ts +6 -0
- package/dist/components/forms/TransferList/TransferList.theme.js +60 -0
- package/dist/components/forms/TransferList/TransferList.types.d.ts +101 -0
- package/dist/components/forms/TransferList/index.d.ts +3 -0
- package/dist/components/forms/forms.theme.js +6 -6
- package/dist/components/forms/index.d.ts +15 -2
- package/dist/components/forms/index.js +87 -0
- package/dist/components/layout/FormLayout/FormLayout.d.ts +8 -0
- package/dist/components/layout/FormLayout/FormLayout.js +22 -0
- package/dist/components/layout/FormLayout/FormLayout.theme.d.ts +2 -0
- package/dist/components/layout/FormLayout/FormLayout.theme.js +16 -0
- package/dist/components/layout/FormLayout/FormLayout.types.d.ts +61 -0
- package/dist/components/layout/FormLayout/FormLayoutBody.d.ts +3 -0
- package/dist/components/layout/FormLayout/FormLayoutBody.js +91 -0
- package/dist/components/layout/FormLayout/FormLayoutFooter.d.ts +3 -0
- package/dist/components/layout/FormLayout/FormLayoutFooter.js +12 -0
- package/dist/components/layout/FormLayout/FormLayoutHeader.d.ts +3 -0
- package/dist/components/layout/FormLayout/FormLayoutHeader.js +12 -0
- package/dist/components/layout/FormLayout/FormLayoutSection.d.ts +3 -0
- package/dist/components/layout/FormLayout/FormLayoutSection.js +12 -0
- package/dist/components/layout/FormLayout/index.d.ts +3 -0
- package/dist/components/layout/PageLayout/PageLayout.d.ts +7 -0
- package/dist/components/layout/PageLayout/PageLayout.js +33 -0
- package/dist/components/layout/PageLayout/PageLayout.theme.d.ts +2 -0
- package/dist/components/layout/PageLayout/PageLayout.theme.js +10 -0
- package/dist/components/layout/PageLayout/PageLayout.types.d.ts +39 -0
- package/dist/components/layout/PageLayout/PageLayoutContent.d.ts +3 -0
- package/dist/components/layout/PageLayout/PageLayoutContent.js +12 -0
- package/dist/components/layout/PageLayout/PageLayoutHeader.d.ts +3 -0
- package/dist/components/layout/PageLayout/PageLayoutHeader.js +12 -0
- package/dist/components/layout/PageLayout/PageLayoutSidebar.d.ts +3 -0
- package/dist/components/layout/PageLayout/PageLayoutSidebar.js +12 -0
- package/dist/components/layout/PageLayout/index.d.ts +3 -0
- package/dist/components/layout/index.d.ts +2 -0
- package/dist/hooks/useSelectPortal.d.ts +4 -2
- package/dist/hooks/useSelectPortal.js +139 -51
- package/dist/index.d.ts +2 -0
- package/dist/index.js +206 -167
- package/dist/styles.css +1 -1
- package/dist/utils/colorUtils.d.ts +23 -0
- package/dist/utils/colorUtils.js +45 -0
- package/dist/utils/dateUtils.d.ts +30 -0
- package/dist/utils/dateUtils.js +58 -1
- package/dist/utils/index.d.ts +2 -1
- package/package.json +38 -26
- package/src/global.scss +673 -0
- package/src/styles/theme.css +378 -0
- package/src/theme-plugin.css +11 -0
- package/dist/components/core/Button/Button.animations.d.ts +0 -5
- package/dist/components/core/Card/CardDescription.d.ts +0 -3
- package/dist/components/core/Card/CardDescription.js +0 -11
- package/dist/components/core/DescriptionList/DescriptionList.theme.js +0 -8
- package/dist/components/core/Modal/ModalDescription.d.ts +0 -5
- package/dist/components/core/Modal/ModalDescription.js +0 -11
- package/dist/components/core/ProgressiveBlur/ProgressiveBlur.d.ts +0 -34
- package/dist/components/core/ProgressiveBlur/ProgressiveBlur.js +0 -218
- package/dist/components/core/ProgressiveBlur/ProgressiveBlur.theme.d.ts +0 -9
- package/dist/components/core/ProgressiveBlur/ProgressiveBlur.types.d.ts +0 -48
- package/dist/components/core/ProgressiveBlur/index.d.ts +0 -2
- package/dist/components/core/Table/TablePagination.js +0 -25
- /package/dist/components/{core → data-display}/DescriptionList/DescriptionList.d.ts +0 -0
- /package/dist/components/{core → data-display}/DescriptionList/DescriptionList.js +0 -0
- /package/dist/components/{core → data-display}/DescriptionList/DescriptionList.theme.d.ts +0 -0
- /package/dist/components/{core → data-display}/DescriptionList/DescriptionList.types.d.ts +0 -0
- /package/dist/components/{core → data-display}/DescriptionList/index.d.ts +0 -0
- /package/dist/components/{core → data-display}/Feed/Feed.d.ts +0 -0
- /package/dist/components/{core → data-display}/Feed/Feed.theme.d.ts +0 -0
- /package/dist/components/{core → data-display}/Feed/Feed.types.d.ts +0 -0
- /package/dist/components/{core → data-display}/Feed/index.d.ts +0 -0
- /package/dist/components/{core → data-display}/KPI/KPI.d.ts +0 -0
- /package/dist/components/{core → data-display}/KPI/KPI.theme.d.ts +0 -0
- /package/dist/components/{core → data-display}/Metric/Metric.d.ts +0 -0
- /package/dist/components/{core → data-display}/Metric/Metric.theme.d.ts +0 -0
- /package/dist/components/{core → data-display}/Metric/index.d.ts +0 -0
- /package/dist/components/{core → data-display}/Table/Table.animations.d.ts +0 -0
- /package/dist/components/{core → data-display}/Table/Table.animations.js +0 -0
- /package/dist/components/{core → data-display}/Table/Table.d.ts +0 -0
- /package/dist/components/{core → data-display}/Table/Table.filterUtils.d.ts +0 -0
- /package/dist/components/{core → data-display}/Table/Table.filterUtils.js +0 -0
- /package/dist/components/{core → data-display}/Table/Table.js +0 -0
- /package/dist/components/{core → data-display}/Table/Table.theme.d.ts +0 -0
- /package/dist/components/{core → data-display}/Table/Table.types.d.ts +0 -0
- /package/dist/components/{core → data-display}/Table/Table.utils.d.ts +0 -0
- /package/dist/components/{core → data-display}/Table/Table.utils.js +0 -0
- /package/dist/components/{core → data-display}/Table/TableActions.d.ts +0 -0
- /package/dist/components/{core → data-display}/Table/TableActionsMenu.d.ts +0 -0
- /package/dist/components/{core → data-display}/Table/TableBody.d.ts +0 -0
- /package/dist/components/{core → data-display}/Table/TableBody.js +0 -0
- /package/dist/components/{core → data-display}/Table/TableCell.d.ts +0 -0
- /package/dist/components/{core → data-display}/Table/TableCell.js +0 -0
- /package/dist/components/{core → data-display}/Table/TableColumnManager.d.ts +0 -0
- /package/dist/components/{core → data-display}/Table/TableDeclarative.d.ts +0 -0
- /package/dist/components/{core → data-display}/Table/TableDeclarative.js +0 -0
- /package/dist/components/{core → data-display}/Table/TableFilter.d.ts +0 -0
- /package/dist/components/{core → data-display}/Table/TableHeader.d.ts +0 -0
- /package/dist/components/{core → data-display}/Table/TablePagination.d.ts +0 -0
- /package/dist/components/{core → data-display}/Table/TableRow.d.ts +0 -0
- /package/dist/components/{core → data-display}/Table/TableSelectionHeader.d.ts +0 -0
- /package/dist/components/{core → data-display}/Table/hooks/index.d.ts +0 -0
- /package/dist/components/{core → data-display}/Table/hooks/useTableColumns.d.ts +0 -0
- /package/dist/components/{core → data-display}/Table/hooks/useTableColumns.js +0 -0
- /package/dist/components/{core → data-display}/Table/hooks/useTableExpansion.d.ts +0 -0
- /package/dist/components/{core → data-display}/Table/hooks/useTableExpansion.js +0 -0
- /package/dist/components/{core → data-display}/Table/hooks/useTableFilter.d.ts +0 -0
- /package/dist/components/{core → data-display}/Table/hooks/useTableFilter.js +0 -0
- /package/dist/components/{core → data-display}/Table/hooks/useTablePagination.d.ts +0 -0
- /package/dist/components/{core → data-display}/Table/hooks/useTablePagination.js +0 -0
- /package/dist/components/{core → data-display}/Table/hooks/useTableSelection.d.ts +0 -0
- /package/dist/components/{core → data-display}/Table/hooks/useTableSelection.js +0 -0
- /package/dist/components/{core → data-display}/Table/index.d.ts +0 -0
- /package/dist/components/{core → data-display}/Table/index.js +0 -0
- /package/dist/components/{core → data-display}/Timeline/Timeline.animations.d.ts +0 -0
- /package/dist/components/{core → data-display}/Timeline/Timeline.animations.js +0 -0
- /package/dist/components/{core → data-display}/Timeline/Timeline.d.ts +0 -0
- /package/dist/components/{core → data-display}/Timeline/Timeline.js +0 -0
- /package/dist/components/{core → data-display}/Timeline/Timeline.theme.d.ts +0 -0
- /package/dist/components/{core → data-display}/Timeline/Timeline.types.d.ts +0 -0
- /package/dist/components/{core → data-display}/Timeline/TimelineContent.d.ts +0 -0
- /package/dist/components/{core → data-display}/Timeline/TimelineContent.js +0 -0
- /package/dist/components/{core → data-display}/Timeline/TimelineItem.d.ts +0 -0
- /package/dist/components/{core → data-display}/Timeline/TimelineItem.js +0 -0
- /package/dist/components/{core → data-display}/Timeline/TimelineMarker.d.ts +0 -0
- /package/dist/components/{core → data-display}/Timeline/TimelineMarker.js +0 -0
- /package/dist/components/{core → data-display}/Timeline/index.d.ts +0 -0
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { TagSize } from "../../core/Tag/Tag.types";
|
|
3
|
+
/**
|
|
4
|
+
* A single suggestion item displayed in the mention dropdown.
|
|
5
|
+
*/
|
|
6
|
+
export interface MentionSuggestion {
|
|
7
|
+
/** Unique identifier for the suggestion */
|
|
8
|
+
id: string;
|
|
9
|
+
/** Display label (e.g. user name, tag name) */
|
|
10
|
+
label: string;
|
|
11
|
+
/** Optional avatar URL */
|
|
12
|
+
avatar?: string;
|
|
13
|
+
/** Optional description line (e.g. job title, email) */
|
|
14
|
+
description?: string;
|
|
15
|
+
/** Allow arbitrary metadata */
|
|
16
|
+
[key: string]: unknown;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Rich mention data returned via onMentionsChange.
|
|
20
|
+
*/
|
|
21
|
+
export interface MentionData {
|
|
22
|
+
/** Unique identifier */
|
|
23
|
+
id: string;
|
|
24
|
+
/** Display label */
|
|
25
|
+
label: string;
|
|
26
|
+
/** The trigger character used (e.g. '@', '#') */
|
|
27
|
+
trigger: string;
|
|
28
|
+
/** Optional avatar URL */
|
|
29
|
+
avatar?: string;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* A text segment in the content model.
|
|
33
|
+
*/
|
|
34
|
+
export interface TextSegment {
|
|
35
|
+
type: "text";
|
|
36
|
+
text: string;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* A mention segment in the content model.
|
|
40
|
+
*/
|
|
41
|
+
export interface MentionSegment {
|
|
42
|
+
type: "mention";
|
|
43
|
+
data: MentionData;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* A content segment is either text or a mention.
|
|
47
|
+
*/
|
|
48
|
+
export type ContentSegment = TextSegment | MentionSegment;
|
|
49
|
+
/**
|
|
50
|
+
* Configuration for a single trigger character and its suggestions.
|
|
51
|
+
*/
|
|
52
|
+
export interface MentionTrigger {
|
|
53
|
+
/** The trigger character (e.g. '@', '#') */
|
|
54
|
+
trigger: string;
|
|
55
|
+
/** Available suggestions for this trigger */
|
|
56
|
+
suggestions: MentionSuggestion[];
|
|
57
|
+
/** Async search callback invoked when the user types after the trigger */
|
|
58
|
+
onSearch?: (query: string) => void | Promise<void>;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Size variants for the Mention component.
|
|
62
|
+
*/
|
|
63
|
+
export type MentionSize = "sm" | "md" | "lg";
|
|
64
|
+
/**
|
|
65
|
+
* Theme configuration for the Mention component.
|
|
66
|
+
*/
|
|
67
|
+
export interface MentionTheme {
|
|
68
|
+
/** Outermost wrapper style */
|
|
69
|
+
wrapperStyle: string;
|
|
70
|
+
/** Input group container style (border, focus ring) */
|
|
71
|
+
inputGroupStyle: string;
|
|
72
|
+
/** JS-driven focus ring style */
|
|
73
|
+
inputGroupFocusStyle: string;
|
|
74
|
+
/** Base editable div style */
|
|
75
|
+
editableStyle: string;
|
|
76
|
+
/** Size variants for the editable div */
|
|
77
|
+
sizes: Record<MentionSize, string>;
|
|
78
|
+
/** Inline mention Tag chip style */
|
|
79
|
+
mentionTagStyle: string;
|
|
80
|
+
/** Dropdown container style */
|
|
81
|
+
dropdownStyle: string;
|
|
82
|
+
/** Individual suggestion item style */
|
|
83
|
+
suggestionStyle: string;
|
|
84
|
+
/** Highlighted (keyboard-focused) suggestion style */
|
|
85
|
+
suggestionHighlightedStyle: string;
|
|
86
|
+
/** Avatar style inside a suggestion */
|
|
87
|
+
suggestionAvatarStyle: string;
|
|
88
|
+
/** Avatar fallback (initials) style */
|
|
89
|
+
suggestionAvatarFallbackStyle: string;
|
|
90
|
+
/** Suggestion label text style */
|
|
91
|
+
suggestionLabelStyle: string;
|
|
92
|
+
/** Suggestion description text style */
|
|
93
|
+
suggestionDescriptionStyle: string;
|
|
94
|
+
/** Empty state message style */
|
|
95
|
+
emptyMessageStyle: string;
|
|
96
|
+
/** Loading state style */
|
|
97
|
+
loadingStyle: string;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Partial theme overrides for the Mention component.
|
|
101
|
+
*/
|
|
102
|
+
export type MentionThemeOverrides = Partial<MentionTheme>;
|
|
103
|
+
/**
|
|
104
|
+
* Props for the Mention component.
|
|
105
|
+
*/
|
|
106
|
+
export interface MentionProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "onChange" | "defaultValue"> {
|
|
107
|
+
/** Multiple trigger configurations (e.g. '@' for users, '#' for tags) */
|
|
108
|
+
triggers?: MentionTrigger[];
|
|
109
|
+
/** Simple API: suggestions for the default '@' trigger */
|
|
110
|
+
suggestions?: MentionSuggestion[];
|
|
111
|
+
/** Simple API: async search callback for the default '@' trigger */
|
|
112
|
+
onSearch?: (query: string) => void;
|
|
113
|
+
/** Controlled value (plain text with trigger+label for mentions) */
|
|
114
|
+
value?: string;
|
|
115
|
+
/** Uncontrolled default value */
|
|
116
|
+
defaultValue?: string;
|
|
117
|
+
/** Change callback with the full text value */
|
|
118
|
+
onChange?: (value: string) => void;
|
|
119
|
+
/** Callback when a suggestion is selected */
|
|
120
|
+
onMentionSelect?: (suggestion: MentionSuggestion, trigger: string) => void;
|
|
121
|
+
/** Callback with current mention data whenever mentions change */
|
|
122
|
+
onMentionsChange?: (mentions: MentionData[]) => void;
|
|
123
|
+
/** Placeholder text */
|
|
124
|
+
placeholder?: string;
|
|
125
|
+
/** Size variant */
|
|
126
|
+
size?: MentionSize;
|
|
127
|
+
/** Maximum number of suggestions shown */
|
|
128
|
+
maxSuggestions?: number;
|
|
129
|
+
/** Additional className for the editable div */
|
|
130
|
+
className?: string;
|
|
131
|
+
/** Additional className for the wrapper */
|
|
132
|
+
wrapperClassName?: string;
|
|
133
|
+
/** Additional className for the dropdown */
|
|
134
|
+
dropdownClassName?: string;
|
|
135
|
+
/** Theme overrides */
|
|
136
|
+
theme?: MentionThemeOverrides;
|
|
137
|
+
/** Whether the mention input is disabled */
|
|
138
|
+
disabled?: boolean;
|
|
139
|
+
/** Custom renderer for suggestion items */
|
|
140
|
+
renderSuggestion?: (suggestion: MentionSuggestion, isHighlighted: boolean, trigger: string) => React.ReactNode;
|
|
141
|
+
/** Message shown when no suggestions match */
|
|
142
|
+
emptyMessage?: string;
|
|
143
|
+
/** Whether a search is currently loading */
|
|
144
|
+
loading?: boolean;
|
|
145
|
+
/** Size of the inline mention Tag chips */
|
|
146
|
+
mentionTagSize?: TagSize;
|
|
147
|
+
/** Additional className for inline mention Tag chips */
|
|
148
|
+
mentionTagClassName?: string;
|
|
149
|
+
/** Number of visible text rows (controls min-height) */
|
|
150
|
+
rows?: number;
|
|
151
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { ContentSegment, MentionData } from "./Mention.types";
|
|
2
|
+
export declare const MENTION_ATTR = "data-mention-id";
|
|
3
|
+
/**
|
|
4
|
+
* Serialize segments to a plain text string.
|
|
5
|
+
* Mentions become `trigger + label` (e.g. "@Sarah Wilson").
|
|
6
|
+
*/
|
|
7
|
+
export declare const serializeSegments: (segments: ContentSegment[]) => string;
|
|
8
|
+
/**
|
|
9
|
+
* Serialize segments but replace mention content with a neutral placeholder.
|
|
10
|
+
* This prevents `detectActiveMention` from matching trigger characters
|
|
11
|
+
* that belong to already-resolved mentions.
|
|
12
|
+
*/
|
|
13
|
+
export declare const serializeSegmentsMasked: (segments: ContentSegment[]) => string;
|
|
14
|
+
/**
|
|
15
|
+
* Merge adjacent text segments and ensure the array starts/ends with text.
|
|
16
|
+
* Returns a new array (never mutates input).
|
|
17
|
+
*/
|
|
18
|
+
export declare const normalizeSegments: (segments: ContentSegment[]) => ContentSegment[];
|
|
19
|
+
/**
|
|
20
|
+
* Insert a mention into the segments array at the given plain-text position.
|
|
21
|
+
* `startIndex` is the position of the trigger character.
|
|
22
|
+
* `replaceLength` includes the trigger + query length.
|
|
23
|
+
*/
|
|
24
|
+
export declare const insertMentionIntoSegments: (segments: ContentSegment[], mention: MentionData, startIndex: number, replaceLength: number) => ContentSegment[];
|
|
25
|
+
/**
|
|
26
|
+
* Get the plain text offset of the current caret position within a
|
|
27
|
+
* contentEditable container. Mention nodes count as their trigger+label length.
|
|
28
|
+
*/
|
|
29
|
+
export declare const getPlainTextOffset: (container: HTMLElement) => number | null;
|
|
30
|
+
/**
|
|
31
|
+
* Parse the DOM of a contentEditable container back into segments.
|
|
32
|
+
* Text nodes become TextSegments, elements with MENTION_ATTR become MentionSegments.
|
|
33
|
+
*/
|
|
34
|
+
export declare const parseDOMToSegments: (container: HTMLElement, mentionMap: Map<string, MentionData>) => ContentSegment[];
|
|
35
|
+
/**
|
|
36
|
+
* Place the caret right after a given node inside a contentEditable container.
|
|
37
|
+
*/
|
|
38
|
+
export declare const setCaretAfterNode: (node: Node) => void;
|
|
39
|
+
/**
|
|
40
|
+
* Set the caret at a specific plain-text offset within a contentEditable container.
|
|
41
|
+
*/
|
|
42
|
+
export declare const setCaretAtOffset: (container: HTMLElement, targetOffset: number) => void;
|
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
// Data attribute used to identify mention nodes in the DOM
|
|
2
|
+
const MENTION_ATTR = "data-mention-id";
|
|
3
|
+
/**
|
|
4
|
+
* Serialize segments to a plain text string.
|
|
5
|
+
* Mentions become `trigger + label` (e.g. "@Sarah Wilson").
|
|
6
|
+
*/
|
|
7
|
+
const serializeSegments = (segments) => {
|
|
8
|
+
return segments
|
|
9
|
+
.map((seg) => seg.type === "text" ? seg.text : `${seg.data.trigger}${seg.data.label}`)
|
|
10
|
+
.join("");
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Serialize segments but replace mention content with a neutral placeholder.
|
|
14
|
+
* This prevents `detectActiveMention` from matching trigger characters
|
|
15
|
+
* that belong to already-resolved mentions.
|
|
16
|
+
*/
|
|
17
|
+
const serializeSegmentsMasked = (segments) => {
|
|
18
|
+
return segments
|
|
19
|
+
.map((seg) => seg.type === "text"
|
|
20
|
+
? seg.text
|
|
21
|
+
: "\uFFFC".repeat(seg.data.trigger.length + seg.data.label.length))
|
|
22
|
+
.join("");
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Merge adjacent text segments and ensure the array starts/ends with text.
|
|
26
|
+
* Returns a new array (never mutates input).
|
|
27
|
+
*/
|
|
28
|
+
const normalizeSegments = (segments) => {
|
|
29
|
+
if (segments.length === 0)
|
|
30
|
+
return [{ type: "text", text: "" }];
|
|
31
|
+
const result = [];
|
|
32
|
+
for (const seg of segments) {
|
|
33
|
+
if (seg.type === "text" &&
|
|
34
|
+
result.length > 0 &&
|
|
35
|
+
result[result.length - 1].type === "text") {
|
|
36
|
+
// Merge adjacent text segments
|
|
37
|
+
result[result.length - 1].text += seg.text;
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
// Clone to avoid mutating input
|
|
41
|
+
result.push(seg.type === "text"
|
|
42
|
+
? { type: "text", text: seg.text }
|
|
43
|
+
: { type: "mention", data: { ...seg.data } });
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
// Ensure text bookends
|
|
47
|
+
if (result[0].type !== "text") {
|
|
48
|
+
result.unshift({ type: "text", text: "" });
|
|
49
|
+
}
|
|
50
|
+
if (result[result.length - 1].type !== "text") {
|
|
51
|
+
result.push({ type: "text", text: "" });
|
|
52
|
+
}
|
|
53
|
+
return result;
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* Insert a mention into the segments array at the given plain-text position.
|
|
57
|
+
* `startIndex` is the position of the trigger character.
|
|
58
|
+
* `replaceLength` includes the trigger + query length.
|
|
59
|
+
*/
|
|
60
|
+
const insertMentionIntoSegments = (segments, mention, startIndex, replaceLength) => {
|
|
61
|
+
const newSegments = [];
|
|
62
|
+
let offset = 0;
|
|
63
|
+
for (const seg of segments) {
|
|
64
|
+
if (seg.type === "mention") {
|
|
65
|
+
const mentionText = `${seg.data.trigger}${seg.data.label}`;
|
|
66
|
+
const segLen = mentionText.length;
|
|
67
|
+
if (offset + segLen <= startIndex ||
|
|
68
|
+
offset >= startIndex + replaceLength) {
|
|
69
|
+
newSegments.push({ type: "mention", data: { ...seg.data } });
|
|
70
|
+
}
|
|
71
|
+
// If the mention overlaps with replacement range, skip it
|
|
72
|
+
offset += segLen;
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
const segLen = seg.text.length;
|
|
76
|
+
const segStart = offset;
|
|
77
|
+
const segEnd = offset + segLen;
|
|
78
|
+
if (segEnd <= startIndex || segStart >= startIndex + replaceLength) {
|
|
79
|
+
// Entirely outside the replacement range
|
|
80
|
+
newSegments.push({ type: "text", text: seg.text });
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
// This text segment overlaps the replacement range
|
|
84
|
+
const beforeStart = Math.max(0, startIndex - segStart);
|
|
85
|
+
const afterStart = Math.min(segLen, startIndex + replaceLength - segStart);
|
|
86
|
+
const before = seg.text.slice(0, beforeStart);
|
|
87
|
+
const after = seg.text.slice(afterStart);
|
|
88
|
+
if (before) {
|
|
89
|
+
newSegments.push({ type: "text", text: before });
|
|
90
|
+
}
|
|
91
|
+
newSegments.push({ type: "mention", data: mention });
|
|
92
|
+
// Add a trailing space after the mention
|
|
93
|
+
newSegments.push({ type: "text", text: " " + after });
|
|
94
|
+
}
|
|
95
|
+
offset += segLen;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
return normalizeSegments(newSegments);
|
|
99
|
+
};
|
|
100
|
+
/**
|
|
101
|
+
* Get the plain text offset of the current caret position within a
|
|
102
|
+
* contentEditable container. Mention nodes count as their trigger+label length.
|
|
103
|
+
*/
|
|
104
|
+
const getPlainTextOffset = (container) => {
|
|
105
|
+
const sel = window.getSelection();
|
|
106
|
+
if (!sel || sel.rangeCount === 0)
|
|
107
|
+
return null;
|
|
108
|
+
const range = sel.getRangeAt(0);
|
|
109
|
+
if (!container.contains(range.startContainer))
|
|
110
|
+
return null;
|
|
111
|
+
let offset = 0;
|
|
112
|
+
const walker = document.createTreeWalker(container, NodeFilter.SHOW_TEXT | NodeFilter.SHOW_ELEMENT, {
|
|
113
|
+
acceptNode: (node) => {
|
|
114
|
+
if (node.nodeType === Node.TEXT_NODE)
|
|
115
|
+
return NodeFilter.FILTER_ACCEPT;
|
|
116
|
+
if (node.nodeType === Node.ELEMENT_NODE &&
|
|
117
|
+
node.hasAttribute(MENTION_ATTR)) {
|
|
118
|
+
return NodeFilter.FILTER_ACCEPT;
|
|
119
|
+
}
|
|
120
|
+
// Skip non-mention element nodes but traverse their children
|
|
121
|
+
return NodeFilter.FILTER_SKIP;
|
|
122
|
+
},
|
|
123
|
+
});
|
|
124
|
+
let node;
|
|
125
|
+
while ((node = walker.nextNode())) {
|
|
126
|
+
if (node === range.startContainer) {
|
|
127
|
+
// We're in a text node that contains the caret
|
|
128
|
+
return offset + range.startOffset;
|
|
129
|
+
}
|
|
130
|
+
if (node.nodeType === Node.TEXT_NODE) {
|
|
131
|
+
// Check if the range start is within a parent that is this text node's parent
|
|
132
|
+
if (node.parentNode === range.startContainer) {
|
|
133
|
+
// Range.startContainer is the parent element, startOffset is child index
|
|
134
|
+
// Check if this text node comes before the caret child index
|
|
135
|
+
const children = Array.from(range.startContainer.childNodes);
|
|
136
|
+
const nodeIndex = children.indexOf(node);
|
|
137
|
+
if (nodeIndex < range.startOffset) {
|
|
138
|
+
offset += (node.textContent || "").length;
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
return offset;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
offset += (node.textContent || "").length;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
else if (node.nodeType === Node.ELEMENT_NODE &&
|
|
149
|
+
node.hasAttribute(MENTION_ATTR)) {
|
|
150
|
+
// Check if caret is right after this mention element
|
|
151
|
+
if (range.startContainer === container ||
|
|
152
|
+
range.startContainer === node.parentNode) {
|
|
153
|
+
const children = Array.from(range.startContainer.childNodes);
|
|
154
|
+
const nodeIndex = children.indexOf(node);
|
|
155
|
+
if (nodeIndex < range.startOffset) {
|
|
156
|
+
node.getAttribute(MENTION_ATTR) || "";
|
|
157
|
+
const label = node.getAttribute("data-mention-label") || "";
|
|
158
|
+
const trigger = node.getAttribute("data-mention-trigger") || "";
|
|
159
|
+
offset += trigger.length + label.length;
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
return offset;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
const trigger = node.getAttribute("data-mention-trigger") || "";
|
|
167
|
+
const label = node.getAttribute("data-mention-label") || "";
|
|
168
|
+
offset += trigger.length + label.length;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
// Caret might be at the very end
|
|
173
|
+
if (range.startContainer === container) {
|
|
174
|
+
return offset;
|
|
175
|
+
}
|
|
176
|
+
return offset;
|
|
177
|
+
};
|
|
178
|
+
/**
|
|
179
|
+
* Parse the DOM of a contentEditable container back into segments.
|
|
180
|
+
* Text nodes become TextSegments, elements with MENTION_ATTR become MentionSegments.
|
|
181
|
+
*/
|
|
182
|
+
const parseDOMToSegments = (container, mentionMap) => {
|
|
183
|
+
const segments = [];
|
|
184
|
+
const processNode = (node) => {
|
|
185
|
+
if (node.nodeType === Node.TEXT_NODE) {
|
|
186
|
+
const text = node.textContent || "";
|
|
187
|
+
if (text) {
|
|
188
|
+
segments.push({ type: "text", text });
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
else if (node.nodeType === Node.ELEMENT_NODE) {
|
|
192
|
+
const el = node;
|
|
193
|
+
if (el.hasAttribute(MENTION_ATTR)) {
|
|
194
|
+
const id = el.getAttribute(MENTION_ATTR) || "";
|
|
195
|
+
const data = mentionMap.get(id);
|
|
196
|
+
if (data) {
|
|
197
|
+
segments.push({ type: "mention", data: { ...data } });
|
|
198
|
+
}
|
|
199
|
+
// Don't recurse into mention nodes
|
|
200
|
+
return;
|
|
201
|
+
}
|
|
202
|
+
// Handle <br> as newline
|
|
203
|
+
if (el.tagName === "BR") {
|
|
204
|
+
segments.push({ type: "text", text: "\n" });
|
|
205
|
+
return;
|
|
206
|
+
}
|
|
207
|
+
// Handle block-level elements that create newlines (div, p)
|
|
208
|
+
const isBlock = el.tagName === "DIV" || el.tagName === "P";
|
|
209
|
+
if (isBlock && segments.length > 0) {
|
|
210
|
+
// Add newline before block content (if not first)
|
|
211
|
+
const lastSeg = segments[segments.length - 1];
|
|
212
|
+
if (lastSeg.type === "text" && !lastSeg.text.endsWith("\n")) {
|
|
213
|
+
segments.push({ type: "text", text: "\n" });
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
// Recurse into children
|
|
217
|
+
for (const child of Array.from(el.childNodes)) {
|
|
218
|
+
processNode(child);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
};
|
|
222
|
+
for (const child of Array.from(container.childNodes)) {
|
|
223
|
+
processNode(child);
|
|
224
|
+
}
|
|
225
|
+
return normalizeSegments(segments);
|
|
226
|
+
};
|
|
227
|
+
/**
|
|
228
|
+
* Set the caret at a specific plain-text offset within a contentEditable container.
|
|
229
|
+
*/
|
|
230
|
+
const setCaretAtOffset = (container, targetOffset) => {
|
|
231
|
+
const sel = window.getSelection();
|
|
232
|
+
if (!sel)
|
|
233
|
+
return;
|
|
234
|
+
let remaining = targetOffset;
|
|
235
|
+
const walker = document.createTreeWalker(container, NodeFilter.SHOW_TEXT | NodeFilter.SHOW_ELEMENT, {
|
|
236
|
+
acceptNode: (node) => {
|
|
237
|
+
if (node.nodeType === Node.TEXT_NODE)
|
|
238
|
+
return NodeFilter.FILTER_ACCEPT;
|
|
239
|
+
if (node.nodeType === Node.ELEMENT_NODE &&
|
|
240
|
+
node.hasAttribute(MENTION_ATTR)) {
|
|
241
|
+
return NodeFilter.FILTER_ACCEPT;
|
|
242
|
+
}
|
|
243
|
+
return NodeFilter.FILTER_SKIP;
|
|
244
|
+
},
|
|
245
|
+
});
|
|
246
|
+
let node;
|
|
247
|
+
while ((node = walker.nextNode())) {
|
|
248
|
+
if (node.nodeType === Node.TEXT_NODE) {
|
|
249
|
+
const len = (node.textContent || "").length;
|
|
250
|
+
if (remaining <= len) {
|
|
251
|
+
const range = document.createRange();
|
|
252
|
+
range.setStart(node, remaining);
|
|
253
|
+
range.collapse(true);
|
|
254
|
+
sel.removeAllRanges();
|
|
255
|
+
sel.addRange(range);
|
|
256
|
+
return;
|
|
257
|
+
}
|
|
258
|
+
remaining -= len;
|
|
259
|
+
}
|
|
260
|
+
else if (node.nodeType === Node.ELEMENT_NODE &&
|
|
261
|
+
node.hasAttribute(MENTION_ATTR)) {
|
|
262
|
+
const trigger = node.getAttribute("data-mention-trigger") || "";
|
|
263
|
+
const label = node.getAttribute("data-mention-label") || "";
|
|
264
|
+
const mentionLen = trigger.length + label.length;
|
|
265
|
+
if (remaining <= mentionLen) {
|
|
266
|
+
// Place caret after this mention
|
|
267
|
+
const range = document.createRange();
|
|
268
|
+
range.setStartAfter(node);
|
|
269
|
+
range.collapse(true);
|
|
270
|
+
sel.removeAllRanges();
|
|
271
|
+
sel.addRange(range);
|
|
272
|
+
return;
|
|
273
|
+
}
|
|
274
|
+
remaining -= mentionLen;
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
// If we didn't place the caret, put it at the end
|
|
278
|
+
const range = document.createRange();
|
|
279
|
+
range.selectNodeContents(container);
|
|
280
|
+
range.collapse(false);
|
|
281
|
+
sel.removeAllRanges();
|
|
282
|
+
sel.addRange(range);
|
|
283
|
+
};
|
|
284
|
+
|
|
285
|
+
export { MENTION_ATTR, getPlainTextOffset, insertMentionIntoSegments, normalizeSegments, parseDOMToSegments, serializeSegments, serializeSegmentsMasked, setCaretAtOffset };
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { Mention } from "./Mention";
|
|
2
|
+
export type { MentionProps, MentionSuggestion, MentionTrigger, MentionSize, MentionData, ContentSegment, TextSegment, MentionSegment, MentionTheme, MentionThemeOverrides, } from "./Mention.types";
|
|
3
|
+
export { mentionTheme } from "./Mention.theme";
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { RadioProps } from "./Radio.types";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
export declare const Radio: React.ForwardRefExoticComponent<RadioProps & React.RefAttributes<HTMLInputElement>>;
|
|
3
|
+
export declare const Radio: React.ForwardRefExoticComponent<RadioProps & React.RefAttributes<HTMLInputElement>> & {
|
|
4
|
+
Group: React.ForwardRefExoticComponent<import("./Radio.types").RadioGroupProps & React.RefAttributes<HTMLFieldSetElement>>;
|
|
5
|
+
};
|
|
@@ -1,29 +1,42 @@
|
|
|
1
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
-
import React__default, {
|
|
2
|
+
import React__default, { useId } from 'react';
|
|
3
3
|
import { radioTheme } from './Radio.theme.js';
|
|
4
|
-
import {
|
|
4
|
+
import { formLabelTheme } from '../FormLabel/FormLabel.theme.js';
|
|
5
5
|
import { cn } from '../../../utils/cn.js';
|
|
6
|
+
import { useRadioGroupContext } from './RadioContext.js';
|
|
7
|
+
import { RadioGroup } from './RadioGroup.js';
|
|
6
8
|
|
|
7
9
|
/**
|
|
8
10
|
* Radio component for selecting one option from a group
|
|
9
11
|
*/
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
12
|
+
const RadioComponent = React__default.forwardRef(({ id: idProp, name: nameProp, value, checked: checkedProp, defaultChecked, onChange, label, description, state: stateProp = "default", size: sizeProp = "md", className, ...restProps }, ref) => {
|
|
13
|
+
var _a, _b, _c, _d;
|
|
14
|
+
const autoId = useId();
|
|
15
|
+
const groupContext = useRadioGroupContext();
|
|
16
|
+
// Resolve props from group context or individual props
|
|
17
|
+
const id = idProp !== null && idProp !== void 0 ? idProp : autoId;
|
|
18
|
+
const name = (_b = (_a = groupContext === null || groupContext === void 0 ? void 0 : groupContext.name) !== null && _a !== void 0 ? _a : nameProp) !== null && _b !== void 0 ? _b : autoId;
|
|
19
|
+
const size = (_c = groupContext === null || groupContext === void 0 ? void 0 : groupContext.size) !== null && _c !== void 0 ? _c : sizeProp;
|
|
20
|
+
const state = stateProp === "disabled" ? "disabled" : ((_d = groupContext === null || groupContext === void 0 ? void 0 : groupContext.state) !== null && _d !== void 0 ? _d : stateProp);
|
|
16
21
|
const isDisabled = state === "disabled";
|
|
22
|
+
// Determine checked state
|
|
23
|
+
const isInGroup = groupContext !== undefined;
|
|
24
|
+
const checked = isInGroup ? groupContext.value === value : checkedProp;
|
|
25
|
+
const isControlled = checked !== undefined;
|
|
17
26
|
const handleChange = (e) => {
|
|
18
27
|
if (isDisabled)
|
|
19
28
|
return;
|
|
20
|
-
if (
|
|
21
|
-
|
|
29
|
+
if (isInGroup) {
|
|
30
|
+
groupContext.onChange(value);
|
|
22
31
|
}
|
|
23
32
|
onChange === null || onChange === void 0 ? void 0 : onChange(e.target.checked, value);
|
|
24
33
|
};
|
|
25
|
-
|
|
34
|
+
const inputProps = isControlled
|
|
35
|
+
? { checked }
|
|
36
|
+
: { defaultChecked };
|
|
37
|
+
return (jsxs("div", { className: cn(radioTheme.baseStyle, className), ...restProps, children: [jsxs("div", { className: cn(radioTheme.inputContainerStyle, radioTheme.sizes[size]), children: [jsx("input", { ref: ref, type: "radio", id: id, name: name, value: value, ...inputProps, onChange: handleChange, disabled: isDisabled, "aria-describedby": description ? `${id}-description` : undefined, "data-state": isDisabled ? "disabled" : "default", className: cn("peer", radioTheme.inputStyle, radioTheme.sizes[size]) }), jsx("div", { className: cn(radioTheme.dotStyle, size === "sm" ? "size-2.5 top-0.25" : "size-3") })] }), (label || description) && (jsxs("label", { htmlFor: id, className: cn("cursor-pointer", isDisabled && "cursor-not-allowed"), children: [label && (jsx("span", { className: cn(formLabelTheme.baseStyle, formLabelTheme.stateStyles[state], "mb-0"), children: label })), description && (jsx("div", { id: `${id}-description`, className: radioTheme.descriptionStyle, children: description }))] }))] }));
|
|
26
38
|
});
|
|
27
|
-
|
|
39
|
+
RadioComponent.displayName = "Radio";
|
|
40
|
+
const Radio = Object.assign(RadioComponent, { Group: RadioGroup });
|
|
28
41
|
|
|
29
42
|
export { Radio };
|
|
@@ -4,13 +4,42 @@
|
|
|
4
4
|
const radioTheme = {
|
|
5
5
|
baseStyle: "relative flex items-start gap-3",
|
|
6
6
|
inputContainerStyle: "relative flex-shrink-0 flex items-center justify-center",
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
// Input styles with light and dark mode variants
|
|
8
|
+
inputStyle: "col-start-1 row-start-1 appearance-none rounded-full border-2 transition-all duration-400 " +
|
|
9
|
+
// Default state - light
|
|
10
|
+
"border-[var(--color-border)] bg-[var(--color-surface)] " +
|
|
11
|
+
// Default state - dark
|
|
12
|
+
"dark:bg-[var(--color-background-secondary)] " +
|
|
13
|
+
// Checked state - light
|
|
14
|
+
"checked:border-[var(--color-primary)] " +
|
|
15
|
+
// Checked state - dark
|
|
16
|
+
" " +
|
|
17
|
+
// Checked outline - light
|
|
18
|
+
"checked:outline-2 checked:outline-[var(--color-primary-100)] checked:outline-offset-1 " +
|
|
19
|
+
// Checked outline - dark
|
|
20
|
+
"dark:checked:outline-[var(--color-primary-900)] " +
|
|
21
|
+
// Focus visible - light
|
|
22
|
+
"focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[var(--color-primary-600)] " +
|
|
23
|
+
// Focus visible - dark
|
|
24
|
+
"dark:focus-visible:outline-[var(--color-primary-500)] " +
|
|
25
|
+
// Disabled state - light
|
|
26
|
+
"disabled:bg-[var(--color-background-disabled)] disabled:checked:outline-0 " +
|
|
27
|
+
"data-[state=disabled]:border-[var(--color-border)] data-[state=disabled]:bg-[var(--color-background-disabled)] data-[state=disabled]:cursor-not-allowed " +
|
|
28
|
+
// Disabled state - dark
|
|
29
|
+
"dark:disabled:bg-[var(--color-neutral-700)] dark:disabled:border-[var(--color-neutral-600)] " +
|
|
30
|
+
"dark:data-[state=disabled]:bg-[var(--color-neutral-700)] dark:data-[state=disabled]:border-[var(--color-neutral-600)]",
|
|
31
|
+
dotStyle: "absolute inset-0 m-auto pointer-events-none rounded-full bg-[var(--color-primary)] opacity-0 transition-all duration-400 peer-checked:opacity-100 peer-data-[state=disabled]:saturate-0 peer-data-[state=disabled]:peer-checked:opacity-80",
|
|
32
|
+
descriptionStyle: "text-base text-[var(--color-text-secondary)]/80 mt-0.5",
|
|
10
33
|
sizes: {
|
|
11
34
|
sm: "size-5 mt-0.25",
|
|
12
|
-
md: "size-6"
|
|
13
|
-
}
|
|
35
|
+
md: "size-6",
|
|
36
|
+
},
|
|
37
|
+
// Group styles
|
|
38
|
+
groupStyle: "flex flex-col gap-1.5",
|
|
39
|
+
groupHorizontalStyle: "flex-row flex-wrap gap-x-6 gap-y-3",
|
|
40
|
+
groupDescriptionStyle: "text-base text-[var(--color-text-secondary)]/80 -mt-0.5 mb-1",
|
|
41
|
+
groupErrorStyle: "text-base text-[var(--color-danger)] mt-1.5",
|
|
42
|
+
groupItemsStyle: "flex flex-col gap-3",
|
|
14
43
|
};
|
|
15
44
|
|
|
16
45
|
export { radioTheme };
|
|
@@ -7,21 +7,42 @@ export type RadioState = 'default' | 'disabled';
|
|
|
7
7
|
* Size variants for the radio component
|
|
8
8
|
*/
|
|
9
9
|
export type RadioSize = 'sm' | 'md';
|
|
10
|
+
/**
|
|
11
|
+
* Orientation for Radio.Group layout
|
|
12
|
+
*/
|
|
13
|
+
export type RadioGroupOrientation = 'vertical' | 'horizontal';
|
|
10
14
|
/**
|
|
11
15
|
* Radio component props
|
|
12
16
|
*/
|
|
13
17
|
export interface RadioProps extends Omit<React.HTMLAttributes<HTMLInputElement>, 'onChange' | 'size'> {
|
|
14
|
-
id
|
|
15
|
-
name
|
|
16
|
-
value: string;
|
|
18
|
+
id?: string;
|
|
19
|
+
name?: string;
|
|
20
|
+
value: string | number;
|
|
17
21
|
checked?: boolean;
|
|
18
|
-
onChange?: (checked: boolean, value: string) => void;
|
|
22
|
+
onChange?: (checked: boolean, value: string | number) => void;
|
|
19
23
|
label?: string;
|
|
20
24
|
description?: string;
|
|
21
25
|
state?: RadioState;
|
|
22
26
|
size?: RadioSize;
|
|
23
27
|
className?: string;
|
|
24
28
|
}
|
|
29
|
+
/**
|
|
30
|
+
* Radio.Group component props
|
|
31
|
+
*/
|
|
32
|
+
export interface RadioGroupProps extends Omit<React.HTMLAttributes<HTMLFieldSetElement>, 'onChange'> {
|
|
33
|
+
value?: string | number;
|
|
34
|
+
defaultValue?: string | number;
|
|
35
|
+
onChange?: (value: string | number) => void;
|
|
36
|
+
name?: string;
|
|
37
|
+
size?: RadioSize;
|
|
38
|
+
state?: RadioState;
|
|
39
|
+
orientation?: RadioGroupOrientation;
|
|
40
|
+
label?: string;
|
|
41
|
+
description?: string;
|
|
42
|
+
error?: string;
|
|
43
|
+
required?: boolean;
|
|
44
|
+
className?: string;
|
|
45
|
+
}
|
|
25
46
|
/**
|
|
26
47
|
* Radio theme configuration
|
|
27
48
|
*/
|
|
@@ -32,4 +53,9 @@ export interface RadioTheme {
|
|
|
32
53
|
dotStyle: string;
|
|
33
54
|
descriptionStyle: string;
|
|
34
55
|
sizes: Record<RadioSize, string>;
|
|
56
|
+
groupStyle?: string;
|
|
57
|
+
groupHorizontalStyle?: string;
|
|
58
|
+
groupDescriptionStyle?: string;
|
|
59
|
+
groupErrorStyle?: string;
|
|
60
|
+
groupItemsStyle?: string;
|
|
35
61
|
}
|