funuicss 2.7.6 → 2.7.7

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.
@@ -0,0 +1,72 @@
1
+ import React, { ReactNode } from 'react';
2
+ declare const animationVariants: {
3
+ 'fade-up': {
4
+ hidden: {
5
+ opacity: number;
6
+ y: number;
7
+ };
8
+ visible: {
9
+ opacity: number;
10
+ y: number;
11
+ };
12
+ };
13
+ 'fade-down': {
14
+ hidden: {
15
+ opacity: number;
16
+ y: number;
17
+ };
18
+ visible: {
19
+ opacity: number;
20
+ y: number;
21
+ };
22
+ };
23
+ 'fade-in': {
24
+ hidden: {
25
+ opacity: number;
26
+ };
27
+ visible: {
28
+ opacity: number;
29
+ };
30
+ };
31
+ 'zoom-in': {
32
+ hidden: {
33
+ scale: number;
34
+ opacity: number;
35
+ };
36
+ visible: {
37
+ scale: number;
38
+ opacity: number;
39
+ };
40
+ };
41
+ 'slide-left': {
42
+ hidden: {
43
+ x: number;
44
+ opacity: number;
45
+ };
46
+ visible: {
47
+ x: number;
48
+ opacity: number;
49
+ };
50
+ };
51
+ 'slide-right': {
52
+ hidden: {
53
+ x: number;
54
+ opacity: number;
55
+ };
56
+ visible: {
57
+ x: number;
58
+ opacity: number;
59
+ };
60
+ };
61
+ };
62
+ interface ScrollInViewProps {
63
+ children: ReactNode;
64
+ animationType?: keyof typeof animationVariants;
65
+ delay?: number;
66
+ duration?: number;
67
+ threshold?: number;
68
+ once?: boolean;
69
+ className?: string;
70
+ }
71
+ declare const ScrollInView: React.FC<ScrollInViewProps>;
72
+ export default ScrollInView;
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ 'use client';
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ var react_1 = __importStar(require("react"));
38
+ var framer_motion_1 = require("framer-motion");
39
+ var react_intersection_observer_1 = require("react-intersection-observer");
40
+ var animationVariants = {
41
+ 'fade-up': { hidden: { opacity: 0, y: 40 }, visible: { opacity: 1, y: 0 } },
42
+ 'fade-down': { hidden: { opacity: 0, y: -40 }, visible: { opacity: 1, y: 0 } },
43
+ 'fade-in': { hidden: { opacity: 0 }, visible: { opacity: 1 } },
44
+ 'zoom-in': { hidden: { scale: 0.9, opacity: 0 }, visible: { scale: 1, opacity: 1 } },
45
+ 'slide-left': { hidden: { x: 40, opacity: 0 }, visible: { x: 0, opacity: 1 } },
46
+ 'slide-right': { hidden: { x: -40, opacity: 0 }, visible: { x: 0, opacity: 1 } },
47
+ };
48
+ var ScrollInView = function (_a) {
49
+ var children = _a.children, _b = _a.animationType, animationType = _b === void 0 ? 'fade-up' : _b, _c = _a.delay, delay = _c === void 0 ? 0 : _c, _d = _a.duration, duration = _d === void 0 ? 0.6 : _d, _e = _a.threshold, threshold = _e === void 0 ? 0.2 : _e, _f = _a.once, once = _f === void 0 ? false : _f, _g = _a.className, className = _g === void 0 ? '' : _g;
50
+ var controls = (0, framer_motion_1.useAnimation)();
51
+ var _h = (0, react_intersection_observer_1.useInView)({
52
+ threshold: threshold,
53
+ triggerOnce: once,
54
+ }), ref = _h[0], inView = _h[1];
55
+ (0, react_1.useEffect)(function () {
56
+ if (inView) {
57
+ controls.start('visible');
58
+ }
59
+ else if (!once) {
60
+ controls.start('hidden');
61
+ }
62
+ }, [inView, once, controls]);
63
+ var variants = animationVariants[animationType] || animationVariants['fade-up'];
64
+ return (react_1.default.createElement(framer_motion_1.motion.div, { ref: ref, variants: variants, initial: "hidden", animate: controls, transition: {
65
+ delay: delay,
66
+ duration: duration,
67
+ ease: [0.25, 1, 0.5, 1], // Natural cubic bezier
68
+ }, className: className }, children));
69
+ };
70
+ exports.default = ScrollInView;
@@ -0,0 +1,69 @@
1
+ 'use client';
2
+
3
+ import React, { ReactNode, useEffect } from 'react';
4
+ import { motion, useAnimation } from 'framer-motion';
5
+ import { useInView } from 'react-intersection-observer';
6
+
7
+ const animationVariants = {
8
+ 'fade-up': { hidden: { opacity: 0, y: 40 }, visible: { opacity: 1, y: 0 } },
9
+ 'fade-down': { hidden: { opacity: 0, y: -40 }, visible: { opacity: 1, y: 0 } },
10
+ 'fade-in': { hidden: { opacity: 0 }, visible: { opacity: 1 } },
11
+ 'zoom-in': { hidden: { scale: 0.9, opacity: 0 }, visible: { scale: 1, opacity: 1 } },
12
+ 'slide-left': { hidden: { x: 40, opacity: 0 }, visible: { x: 0, opacity: 1 } },
13
+ 'slide-right': { hidden: { x: -40, opacity: 0 }, visible: { x: 0, opacity: 1 } },
14
+ };
15
+
16
+ interface ScrollInViewProps {
17
+ children: ReactNode;
18
+ animationType?: keyof typeof animationVariants;
19
+ delay?: number;
20
+ duration?: number;
21
+ threshold?: number;
22
+ once?: boolean;
23
+ className?: string;
24
+ }
25
+
26
+ const ScrollInView: React.FC<ScrollInViewProps> = ({
27
+ children,
28
+ animationType = 'fade-up',
29
+ delay = 0,
30
+ duration = 0.6,
31
+ threshold = 0.2,
32
+ once = false,
33
+ className = '',
34
+ }) => {
35
+ const controls = useAnimation();
36
+ const [ref, inView] = useInView({
37
+ threshold,
38
+ triggerOnce: once,
39
+ });
40
+
41
+ useEffect(() => {
42
+ if (inView) {
43
+ controls.start('visible');
44
+ } else if (!once) {
45
+ controls.start('hidden');
46
+ }
47
+ }, [inView, once, controls]);
48
+
49
+ const variants = animationVariants[animationType] || animationVariants['fade-up'];
50
+
51
+ return (
52
+ <motion.div
53
+ ref={ref}
54
+ variants={variants}
55
+ initial="hidden"
56
+ animate={controls}
57
+ transition={{
58
+ delay,
59
+ duration,
60
+ ease: [0.25, 1, 0.5, 1], // Natural cubic bezier
61
+ }}
62
+ className={className}
63
+ >
64
+ {children}
65
+ </motion.div>
66
+ );
67
+ };
68
+
69
+ export default ScrollInView;
@@ -3,6 +3,7 @@ interface AccordionProps {
3
3
  items: {
4
4
  title: string;
5
5
  content: React.ReactNode;
6
+ icon?: React.ReactNode;
6
7
  }[];
7
8
  allowMultiple?: boolean;
8
9
  defaultOpenIndexes?: number[];
@@ -42,17 +42,22 @@ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
42
42
  }
