From da0db483aa815b188d4d30b9ef49ae51242f632f Mon Sep 17 00:00:00 2001 From: Matthew Ellison Date: Sat, 14 Feb 2026 21:12:16 -0500 Subject: [PATCH] Update import/exports to be more tree-shake friendly --- lib/component/button.ts | 26 ------- lib/component/button/index.ts | 12 +++ lib/component/checkbox.ts | 26 ------- lib/component/input.ts | 26 ------- lib/component/input/index.ts | 53 +++++++++++++ lib/component/loading.ts | 90 ----------------------- lib/component/loading/index.ts | 44 +++++++++++ lib/component/message.ts | 26 ------- lib/component/message/index.ts | 12 +++ lib/component/modal.ts | 13 ---- lib/component/modal/index.ts | 5 ++ lib/component/nav.ts | 10 --- lib/component/nav/index.ts | 4 + lib/component/progress.ts | 26 ------- lib/component/progress/index.ts | 12 +++ lib/component/radio.ts | 28 ------- lib/component/switch.ts | 26 ------- lib/component/tab.ts | 14 ---- lib/component/tab/index.ts | 6 ++ lib/component/theme.ts | 8 -- lib/component/toaster.ts | 10 --- lib/component/toaster/index.ts | 3 + lib/index.ts | 5 +- lib/providers/theme/theme.ts | 2 + lib/providers/toaster/ToasterProvider.tsx | 5 +- lib/util/FileUtil.ts | 2 +- package-lock.json | 52 +++++++++---- package.json | 42 ++++++++++- vite.config.ts | 29 +++++++- 29 files changed, 260 insertions(+), 357 deletions(-) delete mode 100644 lib/component/button.ts create mode 100644 lib/component/button/index.ts delete mode 100644 lib/component/checkbox.ts delete mode 100644 lib/component/input.ts create mode 100644 lib/component/input/index.ts delete mode 100644 lib/component/loading.ts create mode 100644 lib/component/loading/index.ts delete mode 100644 lib/component/message.ts create mode 100644 lib/component/message/index.ts delete mode 100644 lib/component/modal.ts create mode 100644 lib/component/modal/index.ts delete mode 100644 lib/component/nav.ts create mode 100644 lib/component/nav/index.ts delete mode 100644 lib/component/progress.ts create mode 100644 lib/component/progress/index.ts delete mode 100644 lib/component/radio.ts delete mode 100644 lib/component/switch.ts delete mode 100644 lib/component/tab.ts create mode 100644 lib/component/tab/index.ts delete mode 100644 lib/component/theme.ts delete mode 100644 lib/component/toaster.ts create mode 100644 lib/component/toaster/index.ts create mode 100644 lib/providers/theme/theme.ts diff --git a/lib/component/button.ts b/lib/component/button.ts deleted file mode 100644 index f94bd57..0000000 --- a/lib/component/button.ts +++ /dev/null @@ -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 -}; diff --git a/lib/component/button/index.ts b/lib/component/button/index.ts new file mode 100644 index 0000000..d6670d0 --- /dev/null +++ b/lib/component/button/index.ts @@ -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"; + diff --git a/lib/component/checkbox.ts b/lib/component/checkbox.ts deleted file mode 100644 index 5c44212..0000000 --- a/lib/component/checkbox.ts +++ /dev/null @@ -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 -}; diff --git a/lib/component/input.ts b/lib/component/input.ts deleted file mode 100644 index 0defebf..0000000 --- a/lib/component/input.ts +++ /dev/null @@ -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 -}; - diff --git a/lib/component/input/index.ts b/lib/component/input/index.ts new file mode 100644 index 0000000..9524ca3 --- /dev/null +++ b/lib/component/input/index.ts @@ -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"; + diff --git a/lib/component/loading.ts b/lib/component/loading.ts deleted file mode 100644 index f511123..0000000 --- a/lib/component/loading.ts +++ /dev/null @@ -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 -}; - diff --git a/lib/component/loading/index.ts b/lib/component/loading/index.ts new file mode 100644 index 0000000..fd751d5 --- /dev/null +++ b/lib/component/loading/index.ts @@ -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"; + diff --git a/lib/component/message.ts b/lib/component/message.ts deleted file mode 100644 index c2d0e76..0000000 --- a/lib/component/message.ts +++ /dev/null @@ -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 -}; diff --git a/lib/component/message/index.ts b/lib/component/message/index.ts new file mode 100644 index 0000000..e75d73d --- /dev/null +++ b/lib/component/message/index.ts @@ -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"; + diff --git a/lib/component/modal.ts b/lib/component/modal.ts deleted file mode 100644 index 0c8dcc6..0000000 --- a/lib/component/modal.ts +++ /dev/null @@ -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 -}; - diff --git a/lib/component/modal/index.ts b/lib/component/modal/index.ts new file mode 100644 index 0000000..278a3cf --- /dev/null +++ b/lib/component/modal/index.ts @@ -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"; + diff --git a/lib/component/nav.ts b/lib/component/nav.ts deleted file mode 100644 index c742dfd..0000000 --- a/lib/component/nav.ts +++ /dev/null @@ -1,10 +0,0 @@ -import DarkModeSwitch from "./nav/DarkModeSwitch"; -import NavBar from "./nav/NavBar"; -import PopoverMenu from "./nav/PopoverMenu"; - - -export { - DarkModeSwitch, - NavBar, - PopoverMenu -}; diff --git a/lib/component/nav/index.ts b/lib/component/nav/index.ts new file mode 100644 index 0000000..9551be1 --- /dev/null +++ b/lib/component/nav/index.ts @@ -0,0 +1,4 @@ +export { default as DarkModeSwitch } from "./DarkModeSwitch"; +export { default as NavBar } from "./NavBar"; +export { default as PopoverMenu } from "./PopoverMenu"; + diff --git a/lib/component/progress.ts b/lib/component/progress.ts deleted file mode 100644 index f50dd27..0000000 --- a/lib/component/progress.ts +++ /dev/null @@ -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 -}; diff --git a/lib/component/progress/index.ts b/lib/component/progress/index.ts new file mode 100644 index 0000000..5ba2b22 --- /dev/null +++ b/lib/component/progress/index.ts @@ -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"; + diff --git a/lib/component/radio.ts b/lib/component/radio.ts deleted file mode 100644 index f734946..0000000 --- a/lib/component/radio.ts +++ /dev/null @@ -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 -}; diff --git a/lib/component/switch.ts b/lib/component/switch.ts deleted file mode 100644 index f6d8413..0000000 --- a/lib/component/switch.ts +++ /dev/null @@ -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 -}; diff --git a/lib/component/tab.ts b/lib/component/tab.ts deleted file mode 100644 index e9eccc3..0000000 --- a/lib/component/tab.ts +++ /dev/null @@ -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 -}; diff --git a/lib/component/tab/index.ts b/lib/component/tab/index.ts new file mode 100644 index 0000000..6591f97 --- /dev/null +++ b/lib/component/tab/index.ts @@ -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"; + diff --git a/lib/component/theme.ts b/lib/component/theme.ts deleted file mode 100644 index 3c00820..0000000 --- a/lib/component/theme.ts +++ /dev/null @@ -1,8 +0,0 @@ -import ThemeProvider, { useTheme } from "$/providers/theme/ThemeProvider"; - - -export { - ThemeProvider, - useTheme -}; - diff --git a/lib/component/toaster.ts b/lib/component/toaster.ts deleted file mode 100644 index 77bfe09..0000000 --- a/lib/component/toaster.ts +++ /dev/null @@ -1,10 +0,0 @@ -import Toaster from "$/component/toaster/Toaster"; -import ToasterProvider, { useToaster } from "$/providers/toaster/ToasterProvider"; - - -export { - Toaster, - ToasterProvider, - useToaster -}; - diff --git a/lib/component/toaster/index.ts b/lib/component/toaster/index.ts new file mode 100644 index 0000000..f80661c --- /dev/null +++ b/lib/component/toaster/index.ts @@ -0,0 +1,3 @@ +export { default as ToasterProvider, useToaster } from "$/providers/toaster/ToasterProvider"; +export { default as Toaster } from "./Toaster"; + diff --git a/lib/index.ts b/lib/index.ts index 280881b..9c16d5b 100644 --- a/lib/index.ts +++ b/lib/index.ts @@ -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"; diff --git a/lib/providers/theme/theme.ts b/lib/providers/theme/theme.ts new file mode 100644 index 0000000..d45edaf --- /dev/null +++ b/lib/providers/theme/theme.ts @@ -0,0 +1,2 @@ +export { default as ThemeProvider, useTheme } from "$/providers/theme/ThemeProvider"; + diff --git a/lib/providers/toaster/ToasterProvider.tsx b/lib/providers/toaster/ToasterProvider.tsx index 8b29f24..908c1c7 100644 --- a/lib/providers/toaster/ToasterProvider.tsx +++ b/lib/providers/toaster/ToasterProvider.tsx @@ -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; diff --git a/lib/util/FileUtil.ts b/lib/util/FileUtil.ts index e73c796..be8cc35 100644 --- a/lib/util/FileUtil.ts +++ b/lib/util/FileUtil.ts @@ -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]}`; } diff --git a/package-lock.json b/package-lock.json index 6466224..85e1620 100644 --- a/package-lock.json +++ b/package-lock.json @@ -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", diff --git a/package.json b/package.json index 612f6d3..e48b8bd 100644 --- a/package.json +++ b/package.json @@ -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": [ diff --git a/vite.config.ts b/vite.config.ts index cde27bc..0b89347 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -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 } } },