Complete configuration for build

This commit is contained in:
2025-08-09 19:09:49 -04:00
parent 689f446806
commit b3803162b4
15 changed files with 107 additions and 31 deletions

View File

@@ -18,13 +18,13 @@ export default tseslint.config([
tseslint.configs.recommendedTypeChecked, tseslint.configs.recommendedTypeChecked,
reactHooks.configs['recommended-latest'], reactHooks.configs['recommended-latest'],
reactRefresh.configs.vite, reactRefresh.configs.vite,
...pluginRouter.configs["flat/recommended"] pluginRouter.configs["flat/recommended"]
], ],
languageOptions: { languageOptions: {
ecmaVersion: 2022, ecmaVersion: 2022,
globals: globals.browser, globals: globals.browser,
parserOptions: { parserOptions: {
project: "./tsconfig.json", project: ["./tsconfig.json", "./tsconfig.app.json", "./tsconfig.lib.json", "./tsconfig.node.json"],
tsconfigRootDir: import.meta.dirname tsconfigRootDir: import.meta.dirname
} }
}, },
@@ -33,7 +33,13 @@ export default tseslint.config([
"react-refresh/only-export-components": [ "react-refresh/only-export-components": [
"warn", "warn",
{ allowConstantExport: true } { allowConstantExport: true }
] ],
"react/react-in-jsx-scope": "off"
},
settings: {
react: {
version: "detect"
}
} }
} }
]); ]);

View File