43
43
  return to.concat(ar || Array.prototype.slice.call(from));
44
44
  };
45
+ var __importDefault = (this && this.__importDefault) || function (mod) {
46
+ return (mod && mod.__esModule) ? mod : { "default": mod };
47
+ };
45
48
  Object.defineProperty(exports, "__esModule", { value: true });
46
49
  var react_1 = __importStar(require("react"));
47
50
  var pi_1 = require("react-icons/pi");
51
+ var RowFlex_1 = __importDefault(require("../specials/RowFlex"));
48
52
  var AccordionItem = function (_a) {
49
- var title = _a.title, content = _a.content, isOpen = _a.isOpen, onToggle = _a.onToggle, _b = _a.itemClass, itemClass = _b === void 0 ? '' : _b, _c = _a.titleClass, titleClass = _c === void 0 ? '' : _c, _d = _a.iconClass, iconClass = _d === void 0 ? '' : _d, _e = _a.contentClass, contentClass = _e === void 0 ? '' : _e, _f = _a.activeClass, activeClass = _f === void 0 ? '' : _f;
53
+ var icon = _a.icon, title = _a.title, content = _a.content, isOpen = _a.isOpen, onToggle = _a.onToggle, _b = _a.itemClass, itemClass = _b === void 0 ? '' : _b, _c = _a.titleClass, titleClass = _c === void 0 ? '' : _c, _d = _a.iconClass, iconClass = _d === void 0 ? '' : _d, _e = _a.contentClass, contentClass = _e === void 0 ? '' : _e, _f = _a.activeClass, activeClass = _f === void 0 ? '' : _f;
50
54
  return (react_1.default.createElement("div", { className: "accordion-item ".concat(itemClass, " ").concat(isOpen ? activeClass : '') },
51
- react_1.default.createElement("button", { className: "accordion-header ".concat(titleClass), onClick: onToggle },
52
- react_1.default.createElement("span", null, title),
53
- react_1.default.createElement("span", { className: iconClass }, isOpen ? (react_1.default.createElement("span", { className: "animated slide-up" },
54
- react_1.default.createElement(pi_1.PiCaretUp, null))) : (react_1.default.createElement("span", { className: "animated slide-down" },
55
- react_1.default.createElement(pi_1.PiCaretDown, null))))),
55
+ react_1.default.createElement("div", { className: "accordion-header ".concat(titleClass), onClick: onToggle },
56
+ react_1.default.createElement(RowFlex_1.default, { alignItems: 'center', gap: 0.6 },
57
+ icon && react_1.default.createElement("div", { style: { lineHeight: 0 } }, icon),
58
+ react_1.default.createElement("div", { className: 'col fit' }, title)),
59
+ react_1.default.createElement("div", { style: { lineHeight: 0 }, className: "".concat(iconClass, " ").concat(isOpen ? "accordion-rotated" : "") },
60
+ react_1.default.createElement(pi_1.PiCaretDown, null))),
56
61
  react_1.default.createElement("div", { className: "accordion-content ".concat(contentClass, " ").concat(isOpen ? 'open' : '') },
57
62
  react_1.default.createElement("div", { className: "accordion-inner" }, content))));
58
63
  };
