Update import/exports to be more tree-shake friendly

This commit is contained in:
2026-02-14 21:12:16 -05:00
parent 61cceb41ba
commit da0db483aa
29 changed files with 260 additions and 357 deletions

View File

@@ -1,26 +0,0 @@
import Button from "./button/Button";
import DangerButton from "./button/DangerButton";
import DarkButton from "./button/DarkButton";
import InfoButton from "./button/InfoButton";
import LightButton from "./button/LightButton";
import MoltenButton from "./button/MoltenButton";
import PrimaryButton from "./button/PrimaryButton";
import SecondaryButton from "./button/SecondaryButton";
import SuccessButton from "./button/SuccessButton";
import TertiaryButton from "./button/TertiaryButton";
import WarningButton from "./button/WarningButton";
export {
Button,
DangerButton,
DarkButton,
InfoButton,
LightButton,
MoltenButton,
PrimaryButton,
SecondaryButton,
SuccessButton,
TertiaryButton,
WarningButton
};

View File

@@ -0,0 +1,12 @@
export { default as Button } from "./Button";
export { default as DangerButton } from "./DangerButton";
export { default as DarkButton } from "./DarkButton";
export { default as InfoButton } from "./InfoButton";
export { default as LightButton } from "./LightButton";
export { default as MoltenButton } from "./MoltenButton";
export { default as PrimaryButton } from "./PrimaryButton";
export { default as SecondaryButton } from "./SecondaryButton";
export { default as SuccessButton } from "./SuccessButton";
export { default as TertiaryButton } from "./TertiaryButton";
export { default as WarningButton } from "./WarningButton";

View File

@@ -1,26 +0,0 @@
import DangerCheckbox from "./input/checkbox/DangerCheckbox";
import DarkCheckbox from "./input/checkbox/DarkCheckbox";
import InfoCheckbox from "./input/checkbox/InfoCheckbox";
import LightCheckbox from "./input/checkbox/LightCheckbox";
import MattrixwvCheckbox from "./input/checkbox/MattrixwvCheckbox";
import MoltenCheckbox from "./input/checkbox/MoltenCheckbox";
import PrimaryCheckbox from "./input/checkbox/PrimaryCheckbox";
import SecondaryCheckbox from "./input/checkbox/SecondaryCheckbox";
import SuccessCheckbox from "./input/checkbox/SuccessCheckbox";
import TertiaryCheckbox from "./input/checkbox/TertiaryCheckbox";
import WarningCheckbox from "./input/checkbox/WarningCheckbox";
export {
DangerCheckbox,
DarkCheckbox,
InfoCheckbox,
LightCheckbox,
MattrixwvCheckbox,
MoltenCheckbox,
PrimaryCheckbox,
SecondaryCheckbox,
SuccessCheckbox,
TertiaryCheckbox,
WarningCheckbox
};

View File

@@ -1,26 +0,0 @@
import DateInput from "./input/date/DateInput";
import DateTimeInput from "./input/date/DateTimeInput";
import TimeInput from "./input/date/TimeInput";
import DragAndDropFileInput from "./input/file/DragAndDropFileInput";
import FileInput from "./input/file/FileInput";
import NumberInput from "./input/number/NumberInput";
import OptionInput from "./input/text/OptionInput";
import SelectInput from "./input/text/SelectInput";
import TextArea from "./input/text/TextArea";
import TextInput from "./input/text/TextInput";
export {
DateInput,
DateTimeInput,
DragAndDropFileInput,
FileInput,
NumberInput,
//NumberSlider,
OptionInput,
SelectInput,
TextArea,
TextInput,
TimeInput
};

View File

