@mindlogic-ai/logician-ui 2.0.0-alpha.13 → 2.0.0-alpha.14

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/index.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { __commonJS, Icon, Text, __require, theme_default, __toESM, useTranslate, IconTypes, IconButton, Code, Card, H5, H1, Subtitle, H4, Subtext, Tooltip as Tooltip$1 } from './chunk-4E3NQZID.mjs';
1
+ import { __commonJS, Icon, Text, __require, theme_default, __toESM, useTranslate, IconTypes, IconButton, Code, Card, H5, H1, Subtitle, H4, Subtext, H3, H2, Link, Tooltip as Tooltip$1 } from './chunk-4E3NQZID.mjs';
2
2
  export { Card, Code, ExpandingTr, H1, H2, H3, H4, H5, Icon, IconButton, IconTypes, InlineCode, Link, Markdown, SegmentedControl, Subtext, Subtitle, Table, TableContainer, Tbody, Td, Text, Th, Thead, Tooltip, Tr, baseMarkdownComponents } from './chunk-4E3NQZID.mjs';
3
3
  import { Avatar as Avatar$1, Badge as Badge$1, Box, Flex, Breadcrumb as Breadcrumb$1, BreadcrumbItem as BreadcrumbItem$1, BreadcrumbLink as BreadcrumbLink$1, useTheme, useToken, Button as Button$1, Checkbox as Checkbox$1, Spinner as Spinner$1, Input, FormControl as FormControl$1, InputGroup, InputLeftElement, InputRightElement, Radio as Radio$1, RadioGroup as RadioGroup$1, Stack, Slider as Slider$1, SliderFilledTrack as SliderFilledTrack$1, SliderMark as SliderMark$1, SliderThumb as SliderThumb$1, SliderTrack as SliderTrack$1, Tag as Tag$1, TagCloseButton as TagCloseButton$1, TagLabel as TagLabel$1, TagLeftIcon as TagLeftIcon$1, TagRightIcon as TagRightIcon$1, forwardRef as forwardRef$1, Textarea as Textarea$1, InputLeftAddon, Accordion as Accordion$1, AccordionButton as AccordionButton$1, AccordionIcon, AccordionItem as AccordionItem$1, Alert as Alert$1, AlertIcon, CloseButton, useBreakpointValue, HStack, ModalOverlay as ModalOverlay$1, Modal as Modal$1, ModalBody as ModalBody$1, ModalCloseButton as ModalCloseButton$1, ModalContent as ModalContent$1, ModalFooter as ModalFooter$1, ModalHeader as ModalHeader$1, Image, Tab as Tab$1, TabList as TabList$1, TabPanel as TabPanel$1, TabPanels as TabPanels$1, Tabs as Tabs$1, Container as Container$1, useToast as useToast$1, Editable, EditablePreview, EditableInput, Tooltip, VStack, Progress, List, FormLabel as FormLabel$1, Portal, Popover, PopoverTrigger, PopoverContent, PopoverArrow, PopoverCloseButton, PopoverBody, ChakraProvider, Grid, MenuButton as MenuButton$1, MenuItem as MenuItem$1, MenuList as MenuList$1, useDisclosure, Switch as Switch$1 } from '@chakra-ui/react';
4
4
  export { AccordionPanel, Menu } from '@chakra-ui/react';
