@sckyzo/cosmos-react 0.0.3 → 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/CHANGELOG.md +18 -0
- package/README.md +34 -2
- package/dist/index.cjs +172 -30
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +106 -9
- package/dist/index.d.ts +106 -9
- package/dist/index.js +168 -32
- package/dist/index.js.map +1 -1
- package/package.json +16 -16
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { clsx } from 'clsx';
|
|
2
2
|
import { jsx, jsxs, Fragment as Fragment$1 } from 'react/jsx-runtime';
|
|
3
3
|
import { forwardRef, createContext, Children, Fragment, cloneElement, isValidElement, useState, useRef, useCallback, useEffect, useId, useContext, useMemo } from 'react';
|
|
4
|
-
import { ChevronRight, Check, Copy, BellOff, Bell, CheckCircle2, Info, AlertTriangle, XCircle, ChevronDown, Sun, Moon, MoonStar, ExternalLink, Search, EyeOff, Eye, Minus, Paperclip, Clock, X, ChevronLeft, Dot as Dot$1, ArrowRight, HelpCircle, Home, Inbox, AlertCircle, CheckCircle, RefreshCw, Loader2, Save, Megaphone, Cookie, ArrowUp, ChevronUp, Plus, Maximize2, RotateCcw, Camera, Trash2, Upload, File, ChevronsUpDown, Filter, MailCheck, ArrowLeft, Mail, User, ShieldCheck, Quote, Calendar as Calendar$1 } from 'lucide-react';
|
|
4
|
+
import { ChevronRight, Check, Copy, BellOff, Bell, CheckCircle2, Info, AlertTriangle, XCircle, ChevronDown, Sun, Moon, MoonStar, ExternalLink, Search, EyeOff, Eye, Minus, Paperclip, Clock, X, ChevronLeft, Dot as Dot$1, ArrowRight, HelpCircle, Home, Inbox, AlertCircle, CheckCircle, RefreshCw, Loader2, Save, Megaphone, Cookie, ArrowUp, ChevronUp, Plus, Maximize2, RotateCcw, Camera, Trash2, Upload, File, ChevronsUpDown, Filter, MailCheck, ArrowLeft, Mail, User, ShieldCheck, Palette, Quote, Calendar as Calendar$1 } from 'lucide-react';
|
|
5
5
|
import { createPortal } from 'react-dom';
|
|
6
6
|
import Autoplay from 'embla-carousel-autoplay';
|
|
7
7
|
import useEmblaCarousel from 'embla-carousel-react';
|
|
@@ -320,11 +320,11 @@ var SidebarItem = ({
|
|
|
320
320
|
const baseClass = clsx(
|
|
321
321
|
"group mx-2 flex items-center gap-3 rounded-lg py-2 text-sm font-medium transition-colors",
|
|
322
322
|
collapsed ? "justify-center px-2" : "px-3",
|
|
323
|
-
active ? "bg-brand-500/10 text-brand-
|
|
323
|
+
active ? "bg-brand-500/10 text-brand-600 dark:text-brand-400" : "text-[var(--color-text-secondary)] hover:bg-black/5 hover:text-[var(--color-text-primary)] dark:hover:bg-white/5"
|
|
324
324
|
);
|
|
325
325
|
const style = !collapsed && depth > 0 ? { paddingLeft: 12 + depth * 20 } : void 0;
|
|
326
326
|
const content = /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
327
|
-
/* @__PURE__ */ jsx(Icon2, { className:
|
|
327
|
+
/* @__PURE__ */ jsx(Icon2, { className: "h-5 w-5 shrink-0" }),
|
|
328
328
|
!collapsed && /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
329
329
|
/* @__PURE__ */ jsx("span", { className: "flex-1 truncate", children: label }),
|
|
330
330
|
badge && /* @__PURE__ */ jsx("span", { className: "shrink-0", children: badge })
|
|
@@ -375,9 +375,9 @@ var SidebarSubMenu = ({
|
|
|
375
375
|
title: label,
|
|
376
376
|
className: clsx(
|
|
377
377
|
"group mx-2 flex w-[calc(100%-1rem)] items-center justify-center rounded-lg px-2 py-2 text-sm font-medium transition-colors",
|
|
378
|
-
active ? "bg-brand-500/10 text-brand-
|
|
378
|
+
active ? "bg-brand-500/10 text-brand-600 dark:text-brand-400" : "text-[var(--color-text-secondary)] hover:bg-black/5 hover:text-[var(--color-text-primary)] dark:hover:bg-white/5"
|
|
379
379
|
),
|
|
380
|
-
children: /* @__PURE__ */ jsx(Icon2, { className:
|
|
380
|
+
children: /* @__PURE__ */ jsx(Icon2, { className: "h-5 w-5 shrink-0" })
|
|
381
381
|
}
|
|
382
382
|
);
|
|
383
383
|
}
|
|
@@ -390,10 +390,10 @@ var SidebarSubMenu = ({
|
|
|
390
390
|
"aria-expanded": open,
|
|
391
391
|
className: clsx(
|
|
392
392
|
"group mx-2 flex w-[calc(100%-1rem)] items-center gap-3 rounded-lg px-3 py-2 text-left text-sm font-medium transition-colors",
|
|
393
|
-
active ? "bg-brand-500/10 text-brand-
|
|
393
|
+
active ? "bg-brand-500/10 text-brand-600 dark:text-brand-400" : "text-[var(--color-text-secondary)] hover:bg-black/5 hover:text-[var(--color-text-primary)] dark:hover:bg-white/5"
|
|
394
394
|
),
|
|
395
395
|
children: [
|
|
396
|
-
/* @__PURE__ */ jsx(Icon2, { className:
|
|
396
|
+
/* @__PURE__ */ jsx(Icon2, { className: "h-5 w-5 shrink-0" }),
|
|
397
397
|
/* @__PURE__ */ jsx("span", { className: "flex-1 truncate", children: label }),
|
|
398
398
|
badge && /* @__PURE__ */ jsx("span", { className: "shrink-0", children: badge }),
|
|
399
399
|
/* @__PURE__ */ jsx(
|
|
@@ -454,7 +454,7 @@ Sidebar.SubMenu = SidebarSubMenu;
|
|
|
454
454
|
var PageBreadcrumb = ({ items, className }) => /* @__PURE__ */ jsx("nav", { "aria-label": "Breadcrumb", className, children: /* @__PURE__ */ jsx("ol", { className: "flex flex-wrap items-center gap-1 text-sm", children: items.map((item, i) => {
|
|
455
455
|
const isFirst = i === 0;
|
|
456
456
|
const isLast = i === items.length - 1;
|
|
457
|
-
const linkClass = "hover:text-brand-
|
|
457
|
+
const linkClass = "hover:text-brand-600 dark:hover:text-brand-400 flex items-center gap-1 text-[var(--color-text-secondary)] transition-colors";
|
|
458
458
|
const renderInner = /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
459
459
|
isFirst && /* @__PURE__ */ jsx(Home, { className: "h-4 w-4" }),
|
|
460
460
|
item.label
|
|
@@ -598,7 +598,7 @@ var ErrorState = ({
|
|
|
598
598
|
{
|
|
599
599
|
type: "button",
|
|
600
600
|
onClick: onRetry,
|
|
601
|
-
className: "text-brand-
|
|
601
|
+
className: "text-brand-600 hover:text-brand-700 dark:text-brand-400 dark:hover:text-brand-300 text-xs font-medium hover:underline",
|
|
602
602
|
children: "Try again"
|
|
603
603
|
}
|
|
604
604
|
)
|
|
@@ -3479,7 +3479,7 @@ var NotificationsPanelFooter = ({
|
|
|
3479
3479
|
if (closeOnClick && !e.defaultPrevented) setOpen(false);
|
|
3480
3480
|
},
|
|
3481
3481
|
className: clsx(
|
|
3482
|
-
"text-brand-
|
|
3482
|
+
"text-brand-600 dark:text-brand-400 w-full rounded-lg py-2 text-center text-sm font-medium transition-colors hover:bg-gray-50 dark:hover:bg-white/5",
|
|
3483
3483
|
className
|
|
3484
3484
|
),
|
|
3485
3485
|
...rest,
|
|
@@ -3812,7 +3812,7 @@ var SIZE_CLASS9 = {
|
|
|
3812
3812
|
sm: { box: "h-8 w-8", icon: "h-4 w-4" },
|
|
3813
3813
|
md: { box: "h-10 w-10", icon: "h-5 w-5" }
|
|
3814
3814
|
};
|
|
3815
|
-
var TRI_ORDER = ["light", "dark", "
|
|
3815
|
+
var TRI_ORDER = ["light", "dark", "deep-blue"];
|
|
3816
3816
|
var nextInCycle = (current) => {
|
|
3817
3817
|
const idx = TRI_ORDER.indexOf(current);
|
|
3818
3818
|
return TRI_ORDER[(idx + 1) % TRI_ORDER.length];
|
|
@@ -3820,7 +3820,7 @@ var nextInCycle = (current) => {
|
|
|
3820
3820
|
var ICON_FOR = {
|
|
3821
3821
|
light: Sun,
|
|
3822
3822
|
dark: Moon,
|
|
3823
|
-
|
|
3823
|
+
"deep-blue": MoonStar
|
|
3824
3824
|
};
|
|
3825
3825
|
var ThemeToggleTri = forwardRef(
|
|
3826
3826
|
function ThemeToggleTri2({
|
|
@@ -3829,12 +3829,12 @@ var ThemeToggleTri = forwardRef(
|
|
|
3829
3829
|
size = "md",
|
|
3830
3830
|
lightLabel = "Switch to light mode",
|
|
3831
3831
|
darkLabel = "Switch to dark mode",
|
|
3832
|
-
|
|
3832
|
+
deepBlueLabel = "Switch to deep blue mode",
|
|
3833
3833
|
className,
|
|
3834
3834
|
...rest
|
|
3835
3835
|
}, ref) {
|
|
3836
3836
|
const next = nextInCycle(theme);
|
|
3837
|
-
const label = next === "light" ? lightLabel : next === "dark" ? darkLabel :
|
|
3837
|
+
const label = next === "light" ? lightLabel : next === "dark" ? darkLabel : deepBlueLabel;
|
|
3838
3838
|
const Icon2 = ICON_FOR[theme];
|
|
3839
3839
|
const { box, icon } = SIZE_CLASS9[size];
|
|
3840
3840
|
return /* @__PURE__ */ jsx(
|
|
@@ -4086,9 +4086,12 @@ var PopoverRoot = ({
|
|
|
4086
4086
|
const handler = () => refreshRect();
|
|
4087
4087
|
window.addEventListener("resize", handler);
|
|
4088
4088
|
window.addEventListener("scroll", handler, true);
|
|
4089
|
+
const observer = new ResizeObserver(handler);
|
|
4090
|
+
if (triggerRef.current) observer.observe(triggerRef.current, { box: "border-box" });
|
|
4089
4091
|
return () => {
|
|
4090
4092
|
window.removeEventListener("resize", handler);
|
|
4091
4093
|
window.removeEventListener("scroll", handler, true);
|
|
4094
|
+
observer.disconnect();
|
|
4092
4095
|
};
|
|
4093
4096
|
}, [open, refreshRect]);
|
|
4094
4097
|
useEffect(() => {
|
|
@@ -4127,13 +4130,18 @@ var PopoverTrigger = forwardRef(function PopoverTrigger2({ onClick, children, ..
|
|
|
4127
4130
|
}
|
|
4128
4131
|
);
|
|
4129
4132
|
});
|
|
4130
|
-
var
|
|
4133
|
+
var VIEWPORT_MARGIN = 16;
|
|
4134
|
+
var positionStyle = (position, align, rect, offset) => {
|
|
4135
|
+
const left = align === "end" ? rect.right : rect.left + rect.width / 2;
|
|
4136
|
+
const shiftX = align === "end" ? "-100%" : "-50%";
|
|
4137
|
+
const maxWidth = align === "end" ? rect.right - VIEWPORT_MARGIN : void 0;
|
|
4131
4138
|
switch (position) {
|
|
4132
4139
|
case "top":
|
|
4133
4140
|
return {
|
|
4134
4141
|
top: rect.top - offset,
|
|
4135
|
-
left
|
|
4136
|
-
|
|
4142
|
+
left,
|
|
4143
|
+
maxWidth,
|
|
4144
|
+
transform: `translate(${shiftX}, -100%)`
|
|
4137
4145
|
};
|
|
4138
4146
|
case "right":
|
|
4139
4147
|
return {
|
|
@@ -4151,32 +4159,36 @@ var positionStyle = (position, rect, offset) => {
|
|
|
4151
4159
|
default:
|
|
4152
4160
|
return {
|
|
4153
4161
|
top: rect.bottom + offset,
|
|
4154
|
-
left
|
|
4155
|
-
|
|
4162
|
+
left,
|
|
4163
|
+
maxWidth,
|
|
4164
|
+
transform: `translateX(${shiftX})`
|
|
4156
4165
|
};
|
|
4157
4166
|
}
|
|
4158
4167
|
};
|
|
4159
|
-
var arrowStyle = (position) => {
|
|
4168
|
+
var arrowStyle = (position, align, rect) => {
|
|
4160
4169
|
const base = {
|
|
4161
4170
|
position: "absolute",
|
|
4162
4171
|
width: 8,
|
|
4163
4172
|
height: 8,
|
|
4164
4173
|
transform: "rotate(45deg)"
|
|
4165
4174
|
};
|
|
4175
|
+
const x = align === "end" ? { right: rect.width / 2 - 1, marginRight: -4 } : { left: "50%", marginLeft: -4 };
|
|
4166
4176
|
switch (position) {
|
|
4167
4177
|
case "top":
|
|
4168
|
-
return { ...base, bottom: -4,
|
|
4178
|
+
return { ...base, bottom: -4, ...x };
|
|
4169
4179
|
case "right":
|
|
4170
4180
|
return { ...base, left: -4, top: "50%", marginTop: -4 };
|
|
4171
4181
|
case "left":
|
|
4172
4182
|
return { ...base, right: -4, top: "50%", marginTop: -4 };
|
|
4173
4183
|
case "bottom":
|
|
4174
4184
|
default:
|
|
4175
|
-
return { ...base, top: -4,
|
|
4185
|
+
return { ...base, top: -4, ...x };
|
|
4176
4186
|
}
|
|
4177
4187
|
};
|
|
4178
4188
|
var PopoverContent = ({
|
|
4179
4189
|
position = "bottom",
|
|
4190
|
+
align = "center",
|
|
4191
|
+
"aria-label": ariaLabel,
|
|
4180
4192
|
offset = 8,
|
|
4181
4193
|
arrow = false,
|
|
4182
4194
|
width = "w-64",
|
|
@@ -4192,7 +4204,8 @@ var PopoverContent = ({
|
|
|
4192
4204
|
"div",
|
|
4193
4205
|
{
|
|
4194
4206
|
role: "dialog",
|
|
4195
|
-
|
|
4207
|
+
"aria-label": ariaLabel,
|
|
4208
|
+
style: positionStyle(position, align, triggerRect, offset),
|
|
4196
4209
|
className: clsx(
|
|
4197
4210
|
"fixed z-[9999] rounded-xl border border-gray-200 bg-white p-4 text-sm shadow-xl dark:border-gray-700 dark:bg-gray-900 dark:text-gray-100",
|
|
4198
4211
|
width,
|
|
@@ -4203,7 +4216,7 @@ var PopoverContent = ({
|
|
|
4203
4216
|
"span",
|
|
4204
4217
|
{
|
|
4205
4218
|
"aria-hidden": true,
|
|
4206
|
-
style: arrowStyle(position),
|
|
4219
|
+
style: arrowStyle(position, align, triggerRect),
|
|
4207
4220
|
className: "border border-gray-200 bg-white dark:border-gray-700 dark:bg-gray-900"
|
|
4208
4221
|
}
|
|
4209
4222
|
),
|
|
@@ -7624,7 +7637,7 @@ var ColumnHeader = ({
|
|
|
7624
7637
|
"aria-label": "Filter column",
|
|
7625
7638
|
className: clsx(
|
|
7626
7639
|
"flex items-center gap-1 rounded p-0.5 transition-colors hover:bg-gray-200 dark:hover:bg-white/10",
|
|
7627
|
-
filterCount > 0 && "text-brand-
|
|
7640
|
+
filterCount > 0 && "text-brand-600 dark:text-brand-400"
|
|
7628
7641
|
),
|
|
7629
7642
|
children: [
|
|
7630
7643
|
/* @__PURE__ */ jsx(Filter, { className: "h-3 w-3" }),
|
|
@@ -8392,7 +8405,7 @@ var SignInForm = ({
|
|
|
8392
8405
|
{
|
|
8393
8406
|
type: "button",
|
|
8394
8407
|
onClick: onForgotPassword,
|
|
8395
|
-
className: "text-brand-
|
|
8408
|
+
className: "text-brand-600 hover:text-brand-700 dark:text-brand-400 dark:hover:text-brand-300 text-xs font-medium transition-colors",
|
|
8396
8409
|
children: forgotLabel
|
|
8397
8410
|
}
|
|
8398
8411
|
)
|
|
@@ -8735,7 +8748,7 @@ var TwoStepVerificationForm = ({
|
|
|
8735
8748
|
type: "button",
|
|
8736
8749
|
onClick: onResend,
|
|
8737
8750
|
disabled: loading,
|
|
8738
|
-
className: "text-brand-
|
|
8751
|
+
className: "text-brand-600 hover:text-brand-700 dark:text-brand-400 dark:hover:text-brand-300 font-medium transition-colors disabled:cursor-not-allowed disabled:opacity-50",
|
|
8739
8752
|
children: resendLabel
|
|
8740
8753
|
}
|
|
8741
8754
|
)
|
|
@@ -8851,7 +8864,7 @@ var PaletteCard = ({ meta, active = false, onClick, className }) => /* @__PURE__
|
|
|
8851
8864
|
/* @__PURE__ */ jsxs(
|
|
8852
8865
|
"div",
|
|
8853
8866
|
{
|
|
8854
|
-
className: "flex items-center justify-between px-2.5 py-1.5",
|
|
8867
|
+
className: "flex flex-1 items-center justify-between px-2.5 py-1.5",
|
|
8855
8868
|
style: {
|
|
8856
8869
|
backgroundColor: meta.preview.surface,
|
|
8857
8870
|
borderTop: `1px solid ${meta.preview.border}`
|
|
@@ -8862,11 +8875,11 @@ var PaletteCard = ({ meta, active = false, onClick, className }) => /* @__PURE__
|
|
|
8862
8875
|
"span",
|
|
8863
8876
|
{
|
|
8864
8877
|
className: "block text-xs font-semibold",
|
|
8865
|
-
style: { color: active ? void 0 : "#6b7280" },
|
|
8878
|
+
style: { color: meta.preview.text ?? (active ? void 0 : "#6b7280") },
|
|
8866
8879
|
children: meta.label
|
|
8867
8880
|
}
|
|
8868
8881
|
),
|
|
8869
|
-
meta.desc && /* @__PURE__ */ jsx("span", { className: "block text-[10px]", style: { color: "#9ca3af" }, children: meta.desc })
|
|
8882
|
+
meta.desc && /* @__PURE__ */ jsx("span", { className: "block text-[10px]", style: { color: meta.preview.text ?? "#9ca3af" }, children: meta.desc })
|
|
8870
8883
|
] }),
|
|
8871
8884
|
active && /* @__PURE__ */ jsx("span", { className: "bg-brand-500 flex h-4 w-4 shrink-0 items-center justify-center rounded-full", children: /* @__PURE__ */ jsx(Check, { className: "h-2.5 w-2.5 text-white", "aria-hidden": true }) })
|
|
8872
8885
|
]
|
|
@@ -8916,7 +8929,7 @@ var OptionCard = ({
|
|
|
8916
8929
|
{
|
|
8917
8930
|
className: clsx(
|
|
8918
8931
|
"text-xs font-semibold",
|
|
8919
|
-
active ? "text-brand-
|
|
8932
|
+
active ? "text-brand-600 dark:text-brand-400" : "text-gray-700 dark:text-gray-300"
|
|
8920
8933
|
),
|
|
8921
8934
|
children: label
|
|
8922
8935
|
}
|
|
@@ -8952,6 +8965,129 @@ var OptionPicker = ({
|
|
|
8952
8965
|
))
|
|
8953
8966
|
}
|
|
8954
8967
|
);
|
|
8968
|
+
|
|
8969
|
+
// src/settings/appearance.ts
|
|
8970
|
+
var COSMOS_THEMES = [
|
|
8971
|
+
{
|
|
8972
|
+
id: "light",
|
|
8973
|
+
label: "Light",
|
|
8974
|
+
dark: false,
|
|
8975
|
+
preview: { bg: "#f9fafb", surface: "#ffffff", border: "#e5e7eb", text: "#667085" }
|
|
8976
|
+
},
|
|
8977
|
+
{
|
|
8978
|
+
id: "sand",
|
|
8979
|
+
label: "Sand",
|
|
8980
|
+
dark: false,
|
|
8981
|
+
preview: { bg: "#f9f5eb", surface: "#fffcf7", border: "#e7dfd0", text: "#746656" }
|
|
8982
|
+
},
|
|
8983
|
+
{
|
|
8984
|
+
id: "dark",
|
|
8985
|
+
label: "Dark",
|
|
8986
|
+
dark: true,
|
|
8987
|
+
preview: { bg: "#0a0a0a", surface: "#141414", border: "#3d3d3d", text: "#a3a3a3" }
|
|
8988
|
+
},
|
|
8989
|
+
{
|
|
8990
|
+
id: "deep-blue",
|
|
8991
|
+
label: "Deep Blue",
|
|
8992
|
+
dark: true,
|
|
8993
|
+
preview: { bg: "#0c111d", surface: "#101828", border: "#344054", text: "#98a2b3" }
|
|
8994
|
+
}
|
|
8995
|
+
];
|
|
8996
|
+
var COSMOS_ACCENTS = [
|
|
8997
|
+
{ id: "blue", label: "Blue", hex: "#465fff" },
|
|
8998
|
+
{ id: "indigo", label: "Indigo", hex: "#5963e9" },
|
|
8999
|
+
{ id: "violet", label: "Violet", hex: "#8745f1" },
|
|
9000
|
+
{ id: "purple", label: "Purple", hex: "#ad2ecf" },
|
|
9001
|
+
{ id: "rose", label: "Rose", hex: "#d4166d" },
|
|
9002
|
+
{ id: "teal", label: "Teal", hex: "#038378" },
|
|
9003
|
+
{ id: "cyan", label: "Cyan", hex: "#017f9d" },
|
|
9004
|
+
{ id: "graphite", label: "Graphite", hex: "#707580" },
|
|
9005
|
+
{ id: "red", label: "Red", hex: "#db192a" },
|
|
9006
|
+
{ id: "orange", label: "Orange", hex: "#c04f01" },
|
|
9007
|
+
{ id: "amber", label: "Amber", hex: "#a46800" },
|
|
9008
|
+
{ id: "green", label: "Green", hex: "#02863c" }
|
|
9009
|
+
];
|
|
9010
|
+
var THEME_CLASSES = COSMOS_THEMES.map((t) => t.id).filter((id) => id !== "light");
|
|
9011
|
+
var isDarkTheme = (theme) => COSMOS_THEMES.some((t) => t.id === theme && t.dark);
|
|
9012
|
+
var applyAppearance = ({ theme, accent }, root) => {
|
|
9013
|
+
const el = root ?? (typeof document === "undefined" ? void 0 : document.documentElement);
|
|
9014
|
+
if (!el) return;
|
|
9015
|
+
el.classList.remove(...THEME_CLASSES);
|
|
9016
|
+
if (theme !== "light") el.classList.add(theme);
|
|
9017
|
+
if (accent === "blue") delete el.dataset.accent;
|
|
9018
|
+
else el.dataset.accent = accent;
|
|
9019
|
+
};
|
|
9020
|
+
var AppearanceSettings = ({
|
|
9021
|
+
theme,
|
|
9022
|
+
accent,
|
|
9023
|
+
onThemeChange,
|
|
9024
|
+
onAccentChange,
|
|
9025
|
+
themeLabel = "Theme",
|
|
9026
|
+
accentLabel = "Accent color",
|
|
9027
|
+
themes = COSMOS_THEMES,
|
|
9028
|
+
accents = COSMOS_ACCENTS,
|
|
9029
|
+
themeColumns = 4,
|
|
9030
|
+
className
|
|
9031
|
+
}) => {
|
|
9032
|
+
const themeHeadingId = useId();
|
|
9033
|
+
const accentHeadingId = useId();
|
|
9034
|
+
return /* @__PURE__ */ jsxs("div", { className: clsx("space-y-6", className), children: [
|
|
9035
|
+
/* @__PURE__ */ jsxs("div", { role: "group", "aria-labelledby": themeHeadingId, children: [
|
|
9036
|
+
/* @__PURE__ */ jsx("p", { id: themeHeadingId, className: "text-sm font-medium text-gray-700 dark:text-gray-300", children: themeLabel }),
|
|
9037
|
+
/* @__PURE__ */ jsx(
|
|
9038
|
+
PalettePicker,
|
|
9039
|
+
{
|
|
9040
|
+
className: "mt-3",
|
|
9041
|
+
palettes: themes,
|
|
9042
|
+
value: theme,
|
|
9043
|
+
cols: themeColumns,
|
|
9044
|
+
onChange: (id) => onThemeChange(id)
|
|
9045
|
+
}
|
|
9046
|
+
)
|
|
9047
|
+
] }),
|
|
9048
|
+
/* @__PURE__ */ jsxs("div", { role: "group", "aria-labelledby": accentHeadingId, children: [
|
|
9049
|
+
/* @__PURE__ */ jsx("p", { id: accentHeadingId, className: "text-sm font-medium text-gray-700 dark:text-gray-300", children: accentLabel }),
|
|
9050
|
+
/* @__PURE__ */ jsx(
|
|
9051
|
+
AccentPicker,
|
|
9052
|
+
{
|
|
9053
|
+
className: "mt-3",
|
|
9054
|
+
colors: accents,
|
|
9055
|
+
value: accent,
|
|
9056
|
+
onChange: (id) => onAccentChange(id),
|
|
9057
|
+
cols: 6
|
|
9058
|
+
}
|
|
9059
|
+
)
|
|
9060
|
+
] })
|
|
9061
|
+
] });
|
|
9062
|
+
};
|
|
9063
|
+
var SIZE_CLASS12 = {
|
|
9064
|
+
sm: { box: "h-8 w-8", icon: "h-4 w-4" },
|
|
9065
|
+
md: { box: "h-10 w-10", icon: "h-5 w-5" }
|
|
9066
|
+
};
|
|
9067
|
+
var AppearanceMenu = ({
|
|
9068
|
+
label = "Appearance",
|
|
9069
|
+
size = "md",
|
|
9070
|
+
className,
|
|
9071
|
+
...settings
|
|
9072
|
+
}) => {
|
|
9073
|
+
const { box, icon } = SIZE_CLASS12[size];
|
|
9074
|
+
return /* @__PURE__ */ jsxs(Popover, { children: [
|
|
9075
|
+
/* @__PURE__ */ jsx(
|
|
9076
|
+
Popover.Trigger,
|
|
9077
|
+
{
|
|
9078
|
+
title: label,
|
|
9079
|
+
"aria-label": label,
|
|
9080
|
+
className: clsx(
|
|
9081
|
+
"flex items-center justify-center rounded-lg border border-gray-200 text-gray-500 transition-colors hover:bg-gray-100 hover:text-gray-700 dark:border-gray-700 dark:text-gray-400 dark:hover:bg-white/5 dark:hover:text-white",
|
|
9082
|
+
box,
|
|
9083
|
+
className
|
|
9084
|
+
),
|
|
9085
|
+
children: /* @__PURE__ */ jsx(Palette, { className: icon, "aria-hidden": true })
|
|
9086
|
+
}
|
|
9087
|
+
),
|
|
9088
|
+
/* @__PURE__ */ jsx(Popover.Content, { align: "end", width: "w-96", "aria-label": label, children: /* @__PURE__ */ jsx(AppearanceSettings, { themeColumns: 2, ...settings }) })
|
|
9089
|
+
] });
|
|
9090
|
+
};
|
|
8955
9091
|
var SIZE = {
|
|
8956
9092
|
sm: "text-base leading-relaxed",
|
|
8957
9093
|
md: "text-lg leading-relaxed",
|
|
@@ -9119,6 +9255,6 @@ var Figure = ({
|
|
|
9119
9255
|
caption && /* @__PURE__ */ jsx("figcaption", { className: "mt-2 text-center text-xs text-gray-500 italic dark:text-gray-400", children: caption })
|
|
9120
9256
|
] });
|
|
9121
9257
|
|
|
9122
|
-
export { AccentPicker, Accordion2 as Accordion, ActionPanel, ActiveFiltersBar, ActivityFeed, AlertBanner, AnnouncementBar, AuthLayout, Avatar, AvatarUploader, BackToTopFab, Backdrop, Badge, Blockquote, Breadcrumb, Button, ButtonGroup, Calendar, Card2 as Card, Carousel, CarouselRoot, Checkbox, CheckboxGroup, ClickableRow, Clipboard, CodeBlock, ColBox, ColorSwatch, ColumnFilterDropdown, ColumnHeader, Combobox, CommandPalette, ConfirmationModal, ContentNarrow, ContentStackedList, CookieBanner, DataTable, DatePicker, DescriptionList, Divider, Drawer, Dropdown, Dropzone, EmptyState, ErrorPage, ErrorState, Figure, FileInput, FilterPills, FormFooter, FormRow, GridList, HealthBadge, HealthDot, HelpOverlay, IconBox, ImageGrid, Input, IntegrationCard, Kbd2 as Kbd, KpiCard, Link, List2 as List, LoadingState, MediaObject, MiniCalendar, Modal, NarrowStackedList, Navbar, NotificationCard, NotificationsPanel, NumberInput, OptionCard, OptionPicker, OtpInput, PageActionButton, PageActionIconButton, PageBreadcrumb, PageCard, PageHeader, Pagination, PaletteCard, PalettePicker, PasswordInput, PasswordPolicyChecker, Popover, ProgressBar, REFRESH_OPTIONS, Radio, RadioGroup, RefreshButton, ResetPasswordForm, Ribbon, RowActionButton, STATUS_COLOR, STATUS_PILL, SearchInput, SectionCard, SectionLabel, SegmentedControl, Select, SelectInput, Shell, Sidebar, SignInForm, SignUpForm, SimpleRow, Sk, SkeletonList, SkeletonTable, SkeletonText, SocialAuthButtons, Spinner, StackedList, StackedListInCard, StatefulSaveButton, StatusBadge, StatusRow, Stepper, StepperInput, StepperRoot, StickyScrollNav, Tabs, Textarea, ThemeToggle, ThemeToggleTri, TimePicker, Timeline, Toaster, Toggle, Tooltip, TooltipHelp, Topbar, TwoStepVerificationForm, UnsavedIndicator, UserMenu, VerticalNavigation, VideoEmbed, ZoomBar, defaultPasswordRules, useAutoRefresh };
|
|
9258
|
+
export { AccentPicker, Accordion2 as Accordion, ActionPanel, ActiveFiltersBar, ActivityFeed, AlertBanner, AnnouncementBar, AppearanceMenu, AppearanceSettings, AuthLayout, Avatar, AvatarUploader, BackToTopFab, Backdrop, Badge, Blockquote, Breadcrumb, Button, ButtonGroup, COSMOS_ACCENTS, COSMOS_THEMES, Calendar, Card2 as Card, Carousel, CarouselRoot, Checkbox, CheckboxGroup, ClickableRow, Clipboard, CodeBlock, ColBox, ColorSwatch, ColumnFilterDropdown, ColumnHeader, Combobox, CommandPalette, ConfirmationModal, ContentNarrow, ContentStackedList, CookieBanner, DataTable, DatePicker, DescriptionList, Divider, Drawer, Dropdown, Dropzone, EmptyState, ErrorPage, ErrorState, Figure, FileInput, FilterPills, FormFooter, FormRow, GridList, HealthBadge, HealthDot, HelpOverlay, IconBox, ImageGrid, Input, IntegrationCard, Kbd2 as Kbd, KpiCard, Link, List2 as List, LoadingState, MediaObject, MiniCalendar, Modal, NarrowStackedList, Navbar, NotificationCard, NotificationsPanel, NumberInput, OptionCard, OptionPicker, OtpInput, PageActionButton, PageActionIconButton, PageBreadcrumb, PageCard, PageHeader, Pagination, PaletteCard, PalettePicker, PasswordInput, PasswordPolicyChecker, Popover, ProgressBar, REFRESH_OPTIONS, Radio, RadioGroup, RefreshButton, ResetPasswordForm, Ribbon, RowActionButton, STATUS_COLOR, STATUS_PILL, SearchInput, SectionCard, SectionLabel, SegmentedControl, Select, SelectInput, Shell, Sidebar, SignInForm, SignUpForm, SimpleRow, Sk, SkeletonList, SkeletonTable, SkeletonText, SocialAuthButtons, Spinner, StackedList, StackedListInCard, StatefulSaveButton, StatusBadge, StatusRow, Stepper, StepperInput, StepperRoot, StickyScrollNav, Tabs, Textarea, ThemeToggle, ThemeToggleTri, TimePicker, Timeline, Toaster, Toggle, Tooltip, TooltipHelp, Topbar, TwoStepVerificationForm, UnsavedIndicator, UserMenu, VerticalNavigation, VideoEmbed, ZoomBar, applyAppearance, defaultPasswordRules, isDarkTheme, useAutoRefresh };
|
|
9123
9259
|
//# sourceMappingURL=index.js.map
|
|
9124
9260
|
//# sourceMappingURL=index.js.map
|