@@ -0,0 +1,53 @@
//? Checkboxes
export { default as DangerCheckbox } from "./checkbox/DangerCheckbox";
export { default as DarkCheckbox } from "./checkbox/DarkCheckbox";
export { default as InfoCheckbox } from "./checkbox/InfoCheckbox";
export { default as LightCheckbox } from "./checkbox/LightCheckbox";
export { default as MattrixwvCheckbox } from "./checkbox/MattrixwvCheckbox";
export { default as MoltenCheckbox } from "./checkbox/MoltenCheckbox";
export { default as PrimaryCheckbox } from "./checkbox/PrimaryCheckbox";
export { default as SecondaryCheckbox } from "./checkbox/SecondaryCheckbox";
export { default as SuccessCheckbox } from "./checkbox/SuccessCheckbox";
export { default as TertiaryCheckbox } from "./checkbox/TertiaryCheckbox";
export { default as WarningCheckbox } from "./checkbox/WarningCheckbox";
//? Radio Buttons
export { default as DangerRadioButton } from "./radio/DangerRadioButton";
export { default as DarkRadioButton } from "./radio/DarkRadioButton";
export { default as InfoRadioButton } from "./radio/InfoRadioButton";
export { default as LightRadioButton } from "./radio/LightRadioButton";
export { default as MoltenRadioButton } from "./radio/MoltenRadioButton";
export { default as PrimaryRadioButton } from "./radio/PrimaryRadioButton";
export { default as RadioButton } from "./radio/RadioButton";
export { default as RadioList } from "./radio/RadioList";
export { default as SecondaryRadioButton } from "./radio/SecondaryRadioButton";
export { default as SuccessRadioButton } from "./radio/SuccessRadioButton";
export { default as TertiaryRadioButton } from "./radio/TertiaryRadioButton";
export { default as WarningRadioButton } from "./radio/WarningRadioButton";
//? Switches
export { default as ButtonSwitch } from "./switch/ButtonSwitch";
export { default as DangerSwitch } from "./switch/DangerSwitch";
export { default as DarkSwitch } from "./switch/DarkSwitch";
export { default as LightSwitch } from "./switch/LightSwitch";
export { default as MattrixwvSwitch } from "./switch/MattrixwvSwitch";
export { default as PrimarySwitch } from "./switch/PrimarySwitch";
export { default as SecondarySwitch } from "./switch/SecondarySwitch";
export { default as SuccessDangerSwitch } from "./switch/SuccessDangerSwitch";
export { default as SuccessSwitch } from "./switch/SuccessSwitch";
export { default as TertiarySwitch } from "./switch/TertiarySwitch";
export { default as WarningSwitch } from "./switch/WarningSwitch";
//? Other imports
export { default as DateInput } from "./date/DateInput";
export { default as DateTimeInput } from "./date/DateTimeInput";
export { default as TimeInput } from "./date/TimeInput";
export { default as DragAndDropFileInput } from "./file/DragAndDropFileInput";
export { default as FileInput } from "./file/FileInput";
export { default as NumberInput } from "./number/NumberInput";
export { default as OptionInput } from "./text/OptionInput";
export { default as SelectInput } from "./text/SelectInput";
export { default as TextArea } from "./text/TextArea";
export { default as TextInput } from "./text/TextInput";

View File

