@vritti/quantum-ui 0.1.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/dist/ThemeScript-CQlC-jGc.js +1509 -0
- package/dist/ThemeScript-CQlC-jGc.js.map +1 -0
- package/dist/components/Button/Button.d.ts +11 -0
- package/dist/components/Button/Button.d.ts.map +1 -0
- package/dist/components/Button/index.d.ts +3 -0
- package/dist/components/Button/index.d.ts.map +1 -0
- package/dist/components/Button.js +20 -0
- package/dist/components/Button.js.map +1 -0
- package/dist/components/Paper/Paper.d.ts +8 -0
- package/dist/components/Paper/Paper.d.ts.map +1 -0
- package/dist/components/Paper/index.d.ts +3 -0
- package/dist/components/Paper/index.d.ts.map +1 -0
- package/dist/components/Paper.js +13 -0
- package/dist/components/Paper.js.map +1 -0
- package/dist/components/TextField/TextField.d.ts +13 -0
- package/dist/components/TextField/TextField.d.ts.map +1 -0
- package/dist/components/TextField/index.d.ts +3 -0
- package/dist/components/TextField/index.d.ts.map +1 -0
- package/dist/components/TextField.js +29 -0
- package/dist/components/TextField.js.map +1 -0
- package/dist/components/Typography/Typography.d.ts +8 -0
- package/dist/components/Typography/Typography.d.ts.map +1 -0
- package/dist/components/Typography/index.d.ts +3 -0
- package/dist/components/Typography/index.d.ts.map +1 -0
- package/dist/components/Typography.js +42 -0
- package/dist/components/Typography.js.map +1 -0
- package/dist/components/index.d.ts +9 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +93 -0
- package/dist/index.js.map +1 -0
- package/dist/next.d.ts +4 -0
- package/dist/next.d.ts.map +1 -0
- package/dist/next.js +2 -0
- package/dist/next.js.map +1 -0
- package/dist/theme/ThemeProvider.d.ts +9 -0
- package/dist/theme/ThemeProvider.d.ts.map +1 -0
- package/dist/theme/ThemeScript.d.ts +11 -0
- package/dist/theme/ThemeScript.d.ts.map +1 -0
- package/dist/theme/components/Button.d.ts +3 -0
- package/dist/theme/components/Button.d.ts.map +1 -0
- package/dist/theme/components/Paper.d.ts +3 -0
- package/dist/theme/components/Paper.d.ts.map +1 -0
- package/dist/theme/components/TextField.d.ts +3 -0
- package/dist/theme/components/TextField.d.ts.map +1 -0
- package/dist/theme/components/index.d.ts +4 -0
- package/dist/theme/components/index.d.ts.map +1 -0
- package/dist/theme/createTheme.d.ts +2 -0
- package/dist/theme/createTheme.d.ts.map +1 -0
- package/dist/theme/cssVariableGenerator.d.ts +4 -0
- package/dist/theme/cssVariableGenerator.d.ts.map +1 -0
- package/dist/theme/index.d.ts +8 -0
- package/dist/theme/index.d.ts.map +1 -0
- package/dist/theme/palette.d.ts +88 -0
- package/dist/theme/palette.d.ts.map +1 -0
- package/dist/theme/semanticTokens.d.ts +142 -0
- package/dist/theme/semanticTokens.d.ts.map +1 -0
- package/dist/theme/useTheme.d.ts +12 -0
- package/dist/theme/useTheme.d.ts.map +1 -0
- package/package.json +87 -0
- package/readme.md +460 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../lib/theme/useTheme.ts","../lib/theme/ThemeProvider.tsx"],"sourcesContent":["import { useContext, createContext } from \"react\";\n\nexport interface ThemeContextType {\n /** Current color scheme */\n colorScheme: \"light\" | \"dark\";\n /** Toggle between light and dark themes */\n toggleColorScheme: () => void;\n /** Set specific theme (useful for theme selection UI) */\n setTheme: (theme: \"light\" | \"dark\") => void;\n /** Whether React has finished hydrating (safe to show theme-dependent content) */\n isHydrated: boolean;\n /** localStorage key used for persistence */\n storageKey: string;\n /** HTML attribute used for theme */\n attribute: string;\n}\n\nexport const ThemeContext = createContext<ThemeContextType | undefined>(undefined);\n\n/**\n * Hook to access and control theme state.\n * \n * @example Basic usage\n * ```tsx\n * function ThemeToggle() {\n * const { colorScheme, toggleColorScheme } = useTheme();\n * \n * return (\n * <button onClick={toggleColorScheme}>\n * Current: {colorScheme}\n * </button>\n * );\n * }\n * ```\n * \n * @example Theme selection UI\n * ```tsx\n * function ThemeSelector() {\n * const { colorScheme, setTheme } = useTheme();\n * \n * return (\n * <div>\n * <button \n * onClick={() => setTheme('light')}\n * data-active={colorScheme === 'light'}\n * >\n * Light\n * </button>\n * <button \n * onClick={() => setTheme('dark')}\n * data-active={colorScheme === 'dark'}\n * >\n * Dark\n * </button>\n * </div>\n * );\n * }\n * ```\n * \n * @example Conditional rendering based on hydration\n * ```tsx\n * function ClientOnlyComponent() {\n * const { isHydrated } = useTheme();\n * \n * if (!isHydrated) {\n * return <div>Loading...</div>;\n * }\n * \n * return <ComplexInteractiveWidget />;\n * }\n * ```\n */\nexport const useTheme = (): ThemeContextType => {\n const context = useContext(ThemeContext);\n \n if (!context) {\n throw new Error(\n \"useTheme must be used within a ThemeProvider. \" +\n \"Make sure to wrap your app with <ThemeProvider>.\"\n );\n }\n \n return context;\n};\n\n/**\n * Utility hook for components that need to check if they're running on the client\n * after hydration. This is useful for components that should only render on the client.\n * \n * @example\n * ```tsx\n * function ClientOnlyWidget() {\n * const isClient = useIsClient();\n * \n * if (!isClient) return null;\n * \n * return <ComplexClientFeature />;\n * }\n * ```\n */\nexport const useIsClient = (): boolean => {\n const { isHydrated } = useTheme();\n return isHydrated;\n};","import CssBaseline from \"@mui/material/CssBaseline\";\nimport { ThemeProvider as MuiThemeProvider } from \"@mui/material/styles\";\nimport React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { createQuantumTheme } from \"./createTheme\";\nimport { ThemeContext } from \"./useTheme\";\n\nexport interface ThemeProviderProps {\n children: React.ReactNode;\n /**\n * Default color scheme to use on first load\n * Should match the defaultColorScheme used in ThemeScript\n * @default \"light\"\n */\n defaultColorScheme?: \"light\" | \"dark\";\n /**\n * localStorage key to sync theme preference\n * Should match the storageKey used in ThemeScript\n * @default \"quantum-color-scheme\"\n */\n storageKey?: string;\n /**\n * HTML attribute that ThemeScript uses for theme\n * Should match the attribute used in ThemeScript\n * @default \"data-theme\"\n */\n attribute?: string;\n}\n\n/**\n * Enhanced ThemeProvider that works seamlessly with ThemeScript.\n *\n * ThemeScript handles:\n * - Initial DOM theme application (prevents flickering)\n * - Blocking script execution before React loads\n *\n * ThemeProvider handles:\n * - React state management and context\n * - SSR-safe hydration\n * - Theme toggling and persistence\n * - Performance optimization\n *\n * @example\n * ```tsx\n * // 1. Add ThemeScript to prevent flickering\n * <ThemeScript defaultColorScheme=\"light\" />\n *\n * // 2. Wrap app with ThemeProvider\n * <ThemeProvider defaultColorScheme=\"light\">\n * <App />\n * </ThemeProvider>\n * ```\n */\nexport const ThemeProvider: React.FC<ThemeProviderProps> = ({\n children,\n defaultColorScheme = \"light\",\n storageKey = \"quantum-color-scheme\",\n attribute = \"data-theme\",\n}) => {\n // SSR-safe state initialization - always start with default\n const [colorScheme, setColorScheme] = useState<\"light\" | \"dark\">(\n defaultColorScheme\n );\n const [isHydrated, setIsHydrated] = useState(false);\n\n // Memoized theme creation - only recreate when colorScheme changes\n const theme = useMemo(() => createQuantumTheme(colorScheme), [colorScheme]);\n\n // Hydration effect - sync with ThemeScript's applied theme\n useEffect(() => {\n // Skip on server\n if (typeof window === \"undefined\") return;\n\n const syncWithDOM = () => {\n // Read the actual theme from DOM (set by ThemeScript)\n const domTheme = document.documentElement.getAttribute(attribute);\n const isValidTheme = domTheme === \"light\" || domTheme === \"dark\";\n\n // Only sync with DOM on initial hydration, not on subsequent renders\n if (isValidTheme && !isHydrated) {\n setColorScheme(domTheme as \"light\" | \"dark\");\n }\n\n setIsHydrated(true);\n };\n\n // Sync immediately if DOM is ready, otherwise wait\n if (document.readyState === \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", syncWithDOM);\n return () =>\n document.removeEventListener(\"DOMContentLoaded\", syncWithDOM);\n } else {\n syncWithDOM();\n }\n }, [attribute]); // Remove isHydrated dependency to prevent re-runs\n\n // Theme change effect - update DOM and localStorage when React state changes\n useEffect(() => {\n // Skip on server\n if (typeof window === \"undefined\") return;\n \n // Skip if not hydrated yet (let the hydration effect handle initial sync)\n if (!isHydrated) return;\n\n // Update DOM attribute\n document.documentElement.setAttribute(attribute, colorScheme);\n\n // Persist to localStorage\n try {\n localStorage.setItem(storageKey, colorScheme);\n } catch (error) {\n // Gracefully handle localStorage errors (private browsing, etc.)\n console.warn(\"Failed to save theme preference:\", error);\n }\n }, [colorScheme, isHydrated, storageKey, attribute]);\n\n // Optimized theme toggle function\n const toggleColorScheme = useCallback(() => {\n setColorScheme((current) => (current === \"light\" ? \"dark\" : \"light\"));\n }, []);\n\n // Set specific theme (useful for theme selection UI)\n const setTheme = useCallback((newTheme: \"light\" | \"dark\") => {\n setColorScheme(newTheme);\n }, []);\n\n // Memoized context value to prevent unnecessary re-renders\n const contextValue = useMemo(\n () => ({\n colorScheme,\n toggleColorScheme,\n setTheme,\n isHydrated,\n // Expose configuration for debugging/advanced usage\n storageKey,\n attribute,\n }),\n [\n colorScheme,\n toggleColorScheme,\n setTheme,\n isHydrated,\n storageKey,\n attribute,\n ]\n );\n\n return (\n <ThemeContext.Provider value={contextValue}>\n <MuiThemeProvider theme={theme}>\n <CssBaseline />\n {children}\n </MuiThemeProvider>\n </ThemeContext.Provider>\n );\n};\n"],"names":["MuiThemeProvider"],"mappings":"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"}
|
package/dist/next.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"next.d.ts","sourceRoot":"","sources":["../lib/next.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC"}
|
package/dist/next.js
ADDED
package/dist/next.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"next.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
export interface ThemeProviderProps {
|
|
3
|
+
children: React.ReactNode;
|
|
4
|
+
defaultColorScheme?: "light" | "dark";
|
|
5
|
+
storageKey?: string;
|
|
6
|
+
attribute?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare const ThemeProvider: React.FC<ThemeProviderProps>;
|
|
9
|
+
//# sourceMappingURL=ThemeProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThemeProvider.d.ts","sourceRoot":"","sources":["../../lib/theme/ThemeProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAoD,MAAM,OAAO,CAAC;AAIzE,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAM1B,kBAAkB,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAMtC,UAAU,CAAC,EAAE,MAAM,CAAC;IAMpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA0BD,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAsGtD,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
interface ThemeScriptProps {
|
|
3
|
+
defaultColorScheme?: 'light' | 'dark';
|
|
4
|
+
storageKey?: string;
|
|
5
|
+
attribute?: string;
|
|
6
|
+
preventFlickering?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare const ThemeScript: React.FC<ThemeScriptProps>;
|
|
9
|
+
export declare const getThemeScript: (options?: ThemeScriptProps) => string;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=ThemeScript.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThemeScript.d.ts","sourceRoot":"","sources":["../../lib/theme/ThemeScript.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,UAAU,gBAAgB;IAKxB,kBAAkB,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAMtC,UAAU,CAAC,EAAE,MAAM,CAAC;IAMpB,SAAS,CAAC,EAAE,MAAM,CAAC;IAMnB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAoCD,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAoDlD,CAAC;AAGF,eAAO,MAAM,cAAc,GAAI,UAAS,gBAAqB,WA0C5D,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../../lib/theme/components/Button.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAE9D,eAAO,MAAM,WAAW,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,WAAW,CAuQtD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Paper.d.ts","sourceRoot":"","sources":["../../../lib/theme/components/Paper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAE9D,eAAO,MAAM,UAAU,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,UAAU,CA6EpD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TextField.d.ts","sourceRoot":"","sources":["../../../lib/theme/components/TextField.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAE9D,eAAO,MAAM,cAAc,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,cAAc,CAoM5D,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/theme/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createTheme.d.ts","sourceRoot":"","sources":["../../lib/theme/createTheme.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,kBAAkB,GAAI,MAAM,OAAO,GAAG,MAAM,kCA4OxD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cssVariableGenerator.d.ts","sourceRoot":"","sources":["../../lib/theme/cssVariableGenerator.ts"],"names":[],"mappings":"AAAA,KAAK,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE5D,eAAO,MAAM,8BAA8B,GACzC,QAAQ,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,EAClC,SAAQ,MAAkB,KACzB,MAAM,CAAC,MAAM,EAAE,MAAM,CAoBvB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { createQuantumTheme } from './createTheme';
|
|
2
|
+
export { ThemeProvider } from './ThemeProvider';
|
|
3
|
+
export type { ThemeProviderProps } from './ThemeProvider';
|
|
4
|
+
export { useTheme, useIsClient } from './useTheme';
|
|
5
|
+
export type { ThemeContextType } from './useTheme';
|
|
6
|
+
export { SEMANTIC_TOKENS } from './semanticTokens';
|
|
7
|
+
export { ThemeScript, getThemeScript } from './ThemeScript';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/theme/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACnD,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
export declare const palette: {
|
|
2
|
+
readonly universalBlue: {
|
|
3
|
+
readonly 25: "#F8FAFF";
|
|
4
|
+
readonly 50: "#EBF4FF";
|
|
5
|
+
readonly 100: "#DBE9FF";
|
|
6
|
+
readonly 200: "#B8D4FF";
|
|
7
|
+
readonly 300: "#85B8FF";
|
|
8
|
+
readonly 400: "#4A95FF";
|
|
9
|
+
readonly 500: "#0066CC";
|
|
10
|
+
readonly 600: "#0052A3";
|
|
11
|
+
readonly 700: "#003D7A";
|
|
12
|
+
readonly 800: "#002952";
|
|
13
|
+
readonly 900: "#001529";
|
|
14
|
+
readonly 950: "#000A14";
|
|
15
|
+
};
|
|
16
|
+
readonly lightNeutral: {
|
|
17
|
+
readonly 50: "#FFFFFF";
|
|
18
|
+
readonly 100: "#F8F9FA";
|
|
19
|
+
readonly 200: "#E9ECEF";
|
|
20
|
+
readonly 300: "#DEE2E6";
|
|
21
|
+
readonly 400: "#CED4DA";
|
|
22
|
+
readonly 500: "#6C757D";
|
|
23
|
+
readonly 600: "#495057";
|
|
24
|
+
readonly 700: "#343A40";
|
|
25
|
+
readonly 800: "#212529";
|
|
26
|
+
readonly 900: "#000000";
|
|
27
|
+
readonly 950: "#000000";
|
|
28
|
+
};
|
|
29
|
+
readonly darkNeutral: {
|
|
30
|
+
readonly 50: "#FFFFFF";
|
|
31
|
+
readonly 100: "#F8F9FA";
|
|
32
|
+
readonly 200: "#E9ECEF";
|
|
33
|
+
readonly 300: "#CED4DA";
|
|
34
|
+
readonly 400: "#6C757D";
|
|
35
|
+
readonly 500: "#495057";
|
|
36
|
+
readonly 600: "#343A40";
|
|
37
|
+
readonly 700: "#212529";
|
|
38
|
+
readonly 800: "#1A1D20";
|
|
39
|
+
readonly 900: "#0D1117";
|
|
40
|
+
readonly 950: "#000000";
|
|
41
|
+
};
|
|
42
|
+
readonly emeraldAccent: {
|
|
43
|
+
readonly 50: "#ECFDF5";
|
|
44
|
+
readonly 100: "#D1FAE5";
|
|
45
|
+
readonly 200: "#A7F3D0";
|
|
46
|
+
readonly 300: "#6EE7B7";
|
|
47
|
+
readonly 400: "#34D399";
|
|
48
|
+
readonly 500: "#10B981";
|
|
49
|
+
readonly 600: "#059669";
|
|
50
|
+
readonly 700: "#047857";
|
|
51
|
+
readonly 800: "#065F46";
|
|
52
|
+
readonly 900: "#064E3B";
|
|
53
|
+
readonly 950: "#022C22";
|
|
54
|
+
};
|
|
55
|
+
readonly red: {
|
|
56
|
+
readonly 50: "#FEF2F2";
|
|
57
|
+
readonly 400: "#F87171";
|
|
58
|
+
readonly 500: "#DC2626";
|
|
59
|
+
readonly 600: "#B91C1C";
|
|
60
|
+
readonly 700: "#991B1B";
|
|
61
|
+
};
|
|
62
|
+
readonly amber: {
|
|
63
|
+
readonly 50: "#FFFBEB";
|
|
64
|
+
readonly 400: "#FBBF24";
|
|
65
|
+
readonly 500: "#D97706";
|
|
66
|
+
readonly 600: "#B45309";
|
|
67
|
+
readonly 700: "#92400E";
|
|
68
|
+
};
|
|
69
|
+
readonly emerald: {
|
|
70
|
+
readonly 50: "#ECFDF5";
|
|
71
|
+
readonly 400: "#34D399";
|
|
72
|
+
readonly 500: "#059669";
|
|
73
|
+
readonly 600: "#047857";
|
|
74
|
+
readonly 700: "#065F46";
|
|
75
|
+
};
|
|
76
|
+
readonly blue: {
|
|
77
|
+
readonly 50: "#EFF6FF";
|
|
78
|
+
readonly 400: "#60A5FA";
|
|
79
|
+
readonly 500: "#2563EB";
|
|
80
|
+
readonly 600: "#1D4ED8";
|
|
81
|
+
readonly 700: "#1E40AF";
|
|
82
|
+
};
|
|
83
|
+
readonly pure: {
|
|
84
|
+
readonly white: "#FFFFFF";
|
|
85
|
+
readonly black: "#000000";
|
|
86
|
+
};
|
|
87
|
+
};
|
|
88
|
+
//# sourceMappingURL=palette.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"palette.d.ts","sourceRoot":"","sources":["../../lib/theme/palette.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoGV,CAAC"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
interface ColorDefinition {
|
|
2
|
+
light: string;
|
|
3
|
+
dark: string;
|
|
4
|
+
needsRGB?: boolean;
|
|
5
|
+
}
|
|
6
|
+
interface ResponsiveValue<T> {
|
|
7
|
+
mobile: T;
|
|
8
|
+
tablet: T;
|
|
9
|
+
desktop: T;
|
|
10
|
+
}
|
|
11
|
+
interface TypographyVariant {
|
|
12
|
+
fontSize: ResponsiveValue<string>;
|
|
13
|
+
lineHeight: ResponsiveValue<number>;
|
|
14
|
+
fontWeight: number;
|
|
15
|
+
letterSpacing?: string;
|
|
16
|
+
fontFamily: "display" | "primary";
|
|
17
|
+
}
|
|
18
|
+
export declare const SEMANTIC_TOKENS: {
|
|
19
|
+
readonly colors: {
|
|
20
|
+
readonly action: {
|
|
21
|
+
readonly primary: ColorDefinition;
|
|
22
|
+
readonly secondary: ColorDefinition;
|
|
23
|
+
readonly destructive: ColorDefinition;
|
|
24
|
+
};
|
|
25
|
+
readonly surface: {
|
|
26
|
+
readonly primary: ColorDefinition;
|
|
27
|
+
readonly input: ColorDefinition;
|
|
28
|
+
readonly secondary: ColorDefinition;
|
|
29
|
+
readonly elevated: ColorDefinition;
|
|
30
|
+
readonly glass: ColorDefinition;
|
|
31
|
+
readonly glassHover: ColorDefinition;
|
|
32
|
+
readonly interactive: ColorDefinition;
|
|
33
|
+
readonly overlay: ColorDefinition;
|
|
34
|
+
};
|
|
35
|
+
readonly text: {
|
|
36
|
+
readonly primary: ColorDefinition;
|
|
37
|
+
readonly secondary: ColorDefinition;
|
|
38
|
+
readonly disabled: ColorDefinition;
|
|
39
|
+
};
|
|
40
|
+
readonly feedback: {
|
|
41
|
+
readonly success: ColorDefinition;
|
|
42
|
+
readonly warning: ColorDefinition;
|
|
43
|
+
readonly error: ColorDefinition;
|
|
44
|
+
readonly info: ColorDefinition;
|
|
45
|
+
};
|
|
46
|
+
readonly border: {
|
|
47
|
+
readonly default: ColorDefinition;
|
|
48
|
+
readonly subtle: ColorDefinition;
|
|
49
|
+
readonly glass: ColorDefinition;
|
|
50
|
+
readonly glassAccent: ColorDefinition;
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
readonly effects: {
|
|
54
|
+
readonly shimmer: ColorDefinition;
|
|
55
|
+
};
|
|
56
|
+
readonly borderRadius: {
|
|
57
|
+
readonly none: ResponsiveValue<string>;
|
|
58
|
+
readonly small: ResponsiveValue<string>;
|
|
59
|
+
readonly medium: ResponsiveValue<string>;
|
|
60
|
+
readonly large: ResponsiveValue<string>;
|
|
61
|
+
readonly full: ResponsiveValue<string>;
|
|
62
|
+
};
|
|
63
|
+
readonly shadows: {
|
|
64
|
+
readonly small: ColorDefinition;
|
|
65
|
+
readonly medium: ColorDefinition;
|
|
66
|
+
readonly large: ColorDefinition;
|
|
67
|
+
readonly glass: ColorDefinition;
|
|
68
|
+
readonly glassInset: ColorDefinition;
|
|
69
|
+
readonly textField: ColorDefinition;
|
|
70
|
+
};
|
|
71
|
+
readonly glassmorphism: {
|
|
72
|
+
readonly backdrop: ColorDefinition;
|
|
73
|
+
readonly backdropLight: ColorDefinition;
|
|
74
|
+
readonly backdropHeavy: ColorDefinition;
|
|
75
|
+
};
|
|
76
|
+
readonly animation: {
|
|
77
|
+
readonly duration: {
|
|
78
|
+
readonly fast: "150ms";
|
|
79
|
+
readonly normal: "200ms";
|
|
80
|
+
readonly slow: "300ms";
|
|
81
|
+
};
|
|
82
|
+
readonly easing: {
|
|
83
|
+
readonly standard: "cubic-bezier(0.4, 0.0, 0.2, 1)";
|
|
84
|
+
readonly decelerate: "cubic-bezier(0.0, 0.0, 0.2, 1)";
|
|
85
|
+
readonly accelerate: "cubic-bezier(0.4, 0.0, 1, 1)";
|
|
86
|
+
};
|
|
87
|
+
};
|
|
88
|
+
readonly typography: {
|
|
89
|
+
readonly fontFamily: {
|
|
90
|
+
readonly display: "'Space Grotesk', -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif";
|
|
91
|
+
readonly primary: "'Quicksand','Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif";
|
|
92
|
+
};
|
|
93
|
+
readonly fontWeight: {
|
|
94
|
+
readonly light: 300;
|
|
95
|
+
readonly normal: 400;
|
|
96
|
+
readonly medium: 500;
|
|
97
|
+
readonly semibold: 600;
|
|
98
|
+
readonly bold: 700;
|
|
99
|
+
};
|
|
100
|
+
readonly variants: {
|
|
101
|
+
readonly display: TypographyVariant;
|
|
102
|
+
readonly h1: TypographyVariant;
|
|
103
|
+
readonly h2: TypographyVariant;
|
|
104
|
+
readonly h3: TypographyVariant;
|
|
105
|
+
readonly h4: TypographyVariant;
|
|
106
|
+
readonly h5: TypographyVariant;
|
|
107
|
+
readonly h6: TypographyVariant;
|
|
108
|
+
readonly body1: TypographyVariant;
|
|
109
|
+
readonly body2: TypographyVariant;
|
|
110
|
+
readonly button: TypographyVariant;
|
|
111
|
+
readonly caption: TypographyVariant;
|
|
112
|
+
};
|
|
113
|
+
};
|
|
114
|
+
readonly textField: {
|
|
115
|
+
readonly height: ResponsiveValue<string>;
|
|
116
|
+
readonly minWidth: ResponsiveValue<string>;
|
|
117
|
+
readonly fontSize: ResponsiveValue<string>;
|
|
118
|
+
readonly spacing: {
|
|
119
|
+
readonly paddingTop: ResponsiveValue<string>;
|
|
120
|
+
readonly paddingBottom: ResponsiveValue<string>;
|
|
121
|
+
readonly paddingLeft: ResponsiveValue<string>;
|
|
122
|
+
};
|
|
123
|
+
};
|
|
124
|
+
readonly spacing: {
|
|
125
|
+
readonly tight: ResponsiveValue<string>;
|
|
126
|
+
readonly normal: ResponsiveValue<string>;
|
|
127
|
+
readonly comfortable: ResponsiveValue<string>;
|
|
128
|
+
readonly spacious: ResponsiveValue<string>;
|
|
129
|
+
readonly loose: ResponsiveValue<string>;
|
|
130
|
+
};
|
|
131
|
+
};
|
|
132
|
+
interface ThemeVariables {
|
|
133
|
+
lightMobile: Record<string, string>;
|
|
134
|
+
lightTablet: Record<string, string>;
|
|
135
|
+
lightDesktop: Record<string, string>;
|
|
136
|
+
darkMobile: Record<string, string>;
|
|
137
|
+
darkTablet: Record<string, string>;
|
|
138
|
+
darkDesktop: Record<string, string>;
|
|
139
|
+
}
|
|
140
|
+
export declare const getAllThemeVariables: () => ThemeVariables;
|
|
141
|
+
export {};
|
|
142
|
+
//# sourceMappingURL=semanticTokens.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"semanticTokens.d.ts","sourceRoot":"","sources":["../../lib/theme/semanticTokens.ts"],"names":[],"mappings":"AAGA,UAAU,eAAe;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,UAAU,eAAe,CAAC,CAAC;IACzB,MAAM,EAAE,CAAC,CAAC;IACV,MAAM,EAAE,CAAC,CAAC;IACV,OAAO,EAAE,CAAC,CAAC;CACZ;AAGD,UAAU,iBAAiB;IACzB,QAAQ,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IAClC,UAAU,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,SAAS,GAAG,SAAS,CAAC;CACnC;AAGD,eAAO,MAAM,eAAe;;;8BAQjB,eAAe;gCAKf,eAAe;kCAKf,eAAe;;;8BAQf,eAAe;4BAIf,eAAe;gCAIf,eAAe;+BAIf,eAAe;4BAIf,eAAe;iCAIf,eAAe;kCAIf,eAAe;8BAKf,eAAe;;;8BASf,eAAe;gCAIf,eAAe;+BAIf,eAAe;;;8BASf,eAAe;8BAKf,eAAe;4BAKf,eAAe;2BAIf,eAAe;;;8BAQf,eAAe;6BAIf,eAAe;4BAIf,eAAe;kCAIf,eAAe;;;;0BASjB,eAAe;;;uBASf,eAAe,CAAC,MAAM,CAAC;wBAKvB,eAAe,CAAC,MAAM,CAAC;yBAKvB,eAAe,CAAC,MAAM,CAAC;wBAKvB,eAAe,CAAC,MAAM,CAAC;uBAKvB,eAAe,CAAC,MAAM,CAAC;;;wBAQvB,eAAe;yBAIf,eAAe;wBAIf,eAAe;wBAIf,eAAe;6BAIf,eAAe;4BAKf,eAAe;;;2BAQf,eAAe;gCAIf,eAAe;gCAIf,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;8BAuDb,iBAAiB;yBAgBjB,iBAAiB;yBAgBjB,iBAAiB;yBAgBjB,iBAAiB;yBAgBjB,iBAAiB;yBAgBjB,iBAAiB;yBAgBjB,iBAAiB;4BAgBjB,iBAAiB;4BAgBjB,iBAAiB;6BAgBjB,iBAAiB;8BAgBjB,iBAAiB;;;;yBAUnB,eAAe,CAAC,MAAM,CAAC;2BAKvB,eAAe,CAAC,MAAM,CAAC;2BAKvB,eAAe,CAAC,MAAM,CAAC;;iCAMrB,eAAe,CAAC,MAAM,CAAC;oCAKvB,eAAe,CAAC,MAAM,CAAC;kCAKvB,eAAe,CAAC,MAAM,CAAC;;;;wBAUzB,eAAe,CAAC,MAAM,CAAC;yBAKvB,eAAe,CAAC,MAAM,CAAC;8BAKvB,eAAe,CAAC,MAAM,CAAC;2BAKvB,eAAe,CAAC,MAAM,CAAC;wBAKvB,eAAe,CAAC,MAAM,CAAC;;CAEtB,CAAC;AAoBX,UAAU,cAAc;IACtB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC;AAED,eAAO,MAAM,oBAAoB,QAAO,cA0IvC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface ThemeContextType {
|
|
2
|
+
colorScheme: "light" | "dark";
|
|
3
|
+
toggleColorScheme: () => void;
|
|
4
|
+
setTheme: (theme: "light" | "dark") => void;
|
|
5
|
+
isHydrated: boolean;
|
|
6
|
+
storageKey: string;
|
|
7
|
+
attribute: string;
|
|
8
|
+
}
|
|
9
|
+
export declare const ThemeContext: import('react').Context<ThemeContextType | undefined>;
|
|
10
|
+
export declare const useTheme: () => ThemeContextType;
|
|
11
|
+
export declare const useIsClient: () => boolean;
|
|
12
|
+
//# sourceMappingURL=useTheme.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTheme.d.ts","sourceRoot":"","sources":["../../lib/theme/useTheme.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,gBAAgB;IAE/B,WAAW,EAAE,OAAO,GAAG,MAAM,CAAC;IAE9B,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAE9B,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,KAAK,IAAI,CAAC;IAE5C,UAAU,EAAE,OAAO,CAAC;IAEpB,UAAU,EAAE,MAAM,CAAC;IAEnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,YAAY,uDAAyD,CAAC;AAuDnF,eAAO,MAAM,QAAQ,QAAO,gBAW3B,CAAC;AAiBF,eAAO,MAAM,WAAW,QAAO,OAG9B,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@vritti/quantum-ui",
|
|
3
|
+
"private": false,
|
|
4
|
+
"publishConfig": {
|
|
5
|
+
"access": "public"
|
|
6
|
+
},
|
|
7
|
+
"version": "0.1.0",
|
|
8
|
+
"type": "module",
|
|
9
|
+
"sideEffects": false,
|
|
10
|
+
"main": "./dist/index.js",
|
|
11
|
+
"module": "./dist/index.js",
|
|
12
|
+
"types": "./dist/index.d.ts",
|
|
13
|
+
"exports": {
|
|
14
|
+
".": {
|
|
15
|
+
"types": "./dist/index.d.ts",
|
|
16
|
+
"import": "./dist/index.js"
|
|
17
|
+
},
|
|
18
|
+
"./Button": {
|
|
19
|
+
"types": "./dist/components/Button/index.d.ts",
|
|
20
|
+
"import": "./dist/components/Button.js"
|
|
21
|
+
},
|
|
22
|
+
"./TextField": {
|
|
23
|
+
"types": "./dist/components/TextField/index.d.ts",
|
|
24
|
+
"import": "./dist/components/TextField.js"
|
|
25
|
+
},
|
|
26
|
+
"./Paper": {
|
|
27
|
+
"types": "./dist/components/Paper/index.d.ts",
|
|
28
|
+
"import": "./dist/components/Paper.js"
|
|
29
|
+
},
|
|
30
|
+
"./Typography": {
|
|
31
|
+
"types": "./dist/components/Typography/index.d.ts",
|
|
32
|
+
"import": "./dist/components/Typography.js"
|
|
33
|
+
},
|
|
34
|
+
"./next": {
|
|
35
|
+
"types": "./dist/next.d.ts",
|
|
36
|
+
"import": "./dist/next.js"
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
"files": [
|
|
40
|
+
"dist"
|
|
41
|
+
],
|
|
42
|
+
"scripts": {
|
|
43
|
+
"dev": "vite",
|
|
44
|
+
"build": "tsc --project tsconfig.lib.json --emitDeclarationOnly && vite build",
|
|
45
|
+
"build:js": "vite build",
|
|
46
|
+
"build:types": "tsc --project tsconfig.lib.json --emitDeclarationOnly",
|
|
47
|
+
"build:watch": "npm run build:types && vite build --watch",
|
|
48
|
+
"lint": "eslint .",
|
|
49
|
+
"preview": "vite preview",
|
|
50
|
+
"storybook": "storybook dev -p 6006",
|
|
51
|
+
"build-storybook": "storybook build",
|
|
52
|
+
"build-storybook:github": "NODE_ENV=production storybook build"
|
|
53
|
+
},
|
|
54
|
+
"peerDependencies": {
|
|
55
|
+
"@emotion/react": "^11.0.0",
|
|
56
|
+
"@emotion/styled": "^11.0.0",
|
|
57
|
+
"@mui/material": "^6.0.0 || ^7.0.0",
|
|
58
|
+
"react": "^18.0.0 || ^19.0.0",
|
|
59
|
+
"react-dom": "^18.0.0 || ^19.0.0"
|
|
60
|
+
},
|
|
61
|
+
"devDependencies": {
|
|
62
|
+
"@emotion/react": "^11.14.0",
|
|
63
|
+
"@emotion/styled": "^11.14.0",
|
|
64
|
+
"@eslint/js": "^9.25.0",
|
|
65
|
+
"@mui/material": "^7.1.0",
|
|
66
|
+
"@storybook/react-vite": "^9.0.6",
|
|
67
|
+
"@types/node": "^22.15.30",
|
|
68
|
+
"@types/react": "^19.1.2",
|
|
69
|
+
"@types/react-dom": "^19.1.2",
|
|
70
|
+
"@vitejs/plugin-react": "^4.4.1",
|
|
71
|
+
"ajv": "^8.17.1",
|
|
72
|
+
"eslint": "^9.25.0",
|
|
73
|
+
"eslint-plugin-react-hooks": "^5.2.0",
|
|
74
|
+
"eslint-plugin-react-refresh": "^0.4.19",
|
|
75
|
+
"eslint-plugin-storybook": "^9.0.6",
|
|
76
|
+
"glob": "^11.0.2",
|
|
77
|
+
"globals": "^16.0.0",
|
|
78
|
+
"react": "^19.1.0",
|
|
79
|
+
"react-dom": "^19.1.0",
|
|
80
|
+
"storybook": "^9.0.6",
|
|
81
|
+
"typescript": "~5.8.3",
|
|
82
|
+
"typescript-eslint": "^8.30.1",
|
|
83
|
+
"vite": "^6.3.5",
|
|
84
|
+
"vite-plugin-dts": "^4.5.4",
|
|
85
|
+
"vite-plugin-lib-inject-css": "^2.2.2"
|
|
86
|
+
}
|
|
87
|
+
}
|