@@ -197,7 +197,7 @@ var require_react_is_development = __commonJS({
197
197
  var ContextProvider = REACT_PROVIDER_TYPE;
198
198
  var Element = REACT_ELEMENT_TYPE;
199
199
  var ForwardRef = REACT_FORWARD_REF_TYPE;
200
- var Fragment4 = REACT_FRAGMENT_TYPE;
200
+ var Fragment5 = REACT_FRAGMENT_TYPE;
201
201
  var Lazy = REACT_LAZY_TYPE;
202
202
  var Memo = REACT_MEMO_TYPE;
203
203
  var Portal4 = REACT_PORTAL_TYPE;
@@ -256,7 +256,7 @@ var require_react_is_development = __commonJS({
256
256
  exports.ContextProvider = ContextProvider;
257
257
  exports.Element = Element;
258
258
  exports.ForwardRef = ForwardRef;
259
- exports.Fragment = Fragment4;
259
+ exports.Fragment = Fragment5;
260
260
  exports.Lazy = Lazy;
261
261
  exports.Memo = Memo;
262
262
  exports.Portal = Portal4;
@@ -468,7 +468,7 @@ var require_factoryWithTypeCheckers = __commonJS({
468
468
  function emptyFunctionThatReturnsNull() {
469
469
  return null;
470
470
  }
471
- module.exports = function(isValidElement2, throwOnDirectAccess) {
471
+ module.exports = function(isValidElement3, throwOnDirectAccess) {
472
472
  var ITERATOR_SYMBOL = typeof Symbol === "function" && Symbol.iterator;
473
473
  var FAUX_ITERATOR_SYMBOL = "@@iterator";
474
474
  function getIteratorFn(maybeIterable) {
@@ -596,7 +596,7 @@ var require_factoryWithTypeCheckers = __commonJS({
596
596
  function createElementTypeChecker() {
597
597
  function validate(props, propName, componentName, location, propFullName) {
598
598
  var propValue = props[propName];
599
- if (!isValidElement2(propValue)) {
599
+ if (!isValidElement3(propValue)) {
600
600
  var propType = getPropType(propValue);
601
601
  return new PropTypeError("Invalid " + location + " `" + propFullName + "` of type " + ("`" + propType + "` supplied to `" + componentName + "`, expected a single ReactElement."));
602
602
  }
@@ -784,7 +784,7 @@ var require_factoryWithTypeCheckers = __commonJS({
784
784
  if (Array.isArray(propValue)) {
785
785
  return propValue.every(isNode);
786
786
  }
787
- if (propValue === null || isValidElement2(propValue)) {
787
+ if (propValue === null || isValidElement3(propValue)) {
788
788
  return true;
789
789
  }
790
790
  var iteratorFn = getIteratorFn(propValue);
@@ -2781,6 +2781,118 @@ User Agent: ${errorInfo.userAgent}`;
2781
2781
  }
2782
2782
  );
2783
2783
  }
2784
+ var getTextContent = (node) => {
2785
+ if (typeof node === "string" || typeof node === "number") {
2786
+ return String(node);
2787
+ }
2788
+ if (Array.isArray(node)) {
2789
+ return node.map(getTextContent).join("");
2790
+ }
2791
+ if (isValidElement(node)) {
2792
+ return getTextContent(node.props.children);
2793
+ }
2794
+ return "";
2795
+ };
2796
+ var truncateReactNode = (node, charLimit, currentLength = 0) => {
2797
+ if (currentLength >= charLimit) {
2798
+ return { truncated: null, length: currentLength };
2799
+ }
2800
+ if (typeof node === "string" || typeof node === "number") {
2801
+ const text = String(node);
2802
+ const remainingChars = charLimit - currentLength;
2803
+ if (text.length <= remainingChars) {
2804
+ return { truncated: node, length: currentLength + text.length };
2805
+ }
2806
+ return {
2807
+ truncated: text.slice(0, remainingChars) + "\u2026",
2808
+ length: charLimit
2809
+ };
2810
+ }
2811
+ if (Array.isArray(node)) {
2812
+ const truncatedChildren = [];
2813
+ let totalLength = currentLength;
2814
+ for (const child of node) {
2815
+ if (totalLength >= charLimit) break;
2816
+ const { truncated, length } = truncateReactNode(
2817
+ child,
2818
+ charLimit,
2819
+ totalLength
2820
+ );
2821
+ if (truncated !== null) {
2822
+ truncatedChildren.push(truncated);
2823
+ }
2824
+ totalLength = length;
2825
+ }
2826
+ return { truncated: truncatedChildren, length: totalLength };
2827
+ }
2828
+ if (isValidElement(node)) {
2829
+ const { truncated: truncatedChildren, length } = truncateReactNode(
2830
+ node.props.children,
2831
+ charLimit,
2832
+ currentLength
2833
+ );
2834
+ if (truncatedChildren === null) {
2835
+ return { truncated: null, length };
2836
+ }
2837
+ return {
2838
+ truncated: {
2839
+ ...node,
2840
+ props: {
2841
+ ...node.props,
2842
+ children: truncatedChildren
2843
+ }
2844
+ },
2845
+ length
2846
+ };
2847
+ }
2848
+ return { truncated: node, length: currentLength };
2849
+ };
2850
+ var useExpandableText = (children, charLimit = 100) => {
2851
+ const [isExpanded, setIsExpanded] = useState(false);
2852
+ const textContent = useMemo(() => getTextContent(children), [children]);
2853
+ const isLong = textContent.length > charLimit;
2854
+ const displayText = useMemo(() => {
2855
+ if (isExpanded || !isLong) return children;
2856
+ const { truncated } = truncateReactNode(children, charLimit);
2857
+ return truncated;
2858
+ }, [isExpanded, isLong, children, charLimit]);
2859
+ const handleToggle = useCallback((event) => {
2860
+ event.preventDefault();
2861
+ event.stopPropagation();
2862
+ setIsExpanded((prev) => !prev);
2863
+ }, []);
2864
+ return { isExpanded, isLong, displayText, handleToggle };
2865
+ };
2866
+ var TEXT_COMPONENTS = {
2867
+ Text,
2868
+ Subtitle,
2869
+ Subtext,
2870
+ H1,
2871
+ H2,
2872
+ H3,
2873
+ H4,
2874
+ H5
2875
+ };
2876
+ var ExpandableText = ({
2877
+ charLimit = 100,
2878
+ component = "Text",
2879
+ children,
2880
+ ...rest
2881
+ }) => {
2882
+ const translate = useTranslate();
2883
+ const { displayText, isLong, isExpanded, handleToggle } = useExpandableText(
2884
+ children,
2885
+ charLimit
2886
+ );
2887
+ const Component = TEXT_COMPONENTS[component];
2888
+ return /* @__PURE__ */ jsxs(Component, { ...rest, children: [
2889
+ displayText,
2890
+ isLong && /* @__PURE__ */ jsxs(Fragment, { children: [
2891
+ " ",
2892
+ /* @__PURE__ */ jsx(Link, { as: "button", onClick: handleToggle, "aria-expanded": isExpanded, children: isExpanded ? translate("see_less") : translate("see_more") })
2893
+ ] })
2894
+ ] });
2895
+ };
2784
2896
  var Spinner = forwardRef(
2785
2897
  ({ ...rest }, ref) => {
2786
2898
  return /* @__PURE__ */ jsx(
@@ -5671,6 +5783,6 @@ object-assign/index.js:
5671
5783
  *)
5672
5784
  */
5673
5785
 
5674
- export { Accordion, AccordionButton, AccordionItem, Alert, AutosizeTextarea, AutowidthInput, Avatar, Badge, Banner, Breadcrumb, BreadcrumbItem, BreadcrumbLink, Button, Carousel, CarouselModal, Checkbox, Chip, ChipButton, CodeTabs, Container, CopyableCode, CrossPageToasts, DataField, ErrorFallback, FileInput, FileItem, FileList, FormControl, FormLabel, GuideCue, GuideCueProvider, InfoSprinkle, Input3 as Input, LineGraph, LogicianProvider, MDXEditor, MONTHS, Masonry, MaxLengthIndicator, MenuButton, MenuItem, MenuList, Modal, ModalBody, ModalCloseButton, ModalContent, ModalFooter, ModalHeader, ModalOverlay, MonthPicker, PageLoader, Pagination, PasswordInput, PinInput, ProgressBar, ProgressSegment, RadialProgress_default as RadialProgress, Radio, RadioGroup, RangeDatePicker, SectionLoader, SeeMoreButton, SegmentedProgressBar, Select, SingleDatePicker, Slider, SliderFilledTrack, SliderMark, SliderThumb, SliderTrack, Spinner, Switch, Tab, TabList, TabPanel, TabPanels, Tabs, Tag, TagCloseButton, TagLabel, TagLeftIcon, TagRightIcon, Textarea, Toast, UrlInput, baseStyles as badgeStyles, getContainerWidth, getDateFnsLocale, getDefaultDateFormat, getMonthNames, toastStyles, useCaseStyles, useToast, variantStyles };
5786
+ export { Accordion, AccordionButton, AccordionItem, Alert, AutosizeTextarea, AutowidthInput, Avatar, Badge, Banner, Breadcrumb, BreadcrumbItem, BreadcrumbLink, Button, Carousel, CarouselModal, Checkbox, Chip, ChipButton, CodeTabs, Container, CopyableCode, CrossPageToasts, DataField, ErrorFallback, ExpandableText, FileInput, FileItem, FileList, FormControl, FormLabel, GuideCue, GuideCueProvider, InfoSprinkle, Input3 as Input, LineGraph, LogicianProvider, MDXEditor, MONTHS, Masonry, MaxLengthIndicator, MenuButton, MenuItem, MenuList, Modal, ModalBody, ModalCloseButton, ModalContent, ModalFooter, ModalHeader, ModalOverlay, MonthPicker, PageLoader, Pagination, PasswordInput, PinInput, ProgressBar, ProgressSegment, RadialProgress_default as RadialProgress, Radio, RadioGroup, RangeDatePicker, SectionLoader, SeeMoreButton, SegmentedProgressBar, Select, SingleDatePicker, Slider, SliderFilledTrack, SliderMark, SliderThumb, SliderTrack, Spinner, Switch, Tab, TabList, TabPanel, TabPanels, Tabs, Tag, TagCloseButton, TagLabel, TagLeftIcon, TagRightIcon, Textarea, Toast, UrlInput, baseStyles as badgeStyles, getContainerWidth, getDateFnsLocale, getDefaultDateFormat, getMonthNames, toastStyles, useCaseStyles, useToast, variantStyles };
5675
5787
  //# sourceMappingURL=index.mjs.map
5676
5788
  //# sourceMappingURL=index.mjs.map