@react95/core
Version:
Windows 95 styleguide
112 lines (111 loc) • 2.83 kB
JavaScript
import cn from "classnames";
import React from "react";
import close from "./close.svg.mjs";
import help from "./help.svg.mjs";
import maximize from "./maximize.svg.mjs";
import minimize from "./minimize.svg.mjs";
import restore from "./restore.svg.mjs";
import { fixedForwardRef, Frame } from "../Frame/Frame.mjs";
import { button } from "../Button/Button.css.mjs";
import { optionsBox, option, titleBarBackground, title } from "./TitleBar.css.mjs";
const defaultOptions = {
help: {
alt: "help",
src: help
},
close: {
alt: "close",
src: close
},
maximize: {
alt: "maximize",
src: maximize
},
minimize: {
alt: "minimize",
src: minimize
},
restore: {
alt: "restore",
src: restore
}
};
const OptionsBox = fixedForwardRef(
(rest, ref) => /* @__PURE__ */ React.createElement(
Frame,
{
...rest,
ref,
className: cn(optionsBox, rest.className)
}
)
);
const Option = fixedForwardRef(
(rest, ref) => /* @__PURE__ */ React.createElement(
Frame,
{
as: "button",
...rest,
ref,
className: cn(button, option, rest.className)
}
)
);
const DefaultOption = fixedForwardRef(
(props, ref) => {
const { kind, ...rest } = props;
const optionType = defaultOptions[kind] || defaultOptions.help;
return /* @__PURE__ */ React.createElement(Option, { ...rest, ref }, /* @__PURE__ */ React.createElement("img", { src: optionType.src, alt: optionType.alt }));
}
);
const Help = fixedForwardRef(
(props, ref) => {
return /* @__PURE__ */ React.createElement(DefaultOption, { ...props, kind: "help", ref });
}
);
const Close = fixedForwardRef(
(props, ref) => {
return /* @__PURE__ */ React.createElement(DefaultOption, { ...props, kind: "close", ref });
}
);
const Maximize = fixedForwardRef(
(props, ref) => {
return /* @__PURE__ */ React.createElement(DefaultOption, { ...props, kind: "maximize", ref });
}
);
const Minimize = fixedForwardRef(
(props, ref) => {
return /* @__PURE__ */ React.createElement(DefaultOption, { ...props, kind: "minimize", ref });
}
);
const Restore = fixedForwardRef(
(props, ref) => {
return /* @__PURE__ */ React.createElement(DefaultOption, { ...props, kind: "restore", ref });
}
);
const TitleBarRenderer = ({ children, title: title$1 = "UNKNOWN.EXE", icon, active = true, ...rest }, ref) => /* @__PURE__ */ React.createElement(
Frame,
{
...rest,
className: cn(titleBarBackground({ active }), rest.className),
ref
},
icon && icon,
/* @__PURE__ */ React.createElement("div", { className: title }, title$1),
children
);
const TitleBar = Object.assign(
fixedForwardRef(TitleBarRenderer),
{
Option,
OptionsBox,
Help,
Close,
Maximize,
Minimize,
Restore
}
);
export {
TitleBar
};