fictoan-react 2.0.0-beta.17 → 2.0.0-beta.18
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/Accordion/Accordion.d.ts.map +1 -1
- package/dist/components/Accordion/Accordion.js +27 -0
- package/dist/components/Accordion/Accordion.js.map +1 -0
- package/dist/components/Badge/Badge.d.ts.map +1 -1
- package/dist/components/Badge/Badge.js +56 -0
- package/dist/components/Badge/Badge.js.map +1 -0
- package/dist/components/Breadcrumbs/Breadcrumbs.js +65 -0
- package/dist/components/Breadcrumbs/Breadcrumbs.js.map +1 -0
- package/dist/components/Button/Button.js +28 -0
- package/dist/components/Button/Button.js.map +1 -0
- package/dist/components/ButtonGroup/ButtonGroup.js +27 -0
- package/dist/components/ButtonGroup/ButtonGroup.js.map +1 -0
- package/dist/components/Callout/Callout.js +31 -0
- package/dist/components/Callout/Callout.js.map +1 -0
- package/dist/components/Card/Card.js +27 -0
- package/dist/components/Card/Card.js.map +1 -0
- package/dist/components/CodeBlock/CodeBlock.js +191 -0
- package/dist/components/CodeBlock/CodeBlock.js.map +1 -0
- package/dist/components/Divider/Divider.js +29 -0
- package/dist/components/Divider/Divider.js.map +1 -0
- package/dist/components/Drawer/Drawer.d.ts +3 -0
- package/dist/components/Drawer/Drawer.d.ts.map +1 -1
- package/dist/components/Drawer/Drawer.js +96 -0
- package/dist/components/Drawer/Drawer.js.map +1 -0
- package/dist/components/Element/Element.d.ts +6 -2
- package/dist/components/Element/Element.d.ts.map +1 -1
- package/dist/components/Element/Element.js +152 -0
- package/dist/components/Element/Element.js.map +1 -0
- package/dist/components/Element/Tags.js +31 -0
- package/dist/components/Element/Tags.js.map +1 -0
- package/dist/components/Element/constants.js +8 -0
- package/dist/components/Element/constants.js.map +1 -0
- package/dist/components/Form/Checkbox/Checkbox.d.ts.map +1 -1
- package/dist/components/Form/Checkbox/Checkbox.js +78 -0
- package/dist/components/Form/Checkbox/Checkbox.js.map +1 -0
- package/dist/components/Form/Checkbox/CheckboxAndSwitchGroup.d.ts.map +1 -1
- package/dist/components/Form/Checkbox/CheckboxAndSwitchGroup.js +177 -0
- package/dist/components/Form/Checkbox/CheckboxAndSwitchGroup.js.map +1 -0
- package/dist/components/Form/Checkbox/Switch.d.ts.map +1 -1
- package/dist/components/Form/Checkbox/Switch.js +78 -0
- package/dist/components/Form/Checkbox/Switch.js.map +1 -0
- package/dist/components/Form/FileUpload/FileUpload.d.ts.map +1 -1
- package/dist/components/Form/FileUpload/FileUpload.js +142 -0
- package/dist/components/Form/FileUpload/FileUpload.js.map +1 -0
- package/dist/components/Form/Form/Form.js +37 -0
- package/dist/components/Form/Form/Form.js.map +1 -0
- package/dist/components/Form/Form/FormGenerator.js +64 -0
- package/dist/components/Form/Form/FormGenerator.js.map +1 -0
- package/dist/components/Form/FormItem/FormItem.d.ts +16 -0
- package/dist/components/Form/FormItem/FormItem.d.ts.map +1 -1
- package/dist/components/Form/FormItem/FormItem.js +127 -0
- package/dist/components/Form/FormItem/FormItem.js.map +1 -0
- package/dist/components/Form/FormItemGroup/FormItemGroup.js +42 -0
- package/dist/components/Form/FormItemGroup/FormItemGroup.js.map +1 -0
- package/dist/components/Form/InputField/InputField.d.ts.map +1 -1
- package/dist/components/Form/InputField/InputField.js +156 -0
- package/dist/components/Form/InputField/InputField.js.map +1 -0
- package/dist/components/Form/InputLabel/InputLabel.js +30 -0
- package/dist/components/Form/InputLabel/InputLabel.js.map +1 -0
- package/dist/components/Form/ListBox/ListBox.d.ts.map +1 -1
- package/dist/components/Form/ListBox/ListBox.js +284 -0
- package/dist/components/Form/ListBox/ListBox.js.map +1 -0
- package/dist/components/Form/ListBox/constants.d.ts +1 -1
- package/dist/components/Form/ListBox/constants.d.ts.map +1 -1
- package/dist/components/Form/ListBox/listBoxUtils.js +49 -0
- package/dist/components/Form/ListBox/listBoxUtils.js.map +1 -0
- package/dist/components/Form/PinInputField/PinInputField.d.ts +6 -1
- package/dist/components/Form/PinInputField/PinInputField.d.ts.map +1 -1
- package/dist/components/Form/PinInputField/PinInputField.js +165 -0
- package/dist/components/Form/PinInputField/PinInputField.js.map +1 -0
- package/dist/components/Form/RadioButton/RadioButton.d.ts.map +1 -1
- package/dist/components/Form/RadioButton/RadioButton.js +82 -0
- package/dist/components/Form/RadioButton/RadioButton.js.map +1 -0
- package/dist/components/Form/RadioButton/RadioGroup.d.ts.map +1 -1
- package/dist/components/Form/RadioButton/RadioGroup.js +97 -0
- package/dist/components/Form/RadioButton/RadioGroup.js.map +1 -0
- package/dist/components/Form/RadioButton/RadioTabGroup.d.ts.map +1 -1
- package/dist/components/Form/RadioButton/RadioTabGroup.js +182 -0
- package/dist/components/Form/RadioButton/RadioTabGroup.js.map +1 -0
- package/dist/components/Form/Range/Range.js +376 -0
- package/dist/components/Form/Range/Range.js.map +1 -0
- package/dist/components/Form/Select/Select.d.ts.map +1 -1
- package/dist/components/Form/Select/Select.js +83 -0
- package/dist/components/Form/Select/Select.js.map +1 -0
- package/dist/components/Form/TextArea/TextArea.d.ts.map +1 -1
- package/dist/components/Form/TextArea/TextArea.js +111 -0
- package/dist/components/Form/TextArea/TextArea.js.map +1 -0
- package/dist/components/Meter/Meter.js +110 -0
- package/dist/components/Meter/Meter.js.map +1 -0
- package/dist/components/Modal/Modal.d.ts.map +1 -1
- package/dist/components/Modal/Modal.js +75 -0
- package/dist/components/Modal/Modal.js.map +1 -0
- package/dist/components/Notification/NotificationItem/NotificationItem.d.ts.map +1 -1
- package/dist/components/Notification/NotificationItem/NotificationItem.js +70 -0
- package/dist/components/Notification/NotificationItem/NotificationItem.js.map +1 -0
- package/dist/components/Notification/NotificationsProvider/NotificationsProvider.js +88 -0
- package/dist/components/Notification/NotificationsProvider/NotificationsProvider.js.map +1 -0
- package/dist/components/Notification/NotificationsWrapper/NotificationsWrapper.d.ts.map +1 -1
- package/dist/components/Notification/NotificationsWrapper/NotificationsWrapper.js +35 -0
- package/dist/components/Notification/NotificationsWrapper/NotificationsWrapper.js.map +1 -0
- package/dist/components/OptionCard/OptionCard.js +150 -0
- package/dist/components/OptionCard/OptionCard.js.map +1 -0
- package/dist/components/Pagination/Pagination.d.ts.map +1 -1
- package/dist/components/Pagination/Pagination.js +206 -0
- package/dist/components/Pagination/Pagination.js.map +1 -0
- package/dist/components/Pagination/usePagination.js +35 -0
- package/dist/components/Pagination/usePagination.js.map +1 -0
- package/dist/components/Portion/Portion.js +34 -0
- package/dist/components/Portion/Portion.js.map +1 -0
- package/dist/components/ProgressBar/ProgressBar.js +63 -0
- package/dist/components/ProgressBar/ProgressBar.js.map +1 -0
- package/dist/components/Row/Row.js +40 -0
- package/dist/components/Row/Row.js.map +1 -0
- package/dist/components/Sidebar/ContentWrapper/ContentWrapper.js +23 -0
- package/dist/components/Sidebar/ContentWrapper/ContentWrapper.js.map +1 -0
- package/dist/components/Sidebar/SidebarFooter/SidebarFooter.js +25 -0
- package/dist/components/Sidebar/SidebarFooter/SidebarFooter.js.map +1 -0
- package/dist/components/Sidebar/SidebarHeader/SidebarHeader.js +25 -0
- package/dist/components/Sidebar/SidebarHeader/SidebarHeader.js.map +1 -0
- package/dist/components/Sidebar/SidebarItem/SidebarItem.js +30 -0
- package/dist/components/Sidebar/SidebarItem/SidebarItem.js.map +1 -0
- package/dist/components/Sidebar/SidebarItemsGroup/SidebarItemsGroup.js +29 -0
- package/dist/components/Sidebar/SidebarItemsGroup/SidebarItemsGroup.js.map +1 -0
- package/dist/components/Sidebar/SidebarWrapper/SidebarWrapper.d.ts.map +1 -1
- package/dist/components/Sidebar/SidebarWrapper/SidebarWrapper.js +35 -0
- package/dist/components/Sidebar/SidebarWrapper/SidebarWrapper.js.map +1 -0
- package/dist/components/Skeleton/Skeleton.js +84 -0
- package/dist/components/Skeleton/Skeleton.js.map +1 -0
- package/dist/components/Spinner/Spinner.js +33 -0
- package/dist/components/Spinner/Spinner.js.map +1 -0
- package/dist/components/Table/Table.js +53 -0
- package/dist/components/Table/Table.js.map +1 -0
- package/dist/components/Tabs/Tabs.d.ts.map +1 -1
- package/dist/components/Tabs/Tabs.js +104 -0
- package/dist/components/Tabs/Tabs.js.map +1 -0
- package/dist/components/ThemeProvider/ThemeProvider.d.ts +6 -0
- package/dist/components/ThemeProvider/ThemeProvider.d.ts.map +1 -1
- package/dist/components/ThemeProvider/ThemeProvider.js +52 -0
- package/dist/components/ThemeProvider/ThemeProvider.js.map +1 -0
- package/dist/components/Toast/ToastItem/ToastItem.js +47 -0
- package/dist/components/Toast/ToastItem/ToastItem.js.map +1 -0
- package/dist/components/Toast/ToastsProvider/ToastsProvider.js +45 -0
- package/dist/components/Toast/ToastsProvider/ToastsProvider.js.map +1 -0
- package/dist/components/Toast/ToastsWrapper/ToastsWrapper.d.ts.map +1 -1
- package/dist/components/Toast/ToastsWrapper/ToastsWrapper.js +28 -0
- package/dist/components/Toast/ToastsWrapper/ToastsWrapper.js.map +1 -0
- package/dist/components/Tooltip/Tooltip.d.ts +1 -1
- package/dist/components/Tooltip/Tooltip.d.ts.map +1 -1
- package/dist/components/Tooltip/Tooltip.js +62 -0
- package/dist/components/Tooltip/Tooltip.js.map +1 -0
- package/dist/components/Typography/Heading.js +30 -0
- package/dist/components/Typography/Heading.js.map +1 -0
- package/dist/components/Typography/Text.js +15 -0
- package/dist/components/Typography/Text.js.map +1 -0
- package/dist/components/index.js +124 -75
- package/dist/components/index.js.map +1 -1
- package/dist/fictoan-schema.json +2070 -0
- package/dist/hooks/UseClickOutside.js +17 -0
- package/dist/hooks/UseClickOutside.js.map +1 -0
- package/dist/hooks/UseViewTransition.d.ts +2 -0
- package/dist/hooks/UseViewTransition.d.ts.map +1 -0
- package/dist/hooks/UseViewTransition.js +17 -0
- package/dist/hooks/UseViewTransition.js.map +1 -0
- package/dist/index.css +6 -10661
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +142 -151
- package/dist/index.js.map +1 -1
- package/dist/scripts/generateSchema.d.ts +2 -0
- package/dist/scripts/generateSchema.d.ts.map +1 -0
- package/dist/scripts/schema-meta.d.ts +12 -0
- package/dist/scripts/schema-meta.d.ts.map +1 -0
- package/dist/styles/colours.js +55 -0
- package/dist/styles/colours.js.map +1 -0
- package/dist/utils/classNames.js +6 -0
- package/dist/utils/classNames.js.map +1 -0
- package/dist/utils/propSeparation.js +77 -0
- package/dist/utils/propSeparation.js.map +1 -0
- package/package.json +12 -18
- package/dist/Accordion-CeGNgNW8.js +0 -4254
- package/dist/Accordion-CeGNgNW8.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Row.js","sources":["../../../src/components/Row/Row.tsx"],"sourcesContent":["// REACT CORE ==========================================================================================================\nimport React from \"react\";\n\n// LOCAL COMPONENTS ====================================================================================================\nimport { CommonAndHTMLProps, SpacingTypes } from \"../Element/constants\";\nimport { Element } from \"$element\";\n\n// STYLES ==============================================================================================================\nimport \"./row.css\";\n\ninterface RowCustomProps {\n layout ? : \"grid\" | \"flexbox\";\n gutters ? : SpacingTypes;\n retainLayoutOnTabletLandscape ? : boolean;\n retainLayoutOnTabletPortrait ? : boolean;\n retainLayoutOnMobile ? : boolean;\n retainLayoutAlways ? : boolean;\n allowUltraWide ? : boolean;\n groupLabel ? : string;\n}\n\nexport type RowElementType = HTMLDivElement;\nexport type RowProps = Omit<CommonAndHTMLProps<RowElementType>, keyof RowCustomProps> & RowCustomProps;\n\n// TODO: Fix fixed gutter widths\n\n// COMPONENT //////////////////////////////////////////////////////////////////////////////////////////////////////////\nexport const Row = React.forwardRef(\n (\n {\n layout = \"grid\",\n gutters = \"medium\",\n retainLayoutOnTabletLandscape,\n retainLayoutOnTabletPortrait,\n retainLayoutOnMobile,\n retainLayoutAlways,\n allowUltraWide,\n groupLabel,\n ...props\n } : RowProps,\n ref : React.Ref<RowElementType>,\n ) => {\n // CLASS NAMES -------------------------------------------------------------------------------------------------\n let classNames = [];\n\n if (layout) {\n classNames.push(`layout-${layout}`);\n }\n\n if (gutters) {\n classNames.push(gutters === \"none\" ? \"no-gutters\" : `${gutters}-gutters`);\n }\n\n // Add medium gutters by default for grid layouts only, remove them for flexbox layouts\n //\n // if (conditionalGutters) {\n // }\n\n // if (equaliseChildren || equalizeChildren) {\n // classNames.push(\"equalise-children\");\n // }\n\n if (retainLayoutOnTabletLandscape) {\n classNames.push(\"retain-layout-on-tablet-landscape\");\n }\n\n if (retainLayoutOnTabletPortrait) {\n classNames.push(\"retain-layout-on-tablet-portrait\");\n }\n\n if (retainLayoutOnMobile) {\n classNames.push(\"retain-layout-on-mobile\");\n }\n\n if (retainLayoutAlways) {\n classNames.push(\n \"retain-layout-on-tablet-landscape retain-layout-on-tablet-portrait retain-layout-on-mobile\",\n );\n }\n\n if (allowUltraWide) {\n classNames.push(\"allow-ultra-wide\");\n }\n\n // RENDER -----------------------------------------------------------------------------------------------------\n return (\n <Element<RowElementType>\n as=\"div\"\n data-row\n ref={ref}\n classNames={[ classNames.join(\" \") ]}\n marginBottom=\"tiny\"\n role=\"grid\"\n aria-label={groupLabel}\n {...props}\n />\n );\n },\n);\nRow.displayName = \"Row\";\n"],"names":["Row","React","layout","gutters","retainLayoutOnTabletLandscape","retainLayoutOnTabletPortrait","retainLayoutOnMobile","retainLayoutAlways","allowUltraWide","groupLabel","props","ref","classNames","jsx","Element"],"mappings":";;;;AA2BO,MAAMA,IAAMC,EAAM;AAAA,EACrB,CACI;AAAA,IACI,QAAAC,IAAS;AAAA,IACT,SAAAC,IAAU;AAAA,IACV,+BAAAC;AAAA,IACA,8BAAAC;AAAA,IACA,sBAAAC;AAAA,IACA,oBAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,YAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,GAEPC,MACC;AAED,QAAIC,IAAa,CAAA;AAEjB,WAAIV,KACAU,EAAW,KAAK,UAAUV,CAAM,EAAE,GAGlCC,KACAS,EAAW,KAAKT,MAAY,SAAS,eAAe,GAAGA,CAAO,UAAU,GAYxEC,KACAQ,EAAW,KAAK,mCAAmC,GAGnDP,KACAO,EAAW,KAAK,kCAAkC,GAGlDN,KACAM,EAAW,KAAK,yBAAyB,GAGzCL,KACAK,EAAW;AAAA,MACP;AAAA,IAAA,GAIJJ,KACAI,EAAW,KAAK,kBAAkB,GAKlC,gBAAAC;AAAA,MAACC;AAAA,MAAA;AAAA,QACG,IAAG;AAAA,QACH,YAAQ;AAAA,QACR,KAAAH;AAAA,QACA,YAAY,CAAEC,EAAW,KAAK,GAAG,CAAE;AAAA,QACnC,cAAa;AAAA,QACb,MAAK;AAAA,QACL,cAAYH;AAAA,QACX,GAAGC;AAAA,MAAA;AAAA,IAAA;AAAA,EAGhB;AACJ;AACAV,EAAI,cAAc;"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as a } from "react/jsx-runtime";
|
|
3
|
+
import o from "react";
|
|
4
|
+
/* empty css */
|
|
5
|
+
import { Element as n } from "../../Element/Element.js";
|
|
6
|
+
const p = o.forwardRef(
|
|
7
|
+
({ label: r, ...t }, e) => /* @__PURE__ */ a(
|
|
8
|
+
n,
|
|
9
|
+
{
|
|
10
|
+
as: "main",
|
|
11
|
+
"data-content-wrapper": !0,
|
|
12
|
+
ref: e,
|
|
13
|
+
role: "main",
|
|
14
|
+
"aria-label": r || "Main content",
|
|
15
|
+
...t
|
|
16
|
+
}
|
|
17
|
+
)
|
|
18
|
+
);
|
|
19
|
+
p.displayName = "ContentWrapper";
|
|
20
|
+
export {
|
|
21
|
+
p as ContentWrapper
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=ContentWrapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContentWrapper.js","sources":["../../../../src/components/Sidebar/ContentWrapper/ContentWrapper.tsx"],"sourcesContent":["// REACT CORE ==========================================================================================================\nimport React from \"react\";\n\n// ELEMENT =============================================================================================================\nimport { CommonAndHTMLProps } from \"../../Element/constants\";\n\n// STYLES ==============================================================================================================\nimport \"./content-wrapper.css\";\n\n// OTHER ===============================================================================================================\nimport { Element } from \"$element\";\n\nexport type ContentWrapperElementType = HTMLDivElement;\ninterface ContentWrapperCustomProps {\n label ? : string;\n // For aria-label\n}\nexport type ContentWrapperProps = CommonAndHTMLProps<ContentWrapperElementType> & ContentWrapperCustomProps;\n\n// COMPONENT ///////////////////////////////////////////////////////////////////////////////////////////////////////////\nexport const ContentWrapper = React.forwardRef(\n (\n { label, ...props }: ContentWrapperProps, ref: React.Ref<ContentWrapperElementType>) => {\n\n return (\n <Element<ContentWrapperElementType>\n as=\"main\"\n data-content-wrapper\n ref={ref}\n role=\"main\"\n aria-label={label || \"Main content\"}\n {...props}\n />\n );\n }\n);\nContentWrapper.displayName = \"ContentWrapper\";\n"],"names":["ContentWrapper","React","label","props","ref","jsx","Element"],"mappings":";;;;AAoBO,MAAMA,IAAiBC,EAAM;AAAA,EAChC,CACI,EAAE,OAAAC,GAAO,GAAGC,EAAA,GAA8BC,MAGtC,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACG,IAAG;AAAA,MACH,wBAAoB;AAAA,MACpB,KAAAF;AAAA,MACA,MAAK;AAAA,MACL,cAAYF,KAAS;AAAA,MACpB,GAAGC;AAAA,IAAA;AAAA,EAAA;AAIpB;AACAH,EAAe,cAAc;"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as a } from "react/jsx-runtime";
|
|
3
|
+
import i from "react";
|
|
4
|
+
/* empty css */
|
|
5
|
+
import { Element as s } from "../../Element/Element.js";
|
|
6
|
+
const m = i.forwardRef(
|
|
7
|
+
({ isSticky: o, ...e }, t) => {
|
|
8
|
+
let r = [];
|
|
9
|
+
return o && r.push("is-sticky"), /* @__PURE__ */ a(
|
|
10
|
+
s,
|
|
11
|
+
{
|
|
12
|
+
as: "footer",
|
|
13
|
+
"data-sidebar-footer": !0,
|
|
14
|
+
ref: t,
|
|
15
|
+
classNames: r,
|
|
16
|
+
...e
|
|
17
|
+
}
|
|
18
|
+
);
|
|
19
|
+
}
|
|
20
|
+
);
|
|
21
|
+
m.displayName = "SidebarFooter";
|
|
22
|
+
export {
|
|
23
|
+
m as SidebarFooter
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=SidebarFooter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SidebarFooter.js","sources":["../../../../src/components/Sidebar/SidebarFooter/SidebarFooter.tsx"],"sourcesContent":["// REACT CORE ==========================================================================================================\nimport React from \"react\";\n\n// ELEMENT =============================================================================================================\nimport { CommonAndHTMLProps } from \"../../Element/constants\";\n\n// STYLES ==============================================================================================================\nimport \"./sidebar-footer.css\";\n\n// OTHER ===============================================================================================================\nimport { Element } from \"$element\";\n\n// prettier-ignore\nexport interface SidebarFooterCustomProps {\n isSticky ? : boolean;\n}\n\nexport type SidebarFooterElementType = HTMLDivElement;\nexport type SidebarFooterNewProps = Omit<CommonAndHTMLProps<SidebarFooterElementType>, keyof SidebarFooterCustomProps>\n & SidebarFooterCustomProps;\n\nexport const SidebarFooter = React.forwardRef(\n ({ isSticky, ...props }: SidebarFooterNewProps, ref: React.Ref<SidebarFooterElementType>) => {\n let classNames = [];\n\n if (isSticky) {\n classNames.push(\"is-sticky\");\n }\n\n return (\n <Element<SidebarFooterElementType>\n as=\"footer\"\n data-sidebar-footer\n ref={ref}\n classNames={classNames}\n {...props}\n />\n );\n });\nSidebarFooter.displayName = \"SidebarFooter\";\n"],"names":["SidebarFooter","React","isSticky","props","ref","classNames","jsx","Element"],"mappings":";;;;AAqBO,MAAMA,IAAgBC,EAAM;AAAA,EAC/B,CAAC,EAAE,UAAAC,GAAU,GAAGC,EAAA,GAAgCC,MAA6C;AACzF,QAAIC,IAAa,CAAA;AAEjB,WAAIH,KACAG,EAAW,KAAK,WAAW,GAI3B,gBAAAC;AAAA,MAACC;AAAA,MAAA;AAAA,QACG,IAAG;AAAA,QACH,uBAAmB;AAAA,QACnB,KAAAH;AAAA,QACA,YAAAC;AAAA,QACC,GAAGF;AAAA,MAAA;AAAA,IAAA;AAAA,EAGhB;AAAC;AACLH,EAAc,cAAc;"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as i } from "react/jsx-runtime";
|
|
3
|
+
import s from "react";
|
|
4
|
+
/* empty css */
|
|
5
|
+
import { Element as d } from "../../Element/Element.js";
|
|
6
|
+
const m = s.forwardRef(
|
|
7
|
+
({ isSticky: r, ...a }, t) => {
|
|
8
|
+
let e = [];
|
|
9
|
+
return r && e.push("is-sticky"), /* @__PURE__ */ i(
|
|
10
|
+
d,
|
|
11
|
+
{
|
|
12
|
+
as: "header",
|
|
13
|
+
"data-sidebar-header": !0,
|
|
14
|
+
ref: t,
|
|
15
|
+
classNames: e,
|
|
16
|
+
...a
|
|
17
|
+
}
|
|
18
|
+
);
|
|
19
|
+
}
|
|
20
|
+
);
|
|
21
|
+
m.displayName = "SidebarHeader";
|
|
22
|
+
export {
|
|
23
|
+
m as SidebarHeader
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=SidebarHeader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SidebarHeader.js","sources":["../../../../src/components/Sidebar/SidebarHeader/SidebarHeader.tsx"],"sourcesContent":["// REACT CORE ==========================================================================================================\nimport React from \"react\";\n\n// ELEMENT =============================================================================================================\nimport { CommonAndHTMLProps } from \"../../Element/constants\";\n\n// STYLES ==============================================================================================================\nimport \"./sidebar-header.css\";\n\n// OTHER ===============================================================================================================\nimport { Element } from \"$element\";\n\n// prettier-ignore\nexport interface SidebarHeaderCustomProps {\n isSticky ? : boolean;\n}\n\nexport type SidebarHeaderElementType = HTMLDivElement;\nexport type SidebarHeaderNewProps = Omit<CommonAndHTMLProps<SidebarHeaderElementType>, keyof SidebarHeaderCustomProps>\n & SidebarHeaderCustomProps;\n\nexport const SidebarHeader = React.forwardRef(\n ({ isSticky, ...props }: SidebarHeaderNewProps, ref: React.Ref<SidebarHeaderElementType>) => {\n let classNames = [];\n\n if (isSticky) {\n classNames.push(\"is-sticky\");\n }\n\n return (\n <Element<SidebarHeaderElementType>\n as=\"header\"\n data-sidebar-header\n ref={ref}\n classNames={classNames}\n {...props}\n />\n );\n }\n);\nSidebarHeader.displayName = \"SidebarHeader\";\n"],"names":["SidebarHeader","React","isSticky","props","ref","classNames","jsx","Element"],"mappings":";;;;AAqBO,MAAMA,IAAgBC,EAAM;AAAA,EAC/B,CAAC,EAAE,UAAAC,GAAU,GAAGC,EAAA,GAAgCC,MAA6C;AACzF,QAAIC,IAAa,CAAA;AAEjB,WAAIH,KACAG,EAAW,KAAK,WAAW,GAI3B,gBAAAC;AAAA,MAACC;AAAA,MAAA;AAAA,QACG,IAAG;AAAA,QACH,uBAAmB;AAAA,QACnB,KAAAH;AAAA,QACA,YAAAC;AAAA,QACC,GAAGF;AAAA,MAAA;AAAA,IAAA;AAAA,EAGhB;AACJ;AACAH,EAAc,cAAc;"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsxs as o, jsx as p } from "react/jsx-runtime";
|
|
3
|
+
import f from "react";
|
|
4
|
+
import { Div as d } from "../../Element/Tags.js";
|
|
5
|
+
/* empty css */
|
|
6
|
+
import { Element as l } from "../../Element/Element.js";
|
|
7
|
+
const c = f.forwardRef(
|
|
8
|
+
({ hasAlert: i, hasEmptyIcon: r, hasNoIcon: a, children: s, ...t }, m) => {
|
|
9
|
+
let e = [];
|
|
10
|
+
return i && e.push("has-alert"), r ? e.push("has-empty-icon") : a && e.push("has-no-icon"), /* @__PURE__ */ o(
|
|
11
|
+
l,
|
|
12
|
+
{
|
|
13
|
+
as: "div",
|
|
14
|
+
"data-sidebar-item": !0,
|
|
15
|
+
ref: m,
|
|
16
|
+
classNames: e,
|
|
17
|
+
...t,
|
|
18
|
+
children: [
|
|
19
|
+
r && /* @__PURE__ */ p(d, { className: "empty-icon-wrapper" }),
|
|
20
|
+
s
|
|
21
|
+
]
|
|
22
|
+
}
|
|
23
|
+
);
|
|
24
|
+
}
|
|
25
|
+
);
|
|
26
|
+
c.displayName = "SidebarItem";
|
|
27
|
+
export {
|
|
28
|
+
c as SidebarItem
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=SidebarItem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SidebarItem.js","sources":["../../../../src/components/Sidebar/SidebarItem/SidebarItem.tsx"],"sourcesContent":["// REACT CORE ==========================================================================================================\nimport React from \"react\";\n\n// LOCAL COMPONENTS ====================================================================================================\nimport { CommonAndHTMLProps } from \"../../Element/constants\";\nimport { Div } from \"$tags\";\nimport { Element } from \"$element\";\n\n// STYLES ==============================================================================================================\nimport \"./sidebar-item.css\";\n\ntype BaseItemProps = {\n hasAlert ? : boolean;\n}\n\ntype IconProps =\n | {\n hasEmptyIcon : boolean;\n hasNoIcon ? : never;\n } // If hasEmptyIcon is set, hasNoIcon can't be set\n | {\n hasEmptyIcon ? : never;\n hasNoIcon : boolean;\n } // If hasNoIcon is set, hasEmptyIcon can't be set\n | {\n hasEmptyIcon ? : never;\n hasNoIcon ? : never;\n } // Neither is set\n\nexport type SidebarItemCustomProps = BaseItemProps & IconProps;\n\nexport type SidebarItemElementType = HTMLDivElement;\nexport type SidebarItemNewProps = Omit<CommonAndHTMLProps<SidebarItemElementType>, keyof SidebarItemCustomProps> &\n SidebarItemCustomProps;\n\nexport const SidebarItem = React.forwardRef(\n (\n {hasAlert, hasEmptyIcon, hasNoIcon, children, ...props} : SidebarItemNewProps,\n ref : React.Ref<SidebarItemElementType>) => {\n let classNames = [];\n\n if (hasAlert) {\n classNames.push(\"has-alert\");\n }\n\n if (hasEmptyIcon) {\n classNames.push(\"has-empty-icon\");\n } else if (hasNoIcon) {\n classNames.push(\"has-no-icon\");\n }\n\n return (\n <Element<SidebarItemElementType>\n as=\"div\"\n data-sidebar-item\n ref={ref}\n classNames={classNames}\n {...props}\n >\n {hasEmptyIcon && <Div className=\"empty-icon-wrapper\" />}\n {children}\n </Element>\n );\n },\n);\nSidebarItem.displayName = \"SidebarItem\";\n"],"names":["SidebarItem","React","hasAlert","hasEmptyIcon","hasNoIcon","children","props","ref","classNames","jsxs","Element","jsx","Div"],"mappings":";;;;;AAmCO,MAAMA,IAAcC,EAAM;AAAA,EAC7B,CACI,EAAC,UAAAC,GAAU,cAAAC,GAAc,WAAAC,GAAW,UAAAC,GAAU,GAAGC,EAAA,GACjDC,MAA4C;AAC5C,QAAIC,IAAa,CAAA;AAEjB,WAAIN,KACAM,EAAW,KAAK,WAAW,GAG3BL,IACAK,EAAW,KAAK,gBAAgB,IACzBJ,KACPI,EAAW,KAAK,aAAa,GAI7B,gBAAAC;AAAA,MAACC;AAAA,MAAA;AAAA,QACG,IAAG;AAAA,QACH,qBAAiB;AAAA,QACjB,KAAAH;AAAA,QACA,YAAAC;AAAA,QACC,GAAGF;AAAA,QAEH,UAAA;AAAA,UAAAH,KAAgB,gBAAAQ,EAACC,GAAA,EAAI,WAAU,qBAAA,CAAqB;AAAA,UACpDP;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAGb;AACJ;AACAL,EAAY,cAAc;"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsxs as a, jsx as m } from "react/jsx-runtime";
|
|
3
|
+
import s from "react";
|
|
4
|
+
/* empty css */
|
|
5
|
+
import { Element as i } from "../../Element/Element.js";
|
|
6
|
+
const p = s.forwardRef(
|
|
7
|
+
({
|
|
8
|
+
title: r,
|
|
9
|
+
children: e,
|
|
10
|
+
...o
|
|
11
|
+
}, t) => /* @__PURE__ */ a(
|
|
12
|
+
i,
|
|
13
|
+
{
|
|
14
|
+
as: "nav",
|
|
15
|
+
"data-sidebar-items-group": !0,
|
|
16
|
+
ref: t,
|
|
17
|
+
...o,
|
|
18
|
+
children: [
|
|
19
|
+
r && /* @__PURE__ */ m("p", { className: "group-title", children: r }),
|
|
20
|
+
e
|
|
21
|
+
]
|
|
22
|
+
}
|
|
23
|
+
)
|
|
24
|
+
);
|
|
25
|
+
p.displayName = "SidebarItemsGroup";
|
|
26
|
+
export {
|
|
27
|
+
p as SidebarItemsGroup
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=SidebarItemsGroup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SidebarItemsGroup.js","sources":["../../../../src/components/Sidebar/SidebarItemsGroup/SidebarItemsGroup.tsx"],"sourcesContent":["// REACT CORE ==========================================================================================================\nimport React from \"react\";\n\n// LOCAL COMPONENTS ====================================================================================================\nimport { CommonAndHTMLProps } from \"../../Element/constants\";\nimport { Element } from \"$element\";\n\n// STYLES ==============================================================================================================\nimport \"./sidebar-items-group.css\";\n\n// prettier-ignore\nexport interface SidebarItemsGroupCustomProps {\n title ? : string;\n}\n\nexport type SidebarItemsGroupElementType = HTMLDivElement;\nexport type SidebarItemsGroupNewProps = Omit<CommonAndHTMLProps<SidebarItemsGroupElementType>,\n keyof SidebarItemsGroupCustomProps> & SidebarItemsGroupCustomProps;\n\nexport const SidebarItemsGroup = React.forwardRef(\n (\n {\n title,\n children,\n ...props\n }: SidebarItemsGroupNewProps, forwardedRef: React.Ref<SidebarItemsGroupElementType>) => {\n\n return (\n <Element<SidebarItemsGroupElementType>\n as=\"nav\"\n data-sidebar-items-group\n ref={forwardedRef}\n {...props}\n >\n {title && <p className=\"group-title\">{title}</p>}\n {children}\n </Element>\n );\n },\n);\nSidebarItemsGroup.displayName = \"SidebarItemsGroup\";\n"],"names":["SidebarItemsGroup","React","title","children","props","forwardedRef","jsxs","Element","jsx"],"mappings":";;;;AAmBO,MAAMA,IAAoBC,EAAM;AAAA,EACnC,CACI;AAAA,IACI,OAAAC;AAAA,IACA,UAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,GACuBC,MAG1B,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACG,IAAG;AAAA,MACH,4BAAwB;AAAA,MACxB,KAAKF;AAAA,MACJ,GAAGD;AAAA,MAEH,UAAA;AAAA,QAAAF,KAAS,gBAAAM,EAAC,KAAA,EAAE,WAAU,eAAe,UAAAN,GAAM;AAAA,QAC3CC;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAIjB;AACAH,EAAkB,cAAc;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SidebarWrapper.d.ts","sourceRoot":"","sources":["../../../../src/components/Sidebar/SidebarWrapper/SidebarWrapper.tsx"],"names":[],"mappings":"AACA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAG3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAO7D,OAAO,uBAAuB,CAAC;AAG/B,MAAM,WAAW,yBAAyB;IACtC,SAAoB,CAAC,EAAG,OAAO,CAAC;IAChC,mBAAoB,CAAC,EAAG,MAAM,IAAI,CAAC;IACnC,iBAAoB,CAAC,EAAG,OAAO,CAAC;CACnC;AAED,MAAM,MAAM,yBAAyB,GAAG,cAAc,CAAC;AACvD,MAAM,MAAM,sBAAsB,GAAG,IAAI,CAAC,kBAAkB,CAAC,yBAAyB,CAAC,EACnF,MAAM,yBAAyB,CAAC,GAAG,yBAAyB,CAAC;AAEjE,eAAO,MAAM,cAAc,
|
|
1
|
+
{"version":3,"file":"SidebarWrapper.d.ts","sourceRoot":"","sources":["../../../../src/components/Sidebar/SidebarWrapper/SidebarWrapper.tsx"],"names":[],"mappings":"AACA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAG3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAO7D,OAAO,uBAAuB,CAAC;AAG/B,MAAM,WAAW,yBAAyB;IACtC,SAAoB,CAAC,EAAG,OAAO,CAAC;IAChC,mBAAoB,CAAC,EAAG,MAAM,IAAI,CAAC;IACnC,iBAAoB,CAAC,EAAG,OAAO,CAAC;CACnC;AAED,MAAM,MAAM,yBAAyB,GAAG,cAAc,CAAC;AACvD,MAAM,MAAM,sBAAsB,GAAG,IAAI,CAAC,kBAAkB,CAAC,yBAAyB,CAAC,EACnF,MAAM,yBAAyB,CAAC,GAAG,yBAAyB,CAAC;AAEjE,eAAO,MAAM,cAAc,8KAuC1B,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as o } from "react/jsx-runtime";
|
|
3
|
+
import f, { useRef as m, useImperativeHandle as d } from "react";
|
|
4
|
+
import { useClickOutside as n } from "../../../hooks/UseClickOutside.js";
|
|
5
|
+
/* empty css */
|
|
6
|
+
import { Element as u } from "../../Element/Element.js";
|
|
7
|
+
const l = f.forwardRef(
|
|
8
|
+
({
|
|
9
|
+
collapsed: t,
|
|
10
|
+
closeOnClickOutside: a,
|
|
11
|
+
showMobileSidebar: p,
|
|
12
|
+
...i
|
|
13
|
+
}, s) => {
|
|
14
|
+
const e = m(null);
|
|
15
|
+
d(s, () => e.current), n(e, () => {
|
|
16
|
+
typeof a == "function" && a();
|
|
17
|
+
});
|
|
18
|
+
let r = [];
|
|
19
|
+
return t && r.push("collapsed"), p && r.push("show-sidebar"), /* @__PURE__ */ o(
|
|
20
|
+
u,
|
|
21
|
+
{
|
|
22
|
+
as: "aside",
|
|
23
|
+
"data-sidebar-wrapper": !0,
|
|
24
|
+
ref: e,
|
|
25
|
+
classNames: r,
|
|
26
|
+
...i
|
|
27
|
+
}
|
|
28
|
+
);
|
|
29
|
+
}
|
|
30
|
+
);
|
|
31
|
+
l.displayName = "SidebarWrapper";
|
|
32
|
+
export {
|
|
33
|
+
l as SidebarWrapper
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=SidebarWrapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SidebarWrapper.js","sources":["../../../../src/components/Sidebar/SidebarWrapper/SidebarWrapper.tsx"],"sourcesContent":["// REACT CORE ==========================================================================================================\nimport React, { useRef, useImperativeHandle } from \"react\";\n\n// LOCAL COMPONENTS ====================================================================================================\nimport { CommonAndHTMLProps } from \"../../Element/constants\";\nimport { Element } from \"$element\";\n\n// HOOKS ===============================================================================================================\nimport { useClickOutside } from \"../../../hooks/UseClickOutside\";\n\n// STYLES ==============================================================================================================\nimport \"./sidebar-wrapper.css\";\n\n// prettier-ignore\nexport interface SidebarWrapperCustomProps {\n collapsed ? : boolean;\n closeOnClickOutside ? : () => void;\n showMobileSidebar ? : boolean;\n}\n\nexport type SidebarWrapperElementType = HTMLDivElement;\nexport type SidebarWrapperNewProps = Omit<CommonAndHTMLProps<SidebarWrapperElementType>,\n keyof SidebarWrapperCustomProps> & SidebarWrapperCustomProps;\n\nexport const SidebarWrapper = React.forwardRef(\n (\n {\n collapsed,\n closeOnClickOutside,\n showMobileSidebar,\n ...props\n } : SidebarWrapperNewProps, forwardedRef : React.Ref<SidebarWrapperElementType>) => {\n\n const internalRef = useRef<HTMLDivElement>(null);\n\n useImperativeHandle(forwardedRef, () => internalRef.current!);\n\n useClickOutside(internalRef, () => {\n if (typeof closeOnClickOutside === \"function\") {\n closeOnClickOutside();\n }\n });\n\n let classNames = [];\n\n if (collapsed) {\n classNames.push(\"collapsed\");\n }\n\n if (showMobileSidebar) {\n classNames.push(\"show-sidebar\");\n }\n\n return (\n <Element<SidebarWrapperElementType>\n as=\"aside\"\n data-sidebar-wrapper\n ref={internalRef}\n classNames={classNames}\n {...props}\n />\n );\n },\n);\nSidebarWrapper.displayName = \"SidebarWrapper\";\n"],"names":["SidebarWrapper","React","collapsed","closeOnClickOutside","showMobileSidebar","props","forwardedRef","internalRef","useRef","useImperativeHandle","useClickOutside","classNames","jsx","Element"],"mappings":";;;;;AAwBO,MAAMA,IAAiBC,EAAM;AAAA,EAChC,CACI;AAAA,IACI,WAAAC;AAAA,IACA,qBAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,GACqBC,MAAwD;AAEpF,UAAMC,IAAcC,EAAuB,IAAI;AAE/C,IAAAC,EAAoBH,GAAc,MAAMC,EAAY,OAAQ,GAE5DG,EAAgBH,GAAa,MAAM;AAC/B,MAAI,OAAOJ,KAAwB,cAC/BA,EAAA;AAAA,IAER,CAAC;AAED,QAAIQ,IAAa,CAAA;AAEjB,WAAIT,KACAS,EAAW,KAAK,WAAW,GAG3BP,KACAO,EAAW,KAAK,cAAc,GAI9B,gBAAAC;AAAA,MAACC;AAAA,MAAA;AAAA,QACG,IAAG;AAAA,QACH,wBAAoB;AAAA,QACpB,KAAKN;AAAA,QACL,YAAAI;AAAA,QACC,GAAGN;AAAA,MAAA;AAAA,IAAA;AAAA,EAGhB;AACJ;AACAL,EAAe,cAAc;"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as p } from "react/jsx-runtime";
|
|
3
|
+
import d, { useContext as b, createContext as g } from "react";
|
|
4
|
+
/* empty css */
|
|
5
|
+
import { Element as v } from "../Element/Element.js";
|
|
6
|
+
const x = g({
|
|
7
|
+
effect: "wave",
|
|
8
|
+
animate: !0
|
|
9
|
+
}), $ = d.forwardRef(({
|
|
10
|
+
variant: e = "line",
|
|
11
|
+
width: t,
|
|
12
|
+
height: r,
|
|
13
|
+
shape: s,
|
|
14
|
+
effect: u,
|
|
15
|
+
loadingLabel: f,
|
|
16
|
+
...l
|
|
17
|
+
}, n) => {
|
|
18
|
+
const i = b(x), c = u || i.effect, o = f || i.loadingLabel || "Loading...";
|
|
19
|
+
let a = [];
|
|
20
|
+
e && a.push(`variant-${e}`), s && a.push(`shape-${s}`), c && a.push(`effect-${c}`);
|
|
21
|
+
const m = t || "100%", y = e === "circle" ? (typeof t == "number" ? `${t}px` : t) || r || "100%" : r, k = {
|
|
22
|
+
width: m,
|
|
23
|
+
height: y,
|
|
24
|
+
aspectRatio: e === "circle" ? "1 / 1" : "auto",
|
|
25
|
+
...l.style
|
|
26
|
+
};
|
|
27
|
+
return /* @__PURE__ */ p(
|
|
28
|
+
v,
|
|
29
|
+
{
|
|
30
|
+
as: "div",
|
|
31
|
+
"data-skeleton": !0,
|
|
32
|
+
ref: n,
|
|
33
|
+
classNames: a,
|
|
34
|
+
style: k,
|
|
35
|
+
role: "progressbar",
|
|
36
|
+
"aria-busy": "true",
|
|
37
|
+
"aria-valuemin": 0,
|
|
38
|
+
"aria-valuemax": 100,
|
|
39
|
+
"aria-valuetext": o,
|
|
40
|
+
"aria-label": o,
|
|
41
|
+
...l
|
|
42
|
+
}
|
|
43
|
+
);
|
|
44
|
+
});
|
|
45
|
+
$.displayName = "Skeleton";
|
|
46
|
+
const h = d.forwardRef(({
|
|
47
|
+
effect: e = "wave",
|
|
48
|
+
spacing: t = "small",
|
|
49
|
+
animate: r = !0,
|
|
50
|
+
repeat: s = 1,
|
|
51
|
+
direction: u = "vertical",
|
|
52
|
+
children: f,
|
|
53
|
+
classNames: l = [],
|
|
54
|
+
loadingLabel: n = "Loading content...",
|
|
55
|
+
...i
|
|
56
|
+
}, c) => {
|
|
57
|
+
const o = [
|
|
58
|
+
`direction-${u}`,
|
|
59
|
+
e && `effect-${e}`,
|
|
60
|
+
...l
|
|
61
|
+
];
|
|
62
|
+
return t && o.push(`spacing-${t}`), /* @__PURE__ */ p(x.Provider, { value: { effect: e, animate: r, loadingLabel: n }, children: /* @__PURE__ */ p(
|
|
63
|
+
v,
|
|
64
|
+
{
|
|
65
|
+
as: "div",
|
|
66
|
+
ref: c,
|
|
67
|
+
"data-skeleton-group": !0,
|
|
68
|
+
classNames: o,
|
|
69
|
+
role: "status",
|
|
70
|
+
"aria-busy": "true",
|
|
71
|
+
"aria-label": n,
|
|
72
|
+
...i,
|
|
73
|
+
children: Array(s).fill(f).map((a, m) => d.cloneElement(a, {
|
|
74
|
+
key: m
|
|
75
|
+
}))
|
|
76
|
+
}
|
|
77
|
+
) });
|
|
78
|
+
});
|
|
79
|
+
h.displayName = "SkeletonGroup";
|
|
80
|
+
export {
|
|
81
|
+
$ as Skeleton,
|
|
82
|
+
h as SkeletonGroup
|
|
83
|
+
};
|
|
84
|
+
//# sourceMappingURL=Skeleton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Skeleton.js","sources":["../../../src/components/Skeleton/Skeleton.tsx"],"sourcesContent":["// REACT CORE ==========================================================================================================\nimport React, { createContext, useContext } from \"react\";\n\n// ELEMENT =============================================================================================================\nimport { CommonAndHTMLProps, ShapeTypes, SpacingTypes } from \"../Element/constants\";\nimport { Element } from \"$element\";\n\n// STYLES ==============================================================================================================\nimport \"./skeleton.css\";\n\n// Common skeleton props shared between Skeleton and SkeletonGroup\ninterface CommonSkeletonProps {\n effect ? : \"pulse\" | \"wave\" | \"none\";\n animate ? : boolean;\n loadingLabel ? : string;\n // Accessible label for loading state\n}\n\n// Context to share common properties\nconst SkeletonContext = createContext<CommonSkeletonProps>({\n effect : \"wave\",\n animate : true,\n});\n\n// Props specific to individual Skeleton elements\ninterface SkeletonCustomProps extends CommonSkeletonProps {\n variant ? : \"line\" | \"circle\" | \"block\";\n width ? : string | number;\n height ? : string | number;\n shape ? : ShapeTypes;\n}\n\n// Props specific to SkeletonGroup\ninterface SkeletonGroupCustomProps extends CommonSkeletonProps {\n repeat ? : number;\n direction ? : \"vertical\" | \"horizontal\";\n spacing ? : SpacingTypes;\n}\n\nexport type SkeletonElementType = HTMLDivElement;\nexport type SkeletonProps =\n Omit<CommonAndHTMLProps<SkeletonElementType>, keyof SkeletonCustomProps>\n & SkeletonCustomProps;\nexport type SkeletonGroupProps =\n Omit<CommonAndHTMLProps<SkeletonElementType>, keyof SkeletonGroupCustomProps>\n & SkeletonGroupCustomProps;\n\n// COMPONENTS //////////////////////////////////////////////////////////////////////////////////////////////////////////\nexport const Skeleton = React.forwardRef((\n {\n variant = \"line\",\n width,\n height,\n shape,\n effect: localEffect,\n loadingLabel,\n ...props\n }: SkeletonProps, ref: React.Ref<SkeletonElementType>) => {\n // Get shared properties from group context\n const groupContext = useContext(SkeletonContext);\n\n const effectiveEffect = localEffect || groupContext.effect;\n const effectiveLabel = loadingLabel || groupContext.loadingLabel || \"Loading...\";\n\n let classNames = [];\n\n if (variant) {\n classNames.push(`variant-${variant}`);\n }\n\n if (shape) {\n classNames.push(`shape-${shape}`);\n }\n\n if (effectiveEffect) {\n classNames.push(`effect-${effectiveEffect}`);\n }\n\n // Handle circle variant dimensions\n const computedWidth = width || \"100%\";\n const computedHeight = variant === \"circle\"\n ? (typeof width === \"number\" ? `${width}px` : width) || height || \"100%\"\n : height;\n\n const style = {\n width: computedWidth,\n height: computedHeight,\n aspectRatio: variant === \"circle\" ? \"1 / 1\" : \"auto\",\n ...props.style,\n };\n\n return (\n <Element\n as=\"div\"\n data-skeleton\n ref={ref}\n classNames={classNames}\n style={style}\n role=\"progressbar\"\n aria-busy=\"true\"\n aria-valuemin={0}\n aria-valuemax={100}\n aria-valuetext={effectiveLabel}\n aria-label={effectiveLabel}\n {...props}\n />\n );\n});\nSkeleton.displayName = \"Skeleton\";\n\nexport const SkeletonGroup = React.forwardRef((\n {\n effect = \"wave\",\n spacing = \"small\",\n animate = true,\n repeat = 1,\n direction = \"vertical\",\n children,\n classNames = [],\n loadingLabel = \"Loading content...\",\n ...props\n }: SkeletonGroupProps, ref: React.Ref<SkeletonElementType>) => {\n\n const groupClassNames = [\n `direction-${direction}`,\n effect && `effect-${effect}`,\n ...classNames,\n ];\n\n if (spacing) {\n groupClassNames.push(`spacing-${spacing}`);\n }\n\n return (\n <SkeletonContext.Provider value={{ effect, animate, loadingLabel }}>\n <Element\n as=\"div\"\n ref={ref}\n data-skeleton-group\n classNames={groupClassNames}\n role=\"status\"\n aria-busy=\"true\"\n aria-label={loadingLabel}\n {...props}\n >\n {Array(repeat).fill(children).map((child, index) => (\n React.cloneElement(child as React.ReactElement, {\n key: index\n })\n ))}\n </Element>\n </SkeletonContext.Provider>\n );\n});\nSkeletonGroup.displayName = \"SkeletonGroup\";\n"],"names":["SkeletonContext","createContext","Skeleton","React","variant","width","height","shape","localEffect","loadingLabel","props","ref","groupContext","useContext","effectiveEffect","effectiveLabel","classNames","computedWidth","computedHeight","style","jsx","Element","SkeletonGroup","effect","spacing","animate","repeat","direction","children","groupClassNames","child","index"],"mappings":";;;;AAmBA,MAAMA,IAAkBC,EAAmC;AAAA,EACvD,QAAY;AAAA,EACZ,SAAY;AAChB,CAAC,GA0BYC,IAAWC,EAAM,WAAW,CACrC;AAAA,EACI,SAAAC,IAAU;AAAA,EACV,OAAAC;AAAA,EACA,QAAAC;AAAA,EACA,OAAAC;AAAA,EACA,QAAQC;AAAA,EACR,cAAAC;AAAA,EACA,GAAGC;AACP,GAAkBC,MAAwC;AAE1D,QAAMC,IAAeC,EAAWb,CAAe,GAEzCc,IAAkBN,KAAeI,EAAa,QAC9CG,IAAiBN,KAAgBG,EAAa,gBAAgB;AAEpE,MAAII,IAAa,CAAA;AAEjB,EAAIZ,KACAY,EAAW,KAAK,WAAWZ,CAAO,EAAE,GAGpCG,KACAS,EAAW,KAAK,SAAST,CAAK,EAAE,GAGhCO,KACAE,EAAW,KAAK,UAAUF,CAAe,EAAE;AAI/C,QAAMG,IAAgBZ,KAAS,QACzBa,IAAiBd,MAAY,YAC5B,OAAOC,KAAU,WAAW,GAAGA,CAAK,OAAOA,MAAUC,KAAU,SAChEA,GAEAa,IAAQ;AAAA,IACV,OAAOF;AAAA,IACP,QAAQC;AAAA,IACR,aAAad,MAAY,WAAW,UAAU;AAAA,IAC9C,GAAGM,EAAM;AAAA,EAAA;AAGb,SACI,gBAAAU;AAAA,IAACC;AAAA,IAAA;AAAA,MACG,IAAG;AAAA,MACH,iBAAa;AAAA,MACb,KAAAV;AAAA,MACA,YAAAK;AAAA,MACA,OAAAG;AAAA,MACA,MAAK;AAAA,MACL,aAAU;AAAA,MACV,iBAAe;AAAA,MACf,iBAAe;AAAA,MACf,kBAAgBJ;AAAA,MAChB,cAAYA;AAAA,MACX,GAAGL;AAAA,IAAA;AAAA,EAAA;AAGhB,CAAC;AACDR,EAAS,cAAc;AAEhB,MAAMoB,IAAgBnB,EAAM,WAAW,CAC1C;AAAA,EACI,QAAAoB,IAAS;AAAA,EACT,SAAAC,IAAU;AAAA,EACV,SAAAC,IAAU;AAAA,EACV,QAAAC,IAAS;AAAA,EACT,WAAAC,IAAY;AAAA,EACZ,UAAAC;AAAA,EACA,YAAAZ,IAAa,CAAA;AAAA,EACb,cAAAP,IAAe;AAAA,EACf,GAAGC;AACP,GAAuBC,MAAwC;AAE/D,QAAMkB,IAAkB;AAAA,IACpB,aAAaF,CAAS;AAAA,IACtBJ,KAAU,UAAUA,CAAM;AAAA,IAC1B,GAAGP;AAAA,EAAA;AAGP,SAAIQ,KACAK,EAAgB,KAAK,WAAWL,CAAO,EAAE,GAIzC,gBAAAJ,EAACpB,EAAgB,UAAhB,EAAyB,OAAO,EAAE,QAAAuB,GAAQ,SAAAE,GAAS,cAAAhB,KAChD,UAAA,gBAAAW;AAAA,IAACC;AAAA,IAAA;AAAA,MACG,IAAG;AAAA,MACH,KAAAV;AAAA,MACA,uBAAmB;AAAA,MACnB,YAAYkB;AAAA,MACZ,MAAK;AAAA,MACL,aAAU;AAAA,MACV,cAAYpB;AAAA,MACX,GAAGC;AAAA,MAEH,UAAA,MAAMgB,CAAM,EAAE,KAAKE,CAAQ,EAAE,IAAI,CAACE,GAAOC,MACtC5B,EAAM,aAAa2B,GAA6B;AAAA,QAC5C,KAAKC;AAAA,MAAA,CACR,CACJ;AAAA,IAAA;AAAA,EAAA,GAET;AAER,CAAC;AACDT,EAAc,cAAc;"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as o } from "react/jsx-runtime";
|
|
3
|
+
import m from "react";
|
|
4
|
+
/* empty css */
|
|
5
|
+
import { Element as s } from "../Element/Element.js";
|
|
6
|
+
const p = m.forwardRef(
|
|
7
|
+
({
|
|
8
|
+
size: r = "medium",
|
|
9
|
+
loadingText: a = "Loading...",
|
|
10
|
+
...i
|
|
11
|
+
}, t) => {
|
|
12
|
+
let e = [];
|
|
13
|
+
return r && e.push(`size-${r}`), /* @__PURE__ */ o(
|
|
14
|
+
s,
|
|
15
|
+
{
|
|
16
|
+
as: "div",
|
|
17
|
+
"data-spinner": !0,
|
|
18
|
+
ref: t,
|
|
19
|
+
classNames: e,
|
|
20
|
+
role: "status",
|
|
21
|
+
"aria-busy": "true",
|
|
22
|
+
"aria-live": "polite",
|
|
23
|
+
"aria-label": a,
|
|
24
|
+
...i
|
|
25
|
+
}
|
|
26
|
+
);
|
|
27
|
+
}
|
|
28
|
+
);
|
|
29
|
+
p.displayName = "Spinner";
|
|
30
|
+
export {
|
|
31
|
+
p as Spinner
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=Spinner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Spinner.js","sources":["../../../src/components/Spinner/Spinner.tsx"],"sourcesContent":["// REACT CORE ==========================================================================================================\nimport React from \"react\";\n\n// ELEMENT =============================================================================================================\nimport { CommonAndHTMLProps } from \"../Element/constants\";\nimport { Element } from \"$element\";\n\n// STYLES ==============================================================================================================\nimport \"./spinner.css\";\n\n// prettier-ignore\nexport interface SpinnerCustomProps {\n size ? : \"tiny\" | \"small\" | \"medium\" | \"large\" | \"huge\";\n loadingText ? : string;\n // Custom loading message for screen readers\n}\n\nexport type SpinnerElementType = HTMLDivElement;\nexport type SpinnerProps = Omit<CommonAndHTMLProps<SpinnerElementType>, keyof SpinnerCustomProps> & SpinnerCustomProps;\n\n// COMPONENT //////////////////////////////////////////////////////////////////////////////////////////////////////////\nexport const Spinner = React.forwardRef((\n {\n size = \"medium\",\n loadingText = \"Loading...\",\n ...props\n }: SpinnerProps,\n ref: React.Ref<SpinnerElementType>,\n ) => {\n let classNames = [];\n\n if (size) {\n classNames.push(`size-${size}`);\n }\n\n return (\n <Element<SpinnerElementType>\n as=\"div\"\n data-spinner\n ref={ref}\n classNames={classNames}\n role=\"status\"\n aria-busy=\"true\"\n aria-live=\"polite\"\n aria-label={loadingText}\n {...props}\n />\n );\n },\n);\nSpinner.displayName = \"Spinner\";\n"],"names":["Spinner","React","size","loadingText","props","ref","classNames","jsx","Element"],"mappings":";;;;AAqBO,MAAMA,IAAUC,EAAM;AAAA,EAAW,CAChC;AAAA,IACI,MAAAC,IAAO;AAAA,IACP,aAAAC,IAAc;AAAA,IACd,GAAGC;AAAA,EAAA,GAEPC,MACC;AACD,QAAIC,IAAa,CAAA;AAEjB,WAAIJ,KACAI,EAAW,KAAK,QAAQJ,CAAI,EAAE,GAI9B,gBAAAK;AAAA,MAACC;AAAA,MAAA;AAAA,QACG,IAAG;AAAA,QACH,gBAAY;AAAA,QACZ,KAAAH;AAAA,QACA,YAAAC;AAAA,QACA,MAAK;AAAA,QACL,aAAU;AAAA,QACV,aAAU;AAAA,QACV,cAAYH;AAAA,QACX,GAAGC;AAAA,MAAA;AAAA,IAAA;AAAA,EAGhB;AACJ;AACAJ,EAAQ,cAAc;"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsxs as C, jsx as w } from "react/jsx-runtime";
|
|
3
|
+
import t from "react";
|
|
4
|
+
/* empty css */
|
|
5
|
+
import { Element as b } from "../Element/Element.js";
|
|
6
|
+
const v = t.forwardRef(
|
|
7
|
+
({
|
|
8
|
+
bordersFor: e,
|
|
9
|
+
isStriped: a,
|
|
10
|
+
highlightRowOnHover: u,
|
|
11
|
+
isFullWidth: f,
|
|
12
|
+
alignText: i,
|
|
13
|
+
caption: n,
|
|
14
|
+
summary: p,
|
|
15
|
+
hasColSpan: d,
|
|
16
|
+
children: r,
|
|
17
|
+
...m
|
|
18
|
+
}, c) => {
|
|
19
|
+
let o = [];
|
|
20
|
+
e && o.push(`bordered-${e}`), a && o.push("striped"), u && o.push("hoverable"), f && o.push("full-width"), i && o.push(`align-text-${i}`);
|
|
21
|
+
const h = t.Children.count(r);
|
|
22
|
+
return /* @__PURE__ */ C(
|
|
23
|
+
b,
|
|
24
|
+
{
|
|
25
|
+
as: "table",
|
|
26
|
+
classNames: o,
|
|
27
|
+
ref: c,
|
|
28
|
+
role: "table",
|
|
29
|
+
"aria-rowcount": h || void 0,
|
|
30
|
+
"aria-colcount": d ? void 0 : (() => {
|
|
31
|
+
if (!r || !t.isValidElement(r)) return;
|
|
32
|
+
const s = t.Children.toArray(r)[0];
|
|
33
|
+
if (t.isValidElement(s)) {
|
|
34
|
+
const l = s.props;
|
|
35
|
+
if (l.children)
|
|
36
|
+
return t.Children.count(l.children);
|
|
37
|
+
}
|
|
38
|
+
})(),
|
|
39
|
+
summary: p,
|
|
40
|
+
...m,
|
|
41
|
+
children: [
|
|
42
|
+
n && /* @__PURE__ */ w("caption", { children: n }),
|
|
43
|
+
r
|
|
44
|
+
]
|
|
45
|
+
}
|
|
46
|
+
);
|
|
47
|
+
}
|
|
48
|
+
);
|
|
49
|
+
v.displayName = "Table";
|
|
50
|
+
export {
|
|
51
|
+
v as Table
|
|
52
|
+
};
|
|
53
|
+
//# sourceMappingURL=Table.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Table.js","sources":["../../../src/components/Table/Table.tsx"],"sourcesContent":["// FRAMEWORK ===========================================================================================================\nimport React from \"react\";\n\n// FICTOAN =============================================================================================================\nimport { Element } from \"../Element\";\n\n// STYLES ==============================================================================================================\nimport \"./table.css\";\n\n// TYPES ===============================================================================================================\nimport { CommonAndHTMLProps } from \"../Element/constants\";\n\n// prettier-ignore\nexport interface TableCustomProps {\n bordersFor ? : \"rows\" | \"columns\" | \"both\";\n alignText ? : \"left\" | \"right\" | \"centre\" | \"center\";\n isStriped ? : boolean;\n highlightRowOnHover ? : boolean;\n isFullWidth ? : boolean;\n caption ? : string; // Accessible table caption\n summary ? : string; // Description of table structure for complex tables\n hasColSpan ? : boolean; // Indicates if table has colspan/rowspan for screen readers\n}\n\nexport type TableElementType = HTMLTableElement;\nexport type TableProps = Omit<CommonAndHTMLProps<TableElementType>, keyof TableCustomProps> & TableCustomProps;\n\n// COMPONENT ///////////////////////////////////////////////////////////////////////////////////////////////////////////\nexport const Table = React.forwardRef(\n (\n {\n bordersFor,\n isStriped,\n highlightRowOnHover,\n isFullWidth,\n alignText,\n caption,\n summary,\n hasColSpan,\n children,\n ...props\n }: TableProps,\n ref: React.Ref<TableElementType>\n ) => {\n let classNames = [];\n\n if (bordersFor) {\n classNames.push(`bordered-${bordersFor}`);\n }\n\n if (isStriped) {\n classNames.push(\"striped\");\n }\n\n if (highlightRowOnHover) {\n classNames.push(\"hoverable\");\n }\n\n if (isFullWidth) {\n classNames.push(\"full-width\");\n }\n\n if (alignText) {\n classNames.push(`align-text-${alignText}`);\n }\n\n // Get row count if children exist\n const rowCount = React.Children.count(children);\n\n // Get column count from first row if possible\n const getColumnCount = () => {\n if (!children || !React.isValidElement(children)) return undefined;\n\n const firstRow = React.Children.toArray(children)[0];\n if (React.isValidElement(firstRow)) {\n const rowProps = firstRow.props as { children?: React.ReactNode };\n if (rowProps.children) {\n return React.Children.count(rowProps.children);\n }\n }\n return undefined;\n };\n\n return (\n <Element<TableElementType>\n as=\"table\"\n classNames={classNames}\n ref={ref}\n role=\"table\"\n aria-rowcount={rowCount || undefined}\n aria-colcount={hasColSpan ? undefined : getColumnCount()}\n summary={summary}\n {...props}\n >\n {caption && <caption>{caption}</caption>}\n {children}\n </Element>\n );\n }\n);\nTable.displayName = \"Table\";\n"],"names":["Table","React","bordersFor","isStriped","highlightRowOnHover","isFullWidth","alignText","caption","summary","hasColSpan","children","props","ref","classNames","rowCount","jsxs","Element","firstRow","rowProps","jsx"],"mappings":";;;;AA4BO,MAAMA,IAAQC,EAAM;AAAA,EACvB,CACI;AAAA,IACI,YAAAC;AAAA,IACA,WAAAC;AAAA,IACA,qBAAAC;AAAA,IACA,aAAAC;AAAA,IACA,WAAAC;AAAA,IACA,SAAAC;AAAA,IACA,SAAAC;AAAA,IACA,YAAAC;AAAA,IACA,UAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,GAEPC,MACC;AACD,QAAIC,IAAa,CAAA;AAEjB,IAAIX,KACAW,EAAW,KAAK,YAAYX,CAAU,EAAE,GAGxCC,KACAU,EAAW,KAAK,SAAS,GAGzBT,KACAS,EAAW,KAAK,WAAW,GAG3BR,KACAQ,EAAW,KAAK,YAAY,GAG5BP,KACAO,EAAW,KAAK,cAAcP,CAAS,EAAE;AAI7C,UAAMQ,IAAWb,EAAM,SAAS,MAAMS,CAAQ;AAgB9C,WACI,gBAAAK;AAAA,MAACC;AAAA,MAAA;AAAA,QACG,IAAG;AAAA,QACH,YAAAH;AAAA,QACA,KAAAD;AAAA,QACA,MAAK;AAAA,QACL,iBAAeE,KAAY;AAAA,QAC3B,iBAAeL,IAAa,UApBb,MAAM;AACzB,cAAI,CAACC,KAAY,CAACT,EAAM,eAAeS,CAAQ,EAAG;AAElD,gBAAMO,IAAWhB,EAAM,SAAS,QAAQS,CAAQ,EAAE,CAAC;AACnD,cAAIT,EAAM,eAAegB,CAAQ,GAAG;AAChC,kBAAMC,IAAWD,EAAS;AAC1B,gBAAIC,EAAS;AACT,qBAAOjB,EAAM,SAAS,MAAMiB,EAAS,QAAQ;AAAA,UAErD;AAAA,QAEJ,GASgD;AAAA,QACxC,SAAAV;AAAA,QACC,GAAGG;AAAA,QAEH,UAAA;AAAA,UAAAJ,KAAW,gBAAAY,EAAC,aAAS,UAAAZ,EAAA,CAAQ;AAAA,UAC7BG;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAGb;AACJ;AACAV,EAAM,cAAc;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tabs.d.ts","sourceRoot":"","sources":["../../../src/components/Tabs/Tabs.tsx"],"names":[],"mappings":"AACA,OAAO,KAAyC,MAAM,OAAO,CAAC;AAG9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAK1D,OAAO,YAAY,CAAC;AAMpB,UAAU,OAAO;IACT,GAAG,EAAU,MAAM,CAAC;IACpB,KAAK,EAAQ,KAAK,CAAC,SAAS,CAAC;IAC7B,OAAO,EAAM,KAAK,CAAC,SAAS,CAAC;IAC7B,QAAS,CAAC,EAAG,OAAO,CAAC;CAC5B;AAGD,MAAM,WAAW,eAAe;IACxB,IAAI,EAA4B,OAAO,EAAE,CAAC;IAC1C,2BAA4B,CAAC,EAAG,KAAK,CAAC,SAAS,CAAC;IAChD,gBAA4B,CAAC,EAAG,KAAK,CAAC,SAAS,CAAC;IAChD,KAA4B,CAAC,EAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;IACvE,WAA4B,CAAC,EAAG,OAAO,CAAC;CAC/C;AAED,MAAM,MAAM,eAAe,GAAG,cAAc,CAAC;AAC7C,MAAM,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,EAAE,MAAM,eAAe,CAAC,GAAG,eAAe,CAAC;AAE3G,eAAO,MAAM,IAAI,
|
|
1
|
+
{"version":3,"file":"Tabs.d.ts","sourceRoot":"","sources":["../../../src/components/Tabs/Tabs.tsx"],"names":[],"mappings":"AACA,OAAO,KAAyC,MAAM,OAAO,CAAC;AAG9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAK1D,OAAO,YAAY,CAAC;AAMpB,UAAU,OAAO;IACT,GAAG,EAAU,MAAM,CAAC;IACpB,KAAK,EAAQ,KAAK,CAAC,SAAS,CAAC;IAC7B,OAAO,EAAM,KAAK,CAAC,SAAS,CAAC;IAC7B,QAAS,CAAC,EAAG,OAAO,CAAC;CAC5B;AAGD,MAAM,WAAW,eAAe;IACxB,IAAI,EAA4B,OAAO,EAAE,CAAC;IAC1C,2BAA4B,CAAC,EAAG,KAAK,CAAC,SAAS,CAAC;IAChD,gBAA4B,CAAC,EAAG,KAAK,CAAC,SAAS,CAAC;IAChD,KAA4B,CAAC,EAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;IACvE,WAA4B,CAAC,EAAG,OAAO,CAAC;CAC/C;AAED,MAAM,MAAM,eAAe,GAAG,cAAc,CAAC;AAC7C,MAAM,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,EAAE,MAAM,eAAe,CAAC,GAAG,eAAe,CAAC;AAE3G,eAAO,MAAM,IAAI,0JAkIhB,CAAC"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsxs as u, jsx as r } from "react/jsx-runtime";
|
|
3
|
+
import d, { useRef as R, useCallback as h, useEffect as T } from "react";
|
|
4
|
+
import { Nav as I, Div as S } from "../Element/Tags.js";
|
|
5
|
+
/* empty css */
|
|
6
|
+
import { Divider as v } from "../Divider/Divider.js";
|
|
7
|
+
import { Text as B } from "../Typography/Text.js";
|
|
8
|
+
import { Element as g } from "../Element/Element.js";
|
|
9
|
+
const C = d.forwardRef(
|
|
10
|
+
({ tabs: l, additionalNavContentWrapper: p, defaultActiveTab: x, align: E = "left", isFullWidth: $, ...w }, N) => {
|
|
11
|
+
const y = l.findIndex((e) => e.key === x), a = y > -1 ? y : 0, [t, o] = d.useState(
|
|
12
|
+
l.length > 0 ? l[a] : void 0
|
|
13
|
+
), [A, k] = d.useState(!1), f = R([]), s = h((e) => {
|
|
14
|
+
(t == null ? void 0 : t.key) !== e.key && (k(!0), setTimeout(() => {
|
|
15
|
+
o(e), k(!1);
|
|
16
|
+
}, 150));
|
|
17
|
+
}, [t == null ? void 0 : t.key]);
|
|
18
|
+
T(() => {
|
|
19
|
+
l.length > 0 ? l.find((i) => i.key === (t == null ? void 0 : t.key)) || o(l[a]) : o(void 0);
|
|
20
|
+
}, [l, a, t == null ? void 0 : t.key]);
|
|
21
|
+
const D = h((e, i) => {
|
|
22
|
+
var m;
|
|
23
|
+
let n = i;
|
|
24
|
+
if (e.key === "ArrowRight")
|
|
25
|
+
n = (i + 1) % l.length;
|
|
26
|
+
else if (e.key === "ArrowLeft")
|
|
27
|
+
n = (i - 1 + l.length) % l.length;
|
|
28
|
+
else if (e.key === "Home")
|
|
29
|
+
n = 0;
|
|
30
|
+
else if (e.key === "End")
|
|
31
|
+
n = l.length - 1;
|
|
32
|
+
else
|
|
33
|
+
return;
|
|
34
|
+
e.preventDefault();
|
|
35
|
+
const c = l[n];
|
|
36
|
+
c && (s(c), (m = f.current[n]) == null || m.focus());
|
|
37
|
+
}, [l, s]);
|
|
38
|
+
return t ? /* @__PURE__ */ u(
|
|
39
|
+
g,
|
|
40
|
+
{
|
|
41
|
+
as: "div",
|
|
42
|
+
"data-tabs": !0,
|
|
43
|
+
ref: N,
|
|
44
|
+
"data-align": E,
|
|
45
|
+
"data-full-width": $,
|
|
46
|
+
...w,
|
|
47
|
+
children: [
|
|
48
|
+
/* @__PURE__ */ r(I, { "data-tabs-nav": !0, role: "tablist", "aria-label": "Tab Navigation", children: /* @__PURE__ */ u("ul", { className: "tab-labels-list", children: [
|
|
49
|
+
l.map((e, i) => /* @__PURE__ */ r("li", { children: /* @__PURE__ */ r(
|
|
50
|
+
g,
|
|
51
|
+
{
|
|
52
|
+
as: "button",
|
|
53
|
+
ref: (n) => {
|
|
54
|
+
f.current[i] = n;
|
|
55
|
+
},
|
|
56
|
+
id: `tab-${e.key}`,
|
|
57
|
+
role: "tab",
|
|
58
|
+
"aria-selected": t.key === e.key,
|
|
59
|
+
"aria-controls": `tab-panel-${e.key}`,
|
|
60
|
+
tabIndex: t.key === e.key ? 0 : -1,
|
|
61
|
+
"data-tab-label": !0,
|
|
62
|
+
"data-active": t.key === e.key,
|
|
63
|
+
"data-alert": e.hasAlert,
|
|
64
|
+
onClick: () => s(e),
|
|
65
|
+
onKeyDown: (n) => D(n, i),
|
|
66
|
+
className: `tab-button ${t.key === e.key ? "is-active" : ""}`,
|
|
67
|
+
marginBottom: "nano",
|
|
68
|
+
children: /* @__PURE__ */ r(
|
|
69
|
+
B,
|
|
70
|
+
{
|
|
71
|
+
className: `tab-label ${t.key === e.key ? "is-active" : ""} ${e.hasAlert ? "has-alert" : ""}`,
|
|
72
|
+
children: e.label
|
|
73
|
+
}
|
|
74
|
+
)
|
|
75
|
+
}
|
|
76
|
+
) }, e.key)),
|
|
77
|
+
p
|
|
78
|
+
] }) }),
|
|
79
|
+
/* @__PURE__ */ r(v, { kind: "tertiary", marginTop: "none", marginBottom: "micro" }),
|
|
80
|
+
l.map((e) => /* @__PURE__ */ r(
|
|
81
|
+
S,
|
|
82
|
+
{
|
|
83
|
+
id: `tab-panel-${e.key}`,
|
|
84
|
+
role: "tabpanel",
|
|
85
|
+
"aria-labelledby": `tab-${e.key}`,
|
|
86
|
+
tabIndex: t.key === e.key ? 0 : -1,
|
|
87
|
+
"data-tab-content": !0,
|
|
88
|
+
"data-active": t.key === e.key,
|
|
89
|
+
"data-exiting": t.key === e.key && A,
|
|
90
|
+
hidden: t.key !== e.key,
|
|
91
|
+
children: e.content
|
|
92
|
+
},
|
|
93
|
+
e.key
|
|
94
|
+
))
|
|
95
|
+
]
|
|
96
|
+
}
|
|
97
|
+
) : null;
|
|
98
|
+
}
|
|
99
|
+
);
|
|
100
|
+
C.displayName = "Tabs";
|
|
101
|
+
export {
|
|
102
|
+
C as Tabs
|
|
103
|
+
};
|
|
104
|
+
//# sourceMappingURL=Tabs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Tabs.js","sources":["../../../src/components/Tabs/Tabs.tsx"],"sourcesContent":["// REACT CORE ==========================================================================================================\nimport React, { useEffect, useCallback, useRef } from \"react\";\n\n// LOCAL COMPONENTS ====================================================================================================\nimport { CommonAndHTMLProps } from \"../Element/constants\";\nimport { Div, Nav } from \"../Element/Tags\";\nimport { Element } from \"$element\";\n\n// STYLES ==============================================================================================================\nimport \"./tabs.css\";\n\n// OTHER ===============================================================================================================\nimport { Divider } from \"../Divider/Divider\";\nimport { Text } from \"../Typography/Text\";\n\ninterface TabType {\n key : string;\n label : React.ReactNode;\n content : React.ReactNode;\n hasAlert ? : boolean;\n}\n\n// prettier-ignore\nexport interface TabsCustomProps {\n tabs : TabType[];\n additionalNavContentWrapper ? : React.ReactNode;\n defaultActiveTab ? : React.ReactNode;\n align ? : \"left\" | \"centre\" | \"center\" | \"right\";\n isFullWidth ? : boolean;\n}\n\nexport type TabsElementType = HTMLDivElement;\nexport type TabsProps = Omit<CommonAndHTMLProps<TabsElementType>, keyof TabsCustomProps> & TabsCustomProps;\n\nexport const Tabs = React.forwardRef(\n (\n {tabs, additionalNavContentWrapper, defaultActiveTab, align = \"left\", isFullWidth, ...props} : TabsProps,\n ref : React.Ref<TabsElementType>) => {\n const index = tabs.findIndex((tab) => tab.key === defaultActiveTab);\n const defaultTabIndex = index > -1 ? index : 0;\n const [ activeTab, setActiveTab ] = React.useState<TabType | undefined>(\n tabs.length > 0 ? tabs[defaultTabIndex] : undefined,\n );\n const [ isExiting, setIsExiting ] = React.useState<boolean>(false);\n\n // Refs for keyboard navigation to focus the tab buttons\n const tabButtonRefs = useRef<(HTMLButtonElement | null)[]>([]);\n\n // V2's performant animation logic\n const handleTabChange = useCallback((tab : TabType) => {\n if (activeTab?.key !== tab.key) {\n setIsExiting(true);\n setTimeout(() => {\n setActiveTab(tab);\n setIsExiting(false);\n }, 150); // Animation duration\n }\n }, [ activeTab?.key ]);\n\n useEffect(() => {\n if (tabs.length > 0) {\n // If the current active tab still exists in the new tabs array, keep it.\n // This preserves the active state if the content of a tab changes.\n const currentTabStillExists = tabs.find(tab => tab.key === activeTab?.key);\n if (!currentTabStillExists) {\n // Otherwise, default to the designated default tab or the first one.\n setActiveTab(tabs[defaultTabIndex]);\n }\n } else {\n setActiveTab(undefined);\n }\n }, [ tabs, defaultTabIndex, activeTab?.key ]);\n\n\n const handleKeyDown = useCallback((event : React.KeyboardEvent, currentIndex : number) => {\n let nextIndex = currentIndex;\n\n if (event.key === \"ArrowRight\") {\n nextIndex = (currentIndex + 1) % tabs.length;\n } else if (event.key === \"ArrowLeft\") {\n nextIndex = (currentIndex - 1 + tabs.length) % tabs.length;\n } else if (event.key === \"Home\") {\n nextIndex = 0;\n } else if (event.key === \"End\") {\n nextIndex = tabs.length - 1;\n } else {\n // Exit if it's not a navigation key\n return;\n }\n\n event.preventDefault();\n const nextTab = tabs[nextIndex];\n if (nextTab) {\n handleTabChange(nextTab);\n tabButtonRefs.current[nextIndex]?.focus();\n }\n\n }, [ tabs, handleTabChange ]);\n\n if (!activeTab) {\n return null; // Render nothing if there are no tabs or no active tab\n }\n\n return (\n <Element<TabsElementType>\n as=\"div\"\n data-tabs\n ref={ref}\n data-align={align}\n data-full-width={isFullWidth}\n {...props}\n >\n <Nav data-tabs-nav role=\"tablist\" aria-label=\"Tab Navigation\">\n <ul className=\"tab-labels-list\">\n {tabs.map((tab, i) => (\n <li key={tab.key}>\n <Element<HTMLButtonElement>\n as=\"button\"\n ref={(el) => { tabButtonRefs.current[i] = el; }}\n id={`tab-${tab.key}`}\n role=\"tab\"\n aria-selected={activeTab.key === tab.key}\n aria-controls={`tab-panel-${tab.key}`}\n tabIndex={activeTab.key === tab.key ? 0 : -1} // Roaming tabindex\n data-tab-label\n data-active={activeTab.key === tab.key}\n data-alert={tab.hasAlert}\n onClick={() => handleTabChange(tab)}\n onKeyDown={(e) => handleKeyDown(e, i)}\n className={`tab-button ${activeTab.key === tab.key ? \"is-active\" : \"\"}`}\n marginBottom=\"nano\"\n >\n <Text\n className={`tab-label ${activeTab.key === tab.key ? \"is-active\" : \"\"} ${tab.hasAlert ? \"has-alert\" : \"\"}`}\n >\n {tab.label}\n </Text>\n </Element>\n </li>\n ))}\n {additionalNavContentWrapper}\n </ul>\n </Nav>\n\n <Divider kind=\"tertiary\" marginTop=\"none\" marginBottom=\"micro\" />\n\n {tabs.map((tab) => (\n <Div\n key={tab.key}\n id={`tab-panel-${tab.key}`}\n role=\"tabpanel\"\n aria-labelledby={`tab-${tab.key}`}\n tabIndex={activeTab.key === tab.key ? 0 : -1}\n data-tab-content\n data-active={activeTab.key === tab.key}\n data-exiting={activeTab.key === tab.key && isExiting}\n hidden={activeTab.key !== tab.key}\n >\n {tab.content}\n </Div>\n ))}\n </Element>\n );\n },\n);\nTabs.displayName = \"Tabs\";"],"names":["Tabs","React","tabs","additionalNavContentWrapper","defaultActiveTab","align","isFullWidth","props","ref","index","tab","defaultTabIndex","activeTab","setActiveTab","isExiting","setIsExiting","tabButtonRefs","useRef","handleTabChange","useCallback","useEffect","handleKeyDown","event","currentIndex","nextIndex","nextTab","_a","jsxs","Element","jsx","Nav","el","e","Text","Divider","Div"],"mappings":"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"}
|
|
@@ -7,6 +7,12 @@ export type ThemeProviderElementType = HTMLDivElement;
|
|
|
7
7
|
export interface ThemeProviderProps extends CommonAndHTMLProps<ThemeProviderElementType> {
|
|
8
8
|
themeList: string[];
|
|
9
9
|
currentTheme: string;
|
|
10
|
+
/** localStorage key the theme is persisted under. Defaults to "fictoan-theme"; pass a unique
|
|
11
|
+
* value (your package.json name works well) when multiple Fictoan apps can share an origin
|
|
12
|
+
* (e.g. localhost during dev, GitHub Pages) so their themes don't collide. */
|
|
13
|
+
storageKey?: string;
|
|
14
|
+
/** Pass your CSP nonce so the no-flash inline script is allowed under a strict `script-src`. */
|
|
15
|
+
nonce?: string;
|
|
10
16
|
}
|
|
11
17
|
export declare const ThemeProvider: React.ForwardRefExoticComponent<ThemeProviderProps & React.RefAttributes<HTMLDivElement>>;
|
|
12
18
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThemeProvider.d.ts","sourceRoot":"","sources":["../../../src/components/ThemeProvider/ThemeProvider.tsx"],"names":[],"mappings":"AACA,OAAO,KAA2C,MAAM,OAAO,CAAC;AAGhE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"ThemeProvider.d.ts","sourceRoot":"","sources":["../../../src/components/ThemeProvider/ThemeProvider.tsx"],"names":[],"mappings":"AACA,OAAO,KAA2C,MAAM,OAAO,CAAC;AAGhE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAO1D,KAAK,gBAAgB,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAK/E,eAAO,MAAM,QAAQ,QAAO,gBAM3B,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG,cAAc,CAAC;AACtD,MAAM,WAAW,kBAAmB,SAAQ,kBAAkB,CAAC,wBAAwB,CAAC;IACpF,SAAS,EAAM,MAAM,EAAE,CAAC;IACxB,YAAY,EAAG,MAAM,CAAC;IACtB;;mFAE+E;IAC/E,UAAW,CAAC,EAAG,MAAM,CAAC;IACtB,gGAAgG;IAChG,KAAW,CAAC,EAAG,MAAM,CAAC;CACzB;AAaD,eAAO,MAAM,aAAa,2FAqFzB,CAAC"}
|