@planningcenter/tapestry 3.0.0-rc.8 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/Banner/Banner.js +1 -1
- package/dist/components/button/BaseButton.d.ts +1 -1
- package/dist/components/button/BaseButton.d.ts.map +1 -1
- package/dist/components/button/BaseButton.js +5 -4
- package/dist/components/button/BaseButton.js.map +1 -1
- package/dist/components/button/DropdownButton.d.ts +1 -0
- package/dist/components/button/DropdownButton.d.ts.map +1 -1
- package/dist/components/button/DropdownButton.js.map +1 -1
- package/dist/components/button/IconButton.js +1 -1
- package/dist/components/button/IconButton.js.map +1 -1
- package/dist/components/button/PageHeaderActionsDropdownButton.d.ts +1 -0
- package/dist/components/button/PageHeaderActionsDropdownButton.d.ts.map +1 -1
- package/dist/components/button/PageHeaderActionsDropdownButton.js +1 -1
- package/dist/components/button/PageHeaderActionsDropdownButton.js.map +1 -1
- package/dist/components/button/index.d.ts +5 -0
- package/dist/components/button/index.d.ts.map +1 -1
- package/dist/components/checkbox/Checkbox.d.ts +27 -7
- package/dist/components/checkbox/Checkbox.d.ts.map +1 -1
- package/dist/components/checkbox/Checkbox.js +19 -16
- package/dist/components/checkbox/Checkbox.js.map +1 -1
- package/dist/components/checkbox/index.d.ts +1 -1
- package/dist/components/checkbox/index.d.ts.map +1 -1
- package/dist/components/input/Input.d.ts +44 -0
- package/dist/components/input/Input.d.ts.map +1 -0
- package/dist/components/input/Input.js +44 -0
- package/dist/components/input/Input.js.map +1 -0
- package/dist/components/input/index.d.ts +4 -0
- package/dist/components/input/index.d.ts.map +1 -0
- package/dist/components/internal/index.d.ts.map +1 -1
- package/dist/components/link/BaseLink.d.ts +1 -1
- package/dist/components/link/BaseLink.d.ts.map +1 -1
- package/dist/components/link/BaseLink.js +6 -6
- package/dist/components/link/BaseLink.js.map +1 -1
- package/dist/components/link/index.d.ts +2 -0
- package/dist/components/link/index.d.ts.map +1 -1
- package/dist/components/page-header/PageHeader.d.ts.map +1 -1
- package/dist/components/page-header/PageHeader.js +39 -7
- package/dist/components/page-header/PageHeader.js.map +1 -1
- package/dist/components/page-header/index.js +1 -1
- package/dist/components/radio/Radio.d.ts +42 -0
- package/dist/components/radio/Radio.d.ts.map +1 -0
- package/dist/components/radio/Radio.js +32 -0
- package/dist/components/radio/Radio.js.map +1 -0
- package/dist/components/radio/index.d.ts +4 -0
- package/dist/components/radio/index.d.ts.map +1 -0
- package/dist/components/radio-group/RadioGroup.d.ts +23 -0
- package/dist/components/radio-group/RadioGroup.d.ts.map +1 -0
- package/dist/components/radio-group/RadioGroup.js +29 -0
- package/dist/components/radio-group/RadioGroup.js.map +1 -0
- package/dist/components/radio-group/index.d.ts +4 -0
- package/dist/components/radio-group/index.d.ts.map +1 -0
- package/dist/components/sidenav/index.js +1 -1
- package/dist/components/textarea/TextArea.d.ts +38 -0
- package/dist/components/textarea/TextArea.d.ts.map +1 -0
- package/dist/components/textarea/TextArea.js +27 -0
- package/dist/components/textarea/TextArea.js.map +1 -0
- package/dist/components/textarea/index.d.ts +4 -0
- package/dist/components/textarea/index.d.ts.map +1 -0
- package/dist/components/toggle-switch/ToggleSwitch.d.ts +50 -0
- package/dist/components/toggle-switch/ToggleSwitch.d.ts.map +1 -0
- package/dist/components/toggle-switch/ToggleSwitch.js +31 -0
- package/dist/components/toggle-switch/ToggleSwitch.js.map +1 -0
- package/dist/components/toggle-switch/index.d.ts +4 -0
- package/dist/components/toggle-switch/index.d.ts.map +1 -0
- package/dist/index.css +704 -221
- package/dist/index.css.map +1 -1
- package/dist/index.d.ts +6 -12
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/jsTokens.d.ts +1 -1
- package/dist/jsTokens.d.ts.map +1 -1
- package/dist/jsTokens.js +1 -1
- package/dist/jsTokens.js.map +1 -1
- package/dist/print-no-media-queries.css +2 -2
- package/dist/print.css +2 -2
- package/dist/reactRender.css +2483 -1796
- package/dist/reactRender.css.map +1 -1
- package/dist/reactRenderLegacy.css +2483 -1796
- package/dist/reactRenderLegacy.css.map +1 -1
- package/dist/tapestry-render/dist/{buildComponent-D0S78fIn.js → buildComponent-Dr2UOgFa.js} +20 -20
- package/dist/tapestry-render/dist/{buildComponent-D0S78fIn.js.map → buildComponent-Dr2UOgFa.js.map} +1 -1
- package/dist/tapestry-render/dist/index.js +1 -1
- package/dist/tapestry-render/dist/index.js.map +1 -1
- package/dist/tapestry-render/dist/legacy.js +6 -6
- package/dist/tapestry-render/dist/legacy.js.map +1 -1
- package/dist/tapestry-reset.css +186 -0
- package/dist/tapestry-reset.css.map +1 -0
- package/dist/tapestry-reset.js +3 -0
- package/dist/tapestry-wc/dist/components/{p-5-Cvrlgk.js → p-BF5btZ2U.js} +2 -2
- package/dist/tapestry-wc/dist/components/{p-5-Cvrlgk.js.map → p-BF5btZ2U.js.map} +1 -1
- package/dist/tapestry-wc/dist/components/{p-74Cc2nEh.js → p-BO35mzk2.js} +2 -2
- package/dist/tapestry-wc/dist/components/{p-74Cc2nEh.js.map → p-BO35mzk2.js.map} +1 -1
- package/dist/tapestry-wc/dist/components/{p-D1rzJeWl.js → p-Bdkqq_Bn.js} +3 -3
- package/dist/tapestry-wc/dist/components/{p-D1rzJeWl.js.map → p-Bdkqq_Bn.js.map} +1 -1
- package/dist/tapestry-wc/dist/components/{p-D0G2xpOq.js → p-DhuhrZb1.js} +3 -3
- package/dist/tapestry-wc/dist/components/{p-D0G2xpOq.js.map → p-DhuhrZb1.js.map} +1 -1
- package/dist/tapestry-wc/dist/components/{p-DmP02I4b.js → p-gTgcP9lI.js} +3 -3
- package/dist/tapestry-wc/dist/components/{p-DmP02I4b.js.map → p-gTgcP9lI.js.map} +1 -1
- package/dist/tapestry-wc/dist/components/tds-page-header-nav.js +2 -2
- package/dist/tapestry-wc/dist/components/tds-page-header-nav.js.map +1 -1
- package/dist/tapestry-wc/dist/components/tds-page-header.js +5 -5
- package/dist/tapestry-wc/dist/components/tds-page-header.js.map +1 -1
- package/dist/tapestry-wc/dist/components/tds-sidenav-item.js +3 -3
- package/dist/tapestry-wc/dist/components/tds-sidenav-item.js.map +1 -1
- package/dist/tapestry-wc/dist/components/tds-sidenav-responsive-header.js +2 -2
- package/dist/tapestry-wc/dist/components/tds-sidenav-responsive-header.js.map +1 -1
- package/dist/tapestry-wc/dist/components/tds-sidenav-section.js +3 -3
- package/dist/tapestry-wc/dist/components/tds-sidenav-section.js.map +1 -1
- package/dist/tapestry-wc/dist/components/tds-sidenav.js +6 -6
- package/dist/tapestry-wc/dist/components/tds-sidenav.js.map +1 -1
- package/dist/tokens/tokens-deprecated.json +13 -166
- package/dist/tokens-dark.css +6 -4
- package/dist/tokens-dark.css.map +1 -1
- package/dist/tokens-dark.js +2 -0
- package/dist/tokens-deprecated.css +4 -102
- package/dist/tokens-deprecated.css.map +1 -1
- package/dist/tokens-deprecated.js +2 -0
- package/dist/tokens.css +35 -17
- package/dist/tokens.css.map +1 -1
- package/dist/tokens.js +2 -0
- package/dist/unstable.css +1149 -462
- package/dist/unstable.css.map +1 -1
- package/dist/unstable.d.ts +3 -3
- package/dist/unstable.d.ts.map +1 -1
- package/dist/unstable.js +10 -2
- package/dist/unstable.js.map +1 -1
- package/dist/utilities/Icon.d.ts.map +1 -1
- package/dist/utilities/Icon.js +12 -19
- package/dist/utilities/Icon.js.map +1 -1
- package/dist/utilities/useId.d.ts +2 -0
- package/dist/utilities/useId.d.ts.map +1 -0
- package/dist/utilities/useId.js +14 -0
- package/dist/utilities/useId.js.map +1 -0
- package/package.json +23 -19
- package/react-types/index.d.ts +8 -8
- package/react-types/popover.d.ts +7 -0
- package/dist/tokens/ts/react-native-tokens.d.ts +0 -1765
- package/dist/tokens/ts/react-native-tokens.d.ts.map +0 -1
- package/dist/tokens/ts/react-native-tokens.js +0 -455
- package/dist/tokens/ts/react-native-tokens.js.map +0 -1
- package/dist/tokens/ts/tokens.d.ts +0 -453
- package/dist/tokens/ts/tokens.d.ts.map +0 -1
- package/dist/tokens/ts/tokens.js +0 -455
- package/dist/tokens/ts/tokens.js.map +0 -1
- package/dist/tokens-deprecated.d.ts +0 -4
- package/dist/tokens-deprecated.d.ts.map +0 -1
- package/dist/tokens.d.ts +0 -4
- package/dist/tokens.d.ts.map +0 -1
|
@@ -1,12 +1,44 @@
|
|
|
1
|
-
import
|
|
1
|
+
import classNames from 'classnames';
|
|
2
|
+
import React, { useRef, useEffect } from 'react';
|
|
2
3
|
|
|
3
4
|
function PageHeader({ children, actions, navigation, className, inactive = false, profile = false, }) {
|
|
4
|
-
const
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
5
|
+
const hasMultiActions = actions
|
|
6
|
+
? React.isValidElement(actions) && actions.type === React.Fragment
|
|
7
|
+
? React.Children.count(actions.props.children) > 1
|
|
8
|
+
: React.Children.count(actions) > 1
|
|
9
|
+
: false;
|
|
10
|
+
const nav = useScrollToSelected(navigation);
|
|
11
|
+
return (React.createElement("header", { className: classNames("tds-page-header", className, {
|
|
12
|
+
"has-multi-actions": hasMultiActions,
|
|
13
|
+
"has-nav": !!navigation,
|
|
14
|
+
inactive,
|
|
15
|
+
"tds-page-header--profile": profile,
|
|
16
|
+
}) },
|
|
17
|
+
React.createElement("div", { className: "tds-page-header__title-bar" },
|
|
18
|
+
React.createElement("div", { className: "tds-page-header__primary" }, children),
|
|
19
|
+
actions && (React.createElement("div", { className: "tds-page-header__actions tds-no-print" }, actions))),
|
|
20
|
+
navigation && (React.createElement("nav", { ref: nav, className: "tds-page-header__nav tds-no-print" }, navigation))));
|
|
21
|
+
}
|
|
22
|
+
function useScrollToSelected(navigation) {
|
|
23
|
+
const nav = useRef(null);
|
|
24
|
+
useEffect(() => {
|
|
25
|
+
if (!nav.current)
|
|
26
|
+
return;
|
|
27
|
+
const ulElement = nav.current.querySelector("ul");
|
|
28
|
+
if (!ulElement)
|
|
29
|
+
return;
|
|
30
|
+
const selectedItem = ulElement.querySelector(".selected");
|
|
31
|
+
if (selectedItem) {
|
|
32
|
+
const bounds = selectedItem.getBoundingClientRect();
|
|
33
|
+
const ulBounds = ulElement.getBoundingClientRect();
|
|
34
|
+
if (bounds.right > ulBounds.right || bounds.left < ulBounds.left) {
|
|
35
|
+
ulElement.scrollTo({
|
|
36
|
+
left: ulElement.scrollLeft + bounds.left - ulBounds.left,
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}, [navigation]);
|
|
41
|
+
return nav;
|
|
10
42
|
}
|
|
11
43
|
|
|
12
44
|
export { PageHeader };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PageHeader.js","sources":["../../../src/components/page-header/PageHeader.tsx"],"sourcesContent":["import React from \"react\"\n\nexport function PageHeader({\n children,\n actions,\n navigation,\n className,\n inactive = false,\n profile = false,\n}: {\n /**\n * Additional content (typically actions) that complements the primary slot.\n */\n actions?: React.ReactNode\n /**\n * The main content of the page header. It will be displayed prominently. For simple pages, providing a h1 will suffice.\n */\n children: React.ReactNode\n className?: string\n /**\n * Indicates whether the page header is inactive or not. When set to true, the page header is visually inactive\n */\n inactive?: boolean\n /**\n * Navigation for the page. Should contain an unstyled unordered list (ul)\n * that contains a list of links or buttons.\n */\n navigation?: React.ReactNode\n /**\n * Indicates whether the page header is a profile page header or not. When set to true, the page header will visually center the title and actions at mobile breakpoints.\n */\n profile?: boolean\n}) {\n const
|
|
1
|
+
{"version":3,"file":"PageHeader.js","sources":["../../../src/components/page-header/PageHeader.tsx"],"sourcesContent":["import classNames from \"classnames\"\nimport React, { useEffect, useRef } from \"react\"\n\nexport function PageHeader({\n children,\n actions,\n navigation,\n className,\n inactive = false,\n profile = false,\n}: {\n /**\n * Additional content (typically actions) that complements the primary slot.\n */\n actions?: React.ReactNode\n /**\n * The main content of the page header. It will be displayed prominently. For simple pages, providing a h1 will suffice.\n */\n children: React.ReactNode\n className?: string\n /**\n * Indicates whether the page header is inactive or not. When set to true, the page header is visually inactive\n */\n inactive?: boolean\n /**\n * Navigation for the page. Should contain an unstyled unordered list (ul)\n * that contains a list of links or buttons.\n */\n navigation?: React.ReactNode\n /**\n * Indicates whether the page header is a profile page header or not. When set to true, the page header will visually center the title and actions at mobile breakpoints.\n */\n profile?: boolean\n}) {\n const hasMultiActions = actions\n ? React.isValidElement(actions) && actions.type === React.Fragment\n ? React.Children.count(actions.props.children) > 1\n : React.Children.count(actions) > 1\n : false\n\n const nav = useScrollToSelected(navigation)\n\n return (\n <header\n className={classNames(\"tds-page-header\", className, {\n \"has-multi-actions\": hasMultiActions,\n \"has-nav\": !!navigation,\n inactive,\n \"tds-page-header--profile\": profile,\n })}\n >\n <div className=\"tds-page-header__title-bar\">\n <div className=\"tds-page-header__primary\">{children}</div>\n {actions && (\n <div className=\"tds-page-header__actions tds-no-print\">{actions}</div>\n )}\n </div>\n {navigation && (\n <nav ref={nav} className=\"tds-page-header__nav tds-no-print\">\n {navigation}\n </nav>\n )}\n </header>\n )\n}\n\nfunction useScrollToSelected(navigation: React.ReactNode) {\n const nav = useRef<HTMLElement>(null)\n useEffect(() => {\n if (!nav.current) return\n const ulElement = nav.current.querySelector(\"ul\")\n if (!ulElement) return\n const selectedItem = ulElement.querySelector(\".selected\")\n if (selectedItem) {\n const bounds = selectedItem.getBoundingClientRect()\n const ulBounds = ulElement.getBoundingClientRect()\n if (bounds.right > ulBounds.right || bounds.left < ulBounds.left) {\n ulElement.scrollTo({\n left: ulElement.scrollLeft + bounds.left - ulBounds.left,\n })\n }\n }\n }, [navigation])\n return nav\n}\n"],"names":[],"mappings":";;;SAGgB,UAAU,CAAC,EACzB,QAAQ,EACR,OAAO,EACP,UAAU,EACV,SAAS,EACT,QAAQ,GAAG,KAAK,EAChB,OAAO,GAAG,KAAK,GAwBhB,EAAA;IACC,MAAM,eAAe,GAAG;AACtB,UAAE,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,CAAC;AACxD,cAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG;cAC/C,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG;UAClC,KAAK;AAET,IAAA,MAAM,GAAG,GAAG,mBAAmB,CAAC,UAAU,CAAC;IAE3C,QACE,gCACE,SAAS,EAAE,UAAU,CAAC,iBAAiB,EAAE,SAAS,EAAE;AAClD,YAAA,mBAAmB,EAAE,eAAe;YACpC,SAAS,EAAE,CAAC,CAAC,UAAU;YACvB,QAAQ;AACR,YAAA,0BAA0B,EAAE,OAAO;SACpC,CAAC,EAAA;QAEF,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,4BAA4B,EAAA;AACzC,YAAA,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,0BAA0B,EAAA,EAAE,QAAQ,CAAO;YACzD,OAAO,KACN,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,uCAAuC,EAAA,EAAE,OAAO,CAAO,CACvE,CACG;AACL,QAAA,UAAU,KACT,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,GAAG,EAAE,GAAG,EAAE,SAAS,EAAC,mCAAmC,IACzD,UAAU,CACP,CACP,CACM;AAEb;AAEA,SAAS,mBAAmB,CAAC,UAA2B,EAAA;AACtD,IAAA,MAAM,GAAG,GAAG,MAAM,CAAc,IAAI,CAAC;IACrC,SAAS,CAAC,MAAK;QACb,IAAI,CAAC,GAAG,CAAC,OAAO;YAAE;QAClB,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC;AACjD,QAAA,IAAI,CAAC,SAAS;YAAE;QAChB,MAAM,YAAY,GAAG,SAAS,CAAC,aAAa,CAAC,WAAW,CAAC;QACzD,IAAI,YAAY,EAAE;AAChB,YAAA,MAAM,MAAM,GAAG,YAAY,CAAC,qBAAqB,EAAE;AACnD,YAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,qBAAqB,EAAE;AAClD,YAAA,IAAI,MAAM,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,EAAE;gBAChE,SAAS,CAAC,QAAQ,CAAC;oBACjB,IAAI,EAAE,SAAS,CAAC,UAAU,GAAG,MAAM,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI;AACzD,iBAAA,CAAC;YACJ;QACF;AACF,IAAA,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;AAChB,IAAA,OAAO,GAAG;AACZ;;;;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import '../../tapestry-wc/dist/components/p-
|
|
1
|
+
import '../../tapestry-wc/dist/components/p-BO35mzk2.js';
|
|
2
2
|
import { defineCustomElement } from '../../tapestry-wc/dist/components/tds-page-header.js';
|
|
3
3
|
import { defineCustomElement as defineCustomElement$1 } from '../../tapestry-wc/dist/components/tds-page-header-nav.js';
|
|
4
4
|
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import "./index.css";
|
|
2
|
+
import React, { InputHTMLAttributes } from "react";
|
|
3
|
+
export type RadioSize = "md" | "sm";
|
|
4
|
+
interface RadioBaseProps {
|
|
5
|
+
description?: string;
|
|
6
|
+
name: string;
|
|
7
|
+
size?: RadioSize;
|
|
8
|
+
}
|
|
9
|
+
interface RadioWithLabel extends RadioBaseProps {
|
|
10
|
+
"aria-labelledby"?: never;
|
|
11
|
+
/**
|
|
12
|
+
* Label content for the radio. When using non-string content
|
|
13
|
+
* (e.g. JSX), it must not contain interactive elements. This
|
|
14
|
+
* includes native HTML elements such as `<a>` and `<button>`, as
|
|
15
|
+
* well as Tapestry or Tapestry-React interactive components.
|
|
16
|
+
*/
|
|
17
|
+
label: React.ReactNode;
|
|
18
|
+
}
|
|
19
|
+
interface RadioWithAriaLabelledBy extends RadioBaseProps {
|
|
20
|
+
"aria-labelledby": string;
|
|
21
|
+
label?: never;
|
|
22
|
+
}
|
|
23
|
+
export type RadioProps = RadioWithLabel | RadioWithAriaLabelledBy;
|
|
24
|
+
export type RadioElementProps = Omit<InputHTMLAttributes<HTMLInputElement>, keyof RadioProps | "type"> & RadioProps;
|
|
25
|
+
/**
|
|
26
|
+
* A radio component that renders as a radio input with label.
|
|
27
|
+
* Supports various sizes.
|
|
28
|
+
* Must have a name attribute.
|
|
29
|
+
*
|
|
30
|
+
* **Required:** You must provide either:
|
|
31
|
+
* - `label` - Label content for the radio
|
|
32
|
+
* - `aria-labelledby` - ID of an external element that provides the label
|
|
33
|
+
*
|
|
34
|
+
* When using non-string content for `label` (e.g. JSX), it must not contain
|
|
35
|
+
* interactive elements. This includes native HTML elements such as `<a>` and
|
|
36
|
+
* `<button>`, as well as Tapestry or Tapestry-React interactive components.
|
|
37
|
+
*
|
|
38
|
+
* @component
|
|
39
|
+
*/
|
|
40
|
+
export declare const Radio: React.ForwardRefExoticComponent<RadioElementProps & React.RefAttributes<HTMLInputElement>>;
|
|
41
|
+
export {};
|
|
42
|
+
//# sourceMappingURL=Radio.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Radio.d.ts","sourceRoot":"","sources":["../../../src/components/radio/Radio.tsx"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAA;AAIpB,OAAO,KAAK,EAAE,EAAc,mBAAmB,EAAE,MAAM,OAAO,CAAA;AAE9D,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,IAAI,CAAA;AAEnC,UAAU,cAAc;IACtB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,SAAS,CAAA;CACjB;AAED,UAAU,cAAe,SAAQ,cAAc;IAC7C,iBAAiB,CAAC,EAAE,KAAK,CAAA;IACzB;;;;;OAKG;IACH,KAAK,EAAE,KAAK,CAAC,SAAS,CAAA;CACvB;AAED,UAAU,uBAAwB,SAAQ,cAAc;IACtD,iBAAiB,EAAE,MAAM,CAAA;IACzB,KAAK,CAAC,EAAE,KAAK,CAAA;CACd;AAED,MAAM,MAAM,UAAU,GAAG,cAAc,GAAG,uBAAuB,CAAA;AAEjE,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAClC,mBAAmB,CAAC,gBAAgB,CAAC,EACrC,MAAM,UAAU,GAAG,MAAM,CAC1B,GACC,UAAU,CAAA;AAEZ;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,KAAK,4FAuCjB,CAAA"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { useId } from '../../utilities/useId.js';
|
|
2
|
+
import classNames from 'classnames';
|
|
3
|
+
import React, { forwardRef } from 'react';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* A radio component that renders as a radio input with label.
|
|
7
|
+
* Supports various sizes.
|
|
8
|
+
* Must have a name attribute.
|
|
9
|
+
*
|
|
10
|
+
* **Required:** You must provide either:
|
|
11
|
+
* - `label` - Label content for the radio
|
|
12
|
+
* - `aria-labelledby` - ID of an external element that provides the label
|
|
13
|
+
*
|
|
14
|
+
* When using non-string content for `label` (e.g. JSX), it must not contain
|
|
15
|
+
* interactive elements. This includes native HTML elements such as `<a>` and
|
|
16
|
+
* `<button>`, as well as Tapestry or Tapestry-React interactive components.
|
|
17
|
+
*
|
|
18
|
+
* @component
|
|
19
|
+
*/
|
|
20
|
+
const Radio = forwardRef(({ className, description, id, label, size = "md", ...restProps }, ref) => {
|
|
21
|
+
const combinedClassName = classNames("tds-radio", size && size === "sm" && `tds-radio--sm`, className);
|
|
22
|
+
const stableId = useId();
|
|
23
|
+
const radioId = id || `tds-radio-${stableId}`;
|
|
24
|
+
return (React.createElement("div", { className: combinedClassName },
|
|
25
|
+
React.createElement("input", { ...restProps, "aria-describedby": description ? `${radioId}-description` : undefined, id: radioId, ref: ref, type: "radio" }),
|
|
26
|
+
label && React.createElement("label", { htmlFor: radioId }, label),
|
|
27
|
+
description && (React.createElement("p", { id: `${radioId}-description`, className: "tds-radio-description" }, description))));
|
|
28
|
+
});
|
|
29
|
+
Radio.displayName = "Radio";
|
|
30
|
+
|
|
31
|
+
export { Radio };
|
|
32
|
+
//# sourceMappingURL=Radio.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Radio.js","sources":["../../../src/components/radio/Radio.tsx"],"sourcesContent":["import \"./index.css\"\n\nimport { useId } from \"@utilities/useId\"\nimport classNames from \"classnames\"\nimport React, { forwardRef, InputHTMLAttributes } from \"react\"\n\nexport type RadioSize = \"md\" | \"sm\"\n\ninterface RadioBaseProps {\n description?: string\n name: string\n size?: RadioSize\n}\n\ninterface RadioWithLabel extends RadioBaseProps {\n \"aria-labelledby\"?: never\n /**\n * Label content for the radio. When using non-string content\n * (e.g. JSX), it must not contain interactive elements. This\n * includes native HTML elements such as `<a>` and `<button>`, as\n * well as Tapestry or Tapestry-React interactive components.\n */\n label: React.ReactNode\n}\n\ninterface RadioWithAriaLabelledBy extends RadioBaseProps {\n \"aria-labelledby\": string\n label?: never\n}\n\nexport type RadioProps = RadioWithLabel | RadioWithAriaLabelledBy\n\nexport type RadioElementProps = Omit<\n InputHTMLAttributes<HTMLInputElement>,\n keyof RadioProps | \"type\"\n> &\n RadioProps\n\n/**\n * A radio component that renders as a radio input with label.\n * Supports various sizes.\n * Must have a name attribute.\n *\n * **Required:** You must provide either:\n * - `label` - Label content for the radio\n * - `aria-labelledby` - ID of an external element that provides the label\n *\n * When using non-string content for `label` (e.g. JSX), it must not contain\n * interactive elements. This includes native HTML elements such as `<a>` and\n * `<button>`, as well as Tapestry or Tapestry-React interactive components.\n *\n * @component\n */\nexport const Radio = forwardRef<HTMLInputElement, RadioElementProps>(\n (\n {\n className,\n description,\n id,\n label,\n size = \"md\",\n ...restProps\n }: RadioElementProps,\n ref\n ) => {\n const combinedClassName = classNames(\n \"tds-radio\",\n size && size === \"sm\" && `tds-radio--sm`,\n className\n )\n\n const stableId = useId()\n const radioId = id || `tds-radio-${stableId}`\n\n return (\n <div className={combinedClassName}>\n <input\n {...restProps}\n aria-describedby={description ? `${radioId}-description` : undefined}\n id={radioId}\n ref={ref}\n type=\"radio\"\n />\n {label && <label htmlFor={radioId}>{label}</label>}\n {description && (\n <p id={`${radioId}-description`} className=\"tds-radio-description\">\n {description}\n </p>\n )}\n </div>\n )\n }\n)\n\nRadio.displayName = \"Radio\"\n"],"names":[],"mappings":";;;;AAsCA;;;;;;;;;;;;;;AAcG;AACI,MAAM,KAAK,GAAG,UAAU,CAC7B,CACE,EACE,SAAS,EACT,WAAW,EACX,EAAE,EACF,KAAK,EACL,IAAI,GAAG,IAAI,EACX,GAAG,SAAS,EACM,EACpB,GAAG,KACD;AACF,IAAA,MAAM,iBAAiB,GAAG,UAAU,CAClC,WAAW,EACX,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,CAAA,aAAA,CAAe,EACxC,SAAS,CACV;AAED,IAAA,MAAM,QAAQ,GAAG,KAAK,EAAE;AACxB,IAAA,MAAM,OAAO,GAAG,EAAE,IAAI,CAAA,UAAA,EAAa,QAAQ,EAAE;AAE7C,IAAA,QACE,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,iBAAiB,EAAA;QAC/B,KAAA,CAAA,aAAA,CAAA,OAAA,EAAA,EAAA,GACM,SAAS,EAAA,kBAAA,EACK,WAAW,GAAG,CAAA,EAAG,OAAO,CAAA,YAAA,CAAc,GAAG,SAAS,EACpE,EAAE,EAAE,OAAO,EACX,GAAG,EAAE,GAAG,EACR,IAAI,EAAC,OAAO,EAAA,CACZ;AACD,QAAA,KAAK,IAAI,KAAA,CAAA,aAAA,CAAA,OAAA,EAAA,EAAO,OAAO,EAAE,OAAO,EAAA,EAAG,KAAK,CAAS;AACjD,QAAA,WAAW,KACV,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAG,EAAE,EAAE,CAAA,EAAG,OAAO,CAAA,YAAA,CAAc,EAAE,SAAS,EAAC,uBAAuB,EAAA,EAC/D,WAAW,CACV,CACL,CACG;AAEV,CAAC;AAGH,KAAK,CAAC,WAAW,GAAG,OAAO;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/radio/index.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAA;AAEpB,YAAY,EAAE,iBAAiB,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACvE,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import "./index.css";
|
|
2
|
+
import React, { FieldsetHTMLAttributes } from "react";
|
|
3
|
+
export type RadioGroupSize = "md" | "sm";
|
|
4
|
+
export interface RadioGroupProps {
|
|
5
|
+
description?: string;
|
|
6
|
+
invalid?: boolean;
|
|
7
|
+
label: string;
|
|
8
|
+
size?: RadioGroupSize;
|
|
9
|
+
}
|
|
10
|
+
export type RadioGroupElementProps = Omit<FieldsetHTMLAttributes<HTMLFieldSetElement>, keyof RadioGroupProps> & RadioGroupProps;
|
|
11
|
+
/**
|
|
12
|
+
* A radio group component that renders as a fieldset with legend.
|
|
13
|
+
* Use to group two or more Radio components.
|
|
14
|
+
* Supports label and description text, sizes, invalid, and disabled state.
|
|
15
|
+
* Label is required and must be a string. Renders as <legend>.
|
|
16
|
+
*
|
|
17
|
+
* @component
|
|
18
|
+
*/
|
|
19
|
+
export declare const RadioGroup: {
|
|
20
|
+
({ children, className, description, invalid, label, size, ...restProps }: RadioGroupElementProps): React.JSX.Element;
|
|
21
|
+
displayName: string;
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=RadioGroup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RadioGroup.d.ts","sourceRoot":"","sources":["../../../src/components/radio-group/RadioGroup.tsx"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAA;AAKpB,OAAO,KAAK,EAAE,EAAE,sBAAsB,EAAE,MAAM,OAAO,CAAA;AAErD,MAAM,MAAM,cAAc,GAAG,IAAI,GAAG,IAAI,CAAA;AAExC,MAAM,WAAW,eAAe;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,cAAc,CAAA;CACtB;AAED,MAAM,MAAM,sBAAsB,GAAG,IAAI,CACvC,sBAAsB,CAAC,mBAAmB,CAAC,EAC3C,MAAM,eAAe,CACtB,GACC,eAAe,CAAA;AAEjB;;;;;;;GAOG;AACH,eAAO,MAAM,UAAU;+EAQpB,sBAAsB;;CAiCxB,CAAA"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import Icon from '../../utilities/Icon.js';
|
|
2
|
+
import { useId } from '../../utilities/useId.js';
|
|
3
|
+
import classNames from 'classnames';
|
|
4
|
+
import React from 'react';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* A radio group component that renders as a fieldset with legend.
|
|
8
|
+
* Use to group two or more Radio components.
|
|
9
|
+
* Supports label and description text, sizes, invalid, and disabled state.
|
|
10
|
+
* Label is required and must be a string. Renders as <legend>.
|
|
11
|
+
*
|
|
12
|
+
* @component
|
|
13
|
+
*/
|
|
14
|
+
const RadioGroup = ({ children, className, description, invalid, label, size = "md", ...restProps }) => {
|
|
15
|
+
const combinedClassName = classNames("tds-radio-group", size && size === "sm" && "tds-radio-group--sm", className);
|
|
16
|
+
const stableId = useId();
|
|
17
|
+
const displayDescription = description || (invalid ? "Please select an option" : undefined);
|
|
18
|
+
const descriptionId = `tds-radio-group-${stableId}-description`;
|
|
19
|
+
return (React.createElement("fieldset", { ...restProps, "aria-describedby": displayDescription ? descriptionId : undefined, "aria-invalid": invalid ? "true" : undefined, className: combinedClassName },
|
|
20
|
+
React.createElement("legend", null, label),
|
|
21
|
+
displayDescription && (React.createElement("p", { id: descriptionId, className: "tds-radio-group-description" },
|
|
22
|
+
React.createElement(Icon, { className: "tds-radio-group-description-invalid-icon", symbol: "general#exclamation-triangle", "aria-hidden": true }),
|
|
23
|
+
displayDescription)),
|
|
24
|
+
React.createElement("div", { className: "tds-radio-group-fields" }, children)));
|
|
25
|
+
};
|
|
26
|
+
RadioGroup.displayName = "RadioGroup";
|
|
27
|
+
|
|
28
|
+
export { RadioGroup };
|
|
29
|
+
//# sourceMappingURL=RadioGroup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RadioGroup.js","sources":["../../../src/components/radio-group/RadioGroup.tsx"],"sourcesContent":["import \"./index.css\"\n\nimport Icon from \"@utilities/Icon\"\nimport { useId } from \"@utilities/useId\"\nimport classNames from \"classnames\"\nimport React, { FieldsetHTMLAttributes } from \"react\"\n\nexport type RadioGroupSize = \"md\" | \"sm\"\n\nexport interface RadioGroupProps {\n description?: string\n invalid?: boolean\n label: string\n size?: RadioGroupSize\n}\n\nexport type RadioGroupElementProps = Omit<\n FieldsetHTMLAttributes<HTMLFieldSetElement>,\n keyof RadioGroupProps\n> &\n RadioGroupProps\n\n/**\n * A radio group component that renders as a fieldset with legend.\n * Use to group two or more Radio components.\n * Supports label and description text, sizes, invalid, and disabled state.\n * Label is required and must be a string. Renders as <legend>.\n *\n * @component\n */\nexport const RadioGroup = ({\n children,\n className,\n description,\n invalid,\n label,\n size = \"md\",\n ...restProps\n}: RadioGroupElementProps) => {\n const combinedClassName = classNames(\n \"tds-radio-group\",\n size && size === \"sm\" && \"tds-radio-group--sm\",\n className\n )\n const stableId = useId()\n\n const displayDescription =\n description || (invalid ? \"Please select an option\" : undefined)\n const descriptionId = `tds-radio-group-${stableId}-description`\n\n return (\n <fieldset\n {...restProps}\n aria-describedby={displayDescription ? descriptionId : undefined}\n aria-invalid={invalid ? \"true\" : undefined}\n className={combinedClassName}\n >\n <legend>{label}</legend>\n {displayDescription && (\n <p id={descriptionId} className=\"tds-radio-group-description\">\n <Icon\n className=\"tds-radio-group-description-invalid-icon\"\n symbol=\"general#exclamation-triangle\"\n aria-hidden\n />\n {displayDescription}\n </p>\n )}\n <div className=\"tds-radio-group-fields\">{children}</div>\n </fieldset>\n )\n}\n\nRadioGroup.displayName = \"RadioGroup\"\n"],"names":[],"mappings":";;;;;AAsBA;;;;;;;AAOG;AACI,MAAM,UAAU,GAAG,CAAC,EACzB,QAAQ,EACR,SAAS,EACT,WAAW,EACX,OAAO,EACP,KAAK,EACL,IAAI,GAAG,IAAI,EACX,GAAG,SAAS,EACW,KAAI;AAC3B,IAAA,MAAM,iBAAiB,GAAG,UAAU,CAClC,iBAAiB,EACjB,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,qBAAqB,EAC9C,SAAS,CACV;AACD,IAAA,MAAM,QAAQ,GAAG,KAAK,EAAE;AAExB,IAAA,MAAM,kBAAkB,GACtB,WAAW,KAAK,OAAO,GAAG,yBAAyB,GAAG,SAAS,CAAC;AAClE,IAAA,MAAM,aAAa,GAAG,CAAA,gBAAA,EAAmB,QAAQ,cAAc;IAE/D,QACE,KAAA,CAAA,aAAA,CAAA,UAAA,EAAA,EAAA,GACM,SAAS,EAAA,kBAAA,EACK,kBAAkB,GAAG,aAAa,GAAG,SAAS,kBAClD,OAAO,GAAG,MAAM,GAAG,SAAS,EAC1C,SAAS,EAAE,iBAAiB,EAAA;AAE5B,QAAA,KAAA,CAAA,aAAA,CAAA,QAAA,EAAA,IAAA,EAAS,KAAK,CAAU;QACvB,kBAAkB,KACjB,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAG,EAAE,EAAE,aAAa,EAAE,SAAS,EAAC,6BAA6B,EAAA;YAC3D,KAAA,CAAA,aAAA,CAAC,IAAI,IACH,SAAS,EAAC,0CAA0C,EACpD,MAAM,EAAC,8BAA8B,EAAA,aAAA,EAAA,IAAA,EAAA,CAErC;AACD,YAAA,kBAAkB,CACjB,CACL;QACD,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,wBAAwB,EAAA,EAAE,QAAQ,CAAO,CAC/C;AAEf;AAEA,UAAU,CAAC,WAAW,GAAG,YAAY;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/radio-group/index.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAA;AAEpB,YAAY,EACV,sBAAsB,EACtB,eAAe,EACf,cAAc,GACf,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import '../../tapestry-wc/dist/components/p-
|
|
1
|
+
import '../../tapestry-wc/dist/components/p-BO35mzk2.js';
|
|
2
2
|
import { defineCustomElement } from '../../tapestry-wc/dist/components/tds-sidenav.js';
|
|
3
3
|
import { defineCustomElement as defineCustomElement$1 } from '../../tapestry-wc/dist/components/tds-sidenav-item.js';
|
|
4
4
|
import { defineCustomElement as defineCustomElement$3 } from '../../tapestry-wc/dist/components/tds-sidenav-responsive-header.js';
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import "./index.css";
|
|
2
|
+
import React, { type TextareaHTMLAttributes } from "react";
|
|
3
|
+
export type TextAreaResize = "auto" | "none" | "vertical";
|
|
4
|
+
export type TextAreaSize = "lg" | "md";
|
|
5
|
+
interface TextAreaBaseProps {
|
|
6
|
+
/** Helper text displayed below the field. Styles as error text when `invalid` is true. */
|
|
7
|
+
description?: string;
|
|
8
|
+
/** If true, applies error styling to border and description. */
|
|
9
|
+
invalid?: boolean;
|
|
10
|
+
/** Controls resize behavior. Defaults to `'vertical'`. */
|
|
11
|
+
resize?: TextAreaResize;
|
|
12
|
+
/** Specifies visible height in lines. Defaults to `3`. */
|
|
13
|
+
rows?: number;
|
|
14
|
+
/** Controls spacing and font size. Defaults to `'md'`. */
|
|
15
|
+
size?: TextAreaSize;
|
|
16
|
+
}
|
|
17
|
+
interface TextAreaWithVisibleLabel extends TextAreaBaseProps {
|
|
18
|
+
/** If true, label is rendered as aria-label instead of visible label */
|
|
19
|
+
hideLabel?: false;
|
|
20
|
+
/** Label text displayed above the textarea */
|
|
21
|
+
label: React.ReactNode;
|
|
22
|
+
}
|
|
23
|
+
interface TextAreaWithHiddenLabel extends TextAreaBaseProps {
|
|
24
|
+
/** If true, label is rendered as aria-label instead of visible label */
|
|
25
|
+
hideLabel: true;
|
|
26
|
+
/** Label text used as aria-label (must be string when hidden) */
|
|
27
|
+
label: string;
|
|
28
|
+
}
|
|
29
|
+
interface TextAreaWithAriaLabelledBy extends TextAreaBaseProps {
|
|
30
|
+
"aria-labelledby": string;
|
|
31
|
+
hideLabel?: never;
|
|
32
|
+
label?: never;
|
|
33
|
+
}
|
|
34
|
+
export type TextAreaCustomProps = TextAreaWithAriaLabelledBy | TextAreaWithHiddenLabel | TextAreaWithVisibleLabel;
|
|
35
|
+
export type TextAreaProps = Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, keyof TextAreaCustomProps | "rows"> & TextAreaCustomProps;
|
|
36
|
+
export declare const TextArea: React.ForwardRefExoticComponent<TextAreaProps & React.RefAttributes<HTMLTextAreaElement>>;
|
|
37
|
+
export {};
|
|
38
|
+
//# sourceMappingURL=TextArea.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TextArea.d.ts","sourceRoot":"","sources":["../../../src/components/textarea/TextArea.tsx"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAA;AAKpB,OAAO,KAAK,EAAE,EAAc,KAAK,sBAAsB,EAAE,MAAM,OAAO,CAAA;AAEtE,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,CAAA;AAEzD,MAAM,MAAM,YAAY,GAAG,IAAI,GAAG,IAAI,CAAA;AAEtC,UAAU,iBAAiB;IACzB,0FAA0F;IAC1F,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,gEAAgE;IAChE,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,0DAA0D;IAC1D,MAAM,CAAC,EAAE,cAAc,CAAA;IACvB,0DAA0D;IAC1D,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,0DAA0D;IAC1D,IAAI,CAAC,EAAE,YAAY,CAAA;CACpB;AAED,UAAU,wBAAyB,SAAQ,iBAAiB;IAC1D,wEAAwE;IACxE,SAAS,CAAC,EAAE,KAAK,CAAA;IACjB,8CAA8C;IAC9C,KAAK,EAAE,KAAK,CAAC,SAAS,CAAA;CACvB;AAED,UAAU,uBAAwB,SAAQ,iBAAiB;IACzD,wEAAwE;IACxE,SAAS,EAAE,IAAI,CAAA;IACf,iEAAiE;IACjE,KAAK,EAAE,MAAM,CAAA;CACd;AAED,UAAU,0BAA2B,SAAQ,iBAAiB;IAC5D,iBAAiB,EAAE,MAAM,CAAA;IACzB,SAAS,CAAC,EAAE,KAAK,CAAA;IACjB,KAAK,CAAC,EAAE,KAAK,CAAA;CACd;AAED,MAAM,MAAM,mBAAmB,GAC3B,0BAA0B,GAC1B,uBAAuB,GACvB,wBAAwB,CAAA;AAE5B,MAAM,MAAM,aAAa,GAAG,IAAI,CAC9B,sBAAsB,CAAC,mBAAmB,CAAC,EAC3C,MAAM,mBAAmB,GAAG,MAAM,CACnC,GACC,mBAAmB,CAAA;AAErB,eAAO,MAAM,QAAQ,2FA4DpB,CAAA"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import Icon from '../../utilities/Icon.js';
|
|
2
|
+
import { useId } from '../../utilities/useId.js';
|
|
3
|
+
import classNames from 'classnames';
|
|
4
|
+
import React, { forwardRef } from 'react';
|
|
5
|
+
|
|
6
|
+
const TextArea = forwardRef(function TextArea({ "aria-label": ariaLabel, className, description, hideLabel, id, invalid, label, resize = "vertical", rows = 3, size = "md", ...restProps }, ref) {
|
|
7
|
+
const combinedClassName = classNames("tds-textarea", {
|
|
8
|
+
"tds-textarea--invalid": invalid,
|
|
9
|
+
"tds-textarea--lg": size === "lg",
|
|
10
|
+
"tds-textarea--resize-auto": resize === "auto",
|
|
11
|
+
"tds-textarea--resize-none": resize === "none",
|
|
12
|
+
"tds-textarea--resize-vertical": resize === "vertical",
|
|
13
|
+
}, className);
|
|
14
|
+
const stableId = useId();
|
|
15
|
+
const textareaId = id || `tds-textarea-${stableId}`;
|
|
16
|
+
const descriptionId = description ? `${textareaId}-description` : undefined;
|
|
17
|
+
return (React.createElement("div", { className: combinedClassName },
|
|
18
|
+
!hideLabel && label ? (React.createElement("label", { htmlFor: textareaId }, label)) : null,
|
|
19
|
+
React.createElement("textarea", { ...restProps, "aria-describedby": descriptionId, "aria-invalid": invalid || undefined, "aria-label": hideLabel ? ariaLabel || label : ariaLabel, id: textareaId, ref: ref, rows: rows }),
|
|
20
|
+
description && (React.createElement("p", { className: "tds-textarea-description", id: descriptionId },
|
|
21
|
+
React.createElement(Icon, { "aria-hidden": true, className: "tds-textarea-description-invalid-icon", symbol: "general#exclamation-triangle" }),
|
|
22
|
+
description))));
|
|
23
|
+
});
|
|
24
|
+
TextArea.displayName = "TextArea";
|
|
25
|
+
|
|
26
|
+
export { TextArea };
|
|
27
|
+
//# sourceMappingURL=TextArea.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TextArea.js","sources":["../../../src/components/textarea/TextArea.tsx"],"sourcesContent":["import \"./index.css\"\n\nimport Icon from \"@utilities/Icon\"\nimport { useId } from \"@utilities/useId\"\nimport classNames from \"classnames\"\nimport React, { forwardRef, type TextareaHTMLAttributes } from \"react\"\n\nexport type TextAreaResize = \"auto\" | \"none\" | \"vertical\"\n\nexport type TextAreaSize = \"lg\" | \"md\"\n\ninterface TextAreaBaseProps {\n /** Helper text displayed below the field. Styles as error text when `invalid` is true. */\n description?: string\n /** If true, applies error styling to border and description. */\n invalid?: boolean\n /** Controls resize behavior. Defaults to `'vertical'`. */\n resize?: TextAreaResize\n /** Specifies visible height in lines. Defaults to `3`. */\n rows?: number\n /** Controls spacing and font size. Defaults to `'md'`. */\n size?: TextAreaSize\n}\n\ninterface TextAreaWithVisibleLabel extends TextAreaBaseProps {\n /** If true, label is rendered as aria-label instead of visible label */\n hideLabel?: false\n /** Label text displayed above the textarea */\n label: React.ReactNode\n}\n\ninterface TextAreaWithHiddenLabel extends TextAreaBaseProps {\n /** If true, label is rendered as aria-label instead of visible label */\n hideLabel: true\n /** Label text used as aria-label (must be string when hidden) */\n label: string\n}\n\ninterface TextAreaWithAriaLabelledBy extends TextAreaBaseProps {\n \"aria-labelledby\": string\n hideLabel?: never\n label?: never\n}\n\nexport type TextAreaCustomProps =\n | TextAreaWithAriaLabelledBy\n | TextAreaWithHiddenLabel\n | TextAreaWithVisibleLabel\n\nexport type TextAreaProps = Omit<\n TextareaHTMLAttributes<HTMLTextAreaElement>,\n keyof TextAreaCustomProps | \"rows\"\n> &\n TextAreaCustomProps\n\nexport const TextArea = forwardRef<HTMLTextAreaElement, TextAreaProps>(\n function TextArea(\n {\n \"aria-label\": ariaLabel,\n className,\n description,\n hideLabel,\n id,\n invalid,\n label,\n resize = \"vertical\",\n rows = 3,\n size = \"md\",\n ...restProps\n }: TextAreaProps,\n ref\n ) {\n const combinedClassName = classNames(\n \"tds-textarea\",\n {\n \"tds-textarea--invalid\": invalid,\n \"tds-textarea--lg\": size === \"lg\",\n \"tds-textarea--resize-auto\": resize === \"auto\",\n \"tds-textarea--resize-none\": resize === \"none\",\n \"tds-textarea--resize-vertical\": resize === \"vertical\",\n },\n className\n )\n\n const stableId = useId()\n const textareaId = id || `tds-textarea-${stableId}`\n const descriptionId = description ? `${textareaId}-description` : undefined\n\n return (\n <div className={combinedClassName}>\n {!hideLabel && label ? (\n <label htmlFor={textareaId}>{label}</label>\n ) : null}\n <textarea\n {...restProps}\n aria-describedby={descriptionId}\n aria-invalid={invalid || undefined}\n aria-label={hideLabel ? ariaLabel || (label as string) : ariaLabel}\n id={textareaId}\n ref={ref}\n rows={rows}\n />\n {description && (\n <p className=\"tds-textarea-description\" id={descriptionId}>\n <Icon\n aria-hidden\n className=\"tds-textarea-description-invalid-icon\"\n symbol=\"general#exclamation-triangle\"\n />\n {description}\n </p>\n )}\n </div>\n )\n }\n)\n\nTextArea.displayName = \"TextArea\"\n"],"names":[],"mappings":";;;;;AAuDO,MAAM,QAAQ,GAAG,UAAU,CAChC,SAAS,QAAQ,CACf,EACE,YAAY,EAAE,SAAS,EACvB,SAAS,EACT,WAAW,EACX,SAAS,EACT,EAAE,EACF,OAAO,EACP,KAAK,EACL,MAAM,GAAG,UAAU,EACnB,IAAI,GAAG,CAAC,EACR,IAAI,GAAG,IAAI,EACX,GAAG,SAAS,EACE,EAChB,GAAG,EAAA;AAEH,IAAA,MAAM,iBAAiB,GAAG,UAAU,CAClC,cAAc,EACd;AACE,QAAA,uBAAuB,EAAE,OAAO;QAChC,kBAAkB,EAAE,IAAI,KAAK,IAAI;QACjC,2BAA2B,EAAE,MAAM,KAAK,MAAM;QAC9C,2BAA2B,EAAE,MAAM,KAAK,MAAM;QAC9C,+BAA+B,EAAE,MAAM,KAAK,UAAU;KACvD,EACD,SAAS,CACV;AAED,IAAA,MAAM,QAAQ,GAAG,KAAK,EAAE;AACxB,IAAA,MAAM,UAAU,GAAG,EAAE,IAAI,CAAA,aAAA,EAAgB,QAAQ,EAAE;AACnD,IAAA,MAAM,aAAa,GAAG,WAAW,GAAG,CAAA,EAAG,UAAU,CAAA,YAAA,CAAc,GAAG,SAAS;AAE3E,IAAA,QACE,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,iBAAiB,EAAA;AAC9B,QAAA,CAAC,SAAS,IAAI,KAAK,IAClB,KAAA,CAAA,aAAA,CAAA,OAAA,EAAA,EAAO,OAAO,EAAE,UAAU,IAAG,KAAK,CAAS,IACzC,IAAI;AACR,QAAA,KAAA,CAAA,aAAA,CAAA,UAAA,EAAA,EAAA,GACM,SAAS,EAAA,kBAAA,EACK,aAAa,EAAA,cAAA,EACjB,OAAO,IAAI,SAAS,EAAA,YAAA,EACtB,SAAS,GAAG,SAAS,IAAK,KAAgB,GAAG,SAAS,EAClE,EAAE,EAAE,UAAU,EACd,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,IAAI,EAAA,CACV;QACD,WAAW,KACV,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,0BAA0B,EAAC,EAAE,EAAE,aAAa,EAAA;YACvD,KAAA,CAAA,aAAA,CAAC,IAAI,yBAEH,SAAS,EAAC,uCAAuC,EACjD,MAAM,EAAC,8BAA8B,EAAA,CACrC;AACD,YAAA,WAAW,CACV,CACL,CACG;AAEV,CAAC;AAGH,QAAQ,CAAC,WAAW,GAAG,UAAU;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/textarea/index.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAA;AAEpB,YAAY,EACV,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,YAAY,GACb,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import "./index.css";
|
|
2
|
+
import React, { InputHTMLAttributes } from "react";
|
|
3
|
+
export type ToggleSwitchSize = "md" | "sm";
|
|
4
|
+
interface ToggleSwitchBaseProps {
|
|
5
|
+
"aria-invalid"?: never;
|
|
6
|
+
"aria-label"?: never;
|
|
7
|
+
"aria-required"?: never;
|
|
8
|
+
description?: string;
|
|
9
|
+
required?: never;
|
|
10
|
+
size?: ToggleSwitchSize;
|
|
11
|
+
}
|
|
12
|
+
interface ToggleSwitchWithVisibleLabel extends ToggleSwitchBaseProps {
|
|
13
|
+
"aria-labelledby"?: never;
|
|
14
|
+
hideLabel?: false;
|
|
15
|
+
/**
|
|
16
|
+
* Label content for the toggle switch. When using non-string content
|
|
17
|
+
* (e.g. JSX), it must not contain interactive elements. This
|
|
18
|
+
* includes native HTML elements such as `<a>` and `<button>`, as
|
|
19
|
+
* well as Tapestry or Tapestry-React interactive components.
|
|
20
|
+
*/
|
|
21
|
+
label: React.ReactNode;
|
|
22
|
+
}
|
|
23
|
+
interface ToggleSwitchWithHiddenLabel extends ToggleSwitchBaseProps {
|
|
24
|
+
"aria-labelledby"?: never;
|
|
25
|
+
hideLabel: true;
|
|
26
|
+
/** Label text for the toggle switch, used as an accessible `aria-label`. */
|
|
27
|
+
label: string;
|
|
28
|
+
}
|
|
29
|
+
interface ToggleSwitchWithAriaLabelledBy extends ToggleSwitchBaseProps {
|
|
30
|
+
"aria-labelledby": string;
|
|
31
|
+
hideLabel?: never;
|
|
32
|
+
/** Not available when `aria-labelledby` is provided. */
|
|
33
|
+
label?: never;
|
|
34
|
+
}
|
|
35
|
+
export type ToggleSwitchProps = ToggleSwitchWithVisibleLabel | ToggleSwitchWithHiddenLabel | ToggleSwitchWithAriaLabelledBy;
|
|
36
|
+
export type ToggleSwitchElementProps = Omit<InputHTMLAttributes<HTMLInputElement>, keyof ToggleSwitchProps | "type" | "required" | "aria-required"> & ToggleSwitchProps;
|
|
37
|
+
/**
|
|
38
|
+
* A toggle switch component that renders as a checkbox input styled as a switch.
|
|
39
|
+
*
|
|
40
|
+
* **Required:** You must provide either:
|
|
41
|
+
* - `label` - Label content for the switch (must be a string when `hideLabel` is true)
|
|
42
|
+
* - `aria-labelledby` - ID of an external element that provides the label
|
|
43
|
+
*
|
|
44
|
+
* When using non-string content for `label` (e.g. JSX), it must not contain
|
|
45
|
+
* interactive elements. This includes native HTML elements such as `<a>` and
|
|
46
|
+
* `<button>`, as well as Tapestry or Tapestry-React interactive components.
|
|
47
|
+
*/
|
|
48
|
+
export declare const ToggleSwitch: React.ForwardRefExoticComponent<ToggleSwitchElementProps & React.RefAttributes<HTMLInputElement>>;
|
|
49
|
+
export {};
|
|
50
|
+
//# sourceMappingURL=ToggleSwitch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ToggleSwitch.d.ts","sourceRoot":"","sources":["../../../src/components/toggle-switch/ToggleSwitch.tsx"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAA;AAIpB,OAAO,KAAK,EAAE,EAAc,mBAAmB,EAAE,MAAM,OAAO,CAAA;AAE9D,MAAM,MAAM,gBAAgB,GAAG,IAAI,GAAG,IAAI,CAAA;AAE1C,UAAU,qBAAqB;IAC7B,cAAc,CAAC,EAAE,KAAK,CAAA;IACtB,YAAY,CAAC,EAAE,KAAK,CAAA;IACpB,eAAe,CAAC,EAAE,KAAK,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,KAAK,CAAA;IAChB,IAAI,CAAC,EAAE,gBAAgB,CAAA;CACxB;AAED,UAAU,4BAA6B,SAAQ,qBAAqB;IAClE,iBAAiB,CAAC,EAAE,KAAK,CAAA;IACzB,SAAS,CAAC,EAAE,KAAK,CAAA;IACjB;;;;;OAKG;IACH,KAAK,EAAE,KAAK,CAAC,SAAS,CAAA;CACvB;AAED,UAAU,2BAA4B,SAAQ,qBAAqB;IACjE,iBAAiB,CAAC,EAAE,KAAK,CAAA;IACzB,SAAS,EAAE,IAAI,CAAA;IACf,4EAA4E;IAC5E,KAAK,EAAE,MAAM,CAAA;CACd;AAED,UAAU,8BAA+B,SAAQ,qBAAqB;IACpE,iBAAiB,EAAE,MAAM,CAAA;IACzB,SAAS,CAAC,EAAE,KAAK,CAAA;IACjB,wDAAwD;IACxD,KAAK,CAAC,EAAE,KAAK,CAAA;CACd;AAED,MAAM,MAAM,iBAAiB,GACzB,4BAA4B,GAC5B,2BAA2B,GAC3B,8BAA8B,CAAA;AAElC,MAAM,MAAM,wBAAwB,GAAG,IAAI,CACzC,mBAAmB,CAAC,gBAAgB,CAAC,EACrC,MAAM,iBAAiB,GAAG,MAAM,GAAG,UAAU,GAAG,eAAe,CAChE,GACC,iBAAiB,CAAA;AAEnB;;;;;;;;;;GAUG;AACH,eAAO,MAAM,YAAY,mGA0DxB,CAAA"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { useId } from '../../utilities/useId.js';
|
|
2
|
+
import classNames from 'classnames';
|
|
3
|
+
import React, { forwardRef } from 'react';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* A toggle switch component that renders as a checkbox input styled as a switch.
|
|
7
|
+
*
|
|
8
|
+
* **Required:** You must provide either:
|
|
9
|
+
* - `label` - Label content for the switch (must be a string when `hideLabel` is true)
|
|
10
|
+
* - `aria-labelledby` - ID of an external element that provides the label
|
|
11
|
+
*
|
|
12
|
+
* When using non-string content for `label` (e.g. JSX), it must not contain
|
|
13
|
+
* interactive elements. This includes native HTML elements such as `<a>` and
|
|
14
|
+
* `<button>`, as well as Tapestry or Tapestry-React interactive components.
|
|
15
|
+
*/
|
|
16
|
+
const ToggleSwitch = forwardRef(({ "aria-describedby": ariaDescribedby, checked, className, description, hideLabel = false, id, label, size = "md", ...restProps }, ref) => {
|
|
17
|
+
const combinedClassName = classNames("tds-toggle-switch", size && size === "sm" && `tds-toggle-switch--sm`, hideLabel && `tds-toggle-switch--hide-label`, className);
|
|
18
|
+
const stableId = useId();
|
|
19
|
+
const toggleSwitchId = id || `tds-toggle-switch-${stableId}`;
|
|
20
|
+
return (React.createElement("div", { className: combinedClassName },
|
|
21
|
+
React.createElement("div", { className: "tds-toggle-switch-track", "aria-hidden": "true" }),
|
|
22
|
+
React.createElement("input", { ...restProps, id: toggleSwitchId, type: "checkbox", role: "switch", "aria-checked": checked, "aria-label": hideLabel ? label : undefined, "aria-describedby": description && !hideLabel
|
|
23
|
+
? `${toggleSwitchId}-description`
|
|
24
|
+
: ariaDescribedby, checked: checked, ref: ref }),
|
|
25
|
+
label && !hideLabel && React.createElement("label", { htmlFor: toggleSwitchId }, label),
|
|
26
|
+
description && !hideLabel && (React.createElement("p", { id: `${toggleSwitchId}-description`, className: "tds-toggle-switch-description" }, description))));
|
|
27
|
+
});
|
|
28
|
+
ToggleSwitch.displayName = "ToggleSwitch";
|
|
29
|
+
|
|
30
|
+
export { ToggleSwitch };
|
|
31
|
+
//# sourceMappingURL=ToggleSwitch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ToggleSwitch.js","sources":["../../../src/components/toggle-switch/ToggleSwitch.tsx"],"sourcesContent":["import \"./index.css\"\n\nimport { useId } from \"@utilities/useId\"\nimport classNames from \"classnames\"\nimport React, { forwardRef, InputHTMLAttributes } from \"react\"\n\nexport type ToggleSwitchSize = \"md\" | \"sm\"\n\ninterface ToggleSwitchBaseProps {\n \"aria-invalid\"?: never\n \"aria-label\"?: never\n \"aria-required\"?: never\n description?: string\n required?: never\n size?: ToggleSwitchSize\n}\n\ninterface ToggleSwitchWithVisibleLabel extends ToggleSwitchBaseProps {\n \"aria-labelledby\"?: never\n hideLabel?: false\n /**\n * Label content for the toggle switch. When using non-string content\n * (e.g. JSX), it must not contain interactive elements. This\n * includes native HTML elements such as `<a>` and `<button>`, as\n * well as Tapestry or Tapestry-React interactive components.\n */\n label: React.ReactNode\n}\n\ninterface ToggleSwitchWithHiddenLabel extends ToggleSwitchBaseProps {\n \"aria-labelledby\"?: never\n hideLabel: true\n /** Label text for the toggle switch, used as an accessible `aria-label`. */\n label: string\n}\n\ninterface ToggleSwitchWithAriaLabelledBy extends ToggleSwitchBaseProps {\n \"aria-labelledby\": string\n hideLabel?: never\n /** Not available when `aria-labelledby` is provided. */\n label?: never\n}\n\nexport type ToggleSwitchProps =\n | ToggleSwitchWithVisibleLabel\n | ToggleSwitchWithHiddenLabel\n | ToggleSwitchWithAriaLabelledBy\n\nexport type ToggleSwitchElementProps = Omit<\n InputHTMLAttributes<HTMLInputElement>,\n keyof ToggleSwitchProps | \"type\" | \"required\" | \"aria-required\"\n> &\n ToggleSwitchProps\n\n/**\n * A toggle switch component that renders as a checkbox input styled as a switch.\n *\n * **Required:** You must provide either:\n * - `label` - Label content for the switch (must be a string when `hideLabel` is true)\n * - `aria-labelledby` - ID of an external element that provides the label\n *\n * When using non-string content for `label` (e.g. JSX), it must not contain\n * interactive elements. This includes native HTML elements such as `<a>` and\n * `<button>`, as well as Tapestry or Tapestry-React interactive components.\n */\nexport const ToggleSwitch = forwardRef<\n HTMLInputElement,\n ToggleSwitchElementProps\n>(\n (\n {\n \"aria-describedby\": ariaDescribedby,\n checked,\n className,\n description,\n hideLabel = false,\n id,\n label,\n size = \"md\",\n ...restProps\n }: ToggleSwitchElementProps,\n ref\n ) => {\n const combinedClassName = classNames(\n \"tds-toggle-switch\",\n size && size === \"sm\" && `tds-toggle-switch--sm`,\n hideLabel && `tds-toggle-switch--hide-label`,\n className\n )\n\n const stableId = useId()\n const toggleSwitchId = id || `tds-toggle-switch-${stableId}`\n\n return (\n <div className={combinedClassName}>\n <div className=\"tds-toggle-switch-track\" aria-hidden=\"true\"></div>\n <input\n {...restProps}\n id={toggleSwitchId}\n type=\"checkbox\"\n role=\"switch\"\n aria-checked={checked}\n aria-label={hideLabel ? (label as string) : undefined}\n aria-describedby={\n description && !hideLabel\n ? `${toggleSwitchId}-description`\n : ariaDescribedby\n }\n checked={checked}\n ref={ref}\n />\n {label && !hideLabel && <label htmlFor={toggleSwitchId}>{label}</label>}\n {description && !hideLabel && (\n <p\n id={`${toggleSwitchId}-description`}\n className=\"tds-toggle-switch-description\"\n >\n {description}\n </p>\n )}\n </div>\n )\n }\n)\n\nToggleSwitch.displayName = \"ToggleSwitch\"\n"],"names":[],"mappings":";;;;AAsDA;;;;;;;;;;AAUG;AACI,MAAM,YAAY,GAAG,UAAU,CAIpC,CACE,EACE,kBAAkB,EAAE,eAAe,EACnC,OAAO,EACP,SAAS,EACT,WAAW,EACX,SAAS,GAAG,KAAK,EACjB,EAAE,EACF,KAAK,EACL,IAAI,GAAG,IAAI,EACX,GAAG,SAAS,EACa,EAC3B,GAAG,KACD;IACF,MAAM,iBAAiB,GAAG,UAAU,CAClC,mBAAmB,EACnB,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,CAAA,qBAAA,CAAuB,EAChD,SAAS,IAAI,+BAA+B,EAC5C,SAAS,CACV;AAED,IAAA,MAAM,QAAQ,GAAG,KAAK,EAAE;AACxB,IAAA,MAAM,cAAc,GAAG,EAAE,IAAI,CAAA,kBAAA,EAAqB,QAAQ,EAAE;AAE5D,IAAA,QACE,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,iBAAiB,EAAA;AAC/B,QAAA,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,yBAAyB,EAAA,aAAA,EAAa,MAAM,EAAA,CAAO;AAClE,QAAA,KAAA,CAAA,aAAA,CAAA,OAAA,EAAA,EAAA,GACM,SAAS,EACb,EAAE,EAAE,cAAc,EAClB,IAAI,EAAC,UAAU,EACf,IAAI,EAAC,QAAQ,EAAA,cAAA,EACC,OAAO,EAAA,YAAA,EACT,SAAS,GAAI,KAAgB,GAAG,SAAS,EAAA,kBAAA,EAEnD,WAAW,IAAI,CAAC;kBACZ,CAAA,EAAG,cAAc,CAAA,YAAA;kBACjB,eAAe,EAErB,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,GAAG,EAAA,CACR;QACD,KAAK,IAAI,CAAC,SAAS,IAAI,KAAA,CAAA,aAAA,CAAA,OAAA,EAAA,EAAO,OAAO,EAAE,cAAc,EAAA,EAAG,KAAK,CAAS;QACtE,WAAW,IAAI,CAAC,SAAS,KACxB,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,EACE,EAAE,EAAE,CAAA,EAAG,cAAc,cAAc,EACnC,SAAS,EAAC,+BAA+B,EAAA,EAExC,WAAW,CACV,CACL,CACG;AAEV,CAAC;AAGH,YAAY,CAAC,WAAW,GAAG,cAAc;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/toggle-switch/index.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,CAAA;AAEpB,YAAY,EACV,wBAAwB,EACxB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA"}
|