@wealthx/ui 0.0.1 → 1.0.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/.turbo/turbo-build.log +24 -0
- package/CHANGELOG.md +11 -0
- package/dist/button.d.mts +9 -0
- package/dist/button.d.ts +9 -0
- package/dist/button.js +59 -0
- package/dist/button.mjs +14 -0
- package/dist/chunk-FWCSY2DS.mjs +37 -0
- package/dist/chunk-I4E63NIC.mjs +24 -0
- package/dist/theme/index.d.mts +246 -0
- package/dist/theme/index.d.ts +246 -0
- package/dist/theme/index.js +687 -0
- package/dist/theme/index.mjs +615 -0
- package/package.json +1 -1
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
|
|
2
|
+
[2K[1G[1myarn run v1.22.22[22m
|
|
3
|
+
[2K[1G[2m$ tsup[22m
|
|
4
|
+
[34mCLI[39m Building entry: src/button.tsx, src/theme/index.ts
|
|
5
|
+
[34mCLI[39m Using tsconfig: tsconfig.json
|
|
6
|
+
[34mCLI[39m tsup v8.5.1
|
|
7
|
+
[34mCLI[39m Using tsup config: /Users/mac/Projects/wealthx-ui/packages/ui/tsup.config.ts
|
|
8
|
+
[34mCLI[39m Target: es6
|
|
9
|
+
[34mCJS[39m Build start
|
|
10
|
+
[34mESM[39m Build start
|
|
11
|
+
[32mESM[39m [1mdist/button.mjs [22m[32m310.00 B[39m
|
|
12
|
+
[32mESM[39m [1mdist/theme/index.mjs [22m[32m19.03 KB[39m
|
|
13
|
+
[32mESM[39m [1mdist/chunk-I4E63NIC.mjs [22m[32m900.00 B[39m
|
|
14
|
+
[32mESM[39m ⚡️ Build success in 17ms
|
|
15
|
+
[32mCJS[39m [1mdist/button.js [22m[32m2.46 KB[39m
|
|
16
|
+
[32mCJS[39m [1mdist/theme/index.js [22m[32m22.54 KB[39m
|
|
17
|
+
[32mCJS[39m ⚡️ Build success in 17ms
|
|
18
|
+
DTS Build start
|
|
19
|
+
DTS ⚡️ Build success in 2837ms
|
|
20
|
+
DTS dist/button.d.ts 258.00 B
|
|
21
|
+
DTS dist/theme/index.d.ts 8.43 KB
|
|
22
|
+
DTS dist/button.d.mts 258.00 B
|
|
23
|
+
DTS dist/theme/index.d.mts 8.43 KB
|
|
24
|
+
[2K[1G✨ Done in 3.96s.
|
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ButtonProps as ButtonProps$1 } from '@mui/material/Button';
|
|
2
|
+
|
|
3
|
+
type ButtonProps = ButtonProps$1;
|
|
4
|
+
declare function Button(props: ButtonProps): JSX.Element;
|
|
5
|
+
declare namespace Button {
|
|
6
|
+
var displayName: string;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export { Button, type ButtonProps };
|
package/dist/button.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ButtonProps as ButtonProps$1 } from '@mui/material/Button';
|
|
2
|
+
|
|
3
|
+
type ButtonProps = ButtonProps$1;
|
|
4
|
+
declare function Button(props: ButtonProps): JSX.Element;
|
|
5
|
+
declare namespace Button {
|
|
6
|
+
var displayName: string;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export { Button, type ButtonProps };
|
package/dist/button.js
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
7
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
8
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
9
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
10
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
11
|
+
var __spreadValues = (a, b) => {
|
|
12
|
+
for (var prop in b || (b = {}))
|
|
13
|
+
if (__hasOwnProp.call(b, prop))
|
|
14
|
+
__defNormalProp(a, prop, b[prop]);
|
|
15
|
+
if (__getOwnPropSymbols)
|
|
16
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
17
|
+
if (__propIsEnum.call(b, prop))
|
|
18
|
+
__defNormalProp(a, prop, b[prop]);
|
|
19
|
+
}
|
|
20
|
+
return a;
|
|
21
|
+
};
|
|
22
|
+
var __export = (target, all) => {
|
|
23
|
+
for (var name in all)
|
|
24
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
25
|
+
};
|
|
26
|
+
var __copyProps = (to, from, except, desc) => {
|
|
27
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
28
|
+
for (let key of __getOwnPropNames(from))
|
|
29
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
30
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
31
|
+
}
|
|
32
|
+
return to;
|
|
33
|
+
};
|
|
34
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
35
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
36
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
37
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
38
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
39
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
40
|
+
mod
|
|
41
|
+
));
|
|
42
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
43
|
+
|
|
44
|
+
// src/button.tsx
|
|
45
|
+
var button_exports = {};
|
|
46
|
+
__export(button_exports, {
|
|
47
|
+
Button: () => Button
|
|
48
|
+
});
|
|
49
|
+
module.exports = __toCommonJS(button_exports);
|
|
50
|
+
var import_Button = __toESM(require("@mui/material/Button"));
|
|
51
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
52
|
+
function Button(props) {
|
|
53
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_Button.default, __spreadValues({}, props));
|
|
54
|
+
}
|
|
55
|
+
Button.displayName = "Button";
|
|
56
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
57
|
+
0 && (module.exports = {
|
|
58
|
+
Button
|
|
59
|
+
});
|
package/dist/button.mjs
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import {
|
|
2
|
+
__spreadValues
|
|
3
|
+
} from "./chunk-I4E63NIC.mjs";
|
|
4
|
+
|
|
5
|
+
// src/button.tsx
|
|
6
|
+
import MuiButton from "@mui/material/Button";
|
|
7
|
+
import { jsx } from "react/jsx-runtime";
|
|
8
|
+
function Button(props) {
|
|
9
|
+
return /* @__PURE__ */ jsx(MuiButton, __spreadValues({}, props));
|
|
10
|
+
}
|
|
11
|
+
Button.displayName = "Button";
|
|
12
|
+
export {
|
|
13
|
+
Button
|
|
14
|
+
};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __defProps = Object.defineProperties;
|
|
3
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
4
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
7
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
8
|
+
var __spreadValues = (a, b) => {
|
|
9
|
+
for (var prop in b || (b = {}))
|
|
10
|
+
if (__hasOwnProp.call(b, prop))
|
|
11
|
+
__defNormalProp(a, prop, b[prop]);
|
|
12
|
+
if (__getOwnPropSymbols)
|
|
13
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
14
|
+
if (__propIsEnum.call(b, prop))
|
|
15
|
+
__defNormalProp(a, prop, b[prop]);
|
|
16
|
+
}
|
|
17
|
+
return a;
|
|
18
|
+
};
|
|
19
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
20
|
+
var __objRest = (source, exclude) => {
|
|
21
|
+
var target = {};
|
|
22
|
+
for (var prop in source)
|
|
23
|
+
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
|
|
24
|
+
target[prop] = source[prop];
|
|
25
|
+
if (source != null && __getOwnPropSymbols)
|
|
26
|
+
for (var prop of __getOwnPropSymbols(source)) {
|
|
27
|
+
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
|
|
28
|
+
target[prop] = source[prop];
|
|
29
|
+
}
|
|
30
|
+
return target;
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
export {
|
|
34
|
+
__spreadValues,
|
|
35
|
+
__spreadProps,
|
|
36
|
+
__objRest
|
|
37
|
+
};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __defProps = Object.defineProperties;
|
|
3
|
+
var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
|
|
4
|
+
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __propIsEnum = Object.prototype.propertyIsEnumerable;
|
|
7
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
8
|
+
var __spreadValues = (a, b) => {
|
|
9
|
+
for (var prop in b || (b = {}))
|
|
10
|
+
if (__hasOwnProp.call(b, prop))
|
|
11
|
+
__defNormalProp(a, prop, b[prop]);
|
|
12
|
+
if (__getOwnPropSymbols)
|
|
13
|
+
for (var prop of __getOwnPropSymbols(b)) {
|
|
14
|
+
if (__propIsEnum.call(b, prop))
|
|
15
|
+
__defNormalProp(a, prop, b[prop]);
|
|
16
|
+
}
|
|
17
|
+
return a;
|
|
18
|
+
};
|
|
19
|
+
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
20
|
+
|
|
21
|
+
export {
|
|
22
|
+
__spreadValues,
|
|
23
|
+
__spreadProps
|
|
24
|
+
};
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import * as _mui_material_styles from '@mui/material/styles';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Build CSS variable set for :root from tenant primary/secondary.
|
|
6
|
+
*/
|
|
7
|
+
interface DesignThemeOptions {
|
|
8
|
+
/** Tenant primary brand color (hex). */
|
|
9
|
+
primary: string;
|
|
10
|
+
/** Tenant secondary brand color (hex). */
|
|
11
|
+
secondary: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Returns a flat object of CSS variable name → value for injection into :root.
|
|
15
|
+
* Names use single dashes: --color-brand-primary, --primary-rgb, --primary-50, etc.
|
|
16
|
+
*/
|
|
17
|
+
declare function buildCssVariables(options: DesignThemeOptions): Record<string, string>;
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Provider that applies design system theme (MUI + CSS variables).
|
|
21
|
+
* Primary and secondary are tenant-based and can be set per instance.
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
interface ThemeProviderProps extends DesignThemeOptions {
|
|
25
|
+
children: React.ReactNode;
|
|
26
|
+
/** Inject CSS variables into document (default true). Set false if you inject them yourself. */
|
|
27
|
+
injectCssVariables?: boolean;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Provides MUI theme and design-system CSS variables.
|
|
31
|
+
* Use primary/secondary to set tenant brand colors; all primary/* and secondary/* tokens update automatically.
|
|
32
|
+
*/
|
|
33
|
+
declare function ThemeProvider({ children, primary, secondary, injectCssVariables, }: ThemeProviderProps): JSX.Element;
|
|
34
|
+
declare namespace ThemeProvider {
|
|
35
|
+
var displayName: string;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Create MUI theme with design system palette.
|
|
40
|
+
* Primary and secondary are tenant-based (dynamic).
|
|
41
|
+
*/
|
|
42
|
+
interface DesignThemeConfig {
|
|
43
|
+
primary: string;
|
|
44
|
+
secondary: string;
|
|
45
|
+
}
|
|
46
|
+
declare function createDesignTheme(config: DesignThemeConfig): _mui_material_styles.Theme;
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Theme utilities: hex ↔ RGB, opacity-based color generation.
|
|
50
|
+
*/
|
|
51
|
+
/**
|
|
52
|
+
* Parse hex color to RGB tuple [r, g, b] (0-255).
|
|
53
|
+
*/
|
|
54
|
+
declare function hexToRgb(hex: string): [number, number, number];
|
|
55
|
+
/**
|
|
56
|
+
* Format RGB tuple as "r, g, b" for use in rgba(var(--primary-rgb), 0.5).
|
|
57
|
+
*/
|
|
58
|
+
declare function rgbToCssRgbString(rgb: [number, number, number]): string;
|
|
59
|
+
/**
|
|
60
|
+
* Create rgba string from hex and opacity.
|
|
61
|
+
*/
|
|
62
|
+
declare function rgba(hex: string, alpha: number): string;
|
|
63
|
+
/**
|
|
64
|
+
* Build opacity scale: { "50": "rgba(...)", "100": "rgba(...)", ... }.
|
|
65
|
+
*/
|
|
66
|
+
declare function buildOpacityScale(hex: string, steps: readonly {
|
|
67
|
+
key: string;
|
|
68
|
+
opacity: number;
|
|
69
|
+
}[]): Record<string, string>;
|
|
70
|
+
/**
|
|
71
|
+
* Get relative luminance of a hex color (0 = black, 1 = white).
|
|
72
|
+
*/
|
|
73
|
+
declare function getLuminance(hex: string): number;
|
|
74
|
+
/**
|
|
75
|
+
* Returns a readable text color (hex) for a given background color.
|
|
76
|
+
* Uses WCAG relative luminance: dark text on light backgrounds, light text on dark backgrounds.
|
|
77
|
+
* Use for button labels, chips, and any text on colored backgrounds.
|
|
78
|
+
*
|
|
79
|
+
* @param backgroundColor - Hex color (e.g. "#33FF99" or "#162029")
|
|
80
|
+
* @returns "#040D13" (dark) or "#FFFFFF" (light)
|
|
81
|
+
*/
|
|
82
|
+
declare function getContrastText(backgroundColor: string): string;
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Design system - Fixed color tokens (non-tenant).
|
|
86
|
+
* Primary and secondary are tenant-based and provided at runtime.
|
|
87
|
+
*/
|
|
88
|
+
declare const FOUNDATION_COLORS: {
|
|
89
|
+
readonly brand: {
|
|
90
|
+
readonly primary: "#33FF99";
|
|
91
|
+
readonly secondary: "#162029";
|
|
92
|
+
};
|
|
93
|
+
readonly text: {
|
|
94
|
+
readonly primary: "#040D13";
|
|
95
|
+
readonly secondary: "#4A5C6A";
|
|
96
|
+
readonly disabled: "#9EAAB5";
|
|
97
|
+
readonly inverse: "#FFFFFF";
|
|
98
|
+
};
|
|
99
|
+
readonly background: {
|
|
100
|
+
readonly primary: "#FFFFFF";
|
|
101
|
+
readonly secondary: "#F5F8FA";
|
|
102
|
+
readonly tertiary: "#E8EAEC";
|
|
103
|
+
readonly elevated: "#FFFFFF";
|
|
104
|
+
};
|
|
105
|
+
readonly border: {
|
|
106
|
+
readonly default: "#E8EAEC";
|
|
107
|
+
readonly focus: "#33FF99";
|
|
108
|
+
readonly error: "#F44336";
|
|
109
|
+
};
|
|
110
|
+
readonly state: {
|
|
111
|
+
readonly error: "#F44336";
|
|
112
|
+
readonly warning: "#FF9800";
|
|
113
|
+
readonly success: "#4CAF50";
|
|
114
|
+
readonly info: "#2196F3";
|
|
115
|
+
};
|
|
116
|
+
};
|
|
117
|
+
declare const GRAY_SCALE: {
|
|
118
|
+
readonly 50: "#F6F6F8";
|
|
119
|
+
readonly 100: "#E8E8EB";
|
|
120
|
+
readonly 200: "#D9D9D9";
|
|
121
|
+
readonly 300: "#B9BCBF";
|
|
122
|
+
readonly 400: "#959495";
|
|
123
|
+
readonly 500: "#868686";
|
|
124
|
+
readonly 600: "#8A8F94";
|
|
125
|
+
};
|
|
126
|
+
declare const ACCENTS: {
|
|
127
|
+
readonly purple: "#9747FF";
|
|
128
|
+
readonly darkGreen: "#1E4620";
|
|
129
|
+
};
|
|
130
|
+
declare const OPACITY_UTILITY: {
|
|
131
|
+
readonly disabled: 0.38;
|
|
132
|
+
readonly hover: 0.08;
|
|
133
|
+
};
|
|
134
|
+
declare const CHART_COLORS: {
|
|
135
|
+
readonly background: "#F7F7F8";
|
|
136
|
+
readonly textLabels: "#000000";
|
|
137
|
+
readonly textTitle: "#757373";
|
|
138
|
+
readonly grid: "#E3E3E8";
|
|
139
|
+
readonly series: {
|
|
140
|
+
readonly blue: "#2B72FB";
|
|
141
|
+
readonly teal: "#64BDC6";
|
|
142
|
+
readonly yellow: "#EECA34";
|
|
143
|
+
readonly orange: "#FE6A35";
|
|
144
|
+
readonly red: "#FA4B42";
|
|
145
|
+
readonly pink: "#EE60E0";
|
|
146
|
+
readonly purple: "#7B47E9";
|
|
147
|
+
readonly indigo: "#5D89DF";
|
|
148
|
+
readonly lightBlue: "#6AD1FE";
|
|
149
|
+
readonly green: "#3FDC7E";
|
|
150
|
+
};
|
|
151
|
+
};
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* Design system – Typography (rem-based).
|
|
155
|
+
* Font: Proxima Nova. Base: 16px (1rem).
|
|
156
|
+
*/
|
|
157
|
+
declare const FONT_FAMILY_SANS = "\"Proxima Nova\", sans-serif";
|
|
158
|
+
/** Single typography style: font shorthand (weight size/lineHeight family) + optional letterSpacing & textTransform */
|
|
159
|
+
interface TypographyStyle {
|
|
160
|
+
fontWeight: number;
|
|
161
|
+
fontSize: string;
|
|
162
|
+
lineHeight: string;
|
|
163
|
+
letterSpacing?: string;
|
|
164
|
+
textTransform?: "uppercase" | "none";
|
|
165
|
+
fontFamily?: string;
|
|
166
|
+
}
|
|
167
|
+
/** Display – hero and major titles */
|
|
168
|
+
declare const TYPOGRAPHY_DISPLAY: {
|
|
169
|
+
readonly large: TypographyStyle;
|
|
170
|
+
readonly medium: TypographyStyle;
|
|
171
|
+
readonly small: TypographyStyle;
|
|
172
|
+
};
|
|
173
|
+
/** Headings H1–H6 */
|
|
174
|
+
declare const TYPOGRAPHY_HEADING: {
|
|
175
|
+
readonly h1: TypographyStyle;
|
|
176
|
+
readonly h2: TypographyStyle;
|
|
177
|
+
readonly h3: TypographyStyle;
|
|
178
|
+
readonly h4: TypographyStyle;
|
|
179
|
+
readonly h5: TypographyStyle;
|
|
180
|
+
readonly h6: TypographyStyle;
|
|
181
|
+
};
|
|
182
|
+
/** Body text */
|
|
183
|
+
declare const TYPOGRAPHY_BODY: {
|
|
184
|
+
readonly large: TypographyStyle;
|
|
185
|
+
readonly medium: TypographyStyle;
|
|
186
|
+
readonly small: TypographyStyle;
|
|
187
|
+
};
|
|
188
|
+
/** Labels – buttons, form labels, badges */
|
|
189
|
+
declare const TYPOGRAPHY_LABEL: {
|
|
190
|
+
readonly large: TypographyStyle;
|
|
191
|
+
readonly medium: TypographyStyle;
|
|
192
|
+
readonly small: TypographyStyle;
|
|
193
|
+
};
|
|
194
|
+
/** Utility – caption, overline, code */
|
|
195
|
+
declare const TYPOGRAPHY_UTILITY: {
|
|
196
|
+
readonly caption: TypographyStyle;
|
|
197
|
+
readonly overline: TypographyStyle;
|
|
198
|
+
readonly code: TypographyStyle;
|
|
199
|
+
};
|
|
200
|
+
declare const TYPOGRAPHY: {
|
|
201
|
+
readonly display: {
|
|
202
|
+
readonly large: TypographyStyle;
|
|
203
|
+
readonly medium: TypographyStyle;
|
|
204
|
+
readonly small: TypographyStyle;
|
|
205
|
+
};
|
|
206
|
+
readonly heading: {
|
|
207
|
+
readonly h1: TypographyStyle;
|
|
208
|
+
readonly h2: TypographyStyle;
|
|
209
|
+
readonly h3: TypographyStyle;
|
|
210
|
+
readonly h4: TypographyStyle;
|
|
211
|
+
readonly h5: TypographyStyle;
|
|
212
|
+
readonly h6: TypographyStyle;
|
|
213
|
+
};
|
|
214
|
+
readonly body: {
|
|
215
|
+
readonly large: TypographyStyle;
|
|
216
|
+
readonly medium: TypographyStyle;
|
|
217
|
+
readonly small: TypographyStyle;
|
|
218
|
+
};
|
|
219
|
+
readonly label: {
|
|
220
|
+
readonly large: TypographyStyle;
|
|
221
|
+
readonly medium: TypographyStyle;
|
|
222
|
+
readonly small: TypographyStyle;
|
|
223
|
+
};
|
|
224
|
+
readonly utility: {
|
|
225
|
+
readonly caption: TypographyStyle;
|
|
226
|
+
readonly overline: TypographyStyle;
|
|
227
|
+
readonly code: TypographyStyle;
|
|
228
|
+
};
|
|
229
|
+
};
|
|
230
|
+
/** All typography tokens as flat key → style for CSS variable generation */
|
|
231
|
+
declare function getTypographyCssVars(): Record<string, string>;
|
|
232
|
+
/** Letter-spacing and text-transform for styles that need them (for use with font shorthand) */
|
|
233
|
+
declare const TYPOGRAPHY_EXTRA_CSS: Record<string, {
|
|
234
|
+
letterSpacing?: string;
|
|
235
|
+
textTransform?: string;
|
|
236
|
+
}>;
|
|
237
|
+
/** Viewport mode for responsive typography (Mobile <768px, Tablet 768–1024px) */
|
|
238
|
+
type ViewportMode = "desktop" | "tablet" | "mobile";
|
|
239
|
+
/** Labels for viewport modes (docs/tooling). */
|
|
240
|
+
declare const VIEWPORT_LABELS: Record<ViewportMode, string>;
|
|
241
|
+
/** Max width (px) to simulate viewport; desktop has no constraint. */
|
|
242
|
+
declare const VIEWPORT_MAX_WIDTH: Record<ViewportMode, number | undefined>;
|
|
243
|
+
/** Responsive typography overrides for tablet/mobile. Desktop returns {}. */
|
|
244
|
+
declare function getResponsiveFontOverrides(mode: ViewportMode): Record<string, string>;
|
|
245
|
+
|
|
246
|
+
export { ACCENTS, CHART_COLORS, type DesignThemeConfig, type DesignThemeOptions, FONT_FAMILY_SANS, FOUNDATION_COLORS, GRAY_SCALE, OPACITY_UTILITY, TYPOGRAPHY, TYPOGRAPHY_BODY, TYPOGRAPHY_DISPLAY, TYPOGRAPHY_EXTRA_CSS, TYPOGRAPHY_HEADING, TYPOGRAPHY_LABEL, TYPOGRAPHY_UTILITY, ThemeProvider, type ThemeProviderProps, type TypographyStyle, VIEWPORT_LABELS, VIEWPORT_MAX_WIDTH, type ViewportMode, buildCssVariables, buildOpacityScale, createDesignTheme, getContrastText, getLuminance, getResponsiveFontOverrides, getTypographyCssVars, hexToRgb, rgbToCssRgbString, rgba };
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import * as _mui_material_styles from '@mui/material/styles';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Build CSS variable set for :root from tenant primary/secondary.
|
|
6
|
+
*/
|
|
7
|
+
interface DesignThemeOptions {
|
|
8
|
+
/** Tenant primary brand color (hex). */
|
|
9
|
+
primary: string;
|
|
10
|
+
/** Tenant secondary brand color (hex). */
|
|
11
|
+
secondary: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Returns a flat object of CSS variable name → value for injection into :root.
|
|
15
|
+
* Names use single dashes: --color-brand-primary, --primary-rgb, --primary-50, etc.
|
|
16
|
+
*/
|
|
17
|
+
declare function buildCssVariables(options: DesignThemeOptions): Record<string, string>;
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Provider that applies design system theme (MUI + CSS variables).
|
|
21
|
+
* Primary and secondary are tenant-based and can be set per instance.
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
interface ThemeProviderProps extends DesignThemeOptions {
|
|
25
|
+
children: React.ReactNode;
|
|
26
|
+
/** Inject CSS variables into document (default true). Set false if you inject them yourself. */
|
|
27
|
+
injectCssVariables?: boolean;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Provides MUI theme and design-system CSS variables.
|
|
31
|
+
* Use primary/secondary to set tenant brand colors; all primary/* and secondary/* tokens update automatically.
|
|
32
|
+
*/
|
|
33
|
+
declare function ThemeProvider({ children, primary, secondary, injectCssVariables, }: ThemeProviderProps): JSX.Element;
|
|
34
|
+
declare namespace ThemeProvider {
|
|
35
|
+
var displayName: string;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Create MUI theme with design system palette.
|
|
40
|
+
* Primary and secondary are tenant-based (dynamic).
|
|
41
|
+
*/
|
|
42
|
+
interface DesignThemeConfig {
|
|
43
|
+
primary: string;
|
|
44
|
+
secondary: string;
|
|
45
|
+
}
|
|
46
|
+
declare function createDesignTheme(config: DesignThemeConfig): _mui_material_styles.Theme;
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Theme utilities: hex ↔ RGB, opacity-based color generation.
|
|
50
|
+
*/
|
|
51
|
+
/**
|
|
52
|
+
* Parse hex color to RGB tuple [r, g, b] (0-255).
|
|
53
|
+
*/
|
|
54
|
+
declare function hexToRgb(hex: string): [number, number, number];
|
|
55
|
+
/**
|
|
56
|
+
* Format RGB tuple as "r, g, b" for use in rgba(var(--primary-rgb), 0.5).
|
|
57
|
+
*/
|
|
58
|
+
declare function rgbToCssRgbString(rgb: [number, number, number]): string;
|
|
59
|
+
/**
|
|
60
|
+
* Create rgba string from hex and opacity.
|
|
61
|
+
*/
|
|
62
|
+
declare function rgba(hex: string, alpha: number): string;
|
|
63
|
+
/**
|
|
64
|
+
* Build opacity scale: { "50": "rgba(...)", "100": "rgba(...)", ... }.
|
|
65
|
+
*/
|
|
66
|
+
declare function buildOpacityScale(hex: string, steps: readonly {
|
|
67
|
+
key: string;
|
|
68
|
+
opacity: number;
|
|
69
|
+
}[]): Record<string, string>;
|
|
70
|
+
/**
|
|
71
|
+
* Get relative luminance of a hex color (0 = black, 1 = white).
|
|
72
|
+
*/
|
|
73
|
+
declare function getLuminance(hex: string): number;
|
|
74
|
+
/**
|
|
75
|
+
* Returns a readable text color (hex) for a given background color.
|
|
76
|
+
* Uses WCAG relative luminance: dark text on light backgrounds, light text on dark backgrounds.
|
|
77
|
+
* Use for button labels, chips, and any text on colored backgrounds.
|
|
78
|
+
*
|
|
79
|
+
* @param backgroundColor - Hex color (e.g. "#33FF99" or "#162029")
|
|
80
|
+
* @returns "#040D13" (dark) or "#FFFFFF" (light)
|
|
81
|
+
*/
|
|
82
|
+
declare function getContrastText(backgroundColor: string): string;
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Design system - Fixed color tokens (non-tenant).
|
|
86
|
+
* Primary and secondary are tenant-based and provided at runtime.
|
|
87
|
+
*/
|
|
88
|
+
declare const FOUNDATION_COLORS: {
|
|
89
|
+
readonly brand: {
|
|
90
|
+
readonly primary: "#33FF99";
|
|
91
|
+
readonly secondary: "#162029";
|
|
92
|
+
};
|
|
93
|
+
readonly text: {
|
|
94
|
+
readonly primary: "#040D13";
|
|
95
|
+
readonly secondary: "#4A5C6A";
|
|
96
|
+
readonly disabled: "#9EAAB5";
|
|
97
|
+
readonly inverse: "#FFFFFF";
|
|
98
|
+
};
|
|
99
|
+
readonly background: {
|
|
100
|
+
readonly primary: "#FFFFFF";
|
|
101
|
+
readonly secondary: "#F5F8FA";
|
|
102
|
+
readonly tertiary: "#E8EAEC";
|
|
103
|
+
readonly elevated: "#FFFFFF";
|
|
104
|
+
};
|
|
105
|
+
readonly border: {
|
|
106
|
+
readonly default: "#E8EAEC";
|
|
107
|
+
readonly focus: "#33FF99";
|
|
108
|
+
readonly error: "#F44336";
|
|
109
|
+
};
|
|
110
|
+
readonly state: {
|
|
111
|
+
readonly error: "#F44336";
|
|
112
|
+
readonly warning: "#FF9800";
|
|
113
|
+
readonly success: "#4CAF50";
|
|
114
|
+
readonly info: "#2196F3";
|
|
115
|
+
};
|
|
116
|
+
};
|
|
117
|
+
declare const GRAY_SCALE: {
|
|
118
|
+
readonly 50: "#F6F6F8";
|
|
119
|
+
readonly 100: "#E8E8EB";
|
|
120
|
+
readonly 200: "#D9D9D9";
|
|
121
|
+
readonly 300: "#B9BCBF";
|
|
122
|
+
readonly 400: "#959495";
|
|
123
|
+
readonly 500: "#868686";
|
|
124
|
+
readonly 600: "#8A8F94";
|
|
125
|
+
};
|
|
126
|
+
declare const ACCENTS: {
|
|
127
|
+
readonly purple: "#9747FF";
|
|
128
|
+
readonly darkGreen: "#1E4620";
|
|
129
|
+
};
|
|
130
|
+
declare const OPACITY_UTILITY: {
|
|
131
|
+
readonly disabled: 0.38;
|
|
132
|
+
readonly hover: 0.08;
|
|
133
|
+
};
|
|
134
|
+
declare const CHART_COLORS: {
|
|
135
|
+
readonly background: "#F7F7F8";
|
|
136
|
+
readonly textLabels: "#000000";
|
|
137
|
+
readonly textTitle: "#757373";
|
|
138
|
+
readonly grid: "#E3E3E8";
|
|
139
|
+
readonly series: {
|
|
140
|
+
readonly blue: "#2B72FB";
|
|
141
|
+
readonly teal: "#64BDC6";
|
|
142
|
+
readonly yellow: "#EECA34";
|
|
143
|
+
readonly orange: "#FE6A35";
|
|
144
|
+
readonly red: "#FA4B42";
|
|
145
|
+
readonly pink: "#EE60E0";
|
|
146
|
+
readonly purple: "#7B47E9";
|
|
147
|
+
readonly indigo: "#5D89DF";
|
|
148
|
+
readonly lightBlue: "#6AD1FE";
|
|
149
|
+
readonly green: "#3FDC7E";
|
|
150
|
+
};
|
|
151
|
+
};
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* Design system – Typography (rem-based).
|
|
155
|
+
* Font: Proxima Nova. Base: 16px (1rem).
|
|
156
|
+
*/
|
|
157
|
+
declare const FONT_FAMILY_SANS = "\"Proxima Nova\", sans-serif";
|
|
158
|
+
/** Single typography style: font shorthand (weight size/lineHeight family) + optional letterSpacing & textTransform */
|
|
159
|
+
interface TypographyStyle {
|
|
160
|
+
fontWeight: number;
|
|
161
|
+
fontSize: string;
|
|
162
|
+
lineHeight: string;
|
|
163
|
+
letterSpacing?: string;
|
|
164
|
+
textTransform?: "uppercase" | "none";
|
|
165
|
+
fontFamily?: string;
|
|
166
|
+
}
|
|
167
|
+
/** Display – hero and major titles */
|
|
168
|
+
declare const TYPOGRAPHY_DISPLAY: {
|
|
169
|
+
readonly large: TypographyStyle;
|
|
170
|
+
readonly medium: TypographyStyle;
|
|
171
|
+
readonly small: TypographyStyle;
|
|
172
|
+
};
|
|
173
|
+
/** Headings H1–H6 */
|
|
174
|
+
declare const TYPOGRAPHY_HEADING: {
|
|
175
|
+
readonly h1: TypographyStyle;
|
|
176
|
+
readonly h2: TypographyStyle;
|
|
177
|
+
readonly h3: TypographyStyle;
|
|
178
|
+
readonly h4: TypographyStyle;
|
|
179
|
+
readonly h5: TypographyStyle;
|
|
180
|
+
readonly h6: TypographyStyle;
|
|
181
|
+
};
|
|
182
|
+
/** Body text */
|
|
183
|
+
declare const TYPOGRAPHY_BODY: {
|
|
184
|
+
readonly large: TypographyStyle;
|
|
185
|
+
readonly medium: TypographyStyle;
|
|
186
|
+
readonly small: TypographyStyle;
|
|
187
|
+
};
|
|
188
|
+
/** Labels – buttons, form labels, badges */
|
|
189
|
+
declare const TYPOGRAPHY_LABEL: {
|
|
190
|
+
readonly large: TypographyStyle;
|
|
191
|
+
readonly medium: TypographyStyle;
|
|
192
|
+
readonly small: TypographyStyle;
|
|
193
|
+
};
|
|
194
|
+
/** Utility – caption, overline, code */
|
|
195
|
+
declare const TYPOGRAPHY_UTILITY: {
|
|
196
|
+
readonly caption: TypographyStyle;
|
|
197
|
+
readonly overline: TypographyStyle;
|
|
198
|
+
readonly code: TypographyStyle;
|
|
199
|
+
};
|
|
200
|
+
declare const TYPOGRAPHY: {
|
|
201
|
+
readonly display: {
|
|
202
|
+
readonly large: TypographyStyle;
|
|
203
|
+
readonly medium: TypographyStyle;
|
|
204
|
+
readonly small: TypographyStyle;
|
|
205
|
+
};
|
|
206
|
+
readonly heading: {
|
|
207
|
+
readonly h1: TypographyStyle;
|
|
208
|
+
readonly h2: TypographyStyle;
|
|
209
|
+
readonly h3: TypographyStyle;
|
|
210
|
+
readonly h4: TypographyStyle;
|
|
211
|
+
readonly h5: TypographyStyle;
|
|
212
|
+
readonly h6: TypographyStyle;
|
|
213
|
+
};
|
|
214
|
+
readonly body: {
|
|
215
|
+
readonly large: TypographyStyle;
|
|
216
|
+
readonly medium: TypographyStyle;
|
|
217
|
+
readonly small: TypographyStyle;
|
|
218
|
+
};
|
|
219
|
+
readonly label: {
|
|
220
|
+
readonly large: TypographyStyle;
|
|
221
|
+
readonly medium: TypographyStyle;
|
|
222
|
+
readonly small: TypographyStyle;
|
|
223
|
+
};
|
|
224
|
+
readonly utility: {
|
|
225
|
+
readonly caption: TypographyStyle;
|
|
226
|
+
readonly overline: TypographyStyle;
|
|
227
|
+
readonly code: TypographyStyle;
|
|
228
|
+
};
|
|
229
|
+
};
|
|
230
|
+
/** All typography tokens as flat key → style for CSS variable generation */
|
|
231
|
+
declare function getTypographyCssVars(): Record<string, string>;
|
|
232
|
+
/** Letter-spacing and text-transform for styles that need them (for use with font shorthand) */
|
|
233
|
+
declare const TYPOGRAPHY_EXTRA_CSS: Record<string, {
|
|
234
|
+
letterSpacing?: string;
|
|
235
|
+
textTransform?: string;
|
|
236
|
+
}>;
|
|
237
|
+
/** Viewport mode for responsive typography (Mobile <768px, Tablet 768–1024px) */
|
|
238
|
+
type ViewportMode = "desktop" | "tablet" | "mobile";
|
|
239
|
+
/** Labels for viewport modes (docs/tooling). */
|
|
240
|
+
declare const VIEWPORT_LABELS: Record<ViewportMode, string>;
|
|
241
|
+
/** Max width (px) to simulate viewport; desktop has no constraint. */
|
|
242
|
+
declare const VIEWPORT_MAX_WIDTH: Record<ViewportMode, number | undefined>;
|
|
243
|
+
/** Responsive typography overrides for tablet/mobile. Desktop returns {}. */
|
|
244
|
+
declare function getResponsiveFontOverrides(mode: ViewportMode): Record<string, string>;
|
|
245
|
+
|
|
246
|
+
export { ACCENTS, CHART_COLORS, type DesignThemeConfig, type DesignThemeOptions, FONT_FAMILY_SANS, FOUNDATION_COLORS, GRAY_SCALE, OPACITY_UTILITY, TYPOGRAPHY, TYPOGRAPHY_BODY, TYPOGRAPHY_DISPLAY, TYPOGRAPHY_EXTRA_CSS, TYPOGRAPHY_HEADING, TYPOGRAPHY_LABEL, TYPOGRAPHY_UTILITY, ThemeProvider, type ThemeProviderProps, type TypographyStyle, VIEWPORT_LABELS, VIEWPORT_MAX_WIDTH, type ViewportMode, buildCssVariables, buildOpacityScale, createDesignTheme, getContrastText, getLuminance, getResponsiveFontOverrides, getTypographyCssVars, hexToRgb, rgbToCssRgbString, rgba };
|