UNPKG

@react95/core

Version:
112 lines (111 loc) 2.83 kB
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 };