@solostylist/ui-kit 1.0.112 → 1.0.114
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/{Box-Deehc8LF.js → Box-BVty_s6i.js} +3 -3
- package/dist/{ButtonBase-B-mcxJe8.js → ButtonBase-mQcNFFZT.js} +4 -4
- package/dist/{ChevronRight-BB4jrtLy.js → ChevronRight-DHNkZLlo.js} +1 -1
- package/dist/{Close-DqRHeMAW.js → Close-NkxvAwQr.js} +1 -1
- package/dist/DefaultPropsProvider-B--diaQ3.js +56 -0
- package/dist/{ExpandMore-CE1RzE_y.js → ExpandMore-DpFPV8W9.js} +1 -1
- package/dist/Favorite-DpJ7EDHh.js +8 -0
- package/dist/GlobalStyles-OdaYqxTO.js +59 -0
- package/dist/{Menu-HtTElywx.js → Menu-CcW81QRb.js} +311 -324
- package/dist/{MenuItem-DzviefY7.js → MenuItem-DGNNylSd.js} +5 -5
- package/dist/{Paper-pJ5bSU59.js → Paper-BUFfm5KI.js} +7 -7
- package/dist/{Select-C9Hk7BA8.js → Select-CWgjtbUU.js} +370 -387
- package/dist/{Stack-TRopps6s.js → Stack-CQ7zBwkJ.js} +5 -5
- package/dist/{TransitionGroup--1HPPUFY.js → TransitionGroup-Buyx2ey4.js} +1 -1
- package/dist/{Typography-DGEEI1Q-.js → Typography-fMf8hWqG.js} +4 -4
- package/dist/assets/s-overlay-scrollbar.css +9 -0
- package/dist/{createSvgIcon-DCQI9UV5.js → createSvgIcon-PpKM6urg.js} +104 -130
- package/dist/{createTheme-YLBX8GSj.js → createTheme-ubqb7_yU.js} +1 -0
- package/dist/defaultTheme-CtLmY7I4.js +5 -0
- package/dist/{extendSxProp-BNyKHzap.js → extendSxProp-5t2om437.js} +1 -1
- package/dist/index-N6ZbgVEG.js +33 -0
- package/dist/index-h98nw21y.js +44 -0
- package/dist/main.d.ts +6 -2
- package/dist/main.js +110 -104
- package/dist/{mergeSlotProps-N1VTlioP.js → mergeSlotProps-DKFm7I5M.js} +1 -1
- package/dist/s-accordion/s-accordion.js +8 -8
- package/dist/s-carousel/s-carousel.js +1 -1
- package/dist/s-chat-input/s-chat-input.js +2 -2
- package/dist/s-chat-message/s-chat-message.js +1 -1
- package/dist/s-comment-message/s-comment-message.js +35 -36
- package/dist/s-copyable-text/s-copyable-text.js +1 -1
- package/dist/s-data-table/s-data-table.js +5 -5
- package/dist/s-date-picker/s-date-picker.js +7 -7
- package/dist/s-datetime-picker/s-datetime-picker.js +15 -14
- package/dist/s-dialog/s-dialog.js +1 -1
- package/dist/s-dialog-confirm/s-dialog-confirm.js +2 -2
- package/dist/s-dialog-message/s-dialog-message.js +2 -2
- package/dist/s-file-dropzone/s-file-dropzone.js +4 -4
- package/dist/s-file-icon/s-file-icon.js +1 -1
- package/dist/s-flex-box/s-flex-box.js +1 -1
- package/dist/s-image-comparison/s-image-comparison.js +1 -1
- package/dist/s-image-modal/s-image-modal.js +2 -2
- package/dist/s-label/s-label.js +1 -1
- package/dist/s-localization-provider/s-localization-provider.js +1 -1
- package/dist/s-multi-select/s-multi-select.js +3 -3
- package/dist/s-overlay-scrollbar/index.d.ts +2 -0
- package/dist/s-overlay-scrollbar/index.js +4 -0
- package/dist/s-overlay-scrollbar/package.json +5 -0
- package/dist/s-overlay-scrollbar/s-overlay-scrollbar.d.ts +8 -0
- package/dist/s-overlay-scrollbar/s-overlay-scrollbar.js +25 -0
- package/dist/s-review/s-review.js +1 -1
- package/dist/s-smart-text-field/s-smart-text-field.js +2 -2
- package/dist/s-text-editor/s-text-editor-toolbar.js +4 -4
- package/dist/s-text-editor/s-text-editor.js +1 -1
- package/dist/s-text-field/s-text-field.js +1 -1
- package/dist/s-text-shimmer/s-text-shimmer.js +7 -7
- package/dist/s-theme-demo/index.d.ts +2 -0
- package/dist/s-theme-demo/index.js +4 -0
- package/dist/s-theme-demo/package.json +5 -0
- package/dist/s-theme-demo/s-theme-demo.d.ts +31 -0
- package/dist/s-theme-demo/s-theme-demo.js +417 -0
- package/dist/s-theme-provider/index.d.ts +2 -0
- package/dist/s-theme-provider/index.js +5 -2
- package/dist/s-theme-provider/s-theme-provider.d.ts +2 -2
- package/dist/s-theme-provider/s-theme-provider.js +13 -13
- package/dist/s-theme-provider/use-theme.d.ts +51 -0
- package/dist/s-theme-provider/use-theme.js +670 -0
- package/dist/s-theme-switch/index.d.ts +2 -0
- package/dist/s-theme-switch/index.js +4 -0
- package/dist/s-theme-switch/package.json +5 -0
- package/dist/s-theme-switch/s-theme-switch.d.ts +6 -0
- package/dist/s-theme-switch/s-theme-switch.js +43 -0
- package/dist/s-tip/s-tip.js +3 -3
- package/dist/{styled-DOEEZAON.js → styled-C9vD3j80.js} +2 -2
- package/dist/theme/components/avatar.js +1 -1
- package/dist/theme/components/chip.js +92 -30
- package/dist/theme/components/components.d.ts +2 -0
- package/dist/theme/components/tooltip.d.ts +2 -0
- package/dist/theme/components/tooltip.js +4 -2
- package/dist/theme/customizations/inputs.js +1 -1
- package/dist/theme/customizations/navigation.js +2 -1
- package/dist/theme/theme-primitives.d.ts +97 -0
- package/dist/theme/theme-primitives.js +290 -87
- package/dist/useId-CK6Kn3Tn.js +21 -0
- package/dist/{useMobilePicker-c5_EH1sg.js → useMobilePicker-kwoV49Bq.js} +99 -97
- package/dist/{useTheme-w9o5xUBz.js → useTheme-BRW1H8JQ.js} +1 -1
- package/dist/{useThemeProps-CPsDWmFG.js → useThemeProps-DEztVr97.js} +1 -1
- package/dist/{warning-KQY_8msi.js → warning-Dcl59VWg.js} +3 -3
- package/package.json +3 -2
- package/dist/defaultTheme-DXvvOU_p.js +0 -5
- package/dist/index-B3csTTDl.js +0 -95
|
@@ -0,0 +1,417 @@
|
|
|
1
|
+
import { j as r } from "../jsx-runtime-DywqP_6a.js";
|
|
2
|
+
import * as g from "react";
|
|
3
|
+
import { Box as t, Typography as e, Stack as i, Card as x, CardContent as h, Divider as d, Alert as p, Chip as s, Paper as m } from "@mui/material";
|
|
4
|
+
import n from "../s-button/s-button.js";
|
|
5
|
+
import v from "../s-form/s-form.js";
|
|
6
|
+
import u from "../s-text-field/s-text-field.js";
|
|
7
|
+
import y from "../s-theme-switch/s-theme-switch.js";
|
|
8
|
+
import { c as j } from "../createSvgIcon-PpKM6urg.js";
|
|
9
|
+
import { F as b } from "../Favorite-DpJ7EDHh.js";
|
|
10
|
+
const f = j(/* @__PURE__ */ r.jsx("path", {
|
|
11
|
+
d: "M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6z"
|
|
12
|
+
}), "Add"), S = j(/* @__PURE__ */ r.jsx("path", {
|
|
13
|
+
d: "M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81 1.66 0 3-1.34 3-3s-1.34-3-3-3-3 1.34-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9c-1.66 0-3 1.34-3 3s1.34 3 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.16c-.05.21-.08.43-.08.65 0 1.61 1.31 2.92 2.92 2.92s2.92-1.31 2.92-2.92-1.31-2.92-2.92-2.92"
|
|
14
|
+
}), "Share"), w = j(/* @__PURE__ */ r.jsx("path", {
|
|
15
|
+
d: "M12 17.27 18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z"
|
|
16
|
+
}), "Star"), B = () => {
|
|
17
|
+
const c = [
|
|
18
|
+
{ name: "Primary", color: "primary.main" },
|
|
19
|
+
{ name: "Secondary", color: "secondary.main" },
|
|
20
|
+
{ name: "Success", color: "success.main" },
|
|
21
|
+
{ name: "Warning", color: "warning.main" },
|
|
22
|
+
{ name: "Error", color: "error.main" },
|
|
23
|
+
{ name: "Info", color: "info.main" }
|
|
24
|
+
];
|
|
25
|
+
return /* @__PURE__ */ r.jsx(x, { elevation: 2, sx: { borderRadius: 2 }, children: /* @__PURE__ */ r.jsxs(h, { children: [
|
|
26
|
+
/* @__PURE__ */ r.jsx(e, { variant: "h5", gutterBottom: !0, children: "Color Palette" }),
|
|
27
|
+
/* @__PURE__ */ r.jsx(i, { direction: "row", flexWrap: "wrap", gap: 2, children: c.map((o) => /* @__PURE__ */ r.jsxs(t, { sx: { textAlign: "center" }, children: [
|
|
28
|
+
/* @__PURE__ */ r.jsx(
|
|
29
|
+
t,
|
|
30
|
+
{
|
|
31
|
+
sx: {
|
|
32
|
+
width: 60,
|
|
33
|
+
height: 60,
|
|
34
|
+
bgcolor: o.color,
|
|
35
|
+
borderRadius: 1,
|
|
36
|
+
mb: 1,
|
|
37
|
+
boxShadow: 1
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
),
|
|
41
|
+
/* @__PURE__ */ r.jsx(e, { variant: "caption", color: "text.secondary", children: o.name })
|
|
42
|
+
] }, o.name)) }),
|
|
43
|
+
/* @__PURE__ */ r.jsx(e, { variant: "h6", sx: { mt: 3, mb: 2 }, children: "Background Colors" }),
|
|
44
|
+
/* @__PURE__ */ r.jsxs(i, { direction: "row", gap: 2, flexWrap: "wrap", children: [
|
|
45
|
+
/* @__PURE__ */ r.jsx(
|
|
46
|
+
t,
|
|
47
|
+
{
|
|
48
|
+
sx: {
|
|
49
|
+
p: 2,
|
|
50
|
+
bgcolor: "background.default",
|
|
51
|
+
border: 1,
|
|
52
|
+
borderColor: "divider",
|
|
53
|
+
borderRadius: 1
|
|
54
|
+
},
|
|
55
|
+
children: /* @__PURE__ */ r.jsx(e, { variant: "caption", children: "Default Background" })
|
|
56
|
+
}
|
|
57
|
+
),
|
|
58
|
+
/* @__PURE__ */ r.jsx(
|
|
59
|
+
t,
|
|
60
|
+
{
|
|
61
|
+
sx: {
|
|
62
|
+
p: 2,
|
|
63
|
+
bgcolor: "background.paper",
|
|
64
|
+
border: 1,
|
|
65
|
+
borderColor: "divider",
|
|
66
|
+
borderRadius: 1
|
|
67
|
+
},
|
|
68
|
+
children: /* @__PURE__ */ r.jsx(e, { variant: "caption", children: "Paper Background" })
|
|
69
|
+
}
|
|
70
|
+
)
|
|
71
|
+
] })
|
|
72
|
+
] }) });
|
|
73
|
+
}, T = () => /* @__PURE__ */ r.jsx(x, { elevation: 2, sx: { borderRadius: 2 }, children: /* @__PURE__ */ r.jsxs(h, { children: [
|
|
74
|
+
/* @__PURE__ */ r.jsx(e, { variant: "h5", gutterBottom: !0, children: "Typography System" }),
|
|
75
|
+
/* @__PURE__ */ r.jsx(e, { variant: "body2", color: "text.secondary", gutterBottom: !0, sx: { mb: 3 }, children: "Complete typography scale using Outfit font family with Material-UI variants" }),
|
|
76
|
+
/* @__PURE__ */ r.jsxs(i, { spacing: 3, children: [
|
|
77
|
+
/* @__PURE__ */ r.jsxs(t, { children: [
|
|
78
|
+
/* @__PURE__ */ r.jsx(e, { variant: "h6", color: "primary", gutterBottom: !0, children: "Headings" }),
|
|
79
|
+
/* @__PURE__ */ r.jsxs(i, { spacing: 2, children: [
|
|
80
|
+
/* @__PURE__ */ r.jsxs(t, { children: [
|
|
81
|
+
/* @__PURE__ */ r.jsx(e, { variant: "h1", component: "div", gutterBottom: !0, children: "Display Large" }),
|
|
82
|
+
/* @__PURE__ */ r.jsx(e, { variant: "caption", color: "text.secondary", children: "h1 - 3.5rem (56px), Weight 600 - Used for hero sections and primary headings" })
|
|
83
|
+
] }),
|
|
84
|
+
/* @__PURE__ */ r.jsxs(t, { children: [
|
|
85
|
+
/* @__PURE__ */ r.jsx(e, { variant: "h2", component: "div", gutterBottom: !0, children: "Display Medium" }),
|
|
86
|
+
/* @__PURE__ */ r.jsx(e, { variant: "caption", color: "text.secondary", children: "h2 - 2.75rem (44px), Weight 600 - Used for page titles and major sections" })
|
|
87
|
+
] }),
|
|
88
|
+
/* @__PURE__ */ r.jsxs(t, { children: [
|
|
89
|
+
/* @__PURE__ */ r.jsx(e, { variant: "h3", component: "div", gutterBottom: !0, children: "Display Small" }),
|
|
90
|
+
/* @__PURE__ */ r.jsx(e, { variant: "caption", color: "text.secondary", children: "h3 - 2.25rem (36px), Weight 600 - Used for large section headings" })
|
|
91
|
+
] }),
|
|
92
|
+
/* @__PURE__ */ r.jsxs(t, { children: [
|
|
93
|
+
/* @__PURE__ */ r.jsx(e, { variant: "h4", component: "div", gutterBottom: !0, children: "Headline Large" }),
|
|
94
|
+
/* @__PURE__ */ r.jsx(e, { variant: "caption", color: "text.secondary", children: "h4 - 2rem (32px), Weight 600 - Used for card titles and content headings" })
|
|
95
|
+
] }),
|
|
96
|
+
/* @__PURE__ */ r.jsxs(t, { children: [
|
|
97
|
+
/* @__PURE__ */ r.jsx(e, { variant: "h5", component: "div", gutterBottom: !0, children: "Headline Medium" }),
|
|
98
|
+
/* @__PURE__ */ r.jsx(e, { variant: "caption", color: "text.secondary", children: "h5 - 1.5rem (24px), Weight 600 - Used for subsection headings" })
|
|
99
|
+
] }),
|
|
100
|
+
/* @__PURE__ */ r.jsxs(t, { children: [
|
|
101
|
+
/* @__PURE__ */ r.jsx(e, { variant: "h6", component: "div", gutterBottom: !0, children: "Headline Small" }),
|
|
102
|
+
/* @__PURE__ */ r.jsx(e, { variant: "caption", color: "text.secondary", children: "h6 - 1.25rem (20px), Weight 600 - Used for component titles and labels" })
|
|
103
|
+
] })
|
|
104
|
+
] })
|
|
105
|
+
] }),
|
|
106
|
+
/* @__PURE__ */ r.jsx(d, {}),
|
|
107
|
+
/* @__PURE__ */ r.jsxs(t, { children: [
|
|
108
|
+
/* @__PURE__ */ r.jsx(e, { variant: "h6", color: "primary", gutterBottom: !0, children: "Body Text" }),
|
|
109
|
+
/* @__PURE__ */ r.jsxs(i, { spacing: 2, children: [
|
|
110
|
+
/* @__PURE__ */ r.jsxs(t, { children: [
|
|
111
|
+
/* @__PURE__ */ r.jsx(e, { variant: "body1", component: "div", gutterBottom: !0, children: "Body Large - The primary text style used for most content. It provides excellent readability and is suitable for paragraphs, descriptions, and general text content. This is the main body text variant." }),
|
|
112
|
+
/* @__PURE__ */ r.jsx(e, { variant: "caption", color: "text.secondary", children: "body1 - 1rem (16px), Weight 400, Line height 1.5" })
|
|
113
|
+
] }),
|
|
114
|
+
/* @__PURE__ */ r.jsxs(t, { children: [
|
|
115
|
+
/* @__PURE__ */ r.jsx(e, { variant: "body2", component: "div", gutterBottom: !0, children: "Body Medium - Secondary text style, often used for supporting information, captions, and less prominent content elements. Slightly smaller than body1 for hierarchy." }),
|
|
116
|
+
/* @__PURE__ */ r.jsx(e, { variant: "caption", color: "text.secondary", children: "body2 - 0.875rem (14px), Weight 400, Line height 1.43" })
|
|
117
|
+
] })
|
|
118
|
+
] })
|
|
119
|
+
] }),
|
|
120
|
+
/* @__PURE__ */ r.jsx(d, {}),
|
|
121
|
+
/* @__PURE__ */ r.jsxs(t, { children: [
|
|
122
|
+
/* @__PURE__ */ r.jsx(e, { variant: "h6", color: "primary", gutterBottom: !0, children: "Labels & Supporting Text" }),
|
|
123
|
+
/* @__PURE__ */ r.jsxs(i, { spacing: 2, children: [
|
|
124
|
+
/* @__PURE__ */ r.jsxs(t, { children: [
|
|
125
|
+
/* @__PURE__ */ r.jsx(e, { variant: "subtitle1", component: "div", gutterBottom: !0, children: "Subtitle Large - Used for prominent secondary text" }),
|
|
126
|
+
/* @__PURE__ */ r.jsx(e, { variant: "caption", color: "text.secondary", children: "subtitle1 - 1rem (16px), Weight 500" })
|
|
127
|
+
] }),
|
|
128
|
+
/* @__PURE__ */ r.jsxs(t, { children: [
|
|
129
|
+
/* @__PURE__ */ r.jsx(e, { variant: "subtitle2", component: "div", gutterBottom: !0, children: "Subtitle Small - Used for form labels and secondary headings" }),
|
|
130
|
+
/* @__PURE__ */ r.jsx(e, { variant: "caption", color: "text.secondary", children: "subtitle2 - 0.875rem (14px), Weight 500" })
|
|
131
|
+
] }),
|
|
132
|
+
/* @__PURE__ */ r.jsxs(t, { children: [
|
|
133
|
+
/* @__PURE__ */ r.jsx(e, { variant: "caption", component: "div", gutterBottom: !0, children: "Caption Text - Used for annotations, helper text, and fine print" }),
|
|
134
|
+
/* @__PURE__ */ r.jsx(e, { variant: "caption", color: "text.secondary", children: "caption - 0.75rem (12px), Weight 400" })
|
|
135
|
+
] }),
|
|
136
|
+
/* @__PURE__ */ r.jsxs(t, { children: [
|
|
137
|
+
/* @__PURE__ */ r.jsx(e, { variant: "overline", component: "div", gutterBottom: !0, children: "OVERLINE TEXT - USED FOR LABELS AND CATEGORIES" }),
|
|
138
|
+
/* @__PURE__ */ r.jsx(e, { variant: "caption", color: "text.secondary", children: "overline - 0.75rem (12px), Weight 400, Uppercase, Letter spacing 0.5px" })
|
|
139
|
+
] })
|
|
140
|
+
] })
|
|
141
|
+
] }),
|
|
142
|
+
/* @__PURE__ */ r.jsx(d, {}),
|
|
143
|
+
/* @__PURE__ */ r.jsxs(t, { children: [
|
|
144
|
+
/* @__PURE__ */ r.jsx(e, { variant: "h6", color: "primary", gutterBottom: !0, children: "Interactive & Special Text" }),
|
|
145
|
+
/* @__PURE__ */ r.jsxs(i, { spacing: 2, children: [
|
|
146
|
+
/* @__PURE__ */ r.jsxs(t, { children: [
|
|
147
|
+
/* @__PURE__ */ r.jsx(e, { variant: "button", component: "div", gutterBottom: !0, children: "Button Text - All Caps Button Labels" }),
|
|
148
|
+
/* @__PURE__ */ r.jsx(e, { variant: "caption", color: "text.secondary", children: "button - 0.875rem (14px), Weight 500, Uppercase" })
|
|
149
|
+
] }),
|
|
150
|
+
/* @__PURE__ */ r.jsxs(t, { children: [
|
|
151
|
+
/* @__PURE__ */ r.jsx(
|
|
152
|
+
e,
|
|
153
|
+
{
|
|
154
|
+
variant: "body2",
|
|
155
|
+
component: "a",
|
|
156
|
+
href: "#",
|
|
157
|
+
sx: { color: "primary.main", textDecoration: "none", "&:hover": { textDecoration: "underline" } },
|
|
158
|
+
gutterBottom: !0,
|
|
159
|
+
children: "Link Text - Interactive text elements"
|
|
160
|
+
}
|
|
161
|
+
),
|
|
162
|
+
/* @__PURE__ */ r.jsx(e, { variant: "caption", color: "text.secondary", children: "Links inherit body variants with primary color and hover effects" })
|
|
163
|
+
] })
|
|
164
|
+
] })
|
|
165
|
+
] }),
|
|
166
|
+
/* @__PURE__ */ r.jsx(d, {}),
|
|
167
|
+
/* @__PURE__ */ r.jsxs(t, { children: [
|
|
168
|
+
/* @__PURE__ */ r.jsx(e, { variant: "h6", color: "primary", gutterBottom: !0, children: "Text Color Variants" }),
|
|
169
|
+
/* @__PURE__ */ r.jsxs(i, { spacing: 1, children: [
|
|
170
|
+
/* @__PURE__ */ r.jsx(e, { variant: "body1", color: "text.primary", children: "Primary Text - Main content color" }),
|
|
171
|
+
/* @__PURE__ */ r.jsx(e, { variant: "body1", color: "text.secondary", children: "Secondary Text - Supporting content color" }),
|
|
172
|
+
/* @__PURE__ */ r.jsx(e, { variant: "body1", color: "text.disabled", children: "Disabled Text - Inactive content color" }),
|
|
173
|
+
/* @__PURE__ */ r.jsx(e, { variant: "body1", color: "primary.main", children: "Primary Brand - Brand color text" }),
|
|
174
|
+
/* @__PURE__ */ r.jsx(e, { variant: "body1", color: "success.main", children: "Success Text - Positive feedback" }),
|
|
175
|
+
/* @__PURE__ */ r.jsx(e, { variant: "body1", color: "warning.main", children: "Warning Text - Caution indicators" }),
|
|
176
|
+
/* @__PURE__ */ r.jsx(e, { variant: "body1", color: "error.main", children: "Error Text - Error messages" })
|
|
177
|
+
] })
|
|
178
|
+
] })
|
|
179
|
+
] })
|
|
180
|
+
] }) }), W = () => {
|
|
181
|
+
const [c, o] = g.useState("");
|
|
182
|
+
return /* @__PURE__ */ r.jsx(x, { elevation: 2, sx: { borderRadius: 2 }, children: /* @__PURE__ */ r.jsxs(h, { children: [
|
|
183
|
+
/* @__PURE__ */ r.jsx(e, { variant: "h5", gutterBottom: !0, children: "SoloStylist Components" }),
|
|
184
|
+
/* @__PURE__ */ r.jsxs(i, { spacing: 4, children: [
|
|
185
|
+
/* @__PURE__ */ r.jsxs(t, { children: [
|
|
186
|
+
/* @__PURE__ */ r.jsx(e, { variant: "h6", gutterBottom: !0, children: "Enhanced Buttons" }),
|
|
187
|
+
/* @__PURE__ */ r.jsx(e, { variant: "body2", color: "text.secondary", gutterBottom: !0, sx: { mb: 3 }, children: "Comprehensive button system with all variants, colors, and sizes" }),
|
|
188
|
+
/* @__PURE__ */ r.jsxs(i, { spacing: 3, children: [
|
|
189
|
+
/* @__PURE__ */ r.jsxs(t, { children: [
|
|
190
|
+
/* @__PURE__ */ r.jsx(e, { variant: "subtitle2", gutterBottom: !0, children: "Button Variants" }),
|
|
191
|
+
/* @__PURE__ */ r.jsxs(i, { direction: "row", spacing: 2, flexWrap: "wrap", gap: 1, children: [
|
|
192
|
+
/* @__PURE__ */ r.jsx(n, { variant: "contained", color: "primary", children: "Contained" }),
|
|
193
|
+
/* @__PURE__ */ r.jsx(n, { variant: "outlined", color: "primary", children: "Outlined" }),
|
|
194
|
+
/* @__PURE__ */ r.jsx(n, { variant: "text", color: "primary", children: "Text" })
|
|
195
|
+
] })
|
|
196
|
+
] }),
|
|
197
|
+
/* @__PURE__ */ r.jsxs(t, { children: [
|
|
198
|
+
/* @__PURE__ */ r.jsx(e, { variant: "subtitle2", gutterBottom: !0, children: "Color Variants (Contained)" }),
|
|
199
|
+
/* @__PURE__ */ r.jsxs(i, { direction: "row", spacing: 2, flexWrap: "wrap", gap: 1, children: [
|
|
200
|
+
/* @__PURE__ */ r.jsx(n, { variant: "contained", color: "primary", children: "Primary" }),
|
|
201
|
+
/* @__PURE__ */ r.jsx(n, { variant: "contained", color: "secondary", children: "Secondary" }),
|
|
202
|
+
/* @__PURE__ */ r.jsx(n, { variant: "contained", color: "success", children: "Success" }),
|
|
203
|
+
/* @__PURE__ */ r.jsx(n, { variant: "contained", color: "warning", children: "Warning" }),
|
|
204
|
+
/* @__PURE__ */ r.jsx(n, { variant: "contained", color: "error", children: "Error" }),
|
|
205
|
+
/* @__PURE__ */ r.jsx(n, { variant: "contained", color: "info", children: "Info" })
|
|
206
|
+
] })
|
|
207
|
+
] }),
|
|
208
|
+
/* @__PURE__ */ r.jsxs(t, { children: [
|
|
209
|
+
/* @__PURE__ */ r.jsx(e, { variant: "subtitle2", gutterBottom: !0, children: "Color Variants (Outlined)" }),
|
|
210
|
+
/* @__PURE__ */ r.jsxs(i, { direction: "row", spacing: 2, flexWrap: "wrap", gap: 1, children: [
|
|
211
|
+
/* @__PURE__ */ r.jsx(n, { variant: "outlined", color: "primary", children: "Primary" }),
|
|
212
|
+
/* @__PURE__ */ r.jsx(n, { variant: "outlined", color: "secondary", children: "Secondary" }),
|
|
213
|
+
/* @__PURE__ */ r.jsx(n, { variant: "outlined", color: "success", children: "Success" }),
|
|
214
|
+
/* @__PURE__ */ r.jsx(n, { variant: "outlined", color: "warning", children: "Warning" }),
|
|
215
|
+
/* @__PURE__ */ r.jsx(n, { variant: "outlined", color: "error", children: "Error" }),
|
|
216
|
+
/* @__PURE__ */ r.jsx(n, { variant: "outlined", color: "info", children: "Info" })
|
|
217
|
+
] })
|
|
218
|
+
] }),
|
|
219
|
+
/* @__PURE__ */ r.jsxs(t, { children: [
|
|
220
|
+
/* @__PURE__ */ r.jsx(e, { variant: "subtitle2", gutterBottom: !0, children: "Button Sizes" }),
|
|
221
|
+
/* @__PURE__ */ r.jsxs(i, { direction: "row", spacing: 2, alignItems: "center", flexWrap: "wrap", gap: 1, children: [
|
|
222
|
+
/* @__PURE__ */ r.jsx(n, { variant: "contained", color: "primary", size: "small", children: "Small" }),
|
|
223
|
+
/* @__PURE__ */ r.jsx(n, { variant: "contained", color: "primary", size: "medium", children: "Medium" }),
|
|
224
|
+
/* @__PURE__ */ r.jsx(n, { variant: "contained", color: "primary", size: "large", children: "Large" })
|
|
225
|
+
] })
|
|
226
|
+
] }),
|
|
227
|
+
/* @__PURE__ */ r.jsxs(t, { children: [
|
|
228
|
+
/* @__PURE__ */ r.jsx(e, { variant: "subtitle2", gutterBottom: !0, children: "Button States" }),
|
|
229
|
+
/* @__PURE__ */ r.jsxs(i, { direction: "row", spacing: 2, flexWrap: "wrap", gap: 1, children: [
|
|
230
|
+
/* @__PURE__ */ r.jsx(n, { variant: "contained", color: "primary", children: "Default" }),
|
|
231
|
+
/* @__PURE__ */ r.jsx(n, { variant: "contained", color: "primary", disabled: !0, children: "Disabled" }),
|
|
232
|
+
/* @__PURE__ */ r.jsx(n, { variant: "outlined", color: "primary", disabled: !0, children: "Disabled Outlined" }),
|
|
233
|
+
/* @__PURE__ */ r.jsx(n, { variant: "text", color: "primary", disabled: !0, children: "Disabled Text" })
|
|
234
|
+
] })
|
|
235
|
+
] }),
|
|
236
|
+
/* @__PURE__ */ r.jsxs(t, { children: [
|
|
237
|
+
/* @__PURE__ */ r.jsx(e, { variant: "subtitle2", gutterBottom: !0, children: "Buttons with Icons" }),
|
|
238
|
+
/* @__PURE__ */ r.jsxs(i, { direction: "row", spacing: 2, flexWrap: "wrap", gap: 1, children: [
|
|
239
|
+
/* @__PURE__ */ r.jsx(n, { variant: "contained", color: "primary", startIcon: /* @__PURE__ */ r.jsx(f, {}), children: "Start Icon" }),
|
|
240
|
+
/* @__PURE__ */ r.jsx(n, { variant: "contained", color: "secondary", endIcon: /* @__PURE__ */ r.jsx(S, {}), children: "End Icon" }),
|
|
241
|
+
/* @__PURE__ */ r.jsx(n, { variant: "outlined", color: "success", startIcon: /* @__PURE__ */ r.jsx(w, {}), children: "Outlined + Icon" }),
|
|
242
|
+
/* @__PURE__ */ r.jsx(n, { variant: "text", color: "error", endIcon: /* @__PURE__ */ r.jsx(b, {}), children: "Text + Icon" })
|
|
243
|
+
] })
|
|
244
|
+
] })
|
|
245
|
+
] })
|
|
246
|
+
] }),
|
|
247
|
+
/* @__PURE__ */ r.jsxs(t, { children: [
|
|
248
|
+
/* @__PURE__ */ r.jsx(e, { variant: "h6", gutterBottom: !0, children: "Form Components with SForm" }),
|
|
249
|
+
/* @__PURE__ */ r.jsx(v, { label: "Sample Form", required: !0, children: /* @__PURE__ */ r.jsxs(i, { spacing: 3, children: [
|
|
250
|
+
/* @__PURE__ */ r.jsx(
|
|
251
|
+
u,
|
|
252
|
+
{
|
|
253
|
+
label: "Enhanced Text Field",
|
|
254
|
+
value: c,
|
|
255
|
+
onChange: (a) => o(a.target.value),
|
|
256
|
+
placeholder: "Enter text here...",
|
|
257
|
+
helperText: "This is an enhanced STextField component",
|
|
258
|
+
fullWidth: !0
|
|
259
|
+
}
|
|
260
|
+
),
|
|
261
|
+
/* @__PURE__ */ r.jsx(
|
|
262
|
+
u,
|
|
263
|
+
{
|
|
264
|
+
label: "Password Field",
|
|
265
|
+
type: "password",
|
|
266
|
+
placeholder: "Enter password...",
|
|
267
|
+
helperText: "Password input with custom styling",
|
|
268
|
+
fullWidth: !0
|
|
269
|
+
}
|
|
270
|
+
),
|
|
271
|
+
/* @__PURE__ */ r.jsx(
|
|
272
|
+
u,
|
|
273
|
+
{
|
|
274
|
+
label: "Multiline Text",
|
|
275
|
+
multiline: !0,
|
|
276
|
+
rows: 3,
|
|
277
|
+
placeholder: "Enter multiple lines...",
|
|
278
|
+
helperText: "Multiline text input",
|
|
279
|
+
fullWidth: !0
|
|
280
|
+
}
|
|
281
|
+
)
|
|
282
|
+
] }) })
|
|
283
|
+
] }),
|
|
284
|
+
/* @__PURE__ */ r.jsxs(t, { children: [
|
|
285
|
+
/* @__PURE__ */ r.jsx(e, { variant: "h6", gutterBottom: !0, children: "Theme Controls" }),
|
|
286
|
+
/* @__PURE__ */ r.jsx(i, { spacing: 2, children: /* @__PURE__ */ r.jsxs(t, { children: [
|
|
287
|
+
/* @__PURE__ */ r.jsx(e, { variant: "subtitle2", gutterBottom: !0, children: "Theme Switch Component" }),
|
|
288
|
+
/* @__PURE__ */ r.jsx(y, {})
|
|
289
|
+
] }) })
|
|
290
|
+
] })
|
|
291
|
+
] })
|
|
292
|
+
] }) });
|
|
293
|
+
}, C = () => /* @__PURE__ */ r.jsx(x, { elevation: 2, sx: { borderRadius: 2 }, children: /* @__PURE__ */ r.jsxs(h, { children: [
|
|
294
|
+
/* @__PURE__ */ r.jsx(e, { variant: "h5", gutterBottom: !0, children: "Interactive Components" }),
|
|
295
|
+
/* @__PURE__ */ r.jsxs(i, { spacing: 3, children: [
|
|
296
|
+
/* @__PURE__ */ r.jsxs(t, { children: [
|
|
297
|
+
/* @__PURE__ */ r.jsx(e, { variant: "h6", gutterBottom: !0, children: "Alerts" }),
|
|
298
|
+
/* @__PURE__ */ r.jsxs(i, { spacing: 2, children: [
|
|
299
|
+
/* @__PURE__ */ r.jsx(p, { severity: "success", children: "Success alert - Operation completed successfully!" }),
|
|
300
|
+
/* @__PURE__ */ r.jsx(p, { severity: "warning", children: "Warning alert - Please review your input." }),
|
|
301
|
+
/* @__PURE__ */ r.jsx(p, { severity: "error", children: "Error alert - Something went wrong." }),
|
|
302
|
+
/* @__PURE__ */ r.jsx(p, { severity: "info", children: "Info alert - Here's some useful information." })
|
|
303
|
+
] })
|
|
304
|
+
] }),
|
|
305
|
+
/* @__PURE__ */ r.jsxs(t, { children: [
|
|
306
|
+
/* @__PURE__ */ r.jsx(e, { variant: "h6", gutterBottom: !0, children: "Chips & Tags" }),
|
|
307
|
+
/* @__PURE__ */ r.jsx(e, { variant: "body2", color: "text.secondary", gutterBottom: !0, sx: { mb: 3 }, children: "Comprehensive chip system with all colors, variants, and interactive states" }),
|
|
308
|
+
/* @__PURE__ */ r.jsxs(i, { spacing: 3, children: [
|
|
309
|
+
/* @__PURE__ */ r.jsxs(t, { children: [
|
|
310
|
+
/* @__PURE__ */ r.jsx(e, { variant: "subtitle2", gutterBottom: !0, children: "Color Variants" }),
|
|
311
|
+
/* @__PURE__ */ r.jsxs(i, { direction: "row", spacing: 1, flexWrap: "wrap", gap: 1, children: [
|
|
312
|
+
/* @__PURE__ */ r.jsx(s, { label: "Default" }),
|
|
313
|
+
/* @__PURE__ */ r.jsx(s, { label: "Primary", color: "primary" }),
|
|
314
|
+
/* @__PURE__ */ r.jsx(s, { label: "Secondary", color: "secondary" }),
|
|
315
|
+
/* @__PURE__ */ r.jsx(s, { label: "Success", color: "success" }),
|
|
316
|
+
/* @__PURE__ */ r.jsx(s, { label: "Warning", color: "warning" }),
|
|
317
|
+
/* @__PURE__ */ r.jsx(s, { label: "Error", color: "error" }),
|
|
318
|
+
/* @__PURE__ */ r.jsx(s, { label: "Info", color: "info" })
|
|
319
|
+
] })
|
|
320
|
+
] }),
|
|
321
|
+
/* @__PURE__ */ r.jsxs(t, { children: [
|
|
322
|
+
/* @__PURE__ */ r.jsx(e, { variant: "subtitle2", gutterBottom: !0, children: "Chip Sizes" }),
|
|
323
|
+
/* @__PURE__ */ r.jsxs(i, { direction: "row", spacing: 1, alignItems: "center", flexWrap: "wrap", gap: 1, children: [
|
|
324
|
+
/* @__PURE__ */ r.jsx(s, { label: "Small", color: "primary", size: "small" }),
|
|
325
|
+
/* @__PURE__ */ r.jsx(s, { label: "Medium", color: "primary", size: "medium" })
|
|
326
|
+
] })
|
|
327
|
+
] })
|
|
328
|
+
] })
|
|
329
|
+
] })
|
|
330
|
+
] })
|
|
331
|
+
] }) }), I = () => {
|
|
332
|
+
const c = [0, 1, 2, 4, 6, 8, 12, 16, 24];
|
|
333
|
+
return /* @__PURE__ */ r.jsx(x, { elevation: 2, sx: { borderRadius: 2 }, children: /* @__PURE__ */ r.jsxs(h, { children: [
|
|
334
|
+
/* @__PURE__ */ r.jsx(e, { variant: "h5", gutterBottom: !0, children: "Shadow System" }),
|
|
335
|
+
/* @__PURE__ */ r.jsx(e, { variant: "body2", color: "text.secondary", gutterBottom: !0, children: "Material-UI elevation system with custom shadows" }),
|
|
336
|
+
/* @__PURE__ */ r.jsx(i, { direction: "row", flexWrap: "wrap", gap: 3, sx: { mt: 2 }, children: c.map((o) => /* @__PURE__ */ r.jsxs(t, { sx: { textAlign: "center" }, children: [
|
|
337
|
+
/* @__PURE__ */ r.jsx(
|
|
338
|
+
m,
|
|
339
|
+
{
|
|
340
|
+
elevation: o,
|
|
341
|
+
sx: {
|
|
342
|
+
width: 80,
|
|
343
|
+
height: 80,
|
|
344
|
+
display: "flex",
|
|
345
|
+
alignItems: "center",
|
|
346
|
+
justifyContent: "center",
|
|
347
|
+
mb: 1,
|
|
348
|
+
borderRadius: 2
|
|
349
|
+
},
|
|
350
|
+
children: /* @__PURE__ */ r.jsx(e, { variant: "h6", children: o })
|
|
351
|
+
}
|
|
352
|
+
),
|
|
353
|
+
/* @__PURE__ */ r.jsxs(e, { variant: "caption", color: "text.secondary", children: [
|
|
354
|
+
"Elevation ",
|
|
355
|
+
o
|
|
356
|
+
] })
|
|
357
|
+
] }, o)) }),
|
|
358
|
+
/* @__PURE__ */ r.jsx(d, { sx: { my: 3 } }),
|
|
359
|
+
/* @__PURE__ */ r.jsx(e, { variant: "h6", gutterBottom: !0, children: "Custom Shadow Effects" }),
|
|
360
|
+
/* @__PURE__ */ r.jsxs(i, { direction: "row", spacing: 3, flexWrap: "wrap", gap: 2, children: [
|
|
361
|
+
/* @__PURE__ */ r.jsx(
|
|
362
|
+
m,
|
|
363
|
+
{
|
|
364
|
+
sx: {
|
|
365
|
+
p: 3,
|
|
366
|
+
borderRadius: 2,
|
|
367
|
+
boxShadow: "var(--s-palette-baseShadow)"
|
|
368
|
+
},
|
|
369
|
+
children: /* @__PURE__ */ r.jsx(e, { variant: "body2", children: "Custom Base Shadow" })
|
|
370
|
+
}
|
|
371
|
+
),
|
|
372
|
+
/* @__PURE__ */ r.jsx(
|
|
373
|
+
m,
|
|
374
|
+
{
|
|
375
|
+
sx: {
|
|
376
|
+
p: 3,
|
|
377
|
+
borderRadius: 2,
|
|
378
|
+
boxShadow: (o) => o.palette.mode === "light" ? "0 4px 20px rgba(0,0,0,0.1)" : "0 4px 20px rgba(0,0,0,0.5)"
|
|
379
|
+
},
|
|
380
|
+
children: /* @__PURE__ */ r.jsx(e, { variant: "body2", children: "Theme-aware Shadow" })
|
|
381
|
+
}
|
|
382
|
+
)
|
|
383
|
+
] })
|
|
384
|
+
] }) });
|
|
385
|
+
}, F = ({
|
|
386
|
+
title: c = "SoloStylist UI Kit Theme Demo",
|
|
387
|
+
compact: o = !1,
|
|
388
|
+
sections: a = ["colors", "typography", "components", "forms", "interactive", "shadows"]
|
|
389
|
+
}) => {
|
|
390
|
+
const l = g.useMemo(
|
|
391
|
+
() => ({
|
|
392
|
+
colors: a.includes("colors"),
|
|
393
|
+
typography: a.includes("typography"),
|
|
394
|
+
components: a.includes("components"),
|
|
395
|
+
forms: a.includes("forms"),
|
|
396
|
+
shadows: a.includes("shadows"),
|
|
397
|
+
interactive: a.includes("interactive")
|
|
398
|
+
}),
|
|
399
|
+
[a]
|
|
400
|
+
);
|
|
401
|
+
return /* @__PURE__ */ r.jsxs(t, { sx: { p: o ? 2 : 3, maxWidth: 1200, mx: "auto" }, children: [
|
|
402
|
+
/* @__PURE__ */ r.jsxs(t, { sx: { mb: 4, textAlign: "center" }, children: [
|
|
403
|
+
/* @__PURE__ */ r.jsx(e, { variant: "h3", component: "h1", gutterBottom: !0, children: c }),
|
|
404
|
+
/* @__PURE__ */ r.jsx(e, { variant: "h6", color: "text.secondary", sx: { mb: 3 }, children: "Showcase of the SoloStylist UI Kit with modern theming capabilities" })
|
|
405
|
+
] }),
|
|
406
|
+
/* @__PURE__ */ r.jsxs(i, { spacing: o ? 2 : 4, children: [
|
|
407
|
+
l.colors && /* @__PURE__ */ r.jsx(B, {}),
|
|
408
|
+
l.typography && /* @__PURE__ */ r.jsx(T, {}),
|
|
409
|
+
(l.components || l.forms) && /* @__PURE__ */ r.jsx(W, {}),
|
|
410
|
+
l.interactive && /* @__PURE__ */ r.jsx(C, {}),
|
|
411
|
+
l.shadows && /* @__PURE__ */ r.jsx(I, {})
|
|
412
|
+
] })
|
|
413
|
+
] });
|
|
414
|
+
};
|
|
415
|
+
export {
|
|
416
|
+
F as default
|
|
417
|
+
};
|
|
@@ -10,7 +10,7 @@ export interface SThemeProviderProps extends Omit<ThemeProviderProps, 'defaultMo
|
|
|
10
10
|
disableCustomTheme?: boolean;
|
|
11
11
|
/** Additional theme component overrides */
|
|
12
12
|
themeComponents?: ThemeOptions['components'];
|
|
13
|
-
/** Default color mode (defaults to '
|
|
13
|
+
/** Default color mode (defaults to 'system') */
|
|
14
14
|
defaultMode?: 'light' | 'dark' | 'system' | undefined;
|
|
15
15
|
/** Custom theme object to merge with internal theme */
|
|
16
16
|
theme?: Theme;
|
|
@@ -20,7 +20,7 @@ export interface SThemeProviderProps extends Omit<ThemeProviderProps, 'defaultMo
|
|
|
20
20
|
*
|
|
21
21
|
* Features:
|
|
22
22
|
* - Material-UI v6 CSS variables integration with 's-' prefix
|
|
23
|
-
* -
|
|
23
|
+
* - System mode default with light/dark/system mode support
|
|
24
24
|
* - Comprehensive component customizations
|
|
25
25
|
* - Custom color schemes, typography, shadows, and shapes
|
|
26
26
|
* - Modular theme customizations from separate files
|
|
@@ -1,30 +1,30 @@
|
|
|
1
|
-
import { j as
|
|
2
|
-
import * as
|
|
1
|
+
import { j as s } from "../jsx-runtime-DywqP_6a.js";
|
|
2
|
+
import * as e from "react";
|
|
3
3
|
import { createTheme as p, ThemeProvider as c } from "@mui/material";
|
|
4
4
|
import { components as f } from "../theme/components/components.js";
|
|
5
5
|
import { dataDisplayCustomizations as u } from "../theme/customizations/data-display.js";
|
|
6
6
|
import { feedbackCustomizations as h } from "../theme/customizations/feedback.js";
|
|
7
|
-
import { inputsCustomizations as
|
|
8
|
-
import { navigationCustomizations as
|
|
9
|
-
import { surfacesCustomizations as
|
|
10
|
-
import { shape as z, shadows as g, typography as j, colorSchemes as
|
|
7
|
+
import { inputsCustomizations as l } from "../theme/customizations/inputs.js";
|
|
8
|
+
import { navigationCustomizations as x } from "../theme/customizations/navigation.js";
|
|
9
|
+
import { surfacesCustomizations as d } from "../theme/customizations/surfaces.js";
|
|
10
|
+
import { shape as z, shadows as g, typography as j, colorSchemes as y } from "../theme/theme-primitives.js";
|
|
11
11
|
const w = ({
|
|
12
12
|
children: r,
|
|
13
13
|
disableCustomTheme: o,
|
|
14
14
|
themeComponents: t,
|
|
15
|
-
defaultMode: m = "
|
|
16
|
-
//
|
|
15
|
+
defaultMode: m = "system",
|
|
16
|
+
// System preference by default
|
|
17
17
|
theme: i,
|
|
18
18
|
...a
|
|
19
19
|
}) => {
|
|
20
|
-
const n =
|
|
20
|
+
const n = e.useMemo(() => o ? {} : p({
|
|
21
21
|
// CSS variables configuration for dynamic theming
|
|
22
22
|
cssVariables: {
|
|
23
23
|
colorSchemeSelector: "data-mui-color-scheme",
|
|
24
24
|
cssVarPrefix: "s"
|
|
25
25
|
// All CSS vars prefixed with '--s-'
|
|
26
26
|
},
|
|
27
|
-
colorSchemes:
|
|
27
|
+
colorSchemes: y,
|
|
28
28
|
// Light/dark color schemes
|
|
29
29
|
typography: j,
|
|
30
30
|
// Custom typography scales
|
|
@@ -34,17 +34,17 @@ const w = ({
|
|
|
34
34
|
// Border radius and shape settings
|
|
35
35
|
components: {
|
|
36
36
|
// Merge all component customizations
|
|
37
|
-
...
|
|
37
|
+
...l,
|
|
38
38
|
...u,
|
|
39
39
|
...h,
|
|
40
|
-
...l,
|
|
41
40
|
...x,
|
|
41
|
+
...d,
|
|
42
42
|
...f,
|
|
43
43
|
...t
|
|
44
44
|
// Allow external overrides
|
|
45
45
|
}
|
|
46
46
|
}), [o, t]);
|
|
47
|
-
return o ? /* @__PURE__ */
|
|
47
|
+
return o ? /* @__PURE__ */ s.jsx(e.Fragment, { children: r }) : /* @__PURE__ */ s.jsx(
|
|
48
48
|
c,
|
|
49
49
|
{
|
|
50
50
|
disableTransitionOnChange: !0,
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type definition for theme modes
|
|
3
|
+
*/
|
|
4
|
+
export type SThemeMode = 'light' | 'dark' | 'system';
|
|
5
|
+
/**
|
|
6
|
+
* Custom hook for theme management in SoloStylist UI Kit
|
|
7
|
+
*
|
|
8
|
+
* This hook provides easy access to the current theme mode and methods
|
|
9
|
+
* to change the theme throughout the entire application.
|
|
10
|
+
*
|
|
11
|
+
* @returns Object containing theme mode, setter, and utility methods
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```tsx
|
|
15
|
+
* import { useSTheme } from '@solostylist/ui-kit/s-theme-provider';
|
|
16
|
+
*
|
|
17
|
+
* function MyComponent() {
|
|
18
|
+
* const { mode, setMode, isDark, isLight, toggleMode } = useSTheme();
|
|
19
|
+
*
|
|
20
|
+
* return (
|
|
21
|
+
* <div>
|
|
22
|
+
* <p>Current mode: {mode}</p>
|
|
23
|
+
* <button onClick={() => setMode('dark')}>Dark Mode</button>
|
|
24
|
+
* <button onClick={() => setMode('light')}>Light Mode</button>
|
|
25
|
+
* <button onClick={toggleMode}>Toggle Theme</button>
|
|
26
|
+
* </div>
|
|
27
|
+
* );
|
|
28
|
+
* }
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export declare const useSTheme: () => {
|
|
32
|
+
/** Current theme mode (includes 'system') */
|
|
33
|
+
mode: SThemeMode;
|
|
34
|
+
/** Resolved theme mode (system resolves to light/dark) */
|
|
35
|
+
resolvedMode: "light" | "dark";
|
|
36
|
+
/** System preference mode */
|
|
37
|
+
systemMode: "light" | "dark";
|
|
38
|
+
/** Set theme mode */
|
|
39
|
+
setMode: (newMode: SThemeMode) => void;
|
|
40
|
+
/** Is current theme dark? */
|
|
41
|
+
isDark: boolean;
|
|
42
|
+
/** Is current theme light? */
|
|
43
|
+
isLight: boolean;
|
|
44
|
+
/** Is using system preference? */
|
|
45
|
+
isSystem: boolean;
|
|
46
|
+
/** Toggle between light and dark (skips system) */
|
|
47
|
+
toggleMode: () => void;
|
|
48
|
+
/** Cycle through all modes: light → dark → system → light */
|
|
49
|
+
cycleMode: () => void;
|
|
50
|
+
};
|
|
51
|
+
export default useSTheme;
|