@@ -1,90 +0,0 @@
import CenterGrowingBars from "./loading/bar/CenterGrowingBars";
import CircleBars from "./loading/bar/CircleBars";
import FadingBars from "./loading/bar/FadingBars";
import FadingGrowingBars from "./loading/bar/FadingGrowingBars";
import GrowingBars from "./loading/bar/GrowingBars";
import PulsingBlocks from "./loading/block/PulsingBlocks";
import SlidingBlocks2 from "./loading/block/SlidingBlocks2";
import SlidingBlocks3 from "./loading/block/SlidingBlocks3";
import WaveBlocks from "./loading/block/WaveBlocks";
import BouncingDots from "./loading/dot/BouncingDots";
import CircleCenterDots from "./loading/dot/CircleCenterDots";
import CircleFadingDots from "./loading/dot/CircleFadingDots";
import CirclePulsingDots from "./loading/dot/CirclePulsingDots";
import CircleRotatingDots from "./loading/dot/CircleRotatingDots";
import CircleShrinkingDots from "./loading/dot/CircleShrinkingDots";
import CircleSpinningDot from "./loading/dot/CircleSpinningDot";
import CyclingDots from "./loading/dot/CyclingDots";
import FadingDots from "./loading/dot/FadingDots";
import PulsingDots from "./loading/dot/PulsingDots";
import RotatingDots from "./loading/dot/RotatingDots";
import SwellingDots from "./loading/dot/SwellingDots";
import DoubleDrop from "./loading/drop/DoubleDrop";
import DoubleWaveDrop from "./loading/drop/DoubleWaveDrop";
import Drop from "./loading/drop/Drop";
import QuickDrop from "./loading/drop/QuickDrop";
import QuickWaveDrop from "./loading/drop/QuickWaveDrop";
import TripleDrop from "./loading/drop/TripleDrop";
import TripleWaveDrop from "./loading/drop/TripleWaveDrop";
import WaveDrop from "./loading/drop/WaveDrop";
import HalfSpinner from "./loading/spinner/HalfSpinner";
import QuarterSpinner from "./loading/spinner/QuarterSpinner";
import RubberSpinner from "./loading/spinner/RubberSpinner";
import ThreeQuarterSpinner from "./loading/spinner/ThreeQuarterSpinner";
import BouncingDot from "./loading/various/BouncingDot";
import PulsingLine from "./loading/various/PulsingLine";
import SpinningBinary from "./loading/various/SpinningBinary";
import SpinningClock from "./loading/various/SpinningClock";
import SpinningEclipse from "./loading/various/SpinningEclipse";
import SpinningEclipseHalf from "./loading/various/SpinningEclipseHalf";
import SpinningGalaxy from "./loading/various/SpinningGalaxy";
import SpinningTadpole from "./loading/various/SpinningTadpole";
import Wifi from "./loading/various/Wifi";
export {
BouncingDot,
BouncingDots,
CenterGrowingBars,
CircleBars,
CircleCenterDots,
CircleFadingDots,
CirclePulsingDots,
CircleRotatingDots,
CircleShrinkingDots,
CircleSpinningDot,
CyclingDots,
DoubleDrop,
DoubleWaveDrop,
Drop,
FadingBars,
FadingDots,
FadingGrowingBars,
GrowingBars,
HalfSpinner,
PulsingBlocks,
PulsingDots,
PulsingLine,
QuarterSpinner,
QuickDrop,
QuickWaveDrop,
RotatingDots,
RubberSpinner,
SlidingBlocks2,
SlidingBlocks3,
SpinningBinary,
SpinningClock,
SpinningEclipse,
SpinningEclipseHalf,
SpinningGalaxy,
SpinningTadpole,
SwellingDots,
ThreeQuarterSpinner,
TripleDrop,
TripleWaveDrop,
WaveBlocks,
WaveDrop,
Wifi
};

View File

@@ -0,0 +1,44 @@
export { default as CenterGrowingBars } from "./bar/CenterGrowingBars";
export { default as CircleBars } from "./bar/CircleBars";
export { default as FadingBars } from "./bar/FadingBars";
export { default as FadingGrowingBars } from "./bar/FadingGrowingBars";
export { default as GrowingBars } from "./bar/GrowingBars";
export { default as PulsingBlocks } from "./block/PulsingBlocks";
export { default as SlidingBlocks2 } from "./block/SlidingBlocks2";
export { default as SlidingBlocks3 } from "./block/SlidingBlocks3";
export { default as WaveBlocks } from "./block/WaveBlocks";
export { default as BouncingDots } from "./dot/BouncingDots";
export { default as CircleCenterDots } from "./dot/CircleCenterDots";
export { default as CircleFadingDots } from "./dot/CircleFadingDots";
export { default as CirclePulsingDots } from "./dot/CirclePulsingDots";
export { default as CircleRotatingDots } from "./dot/CircleRotatingDots";
export { default as CircleShrinkingDots } from "./dot/CircleShrinkingDots";
export { default as CircleSpinningDot } from "./dot/CircleSpinningDot";
export { default as CyclingDots } from "./dot/CyclingDots";
export { default as FadingDots } from "./dot/FadingDots";
export { default as PulsingDots } from "./dot/PulsingDots";
export { default as RotatingDots } from "./dot/RotatingDots";
export { default as SwellingDots } from "./dot/SwellingDots";
export { default as DoubleDrop } from "./drop/DoubleDrop";
export { default as DoubleWaveDrop } from "./drop/DoubleWaveDrop";
export { default as Drop } from "./drop/Drop";
export { default as QuickDrop } from "./drop/QuickDrop";
export { default as QuickWaveDrop } from "./drop/QuickWaveDrop";
export { default as TripleDrop } from "./drop/TripleDrop";
export { default as TripleWaveDrop } from "./drop/TripleWaveDrop";
export { default as WaveDrop } from "./drop/WaveDrop";
export { default as HalfSpinner } from "./spinner/HalfSpinner";
export { default as QuarterSpinner } from "./spinner/QuarterSpinner";
export { default as RubberSpinner } from "./spinner/RubberSpinner";
export { default as ThreeQuarterSpinner } from "./spinner/ThreeQuarterSpinner";
export { default as BouncingDot } from "./various/BouncingDot";
export { default as PulsingLine } from "./various/PulsingLine";
export { default as SpinningBinary } from "./various/SpinningBinary";
export { default as SpinningClock } from "./various/SpinningClock";
export { default as SpinningEclipse } from "./various/SpinningEclipse";
export { default as SpinningEclipseHalf } from "./various/SpinningEclipseHalf";
export { default as SpinningGalaxy } from "./various/SpinningGalaxy";
export { default as SpinningTadpole } from "./various/SpinningTadpole";
export { default as Wifi } from "./various/Wifi";