@@ -75,6 +80,6 @@ var Accordion = function (_a) {
75
80
  setOpenIndexes(openIndexes.includes(index) ? [] : [index]);
76
81
  }
77
82
  };
78
- return (react_1.default.createElement("div", { className: "accordion" }, items.map(function (item, index) { return (react_1.default.createElement(AccordionItem, { key: index, index: index, title: item.title, content: item.content, isOpen: openIndexes.includes(index), onToggle: function () { return toggleIndex(index); }, itemClass: itemClass, titleClass: titleClass, iconClass: iconClass, contentClass: contentClass, activeClass: activeClass })); })));
83
+ return (react_1.default.createElement("div", { className: "accordion" }, items.map(function (item, index) { return (react_1.default.createElement(AccordionItem, { key: index, index: index, icon: item.icon, title: item.title, content: item.content, isOpen: openIndexes.includes(index), onToggle: function () { return toggleIndex(index); }, itemClass: itemClass, titleClass: titleClass, iconClass: iconClass, contentClass: contentClass, activeClass: activeClass })); })));
79
84
  };
80
85
  exports.default = Accordion;
@@ -1,6 +1,7 @@
1
1
  'use client';
2
2
  import React, { useState } from 'react';
3
3
  import { PiCaretDown, PiCaretUp } from 'react-icons/pi';
4
+ import RowFlex from '../specials/RowFlex';
4
5
 
