@pglevy/sailwind 0.1.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/README.md +219 -0
- package/dist/components/Button/ButtonArrayLayout.d.ts +37 -0
- package/dist/components/Button/ButtonArrayLayout.d.ts.map +1 -0
- package/dist/components/Button/ButtonArrayLayout.js +42 -0
- package/dist/components/Button/ButtonWidget.d.ts +75 -0
- package/dist/components/Button/ButtonWidget.d.ts.map +1 -0
- package/dist/components/Button/ButtonWidget.js +101 -0
- package/dist/components/Button/index.d.ts +5 -0
- package/dist/components/Button/index.d.ts.map +1 -0
- package/dist/components/Card/CardLayout.d.ts +55 -0
- package/dist/components/Card/CardLayout.d.ts.map +1 -0
- package/dist/components/Card/CardLayout.js +139 -0
- package/dist/components/Card/index.d.ts +3 -0
- package/dist/components/Card/index.d.ts.map +1 -0
- package/dist/components/Checkbox/CheckboxField.d.ts +65 -0
- package/dist/components/Checkbox/CheckboxField.d.ts.map +1 -0
- package/dist/components/Checkbox/CheckboxField.js +136 -0
- package/dist/components/Checkbox/index.d.ts +3 -0
- package/dist/components/Checkbox/index.d.ts.map +1 -0
- package/dist/components/Dialog/DialogField.d.ts +51 -0
- package/dist/components/Dialog/DialogField.d.ts.map +1 -0
- package/dist/components/Dialog/DialogField.js +113 -0
- package/dist/components/Dialog/index.d.ts +3 -0
- package/dist/components/Dialog/index.d.ts.map +1 -0
- package/dist/components/Dropdown/DropdownField.d.ts +87 -0
- package/dist/components/Dropdown/DropdownField.d.ts.map +1 -0
- package/dist/components/Dropdown/DropdownField.js +7 -0
- package/dist/components/Dropdown/DropdownFieldBase.d.ts +54 -0
- package/dist/components/Dropdown/DropdownFieldBase.d.ts.map +1 -0
- package/dist/components/Dropdown/DropdownFieldBase.js +183 -0
- package/dist/components/Dropdown/MultipleDropdownField.d.ts +85 -0
- package/dist/components/Dropdown/MultipleDropdownField.d.ts.map +1 -0
- package/dist/components/Dropdown/MultipleDropdownField.js +7 -0
- package/dist/components/Dropdown/index.d.ts +5 -0
- package/dist/components/Dropdown/index.d.ts.map +1 -0
- package/dist/components/Heading/HeadingField.d.ts +48 -0
- package/dist/components/Heading/HeadingField.d.ts.map +1 -0
- package/dist/components/Heading/HeadingField.js +103 -0
- package/dist/components/Heading/index.d.ts +3 -0
- package/dist/components/Heading/index.d.ts.map +1 -0
- package/dist/components/Image/DocumentImage.d.ts +20 -0
- package/dist/components/Image/DocumentImage.d.ts.map +1 -0
- package/dist/components/Image/ImageField.d.ts +42 -0
- package/dist/components/Image/ImageField.d.ts.map +1 -0
- package/dist/components/Image/ImageField.js +159 -0
- package/dist/components/Image/UserImage.d.ts +49 -0
- package/dist/components/Image/UserImage.d.ts.map +1 -0
- package/dist/components/Image/index.d.ts +5 -0
- package/dist/components/Image/index.d.ts.map +1 -0
- package/dist/components/MessageBanner/MessageBanner.d.ts +33 -0
- package/dist/components/MessageBanner/MessageBanner.d.ts.map +1 -0
- package/dist/components/MessageBanner/MessageBanner.js +97 -0
- package/dist/components/MessageBanner/index.d.ts +2 -0
- package/dist/components/MessageBanner/index.d.ts.map +1 -0
- package/dist/components/Milestone/MilestoneField.d.ts +50 -0
- package/dist/components/Milestone/MilestoneField.d.ts.map +1 -0
- package/dist/components/Milestone/MilestoneField.js +206 -0
- package/dist/components/Milestone/index.d.ts +3 -0
- package/dist/components/Milestone/index.d.ts.map +1 -0
- package/dist/components/ProgressBar/ProgressBar.d.ts +32 -0
- package/dist/components/ProgressBar/ProgressBar.d.ts.map +1 -0
- package/dist/components/ProgressBar/ProgressBar.js +117 -0
- package/dist/components/ProgressBar/index.d.ts +2 -0
- package/dist/components/ProgressBar/index.d.ts.map +1 -0
- package/dist/components/RadioButton/RadioButtonField.d.ts +63 -0
- package/dist/components/RadioButton/RadioButtonField.d.ts.map +1 -0
- package/dist/components/RadioButton/RadioButtonField.js +128 -0
- package/dist/components/RadioButton/index.d.ts +3 -0
- package/dist/components/RadioButton/index.d.ts.map +1 -0
- package/dist/components/RichText/Icon.d.ts +28 -0
- package/dist/components/RichText/Icon.d.ts.map +1 -0
- package/dist/components/RichText/Icon.js +94 -0
- package/dist/components/RichText/RichTextDisplayField.d.ts +36 -0
- package/dist/components/RichText/RichTextDisplayField.d.ts.map +1 -0
- package/dist/components/RichText/RichTextDisplayField.js +79 -0
- package/dist/components/RichText/TextItem.d.ts +27 -0
- package/dist/components/RichText/TextItem.d.ts.map +1 -0
- package/dist/components/RichText/TextItem.js +58 -0
- package/dist/components/RichText/index.d.ts +7 -0
- package/dist/components/RichText/index.d.ts.map +1 -0
- package/dist/components/Slider/SliderField.d.ts +63 -0
- package/dist/components/Slider/SliderField.d.ts.map +1 -0
- package/dist/components/Slider/SliderField.js +164 -0
- package/dist/components/Slider/index.d.ts +3 -0
- package/dist/components/Slider/index.d.ts.map +1 -0
- package/dist/components/Stamp/StampField.d.ts +48 -0
- package/dist/components/Stamp/StampField.d.ts.map +1 -0
- package/dist/components/Stamp/StampField.js +173 -0
- package/dist/components/Stamp/index.d.ts +3 -0
- package/dist/components/Stamp/index.d.ts.map +1 -0
- package/dist/components/Switch/SwitchField.d.ts +49 -0
- package/dist/components/Switch/SwitchField.d.ts.map +1 -0
- package/dist/components/Switch/SwitchField.js +106 -0
- package/dist/components/Switch/index.d.ts +3 -0
- package/dist/components/Switch/index.d.ts.map +1 -0
- package/dist/components/TableOfContents.d.ts +2 -0
- package/dist/components/TableOfContents.d.ts.map +1 -0
- package/dist/components/TableOfContents.js +142 -0
- package/dist/components/Tabs/TabsField.d.ts +50 -0
- package/dist/components/Tabs/TabsField.d.ts.map +1 -0
- package/dist/components/Tabs/TabsField.js +96 -0
- package/dist/components/Tabs/index.d.ts +3 -0
- package/dist/components/Tabs/index.d.ts.map +1 -0
- package/dist/components/Tag/TagField.d.ts +52 -0
- package/dist/components/Tag/TagField.d.ts.map +1 -0
- package/dist/components/Tag/TagField.js +125 -0
- package/dist/components/Tag/TagItem.d.ts +26 -0
- package/dist/components/Tag/TagItem.d.ts.map +1 -0
- package/dist/components/Tag/TagItem.js +4 -0
- package/dist/components/Tag/index.d.ts +5 -0
- package/dist/components/Tag/index.d.ts.map +1 -0
- package/dist/components/TextField/TextField.d.ts +88 -0
- package/dist/components/TextField/TextField.d.ts.map +1 -0
- package/dist/components/TextField/TextField.js +113 -0
- package/dist/components/TextField/index.d.ts +3 -0
- package/dist/components/TextField/index.d.ts.map +1 -0
- package/dist/components/Toggle/ToggleField.d.ts +62 -0
- package/dist/components/Toggle/ToggleField.d.ts.map +1 -0
- package/dist/components/Toggle/ToggleField.js +126 -0
- package/dist/components/Toggle/index.d.ts +3 -0
- package/dist/components/Toggle/index.d.ts.map +1 -0
- package/dist/components/index.d.ts +22 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/shared/CollapsibleSection.d.ts +9 -0
- package/dist/components/shared/CollapsibleSection.d.ts.map +1 -0
- package/dist/components/shared/CollapsibleSection.js +39 -0
- package/dist/components/shared/FieldLabel.d.ts +27 -0
- package/dist/components/shared/FieldLabel.d.ts.map +1 -0
- package/dist/components/shared/FieldLabel.js +40 -0
- package/dist/components/shared/FieldWrapper.d.ts +35 -0
- package/dist/components/shared/FieldWrapper.d.ts.map +1 -0
- package/dist/components/shared/FieldWrapper.js +71 -0
- package/dist/components/shared/index.d.ts +6 -0
- package/dist/components/shared/index.d.ts.map +1 -0
- package/dist/esg_world_logo_no_year.png +0 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +58 -0
- package/dist/types/sail.d.ts +37 -0
- package/dist/types/sail.d.ts.map +1 -0
- package/dist/uifaces-human-avatar.jpg +0 -0
- package/dist/utils/classNames.d.ts +21 -0
- package/dist/utils/classNames.d.ts.map +1 -0
- package/dist/utils/classNames.js +16 -0
- package/dist/vite.svg +1 -0
- package/package.json +85 -0
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import { jsxs as i, jsx as t } from "react/jsx-runtime";
|
|
2
|
+
import { useLocation as c } from "wouter";
|
|
3
|
+
import { CardLayout as d } from "./Card/CardLayout.js";
|
|
4
|
+
import { HeadingField as s } from "./Heading/HeadingField.js";
|
|
5
|
+
import { RichTextDisplayField as l } from "./RichText/RichTextDisplayField.js";
|
|
6
|
+
import { TextItem as r } from "./RichText/TextItem.js";
|
|
7
|
+
import "react";
|
|
8
|
+
import "lucide-react";
|
|
9
|
+
const n = [
|
|
10
|
+
{
|
|
11
|
+
title: "Component Library",
|
|
12
|
+
items: [
|
|
13
|
+
{
|
|
14
|
+
title: "Components",
|
|
15
|
+
path: "/components",
|
|
16
|
+
description: "Interactive component demos and documentation"
|
|
17
|
+
}
|
|
18
|
+
]
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
title: "Interface Patterns",
|
|
22
|
+
items: [
|
|
23
|
+
{
|
|
24
|
+
title: "Task Dashboard",
|
|
25
|
+
path: "/patterns/taskdashboard",
|
|
26
|
+
description: "Task management interface with status tracking"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
title: "Application Status",
|
|
30
|
+
path: "/patterns/applicationstatus",
|
|
31
|
+
description: "Application review and approval workflow"
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
title: "Document Review",
|
|
35
|
+
path: "/patterns/documentreview",
|
|
36
|
+
description: "Document approval and feedback interface"
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
title: "User Profile",
|
|
40
|
+
path: "/patterns/userprofile",
|
|
41
|
+
description: "User information and settings management"
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
title: "Form Entry",
|
|
45
|
+
path: "/patterns/formentry",
|
|
46
|
+
description: "Data entry form with validation"
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
title: "Publications",
|
|
50
|
+
path: "/patterns/publications",
|
|
51
|
+
description: "List of items in a card with tags and filtering"
|
|
52
|
+
}
|
|
53
|
+
]
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
title: "Pages",
|
|
57
|
+
items: [
|
|
58
|
+
{
|
|
59
|
+
title: "ESG Conference Registration",
|
|
60
|
+
path: "/esgconferenceregistration",
|
|
61
|
+
description: "Event registration with multiple steps"
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
title: "Insurance Quote Wizard",
|
|
65
|
+
path: "/insurancequotewizard",
|
|
66
|
+
description: "Multi-step insurance quote process"
|
|
67
|
+
}
|
|
68
|
+
]
|
|
69
|
+
}
|
|
70
|
+
], m = ({ item: e }) => {
|
|
71
|
+
const [, a] = c();
|
|
72
|
+
return /* @__PURE__ */ t("div", { className: "mb-4", children: /* @__PURE__ */ t(
|
|
73
|
+
l,
|
|
74
|
+
{
|
|
75
|
+
value: [
|
|
76
|
+
/* @__PURE__ */ t(
|
|
77
|
+
r,
|
|
78
|
+
{
|
|
79
|
+
text: e.title,
|
|
80
|
+
color: "ACCENT",
|
|
81
|
+
size: "MEDIUM",
|
|
82
|
+
link: () => a(e.path),
|
|
83
|
+
linkStyle: "STANDALONE"
|
|
84
|
+
},
|
|
85
|
+
"title"
|
|
86
|
+
),
|
|
87
|
+
/* @__PURE__ */ t("br", {}),
|
|
88
|
+
/* @__PURE__ */ t(
|
|
89
|
+
r,
|
|
90
|
+
{
|
|
91
|
+
text: e.description,
|
|
92
|
+
color: "SECONDARY",
|
|
93
|
+
size: "STANDARD"
|
|
94
|
+
},
|
|
95
|
+
"desc"
|
|
96
|
+
)
|
|
97
|
+
],
|
|
98
|
+
marginBelow: "EVEN_LESS"
|
|
99
|
+
}
|
|
100
|
+
) });
|
|
101
|
+
}, o = ({ group: e }) => /* @__PURE__ */ i("div", { children: [
|
|
102
|
+
/* @__PURE__ */ t(
|
|
103
|
+
s,
|
|
104
|
+
{
|
|
105
|
+
text: e.title,
|
|
106
|
+
size: "MEDIUM",
|
|
107
|
+
fontWeight: "SEMI_BOLD",
|
|
108
|
+
headingTag: "H2",
|
|
109
|
+
marginBelow: "STANDARD"
|
|
110
|
+
}
|
|
111
|
+
),
|
|
112
|
+
/* @__PURE__ */ t("div", { className: "space-y-2", children: e.items.map((a, p) => /* @__PURE__ */ t(m, { item: a }, p)) })
|
|
113
|
+
] }), T = () => /* @__PURE__ */ i("div", { className: "max-w-4xl mx-auto", children: [
|
|
114
|
+
/* @__PURE__ */ t(
|
|
115
|
+
s,
|
|
116
|
+
{
|
|
117
|
+
text: "Table of Contents",
|
|
118
|
+
size: "LARGE",
|
|
119
|
+
headingTag: "H2",
|
|
120
|
+
align: "CENTER",
|
|
121
|
+
marginBelow: "EVEN_LESS"
|
|
122
|
+
}
|
|
123
|
+
),
|
|
124
|
+
/* @__PURE__ */ t(
|
|
125
|
+
l,
|
|
126
|
+
{
|
|
127
|
+
value: ["Explore the available components and example interfaces"],
|
|
128
|
+
align: "CENTER",
|
|
129
|
+
marginBelow: "MORE"
|
|
130
|
+
}
|
|
131
|
+
),
|
|
132
|
+
/* @__PURE__ */ t(d, { padding: "MORE", marginBelow: "NONE", showBorder: !1, showShadow: !0, children: /* @__PURE__ */ i("div", { className: "grid gap-8 md:grid-cols-2", children: [
|
|
133
|
+
/* @__PURE__ */ i("div", { className: "space-y-8", children: [
|
|
134
|
+
/* @__PURE__ */ t(o, { group: n[0] }),
|
|
135
|
+
/* @__PURE__ */ t(o, { group: n[1] })
|
|
136
|
+
] }),
|
|
137
|
+
/* @__PURE__ */ t("div", { children: /* @__PURE__ */ t(o, { group: n[2] }) })
|
|
138
|
+
] }) })
|
|
139
|
+
] });
|
|
140
|
+
export {
|
|
141
|
+
T as TableOfContents
|
|
142
|
+
};
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { SAILMarginSize, SAILSize } from '../../types/sail';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
/**
|
|
4
|
+
* Individual tab configuration
|
|
5
|
+
*/
|
|
6
|
+
export interface TabItem {
|
|
7
|
+
/** Unique identifier for the tab */
|
|
8
|
+
value: string;
|
|
9
|
+
/** Text to display on the tab trigger */
|
|
10
|
+
label: string;
|
|
11
|
+
/** Content to display when tab is active */
|
|
12
|
+
content: React.ReactNode;
|
|
13
|
+
/** Whether this tab is disabled */
|
|
14
|
+
disabled?: boolean;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Displays a set of layered sections of content (tab panels) that are displayed one at a time
|
|
18
|
+
* Inspired by SAIL form field patterns (not an official SAIL component)
|
|
19
|
+
*
|
|
20
|
+
* This is a "new SAIL" component - not available in public SAIL but follows
|
|
21
|
+
* the same conventions and patterns for consistency with other Sailwind components.
|
|
22
|
+
*/
|
|
23
|
+
export interface TabsFieldProps {
|
|
24
|
+
/** Array of tab configurations */
|
|
25
|
+
tabs: TabItem[];
|
|
26
|
+
/** Currently active tab value (controlled) */
|
|
27
|
+
value?: string;
|
|
28
|
+
/** Default active tab value (uncontrolled) */
|
|
29
|
+
defaultValue?: string;
|
|
30
|
+
/** Callback when active tab changes */
|
|
31
|
+
onValueChange?: (value: string) => void;
|
|
32
|
+
/** Orientation of the tabs */
|
|
33
|
+
orientation?: "HORIZONTAL" | "VERTICAL";
|
|
34
|
+
/** Size of the tab triggers */
|
|
35
|
+
size?: SAILSize;
|
|
36
|
+
/** Whether tabs should loop when navigating with keyboard */
|
|
37
|
+
loop?: boolean;
|
|
38
|
+
/** Determines whether component is displayed */
|
|
39
|
+
showWhen?: boolean;
|
|
40
|
+
/** Space added above component */
|
|
41
|
+
marginAbove?: SAILMarginSize;
|
|
42
|
+
/** Space added below component */
|
|
43
|
+
marginBelow?: SAILMarginSize;
|
|
44
|
+
/** Color scheme for active tabs (hex or semantic) */
|
|
45
|
+
color?: "ACCENT" | "POSITIVE" | "NEGATIVE" | "SECONDARY" | string;
|
|
46
|
+
/** Activation mode - whether tabs activate on focus or click */
|
|
47
|
+
activationMode?: "AUTOMATIC" | "MANUAL";
|
|
48
|
+
}
|
|
49
|
+
export declare const TabsField: React.FC<TabsFieldProps>;
|
|
50
|
+
//# sourceMappingURL=TabsField.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TabsField.d.ts","sourceRoot":"","sources":["../../../src/components/Tabs/TabsField.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAEhE;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,oCAAoC;IACpC,KAAK,EAAE,MAAM,CAAA;IACb,yCAAyC;IACzC,KAAK,EAAE,MAAM,CAAA;IACb,4CAA4C;IAC5C,OAAO,EAAE,KAAK,CAAC,SAAS,CAAA;IACxB,mCAAmC;IACnC,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC7B,kCAAkC;IAClC,IAAI,EAAE,OAAO,EAAE,CAAA;IACf,8CAA8C;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,8CAA8C;IAC9C,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,uCAAuC;IACvC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACvC,8BAA8B;IAC9B,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAA;IACvC,+BAA+B;IAC/B,IAAI,CAAC,EAAE,QAAQ,CAAA;IACf,6DAA6D;IAC7D,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,gDAAgD;IAChD,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,kCAAkC;IAClC,WAAW,CAAC,EAAE,cAAc,CAAA;IAC5B,kCAAkC;IAClC,WAAW,CAAC,EAAE,cAAc,CAAA;IAC5B,qDAAqD;IACrD,KAAK,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,UAAU,GAAG,WAAW,GAAG,MAAM,CAAA;IACjE,gEAAgE;IAChE,cAAc,CAAC,EAAE,WAAW,GAAG,QAAQ,CAAA;CACxC;AAED,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAyH9C,CAAA"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { jsx as s, jsxs as h } from "react/jsx-runtime";
|
|
2
|
+
import "react";
|
|
3
|
+
import * as a from "@radix-ui/react-tabs";
|
|
4
|
+
const L = ({
|
|
5
|
+
tabs: l,
|
|
6
|
+
value: o,
|
|
7
|
+
defaultValue: r,
|
|
8
|
+
onValueChange: n,
|
|
9
|
+
orientation: t = "HORIZONTAL",
|
|
10
|
+
size: c = "STANDARD",
|
|
11
|
+
loop: d = !0,
|
|
12
|
+
showWhen: u = !0,
|
|
13
|
+
marginAbove: m = "NONE",
|
|
14
|
+
marginBelow: x = "STANDARD",
|
|
15
|
+
color: i = "ACCENT",
|
|
16
|
+
activationMode: p = "AUTOMATIC"
|
|
17
|
+
}) => {
|
|
18
|
+
if (!u) return null;
|
|
19
|
+
const E = {
|
|
20
|
+
NONE: "",
|
|
21
|
+
EVEN_LESS: "mt-1",
|
|
22
|
+
LESS: "mt-2",
|
|
23
|
+
STANDARD: "mt-4",
|
|
24
|
+
MORE: "mt-6",
|
|
25
|
+
EVEN_MORE: "mt-8"
|
|
26
|
+
}, v = {
|
|
27
|
+
NONE: "",
|
|
28
|
+
EVEN_LESS: "mb-1",
|
|
29
|
+
LESS: "mb-2",
|
|
30
|
+
STANDARD: "mb-4",
|
|
31
|
+
MORE: "mb-6",
|
|
32
|
+
EVEN_MORE: "mb-8"
|
|
33
|
+
}, N = {
|
|
34
|
+
SMALL: "px-3 py-1.5 text-sm",
|
|
35
|
+
STANDARD: "px-4 py-2.5 text-base",
|
|
36
|
+
MEDIUM: "px-6 py-3 text-lg",
|
|
37
|
+
LARGE: "px-8 py-4 text-xl"
|
|
38
|
+
}, b = [
|
|
39
|
+
E[m],
|
|
40
|
+
v[x]
|
|
41
|
+
].filter(Boolean).join(" "), f = t === "VERTICAL" ? "flex flex-col" : "flex border-b border-gray-200", A = t === "VERTICAL" ? "pl-4 flex-1 p-4" : "p-4", _ = t === "VERTICAL" ? "flex" : "block";
|
|
42
|
+
return /* @__PURE__ */ s("div", { className: b, children: /* @__PURE__ */ h(
|
|
43
|
+
a.Root,
|
|
44
|
+
{
|
|
45
|
+
value: o,
|
|
46
|
+
defaultValue: r || l[0]?.value,
|
|
47
|
+
onValueChange: n,
|
|
48
|
+
orientation: t.toLowerCase(),
|
|
49
|
+
activationMode: p.toLowerCase(),
|
|
50
|
+
className: _,
|
|
51
|
+
children: [
|
|
52
|
+
/* @__PURE__ */ s(
|
|
53
|
+
a.List,
|
|
54
|
+
{
|
|
55
|
+
className: f,
|
|
56
|
+
loop: d,
|
|
57
|
+
children: l.map((e) => /* @__PURE__ */ s(
|
|
58
|
+
a.Trigger,
|
|
59
|
+
{
|
|
60
|
+
value: e.value,
|
|
61
|
+
disabled: e.disabled,
|
|
62
|
+
className: [
|
|
63
|
+
N[c],
|
|
64
|
+
"flex-1 bg-white text-gray-700 border-0 cursor-default select-none",
|
|
65
|
+
"items-center justify-center outline-none transition-colors hover:text-blue-500",
|
|
66
|
+
// Active state with underline shadow for horizontal, left border for vertical
|
|
67
|
+
t === "HORIZONTAL" ? "data-[state=active]:text-blue-500 data-[state=active]:shadow-[inset_0_-2px_0_0] data-[state=active]:shadow-current" : "data-[state=active]:text-blue-500 data-[state=active]:shadow-[inset_2px_0_0_0] data-[state=active]:shadow-current",
|
|
68
|
+
"disabled:opacity-50 disabled:cursor-not-allowed",
|
|
69
|
+
"focus-visible:relative focus-visible:shadow-[0_0_0_2px] focus-visible:shadow-blue-500"
|
|
70
|
+
].filter(Boolean).join(" "),
|
|
71
|
+
style: i.startsWith("#") && o === e.value ? { color: i } : void 0,
|
|
72
|
+
children: e.label
|
|
73
|
+
},
|
|
74
|
+
e.value
|
|
75
|
+
))
|
|
76
|
+
}
|
|
77
|
+
),
|
|
78
|
+
l.map((e) => /* @__PURE__ */ s(
|
|
79
|
+
a.Content,
|
|
80
|
+
{
|
|
81
|
+
value: e.value,
|
|
82
|
+
className: [
|
|
83
|
+
A,
|
|
84
|
+
"outline-none focus-visible:shadow-[0_0_0_2px] focus-visible:shadow-blue-500"
|
|
85
|
+
].filter(Boolean).join(" "),
|
|
86
|
+
children: e.content
|
|
87
|
+
},
|
|
88
|
+
e.value
|
|
89
|
+
))
|
|
90
|
+
]
|
|
91
|
+
}
|
|
92
|
+
) });
|
|
93
|
+
};
|
|
94
|
+
export {
|
|
95
|
+
L as TabsField
|
|
96
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Tabs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,YAAY,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { TagItemProps } from './TagItem';
|
|
2
|
+
import { SAILSize, SAILAlign, SAILLabelPosition, SAILMarginSize } from '../../types/sail';
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
/**
|
|
5
|
+
* Tag size - only SMALL and STANDARD are supported per SAIL docs
|
|
6
|
+
*/
|
|
7
|
+
type TagSize = Extract<SAILSize, "SMALL" | "STANDARD">;
|
|
8
|
+
/**
|
|
9
|
+
* Props for the TagField component
|
|
10
|
+
* Maps to SAIL's a!tagField() function
|
|
11
|
+
*/
|
|
12
|
+
export interface TagFieldProps {
|
|
13
|
+
/** Array of tag items to display */
|
|
14
|
+
tags: TagItemProps[];
|
|
15
|
+
/** Text to display as the field label */
|
|
16
|
+
label?: string;
|
|
17
|
+
/** Position of the label relative to the tags */
|
|
18
|
+
labelPosition?: SAILLabelPosition;
|
|
19
|
+
/** Supplemental text about this field */
|
|
20
|
+
instructions?: string;
|
|
21
|
+
/** Help icon tooltip text */
|
|
22
|
+
helpTooltip?: string;
|
|
23
|
+
/** Determines alignment of tags */
|
|
24
|
+
align?: SAILAlign;
|
|
25
|
+
/** Additional text for screen readers */
|
|
26
|
+
accessibilityText?: string;
|
|
27
|
+
/** Size of the tags */
|
|
28
|
+
size?: TagSize;
|
|
29
|
+
/** Controls field visibility */
|
|
30
|
+
showWhen?: boolean;
|
|
31
|
+
/** Space added above the layout */
|
|
32
|
+
marginAbove?: SAILMarginSize;
|
|
33
|
+
/** Space added below the layout */
|
|
34
|
+
marginBelow?: SAILMarginSize;
|
|
35
|
+
/** Additional Tailwind classes for prototype-specific styling (not part of SAIL API) */
|
|
36
|
+
className?: string;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* TagField Component
|
|
40
|
+
* Displays a list of short text labels with colored backgrounds
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* <TagField
|
|
44
|
+
* size="STANDARD"
|
|
45
|
+
* tags={[
|
|
46
|
+
* { text: "URGENT", backgroundColor: "#FED7DE", textColor: "#9F0019" }
|
|
47
|
+
* ]}
|
|
48
|
+
* />
|
|
49
|
+
*/
|
|
50
|
+
export declare const TagField: React.FC<TagFieldProps>;
|
|
51
|
+
export {};
|
|
52
|
+
//# sourceMappingURL=TagField.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TagField.d.ts","sourceRoot":"","sources":["../../../src/components/Tag/TagField.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAC7C,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,iBAAiB,EAAE,cAAc,EAAqB,MAAM,kBAAkB,CAAA;AAIjH;;GAEG;AACH,KAAK,OAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,OAAO,GAAG,UAAU,CAAC,CAAA;AAEtD;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,oCAAoC;IACpC,IAAI,EAAE,YAAY,EAAE,CAAA;IACpB,yCAAyC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,iDAAiD;IACjD,aAAa,CAAC,EAAE,iBAAiB,CAAA;IACjC,yCAAyC;IACzC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,6BAA6B;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,mCAAmC;IACnC,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,yCAAyC;IACzC,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,uBAAuB;IACvB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,gCAAgC;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,mCAAmC;IACnC,WAAW,CAAC,EAAE,cAAc,CAAA;IAC5B,mCAAmC;IACnC,WAAW,CAAC,EAAE,cAAc,CAAA;IAC5B,wFAAwF;IACxF,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CA8I5C,CAAA"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { jsxs as V, jsx as t } from "react/jsx-runtime";
|
|
2
|
+
import * as I from "react";
|
|
3
|
+
import { FieldLabel as w } from "../shared/FieldLabel.js";
|
|
4
|
+
import { mergeClasses as L } from "../../utils/classNames.js";
|
|
5
|
+
const W = ({
|
|
6
|
+
tags: l,
|
|
7
|
+
label: n,
|
|
8
|
+
labelPosition: i = "ABOVE",
|
|
9
|
+
instructions: a,
|
|
10
|
+
helpTooltip: c,
|
|
11
|
+
align: m = "START",
|
|
12
|
+
accessibilityText: o,
|
|
13
|
+
size: E = "STANDARD",
|
|
14
|
+
showWhen: N = !0,
|
|
15
|
+
marginAbove: p = "NONE",
|
|
16
|
+
marginBelow: A = "STANDARD",
|
|
17
|
+
className: b
|
|
18
|
+
}) => {
|
|
19
|
+
if (!N) return null;
|
|
20
|
+
const r = l.filter((e) => e.showWhen !== !1 && e.text), d = {
|
|
21
|
+
SMALL: "text-xs px-2 py-1",
|
|
22
|
+
// SAIL SMALL: 12px text, 8px horizontal padding, 4px vertical
|
|
23
|
+
STANDARD: "text-base px-4 py-1"
|
|
24
|
+
// SAIL STANDARD: 16px text, 16px horizontal padding, 4px vertical
|
|
25
|
+
}, C = {
|
|
26
|
+
START: "justify-start",
|
|
27
|
+
CENTER: "justify-center",
|
|
28
|
+
END: "justify-end"
|
|
29
|
+
}, x = {
|
|
30
|
+
NONE: "mt-0",
|
|
31
|
+
// SAIL NONE: 0
|
|
32
|
+
EVEN_LESS: "mt-1",
|
|
33
|
+
// SAIL EVEN_LESS: 4px
|
|
34
|
+
LESS: "mt-2",
|
|
35
|
+
// SAIL LESS: 8px
|
|
36
|
+
STANDARD: "mt-4",
|
|
37
|
+
// SAIL STANDARD: 16px
|
|
38
|
+
MORE: "mt-6",
|
|
39
|
+
// SAIL MORE: 24px
|
|
40
|
+
EVEN_MORE: "mt-8"
|
|
41
|
+
// SAIL EVEN_MORE: 32px
|
|
42
|
+
}, S = {
|
|
43
|
+
NONE: "mb-0",
|
|
44
|
+
// SAIL NONE: 0
|
|
45
|
+
EVEN_LESS: "mb-1",
|
|
46
|
+
// SAIL EVEN_LESS: 4px
|
|
47
|
+
LESS: "mb-2",
|
|
48
|
+
// SAIL LESS: 8px
|
|
49
|
+
STANDARD: "mb-4",
|
|
50
|
+
// SAIL STANDARD: 16px
|
|
51
|
+
MORE: "mb-6",
|
|
52
|
+
// SAIL MORE: 24px
|
|
53
|
+
EVEN_MORE: "mb-8"
|
|
54
|
+
// SAIL EVEN_MORE: 32px
|
|
55
|
+
}, u = {
|
|
56
|
+
ACCENT: "bg-blue-100",
|
|
57
|
+
POSITIVE: "bg-green-100",
|
|
58
|
+
NEGATIVE: "bg-red-100",
|
|
59
|
+
SECONDARY: "bg-gray-200",
|
|
60
|
+
STANDARD: "bg-gray-100"
|
|
61
|
+
}, T = {
|
|
62
|
+
ACCENT: "text-blue-700",
|
|
63
|
+
POSITIVE: "text-green-700",
|
|
64
|
+
NEGATIVE: "text-red-700",
|
|
65
|
+
SECONDARY: "text-gray-700",
|
|
66
|
+
STANDARD: "text-gray-900"
|
|
67
|
+
}, f = (e, h) => {
|
|
68
|
+
const g = e.backgroundColor?.startsWith("#") ? "" : u[e.backgroundColor || "ACCENT"], O = e.textColor?.startsWith("#") ? "" : T[e.textColor || "STANDARD"], M = {
|
|
69
|
+
...e.backgroundColor?.startsWith("#") && { backgroundColor: e.backgroundColor },
|
|
70
|
+
...e.textColor?.startsWith("#") && { color: e.textColor }
|
|
71
|
+
}, k = e.link ? "a" : "span", y = e.link ? { href: e.link } : {};
|
|
72
|
+
return /* @__PURE__ */ t(
|
|
73
|
+
k,
|
|
74
|
+
{
|
|
75
|
+
...y,
|
|
76
|
+
className: `
|
|
77
|
+
inline-block font-semibold max-w-full
|
|
78
|
+
whitespace-nowrap overflow-hidden text-ellipsis
|
|
79
|
+
rounded-sm
|
|
80
|
+
${d[E]}
|
|
81
|
+
${g}
|
|
82
|
+
${O}
|
|
83
|
+
${e.link ? "hover:underline cursor-pointer" : "cursor-default"}
|
|
84
|
+
`.replace(/\s+/g, " ").trim(),
|
|
85
|
+
style: M,
|
|
86
|
+
title: e.tooltip,
|
|
87
|
+
"aria-label": e.tooltip,
|
|
88
|
+
children: e.text
|
|
89
|
+
},
|
|
90
|
+
h
|
|
91
|
+
);
|
|
92
|
+
}, s = I.useId(), D = `${x[p]} ${S[A]}`, R = L(D, b);
|
|
93
|
+
return /* @__PURE__ */ V(
|
|
94
|
+
"div",
|
|
95
|
+
{
|
|
96
|
+
className: R,
|
|
97
|
+
"aria-label": o,
|
|
98
|
+
children: [
|
|
99
|
+
/* @__PURE__ */ t(
|
|
100
|
+
w,
|
|
101
|
+
{
|
|
102
|
+
label: n,
|
|
103
|
+
labelPosition: i,
|
|
104
|
+
instructions: a,
|
|
105
|
+
helpTooltip: c,
|
|
106
|
+
htmlFor: s,
|
|
107
|
+
accessibilityText: o
|
|
108
|
+
}
|
|
109
|
+
),
|
|
110
|
+
r.length > 0 && /* @__PURE__ */ t(
|
|
111
|
+
"div",
|
|
112
|
+
{
|
|
113
|
+
id: s,
|
|
114
|
+
className: `flex flex-wrap gap-2 ${C[m]}`,
|
|
115
|
+
role: "list",
|
|
116
|
+
children: r.map(f)
|
|
117
|
+
}
|
|
118
|
+
)
|
|
119
|
+
]
|
|
120
|
+
}
|
|
121
|
+
);
|
|
122
|
+
};
|
|
123
|
+
export {
|
|
124
|
+
W as TagField
|
|
125
|
+
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { SAILSemanticColor } from '../../types/sail';
|
|
2
|
+
/**
|
|
3
|
+
* Props for individual tag items
|
|
4
|
+
* Maps to SAIL's a!tagItem() function
|
|
5
|
+
*/
|
|
6
|
+
export interface TagItemProps {
|
|
7
|
+
/** Text to display within the tag (max 40 characters in SAIL) */
|
|
8
|
+
text: string;
|
|
9
|
+
/** Background color - hex value or semantic color name */
|
|
10
|
+
backgroundColor?: string | SAILSemanticColor;
|
|
11
|
+
/** Text color - hex value or "STANDARD" */
|
|
12
|
+
textColor?: string | "STANDARD";
|
|
13
|
+
/** Tooltip text to display on hover */
|
|
14
|
+
tooltip?: string;
|
|
15
|
+
/** Controls tag visibility */
|
|
16
|
+
showWhen?: boolean;
|
|
17
|
+
/** Link to apply to the tag (href string for React implementation) */
|
|
18
|
+
link?: string;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* TagItem component
|
|
22
|
+
* This is a data structure component - it doesn't render independently.
|
|
23
|
+
* TagItems must be used within a TagField component.
|
|
24
|
+
*/
|
|
25
|
+
export declare const TagItem: (_props: TagItemProps) => null;
|
|
26
|
+
//# sourceMappingURL=TagItem.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TagItem.d.ts","sourceRoot":"","sources":["../../../src/components/Tag/TagItem.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAEzD;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,iEAAiE;IACjE,IAAI,EAAE,MAAM,CAAA;IACZ,0DAA0D;IAC1D,eAAe,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAAA;IAC5C,2CAA2C;IAC3C,SAAS,CAAC,EAAE,MAAM,GAAG,UAAU,CAAA;IAC/B,uCAAuC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,sEAAsE;IACtE,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED;;;;GAIG;AACH,eAAO,MAAM,OAAO,GAAI,QAAQ,YAAY,KAAG,IAI9C,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Tag/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC/C,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { SAILLabelPosition, SAILMarginSize } from '../../types/sail';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
/**
|
|
4
|
+
* Text alignment options for the input field
|
|
5
|
+
*/
|
|
6
|
+
type TextAlign = "LEFT" | "CENTER" | "RIGHT";
|
|
7
|
+
/**
|
|
8
|
+
* Input purpose for autocomplete hints (accessibility)
|
|
9
|
+
*/
|
|
10
|
+
type InputPurpose = "NAME" | "EMAIL" | "PHONE_NUMBER" | "STREET_ADDRESS" | "POSTAL_CODE" | "COUNTRY" | "CREDIT_CARD_NUMBER" | "FIRST_NAME" | "LAST_NAME" | "DOB" | "OFF";
|
|
11
|
+
/**
|
|
12
|
+
* Refresh timing for when the interface updates with saved value
|
|
13
|
+
*/
|
|
14
|
+
type RefreshAfter = "KEYPRESS" | "UNFOCUS";
|
|
15
|
+
/**
|
|
16
|
+
* Props for the TextField component
|
|
17
|
+
* Based on SAIL a!textField() parameters
|
|
18
|
+
*/
|
|
19
|
+
export interface TextFieldProps {
|
|
20
|
+
/** Text to display as the field label */
|
|
21
|
+
label?: string;
|
|
22
|
+
/** Supplemental text about this field */
|
|
23
|
+
instructions?: string;
|
|
24
|
+
/** Determines if a value is required to submit the form */
|
|
25
|
+
required?: boolean;
|
|
26
|
+
/** Determines if the field should display as not editable */
|
|
27
|
+
readOnly?: boolean;
|
|
28
|
+
/** Determines if the field should display as potentially editable but grayed out */
|
|
29
|
+
disabled?: boolean;
|
|
30
|
+
/** Text to display in the text field */
|
|
31
|
+
value?: string;
|
|
32
|
+
/** Validation errors to display below the field when the value is not null */
|
|
33
|
+
validations?: string[];
|
|
34
|
+
/** Callback when the user changes the text */
|
|
35
|
+
saveInto?: (value: string) => void;
|
|
36
|
+
/** Callback when the user changes the text (React-style alias for saveInto) */
|
|
37
|
+
onChange?: (value: string) => void;
|
|
38
|
+
/** Determines when the interface is refreshed with the saved value */
|
|
39
|
+
refreshAfter?: RefreshAfter;
|
|
40
|
+
/** When present, the requiredness of the field is only evaluated when a button in the same validation group is pressed */
|
|
41
|
+
validationGroup?: string;
|
|
42
|
+
/** Custom message to display when the field's value is required and not provided */
|
|
43
|
+
requiredMessage?: string;
|
|
44
|
+
/** Determines alignment of the text value */
|
|
45
|
+
align?: TextAlign;
|
|
46
|
+
/** Determines where the label appears */
|
|
47
|
+
labelPosition?: SAILLabelPosition;
|
|
48
|
+
/** Text to display in the field when it is empty */
|
|
49
|
+
placeholder?: string;
|
|
50
|
+
/** Displays a help icon with the specified text as a tooltip */
|
|
51
|
+
helpTooltip?: string;
|
|
52
|
+
/** Determines if the value is obscured from view (password field) */
|
|
53
|
+
masked?: boolean;
|
|
54
|
+
/** Additional text to be announced by screen readers */
|
|
55
|
+
accessibilityText?: string;
|
|
56
|
+
/** Determines whether the component is displayed on the interface */
|
|
57
|
+
showWhen?: boolean;
|
|
58
|
+
/** Indicates the intent of input for accessibility improvements */
|
|
59
|
+
inputPurpose?: InputPurpose;
|
|
60
|
+
/** Determines the maximum number of characters */
|
|
61
|
+
characterLimit?: number;
|
|
62
|
+
/** Determines if the character count displays on the text field */
|
|
63
|
+
showCharacterCount?: boolean;
|
|
64
|
+
/** Determines how much space is added above the component */
|
|
65
|
+
marginAbove?: SAILMarginSize;
|
|
66
|
+
/** Determines how much space is added below the component */
|
|
67
|
+
marginBelow?: SAILMarginSize;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* TextField - Single line text input component
|
|
71
|
+
*
|
|
72
|
+
* Displays and allows entry of a single line of text.
|
|
73
|
+
* Maps to SAIL a!textField() function.
|
|
74
|
+
*
|
|
75
|
+
* @example
|
|
76
|
+
* ```tsx
|
|
77
|
+
* <TextField
|
|
78
|
+
* label="Email Address"
|
|
79
|
+
* placeholder="user@example.com"
|
|
80
|
+
* value={email}
|
|
81
|
+
* saveInto={(value) => setEmail(value)}
|
|
82
|
+
* required
|
|
83
|
+
* />
|
|
84
|
+
* ```
|
|
85
|
+
*/
|
|
86
|
+
export declare const TextField: React.FC<TextFieldProps>;
|
|
87
|
+
export {};
|
|
88
|
+
//# sourceMappingURL=TextField.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TextField.d.ts","sourceRoot":"","sources":["../../../src/components/TextField/TextField.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEzE;;GAEG;AACH,KAAK,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAA;AAE5C;;GAEG;AACH,KAAK,YAAY,GACb,MAAM,GACN,OAAO,GACP,cAAc,GACd,gBAAgB,GAChB,aAAa,GACb,SAAS,GACT,oBAAoB,GACpB,YAAY,GACZ,WAAW,GACX,KAAK,GACL,KAAK,CAAA;AAET;;GAEG;AACH,KAAK,YAAY,GAAG,UAAU,GAAG,SAAS,CAAA;AAE1C;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,yCAAyC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,yCAAyC;IACzC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,oFAAoF;IACpF,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,wCAAwC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,8EAA8E;IAC9E,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,sEAAsE;IACtE,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,0HAA0H;IAC1H,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,oFAAoF;IACpF,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,6CAA6C;IAC7C,KAAK,CAAC,EAAE,SAAS,CAAA;IACjB,yCAAyC;IACzC,aAAa,CAAC,EAAE,iBAAiB,CAAA;IACjC,oDAAoD;IACpD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,gEAAgE;IAChE,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,qEAAqE;IACrE,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,wDAAwD;IACxD,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,qEAAqE;IACrE,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,mEAAmE;IACnE,YAAY,CAAC,EAAE,YAAY,CAAA;IAC3B,kDAAkD;IAClD,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,mEAAmE;IACnE,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B,6DAA6D;IAC7D,WAAW,CAAC,EAAE,cAAc,CAAA;IAC5B,6DAA6D;IAC7D,WAAW,CAAC,EAAE,cAAc,CAAA;CAC7B;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAiK9C,CAAA"}
|