View File

@@ -1,26 +0,0 @@
import DangerMessageBlock from "./message/DangerMessageBlock";
import DarkMessageBlock from "./message/DarkMessageBlock";
import InfoMessageBlock from "./message/InfoMessageBlock";
import LightMessageBlock from "./message/LightMessageBlock";
import MessageBlock from "./message/MessageBlock";
import MoltenMessageBlock from "./message/MoltenMessageBlock";
import PrimaryMessageBlock from "./message/PrimaryMessageBlock";
import SecondaryMessageBlock from "./message/SecondaryMessageBlock";
import SuccessMessageBlock from "./message/SuccessMessageBlock";
import TertiaryMessageBlock from "./message/TertiaryMessageBlock";
import WarningMessageBlock from "./message/WarningMessageBlock";
export {
DangerMessageBlock,
DarkMessageBlock,
InfoMessageBlock,
LightMessageBlock,
MessageBlock,
MoltenMessageBlock,
PrimaryMessageBlock,
SecondaryMessageBlock,
SuccessMessageBlock,
TertiaryMessageBlock,
WarningMessageBlock
};

View File

@@ -0,0 +1,12 @@
export { default as DangerMessageBlock } from "./DangerMessageBlock";
export { default as DarkMessageBlock } from "./DarkMessageBlock";
export { default as InfoMessageBlock } from "./InfoMessageBlock";
export { default as LightMessageBlock } from "./LightMessageBlock";
export { default as MessageBlock } from "./MessageBlock";
export { default as MoltenMessageBlock } from "./MoltenMessageBlock";
export { default as PrimaryMessageBlock } from "./PrimaryMessageBlock";
export { default as SecondaryMessageBlock } from "./SecondaryMessageBlock";
export { default as SuccessMessageBlock } from "./SuccessMessageBlock";
export { default as TertiaryMessageBlock } from "./TertiaryMessageBlock";
export { default as WarningMessageBlock } from "./WarningMessageBlock";

View File

@@ -1,13 +0,0 @@
import Modal from "./modal/Modal";
import ModalBody from "./modal/ModalBody";
import ModalFooter from "./modal/ModalFooter";
import ModalHeader from "./modal/ModalHeader";
export {
Modal,
ModalBody,
ModalFooter,
ModalHeader
};

View File

@@ -0,0 +1,5 @@
export { default as Modal } from "./Modal";
export { default as ModalBody } from "./ModalBody";
export { default as ModalFooter } from "./ModalFooter";
export { default as ModalHeader } from "./ModalHeader";

View File

@@ -1,10 +0,0 @@
import DarkModeSwitch from "./nav/DarkModeSwitch";
import NavBar from "./nav/NavBar";
import PopoverMenu from "./nav/PopoverMenu";
export {
DarkModeSwitch,
NavBar,
PopoverMenu
};

View File

@@ -0,0 +1,4 @@
export { default as DarkModeSwitch } from "./DarkModeSwitch";
export { default as NavBar } from "./NavBar";
export { default as PopoverMenu } from "./PopoverMenu";

View File

@@ -1,26 +0,0 @@
import DangerProgress from "./progress/DangerProgress";
import DarkProgress from "./progress/DarkProgress";
import InfoProgress from "./progress/InfoProgress";
import LightProgress from "./progress/LightProgress";
import MoltenProgress from "./progress/MoltenProgress";
import PrimaryProgress from "./progress/PrimaryProgress";
import Progress from "./progress/Progress";
import SecondaryProgress from "./progress/SecondaryProgress";
import SuccessProgress from "./progress/SuccessProgress";
import TertiaryProgress from "./progress/TertiaryProgress";
import WarningProgress from "./progress/WarningProgress";
export {
DangerProgress,
DarkProgress,
InfoProgress,
LightProgress,
MoltenProgress,
PrimaryProgress,
Progress,
SecondaryProgress,
SuccessProgress,
TertiaryProgress,
WarningProgress
};