@@ -22,7 +22,6 @@ export default function Button(props: ButtonProps){
className, className,
//Rounding //Rounding
{ {
"rounded-none": rounding === "none",
"rounded-sm": rounding === "sm", "rounded-sm": rounding === "sm",
"rounded": rounding === "md", "rounded": rounding === "md",
"rounded-lg": rounding === "lg", "rounded-lg": rounding === "lg",

View File

@@ -22,7 +22,7 @@ export default function DragAndDropFileInput({
useEffect(() => { useEffect(() => {
onChange?.(file); onChange?.(file);
}, [ file ]); }, [ file, onChange ]);
return ( return (
<label <label

View File

@@ -35,8 +35,8 @@ export default function RubberSpinner({
className={className} className={className}
stroke={stroke} stroke={stroke}
fill={fill} fill={fill}
stroke-width="3" strokeWidth="3"
stroke-linecap="round" strokeLinecap="round"
> >
<animate <animate
attributeName="stroke-dasharray" attributeName="stroke-dasharray"

11
lib/index.ts Normal file
View File

@@ -0,0 +1,11 @@
export * from "$/component/button";
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/tab";
export * from "$/component/theme";
export * from "$/component/toaster";

View File

@@ -7,7 +7,7 @@ const themeInitialState: ThemeProviderState = {
setTheme: () => null setTheme: () => null
} }
export const ThemeProviderContext = createContext<ThemeProviderState>(themeInitialState); const ThemeProviderContext = createContext<ThemeProviderState>(themeInitialState);
export default function ThemeProvider(props: ThemeProviderProps){ export default function ThemeProvider(props: ThemeProviderProps){
@@ -40,7 +40,7 @@ export default function ThemeProvider(props: ThemeProviderProps){
localStorage.setItem(storageKey, theme); localStorage.setItem(storageKey, theme);
setTheme(theme); setTheme(theme);
} }
}), [ theme ]); }), [storageKey, theme]);
return ( return (
<ThemeProviderContext.Provider value={value}> <ThemeProviderContext.Provider value={value}>
@@ -50,6 +50,7 @@ export default function ThemeProvider(props: ThemeProviderProps){
} }
// eslint-disable-next-line react-refresh/only-export-components
export function useTheme(){ export function useTheme(){
const context = useContext(ThemeProviderContext); const context = useContext(ThemeProviderContext);

View File

@@ -14,7 +14,7 @@ const toastInitialState: ToastProviderState = {
addDanger: () => "" addDanger: () => ""
}; };
export const ToasterProviderContext = createContext<ToastProviderState>(toastInitialState); const ToasterProviderContext = createContext<ToastProviderState>(toastInitialState);
export default function ToasterProvider({ export default function ToasterProvider({
@@ -37,7 +37,7 @@ export default function ToasterProvider({
return prev.filter((toast) => toast.id !== id); return prev.filter((toast) => toast.id !== id);
} }
}); });
}, [ toast ]); }, []);
const addToast = useCallback((message: React.ReactNode, duration?: number) => { const addToast = useCallback((message: React.ReactNode, duration?: number) => {
if(!duration){ if(!duration){
@@ -49,7 +49,7 @@ export default function ToasterProvider({
setTimeout(() => hideToast(id), duration); setTimeout(() => hideToast(id), duration);
return id; return id;
}, [ toast ]); }, [hideToast]);
const addSuccess = useCallback((message: React.ReactNode, duration?: number) => { const addSuccess = useCallback((message: React.ReactNode, duration?: number) => {
return addToast(<SuccessMessageBlock>{message}</SuccessMessageBlock>, duration); return addToast(<SuccessMessageBlock>{message}</SuccessMessageBlock>, duration);
@@ -84,6 +84,7 @@ export default function ToasterProvider({
} }
// eslint-disable-next-line react-refresh/only-export-components
export function useToaster(){ export function useToaster(){
const context = useContext(ToasterProviderContext); const context = useContext(ToasterProviderContext);

View File

@@ -1,3 +1,4 @@
/* eslint-disable @typescript-eslint/no-empty-object-type */
interface LoadingDefaultProps { interface LoadingDefaultProps {
width?: string | number; width?: string | number;
height?: string | number; height?: string | number;

View File

@@ -5,7 +5,7 @@
"type": "module", "type": "module",
"scripts": { "scripts": {
"dev": "vite", "dev": "vite",
"build": "tsc -b && vite build", "build": "eslint . && tsc -b && vite build",
"lint": "eslint .", "lint": "eslint .",
"preview": "vite preview" "preview": "vite preview"
}, },

View File

@@ -513,8 +513,9 @@ export function TextContent(){
key={option.value} key={option.value}
className="bg-neutral-600 hover:bg-neutral-700" className="bg-neutral-600 hover:bg-neutral-700"
value={option.value} value={option.value}
children={option.label} >
/> {option.label}
</OptionInput>
)) ))
} }
</SelectInput> </SelectInput>

View File

@@ -43,6 +43,7 @@ import Wifi from "$/component/loading/various/Wifi";
import type { JSX } from "react"; import type { JSX } from "react";
// eslint-disable-next-line react-refresh/only-export-components
function LoadingGroup({ function LoadingGroup({
label, label,
elements elements
@@ -87,9 +88,11 @@ export function generateSpinnersContent(){
label="Quarter Spinner" label="Quarter Spinner"
elements={[ elements={[
<QuarterSpinner <QuarterSpinner
key={1}
className="fill-blue-600" className="fill-blue-600"
/>, />,
<QuarterSpinner <QuarterSpinner
key={2}
trackClassName="fill-neutral-700 dark:fill-zinc-700" trackClassName="fill-neutral-700 dark:fill-zinc-700"
className="fill-blue-600" className="fill-blue-600"
/> />
@@ -99,9 +102,11 @@ export function generateSpinnersContent(){
label="Half Spinner" label="Half Spinner"
elements={[ elements={[
<HalfSpinner <HalfSpinner
key={1}
className="fill-blue-600" className="fill-blue-600"
/>, />,
<HalfSpinner <HalfSpinner
key={2}
trackClassName="fill-neutral-700 dark:fill-zinc-700" trackClassName="fill-neutral-700 dark:fill-zinc-700"
className="fill-blue-600" className="fill-blue-600"
/> />
@@ -111,9 +116,11 @@ export function generateSpinnersContent(){
label="Three-Quarter Spinner" label="Three-Quarter Spinner"
elements={[ elements={[
<ThreeQuarterSpinner <ThreeQuarterSpinner
key={1}
className="fill-blue-600" className="fill-blue-600"
/>, />,
<ThreeQuarterSpinner <ThreeQuarterSpinner
key={2}
trackClassName="fill-neutral-700 dark:fill-zinc-700" trackClassName="fill-neutral-700 dark:fill-zinc-700"
className="fill-blue-600" className="fill-blue-600"
/> />
@@ -123,9 +130,11 @@ export function generateSpinnersContent(){
label="Rubber Spinner" label="Rubber Spinner"
elements={[ elements={[
<RubberSpinner <RubberSpinner
key={1}
stroke="#155dfc" stroke="#155dfc"
/>, />,
<RubberSpinner <RubberSpinner
key={2}
trackClassName="fill-neutral-700 dark:fill-zinc-700" trackClassName="fill-neutral-700 dark:fill-zinc-700"
stroke="#155dfc" stroke="#155dfc"
/> />
@@ -144,6 +153,7 @@ export function generateDotsContent(){
label="Bouncing" label="Bouncing"
elements={[ elements={[
<BouncingDots <BouncingDots
key={1}
className="fill-blue-600" className="fill-blue-600"
/> />
]} ]}
@@ -152,6 +162,7 @@ export function generateDotsContent(){
label="Fading" label="Fading"
elements={[ elements={[
<FadingDots <FadingDots
key={1}
className="fill-blue-600" className="fill-blue-600"
/> />
]} ]}
@@ -160,6 +171,7 @@ export function generateDotsContent(){
label="Cycling" label="Cycling"
elements={[ elements={[
<CyclingDots <CyclingDots
key={1}
className="fill-blue-600" className="fill-blue-600"
/> />
]} ]}
@@ -168,6 +180,7 @@ export function generateDotsContent(){
label="Rotating" label="Rotating"
elements={[ elements={[
<RotatingDots <RotatingDots
key={1}
className="fill-blue-600" className="fill-blue-600"
/> />
]} ]}
@@ -176,6 +189,7 @@ export function generateDotsContent(){
label="Swelling" label="Swelling"
elements={[ elements={[
<SwellingDots <SwellingDots
key={1}
className="fill-blue-600" className="fill-blue-600"
/> />
]} ]}
@@ -184,6 +198,7 @@ export function generateDotsContent(){
label="Pulsing" label="Pulsing"
elements={[ elements={[
<PulsingDots <PulsingDots
key={1}
className="fill-blue-600" className="fill-blue-600"
/> />
]} ]}
@@ -192,6 +207,7 @@ export function generateDotsContent(){
label="Circle Fading" label="Circle Fading"
elements={[ elements={[
<CircleFadingDots <CircleFadingDots
key={1}
className="fill-blue-600" className="fill-blue-600"
/> />
]} ]}
@@ -200,6 +216,7 @@ export function generateDotsContent(){
label="Circle Shrinking" label="Circle Shrinking"
elements={[ elements={[
<CircleShrinkingDots <CircleShrinkingDots
key={1}
className="fill-blue-600" className="fill-blue-600"
/> />
]} ]}
@@ -208,6 +225,7 @@ export function generateDotsContent(){
label="Circle Center" label="Circle Center"
elements={[ elements={[
<CircleCenterDots <CircleCenterDots
key={1}
className="fill-blue-600" className="fill-blue-600"
/> />
]} ]}
@@ -216,6 +234,7 @@ export function generateDotsContent(){
label="Circle Rotating" label="Circle Rotating"
elements={[ elements={[
<CircleRotatingDots <CircleRotatingDots
key={1}
className="fill-blue-600" className="fill-blue-600"
/> />
]} ]}
@@ -224,6 +243,7 @@ export function generateDotsContent(){
label="Circle Pulsing" label="Circle Pulsing"
elements={[ elements={[
<CirclePulsingDots <CirclePulsingDots
key={1}
className="fill-blue-600" className="fill-blue-600"
/> />
]} ]}
@@ -232,6 +252,7 @@ export function generateDotsContent(){
label="Circle Spinning" label="Circle Spinning"
elements={[ elements={[
<CircleSpinningDot <CircleSpinningDot
key={1}
trackClassName="fill-neutral-700 dark:fill-zinc-700" trackClassName="fill-neutral-700 dark:fill-zinc-700"
className="fill-blue-600" className="fill-blue-600"
/> />
@@ -250,6 +271,7 @@ export function generateBarsContent(){
label="Fading Bars" label="Fading Bars"
elements={[ elements={[
<FadingBars <FadingBars
key={1}
className="fill-blue-600" className="fill-blue-600"
/> />
]} ]}
@@ -258,6 +280,7 @@ export function generateBarsContent(){
label="Growing Bars" label="Growing Bars"
elements={[ elements={[
<GrowingBars <GrowingBars
key={1}
className="fill-blue-600" className="fill-blue-600"
/> />
]} ]}
@@ -266,6 +289,7 @@ export function generateBarsContent(){
label="Fading Growing Bars" label="Fading Growing Bars"
elements={[ elements={[
<FadingGrowingBars <FadingGrowingBars
key={1}
className="fill-blue-600" className="fill-blue-600"
/> />
]} ]}
@@ -274,6 +298,7 @@ export function generateBarsContent(){
label="Center Growing Bars" label="Center Growing Bars"
elements={[ elements={[
<CenterGrowingBars <CenterGrowingBars
key={1}
className="fill-blue-600" className="fill-blue-600"
/> />
]} ]}
@@ -282,6 +307,7 @@ export function generateBarsContent(){
label="Circle Bars" label="Circle Bars"
elements={[ elements={[
<CircleBars <CircleBars
key={1}
className="fill-blue-600" className="fill-blue-600"
/> />
]} ]}
@@ -299,6 +325,7 @@ export function generateBlocksContent(){
label="Pulsing Blocks" label="Pulsing Blocks"
elements={[ elements={[
<PulsingBlocks <PulsingBlocks
key={1}
className="fill-blue-600" className="fill-blue-600"
/> />
]} ]}
@@ -307,6 +334,7 @@ export function generateBlocksContent(){
label="Sliding Blocks 2" label="Sliding Blocks 2"
elements={[ elements={[
<SlidingBlocks2 <SlidingBlocks2
key={1}
className="fill-blue-600" className="fill-blue-600"
/> />
]} ]}
@@ -315,6 +343,7 @@ export function generateBlocksContent(){
label="Sliding Blocks 3" label="Sliding Blocks 3"
elements={[ elements={[
<SlidingBlocks3 <SlidingBlocks3
key={1}
className="fill-blue-600" className="fill-blue-600"
/> />
]} ]}
@@ -323,6 +352,7 @@ export function generateBlocksContent(){
label="Wave Blocks" label="Wave Blocks"
elements={[ elements={[
<WaveBlocks <WaveBlocks
key={1}
className="fill-blue-600 stroke-0 stroke-black" className="fill-blue-600 stroke-0 stroke-black"
/> />
]} ]}
@@ -340,6 +370,7 @@ export function generatePulsesContent(){
label="Drop" label="Drop"
elements={[ elements={[
<Drop <Drop
key={1}
className="fill-blue-600" className="fill-blue-600"
/> />
]} ]}
@@ -348,6 +379,7 @@ export function generatePulsesContent(){
label="Double Drop" label="Double Drop"
elements={[ elements={[
<DoubleDrop <DoubleDrop
key={1}
className="fill-blue-600" className="fill-blue-600"
/> />
]} ]}
@@ -356,6 +388,7 @@ export function generatePulsesContent(){
label="Triple Drop" label="Triple Drop"
elements={[ elements={[
<TripleDrop <TripleDrop
key={1}
className="fill-blue-600" className="fill-blue-600"
/> />
]} ]}
@@ -364,6 +397,7 @@ export function generatePulsesContent(){
label="Quick Drop" label="Quick Drop"
elements={[ elements={[
<QuickDrop <QuickDrop
key={1}
className="fill-blue-600" className="fill-blue-600"
/> />
]} ]}
@@ -372,6 +406,7 @@ export function generatePulsesContent(){
label="Wave Drop" label="Wave Drop"
elements={[ elements={[
<WaveDrop <WaveDrop
key={1}
className="fill-blue-600" className="fill-blue-600"
/> />
]} ]}
@@ -380,6 +415,7 @@ export function generatePulsesContent(){
label="Double Wave Drop" label="Double Wave Drop"
elements={[ elements={[
<DoubleWaveDrop <DoubleWaveDrop
key={1}
className="fill-blue-600" className="fill-blue-600"
/> />
]} ]}
@@ -388,6 +424,7 @@ export function generatePulsesContent(){
label="Triple Wave Drop" label="Triple Wave Drop"
elements={[ elements={[
<TripleWaveDrop <TripleWaveDrop
key={1}
className="fill-blue-600" className="fill-blue-600"
/> />
]} ]}
@@ -396,6 +433,7 @@ export function generatePulsesContent(){
label="Quick Wave Drop" label="Quick Wave Drop"
elements={[ elements={[
<QuickWaveDrop <QuickWaveDrop
key={1}
className="fill-blue-600" className="fill-blue-600"
/> />
]} ]}
@@ -413,6 +451,7 @@ export function generateVariousContent(){
label="Bouncing Dot" label="Bouncing Dot"
elements={[ elements={[
<BouncingDot <BouncingDot
key={1}
className="fill-blue-600" className="fill-blue-600"
/> />
]} ]}
@@ -421,6 +460,7 @@ export function generateVariousContent(){
label="Spinning Clock" label="Spinning Clock"
elements={[ elements={[
<SpinningClock <SpinningClock
key={1}
className="fill-blue-600" className="fill-blue-600"
/> />
]} ]}
@@ -429,6 +469,7 @@ export function generateVariousContent(){
label="Spinning Eclipse" label="Spinning Eclipse"
elements={[ elements={[
<SpinningEclipse <SpinningEclipse
key={1}
className="fill-blue-600" className="fill-blue-600"
/> />
]} ]}
@@ -437,6 +478,7 @@ export function generateVariousContent(){
label="Spinning Eclipse Half" label="Spinning Eclipse Half"
elements={[ elements={[
<SpinningEclipseHalf <SpinningEclipseHalf
key={1}
className="fill-blue-600" className="fill-blue-600"
/> />
]} ]}
@@ -445,6 +487,7 @@ export function generateVariousContent(){
label="Pulsing Line" label="Pulsing Line"
elements={[ elements={[
<PulsingLine <PulsingLine
key={1}
className="fill-blue-600" className="fill-blue-600"
/> />
]} ]}
@@ -453,6 +496,7 @@ export function generateVariousContent(){
label="Spinning Binary" label="Spinning Binary"
elements={[ elements={[
<SpinningBinary <SpinningBinary
key={1}
className="fill-blue-600" className="fill-blue-600"
/> />
]} ]}
@@ -461,6 +505,7 @@ export function generateVariousContent(){
label="Spinning Tadpole" label="Spinning Tadpole"
elements={[ elements={[
<SpinningTadpole <SpinningTadpole
key={1}
className="fill-blue-600" className="fill-blue-600"
/> />
]} ]}
@@ -469,9 +514,11 @@ export function generateVariousContent(){
label="Wifi" label="Wifi"
elements={[ elements={[
<Wifi <Wifi
key={1}
className="fill-blue-600" className="fill-blue-600"
/>, />,
<Wifi <Wifi
key={2}
className="fill-blue-600" className="fill-blue-600"
fadeDuration={0.25} fadeDuration={0.25}
/> />
@@ -481,6 +528,7 @@ export function generateVariousContent(){
label="Spinning Galaxy" label="Spinning Galaxy"
elements={[ elements={[
<SpinningGalaxy <SpinningGalaxy
key={1}
className="fill-blue-600" className="fill-blue-600"
/> />
]} ]}

View File

@@ -4,5 +4,8 @@
{ "path": "./tsconfig.app.json" }, { "path": "./tsconfig.app.json" },
{ "path": "./tsconfig.node.json" }, { "path": "./tsconfig.node.json" },
{ "path": "./tsconfig.lib.json" } { "path": "./tsconfig.lib.json" }
] ],
"compilerOptions": {
"jsx": "react-jsx"
}
} }

View File

@@ -1,4 +1,7 @@
{ {
"extends": "./tsconfig.app.json", "extends": "./tsconfig.app.json",
"include": [ "lib" ] "include": [ "lib" ],
"compilerOptions": {
"jsx": "react-jsx"
}
} }

View File

@@ -12,6 +12,7 @@
"verbatimModuleSyntax": true, "verbatimModuleSyntax": true,
"moduleDetection": "force", "moduleDetection": "force",
"noEmit": true, "noEmit": true,
"jsx": "react-jsx",
/* Linting */ /* Linting */
"strict": true, "strict": true,

View File

@@ -31,24 +31,25 @@ export default defineConfig({
}, },
build: { build: {
lib: { lib: {
entry: { entry: resolve(__dirname, "lib/index.ts"),
button: resolve(__dirname, "lib/component/button.ts"),
input: resolve(__dirname, "lib/component/input.ts"),
loading: resolve(__dirname, "lib/component/loading.ts"),
message: resolve(__dirname, "lib/component/message.ts"),
modal: resolve(__dirname, "lib/component/modal.ts"),
nav: resolve(__dirname, "lib/component/nav.ts"),
tab: resolve(__dirname, "lib/component/tab.ts"),
theme: resolve(__dirname, "lib/component/theme.ts"),
toaster: resolve(__dirname, "lib/component/toaster.ts")
},
formats: [ "es" ], formats: [ "es" ],
name: "Mattrixwv Component Library" name: "Mattrixwv Component Library"
}, },
rollupOptions: { rollupOptions: {
external: [ external: [
Object.keys(dependencies).join("|") "react",
] "react-dom",
"react/jsx-runtime",
...Object.keys(dependencies)
],
output: {
globals: {
react: "React",
"react-dom": "ReactDOM"
},
manualChunks: undefined
}
} }
} },
publicDir: false
}); });