@astryxdesign/lab 0.0.0-bootstrap.0 → 0.1.2-canary.04e71b2
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 +67 -0
- package/LICENSE +21 -0
- package/README.md +47 -1
- package/dist/Chart/Chart.d.ts +77 -0
- package/dist/Chart/Chart.d.ts.map +1 -0
- package/dist/Chart/Chart.js +247 -0
- package/dist/Chart/ChartArea.d.ts +28 -0
- package/dist/Chart/ChartArea.d.ts.map +1 -0
- package/dist/Chart/ChartArea.js +71 -0
- package/dist/Chart/ChartAxis.d.ts +27 -0
- package/dist/Chart/ChartAxis.d.ts.map +1 -0
- package/dist/Chart/ChartAxis.js +147 -0
- package/dist/Chart/ChartBar.d.ts +19 -0
- package/dist/Chart/ChartBar.d.ts.map +1 -0
- package/dist/Chart/ChartBar.js +61 -0
- package/dist/Chart/ChartBrush.d.ts +59 -0
- package/dist/Chart/ChartBrush.d.ts.map +1 -0
- package/dist/Chart/ChartBrush.js +197 -0
- package/dist/Chart/ChartCandlestick.d.ts +50 -0
- package/dist/Chart/ChartCandlestick.d.ts.map +1 -0
- package/dist/Chart/ChartCandlestick.js +138 -0
- package/dist/Chart/ChartContext.d.ts +5 -0
- package/dist/Chart/ChartContext.d.ts.map +1 -0
- package/dist/Chart/ChartContext.js +20 -0
- package/dist/Chart/ChartDot.d.ts +18 -0
- package/dist/Chart/ChartDot.d.ts.map +1 -0
- package/dist/Chart/ChartDot.js +43 -0
- package/dist/Chart/ChartDotGL.d.ts +16 -0
- package/dist/Chart/ChartDotGL.d.ts.map +1 -0
- package/dist/Chart/ChartDotGL.js +135 -0
- package/dist/Chart/ChartDotGLInteractive.d.ts +41 -0
- package/dist/Chart/ChartDotGLInteractive.d.ts.map +1 -0
- package/dist/Chart/ChartDotGLInteractive.js +446 -0
- package/dist/Chart/ChartErrorBar.d.ts +23 -0
- package/dist/Chart/ChartErrorBar.d.ts.map +1 -0
- package/dist/Chart/ChartErrorBar.js +68 -0
- package/dist/Chart/ChartGrid.d.ts +17 -0
- package/dist/Chart/ChartGrid.d.ts.map +1 -0
- package/dist/Chart/ChartGrid.js +67 -0
- package/dist/Chart/ChartHeatmapGL.d.ts +10 -0
- package/dist/Chart/ChartHeatmapGL.d.ts.map +1 -0
- package/dist/Chart/ChartHeatmapGL.js +171 -0
- package/dist/Chart/ChartLegend.d.ts +60 -0
- package/dist/Chart/ChartLegend.d.ts.map +1 -0
- package/dist/Chart/ChartLegend.js +161 -0
- package/dist/Chart/ChartLine.d.ts +23 -0
- package/dist/Chart/ChartLine.d.ts.map +1 -0
- package/dist/Chart/ChartLine.js +64 -0
- package/dist/Chart/ChartReferenceLine.d.ts +11 -0
- package/dist/Chart/ChartReferenceLine.d.ts.map +1 -0
- package/dist/Chart/ChartReferenceLine.js +109 -0
- package/dist/Chart/ChartSelect.d.ts +9 -0
- package/dist/Chart/ChartSelect.d.ts.map +1 -0
- package/dist/Chart/ChartSelect.js +90 -0
- package/dist/Chart/ChartStreamGL.d.ts +17 -0
- package/dist/Chart/ChartStreamGL.d.ts.map +1 -0
- package/dist/Chart/ChartStreamGL.js +157 -0
- package/dist/Chart/ChartTooltip.d.ts +85 -0
- package/dist/Chart/ChartTooltip.d.ts.map +1 -0
- package/dist/Chart/ChartTooltip.js +335 -0
- package/dist/Chart/ChartZoom.d.ts +23 -0
- package/dist/Chart/ChartZoom.d.ts.map +1 -0
- package/dist/Chart/ChartZoom.js +314 -0
- package/dist/Chart/formatters.d.ts +33 -0
- package/dist/Chart/formatters.d.ts.map +1 -0
- package/dist/Chart/formatters.js +101 -0
- package/dist/Chart/getChartColors.d.ts +56 -0
- package/dist/Chart/getChartColors.d.ts.map +1 -0
- package/dist/Chart/getChartColors.js +150 -0
- package/dist/Chart/index.d.ts +29 -0
- package/dist/Chart/index.d.ts.map +1 -0
- package/dist/Chart/index.js +29 -0
- package/dist/Chart/m4.d.ts +36 -0
- package/dist/Chart/m4.d.ts.map +1 -0
- package/dist/Chart/m4.js +106 -0
- package/dist/Chart/types.d.ts +55 -0
- package/dist/Chart/types.d.ts.map +1 -0
- package/dist/Chart/types.js +1 -0
- package/dist/Chart/useChartColors.d.ts +16 -0
- package/dist/Chart/useChartColors.d.ts.map +1 -0
- package/dist/Chart/useChartColors.js +30 -0
- package/dist/Chart/useChartRange.d.ts +50 -0
- package/dist/Chart/useChartRange.d.ts.map +1 -0
- package/dist/Chart/useChartRange.js +90 -0
- package/dist/Chart/utils.d.ts +15 -0
- package/dist/Chart/utils.d.ts.map +1 -0
- package/dist/Chart/utils.js +24 -0
- package/dist/Chart/webgl.d.ts +62 -0
- package/dist/Chart/webgl.d.ts.map +1 -0
- package/dist/Chart/webgl.js +169 -0
- package/dist/ChartV2/Chart.d.ts +32 -0
- package/dist/ChartV2/Chart.d.ts.map +1 -0
- package/dist/ChartV2/Chart.js +281 -0
- package/dist/ChartV2/ChartAxis.d.ts +36 -0
- package/dist/ChartV2/ChartAxis.d.ts.map +1 -0
- package/dist/ChartV2/ChartAxis.js +161 -0
- package/dist/ChartV2/ChartGrid.d.ts +20 -0
- package/dist/ChartV2/ChartGrid.d.ts.map +1 -0
- package/dist/ChartV2/ChartGrid.js +76 -0
- package/dist/ChartV2/ChartLegend.d.ts +14 -0
- package/dist/ChartV2/ChartLegend.d.ts.map +1 -0
- package/dist/ChartV2/ChartLegend.js +54 -0
- package/dist/ChartV2/ChartSwatch.d.ts +36 -0
- package/dist/ChartV2/ChartSwatch.d.ts.map +1 -0
- package/dist/ChartV2/ChartSwatch.js +82 -0
- package/dist/ChartV2/ChartTooltip.d.ts +46 -0
- package/dist/ChartV2/ChartTooltip.d.ts.map +1 -0
- package/dist/ChartV2/ChartTooltip.js +267 -0
- package/dist/ChartV2/ChartV2Context.d.ts +4 -0
- package/dist/ChartV2/ChartV2Context.d.ts.map +1 -0
- package/dist/ChartV2/ChartV2Context.js +12 -0
- package/dist/ChartV2/index.d.ts +13 -0
- package/dist/ChartV2/index.d.ts.map +1 -0
- package/dist/ChartV2/index.js +10 -0
- package/dist/ChartV2/layout.d.ts +25 -0
- package/dist/ChartV2/layout.d.ts.map +1 -0
- package/dist/ChartV2/layout.js +195 -0
- package/dist/ChartV2/legend.d.ts +18 -0
- package/dist/ChartV2/legend.d.ts.map +1 -0
- package/dist/ChartV2/legend.js +24 -0
- package/dist/ChartV2/marks/area.d.ts +19 -0
- package/dist/ChartV2/marks/area.d.ts.map +1 -0
- package/dist/ChartV2/marks/area.js +109 -0
- package/dist/ChartV2/marks/band.d.ts +9 -0
- package/dist/ChartV2/marks/band.d.ts.map +1 -0
- package/dist/ChartV2/marks/band.js +59 -0
- package/dist/ChartV2/marks/bar.d.ts +17 -0
- package/dist/ChartV2/marks/bar.d.ts.map +1 -0
- package/dist/ChartV2/marks/bar.js +120 -0
- package/dist/ChartV2/marks/candlestick.d.ts +15 -0
- package/dist/ChartV2/marks/candlestick.d.ts.map +1 -0
- package/dist/ChartV2/marks/candlestick.js +83 -0
- package/dist/ChartV2/marks/dot.d.ts +15 -0
- package/dist/ChartV2/marks/dot.d.ts.map +1 -0
- package/dist/ChartV2/marks/dot.js +65 -0
- package/dist/ChartV2/marks/dotGL.d.ts +16 -0
- package/dist/ChartV2/marks/dotGL.d.ts.map +1 -0
- package/dist/ChartV2/marks/dotGL.js +178 -0
- package/dist/ChartV2/marks/dotGLInteractive.d.ts +30 -0
- package/dist/ChartV2/marks/dotGLInteractive.d.ts.map +1 -0
- package/dist/ChartV2/marks/dotGLInteractive.js +464 -0
- package/dist/ChartV2/marks/errorBar.d.ts +27 -0
- package/dist/ChartV2/marks/errorBar.d.ts.map +1 -0
- package/dist/ChartV2/marks/errorBar.js +87 -0
- package/dist/ChartV2/marks/heatmapGL.d.ts +23 -0
- package/dist/ChartV2/marks/heatmapGL.d.ts.map +1 -0
- package/dist/ChartV2/marks/heatmapGL.js +242 -0
- package/dist/ChartV2/marks/index.d.ts +13 -0
- package/dist/ChartV2/marks/index.d.ts.map +1 -0
- package/dist/ChartV2/marks/index.js +14 -0
- package/dist/ChartV2/marks/line.d.ts +18 -0
- package/dist/ChartV2/marks/line.d.ts.map +1 -0
- package/dist/ChartV2/marks/line.js +76 -0
- package/dist/ChartV2/marks/referenceLine.d.ts +35 -0
- package/dist/ChartV2/marks/referenceLine.d.ts.map +1 -0
- package/dist/ChartV2/marks/referenceLine.js +186 -0
- package/dist/ChartV2/marks/streamGL.d.ts +36 -0
- package/dist/ChartV2/marks/streamGL.d.ts.map +1 -0
- package/dist/ChartV2/marks/streamGL.js +204 -0
- package/dist/ChartV2/tooltip.d.ts +38 -0
- package/dist/ChartV2/tooltip.d.ts.map +1 -0
- package/dist/ChartV2/tooltip.js +54 -0
- package/dist/ChartV2/types.d.ts +115 -0
- package/dist/ChartV2/types.d.ts.map +1 -0
- package/dist/ChartV2/types.js +35 -0
- package/dist/ChatReasoning/ChatReasoning.d.ts +51 -0
- package/dist/ChatReasoning/ChatReasoning.d.ts.map +1 -0
- package/dist/ChatReasoning/ChatReasoning.js +236 -0
- package/dist/CircularProgress/CircularProgress.d.ts +101 -0
- package/dist/CircularProgress/CircularProgress.d.ts.map +1 -0
- package/dist/CircularProgress/CircularProgress.js +263 -0
- package/dist/CircularProgress/index.d.ts +6 -0
- package/dist/CircularProgress/index.d.ts.map +1 -0
- package/dist/CircularProgress/index.js +8 -0
- package/dist/CodeBlock/index.d.ts +8 -0
- package/dist/CodeBlock/index.d.ts.map +1 -0
- package/dist/CodeBlock/index.js +9 -0
- package/dist/CodeEditor/CodeEditor.d.ts +46 -0
- package/dist/CodeEditor/CodeEditor.d.ts.map +1 -0
- package/dist/CodeEditor/CodeEditor.js +396 -0
- package/dist/CodeEditor/index.d.ts +6 -0
- package/dist/CodeEditor/index.d.ts.map +1 -0
- package/dist/CodeEditor/index.js +7 -0
- package/dist/Radial/RadialArea.d.ts +25 -0
- package/dist/Radial/RadialArea.d.ts.map +1 -0
- package/dist/Radial/RadialArea.js +91 -0
- package/dist/Radial/RadialAxis.d.ts +14 -0
- package/dist/Radial/RadialAxis.d.ts.map +1 -0
- package/dist/Radial/RadialAxis.js +55 -0
- package/dist/Radial/RadialChart.d.ts +70 -0
- package/dist/Radial/RadialChart.d.ts.map +1 -0
- package/dist/Radial/RadialChart.js +174 -0
- package/dist/Radial/RadialContext.d.ts +5 -0
- package/dist/Radial/RadialContext.d.ts.map +1 -0
- package/dist/Radial/RadialContext.js +19 -0
- package/dist/Radial/RadialGrid.d.ts +14 -0
- package/dist/Radial/RadialGrid.d.ts.map +1 -0
- package/dist/Radial/RadialGrid.js +70 -0
- package/dist/Radial/RadialSlice.d.ts +23 -0
- package/dist/Radial/RadialSlice.d.ts.map +1 -0
- package/dist/Radial/RadialSlice.js +85 -0
- package/dist/Radial/RadialTooltip.d.ts +44 -0
- package/dist/Radial/RadialTooltip.d.ts.map +1 -0
- package/dist/Radial/RadialTooltip.js +284 -0
- package/dist/Radial/index.d.ts +9 -0
- package/dist/Radial/index.d.ts.map +1 -0
- package/dist/Radial/index.js +9 -0
- package/dist/Radial/types.d.ts +39 -0
- package/dist/Radial/types.d.ts.map +1 -0
- package/dist/Radial/types.js +1 -0
- package/dist/SVGIcon/SVGIcon.d.ts +87 -0
- package/dist/SVGIcon/SVGIcon.d.ts.map +1 -0
- package/dist/SVGIcon/SVGIcon.js +299 -0
- package/dist/SVGIcon/icons.d.ts +49 -0
- package/dist/SVGIcon/icons.d.ts.map +1 -0
- package/dist/SVGIcon/icons.js +326 -0
- package/dist/SVGIcon/index.d.ts +15 -0
- package/dist/SVGIcon/index.d.ts.map +1 -0
- package/dist/SVGIcon/index.js +22 -0
- package/dist/SVGIcon/pathTransforms.d.ts +35 -0
- package/dist/SVGIcon/pathTransforms.d.ts.map +1 -0
- package/dist/SVGIcon/pathTransforms.js +644 -0
- package/dist/SVGIcon/tokens.stylex.d.ts +37 -0
- package/dist/SVGIcon/tokens.stylex.d.ts.map +1 -0
- package/dist/SVGIcon/tokens.stylex.js +40 -0
- package/dist/SVGIcon/variations.stylex.d.ts +44 -0
- package/dist/SVGIcon/variations.stylex.d.ts.map +1 -0
- package/dist/SVGIcon/variations.stylex.js +119 -0
- package/dist/SVGIcon/xif-examples.d.ts +22 -0
- package/dist/SVGIcon/xif-examples.d.ts.map +1 -0
- package/dist/SVGIcon/xif-examples.js +202 -0
- package/dist/SVGIcon/xif-types.d.ts +129 -0
- package/dist/SVGIcon/xif-types.d.ts.map +1 -0
- package/dist/SVGIcon/xif-types.js +1 -0
- package/dist/Sankey/SankeyChart.d.ts +72 -0
- package/dist/Sankey/SankeyChart.d.ts.map +1 -0
- package/dist/Sankey/SankeyChart.js +162 -0
- package/dist/Sankey/SankeyContext.d.ts +5 -0
- package/dist/Sankey/SankeyContext.d.ts.map +1 -0
- package/dist/Sankey/SankeyContext.js +20 -0
- package/dist/Sankey/SankeyGrid.d.ts +20 -0
- package/dist/Sankey/SankeyGrid.d.ts.map +1 -0
- package/dist/Sankey/SankeyGrid.js +53 -0
- package/dist/Sankey/SankeyLabel.d.ts +11 -0
- package/dist/Sankey/SankeyLabel.d.ts.map +1 -0
- package/dist/Sankey/SankeyLabel.js +179 -0
- package/dist/Sankey/SankeyLink.d.ts +29 -0
- package/dist/Sankey/SankeyLink.d.ts.map +1 -0
- package/dist/Sankey/SankeyLink.js +139 -0
- package/dist/Sankey/SankeyNode.d.ts +15 -0
- package/dist/Sankey/SankeyNode.d.ts.map +1 -0
- package/dist/Sankey/SankeyNode.js +56 -0
- package/dist/Sankey/index.d.ts +8 -0
- package/dist/Sankey/index.d.ts.map +1 -0
- package/dist/Sankey/index.js +8 -0
- package/dist/Sankey/layout.d.ts +26 -0
- package/dist/Sankey/layout.d.ts.map +1 -0
- package/dist/Sankey/layout.js +157 -0
- package/dist/Sankey/types.d.ts +84 -0
- package/dist/Sankey/types.d.ts.map +1 -0
- package/dist/Sankey/types.js +1 -0
- package/dist/Schedule/CalendarEvent.d.ts +36 -0
- package/dist/Schedule/CalendarEvent.d.ts.map +1 -0
- package/dist/Schedule/CalendarEvent.js +35 -0
- package/dist/Schedule/DayView.d.ts +8 -0
- package/dist/Schedule/DayView.d.ts.map +1 -0
- package/dist/Schedule/DayView.js +105 -0
- package/dist/Schedule/ListView.d.ts +6 -0
- package/dist/Schedule/ListView.d.ts.map +1 -0
- package/dist/Schedule/ListView.js +171 -0
- package/dist/Schedule/MonthlyView.d.ts +6 -0
- package/dist/Schedule/MonthlyView.d.ts.map +1 -0
- package/dist/Schedule/MonthlyView.js +270 -0
- package/dist/Schedule/Schedule.d.ts +22 -0
- package/dist/Schedule/Schedule.d.ts.map +1 -0
- package/dist/Schedule/Schedule.js +185 -0
- package/dist/Schedule/TimeGridView.d.ts +12 -0
- package/dist/Schedule/TimeGridView.d.ts.map +1 -0
- package/dist/Schedule/TimeGridView.js +364 -0
- package/dist/Schedule/WeeklyView.d.ts +9 -0
- package/dist/Schedule/WeeklyView.d.ts.map +1 -0
- package/dist/Schedule/WeeklyView.js +112 -0
- package/dist/Schedule/context.d.ts +20 -0
- package/dist/Schedule/context.d.ts.map +1 -0
- package/dist/Schedule/context.js +19 -0
- package/dist/Schedule/dateMath.d.ts +21 -0
- package/dist/Schedule/dateMath.d.ts.map +1 -0
- package/dist/Schedule/dateMath.js +63 -0
- package/dist/Schedule/index.d.ts +19 -0
- package/dist/Schedule/index.d.ts.map +1 -0
- package/dist/Schedule/index.js +17 -0
- package/dist/Schedule/plugins/PaginationPlugin.d.ts +7 -0
- package/dist/Schedule/plugins/PaginationPlugin.d.ts.map +1 -0
- package/dist/Schedule/plugins/PaginationPlugin.js +81 -0
- package/dist/Schedule/plugins/ViewSelectorPlugin.d.ts +11 -0
- package/dist/Schedule/plugins/ViewSelectorPlugin.d.ts.map +1 -0
- package/dist/Schedule/plugins/ViewSelectorPlugin.js +78 -0
- package/dist/Schedule/plugins/index.d.ts +5 -0
- package/dist/Schedule/plugins/index.d.ts.map +1 -0
- package/dist/Schedule/plugins/index.js +14 -0
- package/dist/Schedule/shared.d.ts +923 -0
- package/dist/Schedule/shared.d.ts.map +1 -0
- package/dist/Schedule/shared.js +1325 -0
- package/dist/Schedule/types.d.ts +51 -0
- package/dist/Schedule/types.d.ts.map +1 -0
- package/dist/Schedule/types.js +1 -0
- package/dist/Schedule/useCurrentTime.d.ts +3 -0
- package/dist/Schedule/useCurrentTime.d.ts.map +1 -0
- package/dist/Schedule/useCurrentTime.js +43 -0
- package/dist/Schedule/zonedDateTime.d.ts +20 -0
- package/dist/Schedule/zonedDateTime.d.ts.map +1 -0
- package/dist/Schedule/zonedDateTime.js +31 -0
- package/dist/Stepper/Step.d.ts +120 -0
- package/dist/Stepper/Step.d.ts.map +1 -0
- package/dist/Stepper/Step.js +573 -0
- package/dist/Stepper/StepStatus.d.ts +24 -0
- package/dist/Stepper/StepStatus.d.ts.map +1 -0
- package/dist/Stepper/StepStatus.js +1 -0
- package/dist/Stepper/Stepper.d.ts +77 -0
- package/dist/Stepper/Stepper.d.ts.map +1 -0
- package/dist/Stepper/Stepper.js +104 -0
- package/dist/Stepper/StepperContext.d.ts +12 -0
- package/dist/Stepper/StepperContext.d.ts.map +1 -0
- package/dist/Stepper/StepperContext.js +24 -0
- package/dist/Stepper/index.d.ts +8 -0
- package/dist/Stepper/index.d.ts.map +1 -0
- package/dist/Stepper/index.js +7 -0
- package/dist/ThreeD/ThreeDAxis.d.ts +6 -0
- package/dist/ThreeD/ThreeDAxis.d.ts.map +1 -0
- package/dist/ThreeD/ThreeDAxis.js +75 -0
- package/dist/ThreeD/ThreeDBar.d.ts +7 -0
- package/dist/ThreeD/ThreeDBar.d.ts.map +1 -0
- package/dist/ThreeD/ThreeDBar.js +98 -0
- package/dist/ThreeD/ThreeDChart.d.ts +24 -0
- package/dist/ThreeD/ThreeDChart.d.ts.map +1 -0
- package/dist/ThreeD/ThreeDChart.js +202 -0
- package/dist/ThreeD/ThreeDContext.d.ts +5 -0
- package/dist/ThreeD/ThreeDContext.d.ts.map +1 -0
- package/dist/ThreeD/ThreeDContext.js +19 -0
- package/dist/ThreeD/ThreeDGrid.d.ts +5 -0
- package/dist/ThreeD/ThreeDGrid.d.ts.map +1 -0
- package/dist/ThreeD/ThreeDGrid.js +55 -0
- package/dist/ThreeD/ThreeDScatter.d.ts +7 -0
- package/dist/ThreeD/ThreeDScatter.d.ts.map +1 -0
- package/dist/ThreeD/ThreeDScatter.js +57 -0
- package/dist/ThreeD/ThreeDScatterGL.d.ts +7 -0
- package/dist/ThreeD/ThreeDScatterGL.d.ts.map +1 -0
- package/dist/ThreeD/ThreeDScatterGL.js +243 -0
- package/dist/ThreeD/ThreeDSurface.d.ts +15 -0
- package/dist/ThreeD/ThreeDSurface.d.ts.map +1 -0
- package/dist/ThreeD/ThreeDSurface.js +97 -0
- package/dist/ThreeD/index.d.ts +10 -0
- package/dist/ThreeD/index.d.ts.map +1 -0
- package/dist/ThreeD/index.js +10 -0
- package/dist/ThreeD/types.d.ts +57 -0
- package/dist/ThreeD/types.d.ts.map +1 -0
- package/dist/ThreeD/types.js +1 -0
- package/dist/index.d.ts +26 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +47 -0
- package/dist/lab.css +423 -0
- package/package.json +69 -4
- package/src/Chart/Chart.tsx +312 -0
- package/src/Chart/ChartArea.doc.mjs +16 -0
- package/src/Chart/ChartArea.tsx +91 -0
- package/src/Chart/ChartAxis.tsx +186 -0
- package/src/Chart/ChartBar.doc.mjs +16 -0
- package/src/Chart/ChartBar.tsx +71 -0
- package/src/Chart/ChartBrush.tsx +237 -0
- package/src/Chart/ChartCandlestick.doc.mjs +16 -0
- package/src/Chart/ChartCandlestick.tsx +186 -0
- package/src/Chart/ChartContext.ts +23 -0
- package/src/Chart/ChartDot.doc.mjs +16 -0
- package/src/Chart/ChartDot.tsx +44 -0
- package/src/Chart/ChartDotGL.doc.mjs +16 -0
- package/src/Chart/ChartDotGL.tsx +151 -0
- package/src/Chart/ChartDotGLInteractive.doc.mjs +16 -0
- package/src/Chart/ChartDotGLInteractive.tsx +519 -0
- package/src/Chart/ChartErrorBar.tsx +84 -0
- package/src/Chart/ChartGrid.tsx +86 -0
- package/src/Chart/ChartHeatmapGL.doc.mjs +16 -0
- package/src/Chart/ChartHeatmapGL.tsx +219 -0
- package/src/Chart/ChartLegend.tsx +181 -0
- package/src/Chart/ChartLine.doc.mjs +16 -0
- package/src/Chart/ChartLine.tsx +70 -0
- package/src/Chart/ChartReferenceLine.tsx +76 -0
- package/src/Chart/ChartSelect.tsx +111 -0
- package/src/Chart/ChartStreamGL.doc.mjs +16 -0
- package/src/Chart/ChartStreamGL.tsx +189 -0
- package/src/Chart/ChartTooltip.tsx +451 -0
- package/src/Chart/ChartZoom.tsx +400 -0
- package/src/Chart/formatters.ts +95 -0
- package/src/Chart/getChartColors.ts +249 -0
- package/src/Chart/index.ts +90 -0
- package/src/Chart/m4.test.ts +66 -0
- package/src/Chart/m4.ts +128 -0
- package/src/Chart/types.ts +64 -0
- package/src/Chart/useChartColors.ts +34 -0
- package/src/Chart/useChartRange.test.ts +101 -0
- package/src/Chart/useChartRange.ts +146 -0
- package/src/Chart/utils.ts +31 -0
- package/src/Chart/webgl.ts +192 -0
- package/src/ChartV2/Chart.tsx +348 -0
- package/src/ChartV2/ChartAxis.tsx +209 -0
- package/src/ChartV2/ChartGrid.tsx +99 -0
- package/src/ChartV2/ChartLegend.tsx +69 -0
- package/src/ChartV2/ChartSwatch.doc.mjs +17 -0
- package/src/ChartV2/ChartSwatch.tsx +86 -0
- package/src/ChartV2/ChartTooltip.tsx +382 -0
- package/src/ChartV2/ChartV2.doc.mjs +16 -0
- package/src/ChartV2/ChartV2Context.ts +15 -0
- package/src/ChartV2/index.ts +62 -0
- package/src/ChartV2/layout.ts +223 -0
- package/src/ChartV2/legend.ts +32 -0
- package/src/ChartV2/marks/area.tsx +122 -0
- package/src/ChartV2/marks/band.tsx +70 -0
- package/src/ChartV2/marks/bar.tsx +159 -0
- package/src/ChartV2/marks/candlestick.tsx +106 -0
- package/src/ChartV2/marks/dot.tsx +64 -0
- package/src/ChartV2/marks/dotGL.tsx +202 -0
- package/src/ChartV2/marks/dotGLInteractive.tsx +546 -0
- package/src/ChartV2/marks/errorBar.tsx +89 -0
- package/src/ChartV2/marks/heatmapGL.tsx +299 -0
- package/src/ChartV2/marks/index.ts +14 -0
- package/src/ChartV2/marks/line.tsx +94 -0
- package/src/ChartV2/marks/referenceLine.tsx +224 -0
- package/src/ChartV2/marks/streamGL.tsx +251 -0
- package/src/ChartV2/tooltip.ts +70 -0
- package/src/ChartV2/types.ts +129 -0
- package/src/ChatReasoning/ChatReasoning.doc.mjs +16 -0
- package/src/ChatReasoning/ChatReasoning.test.tsx +56 -0
- package/src/ChatReasoning/ChatReasoning.tsx +322 -0
- package/src/CircularProgress/CircularProgress.doc.mjs +174 -0
- package/src/CircularProgress/CircularProgress.test.tsx +157 -0
- package/src/CircularProgress/CircularProgress.tsx +373 -0
- package/src/CircularProgress/index.ts +15 -0
- package/src/CodeBlock/index.ts +10 -0
- package/src/CodeEditor/CodeEditor.doc.mjs +16 -0
- package/src/CodeEditor/CodeEditor.tsx +466 -0
- package/src/CodeEditor/index.ts +8 -0
- package/src/Radial/RadialArea.tsx +103 -0
- package/src/Radial/RadialAxis.tsx +60 -0
- package/src/Radial/RadialChart.doc.mjs +16 -0
- package/src/Radial/RadialChart.tsx +219 -0
- package/src/Radial/RadialContext.ts +22 -0
- package/src/Radial/RadialGrid.tsx +81 -0
- package/src/Radial/RadialSlice.tsx +130 -0
- package/src/Radial/RadialTooltip.tsx +347 -0
- package/src/Radial/index.ts +14 -0
- package/src/Radial/types.ts +46 -0
- package/src/SVGIcon/SVGIcon.doc.mjs +16 -0
- package/src/SVGIcon/SVGIcon.tsx +406 -0
- package/src/SVGIcon/icons.ts +283 -0
- package/src/SVGIcon/index.ts +73 -0
- package/src/SVGIcon/pathTransforms.ts +612 -0
- package/src/SVGIcon/tokens.stylex.ts +53 -0
- package/src/SVGIcon/variations.stylex.ts +122 -0
- package/src/SVGIcon/xif-examples.ts +191 -0
- package/src/SVGIcon/xif-types.ts +181 -0
- package/src/Sankey/SankeyChart.doc.mjs +16 -0
- package/src/Sankey/SankeyChart.tsx +220 -0
- package/src/Sankey/SankeyContext.ts +23 -0
- package/src/Sankey/SankeyGrid.tsx +69 -0
- package/src/Sankey/SankeyLabel.tsx +234 -0
- package/src/Sankey/SankeyLink.tsx +167 -0
- package/src/Sankey/SankeyNode.tsx +66 -0
- package/src/Sankey/index.ts +22 -0
- package/src/Sankey/layout.ts +219 -0
- package/src/Sankey/types.ts +93 -0
- package/src/Schedule/CalendarEvent.ts +74 -0
- package/src/Schedule/DayView.tsx +112 -0
- package/src/Schedule/ListView.tsx +236 -0
- package/src/Schedule/MonthlyView.tsx +401 -0
- package/src/Schedule/Schedule.doc.mjs +16 -0
- package/src/Schedule/Schedule.test.tsx +405 -0
- package/src/Schedule/Schedule.tsx +307 -0
- package/src/Schedule/TimeGridView.tsx +589 -0
- package/src/Schedule/WeeklyView.tsx +130 -0
- package/src/Schedule/context.tsx +49 -0
- package/src/Schedule/dateMath.ts +112 -0
- package/src/Schedule/index.ts +61 -0
- package/src/Schedule/plugins/PaginationPlugin.tsx +98 -0
- package/src/Schedule/plugins/ViewSelectorPlugin.tsx +128 -0
- package/src/Schedule/plugins/index.tsx +20 -0
- package/src/Schedule/shared.tsx +1304 -0
- package/src/Schedule/types.ts +86 -0
- package/src/Schedule/useCurrentTime.ts +50 -0
- package/src/Schedule/zonedDateTime.ts +71 -0
- package/src/Stepper/Step.doc.mjs +17 -0
- package/src/Stepper/Step.tsx +756 -0
- package/src/Stepper/StepStatus.ts +26 -0
- package/src/Stepper/Stepper.doc.mjs +265 -0
- package/src/Stepper/Stepper.test.tsx +281 -0
- package/src/Stepper/Stepper.tsx +157 -0
- package/src/Stepper/StepperContext.ts +43 -0
- package/src/Stepper/index.ts +14 -0
- package/src/ThreeD/3DBar.doc.mjs +16 -0
- package/src/ThreeD/3DChart.doc.mjs +16 -0
- package/src/ThreeD/3DScatter.doc.mjs +16 -0
- package/src/ThreeD/3DScatterGL.doc.mjs +16 -0
- package/src/ThreeD/3DSurface.doc.mjs +16 -0
- package/src/ThreeD/ThreeDAxis.tsx +86 -0
- package/src/ThreeD/ThreeDBar.tsx +130 -0
- package/src/ThreeD/ThreeDChart.tsx +262 -0
- package/src/ThreeD/ThreeDContext.ts +22 -0
- package/src/ThreeD/ThreeDGrid.tsx +68 -0
- package/src/ThreeD/ThreeDScatter.tsx +63 -0
- package/src/ThreeD/ThreeDScatterGL.tsx +270 -0
- package/src/ThreeD/ThreeDSurface.tsx +142 -0
- package/src/ThreeD/index.ts +11 -0
- package/src/ThreeD/projection.test.ts +132 -0
- package/src/ThreeD/types.ts +62 -0
- package/src/index.ts +250 -0
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
'use client';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @file context.tsx
|
|
7
|
+
* @input Resolved Schedule events, range, timezone, and active date
|
|
8
|
+
* @output Schedule context object and hook used by view components
|
|
9
|
+
* @position Internal context bridge between generic Schedule and concrete views
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import {createContext, useContext} from 'react';
|
|
13
|
+
import type {
|
|
14
|
+
CalendarEvent,
|
|
15
|
+
ScheduleRange,
|
|
16
|
+
ZonedDateTime,
|
|
17
|
+
ScheduleCategory,
|
|
18
|
+
SchedulePlugin,
|
|
19
|
+
ScheduleViewBase,
|
|
20
|
+
} from './types';
|
|
21
|
+
|
|
22
|
+
export interface ScheduleContextValue {
|
|
23
|
+
events: ReadonlyArray<CalendarEvent>;
|
|
24
|
+
categories: ReadonlyArray<ScheduleCategory>;
|
|
25
|
+
date: ZonedDateTime;
|
|
26
|
+
focusDate: ZonedDateTime;
|
|
27
|
+
timezoneID: string;
|
|
28
|
+
range: ScheduleRange;
|
|
29
|
+
isLoading: boolean;
|
|
30
|
+
onPreviousDate: () => void;
|
|
31
|
+
previousDateLabel: string;
|
|
32
|
+
onToday: () => void;
|
|
33
|
+
onNextDate: () => void;
|
|
34
|
+
nextDateLabel: string;
|
|
35
|
+
view: ScheduleViewBase;
|
|
36
|
+
plugins: ReadonlyArray<SchedulePlugin>;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export const ScheduleContext = createContext<ScheduleContextValue | null>(
|
|
40
|
+
null,
|
|
41
|
+
);
|
|
42
|
+
|
|
43
|
+
export function useScheduleContext(): ScheduleContextValue {
|
|
44
|
+
const context = useContext(ScheduleContext);
|
|
45
|
+
if (context == null) {
|
|
46
|
+
throw new Error('Schedule views must be rendered inside Schedule.');
|
|
47
|
+
}
|
|
48
|
+
return context;
|
|
49
|
+
}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @file dateMath.ts
|
|
5
|
+
* @input PlainDate records, Instant epoch milliseconds, IANA timezone IDs
|
|
6
|
+
* @output Pure range, conversion, formatting, and event-overlap utilities
|
|
7
|
+
* @position Shared schedule utility layer; consumed by Schedule and tests
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import {
|
|
11
|
+
type PlainDate,
|
|
12
|
+
plainDateAddDays,
|
|
13
|
+
plainDateFromInstant,
|
|
14
|
+
plainDateIsAfter,
|
|
15
|
+
plainDateIsBefore,
|
|
16
|
+
plainDateToInstant,
|
|
17
|
+
} from '@astryxdesign/core/utils';
|
|
18
|
+
import type {CalendarDayEvent, CalendarEvent} from './CalendarEvent';
|
|
19
|
+
import type {Instant, ScheduleRange} from './types';
|
|
20
|
+
|
|
21
|
+
export function getBrowserTimezoneID(): string {
|
|
22
|
+
return Intl.DateTimeFormat().resolvedOptions().timeZone || 'UTC';
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export function isDayEvent(event: CalendarEvent): event is CalendarDayEvent {
|
|
26
|
+
return typeof event.start !== 'number';
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export function getScheduleRangeFromDates({
|
|
30
|
+
startDate,
|
|
31
|
+
endDate,
|
|
32
|
+
timezoneID,
|
|
33
|
+
}: {
|
|
34
|
+
startDate: PlainDate;
|
|
35
|
+
endDate: PlainDate;
|
|
36
|
+
timezoneID: string;
|
|
37
|
+
}): ScheduleRange {
|
|
38
|
+
return {
|
|
39
|
+
startDate,
|
|
40
|
+
endDate,
|
|
41
|
+
start: plainDateToInstant(startDate, timezoneID) as Instant,
|
|
42
|
+
end: plainDateToInstant(endDate, timezoneID) as Instant,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export function enumerateDates(start: PlainDate, endExclusive: PlainDate) {
|
|
47
|
+
const dates: PlainDate[] = [];
|
|
48
|
+
let current = start;
|
|
49
|
+
while (plainDateIsBefore(current, endExclusive)) {
|
|
50
|
+
dates.push(current);
|
|
51
|
+
current = plainDateAddDays(current, 1);
|
|
52
|
+
}
|
|
53
|
+
return dates;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export function eventOverlapsRange(
|
|
57
|
+
event: CalendarEvent,
|
|
58
|
+
range: ScheduleRange,
|
|
59
|
+
timezoneID: string,
|
|
60
|
+
): boolean {
|
|
61
|
+
if (isDayEvent(event)) {
|
|
62
|
+
const eventStart = plainDateToInstant(event.start, timezoneID) as Instant;
|
|
63
|
+
const eventEnd = plainDateToInstant(
|
|
64
|
+
plainDateAddDays(event.end, 1),
|
|
65
|
+
timezoneID,
|
|
66
|
+
) as Instant;
|
|
67
|
+
return eventStart < range.end && eventEnd > range.start;
|
|
68
|
+
}
|
|
69
|
+
return event.start < range.end && event.end > range.start;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
export function eventOccursOnDate(
|
|
73
|
+
event: CalendarEvent,
|
|
74
|
+
date: PlainDate,
|
|
75
|
+
timezoneID: string,
|
|
76
|
+
): boolean {
|
|
77
|
+
if (isDayEvent(event)) {
|
|
78
|
+
return (
|
|
79
|
+
!plainDateIsAfter(event.start, date) &&
|
|
80
|
+
!plainDateIsBefore(event.end, date)
|
|
81
|
+
);
|
|
82
|
+
}
|
|
83
|
+
const startDate = plainDateFromInstant(event.start, timezoneID);
|
|
84
|
+
const endDate = plainDateFromInstant(
|
|
85
|
+
Math.max(event.end - 1, event.start),
|
|
86
|
+
timezoneID,
|
|
87
|
+
);
|
|
88
|
+
return (
|
|
89
|
+
!plainDateIsAfter(startDate, date) && !plainDateIsBefore(endDate, date)
|
|
90
|
+
);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
export function sortEvents(
|
|
94
|
+
events: ReadonlyArray<CalendarEvent>,
|
|
95
|
+
timezoneID: string,
|
|
96
|
+
): CalendarEvent[] {
|
|
97
|
+
return [...events].sort((a, b) => {
|
|
98
|
+
const aStart = getEventSortStart(a, timezoneID);
|
|
99
|
+
const bStart = getEventSortStart(b, timezoneID);
|
|
100
|
+
return aStart < bStart
|
|
101
|
+
? -1
|
|
102
|
+
: aStart > bStart
|
|
103
|
+
? 1
|
|
104
|
+
: a.title.localeCompare(b.title);
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
function getEventSortStart(event: CalendarEvent, timezoneID: string): Instant {
|
|
109
|
+
return isDayEvent(event)
|
|
110
|
+
? (plainDateToInstant(event.start, timezoneID) as Instant)
|
|
111
|
+
: event.start;
|
|
112
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @file index.ts
|
|
5
|
+
* @input Schedule implementation and public schedule types
|
|
6
|
+
* @output Public exports for @astryxdesign/lab Schedule
|
|
7
|
+
* @position Component entry point; re-exported by packages/lab/src/index.ts
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
export {Schedule, type ScheduleProps} from './Schedule';
|
|
11
|
+
export {createEventFromISO} from './CalendarEvent';
|
|
12
|
+
export {
|
|
13
|
+
createScheduleMonthlyView,
|
|
14
|
+
type ScheduleMonthlyViewOptions,
|
|
15
|
+
} from './MonthlyView';
|
|
16
|
+
export {
|
|
17
|
+
createScheduleWeeklyView,
|
|
18
|
+
type ScheduleWeeklyViewOptions,
|
|
19
|
+
} from './WeeklyView';
|
|
20
|
+
export {
|
|
21
|
+
createScheduleDayView,
|
|
22
|
+
type ScheduleDayViewOptions,
|
|
23
|
+
} from './DayView';
|
|
24
|
+
export {
|
|
25
|
+
createScheduleListView,
|
|
26
|
+
type ScheduleListViewOptions,
|
|
27
|
+
} from './ListView';
|
|
28
|
+
export {ScheduleContext, useScheduleContext} from './context';
|
|
29
|
+
export {
|
|
30
|
+
defaultSchedulePlugins,
|
|
31
|
+
useSchedulePaginationPlugin,
|
|
32
|
+
useScheduleViewSelectorPlugin,
|
|
33
|
+
} from './plugins';
|
|
34
|
+
export type {ScheduleContextValue} from './context';
|
|
35
|
+
export type {SchedulePaginationPluginOptions} from './plugins/PaginationPlugin';
|
|
36
|
+
export type {
|
|
37
|
+
ScheduleViewSelectorOption,
|
|
38
|
+
ScheduleViewSelectorPluginOptions,
|
|
39
|
+
} from './plugins/ViewSelectorPlugin';
|
|
40
|
+
|
|
41
|
+
export type {
|
|
42
|
+
CalendarDayEvent,
|
|
43
|
+
CalendarEvent,
|
|
44
|
+
CalendarEventBase,
|
|
45
|
+
CalendarInstantEvent,
|
|
46
|
+
Instant,
|
|
47
|
+
PlainDate,
|
|
48
|
+
ScheduleRange,
|
|
49
|
+
ZonedDateTime,
|
|
50
|
+
ZonedDateTimeRange,
|
|
51
|
+
ScheduleCategory,
|
|
52
|
+
ScheduleDate,
|
|
53
|
+
ScheduleEventColor,
|
|
54
|
+
ScheduleEventSource,
|
|
55
|
+
ScheduleHeaderContent,
|
|
56
|
+
SchedulePlugin,
|
|
57
|
+
SchedulePluginPosition,
|
|
58
|
+
ScheduleView,
|
|
59
|
+
ScheduleViewBase,
|
|
60
|
+
ScheduleViewOptions,
|
|
61
|
+
} from './types';
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
'use client';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @file PaginationPlugin.tsx
|
|
7
|
+
* @input Schedule date navigation callbacks from Schedule context
|
|
8
|
+
* @output Hook and default plugin that render previous, today, and next controls
|
|
9
|
+
* @position Built-in Schedule plugin; re-exported from plugins.tsx
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import {useMemo, type ReactNode} from 'react';
|
|
13
|
+
import {Button} from '@astryxdesign/core/Button';
|
|
14
|
+
import {ButtonGroup} from '@astryxdesign/core/ButtonGroup';
|
|
15
|
+
import {Icon} from '@astryxdesign/core/Icon';
|
|
16
|
+
import {IconButton} from '@astryxdesign/core/IconButton';
|
|
17
|
+
import {useScheduleContext} from '../context';
|
|
18
|
+
import type {
|
|
19
|
+
ScheduleHeaderContent,
|
|
20
|
+
SchedulePlugin,
|
|
21
|
+
SchedulePluginPosition,
|
|
22
|
+
} from '../types';
|
|
23
|
+
|
|
24
|
+
export interface SchedulePaginationPluginOptions {
|
|
25
|
+
position?: SchedulePluginPosition;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
function SchedulePaginationControls() {
|
|
29
|
+
const {
|
|
30
|
+
onPreviousDate,
|
|
31
|
+
previousDateLabel,
|
|
32
|
+
onToday,
|
|
33
|
+
onNextDate,
|
|
34
|
+
nextDateLabel,
|
|
35
|
+
} = useScheduleContext();
|
|
36
|
+
return (
|
|
37
|
+
<ButtonGroup label="Schedule pagination" size="sm">
|
|
38
|
+
<IconButton
|
|
39
|
+
label={previousDateLabel}
|
|
40
|
+
icon={<Icon icon="chevronLeft" size="sm" color="inherit" />}
|
|
41
|
+
onClick={onPreviousDate}
|
|
42
|
+
/>
|
|
43
|
+
<Button label="Today" size="sm" onClick={onToday} />
|
|
44
|
+
<IconButton
|
|
45
|
+
label={nextDateLabel}
|
|
46
|
+
icon={<Icon icon="chevronRight" size="sm" color="inherit" />}
|
|
47
|
+
onClick={onNextDate}
|
|
48
|
+
/>
|
|
49
|
+
</ButtonGroup>
|
|
50
|
+
);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
function createSchedulePaginationPlugin({
|
|
54
|
+
position = 'start',
|
|
55
|
+
}: SchedulePaginationPluginOptions = {}): SchedulePlugin {
|
|
56
|
+
return {
|
|
57
|
+
renderHeader(
|
|
58
|
+
startContent: ReactNode,
|
|
59
|
+
centerContent: ReactNode,
|
|
60
|
+
endContent: ReactNode,
|
|
61
|
+
): ScheduleHeaderContent {
|
|
62
|
+
const controls = <SchedulePaginationControls />;
|
|
63
|
+
return position === 'start'
|
|
64
|
+
? {
|
|
65
|
+
startContent: (
|
|
66
|
+
<>
|
|
67
|
+
{controls}
|
|
68
|
+
{startContent}
|
|
69
|
+
</>
|
|
70
|
+
),
|
|
71
|
+
centerContent,
|
|
72
|
+
endContent,
|
|
73
|
+
}
|
|
74
|
+
: {
|
|
75
|
+
startContent,
|
|
76
|
+
centerContent,
|
|
77
|
+
endContent: (
|
|
78
|
+
<>
|
|
79
|
+
{endContent}
|
|
80
|
+
{controls}
|
|
81
|
+
</>
|
|
82
|
+
),
|
|
83
|
+
};
|
|
84
|
+
},
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
export const defaultSchedulePaginationPlugin =
|
|
89
|
+
createSchedulePaginationPlugin();
|
|
90
|
+
|
|
91
|
+
export function useSchedulePaginationPlugin({
|
|
92
|
+
position = 'start',
|
|
93
|
+
}: SchedulePaginationPluginOptions = {}): SchedulePlugin {
|
|
94
|
+
return useMemo(
|
|
95
|
+
() => createSchedulePaginationPlugin({position}),
|
|
96
|
+
[position],
|
|
97
|
+
);
|
|
98
|
+
}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
'use client';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @file ViewSelectorPlugin.tsx
|
|
7
|
+
* @input Schedule view options and caller-provided view change callback
|
|
8
|
+
* @output Hook that renders an DropdownMenu plugin for caller-provided views
|
|
9
|
+
* @position Built-in Schedule plugin; re-exported from plugins.tsx
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import {useMemo, type ReactNode} from 'react';
|
|
13
|
+
import {DropdownMenu, DropdownMenuItem} from '@astryxdesign/core/DropdownMenu';
|
|
14
|
+
import {Icon} from '@astryxdesign/core/Icon';
|
|
15
|
+
import {useScheduleContext} from '../context';
|
|
16
|
+
import type {
|
|
17
|
+
ScheduleHeaderContent,
|
|
18
|
+
SchedulePlugin,
|
|
19
|
+
SchedulePluginPosition,
|
|
20
|
+
ScheduleView,
|
|
21
|
+
ScheduleViewBase,
|
|
22
|
+
} from '../types';
|
|
23
|
+
|
|
24
|
+
export interface ScheduleViewSelectorOption<
|
|
25
|
+
View extends ScheduleViewBase = ScheduleView,
|
|
26
|
+
> {
|
|
27
|
+
view: View;
|
|
28
|
+
label: string;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export interface ScheduleViewSelectorPluginOptions<
|
|
32
|
+
View extends ScheduleViewBase = ScheduleView,
|
|
33
|
+
> {
|
|
34
|
+
onChangeView?: (view: View) => void;
|
|
35
|
+
position?: SchedulePluginPosition;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
function ScheduleViewSelectorControl<View extends ScheduleViewBase>({
|
|
39
|
+
onChangeView,
|
|
40
|
+
options,
|
|
41
|
+
}: {
|
|
42
|
+
onChangeView?: (view: View) => void;
|
|
43
|
+
options: ReadonlyArray<ScheduleViewSelectorOption<View>>;
|
|
44
|
+
}) {
|
|
45
|
+
const {view} = useScheduleContext();
|
|
46
|
+
const selectedIndex = options.findIndex(option => option.view === view);
|
|
47
|
+
const selectedLabel = options[selectedIndex]?.label ?? 'View';
|
|
48
|
+
return (
|
|
49
|
+
<DropdownMenu
|
|
50
|
+
button={{
|
|
51
|
+
label: selectedLabel,
|
|
52
|
+
size: 'sm',
|
|
53
|
+
isDisabled: onChangeView == null,
|
|
54
|
+
}}
|
|
55
|
+
menuWidth={160}>
|
|
56
|
+
{options.map((option, index) => (
|
|
57
|
+
<DropdownMenuItem
|
|
58
|
+
key={option.label}
|
|
59
|
+
label={option.label}
|
|
60
|
+
onClick={() => onChangeView?.(option.view)}
|
|
61
|
+
endContent={
|
|
62
|
+
index === selectedIndex ? (
|
|
63
|
+
<Icon icon="check" size="sm" color="primary" />
|
|
64
|
+
) : null
|
|
65
|
+
}
|
|
66
|
+
/>
|
|
67
|
+
))}
|
|
68
|
+
</DropdownMenu>
|
|
69
|
+
);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
function createScheduleViewSelectorPlugin<View extends ScheduleViewBase>(
|
|
73
|
+
options: ReadonlyArray<ScheduleViewSelectorOption<View>>,
|
|
74
|
+
{
|
|
75
|
+
onChangeView,
|
|
76
|
+
position = 'end',
|
|
77
|
+
}: ScheduleViewSelectorPluginOptions<View> = {},
|
|
78
|
+
): SchedulePlugin {
|
|
79
|
+
return {
|
|
80
|
+
renderHeader(
|
|
81
|
+
startContent: ReactNode,
|
|
82
|
+
centerContent: ReactNode,
|
|
83
|
+
endContent: ReactNode,
|
|
84
|
+
): ScheduleHeaderContent {
|
|
85
|
+
const control = (
|
|
86
|
+
<ScheduleViewSelectorControl
|
|
87
|
+
onChangeView={onChangeView}
|
|
88
|
+
options={options}
|
|
89
|
+
/>
|
|
90
|
+
);
|
|
91
|
+
return position === 'start'
|
|
92
|
+
? {
|
|
93
|
+
startContent: (
|
|
94
|
+
<>
|
|
95
|
+
{startContent}
|
|
96
|
+
{control}
|
|
97
|
+
</>
|
|
98
|
+
),
|
|
99
|
+
centerContent,
|
|
100
|
+
endContent,
|
|
101
|
+
}
|
|
102
|
+
: {
|
|
103
|
+
startContent,
|
|
104
|
+
centerContent,
|
|
105
|
+
endContent: (
|
|
106
|
+
<>
|
|
107
|
+
{endContent}
|
|
108
|
+
{control}
|
|
109
|
+
</>
|
|
110
|
+
),
|
|
111
|
+
};
|
|
112
|
+
},
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
export function useScheduleViewSelectorPlugin<
|
|
117
|
+
View extends ScheduleViewBase,
|
|
118
|
+
>(
|
|
119
|
+
options: ReadonlyArray<ScheduleViewSelectorOption<View>>,
|
|
120
|
+
pluginOptions: ScheduleViewSelectorPluginOptions<View> = {},
|
|
121
|
+
): SchedulePlugin {
|
|
122
|
+
const {onChangeView, position = 'end'} = pluginOptions;
|
|
123
|
+
return useMemo(
|
|
124
|
+
() =>
|
|
125
|
+
createScheduleViewSelectorPlugin(options, {onChangeView, position}),
|
|
126
|
+
[onChangeView, options, position],
|
|
127
|
+
);
|
|
128
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
|
|
3
|
+
'use client';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @file plugins.tsx
|
|
7
|
+
* @input Built-in schedule plugin hooks and stable defaults
|
|
8
|
+
* @output Default Schedule plugin list and plugin hook re-exports
|
|
9
|
+
* @position Plugin barrel; plugin implementations live in separate files
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import {defaultSchedulePaginationPlugin} from './PaginationPlugin';
|
|
13
|
+
import type {SchedulePlugin} from '../types';
|
|
14
|
+
|
|
15
|
+
export {useSchedulePaginationPlugin} from './PaginationPlugin';
|
|
16
|
+
export {useScheduleViewSelectorPlugin} from './ViewSelectorPlugin';
|
|
17
|
+
|
|
18
|
+
export const defaultSchedulePlugins: ReadonlyArray<SchedulePlugin> = [
|
|
19
|
+
defaultSchedulePaginationPlugin,
|
|
20
|
+
];
|