View File

@@ -0,0 +1,12 @@
export { default as DangerProgress } from "./DangerProgress";
export { default as DarkProgress } from "./DarkProgress";
export { default as InfoProgress } from "./InfoProgress";
export { default as LightProgress } from "./LightProgress";
export { default as MoltenProgress } from "./MoltenProgress";
export { default as PrimaryProgress } from "./PrimaryProgress";
export { default as Progress } from "./Progress";
export { default as SecondaryProgress } from "./SecondaryProgress";
export { default as SuccessProgress } from "./SuccessProgress";
export { default as TertiaryProgress } from "./TertiaryProgress";
export { default as WarningProgress } from "./WarningProgress";

View File

@@ -1,28 +0,0 @@
import DangerRadioButton from "./input/radio/DangerRadioButton";
import DarkRadioButton from "./input/radio/DarkRadioButton";
import InfoRadioButton from "./input/radio/InfoRadioButton";
import LightRadioButton from "./input/radio/LightRadioButton";
import MoltenRadioButton from "./input/radio/MoltenRadioButton";
import PrimaryRadioButton from "./input/radio/PrimaryRadioButton";
import RadioButton from "./input/radio/RadioButton";
import RadioList from "./input/radio/RadioList";
import SecondaryRadioButton from "./input/radio/SecondaryRadioButton";
import SuccessRadioButton from "./input/radio/SuccessRadioButton";
import TertiaryRadioButton from "./input/radio/TertiaryRadioButton";
import WarningRadioButton from "./input/radio/WarningRadioButton";
export {
DangerRadioButton,
DarkRadioButton,
InfoRadioButton,
LightRadioButton,
MoltenRadioButton,
PrimaryRadioButton,
RadioButton,
RadioList,
SecondaryRadioButton,
SuccessRadioButton,
TertiaryRadioButton,
WarningRadioButton
};

View File

@@ -1,26 +0,0 @@
import ButtonSwitch from "./input/switch/ButtonSwitch";
import DangerSwitch from "./input/switch/DangerSwitch";
import DarkSwitch from "./input/switch/DarkSwitch";
import LightSwitch from "./input/switch/LightSwitch";
import MattrixwvSwitch from "./input/switch/MattrixwvSwitch";
import PrimarySwitch from "./input/switch/PrimarySwitch";
import SecondarySwitch from "./input/switch/SecondarySwitch";
import SuccessDangerSwitch from "./input/switch/SuccessDangerSwitch";
import SuccessSwitch from "./input/switch/SuccessSwitch";
import TertiarySwitch from "./input/switch/TertiarySwitch";
import WarningSwitch from "./input/switch/WarningSwitch";
export {
ButtonSwitch,
DangerSwitch,
DarkSwitch,
LightSwitch,
MattrixwvSwitch,
PrimarySwitch,
SecondarySwitch,
SuccessDangerSwitch,
SuccessSwitch,
TertiarySwitch,
WarningSwitch
};

View File

@@ -1,14 +0,0 @@
import MattrixwvTab from "./tab/MattrixwvTab";
import MattrixwvTabGroup from "./tab/MattrixwvTabGroup";
import MattrixwvTabList from "./tab/MattrixwvTabList";
import MattrixwvTabPanel from "./tab/MattrixwvTabPanel";
import MattrixwvTabPanels from "./tab/MattrixwvTabPanels";
export {
MattrixwvTab,
MattrixwvTabGroup,
MattrixwvTabList,
MattrixwvTabPanel,
MattrixwvTabPanels
};

View File

@@ -0,0 +1,6 @@
export { default as MattrixwvTab } from "./MattrixwvTab";
export { default as MattrixwvTabGroup } from "./MattrixwvTabGroup";
export { default as MattrixwvTabList } from "./MattrixwvTabList";
export { default as MattrixwvTabPanel } from "./MattrixwvTabPanel";
export { default as MattrixwvTabPanels } from "./MattrixwvTabPanels";

View File

@@ -1,8 +0,0 @@
import ThemeProvider, { useTheme } from "$/providers/theme/ThemeProvider";
export {
ThemeProvider,
useTheme
};

View File

@@ -1,10 +0,0 @@
import Toaster from "$/component/toaster/Toaster";
import ToasterProvider, { useToaster } from "$/providers/toaster/ToasterProvider";
export {
Toaster,
ToasterProvider,
useToaster
};

