@spatika/react 1.0.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +71 -0
- package/README.md +4 -3
- package/dist/composites/AccentRule.d.ts +6 -0
- package/dist/composites/AccentRule.d.ts.map +1 -0
- package/dist/composites/AccentRule.js +6 -0
- package/dist/composites/AvailabilityBadge.d.ts +9 -0
- package/dist/composites/AvailabilityBadge.d.ts.map +1 -0
- package/dist/composites/AvailabilityBadge.js +9 -0
- package/dist/composites/Card.d.ts +7 -1
- package/dist/composites/Card.d.ts.map +1 -1
- package/dist/composites/Card.js +10 -0
- package/dist/composites/CareerCard.d.ts +20 -0
- package/dist/composites/CareerCard.d.ts.map +1 -0
- package/dist/composites/CareerCard.js +17 -0
- package/dist/composites/ChartDataGrid.d.ts +33 -0
- package/dist/composites/ChartDataGrid.d.ts.map +1 -0
- package/dist/composites/ChartDataGrid.js +77 -0
- package/dist/composites/ContactLink.d.ts +15 -0
- package/dist/composites/ContactLink.d.ts.map +1 -0
- package/dist/composites/ContactLink.js +8 -0
- package/dist/composites/CoverHero.d.ts +1 -1
- package/dist/composites/CoverHero.d.ts.map +1 -1
- package/dist/composites/CoverHero.js +2 -2
- package/dist/composites/DisplayHeading.d.ts +9 -0
- package/dist/composites/DisplayHeading.d.ts.map +1 -0
- package/dist/composites/DisplayHeading.js +6 -0
- package/dist/composites/EntityMediaCard.d.ts +1 -1
- package/dist/composites/EntityMediaCard.d.ts.map +1 -1
- package/dist/composites/EntityMediaCard.js +12 -4
- package/dist/composites/EventCalendar.d.ts +35 -0
- package/dist/composites/EventCalendar.d.ts.map +1 -0
- package/dist/composites/EventCalendar.js +339 -0
- package/dist/composites/EventEditor.d.ts +22 -0
- package/dist/composites/EventEditor.d.ts.map +1 -0
- package/dist/composites/EventEditor.js +86 -0
- package/dist/composites/EventTimeline.d.ts +24 -0
- package/dist/composites/EventTimeline.d.ts.map +1 -0
- package/dist/composites/EventTimeline.js +184 -0
- package/dist/composites/FloatChip.d.ts +15 -0
- package/dist/composites/FloatChip.d.ts.map +1 -0
- package/dist/composites/FloatChip.js +7 -0
- package/dist/composites/GradientText.d.ts +11 -0
- package/dist/composites/GradientText.d.ts.map +1 -0
- package/dist/composites/GradientText.js +6 -0
- package/dist/composites/IconTile.d.ts +10 -0
- package/dist/composites/IconTile.d.ts.map +1 -0
- package/dist/composites/IconTile.js +7 -0
- package/dist/composites/MapChart.d.ts +24 -0
- package/dist/composites/MapChart.d.ts.map +1 -0
- package/dist/composites/MapChart.js +58 -0
- package/dist/composites/MetaChip.d.ts +9 -0
- package/dist/composites/MetaChip.d.ts.map +1 -0
- package/dist/composites/MetaChip.js +6 -0
- package/dist/composites/PresenceDot.d.ts +10 -0
- package/dist/composites/PresenceDot.d.ts.map +1 -0
- package/dist/composites/PresenceDot.js +10 -0
- package/dist/composites/ProfileHero.d.ts +6 -4
- package/dist/composites/ProfileHero.d.ts.map +1 -1
- package/dist/composites/ProfileHero.js +8 -8
- package/dist/composites/ProjectCard.d.ts +12 -0
- package/dist/composites/ProjectCard.d.ts.map +1 -0
- package/dist/composites/ProjectCard.js +9 -0
- package/dist/composites/ScatterWebGL.d.ts +22 -0
- package/dist/composites/ScatterWebGL.d.ts.map +1 -0
- package/dist/composites/ScatterWebGL.js +45 -0
- package/dist/composites/SectionHeading.d.ts +16 -0
- package/dist/composites/SectionHeading.d.ts.map +1 -0
- package/dist/composites/SectionHeading.js +12 -0
- package/dist/composites/SiteFooter.d.ts +18 -0
- package/dist/composites/SiteFooter.d.ts.map +1 -0
- package/dist/composites/SiteFooter.js +15 -0
- package/dist/composites/SiteNav.d.ts +25 -0
- package/dist/composites/SiteNav.d.ts.map +1 -0
- package/dist/composites/SiteNav.js +44 -0
- package/dist/composites/StatCard.d.ts +7 -1
- package/dist/composites/StatCard.d.ts.map +1 -1
- package/dist/composites/StatCard.js +5 -2
- package/dist/composites/StatusDot.d.ts +1 -1
- package/dist/composites/Tag.d.ts +11 -0
- package/dist/composites/Tag.d.ts.map +1 -0
- package/dist/composites/Tag.js +33 -0
- package/dist/composites/Wordmark.d.ts +19 -0
- package/dist/composites/Wordmark.d.ts.map +1 -0
- package/dist/composites/Wordmark.js +15 -0
- package/dist/composites/cartesian-charts.d.ts +138 -0
- package/dist/composites/cartesian-charts.d.ts.map +1 -0
- package/dist/composites/cartesian-charts.js +401 -0
- package/dist/composites/chart-composition.d.ts +139 -0
- package/dist/composites/chart-composition.d.ts.map +1 -0
- package/dist/composites/chart-composition.js +486 -0
- package/dist/composites/chart-ui.d.ts +83 -0
- package/dist/composites/chart-ui.d.ts.map +1 -0
- package/dist/composites/chart-ui.js +108 -0
- package/dist/composites/charts-3d.d.ts +37 -0
- package/dist/composites/charts-3d.d.ts.map +1 -0
- package/dist/composites/charts-3d.js +121 -0
- package/dist/composites/flow-charts.d.ts +89 -0
- package/dist/composites/flow-charts.d.ts.map +1 -0
- package/dist/composites/flow-charts.js +186 -0
- package/dist/composites/radial-charts.d.ts +109 -0
- package/dist/composites/radial-charts.d.ts.map +1 -0
- package/dist/composites/radial-charts.js +176 -0
- package/dist/composites/scheduler-ui.d.ts +43 -0
- package/dist/composites/scheduler-ui.d.ts.map +1 -0
- package/dist/composites/scheduler-ui.js +71 -0
- package/dist/index.d.ts +83 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +74 -7
- package/dist/lib/chart-export.d.ts +10 -0
- package/dist/lib/chart-export.d.ts.map +1 -0
- package/dist/lib/chart-export.js +102 -0
- package/dist/lib/charts.d.ts +235 -0
- package/dist/lib/charts.d.ts.map +1 -0
- package/dist/lib/charts.js +744 -0
- package/dist/lib/geo.d.ts +39 -0
- package/dist/lib/geo.d.ts.map +1 -0
- package/dist/lib/geo.js +101 -0
- package/dist/lib/iso.d.ts +21 -0
- package/dist/lib/iso.d.ts.map +1 -0
- package/dist/lib/iso.js +56 -0
- package/dist/lib/rrule.d.ts +20 -0
- package/dist/lib/rrule.d.ts.map +1 -0
- package/dist/lib/rrule.js +236 -0
- package/dist/lib/scheduler.d.ts +152 -0
- package/dist/lib/scheduler.d.ts.map +1 -0
- package/dist/lib/scheduler.js +501 -0
- package/dist/lib/webgl-scatter.d.ts +44 -0
- package/dist/lib/webgl-scatter.d.ts.map +1 -0
- package/dist/lib/webgl-scatter.js +185 -0
- package/dist/primitives/Accordion.d.ts +44 -20
- package/dist/primitives/Accordion.d.ts.map +1 -1
- package/dist/primitives/Accordion.js +82 -22
- package/dist/primitives/AppBar.d.ts +13 -0
- package/dist/primitives/AppBar.d.ts.map +1 -0
- package/dist/primitives/AppBar.js +27 -0
- package/dist/primitives/Autocomplete.d.ts +28 -0
- package/dist/primitives/Autocomplete.d.ts.map +1 -0
- package/dist/primitives/Autocomplete.js +118 -0
- package/dist/primitives/Avatar.d.ts +13 -1
- package/dist/primitives/Avatar.d.ts.map +1 -1
- package/dist/primitives/Avatar.js +17 -2
- package/dist/primitives/Backdrop.d.ts +17 -0
- package/dist/primitives/Backdrop.d.ts.map +1 -0
- package/dist/primitives/Backdrop.js +17 -0
- package/dist/primitives/BottomNavigation.d.ts +23 -0
- package/dist/primitives/BottomNavigation.d.ts.map +1 -0
- package/dist/primitives/BottomNavigation.js +30 -0
- package/dist/primitives/Button.d.ts +4 -4
- package/dist/primitives/Button.d.ts.map +1 -1
- package/dist/primitives/Button.js +2 -0
- package/dist/primitives/ButtonBase.d.ts +14 -0
- package/dist/primitives/ButtonBase.d.ts.map +1 -0
- package/dist/primitives/ButtonBase.js +13 -0
- package/dist/primitives/ButtonGroup.d.ts +25 -0
- package/dist/primitives/ButtonGroup.d.ts.map +1 -0
- package/dist/primitives/ButtonGroup.js +44 -0
- package/dist/primitives/CircularProgress.d.ts +16 -0
- package/dist/primitives/CircularProgress.d.ts.map +1 -0
- package/dist/primitives/CircularProgress.js +17 -0
- package/dist/primitives/ClickAwayListener.d.ts +16 -0
- package/dist/primitives/ClickAwayListener.d.ts.map +1 -0
- package/dist/primitives/ClickAwayListener.js +33 -0
- package/dist/primitives/Collapse.d.ts +19 -0
- package/dist/primitives/Collapse.d.ts.map +1 -0
- package/dist/primitives/Collapse.js +14 -0
- package/dist/primitives/Container.d.ts +13 -0
- package/dist/primitives/Container.d.ts.map +1 -0
- package/dist/primitives/Container.js +26 -0
- package/dist/primitives/Fab.d.ts +22 -0
- package/dist/primitives/Fab.d.ts.map +1 -0
- package/dist/primitives/Fab.js +42 -0
- package/dist/primitives/FormControl.d.ts +27 -0
- package/dist/primitives/FormControl.d.ts.map +1 -0
- package/dist/primitives/FormControl.js +24 -0
- package/dist/primitives/FormControlLabel.d.ts +18 -0
- package/dist/primitives/FormControlLabel.d.ts.map +1 -0
- package/dist/primitives/FormControlLabel.js +19 -0
- package/dist/primitives/Grid.d.ts +32 -0
- package/dist/primitives/Grid.d.ts.map +1 -0
- package/dist/primitives/Grid.js +50 -0
- package/dist/primitives/IconButton.d.ts +22 -0
- package/dist/primitives/IconButton.d.ts.map +1 -0
- package/dist/primitives/IconButton.js +39 -0
- package/dist/primitives/ImageList.d.ts +31 -0
- package/dist/primitives/ImageList.d.ts.map +1 -0
- package/dist/primitives/ImageList.js +33 -0
- package/dist/primitives/InputAdornment.d.ts +28 -0
- package/dist/primitives/InputAdornment.d.ts.map +1 -0
- package/dist/primitives/InputAdornment.js +13 -0
- package/dist/primitives/Link.d.ts +17 -0
- package/dist/primitives/Link.d.ts.map +1 -0
- package/dist/primitives/Link.js +29 -0
- package/dist/primitives/List.d.ts +41 -0
- package/dist/primitives/List.d.ts.map +1 -0
- package/dist/primitives/List.js +22 -0
- package/dist/primitives/Masonry.d.ts +14 -0
- package/dist/primitives/Masonry.d.ts.map +1 -0
- package/dist/primitives/Masonry.js +15 -0
- package/dist/primitives/Menu.d.ts +28 -0
- package/dist/primitives/Menu.d.ts.map +1 -0
- package/dist/primitives/Menu.js +54 -0
- package/dist/primitives/MobileStepper.d.ts +15 -0
- package/dist/primitives/MobileStepper.d.ts.map +1 -0
- package/dist/primitives/MobileStepper.js +8 -0
- package/dist/primitives/Modal.d.ts +18 -0
- package/dist/primitives/Modal.d.ts.map +1 -0
- package/dist/primitives/Modal.js +29 -0
- package/dist/primitives/NoSsr.d.ts +15 -0
- package/dist/primitives/NoSsr.d.ts.map +1 -0
- package/dist/primitives/NoSsr.js +19 -0
- package/dist/primitives/Paper.d.ts +22 -0
- package/dist/primitives/Paper.d.ts.map +1 -0
- package/dist/primitives/Paper.js +33 -0
- package/dist/primitives/Progress.d.ts +6 -2
- package/dist/primitives/Progress.d.ts.map +1 -1
- package/dist/primitives/Progress.js +8 -3
- package/dist/primitives/Snackbar.d.ts +23 -0
- package/dist/primitives/Snackbar.d.ts.map +1 -0
- package/dist/primitives/Snackbar.js +33 -0
- package/dist/primitives/SpeedDial.d.ts +26 -0
- package/dist/primitives/SpeedDial.d.ts.map +1 -0
- package/dist/primitives/SpeedDial.js +26 -0
- package/dist/primitives/Stack.d.ts +15 -0
- package/dist/primitives/Stack.d.ts.map +1 -0
- package/dist/primitives/Stack.js +45 -0
- package/dist/primitives/StarRating.d.ts +19 -1
- package/dist/primitives/StarRating.d.ts.map +1 -1
- package/dist/primitives/StarRating.js +36 -6
- package/dist/primitives/Stepper.d.ts +36 -0
- package/dist/primitives/Stepper.d.ts.map +1 -0
- package/dist/primitives/Stepper.js +53 -0
- package/dist/primitives/TablePagination.d.ts +16 -0
- package/dist/primitives/TablePagination.d.ts.map +1 -0
- package/dist/primitives/TablePagination.js +12 -0
- package/dist/primitives/TextField.d.ts +24 -0
- package/dist/primitives/TextField.d.ts.map +1 -0
- package/dist/primitives/TextField.js +19 -0
- package/dist/primitives/TextareaAutosize.d.ts +11 -0
- package/dist/primitives/TextareaAutosize.d.ts.map +1 -0
- package/dist/primitives/TextareaAutosize.js +26 -0
- package/dist/primitives/ToggleButton.d.ts +28 -0
- package/dist/primitives/ToggleButton.d.ts.map +1 -0
- package/dist/primitives/ToggleButton.js +56 -0
- package/dist/primitives/TransferList.d.ts +21 -0
- package/dist/primitives/TransferList.d.ts.map +1 -0
- package/dist/primitives/TransferList.js +40 -0
- package/dist/primitives/Typography.d.ts +23 -0
- package/dist/primitives/Typography.d.ts.map +1 -0
- package/dist/primitives/Typography.js +69 -0
- package/dist/primitives/transitions.d.ts +29 -0
- package/dist/primitives/transitions.d.ts.map +1 -0
- package/dist/primitives/transitions.js +52 -0
- package/package.json +30 -5
- package/skills/spatika-ui/SKILL.md +96 -0
- package/src/composites/AccentRule.tsx +12 -0
- package/src/composites/AvailabilityBadge.tsx +32 -0
- package/src/composites/Card.tsx +51 -1
- package/src/composites/CareerCard.tsx +111 -0
- package/src/composites/ChartDataGrid.test.tsx +57 -0
- package/src/composites/ChartDataGrid.tsx +196 -0
- package/src/composites/ContactLink.tsx +66 -0
- package/src/composites/CoverHero.test.tsx +38 -0
- package/src/composites/CoverHero.tsx +29 -22
- package/src/composites/DisplayHeading.tsx +27 -0
- package/src/composites/EntityMediaCard.test.tsx +58 -0
- package/src/composites/EntityMediaCard.tsx +31 -13
- package/src/composites/EventCalendar.tsx +928 -0
- package/src/composites/EventEditor.tsx +268 -0
- package/src/composites/EventTimeline.tsx +357 -0
- package/src/composites/FloatChip.tsx +63 -0
- package/src/composites/GradientText.tsx +31 -0
- package/src/composites/IconTile.tsx +33 -0
- package/src/composites/MapChart.test.tsx +39 -0
- package/src/composites/MapChart.tsx +130 -0
- package/src/composites/MetaChip.tsx +24 -0
- package/src/composites/PresenceDot.tsx +42 -0
- package/src/composites/ProfileHero.test.tsx +33 -0
- package/src/composites/ProfileHero.tsx +96 -79
- package/src/composites/ProjectCard.tsx +65 -0
- package/src/composites/ScatterWebGL.test.tsx +25 -0
- package/src/composites/ScatterWebGL.tsx +79 -0
- package/src/composites/SectionHeading.tsx +61 -0
- package/src/composites/SiteFooter.test.tsx +37 -0
- package/src/composites/SiteFooter.tsx +79 -0
- package/src/composites/SiteNav.test.tsx +46 -0
- package/src/composites/SiteNav.tsx +150 -0
- package/src/composites/StatCard.test.tsx +30 -0
- package/src/composites/StatCard.tsx +36 -1
- package/src/composites/Tag.tsx +50 -0
- package/src/composites/Wordmark.test.tsx +23 -0
- package/src/composites/Wordmark.tsx +46 -0
- package/src/composites/cartesian-charts.test.tsx +52 -0
- package/src/composites/cartesian-charts.tsx +1287 -0
- package/src/composites/chart-composition.test.tsx +53 -0
- package/src/composites/chart-composition.tsx +898 -0
- package/src/composites/chart-ui.tsx +328 -0
- package/src/composites/charts-3d.test.tsx +25 -0
- package/src/composites/charts-3d.tsx +318 -0
- package/src/composites/charts.test.tsx +254 -0
- package/src/composites/chrome.test.tsx +29 -0
- package/src/composites/flow-charts.test.tsx +79 -0
- package/src/composites/flow-charts.tsx +607 -0
- package/src/composites/marketing.test.tsx +192 -0
- package/src/composites/radial-charts.test.tsx +74 -0
- package/src/composites/radial-charts.tsx +617 -0
- package/src/composites/scheduler-ui.tsx +304 -0
- package/src/composites/scheduler.test.tsx +194 -0
- package/src/index.test.ts +22 -0
- package/src/index.ts +300 -5
- package/src/lib/chart-export.test.ts +20 -0
- package/src/lib/chart-export.ts +99 -0
- package/src/lib/charts-platform.test.ts +93 -0
- package/src/lib/charts.test.ts +132 -0
- package/src/lib/charts.ts +1021 -0
- package/src/lib/geo.test.ts +42 -0
- package/src/lib/geo.ts +138 -0
- package/src/lib/iso.test.ts +22 -0
- package/src/lib/iso.ts +102 -0
- package/src/lib/rrule.test.ts +53 -0
- package/src/lib/rrule.ts +281 -0
- package/src/lib/scheduler.test.ts +186 -0
- package/src/lib/scheduler.ts +688 -0
- package/src/lib/tokens.test.ts +2 -2
- package/src/lib/webgl-scatter.test.ts +36 -0
- package/src/lib/webgl-scatter.ts +230 -0
- package/src/primitives/Accordion.tsx +218 -63
- package/src/primitives/AppBar.tsx +39 -0
- package/src/primitives/Autocomplete.tsx +236 -0
- package/src/primitives/Avatar.tsx +52 -1
- package/src/primitives/Backdrop.tsx +48 -0
- package/src/primitives/BottomNavigation.tsx +102 -0
- package/src/primitives/Button.tsx +3 -0
- package/src/primitives/ButtonBase.tsx +34 -0
- package/src/primitives/ButtonGroup.tsx +90 -0
- package/src/primitives/CircularProgress.tsx +104 -0
- package/src/primitives/ClickAwayListener.tsx +46 -0
- package/src/primitives/Collapse.tsx +39 -0
- package/src/primitives/Container.tsx +40 -0
- package/src/primitives/Fab.tsx +62 -0
- package/src/primitives/FormControl.tsx +90 -0
- package/src/primitives/FormControlLabel.tsx +51 -0
- package/src/primitives/Grid.tsx +101 -0
- package/src/primitives/IconButton.tsx +59 -0
- package/src/primitives/ImageList.test.tsx +48 -0
- package/src/primitives/ImageList.tsx +112 -0
- package/src/primitives/InputAdornment.tsx +86 -0
- package/src/primitives/Link.tsx +48 -0
- package/src/primitives/List.tsx +121 -0
- package/src/primitives/Masonry.tsx +32 -0
- package/src/primitives/Menu.tsx +112 -0
- package/src/primitives/MobileStepper.tsx +64 -0
- package/src/primitives/Modal.tsx +70 -0
- package/src/primitives/NoSsr.tsx +28 -0
- package/src/primitives/Paper.tsx +55 -0
- package/src/primitives/Progress.tsx +25 -7
- package/src/primitives/Snackbar.tsx +83 -0
- package/src/primitives/SpeedDial.tsx +110 -0
- package/src/primitives/Stack.tsx +88 -0
- package/src/primitives/StarRating.tsx +87 -28
- package/src/primitives/Stepper.tsx +184 -0
- package/src/primitives/TablePagination.tsx +58 -0
- package/src/primitives/TextField.tsx +105 -0
- package/src/primitives/TextareaAutosize.tsx +49 -0
- package/src/primitives/ToggleButton.tsx +148 -0
- package/src/primitives/TransferList.tsx +110 -0
- package/src/primitives/Typography.tsx +90 -0
- package/src/primitives/mui-more.test.tsx +76 -0
- package/src/primitives/mui.test.tsx +134 -0
- package/src/primitives/transitions.tsx +120 -0
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
export type BoxProps = React.ComponentPropsWithoutRef<"div"> & {
|
|
3
|
+
component?: React.ElementType;
|
|
4
|
+
asChild?: boolean;
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* Generic layout primitive. Prefer Stack / Grid / Paper for structured layouts.
|
|
8
|
+
*/
|
|
9
|
+
declare const Box: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
|
|
10
|
+
component?: React.ElementType;
|
|
11
|
+
asChild?: boolean;
|
|
12
|
+
} & React.RefAttributes<HTMLDivElement>>;
|
|
13
|
+
export type GridProps = React.ComponentPropsWithoutRef<"div"> & {
|
|
14
|
+
container?: boolean;
|
|
15
|
+
item?: boolean;
|
|
16
|
+
spacing?: number;
|
|
17
|
+
columns?: 12;
|
|
18
|
+
xs?: number | "auto";
|
|
19
|
+
sm?: number | "auto";
|
|
20
|
+
md?: number | "auto";
|
|
21
|
+
lg?: number | "auto";
|
|
22
|
+
size?: number | "grow";
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* 12-column CSS grid. Use `container` on the parent and breakpoint spans on items.
|
|
26
|
+
*/
|
|
27
|
+
declare function Grid({ container, item: _item, spacing, columns: _columns, xs, sm, md, lg, size, className, ...props }: GridProps): React.JSX.Element;
|
|
28
|
+
declare namespace Grid {
|
|
29
|
+
var displayName: string;
|
|
30
|
+
}
|
|
31
|
+
export { Box, Grid };
|
|
32
|
+
//# sourceMappingURL=Grid.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Grid.d.ts","sourceRoot":"","sources":["../../src/primitives/Grid.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,MAAM,MAAM,QAAQ,GAAG,KAAK,CAAC,wBAAwB,CAAC,KAAK,CAAC,GAAG;IAC7D,SAAS,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF;;GAEG;AACH,QAAA,MAAM,GAAG;gBAPK,KAAK,CAAC,WAAW;cACnB,OAAO;wCAWlB,CAAC;AA6BF,MAAM,MAAM,SAAS,GAAG,KAAK,CAAC,wBAAwB,CAAC,KAAK,CAAC,GAAG;IAC9D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,EAAE,CAAC;IACb,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACxB,CAAC;AAOF;;GAEG;AACH,iBAAS,IAAI,CAAC,EACZ,SAAS,EACT,IAAI,EAAE,KAAK,EACX,OAAW,EACX,OAAO,EAAE,QAAa,EACtB,EAAE,EACF,EAAE,EACF,EAAE,EACF,EAAE,EACF,IAAI,EACJ,SAAS,EACT,GAAG,KAAK,EACT,EAAE,SAAS,qBAmBX;kBA/BQ,IAAI;;;AAkCb,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { Slot } from "../lib/slot";
|
|
4
|
+
import { cn } from "../lib/cn";
|
|
5
|
+
/**
|
|
6
|
+
* Generic layout primitive. Prefer Stack / Grid / Paper for structured layouts.
|
|
7
|
+
*/
|
|
8
|
+
const Box = React.forwardRef(({ className, component = "div", asChild = false, ...props }, ref) => {
|
|
9
|
+
const Comp = asChild ? Slot : component;
|
|
10
|
+
return _jsx(Comp, { ref: ref, "data-slot": "box", className: cn(className), ...props });
|
|
11
|
+
});
|
|
12
|
+
Box.displayName = "Box";
|
|
13
|
+
const gapClass = {
|
|
14
|
+
0: "gap-0",
|
|
15
|
+
1: "gap-1",
|
|
16
|
+
2: "gap-2",
|
|
17
|
+
3: "gap-3",
|
|
18
|
+
4: "gap-4",
|
|
19
|
+
5: "gap-5",
|
|
20
|
+
6: "gap-6",
|
|
21
|
+
8: "gap-8",
|
|
22
|
+
};
|
|
23
|
+
const spanClass = {
|
|
24
|
+
1: "col-span-1",
|
|
25
|
+
2: "col-span-2",
|
|
26
|
+
3: "col-span-3",
|
|
27
|
+
4: "col-span-4",
|
|
28
|
+
5: "col-span-5",
|
|
29
|
+
6: "col-span-6",
|
|
30
|
+
7: "col-span-7",
|
|
31
|
+
8: "col-span-8",
|
|
32
|
+
9: "col-span-9",
|
|
33
|
+
10: "col-span-10",
|
|
34
|
+
11: "col-span-11",
|
|
35
|
+
12: "col-span-12",
|
|
36
|
+
};
|
|
37
|
+
function spanFor(value) {
|
|
38
|
+
if (value == null || value === "auto" || value === "grow")
|
|
39
|
+
return undefined;
|
|
40
|
+
return spanClass[value] ?? "col-span-12";
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* 12-column CSS grid. Use `container` on the parent and breakpoint spans on items.
|
|
44
|
+
*/
|
|
45
|
+
function Grid({ container, item: _item, spacing = 2, columns: _columns = 12, xs, sm, md, lg, size, className, ...props }) {
|
|
46
|
+
const span = spanFor(typeof size === "number" ? size : xs);
|
|
47
|
+
return (_jsx("div", { "data-slot": "grid", "data-container": container ? "" : undefined, "data-item": _item || !container ? "" : undefined, className: cn(container && "grid grid-cols-12", container && (gapClass[spacing] ?? "gap-2"), !container && (span ?? (size === "grow" ? "col-span-12" : "col-span-12")), sm && typeof sm === "number" && spanClass[sm]?.replace("col-span", "sm:col-span"), md && typeof md === "number" && spanClass[md]?.replace("col-span", "md:col-span"), lg && typeof lg === "number" && spanClass[lg]?.replace("col-span", "lg:col-span"), className), ...props }));
|
|
48
|
+
}
|
|
49
|
+
Grid.displayName = "Grid";
|
|
50
|
+
export { Box, Grid };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { type VariantProps } from "class-variance-authority";
|
|
3
|
+
declare const iconButtonVariants: (props?: ({
|
|
4
|
+
variant?: "filled" | "outline" | "ghost" | "glass" | null | undefined;
|
|
5
|
+
size?: "touch" | "sm" | "lg" | "md" | null | undefined;
|
|
6
|
+
shape?: "circular" | "rounded" | null | undefined;
|
|
7
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
8
|
+
export type IconButtonProps = React.ComponentPropsWithoutRef<"button"> & VariantProps<typeof iconButtonVariants> & {
|
|
9
|
+
asChild?: boolean;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Compact icon-only control. Prefer {@link HeaderIconButton} inside app chrome.
|
|
13
|
+
*/
|
|
14
|
+
declare const IconButton: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref"> & VariantProps<(props?: ({
|
|
15
|
+
variant?: "filled" | "outline" | "ghost" | "glass" | null | undefined;
|
|
16
|
+
size?: "touch" | "sm" | "lg" | "md" | null | undefined;
|
|
17
|
+
shape?: "circular" | "rounded" | null | undefined;
|
|
18
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string> & {
|
|
19
|
+
asChild?: boolean;
|
|
20
|
+
} & React.RefAttributes<HTMLButtonElement>>;
|
|
21
|
+
export { IconButton, iconButtonVariants };
|
|
22
|
+
//# sourceMappingURL=IconButton.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IconButton.d.ts","sourceRoot":"","sources":["../../src/primitives/IconButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAIlE,QAAA,MAAM,kBAAkB;;;;8EA2BvB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,KAAK,CAAC,wBAAwB,CAAC,QAAQ,CAAC,GACpE,YAAY,CAAC,OAAO,kBAAkB,CAAC,GAAG;IACxC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEJ;;GAEG;AACH,QAAA,MAAM,UAAU;;;;;cANF,OAAO;2CAmBpB,CAAC;AAGF,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { cva } from "class-variance-authority";
|
|
4
|
+
import { Slot } from "../lib/slot";
|
|
5
|
+
import { cn } from "../lib/cn";
|
|
6
|
+
const iconButtonVariants = cva("inline-flex shrink-0 items-center justify-center outline-none transition-[color,background-color,border-color,transform] duration-150 focus-visible:ring-ring/50 focus-visible:ring-[3px] active:scale-[0.98] disabled:pointer-events-none disabled:opacity-50 [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", {
|
|
7
|
+
variants: {
|
|
8
|
+
variant: {
|
|
9
|
+
ghost: "text-muted-foreground hover:bg-muted/40 hover:text-foreground",
|
|
10
|
+
outline: "border border-border/60 bg-background/80 text-foreground hover:bg-muted/40",
|
|
11
|
+
glass: "glass border-border/50 text-foreground hover:border-primary/30 hover:text-primary",
|
|
12
|
+
filled: "bg-primary text-primary-foreground hover:bg-primary/90",
|
|
13
|
+
},
|
|
14
|
+
size: {
|
|
15
|
+
sm: "size-8 rounded-lg",
|
|
16
|
+
md: "size-10 rounded-xl",
|
|
17
|
+
lg: "size-12 rounded-xl",
|
|
18
|
+
touch: "size-11 rounded-xl",
|
|
19
|
+
},
|
|
20
|
+
shape: {
|
|
21
|
+
rounded: "",
|
|
22
|
+
circular: "rounded-full",
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
defaultVariants: {
|
|
26
|
+
variant: "ghost",
|
|
27
|
+
size: "md",
|
|
28
|
+
shape: "rounded",
|
|
29
|
+
},
|
|
30
|
+
});
|
|
31
|
+
/**
|
|
32
|
+
* Compact icon-only control. Prefer {@link HeaderIconButton} inside app chrome.
|
|
33
|
+
*/
|
|
34
|
+
const IconButton = React.forwardRef(({ className, variant, size, shape, asChild = false, ...props }, ref) => {
|
|
35
|
+
const Comp = asChild ? Slot : "button";
|
|
36
|
+
return (_jsx(Comp, { ref: ref, type: asChild ? undefined : "button", "data-slot": "icon-button", className: cn(iconButtonVariants({ variant, size, shape }), className), ...props }));
|
|
37
|
+
});
|
|
38
|
+
IconButton.displayName = "IconButton";
|
|
39
|
+
export { IconButton, iconButtonVariants };
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
export type ImageListProps = React.ComponentPropsWithoutRef<"ul"> & {
|
|
3
|
+
cols?: number;
|
|
4
|
+
gap?: number;
|
|
5
|
+
variant?: "standard" | "quilted" | "masonry";
|
|
6
|
+
rowHeight?: number;
|
|
7
|
+
};
|
|
8
|
+
declare function ImageList({ cols, gap, variant, rowHeight, className, style, children, ...props }: ImageListProps): React.JSX.Element;
|
|
9
|
+
declare namespace ImageList {
|
|
10
|
+
var displayName: string;
|
|
11
|
+
}
|
|
12
|
+
export type ImageListItemProps = React.ComponentPropsWithoutRef<"li"> & {
|
|
13
|
+
cols?: number;
|
|
14
|
+
rows?: number;
|
|
15
|
+
};
|
|
16
|
+
declare function ImageListItem({ cols, rows, className, style, ...props }: ImageListItemProps): React.JSX.Element;
|
|
17
|
+
declare namespace ImageListItem {
|
|
18
|
+
var displayName: string;
|
|
19
|
+
}
|
|
20
|
+
export type ImageListItemBarProps = React.ComponentPropsWithoutRef<"div"> & {
|
|
21
|
+
title?: React.ReactNode;
|
|
22
|
+
subtitle?: React.ReactNode;
|
|
23
|
+
actionIcon?: React.ReactNode;
|
|
24
|
+
position?: "bottom" | "top";
|
|
25
|
+
};
|
|
26
|
+
declare function ImageListItemBar({ title, subtitle, actionIcon, position, className, ...props }: ImageListItemBarProps): React.JSX.Element;
|
|
27
|
+
declare namespace ImageListItemBar {
|
|
28
|
+
var displayName: string;
|
|
29
|
+
}
|
|
30
|
+
export { ImageList, ImageListItem, ImageListItemBar };
|
|
31
|
+
//# sourceMappingURL=ImageList.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ImageList.d.ts","sourceRoot":"","sources":["../../src/primitives/ImageList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,MAAM,MAAM,cAAc,GAAG,KAAK,CAAC,wBAAwB,CAAC,IAAI,CAAC,GAAG;IAClE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,iBAAS,SAAS,CAAC,EACjB,IAAQ,EACR,GAAO,EACP,OAAoB,EACpB,SAAe,EACf,SAAS,EACT,KAAK,EACL,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,cAAc,qBA2BhB;kBApCQ,SAAS;;;AAuClB,MAAM,MAAM,kBAAkB,GAAG,KAAK,CAAC,wBAAwB,CAAC,IAAI,CAAC,GAAG;IACtE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,iBAAS,aAAa,CAAC,EAAE,IAAQ,EAAE,IAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,kBAAkB,qBAiB5F;kBAjBQ,aAAa;;;AAoBtB,MAAM,MAAM,qBAAqB,GAAG,KAAK,CAAC,wBAAwB,CAAC,KAAK,CAAC,GAAG;IAC1E,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,QAAQ,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC;CAC7B,CAAC;AAEF,iBAAS,gBAAgB,CAAC,EACxB,KAAK,EACL,QAAQ,EACR,UAAU,EACV,QAAmB,EACnB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,qBAAqB,qBAoBvB;kBA3BQ,gBAAgB;;;AA8BzB,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,gBAAgB,EAAE,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "../lib/cn";
|
|
3
|
+
function ImageList({ cols = 2, gap = 8, variant = "standard", rowHeight = 180, className, style, children, ...props }) {
|
|
4
|
+
return (_jsx("ul", { "data-slot": "image-list", "data-variant": variant, className: cn("m-0 w-full list-none p-0", variant === "masonry"
|
|
5
|
+
? "block [&>[data-slot=image-list-item]]:mb-2 [&>[data-slot=image-list-item]]:h-auto"
|
|
6
|
+
: "grid", className), style: {
|
|
7
|
+
gap,
|
|
8
|
+
...(variant === "masonry"
|
|
9
|
+
? { columnCount: cols, columnGap: gap }
|
|
10
|
+
: {
|
|
11
|
+
gridTemplateColumns: `repeat(${cols}, minmax(0, 1fr))`,
|
|
12
|
+
gridAutoRows: rowHeight,
|
|
13
|
+
}),
|
|
14
|
+
...style,
|
|
15
|
+
}, ...props, children: children }));
|
|
16
|
+
}
|
|
17
|
+
ImageList.displayName = "ImageList";
|
|
18
|
+
function ImageListItem({ cols = 1, rows = 1, className, style, ...props }) {
|
|
19
|
+
return (_jsx("li", { "data-slot": "image-list-item", className: cn("relative h-full min-h-0 overflow-hidden rounded-xl [&_img]:absolute [&_img]:inset-0 [&_img]:size-full [&_img]:object-cover", className), style: {
|
|
20
|
+
gridColumn: `span ${cols}`,
|
|
21
|
+
gridRow: `span ${rows}`,
|
|
22
|
+
breakInside: "avoid",
|
|
23
|
+
...style,
|
|
24
|
+
}, ...props }));
|
|
25
|
+
}
|
|
26
|
+
ImageListItem.displayName = "ImageListItem";
|
|
27
|
+
function ImageListItemBar({ title, subtitle, actionIcon, position = "bottom", className, ...props }) {
|
|
28
|
+
return (_jsxs("div", { "data-slot": "image-list-item-bar", className: cn("absolute inset-x-0 z-10 flex items-end justify-between gap-2 p-3 text-white", position === "top"
|
|
29
|
+
? "top-0 bg-gradient-to-b from-black/70 to-transparent"
|
|
30
|
+
: "bottom-0 bg-gradient-to-t from-black/70 to-transparent", className), ...props, children: [_jsxs("div", { className: "min-w-0", children: [_jsx("div", { className: "truncate text-sm font-bold", children: title }), subtitle ? _jsx("div", { className: "truncate text-xs opacity-80", children: subtitle }) : null] }), actionIcon] }));
|
|
31
|
+
}
|
|
32
|
+
ImageListItemBar.displayName = "ImageListItemBar";
|
|
33
|
+
export { ImageList, ImageListItem, ImageListItemBar };
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
export type InputAdornmentProps = React.ComponentPropsWithoutRef<"span"> & {
|
|
3
|
+
position?: "start" | "end";
|
|
4
|
+
};
|
|
5
|
+
declare function InputAdornment({ position, className, ...props }: InputAdornmentProps): React.JSX.Element;
|
|
6
|
+
declare namespace InputAdornment {
|
|
7
|
+
var displayName: string;
|
|
8
|
+
}
|
|
9
|
+
export type OutlinedInputProps = React.ComponentPropsWithoutRef<"input"> & {
|
|
10
|
+
startAdornment?: React.ReactNode;
|
|
11
|
+
endAdornment?: React.ReactNode;
|
|
12
|
+
error?: boolean;
|
|
13
|
+
fullWidth?: boolean;
|
|
14
|
+
};
|
|
15
|
+
declare const OutlinedInput: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>, "ref"> & {
|
|
16
|
+
startAdornment?: React.ReactNode;
|
|
17
|
+
endAdornment?: React.ReactNode;
|
|
18
|
+
error?: boolean;
|
|
19
|
+
fullWidth?: boolean;
|
|
20
|
+
} & React.RefAttributes<HTMLInputElement>>;
|
|
21
|
+
declare const FilledInput: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>, "ref"> & {
|
|
22
|
+
startAdornment?: React.ReactNode;
|
|
23
|
+
endAdornment?: React.ReactNode;
|
|
24
|
+
error?: boolean;
|
|
25
|
+
fullWidth?: boolean;
|
|
26
|
+
} & React.RefAttributes<HTMLInputElement>>;
|
|
27
|
+
export { InputAdornment, OutlinedInput, FilledInput };
|
|
28
|
+
//# sourceMappingURL=InputAdornment.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InputAdornment.d.ts","sourceRoot":"","sources":["../../src/primitives/InputAdornment.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,MAAM,MAAM,mBAAmB,GAAG,KAAK,CAAC,wBAAwB,CAAC,MAAM,CAAC,GAAG;IACzE,QAAQ,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC;CAC5B,CAAC;AAEF,iBAAS,cAAc,CAAC,EACtB,QAAkB,EAClB,SAAS,EACT,GAAG,KAAK,EACT,EAAE,mBAAmB,qBAarB;kBAjBQ,cAAc;;;AAoBvB,MAAM,MAAM,kBAAkB,GAAG,KAAK,CAAC,wBAAwB,CAAC,OAAO,CAAC,GAAG;IACzE,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACjC,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC/B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,QAAA,MAAM,aAAa;qBANA,KAAK,CAAC,SAAS;mBACjB,KAAK,CAAC,SAAS;YACtB,OAAO;gBACH,OAAO;0CAyBpB,CAAC;AAGF,QAAA,MAAM,WAAW;qBA/BE,KAAK,CAAC,SAAS;mBACjB,KAAK,CAAC,SAAS;YACtB,OAAO;gBACH,OAAO;0CAkDpB,CAAC;AAGF,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EAAE,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { cn } from "../lib/cn";
|
|
4
|
+
import { Input } from "./Input";
|
|
5
|
+
function InputAdornment({ position = "start", className, ...props }) {
|
|
6
|
+
return (_jsx("span", { "data-slot": "input-adornment", "data-position": position, className: cn("inline-flex shrink-0 items-center text-sm font-medium text-muted-foreground", position === "start" ? "pl-1 pr-1.5" : "pl-1.5 pr-1", className), ...props }));
|
|
7
|
+
}
|
|
8
|
+
InputAdornment.displayName = "InputAdornment";
|
|
9
|
+
const OutlinedInput = React.forwardRef(({ startAdornment, endAdornment, error, fullWidth, className, ...props }, ref) => (_jsxs("div", { "data-slot": "outlined-input", className: cn("flex h-9 items-center rounded-md border border-input bg-input-background px-2", "focus-within:border-ring focus-within:ring-ring/50 focus-within:ring-[3px]", error && "border-destructive", fullWidth && "w-full", className), children: [startAdornment, _jsx(Input, { ref: ref, "aria-invalid": error || undefined, className: "h-full flex-1 border-0 bg-transparent px-1 shadow-none focus-visible:ring-0", ...props }), endAdornment] })));
|
|
10
|
+
OutlinedInput.displayName = "OutlinedInput";
|
|
11
|
+
const FilledInput = React.forwardRef(({ startAdornment, endAdornment, error, fullWidth, className, ...props }, ref) => (_jsxs("div", { "data-slot": "filled-input", className: cn("flex h-9 items-center rounded-md border-b border-transparent bg-muted/50 px-2", "focus-within:border-primary focus-within:bg-muted/70", error && "border-destructive", fullWidth && "w-full", className), children: [startAdornment, _jsx(Input, { ref: ref, "aria-invalid": error || undefined, className: "h-full flex-1 border-0 bg-transparent px-1 shadow-none focus-visible:ring-0", ...props }), endAdornment] })));
|
|
12
|
+
FilledInput.displayName = "FilledInput";
|
|
13
|
+
export { InputAdornment, OutlinedInput, FilledInput };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { type VariantProps } from "class-variance-authority";
|
|
3
|
+
declare const linkVariants: (props?: ({
|
|
4
|
+
color?: "inherit" | "primary" | "muted" | null | undefined;
|
|
5
|
+
underline?: "none" | "always" | "hover" | null | undefined;
|
|
6
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
7
|
+
export type LinkProps = Omit<React.ComponentPropsWithoutRef<"a">, "color"> & VariantProps<typeof linkVariants> & {
|
|
8
|
+
asChild?: boolean;
|
|
9
|
+
};
|
|
10
|
+
declare const Link: React.ForwardRefExoticComponent<Omit<Omit<React.DetailedHTMLProps<React.AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>, "ref">, "color"> & VariantProps<(props?: ({
|
|
11
|
+
color?: "inherit" | "primary" | "muted" | null | undefined;
|
|
12
|
+
underline?: "none" | "always" | "hover" | null | undefined;
|
|
13
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string> & {
|
|
14
|
+
asChild?: boolean;
|
|
15
|
+
} & React.RefAttributes<HTMLAnchorElement>>;
|
|
16
|
+
export { Link, linkVariants };
|
|
17
|
+
//# sourceMappingURL=Link.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Link.d.ts","sourceRoot":"","sources":["../../src/primitives/Link.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAIlE,QAAA,MAAM,YAAY;;;8EAoBjB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,GACxE,YAAY,CAAC,OAAO,YAAY,CAAC,GAAG;IAClC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEJ,QAAA,MAAM,IAAI;;;;cAHI,OAAO;2CAepB,CAAC;AAGF,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { cva } from "class-variance-authority";
|
|
4
|
+
import { Slot } from "../lib/slot";
|
|
5
|
+
import { cn } from "../lib/cn";
|
|
6
|
+
const linkVariants = cva("inline font-medium underline-offset-4 outline-none transition-colors focus-visible:ring-ring/50 focus-visible:ring-[3px] rounded-sm", {
|
|
7
|
+
variants: {
|
|
8
|
+
color: {
|
|
9
|
+
primary: "text-primary hover:text-primary/80",
|
|
10
|
+
inherit: "text-inherit hover:text-primary",
|
|
11
|
+
muted: "text-muted-foreground hover:text-foreground",
|
|
12
|
+
},
|
|
13
|
+
underline: {
|
|
14
|
+
always: "underline",
|
|
15
|
+
hover: "hover:underline",
|
|
16
|
+
none: "no-underline",
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
defaultVariants: {
|
|
20
|
+
color: "primary",
|
|
21
|
+
underline: "hover",
|
|
22
|
+
},
|
|
23
|
+
});
|
|
24
|
+
const Link = React.forwardRef(({ className, color, underline, asChild = false, ...props }, ref) => {
|
|
25
|
+
const Comp = asChild ? Slot : "a";
|
|
26
|
+
return (_jsx(Comp, { ref: ref, "data-slot": "link", className: cn(linkVariants({ color, underline }), className), ...props }));
|
|
27
|
+
});
|
|
28
|
+
Link.displayName = "Link";
|
|
29
|
+
export { Link, linkVariants };
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
export type ListProps = React.ComponentPropsWithoutRef<"ul"> & {
|
|
3
|
+
dense?: boolean;
|
|
4
|
+
disablePadding?: boolean;
|
|
5
|
+
};
|
|
6
|
+
declare const List: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLUListElement>, HTMLUListElement>, "ref"> & {
|
|
7
|
+
dense?: boolean;
|
|
8
|
+
disablePadding?: boolean;
|
|
9
|
+
} & React.RefAttributes<HTMLUListElement>>;
|
|
10
|
+
export type ListItemProps = React.ComponentPropsWithoutRef<"li"> & {
|
|
11
|
+
disablePadding?: boolean;
|
|
12
|
+
disableGutters?: boolean;
|
|
13
|
+
};
|
|
14
|
+
declare const ListItem: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.LiHTMLAttributes<HTMLLIElement>, HTMLLIElement>, "ref"> & {
|
|
15
|
+
disablePadding?: boolean;
|
|
16
|
+
disableGutters?: boolean;
|
|
17
|
+
} & React.RefAttributes<HTMLLIElement>>;
|
|
18
|
+
export type ListItemButtonProps = React.ComponentPropsWithoutRef<"button"> & {
|
|
19
|
+
selected?: boolean;
|
|
20
|
+
};
|
|
21
|
+
declare const ListItemButton: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref"> & {
|
|
22
|
+
selected?: boolean;
|
|
23
|
+
} & React.RefAttributes<HTMLButtonElement>>;
|
|
24
|
+
declare function ListItemIcon({ className, ...props }: React.ComponentPropsWithoutRef<"span">): React.JSX.Element;
|
|
25
|
+
declare namespace ListItemIcon {
|
|
26
|
+
var displayName: string;
|
|
27
|
+
}
|
|
28
|
+
export type ListItemTextProps = React.ComponentPropsWithoutRef<"div"> & {
|
|
29
|
+
primary?: React.ReactNode;
|
|
30
|
+
secondary?: React.ReactNode;
|
|
31
|
+
};
|
|
32
|
+
declare function ListItemText({ className, primary, secondary, children, ...props }: ListItemTextProps): React.JSX.Element;
|
|
33
|
+
declare namespace ListItemText {
|
|
34
|
+
var displayName: string;
|
|
35
|
+
}
|
|
36
|
+
declare function ListSubheader({ className, ...props }: React.ComponentPropsWithoutRef<"li">): React.JSX.Element;
|
|
37
|
+
declare namespace ListSubheader {
|
|
38
|
+
var displayName: string;
|
|
39
|
+
}
|
|
40
|
+
export { List, ListItem, ListItemButton, ListItemIcon, ListItemText, ListSubheader };
|
|
41
|
+
//# sourceMappingURL=List.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"List.d.ts","sourceRoot":"","sources":["../../src/primitives/List.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,MAAM,MAAM,SAAS,GAAG,KAAK,CAAC,wBAAwB,CAAC,IAAI,CAAC,GAAG;IAC7D,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,QAAA,MAAM,IAAI;YAJA,OAAO;qBACE,OAAO;0CAiBzB,CAAC;AAGF,MAAM,MAAM,aAAa,GAAG,KAAK,CAAC,wBAAwB,CAAC,IAAI,CAAC,GAAG;IACjE,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,QAAA,MAAM,QAAQ;qBAJK,OAAO;qBACP,OAAO;uCAgBzB,CAAC;AAGF,MAAM,MAAM,mBAAmB,GAAG,KAAK,CAAC,wBAAwB,CAAC,QAAQ,CAAC,GAAG;IAC3E,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,QAAA,MAAM,cAAc;eAHP,OAAO;2CAmBnB,CAAC;AAGF,iBAAS,YAAY,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,wBAAwB,CAAC,MAAM,CAAC,qBAWpF;kBAXQ,YAAY;;;AAcrB,MAAM,MAAM,iBAAiB,GAAG,KAAK,CAAC,wBAAwB,CAAC,KAAK,CAAC,GAAG;IACtE,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC7B,CAAC;AAEF,iBAAS,YAAY,CAAC,EACpB,SAAS,EACT,OAAO,EACP,SAAS,EACT,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,iBAAiB,qBASnB;kBAfQ,YAAY;;;AAkBrB,iBAAS,aAAa,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,wBAAwB,CAAC,IAAI,CAAC,qBAWnF;kBAXQ,aAAa;;;AActB,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { cn } from "../lib/cn";
|
|
4
|
+
const List = React.forwardRef(({ className, dense, disablePadding, ...props }, ref) => (_jsx("ul", { ref: ref, "data-slot": "list", "data-dense": dense ? "" : undefined, className: cn("m-0 list-none", disablePadding ? "p-0" : dense ? "py-1" : "py-2", className), ...props })));
|
|
5
|
+
List.displayName = "List";
|
|
6
|
+
const ListItem = React.forwardRef(({ className, disablePadding, disableGutters, ...props }, ref) => (_jsx("li", { ref: ref, "data-slot": "list-item", className: cn("flex items-center gap-3", disablePadding ? "p-0" : disableGutters ? "py-2" : "px-4 py-2.5", className), ...props })));
|
|
7
|
+
ListItem.displayName = "ListItem";
|
|
8
|
+
const ListItemButton = React.forwardRef(({ className, selected, ...props }, ref) => (_jsx("button", { ref: ref, type: "button", "data-slot": "list-item-button", "data-selected": selected ? "" : undefined, className: cn("flex w-full items-center gap-3 px-4 py-2.5 text-left text-sm font-medium outline-none transition-colors", "hover:bg-muted/40 focus-visible:ring-ring/50 focus-visible:ring-[3px]", selected && "bg-primary/10 text-primary", className), ...props })));
|
|
9
|
+
ListItemButton.displayName = "ListItemButton";
|
|
10
|
+
function ListItemIcon({ className, ...props }) {
|
|
11
|
+
return (_jsx("span", { "data-slot": "list-item-icon", className: cn("inline-flex size-8 shrink-0 items-center justify-center text-muted-foreground [&_svg]:size-4", className), ...props }));
|
|
12
|
+
}
|
|
13
|
+
ListItemIcon.displayName = "ListItemIcon";
|
|
14
|
+
function ListItemText({ className, primary, secondary, children, ...props }) {
|
|
15
|
+
return (_jsxs("div", { "data-slot": "list-item-text", className: cn("min-w-0 flex-1", className), ...props, children: [_jsx("div", { className: "truncate text-sm font-semibold", children: primary ?? children }), secondary ? (_jsx("div", { className: "truncate text-xs font-medium text-muted-foreground", children: secondary })) : null] }));
|
|
16
|
+
}
|
|
17
|
+
ListItemText.displayName = "ListItemText";
|
|
18
|
+
function ListSubheader({ className, ...props }) {
|
|
19
|
+
return (_jsx("li", { "data-slot": "list-subheader", className: cn("px-4 py-2 text-[10px] font-black uppercase tracking-widest text-muted-foreground", className), ...props }));
|
|
20
|
+
}
|
|
21
|
+
ListSubheader.displayName = "ListSubheader";
|
|
22
|
+
export { List, ListItem, ListItemButton, ListItemIcon, ListItemText, ListSubheader };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
export type MasonryProps = React.ComponentPropsWithoutRef<"div"> & {
|
|
3
|
+
columns?: number;
|
|
4
|
+
spacing?: number;
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* CSS multi-column masonry. Children should be block-level items.
|
|
8
|
+
*/
|
|
9
|
+
declare function Masonry({ columns, spacing, className, style, children, ...props }: MasonryProps): React.JSX.Element;
|
|
10
|
+
declare namespace Masonry {
|
|
11
|
+
var displayName: string;
|
|
12
|
+
}
|
|
13
|
+
export { Masonry };
|
|
14
|
+
//# sourceMappingURL=Masonry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Masonry.d.ts","sourceRoot":"","sources":["../../src/primitives/Masonry.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,MAAM,MAAM,YAAY,GAAG,KAAK,CAAC,wBAAwB,CAAC,KAAK,CAAC,GAAG;IACjE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;;GAEG;AACH,iBAAS,OAAO,CAAC,EAAE,OAAW,EAAE,OAAY,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,YAAY,qBAiBjG;kBAjBQ,OAAO;;;AAoBhB,OAAO,EAAE,OAAO,EAAE,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { cn } from "../lib/cn";
|
|
4
|
+
/**
|
|
5
|
+
* CSS multi-column masonry. Children should be block-level items.
|
|
6
|
+
*/
|
|
7
|
+
function Masonry({ columns = 3, spacing = 16, className, style, children, ...props }) {
|
|
8
|
+
return (_jsx("div", { "data-slot": "masonry", className: cn(className), style: {
|
|
9
|
+
columnCount: columns,
|
|
10
|
+
columnGap: spacing,
|
|
11
|
+
...style,
|
|
12
|
+
}, ...props, children: React.Children.map(children, (child) => (_jsx("div", { className: "mb-4 break-inside-avoid", children: child }))) }));
|
|
13
|
+
}
|
|
14
|
+
Masonry.displayName = "Masonry";
|
|
15
|
+
export { Masonry };
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
export type MenuProps = {
|
|
3
|
+
open?: boolean;
|
|
4
|
+
defaultOpen?: boolean;
|
|
5
|
+
onOpenChange?: (open: boolean) => void;
|
|
6
|
+
/** Anchor element — typically the button that opened the menu. */
|
|
7
|
+
anchorEl?: HTMLElement | null;
|
|
8
|
+
children?: React.ReactNode;
|
|
9
|
+
};
|
|
10
|
+
declare function Menu({ open: openProp, defaultOpen, onOpenChange, anchorEl, children, }: MenuProps): React.JSX.Element | null;
|
|
11
|
+
declare namespace Menu {
|
|
12
|
+
var displayName: string;
|
|
13
|
+
}
|
|
14
|
+
declare function MenuList({ className, ...props }: React.ComponentPropsWithoutRef<"div">): React.JSX.Element;
|
|
15
|
+
declare namespace MenuList {
|
|
16
|
+
var displayName: string;
|
|
17
|
+
}
|
|
18
|
+
export type MenuItemProps = React.ComponentPropsWithoutRef<"button"> & {
|
|
19
|
+
selected?: boolean;
|
|
20
|
+
dense?: boolean;
|
|
21
|
+
};
|
|
22
|
+
declare function MenuItem({ className, selected, dense, ...props }: MenuItemProps): React.JSX.Element;
|
|
23
|
+
declare namespace MenuItem {
|
|
24
|
+
var displayName: string;
|
|
25
|
+
}
|
|
26
|
+
declare const MenuAnchor: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
|
|
27
|
+
export { Menu, MenuList, MenuItem, MenuAnchor };
|
|
28
|
+
//# sourceMappingURL=Menu.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Menu.d.ts","sourceRoot":"","sources":["../../src/primitives/Menu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAS/B,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,kEAAkE;IAClE,QAAQ,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC5B,CAAC;AAEF,iBAAS,IAAI,CAAC,EACZ,IAAI,EAAE,QAAQ,EACd,WAAW,EACX,YAAY,EACZ,QAAQ,EACR,QAAQ,GACT,EAAE,SAAS,4BAiDX;kBAvDQ,IAAI;;;AA0Db,iBAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,CAAC,wBAAwB,CAAC,KAAK,CAAC,qBAE/E;kBAFQ,QAAQ;;;AAKjB,MAAM,MAAM,aAAa,GAAG,KAAK,CAAC,wBAAwB,CAAC,QAAQ,CAAC,GAAG;IACrE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,iBAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,aAAa,qBAiBxE;kBAjBQ,QAAQ;;;AAoBjB,QAAA,MAAM,UAAU,kLAEf,CAAC;AAGF,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { Portal } from "../lib/portal";
|
|
4
|
+
import { useControllableState } from "../lib/use-controllable-state";
|
|
5
|
+
import { useDismissable } from "../lib/use-dismissable";
|
|
6
|
+
import { useFloatingPosition } from "../lib/use-floating-position";
|
|
7
|
+
import { cn } from "../lib/cn";
|
|
8
|
+
import { OVERLAY_Z_INDEX } from "../lib/overlay-stack";
|
|
9
|
+
function Menu({ open: openProp, defaultOpen, onOpenChange, anchorEl, children, }) {
|
|
10
|
+
const [open = false, setOpen] = useControllableState({
|
|
11
|
+
prop: openProp,
|
|
12
|
+
defaultProp: defaultOpen ?? false,
|
|
13
|
+
onChange: onOpenChange,
|
|
14
|
+
});
|
|
15
|
+
const triggerRef = React.useRef(null);
|
|
16
|
+
const contentRef = React.useRef(null);
|
|
17
|
+
React.useEffect(() => {
|
|
18
|
+
triggerRef.current = anchorEl ?? null;
|
|
19
|
+
}, [anchorEl]);
|
|
20
|
+
const position = useFloatingPosition({
|
|
21
|
+
open,
|
|
22
|
+
triggerRef,
|
|
23
|
+
contentRef,
|
|
24
|
+
side: "bottom",
|
|
25
|
+
align: "start",
|
|
26
|
+
sideOffset: 4,
|
|
27
|
+
});
|
|
28
|
+
useDismissable({
|
|
29
|
+
enabled: open,
|
|
30
|
+
onDismiss: () => setOpen(false),
|
|
31
|
+
refs: [triggerRef, contentRef],
|
|
32
|
+
});
|
|
33
|
+
if (!open)
|
|
34
|
+
return null;
|
|
35
|
+
return (_jsx(Portal, { children: _jsx("div", { ref: contentRef, role: "menu", "data-slot": "menu", className: "glass-menu z-[10000] min-w-40 overflow-hidden rounded-xl border border-border/50 p-1 shadow-xl outline-none", style: {
|
|
36
|
+
position: "fixed",
|
|
37
|
+
top: position?.top ?? 0,
|
|
38
|
+
left: position?.left ?? 0,
|
|
39
|
+
zIndex: OVERLAY_Z_INDEX.menu,
|
|
40
|
+
opacity: position ? 1 : 0,
|
|
41
|
+
}, children: children }) }));
|
|
42
|
+
}
|
|
43
|
+
Menu.displayName = "Menu";
|
|
44
|
+
function MenuList({ className, ...props }) {
|
|
45
|
+
return _jsx("div", { role: "menu", "data-slot": "menu-list", className: cn("flex flex-col p-1", className), ...props });
|
|
46
|
+
}
|
|
47
|
+
MenuList.displayName = "MenuList";
|
|
48
|
+
function MenuItem({ className, selected, dense, ...props }) {
|
|
49
|
+
return (_jsx("button", { type: "button", role: "menuitem", "data-slot": "menu-item", "data-selected": selected ? "" : undefined, className: cn("flex w-full items-center gap-2 rounded-lg px-3 text-left text-sm font-medium outline-none", dense ? "py-1.5" : "py-2", selected ? "bg-primary/10 text-primary" : "hover:bg-muted/50", "disabled:pointer-events-none disabled:opacity-40", className), ...props }));
|
|
50
|
+
}
|
|
51
|
+
MenuItem.displayName = "MenuItem";
|
|
52
|
+
const MenuAnchor = React.forwardRef((props, ref) => _jsx("button", { ref: ref, type: "button", "data-slot": "menu-anchor", ...props }));
|
|
53
|
+
MenuAnchor.displayName = "MenuAnchor";
|
|
54
|
+
export { Menu, MenuList, MenuItem, MenuAnchor };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
export type MobileStepperProps = React.ComponentPropsWithoutRef<"div"> & {
|
|
3
|
+
steps: number;
|
|
4
|
+
activeStep?: number;
|
|
5
|
+
position?: "static" | "bottom" | "top";
|
|
6
|
+
variant?: "dots" | "text" | "progress";
|
|
7
|
+
nextButton?: React.ReactNode;
|
|
8
|
+
backButton?: React.ReactNode;
|
|
9
|
+
};
|
|
10
|
+
declare function MobileStepper({ steps, activeStep, position, variant, nextButton, backButton, className, ...props }: MobileStepperProps): React.JSX.Element;
|
|
11
|
+
declare namespace MobileStepper {
|
|
12
|
+
var displayName: string;
|
|
13
|
+
}
|
|
14
|
+
export { MobileStepper };
|
|
15
|
+
//# sourceMappingURL=MobileStepper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MobileStepper.d.ts","sourceRoot":"","sources":["../../src/primitives/MobileStepper.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,MAAM,MAAM,kBAAkB,GAAG,KAAK,CAAC,wBAAwB,CAAC,KAAK,CAAC,GAAG;IACvE,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC;IACvC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;IACvC,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC7B,UAAU,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CAC9B,CAAC;AAEF,iBAAS,aAAa,CAAC,EACrB,KAAK,EACL,UAAc,EACd,QAAmB,EACnB,OAAgB,EAChB,UAAU,EACV,UAAU,EACV,SAAS,EACT,GAAG,KAAK,EACT,EAAE,kBAAkB,qBAsCpB;kBA/CQ,aAAa;;;AAkDtB,OAAO,EAAE,aAAa,EAAE,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { cn } from "../lib/cn";
|
|
3
|
+
import { LinearProgress } from "./Progress";
|
|
4
|
+
function MobileStepper({ steps, activeStep = 0, position = "static", variant = "dots", nextButton, backButton, className, ...props }) {
|
|
5
|
+
return (_jsxs("div", { "data-slot": "mobile-stepper", "data-position": position, className: cn("flex w-full items-center gap-3 rounded-xl border border-border/40 bg-card/40 px-3 py-2", position === "bottom" && "sticky bottom-0", position === "top" && "sticky top-0", className), ...props, children: [backButton, _jsx("div", { className: "min-w-0 flex-1", children: variant === "text" ? (_jsxs("p", { className: "text-center text-xs font-bold text-muted-foreground", children: [activeStep + 1, " / ", steps] })) : variant === "progress" ? (_jsx(LinearProgress, { value: ((activeStep + 1) / steps) * 100 })) : (_jsx("div", { className: "flex items-center justify-center gap-1.5", children: Array.from({ length: steps }, (_, i) => (_jsx("span", { className: cn("size-1.5 rounded-full", i === activeStep ? "bg-primary" : "bg-border") }, i))) })) }), nextButton] }));
|
|
6
|
+
}
|
|
7
|
+
MobileStepper.displayName = "MobileStepper";
|
|
8
|
+
export { MobileStepper };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
export type ModalProps = Omit<React.ComponentPropsWithoutRef<"div">, "children"> & {
|
|
3
|
+
open?: boolean;
|
|
4
|
+
onClose?: () => void;
|
|
5
|
+
children?: React.ReactNode;
|
|
6
|
+
keepMounted?: boolean;
|
|
7
|
+
disableEscapeKeyDown?: boolean;
|
|
8
|
+
hideBackdrop?: boolean;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Low-level modal. Prefer Dialog for titled confirmations.
|
|
12
|
+
*/
|
|
13
|
+
declare function Modal({ open, onClose, children, keepMounted, disableEscapeKeyDown, hideBackdrop, className, style, ...props }: ModalProps): React.JSX.Element | null;
|
|
14
|
+
declare namespace Modal {
|
|
15
|
+
var displayName: string;
|
|
16
|
+
}
|
|
17
|
+
export { Modal };
|
|
18
|
+
//# sourceMappingURL=Modal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["../../src/primitives/Modal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAO/B,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,GAAG;IACjF,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF;;GAEG;AACH,iBAAS,KAAK,CAAC,EACb,IAAY,EACZ,OAAO,EACP,QAAQ,EACR,WAAW,EACX,oBAAoB,EACpB,YAAY,EACZ,SAAS,EACT,KAAK,EACL,GAAG,KAAK,EACT,EAAE,UAAU,4BAqCZ;kBA/CQ,KAAK;;;AAkDd,OAAO,EAAE,KAAK,EAAE,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { Portal } from "../lib/portal";
|
|
4
|
+
import { useFocusTrap } from "../lib/use-focus-trap";
|
|
5
|
+
import { cn } from "../lib/cn";
|
|
6
|
+
import { OVERLAY_Z_INDEX, fixedLayerStyle } from "../lib/overlay-stack";
|
|
7
|
+
import { Backdrop } from "./Backdrop";
|
|
8
|
+
/**
|
|
9
|
+
* Low-level modal. Prefer Dialog for titled confirmations.
|
|
10
|
+
*/
|
|
11
|
+
function Modal({ open = false, onClose, children, keepMounted, disableEscapeKeyDown, hideBackdrop, className, style, ...props }) {
|
|
12
|
+
const contentRef = React.useRef(null);
|
|
13
|
+
useFocusTrap(contentRef, open);
|
|
14
|
+
React.useEffect(() => {
|
|
15
|
+
if (!open || disableEscapeKeyDown || !onClose)
|
|
16
|
+
return;
|
|
17
|
+
const onKey = (event) => {
|
|
18
|
+
if (event.key === "Escape")
|
|
19
|
+
onClose();
|
|
20
|
+
};
|
|
21
|
+
document.addEventListener("keydown", onKey);
|
|
22
|
+
return () => document.removeEventListener("keydown", onKey);
|
|
23
|
+
}, [open, disableEscapeKeyDown, onClose]);
|
|
24
|
+
if (!open && !keepMounted)
|
|
25
|
+
return null;
|
|
26
|
+
return (_jsx(Portal, { children: _jsxs("div", { "data-slot": "modal", hidden: !open, className: cn("fixed inset-0 flex items-center justify-center p-4", className), style: fixedLayerStyle(OVERLAY_Z_INDEX.modal, style), ...props, children: [hideBackdrop ? null : (_jsx(Backdrop, { open: open, contained: true, className: "absolute inset-0", onClick: onClose })), _jsx("div", { ref: contentRef, role: "presentation", className: "relative z-10 outline-none", children: children })] }) }));
|
|
27
|
+
}
|
|
28
|
+
Modal.displayName = "Modal";
|
|
29
|
+
export { Modal };
|