5
6
  interface AccordionItemProps {
6
7
  title: string;
@@ -8,7 +9,7 @@ interface AccordionItemProps {
8
9
  isOpen?: boolean;
9
10
  onToggle?: () => void;
10
11
  index?: number;
11
-
12
+ icon?: React.ReactNode;
12
13
  // Customization
13
14
  itemClass?: string;
14
15
  titleClass?: string;
@@ -18,6 +19,7 @@ interface AccordionItemProps {
18
19
  }
19
20
 
20
21
  const AccordionItem: React.FC<AccordionItemProps> = ({
22
+ icon,
21
23
  title,
22
24
  content,
23
25
  isOpen,
@@ -30,20 +32,17 @@ const AccordionItem: React.FC<AccordionItemProps> = ({
30
32
  }) => {
31
33
  return (
32
34
  <div className={`accordion-item ${itemClass} ${isOpen ? activeClass : ''}`}>
33
- <button className={`accordion-header ${titleClass}`} onClick={onToggle}>
34
- <span>{title}</span>
35
- <span className={iconClass}>
36
- {isOpen ? (
37
- <span className="animated slide-up">
38
- <PiCaretUp />
39
- </span>
40
- ) : (
41
- <span className="animated slide-down">
42
- <PiCaretDown />
43
- </span>
44
- )}
45
- </span>
46
- </button>
35
+ <div className={`accordion-header ${titleClass}`} onClick={onToggle}>
36
+ <RowFlex alignItems='center' gap={0.6}>
37
+ {
38
+ icon && <div style={{lineHeight:0}}>{icon}</div>
39
+ }
40
+ <div className='col fit'>{title}</div>
41
+ </RowFlex>
42
+ <div style={{lineHeight:0}} className={`${iconClass} ${isOpen ? "accordion-rotated" : ""}`}>
43
+ <PiCaretDown />
44
+ </div>
45
+ </div>
47
46
  <div className={`accordion-content ${contentClass} ${isOpen ? 'open' : ''}`}>
48
47
  <div className="accordion-inner">{content}</div>
49
48
  </div>
@@ -55,6 +54,7 @@ interface AccordionProps {
55
54
  items: {
56
55
  title: string;
57
56
  content: React.ReactNode;
57
+ icon?: React.ReactNode;
58
58
  }[];
59
59
  allowMultiple?: boolean; // ✅ NEW
60
60
  defaultOpenIndexes?: number[]; // optional
@@ -99,6 +99,7 @@ const Accordion: React.FC<AccordionProps> = ({
99
99
  <AccordionItem
100
100
  key={index}
101
101
  index={index}
102
+ icon={item.icon}
102
103
  title={item.title}
103
104
  content={item.content}
104
105
  isOpen={openIndexes.includes(index)}
package/ui/alert/Alert.js CHANGED
@@ -82,7 +82,7 @@ function Alert(_a) {
82
82
  type === 'success' && react_1.default.createElement(pi_1.PiCheckCircleDuotone, null),
83
83
  type === 'info' && react_1.default.createElement(pi_1.PiInfo, null),
84
84
  type === 'warning' && react_1.default.createElement(pi_1.PiWarning, null),
85
- type === 'error' && react_1.default.createElement(pi_1.PiX, null))) : (react_1.default.createElement("span", { className: "rotate", style: { lineHeight: "0" } },
85
+ type === 'error' && react_1.default.createElement(pi_1.PiX, null))) : (react_1.default.createElement("div", { className: "rotate", style: { lineHeight: "0" } },
86
86
  react_1.default.createElement(pi_1.PiSpinner, null)))),
87
87
  react_1.default.createElement("div", { className: "alert-text" }, message || children))));
88
88
  }
@@ -94,9 +94,9 @@ export default function Alert({
94
94
  {type === 'error' && <PiX />}
95
95
  </div>
96
96
  ) : (
97
- <span className="rotate" style={{lineHeight:"0"}}>
97
+ <div className="rotate" style={{lineHeight:"0"}}>
98
98
  <PiSpinner />
99
- </span>
99
+ </div>
100
100
  )}
101
101
  </div>
102
102
  <div className="alert-text">{message || children}</div>
@@ -3,9 +3,11 @@ import * as React from 'react';
3
3
  interface AvatarProps {
4
4
  funcss?: string;
5
5
  children?: ReactNode;
6
- size?: string;
6
+ size?: number;
7
7
  bg?: string;
8
+ bordered?: boolean;
9
+ color?: string;
8
10
  content?: ReactNode;
9
11
  }
10
- export default function Avatar({ funcss, children, size, bg, content, }: AvatarProps): React.JSX.Element;
12
+ export default function Avatar({ funcss, children, size, bordered, bg, content, color }: AvatarProps): React.JSX.Element;
11
13
  export {};
@@ -37,10 +37,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
37
37
  exports.default = Avatar;
38
38
  var React = __importStar(require("react"));
39
39
  function Avatar(_a) {
40
- var funcss = _a.funcss, children = _a.children, size = _a.size, bg = _a.bg, content = _a.content;
41
- return (React.createElement("div", { className: "avatar ".concat(funcss || '', " ").concat(bg || ''), style: {
42
- width: "".concat(size || '2.3rem'),
43
- height: "".concat(size || '2.3rem'),
40
+ var funcss = _a.funcss, children = _a.children, _b = _a.size, size = _b === void 0 ? 2 : _b, _c = _a.bordered, bordered = _c === void 0 ? true : _c, bg = _a.bg, content = _a.content, color = _a.color;
41
+ return (React.createElement("div", { className: "\n animated \n fade-in \n avatar \n ".concat(funcss || '', " \n ").concat(bg || 'lighter', " \n ").concat(bordered ? 'border' : '', "\n ").concat("text-".concat(color), "\n "), style: {
42
+ width: "".concat(size, "rem"),
43
+ height: "".concat(size, "rem"),
44
44
  } },
45
- React.createElement(React.Fragment, null, content ? content : children)));
45
+ React.createElement(React.Fragment, null, content || children)));
46
46
  }
@@ -4,27 +4,39 @@ import * as React from 'react'
4
4
  interface AvatarProps {
5
5
  funcss?: string;
6
6
  children?: ReactNode;
7
- size?: string;
7
+ size?: number;
8
8
  bg?: string;
9
+ bordered?:boolean ,
10
+ color?: string,
9
11
  content?: ReactNode;
10
12
  }
11
13
 
12
14
  export default function Avatar({
13
15
  funcss,
14
16
  children,
15
- size,
17
+ size = 2,
18
+ bordered = true,
16
19
  bg,
17
20
  content,
21
+ color
18
22
  }: AvatarProps) {
19
23
  return (
20
24
  <div
21
- className={`avatar ${funcss || ''} ${bg || ''}`}
25
+ className={`
26
+ animated
27
+ fade-in
28
+ avatar
29
+ ${funcss || ''}
30
+ ${bg || 'lighter'}
31
+ ${bordered ? 'border' : ''}
32
+ ${`text-${color}`}
33
+ `}
22
34
  style={{
23
- width: `${size || '2.3rem'}`,
24
- height: `${size || '2.3rem'}`,
35
+ width: `${size}rem`,
36
+ height: `${size}rem`,
25
37
  }}
26
38
  >
27
- <>{content ? content : children}</>
39
+ <>{content || children}</>
28
40
  </div>
29
41
  );
30
42
  }
@@ -60,7 +60,7 @@ exports.default = Circle;
60
60
  var React = __importStar(require("react"));
61
61
  function Circle(_a) {
62
62
  var _b = _a.size, size = _b === void 0 ? 2 : _b, funcss = _a.funcss, bg = _a.bg, color = _a.color, children = _a.children, hoverable = _a.hoverable, raised = _a.raised, key = _a.key, onClick = _a.onClick, bordered = _a.bordered, rest = __rest(_a, ["size", "funcss", "bg", "color", "children", "hoverable", "raised", "key", "onClick", "bordered"]);
63
- return (React.createElement("div", __assign({ className: " animated fade-in ".concat(bordered ? "border" : "", " pointer avatar ").concat(funcss || '', " ").concat("text-" + (color === null || color === void 0 ? void 0 : color.trim()) || '', " ").concat(raised ? "raised" : '', " ").concat(bg || '', " ").concat(hoverable ? 'hoverable' : ''), style: {
63
+ return (React.createElement("div", __assign({ className: " animated fade-in ".concat(bordered ? "border" : "", " pointer avatar ").concat(funcss || '', " ").concat("text-" + (color === null || color === void 0 ? void 0 : color.trim()) || '', " ").concat(raised ? "raised" : '', " ").concat(bg || 'lighter', " ").concat(hoverable ? 'hoverable' : ''), style: {
64
64
  width: "".concat(size + "rem" || '2.3rem'),
65
65
  height: "".concat(size + "rem" || '2.3rem'),
66
66
  }, key: key, onClick: onClick }, rest),
@@ -32,7 +32,7 @@ export default function Circle({
32
32
  }: Circle_Props) {
33
33
  return (
34
34
  <div
35
- className={` animated fade-in ${bordered ? "border" : ""} pointer avatar ${funcss || ''} ${`text-` + color?.trim() || ''} ${raised ? "raised" : ''} ${bg || ''} ${
35
+ className={` animated fade-in ${bordered ? "border" : ""} pointer avatar ${funcss || ''} ${`text-` + color?.trim() || ''} ${raised ? "raised" : ''} ${bg || 'lighter'} ${
36
36
  hoverable ? 'hoverable' : ''
37
37
  }`}
38
38
  style={{
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  interface ThemeProviderProps {
3
- theme: 'light' | 'dark' | 'dark-blue' | 'light-gray';
3
+ theme: 'light' | 'dark' | 'dark-blue' | 'light-gray' | 'pastel-green' | 'warm-orange' | 'frosted-glass' | 'midnight-purple' | 'cyber-metal';
4
4
  children: React.ReactNode;
5
5
  }
6
6
  declare const ThemeProvider: React.FC<ThemeProviderProps>;
package/ui/theme/theme.js CHANGED
@@ -48,7 +48,7 @@ var ThemeProvider = function (_a) {
48
48
  root.style.setProperty(key, value);
49
49
  });
50
50
  // Apply darkened RGBA versions (for dark themes only)
51
- if (theme === 'dark' || theme === 'dark-blue') {
51
+ if (theme === 'dark' || theme === 'dark-blue' || theme === 'midnight-purple' || theme === 'cyber-metal') {
52
52
  themes_1.colorVarsToDarken.forEach(function (varName) {
53
53
  var original = getComputedStyle(root).getPropertyValue(varName).trim();
54
54
  if (original) {
@@ -4,7 +4,7 @@ import { colorVarsToDarken, themes } from './themes';
4
4
  import { getDarkenAmount, darkenToRgba } from './darkenUtils';
5
5
 
6
6
  interface ThemeProviderProps {
7
- theme: 'light' | 'dark' | 'dark-blue' | 'light-gray';
7
+ theme: 'light' | 'dark' | 'dark-blue' | 'light-gray' | 'pastel-green' | 'warm-orange' | 'frosted-glass' | 'midnight-purple' | 'cyber-metal';
8
8
  children: React.ReactNode;
9
9
  }
10
10
 
@@ -19,7 +19,7 @@ const ThemeProvider: React.FC<ThemeProviderProps> = ({ theme, children }) => {
19
19
  });
20
20
 
21
21
  // Apply darkened RGBA versions (for dark themes only)
22
- if (theme === 'dark' || theme === 'dark-blue') {
22
+ if (theme === 'dark' || theme === 'dark-blue' || theme === 'midnight-purple' || theme === 'cyber-metal') {
23
23
  colorVarsToDarken.forEach((varName) => {
24
24
  const original = getComputedStyle(root).getPropertyValue(varName).trim();
25
25
  if (original) {
@@ -52,6 +52,7 @@ export declare const themes: {
52
52
  '--raiseThemes': string;
53
53
  '--raiseOpaque': string;
54
54
  '--borderColor': string;
55
+ '--borderRgb': string;
55
56
  '--lighter': string;
56
57
  '--linkColor': string;
57
58
  '--cardBg': string;
@@ -84,6 +85,7 @@ export declare const themes: {
84
85
  '--raiseThemes': string;
85
86
  '--raiseOpaque': string;
86
87
  '--borderColor': string;
88
+ '--borderRgb': string;
87
89
  '--lighter': string;
88
90
  '--linkColor': string;
89
91
  '--accent': string;
@@ -97,6 +99,117 @@ export declare const themes: {
97
99
  '--raiseThemes': string;
98
100
  '--raiseOpaque': string;
99
101
  '--borderColor': string;
102
+ '--borderRgb': string;
103
+ '--lighter': string;
104
+ '--linkColor': string;
105
+ '--accent': string;
106
+ '--cardBg': string;
107
+ '--card': string;
108
+ };
109
+ 'pastel-green': {
110
+ '--page-bg': string;
111
+ '--text-color': string;
112
+ '--text-muted': string;
113
+ '--raiseThemes': string;
114
+ '--raiseOpaque': string;
115
+ '--borderColor': string;
116
+ '--borderRgb': string;
117
+ '--lighter': string;
118
+ '--linkColor': string;
119
+ '--accent': string;
120
+ '--cardBg': string;
121
+ '--card': string;
122
+ };
123
+ 'warm-orange': {
124
+ '--page-bg': string;
125
+ '--text-color': string;
126
+ '--text-muted': string;
127
+ '--raiseThemes': string;
128
+ '--raiseOpaque': string;
129
+ '--borderColor': string;
130
+ '--borderRgb': string;
131
+ '--lighter': string;
132
+ '--linkColor': string;
133
+ '--accent': string;
134
+ '--cardBg': string;
135
+ '--card': string;
136
+ };
137
+ 'frosted-glass': {
138
+ '--page-bg': string;
139
+ '--text-color': string;
140
+ '--text-muted': string;
141
+ '--raiseThemes': string;
142
+ '--raiseOpaque': string;
143
+ '--borderColor': string;
144
+ '--borderRgb': string;
145
+ '--lighter': string;
146
+ '--linkColor': string;
147
+ '--accent': string;
148
+ '--cardBg': string;
149
+ '--card': string;
150
+ };
151
+ 'midnight-purple': {
152
+ '--success50': string;
153
+ '--success100': string;
154
+ '--success200': string;
155
+ '--success300': string;
156
+ '--success400': string;
157
+ '--warning50': string;
158
+ '--warning100': string;
159
+ '--warning200': string;
160
+ '--warning300': string;
161
+ '--warning400': string;
162
+ '--info50': string;
163
+ '--info100': string;
164
+ '--info200': string;
165
+ '--info300': string;
166
+ '--info400': string;
167
+ '--error50': string;
168
+ '--error100': string;
169
+ '--error200': string;
170
+ '--error300': string;
171
+ '--error400': string;
172
+ '--page-bg': string;
173
+ '--text-color': string;
174
+ '--text-muted': string;
175
+ '--raiseThemes': string;
176
+ '--raiseOpaque': string;
177
+ '--borderColor': string;
178
+ '--borderRgb': string;
179
+ '--lighter': string;
180
+ '--linkColor': string;
181
+ '--accent': string;
182
+ '--cardBg': string;
183
+ '--card': string;
184
+ };
185
+ 'cyber-metal': {
186
+ '--success50': string;
187
+ '--success100': string;
188
+ '--success200': string;
189
+ '--success300': string;
190
+ '--success400': string;
191
+ '--warning50': string;
192
+ '--warning100': string;
193
+ '--warning200': string;
194
+ '--warning300': string;
195
+ '--warning400': string;
196
+ '--info50': string;
197
+ '--info100': string;
198
+ '--info200': string;
199
+ '--info300': string;
200
+ '--info400': string;
201
+ '--error50': string;
202
+ '--error100': string;
203
+ '--error200': string;
204
+ '--error300': string;
205
+ '--error400': string;
206
+ '--page-bg': string;
207
+ '--text-color': string;
208
+ '--text-muted': string;
209
+ '--raiseThemes': string;
210
+ '--raiseOpaque': string;
211
+ '--borderColor': string;
212
+ '--borderRgb': string;
100
213
  '--lighter': string;
101
214
  '--linkColor': string;
102
215
  '--accent': string;