View File

@@ -0,0 +1,3 @@
export { default as ToasterProvider, useToaster } from "$/providers/toaster/ToasterProvider";
export { default as Toaster } from "./Toaster";

View File

@@ -1,14 +1,11 @@
export * from "$/component/button";
export * from "$/component/checkbox";
export * from "$/component/input";
export * from "$/component/loading";
export * from "$/component/message";
export * from "$/component/modal";
export * from "$/component/nav";
export * from "$/component/progress";
export * from "$/component/radio";
export * from "$/component/switch";
export * from "$/component/tab";
export * from "$/component/theme";
export * from "$/component/toaster";
export * from "$/providers/theme/theme";

View File

@@ -0,0 +1,2 @@
export { default as ThemeProvider, useTheme } from "$/providers/theme/ThemeProvider";

View File

@@ -1,7 +1,6 @@
import { DangerMessageBlock, SuccessMessageBlock, WarningMessageBlock } from "$/component/message";
import Toaster from "$/component/toaster/Toaster";
import type { Toast, ToastProviderProps, ToastProviderState } from "$/types/ToasterTypes";
import moment from "moment";
import { createContext, useCallback, useContext, useMemo, useState } from "react";
@@ -27,7 +26,7 @@ export default function ToasterProvider({
const hideToast = useCallback(function hide(id: string){
setToast((prev) => {
if(prev.length === 1 && prev[0].id === id){
const current = prev[0].hideTime > moment(new Date()).subtract(600, "ms").toDate() ? [...prev] : [];
const current = prev[0].hideTime > new Date(Date.now() - 600) ? [...prev] : [];
if(current.length > 0){
setTimeout(() => hide(id), 600);
}
@@ -45,7 +44,7 @@ export default function ToasterProvider({
}
const id = crypto.randomUUID();
setToast((prev) => [ ...prev, { id, message, duration, hideTime: moment(new Date()).add(duration, "ms").toDate() } ]);
setToast((prev) => [ ...prev, { id, message, duration, hideTime: new Date(Date.now() + duration) } ]);
setTimeout(() => hideToast(id), duration);
return id;

View File

@@ -5,5 +5,5 @@ export function humanReadableBytes(bytes: number, decimals: number = 2): string{
const sizes = [ "Bytes", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB" ];
const power = Math.floor(Math.log(bytes) / Math.log(1024));
return `${parseFloat((bytes / Math.pow(1024, power)).toFixed(decimals))} ${sizes[power]}`;
return `${Number.parseFloat((bytes / Math.pow(1024, power)).toFixed(decimals))} ${sizes[power]}`;
}

52
package-lock.json generated
View File

@@ -1,12 +1,12 @@
{
"name": "mattrixwv-components",
"version": "0.0.7",
"version": "0.0.8",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "mattrixwv-components",
"version": "0.0.7",
"version": "0.0.8",
"devDependencies": {
"@eslint/js": "^9.39.2",
"@tailwindcss/vite": "^4.1.18",
@@ -34,12 +34,12 @@
"typescript-eslint": "^8.50.0",
"vite": "^7.3.0",
"vite-plugin-dts": "^4.5.4",
"vite-plugin-static-copy": "^3.2.0",
"vitest": "^4.0.16"
},
"peerDependencies": {
"@headlessui/react": "^2.2.9",
"clsx": "^2.1.1",
"moment": "^2.30.1",
"react": "^19.2.3",
"react-dom": "^19.2.3",
"react-icons": "^5.5.0"
@@ -6980,16 +6980,6 @@
"pathe": "^2.0.1"
}
},
"node_modules/moment": {
"version": "2.30.1",
"resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz",
"integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==",
"license": "MIT",
"peer": true,
"engines": {
"node": "*"
}
},
"node_modules/ms": {
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
@@ -7234,6 +7224,19 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/p-map": {
"version": "7.0.4",
"resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.4.tgz",
"integrity": "sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/parent-module": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
@@ -8843,6 +8846,29 @@
}
}
},
"node_modules/vite-plugin-static-copy": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/vite-plugin-static-copy/-/vite-plugin-static-copy-3.2.0.tgz",
"integrity": "sha512-g2k9z8B/1Bx7D4wnFjPLx9dyYGrqWMLTpwTtPHhcU+ElNZP2O4+4OsyaficiDClus0dzVhdGvoGFYMJxoXZ12Q==",
"dev": true,
"license": "MIT",
"dependencies": {
"chokidar": "^3.6.0",
"p-map": "^7.0.4",
"picocolors": "^1.1.1",
"tinyglobby": "^0.2.15"
},
"engines": {
"node": "^18.0.0 || >=20.0.0"
},
"funding": {
"type": "github",
"url": "https://github.com/sponsors/sapphi-red"
},
"peerDependencies": {
"vite": "^5.0.0 || ^6.0.0 || ^7.0.0"
}
},
"node_modules/vite/node_modules/@esbuild/aix-ppc64": {
"version": "0.27.2",
"resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.2.tgz",

View File

@@ -5,7 +5,8 @@
"type": "module",
"scripts": {
"dev": "vite",
"build": "eslint . && tsc -b && vite build",
"build": "eslint . && vitest run && tsc -b && vite build",
"build:fast": "tsc -b && vite build",
"lint": "eslint .",
"test": "vitest run",
"test:watch": "vitest",
@@ -20,7 +21,6 @@
"peerDependencies": {
"@headlessui/react": "^2.2.9",
"clsx": "^2.1.1",
"moment": "^2.30.1",
"react": "^19.2.3",
"react-dom": "^19.2.3",
"react-icons": "^5.5.0"
@@ -52,6 +52,7 @@
"typescript-eslint": "^8.50.0",
"vite": "^7.3.0",
"vite-plugin-dts": "^4.5.4",
"vite-plugin-static-copy": "^3.2.0",
"vitest": "^4.0.16"
},
"overrides": {
@@ -72,8 +73,43 @@
"exports": {
".": {
"types": "./dist/mattrixwv-components.d.ts",
"require": "./dist/mattrixwv-components.cjs",
"import": "./dist/mattrixwv-components.js"
},
"./button": {
"types": "./dist/button.d.ts",
"import": "./dist/button.js"
},
"./input": {
"types": "./dist/input.d.ts",
"import": "./dist/input.js"
},
"./loading": {
"types": "./dist/loading.d.ts",
"import": "./dist/loading.js"
},
"./message": {
"types": "./dist/message.d.ts",
"import": "./dist/message.js"
},
"./modal": {
"types": "./dist/modal.d.ts",
"import": "./dist/modal.js"
},
"./nav": {
"types": "./dist/nav.d.ts",
"import": "./dist/nav.js"
},
"./progress": {
"types": "./dist/progress.d.ts",
"import": "./dist/progress.js"
},
"./tab": {
"types": "./dist/tab.d.ts",
"import": "./dist/tab.js"
},
"./toaster": {
"types": "./dist/toaster.d.ts",
"import": "./dist/toaster.js"
}
},
"files": [

View File

@@ -6,9 +6,13 @@ import { resolve } from "node:path";
import removeTestIdAttribute from "rollup-plugin-jsx-remove-attributes";
import { defineConfig } from "vite";
import dts from "vite-plugin-dts";
import { viteStaticCopy } from "vite-plugin-static-copy";
import { peerDependencies } from "./package.json";
const modules = [ "button", "input", "loading", "message", "modal", "nav", "progress", "tab", "toaster" ];
// https://vite.dev/config/
export default defineConfig({
plugins: [
@@ -27,7 +31,15 @@ export default defineConfig({
declarationMap: false
}
}),
removeTestIdAttribute({ usage: "vite" })
removeTestIdAttribute({ usage: "vite" }),
viteStaticCopy({
targets: [
{
src: resolve(__dirname, "lib/styles.css"),
dest: ""
}
]
})
],
resolve: {
alias: {
@@ -38,8 +50,11 @@ export default defineConfig({
},
build: {
lib: {
entry: resolve(__dirname, "lib/index.ts"),
formats: [ "cjs", "es" ],
entry: {
index: resolve(__dirname, "lib/index.ts"),
...Object.fromEntries(modules.map(mod => [mod, resolve(__dirname, `lib/component/${mod}/index.ts`)]))
},
formats: [ "es" ],
name: "Mattrixwv Component Library"
},
rollupOptions: {
@@ -54,7 +69,13 @@ export default defineConfig({
react: "React",
"react-dom": "ReactDOM"
},
manualChunks: undefined
hoistTransitiveImports: false,
manualChunks: undefined,
entryFileNames: "[name].js",
chunkFileNames: "_internal/[name]-[hash].js"
},
treeshake: {
moduleSideEffects: false
}
}
},