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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Accordion.d.ts","sourceRoot":"","sources":["../../../src/components/Accordion/Accordion.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAI1D,OAAO,iBAAiB,CAAC;AAKzB,MAAM,WAAW,oBAAoB;IACjC,MAAS,CAAC,EAAG,OAAO,CAAC;IACrB,OAAO,EAAM,SAAS,CAAC;IACvB,QAAQ,EAAK,SAAS,CAAC;CAC1B;AAED,MAAM,MAAM,oBAAoB,GAAG,kBAAkB,CAAC;AACtD,MAAM,MAAM,cAAc,GACtB,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,EAAE,MAAM,oBAAoB,CAAC,GACxE,oBAAoB,CAAC;AAG3B,eAAO,MAAM,SAAS,
|
|
1
|
+
{"version":3,"file":"Accordion.d.ts","sourceRoot":"","sources":["../../../src/components/Accordion/Accordion.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGzC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAI1D,OAAO,iBAAiB,CAAC;AAKzB,MAAM,WAAW,oBAAoB;IACjC,MAAS,CAAC,EAAG,OAAO,CAAC;IACrB,OAAO,EAAM,SAAS,CAAC;IACvB,QAAQ,EAAK,SAAS,CAAC;CAC1B;AAED,MAAM,MAAM,oBAAoB,GAAG,kBAAkB,CAAC;AACtD,MAAM,MAAM,cAAc,GACtB,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,EAAE,MAAM,oBAAoB,CAAC,GACxE,oBAAoB,CAAC;AAG3B,eAAO,MAAM,SAAS,4KAkBrB,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsxs as a, jsx as e } from "react/jsx-runtime";
|
|
3
|
+
import c from "react";
|
|
4
|
+
/* empty css */
|
|
5
|
+
import { Element as d } from "../Element/Element.js";
|
|
6
|
+
import { Text as m } from "../Typography/Text.js";
|
|
7
|
+
const p = c.forwardRef(
|
|
8
|
+
({ summary: r, children: o, isOpen: t = !1, ...n }, i) => /* @__PURE__ */ a(
|
|
9
|
+
d,
|
|
10
|
+
{
|
|
11
|
+
as: "details",
|
|
12
|
+
"data-expandable-content": !0,
|
|
13
|
+
ref: i,
|
|
14
|
+
...n,
|
|
15
|
+
open: t,
|
|
16
|
+
children: [
|
|
17
|
+
/* @__PURE__ */ e("summary", { children: typeof r == "string" ? /* @__PURE__ */ e(m, { margin: "none", children: r }) : r }),
|
|
18
|
+
o
|
|
19
|
+
]
|
|
20
|
+
}
|
|
21
|
+
)
|
|
22
|
+
);
|
|
23
|
+
p.displayName = "Accordion";
|
|
24
|
+
export {
|
|
25
|
+
p as Accordion
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=Accordion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Accordion.js","sources":["../../../src/components/Accordion/Accordion.tsx"],"sourcesContent":["// REACT CORE ==========================================================================================================\nimport React, { ReactNode } from \"react\";\n\n// LOCAL COMPONENTS ====================================================================================================\nimport { CommonAndHTMLProps } from \"../Element/constants\";\nimport { Element } from \"$element\";\n\n// STYLES ==============================================================================================================\nimport \"./accordion.css\";\n\n// OTHER ===============================================================================================================\nimport { Text } from \"$components/Typography\";\n\nexport interface AccordionCustomProps {\n isOpen ? : boolean;\n summary : ReactNode;\n children : ReactNode;\n}\n\nexport type AccordionElementType = HTMLDetailsElement;\nexport type AccordionProps =\n Omit<CommonAndHTMLProps<AccordionElementType>, keyof AccordionCustomProps>\n & AccordionCustomProps;\n\n// COMPONENT ///////////////////////////////////////////////////////////////////////////////////////////////////////////\nexport const Accordion = React.forwardRef(\n ({summary, children, isOpen = false, ...props} : AccordionProps, ref : React.Ref<AccordionElementType>) => {\n\n return (\n <Element\n as=\"details\"\n data-expandable-content\n ref={ref}\n {...props}\n open={isOpen}\n >\n <summary>\n {typeof summary === \"string\" ? <Text margin=\"none\">{summary}</Text> : summary}\n </summary>\n {children}\n </Element>\n );\n },\n);\nAccordion.displayName = \"Accordion\";\n"],"names":["Accordion","React","summary","children","isOpen","props","ref","jsxs","Element","jsx","Text"],"mappings":";;;;;AAyBO,MAAMA,IAAYC,EAAM;AAAA,EAC3B,CAAC,EAAC,SAAAC,GAAS,UAAAC,GAAU,QAAAC,IAAS,IAAO,GAAGC,EAAA,GAAyBC,MAGzD,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACG,IAAG;AAAA,MACH,2BAAuB;AAAA,MACvB,KAAAF;AAAA,MACC,GAAGD;AAAA,MACJ,MAAMD;AAAA,MAEN,UAAA;AAAA,QAAA,gBAAAK,EAAC,WAAA,EACI,UAAA,OAAOP,KAAY,WAAW,gBAAAO,EAACC,KAAK,QAAO,QAAQ,UAAAR,EAAA,CAAQ,IAAUA,GAC1E;AAAA,QACCC;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAIjB;AACAH,EAAU,cAAc;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Badge.d.ts","sourceRoot":"","sources":["../../../src/components/Badge/Badge.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAIpF,OAAO,aAAa,CAAC;AAErB,MAAM,MAAM,mBAAmB,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAEtE,MAAM,WAAW,gBAAgB;IAC7B,IAAgB,CAAC,EAAG,YAAY,CAAC;IACjC,KAAgB,CAAC,EAAG,UAAU,CAAC;IAC/B,UAAgB,CAAC,EAAG,mBAAmB,CAAC;IACxC,aAAgB,CAAC,EAAG,CAAC,KAAK,EAAG,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IAC1E,eAAgB,CAAC,EAAG,MAAM,CAAC;CAC9B;AAED,MAAM,MAAM,gBAAgB,GAAG,cAAc,CAAC;AAC9C,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,EAAE,MAAM,gBAAgB,CAAC,GAAG,gBAAgB,CAAC;AA2B/G,eAAO,MAAM,KAAK,
|
|
1
|
+
{"version":3,"file":"Badge.d.ts","sourceRoot":"","sources":["../../../src/components/Badge/Badge.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAIpF,OAAO,aAAa,CAAC;AAErB,MAAM,MAAM,mBAAmB,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAEtE,MAAM,WAAW,gBAAgB;IAC7B,IAAgB,CAAC,EAAG,YAAY,CAAC;IACjC,KAAgB,CAAC,EAAG,UAAU,CAAC;IAC/B,UAAgB,CAAC,EAAG,mBAAmB,CAAC;IACxC,aAAgB,CAAC,EAAG,CAAC,KAAK,EAAG,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IAC1E,eAAgB,CAAC,EAAG,MAAM,CAAC;CAC9B;AAED,MAAM,MAAM,gBAAgB,GAAG,cAAc,CAAC;AAC9C,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,EAAE,MAAM,gBAAgB,CAAC,GAAG,gBAAgB,CAAC;AA2B/G,eAAO,MAAM,KAAK,4JAmDjB,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsxs as u, jsx as a } from "react/jsx-runtime";
|
|
3
|
+
import c from "react";
|
|
4
|
+
/* empty css */
|
|
5
|
+
import { Element as v } from "../Element/Element.js";
|
|
6
|
+
const g = {
|
|
7
|
+
cross: /* @__PURE__ */ a("svg", { viewBox: "0 0 24 24", "aria-hidden": "true", children: /* @__PURE__ */ a("path", { d: "M18 6L6 18M6 6l12 12" }) }),
|
|
8
|
+
tick: /* @__PURE__ */ a("svg", { viewBox: "0 0 24 24", "aria-hidden": "true", children: /* @__PURE__ */ a("path", { d: "M5 12l5 5L20 7" }) }),
|
|
9
|
+
plus: /* @__PURE__ */ a("svg", { viewBox: "0 0 24 24", "aria-hidden": "true", children: /* @__PURE__ */ a("path", { d: "M12 5v14M5 12h14" }) }),
|
|
10
|
+
minus: /* @__PURE__ */ a("svg", { viewBox: "0 0 24 24", "aria-hidden": "true", children: /* @__PURE__ */ a("path", { d: "M5 12h14" }) })
|
|
11
|
+
}, f = c.forwardRef(
|
|
12
|
+
({
|
|
13
|
+
children: e,
|
|
14
|
+
size: r = "medium",
|
|
15
|
+
shape: d,
|
|
16
|
+
actionIcon: s,
|
|
17
|
+
onActionClick: t,
|
|
18
|
+
actionAriaLabel: n,
|
|
19
|
+
...p
|
|
20
|
+
}, l) => {
|
|
21
|
+
let i = [];
|
|
22
|
+
r && i.push(`size-${r}`), d && i.push(`shape-${d}`);
|
|
23
|
+
const m = (h) => {
|
|
24
|
+
h.stopPropagation(), t == null || t(h);
|
|
25
|
+
}, o = !!s;
|
|
26
|
+
return /* @__PURE__ */ u(
|
|
27
|
+
v,
|
|
28
|
+
{
|
|
29
|
+
"data-badge": !0,
|
|
30
|
+
"data-has-action": o || void 0,
|
|
31
|
+
ref: l,
|
|
32
|
+
classNames: i,
|
|
33
|
+
"aria-label": typeof e == "string" ? e : void 0,
|
|
34
|
+
...p,
|
|
35
|
+
children: [
|
|
36
|
+
e,
|
|
37
|
+
o && /* @__PURE__ */ a(
|
|
38
|
+
"button",
|
|
39
|
+
{
|
|
40
|
+
type: "button",
|
|
41
|
+
className: "badge-action-button",
|
|
42
|
+
onClick: m,
|
|
43
|
+
"aria-label": n,
|
|
44
|
+
children: g[s]
|
|
45
|
+
}
|
|
46
|
+
)
|
|
47
|
+
]
|
|
48
|
+
}
|
|
49
|
+
);
|
|
50
|
+
}
|
|
51
|
+
);
|
|
52
|
+
f.displayName = "Badge";
|
|
53
|
+
export {
|
|
54
|
+
f as Badge
|
|
55
|
+
};
|
|
56
|
+
//# sourceMappingURL=Badge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Badge.js","sources":["../../../src/components/Badge/Badge.tsx"],"sourcesContent":["// REACT CORE ==========================================================================================================\nimport React from \"react\";\n\n// LOCAL COMPONENTS ====================================================================================================\nimport { CommonAndHTMLProps, ShapeTypes, SpacingTypes } from \"../Element/constants\";\nimport { Element } from \"$element\";\n\n// STYLES ==============================================================================================================\nimport \"./badge.css\";\n\nexport type BadgeActionIconType = \"cross\" | \"tick\" | \"plus\" | \"minus\";\n\nexport interface BadgeCustomProps {\n size ? : SpacingTypes;\n shape ? : ShapeTypes;\n actionIcon ? : BadgeActionIconType;\n onActionClick ? : (event : React.MouseEvent<HTMLButtonElement>) => void;\n actionAriaLabel ? : string;\n}\n\nexport type BadgeElementType = HTMLDivElement;\nexport type BadgeProps = Omit<CommonAndHTMLProps<BadgeElementType>, keyof BadgeCustomProps> & BadgeCustomProps;\n\n// ICONS ///////////////////////////////////////////////////////////////////////////////////////////////////////////////\nconst ActionIcons : Record<BadgeActionIconType, React.ReactNode> = {\n cross : (\n <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <path d=\"M18 6L6 18M6 6l12 12\" />\n </svg>\n ),\n tick : (\n <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <path d=\"M5 12l5 5L20 7\" />\n </svg>\n ),\n plus : (\n <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <path d=\"M12 5v14M5 12h14\" />\n </svg>\n ),\n minus : (\n <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <path d=\"M5 12h14\" />\n </svg>\n ),\n};\n\n// COMPONENT ///////////////////////////////////////////////////////////////////////////////////////////////////////////\nexport const Badge = React.forwardRef(\n ({\n children,\n size = \"medium\",\n shape,\n actionIcon,\n onActionClick,\n actionAriaLabel,\n ...props\n } : BadgeProps, ref : React.Ref<BadgeElementType>) => {\n let classNames = [];\n\n if (size) {\n classNames.push(`size-${size}`);\n }\n\n if (shape) {\n classNames.push(`shape-${shape}`);\n }\n\n const handleActionClick = (e : React.MouseEvent<HTMLButtonElement>) => {\n e.stopPropagation();\n onActionClick?.(e);\n };\n\n const hasAction = Boolean(actionIcon);\n\n return (\n <Element<BadgeElementType>\n data-badge\n data-has-action={hasAction || undefined}\n ref={ref}\n classNames={classNames}\n aria-label={(typeof children === \"string\" ? children : undefined)}\n {...props}\n >\n {children}\n\n {hasAction && (\n <button\n type=\"button\"\n className=\"badge-action-button\"\n onClick={handleActionClick}\n aria-label={actionAriaLabel}\n >\n {ActionIcons[actionIcon!]}\n </button>\n )}\n </Element>\n );\n },\n);\nBadge.displayName = \"Badge\";\n"],"names":["ActionIcons","jsx","Badge","React","children","size","shape","actionIcon","onActionClick","actionAriaLabel","props","ref","classNames","handleActionClick","e","hasAction","jsxs","Element"],"mappings":";;;;AAwBA,MAAMA,IAA6D;AAAA,EAC/D,OACI,gBAAAC,EAAC,OAAA,EAAI,SAAQ,aAAY,eAAY,QACjC,UAAA,gBAAAA,EAAC,QAAA,EAAK,GAAE,uBAAA,CAAuB,EAAA,CACnC;AAAA,EAEJ,MACI,gBAAAA,EAAC,OAAA,EAAI,SAAQ,aAAY,eAAY,QACjC,UAAA,gBAAAA,EAAC,QAAA,EAAK,GAAE,iBAAA,CAAiB,EAAA,CAC7B;AAAA,EAEJ,MACI,gBAAAA,EAAC,OAAA,EAAI,SAAQ,aAAY,eAAY,QACjC,UAAA,gBAAAA,EAAC,QAAA,EAAK,GAAE,mBAAA,CAAmB,EAAA,CAC/B;AAAA,EAEJ,OACI,gBAAAA,EAAC,OAAA,EAAI,SAAQ,aAAY,eAAY,QACjC,UAAA,gBAAAA,EAAC,QAAA,EAAK,GAAE,WAAA,CAAW,EAAA,CACvB;AAER,GAGaC,IAAQC,EAAM;AAAA,EACvB,CAAC;AAAA,IACG,UAAAC;AAAA,IACA,MAAAC,IAAO;AAAA,IACP,OAAAC;AAAA,IACA,YAAAC;AAAA,IACA,eAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,GACSC,MAAsC;AAClD,QAAIC,IAAa,CAAA;AAEjB,IAAIP,KACAO,EAAW,KAAK,QAAQP,CAAI,EAAE,GAG9BC,KACAM,EAAW,KAAK,SAASN,CAAK,EAAE;AAGpC,UAAMO,IAAoB,CAACC,MAA4C;AACnE,MAAAA,EAAE,gBAAA,GACFN,KAAA,QAAAA,EAAgBM;AAAA,IACpB,GAEMC,IAAY,EAAQR;AAE1B,WACI,gBAAAS;AAAA,MAACC;AAAA,MAAA;AAAA,QACG,cAAU;AAAA,QACV,mBAAiBF,KAAa;AAAA,QAC9B,KAAAJ;AAAA,QACA,YAAAC;AAAA,QACA,cAAa,OAAOR,KAAa,WAAWA,IAAW;AAAA,QACtD,GAAGM;AAAA,QAEH,UAAA;AAAA,UAAAN;AAAA,UAEAW,KACG,gBAAAd;AAAA,YAAC;AAAA,YAAA;AAAA,cACG,MAAK;AAAA,cACL,WAAU;AAAA,cACV,SAASY;AAAA,cACT,cAAYJ;AAAA,cAEX,YAAYF,CAAW;AAAA,YAAA;AAAA,UAAA;AAAA,QAC5B;AAAA,MAAA;AAAA,IAAA;AAAA,EAIhB;AACJ;AACAL,EAAM,cAAc;"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as r } from "react/jsx-runtime";
|
|
3
|
+
import t from "react";
|
|
4
|
+
/* empty css */
|
|
5
|
+
import { Element as b } from "../Element/Element.js";
|
|
6
|
+
import { Text as B } from "../Typography/Text.js";
|
|
7
|
+
const p = t.forwardRef(
|
|
8
|
+
({ children: e, current: a, ...s }, i) => /* @__PURE__ */ r(
|
|
9
|
+
b,
|
|
10
|
+
{
|
|
11
|
+
as: "li",
|
|
12
|
+
"data-breadcrumb-item": !0,
|
|
13
|
+
ref: i,
|
|
14
|
+
...s,
|
|
15
|
+
"aria-current": a ? "page" : void 0,
|
|
16
|
+
className: a ? "current" : void 0,
|
|
17
|
+
role: "listitem",
|
|
18
|
+
children: /* @__PURE__ */ r("span", { className: "breadcrumb-content", children: e })
|
|
19
|
+
}
|
|
20
|
+
)
|
|
21
|
+
), N = ({ separator: e }) => /* @__PURE__ */ r(
|
|
22
|
+
B,
|
|
23
|
+
{
|
|
24
|
+
className: "breadcrumb-separator",
|
|
25
|
+
"aria-hidden": "true",
|
|
26
|
+
role: "presentation",
|
|
27
|
+
margin: "none",
|
|
28
|
+
children: e
|
|
29
|
+
}
|
|
30
|
+
), g = t.forwardRef(
|
|
31
|
+
({ children: e, separator: a = "/", spacing: s = "micro", ...i }, f) => {
|
|
32
|
+
let d = [];
|
|
33
|
+
s && d.push(`spacing-${s}`);
|
|
34
|
+
const u = t.Children.toArray(e).filter(Boolean), h = u.reduce((n, o, m) => {
|
|
35
|
+
if (!t.isValidElement(o)) return n;
|
|
36
|
+
const l = m === u.length - 1;
|
|
37
|
+
let c;
|
|
38
|
+
if (o.type === p) {
|
|
39
|
+
const y = o;
|
|
40
|
+
c = t.cloneElement(y, {
|
|
41
|
+
current: l
|
|
42
|
+
});
|
|
43
|
+
} else
|
|
44
|
+
c = /* @__PURE__ */ r(p, { current: l, children: o }, `item-${m}`);
|
|
45
|
+
return n.push(c), l || n.push(
|
|
46
|
+
/* @__PURE__ */ r(N, { separator: a }, `sep-${m}`)
|
|
47
|
+
), n;
|
|
48
|
+
}, []);
|
|
49
|
+
return /* @__PURE__ */ r("nav", { "aria-label": "Breadcrumb", ref: f, ...i, children: /* @__PURE__ */ r(
|
|
50
|
+
b,
|
|
51
|
+
{
|
|
52
|
+
as: "ul",
|
|
53
|
+
"data-breadcrumbs-wrapper": !0,
|
|
54
|
+
role: "list",
|
|
55
|
+
classNames: d,
|
|
56
|
+
children: h
|
|
57
|
+
}
|
|
58
|
+
) });
|
|
59
|
+
}
|
|
60
|
+
);
|
|
61
|
+
g.displayName = "Breadcrumbs";
|
|
62
|
+
export {
|
|
63
|
+
g as Breadcrumbs
|
|
64
|
+
};
|
|
65
|
+
//# sourceMappingURL=Breadcrumbs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Breadcrumbs.js","sources":["../../../src/components/Breadcrumbs/Breadcrumbs.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 \"./breadcrumbs.css\";\n\n// OTHER ===============================================================================================================\nimport { Text } from \"$components/Typography\";\n\nexport type BreadcrumbsElementType = HTMLDivElement;\n\nexport interface BreadcrumbsProps extends CommonAndHTMLProps<BreadcrumbsElementType> {\n children : React.ReactNode;\n separator ? : string;\n spacing ? : SpacingTypes;\n}\n\nexport type BreadcrumbItemElementType = HTMLLIElement;\n\nexport interface BreadcrumbItemProps extends CommonAndHTMLProps<BreadcrumbItemElementType> {\n children : React.ReactNode;\n current ? : boolean;\n}\n\ninterface SeparatorProps {\n separator : string;\n}\n\n// COMPONENT ///////////////////////////////////////////////////////////////////////////////////////////////////////////\nconst BreadcrumbItem = React.forwardRef<HTMLLIElement, BreadcrumbItemProps>(\n ({children, current, ...props}, ref) => {\n return (\n <Element\n as=\"li\"\n data-breadcrumb-item\n ref={ref}\n {...props}\n aria-current={current ? \"page\" : undefined}\n className={current ? \"current\" : undefined}\n role=\"listitem\"\n >\n <span className=\"breadcrumb-content\">\n {children}\n </span>\n </Element>\n );\n },\n);\n\nconst Separator : React.FC<SeparatorProps> = ({separator}) => (\n <Text\n className=\"breadcrumb-separator\"\n aria-hidden=\"true\"\n role=\"presentation\"\n margin=\"none\"\n >\n {separator}\n </Text>\n);\n\nexport const Breadcrumbs = React.forwardRef<HTMLDivElement, BreadcrumbsProps>(\n ({children, separator = \"/\", spacing = \"micro\", ...props}, ref) => {\n let classNames = [];\n\n if (spacing) {\n classNames.push(`spacing-${spacing}`);\n }\n\n const childrenArray = React.Children.toArray(children).filter(Boolean);\n\n const processedChildren = childrenArray.reduce<React.ReactNode[]>((acc, child, index) => {\n if (!React.isValidElement(child)) return acc;\n\n const isLast = index === childrenArray.length - 1;\n\n let breadcrumbItem : React.ReactNode;\n if (child.type === BreadcrumbItem) {\n const typedChild = child as React.ReactElement<BreadcrumbItemProps>;\n breadcrumbItem = React.cloneElement(typedChild, {\n current : isLast,\n });\n } else {\n breadcrumbItem = (\n <BreadcrumbItem key={`item-${index}`} current={isLast}>\n {child}\n </BreadcrumbItem>\n );\n }\n\n acc.push(breadcrumbItem);\n\n if (!isLast) {\n acc.push(\n <Separator key={`sep-${index}`} separator={separator} />,\n );\n }\n\n return acc;\n }, []);\n\n return (\n <nav aria-label=\"Breadcrumb\" ref={ref} {...props}>\n <Element\n as=\"ul\"\n data-breadcrumbs-wrapper\n role=\"list\"\n classNames={classNames}\n >\n {processedChildren}\n </Element>\n </nav>\n );\n },\n);\nBreadcrumbs.displayName = \"Breadcrumbs\";\n"],"names":["BreadcrumbItem","React","children","current","props","ref","jsx","Element","Separator","separator","Text","Breadcrumbs","spacing","classNames","childrenArray","processedChildren","acc","child","index","isLast","breadcrumbItem","typedChild"],"mappings":";;;;;AAiCA,MAAMA,IAAiBC,EAAM;AAAA,EACzB,CAAC,EAAC,UAAAC,GAAU,SAAAC,GAAS,GAAGC,EAAA,GAAQC,MAExB,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACG,IAAG;AAAA,MACH,wBAAoB;AAAA,MACpB,KAAAF;AAAA,MACC,GAAGD;AAAA,MACJ,gBAAcD,IAAU,SAAS;AAAA,MACjC,WAAWA,IAAU,YAAY;AAAA,MACjC,MAAK;AAAA,MAEL,UAAA,gBAAAG,EAAC,QAAA,EAAK,WAAU,sBACX,UAAAJ,EAAA,CACL;AAAA,IAAA;AAAA,EAAA;AAIhB,GAEMM,IAAuC,CAAC,EAAC,WAAAC,EAAA,MAC3C,gBAAAH;AAAA,EAACI;AAAA,EAAA;AAAA,IACG,WAAU;AAAA,IACV,eAAY;AAAA,IACZ,MAAK;AAAA,IACL,QAAO;AAAA,IAEN,UAAAD;AAAA,EAAA;AACL,GAGSE,IAAcV,EAAM;AAAA,EAC7B,CAAC,EAAC,UAAAC,GAAU,WAAAO,IAAY,KAAK,SAAAG,IAAU,SAAS,GAAGR,EAAA,GAAQC,MAAQ;AAC/D,QAAIQ,IAAa,CAAA;AAEjB,IAAID,KACAC,EAAW,KAAK,WAAWD,CAAO,EAAE;AAGxC,UAAME,IAAgBb,EAAM,SAAS,QAAQC,CAAQ,EAAE,OAAO,OAAO,GAE/Da,IAAoBD,EAAc,OAA0B,CAACE,GAAKC,GAAOC,MAAU;AACrF,UAAI,CAACjB,EAAM,eAAegB,CAAK,EAAG,QAAOD;AAEzC,YAAMG,IAASD,MAAUJ,EAAc,SAAS;AAEhD,UAAIM;AACJ,UAAIH,EAAM,SAASjB,GAAgB;AAC/B,cAAMqB,IAAaJ;AACnB,QAAAG,IAAiBnB,EAAM,aAAaoB,GAAY;AAAA,UAC5C,SAAUF;AAAA,QAAA,CACb;AAAA,MACL;AACI,QAAAC,sBACKpB,GAAA,EAAqC,SAASmB,GAC1C,UAAAF,KADgB,QAAQC,CAAK,EAElC;AAIR,aAAAF,EAAI,KAAKI,CAAc,GAElBD,KACDH,EAAI;AAAA,QACA,gBAAAV,EAACE,GAAA,EAA+B,WAAAC,EAAA,GAAhB,OAAOS,CAAK,EAA0B;AAAA,MAAA,GAIvDF;AAAA,IACX,GAAG,CAAA,CAAE;AAEL,6BACK,OAAA,EAAI,cAAW,cAAa,KAAAX,GAAW,GAAGD,GACvC,UAAA,gBAAAE;AAAA,MAACC;AAAA,MAAA;AAAA,QACG,IAAG;AAAA,QACH,4BAAwB;AAAA,QACxB,MAAK;AAAA,QACL,YAAAM;AAAA,QAEC,UAAAE;AAAA,MAAA;AAAA,IAAA,GAET;AAAA,EAER;AACJ;AACAJ,EAAY,cAAc;"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as f } from "react/jsx-runtime";
|
|
3
|
+
import l from "react";
|
|
4
|
+
/* empty css */
|
|
5
|
+
import { Element as p } from "../Element/Element.js";
|
|
6
|
+
const b = l.forwardRef(
|
|
7
|
+
({ size: e = "medium", shape: r, kind: s, variant: u, isLoading: a, label: m, ...i }, o) => {
|
|
8
|
+
let t = [];
|
|
9
|
+
return s && t.push(s), u && t.push(u), e && t.push(`size-${e}`), r && t.push(`shape-${r}`), a && t.push("is-loading"), /* @__PURE__ */ f(
|
|
10
|
+
p,
|
|
11
|
+
{
|
|
12
|
+
as: "button",
|
|
13
|
+
"data-button": !0,
|
|
14
|
+
ref: o,
|
|
15
|
+
classNames: t,
|
|
16
|
+
"aria-label": m,
|
|
17
|
+
"aria-disabled": i.disabled || a,
|
|
18
|
+
"aria-busy": a,
|
|
19
|
+
...i
|
|
20
|
+
}
|
|
21
|
+
);
|
|
22
|
+
}
|
|
23
|
+
);
|
|
24
|
+
b.displayName = "Button";
|
|
25
|
+
export {
|
|
26
|
+
b as Button
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=Button.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Button.js","sources":["../../../src/components/Button/Button.tsx"],"sourcesContent":["// REACT CORE ==========================================================================================================\nimport React from \"react\";\n\n// LOCAL COMPONENTS ====================================================================================================\nimport { CommonAndHTMLProps, EmphasisTypes, ShapeTypes, SpacingTypes, ButtonVariantTypes } from \"../Element/constants\";\nimport { Element } from \"$element\";\n\n// STYLES ==============================================================================================================\nimport \"./Button.css\";\n\n// prettier-ignore\nexport interface ButtonCustomProps {\n kind ? : EmphasisTypes;\n variant ? : ButtonVariantTypes;\n size ? : SpacingTypes;\n shape ? : ShapeTypes;\n isLoading ? : boolean;\n label ? : string;\n}\n\nexport type ButtonElementType = HTMLButtonElement;\nexport type ButtonProps = Omit<CommonAndHTMLProps<ButtonElementType>, keyof ButtonCustomProps> & ButtonCustomProps;\n\n// COMPONENT ///////////////////////////////////////////////////////////////////////////////////////////////////////////\nexport const Button = React.forwardRef(\n ({size = \"medium\", shape, kind, variant, isLoading, label, ...props} : ButtonProps, ref : React.Ref<ButtonElementType>) => {\n let classNames = [];\n\n if (kind) {\n classNames.push(kind);\n }\n\n if (variant) {\n classNames.push(variant);\n }\n\n if (size) {\n classNames.push(`size-${size}`);\n }\n\n if (shape) {\n classNames.push(`shape-${shape}`);\n }\n\n if (isLoading) {\n classNames.push(\"is-loading\");\n }\n\n return (\n <Element<ButtonElementType>\n as=\"button\"\n data-button\n ref={ref}\n classNames={classNames}\n aria-label={label}\n aria-disabled={props.disabled || isLoading}\n aria-busy={isLoading}\n {...props}\n />\n );\n },\n);\nButton.displayName = \"Button\";\n"],"names":["Button","React","size","shape","kind","variant","isLoading","label","props","ref","classNames","jsx","Element"],"mappings":";;;;AAwBO,MAAMA,IAASC,EAAM;AAAA,EACxB,CAAC,EAAC,MAAAC,IAAO,UAAU,OAAAC,GAAO,MAAAC,GAAM,SAAAC,GAAS,WAAAC,GAAW,OAAAC,GAAO,GAAGC,EAAA,GAAsBC,MAAuC;AACvH,QAAIC,IAAa,CAAA;AAEjB,WAAIN,KACAM,EAAW,KAAKN,CAAI,GAGpBC,KACAK,EAAW,KAAKL,CAAO,GAGvBH,KACAQ,EAAW,KAAK,QAAQR,CAAI,EAAE,GAG9BC,KACAO,EAAW,KAAK,SAASP,CAAK,EAAE,GAGhCG,KACAI,EAAW,KAAK,YAAY,GAI5B,gBAAAC;AAAA,MAACC;AAAA,MAAA;AAAA,QACG,IAAG;AAAA,QACH,eAAW;AAAA,QACX,KAAAH;AAAA,QACA,YAAAC;AAAA,QACA,cAAYH;AAAA,QACZ,iBAAeC,EAAM,YAAYF;AAAA,QACjC,aAAWA;AAAA,QACV,GAAGE;AAAA,MAAA;AAAA,IAAA;AAAA,EAGhB;AACJ;AACAR,EAAO,cAAc;"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as i } from "react/jsx-runtime";
|
|
3
|
+
import m from "react";
|
|
4
|
+
/* empty css */
|
|
5
|
+
import { Element as s } from "../Element/Element.js";
|
|
6
|
+
const f = m.forwardRef(
|
|
7
|
+
({ isJoint: r = !0, spacing: o, equaliseWidth: u, children: e, ...p }, a) => {
|
|
8
|
+
let t = [];
|
|
9
|
+
return r && t.push("is-joint"), o && !r && t.push(`spacing-${o}`), u && t.push("equal-width"), /* @__PURE__ */ i(
|
|
10
|
+
s,
|
|
11
|
+
{
|
|
12
|
+
as: "div",
|
|
13
|
+
"data-button-group": !0,
|
|
14
|
+
ref: a,
|
|
15
|
+
role: "group",
|
|
16
|
+
classNames: t,
|
|
17
|
+
...p,
|
|
18
|
+
children: e
|
|
19
|
+
}
|
|
20
|
+
);
|
|
21
|
+
}
|
|
22
|
+
);
|
|
23
|
+
f.displayName = "ButtonGroup";
|
|
24
|
+
export {
|
|
25
|
+
f as ButtonGroup
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=ButtonGroup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ButtonGroup.js","sources":["../../../src/components/ButtonGroup/ButtonGroup.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 \"./button-group.css\";\n\n// prettier-ignore\nexport interface ButtonGroupCustomProps {\n isJoint ? : boolean;\n spacing ? : SpacingTypes;\n equaliseWidth ? : boolean;\n}\n\nexport type ButtonGroupElementType = HTMLDivElement;\nexport type ButtonGroupProps = Omit<CommonAndHTMLProps<ButtonGroupElementType>, keyof ButtonGroupCustomProps> &\n ButtonGroupCustomProps;\n\n// COMPONENT ///////////////////////////////////////////////////////////////////////////////////////////////////////////\nexport const ButtonGroup = React.forwardRef(\n (\n {isJoint = true, spacing, equaliseWidth, children, ...props} : ButtonGroupProps,\n ref : React.Ref<ButtonGroupElementType>,\n ) => {\n let classNames : string[] = [];\n\n if (isJoint) {\n classNames.push(\"is-joint\");\n }\n\n if (spacing && !isJoint) {\n classNames.push(`spacing-${spacing}`);\n }\n\n if (equaliseWidth) {\n classNames.push(\"equal-width\");\n }\n\n return (\n <Element<ButtonGroupElementType>\n as=\"div\"\n data-button-group\n ref={ref}\n role=\"group\"\n classNames={classNames}\n {...props}\n >\n {children}\n </Element>\n );\n },\n);\n\nButtonGroup.displayName = \"ButtonGroup\";\n"],"names":["ButtonGroup","React","isJoint","spacing","equaliseWidth","children","props","ref","classNames","jsx","Element"],"mappings":";;;;AAsBO,MAAMA,IAAcC,EAAM;AAAA,EAC7B,CACI,EAAC,SAAAC,IAAU,IAAM,SAAAC,GAAS,eAAAC,GAAe,UAAAC,GAAU,GAAGC,EAAA,GACtDC,MACC;AACD,QAAIC,IAAwB,CAAA;AAE5B,WAAIN,KACAM,EAAW,KAAK,UAAU,GAG1BL,KAAW,CAACD,KACZM,EAAW,KAAK,WAAWL,CAAO,EAAE,GAGpCC,KACAI,EAAW,KAAK,aAAa,GAI7B,gBAAAC;AAAA,MAACC;AAAA,MAAA;AAAA,QACG,IAAG;AAAA,QACH,qBAAiB;AAAA,QACjB,KAAAH;AAAA,QACA,MAAK;AAAA,QACL,YAAAC;AAAA,QACC,GAAGF;AAAA,QAEH,UAAAD;AAAA,MAAA;AAAA,IAAA;AAAA,EAGb;AACJ;AAEAL,EAAY,cAAc;"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as l } from "react/jsx-runtime";
|
|
3
|
+
import s from "react";
|
|
4
|
+
/* empty css */
|
|
5
|
+
import { Element as i } from "../Element/Element.js";
|
|
6
|
+
const m = s.forwardRef(
|
|
7
|
+
({ kind: r, children: a, title: t, ...e }, o) => /* @__PURE__ */ l(
|
|
8
|
+
i,
|
|
9
|
+
{
|
|
10
|
+
as: "div",
|
|
11
|
+
"data-callout": !0,
|
|
12
|
+
ref: o,
|
|
13
|
+
className: r,
|
|
14
|
+
role: {
|
|
15
|
+
info: "status",
|
|
16
|
+
success: "status",
|
|
17
|
+
warning: "alert",
|
|
18
|
+
error: "alert"
|
|
19
|
+
}[r],
|
|
20
|
+
"aria-live": r === "error" || r === "warning" ? "assertive" : "polite",
|
|
21
|
+
"aria-label": t,
|
|
22
|
+
...e,
|
|
23
|
+
children: a
|
|
24
|
+
}
|
|
25
|
+
)
|
|
26
|
+
);
|
|
27
|
+
m.displayName = "Callout";
|
|
28
|
+
export {
|
|
29
|
+
m as Callout
|
|
30
|
+
};
|
|
31
|
+
//# sourceMappingURL=Callout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Callout.js","sources":["../../../src/components/Callout/Callout.tsx"],"sourcesContent":["// REACT CORE ==========================================================================================================\nimport React, { ReactNode } from \"react\";\n\n// LOCAL COMPONENTS ====================================================================================================\nimport { CommonAndHTMLProps } from \"../Element/constants\";\nimport { Element } from \"$element\";\n\n// STYLES ==============================================================================================================\nimport \"./callout.css\";\n\n// prettier-ignore\nexport interface CalloutCustomProps {\n kind : \"info\" | \"success\" | \"warning\" | \"error\";\n children : ReactNode;\n title ? : string;\n}\n\nexport type CalloutElementType = HTMLDivElement;\nexport type CalloutProps = Omit<CommonAndHTMLProps<CalloutElementType>, keyof CalloutCustomProps> & CalloutCustomProps;\n\n// COMPONENT ///////////////////////////////////////////////////////////////////////////////////////////////////////////\nexport const Callout = React.forwardRef(\n ({kind, children, title, ...props} : CalloutProps, ref : React.Ref<CalloutElementType>) => {\n const roleMap = {\n info : \"status\",\n success : \"status\",\n warning : \"alert\",\n error : \"alert\",\n };\n\n return (\n <Element<CalloutElementType>\n as=\"div\"\n data-callout\n ref={ref}\n className={kind}\n role={roleMap[kind]}\n aria-live={kind === \"error\" || kind === \"warning\" ? \"assertive\" : \"polite\"}\n aria-label={title}\n {...props}\n >\n {children}\n </Element>\n );\n },\n);\nCallout.displayName = \"Callout\";\n"],"names":["Callout","React","kind","children","title","props","ref","jsx","Element"],"mappings":";;;;AAqBO,MAAMA,IAAUC,EAAM;AAAA,EACzB,CAAC,EAAC,MAAAC,GAAM,UAAAC,GAAU,OAAAC,GAAO,GAAGC,EAAA,GAAuBC,MAS3C,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACG,IAAG;AAAA,MACH,gBAAY;AAAA,MACZ,KAAAF;AAAA,MACA,WAAWJ;AAAA,MACX,MAbQ;AAAA,QACZ,MAAU;AAAA,QACV,SAAU;AAAA,QACV,SAAU;AAAA,QACV,OAAU;AAAA,MAAA,EASQA,CAAI;AAAA,MAClB,aAAWA,MAAS,WAAWA,MAAS,YAAY,cAAc;AAAA,MAClE,cAAYE;AAAA,MACX,GAAGC;AAAA,MAEH,UAAAF;AAAA,IAAA;AAAA,EAAA;AAIjB;AACAH,EAAQ,cAAc;"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as i } from "react/jsx-runtime";
|
|
3
|
+
import d from "react";
|
|
4
|
+
/* empty css */
|
|
5
|
+
import { Element as s } from "../Element/Element.js";
|
|
6
|
+
const l = d.forwardRef(({ shape: r, heading: e, children: t, ...o }, m) => {
|
|
7
|
+
let a = [];
|
|
8
|
+
return r && a.push(`shape-${r}`), /* @__PURE__ */ i(
|
|
9
|
+
s,
|
|
10
|
+
{
|
|
11
|
+
as: "div",
|
|
12
|
+
"data-card": !0,
|
|
13
|
+
ref: m,
|
|
14
|
+
classNames: a,
|
|
15
|
+
role: "region",
|
|
16
|
+
"aria-label": e,
|
|
17
|
+
tabIndex: 0,
|
|
18
|
+
...o,
|
|
19
|
+
children: t
|
|
20
|
+
}
|
|
21
|
+
);
|
|
22
|
+
});
|
|
23
|
+
l.displayName = "Card";
|
|
24
|
+
export {
|
|
25
|
+
l as Card
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=Card.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Card.js","sources":["../../../src/components/Card/Card.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 \"./card.css\";\n\nexport type CardElementType = HTMLDivElement;\n\nexport interface CardCustomProps {\n heading ? : string;\n}\n\nexport type CardProps = CommonAndHTMLProps<CardElementType> & CardCustomProps;\n\n// COMPONENT ///////////////////////////////////////////////////////////////////////////////////////////////////////////\nexport const Card = React.forwardRef((\n {shape, heading, children, ...props} : CardProps, ref : React.Ref<CardElementType>) => {\n let classNames = [];\n\n if (shape) {\n classNames.push(`shape-${shape}`);\n }\n\n return (\n <Element<CardElementType>\n as=\"div\"\n data-card\n ref={ref}\n classNames={classNames}\n role=\"region\"\n aria-label={heading}\n tabIndex={0}\n {...props}\n >\n {children}\n </Element>\n );\n});\nCard.displayName = \"Card\";\n"],"names":["Card","React","shape","heading","children","props","ref","classNames","jsx","Element"],"mappings":";;;;AAmBO,MAAMA,IAAOC,EAAM,WAAW,CACjC,EAAC,OAAAC,GAAO,SAAAC,GAAS,UAAAC,GAAU,GAAGC,EAAA,GAAoBC,MAAqC;AACvF,MAAIC,IAAa,CAAA;AAEjB,SAAIL,KACAK,EAAW,KAAK,SAASL,CAAK,EAAE,GAIhC,gBAAAM;AAAA,IAACC;AAAA,IAAA;AAAA,MACG,IAAG;AAAA,MACH,aAAS;AAAA,MACT,KAAAH;AAAA,MACA,YAAAC;AAAA,MACA,MAAK;AAAA,MACL,cAAYJ;AAAA,MACZ,UAAU;AAAA,MACT,GAAGE;AAAA,MAEH,UAAAD;AAAA,IAAA;AAAA,EAAA;AAGb,CAAC;AACDJ,EAAK,cAAc;"}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsxs as j, jsx as h } from "react/jsx-runtime";
|
|
3
|
+
import A, { useState as w, useRef as K, useEffect as N, useCallback as T } from "react";
|
|
4
|
+
/* empty css */
|
|
5
|
+
import { Element as U } from "../Element/Element.js";
|
|
6
|
+
import { Badge as X } from "../Badge/Badge.js";
|
|
7
|
+
import { Button as q } from "../Button/Button.js";
|
|
8
|
+
const G = A.forwardRef(({
|
|
9
|
+
children: p,
|
|
10
|
+
source: b,
|
|
11
|
+
language: o = "json",
|
|
12
|
+
showCopyButton: D,
|
|
13
|
+
showLineNumbers: x,
|
|
14
|
+
description: F,
|
|
15
|
+
withSyntaxHighlighting: u = !1,
|
|
16
|
+
makeEditable: a = !1,
|
|
17
|
+
onChange: m,
|
|
18
|
+
shadow: E,
|
|
19
|
+
..._
|
|
20
|
+
}, Q) => {
|
|
21
|
+
const [B, O] = w(!1), [l, I] = w(null), [M, R] = w(u), [t, S] = w(null), v = K(null);
|
|
22
|
+
let c = typeof p == "string" ? p : A.Children.toArray(p).join("");
|
|
23
|
+
p || (c = typeof b == "object" ? JSON.stringify(b, null, 2) : b ?? ""), N(() => {
|
|
24
|
+
if (!u) return;
|
|
25
|
+
(async () => {
|
|
26
|
+
var r;
|
|
27
|
+
R(!0);
|
|
28
|
+
try {
|
|
29
|
+
const d = (await import("prismjs")).default;
|
|
30
|
+
if (typeof window < "u" && !window.Prism && (window.Prism = d), o !== "plain" && !d.languages[o])
|
|
31
|
+
try {
|
|
32
|
+
await import(`prismjs/components/prism-${o}`);
|
|
33
|
+
} catch {
|
|
34
|
+
console.warn(`Language "${o}" not available, falling back to plain text`);
|
|
35
|
+
}
|
|
36
|
+
I(d);
|
|
37
|
+
} catch (n) {
|
|
38
|
+
(n == null ? void 0 : n.code) === "ERR_MODULE_NOT_FOUND" || (r = n == null ? void 0 : n.message) != null && r.includes("Cannot find module") ? console.warn(
|
|
39
|
+
"PrismJS is not installed. To enable syntax highlighting, run: npm install prismjs"
|
|
40
|
+
) : console.warn(`Failed to load syntax highlighting for ${o}:`, n);
|
|
41
|
+
} finally {
|
|
42
|
+
R(!1);
|
|
43
|
+
}
|
|
44
|
+
})();
|
|
45
|
+
}, [u, o]);
|
|
46
|
+
const $ = T(() => {
|
|
47
|
+
var f;
|
|
48
|
+
const e = window.getSelection();
|
|
49
|
+
if (!e || e.rangeCount === 0) return null;
|
|
50
|
+
const r = e.getRangeAt(0), n = r.startContainer;
|
|
51
|
+
let s = r.startOffset;
|
|
52
|
+
if (n && n !== t && t) {
|
|
53
|
+
const k = document.createTreeWalker(
|
|
54
|
+
t,
|
|
55
|
+
NodeFilter.SHOW_TEXT,
|
|
56
|
+
null
|
|
57
|
+
);
|
|
58
|
+
let i;
|
|
59
|
+
for (; (i = k.nextNode()) && i !== n; )
|
|
60
|
+
s += ((f = i.textContent) == null ? void 0 : f.length) || 0;
|
|
61
|
+
}
|
|
62
|
+
return s;
|
|
63
|
+
}, [t]), y = T((e) => {
|
|
64
|
+
var r;
|
|
65
|
+
if (!(!t || !u || !l))
|
|
66
|
+
try {
|
|
67
|
+
const n = a ? $() : null, d = l.highlight(
|
|
68
|
+
e,
|
|
69
|
+
l.languages[o] || l.languages.plain,
|
|
70
|
+
o
|
|
71
|
+
);
|
|
72
|
+
if (t.innerHTML = d, a && n !== null) {
|
|
73
|
+
const s = window.getSelection(), f = document.createRange(), k = document.createTreeWalker(
|
|
74
|
+
t,
|
|
75
|
+
NodeFilter.SHOW_TEXT,
|
|
76
|
+
null
|
|
77
|
+
);
|
|
78
|
+
let i = 0, C;
|
|
79
|
+
for (; C = k.nextNode(); ) {
|
|
80
|
+
const L = ((r = C.textContent) == null ? void 0 : r.length) || 0;
|
|
81
|
+
if (i + L >= n) {
|
|
82
|
+
f.setStart(C, n - i), f.setEnd(C, n - i), s == null || s.removeAllRanges(), s == null || s.addRange(f);
|
|
83
|
+
break;
|
|
84
|
+
}
|
|
85
|
+
i += L;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
} catch (n) {
|
|
89
|
+
console.warn("Error highlighting code:", n), t && (t.textContent = e);
|
|
90
|
+
}
|
|
91
|
+
}, [o, u, a, l, $, t]), g = T((e) => {
|
|
92
|
+
if (!t) return;
|
|
93
|
+
const r = t.textContent || "";
|
|
94
|
+
m == null || m(r), requestAnimationFrame(() => {
|
|
95
|
+
y(r);
|
|
96
|
+
});
|
|
97
|
+
}, [y, m, t]);
|
|
98
|
+
N(() => {
|
|
99
|
+
const e = t;
|
|
100
|
+
if (!(!e || !a))
|
|
101
|
+
return e.addEventListener("input", g), () => {
|
|
102
|
+
e.removeEventListener("input", g);
|
|
103
|
+
};
|
|
104
|
+
}, [a, g, t]), N(() => {
|
|
105
|
+
!t || !l || y(c);
|
|
106
|
+
}, [y, c, l, t]);
|
|
107
|
+
const P = async () => {
|
|
108
|
+
try {
|
|
109
|
+
const e = t ? t.textContent || "" : c;
|
|
110
|
+
await navigator.clipboard.writeText(e), O(!0), setTimeout(() => O(!1), 3e3);
|
|
111
|
+
} catch (e) {
|
|
112
|
+
console.error("Could not copy text: ", e);
|
|
113
|
+
}
|
|
114
|
+
}, z = async (e) => {
|
|
115
|
+
(e.key === "Enter" || e.key === " ") && e.target === v.current && (e.preventDefault(), await P());
|
|
116
|
+
};
|
|
117
|
+
let W = [];
|
|
118
|
+
x && W.push("show-line-numbers");
|
|
119
|
+
const J = c.split(/\r\n|\r|\n/gm);
|
|
120
|
+
return /* @__PURE__ */ j(
|
|
121
|
+
U,
|
|
122
|
+
{
|
|
123
|
+
"data-code-block": !0,
|
|
124
|
+
as: "div",
|
|
125
|
+
classNames: W,
|
|
126
|
+
role: "region",
|
|
127
|
+
"aria-label": F || `Code block in ${o}`,
|
|
128
|
+
..._,
|
|
129
|
+
children: [
|
|
130
|
+
D ? B ? /* @__PURE__ */ h(
|
|
131
|
+
X,
|
|
132
|
+
{
|
|
133
|
+
className: "code-block-copied-badge",
|
|
134
|
+
size: "tiny",
|
|
135
|
+
shape: "rounded",
|
|
136
|
+
"aria-live": "polite",
|
|
137
|
+
children: "Copied!"
|
|
138
|
+
}
|
|
139
|
+
) : /* @__PURE__ */ h(
|
|
140
|
+
q,
|
|
141
|
+
{
|
|
142
|
+
type: "button",
|
|
143
|
+
className: "code-block-copy-button",
|
|
144
|
+
size: "tiny",
|
|
145
|
+
shape: "rounded",
|
|
146
|
+
onClick: P,
|
|
147
|
+
onKeyDown: z,
|
|
148
|
+
"aria-label": "Copy code to clipboard",
|
|
149
|
+
children: "Copy"
|
|
150
|
+
}
|
|
151
|
+
) : null,
|
|
152
|
+
/* @__PURE__ */ j(
|
|
153
|
+
"pre",
|
|
154
|
+
{
|
|
155
|
+
ref: v,
|
|
156
|
+
className: `language-${o}${E ? ` shadow-${E}` : ""}`,
|
|
157
|
+
tabIndex: 0,
|
|
158
|
+
"aria-label": `Code in ${o}`,
|
|
159
|
+
children: [
|
|
160
|
+
x && Array.from(Array(J.length).keys()).map((e) => /* @__PURE__ */ h(
|
|
161
|
+
"span",
|
|
162
|
+
{
|
|
163
|
+
className: "line-numbers",
|
|
164
|
+
"aria-hidden": "true",
|
|
165
|
+
children: e + 1
|
|
166
|
+
},
|
|
167
|
+
e
|
|
168
|
+
)),
|
|
169
|
+
/* @__PURE__ */ h(
|
|
170
|
+
"code",
|
|
171
|
+
{
|
|
172
|
+
ref: S,
|
|
173
|
+
contentEditable: a,
|
|
174
|
+
suppressContentEditableWarning: !0,
|
|
175
|
+
spellCheck: "false",
|
|
176
|
+
className: `language-${o} ${M ? "is-loading" : ""}`,
|
|
177
|
+
children: c
|
|
178
|
+
}
|
|
179
|
+
)
|
|
180
|
+
]
|
|
181
|
+
}
|
|
182
|
+
)
|
|
183
|
+
]
|
|
184
|
+
}
|
|
185
|
+
);
|
|
186
|
+
});
|
|
187
|
+
G.displayName = "CodeBlock";
|
|
188
|
+
export {
|
|
189
|
+
G as CodeBlock
|
|
190
|
+
};
|
|
191
|
+
//# sourceMappingURL=CodeBlock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CodeBlock.js","sources":["../../../src/components/CodeBlock/CodeBlock.tsx"],"sourcesContent":["// REACT CORE ==========================================================================================================\nimport React, { useState, useEffect, useRef, useCallback } from \"react\";\n\n// LOCAL COMPONENTS ====================================================================================================\nimport { CommonAndHTMLProps } from \"../Element/constants\";\nimport { Element } from \"$element\";\n\n// STYLES ==============================================================================================================\nimport \"./CodeBlock.css\";\n\n// OTHER ===============================================================================================================\nimport { Badge } from \"$components/Badge\";\nimport { Button } from \"$components/Button\";\n\ninterface PrismType {\n languages : { [key : string] : any };\n highlight : (\n code : string,\n grammar : any,\n language : string\n ) => string;\n}\n\nexport interface CodeBlockCustomProps {\n source ? : object | string;\n language ? : string;\n showCopyButton ? : boolean;\n showLineNumbers ? : boolean;\n description ? : string;\n withSyntaxHighlighting ? : boolean;\n makeEditable ? : boolean;\n onChange ? : (content : string) => void;\n}\n\nexport type CodeBlockElementType = HTMLPreElement;\nexport type CodeBlockProps = Omit<CommonAndHTMLProps<CodeBlockElementType>,\n keyof CodeBlockCustomProps> & CodeBlockCustomProps;\n\n// COMPONENT ///////////////////////////////////////////////////////////////////////////////////////////////////////////\nexport const CodeBlock = React.forwardRef((\n {\n children,\n source,\n language = \"json\",\n showCopyButton,\n showLineNumbers,\n description,\n withSyntaxHighlighting = false,\n makeEditable = false,\n onChange,\n shadow,\n ...props\n } : CodeBlockProps,\n ref : React.Ref<CodeBlockElementType>,\n) => {\n const [ isCodeCopied, setIsCodeCopied ] = useState(false);\n const [ prismModule, setPrismModule ] = useState<PrismType | null>(null);\n const [ isLoading, setIsLoading ] = useState(withSyntaxHighlighting);\n const [ codeElement, setCodeElement ] = useState<HTMLElement | null>(null);\n\n const preRef = useRef<HTMLPreElement>(null);\n\n // Determine the code content from either children or source prop\n let initialCode = typeof children === \"string\"\n ? children\n : React.Children.toArray(children).join(\"\");\n\n if (!children) {\n initialCode = typeof source === \"object\"\n ? JSON.stringify(source, null, 2)\n : source ?? \"\";\n }\n\n // Dynamically load Prism and language support when syntax highlighting is enabled\n useEffect(() => {\n if (!withSyntaxHighlighting) return;\n\n const loadPrismWithLanguage = async () => {\n setIsLoading(true);\n try {\n // Load Prism core FIRST and ensure it's globally available\n const prism = await import(\"prismjs\");\n const Prism = prism.default;\n\n // Ensure Prism is available globally for language plugins\n if (typeof window !== \"undefined\" && !(window as any).Prism) {\n (window as any).Prism = Prism;\n }\n\n // NOW load the language module - it needs Prism to be global\n if (language !== \"plain\" && !Prism.languages[language]) {\n try {\n await import(`prismjs/components/prism-${language}`);\n } catch (langError) {\n console.warn(`Language \"${language}\" not available, falling back to plain text`);\n }\n }\n\n setPrismModule(Prism);\n } catch (error : any) {\n // Check if it's a \"module not found\" error (prismjs not installed)\n if (error?.code === \"ERR_MODULE_NOT_FOUND\" || error?.message?.includes(\"Cannot find module\")) {\n console.warn(\n \"PrismJS is not installed. To enable syntax highlighting, run: npm install prismjs\",\n );\n } else {\n console.warn(`Failed to load syntax highlighting for ${language}:`, error);\n }\n } finally {\n setIsLoading(false);\n }\n };\n\n loadPrismWithLanguage();\n }, [ withSyntaxHighlighting, language ]);\n\n // Get the current cursor position in the editable content\n const getCursorPosition = useCallback(() => {\n const selection = window.getSelection();\n if (!selection || selection.rangeCount === 0) return null;\n\n const range = selection.getRangeAt(0);\n const currentNode = range.startContainer;\n const cursorOffset = range.startOffset;\n\n // Calculate absolute cursor position by walking the DOM tree\n let absoluteOffset = cursorOffset;\n if (currentNode && currentNode !== codeElement && codeElement) {\n const treeWalker = document.createTreeWalker(\n codeElement,\n NodeFilter.SHOW_TEXT,\n null,\n );\n let node;\n while ((node = treeWalker.nextNode())) {\n if (node === currentNode) break;\n absoluteOffset += node.textContent?.length || 0;\n }\n }\n\n return absoluteOffset;\n }, [ codeElement ]);\n\n // Apply syntax highlighting while preserving cursor position in editable mode\n const highlightCode = useCallback((content : string) => {\n if (!codeElement || !withSyntaxHighlighting || !prismModule) return;\n\n try {\n // Store cursor position before modifying content\n const cursorPosition = makeEditable ? getCursorPosition() : null;\n\n // Apply Prism highlighting\n const highlighted = prismModule.highlight(\n content,\n prismModule.languages[language] || prismModule.languages.plain,\n language,\n );\n codeElement.innerHTML = highlighted;\n\n // Restore cursor position for editable content\n if (makeEditable && cursorPosition !== null) {\n const selection = window.getSelection();\n const newRange = document.createRange();\n const treeWalker = document.createTreeWalker(\n codeElement,\n NodeFilter.SHOW_TEXT,\n null,\n );\n\n // Walk through text nodes to find correct cursor position\n let currentOffset = 0;\n let node;\n while ((node = treeWalker.nextNode())) {\n const length = node.textContent?.length || 0;\n if (currentOffset + length >= cursorPosition) {\n newRange.setStart(node, cursorPosition - currentOffset);\n newRange.setEnd(node, cursorPosition - currentOffset);\n selection?.removeAllRanges();\n selection?.addRange(newRange);\n break;\n }\n currentOffset += length;\n }\n }\n } catch (error) {\n console.warn(\"Error highlighting code:\", error);\n if (codeElement) {\n codeElement.textContent = content;\n }\n }\n }, [ language, withSyntaxHighlighting, makeEditable, prismModule, getCursorPosition, codeElement ]);\n\n // Handle content changes in editable mode\n const handleInput = useCallback((event : Event) => {\n if (!codeElement) return;\n\n const content = codeElement.textContent || \"\";\n onChange?.(content);\n\n // Defer highlighting to next frame to ensure content is updated\n requestAnimationFrame(() => {\n highlightCode(content);\n });\n }, [ highlightCode, onChange, codeElement ]);\n\n // Setup input handler for editable content\n useEffect(() => {\n const element = codeElement;\n if (!element || !makeEditable) return;\n\n element.addEventListener(\"input\", handleInput);\n return () => {\n element.removeEventListener(\"input\", handleInput);\n };\n }, [ makeEditable, handleInput, codeElement ]);\n\n // Initial highlighting when component loads\n useEffect(() => {\n if (!codeElement || !prismModule) return;\n highlightCode(initialCode);\n }, [ highlightCode, initialCode, prismModule, codeElement ]);\n\n const copyToClipboard = async () => {\n try {\n const textToCopy = codeElement ? codeElement.textContent || \"\" : initialCode;\n await navigator.clipboard.writeText(textToCopy);\n setIsCodeCopied(true);\n setTimeout(() => setIsCodeCopied(false), 3000);\n } catch (err) {\n console.error(\"Could not copy text: \", err);\n }\n };\n\n // Keyboard shortcuts for copy button ------------------------------------------------------------------------------\n const handleKeyDown = async (e : React.KeyboardEvent) => {\n if ((e.key === \"Enter\" || e.key === \" \") && e.target === preRef.current) {\n e.preventDefault();\n await copyToClipboard();\n }\n };\n\n let classNames = [];\n\n if (showLineNumbers) {\n classNames.push(\"show-line-numbers\");\n }\n\n // Split code into lines for line numbers --------------------------------------------------------------------------\n const lines = initialCode.split(/\\r\\n|\\r|\\n/gm);\n\n return (\n <Element<CodeBlockElementType>\n data-code-block\n as=\"div\"\n classNames={classNames}\n role=\"region\"\n aria-label={description || `Code block in ${language}`}\n {...props}\n >\n {/* Copy Button or Copied Badge */}\n {showCopyButton ? (\n isCodeCopied ? (\n <Badge\n className=\"code-block-copied-badge\"\n size=\"tiny\"\n shape=\"rounded\"\n aria-live=\"polite\"\n >\n Copied!\n </Badge>\n ) : (\n <Button\n type=\"button\"\n className=\"code-block-copy-button\"\n size=\"tiny\"\n shape=\"rounded\"\n onClick={copyToClipboard}\n onKeyDown={handleKeyDown}\n aria-label=\"Copy code to clipboard\"\n >\n Copy\n </Button>\n )\n ) : null}\n\n {/* MAIN CODE DISPLAY ////////////////////////////////////////////////////////////////////////////////// */}\n <pre\n ref={preRef}\n className={`language-${language}${shadow ? ` shadow-${shadow}` : \"\"}`}\n tabIndex={0}\n aria-label={`Code in ${language}`}\n >\n {/* Line Numbers */}\n {showLineNumbers &&\n Array.from(Array(lines.length).keys()).map((index) => (\n <span\n key={index}\n className=\"line-numbers\"\n aria-hidden=\"true\"\n >\n {index + 1}\n </span>\n ))}\n\n {/* Code Content */}\n <code\n ref={setCodeElement}\n contentEditable={makeEditable}\n suppressContentEditableWarning={true}\n spellCheck=\"false\"\n className={`language-${language} ${isLoading ? \"is-loading\" : \"\"}`}\n >\n {initialCode}\n </code>\n </pre>\n </Element>\n );\n});\nCodeBlock.displayName = \"CodeBlock\";\n"],"names":["CodeBlock","React","children","source","language","showCopyButton","showLineNumbers","description","withSyntaxHighlighting","makeEditable","onChange","shadow","props","ref","isCodeCopied","setIsCodeCopied","useState","prismModule","setPrismModule","isLoading","setIsLoading","codeElement","setCodeElement","preRef","useRef","initialCode","useEffect","Prism","error","_a","getCursorPosition","useCallback","selection","range","currentNode","absoluteOffset","treeWalker","node","highlightCode","content","cursorPosition","highlighted","newRange","currentOffset","length","handleInput","event","element","copyToClipboard","textToCopy","err","handleKeyDown","classNames","lines","jsxs","Element","jsx","Badge","Button","index"],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as l } 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
|
+
({ kind: r, height: e, label: t, ...o }, i) => {
|
|
8
|
+
let a = [];
|
|
9
|
+
return r && a.push(r), /* @__PURE__ */ l(
|
|
10
|
+
s,
|
|
11
|
+
{
|
|
12
|
+
as: "hr",
|
|
13
|
+
"data-hrule": !0,
|
|
14
|
+
ref: i,
|
|
15
|
+
classNames: a,
|
|
16
|
+
role: "separator",
|
|
17
|
+
"aria-orientation": "horizontal",
|
|
18
|
+
"aria-label": t,
|
|
19
|
+
...o,
|
|
20
|
+
style: { height: e }
|
|
21
|
+
}
|
|
22
|
+
);
|
|
23
|
+
}
|
|
24
|
+
);
|
|
25
|
+
p.displayName = "Divider";
|
|
26
|
+
export {
|
|
27
|
+
p as Divider
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=Divider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Divider.js","sources":["../../../src/components/Divider/Divider.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 \"./divider.css\";\n\n// prettier-ignore\nexport interface DividerCustomProps {\n kind ? : \"primary\" | \"secondary\" | \"tertiary\";\n height ? : string;\n label ? : string;\n}\n\nexport type DividerElementType = HTMLHRElement;\nexport type DividerProps = Omit<CommonAndHTMLProps<DividerElementType>, keyof DividerCustomProps> & DividerCustomProps;\n\n// COMPONENT ///////////////////////////////////////////////////////////////////////////////////////////////////////////\nexport const Divider = React.forwardRef(\n (\n {kind, height, label, ...props} : DividerProps, ref : React.Ref<DividerElementType>) => {\n let classNames = [];\n\n if (kind) {\n classNames.push(kind);\n }\n\n return (\n <Element<DividerElementType>\n as=\"hr\"\n data-hrule\n ref={ref}\n classNames={classNames}\n role=\"separator\"\n aria-orientation=\"horizontal\"\n aria-label={label}\n {...props}\n style={{height : height}}\n />\n );\n },\n);\nDivider.displayName = \"Divider\";\n"],"names":["Divider","React","kind","height","label","props","ref","classNames","jsx","Element"],"mappings":";;;;AAqBO,MAAMA,IAAUC,EAAM;AAAA,EACzB,CACI,EAAC,MAAAC,GAAM,QAAAC,GAAQ,OAAAC,GAAO,GAAGC,EAAA,GAAuBC,MAAwC;AACxF,QAAIC,IAAa,CAAA;AAEjB,WAAIL,KACAK,EAAW,KAAKL,CAAI,GAIpB,gBAAAM;AAAA,MAACC;AAAA,MAAA;AAAA,QACG,IAAG;AAAA,QACH,cAAU;AAAA,QACV,KAAAH;AAAA,QACA,YAAAC;AAAA,QACA,MAAK;AAAA,QACL,oBAAiB;AAAA,QACjB,cAAYH;AAAA,QACX,GAAGC;AAAA,QACJ,OAAO,EAAC,QAAAF,EAAA;AAAA,MAAe;AAAA,IAAA;AAAA,EAGnC;AACJ;AACAH,EAAQ,cAAc;"}
|