@synnaxlabs/pluto 0.21.6 → 0.21.8
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/{Keyboard-DD2KYOn6.cjs → Keyboard-DaFraUsQ.cjs} +2 -2
- package/dist/{Keyboard-DD2KYOn6.cjs.map → Keyboard-DaFraUsQ.cjs.map} +1 -1
- package/dist/{Keyboard-DCHQVLbP.js → Keyboard-nDIAR7Rj.js} +2 -2
- package/dist/{Keyboard-DCHQVLbP.js.map → Keyboard-nDIAR7Rj.js.map} +1 -1
- package/dist/{LinePlot-FmPnet-3.cjs → LinePlot-BZDm4uxJ.cjs} +3 -3
- package/dist/{LinePlot-FmPnet-3.cjs.map → LinePlot-BZDm4uxJ.cjs.map} +1 -1
- package/dist/{LinePlot-D3us1amT.js → LinePlot-tOiSUMjC.js} +3 -3
- package/dist/{LinePlot-D3us1amT.js.map → LinePlot-tOiSUMjC.js.map} +1 -1
- package/dist/{Link-DlYOVhHH.cjs → Link-BdWFvK8v.cjs} +2 -2
- package/dist/{Link-DlYOVhHH.cjs.map → Link-BdWFvK8v.cjs.map} +1 -1
- package/dist/{Link-D48KH--6.js → Link-d3CXVSaO.js} +2 -2
- package/dist/{Link-D48KH--6.js.map → Link-d3CXVSaO.js.map} +1 -1
- package/dist/{List-CUO-_-jL.js → List-DcsWFiLT.js} +3 -3
- package/dist/{List-CUO-_-jL.js.map → List-DcsWFiLT.js.map} +1 -1
- package/dist/{List-CUq1lENO.cjs → List-PlMTfEHi.cjs} +3 -3
- package/dist/{List-CUq1lENO.cjs.map → List-PlMTfEHi.cjs.map} +1 -1
- package/dist/{Toggle-ClTExSi6.cjs → Toggle-C6Z8WPT3.cjs} +49 -9
- package/dist/Toggle-C6Z8WPT3.cjs.map +1 -0
- package/dist/{Toggle-DozaP3Tx.js → Toggle-DGLgYCOX.js} +49 -9
- package/dist/Toggle-DGLgYCOX.js.map +1 -0
- package/dist/Video-DFtnAOYY.cjs +14 -0
- package/dist/Video-DFtnAOYY.cjs.map +1 -0
- package/dist/Video-SGhKphYR.js +15 -0
- package/dist/Video-SGhKphYR.js.map +1 -0
- package/dist/{aggregator-Dl2jHye5.js → aggregator-BgImZc4o.js} +220 -218
- package/dist/aggregator-BgImZc4o.js.map +1 -0
- package/dist/{aggregator-Ca8xiVD2.cjs → aggregator-BpfMBUD1.cjs} +204 -202
- package/dist/aggregator-BpfMBUD1.cjs.map +1 -0
- package/dist/button.cjs +1 -1
- package/dist/button.js +1 -1
- package/dist/color.cjs +1 -1
- package/dist/color.js +1 -1
- package/dist/dropdown.cjs +1 -1
- package/dist/dropdown.js +1 -1
- package/dist/ether.cjs +2 -2
- package/dist/ether.js +4 -4
- package/dist/{external-Br3dSWZy.cjs → external-0PM7JrzG.cjs} +3 -3
- package/dist/{external-Br3dSWZy.cjs.map → external-0PM7JrzG.cjs.map} +1 -1
- package/dist/{external-Cq-yOszj.cjs → external-16K8slq8.cjs} +3 -3
- package/dist/{external-Cq-yOszj.cjs.map → external-16K8slq8.cjs.map} +1 -1
- package/dist/{external-BX1SuP7b.js → external-1osPryUV.js} +3 -3
- package/dist/{external-BX1SuP7b.js.map → external-1osPryUV.js.map} +1 -1
- package/dist/{external-BGyrJwT6.js → external-5przQjJD.js} +3 -3
- package/dist/{external-BGyrJwT6.js.map → external-5przQjJD.js.map} +1 -1
- package/dist/{external-Bw-gM1WS.js → external-96EinZfY.js} +3 -3
- package/dist/external-96EinZfY.js.map +1 -0
- package/dist/{external-CTg9-80v.cjs → external-B0z7uXZV.cjs} +3 -3
- package/dist/{external-CTg9-80v.cjs.map → external-B0z7uXZV.cjs.map} +1 -1
- package/dist/{external-DrUfLzJs.js → external-B3ly2-jy.js} +5 -5
- package/dist/{external-DrUfLzJs.js.map → external-B3ly2-jy.js.map} +1 -1
- package/dist/{external-DwY1uz6Y.js → external-BAdU6u03.js} +3 -3
- package/dist/{external-DwY1uz6Y.js.map → external-BAdU6u03.js.map} +1 -1
- package/dist/{external-JjFzMlTY.cjs → external-Blx0rtt2.cjs} +4 -4
- package/dist/{external-JjFzMlTY.cjs.map → external-Blx0rtt2.cjs.map} +1 -1
- package/dist/{external-DGEGrIB8.js → external-C6GmnG49.js} +4 -4
- package/dist/{external-DGEGrIB8.js.map → external-C6GmnG49.js.map} +1 -1
- package/dist/{external-BWNeNJEb.cjs → external-CPx8XA9-.cjs} +5 -5
- package/dist/{external-BWNeNJEb.cjs.map → external-CPx8XA9-.cjs.map} +1 -1
- package/dist/{external-jVPC18yY.js → external-CgMwmBnF.js} +3 -3
- package/dist/external-CgMwmBnF.js.map +1 -0
- package/dist/{external-rv9PfMM3.cjs → external-CsO29OsF.cjs} +5 -5
- package/dist/{external-rv9PfMM3.cjs.map → external-CsO29OsF.cjs.map} +1 -1
- package/dist/{external-gzESdEqw.cjs → external-Cu6T11fi.cjs} +8 -8
- package/dist/{external-gzESdEqw.cjs.map → external-Cu6T11fi.cjs.map} +1 -1
- package/dist/{external-DE-HpRm9.cjs → external-CzJYG1hX.cjs} +3 -3
- package/dist/external-CzJYG1hX.cjs.map +1 -0
- package/dist/{external-BbCvNSWY.cjs → external-D4ur_D1S.cjs} +3 -3
- package/dist/{external-BbCvNSWY.cjs.map → external-D4ur_D1S.cjs.map} +1 -1
- package/dist/{external-CsyhVOiV.cjs → external-D7XrxOVE.cjs} +3 -3
- package/dist/{external-CsyhVOiV.cjs.map → external-D7XrxOVE.cjs.map} +1 -1
- package/dist/{external-DWisAHYJ.js → external-DQkw1ko0.js} +3 -3
- package/dist/{external-DWisAHYJ.js.map → external-DQkw1ko0.js.map} +1 -1
- package/dist/{external-B0DCjEX5.js → external-DarqsFzT.js} +3 -3
- package/dist/{external-B0DCjEX5.js.map → external-DarqsFzT.js.map} +1 -1
- package/dist/{external-EIV24CTN.js → external-DeheWVb-.js} +8 -8
- package/dist/{external-EIV24CTN.js.map → external-DeheWVb-.js.map} +1 -1
- package/dist/{external-DX1JRejp.js → external-DiFhWWS-.js} +5 -5
- package/dist/{external-DX1JRejp.js.map → external-DiFhWWS-.js.map} +1 -1
- package/dist/{external-VofAmo6_.cjs → external-DvGqQHd8.cjs} +3 -3
- package/dist/external-DvGqQHd8.cjs.map +1 -0
- package/dist/header.cjs +1 -1
- package/dist/header.js +1 -1
- package/dist/index.cjs +16 -16
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +31 -31
- package/dist/index.js.map +1 -1
- package/dist/input.cjs +1 -1
- package/dist/input.js +1 -1
- package/dist/list.cjs +1 -1
- package/dist/list.js +1 -1
- package/dist/menu.cjs +1 -1
- package/dist/menu.js +1 -1
- package/dist/src/list/Core.d.ts +1 -1
- package/dist/src/list/Core.d.ts.map +1 -1
- package/dist/src/list/Hover.d.ts.map +1 -1
- package/dist/src/list/Item.d.ts +1 -1
- package/dist/src/list/Item.d.ts.map +1 -1
- package/dist/src/video/Video.d.ts +2 -2
- package/dist/src/video/Video.d.ts.map +1 -1
- package/dist/style.css +1 -1
- package/dist/tabs.cjs +1 -1
- package/dist/tabs.js +1 -1
- package/dist/text.cjs +2 -2
- package/dist/text.js +2 -2
- package/dist/theming.cjs +2 -2
- package/dist/theming.js +2 -2
- package/dist/tree.cjs +1 -1
- package/dist/tree.js +1 -1
- package/dist/triggers.cjs +1 -1
- package/dist/triggers.js +1 -1
- package/dist/video.cjs +1 -1
- package/dist/video.js +1 -1
- package/package.json +3 -3
- package/dist/Toggle-ClTExSi6.cjs.map +0 -1
- package/dist/Toggle-DozaP3Tx.js.map +0 -1
- package/dist/Video-B1oW8NLd.js +0 -11
- package/dist/Video-B1oW8NLd.js.map +0 -1
- package/dist/Video-BGNx94bQ.cjs +0 -10
- package/dist/Video-BGNx94bQ.cjs.map +0 -1
- package/dist/aggregator-Ca8xiVD2.cjs.map +0 -1
- package/dist/aggregator-Dl2jHye5.js.map +0 -1
- package/dist/external-Bw-gM1WS.js.map +0 -1
- package/dist/external-DE-HpRm9.cjs.map +0 -1
- package/dist/external-VofAmo6_.cjs.map +0 -1
- package/dist/external-jVPC18yY.js.map +0 -1
package/dist/button.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const external = require("./external-
|
|
3
|
+
const external = require("./external-CzJYG1hX.cjs");
|
|
4
4
|
exports.Button = external.external;
|
|
5
5
|
//# sourceMappingURL=button.cjs.map
|
package/dist/button.js
CHANGED
package/dist/color.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const external = require("./external-
|
|
3
|
+
const external = require("./external-D4ur_D1S.cjs");
|
|
4
4
|
exports.Color = external.external;
|
|
5
5
|
//# sourceMappingURL=color.cjs.map
|
package/dist/color.js
CHANGED
package/dist/dropdown.cjs
CHANGED
package/dist/dropdown.js
CHANGED
package/dist/ether.cjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const aggregator = require("./aggregator-
|
|
4
|
-
const LinePlot = require("./LinePlot-
|
|
3
|
+
const aggregator = require("./aggregator-BpfMBUD1.cjs");
|
|
4
|
+
const LinePlot = require("./LinePlot-BZDm4uxJ.cjs");
|
|
5
5
|
const css = require("./css-Pf9qxhQ4.cjs");
|
|
6
6
|
const external$2 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
7
7
|
__proto__: null,
|
package/dist/ether.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { P as Provider, R as REGISTRY, S as SYNNAX_DARK, a as SYNNAX_LIGHT, b as SYNNAX_THEMES, f as fontString, t as themeZ, u as use, d as a, e as REGISTRY$d, r as render$1 } from "./aggregator-
|
|
2
|
-
import { g } from "./aggregator-
|
|
3
|
-
import { C as Context$1, a as Controller, E as Eraser$1, G as GLProgram, L as Loop, R as REASON_DATA, b as REASON_LAYOUT, c as REASON_TOOL, d as REGISTRY$1, e as REGISTRY$2, f as REGISTRY$3, g as REGISTRY$4, h as REGISTRY$5, i as REGISTRY$6, j as REGISTRY$7, k as REGISTRY$8, l as REGISTRY$9, m as REGISTRY$a, n as REGISTRY$b, o as REGISTRY$c, p as REGISTRY$e, q as REGISTRY$f, r as REGISTRY$g, s as REGISTRY$h, A as LinePlot, X as XAxis, Y as YAxis, B as linePlotStateZ, F as xAxisStateZ, H as yAxisStateZ } from "./LinePlot-
|
|
4
|
-
import { z, D, u, w, t, v, x, y } from "./LinePlot-
|
|
1
|
+
import { P as Provider, R as REGISTRY, S as SYNNAX_DARK, a as SYNNAX_LIGHT, b as SYNNAX_THEMES, f as fontString, t as themeZ, u as use, d as a, e as REGISTRY$d, r as render$1 } from "./aggregator-BgImZc4o.js";
|
|
2
|
+
import { g } from "./aggregator-BgImZc4o.js";
|
|
3
|
+
import { C as Context$1, a as Controller, E as Eraser$1, G as GLProgram, L as Loop, R as REASON_DATA, b as REASON_LAYOUT, c as REASON_TOOL, d as REGISTRY$1, e as REGISTRY$2, f as REGISTRY$3, g as REGISTRY$4, h as REGISTRY$5, i as REGISTRY$6, j as REGISTRY$7, k as REGISTRY$8, l as REGISTRY$9, m as REGISTRY$a, n as REGISTRY$b, o as REGISTRY$c, p as REGISTRY$e, q as REGISTRY$f, r as REGISTRY$g, s as REGISTRY$h, A as LinePlot, X as XAxis, Y as YAxis, B as linePlotStateZ, F as xAxisStateZ, H as yAxisStateZ } from "./LinePlot-tOiSUMjC.js";
|
|
4
|
+
import { z, D, u, w, t, v, x, y } from "./LinePlot-tOiSUMjC.js";
|
|
5
5
|
import { b } from "./css-DoalWJF6.js";
|
|
6
6
|
const external$2 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
7
7
|
__proto__: null,
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
const jsxRuntime = require("./jsx-runtime-B3vWrP5x.cjs");
|
|
3
3
|
const React = require("react");
|
|
4
|
-
const aggregator = require("./aggregator-
|
|
4
|
+
const aggregator = require("./aggregator-BpfMBUD1.cjs");
|
|
5
5
|
const Center = require("./Center-5NJ61qfA.cjs");
|
|
6
|
-
const Toggle = require("./Toggle-
|
|
6
|
+
const Toggle = require("./Toggle-C6Z8WPT3.cjs");
|
|
7
7
|
const css = require("./css-Pf9qxhQ4.cjs");
|
|
8
8
|
const Context = React.createContext({
|
|
9
9
|
divided: false,
|
|
@@ -118,4 +118,4 @@ exports.Actions = Actions;
|
|
|
118
118
|
exports.ButtonTitle = ButtonTitle;
|
|
119
119
|
exports.Header = Header;
|
|
120
120
|
exports.external = external;
|
|
121
|
-
//# sourceMappingURL=external-
|
|
121
|
+
//# sourceMappingURL=external-0PM7JrzG.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"external-Br3dSWZy.cjs","sources":["../src/header/Header.tsx","../src/header/Actions.tsx","../src/header/ButtonTitle.tsx","../src/header/Title.tsx"],"sourcesContent":["// Copyright 2023 Synnax Labs, Inc.\n//\n// Use of this software is governed by the Business Source License included in the file\n// licenses/BSL.txt.\n//\n// As of the Change Date specified in that file, in accordance with the Business Source\n// License, use of this software will be governed by the Apache License, Version 2.0,\n// included in the file licenses/APL.txt.\n\nimport {\n createContext,\n type ReactElement,\n type ReactNode,\n useContext as reactUseContext,\n} from \"react\";\n\nimport { Align } from \"@/align\";\nimport { CSS } from \"@/css\";\nimport { type Text } from \"@/text\";\n\nimport \"@/header/Header.css\";\n\nexport interface HeaderProps extends Omit<Align.SpaceProps, \"children\" | \"el\"> {\n level?: Text.Level;\n divided?: boolean;\n children: ReactNode | [ReactNode, ReactNode];\n}\n\nexport interface ContextValue {\n divided: boolean;\n level: Text.Level;\n}\n\nconst Context = createContext<ContextValue>({\n divided: false,\n level: \"h1\",\n});\n\nexport const useContext = (): ContextValue => reactUseContext(Context);\n\n/**\n * The container for a module header.\n *\n * @param props - The component props. All unused props will be passed down to the\n * {@link Space} containing the header.\n * @param props.level - The font level for the header. See the {@link Typography.Text}\n * component for all possible levels. Default is \"h1.\"\n * @param props.icon - An optional icon to add add before the start of the header text.\n * @param props.actions - A list of actions to be rendered on the right side ofthe header.\n * If the action is a JSX element, it will be rendered directly, and if its of type\n * ButtonIconProps, a ButtonIconOnly will be rendered using the given props.\n * @param props.divided - If true, creates a divider between the start icon, header text,\n * and each action. Default is false.\n */\nexport const Header = ({\n children,\n className,\n level = \"h1\",\n divided = false,\n ...props\n}: HeaderProps): ReactElement => (\n <Context.Provider value={{ level, divided }}>\n <Align.Space\n el=\"header\"\n direction=\"x\"\n justify=\"spaceBetween\"\n className={CSS(\n CSS.B(\"header\"),\n CSS.bordered(\"bottom\"),\n divided && CSS.BM(\"header\", \"divided\"),\n className,\n )}\n {...props}\n >\n {children}\n </Align.Space>\n </Context.Provider>\n);\n","// Copyright 2023 Synnax Labs, Inc.\n//\n// Use of this software is governed by the Business Source License included in the file\n// licenses/BSL.txt.\n//\n// As of the Change Date specified in that file, in accordance with the Business Source\n// License, use of this software will be governed by the Apache License, Version 2.0,\n// included in the file licenses/APL.txt.\n\nimport { Fragment, isValidElement, type ReactElement } from \"react\";\n\nimport { toArray } from \"@synnaxlabs/x\";\n\nimport { Align } from \"@/align\";\nimport { Button } from \"@/button\";\nimport { CSS } from \"@/css\";\nimport { Divider } from \"@/divider\";\nimport { useContext } from \"@/header/Header\";\nimport { Text } from \"@/text\";\n\nexport type ActionSpec = Button.IconProps | ReactElement;\n\nexport interface ActionsProps {\n children?: ActionSpec | ActionSpec[];\n}\n\n/**\n * Custom actions to render on the right side of the header.\n *\n * @param children - The actions to render. If the action is of type\n * {@link ButtonIconProps}, a correectly sized {@link ButtonIconOnly} is rendered\n * using the given props. If the action is a JSX element, it is renderered directly.\n * It's a good idea to prefer the latter in almost all cases for simplicity.\n */\nexport const Actions = ({ children = [] }: ActionsProps): ReactElement => {\n const { level, divided } = useContext();\n return (\n <Align.Space\n direction=\"x\"\n size=\"small\"\n align=\"center\"\n className={CSS.BE(\"header\", \"actions\")}\n >\n {toArray(children).map((action, i) => (\n <Action key={i} index={i} level={level} divided={divided}>\n {action}\n </Action>\n ))}\n </Align.Space>\n );\n};\n\ninterface ActionProps {\n index: number;\n level: Text.Level;\n children: ReactElement | Button.IconProps;\n divided: boolean;\n}\n\nconst Action = ({ index, level, children, divided }: ActionProps): ReactElement => {\n let content: ReactElement = children as ReactElement;\n if (!isValidElement(children)) {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n const props = children as Button.IconProps;\n content = (\n <Button.Icon\n onClick={(e) => {\n e.stopPropagation();\n e.preventDefault();\n props.onClick?.(e);\n }}\n key={index}\n size={Text.LevelComponentSizes[level]}\n {...props}\n />\n );\n }\n return (\n <Fragment key={index}>\n {divided && <Divider.Divider />}\n {content}\n </Fragment>\n );\n};\n","// Copyright 2023 Synnax Labs, Inc.\n//\n// Use of this software is governed by the Business Source License included in the file\n// licenses/BSL.txt.\n//\n// As of the Change Date specified in that file, in accordance with the Business Source\n// License, use of this software will be governed by the Apache License, Version 2.0,\n// included in the file licenses/APL.txt.\n\nimport { type ReactElement } from \"react\";\n\nimport { Button } from \"@/button\";\nimport { CSS } from \"@/css\";\nimport { useContext } from \"@/header/Header\";\nimport { Text } from \"@/text\";\n\nexport interface ButtonTitleProps\n extends Omit<Button.ButtonProps, \"variant\" | \"size\"> {}\n\n/**\n * Header.Title.Use renders a clickable header title.\n *\n * @param props - The comonent props. The props for this component are identical\n * to {@link Button}, except the variant is always 'outlined' and that the component size\n * is automatically inferred from the 'level' prop passsed to the parent {@link Header}\n * component.\n */\nexport const ButtonTitle = ({\n children = \"\",\n className,\n onClick,\n ...props\n}: ButtonTitleProps): ReactElement => {\n const { level } = useContext();\n return (\n <Button.Button\n variant=\"text\"\n size={Text.LevelComponentSizes[level]}\n onClick={onClick}\n className={CSS(CSS.B(\"header-button-title\"), className)}\n sharp\n {...props}\n >\n {children}\n </Button.Button>\n );\n};\n","// Copyright 2023 Synnax Labs, Inc.\n//\n// Use of this software is governed by the Business Source License included in the file\n// licenses/BSL.txt.\n//\n// As of the Change Date specified in that file, in accordance with the Business Source\n// License, use of this software will be governed by the Apache License, Version 2.0,\n// included in the file licenses/APL.txt.\n\nimport { type ReactElement } from \"react\";\n\nimport { CSS } from \"@/css\";\nimport { useContext } from \"@/header/Header\";\nimport { Text } from \"@/text\";\n\nexport interface TitleProps extends Omit<Text.WithIconProps, \"divided\" | \"level\"> {\n level?: Text.Level;\n}\n\n/**\n * Renders the title for the header component.\n *\n * @param props - The component props. The props for this component are identical\n * to the {@link Typography.TextWithIcon} component, except that the 'level', and\n * 'divider' props are inherited from the parent {@link Header} component.\n */\nexport const Title = ({\n className,\n level: propsLevel,\n ...props\n}: TitleProps): ReactElement => {\n const { level, divided } = useContext();\n return (\n <Text.WithIcon\n className={CSS(CSS.BE(\"header\", \"text\"), className)}\n level={propsLevel ?? level}\n divided={divided}\n size={1.5}\n {...props}\n />\n );\n};\n"],"names":["createContext","reactUseContext","jsx","Align.Space","CSS","toArray","isValidElement","Button.Icon","Text.LevelComponentSizes","Fragment","Divider.Divider","Button.Button","Text.WithIcon"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"external-0PM7JrzG.cjs","sources":["../src/header/Header.tsx","../src/header/Actions.tsx","../src/header/ButtonTitle.tsx","../src/header/Title.tsx"],"sourcesContent":["// Copyright 2023 Synnax Labs, Inc.\n//\n// Use of this software is governed by the Business Source License included in the file\n// licenses/BSL.txt.\n//\n// As of the Change Date specified in that file, in accordance with the Business Source\n// License, use of this software will be governed by the Apache License, Version 2.0,\n// included in the file licenses/APL.txt.\n\nimport {\n createContext,\n type ReactElement,\n type ReactNode,\n useContext as reactUseContext,\n} from \"react\";\n\nimport { Align } from \"@/align\";\nimport { CSS } from \"@/css\";\nimport { type Text } from \"@/text\";\n\nimport \"@/header/Header.css\";\n\nexport interface HeaderProps extends Omit<Align.SpaceProps, \"children\" | \"el\"> {\n level?: Text.Level;\n divided?: boolean;\n children: ReactNode | [ReactNode, ReactNode];\n}\n\nexport interface ContextValue {\n divided: boolean;\n level: Text.Level;\n}\n\nconst Context = createContext<ContextValue>({\n divided: false,\n level: \"h1\",\n});\n\nexport const useContext = (): ContextValue => reactUseContext(Context);\n\n/**\n * The container for a module header.\n *\n * @param props - The component props. All unused props will be passed down to the\n * {@link Space} containing the header.\n * @param props.level - The font level for the header. See the {@link Typography.Text}\n * component for all possible levels. Default is \"h1.\"\n * @param props.icon - An optional icon to add add before the start of the header text.\n * @param props.actions - A list of actions to be rendered on the right side ofthe header.\n * If the action is a JSX element, it will be rendered directly, and if its of type\n * ButtonIconProps, a ButtonIconOnly will be rendered using the given props.\n * @param props.divided - If true, creates a divider between the start icon, header text,\n * and each action. Default is false.\n */\nexport const Header = ({\n children,\n className,\n level = \"h1\",\n divided = false,\n ...props\n}: HeaderProps): ReactElement => (\n <Context.Provider value={{ level, divided }}>\n <Align.Space\n el=\"header\"\n direction=\"x\"\n justify=\"spaceBetween\"\n className={CSS(\n CSS.B(\"header\"),\n CSS.bordered(\"bottom\"),\n divided && CSS.BM(\"header\", \"divided\"),\n className,\n )}\n {...props}\n >\n {children}\n </Align.Space>\n </Context.Provider>\n);\n","// Copyright 2023 Synnax Labs, Inc.\n//\n// Use of this software is governed by the Business Source License included in the file\n// licenses/BSL.txt.\n//\n// As of the Change Date specified in that file, in accordance with the Business Source\n// License, use of this software will be governed by the Apache License, Version 2.0,\n// included in the file licenses/APL.txt.\n\nimport { Fragment, isValidElement, type ReactElement } from \"react\";\n\nimport { toArray } from \"@synnaxlabs/x\";\n\nimport { Align } from \"@/align\";\nimport { Button } from \"@/button\";\nimport { CSS } from \"@/css\";\nimport { Divider } from \"@/divider\";\nimport { useContext } from \"@/header/Header\";\nimport { Text } from \"@/text\";\n\nexport type ActionSpec = Button.IconProps | ReactElement;\n\nexport interface ActionsProps {\n children?: ActionSpec | ActionSpec[];\n}\n\n/**\n * Custom actions to render on the right side of the header.\n *\n * @param children - The actions to render. If the action is of type\n * {@link ButtonIconProps}, a correectly sized {@link ButtonIconOnly} is rendered\n * using the given props. If the action is a JSX element, it is renderered directly.\n * It's a good idea to prefer the latter in almost all cases for simplicity.\n */\nexport const Actions = ({ children = [] }: ActionsProps): ReactElement => {\n const { level, divided } = useContext();\n return (\n <Align.Space\n direction=\"x\"\n size=\"small\"\n align=\"center\"\n className={CSS.BE(\"header\", \"actions\")}\n >\n {toArray(children).map((action, i) => (\n <Action key={i} index={i} level={level} divided={divided}>\n {action}\n </Action>\n ))}\n </Align.Space>\n );\n};\n\ninterface ActionProps {\n index: number;\n level: Text.Level;\n children: ReactElement | Button.IconProps;\n divided: boolean;\n}\n\nconst Action = ({ index, level, children, divided }: ActionProps): ReactElement => {\n let content: ReactElement = children as ReactElement;\n if (!isValidElement(children)) {\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n const props = children as Button.IconProps;\n content = (\n <Button.Icon\n onClick={(e) => {\n e.stopPropagation();\n e.preventDefault();\n props.onClick?.(e);\n }}\n key={index}\n size={Text.LevelComponentSizes[level]}\n {...props}\n />\n );\n }\n return (\n <Fragment key={index}>\n {divided && <Divider.Divider />}\n {content}\n </Fragment>\n );\n};\n","// Copyright 2023 Synnax Labs, Inc.\n//\n// Use of this software is governed by the Business Source License included in the file\n// licenses/BSL.txt.\n//\n// As of the Change Date specified in that file, in accordance with the Business Source\n// License, use of this software will be governed by the Apache License, Version 2.0,\n// included in the file licenses/APL.txt.\n\nimport { type ReactElement } from \"react\";\n\nimport { Button } from \"@/button\";\nimport { CSS } from \"@/css\";\nimport { useContext } from \"@/header/Header\";\nimport { Text } from \"@/text\";\n\nexport interface ButtonTitleProps\n extends Omit<Button.ButtonProps, \"variant\" | \"size\"> {}\n\n/**\n * Header.Title.Use renders a clickable header title.\n *\n * @param props - The comonent props. The props for this component are identical\n * to {@link Button}, except the variant is always 'outlined' and that the component size\n * is automatically inferred from the 'level' prop passsed to the parent {@link Header}\n * component.\n */\nexport const ButtonTitle = ({\n children = \"\",\n className,\n onClick,\n ...props\n}: ButtonTitleProps): ReactElement => {\n const { level } = useContext();\n return (\n <Button.Button\n variant=\"text\"\n size={Text.LevelComponentSizes[level]}\n onClick={onClick}\n className={CSS(CSS.B(\"header-button-title\"), className)}\n sharp\n {...props}\n >\n {children}\n </Button.Button>\n );\n};\n","// Copyright 2023 Synnax Labs, Inc.\n//\n// Use of this software is governed by the Business Source License included in the file\n// licenses/BSL.txt.\n//\n// As of the Change Date specified in that file, in accordance with the Business Source\n// License, use of this software will be governed by the Apache License, Version 2.0,\n// included in the file licenses/APL.txt.\n\nimport { type ReactElement } from \"react\";\n\nimport { CSS } from \"@/css\";\nimport { useContext } from \"@/header/Header\";\nimport { Text } from \"@/text\";\n\nexport interface TitleProps extends Omit<Text.WithIconProps, \"divided\" | \"level\"> {\n level?: Text.Level;\n}\n\n/**\n * Renders the title for the header component.\n *\n * @param props - The component props. The props for this component are identical\n * to the {@link Typography.TextWithIcon} component, except that the 'level', and\n * 'divider' props are inherited from the parent {@link Header} component.\n */\nexport const Title = ({\n className,\n level: propsLevel,\n ...props\n}: TitleProps): ReactElement => {\n const { level, divided } = useContext();\n return (\n <Text.WithIcon\n className={CSS(CSS.BE(\"header\", \"text\"), className)}\n level={propsLevel ?? level}\n divided={divided}\n size={1.5}\n {...props}\n />\n );\n};\n"],"names":["createContext","reactUseContext","jsx","Align.Space","CSS","toArray","isValidElement","Button.Icon","Text.LevelComponentSizes","Fragment","Divider.Divider","Button.Button","Text.WithIcon"],"mappings":";;;;;;;AAiCA,MAAM,UAAUA,MAAAA,cAA4B;AAAA,EAC1C,SAAS;AAAA,EACT,OAAO;AACT,CAAC;AAEY,MAAA,aAAa,MAAoBC,iBAAgB,OAAO;AAgB9D,MAAM,SAAS,CAAC;AAAA,EACrB;AAAA,EACA;AAAA,EACA,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,GAAG;AACL,MACEC,2BAAA,kBAAA,IAAC,QAAQ,UAAR,EAAiB,OAAO,EAAE,OAAO,WAChC,UAAAA,2BAAA,kBAAA;AAAA,EAACC,OAAM;AAAA,EAAN;AAAA,IACC,IAAG;AAAA,IACH,WAAU;AAAA,IACV,SAAQ;AAAA,IACR,WAAWC,IAAA;AAAA,MACTA,IAAA,IAAI,EAAE,QAAQ;AAAA,MACdA,IAAA,IAAI,SAAS,QAAQ;AAAA,MACrB,WAAWA,IAAA,IAAI,GAAG,UAAU,SAAS;AAAA,MACrC;AAAA,IACF;AAAA,IACC,GAAG;AAAA,IAEH;AAAA,EAAA;AACH,EACF,CAAA;AC1CK,MAAM,UAAU,CAAC,EAAE,WAAW,CAAA,QAAqC;AACxE,QAAM,EAAE,OAAO,QAAQ,IAAI,WAAW;AAEpC,SAAAF,2BAAA,kBAAA;AAAA,IAACC,OAAM;AAAA,IAAN;AAAA,MACC,WAAU;AAAA,MACV,MAAK;AAAA,MACL,OAAM;AAAA,MACN,WAAWC,IAAA,IAAI,GAAG,UAAU,SAAS;AAAA,MAEpC,UAAQC,WAAA,EAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,MAC7BH,iDAAA,QAAA,EAAe,OAAO,GAAG,OAAc,SACrC,UAAA,OAAA,GADU,CAEb,CACD;AAAA,IAAA;AAAA,EAAA;AAGP;AASA,MAAM,SAAS,CAAC,EAAE,OAAO,OAAO,UAAU,cAAyC;AACjF,MAAI,UAAwB;AACxB,MAAA,CAACI,MAAAA,eAAe,QAAQ,GAAG;AAE7B,UAAM,QAAQ;AAEZ,cAAAJ,2BAAA,kBAAA;AAAA,MAACK,OAAO;AAAA,MAAP;AAAA,QACC,SAAS,CAAC,MAAM;;AACd,YAAE,gBAAgB;AAClB,YAAE,eAAe;AACjB,sBAAM,YAAN,+BAAgB;AAAA,QAClB;AAAA,QAEA,MAAMC,WAAK,oBAAoB,KAAK;AAAA,QACnC,GAAG;AAAA,MAAA;AAAA,MAFC;AAAA,IAAA;AAAA,EAKX;AACA,2DACGC,gBACE,EAAA,UAAA;AAAA,IAAW,WAAAP,2BAAAA,kBAAAA,IAACQ,OAAQ,SAAR,EAAgB;AAAA,IAC5B;AAAA,EAAA,EAAA,GAFY,KAGf;AAEJ;ACxDO,MAAM,cAAc,CAAC;AAAA,EAC1B,WAAW;AAAA,EACX;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAsC;AAC9B,QAAA,EAAE,UAAU;AAEhB,SAAAR,2BAAA,kBAAA;AAAA,IAACS,OAAO;AAAA,IAAP;AAAA,MACC,SAAQ;AAAA,MACR,MAAMH,WAAK,oBAAoB,KAAK;AAAA,MACpC;AAAA,MACA,WAAWJ,IAAI,IAAAA,IAAA,IAAI,EAAE,qBAAqB,GAAG,SAAS;AAAA,MACtD,OAAK;AAAA,MACJ,GAAG;AAAA,MAEH;AAAA,IAAA;AAAA,EAAA;AAGP;ACpBO,MAAM,QAAQ,CAAC;AAAA,EACpB;AAAA,EACA,OAAO;AAAA,EACP,GAAG;AACL,MAAgC;AAC9B,QAAM,EAAE,OAAO,QAAQ,IAAI,WAAW;AAEpC,SAAAF,2BAAA,kBAAA;AAAA,IAACU,OAAK;AAAA,IAAL;AAAA,MACC,WAAWR,IAAI,IAAAA,QAAI,GAAG,UAAU,MAAM,GAAG,SAAS;AAAA,MAClD,OAAO,cAAc;AAAA,MACrB;AAAA,MACA,MAAM;AAAA,MACL,GAAG;AAAA,IAAA;AAAA,EAAA;AAGV;;;;;;;;;;;;;"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
const Toggle = require("./Toggle-
|
|
2
|
+
const Toggle = require("./Toggle-C6Z8WPT3.cjs");
|
|
3
3
|
const jsxRuntime = require("./jsx-runtime-B3vWrP5x.cjs");
|
|
4
4
|
const css = require("./css-Pf9qxhQ4.cjs");
|
|
5
|
-
const aggregator = require("./aggregator-
|
|
5
|
+
const aggregator = require("./aggregator-BpfMBUD1.cjs");
|
|
6
6
|
const React = require("react");
|
|
7
7
|
const Center = require("./Center-5NJ61qfA.cjs");
|
|
8
8
|
const HelpText = ({
|
|
@@ -153,4 +153,4 @@ const external = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProp
|
|
|
153
153
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
154
154
|
exports.Item = Item;
|
|
155
155
|
exports.external = external;
|
|
156
|
-
//# sourceMappingURL=external-
|
|
156
|
+
//# sourceMappingURL=external-16K8slq8.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"external-Cq-yOszj.cjs","sources":["../src/input/HelpText.tsx","../src/input/Label.tsx","../src/input/Item.tsx","../src/input/DateTime.tsx"],"sourcesContent":["// Copyright 2023 Synnax Labs, Inc.\n//\n// Use of this software is governed by the Business Source License included in the file\n// licenses/BSL.txt.\n//\n// As of the Change Date specified in that file, in accordance with the Business Source\n// License, use of this software will be governed by the Apache License, Version 2.0,\n// included in the file licenses/APL.txt.\n\nimport { type ReactElement } from \"react\";\n\nimport { CSS } from \"@/css\";\nimport { type Status } from \"@/status\";\nimport { Text } from \"@/text\";\n\nimport \"@/input/HelpText.css\";\n\n/** Props for the {@link HelpText} component. */\nexport interface HelpTextProps extends Omit<Text.TextProps<\"small\">, \"level\" | \"ref\"> {\n variant?: Status.Variant;\n}\n\n/**\n * Help text for an input component. We generally recommend using Input.Item with a\n * 'helpText' prop instead of this component. This component is useful for low-level\n * control over the help text element.\n *\n * @param props - Props for the help text component. Unlisted props are passed to the\n * underlying text element.\n * @param props.variant - The variant of the help text.\n * \"success\" | \"error\" | \"warning\" | \"info\" | \"loading\" | \"disabled\n * @default \"info\"\n */\nexport const HelpText = ({\n className,\n variant = \"error\",\n ...props\n}: HelpTextProps): ReactElement => (\n <Text.Text<\"small\">\n className={CSS(\n CSS.B(\"input-help-text\"),\n CSS.BM(\"input-help-text\", variant),\n className,\n )}\n level=\"small\"\n {...props}\n />\n);\n","// Copyright 2023 Synnax Labs, Inc.\n//\n// Use of this software is governed by the Business Source License included in the file\n// licenses/BSL.txt.\n//\n// As of the Change Date specified in that file, in accordance with the Business Source\n// License, use of this software will be governed by the Apache License, Version 2.0,\n// included in the file licenses/APL.txt.\n\nimport { type DetailedHTMLProps, type HTMLAttributes, type ReactElement } from \"react\";\n\nimport { CSS } from \"@/css\";\n\nimport \"@/input/Label.css\";\n\n/** Props for the {@link Label} component. */\nexport interface LabelProps\n extends DetailedHTMLProps<HTMLAttributes<HTMLLabelElement>, HTMLLabelElement> {\n required?: boolean;\n}\n\n/**\n * A thin, styled wrapper for an input label. We generally recommend using Input.Item\n * with a 'label' prop instead of this component. This component is useful for\n * low-level control over the label element.\n *\n * @param props - Props for the label component. Unlisted props are passed to the\n * underlying label element.\n * @param props.required - Indicate whether the label is associated with a required\n * input.\n */\nexport const Label = ({\n className,\n required = false,\n children,\n ...props\n}: LabelProps): ReactElement => {\n return (\n <label className={CSS(CSS.B(\"input-label\"), className)} {...props}>\n {children} {required && <span className={CSS.B(\"required-indicator\")}>*</span>}\n </label>\n );\n};\n","// Copyright 2023 Synnax Labs, Inc.\n//\n// Use of this software is governed by the Business Source License included in the file\n// licenses/BSL.txt.\n//\n// As of the Change Date specified in that file, in accordance with the Business Source\n// License, use of this software will be governed by the Apache License, Version 2.0,\n// included in the file licenses/APL.txt.\n\nimport { type ReactElement } from \"react\";\n\nimport { direction } from \"@synnaxlabs/x\";\n\nimport { Align } from \"@/align\";\nimport { CSS } from \"@/css\";\nimport { HelpText } from \"@/input/HelpText\";\nimport { Label } from \"@/input/Label\";\n\nimport \"@/input/Item.css\";\nimport { status } from \"@/status/aether\";\n\nexport interface ItemProps extends Align.SpaceProps {\n label?: string;\n required?: boolean;\n showLabel?: boolean;\n helpText?: string;\n padHelpText?: boolean;\n helpTextVariant?: status.Variant;\n showHelpText?: boolean;\n}\n\nconst maybeDefaultAlignment = (\n align?: Align.Alignment,\n dir: direction.Crude = \"x\",\n): Align.Alignment => {\n if (align != null) return align;\n return direction.construct(dir) === \"y\" ? \"stretch\" : \"center\";\n};\n\nexport const Item = ({\n label,\n showLabel = true,\n helpText,\n direction = \"y\",\n className,\n children,\n required,\n align,\n size = \"small\",\n padHelpText = false,\n helpTextVariant,\n showHelpText = true,\n ...props\n}: ItemProps): ReactElement => {\n let inputAndHelp: ReactElement;\n if (showHelpText === false && showLabel === false) return <>{children}</>;\n if (direction === \"x\")\n inputAndHelp = (\n <Align.Space direction=\"y\" size=\"small\">\n {children}\n {(padHelpText || (helpText != null && helpText.length > 0)) && (\n <HelpText variant={helpTextVariant}>{helpText}</HelpText>\n )}\n </Align.Space>\n );\n else\n inputAndHelp = (\n <Align.Space direction=\"y\" size={1 / 3}>\n {children}\n {(padHelpText || (helpText != null && helpText.length > 0)) && (\n <HelpText variant={helpTextVariant}>{helpText}</HelpText>\n )}\n </Align.Space>\n );\n\n return (\n <Align.Space\n className={CSS(CSS.B(\"input-item\"), className)}\n direction={direction}\n size={size}\n align={maybeDefaultAlignment(align, direction)}\n {...props}\n >\n {showLabel && <Label required={required}>{label}</Label>}\n {inputAndHelp}\n </Align.Space>\n );\n};\n","// Copyright 2024 Synnax Labs, Inc.\n//\n// Use of this software is governed by the Business Source License included in the file\n// licenses/BSL.txt.\n//\n// As of the Change Date specified in that file, in accordance with the Business Source\n// License, use of this software will be governed by the Apache License, Version 2.0,\n// included in the file licenses/APL.txt.\n\nimport { type ReactElement, useState } from \"react\";\n\nimport { TimeSpan, TimeStamp } from \"@synnaxlabs/x\";\n\nimport { Text } from \"@/input/Text\";\nimport { type BaseProps } from \"@/input/types\";\n\nexport interface DateTimeProps extends BaseProps<number> {}\n\nexport const DateTime = ({\n value,\n onChange,\n onBlur,\n ...props\n}: DateTimeProps): ReactElement => {\n const ts = new TimeStamp(value, \"UTC\");\n const [internalValue, setInternalValue] = useState(\n ts.fString(\"ISO\", \"local\").slice(0, -1),\n );\n const [valueIsValid, setValueIsValid] = useState(true);\n\n const handleChange = (next: string | number): void => {\n let nextStr = next.toString();\n setInternalValue(nextStr);\n\n let ts = new TimeStamp(next, \"UTC\");\n if (nextStr.length < 23) nextStr += \".000\";\n\n ts = ts.add(\n BigInt(\n TimeStamp.now().date().getTimezoneOffset() - ts.date().getTimezoneOffset(),\n ) * TimeSpan.MINUTE.valueOf(),\n );\n let ok = false;\n try {\n const str = ts.fString(\"ISO\", \"local\");\n ok = str.slice(0, -1) === nextStr;\n } catch (_) {\n console.error(\"e\");\n }\n if (!ok) {\n setValueIsValid(false);\n return;\n }\n onChange(Number(ts.valueOf()));\n setValueIsValid(true);\n };\n\n const handleBlur: React.FocusEventHandler<HTMLInputElement> = (e) => {\n setValueIsValid(true);\n setInternalValue(new TimeStamp(value, \"UTC\").fString(\"ISO\", \"local\").slice(0, -1));\n onBlur?.(e);\n };\n\n return (\n <Text\n type=\"datetime-local\"\n onBlur={handleBlur}\n required={false}\n value={\n valueIsValid\n ? new TimeStamp(value, \"UTC\").fString(\"ISO\", \"local\").slice(0, -1)\n : internalValue\n }\n onChange={handleChange}\n {...props}\n />\n );\n};\n"],"names":["jsx","Text.Text","CSS","jsxs","direction","Align.Space","TimeStamp","useState","ts","TimeSpan","Text"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"external-16K8slq8.cjs","sources":["../src/input/HelpText.tsx","../src/input/Label.tsx","../src/input/Item.tsx","../src/input/DateTime.tsx"],"sourcesContent":["// Copyright 2023 Synnax Labs, Inc.\n//\n// Use of this software is governed by the Business Source License included in the file\n// licenses/BSL.txt.\n//\n// As of the Change Date specified in that file, in accordance with the Business Source\n// License, use of this software will be governed by the Apache License, Version 2.0,\n// included in the file licenses/APL.txt.\n\nimport { type ReactElement } from \"react\";\n\nimport { CSS } from \"@/css\";\nimport { type Status } from \"@/status\";\nimport { Text } from \"@/text\";\n\nimport \"@/input/HelpText.css\";\n\n/** Props for the {@link HelpText} component. */\nexport interface HelpTextProps extends Omit<Text.TextProps<\"small\">, \"level\" | \"ref\"> {\n variant?: Status.Variant;\n}\n\n/**\n * Help text for an input component. We generally recommend using Input.Item with a\n * 'helpText' prop instead of this component. This component is useful for low-level\n * control over the help text element.\n *\n * @param props - Props for the help text component. Unlisted props are passed to the\n * underlying text element.\n * @param props.variant - The variant of the help text.\n * \"success\" | \"error\" | \"warning\" | \"info\" | \"loading\" | \"disabled\n * @default \"info\"\n */\nexport const HelpText = ({\n className,\n variant = \"error\",\n ...props\n}: HelpTextProps): ReactElement => (\n <Text.Text<\"small\">\n className={CSS(\n CSS.B(\"input-help-text\"),\n CSS.BM(\"input-help-text\", variant),\n className,\n )}\n level=\"small\"\n {...props}\n />\n);\n","// Copyright 2023 Synnax Labs, Inc.\n//\n// Use of this software is governed by the Business Source License included in the file\n// licenses/BSL.txt.\n//\n// As of the Change Date specified in that file, in accordance with the Business Source\n// License, use of this software will be governed by the Apache License, Version 2.0,\n// included in the file licenses/APL.txt.\n\nimport { type DetailedHTMLProps, type HTMLAttributes, type ReactElement } from \"react\";\n\nimport { CSS } from \"@/css\";\n\nimport \"@/input/Label.css\";\n\n/** Props for the {@link Label} component. */\nexport interface LabelProps\n extends DetailedHTMLProps<HTMLAttributes<HTMLLabelElement>, HTMLLabelElement> {\n required?: boolean;\n}\n\n/**\n * A thin, styled wrapper for an input label. We generally recommend using Input.Item\n * with a 'label' prop instead of this component. This component is useful for\n * low-level control over the label element.\n *\n * @param props - Props for the label component. Unlisted props are passed to the\n * underlying label element.\n * @param props.required - Indicate whether the label is associated with a required\n * input.\n */\nexport const Label = ({\n className,\n required = false,\n children,\n ...props\n}: LabelProps): ReactElement => {\n return (\n <label className={CSS(CSS.B(\"input-label\"), className)} {...props}>\n {children} {required && <span className={CSS.B(\"required-indicator\")}>*</span>}\n </label>\n );\n};\n","// Copyright 2023 Synnax Labs, Inc.\n//\n// Use of this software is governed by the Business Source License included in the file\n// licenses/BSL.txt.\n//\n// As of the Change Date specified in that file, in accordance with the Business Source\n// License, use of this software will be governed by the Apache License, Version 2.0,\n// included in the file licenses/APL.txt.\n\nimport { type ReactElement } from \"react\";\n\nimport { direction } from \"@synnaxlabs/x\";\n\nimport { Align } from \"@/align\";\nimport { CSS } from \"@/css\";\nimport { HelpText } from \"@/input/HelpText\";\nimport { Label } from \"@/input/Label\";\n\nimport \"@/input/Item.css\";\nimport { status } from \"@/status/aether\";\n\nexport interface ItemProps extends Align.SpaceProps {\n label?: string;\n required?: boolean;\n showLabel?: boolean;\n helpText?: string;\n padHelpText?: boolean;\n helpTextVariant?: status.Variant;\n showHelpText?: boolean;\n}\n\nconst maybeDefaultAlignment = (\n align?: Align.Alignment,\n dir: direction.Crude = \"x\",\n): Align.Alignment => {\n if (align != null) return align;\n return direction.construct(dir) === \"y\" ? \"stretch\" : \"center\";\n};\n\nexport const Item = ({\n label,\n showLabel = true,\n helpText,\n direction = \"y\",\n className,\n children,\n required,\n align,\n size = \"small\",\n padHelpText = false,\n helpTextVariant,\n showHelpText = true,\n ...props\n}: ItemProps): ReactElement => {\n let inputAndHelp: ReactElement;\n if (showHelpText === false && showLabel === false) return <>{children}</>;\n if (direction === \"x\")\n inputAndHelp = (\n <Align.Space direction=\"y\" size=\"small\">\n {children}\n {(padHelpText || (helpText != null && helpText.length > 0)) && (\n <HelpText variant={helpTextVariant}>{helpText}</HelpText>\n )}\n </Align.Space>\n );\n else\n inputAndHelp = (\n <Align.Space direction=\"y\" size={1 / 3}>\n {children}\n {(padHelpText || (helpText != null && helpText.length > 0)) && (\n <HelpText variant={helpTextVariant}>{helpText}</HelpText>\n )}\n </Align.Space>\n );\n\n return (\n <Align.Space\n className={CSS(CSS.B(\"input-item\"), className)}\n direction={direction}\n size={size}\n align={maybeDefaultAlignment(align, direction)}\n {...props}\n >\n {showLabel && <Label required={required}>{label}</Label>}\n {inputAndHelp}\n </Align.Space>\n );\n};\n","// Copyright 2024 Synnax Labs, Inc.\n//\n// Use of this software is governed by the Business Source License included in the file\n// licenses/BSL.txt.\n//\n// As of the Change Date specified in that file, in accordance with the Business Source\n// License, use of this software will be governed by the Apache License, Version 2.0,\n// included in the file licenses/APL.txt.\n\nimport { type ReactElement, useState } from \"react\";\n\nimport { TimeSpan, TimeStamp } from \"@synnaxlabs/x\";\n\nimport { Text } from \"@/input/Text\";\nimport { type BaseProps } from \"@/input/types\";\n\nexport interface DateTimeProps extends BaseProps<number> {}\n\nexport const DateTime = ({\n value,\n onChange,\n onBlur,\n ...props\n}: DateTimeProps): ReactElement => {\n const ts = new TimeStamp(value, \"UTC\");\n const [internalValue, setInternalValue] = useState(\n ts.fString(\"ISO\", \"local\").slice(0, -1),\n );\n const [valueIsValid, setValueIsValid] = useState(true);\n\n const handleChange = (next: string | number): void => {\n let nextStr = next.toString();\n setInternalValue(nextStr);\n\n let ts = new TimeStamp(next, \"UTC\");\n if (nextStr.length < 23) nextStr += \".000\";\n\n ts = ts.add(\n BigInt(\n TimeStamp.now().date().getTimezoneOffset() - ts.date().getTimezoneOffset(),\n ) * TimeSpan.MINUTE.valueOf(),\n );\n let ok = false;\n try {\n const str = ts.fString(\"ISO\", \"local\");\n ok = str.slice(0, -1) === nextStr;\n } catch (_) {\n console.error(\"e\");\n }\n if (!ok) {\n setValueIsValid(false);\n return;\n }\n onChange(Number(ts.valueOf()));\n setValueIsValid(true);\n };\n\n const handleBlur: React.FocusEventHandler<HTMLInputElement> = (e) => {\n setValueIsValid(true);\n setInternalValue(new TimeStamp(value, \"UTC\").fString(\"ISO\", \"local\").slice(0, -1));\n onBlur?.(e);\n };\n\n return (\n <Text\n type=\"datetime-local\"\n onBlur={handleBlur}\n required={false}\n value={\n valueIsValid\n ? new TimeStamp(value, \"UTC\").fString(\"ISO\", \"local\").slice(0, -1)\n : internalValue\n }\n onChange={handleChange}\n {...props}\n />\n );\n};\n"],"names":["jsx","Text.Text","CSS","jsxs","direction","Align.Space","TimeStamp","useState","ts","TimeSpan","Text"],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { j as jsxRuntimeExports } from "./jsx-runtime-mMz73N64.js";
|
|
2
2
|
import { createContext, useCallback, useContext } from "react";
|
|
3
|
-
import { o as useSyncedRef, I as Icon, p as m0, W as WithIcon, e as Text, E as Editable } from "./Toggle-
|
|
3
|
+
import { o as useSyncedRef, I as Icon, p as m0, W as WithIcon, e as Text, E as Editable } from "./Toggle-DGLgYCOX.js";
|
|
4
4
|
import { S as Space, P as Pack } from "./Center-hbwH7rg9.js";
|
|
5
5
|
import { C as CSS, d as f } from "./css-DoalWJF6.js";
|
|
6
|
-
import { h as usePurePassthrough, C as ComponentSizeLevels } from "./aggregator-
|
|
6
|
+
import { h as usePurePassthrough, C as ComponentSizeLevels } from "./aggregator-BgImZc4o.js";
|
|
7
7
|
const resetSelection = (selected = "", tabs = []) => {
|
|
8
8
|
var _a;
|
|
9
9
|
if (tabs.length === 0)
|
|
@@ -284,4 +284,4 @@ export {
|
|
|
284
284
|
resetSelection as r,
|
|
285
285
|
useStatic as u
|
|
286
286
|
};
|
|
287
|
-
//# sourceMappingURL=external-
|
|
287
|
+
//# sourceMappingURL=external-1osPryUV.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"external-BX1SuP7b.js","sources":["../src/tabs/Tabs.tsx","../src/tabs/Selector.tsx"],"sourcesContent":["// Copyright 2023 Synnax Labs, Inc.\n//\n// Use of this software is governed by the Business Source License included in the file\n// licenses/BSL.txt.\n//\n// As of the Change Date specified in that file, in accordance with the Business Source\n// License, use of this software will be governed by the Apache License, Version 2.0,\n// included in the file licenses/APL.txt.\n\nimport React, {\n createContext,\n type ReactElement,\n type ReactNode,\n useContext,\n useCallback,\n} from \"react\";\n\nimport { direction } from \"@synnaxlabs/x\";\n\nimport { Align } from \"@/align\";\nimport { CSS } from \"@/css\";\nimport { useSyncedRef } from \"@/hooks\";\nimport { state } from \"@/state\";\nimport { type TabSpec, Selector } from \"@/tabs/Selector\";\nimport { type ComponentSize } from \"@/util/component\";\nimport { type RenderProp } from \"@/util/renderProp\";\n\nimport \"@/tabs/Tabs.css\";\n\nexport interface Tab extends TabSpec {\n content?: ReactNode;\n}\n\nexport type TabRenderProp = RenderProp<Tab>;\n\nexport interface UseStaticTabsProps {\n tabs: Tab[];\n content?: TabRenderProp;\n onSelect?: (key: string) => void;\n selected?: string;\n}\n\nexport const resetSelection = (selected = \"\", tabs: Tab[] = []): string | undefined => {\n if (tabs.length === 0) return undefined;\n return tabs.find((t) => t.tabKey === selected) != null\n ? selected\n : tabs[tabs.length - 1]?.tabKey;\n};\n\nexport const rename = (key: string, title: string, tabs: Tab[]): Tab[] => {\n title = title.trim();\n if (title.length === 0) return tabs;\n const t = tabs.find((t) => t.tabKey === key);\n if (t == null || t.name === title) return tabs;\n return tabs.map((t) => (t.tabKey === key ? { ...t, name: title } : t));\n};\n\nexport const useStatic = ({\n tabs,\n content,\n selected,\n onSelect,\n}: UseStaticTabsProps): TabsContextValue => {\n const [value, onChange] = state.usePurePassthrough({\n initial: selected ?? tabs[0]?.tabKey ?? \"\",\n value: selected,\n onChange: onSelect,\n });\n const valueRef = useSyncedRef(selected ?? value);\n\n const handleSelect = useCallback(\n (key: string): void => {\n onChange(key);\n if (valueRef.current == null) onSelect?.(key);\n },\n [value, onSelect],\n );\n\n return {\n tabs,\n selected: value,\n content,\n onSelect: handleSelect,\n };\n};\n\nexport interface TabsContextValue {\n tabs: Tab[];\n emptyContent?: ReactElement | null;\n closable?: boolean;\n selected?: string;\n onSelect?: (key: string) => void;\n content?: TabRenderProp | ReactNode;\n onClose?: (key: string) => void;\n onDragStart?: (e: React.DragEvent<HTMLDivElement>, tab: TabSpec) => void;\n onDragEnd?: (e: React.DragEvent<HTMLDivElement>, tab: TabSpec) => void;\n onDrop?: (e: React.DragEvent<HTMLDivElement>) => void;\n onRename?: (key: string, title: string) => void;\n onCreate?: () => void;\n}\n\nexport interface TabsProps\n extends Omit<\n Align.SpaceProps,\n \"children\" | \"onSelect\" | \"size\" | \"onDragStart\" | \"onDragEnd\" | \"content\"\n >,\n TabsContextValue {\n children?: TabRenderProp | ReactNode;\n size?: ComponentSize;\n}\n\nexport const TabsContext = createContext<TabsContextValue>({ tabs: [] });\n\nexport const useTabsContext = (): TabsContextValue => useContext(TabsContext);\n\nexport const Tabs = ({\n id,\n content,\n children,\n onSelect,\n selected,\n closable,\n tabs,\n onClose,\n onDragStart,\n onDragEnd,\n onCreate,\n onRename,\n emptyContent,\n className,\n onDragOver,\n onDrop,\n size = \"medium\",\n direction: dir = \"y\",\n ...props\n}: TabsProps): ReactElement => (\n <Align.Space\n id={id}\n empty\n className={CSS(CSS.B(\"tabs\"), className)}\n onDragOver={onDragOver}\n onDrop={onDrop}\n direction={dir}\n {...props}\n >\n <TabsContext.Provider\n value={{\n tabs,\n emptyContent,\n selected,\n closable,\n content: children ?? content,\n onSelect,\n onClose,\n onDragStart,\n onDragEnd,\n onRename,\n onCreate,\n onDrop,\n }}\n >\n <Selector size={size} direction={direction.swap(dir)} />\n <Content />\n </TabsContext.Provider>\n </Align.Space>\n);\n\nexport const Provider = TabsContext.Provider;\n\nexport const Content = (): ReactNode | null => {\n const {\n tabs,\n selected,\n content: renderProp,\n emptyContent,\n onSelect,\n } = useTabsContext();\n let content: ReactNode = null;\n const selectedTab = tabs.find((tab) => tab.tabKey === selected);\n if (selected == null || selectedTab == null) return emptyContent ?? null;\n if (renderProp != null) {\n if (typeof renderProp === \"function\") content = renderProp(selectedTab);\n else content = renderProp;\n } else if (selectedTab.content != null) content = selectedTab.content;\n return (\n <div className={CSS.B(\"tabs-content\")} onClick={() => onSelect?.(selected)}>\n {content}\n </div>\n );\n};\n","// Copyright 2023 Synnax Labs, Inc.\n//\n// Use of this software is governed by the Business Source License included in the file\n// licenses/BSL.txt.\n//\n// As of the Change Date specified in that file, in accordance with the Business Source\n// License, use of this software will be governed by the Apache License, Version 2.0,\n// included in the file licenses/APL.txt.\n\nimport {\n type DragEventHandler,\n type MouseEventHandler,\n type ReactElement,\n useCallback,\n} from \"react\";\n\nimport { Icon } from \"@synnaxlabs/media\";\n\nimport { Align } from \"@/align\";\nimport { Button } from \"@/button\";\nimport { CSS } from \"@/css\";\nimport { useTabsContext } from \"@/tabs/Tabs\";\nimport { Text } from \"@/text\";\nimport { type ComponentSize } from \"@/util/component\";\n\nexport interface TabSpec {\n tabKey: string;\n name: string;\n closable?: boolean;\n icon?: ReactElement;\n editable?: boolean;\n}\n\nexport interface SelectorProps extends Omit<Align.SpaceProps, \"children\"> {\n size?: ComponentSize;\n}\n\nconst CLS = \"tabs-selector\";\n\nexport const Selector = ({\n className,\n size = \"medium\",\n direction = \"x\",\n ...props\n}: SelectorProps): ReactElement | null => {\n const {\n tabs,\n selected,\n onSelect,\n onClose,\n closable,\n onDragEnd,\n onDragStart,\n onDrop,\n onRename,\n onCreate,\n } = useTabsContext();\n return (\n <Align.Space\n className={CSS(CSS.B(CLS), CSS.size(size), className)}\n align=\"center\"\n justify=\"spaceBetween\"\n onDrop={onDrop}\n empty\n direction={direction}\n {...props}\n >\n <Align.Space direction={direction} className={CSS.BE(CLS, \"tabs\")} empty>\n {tabs.map((tab) => (\n <SelectorButton\n key={tab.tabKey}\n selected={selected}\n onSelect={onSelect}\n onClose={onClose}\n onDragStart={onDragStart}\n onDragEnd={onDragEnd}\n onRename={onRename}\n closable={tab.closable ?? closable}\n size={size}\n {...tab}\n />\n ))}\n </Align.Space>\n\n {onCreate != null && (\n <Align.Space className={CSS.BE(CLS, \"actions\")}>\n <Button.Icon size={size} sharp onClick={onCreate}>\n <Icon.Add />\n </Button.Icon>\n </Align.Space>\n )}\n </Align.Space>\n );\n};\n\nconst SelectorButton = ({\n selected,\n onSelect,\n onClose,\n tabKey,\n name,\n onDragStart,\n onDragEnd,\n onRename,\n closable = true,\n icon,\n size,\n editable = true,\n}: SelectorButtonProps): ReactElement => {\n const handleDragStart: DragEventHandler<HTMLDivElement> = useCallback(\n (e) => onDragStart?.(e, { tabKey, name }),\n [onDragStart, tabKey, name],\n );\n\n const handleDragEnd: DragEventHandler<HTMLDivElement> = useCallback(\n (e) => onDragEnd?.(e, { tabKey, name }),\n [onDragEnd, tabKey, name],\n );\n\n const handleClose: MouseEventHandler<HTMLButtonElement> = useCallback(\n (e) => {\n e.stopPropagation();\n onClose?.(tabKey);\n },\n [onClose, tabKey],\n );\n\n const _onSelect = useCallback(() => onSelect?.(tabKey), [onSelect, tabKey]);\n\n return (\n <Align.Pack\n size={size}\n className={CSS(\n CSS.BE(CLS, \"btn\"),\n onRename == null && CSS.BEM(CLS, \"btn\", \"uneditable\"),\n CSS.selected(selected === tabKey),\n closable && onClose != null && CSS.BEM(CLS, \"btn\", \"closable\"),\n )}\n draggable\n direction=\"x\"\n justify=\"center\"\n align=\"center\"\n onClick={_onSelect}\n onDragStart={handleDragStart}\n onDragEnd={handleDragEnd}\n bordered={false}\n rounded={false}\n >\n <Name\n name={name}\n tabKey={tabKey}\n onRename={onRename}\n icon={icon}\n editable={editable}\n level={Text.ComponentSizeLevels[size]}\n />\n {closable && onClose != null && (\n <Button.Icon onClick={handleClose}>\n <Icon.Close aria-label=\"pluto-tabs__close\" />\n </Button.Icon>\n )}\n </Align.Pack>\n );\n};\n\nexport interface SelectorButtonProps extends TabSpec {\n selected?: string;\n onDragStart?: (e: React.DragEvent<HTMLDivElement>, tab: TabSpec) => void;\n onDragEnd?: (e: React.DragEvent<HTMLDivElement>, tab: TabSpec) => void;\n onSelect?: (key: string) => void;\n onClose?: (key: string) => void;\n onRename?: (key: string, name: string) => void;\n size: ComponentSize;\n}\n\ninterface NameProps extends Text.CoreProps<Text.Level> {\n onRename?: (key: string, name: string) => void;\n name: string;\n tabKey: string;\n icon?: ReactElement;\n editable?: boolean;\n}\n\nconst Name = ({\n onRename,\n name,\n tabKey,\n icon,\n editable = true,\n ...props\n}: NameProps): ReactElement => {\n if (onRename == null || !editable) {\n if (icon != null)\n return (\n <Text.WithIcon startIcon={icon} noWrap {...props}>\n {name}\n </Text.WithIcon>\n );\n return (\n <Text.Text noWrap {...props}>\n {name}\n </Text.Text>\n );\n }\n return (\n <Text.Editable<Text.Level>\n onChange={(newText: string) => onRename(tabKey, newText)}\n value={name}\n noWrap\n {...props}\n />\n );\n};\n"],"names":["t","state.usePurePassthrough","jsx","Align.Space","jsxs","direction","Button.Icon","Icon","Align.Pack","Text.ComponentSizeLevels","Text.WithIcon","Text.Text","Text.Editable"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"external-1osPryUV.js","sources":["../src/tabs/Tabs.tsx","../src/tabs/Selector.tsx"],"sourcesContent":["// Copyright 2023 Synnax Labs, Inc.\n//\n// Use of this software is governed by the Business Source License included in the file\n// licenses/BSL.txt.\n//\n// As of the Change Date specified in that file, in accordance with the Business Source\n// License, use of this software will be governed by the Apache License, Version 2.0,\n// included in the file licenses/APL.txt.\n\nimport React, {\n createContext,\n type ReactElement,\n type ReactNode,\n useContext,\n useCallback,\n} from \"react\";\n\nimport { direction } from \"@synnaxlabs/x\";\n\nimport { Align } from \"@/align\";\nimport { CSS } from \"@/css\";\nimport { useSyncedRef } from \"@/hooks\";\nimport { state } from \"@/state\";\nimport { type TabSpec, Selector } from \"@/tabs/Selector\";\nimport { type ComponentSize } from \"@/util/component\";\nimport { type RenderProp } from \"@/util/renderProp\";\n\nimport \"@/tabs/Tabs.css\";\n\nexport interface Tab extends TabSpec {\n content?: ReactNode;\n}\n\nexport type TabRenderProp = RenderProp<Tab>;\n\nexport interface UseStaticTabsProps {\n tabs: Tab[];\n content?: TabRenderProp;\n onSelect?: (key: string) => void;\n selected?: string;\n}\n\nexport const resetSelection = (selected = \"\", tabs: Tab[] = []): string | undefined => {\n if (tabs.length === 0) return undefined;\n return tabs.find((t) => t.tabKey === selected) != null\n ? selected\n : tabs[tabs.length - 1]?.tabKey;\n};\n\nexport const rename = (key: string, title: string, tabs: Tab[]): Tab[] => {\n title = title.trim();\n if (title.length === 0) return tabs;\n const t = tabs.find((t) => t.tabKey === key);\n if (t == null || t.name === title) return tabs;\n return tabs.map((t) => (t.tabKey === key ? { ...t, name: title } : t));\n};\n\nexport const useStatic = ({\n tabs,\n content,\n selected,\n onSelect,\n}: UseStaticTabsProps): TabsContextValue => {\n const [value, onChange] = state.usePurePassthrough({\n initial: selected ?? tabs[0]?.tabKey ?? \"\",\n value: selected,\n onChange: onSelect,\n });\n const valueRef = useSyncedRef(selected ?? value);\n\n const handleSelect = useCallback(\n (key: string): void => {\n onChange(key);\n if (valueRef.current == null) onSelect?.(key);\n },\n [value, onSelect],\n );\n\n return {\n tabs,\n selected: value,\n content,\n onSelect: handleSelect,\n };\n};\n\nexport interface TabsContextValue {\n tabs: Tab[];\n emptyContent?: ReactElement | null;\n closable?: boolean;\n selected?: string;\n onSelect?: (key: string) => void;\n content?: TabRenderProp | ReactNode;\n onClose?: (key: string) => void;\n onDragStart?: (e: React.DragEvent<HTMLDivElement>, tab: TabSpec) => void;\n onDragEnd?: (e: React.DragEvent<HTMLDivElement>, tab: TabSpec) => void;\n onDrop?: (e: React.DragEvent<HTMLDivElement>) => void;\n onRename?: (key: string, title: string) => void;\n onCreate?: () => void;\n}\n\nexport interface TabsProps\n extends Omit<\n Align.SpaceProps,\n \"children\" | \"onSelect\" | \"size\" | \"onDragStart\" | \"onDragEnd\" | \"content\"\n >,\n TabsContextValue {\n children?: TabRenderProp | ReactNode;\n size?: ComponentSize;\n}\n\nexport const TabsContext = createContext<TabsContextValue>({ tabs: [] });\n\nexport const useTabsContext = (): TabsContextValue => useContext(TabsContext);\n\nexport const Tabs = ({\n id,\n content,\n children,\n onSelect,\n selected,\n closable,\n tabs,\n onClose,\n onDragStart,\n onDragEnd,\n onCreate,\n onRename,\n emptyContent,\n className,\n onDragOver,\n onDrop,\n size = \"medium\",\n direction: dir = \"y\",\n ...props\n}: TabsProps): ReactElement => (\n <Align.Space\n id={id}\n empty\n className={CSS(CSS.B(\"tabs\"), className)}\n onDragOver={onDragOver}\n onDrop={onDrop}\n direction={dir}\n {...props}\n >\n <TabsContext.Provider\n value={{\n tabs,\n emptyContent,\n selected,\n closable,\n content: children ?? content,\n onSelect,\n onClose,\n onDragStart,\n onDragEnd,\n onRename,\n onCreate,\n onDrop,\n }}\n >\n <Selector size={size} direction={direction.swap(dir)} />\n <Content />\n </TabsContext.Provider>\n </Align.Space>\n);\n\nexport const Provider = TabsContext.Provider;\n\nexport const Content = (): ReactNode | null => {\n const {\n tabs,\n selected,\n content: renderProp,\n emptyContent,\n onSelect,\n } = useTabsContext();\n let content: ReactNode = null;\n const selectedTab = tabs.find((tab) => tab.tabKey === selected);\n if (selected == null || selectedTab == null) return emptyContent ?? null;\n if (renderProp != null) {\n if (typeof renderProp === \"function\") content = renderProp(selectedTab);\n else content = renderProp;\n } else if (selectedTab.content != null) content = selectedTab.content;\n return (\n <div className={CSS.B(\"tabs-content\")} onClick={() => onSelect?.(selected)}>\n {content}\n </div>\n );\n};\n","// Copyright 2023 Synnax Labs, Inc.\n//\n// Use of this software is governed by the Business Source License included in the file\n// licenses/BSL.txt.\n//\n// As of the Change Date specified in that file, in accordance with the Business Source\n// License, use of this software will be governed by the Apache License, Version 2.0,\n// included in the file licenses/APL.txt.\n\nimport {\n type DragEventHandler,\n type MouseEventHandler,\n type ReactElement,\n useCallback,\n} from \"react\";\n\nimport { Icon } from \"@synnaxlabs/media\";\n\nimport { Align } from \"@/align\";\nimport { Button } from \"@/button\";\nimport { CSS } from \"@/css\";\nimport { useTabsContext } from \"@/tabs/Tabs\";\nimport { Text } from \"@/text\";\nimport { type ComponentSize } from \"@/util/component\";\n\nexport interface TabSpec {\n tabKey: string;\n name: string;\n closable?: boolean;\n icon?: ReactElement;\n editable?: boolean;\n}\n\nexport interface SelectorProps extends Omit<Align.SpaceProps, \"children\"> {\n size?: ComponentSize;\n}\n\nconst CLS = \"tabs-selector\";\n\nexport const Selector = ({\n className,\n size = \"medium\",\n direction = \"x\",\n ...props\n}: SelectorProps): ReactElement | null => {\n const {\n tabs,\n selected,\n onSelect,\n onClose,\n closable,\n onDragEnd,\n onDragStart,\n onDrop,\n onRename,\n onCreate,\n } = useTabsContext();\n return (\n <Align.Space\n className={CSS(CSS.B(CLS), CSS.size(size), className)}\n align=\"center\"\n justify=\"spaceBetween\"\n onDrop={onDrop}\n empty\n direction={direction}\n {...props}\n >\n <Align.Space direction={direction} className={CSS.BE(CLS, \"tabs\")} empty>\n {tabs.map((tab) => (\n <SelectorButton\n key={tab.tabKey}\n selected={selected}\n onSelect={onSelect}\n onClose={onClose}\n onDragStart={onDragStart}\n onDragEnd={onDragEnd}\n onRename={onRename}\n closable={tab.closable ?? closable}\n size={size}\n {...tab}\n />\n ))}\n </Align.Space>\n\n {onCreate != null && (\n <Align.Space className={CSS.BE(CLS, \"actions\")}>\n <Button.Icon size={size} sharp onClick={onCreate}>\n <Icon.Add />\n </Button.Icon>\n </Align.Space>\n )}\n </Align.Space>\n );\n};\n\nconst SelectorButton = ({\n selected,\n onSelect,\n onClose,\n tabKey,\n name,\n onDragStart,\n onDragEnd,\n onRename,\n closable = true,\n icon,\n size,\n editable = true,\n}: SelectorButtonProps): ReactElement => {\n const handleDragStart: DragEventHandler<HTMLDivElement> = useCallback(\n (e) => onDragStart?.(e, { tabKey, name }),\n [onDragStart, tabKey, name],\n );\n\n const handleDragEnd: DragEventHandler<HTMLDivElement> = useCallback(\n (e) => onDragEnd?.(e, { tabKey, name }),\n [onDragEnd, tabKey, name],\n );\n\n const handleClose: MouseEventHandler<HTMLButtonElement> = useCallback(\n (e) => {\n e.stopPropagation();\n onClose?.(tabKey);\n },\n [onClose, tabKey],\n );\n\n const _onSelect = useCallback(() => onSelect?.(tabKey), [onSelect, tabKey]);\n\n return (\n <Align.Pack\n size={size}\n className={CSS(\n CSS.BE(CLS, \"btn\"),\n onRename == null && CSS.BEM(CLS, \"btn\", \"uneditable\"),\n CSS.selected(selected === tabKey),\n closable && onClose != null && CSS.BEM(CLS, \"btn\", \"closable\"),\n )}\n draggable\n direction=\"x\"\n justify=\"center\"\n align=\"center\"\n onClick={_onSelect}\n onDragStart={handleDragStart}\n onDragEnd={handleDragEnd}\n bordered={false}\n rounded={false}\n >\n <Name\n name={name}\n tabKey={tabKey}\n onRename={onRename}\n icon={icon}\n editable={editable}\n level={Text.ComponentSizeLevels[size]}\n />\n {closable && onClose != null && (\n <Button.Icon onClick={handleClose}>\n <Icon.Close aria-label=\"pluto-tabs__close\" />\n </Button.Icon>\n )}\n </Align.Pack>\n );\n};\n\nexport interface SelectorButtonProps extends TabSpec {\n selected?: string;\n onDragStart?: (e: React.DragEvent<HTMLDivElement>, tab: TabSpec) => void;\n onDragEnd?: (e: React.DragEvent<HTMLDivElement>, tab: TabSpec) => void;\n onSelect?: (key: string) => void;\n onClose?: (key: string) => void;\n onRename?: (key: string, name: string) => void;\n size: ComponentSize;\n}\n\ninterface NameProps extends Text.CoreProps<Text.Level> {\n onRename?: (key: string, name: string) => void;\n name: string;\n tabKey: string;\n icon?: ReactElement;\n editable?: boolean;\n}\n\nconst Name = ({\n onRename,\n name,\n tabKey,\n icon,\n editable = true,\n ...props\n}: NameProps): ReactElement => {\n if (onRename == null || !editable) {\n if (icon != null)\n return (\n <Text.WithIcon startIcon={icon} noWrap {...props}>\n {name}\n </Text.WithIcon>\n );\n return (\n <Text.Text noWrap {...props}>\n {name}\n </Text.Text>\n );\n }\n return (\n <Text.Editable<Text.Level>\n onChange={(newText: string) => onRename(tabKey, newText)}\n value={name}\n noWrap\n {...props}\n />\n );\n};\n"],"names":["t","state.usePurePassthrough","jsx","Align.Space","jsxs","direction","Button.Icon","Icon","Align.Pack","Text.ComponentSizeLevels","Text.WithIcon","Text.Text","Text.Editable"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { e as Text, ah as Text$1, ai as Date, aj as DragButton, ak as Numeric, al as Switch, am as TextArea, an as Time, ao as combineDateAndTimeValue, ap as useDate, aq as useTime } from "./Toggle-
|
|
1
|
+
import { e as Text, ah as Text$1, ai as Date, aj as DragButton, ak as Numeric, al as Switch, am as TextArea, an as Time, ao as combineDateAndTimeValue, ap as useDate, aq as useTime } from "./Toggle-DGLgYCOX.js";
|
|
2
2
|
import { j as jsxRuntimeExports } from "./jsx-runtime-mMz73N64.js";
|
|
3
3
|
import { C as CSS, d as f } from "./css-DoalWJF6.js";
|
|
4
|
-
import { w, y } from "./aggregator-
|
|
4
|
+
import { w, y } from "./aggregator-BgImZc4o.js";
|
|
5
5
|
import { useState } from "react";
|
|
6
6
|
import { S as Space } from "./Center-hbwH7rg9.js";
|
|
7
7
|
const HelpText = ({
|
|
@@ -154,4 +154,4 @@ export {
|
|
|
154
154
|
Item as I,
|
|
155
155
|
external as e
|
|
156
156
|
};
|
|
157
|
-
//# sourceMappingURL=external-
|
|
157
|
+
//# sourceMappingURL=external-5przQjJD.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"external-BGyrJwT6.js","sources":["../src/input/HelpText.tsx","../src/input/Label.tsx","../src/input/Item.tsx","../src/input/DateTime.tsx"],"sourcesContent":["// Copyright 2023 Synnax Labs, Inc.\n//\n// Use of this software is governed by the Business Source License included in the file\n// licenses/BSL.txt.\n//\n// As of the Change Date specified in that file, in accordance with the Business Source\n// License, use of this software will be governed by the Apache License, Version 2.0,\n// included in the file licenses/APL.txt.\n\nimport { type ReactElement } from \"react\";\n\nimport { CSS } from \"@/css\";\nimport { type Status } from \"@/status\";\nimport { Text } from \"@/text\";\n\nimport \"@/input/HelpText.css\";\n\n/** Props for the {@link HelpText} component. */\nexport interface HelpTextProps extends Omit<Text.TextProps<\"small\">, \"level\" | \"ref\"> {\n variant?: Status.Variant;\n}\n\n/**\n * Help text for an input component. We generally recommend using Input.Item with a\n * 'helpText' prop instead of this component. This component is useful for low-level\n * control over the help text element.\n *\n * @param props - Props for the help text component. Unlisted props are passed to the\n * underlying text element.\n * @param props.variant - The variant of the help text.\n * \"success\" | \"error\" | \"warning\" | \"info\" | \"loading\" | \"disabled\n * @default \"info\"\n */\nexport const HelpText = ({\n className,\n variant = \"error\",\n ...props\n}: HelpTextProps): ReactElement => (\n <Text.Text<\"small\">\n className={CSS(\n CSS.B(\"input-help-text\"),\n CSS.BM(\"input-help-text\", variant),\n className,\n )}\n level=\"small\"\n {...props}\n />\n);\n","// Copyright 2023 Synnax Labs, Inc.\n//\n// Use of this software is governed by the Business Source License included in the file\n// licenses/BSL.txt.\n//\n// As of the Change Date specified in that file, in accordance with the Business Source\n// License, use of this software will be governed by the Apache License, Version 2.0,\n// included in the file licenses/APL.txt.\n\nimport { type DetailedHTMLProps, type HTMLAttributes, type ReactElement } from \"react\";\n\nimport { CSS } from \"@/css\";\n\nimport \"@/input/Label.css\";\n\n/** Props for the {@link Label} component. */\nexport interface LabelProps\n extends DetailedHTMLProps<HTMLAttributes<HTMLLabelElement>, HTMLLabelElement> {\n required?: boolean;\n}\n\n/**\n * A thin, styled wrapper for an input label. We generally recommend using Input.Item\n * with a 'label' prop instead of this component. This component is useful for\n * low-level control over the label element.\n *\n * @param props - Props for the label component. Unlisted props are passed to the\n * underlying label element.\n * @param props.required - Indicate whether the label is associated with a required\n * input.\n */\nexport const Label = ({\n className,\n required = false,\n children,\n ...props\n}: LabelProps): ReactElement => {\n return (\n <label className={CSS(CSS.B(\"input-label\"), className)} {...props}>\n {children} {required && <span className={CSS.B(\"required-indicator\")}>*</span>}\n </label>\n );\n};\n","// Copyright 2023 Synnax Labs, Inc.\n//\n// Use of this software is governed by the Business Source License included in the file\n// licenses/BSL.txt.\n//\n// As of the Change Date specified in that file, in accordance with the Business Source\n// License, use of this software will be governed by the Apache License, Version 2.0,\n// included in the file licenses/APL.txt.\n\nimport { type ReactElement } from \"react\";\n\nimport { direction } from \"@synnaxlabs/x\";\n\nimport { Align } from \"@/align\";\nimport { CSS } from \"@/css\";\nimport { HelpText } from \"@/input/HelpText\";\nimport { Label } from \"@/input/Label\";\n\nimport \"@/input/Item.css\";\nimport { status } from \"@/status/aether\";\n\nexport interface ItemProps extends Align.SpaceProps {\n label?: string;\n required?: boolean;\n showLabel?: boolean;\n helpText?: string;\n padHelpText?: boolean;\n helpTextVariant?: status.Variant;\n showHelpText?: boolean;\n}\n\nconst maybeDefaultAlignment = (\n align?: Align.Alignment,\n dir: direction.Crude = \"x\",\n): Align.Alignment => {\n if (align != null) return align;\n return direction.construct(dir) === \"y\" ? \"stretch\" : \"center\";\n};\n\nexport const Item = ({\n label,\n showLabel = true,\n helpText,\n direction = \"y\",\n className,\n children,\n required,\n align,\n size = \"small\",\n padHelpText = false,\n helpTextVariant,\n showHelpText = true,\n ...props\n}: ItemProps): ReactElement => {\n let inputAndHelp: ReactElement;\n if (showHelpText === false && showLabel === false) return <>{children}</>;\n if (direction === \"x\")\n inputAndHelp = (\n <Align.Space direction=\"y\" size=\"small\">\n {children}\n {(padHelpText || (helpText != null && helpText.length > 0)) && (\n <HelpText variant={helpTextVariant}>{helpText}</HelpText>\n )}\n </Align.Space>\n );\n else\n inputAndHelp = (\n <Align.Space direction=\"y\" size={1 / 3}>\n {children}\n {(padHelpText || (helpText != null && helpText.length > 0)) && (\n <HelpText variant={helpTextVariant}>{helpText}</HelpText>\n )}\n </Align.Space>\n );\n\n return (\n <Align.Space\n className={CSS(CSS.B(\"input-item\"), className)}\n direction={direction}\n size={size}\n align={maybeDefaultAlignment(align, direction)}\n {...props}\n >\n {showLabel && <Label required={required}>{label}</Label>}\n {inputAndHelp}\n </Align.Space>\n );\n};\n","// Copyright 2024 Synnax Labs, Inc.\n//\n// Use of this software is governed by the Business Source License included in the file\n// licenses/BSL.txt.\n//\n// As of the Change Date specified in that file, in accordance with the Business Source\n// License, use of this software will be governed by the Apache License, Version 2.0,\n// included in the file licenses/APL.txt.\n\nimport { type ReactElement, useState } from \"react\";\n\nimport { TimeSpan, TimeStamp } from \"@synnaxlabs/x\";\n\nimport { Text } from \"@/input/Text\";\nimport { type BaseProps } from \"@/input/types\";\n\nexport interface DateTimeProps extends BaseProps<number> {}\n\nexport const DateTime = ({\n value,\n onChange,\n onBlur,\n ...props\n}: DateTimeProps): ReactElement => {\n const ts = new TimeStamp(value, \"UTC\");\n const [internalValue, setInternalValue] = useState(\n ts.fString(\"ISO\", \"local\").slice(0, -1),\n );\n const [valueIsValid, setValueIsValid] = useState(true);\n\n const handleChange = (next: string | number): void => {\n let nextStr = next.toString();\n setInternalValue(nextStr);\n\n let ts = new TimeStamp(next, \"UTC\");\n if (nextStr.length < 23) nextStr += \".000\";\n\n ts = ts.add(\n BigInt(\n TimeStamp.now().date().getTimezoneOffset() - ts.date().getTimezoneOffset(),\n ) * TimeSpan.MINUTE.valueOf(),\n );\n let ok = false;\n try {\n const str = ts.fString(\"ISO\", \"local\");\n ok = str.slice(0, -1) === nextStr;\n } catch (_) {\n console.error(\"e\");\n }\n if (!ok) {\n setValueIsValid(false);\n return;\n }\n onChange(Number(ts.valueOf()));\n setValueIsValid(true);\n };\n\n const handleBlur: React.FocusEventHandler<HTMLInputElement> = (e) => {\n setValueIsValid(true);\n setInternalValue(new TimeStamp(value, \"UTC\").fString(\"ISO\", \"local\").slice(0, -1));\n onBlur?.(e);\n };\n\n return (\n <Text\n type=\"datetime-local\"\n onBlur={handleBlur}\n required={false}\n value={\n valueIsValid\n ? new TimeStamp(value, \"UTC\").fString(\"ISO\", \"local\").slice(0, -1)\n : internalValue\n }\n onChange={handleChange}\n {...props}\n />\n );\n};\n"],"names":["jsx","Text.Text","jsxs","direction","Align.Space","TimeStamp","ts","TimeSpan","Text"],"mappings":";;;;;;AAiCO,MAAM,WAAW,CAAC;AAAA,EACvB;AAAA,EACA,UAAU;AAAA,EACV,GAAG;AACL,MACEA,kCAAA;AAAA,EAACC;AAAAA,EAAA;AAAA,IACC,WAAW;AAAA,MACT,IAAI,EAAE,iBAAiB;AAAA,MACvB,IAAI,GAAG,mBAAmB,OAAO;AAAA,MACjC;AAAA,IACF;AAAA,IACA,OAAM;AAAA,IACL,GAAG;AAAA,EAAA;AACN;ACfK,MAAM,QAAQ,CAAC;AAAA,EACpB;AAAA,EACA,WAAW;AAAA,EACX;AAAA,EACA,GAAG;AACL,MAAgC;AAE5B,SAAAC,kCAAA,KAAC,SAAM,EAAA,WAAW,IAAI,IAAI,EAAE,aAAa,GAAG,SAAS,GAAI,GAAG,OACzD,UAAA;AAAA,IAAA;AAAA,IAAS;AAAA,IAAE,kDAAa,QAAK,EAAA,WAAW,IAAI,EAAE,oBAAoB,GAAG,UAAC,KAAA;AAAA,EACzE,EAAA,CAAA;AAEJ;ACXA,MAAM,wBAAwB,CAC5B,OACA,MAAuB,QACH;AACpB,MAAI,SAAS;AAAa,WAAA;AAC1B,SAAOC,EAAU,UAAU,GAAG,MAAM,MAAM,YAAY;AACxD;AAEO,MAAM,OAAO,CAAC;AAAA,EACnB;AAAA,EACA,YAAY;AAAA,EACZ;AAAA,EACA,WAAAA,aAAY;AAAA,EACZ;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,OAAO;AAAA,EACP,cAAc;AAAA,EACd;AAAA,EACA,eAAe;AAAA,EACf,GAAG;AACL,MAA+B;AACzB,MAAA;AACA,MAAA,iBAAiB,SAAS,cAAc;AAAO,+EAAU,SAAS,CAAA;AACtE,MAAIA,eAAc;AAChB,0DACGC,OAAA,EAAY,WAAU,KAAI,MAAK,SAC7B,UAAA;AAAA,MAAA;AAAA,OACC,eAAgB,YAAY,QAAQ,SAAS,SAAS,MACrDJ,sCAAA,UAAA,EAAS,SAAS,iBAAkB,UAAS,SAAA,CAAA;AAAA,IAElD,EAAA,CAAA;AAAA;AAIA,mBAAAE,kCAAAA,KAACE,OAAA,EAAY,WAAU,KAAI,MAAM,IAAI,GAClC,UAAA;AAAA,MAAA;AAAA,OACC,eAAgB,YAAY,QAAQ,SAAS,SAAS,MACrDJ,sCAAA,UAAA,EAAS,SAAS,iBAAkB,UAAS,SAAA,CAAA;AAAA,IAElD,EAAA,CAAA;AAIF,SAAAE,kCAAA;AAAA,IAACE;AAAAA,IAAA;AAAA,MACC,WAAW,IAAI,IAAI,EAAE,YAAY,GAAG,SAAS;AAAA,MAC7C,WAAWD;AAAAA,MACX;AAAA,MACA,OAAO,sBAAsB,OAAOA,UAAS;AAAA,MAC5C,GAAG;AAAA,MAEH,UAAA;AAAA,QAAa,aAAAH,kCAAA,IAAC,OAAM,EAAA,UAAqB,UAAM,OAAA;AAAA,QAC/C;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGP;ACrEO,MAAM,WAAW,CAAC;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAmC;AACjC,QAAM,KAAK,IAAIK,EAAU,OAAO,KAAK;AAC/B,QAAA,CAAC,eAAe,gBAAgB,IAAI;AAAA,IACxC,GAAG,QAAQ,OAAO,OAAO,EAAE,MAAM,GAAG,EAAE;AAAA,EAAA;AAExC,QAAM,CAAC,cAAc,eAAe,IAAI,SAAS,IAAI;AAE/C,QAAA,eAAe,CAAC,SAAgC;AAChD,QAAA,UAAU,KAAK;AACnB,qBAAiB,OAAO;AAExB,QAAIC,MAAK,IAAID,EAAU,MAAM,KAAK;AAClC,QAAI,QAAQ,SAAS;AAAe,iBAAA;AAEpCC,UAAKA,IAAG;AAAA,MACN;AAAA,QACED,EAAU,IAAI,EAAE,KAAK,EAAE,sBAAsBC,IAAG,KAAK,EAAE,kBAAkB;AAAA,MAAA,IACvEC,EAAS,OAAO,QAAQ;AAAA,IAAA;AAE9B,QAAI,KAAK;AACL,QAAA;AACF,YAAM,MAAMD,IAAG,QAAQ,OAAO,OAAO;AACrC,WAAK,IAAI,MAAM,GAAG,EAAE,MAAM;AAAA,aACnB,GAAG;AACV,cAAQ,MAAM,GAAG;AAAA,IACnB;AACA,QAAI,CAAC,IAAI;AACP,sBAAgB,KAAK;AACrB;AAAA,IACF;AACA,aAAS,OAAOA,IAAG,QAAQ,CAAC,CAAC;AAC7B,oBAAgB,IAAI;AAAA,EAAA;AAGhB,QAAA,aAAwD,CAAC,MAAM;AACnE,oBAAgB,IAAI;AACpB,qBAAiB,IAAID,EAAU,OAAO,KAAK,EAAE,QAAQ,OAAO,OAAO,EAAE,MAAM,GAAG,EAAE,CAAC;AACjF,qCAAS;AAAA,EAAC;AAIV,SAAAL,kCAAA;AAAA,IAACQ;AAAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,OACE,eACI,IAAIH,EAAU,OAAO,KAAK,EAAE,QAAQ,OAAO,OAAO,EAAE,MAAM,GAAG,EAAE,IAC/D;AAAA,MAEN,UAAU;AAAA,MACT,GAAG;AAAA,IAAA;AAAA,EAAA;AAGV;;;;;;;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"external-5przQjJD.js","sources":["../src/input/HelpText.tsx","../src/input/Label.tsx","../src/input/Item.tsx","../src/input/DateTime.tsx"],"sourcesContent":["// Copyright 2023 Synnax Labs, Inc.\n//\n// Use of this software is governed by the Business Source License included in the file\n// licenses/BSL.txt.\n//\n// As of the Change Date specified in that file, in accordance with the Business Source\n// License, use of this software will be governed by the Apache License, Version 2.0,\n// included in the file licenses/APL.txt.\n\nimport { type ReactElement } from \"react\";\n\nimport { CSS } from \"@/css\";\nimport { type Status } from \"@/status\";\nimport { Text } from \"@/text\";\n\nimport \"@/input/HelpText.css\";\n\n/** Props for the {@link HelpText} component. */\nexport interface HelpTextProps extends Omit<Text.TextProps<\"small\">, \"level\" | \"ref\"> {\n variant?: Status.Variant;\n}\n\n/**\n * Help text for an input component. We generally recommend using Input.Item with a\n * 'helpText' prop instead of this component. This component is useful for low-level\n * control over the help text element.\n *\n * @param props - Props for the help text component. Unlisted props are passed to the\n * underlying text element.\n * @param props.variant - The variant of the help text.\n * \"success\" | \"error\" | \"warning\" | \"info\" | \"loading\" | \"disabled\n * @default \"info\"\n */\nexport const HelpText = ({\n className,\n variant = \"error\",\n ...props\n}: HelpTextProps): ReactElement => (\n <Text.Text<\"small\">\n className={CSS(\n CSS.B(\"input-help-text\"),\n CSS.BM(\"input-help-text\", variant),\n className,\n )}\n level=\"small\"\n {...props}\n />\n);\n","// Copyright 2023 Synnax Labs, Inc.\n//\n// Use of this software is governed by the Business Source License included in the file\n// licenses/BSL.txt.\n//\n// As of the Change Date specified in that file, in accordance with the Business Source\n// License, use of this software will be governed by the Apache License, Version 2.0,\n// included in the file licenses/APL.txt.\n\nimport { type DetailedHTMLProps, type HTMLAttributes, type ReactElement } from \"react\";\n\nimport { CSS } from \"@/css\";\n\nimport \"@/input/Label.css\";\n\n/** Props for the {@link Label} component. */\nexport interface LabelProps\n extends DetailedHTMLProps<HTMLAttributes<HTMLLabelElement>, HTMLLabelElement> {\n required?: boolean;\n}\n\n/**\n * A thin, styled wrapper for an input label. We generally recommend using Input.Item\n * with a 'label' prop instead of this component. This component is useful for\n * low-level control over the label element.\n *\n * @param props - Props for the label component. Unlisted props are passed to the\n * underlying label element.\n * @param props.required - Indicate whether the label is associated with a required\n * input.\n */\nexport const Label = ({\n className,\n required = false,\n children,\n ...props\n}: LabelProps): ReactElement => {\n return (\n <label className={CSS(CSS.B(\"input-label\"), className)} {...props}>\n {children} {required && <span className={CSS.B(\"required-indicator\")}>*</span>}\n </label>\n );\n};\n","// Copyright 2023 Synnax Labs, Inc.\n//\n// Use of this software is governed by the Business Source License included in the file\n// licenses/BSL.txt.\n//\n// As of the Change Date specified in that file, in accordance with the Business Source\n// License, use of this software will be governed by the Apache License, Version 2.0,\n// included in the file licenses/APL.txt.\n\nimport { type ReactElement } from \"react\";\n\nimport { direction } from \"@synnaxlabs/x\";\n\nimport { Align } from \"@/align\";\nimport { CSS } from \"@/css\";\nimport { HelpText } from \"@/input/HelpText\";\nimport { Label } from \"@/input/Label\";\n\nimport \"@/input/Item.css\";\nimport { status } from \"@/status/aether\";\n\nexport interface ItemProps extends Align.SpaceProps {\n label?: string;\n required?: boolean;\n showLabel?: boolean;\n helpText?: string;\n padHelpText?: boolean;\n helpTextVariant?: status.Variant;\n showHelpText?: boolean;\n}\n\nconst maybeDefaultAlignment = (\n align?: Align.Alignment,\n dir: direction.Crude = \"x\",\n): Align.Alignment => {\n if (align != null) return align;\n return direction.construct(dir) === \"y\" ? \"stretch\" : \"center\";\n};\n\nexport const Item = ({\n label,\n showLabel = true,\n helpText,\n direction = \"y\",\n className,\n children,\n required,\n align,\n size = \"small\",\n padHelpText = false,\n helpTextVariant,\n showHelpText = true,\n ...props\n}: ItemProps): ReactElement => {\n let inputAndHelp: ReactElement;\n if (showHelpText === false && showLabel === false) return <>{children}</>;\n if (direction === \"x\")\n inputAndHelp = (\n <Align.Space direction=\"y\" size=\"small\">\n {children}\n {(padHelpText || (helpText != null && helpText.length > 0)) && (\n <HelpText variant={helpTextVariant}>{helpText}</HelpText>\n )}\n </Align.Space>\n );\n else\n inputAndHelp = (\n <Align.Space direction=\"y\" size={1 / 3}>\n {children}\n {(padHelpText || (helpText != null && helpText.length > 0)) && (\n <HelpText variant={helpTextVariant}>{helpText}</HelpText>\n )}\n </Align.Space>\n );\n\n return (\n <Align.Space\n className={CSS(CSS.B(\"input-item\"), className)}\n direction={direction}\n size={size}\n align={maybeDefaultAlignment(align, direction)}\n {...props}\n >\n {showLabel && <Label required={required}>{label}</Label>}\n {inputAndHelp}\n </Align.Space>\n );\n};\n","// Copyright 2024 Synnax Labs, Inc.\n//\n// Use of this software is governed by the Business Source License included in the file\n// licenses/BSL.txt.\n//\n// As of the Change Date specified in that file, in accordance with the Business Source\n// License, use of this software will be governed by the Apache License, Version 2.0,\n// included in the file licenses/APL.txt.\n\nimport { type ReactElement, useState } from \"react\";\n\nimport { TimeSpan, TimeStamp } from \"@synnaxlabs/x\";\n\nimport { Text } from \"@/input/Text\";\nimport { type BaseProps } from \"@/input/types\";\n\nexport interface DateTimeProps extends BaseProps<number> {}\n\nexport const DateTime = ({\n value,\n onChange,\n onBlur,\n ...props\n}: DateTimeProps): ReactElement => {\n const ts = new TimeStamp(value, \"UTC\");\n const [internalValue, setInternalValue] = useState(\n ts.fString(\"ISO\", \"local\").slice(0, -1),\n );\n const [valueIsValid, setValueIsValid] = useState(true);\n\n const handleChange = (next: string | number): void => {\n let nextStr = next.toString();\n setInternalValue(nextStr);\n\n let ts = new TimeStamp(next, \"UTC\");\n if (nextStr.length < 23) nextStr += \".000\";\n\n ts = ts.add(\n BigInt(\n TimeStamp.now().date().getTimezoneOffset() - ts.date().getTimezoneOffset(),\n ) * TimeSpan.MINUTE.valueOf(),\n );\n let ok = false;\n try {\n const str = ts.fString(\"ISO\", \"local\");\n ok = str.slice(0, -1) === nextStr;\n } catch (_) {\n console.error(\"e\");\n }\n if (!ok) {\n setValueIsValid(false);\n return;\n }\n onChange(Number(ts.valueOf()));\n setValueIsValid(true);\n };\n\n const handleBlur: React.FocusEventHandler<HTMLInputElement> = (e) => {\n setValueIsValid(true);\n setInternalValue(new TimeStamp(value, \"UTC\").fString(\"ISO\", \"local\").slice(0, -1));\n onBlur?.(e);\n };\n\n return (\n <Text\n type=\"datetime-local\"\n onBlur={handleBlur}\n required={false}\n value={\n valueIsValid\n ? new TimeStamp(value, \"UTC\").fString(\"ISO\", \"local\").slice(0, -1)\n : internalValue\n }\n onChange={handleChange}\n {...props}\n />\n );\n};\n"],"names":["jsx","Text.Text","jsxs","direction","Align.Space","TimeStamp","ts","TimeSpan","Text"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { P as Provider, S as Switch, t as toCSSVars, u as use, a as useContext, b as useProvider, c as useTypography } from "./Toggle-
|
|
2
|
-
import { S as SYNNAX_DARK, a as SYNNAX_LIGHT, b as SYNNAX_THEMES, t as themeZ } from "./aggregator-
|
|
1
|
+
import { P as Provider, S as Switch, t as toCSSVars, u as use, a as useContext, b as useProvider, c as useTypography } from "./Toggle-DGLgYCOX.js";
|
|
2
|
+
import { S as SYNNAX_DARK, a as SYNNAX_LIGHT, b as SYNNAX_THEMES, t as themeZ } from "./aggregator-BgImZc4o.js";
|
|
3
3
|
const external = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
4
4
|
__proto__: null,
|
|
5
5
|
Provider,
|
|
@@ -20,4 +20,4 @@ const external = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProp
|
|
|
20
20
|
export {
|
|
21
21
|
external as e
|
|
22
22
|
};
|
|
23
|
-
//# sourceMappingURL=external-
|
|
23
|
+
//# sourceMappingURL=external-96EinZfY.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"external-96EinZfY.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
const jsxRuntime = require("./jsx-runtime-B3vWrP5x.cjs");
|
|
3
3
|
const React = require("react");
|
|
4
|
-
const Toggle = require("./Toggle-
|
|
4
|
+
const Toggle = require("./Toggle-C6Z8WPT3.cjs");
|
|
5
5
|
const Center = require("./Center-5NJ61qfA.cjs");
|
|
6
6
|
const css = require("./css-Pf9qxhQ4.cjs");
|
|
7
|
-
const aggregator = require("./aggregator-
|
|
7
|
+
const aggregator = require("./aggregator-BpfMBUD1.cjs");
|
|
8
8
|
const resetSelection = (selected = "", tabs = []) => {
|
|
9
9
|
var _a;
|
|
10
10
|
if (tabs.length === 0)
|
|
@@ -283,4 +283,4 @@ exports.external = external;
|
|
|
283
283
|
exports.rename = rename;
|
|
284
284
|
exports.resetSelection = resetSelection;
|
|
285
285
|
exports.useStatic = useStatic;
|
|
286
|
-
//# sourceMappingURL=external-
|
|
286
|
+
//# sourceMappingURL=external-B0z7uXZV.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"external-CTg9-80v.cjs","sources":["../src/tabs/Tabs.tsx","../src/tabs/Selector.tsx"],"sourcesContent":["// Copyright 2023 Synnax Labs, Inc.\n//\n// Use of this software is governed by the Business Source License included in the file\n// licenses/BSL.txt.\n//\n// As of the Change Date specified in that file, in accordance with the Business Source\n// License, use of this software will be governed by the Apache License, Version 2.0,\n// included in the file licenses/APL.txt.\n\nimport React, {\n createContext,\n type ReactElement,\n type ReactNode,\n useContext,\n useCallback,\n} from \"react\";\n\nimport { direction } from \"@synnaxlabs/x\";\n\nimport { Align } from \"@/align\";\nimport { CSS } from \"@/css\";\nimport { useSyncedRef } from \"@/hooks\";\nimport { state } from \"@/state\";\nimport { type TabSpec, Selector } from \"@/tabs/Selector\";\nimport { type ComponentSize } from \"@/util/component\";\nimport { type RenderProp } from \"@/util/renderProp\";\n\nimport \"@/tabs/Tabs.css\";\n\nexport interface Tab extends TabSpec {\n content?: ReactNode;\n}\n\nexport type TabRenderProp = RenderProp<Tab>;\n\nexport interface UseStaticTabsProps {\n tabs: Tab[];\n content?: TabRenderProp;\n onSelect?: (key: string) => void;\n selected?: string;\n}\n\nexport const resetSelection = (selected = \"\", tabs: Tab[] = []): string | undefined => {\n if (tabs.length === 0) return undefined;\n return tabs.find((t) => t.tabKey === selected) != null\n ? selected\n : tabs[tabs.length - 1]?.tabKey;\n};\n\nexport const rename = (key: string, title: string, tabs: Tab[]): Tab[] => {\n title = title.trim();\n if (title.length === 0) return tabs;\n const t = tabs.find((t) => t.tabKey === key);\n if (t == null || t.name === title) return tabs;\n return tabs.map((t) => (t.tabKey === key ? { ...t, name: title } : t));\n};\n\nexport const useStatic = ({\n tabs,\n content,\n selected,\n onSelect,\n}: UseStaticTabsProps): TabsContextValue => {\n const [value, onChange] = state.usePurePassthrough({\n initial: selected ?? tabs[0]?.tabKey ?? \"\",\n value: selected,\n onChange: onSelect,\n });\n const valueRef = useSyncedRef(selected ?? value);\n\n const handleSelect = useCallback(\n (key: string): void => {\n onChange(key);\n if (valueRef.current == null) onSelect?.(key);\n },\n [value, onSelect],\n );\n\n return {\n tabs,\n selected: value,\n content,\n onSelect: handleSelect,\n };\n};\n\nexport interface TabsContextValue {\n tabs: Tab[];\n emptyContent?: ReactElement | null;\n closable?: boolean;\n selected?: string;\n onSelect?: (key: string) => void;\n content?: TabRenderProp | ReactNode;\n onClose?: (key: string) => void;\n onDragStart?: (e: React.DragEvent<HTMLDivElement>, tab: TabSpec) => void;\n onDragEnd?: (e: React.DragEvent<HTMLDivElement>, tab: TabSpec) => void;\n onDrop?: (e: React.DragEvent<HTMLDivElement>) => void;\n onRename?: (key: string, title: string) => void;\n onCreate?: () => void;\n}\n\nexport interface TabsProps\n extends Omit<\n Align.SpaceProps,\n \"children\" | \"onSelect\" | \"size\" | \"onDragStart\" | \"onDragEnd\" | \"content\"\n >,\n TabsContextValue {\n children?: TabRenderProp | ReactNode;\n size?: ComponentSize;\n}\n\nexport const TabsContext = createContext<TabsContextValue>({ tabs: [] });\n\nexport const useTabsContext = (): TabsContextValue => useContext(TabsContext);\n\nexport const Tabs = ({\n id,\n content,\n children,\n onSelect,\n selected,\n closable,\n tabs,\n onClose,\n onDragStart,\n onDragEnd,\n onCreate,\n onRename,\n emptyContent,\n className,\n onDragOver,\n onDrop,\n size = \"medium\",\n direction: dir = \"y\",\n ...props\n}: TabsProps): ReactElement => (\n <Align.Space\n id={id}\n empty\n className={CSS(CSS.B(\"tabs\"), className)}\n onDragOver={onDragOver}\n onDrop={onDrop}\n direction={dir}\n {...props}\n >\n <TabsContext.Provider\n value={{\n tabs,\n emptyContent,\n selected,\n closable,\n content: children ?? content,\n onSelect,\n onClose,\n onDragStart,\n onDragEnd,\n onRename,\n onCreate,\n onDrop,\n }}\n >\n <Selector size={size} direction={direction.swap(dir)} />\n <Content />\n </TabsContext.Provider>\n </Align.Space>\n);\n\nexport const Provider = TabsContext.Provider;\n\nexport const Content = (): ReactNode | null => {\n const {\n tabs,\n selected,\n content: renderProp,\n emptyContent,\n onSelect,\n } = useTabsContext();\n let content: ReactNode = null;\n const selectedTab = tabs.find((tab) => tab.tabKey === selected);\n if (selected == null || selectedTab == null) return emptyContent ?? null;\n if (renderProp != null) {\n if (typeof renderProp === \"function\") content = renderProp(selectedTab);\n else content = renderProp;\n } else if (selectedTab.content != null) content = selectedTab.content;\n return (\n <div className={CSS.B(\"tabs-content\")} onClick={() => onSelect?.(selected)}>\n {content}\n </div>\n );\n};\n","// Copyright 2023 Synnax Labs, Inc.\n//\n// Use of this software is governed by the Business Source License included in the file\n// licenses/BSL.txt.\n//\n// As of the Change Date specified in that file, in accordance with the Business Source\n// License, use of this software will be governed by the Apache License, Version 2.0,\n// included in the file licenses/APL.txt.\n\nimport {\n type DragEventHandler,\n type MouseEventHandler,\n type ReactElement,\n useCallback,\n} from \"react\";\n\nimport { Icon } from \"@synnaxlabs/media\";\n\nimport { Align } from \"@/align\";\nimport { Button } from \"@/button\";\nimport { CSS } from \"@/css\";\nimport { useTabsContext } from \"@/tabs/Tabs\";\nimport { Text } from \"@/text\";\nimport { type ComponentSize } from \"@/util/component\";\n\nexport interface TabSpec {\n tabKey: string;\n name: string;\n closable?: boolean;\n icon?: ReactElement;\n editable?: boolean;\n}\n\nexport interface SelectorProps extends Omit<Align.SpaceProps, \"children\"> {\n size?: ComponentSize;\n}\n\nconst CLS = \"tabs-selector\";\n\nexport const Selector = ({\n className,\n size = \"medium\",\n direction = \"x\",\n ...props\n}: SelectorProps): ReactElement | null => {\n const {\n tabs,\n selected,\n onSelect,\n onClose,\n closable,\n onDragEnd,\n onDragStart,\n onDrop,\n onRename,\n onCreate,\n } = useTabsContext();\n return (\n <Align.Space\n className={CSS(CSS.B(CLS), CSS.size(size), className)}\n align=\"center\"\n justify=\"spaceBetween\"\n onDrop={onDrop}\n empty\n direction={direction}\n {...props}\n >\n <Align.Space direction={direction} className={CSS.BE(CLS, \"tabs\")} empty>\n {tabs.map((tab) => (\n <SelectorButton\n key={tab.tabKey}\n selected={selected}\n onSelect={onSelect}\n onClose={onClose}\n onDragStart={onDragStart}\n onDragEnd={onDragEnd}\n onRename={onRename}\n closable={tab.closable ?? closable}\n size={size}\n {...tab}\n />\n ))}\n </Align.Space>\n\n {onCreate != null && (\n <Align.Space className={CSS.BE(CLS, \"actions\")}>\n <Button.Icon size={size} sharp onClick={onCreate}>\n <Icon.Add />\n </Button.Icon>\n </Align.Space>\n )}\n </Align.Space>\n );\n};\n\nconst SelectorButton = ({\n selected,\n onSelect,\n onClose,\n tabKey,\n name,\n onDragStart,\n onDragEnd,\n onRename,\n closable = true,\n icon,\n size,\n editable = true,\n}: SelectorButtonProps): ReactElement => {\n const handleDragStart: DragEventHandler<HTMLDivElement> = useCallback(\n (e) => onDragStart?.(e, { tabKey, name }),\n [onDragStart, tabKey, name],\n );\n\n const handleDragEnd: DragEventHandler<HTMLDivElement> = useCallback(\n (e) => onDragEnd?.(e, { tabKey, name }),\n [onDragEnd, tabKey, name],\n );\n\n const handleClose: MouseEventHandler<HTMLButtonElement> = useCallback(\n (e) => {\n e.stopPropagation();\n onClose?.(tabKey);\n },\n [onClose, tabKey],\n );\n\n const _onSelect = useCallback(() => onSelect?.(tabKey), [onSelect, tabKey]);\n\n return (\n <Align.Pack\n size={size}\n className={CSS(\n CSS.BE(CLS, \"btn\"),\n onRename == null && CSS.BEM(CLS, \"btn\", \"uneditable\"),\n CSS.selected(selected === tabKey),\n closable && onClose != null && CSS.BEM(CLS, \"btn\", \"closable\"),\n )}\n draggable\n direction=\"x\"\n justify=\"center\"\n align=\"center\"\n onClick={_onSelect}\n onDragStart={handleDragStart}\n onDragEnd={handleDragEnd}\n bordered={false}\n rounded={false}\n >\n <Name\n name={name}\n tabKey={tabKey}\n onRename={onRename}\n icon={icon}\n editable={editable}\n level={Text.ComponentSizeLevels[size]}\n />\n {closable && onClose != null && (\n <Button.Icon onClick={handleClose}>\n <Icon.Close aria-label=\"pluto-tabs__close\" />\n </Button.Icon>\n )}\n </Align.Pack>\n );\n};\n\nexport interface SelectorButtonProps extends TabSpec {\n selected?: string;\n onDragStart?: (e: React.DragEvent<HTMLDivElement>, tab: TabSpec) => void;\n onDragEnd?: (e: React.DragEvent<HTMLDivElement>, tab: TabSpec) => void;\n onSelect?: (key: string) => void;\n onClose?: (key: string) => void;\n onRename?: (key: string, name: string) => void;\n size: ComponentSize;\n}\n\ninterface NameProps extends Text.CoreProps<Text.Level> {\n onRename?: (key: string, name: string) => void;\n name: string;\n tabKey: string;\n icon?: ReactElement;\n editable?: boolean;\n}\n\nconst Name = ({\n onRename,\n name,\n tabKey,\n icon,\n editable = true,\n ...props\n}: NameProps): ReactElement => {\n if (onRename == null || !editable) {\n if (icon != null)\n return (\n <Text.WithIcon startIcon={icon} noWrap {...props}>\n {name}\n </Text.WithIcon>\n );\n return (\n <Text.Text noWrap {...props}>\n {name}\n </Text.Text>\n );\n }\n return (\n <Text.Editable<Text.Level>\n onChange={(newText: string) => onRename(tabKey, newText)}\n value={name}\n noWrap\n {...props}\n />\n );\n};\n"],"names":["t","state.usePurePassthrough","useSyncedRef","useCallback","createContext","useContext","jsx","Align.Space","CSS","jsxs","direction","Button.Icon","Icon","Align.Pack","Text.ComponentSizeLevels","Text.WithIcon","Text.Text","Text.Editable"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"external-B0z7uXZV.cjs","sources":["../src/tabs/Tabs.tsx","../src/tabs/Selector.tsx"],"sourcesContent":["// Copyright 2023 Synnax Labs, Inc.\n//\n// Use of this software is governed by the Business Source License included in the file\n// licenses/BSL.txt.\n//\n// As of the Change Date specified in that file, in accordance with the Business Source\n// License, use of this software will be governed by the Apache License, Version 2.0,\n// included in the file licenses/APL.txt.\n\nimport React, {\n createContext,\n type ReactElement,\n type ReactNode,\n useContext,\n useCallback,\n} from \"react\";\n\nimport { direction } from \"@synnaxlabs/x\";\n\nimport { Align } from \"@/align\";\nimport { CSS } from \"@/css\";\nimport { useSyncedRef } from \"@/hooks\";\nimport { state } from \"@/state\";\nimport { type TabSpec, Selector } from \"@/tabs/Selector\";\nimport { type ComponentSize } from \"@/util/component\";\nimport { type RenderProp } from \"@/util/renderProp\";\n\nimport \"@/tabs/Tabs.css\";\n\nexport interface Tab extends TabSpec {\n content?: ReactNode;\n}\n\nexport type TabRenderProp = RenderProp<Tab>;\n\nexport interface UseStaticTabsProps {\n tabs: Tab[];\n content?: TabRenderProp;\n onSelect?: (key: string) => void;\n selected?: string;\n}\n\nexport const resetSelection = (selected = \"\", tabs: Tab[] = []): string | undefined => {\n if (tabs.length === 0) return undefined;\n return tabs.find((t) => t.tabKey === selected) != null\n ? selected\n : tabs[tabs.length - 1]?.tabKey;\n};\n\nexport const rename = (key: string, title: string, tabs: Tab[]): Tab[] => {\n title = title.trim();\n if (title.length === 0) return tabs;\n const t = tabs.find((t) => t.tabKey === key);\n if (t == null || t.name === title) return tabs;\n return tabs.map((t) => (t.tabKey === key ? { ...t, name: title } : t));\n};\n\nexport const useStatic = ({\n tabs,\n content,\n selected,\n onSelect,\n}: UseStaticTabsProps): TabsContextValue => {\n const [value, onChange] = state.usePurePassthrough({\n initial: selected ?? tabs[0]?.tabKey ?? \"\",\n value: selected,\n onChange: onSelect,\n });\n const valueRef = useSyncedRef(selected ?? value);\n\n const handleSelect = useCallback(\n (key: string): void => {\n onChange(key);\n if (valueRef.current == null) onSelect?.(key);\n },\n [value, onSelect],\n );\n\n return {\n tabs,\n selected: value,\n content,\n onSelect: handleSelect,\n };\n};\n\nexport interface TabsContextValue {\n tabs: Tab[];\n emptyContent?: ReactElement | null;\n closable?: boolean;\n selected?: string;\n onSelect?: (key: string) => void;\n content?: TabRenderProp | ReactNode;\n onClose?: (key: string) => void;\n onDragStart?: (e: React.DragEvent<HTMLDivElement>, tab: TabSpec) => void;\n onDragEnd?: (e: React.DragEvent<HTMLDivElement>, tab: TabSpec) => void;\n onDrop?: (e: React.DragEvent<HTMLDivElement>) => void;\n onRename?: (key: string, title: string) => void;\n onCreate?: () => void;\n}\n\nexport interface TabsProps\n extends Omit<\n Align.SpaceProps,\n \"children\" | \"onSelect\" | \"size\" | \"onDragStart\" | \"onDragEnd\" | \"content\"\n >,\n TabsContextValue {\n children?: TabRenderProp | ReactNode;\n size?: ComponentSize;\n}\n\nexport const TabsContext = createContext<TabsContextValue>({ tabs: [] });\n\nexport const useTabsContext = (): TabsContextValue => useContext(TabsContext);\n\nexport const Tabs = ({\n id,\n content,\n children,\n onSelect,\n selected,\n closable,\n tabs,\n onClose,\n onDragStart,\n onDragEnd,\n onCreate,\n onRename,\n emptyContent,\n className,\n onDragOver,\n onDrop,\n size = \"medium\",\n direction: dir = \"y\",\n ...props\n}: TabsProps): ReactElement => (\n <Align.Space\n id={id}\n empty\n className={CSS(CSS.B(\"tabs\"), className)}\n onDragOver={onDragOver}\n onDrop={onDrop}\n direction={dir}\n {...props}\n >\n <TabsContext.Provider\n value={{\n tabs,\n emptyContent,\n selected,\n closable,\n content: children ?? content,\n onSelect,\n onClose,\n onDragStart,\n onDragEnd,\n onRename,\n onCreate,\n onDrop,\n }}\n >\n <Selector size={size} direction={direction.swap(dir)} />\n <Content />\n </TabsContext.Provider>\n </Align.Space>\n);\n\nexport const Provider = TabsContext.Provider;\n\nexport const Content = (): ReactNode | null => {\n const {\n tabs,\n selected,\n content: renderProp,\n emptyContent,\n onSelect,\n } = useTabsContext();\n let content: ReactNode = null;\n const selectedTab = tabs.find((tab) => tab.tabKey === selected);\n if (selected == null || selectedTab == null) return emptyContent ?? null;\n if (renderProp != null) {\n if (typeof renderProp === \"function\") content = renderProp(selectedTab);\n else content = renderProp;\n } else if (selectedTab.content != null) content = selectedTab.content;\n return (\n <div className={CSS.B(\"tabs-content\")} onClick={() => onSelect?.(selected)}>\n {content}\n </div>\n );\n};\n","// Copyright 2023 Synnax Labs, Inc.\n//\n// Use of this software is governed by the Business Source License included in the file\n// licenses/BSL.txt.\n//\n// As of the Change Date specified in that file, in accordance with the Business Source\n// License, use of this software will be governed by the Apache License, Version 2.0,\n// included in the file licenses/APL.txt.\n\nimport {\n type DragEventHandler,\n type MouseEventHandler,\n type ReactElement,\n useCallback,\n} from \"react\";\n\nimport { Icon } from \"@synnaxlabs/media\";\n\nimport { Align } from \"@/align\";\nimport { Button } from \"@/button\";\nimport { CSS } from \"@/css\";\nimport { useTabsContext } from \"@/tabs/Tabs\";\nimport { Text } from \"@/text\";\nimport { type ComponentSize } from \"@/util/component\";\n\nexport interface TabSpec {\n tabKey: string;\n name: string;\n closable?: boolean;\n icon?: ReactElement;\n editable?: boolean;\n}\n\nexport interface SelectorProps extends Omit<Align.SpaceProps, \"children\"> {\n size?: ComponentSize;\n}\n\nconst CLS = \"tabs-selector\";\n\nexport const Selector = ({\n className,\n size = \"medium\",\n direction = \"x\",\n ...props\n}: SelectorProps): ReactElement | null => {\n const {\n tabs,\n selected,\n onSelect,\n onClose,\n closable,\n onDragEnd,\n onDragStart,\n onDrop,\n onRename,\n onCreate,\n } = useTabsContext();\n return (\n <Align.Space\n className={CSS(CSS.B(CLS), CSS.size(size), className)}\n align=\"center\"\n justify=\"spaceBetween\"\n onDrop={onDrop}\n empty\n direction={direction}\n {...props}\n >\n <Align.Space direction={direction} className={CSS.BE(CLS, \"tabs\")} empty>\n {tabs.map((tab) => (\n <SelectorButton\n key={tab.tabKey}\n selected={selected}\n onSelect={onSelect}\n onClose={onClose}\n onDragStart={onDragStart}\n onDragEnd={onDragEnd}\n onRename={onRename}\n closable={tab.closable ?? closable}\n size={size}\n {...tab}\n />\n ))}\n </Align.Space>\n\n {onCreate != null && (\n <Align.Space className={CSS.BE(CLS, \"actions\")}>\n <Button.Icon size={size} sharp onClick={onCreate}>\n <Icon.Add />\n </Button.Icon>\n </Align.Space>\n )}\n </Align.Space>\n );\n};\n\nconst SelectorButton = ({\n selected,\n onSelect,\n onClose,\n tabKey,\n name,\n onDragStart,\n onDragEnd,\n onRename,\n closable = true,\n icon,\n size,\n editable = true,\n}: SelectorButtonProps): ReactElement => {\n const handleDragStart: DragEventHandler<HTMLDivElement> = useCallback(\n (e) => onDragStart?.(e, { tabKey, name }),\n [onDragStart, tabKey, name],\n );\n\n const handleDragEnd: DragEventHandler<HTMLDivElement> = useCallback(\n (e) => onDragEnd?.(e, { tabKey, name }),\n [onDragEnd, tabKey, name],\n );\n\n const handleClose: MouseEventHandler<HTMLButtonElement> = useCallback(\n (e) => {\n e.stopPropagation();\n onClose?.(tabKey);\n },\n [onClose, tabKey],\n );\n\n const _onSelect = useCallback(() => onSelect?.(tabKey), [onSelect, tabKey]);\n\n return (\n <Align.Pack\n size={size}\n className={CSS(\n CSS.BE(CLS, \"btn\"),\n onRename == null && CSS.BEM(CLS, \"btn\", \"uneditable\"),\n CSS.selected(selected === tabKey),\n closable && onClose != null && CSS.BEM(CLS, \"btn\", \"closable\"),\n )}\n draggable\n direction=\"x\"\n justify=\"center\"\n align=\"center\"\n onClick={_onSelect}\n onDragStart={handleDragStart}\n onDragEnd={handleDragEnd}\n bordered={false}\n rounded={false}\n >\n <Name\n name={name}\n tabKey={tabKey}\n onRename={onRename}\n icon={icon}\n editable={editable}\n level={Text.ComponentSizeLevels[size]}\n />\n {closable && onClose != null && (\n <Button.Icon onClick={handleClose}>\n <Icon.Close aria-label=\"pluto-tabs__close\" />\n </Button.Icon>\n )}\n </Align.Pack>\n );\n};\n\nexport interface SelectorButtonProps extends TabSpec {\n selected?: string;\n onDragStart?: (e: React.DragEvent<HTMLDivElement>, tab: TabSpec) => void;\n onDragEnd?: (e: React.DragEvent<HTMLDivElement>, tab: TabSpec) => void;\n onSelect?: (key: string) => void;\n onClose?: (key: string) => void;\n onRename?: (key: string, name: string) => void;\n size: ComponentSize;\n}\n\ninterface NameProps extends Text.CoreProps<Text.Level> {\n onRename?: (key: string, name: string) => void;\n name: string;\n tabKey: string;\n icon?: ReactElement;\n editable?: boolean;\n}\n\nconst Name = ({\n onRename,\n name,\n tabKey,\n icon,\n editable = true,\n ...props\n}: NameProps): ReactElement => {\n if (onRename == null || !editable) {\n if (icon != null)\n return (\n <Text.WithIcon startIcon={icon} noWrap {...props}>\n {name}\n </Text.WithIcon>\n );\n return (\n <Text.Text noWrap {...props}>\n {name}\n </Text.Text>\n );\n }\n return (\n <Text.Editable<Text.Level>\n onChange={(newText: string) => onRename(tabKey, newText)}\n value={name}\n noWrap\n {...props}\n />\n );\n};\n"],"names":["t","state.usePurePassthrough","useSyncedRef","useCallback","createContext","useContext","jsx","Align.Space","CSS","jsxs","direction","Button.Icon","Icon","Align.Pack","Text.ComponentSizeLevels","Text.WithIcon","Text.Text","Text.Editable"],"mappings":"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"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { A as Selector, n as Dialog, H as Hover, J as Column, z as Core$1, G as componentRenderProp, K as useSelect, B as Button$1, p as m0, j as use, L as CoreDateTime, N as DateTime, E as Editable, O as Link, M as MaybeEditable, Q as Symbols, e as Text, W as WithIcon, F as edit, R as evalColor, U as formatChildren } from "./Toggle-
|
|
2
|
-
import { C as ComponentSizeLevels, L as LEVELS, j as LevelComponentSizes, k as dimensions, l as levelZ, s as specZ } from "./aggregator-
|
|
3
|
-
import { K as Keyboard } from "./Keyboard-
|
|
1
|
+
import { A as Selector, n as Dialog, H as Hover, J as Column, z as Core$1, G as componentRenderProp, K as useSelect, B as Button$1, p as m0, j as use, L as CoreDateTime, N as DateTime, E as Editable, O as Link, M as MaybeEditable, Q as Symbols, e as Text, W as WithIcon, F as edit, R as evalColor, U as formatChildren } from "./Toggle-DGLgYCOX.js";
|
|
2
|
+
import { C as ComponentSizeLevels, L as LEVELS, j as LevelComponentSizes, k as dimensions, l as levelZ, s as specZ } from "./aggregator-BgImZc4o.js";
|
|
3
|
+
import { K as Keyboard } from "./Keyboard-nDIAR7Rj.js";
|
|
4
4
|
import { j as jsxRuntimeExports } from "./jsx-runtime-mMz73N64.js";
|
|
5
5
|
import { useState, useEffect, useCallback } from "react";
|
|
6
6
|
import { P as Pack } from "./Center-hbwH7rg9.js";
|
|
7
7
|
import { C as CSS } from "./css-DoalWJF6.js";
|
|
8
|
-
import { L as List } from "./List-
|
|
8
|
+
import { L as List } from "./List-DcsWFiLT.js";
|
|
9
9
|
const DEFAULT_COLUMNS = [];
|
|
10
10
|
const Core = ({
|
|
11
11
|
data,
|
|
@@ -217,4 +217,4 @@ export {
|
|
|
217
217
|
defaultButton as d,
|
|
218
218
|
external as e
|
|
219
219
|
};
|
|
220
|
-
//# sourceMappingURL=external-
|
|
220
|
+
//# sourceMappingURL=external-B3ly2-jy.js.map
|