@flikk/ui 1.0.0-beta.31 → 1.0.0-beta.32
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/CHANGELOG.md +295 -22
- package/dist/components/ai/AgentRequest/AgentRequest.animations.d.ts +25 -0
- package/dist/components/ai/AgentRequest/AgentRequest.animations.js +81 -0
- package/dist/components/ai/AgentRequest/AgentRequest.d.ts +3 -0
- package/dist/components/ai/AgentRequest/AgentRequest.js +435 -0
- package/dist/components/ai/AgentRequest/AgentRequest.theme.d.ts +2 -0
- package/dist/components/ai/AgentRequest/AgentRequest.theme.js +106 -0
- package/dist/components/ai/AgentRequest/AgentRequest.types.d.ts +241 -0
- package/dist/components/ai/AgentRequest/index.d.ts +3 -0
- package/dist/components/ai/CodeBlock/CodeBlock.theme.js +1 -1
- package/dist/components/ai/PromptInput/PromptInput.js +2 -2
- package/dist/components/ai/PromptInput/PromptInput.theme.js +2 -2
- package/dist/components/ai/PromptSuggestion/PromptSuggestion.theme.js +2 -2
- package/dist/components/ai/Reasoning/Reasoning.js +27 -3
- package/dist/components/ai/Reasoning/Reasoning.theme.d.ts +6 -0
- package/dist/components/ai/Reasoning/Reasoning.theme.js +36 -0
- package/dist/components/ai/Reasoning/Reasoning.types.d.ts +58 -5
- package/dist/components/ai/Reasoning/ReasoningTrace.d.ts +11 -0
- package/dist/components/ai/Reasoning/ReasoningTrace.js +84 -0
- package/dist/components/ai/Reasoning/index.d.ts +2 -1
- package/dist/components/ai/StreamingResponse/AnimatedText.d.ts +7 -0
- package/dist/components/ai/StreamingResponse/AnimatedText.js +8 -7
- package/dist/components/ai/StreamingResponse/MarkdownRenderer.d.ts +5 -0
- package/dist/components/ai/StreamingResponse/MarkdownRenderer.js +4 -4
- package/dist/components/ai/StreamingResponse/StreamingCursor.d.ts +2 -2
- package/dist/components/ai/StreamingResponse/StreamingCursor.js +10 -7
- package/dist/components/ai/StreamingResponse/StreamingResponse.animations.d.ts +10 -0
- package/dist/components/ai/StreamingResponse/StreamingResponse.animations.js +59 -33
- package/dist/components/ai/StreamingResponse/StreamingResponse.js +13 -7
- package/dist/components/ai/StreamingResponse/StreamingResponse.types.d.ts +33 -2
- package/dist/components/ai/StreamingResponse/StreamingSurface.d.ts +13 -0
- package/dist/components/ai/StreamingResponse/StreamingSurface.js +38 -0
- package/dist/components/ai/StreamingResponse/WordAnimationContext.d.ts +5 -0
- package/dist/components/ai/StreamingResponse/WordAnimationContext.js +5 -4
- package/dist/components/ai/StreamingResponse/index.d.ts +4 -2
- package/dist/components/ai/TokenCounter/TokenCounter.theme.js +1 -1
- package/dist/components/ai/index.d.ts +3 -2
- package/dist/components/ai/index.js +4 -0
- package/dist/components/canvas/BaseNode.js +1 -1
- package/dist/components/canvas/CanvasToolbar.js +0 -1
- package/dist/components/canvas/Edge.js +2 -2
- package/dist/components/canvas/NodeControls.js +0 -1
- package/dist/components/canvas/NodeRenderer.js +2 -2
- package/dist/components/charts/ActivityRings/ActivityRings.js +2 -2
- package/dist/components/charts/ActivityRings/ActivityRings.theme.js +1 -1
- package/dist/components/charts/AreaChart/AreaChart.js +3 -3
- package/dist/components/charts/AreaChart/AreaChart.theme.js +3 -3
- package/dist/components/charts/BarChart/BarChart.js +4 -4
- package/dist/components/charts/ComboChart/BarRenderer.js +2 -2
- package/dist/components/charts/ComboChart/BarRenderer.types.d.ts +1 -1
- package/dist/components/charts/ComboChart/ComboChartCanvas.js +1 -1
- package/dist/components/charts/ComboChart/LineRenderer.js +1 -1
- package/dist/components/charts/ComboChart/LineRenderer.types.d.ts +1 -1
- package/dist/components/charts/DonutChart/DonutChart.theme.js +4 -4
- package/dist/components/charts/DonutChart/MultiSegmentDonutChart.theme.js +1 -1
- package/dist/components/charts/Heatmap/Heatmap.js +49 -42
- package/dist/components/charts/Heatmap/Heatmap.theme.d.ts +6 -2
- package/dist/components/charts/Heatmap/Heatmap.theme.js +20 -8
- package/dist/components/charts/Heatmap/Heatmap.types.d.ts +49 -82
- package/dist/components/charts/Heatmap/HeatmapCell.js +30 -81
- package/dist/components/charts/Heatmap/HeatmapLegend.d.ts +7 -6
- package/dist/components/charts/Heatmap/HeatmapLegend.js +6 -6
- package/dist/components/charts/Heatmap/index.d.ts +1 -1
- package/dist/components/charts/Heatmap/utils/heatmapUtils.d.ts +7 -12
- package/dist/components/charts/Heatmap/utils/heatmapUtils.js +16 -61
- package/dist/components/charts/Heatmap/utils/heatmapUtils.test.d.ts +1 -0
- package/dist/components/charts/HorizontalBarChart/HorizontalBarChart.js +1 -1
- package/dist/components/charts/LineChart/LineChart.js +2 -2
- package/dist/components/charts/LollipopChart/LollipopChart.js +1 -1
- package/dist/components/charts/RadarChart/RadarChart.js +1 -1
- package/dist/components/charts/StackedBarChart/StackedBarChart.js +3 -3
- package/dist/components/charts/hooks/useChartAccessibility.js +9 -6
- package/dist/components/charts/index.d.ts +4 -8
- package/dist/components/charts/index.js +2 -4
- package/dist/components/charts/shared/ChartText/ChartText.theme.js +1 -1
- package/dist/components/charts/shared/index.d.ts +1 -1
- package/dist/components/charts/theme/chart.theme.js +3 -3
- package/dist/components/charts/utils/animation-utils.d.ts +12 -7
- package/dist/components/charts/utils/animation-utils.js +19 -19
- package/dist/components/core/Accordion/Accordion.theme.js +1 -1
- package/dist/components/core/Alert/Alert.animations.d.ts +11 -4
- package/dist/components/core/Alert/Alert.animations.js +11 -4
- package/dist/components/core/Alert/Alert.js +16 -2
- package/dist/components/core/Alert/Alert.theme.js +1 -1
- package/dist/components/core/Alert/Alert.types.d.ts +4 -2
- package/dist/components/core/AlertDialog/AlertDialog.js +2 -2
- package/dist/components/core/Avatar/Avatar.theme.js +1 -1
- package/dist/components/core/Badge/Badge.animations.d.ts +0 -5
- package/dist/components/core/Badge/Badge.animations.js +5 -84
- package/dist/components/core/Badge/Badge.d.ts +7 -4
- package/dist/components/core/Badge/Badge.js +27 -64
- package/dist/components/core/Badge/Badge.theme.js +8 -12
- package/dist/components/core/Badge/Badge.types.d.ts +18 -34
- package/dist/components/core/Breadcrumbs/Breadcrumbs.theme.js +4 -4
- package/dist/components/core/Button/Button.js +7 -43
- package/dist/components/core/Button/Button.theme.js +2 -2
- package/dist/components/core/Button/Button.types.d.ts +8 -12
- package/dist/components/core/Button/index.d.ts +0 -2
- package/dist/components/core/Calendar/Calendar.theme.js +1 -1
- package/dist/components/core/Calendar/CalendarMini/CalendarMini.theme.js +2 -2
- package/dist/components/core/Card/Card.js +7 -2
- package/dist/components/core/Card/Card.theme.js +29 -1
- package/dist/components/core/Card/Card.types.d.ts +20 -0
- package/dist/components/core/Card/CardBody.js +9 -1
- package/dist/components/core/Card/CardContext.d.ts +13 -0
- package/dist/components/core/Card/CardContext.js +14 -0
- package/dist/components/core/Card/CardHeader.js +4 -1
- package/dist/components/core/ContextMenu/ContextMenu.theme.js +4 -3
- package/dist/components/core/ContextMenu/ContextMenu.types.d.ts +8 -1
- package/dist/components/core/ContextMenu/ContextMenuSub.d.ts +11 -1
- package/dist/components/core/ContextMenu/ContextMenuSub.js +35 -22
- package/dist/components/core/ContextMenu/ContextMenuSubBody.js +14 -3
- package/dist/components/core/ContextMenu/ContextMenuSubTrigger.js +21 -8
- package/dist/components/core/DragDrop/DragDrop.theme.js +2 -2
- package/dist/components/core/Drawer/Drawer.theme.js +1 -1
- package/dist/components/core/Drawer/DrawerHeader.js +0 -1
- package/dist/components/core/Dropdown/DropdownMenu.js +22 -7
- package/dist/components/core/Link/Link.js +1 -1
- package/dist/components/core/Masonry/Masonry.theme.js +1 -1
- package/dist/components/core/MenuItem/MenuItem.js +2 -1
- package/dist/components/core/MenuItem/MenuItem.theme.js +13 -1
- package/dist/components/core/Message/Message.js +2 -0
- package/dist/components/core/Message/Message.theme.js +3 -3
- package/dist/components/core/Modal/Modal.animations.d.ts +1 -1
- package/dist/components/core/Modal/Modal.animations.js +50 -11
- package/dist/components/core/Modal/Modal.js +5 -1
- package/dist/components/core/Modal/Modal.theme.js +1 -1
- package/dist/components/core/Modal/ModalHeader.js +0 -1
- package/dist/components/core/ModalStack/ModalStackModal.js +3 -1
- package/dist/components/core/NavItem/NavItem.js +3 -2
- package/dist/components/core/NavItem/NavItem.theme.js +1 -1
- package/dist/components/core/OfflineIndicator/OfflineIndicator.theme.js +4 -2
- package/dist/components/core/PageHeading/PageHeading.theme.js +1 -1
- package/dist/components/core/Pagination/Pagination.theme.js +2 -2
- package/dist/components/core/Pill/Pill.js +2 -1
- package/dist/components/core/Pill/Pill.theme.js +4 -2
- package/dist/components/core/Popover/PopoverBody.js +16 -5
- package/dist/components/core/Progress/Progress.d.ts +0 -25
- package/dist/components/core/Progress/Progress.js +79 -11
- package/dist/components/core/Progress/Progress.theme.js +17 -0
- package/dist/components/core/Progress/Progress.types.d.ts +47 -1
- package/dist/components/core/Rating/Rating.theme.js +1 -1
- package/dist/components/core/Rating/Rating.types.d.ts +3 -2
- package/dist/components/core/ScrollArea/ScrollArea.js +1 -1
- package/dist/components/core/ScrollArea/ScrollArea.theme.js +1 -1
- package/dist/components/core/Segmented/Segmented.theme.js +3 -3
- package/dist/components/core/Segmented/SegmentedContext.js +1 -0
- package/dist/components/core/Sidebar/Sidebar.js +5 -2
- package/dist/components/core/Sidebar/Sidebar.theme.js +2 -2
- package/dist/components/core/Sidebar/SidebarContent.js +1 -1
- package/dist/components/core/Sidebar/SidebarHeader.js +1 -1
- package/dist/components/core/Sidebar/SidebarSearch.js +2 -2
- package/dist/components/core/Sidebar/SidebarToggle.js +1 -1
- package/dist/components/core/Sidebar/SidebarUserProfile.js +1 -1
- package/dist/components/core/Sortable/Sortable.theme.js +1 -1
- package/dist/components/core/Tabs/Tabs.theme.js +1 -1
- package/dist/components/core/Tag/Tag.theme.js +1 -1
- package/dist/components/core/Toast/ToastProvider.js +1 -1
- package/dist/components/core/Tree/Tree.theme.js +1 -1
- package/dist/components/core/index.d.ts +0 -2
- package/dist/components/core/index.js +0 -4
- package/dist/components/core/shared/ChartTooltip/ChartTooltip.animations.d.ts +4 -0
- package/dist/components/core/shared/ChartTooltip/ChartTooltip.animations.js +20 -0
- package/dist/components/{charts → core}/shared/ChartTooltip/ChartTooltip.js +1 -1
- package/dist/components/core/shared/Ripple.d.ts +16 -0
- package/dist/components/core/shared/Ripple.js +141 -0
- package/dist/components/data-display/GanttChart/GanttChart.theme.js +6 -6
- package/dist/components/data-display/GanttChart/GanttTaskBar.js +1 -1
- package/dist/components/data-display/GanttChart/GanttTimelineHeader.js +1 -1
- package/dist/components/data-display/GanttChart/GanttToolbar.js +0 -1
- package/dist/components/data-display/KPI/KPI.js +11 -20
- package/dist/components/data-display/KPI/KPI.theme.js +8 -4
- package/dist/components/data-display/Metric/Metric.theme.js +4 -4
- package/dist/components/data-display/Table/Table.theme.js +2 -2
- package/dist/components/data-display/Table/TableColumnManager.js +1 -2
- package/dist/components/data-display/Table/TableContext.js +1 -0
- package/dist/components/data-display/Table/TableFilter.js +9 -2
- package/dist/components/data-display/Table/TableSelectionHeader.js +1 -1
- package/dist/components/data-display/Timeline/Timeline.theme.js +1 -1
- package/dist/components/effects/CustomCursor/CustomCursor.d.ts +1 -1
- package/dist/components/effects/CustomCursor/CustomCursor.js +1 -1
- package/dist/components/effects/CustomCursor/CustomCursor.theme.js +4 -4
- package/dist/components/effects/Neumorphic/InsetCircleButton.js +1 -1
- package/dist/components/effects/Overlay/Overlay.js +7 -3
- package/dist/components/effects/index.d.ts +0 -32
- package/dist/components/effects/index.js +0 -16
- package/dist/components/effects/shared/ShaderCanvas/ShaderCanvas.d.ts +0 -2
- package/dist/components/effects/shared/ShaderCanvas/ShaderCanvas.js +1 -93
- package/dist/components/effects/shared/ShaderCanvas/ShaderCanvas.types.d.ts +0 -10
- package/dist/components/effects/shared/ShaderCanvas/index.d.ts +1 -1
- package/dist/components/effects/shared/index.d.ts +1 -3
- package/dist/components/effects/shared/shaderNoise.glsl.d.ts +1 -1
- package/dist/components/effects/shared/shaderNoise.glsl.js +2 -11
- package/dist/components/forms/Checkbox/Checkbox.theme.js +1 -1
- package/dist/components/forms/ColorPicker/ColorPickerHeader.js +1 -1
- package/dist/components/forms/ColorPicker/ColorPickerImage.js +1 -1
- package/dist/components/forms/Combobox/Combobox.js +2 -0
- package/dist/components/forms/DateRangePicker/DateRangePicker.theme.js +1 -1
- package/dist/components/forms/DateRangePicker/DateRangePickerContext.js +1 -0
- package/dist/components/forms/FileUpload/FileUpload.theme.js +2 -2
- package/dist/components/forms/FileUpload/FileUploadProgress.theme.js +1 -1
- package/dist/components/forms/InputAddress/InputAddress.types.d.ts +2 -2
- package/dist/components/forms/Radio/Radio.theme.js +1 -1
- package/dist/components/forms/RichTextEditor/RichTextEditor.d.ts +12 -16
- package/dist/components/forms/RichTextEditor/RichTextEditor.js +165 -1680
- package/dist/components/forms/RichTextEditor/RichTextEditor.theme.d.ts +12 -56
- package/dist/components/forms/RichTextEditor/RichTextEditor.theme.js +60 -118
- package/dist/components/forms/RichTextEditor/RichTextEditor.types.d.ts +62 -126
- package/dist/components/forms/RichTextEditor/RichTextLinkField.d.ts +18 -0
- package/dist/components/forms/RichTextEditor/RichTextLinkField.js +46 -0
- package/dist/components/forms/RichTextEditor/RichTextToolbar.d.ts +15 -0
- package/dist/components/forms/RichTextEditor/RichTextToolbar.js +93 -0
- package/dist/components/forms/RichTextEditor/editorCommands.d.ts +50 -0
- package/dist/components/forms/RichTextEditor/editorCommands.js +58 -0
- package/dist/components/forms/RichTextEditor/editorState.d.ts +19 -0
- package/dist/components/forms/RichTextEditor/editorState.js +103 -0
- package/dist/components/forms/RichTextEditor/index.d.ts +5 -3
- package/dist/components/forms/RichTextEditor/sanitizeHtml.d.ts +38 -0
- package/dist/components/forms/RichTextEditor/sanitizeHtml.js +179 -0
- package/dist/components/forms/RichTextEditor/sanitizeHtml.test.d.ts +1 -0
- package/dist/components/forms/Select/Select.js +4 -4
- package/dist/components/forms/Select/Select.types.d.ts +70 -7
- package/dist/components/forms/Select/useSelectState.d.ts +9 -3
- package/dist/components/forms/Select/useSelectState.js +4 -1
- package/dist/components/forms/SelectableCard/SelectableCard.js +2 -1
- package/dist/components/forms/SelectableCard/SelectableCard.theme.js +1 -1
- package/dist/components/forms/Switch/Switch.theme.js +2 -2
- package/dist/components/forms/TimePicker/TimePicker.theme.js +1 -1
- package/dist/components/forms/TimePicker/TimePickerTrigger.js +1 -1
- package/dist/components/forms/forms.theme.js +19 -5
- package/dist/components/forms/index.js +1 -0
- package/dist/components/generative/FormShell.d.ts +22 -0
- package/dist/components/generative/FormShell.js +102 -0
- package/dist/components/generative/GenerativeView.d.ts +52 -1
- package/dist/components/generative/GenerativeView.js +203 -11
- package/dist/components/generative/actions.d.ts +5 -0
- package/dist/components/generative/ai-sdk/index.d.ts +1 -0
- package/dist/components/generative/ai-sdk/index.js +1 -0
- package/dist/components/generative/ai-sdk/useGenerativeChat.d.ts +52 -0
- package/dist/components/generative/ai-sdk/useGenerativeChat.js +73 -0
- package/dist/components/generative/ai-sdk/useGenerativeChat.test.d.ts +1 -0
- package/dist/components/generative/fieldBinding.d.ts +31 -0
- package/dist/components/generative/fieldBinding.js +33 -0
- package/dist/components/generative/fieldBinding.test.d.ts +1 -0
- package/dist/components/generative/formScope.d.ts +71 -0
- package/dist/components/generative/formScope.js +135 -0
- package/dist/components/generative/index.d.ts +4 -0
- package/dist/components/generative/index.js +4 -0
- package/dist/components/generative/registry.d.ts +2 -0
- package/dist/components/generative/registry.js +10 -10
- package/dist/components/generative/schema.generated.js +178 -292
- package/dist/components/generative/toToolResult.d.ts +21 -0
- package/dist/components/generative/toToolResult.js +15 -0
- package/dist/components/generative/toToolResult.test.d.ts +1 -0
- package/dist/components/generative/validate.d.ts +10 -1
- package/dist/components/generative/validate.js +126 -11
- package/dist/components/layout/Grid/Grid.js +1 -0
- package/dist/components/layout/Section/Section.theme.js +1 -1
- package/dist/components/layout/Stack/Stack.js +1 -0
- package/dist/generative.schema.json +178 -292
- package/dist/index.js +1 -4
- package/dist/registry.json +2599 -2375
- package/dist/shadcn-compat.css +5 -5
- package/dist/styles/theme.test.d.ts +1 -0
- package/dist/styles.css +1 -1
- package/dist/test/render.d.ts +17 -0
- package/dist/themes/precision.css +232 -0
- package/dist/tools.json +179 -294
- package/dist/utils/index.d.ts +0 -1
- package/package.json +31 -1
- package/src/global.scss +21 -28
- package/src/styles/theme.css +124 -41
- package/src/styles/theme.test.ts +119 -0
- package/tailwind.preset.cjs +30 -20
- package/dist/components/charts/FunnelChart/FunnelChart.animations.d.ts +0 -35
- package/dist/components/charts/FunnelChart/FunnelChart.animations.js +0 -59
- package/dist/components/charts/FunnelChart/FunnelChart.d.ts +0 -8
- package/dist/components/charts/FunnelChart/FunnelChart.js +0 -410
- package/dist/components/charts/FunnelChart/FunnelChart.theme.d.ts +0 -2
- package/dist/components/charts/FunnelChart/FunnelChart.theme.js +0 -12
- package/dist/components/charts/FunnelChart/FunnelChart.types.d.ts +0 -105
- package/dist/components/charts/FunnelChart/index.d.ts +0 -4
- package/dist/components/charts/ScatterPlot/ScatterPlot.d.ts +0 -9
- package/dist/components/charts/ScatterPlot/ScatterPlot.js +0 -208
- package/dist/components/charts/ScatterPlot/ScatterPlot.theme.d.ts +0 -18
- package/dist/components/charts/ScatterPlot/ScatterPlot.theme.js +0 -42
- package/dist/components/charts/ScatterPlot/ScatterPlot.types.d.ts +0 -60
- package/dist/components/charts/ScatterPlot/ScatterPlot.types.js +0 -19
- package/dist/components/charts/ScatterPlot/index.d.ts +0 -3
- package/dist/components/core/Button/Button.ripple.d.ts +0 -71
- package/dist/components/core/Button/Button.ripple.js +0 -236
- package/dist/components/core/Calendar/CalendarEvent/CalendarEvent.d.ts +0 -4
- package/dist/components/core/Calendar/CalendarEvent/CalendarEvent.theme.d.ts +0 -12
- package/dist/components/core/Calendar/CalendarEvent/CalendarEvent.types.d.ts +0 -23
- package/dist/components/core/Calendar/CalendarEvent/index.d.ts +0 -2
- package/dist/components/core/CardStack/CardStack.animations.d.ts +0 -47
- package/dist/components/core/CardStack/CardStack.d.ts +0 -3
- package/dist/components/core/CardStack/CardStack.js +0 -187
- package/dist/components/core/CardStack/CardStack.theme.d.ts +0 -6
- package/dist/components/core/CardStack/CardStack.theme.js +0 -33
- package/dist/components/core/CardStack/CardStack.types.d.ts +0 -139
- package/dist/components/core/CardStack/index.d.ts +0 -7
- package/dist/components/core/Carousel/Carousel.d.ts +0 -3
- package/dist/components/core/Carousel/Carousel.js +0 -83
- package/dist/components/core/Carousel/Carousel.theme.d.ts +0 -10
- package/dist/components/core/Carousel/Carousel.theme.js +0 -20
- package/dist/components/core/Carousel/Carousel.types.d.ts +0 -113
- package/dist/components/core/Carousel/CarouselBody.d.ts +0 -4
- package/dist/components/core/Carousel/CarouselBody.js +0 -59
- package/dist/components/core/Carousel/CarouselContext.d.ts +0 -3
- package/dist/components/core/Carousel/CarouselContext.js +0 -13
- package/dist/components/core/Carousel/CarouselItem.d.ts +0 -4
- package/dist/components/core/Carousel/CarouselItem.js +0 -11
- package/dist/components/core/Carousel/CarouselNext.d.ts +0 -4
- package/dist/components/core/Carousel/CarouselNext.js +0 -16
- package/dist/components/core/Carousel/CarouselPrevious.d.ts +0 -4
- package/dist/components/core/Carousel/CarouselPrevious.js +0 -16
- package/dist/components/core/Carousel/index.d.ts +0 -3
- package/dist/components/effects/ColorPanels/ColorPanels.d.ts +0 -8
- package/dist/components/effects/ColorPanels/ColorPanels.js +0 -66
- package/dist/components/effects/ColorPanels/ColorPanels.shaders.d.ts +0 -12
- package/dist/components/effects/ColorPanels/ColorPanels.shaders.js +0 -218
- package/dist/components/effects/ColorPanels/ColorPanels.types.d.ts +0 -29
- package/dist/components/effects/ColorPanels/ColorPanels.types.js +0 -3
- package/dist/components/effects/ColorPanels/index.d.ts +0 -2
- package/dist/components/effects/FlutedGlass/FlutedGlass.d.ts +0 -9
- package/dist/components/effects/FlutedGlass/FlutedGlass.js +0 -80
- package/dist/components/effects/FlutedGlass/FlutedGlass.shaders.d.ts +0 -12
- package/dist/components/effects/FlutedGlass/FlutedGlass.shaders.js +0 -335
- package/dist/components/effects/FlutedGlass/FlutedGlass.types.d.ts +0 -61
- package/dist/components/effects/FlutedGlass/FlutedGlass.types.js +0 -16
- package/dist/components/effects/FlutedGlass/index.d.ts +0 -3
- package/dist/components/effects/GlassEffect/GlassEffect.d.ts +0 -15
- package/dist/components/effects/GlassEffect/GlassEffect.js +0 -38
- package/dist/components/effects/GlassEffect/GlassEffect.types.d.ts +0 -19
- package/dist/components/effects/GlassEffect/index.d.ts +0 -2
- package/dist/components/effects/GlassSurface/GlassSurface.d.ts +0 -8
- package/dist/components/effects/GlassSurface/GlassSurface.js +0 -250
- package/dist/components/effects/GlassSurface/GlassSurface.types.d.ts +0 -66
- package/dist/components/effects/GlassSurface/index.d.ts +0 -2
- package/dist/components/effects/GodRays/GodRays.d.ts +0 -8
- package/dist/components/effects/GodRays/GodRays.js +0 -68
- package/dist/components/effects/GodRays/GodRays.shaders.d.ts +0 -10
- package/dist/components/effects/GodRays/GodRays.shaders.js +0 -128
- package/dist/components/effects/GodRays/GodRays.types.d.ts +0 -25
- package/dist/components/effects/GodRays/GodRays.types.js +0 -3
- package/dist/components/effects/GodRays/index.d.ts +0 -2
- package/dist/components/effects/GridPattern/GridPattern.d.ts +0 -18
- package/dist/components/effects/GridPattern/GridPattern.js +0 -65
- package/dist/components/effects/GridPattern/GridPattern.types.d.ts +0 -47
- package/dist/components/effects/GridPattern/index.d.ts +0 -2
- package/dist/components/effects/HalftoneCmyk/HalftoneCmyk.d.ts +0 -10
- package/dist/components/effects/HalftoneCmyk/HalftoneCmyk.js +0 -78
- package/dist/components/effects/HalftoneCmyk/HalftoneCmyk.shaders.d.ts +0 -22
- package/dist/components/effects/HalftoneCmyk/HalftoneCmyk.shaders.js +0 -239
- package/dist/components/effects/HalftoneCmyk/HalftoneCmyk.types.d.ts +0 -52
- package/dist/components/effects/HalftoneCmyk/index.d.ts +0 -2
- package/dist/components/effects/HalftoneDots/HalftoneDots.d.ts +0 -9
- package/dist/components/effects/HalftoneDots/HalftoneDots.js +0 -68
- package/dist/components/effects/HalftoneDots/HalftoneDots.shaders.d.ts +0 -13
- package/dist/components/effects/HalftoneDots/HalftoneDots.shaders.js +0 -296
- package/dist/components/effects/HalftoneDots/HalftoneDots.types.d.ts +0 -43
- package/dist/components/effects/HalftoneDots/HalftoneDots.types.js +0 -12
- package/dist/components/effects/HalftoneDots/index.d.ts +0 -3
- package/dist/components/effects/ImageDithering/ImageDithering.d.ts +0 -9
- package/dist/components/effects/ImageDithering/ImageDithering.js +0 -68
- package/dist/components/effects/ImageDithering/ImageDithering.shaders.d.ts +0 -12
- package/dist/components/effects/ImageDithering/ImageDithering.shaders.js +0 -117
- package/dist/components/effects/ImageDithering/ImageDithering.types.d.ts +0 -30
- package/dist/components/effects/ImageDithering/ImageDithering.types.js +0 -8
- package/dist/components/effects/ImageDithering/index.d.ts +0 -3
- package/dist/components/effects/MagneticElement/MagneticElement.d.ts +0 -30
- package/dist/components/effects/MagneticElement/MagneticElement.js +0 -111
- package/dist/components/effects/MagneticElement/MagneticElement.types.d.ts +0 -44
- package/dist/components/effects/MagneticElement/index.d.ts +0 -2
- package/dist/components/effects/Metaballs/Metaballs.d.ts +0 -8
- package/dist/components/effects/Metaballs/Metaballs.js +0 -59
- package/dist/components/effects/Metaballs/Metaballs.shaders.d.ts +0 -10
- package/dist/components/effects/Metaballs/Metaballs.shaders.js +0 -102
- package/dist/components/effects/Metaballs/Metaballs.types.d.ts +0 -16
- package/dist/components/effects/Metaballs/Metaballs.types.js +0 -3
- package/dist/components/effects/Metaballs/index.d.ts +0 -2
- package/dist/components/effects/PaperTexture/PaperTexture.d.ts +0 -9
- package/dist/components/effects/PaperTexture/PaperTexture.js +0 -61
- package/dist/components/effects/PaperTexture/PaperTexture.shaders.d.ts +0 -22
- package/dist/components/effects/PaperTexture/PaperTexture.shaders.js +0 -145
- package/dist/components/effects/PaperTexture/PaperTexture.types.d.ts +0 -19
- package/dist/components/effects/PaperTexture/index.d.ts +0 -2
- package/dist/components/effects/PulsingBorder/PulsingBorder.d.ts +0 -27
- package/dist/components/effects/PulsingBorder/PulsingBorder.js +0 -174
- package/dist/components/effects/PulsingBorder/PulsingBorder.shaders.d.ts +0 -14
- package/dist/components/effects/PulsingBorder/PulsingBorder.shaders.js +0 -258
- package/dist/components/effects/PulsingBorder/PulsingBorder.types.d.ts +0 -75
- package/dist/components/effects/PulsingBorder/PulsingBorder.types.js +0 -3
- package/dist/components/effects/PulsingBorder/index.d.ts +0 -2
- package/dist/components/effects/SmokeRing/SmokeRing.d.ts +0 -8
- package/dist/components/effects/SmokeRing/SmokeRing.js +0 -62
- package/dist/components/effects/SmokeRing/SmokeRing.shaders.d.ts +0 -14
- package/dist/components/effects/SmokeRing/SmokeRing.shaders.js +0 -130
- package/dist/components/effects/SmokeRing/SmokeRing.types.d.ts +0 -22
- package/dist/components/effects/SmokeRing/SmokeRing.types.js +0 -3
- package/dist/components/effects/SmokeRing/index.d.ts +0 -2
- package/dist/components/effects/StaticGradientMesh/StaticGradientMesh.d.ts +0 -9
- package/dist/components/effects/StaticGradientMesh/StaticGradientMesh.js +0 -59
- package/dist/components/effects/StaticGradientMesh/StaticGradientMesh.shaders.d.ts +0 -14
- package/dist/components/effects/StaticGradientMesh/StaticGradientMesh.shaders.js +0 -129
- package/dist/components/effects/StaticGradientMesh/StaticGradientMesh.types.d.ts +0 -23
- package/dist/components/effects/StaticGradientMesh/StaticGradientMesh.types.js +0 -3
- package/dist/components/effects/StaticGradientMesh/index.d.ts +0 -2
- package/dist/components/effects/Water/Water.d.ts +0 -9
- package/dist/components/effects/Water/Water.js +0 -65
- package/dist/components/effects/Water/Water.shaders.d.ts +0 -11
- package/dist/components/effects/Water/Water.shaders.js +0 -123
- package/dist/components/effects/Water/Water.types.d.ts +0 -25
- package/dist/components/effects/Water/index.d.ts +0 -2
- package/dist/components/effects/shared/bayerMatrices.glsl.d.ts +0 -10
- package/dist/components/effects/shared/bayerMatrices.glsl.js +0 -44
- package/dist/components/effects/shared/imageUV.glsl.d.ts +0 -12
- package/dist/components/effects/shared/imageUV.glsl.js +0 -26
- package/dist/components/forms/RichTextEditor/RichTextEditor.animations.d.ts +0 -7
- package/dist/components/forms/RichTextEditor/RichTextEditor.animations.js +0 -32
- package/dist/utils/calendarUtils.d.ts +0 -60
- /package/dist/components/{charts → core}/shared/ChartTooltip/ChartTooltip.d.ts +0 -0
- /package/dist/components/{charts → core}/shared/ChartTooltip/ChartTooltip.theme.d.ts +0 -0
- /package/dist/components/{charts → core}/shared/ChartTooltip/ChartTooltip.theme.js +0 -0
- /package/dist/components/{charts → core}/shared/ChartTooltip/ChartTooltip.types.d.ts +0 -0
- /package/dist/components/{charts → core}/shared/ChartTooltip/ChartTooltipContent.d.ts +0 -0
- /package/dist/components/{charts → core}/shared/ChartTooltip/index.d.ts +0 -0
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx } from 'react/jsx-runtime';
|
|
3
|
+
import { useRef, useState, useEffect, useCallback } from 'react';
|
|
4
|
+
import { useReducedMotion, motion } from 'motion/react';
|
|
5
|
+
import { cn } from '../../../utils/cn.js';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Shared press ripple for interactive surfaces (Button, NavItem, MenuItem,
|
|
9
|
+
* Pill, SelectableCard). One source of truth so every pressable surface in the
|
|
10
|
+
* library ripples with the same character — the sibling of `createPressVariants`
|
|
11
|
+
* in `interaction.animations.ts`.
|
|
12
|
+
*
|
|
13
|
+
* Drop it in as the LAST child of a host that is `relative`:
|
|
14
|
+
*
|
|
15
|
+
* ```tsx
|
|
16
|
+
* <button className="relative">
|
|
17
|
+
* Save
|
|
18
|
+
* <Ripple />
|
|
19
|
+
* </button>
|
|
20
|
+
* ```
|
|
21
|
+
*
|
|
22
|
+
* It wires itself: the layer reads its own `parentElement` and listens there,
|
|
23
|
+
* so the host never threads a handler or a ref. Clipping lives on the layer
|
|
24
|
+
* (`overflow-hidden rounded-[inherit]`), so the host does not need
|
|
25
|
+
* `overflow-hidden` of its own.
|
|
26
|
+
*/
|
|
27
|
+
/** Interactive elements that earn a ripple. See `isInteractive` below. */
|
|
28
|
+
const INTERACTIVE_SELECTOR = [
|
|
29
|
+
"button",
|
|
30
|
+
"a[href]",
|
|
31
|
+
'[role="button"]',
|
|
32
|
+
'[role="menuitem"]',
|
|
33
|
+
'[role="menuitemcheckbox"]',
|
|
34
|
+
'[role="menuitemradio"]',
|
|
35
|
+
'[role="option"]',
|
|
36
|
+
'[role="tab"]',
|
|
37
|
+
'[tabindex]:not([tabindex="-1"])',
|
|
38
|
+
].join(", ");
|
|
39
|
+
/**
|
|
40
|
+
* A ripple is a press affordance, so it must only appear on something a user
|
|
41
|
+
* can actually press — including by keyboard. A bare `<div onClick>` has no
|
|
42
|
+
* role and no tab stop, so advertising interactivity on it would be the exact
|
|
43
|
+
* pattern CLAUDE.md §8b describes when it explains why Badge's click path was
|
|
44
|
+
* removed. Gating on the DOM (rather than on the presence of a handler) keeps
|
|
45
|
+
* that guarantee self-correcting: a host becomes rippleable by becoming
|
|
46
|
+
* accessible, not by passing a prop.
|
|
47
|
+
*/
|
|
48
|
+
function isInteractive(element) {
|
|
49
|
+
return element.matches(INTERACTIVE_SELECTOR);
|
|
50
|
+
}
|
|
51
|
+
/** Duration scales with reach — a fixed value crosses a large surface far too fast. */
|
|
52
|
+
const MIN_DURATION = 0.35;
|
|
53
|
+
const MAX_DURATION = 0.7;
|
|
54
|
+
const DURATION_DIVISOR = 500;
|
|
55
|
+
function durationForRadius(radius) {
|
|
56
|
+
return Math.min(MAX_DURATION, Math.max(MIN_DURATION, radius / DURATION_DIVISOR));
|
|
57
|
+
}
|
|
58
|
+
const Ripple = ({ disabled = false, className }) => {
|
|
59
|
+
const layerRef = useRef(null);
|
|
60
|
+
const [ripples, setRipples] = useState([]);
|
|
61
|
+
const shouldReduceMotion = useReducedMotion();
|
|
62
|
+
// Monotonic ids. Date.now() collides when two presses land in the same
|
|
63
|
+
// millisecond, which produced duplicate React keys in the previous
|
|
64
|
+
// Button-only implementation.
|
|
65
|
+
const nextId = useRef(0);
|
|
66
|
+
// Read through refs inside the listener so the effect below subscribes once
|
|
67
|
+
// per host rather than re-subscribing whenever these flip.
|
|
68
|
+
const disabledRef = useRef(disabled);
|
|
69
|
+
disabledRef.current = disabled;
|
|
70
|
+
const reducedMotionRef = useRef(shouldReduceMotion);
|
|
71
|
+
reducedMotionRef.current = shouldReduceMotion;
|
|
72
|
+
// Dev warning fires at most once per host, not once per press.
|
|
73
|
+
const warnedRef = useRef(false);
|
|
74
|
+
useEffect(() => {
|
|
75
|
+
const layer = layerRef.current;
|
|
76
|
+
const host = layer === null || layer === void 0 ? void 0 : layer.parentElement;
|
|
77
|
+
if (!host)
|
|
78
|
+
return;
|
|
79
|
+
// NOTE: no runtime check that the host is positioned. jsdom does not
|
|
80
|
+
// process Tailwind, so `getComputedStyle(host).position` reads "static"
|
|
81
|
+
// for a `relative` host in every test — a warning there is pure noise for
|
|
82
|
+
// us and for consumers. The `relative` contract is documented above and
|
|
83
|
+
// enforced by review.
|
|
84
|
+
// `pointerdown` rather than `click` on purpose: it fires on press instead
|
|
85
|
+
// of release, and a keyboard Enter/Space never produces one — so ripples
|
|
86
|
+
// are pointer-only without any synthetic-click sniffing.
|
|
87
|
+
const handlePointerDown = (event) => {
|
|
88
|
+
if (disabledRef.current || reducedMotionRef.current)
|
|
89
|
+
return;
|
|
90
|
+
if (host.hasAttribute("disabled") || host.getAttribute("aria-disabled") === "true")
|
|
91
|
+
return;
|
|
92
|
+
// Checked per press, not once on mount: a host's interactivity is not
|
|
93
|
+
// static (SelectableCard drops to tabIndex={-1} while disabled), and a
|
|
94
|
+
// mount-time gate would leave the listener permanently detached for any
|
|
95
|
+
// host that starts non-interactive and later becomes pressable.
|
|
96
|
+
if (!isInteractive(host)) {
|
|
97
|
+
if (process.env.NODE_ENV !== "production" && !warnedRef.current) {
|
|
98
|
+
warnedRef.current = true;
|
|
99
|
+
// eslint-disable-next-line no-console
|
|
100
|
+
console.warn("[Ripple]: host is not an interactive element (needs a button/link role or a tab stop) — no ripple will render.");
|
|
101
|
+
}
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
const rect = host.getBoundingClientRect();
|
|
105
|
+
const x = event.clientX - rect.left;
|
|
106
|
+
const y = event.clientY - rect.top;
|
|
107
|
+
// Reach the farthest corner, so the ripple always covers the host.
|
|
108
|
+
const dx = Math.max(x, rect.width - x);
|
|
109
|
+
const dy = Math.max(y, rect.height - y);
|
|
110
|
+
const radius = Math.hypot(dx, dy);
|
|
111
|
+
if (radius === 0)
|
|
112
|
+
return;
|
|
113
|
+
setRipples((prev) => [...prev, { id: nextId.current++, x, y, radius }]);
|
|
114
|
+
};
|
|
115
|
+
host.addEventListener("pointerdown", handlePointerDown);
|
|
116
|
+
return () => host.removeEventListener("pointerdown", handlePointerDown);
|
|
117
|
+
}, []);
|
|
118
|
+
const removeRipple = useCallback((id) => {
|
|
119
|
+
setRipples((prev) => prev.filter((ripple) => ripple.id !== id));
|
|
120
|
+
}, []);
|
|
121
|
+
// The layer always mounts, even under reduced motion — the listener bails on
|
|
122
|
+
// `reducedMotionRef` instead. Returning null here would leave the effect
|
|
123
|
+
// above bound against a null ref, so a user turning reduced motion off
|
|
124
|
+
// mid-session would get no ripple until the host remounted.
|
|
125
|
+
return (jsx("span", { ref: layerRef, "aria-hidden": "true", "data-flikkui-ripple": "", className: "absolute inset-0 overflow-hidden rounded-[inherit] pointer-events-none", children: ripples.map((ripple) => (jsx(motion.span, { "data-flikkui-ripple-circle": "", initial: { scale: 0, opacity: 0.2 }, animate: { scale: 1, opacity: 0 }, transition: {
|
|
126
|
+
duration: durationForRadius(ripple.radius),
|
|
127
|
+
ease: "easeOut",
|
|
128
|
+
}, onAnimationComplete: () => removeRipple(ripple.id),
|
|
129
|
+
// Geometry is per-press, so it goes through `style` — an
|
|
130
|
+
// interpolated class name would not exist in the shipped CSS
|
|
131
|
+
// (CLAUDE.md §3).
|
|
132
|
+
style: {
|
|
133
|
+
width: ripple.radius * 2,
|
|
134
|
+
height: ripple.radius * 2,
|
|
135
|
+
left: ripple.x - ripple.radius,
|
|
136
|
+
top: ripple.y - ripple.radius,
|
|
137
|
+
}, className: cn("absolute rounded-full bg-current", className) }, ripple.id))) }));
|
|
138
|
+
};
|
|
139
|
+
Ripple.displayName = "Ripple";
|
|
140
|
+
|
|
141
|
+
export { Ripple };
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
const ganttChartTheme = {
|
|
2
2
|
baseStyle: "flex flex-col w-full overflow-hidden rounded-[var(--gantt-chart-radius)] border border-[var(--color-border)] bg-[var(--color-background)] text-sm shadow-sm",
|
|
3
|
-
toolbarStyle: "flex flex-wrap items-center justify-between gap-2 px-3 py-2 border-b border-[var(--color-border)] bg-[var(--color-
|
|
3
|
+
toolbarStyle: "flex flex-wrap items-center justify-between gap-2 px-3 py-2 border-b border-[var(--color-border)] bg-[var(--color-surface)]/80",
|
|
4
4
|
tablePanelStyle: "flex flex-col shrink-0 overflow-hidden border-r border-[var(--color-border)] bg-[var(--color-background)]",
|
|
5
5
|
chartPanelStyle: "flex flex-col flex-1 min-w-0 overflow-hidden",
|
|
6
|
-
tableHeaderStyle: "flex items-center h-[56px] border-b border-[var(--color-border)] bg-[var(--color-
|
|
6
|
+
tableHeaderStyle: "flex items-center h-[56px] border-b border-[var(--color-border)] bg-[var(--color-surface)]/80",
|
|
7
7
|
tableHeaderCellStyle: "px-3 text-[11px] font-semibold uppercase tracking-wide text-[var(--color-text-muted)] truncate",
|
|
8
|
-
tableGroupRowStyle: "flex items-center cursor-pointer select-none border-b border-[var(--color-border)]/30 bg-[var(--color-
|
|
9
|
-
tableTaskRowStyle: "flex items-center border-b border-[var(--color-border)]/20 hover:bg-[var(--color-
|
|
8
|
+
tableGroupRowStyle: "flex items-center cursor-pointer select-none border-b border-[var(--color-border)]/30 bg-[var(--color-surface)]/35 hover:bg-[var(--color-surface)] transition-colors",
|
|
9
|
+
tableTaskRowStyle: "flex items-center border-b border-[var(--color-border)]/20 hover:bg-[var(--color-surface)]/70 transition-colors",
|
|
10
10
|
tableCellStyle: "px-3 truncate text-[var(--color-text-primary)]",
|
|
11
11
|
timelineHeaderStyle: "bg-[var(--color-background)] border-b border-[var(--color-border)] shadow-[0_1px_0_var(--color-border)]",
|
|
12
|
-
timelineMonthStyle: "text-[11px] font-semibold uppercase tracking-wide text-[var(--color-text-secondary)] px-2 border-b border-[var(--color-border)] flex items-center bg-[var(--color-
|
|
12
|
+
timelineMonthStyle: "text-[11px] font-semibold uppercase tracking-wide text-[var(--color-text-secondary)] px-2 border-b border-[var(--color-border)] flex items-center bg-[var(--color-surface)]/45",
|
|
13
13
|
timelineDayStyle: "text-[10px] text-[var(--color-text-muted)] flex items-center justify-center border-r border-[var(--color-border)]/20",
|
|
14
14
|
gridLineStyle: "border-r border-[var(--color-border)]/20",
|
|
15
|
-
weekendStyle: "bg-[var(--color-
|
|
15
|
+
weekendStyle: "bg-[var(--color-surface)]/35",
|
|
16
16
|
todayMarkerStyle: "bg-[var(--color-primary)] w-0.5",
|
|
17
17
|
todayColumnStyle: "bg-[var(--color-primary)]/10",
|
|
18
18
|
taskBarStyle: "absolute cursor-pointer flex items-center overflow-hidden shadow-sm ring-1 ring-black/10",
|
|
@@ -5,7 +5,7 @@ import { motion } from 'motion/react';
|
|
|
5
5
|
import { cn } from '../../../utils/cn.js';
|
|
6
6
|
import { useGanttContext, useGanttInteraction } from './GanttChartContext.js';
|
|
7
7
|
import { getDayOffset, calculateExpectedProgress, formatDateShort, formatDuration } from './GanttChart.utils.js';
|
|
8
|
-
import { ChartTooltip } from '../../
|
|
8
|
+
import { ChartTooltip } from '../../core/shared/ChartTooltip/ChartTooltip.js';
|
|
9
9
|
import { Avatar } from '../../core/Avatar/Avatar.js';
|
|
10
10
|
import { GanttTaskContextMenu } from './GanttTaskContextMenu.js';
|
|
11
11
|
import { taskBarVariants } from './GanttChart.animations.js';
|
|
@@ -61,7 +61,7 @@ const GanttTimelineHeader = ({ days, monthSpans, }) => {
|
|
|
61
61
|
return (jsxs("div", { className: cn(theme.timelineHeaderStyle), style: { width: totalWidth }, children: [jsx("div", { className: "flex", style: { height: 28 }, children: headerSpans.map((span) => (jsx("div", { className: cn(theme.timelineMonthStyle), style: { width: span.span * dayWidth }, children: span.label }, `${span.label}-${span.startIndex}`))) }), jsx("div", { className: "flex", style: { height: 28 }, children: days.map((day, i) => {
|
|
62
62
|
const isToday = isSameDay(day, today);
|
|
63
63
|
const weekend = isWeekend(day);
|
|
64
|
-
return (jsx("div", { className: cn(theme.timelineDayStyle, weekend && "bg-[var(--color-
|
|
64
|
+
return (jsx("div", { className: cn(theme.timelineDayStyle, weekend && "bg-[var(--color-surface)]/50", isToday && "font-semibold text-[var(--color-primary)]"), style: { width: dayWidth }, children: getDayLabel(day, zoom) }, i));
|
|
65
65
|
}) })] }));
|
|
66
66
|
};
|
|
67
67
|
|
|
@@ -5,7 +5,6 @@ import { cn } from '../../../utils/cn.js';
|
|
|
5
5
|
import { useGanttContext } from './GanttChartContext.js';
|
|
6
6
|
import { Segmented } from '../../core/Segmented/Segmented.js';
|
|
7
7
|
import { Button } from '../../core/Button/Button.js';
|
|
8
|
-
import 'react';
|
|
9
8
|
import { Checkbox } from '../../forms/Checkbox/Checkbox.js';
|
|
10
9
|
|
|
11
10
|
const ZOOM_OPTIONS = [
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
3
3
|
import React__default, { useMemo } from 'react';
|
|
4
|
-
import { motion } from 'motion/react';
|
|
5
4
|
import { ArrowUpRight, ArrowDownRight } from '@phosphor-icons/react';
|
|
6
5
|
import { cn } from '../../../utils/cn.js';
|
|
6
|
+
import { Progress } from '../../core/Progress/Progress.js';
|
|
7
7
|
import { kpiTheme } from './KPI.theme.js';
|
|
8
8
|
|
|
9
9
|
const KPI = React__default.forwardRef(({ value, label, trend, trendLabel, progress, barCount = 24, subtitle, icon, size = "md", color = "primary", className, theme: customTheme = {}, ...props }, ref) => {
|
|
@@ -32,28 +32,19 @@ const KPI = React__default.forwardRef(({ value, label, trend, trendLabel, progre
|
|
|
32
32
|
: trend < 0
|
|
33
33
|
? "down"
|
|
34
34
|
: "neutral";
|
|
35
|
-
//
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
const barSize = kpiTheme.barSizes[size];
|
|
35
|
+
// KPI owns its own bar geometry; hand it to Progress as segment sizing.
|
|
36
|
+
// (`width` predates the flex-1 cells and is unused.)
|
|
37
|
+
const segmentSizes = useMemo(() => Object.fromEntries(Object.entries(kpiTheme.barSizes).map(([key, { height, gap }]) => [
|
|
38
|
+
key,
|
|
39
|
+
{ height, gap },
|
|
40
|
+
])), []);
|
|
42
41
|
return (jsxs("div", { ref: ref, className: cn(theme.baseStyle, className), ...props, children: [jsxs("div", { className: "flex items-start justify-between", children: [jsxs("div", { className: "flex items-baseline gap-2", children: [jsx("span", { className: cn(theme.valueSizes[size]), children: value }), label &&
|
|
43
42
|
(typeof label === "string" ? (jsxs("span", { className: cn(theme.labelStyle, theme.labelSizes[size]), children: [icon && (jsx("span", { className: "inline-flex items-center mr-1", children: icon })), label] })) : (label))] }), formattedTrend &&
|
|
44
43
|
trendDirection &&
|
|
45
|
-
(typeof formattedTrend === "string" ? (jsxs("span", { className: cn("inline-flex items-center gap-0.5 font-medium", theme.trendSizes[size], trendDirection === "up" && theme.trendPositive, trendDirection === "down" && theme.trendNegative, trendDirection === "neutral" && theme.trendNeutral), children: [formattedTrend, trendDirection === "up" && (jsx(ArrowUpRight, { className: "size-4" })), trendDirection === "down" && (jsx(ArrowDownRight, { className: "size-4" }))] })) : (formattedTrend))] }), progress !== undefined && (jsx(
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
? 0.4 + (fadeDistance / 3) * 0.6
|
|
50
|
-
: 1;
|
|
51
|
-
return (jsx("div", { className: cn("relative rounded-sm flex-1", barSize.height, theme.barEmptyColor), children: isFilled && (jsx(motion.div, { className: cn("absolute inset-0 rounded-sm", theme.barFilledColors[color]), initial: { opacity: 0 }, animate: { opacity: fillOpacity }, transition: {
|
|
52
|
-
duration: 0.25,
|
|
53
|
-
ease: "easeOut",
|
|
54
|
-
delay: i * 0.03,
|
|
55
|
-
} })) }, i));
|
|
56
|
-
}) })), subtitle &&
|
|
44
|
+
(typeof formattedTrend === "string" ? (jsxs("span", { className: cn("inline-flex items-center gap-0.5 font-medium", theme.trendSizes[size], trendDirection === "up" && theme.trendPositive, trendDirection === "down" && theme.trendNegative, trendDirection === "neutral" && theme.trendNeutral), children: [formattedTrend, trendDirection === "up" && (jsx(ArrowUpRight, { className: "size-4" })), trendDirection === "down" && (jsx(ArrowDownRight, { className: "size-4" }))] })) : (formattedTrend))] }), progress !== undefined && (jsx(Progress, { value: progress, segments: barCount, segmentFade: true, size: size, className: theme.barFilledColors[color], "aria-label": `Progress: ${progress}%`, theme: {
|
|
45
|
+
segmentEmptyStyle: theme.barEmptyColor,
|
|
46
|
+
segmentSizes,
|
|
47
|
+
} })), subtitle &&
|
|
57
48
|
(typeof subtitle === "string" ? (jsx("span", { className: cn(theme.subtitleStyle), children: subtitle })) : (subtitle))] }));
|
|
58
49
|
});
|
|
59
50
|
KPI.displayName = "KPI";
|
|
@@ -3,9 +3,9 @@ import { semanticBgColors } from '../../../utils/colorUtils.js';
|
|
|
3
3
|
const kpiTheme = {
|
|
4
4
|
baseStyle: "flex flex-col gap-3",
|
|
5
5
|
valueSizes: {
|
|
6
|
-
sm: "text-[length:var(--kpi-value-size-sm)]
|
|
7
|
-
md: "text-[length:var(--kpi-value-size-md)]
|
|
8
|
-
lg: "text-[length:var(--kpi-value-size-lg)]
|
|
6
|
+
sm: "text-[length:var(--kpi-value-size-sm)]/[var(--kpi-value-line-height-sm)] font-bold text-[var(--color-text-primary)]",
|
|
7
|
+
md: "text-[length:var(--kpi-value-size-md)]/[var(--kpi-value-line-height-md)] font-bold text-[var(--color-text-primary)]",
|
|
8
|
+
lg: "text-[length:var(--kpi-value-size-lg)]/[var(--kpi-value-line-height-lg)] font-bold text-[var(--color-text-primary)]",
|
|
9
9
|
},
|
|
10
10
|
labelStyle: "text-[var(--color-text-primary)] font-medium",
|
|
11
11
|
labelSizes: {
|
|
@@ -23,7 +23,11 @@ const kpiTheme = {
|
|
|
23
23
|
},
|
|
24
24
|
barFilledColors: {
|
|
25
25
|
...semanticBgColors,
|
|
26
|
-
|
|
26
|
+
// The gray role, not a text token (§8: never paint a fill with --color-text-*).
|
|
27
|
+
// These bars carry no text, so they take the role's own weight rather than a
|
|
28
|
+
// -contrast pairing; --color-mono is the mono token that flips per mode
|
|
29
|
+
// (900 light / 200 dark), which a fixed ramp rung would not.
|
|
30
|
+
mono: "bg-[var(--color-mono)]",
|
|
27
31
|
},
|
|
28
32
|
barEmptyColor: "bg-[var(--color-surface-sunken)]",
|
|
29
33
|
barSizes: {
|
|
@@ -10,7 +10,7 @@ const metricTheme = {
|
|
|
10
10
|
// --card-radius with its own --metric-radius (same "rounded-[...]" utility
|
|
11
11
|
// group, so this wins via source order) rather than inheriting Card's
|
|
12
12
|
// radius verbatim.
|
|
13
|
-
baseStyle: "transition-colors duration-
|
|
13
|
+
baseStyle: "transition-colors duration-[var(--motion-duration-base)] rounded-[var(--metric-radius)]",
|
|
14
14
|
// Visual style variants — container surface + structure.
|
|
15
15
|
// `filled` adds nothing: it inherits the Card shell's --color-surface-raised.
|
|
16
16
|
// `ghost` clears that fill (`!` beats Card's bg utility regardless of
|
|
@@ -54,9 +54,9 @@ const metricTheme = {
|
|
|
54
54
|
// arbitrary text-[...] syntax is ambiguous between color/font-size and a
|
|
55
55
|
// bare var() resolves to color, silently no-oping the size change.
|
|
56
56
|
valueSizes: {
|
|
57
|
-
sm: "text-[length:var(--metric-value-size-sm)]
|
|
58
|
-
md: "text-[length:var(--metric-value-size-md)]
|
|
59
|
-
lg: "text-[length:var(--metric-value-size-lg)]
|
|
57
|
+
sm: "text-[length:var(--metric-value-size-sm)]/[var(--metric-value-line-height-sm)]",
|
|
58
|
+
md: "text-[length:var(--metric-value-size-md)]/[var(--metric-value-line-height-md)]",
|
|
59
|
+
lg: "text-[length:var(--metric-value-size-lg)]/[var(--metric-value-line-height-lg)]",
|
|
60
60
|
},
|
|
61
61
|
subtitleSizes: { sm: "text-xs mt-1", md: "text-xs mt-0.5", lg: "text-sm mt-1" },
|
|
62
62
|
// Common element styles
|
|
@@ -45,7 +45,7 @@ const tableTheme = {
|
|
|
45
45
|
// <tr> (inset shadow) so a shifted cell can't drag a notch into it.
|
|
46
46
|
"[&>tbody>tr>td]:border-b-0 " +
|
|
47
47
|
"[&>tbody>tr]:shadow-[inset_0_-1px_0_0_var(--color-border)] [&>tbody>tr:last-child]:shadow-none " +
|
|
48
|
-
"[&>tbody>tr>td]:transition-transform [&>tbody>tr>td]:duration-
|
|
48
|
+
"[&>tbody>tr>td]:transition-transform [&>tbody>tr>td]:duration-[var(--motion-duration-slow)] " +
|
|
49
49
|
// first cell eases right (its left padding); last cell eases left only when
|
|
50
50
|
// right-aligned (matches `pr-4` — invisible on left-aligned content).
|
|
51
51
|
"[&>tbody>tr:hover>td:first-child]:translate-x-2 " +
|
|
@@ -60,7 +60,7 @@ const tableTheme = {
|
|
|
60
60
|
"text-[var(--color-text-primary)] ",
|
|
61
61
|
// Row styles — hover and layout only (borders moved to cells)
|
|
62
62
|
// Light: neutral-50 hover | Dark: neutral-800 hover
|
|
63
|
-
rowStyle: "group transition-all duration-
|
|
63
|
+
rowStyle: "group transition-all duration-[var(--motion-duration-slow)] relative " +
|
|
64
64
|
"hover:bg-[var(--color-mono-50)] " +
|
|
65
65
|
"dark:hover:bg-[var(--color-surface-hover)]",
|
|
66
66
|
// Selected row styles — background is applied per-cell (in TableCell) so that
|
|
@@ -5,7 +5,6 @@ import '../../core/Popover/PopoverContext.js';
|
|
|
5
5
|
import '../../core/Popover/PopoverBody.js';
|
|
6
6
|
import { Gear } from '@phosphor-icons/react';
|
|
7
7
|
import { Button } from '../../core/Button/Button.js';
|
|
8
|
-
import 'react';
|
|
9
8
|
import { Checkbox } from '../../forms/Checkbox/Checkbox.js';
|
|
10
9
|
import { Sortable, SortableItem } from '../../core/Sortable/Sortable.js';
|
|
11
10
|
|
|
@@ -19,7 +18,7 @@ function TableColumnManagerComponent({ columns, visibleColumns, columnOrder, onT
|
|
|
19
18
|
const displayName = typeof column.header === 'string' ? column.header : column.id;
|
|
20
19
|
return (jsx(Checkbox, { id: `column-checkbox-${column.id}`, name: `column-${column.id}`, value: column.id, checked: isVisible, onChange: () => onToggleColumn(column.id), "aria-label": `Toggle visibility for ${displayName} column`, label: displayName, state: isLocked ? 'disabled' : 'default' }));
|
|
21
20
|
};
|
|
22
|
-
return (jsxs(Popover, { placement: "bottom-end", offset: 8, children: [jsx(Popover.Trigger, { children: jsxs(Button, { color: "mono", variant: "filled", "aria-label": "Manage column visibility", children: [jsx(Gear, { className: "size-5", "aria-hidden": "true" }), "Manage Columns"] }) }), jsx(Popover.Body, { className: "p-0", children: jsxs("div", { className: "w-64 p-3 overflow-hidden", role: "dialog", "aria-labelledby": "column-manager-title", "aria-describedby": "column-manager-description", "aria-modal": "true", children: [jsx("div", { id: "column-manager-title", className: "text-sm uppercase font-bold mb-3 text-[var(--color-text-placeholder)]", children: "Manage Columns" }), jsx("div", { id: "column-manager-description", className: "sr-only", children: "Use checkboxes to control which columns are visible in the table. Locked columns cannot be hidden." }), jsx("div", { className: "space-y-0.5", role: "group", "aria-label": "Column visibility options", children: onColumnReorder ? (jsx(Sortable, { onReorder: onColumnReorder, showDragHandle: true, className: "space-y-0.5", children: orderedColumns.map((column) => (jsx(SortableItem, { id: column.id, disabled: column.locked === true, className: `hover:bg-[var(--color-surface-hover)] rounded-lg p-1.5 transition-colors ${column.locked ? 'bg-[var(--color-
|
|
21
|
+
return (jsxs(Popover, { placement: "bottom-end", offset: 8, children: [jsx(Popover.Trigger, { children: jsxs(Button, { color: "mono", variant: "filled", "aria-label": "Manage column visibility", children: [jsx(Gear, { className: "size-5", "aria-hidden": "true" }), "Manage Columns"] }) }), jsx(Popover.Body, { className: "p-0", children: jsxs("div", { className: "w-64 p-3 overflow-hidden", role: "dialog", "aria-labelledby": "column-manager-title", "aria-describedby": "column-manager-description", "aria-modal": "true", children: [jsx("div", { id: "column-manager-title", className: "text-sm uppercase font-bold mb-3 text-[var(--color-text-placeholder)]", children: "Manage Columns" }), jsx("div", { id: "column-manager-description", className: "sr-only", children: "Use checkboxes to control which columns are visible in the table. Locked columns cannot be hidden." }), jsx("div", { className: "space-y-0.5", role: "group", "aria-label": "Column visibility options", children: onColumnReorder ? (jsx(Sortable, { onReorder: onColumnReorder, showDragHandle: true, className: "space-y-0.5", children: orderedColumns.map((column) => (jsx(SortableItem, { id: column.id, disabled: column.locked === true, className: `hover:bg-[var(--color-surface-hover)] rounded-lg p-1.5 transition-colors ${column.locked ? 'bg-[var(--color-surface)]' : ''}`, children: renderColumnItem(column) }, column.id))) })) : (orderedColumns.map((column) => (jsx("div", { className: `hover:bg-[var(--color-surface-hover)] rounded-lg p-1.5 transition-colors ${column.locked ? 'bg-[var(--color-surface)]' : ''}`, children: renderColumnItem(column) }, column.id)))) }), jsx("div", { className: "mt-3 flex justify-end", children: jsx(Button, { color: "mono", variant: "filled", className: "w-full", onClick: onResetToDefault, children: "Reset to Default" }) })] }) })] }));
|
|
23
22
|
}
|
|
24
23
|
const TableColumnManager = TableColumnManagerComponent;
|
|
25
24
|
|
|
@@ -35,7 +35,11 @@ function FilterValueInput({ filter, column, filterType, onValueChange, }) {
|
|
|
35
35
|
label: opt.label,
|
|
36
36
|
value: opt.value,
|
|
37
37
|
}));
|
|
38
|
-
return (jsx(Select, {
|
|
38
|
+
return (jsx(Select, {
|
|
39
|
+
// Options are SelectOption<string>, so only a string is selectable here;
|
|
40
|
+
// FilterValue is wider (number | boolean | string[]) and those states
|
|
41
|
+
// simply mean "nothing selected" for this control.
|
|
42
|
+
value: typeof filter.value === "string" ? filter.value : undefined, onChange: (value) => onValueChange(value), options: selectOptions, size: "sm", className: "flex-1 min-w-0", placeholder: "Select..." }));
|
|
39
43
|
}
|
|
40
44
|
// MultiSelect filter type
|
|
41
45
|
if (filterType === "multiSelect" && (column === null || column === void 0 ? void 0 : column.filterOptions)) {
|
|
@@ -44,7 +48,10 @@ function FilterValueInput({ filter, column, filterType, onValueChange, }) {
|
|
|
44
48
|
label: opt.label,
|
|
45
49
|
value: opt.value,
|
|
46
50
|
}));
|
|
47
|
-
return (jsx(Select, {
|
|
51
|
+
return (jsx(Select, {
|
|
52
|
+
// `multiple` makes the value an array; FilterValue is wider than that,
|
|
53
|
+
// so narrow rather than letting a scalar reach a multi-select.
|
|
54
|
+
value: Array.isArray(filter.value) ? filter.value : [], onChange: (value) => onValueChange(value), options: selectOptions, size: "sm", className: "flex-1 min-w-0", placeholder: "Select...", multiple: true }));
|
|
48
55
|
}
|
|
49
56
|
// Date filter type
|
|
50
57
|
if (filterType === "date") {
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
3
3
|
import { X } from '@phosphor-icons/react';
|
|
4
4
|
import { Button } from '../../core/Button/Button.js';
|
|
5
|
-
import 'react';
|
|
6
5
|
import { Link } from '../../core/Link/Link.js';
|
|
7
6
|
import { cn } from '../../../utils/cn.js';
|
|
7
|
+
import 'react';
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Selection header that appears when rows are selected
|
|
@@ -18,7 +18,7 @@ const timelineTheme = {
|
|
|
18
18
|
// Completed connector color (overrides the base connector background)
|
|
19
19
|
connectorCompletedStyle: "bg-[var(--color-success)]",
|
|
20
20
|
// Marker base styles (shared across statuses)
|
|
21
|
-
markerStyle: "relative z-10 flex items-center justify-center shrink-0 rounded-full border-2 transition-colors duration-
|
|
21
|
+
markerStyle: "relative z-10 flex items-center justify-center shrink-0 rounded-full border-2 transition-colors duration-[var(--motion-duration-base)] ring-4 ring-[var(--color-surface)] backdrop-blur-sm",
|
|
22
22
|
// Marker status-specific styles
|
|
23
23
|
markerStatuses: {
|
|
24
24
|
completed: "size-8 bg-[var(--color-success)] border-[var(--color-success)] text-[var(--color-success-contrast)]",
|
|
@@ -4,13 +4,13 @@
|
|
|
4
4
|
*/
|
|
5
5
|
const customCursorTheme = {
|
|
6
6
|
baseStyle: "pointer-events-none z-[9999] absolute transform-[translate(-50%,-50%)]",
|
|
7
|
-
cursorStyle: "transition-transform duration-
|
|
7
|
+
cursorStyle: "transition-transform duration-[var(--motion-duration-fast)]",
|
|
8
8
|
cursorFollowVariants: {
|
|
9
|
-
default: "rounded-[var(--radius-base)] bg-white dark:bg-[var(--color-
|
|
9
|
+
default: "rounded-[var(--radius-base)] bg-white dark:bg-[var(--color-surface)] shadow-lg border border-[var(--color-border)] px-3 py-2 text-sm text-[var(--color-text-primary)]",
|
|
10
10
|
user: "flex items-center gap-2 rounded-full pl-1 pr-3 py-1 shadow-xl",
|
|
11
11
|
},
|
|
12
12
|
cursorFollowColors: {
|
|
13
|
-
mono: "bg-[var(--color-
|
|
13
|
+
mono: "bg-[var(--color-surface)]",
|
|
14
14
|
dark: "bg-[var(--color-text-primary)]",
|
|
15
15
|
primary: "bg-[var(--color-primary)]",
|
|
16
16
|
success: "bg-[var(--color-success)]",
|
|
@@ -23,7 +23,7 @@ const customCursorTheme = {
|
|
|
23
23
|
lg: "w-10 h-10",
|
|
24
24
|
},
|
|
25
25
|
colors: {
|
|
26
|
-
mono: "text-[var(--color-
|
|
26
|
+
mono: "text-[var(--color-surface)]",
|
|
27
27
|
dark: "text-[var(--color-text-primary)]",
|
|
28
28
|
primary: "text-[var(--color-primary)]",
|
|
29
29
|
success: "text-[var(--color-success)]",
|
|
@@ -5,7 +5,7 @@ import { cn } from '../../../utils/cn.js';
|
|
|
5
5
|
import 'react';
|
|
6
6
|
|
|
7
7
|
function InsetCircleButton({ children, size = 44, className, classNameDisc, classNameHover, onClick, }) {
|
|
8
|
-
return (jsx("div", { className: cn("neu-circle-groove group shrink-0 cursor-pointer bg-neutral-200/80 dark:bg-neutral-900", className), style: { width: size, height: size }, onClick: onClick, children: jsxs(motion.div, { className: cn("neu-circle-disc bg-linear-to-br from-neutral-100 to-neutral-300 dark:from-neutral-700 dark:to-neutral-900", classNameDisc), whileHover: { scale: 1 }, whileTap: { scale: 0.975 }, transition: { type: "spring", stiffness: 200, damping: 20 }, children: [jsx("div", { className: cn("absolute inset-0 rounded-full bg-linear-to-br from-neutral-300 to-neutral-200 dark:from-neutral-900 dark:to-neutral-700 opacity-0 group-hover:opacity-100 transition-opacity duration-
|
|
8
|
+
return (jsx("div", { className: cn("neu-circle-groove group shrink-0 cursor-pointer bg-neutral-200/80 dark:bg-neutral-900", className), style: { width: size, height: size }, onClick: onClick, children: jsxs(motion.div, { className: cn("neu-circle-disc bg-linear-to-br from-neutral-100 to-neutral-300 dark:from-neutral-700 dark:to-neutral-900", classNameDisc), whileHover: { scale: 1 }, whileTap: { scale: 0.975 }, transition: { type: "spring", stiffness: 200, damping: 20 }, children: [jsx("div", { className: cn("absolute inset-0 rounded-full bg-linear-to-br from-neutral-300 to-neutral-200 dark:from-neutral-900 dark:to-neutral-700 opacity-0 group-hover:opacity-100 transition-opacity duration-[var(--motion-duration-slow)]", classNameHover) }), jsx("div", { className: "relative z-2", children: children })] }) }));
|
|
9
9
|
}
|
|
10
10
|
|
|
11
11
|
export { InsetCircleButton };
|
|
@@ -157,15 +157,19 @@ const Overlay = React__default.forwardRef(({ isOpen, onClose, closeOnOverlayClic
|
|
|
157
157
|
unlockScroll();
|
|
158
158
|
hasLockedScroll.current = false;
|
|
159
159
|
}
|
|
160
|
-
}, children: isOpen && (jsxs(motion.div, { className: cn(
|
|
160
|
+
}, children: isOpen && (jsxs(motion.div, { className: cn(overlayTheme.backdrop, overlayPositionVariants[position], overlayClassName), onClick: handleOverlayClick, variants: finalOverlayAnimations, initial: "initial", animate: "animate", exit: "exit", transition: instantTransition, children: [jsx("div", { className: overlayTheme.pattern, style: {
|
|
161
161
|
backgroundImage: "radial-gradient(circle, rgba(250,250,250,0.08) 1.5px, transparent 1.5px)",
|
|
162
162
|
backgroundSize: "30px 30px",
|
|
163
163
|
maskImage: "radial-gradient(ellipse at center, black 0%, transparent 70%)",
|
|
164
164
|
WebkitMaskImage: "radial-gradient(ellipse at center, black 0%, transparent 70%)",
|
|
165
|
-
} }), jsx(motion.div, { ref: mergedRef, className: cn(overlayTheme.content, contentClassName), style: contentStyle, variants: finalContentAnimations,
|
|
165
|
+
} }), jsx(motion.div, { ref: mergedRef, className: cn(overlayTheme.content, contentClassName), style: contentStyle, variants: finalContentAnimations,
|
|
166
|
+
// Inherit the parent's variant label so backdrop and panel form one
|
|
167
|
+
// coordinated animation tree. Explicit controls here would opt the
|
|
168
|
+
// panel out of the parent's enter/exit orchestration.
|
|
169
|
+
transition: instantTransition, onClick: (e) => e.stopPropagation(), ...(role ? { role } : {}), ...(ariaModal ? { "aria-modal": true } : {}), ...(ariaLabelledBy ? { "aria-labelledby": ariaLabelledBy } : {}), ...(ariaDescribedBy
|
|
166
170
|
? { "aria-describedby": ariaDescribedBy }
|
|
167
171
|
: {}), children: children })] })) }));
|
|
168
|
-
return createPortal(content, target);
|
|
172
|
+
return createPortal(jsx("div", { "data-flikkui-portal": "", className: isDarkMode ? "dark" : undefined, children: content }), target);
|
|
169
173
|
});
|
|
170
174
|
Overlay.displayName = "Overlay";
|
|
171
175
|
|
|
@@ -1,21 +1,13 @@
|
|
|
1
1
|
export { CustomCursorProvider, CustomCursor, CustomCursorFollow, useCustomCursor } from "./CustomCursor";
|
|
2
2
|
export type { CustomCursorProps, CustomCursorProviderProps, CustomCursorFollowProps, CustomCursorContextType, CustomCursorSize, CustomCursorColor, CustomCursorVariant, CustomCursorShape, CustomCursorTheme, CustomCursorThemeOverrides, } from "./CustomCursor";
|
|
3
|
-
export { GlassEffect } from "./GlassEffect";
|
|
4
|
-
export type { GlassEffectProps, BlendMode } from "./GlassEffect";
|
|
5
3
|
export { Overlay } from "./Overlay";
|
|
6
4
|
export type { OverlayProps, OverlayPosition, OverlayAnimations, } from "./Overlay";
|
|
7
|
-
export { GlassSurface } from "./GlassSurface";
|
|
8
|
-
export type { GlassSurfaceProps, GlassChannel, GlassMixBlendMode, } from "./GlassSurface";
|
|
9
5
|
export { Animated } from "./Animated";
|
|
10
6
|
export type { AnimatedGroupProps, AnimatedItemProps, AnimationPreset, AnimatedElement, } from "./Animated";
|
|
11
7
|
export { ProgressiveBlur } from "./ProgressiveBlur";
|
|
12
8
|
export type { ProgressiveBlurProps, ProgressiveBlurPosition, ProgressiveBlurThemeOverrides, } from "./ProgressiveBlur";
|
|
13
9
|
export { Aurora } from "./Aurora";
|
|
14
10
|
export type { AuroraProps } from "./Aurora";
|
|
15
|
-
export { MagneticElement } from "./MagneticElement";
|
|
16
|
-
export type { MagneticElementProps } from "./MagneticElement";
|
|
17
|
-
export { GridPattern } from "./GridPattern";
|
|
18
|
-
export type { GridPatternProps, GridPatternFadeDirection, } from "./GridPattern";
|
|
19
11
|
export { DotPattern } from "./DotPattern";
|
|
20
12
|
export type { DotPatternProps, DotPatternFadeDirection, } from "./DotPattern";
|
|
21
13
|
export { StripePattern } from "./StripePattern";
|
|
@@ -45,35 +37,11 @@ export { Dithering } from "./Dithering";
|
|
|
45
37
|
export type { DitheringProps, DitheringShape, DitheringType } from "./Dithering";
|
|
46
38
|
export { GradientMesh } from "./GradientMesh";
|
|
47
39
|
export type { GradientMeshProps } from "./GradientMesh";
|
|
48
|
-
export { StaticGradientMesh } from "./StaticGradientMesh";
|
|
49
|
-
export type { StaticGradientMeshProps } from "./StaticGradientMesh";
|
|
50
40
|
export { StaticRadialGradient } from "./StaticRadialGradient";
|
|
51
41
|
export type { StaticRadialGradientProps } from "./StaticRadialGradient";
|
|
52
|
-
export { Metaballs } from "./Metaballs";
|
|
53
|
-
export type { MetaballsProps } from "./Metaballs";
|
|
54
|
-
export { ColorPanels } from "./ColorPanels";
|
|
55
|
-
export type { ColorPanelsProps } from "./ColorPanels";
|
|
56
|
-
export { SmokeRing } from "./SmokeRing";
|
|
57
|
-
export type { SmokeRingProps } from "./SmokeRing";
|
|
58
|
-
export { GodRays } from "./GodRays";
|
|
59
|
-
export type { GodRaysProps } from "./GodRays";
|
|
60
42
|
export { GrainGradient } from "./GrainGradient";
|
|
61
43
|
export type { GrainGradientProps, GrainGradientShape } from "./GrainGradient";
|
|
62
|
-
export { PulsingBorder } from "./PulsingBorder";
|
|
63
|
-
export type { PulsingBorderProps } from "./PulsingBorder";
|
|
64
44
|
export { LiquidMetal } from "./LiquidMetal";
|
|
65
45
|
export type { LiquidMetalProps, LiquidMetalShape } from "./LiquidMetal";
|
|
66
46
|
export { GemSmoke } from "./GemSmoke";
|
|
67
47
|
export type { GemSmokeProps, GemSmokeShape } from "./GemSmoke";
|
|
68
|
-
export { Water } from "./Water";
|
|
69
|
-
export type { WaterProps } from "./Water";
|
|
70
|
-
export { ImageDithering } from "./ImageDithering";
|
|
71
|
-
export type { ImageDitheringProps, ImageDitheringType } from "./ImageDithering";
|
|
72
|
-
export { PaperTexture } from "./PaperTexture";
|
|
73
|
-
export type { PaperTextureProps } from "./PaperTexture";
|
|
74
|
-
export { FlutedGlass } from "./FlutedGlass";
|
|
75
|
-
export type { FlutedGlassProps, FlutedGlassShape, FlutedGlassDistortionShape, } from "./FlutedGlass";
|
|
76
|
-
export { HalftoneDots } from "./HalftoneDots";
|
|
77
|
-
export type { HalftoneDotsProps, HalftoneDotsType, HalftoneDotsGrid, } from "./HalftoneDots";
|
|
78
|
-
export { HalftoneCmyk } from "./HalftoneCmyk";
|
|
79
|
-
export type { HalftoneCmykProps } from "./HalftoneCmyk";
|
|
@@ -1,12 +1,8 @@
|
|
|
1
1
|
export { CustomCursor, CustomCursorFollow, CustomCursorProvider, useCustomCursor } from './CustomCursor/CustomCursor.js';
|
|
2
|
-
export { GlassEffect } from './GlassEffect/GlassEffect.js';
|
|
3
2
|
export { Overlay } from './Overlay/Overlay.js';
|
|
4
|
-
export { GlassSurface } from './GlassSurface/GlassSurface.js';
|
|
5
3
|
export { Animated } from './Animated/Animated.js';
|
|
6
4
|
export { ProgressiveBlur } from './ProgressiveBlur/ProgressiveBlur.js';
|
|
7
5
|
export { Aurora } from './Aurora/Aurora.js';
|
|
8
|
-
export { MagneticElement } from './MagneticElement/MagneticElement.js';
|
|
9
|
-
export { GridPattern } from './GridPattern/GridPattern.js';
|
|
10
6
|
export { DotPattern } from './DotPattern/DotPattern.js';
|
|
11
7
|
export { StripePattern } from './StripePattern/StripePattern.js';
|
|
12
8
|
export { NoiseOverlay } from './NoiseOverlay/NoiseOverlay.js';
|
|
@@ -23,19 +19,7 @@ export { DEFAULT_MESH_COLORS, MESH_PALETTES, getMeshTextTone, pickPalette } from
|
|
|
23
19
|
export { Shimmer } from './Shimmer/Shimmer.js';
|
|
24
20
|
export { Dithering } from './Dithering/Dithering.js';
|
|
25
21
|
export { GradientMesh } from './GradientMesh/GradientMesh.js';
|
|
26
|
-
export { StaticGradientMesh } from './StaticGradientMesh/StaticGradientMesh.js';
|
|
27
22
|
export { StaticRadialGradient } from './StaticRadialGradient/StaticRadialGradient.js';
|
|
28
|
-
export { Metaballs } from './Metaballs/Metaballs.js';
|
|
29
|
-
export { ColorPanels } from './ColorPanels/ColorPanels.js';
|
|
30
|
-
export { SmokeRing } from './SmokeRing/SmokeRing.js';
|
|
31
|
-
export { GodRays } from './GodRays/GodRays.js';
|
|
32
23
|
export { GrainGradient } from './GrainGradient/GrainGradient.js';
|
|
33
|
-
export { PulsingBorder } from './PulsingBorder/PulsingBorder.js';
|
|
34
24
|
export { LiquidMetal } from './LiquidMetal/LiquidMetal.js';
|
|
35
25
|
export { GemSmoke } from './GemSmoke/GemSmoke.js';
|
|
36
|
-
export { Water } from './Water/Water.js';
|
|
37
|
-
export { ImageDithering } from './ImageDithering/ImageDithering.js';
|
|
38
|
-
export { PaperTexture } from './PaperTexture/PaperTexture.js';
|
|
39
|
-
export { FlutedGlass } from './FlutedGlass/FlutedGlass.js';
|
|
40
|
-
export { HalftoneDots } from './HalftoneDots/HalftoneDots.js';
|
|
41
|
-
export { HalftoneCmyk } from './HalftoneCmyk/HalftoneCmyk.js';
|
|
@@ -4,8 +4,6 @@ import type { ShaderCanvasProps } from "./ShaderCanvas.types";
|
|
|
4
4
|
* Minimal raw WebGL2 canvas renderer for fullscreen fragment shaders.
|
|
5
5
|
* - Built-in uniforms: iTime (float), iResolution (vec2)
|
|
6
6
|
* - Custom uniforms read from `uniformsRef` each frame (no stale closures)
|
|
7
|
-
* - Optional sampler2D uniforms read from `texturesRef` (image loading,
|
|
8
|
-
* texture upload, mipmaps, transparent-pixel placeholder while unset/loading)
|
|
9
7
|
* - ResizeObserver for responsive canvas sizing
|
|
10
8
|
* - rAF animation loop, paused while the tab is hidden, with cleanup on unmount
|
|
11
9
|
* - Graceful degradation: renders nothing if WebGL2 unavailable
|