@solibo/solibo-ui 2.0.3 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/index.css +1 -1
- package/dist/assets/index13.css +1 -1
- package/dist/assets/index16.css +1 -1
- package/dist/assets/index18.css +1 -1
- package/dist/assets/index19.css +1 -1
- package/dist/assets/index2.css +1 -1
- package/dist/assets/index28.css +1 -1
- package/dist/assets/index35.css +1 -1
- package/dist/assets/index36.css +1 -1
- package/dist/assets/index37.css +1 -1
- package/dist/assets/index38.css +1 -1
- package/dist/assets/index39.css +1 -1
- package/dist/assets/index40.css +1 -1
- package/dist/assets/index41.css +1 -1
- package/dist/assets/index42.css +1 -1
- package/dist/assets/index43.css +1 -1
- package/dist/assets/index44.css +1 -1
- package/dist/assets/index45.css +1 -1
- package/dist/assets/index46.css +1 -1
- package/dist/assets/index47.css +1 -1
- package/dist/assets/index48.css +1 -1
- package/dist/assets/index49.css +1 -1
- package/dist/assets/index50.css +1 -1
- package/dist/assets/index51.css +1 -1
- package/dist/assets/index52.css +1 -1
- package/dist/assets/index53.css +1 -1
- package/dist/assets/index54.css +1 -1
- package/dist/assets/index55.css +1 -0
- package/dist/assets/index6.css +1 -1
- package/dist/components/badge/index.cjs +1 -1
- package/dist/components/badge/index.js +38 -38
- package/dist/components/checkbox/index.cjs +1 -1
- package/dist/components/checkbox/index.js +1 -1
- package/dist/components/clipboard/index.cjs +2 -0
- package/dist/components/clipboard/index.cjs.map +1 -0
- package/dist/components/clipboard/index.js +29 -0
- package/dist/components/clipboard/index.js.map +1 -0
- package/dist/components/collapsible/index.cjs +1 -1
- package/dist/components/collapsible/index.js +1 -1
- package/dist/components/controls/index.cjs +1 -1
- package/dist/components/controls/index.js +2 -2
- package/dist/components/croppable/index.cjs +1 -1
- package/dist/components/croppable/index.js +1 -1
- package/dist/components/dialog/index.cjs +1 -1
- package/dist/components/dialog/index.js +35 -35
- package/dist/components/divider/index.cjs +1 -1
- package/dist/components/divider/index.js +3 -3
- package/dist/components/dropdown/index.cjs +1 -1
- package/dist/components/dropdown/index.js +4 -4
- package/dist/components/dropzone/index.cjs +1 -1
- package/dist/components/dropzone/index.js +1 -1
- package/dist/components/editor/index.cjs +1 -1
- package/dist/components/editor/index.js +2 -2
- package/dist/components/empty-state/index.cjs +1 -1
- package/dist/components/empty-state/index.cjs.map +1 -1
- package/dist/components/empty-state/index.js +16 -11
- package/dist/components/empty-state/index.js.map +1 -1
- package/dist/components/fieldset/index.cjs +1 -1
- package/dist/components/fieldset/index.js +1 -1
- package/dist/components/figure/index.cjs +1 -1
- package/dist/components/figure/index.js +1 -1
- package/dist/components/file/index.cjs +1 -1
- package/dist/components/file/index.js +1 -1
- package/dist/components/group/index.cjs +1 -1
- package/dist/components/group/index.js +3 -3
- package/dist/components/header/index.cjs +1 -1
- package/dist/components/header/index.cjs.map +1 -1
- package/dist/components/header/index.js +22 -22
- package/dist/components/icon/index.cjs +1 -1
- package/dist/components/icon/index.cjs.map +1 -1
- package/dist/components/icon/index.js +28 -26
- package/dist/components/icon/index.js.map +1 -1
- package/dist/components/iframe/index.cjs +1 -1
- package/dist/components/iframe/index.cjs.map +1 -1
- package/dist/components/iframe/index.js +45 -44
- package/dist/components/iframe/index.js.map +1 -1
- package/dist/components/input/index.cjs +1 -1
- package/dist/components/input/index.js +2 -2
- package/dist/components/link/index.cjs +1 -1
- package/dist/components/link/index.js +1 -1
- package/dist/components/list/index.cjs +1 -1
- package/dist/components/list/index.cjs.map +1 -1
- package/dist/components/list/index.js +72 -44
- package/dist/components/list/index.js.map +1 -1
- package/dist/components/loading/index.cjs +1 -1
- package/dist/components/loading/index.js +1 -1
- package/dist/components/menu/index.cjs +1 -1
- package/dist/components/menu/index.cjs.map +1 -1
- package/dist/components/menu/index.js +23 -22
- package/dist/components/menu/index.js.map +1 -1
- package/dist/components/message/index.cjs +1 -1
- package/dist/components/message/index.cjs.map +1 -1
- package/dist/components/message/index.js +33 -33
- package/dist/components/message/index.js.map +1 -1
- package/dist/components/nav/index.cjs +1 -1
- package/dist/components/nav/index.js +36 -36
- package/dist/components/popover/index.cjs +1 -1
- package/dist/components/popover/index.cjs.map +1 -1
- package/dist/components/popover/index.js +81 -69
- package/dist/components/popover/index.js.map +1 -1
- package/dist/components/search/index.cjs +1 -1
- package/dist/components/search/index.js +1 -1
- package/dist/components/select/index.cjs +1 -1
- package/dist/components/select/index.js +2 -2
- package/dist/components/sortable/index.cjs.map +1 -1
- package/dist/components/sortable/index.js.map +1 -1
- package/dist/components/table/index.cjs.map +1 -1
- package/dist/components/table/index.js.map +1 -1
- package/dist/components/textarea/index.cjs +1 -1
- package/dist/components/textarea/index.js +12 -12
- package/dist/components/toolbar/index.cjs +1 -1
- package/dist/components/toolbar/index.js +1 -1
- package/dist/components/widget/index.cjs +1 -1
- package/dist/components/widget/index.cjs.map +1 -1
- package/dist/components/widget/index.js +13 -8
- package/dist/components/widget/index.js.map +1 -1
- package/dist/icons-BTif0nDb.cjs +2 -0
- package/dist/icons-BTif0nDb.cjs.map +1 -0
- package/dist/{icons-dUP7sKyt.js → icons-CBbpxsJF.js} +32 -5
- package/dist/icons-CBbpxsJF.js.map +1 -0
- package/dist/{index-Bt7vnwji.cjs → index-5qUTKX7P.cjs} +2 -2
- package/dist/{index-Bt7vnwji.cjs.map → index-5qUTKX7P.cjs.map} +1 -1
- package/dist/{index-BLb3JiCr.js → index-BuSfz4qx.js} +3 -3
- package/dist/{index-BLb3JiCr.js.map → index-BuSfz4qx.js.map} +1 -1
- package/dist/{index-DWDp66fp.cjs → index-CeHwRKAg.cjs} +2 -2
- package/dist/{index-DWDp66fp.cjs.map → index-CeHwRKAg.cjs.map} +1 -1
- package/dist/{index-Ds-Ocs4L.js → index-DBWgRXp9.js} +3 -3
- package/dist/{index-Ds-Ocs4L.js.map → index-DBWgRXp9.js.map} +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +45 -7
- package/dist/index.js +97 -95
- package/dist/index.js.map +1 -1
- package/dist/menu-popover-CdhAgSQb.cjs +2 -0
- package/dist/menu-popover-CdhAgSQb.cjs.map +1 -0
- package/dist/menu-popover-D-Ax5zzy.js +77 -0
- package/dist/menu-popover-D-Ax5zzy.js.map +1 -0
- package/dist/tokens.json +1 -1
- package/package.json +1 -1
- package/dist/icons-Dv_p0bUF.cjs +0 -2
- package/dist/icons-Dv_p0bUF.cjs.map +0 -1
- package/dist/icons-dUP7sKyt.js.map +0 -1
- package/dist/menu-popover-CM3v5s-5.cjs +0 -2
- package/dist/menu-popover-CM3v5s-5.cjs.map +0 -1
- package/dist/menu-popover-DOkciab5.js +0 -74
- package/dist/menu-popover-DOkciab5.js.map +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('../../assets/
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('../../assets/index51.css');const a=require("react/jsx-runtime"),q=require("../../classix-5H4IWnMA.cjs"),l=require("react");function H(t){return l.isValidElement(t)&&t.type===l.Fragment}function O(t,s=[]){return l.Children.forEach(t,i=>{H(i)?O(i.props.children,s):s.push(i)}),s}function F(t,{wrapper:s="li"}={}){return O(t).filter(n=>n!==null).map((n,u)=>{if(l.isValidElement(n)&&n.type===s)return n;const f=l.isValidElement(n)&&n.key!=null?n.key:u;return l.createElement(s,{key:f},n)})}const T="_controls_bp7if_3",V="_horizontal_bp7if_8",A="_list_bp7if_19",I="_columns_bp7if_59",D="_masonry_bp7if_69",P="_scrollable_bp7if_79",$="_overflowing_bp7if_86",G="_compact_bp7if_111",r={controls:T,horizontal:V,list:A,columns:I,masonry:D,scrollable:P,overflowing:$,compact:G},M=(t,s)=>{typeof t=="function"?t(s):t&&(t.current=s)};function J({children:t,className:s,columns:i=1,compact:p=!1,controls:n,horizontal:u,layout:f="grid",maxVisibleItems:m,ordered:z,ref:y,style:B,...b}){const _=Number.isFinite(i)?Math.max(1,Math.floor(i)):1,v=l.useRef(null),[c,S]=l.useState(),o=f==="grid"&&_===1&&!u&&m!=null&&Number.isFinite(m)&&m>=1?Math.floor(m):void 0,h=!!o&&c!=null;l.useLayoutEffect(()=>{const e=v.current;if(!e||!o)return;const R=()=>{const g=Array.from(e.children).filter(j=>j instanceof HTMLElement&&getComputedStyle(j).display!=="none"),N=g[o-1],k=g.length>o&&N?N.getBoundingClientRect().bottom-e.getBoundingClientRect().top+e.scrollTop+(parseFloat(getComputedStyle(e).paddingBottom)||0):void 0;S(k)},d=new ResizeObserver(R),C=()=>{d.disconnect(),d.observe(e),Array.from(e.children).forEach(g=>d.observe(g)),R()},L=new MutationObserver(C);return L.observe(e,{childList:!0,subtree:!0,characterData:!0}),C(),()=>{d.disconnect(),L.disconnect()}},[t,o,h]);const x=q.t(s,r.list,f==="masonry"?r.masonry:_>1&&r.columns,!!o&&r.scrollable,h&&r.overflowing,u&&r.horizontal,p&&r.compact),E={...B,"--list-columns":_,"--list-max-height":o&&c!=null?`${c}px`:void 0},w=z?a.jsx("ol",{className:x,ref:e=>{v.current=e,M(y,e)},style:E,...b,tabIndex:b.tabIndex??(o&&c!=null?0:void 0),children:F(t)}):a.jsx("ul",{className:x,ref:e=>{v.current=e,M(y,e)},style:E,...b,tabIndex:b.tabIndex??(o&&c!=null?0:void 0),children:F(t)});return n==null?w:a.jsxs(a.Fragment,{children:[a.jsx("div",{className:r.controls,children:n}),w]})}exports.List=J;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../../src/utils/wrap-children.tsx","../../../src/components/list/index.tsx"],"sourcesContent":["import React, { JSX } from 'react';\n\ntype WrapOptions<T extends keyof JSX.IntrinsicElements = 'li'> = {\n wrapper?: T;\n};\n\nfunction isFragmentElement(\n node: React.ReactNode\n): node is React.ReactElement<{ children?: React.ReactNode }> {\n return React.isValidElement(node) && node.type === React.Fragment;\n}\n\nfunction flattenChildren(children: React.ReactNode, out: React.ReactNode[] = []) {\n React.Children.forEach(children, (child) => {\n if (isFragmentElement(child)) {\n flattenChildren(child.props.children, out);\n } else {\n out.push(child);\n }\n });\n return out;\n}\n\nexport function wrapChildren<T extends keyof JSX.IntrinsicElements = 'li'>(\n children: React.ReactNode,\n { wrapper = 'li' as T }: WrapOptions<T> = {}\n) {\n const flat = flattenChildren(children);\n\n const filterNull = flat.filter((child) => child !== null);\n\n return filterNull.map((child, i) => {\n if (React.isValidElement(child) && child.type === wrapper) {\n return child;\n }\n\n const key = React.isValidElement(child) && child.key != null ? child.key : i;\n\n return React.createElement(wrapper, { key }, child);\n });\n}\n","import cx from 'classix';\n\nimport { wrapChildren } from '@/utils/wrap-children';\n\nimport styles from './styles.module.css';\n\ntype ListElement = HTMLUListElement | HTMLOListElement;\n\nconst setListRef = (ref: React.Ref<ListElement> | undefined, node: ListElement | null) => {\n if (typeof ref === 'function') ref(node);\n else if (ref) ref.current = node;\n};\n\nexport type ListProps = React.ComponentPropsWithoutRef<'ul'> & {\n columns?: number;\n compact?: boolean;\n controls?: React.ReactNode;\n horizontal?: boolean;\n ordered?: boolean;\n ref?: React.Ref<ListElement>;\n};\n\nexport function List({\n children,\n className,\n columns = 1,\n compact = false,\n controls,\n horizontal,\n ordered,\n ref,\n style,\n ...props\n}: ListProps) {\n const cols = Number.isFinite(columns) ? Math.max(1, Math.floor(columns)) : 1;\n\n const classes = cx(\n className,\n styles.list,\n cols > 1 && styles.columns,\n horizontal && styles.horizontal,\n compact && styles.compact\n );\n\n type withVars = React.CSSProperties & {\n '--list-columns'?: number;\n };\n\n const withVars: withVars = {\n ...style,\n '--list-columns': cols,\n };\n\n const list = ordered ? (\n <ol\n className={classes}\n ref={(node) => setListRef(ref, node)}\n style={withVars}\n {...props}\n >\n {wrapChildren(children)}\n </ol>\n ) : (\n <ul\n className={classes}\n ref={(node) => setListRef(ref, node)}\n style={withVars}\n {...props}\n >\n {wrapChildren(children)}\n </ul>\n );\n\n if (controls === undefined || controls === null) return list;\n\n return (\n <>\n <div className={styles.controls}>{controls}</div>\n {list}\n </>\n );\n}\n"],"names":["isFragmentElement","node","React","isValidElement","type","Fragment","flattenChildren","children","out","Children","forEach","child","props","push","wrapChildren","wrapper","filter","map","i","key","createElement","setListRef","ref","current","List","className","columns","compact","controls","horizontal","ordered","style","cols","Number","isFinite","Math","max","floor","classes","cx","styles","list","withVars","jsx","jsxs"],"mappings":"gLAMA,SAASA,EACPC,EAC4D,CAC5D,OAAOC,EAAMC,eAAeF,CAAI,GAAKA,EAAKG,OAASF,EAAMG,QAC3D,CAEA,SAASC,EAAgBC,EAA2BC,EAAyB,GAAI,CAC/EN,OAAAA,EAAMO,SAASC,QAAQH,EAAWI,GAAU,CACtCX,EAAkBW,CAAK,EACzBL,EAAgBK,EAAMC,MAAML,SAAUC,CAAG,EAEzCA,EAAIK,KAAKF,CAAK,CAElB,CAAC,EACMH,CACT,CAEO,SAASM,EACdP,EACA,CAAEQ,QAAAA,EAAU,IAA0B,EAAI,GAC1C,CAKA,OAJaT,EAAgBC,CAAQ,EAEbS,OAAQL,GAAUA,IAAU,IAAI,EAEtCM,IAAI,CAACN,EAAOO,IAAM,CAClC,GAAIhB,EAAMC,eAAeQ,CAAK,GAAKA,EAAMP,OAASW,EAChD,OAAOJ,EAGT,MAAMQ,EAAMjB,EAAMC,eAAeQ,CAAK,GAAKA,EAAMQ,KAAO,KAAOR,EAAMQ,IAAMD,EAE3E,OAAOhB,EAAMkB,cAAcL,EAAS,CAAEI,IAAAA,CAAAA,EAAOR,CAAK,CACpD,CAAC,CACH,
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../src/utils/wrap-children.tsx","../../../src/components/list/index.tsx"],"sourcesContent":["import React, { JSX } from 'react';\n\ntype WrapOptions<T extends keyof JSX.IntrinsicElements = 'li'> = {\n wrapper?: T;\n};\n\nfunction isFragmentElement(\n node: React.ReactNode\n): node is React.ReactElement<{ children?: React.ReactNode }> {\n return React.isValidElement(node) && node.type === React.Fragment;\n}\n\nfunction flattenChildren(children: React.ReactNode, out: React.ReactNode[] = []) {\n React.Children.forEach(children, (child) => {\n if (isFragmentElement(child)) {\n flattenChildren(child.props.children, out);\n } else {\n out.push(child);\n }\n });\n return out;\n}\n\nexport function wrapChildren<T extends keyof JSX.IntrinsicElements = 'li'>(\n children: React.ReactNode,\n { wrapper = 'li' as T }: WrapOptions<T> = {}\n) {\n const flat = flattenChildren(children);\n\n const filterNull = flat.filter((child) => child !== null);\n\n return filterNull.map((child, i) => {\n if (React.isValidElement(child) && child.type === wrapper) {\n return child;\n }\n\n const key = React.isValidElement(child) && child.key != null ? child.key : i;\n\n return React.createElement(wrapper, { key }, child);\n });\n}\n","import cx from 'classix';\nimport { useLayoutEffect, useRef, useState } from 'react';\n\nimport { wrapChildren } from '@/utils/wrap-children';\n\nimport styles from './styles.module.css';\n\ntype ListElement = HTMLUListElement | HTMLOListElement;\n\nconst setListRef = (ref: React.Ref<ListElement> | undefined, node: ListElement | null) => {\n if (typeof ref === 'function') ref(node);\n else if (ref) ref.current = node;\n};\n\nexport type ListProps = React.ComponentPropsWithoutRef<'ul'> & {\n columns?: number;\n compact?: boolean;\n controls?: React.ReactNode;\n horizontal?: boolean;\n layout?: 'grid' | 'masonry';\n maxVisibleItems?: number;\n ordered?: boolean;\n ref?: React.Ref<ListElement>;\n};\n\nexport function List({\n children,\n className,\n columns = 1,\n compact = false,\n controls,\n horizontal,\n layout = 'grid',\n maxVisibleItems,\n ordered,\n ref,\n style,\n ...props\n}: ListProps) {\n const cols = Number.isFinite(columns) ? Math.max(1, Math.floor(columns)) : 1;\n\n const listRef = useRef<ListElement | null>(null);\n const [visibleHeight, setVisibleHeight] = useState<number>();\n const itemLimit =\n layout === 'grid' &&\n cols === 1 &&\n !horizontal &&\n maxVisibleItems != null &&\n Number.isFinite(maxVisibleItems) &&\n maxVisibleItems >= 1\n ? Math.floor(maxVisibleItems)\n : undefined;\n const isOverflowing = Boolean(itemLimit) && visibleHeight != null;\n\n useLayoutEffect(() => {\n const node = listRef.current;\n if (!node || !itemLimit) return;\n\n const measure = () => {\n const items = Array.from(node.children).filter(\n (item): item is HTMLElement =>\n item instanceof HTMLElement && getComputedStyle(item).display !== 'none'\n );\n const lastVisible = items[itemLimit - 1];\n const height =\n items.length > itemLimit && lastVisible\n ? lastVisible.getBoundingClientRect().bottom -\n node.getBoundingClientRect().top +\n node.scrollTop +\n (parseFloat(getComputedStyle(node).paddingBottom) || 0)\n : undefined;\n setVisibleHeight(height);\n };\n const resizeObserver = new ResizeObserver(measure);\n const observeItems = () => {\n resizeObserver.disconnect();\n resizeObserver.observe(node);\n Array.from(node.children).forEach((item) => resizeObserver.observe(item));\n measure();\n };\n const mutationObserver = new MutationObserver(observeItems);\n mutationObserver.observe(node, { childList: true, subtree: true, characterData: true });\n observeItems();\n return () => {\n resizeObserver.disconnect();\n mutationObserver.disconnect();\n };\n }, [children, itemLimit, isOverflowing]);\n\n const classes = cx(\n className,\n styles.list,\n layout === 'masonry' ? styles.masonry : cols > 1 && styles.columns,\n Boolean(itemLimit) && styles.scrollable,\n isOverflowing && styles.overflowing,\n horizontal && styles.horizontal,\n compact && styles.compact\n );\n\n type withVars = React.CSSProperties & {\n '--list-columns'?: number;\n '--list-max-height'?: string;\n };\n\n const withVars: withVars = {\n ...style,\n '--list-columns': cols,\n '--list-max-height': itemLimit && visibleHeight != null ? `${visibleHeight}px` : undefined,\n };\n\n const list = ordered ? (\n <ol\n className={classes}\n ref={(node) => {\n listRef.current = node;\n setListRef(ref, node);\n }}\n style={withVars}\n {...props}\n tabIndex={props.tabIndex ?? (itemLimit && visibleHeight != null ? 0 : undefined)}\n >\n {wrapChildren(children)}\n </ol>\n ) : (\n <ul\n className={classes}\n ref={(node) => {\n listRef.current = node;\n setListRef(ref, node);\n }}\n style={withVars}\n {...props}\n tabIndex={props.tabIndex ?? (itemLimit && visibleHeight != null ? 0 : undefined)}\n >\n {wrapChildren(children)}\n </ul>\n );\n\n if (controls === undefined || controls === null) return list;\n\n return (\n <>\n <div className={styles.controls}>{controls}</div>\n {list}\n </>\n );\n}\n"],"names":["isFragmentElement","node","React","isValidElement","type","Fragment","flattenChildren","children","out","Children","forEach","child","props","push","wrapChildren","wrapper","filter","map","i","key","createElement","setListRef","ref","current","List","className","columns","compact","controls","horizontal","layout","maxVisibleItems","ordered","style","cols","Number","isFinite","Math","max","floor","listRef","useRef","visibleHeight","setVisibleHeight","useState","itemLimit","undefined","isOverflowing","Boolean","useLayoutEffect","measure","items","Array","from","item","HTMLElement","getComputedStyle","display","lastVisible","height","length","getBoundingClientRect","bottom","top","scrollTop","parseFloat","paddingBottom","resizeObserver","ResizeObserver","observeItems","disconnect","observe","mutationObserver","MutationObserver","childList","subtree","characterData","classes","cx","styles","list","masonry","scrollable","overflowing","withVars","jsx","tabIndex","jsxs"],"mappings":"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"}
|
|
@@ -1,57 +1,85 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import { t as
|
|
3
|
-
import
|
|
4
|
-
import '../../assets/
|
|
5
|
-
return
|
|
1
|
+
import { jsx as g, jsxs as V, Fragment as j } from "react/jsx-runtime";
|
|
2
|
+
import { t as A } from "../../classix-DG18itHa.js";
|
|
3
|
+
import i, { useRef as I, useState as T, useLayoutEffect as D } from "react";
|
|
4
|
+
import '../../assets/index51.css';function $(t) {
|
|
5
|
+
return i.isValidElement(t) && t.type === i.Fragment;
|
|
6
6
|
}
|
|
7
|
-
function
|
|
8
|
-
return
|
|
9
|
-
|
|
10
|
-
}),
|
|
7
|
+
function M(t, o = []) {
|
|
8
|
+
return i.Children.forEach(t, (r) => {
|
|
9
|
+
$(r) ? M(r.props.children, o) : o.push(r);
|
|
10
|
+
}), o;
|
|
11
11
|
}
|
|
12
|
-
function
|
|
13
|
-
wrapper:
|
|
12
|
+
function z(t, {
|
|
13
|
+
wrapper: o = "li"
|
|
14
14
|
} = {}) {
|
|
15
|
-
return
|
|
16
|
-
if (
|
|
17
|
-
return
|
|
18
|
-
const
|
|
19
|
-
return
|
|
20
|
-
key:
|
|
21
|
-
},
|
|
15
|
+
return M(t).filter((n) => n !== null).map((n, a) => {
|
|
16
|
+
if (i.isValidElement(n) && n.type === o)
|
|
17
|
+
return n;
|
|
18
|
+
const u = i.isValidElement(n) && n.key != null ? n.key : a;
|
|
19
|
+
return i.createElement(o, {
|
|
20
|
+
key: u
|
|
21
|
+
}, n);
|
|
22
22
|
});
|
|
23
23
|
}
|
|
24
|
-
const
|
|
25
|
-
controls:
|
|
26
|
-
horizontal:
|
|
27
|
-
list:
|
|
28
|
-
columns:
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
24
|
+
const q = "_controls_bp7if_3", G = "_horizontal_bp7if_8", J = "_list_bp7if_19", K = "_columns_bp7if_59", P = "_masonry_bp7if_69", Q = "_scrollable_bp7if_79", U = "_overflowing_bp7if_86", W = "_compact_bp7if_111", l = {
|
|
25
|
+
controls: q,
|
|
26
|
+
horizontal: G,
|
|
27
|
+
list: J,
|
|
28
|
+
columns: K,
|
|
29
|
+
masonry: P,
|
|
30
|
+
scrollable: Q,
|
|
31
|
+
overflowing: U,
|
|
32
|
+
compact: W
|
|
33
|
+
}, B = (t, o) => {
|
|
34
|
+
typeof t == "function" ? t(o) : t && (t.current = o);
|
|
32
35
|
};
|
|
33
|
-
function
|
|
36
|
+
function tt({
|
|
34
37
|
children: t,
|
|
35
|
-
className:
|
|
36
|
-
columns:
|
|
37
|
-
compact:
|
|
38
|
-
controls:
|
|
39
|
-
horizontal:
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
38
|
+
className: o,
|
|
39
|
+
columns: r = 1,
|
|
40
|
+
compact: v = !1,
|
|
41
|
+
controls: n,
|
|
42
|
+
horizontal: a,
|
|
43
|
+
layout: u = "grid",
|
|
44
|
+
maxVisibleItems: f,
|
|
45
|
+
ordered: O,
|
|
46
|
+
ref: h,
|
|
47
|
+
style: k,
|
|
48
|
+
...m
|
|
44
49
|
}) {
|
|
45
|
-
const
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
50
|
+
const p = Number.isFinite(r) ? Math.max(1, Math.floor(r)) : 1, _ = I(null), [c, H] = T(), s = u === "grid" && p === 1 && !a && f != null && Number.isFinite(f) && f >= 1 ? Math.floor(f) : void 0, y = !!s && c != null;
|
|
51
|
+
D(() => {
|
|
52
|
+
const e = _.current;
|
|
53
|
+
if (!e || !s) return;
|
|
54
|
+
const C = () => {
|
|
55
|
+
const d = Array.from(e.children).filter((L) => L instanceof HTMLElement && getComputedStyle(L).display !== "none"), F = d[s - 1], S = d.length > s && F ? F.getBoundingClientRect().bottom - e.getBoundingClientRect().top + e.scrollTop + (parseFloat(getComputedStyle(e).paddingBottom) || 0) : void 0;
|
|
56
|
+
H(S);
|
|
57
|
+
}, b = new ResizeObserver(C), N = () => {
|
|
58
|
+
b.disconnect(), b.observe(e), Array.from(e.children).forEach((d) => b.observe(d)), C();
|
|
59
|
+
}, R = new MutationObserver(N);
|
|
60
|
+
return R.observe(e, {
|
|
61
|
+
childList: !0,
|
|
62
|
+
subtree: !0,
|
|
63
|
+
characterData: !0
|
|
64
|
+
}), N(), () => {
|
|
65
|
+
b.disconnect(), R.disconnect();
|
|
66
|
+
};
|
|
67
|
+
}, [t, s, y]);
|
|
68
|
+
const E = A(o, l.list, u === "masonry" ? l.masonry : p > 1 && l.columns, !!s && l.scrollable, y && l.overflowing, a && l.horizontal, v && l.compact), w = {
|
|
69
|
+
...k,
|
|
70
|
+
"--list-columns": p,
|
|
71
|
+
"--list-max-height": s && c != null ? `${c}px` : void 0
|
|
72
|
+
}, x = O ? /* @__PURE__ */ g("ol", { className: E, ref: (e) => {
|
|
73
|
+
_.current = e, B(h, e);
|
|
74
|
+
}, style: w, ...m, tabIndex: m.tabIndex ?? (s && c != null ? 0 : void 0), children: z(t) }) : /* @__PURE__ */ g("ul", { className: E, ref: (e) => {
|
|
75
|
+
_.current = e, B(h, e);
|
|
76
|
+
}, style: w, ...m, tabIndex: m.tabIndex ?? (s && c != null ? 0 : void 0), children: z(t) });
|
|
77
|
+
return n == null ? x : /* @__PURE__ */ V(j, { children: [
|
|
78
|
+
/* @__PURE__ */ g("div", { className: l.controls, children: n }),
|
|
79
|
+
x
|
|
52
80
|
] });
|
|
53
81
|
}
|
|
54
82
|
export {
|
|
55
|
-
|
|
83
|
+
tt as List
|
|
56
84
|
};
|
|
57
85
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/utils/wrap-children.tsx","../../../src/components/list/index.tsx"],"sourcesContent":["import React, { JSX } from 'react';\n\ntype WrapOptions<T extends keyof JSX.IntrinsicElements = 'li'> = {\n wrapper?: T;\n};\n\nfunction isFragmentElement(\n node: React.ReactNode\n): node is React.ReactElement<{ children?: React.ReactNode }> {\n return React.isValidElement(node) && node.type === React.Fragment;\n}\n\nfunction flattenChildren(children: React.ReactNode, out: React.ReactNode[] = []) {\n React.Children.forEach(children, (child) => {\n if (isFragmentElement(child)) {\n flattenChildren(child.props.children, out);\n } else {\n out.push(child);\n }\n });\n return out;\n}\n\nexport function wrapChildren<T extends keyof JSX.IntrinsicElements = 'li'>(\n children: React.ReactNode,\n { wrapper = 'li' as T }: WrapOptions<T> = {}\n) {\n const flat = flattenChildren(children);\n\n const filterNull = flat.filter((child) => child !== null);\n\n return filterNull.map((child, i) => {\n if (React.isValidElement(child) && child.type === wrapper) {\n return child;\n }\n\n const key = React.isValidElement(child) && child.key != null ? child.key : i;\n\n return React.createElement(wrapper, { key }, child);\n });\n}\n","import cx from 'classix';\n\nimport { wrapChildren } from '@/utils/wrap-children';\n\nimport styles from './styles.module.css';\n\ntype ListElement = HTMLUListElement | HTMLOListElement;\n\nconst setListRef = (ref: React.Ref<ListElement> | undefined, node: ListElement | null) => {\n if (typeof ref === 'function') ref(node);\n else if (ref) ref.current = node;\n};\n\nexport type ListProps = React.ComponentPropsWithoutRef<'ul'> & {\n columns?: number;\n compact?: boolean;\n controls?: React.ReactNode;\n horizontal?: boolean;\n ordered?: boolean;\n ref?: React.Ref<ListElement>;\n};\n\nexport function List({\n children,\n className,\n columns = 1,\n compact = false,\n controls,\n horizontal,\n ordered,\n ref,\n style,\n ...props\n}: ListProps) {\n const cols = Number.isFinite(columns) ? Math.max(1, Math.floor(columns)) : 1;\n\n const classes = cx(\n className,\n styles.list,\n cols > 1 && styles.columns,\n horizontal && styles.horizontal,\n compact && styles.compact\n );\n\n type withVars = React.CSSProperties & {\n '--list-columns'?: number;\n };\n\n const withVars: withVars = {\n ...style,\n '--list-columns': cols,\n };\n\n const list = ordered ? (\n <ol\n className={classes}\n ref={(node) => setListRef(ref, node)}\n style={withVars}\n {...props}\n >\n {wrapChildren(children)}\n </ol>\n ) : (\n <ul\n className={classes}\n ref={(node) => setListRef(ref, node)}\n style={withVars}\n {...props}\n >\n {wrapChildren(children)}\n </ul>\n );\n\n if (controls === undefined || controls === null) return list;\n\n return (\n <>\n <div className={styles.controls}>{controls}</div>\n {list}\n </>\n );\n}\n"],"names":["isFragmentElement","node","React","isValidElement","type","Fragment","flattenChildren","children","out","Children","forEach","child","props","push","wrapChildren","wrapper","filter","map","i","key","createElement","setListRef","ref","current","List","className","columns","compact","controls","horizontal","ordered","style","cols","Number","isFinite","Math","max","floor","classes","cx","styles","list","withVars","jsx","jsxs"],"mappings":";;;AAMA,SAASA,EACPC,GAC4D;AAC5D,SAAOC,EAAMC,eAAeF,CAAI,KAAKA,EAAKG,SAASF,EAAMG;AAC3D;AAEA,SAASC,EAAgBC,GAA2BC,IAAyB,IAAI;AAC/EN,SAAAA,EAAMO,SAASC,QAAQH,GAAWI,CAAAA,MAAU;AAC1C,IAAIX,EAAkBW,CAAK,IACzBL,EAAgBK,EAAMC,MAAML,UAAUC,CAAG,IAEzCA,EAAIK,KAAKF,CAAK;AAAA,EAElB,CAAC,GACMH;AACT;AAEO,SAASM,EACdP,GACA;AAAA,EAAEQ,SAAAA,IAAU;AAA0B,IAAI,IAC1C;AAKA,SAJaT,EAAgBC,CAAQ,EAEbS,OAAQL,CAAAA,MAAUA,MAAU,IAAI,EAEtCM,IAAI,CAACN,GAAOO,MAAM;AAClC,QAAIhB,EAAMC,eAAeQ,CAAK,KAAKA,EAAMP,SAASW;AAChD,aAAOJ;AAGT,UAAMQ,IAAMjB,EAAMC,eAAeQ,CAAK,KAAKA,EAAMQ,OAAO,OAAOR,EAAMQ,MAAMD;AAE3E,WAAOhB,EAAMkB,cAAcL,GAAS;AAAA,MAAEI,KAAAA;AAAAA,IAAAA,GAAOR,CAAK;AAAA,EACpD,CAAC;AACH
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/utils/wrap-children.tsx","../../../src/components/list/index.tsx"],"sourcesContent":["import React, { JSX } from 'react';\n\ntype WrapOptions<T extends keyof JSX.IntrinsicElements = 'li'> = {\n wrapper?: T;\n};\n\nfunction isFragmentElement(\n node: React.ReactNode\n): node is React.ReactElement<{ children?: React.ReactNode }> {\n return React.isValidElement(node) && node.type === React.Fragment;\n}\n\nfunction flattenChildren(children: React.ReactNode, out: React.ReactNode[] = []) {\n React.Children.forEach(children, (child) => {\n if (isFragmentElement(child)) {\n flattenChildren(child.props.children, out);\n } else {\n out.push(child);\n }\n });\n return out;\n}\n\nexport function wrapChildren<T extends keyof JSX.IntrinsicElements = 'li'>(\n children: React.ReactNode,\n { wrapper = 'li' as T }: WrapOptions<T> = {}\n) {\n const flat = flattenChildren(children);\n\n const filterNull = flat.filter((child) => child !== null);\n\n return filterNull.map((child, i) => {\n if (React.isValidElement(child) && child.type === wrapper) {\n return child;\n }\n\n const key = React.isValidElement(child) && child.key != null ? child.key : i;\n\n return React.createElement(wrapper, { key }, child);\n });\n}\n","import cx from 'classix';\nimport { useLayoutEffect, useRef, useState } from 'react';\n\nimport { wrapChildren } from '@/utils/wrap-children';\n\nimport styles from './styles.module.css';\n\ntype ListElement = HTMLUListElement | HTMLOListElement;\n\nconst setListRef = (ref: React.Ref<ListElement> | undefined, node: ListElement | null) => {\n if (typeof ref === 'function') ref(node);\n else if (ref) ref.current = node;\n};\n\nexport type ListProps = React.ComponentPropsWithoutRef<'ul'> & {\n columns?: number;\n compact?: boolean;\n controls?: React.ReactNode;\n horizontal?: boolean;\n layout?: 'grid' | 'masonry';\n maxVisibleItems?: number;\n ordered?: boolean;\n ref?: React.Ref<ListElement>;\n};\n\nexport function List({\n children,\n className,\n columns = 1,\n compact = false,\n controls,\n horizontal,\n layout = 'grid',\n maxVisibleItems,\n ordered,\n ref,\n style,\n ...props\n}: ListProps) {\n const cols = Number.isFinite(columns) ? Math.max(1, Math.floor(columns)) : 1;\n\n const listRef = useRef<ListElement | null>(null);\n const [visibleHeight, setVisibleHeight] = useState<number>();\n const itemLimit =\n layout === 'grid' &&\n cols === 1 &&\n !horizontal &&\n maxVisibleItems != null &&\n Number.isFinite(maxVisibleItems) &&\n maxVisibleItems >= 1\n ? Math.floor(maxVisibleItems)\n : undefined;\n const isOverflowing = Boolean(itemLimit) && visibleHeight != null;\n\n useLayoutEffect(() => {\n const node = listRef.current;\n if (!node || !itemLimit) return;\n\n const measure = () => {\n const items = Array.from(node.children).filter(\n (item): item is HTMLElement =>\n item instanceof HTMLElement && getComputedStyle(item).display !== 'none'\n );\n const lastVisible = items[itemLimit - 1];\n const height =\n items.length > itemLimit && lastVisible\n ? lastVisible.getBoundingClientRect().bottom -\n node.getBoundingClientRect().top +\n node.scrollTop +\n (parseFloat(getComputedStyle(node).paddingBottom) || 0)\n : undefined;\n setVisibleHeight(height);\n };\n const resizeObserver = new ResizeObserver(measure);\n const observeItems = () => {\n resizeObserver.disconnect();\n resizeObserver.observe(node);\n Array.from(node.children).forEach((item) => resizeObserver.observe(item));\n measure();\n };\n const mutationObserver = new MutationObserver(observeItems);\n mutationObserver.observe(node, { childList: true, subtree: true, characterData: true });\n observeItems();\n return () => {\n resizeObserver.disconnect();\n mutationObserver.disconnect();\n };\n }, [children, itemLimit, isOverflowing]);\n\n const classes = cx(\n className,\n styles.list,\n layout === 'masonry' ? styles.masonry : cols > 1 && styles.columns,\n Boolean(itemLimit) && styles.scrollable,\n isOverflowing && styles.overflowing,\n horizontal && styles.horizontal,\n compact && styles.compact\n );\n\n type withVars = React.CSSProperties & {\n '--list-columns'?: number;\n '--list-max-height'?: string;\n };\n\n const withVars: withVars = {\n ...style,\n '--list-columns': cols,\n '--list-max-height': itemLimit && visibleHeight != null ? `${visibleHeight}px` : undefined,\n };\n\n const list = ordered ? (\n <ol\n className={classes}\n ref={(node) => {\n listRef.current = node;\n setListRef(ref, node);\n }}\n style={withVars}\n {...props}\n tabIndex={props.tabIndex ?? (itemLimit && visibleHeight != null ? 0 : undefined)}\n >\n {wrapChildren(children)}\n </ol>\n ) : (\n <ul\n className={classes}\n ref={(node) => {\n listRef.current = node;\n setListRef(ref, node);\n }}\n style={withVars}\n {...props}\n tabIndex={props.tabIndex ?? (itemLimit && visibleHeight != null ? 0 : undefined)}\n >\n {wrapChildren(children)}\n </ul>\n );\n\n if (controls === undefined || controls === null) return list;\n\n return (\n <>\n <div className={styles.controls}>{controls}</div>\n {list}\n </>\n );\n}\n"],"names":["isFragmentElement","node","React","isValidElement","type","Fragment","flattenChildren","children","out","Children","forEach","child","props","push","wrapChildren","wrapper","filter","map","i","key","createElement","setListRef","ref","current","List","className","columns","compact","controls","horizontal","layout","maxVisibleItems","ordered","style","cols","Number","isFinite","Math","max","floor","listRef","useRef","visibleHeight","setVisibleHeight","useState","itemLimit","undefined","isOverflowing","Boolean","useLayoutEffect","measure","items","Array","from","item","HTMLElement","getComputedStyle","display","lastVisible","height","length","getBoundingClientRect","bottom","top","scrollTop","parseFloat","paddingBottom","resizeObserver","ResizeObserver","observeItems","disconnect","observe","mutationObserver","MutationObserver","childList","subtree","characterData","classes","cx","styles","list","masonry","scrollable","overflowing","withVars","jsx","tabIndex","jsxs"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('../../assets/
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('../../assets/index52.css');const l=require("react/jsx-runtime"),n=require("../../classix-5H4IWnMA.cjs"),o="_loading_107mr_23",m="_spin_107mr_1",r="_small_107mr_40",c="_large_107mr_46",_="_ping_107mr_52",d="_sticky_107mr_78",s={loading:o,default:"_default_107mr_29",spin:m,small:r,large:c,ping:_,sticky:d},g={large:s.large,medium:s.medium,small:s.small},u=({variant:a="default",size:e="medium",sticky:i=!1,...t})=>l.jsx("div",{className:n.t(s.loading,i&&s.sticky),"data-component":"loading",children:l.jsx("span",{className:n.t(s.loading,s[a],g[e]),...t})});exports.Loading=u;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as l } from "react/jsx-runtime";
|
|
2
2
|
import { t as a } from "../../classix-DG18itHa.js";
|
|
3
|
-
import '../../assets/
|
|
3
|
+
import '../../assets/index52.css';const o = "_loading_107mr_23", _ = "_spin_107mr_1", e = "_small_107mr_40", r = "_large_107mr_46", c = "_ping_107mr_52", d = "_sticky_107mr_78", s = {
|
|
4
4
|
loading: o,
|
|
5
5
|
default: "_default_107mr_29",
|
|
6
6
|
spin: _,
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),j=require("../button/index.cjs"),M=require("../icon/index.cjs"),i=require("../../menu-popover-CdhAgSQb.cjs");function v(e){return[...e].sort((n,a)=>+!!n.isDanger-+!!a.isDanger)}const D=e=>v(e).map(n=>({button:r.jsxs(j.Button,{"aria-label":n.accessibleLabel,disabled:n.disabled,children:[n.icon&&r.jsx(M.Icon,{gap:"right",name:n.icon,size:"small"}),r.jsx("span",{children:n.label})]}),id:n.id,isActive:n.isActive,isDanger:n.isDanger,value:n})),h=({inline:e=!1,items:n,menuAccessibleLabel:a="Menu",onItemSelect:s,triggerAccessibleLabel:l="Open menu",triggerIcon:p="DotsThreeVertical",triggerLabel:b,variant:g="popover"})=>{const d=D(n);return g==="simple"?r.jsx(i.MenuActionList,{actions:d,menuAccessibleLabel:a,onSelect:o=>{var u;(u=o.onSelect)==null||u.call(o),s==null||s(o)},"data-component":"menu"}):r.jsx(i.MenuPopover,{inline:e,triggerAccessibleLabel:l,triggerIcon:p,triggerLabel:b,"data-component":"menu",children:({close:o,initialFocus:u,isPositioned:x})=>r.jsx(i.MenuActionList,{actions:d,initialFocus:u,readyToFocus:x,menuAccessibleLabel:a,onSelect:c=>{var t;(t=c.onSelect)==null||t.call(c),s==null||s(c),o()},usesMenuSemantics:!0})})};exports.Menu=h;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../../src/components/menu/index.tsx"],"sourcesContent":["import { Button } from '@/components/button';\nimport { Icon, type IconName } from '@/components/icon';\n\nimport { type MenuAction, MenuActionList } from './action-list';\nimport { MenuPopover } from './menu-popover';\n\nexport type MenuItem = {\n accessibleLabel?: string;\n disabled?: boolean;\n icon?: IconName;\n id?: string;\n isActive?: boolean;\n isDanger?: boolean;\n label: React.ReactNode;\n onSelect?: () => void;\n};\n\ntype MenuSharedProps = {\n items: MenuItem[];\n menuAccessibleLabel?: string;\n onItemSelect?: (item: MenuItem) => void;\n};\n\ntype PopoverMenuProps = {\n inline?: boolean;\n triggerAccessibleLabel?: string;\n triggerIcon?: IconName;\n triggerLabel?: React.ReactNode;\n variant?: 'popover';\n};\n\ntype SimpleMenuProps = {\n inline?: never;\n triggerAccessibleLabel?: never;\n triggerIcon?: never;\n triggerLabel?: never;\n variant: 'simple';\n};\n\nexport type MenuProps = MenuSharedProps & (PopoverMenuProps | SimpleMenuProps);\n\nfunction sortDangerItemsLast(items: MenuItem[]) {\n return [...items].sort(\n (left, right) => Number(Boolean(left.isDanger)) - Number(Boolean(right.isDanger))\n );\n}\n\nconst getActions = (items: MenuItem[]): MenuAction<MenuItem>[] =>\n sortDangerItemsLast(items).map((item) => ({\n button: (\n <Button\n aria-label={item.accessibleLabel}\n disabled={item.disabled}\n >\n {item.icon && (\n <Icon\n gap='right'\n name={item.icon}\n size='small'\n />\n )}\n <span>{item.label}</span>\n </Button>\n ),\n id: item.id,\n isActive: item.isActive,\n isDanger: item.isDanger,\n value: item,\n }));\n\nexport const Menu = ({\n inline = false,\n items,\n menuAccessibleLabel = 'Menu',\n onItemSelect,\n triggerAccessibleLabel = 'Open menu',\n triggerIcon = 'DotsThreeVertical',\n triggerLabel,\n variant = 'popover',\n}: MenuProps) => {\n const actions = getActions(items);\n\n if (variant === 'simple') {\n return (\n <MenuActionList\n actions={actions}\n menuAccessibleLabel={menuAccessibleLabel}\n onSelect={(item) => {\n item.onSelect?.();\n onItemSelect?.(item);\n }}\n />\n );\n }\n\n return (\n <MenuPopover\n inline={inline}\n triggerAccessibleLabel={triggerAccessibleLabel}\n triggerIcon={triggerIcon}\n triggerLabel={triggerLabel}\n >\n {({ close, initialFocus }) => (\n <MenuActionList\n actions={actions}\n initialFocus={initialFocus}\n menuAccessibleLabel={menuAccessibleLabel}\n onSelect={(item) => {\n item.onSelect?.();\n onItemSelect?.(item);\n close();\n }}\n usesMenuSemantics\n />\n )}\n </MenuPopover>\n );\n};\n"],"names":["sortDangerItemsLast","items","sort","left","right","Number","Boolean","isDanger","getActions","map","item","button","Button","accessibleLabel","disabled","icon","Icon","jsx","label","id","isActive","value","Menu","inline","menuAccessibleLabel","onItemSelect","triggerAccessibleLabel","triggerIcon","triggerLabel","variant","actions","MenuActionList","onSelect","MenuPopover","close","initialFocus"],"mappings":"kOAyCA,SAASA,EAAoBC,EAAmB,CAC9C,MAAO,CAAC,GAAGA,CAAK,EAAEC,KAChB,CAACC,EAAMC,IAAUC,CAAOC,EAAQH,EAAKI,SAAaF,CAAOC,EAAQF,EAAMG,QACzE,CACF,CAEA,MAAMC,EAAcP,GAClBD,EAAoBC,CAAK,EAAEQ,IAAKC,IAAU,CACxCC,cACGC,SAAA,CACC,aAAYF,EAAKG,gBACjB,SAAUH,EAAKI,SAEdJ,SAAAA,CAAAA,EAAKK,YACHC,EAAAA,KAAA,CACC,IAAI,QACJ,KAAMN,EAAKK,KACX,KAAK,OAAA,CAAO,EAGhBE,EAAAA,IAAC,OAAA,CAAMP,SAAAA,EAAKQ,KAAAA,CAAM,CAAA,EACpB,EAEFC,GAAIT,EAAKS,GACTC,SAAUV,EAAKU,SACfb,SAAUG,EAAKH,SACfc,MAAOX,CACT,EAAE,EAESY,EAAOA,CAAC,CACnBC,OAAAA,EAAS,GACTtB,MAAAA,EACAuB,oBAAAA,EAAsB,OACtBC,aAAAA,EACAC,uBAAAA,EAAyB,YACzBC,YAAAA,EAAc,oBACdC,aAAAA,EACAC,QAAAA,EAAU,SACD,IAAM,CACf,MAAMC,EAAUtB,EAAWP,CAAK,EAEhC,OAAI4B,IAAY,SAEZZ,EAAAA,IAACc,EAAAA,eAAA,CACC,QAAAD,EACA,oBAAAN,EACA,SAAWd,GAAS,QAClBA,EAAAA,EAAKsB,WAALtB,MAAAA,EAAAA,KAAAA,GACAe,GAAAA,MAAAA,EAAef,EACjB,EAAE,iBAAA,OAAA,EAMNO,MAACgB,EAAAA,aACC,OAAAV,EACA,uBAAAG,EACA,YAAAC,EACA,aAAAC,EAA2B,iBAAA,OAE1B,SAAA,CAAC,CAAEM,MAAAA,EAAOC,aAAAA,
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../src/components/menu/index.tsx"],"sourcesContent":["import { Button } from '@/components/button';\nimport { Icon, type IconName } from '@/components/icon';\n\nimport { type MenuAction, MenuActionList } from './action-list';\nimport { MenuPopover } from './menu-popover';\n\nexport type MenuItem = {\n accessibleLabel?: string;\n disabled?: boolean;\n icon?: IconName;\n id?: string;\n isActive?: boolean;\n isDanger?: boolean;\n label: React.ReactNode;\n onSelect?: () => void;\n};\n\ntype MenuSharedProps = {\n items: MenuItem[];\n menuAccessibleLabel?: string;\n onItemSelect?: (item: MenuItem) => void;\n};\n\ntype PopoverMenuProps = {\n inline?: boolean;\n triggerAccessibleLabel?: string;\n triggerIcon?: IconName;\n triggerLabel?: React.ReactNode;\n variant?: 'popover';\n};\n\ntype SimpleMenuProps = {\n inline?: never;\n triggerAccessibleLabel?: never;\n triggerIcon?: never;\n triggerLabel?: never;\n variant: 'simple';\n};\n\nexport type MenuProps = MenuSharedProps & (PopoverMenuProps | SimpleMenuProps);\n\nfunction sortDangerItemsLast(items: MenuItem[]) {\n return [...items].sort(\n (left, right) => Number(Boolean(left.isDanger)) - Number(Boolean(right.isDanger))\n );\n}\n\nconst getActions = (items: MenuItem[]): MenuAction<MenuItem>[] =>\n sortDangerItemsLast(items).map((item) => ({\n button: (\n <Button\n aria-label={item.accessibleLabel}\n disabled={item.disabled}\n >\n {item.icon && (\n <Icon\n gap='right'\n name={item.icon}\n size='small'\n />\n )}\n <span>{item.label}</span>\n </Button>\n ),\n id: item.id,\n isActive: item.isActive,\n isDanger: item.isDanger,\n value: item,\n }));\n\nexport const Menu = ({\n inline = false,\n items,\n menuAccessibleLabel = 'Menu',\n onItemSelect,\n triggerAccessibleLabel = 'Open menu',\n triggerIcon = 'DotsThreeVertical',\n triggerLabel,\n variant = 'popover',\n}: MenuProps) => {\n const actions = getActions(items);\n\n if (variant === 'simple') {\n return (\n <MenuActionList\n actions={actions}\n menuAccessibleLabel={menuAccessibleLabel}\n onSelect={(item) => {\n item.onSelect?.();\n onItemSelect?.(item);\n }}\n />\n );\n }\n\n return (\n <MenuPopover\n inline={inline}\n triggerAccessibleLabel={triggerAccessibleLabel}\n triggerIcon={triggerIcon}\n triggerLabel={triggerLabel}\n >\n {({ close, initialFocus, isPositioned }) => (\n <MenuActionList\n actions={actions}\n initialFocus={initialFocus}\n readyToFocus={isPositioned}\n menuAccessibleLabel={menuAccessibleLabel}\n onSelect={(item) => {\n item.onSelect?.();\n onItemSelect?.(item);\n close();\n }}\n usesMenuSemantics\n />\n )}\n </MenuPopover>\n );\n};\n"],"names":["sortDangerItemsLast","items","sort","left","right","Number","Boolean","isDanger","getActions","map","item","button","Button","accessibleLabel","disabled","icon","Icon","jsx","label","id","isActive","value","Menu","inline","menuAccessibleLabel","onItemSelect","triggerAccessibleLabel","triggerIcon","triggerLabel","variant","actions","MenuActionList","onSelect","MenuPopover","close","initialFocus","isPositioned"],"mappings":"kOAyCA,SAASA,EAAoBC,EAAmB,CAC9C,MAAO,CAAC,GAAGA,CAAK,EAAEC,KAChB,CAACC,EAAMC,IAAUC,CAAOC,EAAQH,EAAKI,SAAaF,CAAOC,EAAQF,EAAMG,QACzE,CACF,CAEA,MAAMC,EAAcP,GAClBD,EAAoBC,CAAK,EAAEQ,IAAKC,IAAU,CACxCC,cACGC,SAAA,CACC,aAAYF,EAAKG,gBACjB,SAAUH,EAAKI,SAEdJ,SAAAA,CAAAA,EAAKK,YACHC,EAAAA,KAAA,CACC,IAAI,QACJ,KAAMN,EAAKK,KACX,KAAK,OAAA,CAAO,EAGhBE,EAAAA,IAAC,OAAA,CAAMP,SAAAA,EAAKQ,KAAAA,CAAM,CAAA,EACpB,EAEFC,GAAIT,EAAKS,GACTC,SAAUV,EAAKU,SACfb,SAAUG,EAAKH,SACfc,MAAOX,CACT,EAAE,EAESY,EAAOA,CAAC,CACnBC,OAAAA,EAAS,GACTtB,MAAAA,EACAuB,oBAAAA,EAAsB,OACtBC,aAAAA,EACAC,uBAAAA,EAAyB,YACzBC,YAAAA,EAAc,oBACdC,aAAAA,EACAC,QAAAA,EAAU,SACD,IAAM,CACf,MAAMC,EAAUtB,EAAWP,CAAK,EAEhC,OAAI4B,IAAY,SAEZZ,EAAAA,IAACc,EAAAA,eAAA,CACC,QAAAD,EACA,oBAAAN,EACA,SAAWd,GAAS,QAClBA,EAAAA,EAAKsB,WAALtB,MAAAA,EAAAA,KAAAA,GACAe,GAAAA,MAAAA,EAAef,EACjB,EAAE,iBAAA,OAAA,EAMNO,MAACgB,EAAAA,aACC,OAAAV,EACA,uBAAAG,EACA,YAAAC,EACA,aAAAC,EAA2B,iBAAA,OAE1B,SAAA,CAAC,CAAEM,MAAAA,EAAOC,aAAAA,EAAcC,aAAAA,CAAAA,UACtBL,EAAAA,eAAA,CACC,QAAAD,EACA,aAAAK,EACA,aAAcC,EACd,oBAAAZ,EACA,SAAWd,GAAS,QAClBA,EAAAA,EAAKsB,WAALtB,MAAAA,EAAAA,KAAAA,GACAe,GAAAA,MAAAA,EAAef,GACfwB,EAAAA,CACF,EACA,kBAAiB,EAAA,CAAA,EAGvB,CAEJ"}
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import { Button as
|
|
3
|
-
import { Icon as
|
|
4
|
-
import { M as
|
|
5
|
-
function
|
|
6
|
-
return [...
|
|
1
|
+
import { jsx as s, jsxs as M } from "react/jsx-runtime";
|
|
2
|
+
import { Button as h } from "../button/index.js";
|
|
3
|
+
import { Icon as v } from "../icon/index.js";
|
|
4
|
+
import { M as l, a as t } from "../../menu-popover-D-Ax5zzy.js";
|
|
5
|
+
function x(o) {
|
|
6
|
+
return [...o].sort((n, u) => +!!n.isDanger - +!!u.isDanger);
|
|
7
7
|
}
|
|
8
|
-
const
|
|
9
|
-
button: /* @__PURE__ */
|
|
10
|
-
n.icon && /* @__PURE__ */
|
|
11
|
-
/* @__PURE__ */
|
|
8
|
+
const A = (o) => x(o).map((n) => ({
|
|
9
|
+
button: /* @__PURE__ */ M(h, { "aria-label": n.accessibleLabel, disabled: n.disabled, children: [
|
|
10
|
+
n.icon && /* @__PURE__ */ s(v, { gap: "right", name: n.icon, size: "small" }),
|
|
11
|
+
/* @__PURE__ */ s("span", { children: n.label })
|
|
12
12
|
] }),
|
|
13
13
|
id: n.id,
|
|
14
14
|
isActive: n.isActive,
|
|
15
15
|
isDanger: n.isDanger,
|
|
16
16
|
value: n
|
|
17
|
-
})),
|
|
18
|
-
inline:
|
|
17
|
+
})), T = ({
|
|
18
|
+
inline: o = !1,
|
|
19
19
|
items: n,
|
|
20
20
|
menuAccessibleLabel: u = "Menu",
|
|
21
21
|
onItemSelect: r,
|
|
@@ -24,19 +24,20 @@ const x = (s) => t(s).map((n) => ({
|
|
|
24
24
|
triggerLabel: b,
|
|
25
25
|
variant: f = "popover"
|
|
26
26
|
}) => {
|
|
27
|
-
const
|
|
28
|
-
return f === "simple" ? /* @__PURE__ */
|
|
29
|
-
var
|
|
30
|
-
(
|
|
31
|
-
}, "data-component": "menu" }) : /* @__PURE__ */
|
|
27
|
+
const p = A(n);
|
|
28
|
+
return f === "simple" ? /* @__PURE__ */ s(l, { actions: p, menuAccessibleLabel: u, onSelect: (a) => {
|
|
29
|
+
var c;
|
|
30
|
+
(c = a.onSelect) == null || c.call(a), r == null || r(a);
|
|
31
|
+
}, "data-component": "menu" }) : /* @__PURE__ */ s(t, { inline: o, triggerAccessibleLabel: e, triggerIcon: g, triggerLabel: b, "data-component": "menu", children: ({
|
|
32
32
|
close: a,
|
|
33
|
-
initialFocus:
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
33
|
+
initialFocus: c,
|
|
34
|
+
isPositioned: D
|
|
35
|
+
}) => /* @__PURE__ */ s(l, { actions: p, initialFocus: c, readyToFocus: D, menuAccessibleLabel: u, onSelect: (i) => {
|
|
36
|
+
var d;
|
|
37
|
+
(d = i.onSelect) == null || d.call(i), r == null || r(i), a();
|
|
37
38
|
}, usesMenuSemantics: !0 }) });
|
|
38
39
|
};
|
|
39
40
|
export {
|
|
40
|
-
|
|
41
|
+
T as Menu
|
|
41
42
|
};
|
|
42
43
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/menu/index.tsx"],"sourcesContent":["import { Button } from '@/components/button';\nimport { Icon, type IconName } from '@/components/icon';\n\nimport { type MenuAction, MenuActionList } from './action-list';\nimport { MenuPopover } from './menu-popover';\n\nexport type MenuItem = {\n accessibleLabel?: string;\n disabled?: boolean;\n icon?: IconName;\n id?: string;\n isActive?: boolean;\n isDanger?: boolean;\n label: React.ReactNode;\n onSelect?: () => void;\n};\n\ntype MenuSharedProps = {\n items: MenuItem[];\n menuAccessibleLabel?: string;\n onItemSelect?: (item: MenuItem) => void;\n};\n\ntype PopoverMenuProps = {\n inline?: boolean;\n triggerAccessibleLabel?: string;\n triggerIcon?: IconName;\n triggerLabel?: React.ReactNode;\n variant?: 'popover';\n};\n\ntype SimpleMenuProps = {\n inline?: never;\n triggerAccessibleLabel?: never;\n triggerIcon?: never;\n triggerLabel?: never;\n variant: 'simple';\n};\n\nexport type MenuProps = MenuSharedProps & (PopoverMenuProps | SimpleMenuProps);\n\nfunction sortDangerItemsLast(items: MenuItem[]) {\n return [...items].sort(\n (left, right) => Number(Boolean(left.isDanger)) - Number(Boolean(right.isDanger))\n );\n}\n\nconst getActions = (items: MenuItem[]): MenuAction<MenuItem>[] =>\n sortDangerItemsLast(items).map((item) => ({\n button: (\n <Button\n aria-label={item.accessibleLabel}\n disabled={item.disabled}\n >\n {item.icon && (\n <Icon\n gap='right'\n name={item.icon}\n size='small'\n />\n )}\n <span>{item.label}</span>\n </Button>\n ),\n id: item.id,\n isActive: item.isActive,\n isDanger: item.isDanger,\n value: item,\n }));\n\nexport const Menu = ({\n inline = false,\n items,\n menuAccessibleLabel = 'Menu',\n onItemSelect,\n triggerAccessibleLabel = 'Open menu',\n triggerIcon = 'DotsThreeVertical',\n triggerLabel,\n variant = 'popover',\n}: MenuProps) => {\n const actions = getActions(items);\n\n if (variant === 'simple') {\n return (\n <MenuActionList\n actions={actions}\n menuAccessibleLabel={menuAccessibleLabel}\n onSelect={(item) => {\n item.onSelect?.();\n onItemSelect?.(item);\n }}\n />\n );\n }\n\n return (\n <MenuPopover\n inline={inline}\n triggerAccessibleLabel={triggerAccessibleLabel}\n triggerIcon={triggerIcon}\n triggerLabel={triggerLabel}\n >\n {({ close, initialFocus }) => (\n <MenuActionList\n actions={actions}\n initialFocus={initialFocus}\n menuAccessibleLabel={menuAccessibleLabel}\n onSelect={(item) => {\n item.onSelect?.();\n onItemSelect?.(item);\n close();\n }}\n usesMenuSemantics\n />\n )}\n </MenuPopover>\n );\n};\n"],"names":["sortDangerItemsLast","items","sort","left","right","Number","Boolean","isDanger","getActions","map","item","button","Button","accessibleLabel","disabled","icon","Icon","jsx","label","id","isActive","value","Menu","inline","menuAccessibleLabel","onItemSelect","triggerAccessibleLabel","triggerIcon","triggerLabel","variant","actions","MenuActionList","onSelect","MenuPopover","close","initialFocus"],"mappings":";;;;AAyCA,SAASA,EAAoBC,GAAmB;AAC9C,SAAO,CAAC,GAAGA,CAAK,EAAEC,KAChB,CAACC,GAAMC,MAAUC,CAAOC,EAAQH,EAAKI,WAAaF,CAAOC,EAAQF,EAAMG,QACzE;AACF;AAEA,MAAMC,IAAaA,CAACP,MAClBD,EAAoBC,CAAK,EAAEQ,IAAKC,CAAAA,OAAU;AAAA,EACxCC,0BACGC,GAAA,EACC,cAAYF,EAAKG,iBACjB,UAAUH,EAAKI,UAEdJ,UAAAA;AAAAA,IAAAA,EAAKK,0BACHC,GAAA,EACC,KAAI,SACJ,MAAMN,EAAKK,MACX,MAAK,QAAA,CAAO;AAAA,IAGhB,gBAAAE,EAAC,QAAA,EAAMP,UAAAA,EAAKQ,MAAAA,CAAM;AAAA,EAAA,GACpB;AAAA,EAEFC,IAAIT,EAAKS;AAAAA,EACTC,UAAUV,EAAKU;AAAAA,EACfb,UAAUG,EAAKH;AAAAA,EACfc,OAAOX;AACT,EAAE,GAESY,IAAOA,CAAC;AAAA,EACnBC,QAAAA,IAAS;AAAA,EACTtB,OAAAA;AAAAA,EACAuB,qBAAAA,IAAsB;AAAA,EACtBC,cAAAA;AAAAA,EACAC,wBAAAA,IAAyB;AAAA,EACzBC,aAAAA,IAAc;AAAA,EACdC,cAAAA;AAAAA,EACAC,SAAAA,IAAU;AACD,MAAM;AACf,QAAMC,IAAUtB,EAAWP,CAAK;AAEhC,SAAI4B,MAAY,WAEZ,gBAAAZ,EAACc,GAAA,EACC,SAAAD,GACA,qBAAAN,GACA,UAAWd,CAAAA,MAAS;;AAClBA,KAAAA,IAAAA,EAAKsB,aAALtB,QAAAA,EAAAA,KAAAA,IACAe,KAAAA,QAAAA,EAAef;AAAAA,EACjB,GAAE,kBAAA,QAAA,IAMN,gBAAAO,EAACgB,KACC,QAAAV,GACA,wBAAAG,GACA,aAAAC,GACA,cAAAC,GAA2B,kBAAA,QAE1B,UAAA,CAAC;AAAA,IAAEM,OAAAA;AAAAA,IAAOC,cAAAA;AAAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/menu/index.tsx"],"sourcesContent":["import { Button } from '@/components/button';\nimport { Icon, type IconName } from '@/components/icon';\n\nimport { type MenuAction, MenuActionList } from './action-list';\nimport { MenuPopover } from './menu-popover';\n\nexport type MenuItem = {\n accessibleLabel?: string;\n disabled?: boolean;\n icon?: IconName;\n id?: string;\n isActive?: boolean;\n isDanger?: boolean;\n label: React.ReactNode;\n onSelect?: () => void;\n};\n\ntype MenuSharedProps = {\n items: MenuItem[];\n menuAccessibleLabel?: string;\n onItemSelect?: (item: MenuItem) => void;\n};\n\ntype PopoverMenuProps = {\n inline?: boolean;\n triggerAccessibleLabel?: string;\n triggerIcon?: IconName;\n triggerLabel?: React.ReactNode;\n variant?: 'popover';\n};\n\ntype SimpleMenuProps = {\n inline?: never;\n triggerAccessibleLabel?: never;\n triggerIcon?: never;\n triggerLabel?: never;\n variant: 'simple';\n};\n\nexport type MenuProps = MenuSharedProps & (PopoverMenuProps | SimpleMenuProps);\n\nfunction sortDangerItemsLast(items: MenuItem[]) {\n return [...items].sort(\n (left, right) => Number(Boolean(left.isDanger)) - Number(Boolean(right.isDanger))\n );\n}\n\nconst getActions = (items: MenuItem[]): MenuAction<MenuItem>[] =>\n sortDangerItemsLast(items).map((item) => ({\n button: (\n <Button\n aria-label={item.accessibleLabel}\n disabled={item.disabled}\n >\n {item.icon && (\n <Icon\n gap='right'\n name={item.icon}\n size='small'\n />\n )}\n <span>{item.label}</span>\n </Button>\n ),\n id: item.id,\n isActive: item.isActive,\n isDanger: item.isDanger,\n value: item,\n }));\n\nexport const Menu = ({\n inline = false,\n items,\n menuAccessibleLabel = 'Menu',\n onItemSelect,\n triggerAccessibleLabel = 'Open menu',\n triggerIcon = 'DotsThreeVertical',\n triggerLabel,\n variant = 'popover',\n}: MenuProps) => {\n const actions = getActions(items);\n\n if (variant === 'simple') {\n return (\n <MenuActionList\n actions={actions}\n menuAccessibleLabel={menuAccessibleLabel}\n onSelect={(item) => {\n item.onSelect?.();\n onItemSelect?.(item);\n }}\n />\n );\n }\n\n return (\n <MenuPopover\n inline={inline}\n triggerAccessibleLabel={triggerAccessibleLabel}\n triggerIcon={triggerIcon}\n triggerLabel={triggerLabel}\n >\n {({ close, initialFocus, isPositioned }) => (\n <MenuActionList\n actions={actions}\n initialFocus={initialFocus}\n readyToFocus={isPositioned}\n menuAccessibleLabel={menuAccessibleLabel}\n onSelect={(item) => {\n item.onSelect?.();\n onItemSelect?.(item);\n close();\n }}\n usesMenuSemantics\n />\n )}\n </MenuPopover>\n );\n};\n"],"names":["sortDangerItemsLast","items","sort","left","right","Number","Boolean","isDanger","getActions","map","item","button","Button","accessibleLabel","disabled","icon","Icon","jsx","label","id","isActive","value","Menu","inline","menuAccessibleLabel","onItemSelect","triggerAccessibleLabel","triggerIcon","triggerLabel","variant","actions","MenuActionList","onSelect","MenuPopover","close","initialFocus","isPositioned"],"mappings":";;;;AAyCA,SAASA,EAAoBC,GAAmB;AAC9C,SAAO,CAAC,GAAGA,CAAK,EAAEC,KAChB,CAACC,GAAMC,MAAUC,CAAOC,EAAQH,EAAKI,WAAaF,CAAOC,EAAQF,EAAMG,QACzE;AACF;AAEA,MAAMC,IAAaA,CAACP,MAClBD,EAAoBC,CAAK,EAAEQ,IAAKC,CAAAA,OAAU;AAAA,EACxCC,0BACGC,GAAA,EACC,cAAYF,EAAKG,iBACjB,UAAUH,EAAKI,UAEdJ,UAAAA;AAAAA,IAAAA,EAAKK,0BACHC,GAAA,EACC,KAAI,SACJ,MAAMN,EAAKK,MACX,MAAK,QAAA,CAAO;AAAA,IAGhB,gBAAAE,EAAC,QAAA,EAAMP,UAAAA,EAAKQ,MAAAA,CAAM;AAAA,EAAA,GACpB;AAAA,EAEFC,IAAIT,EAAKS;AAAAA,EACTC,UAAUV,EAAKU;AAAAA,EACfb,UAAUG,EAAKH;AAAAA,EACfc,OAAOX;AACT,EAAE,GAESY,IAAOA,CAAC;AAAA,EACnBC,QAAAA,IAAS;AAAA,EACTtB,OAAAA;AAAAA,EACAuB,qBAAAA,IAAsB;AAAA,EACtBC,cAAAA;AAAAA,EACAC,wBAAAA,IAAyB;AAAA,EACzBC,aAAAA,IAAc;AAAA,EACdC,cAAAA;AAAAA,EACAC,SAAAA,IAAU;AACD,MAAM;AACf,QAAMC,IAAUtB,EAAWP,CAAK;AAEhC,SAAI4B,MAAY,WAEZ,gBAAAZ,EAACc,GAAA,EACC,SAAAD,GACA,qBAAAN,GACA,UAAWd,CAAAA,MAAS;;AAClBA,KAAAA,IAAAA,EAAKsB,aAALtB,QAAAA,EAAAA,KAAAA,IACAe,KAAAA,QAAAA,EAAef;AAAAA,EACjB,GAAE,kBAAA,QAAA,IAMN,gBAAAO,EAACgB,KACC,QAAAV,GACA,wBAAAG,GACA,aAAAC,GACA,cAAAC,GAA2B,kBAAA,QAE1B,UAAA,CAAC;AAAA,IAAEM,OAAAA;AAAAA,IAAOC,cAAAA;AAAAA,IAAcC,cAAAA;AAAAA,EAAAA,wBACtBL,GAAA,EACC,SAAAD,GACA,cAAAK,GACA,cAAcC,GACd,qBAAAZ,GACA,UAAWd,CAAAA,MAAS;;AAClBA,KAAAA,IAAAA,EAAKsB,aAALtB,QAAAA,EAAAA,KAAAA,IACAe,KAAAA,QAAAA,EAAef,IACfwB,EAAAA;AAAAA,EACF,GACA,mBAAiB,GAAA,CAAA,GAGvB;AAEJ;"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('../../assets/index16.css');const e=require("react/jsx-runtime"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('../../assets/index16.css');const e=require("react/jsx-runtime"),j=require("../../classix-5H4IWnMA.cjs"),h=require("../avatar/index.cjs"),N=require("../icon/index.cjs"),w="_attachments_1crfp_1",y="_footer_1crfp_27",S="_message_1crfp_11",b="_timestamp_1crfp_147",q="_actions_1crfp_152",I="_preview_1crfp_164",s={attachments:w,"message-group":"_message-group_1crfp_11",footer:y,message:S,timestamp:b,actions:q,preview:I},M=({actions:i,appearance:m="default",attachments:o,author:a,authorColor:l,authorImageUrl:d,authorLink:_,authorRole:p,content:g,iconName:f="Info",id:u,preview:v,timestamp:r,timestampText:x,type:t="default"})=>{const c=r?new Date(r):void 0,n=c?e.jsx("time",{className:s.timestamp,dateTime:c.toISOString(),children:x??c.toLocaleString()}):null;return e.jsxs("div",{className:s["message-group"],"data-message-type":t,"data-component":"message",children:[a&&e.jsx(h.Avatar,{accessibleLabel:a,color:l,imageUrl:d,link:_,name:a,role:p}),t==="system"&&n,e.jsxs("div",{className:j.t(s.message,v&&s.preview),"data-appearance":m,"data-id":u,"data-type":t,children:[t=="system"&&e.jsx(N.Icon,{gap:"right",name:f,size:"tiny"}),g]}),o&&e.jsx("div",{className:s.attachments,children:o}),t!=="system"&&(i?e.jsxs("div",{className:s.footer,children:[n,e.jsx("div",{className:s.actions,"data-message-actions":!0,children:i})]}):n)]})};exports.Message=M;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../../../src/components/message/index.tsx"],"sourcesContent":["import cx from 'classix';\n\nimport type { IconName } from '@/components/icon';\n\nimport { Avatar, type AvatarColor } from '../avatar';\nimport { Icon } from '../icon';\nimport styles from './styles.module.css';\n\nexport type MessageOptions = {\n
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../../../src/components/message/index.tsx"],"sourcesContent":["import cx from 'classix';\n\nimport type { IconName } from '@/components/icon';\n\nimport { Avatar, type AvatarColor } from '../avatar';\nimport { Icon } from '../icon';\nimport styles from './styles.module.css';\n\nexport type MessageOptions = {\n actions?: React.ReactNode;\n appearance?: 'default' | 'document' | 'file';\n attachments?: React.ReactNode;\n author?: string;\n authorColor?: AvatarColor;\n authorImageUrl?: string;\n authorLink?: string;\n authorRole?: string;\n content: React.ReactNode;\n iconName?: IconName;\n id: string;\n preview?: boolean;\n timestamp?: Date | string;\n timestampText?: React.ReactNode;\n type?: 'default' | 'minimal' | 'system' | 'user';\n};\n\nexport const Message = ({\n actions,\n appearance = 'default',\n attachments,\n author,\n authorColor,\n authorImageUrl,\n authorLink,\n authorRole,\n content,\n iconName = 'Info',\n id,\n preview,\n timestamp,\n timestampText,\n type = 'default',\n}: MessageOptions) => {\n const date = timestamp ? new Date(timestamp) : undefined;\n const timestampElement = date ? (\n <time\n className={styles.timestamp}\n dateTime={date.toISOString()}\n >\n {timestampText ?? date.toLocaleString()}\n </time>\n ) : null;\n\n return (\n <div\n className={styles['message-group']}\n data-message-type={type}\n >\n {author && (\n <Avatar\n accessibleLabel={author}\n color={authorColor}\n imageUrl={authorImageUrl}\n link={authorLink}\n name={author}\n role={authorRole}\n />\n )}\n {type === 'system' && timestampElement}\n <div\n className={cx(styles.message, preview && styles.preview)}\n data-appearance={appearance}\n data-id={id}\n data-type={type}\n >\n {type == 'system' && (\n <Icon\n gap='right'\n name={iconName}\n size='tiny'\n />\n )}\n {content}\n </div>\n {attachments && <div className={styles.attachments}>{attachments}</div>}\n {type !== 'system' &&\n (actions ? (\n <div className={styles.footer}>\n {timestampElement}\n <div\n className={styles.actions}\n data-message-actions\n >\n {actions}\n </div>\n </div>\n ) : (\n timestampElement\n ))}\n </div>\n );\n};\n"],"names":["Message","actions","appearance","attachments","author","authorColor","authorImageUrl","authorLink","authorRole","content","iconName","id","preview","timestamp","timestampText","type","date","Date","undefined","timestampElement","jsx","styles","toISOString","toLocaleString","jsxs","Avatar","cx","message","Icon","footer"],"mappings":"udA0BaA,EAAUA,CAAC,CACtBC,QAAAA,EACAC,WAAAA,EAAa,UACbC,YAAAA,EACAC,OAAAA,EACAC,YAAAA,EACAC,eAAAA,EACAC,WAAAA,EACAC,WAAAA,EACAC,QAAAA,EACAC,SAAAA,EAAW,OACXC,GAAAA,EACAC,QAAAA,EACAC,UAAAA,EACAC,cAAAA,EACAC,KAAAA,EAAO,SACO,IAAM,CACpB,MAAMC,EAAOH,EAAY,IAAII,KAAKJ,CAAS,EAAIK,OACzCC,EAAmBH,EACvBI,EAAAA,IAAC,OAAA,CACC,UAAWC,EAAOR,UAClB,SAAUG,EAAKM,cAEdR,SAAAA,GAAiBE,EAAKO,eAAAA,EACzB,EACE,KAEJ,OACEC,OAAC,OACC,UAAWH,EAAO,eAAe,EACjC,oBAAmBN,EAAK,iBAAA,UAEvBX,SAAAA,CAAAA,GACCgB,EAAAA,IAACK,EAAAA,OAAA,CACC,gBAAiBrB,EACjB,MAAOC,EACP,SAAUC,EACV,KAAMC,EACN,KAAMH,EACN,KAAMI,EAAW,EAGpBO,IAAS,UAAYI,EACtBK,EAAAA,KAAC,MAAA,CACC,UAAWE,EAAAA,EAAGL,EAAOM,QAASf,GAAWS,EAAOT,OAAO,EACvD,kBAAiBV,EACjB,UAASS,EACT,YAAWI,EAEVA,SAAAA,CAAAA,GAAQ,gBACNa,EAAAA,KAAA,CACC,IAAI,QACJ,KAAMlB,EACN,KAAK,MAAA,CAAM,EAGdD,CAAAA,EACH,EACCN,GAAeiB,EAAAA,IAAC,MAAA,CAAI,UAAWC,EAAOlB,YAAcA,SAAAA,EAAY,EAChEY,IAAS,WACPd,SACE,MAAA,CAAI,UAAWoB,EAAOQ,OACpBV,SAAAA,CAAAA,QACA,MAAA,CACC,UAAWE,EAAOpB,QAClB,uBAAoB,GAEnBA,SAAAA,CAAAA,CACH,CAAA,CAAA,CACF,EAEAkB,EAAAA,EAEN,CAEJ"}
|
|
@@ -1,48 +1,48 @@
|
|
|
1
|
-
import { jsx as a, jsxs as
|
|
2
|
-
import { t as
|
|
3
|
-
import { Avatar as
|
|
4
|
-
import { Icon as
|
|
5
|
-
import '../../assets/index16.css';const I = "
|
|
1
|
+
import { jsx as a, jsxs as o } from "react/jsx-runtime";
|
|
2
|
+
import { t as w } from "../../classix-DG18itHa.js";
|
|
3
|
+
import { Avatar as x } from "../avatar/index.js";
|
|
4
|
+
import { Icon as y } from "../icon/index.js";
|
|
5
|
+
import '../../assets/index16.css';const I = "_attachments_1crfp_1", S = "_footer_1crfp_27", b = "_message_1crfp_11", j = "_timestamp_1crfp_147", L = "_actions_1crfp_152", k = "_preview_1crfp_164", e = {
|
|
6
6
|
attachments: I,
|
|
7
|
-
"message-group": "_message-
|
|
7
|
+
"message-group": "_message-group_1crfp_11",
|
|
8
8
|
footer: S,
|
|
9
9
|
message: b,
|
|
10
10
|
timestamp: j,
|
|
11
|
-
actions:
|
|
12
|
-
preview:
|
|
13
|
-
},
|
|
14
|
-
actions:
|
|
15
|
-
appearance:
|
|
16
|
-
attachments:
|
|
11
|
+
actions: L,
|
|
12
|
+
preview: k
|
|
13
|
+
}, M = ({
|
|
14
|
+
actions: r,
|
|
15
|
+
appearance: l = "default",
|
|
16
|
+
attachments: i,
|
|
17
17
|
author: t,
|
|
18
|
-
authorColor:
|
|
18
|
+
authorColor: p,
|
|
19
19
|
authorImageUrl: d,
|
|
20
20
|
authorLink: _,
|
|
21
|
-
authorRole:
|
|
22
|
-
content:
|
|
23
|
-
iconName:
|
|
24
|
-
id:
|
|
25
|
-
preview:
|
|
26
|
-
timestamp:
|
|
27
|
-
timestampText:
|
|
21
|
+
authorRole: g,
|
|
22
|
+
content: f,
|
|
23
|
+
iconName: v = "Info",
|
|
24
|
+
id: h,
|
|
25
|
+
preview: u,
|
|
26
|
+
timestamp: n,
|
|
27
|
+
timestampText: N,
|
|
28
28
|
type: s = "default"
|
|
29
29
|
}) => {
|
|
30
|
-
const m =
|
|
31
|
-
return /* @__PURE__ */
|
|
32
|
-
t && /* @__PURE__ */ a(
|
|
33
|
-
s === "system" &&
|
|
34
|
-
/* @__PURE__ */
|
|
35
|
-
s == "system" && /* @__PURE__ */ a(
|
|
36
|
-
|
|
30
|
+
const m = n ? new Date(n) : void 0, c = m ? /* @__PURE__ */ a("time", { className: e.timestamp, dateTime: m.toISOString(), children: N ?? m.toLocaleString() }) : null;
|
|
31
|
+
return /* @__PURE__ */ o("div", { className: e["message-group"], "data-message-type": s, "data-component": "message", children: [
|
|
32
|
+
t && /* @__PURE__ */ a(x, { accessibleLabel: t, color: p, imageUrl: d, link: _, name: t, role: g }),
|
|
33
|
+
s === "system" && c,
|
|
34
|
+
/* @__PURE__ */ o("div", { className: w(e.message, u && e.preview), "data-appearance": l, "data-id": h, "data-type": s, children: [
|
|
35
|
+
s == "system" && /* @__PURE__ */ a(y, { gap: "right", name: v, size: "tiny" }),
|
|
36
|
+
f
|
|
37
37
|
] }),
|
|
38
|
-
|
|
39
|
-
s !== "system" && (
|
|
40
|
-
|
|
41
|
-
/* @__PURE__ */ a("div", { className: e.actions, "data-message-actions": !0, children:
|
|
42
|
-
] }) :
|
|
38
|
+
i && /* @__PURE__ */ a("div", { className: e.attachments, children: i }),
|
|
39
|
+
s !== "system" && (r ? /* @__PURE__ */ o("div", { className: e.footer, children: [
|
|
40
|
+
c,
|
|
41
|
+
/* @__PURE__ */ a("div", { className: e.actions, "data-message-actions": !0, children: r })
|
|
42
|
+
] }) : c)
|
|
43
43
|
] });
|
|
44
44
|
};
|
|
45
45
|
export {
|
|
46
|
-
|
|
46
|
+
M as Message
|
|
47
47
|
};
|
|
48
48
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/message/index.tsx"],"sourcesContent":["import cx from 'classix';\n\nimport type { IconName } from '@/components/icon';\n\nimport { Avatar, type AvatarColor } from '../avatar';\nimport { Icon } from '../icon';\nimport styles from './styles.module.css';\n\nexport type MessageOptions = {\n
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/message/index.tsx"],"sourcesContent":["import cx from 'classix';\n\nimport type { IconName } from '@/components/icon';\n\nimport { Avatar, type AvatarColor } from '../avatar';\nimport { Icon } from '../icon';\nimport styles from './styles.module.css';\n\nexport type MessageOptions = {\n actions?: React.ReactNode;\n appearance?: 'default' | 'document' | 'file';\n attachments?: React.ReactNode;\n author?: string;\n authorColor?: AvatarColor;\n authorImageUrl?: string;\n authorLink?: string;\n authorRole?: string;\n content: React.ReactNode;\n iconName?: IconName;\n id: string;\n preview?: boolean;\n timestamp?: Date | string;\n timestampText?: React.ReactNode;\n type?: 'default' | 'minimal' | 'system' | 'user';\n};\n\nexport const Message = ({\n actions,\n appearance = 'default',\n attachments,\n author,\n authorColor,\n authorImageUrl,\n authorLink,\n authorRole,\n content,\n iconName = 'Info',\n id,\n preview,\n timestamp,\n timestampText,\n type = 'default',\n}: MessageOptions) => {\n const date = timestamp ? new Date(timestamp) : undefined;\n const timestampElement = date ? (\n <time\n className={styles.timestamp}\n dateTime={date.toISOString()}\n >\n {timestampText ?? date.toLocaleString()}\n </time>\n ) : null;\n\n return (\n <div\n className={styles['message-group']}\n data-message-type={type}\n >\n {author && (\n <Avatar\n accessibleLabel={author}\n color={authorColor}\n imageUrl={authorImageUrl}\n link={authorLink}\n name={author}\n role={authorRole}\n />\n )}\n {type === 'system' && timestampElement}\n <div\n className={cx(styles.message, preview && styles.preview)}\n data-appearance={appearance}\n data-id={id}\n data-type={type}\n >\n {type == 'system' && (\n <Icon\n gap='right'\n name={iconName}\n size='tiny'\n />\n )}\n {content}\n </div>\n {attachments && <div className={styles.attachments}>{attachments}</div>}\n {type !== 'system' &&\n (actions ? (\n <div className={styles.footer}>\n {timestampElement}\n <div\n className={styles.actions}\n data-message-actions\n >\n {actions}\n </div>\n </div>\n ) : (\n timestampElement\n ))}\n </div>\n );\n};\n"],"names":["Message","actions","appearance","attachments","author","authorColor","authorImageUrl","authorLink","authorRole","content","iconName","id","preview","timestamp","timestampText","type","date","Date","undefined","timestampElement","jsx","styles","toISOString","toLocaleString","jsxs","Avatar","cx","message","Icon","footer"],"mappings":";;;;;;;;;;;;GA0BaA,IAAUA,CAAC;AAAA,EACtBC,SAAAA;AAAAA,EACAC,YAAAA,IAAa;AAAA,EACbC,aAAAA;AAAAA,EACAC,QAAAA;AAAAA,EACAC,aAAAA;AAAAA,EACAC,gBAAAA;AAAAA,EACAC,YAAAA;AAAAA,EACAC,YAAAA;AAAAA,EACAC,SAAAA;AAAAA,EACAC,UAAAA,IAAW;AAAA,EACXC,IAAAA;AAAAA,EACAC,SAAAA;AAAAA,EACAC,WAAAA;AAAAA,EACAC,eAAAA;AAAAA,EACAC,MAAAA,IAAO;AACO,MAAM;AACpB,QAAMC,IAAOH,IAAY,IAAII,KAAKJ,CAAS,IAAIK,QACzCC,IAAmBH,IACvB,gBAAAI,EAAC,QAAA,EACC,WAAWC,EAAOR,WAClB,UAAUG,EAAKM,eAEdR,UAAAA,KAAiBE,EAAKO,eAAAA,GACzB,IACE;AAEJ,SACE,gBAAAC,EAAC,SACC,WAAWH,EAAO,eAAe,GACjC,qBAAmBN,GAAK,kBAAA,WAEvBX,UAAAA;AAAAA,IAAAA,KACC,gBAAAgB,EAACK,GAAA,EACC,iBAAiBrB,GACjB,OAAOC,GACP,UAAUC,GACV,MAAMC,GACN,MAAMH,GACN,MAAMI,GAAW;AAAA,IAGpBO,MAAS,YAAYI;AAAAA,IACtB,gBAAAK,EAAC,OAAA,EACC,WAAWE,EAAGL,EAAOM,SAASf,KAAWS,EAAOT,OAAO,GACvD,mBAAiBV,GACjB,WAASS,GACT,aAAWI,GAEVA,UAAAA;AAAAA,MAAAA,KAAQ,8BACNa,GAAA,EACC,KAAI,SACJ,MAAMlB,GACN,MAAK,OAAA,CAAM;AAAA,MAGdD;AAAAA,IAAAA,GACH;AAAA,IACCN,KAAe,gBAAAiB,EAAC,OAAA,EAAI,WAAWC,EAAOlB,aAAcA,UAAAA,GAAY;AAAA,IAChEY,MAAS,aACPd,sBACE,OAAA,EAAI,WAAWoB,EAAOQ,QACpBV,UAAAA;AAAAA,MAAAA;AAAAA,wBACA,OAAA,EACC,WAAWE,EAAOpB,SAClB,wBAAoB,IAEnBA,UAAAA,EAAAA,CACH;AAAA,IAAA,EAAA,CACF,IAEAkB;AAAAA,EAAAA,GAEN;AAEJ;"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('../../assets/index13.css');const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require('../../assets/index13.css');const i=require("react/jsx-runtime"),c=require("../../classix-5H4IWnMA.cjs"),u=require("react"),b=require("../../icons-BTif0nDb.cjs"),m="_nav_1lfxs_3",v="_label_1lfxs_9",p="_item_1lfxs_17",x="_actions_1lfxs_36",g="_highlighted_1lfxs_60",N="_horizontal_1lfxs_64",j="_sidebar_1lfxs_74",w="_tabs_1lfxs_130",q="_pills_1lfxs_150",t={nav:m,label:v,item:p,actions:x,highlighted:g,horizontal:N,sidebar:j,tabs:w,pills:q},y={default:t.default,pills:t.pills,sidebar:t.sidebar,tabs:t.tabs},z=({className:a,...s})=>i.jsx("span",{className:c.t(a,t.label),...s,"data-component":"navlabel"}),S=({actions:a,children:s,className:o,highlighted:n=!1,...e})=>i.jsxs("div",{className:c.t(t.item,n&&t.highlighted,o),"data-nav-item":!0,...e,"data-component":"navitem",children:[s,a&&i.jsx("span",{className:t.actions,children:a})]}),C=({animation:a,children:s,className:o,horizontal:n=!1,variant:e="default",...d})=>{const[_,r]=u.useState(!1),f={"--icon-svg":b.iconSVG("CaretDown")};return i.jsx("nav",{className:c.t(o,n&&t.horizontal,t.nav,y[e]),"data-animation":a,"data-open":_?"true":"false","data-orientation":n?"horizontal":"vertical",onBlurCapture:l=>{if(e!=="pills"||window.innerWidth>960)return;const h=l.relatedTarget;l.currentTarget.contains(h)||r(!1)},onClick:()=>{e!=="pills"||window.innerWidth>960||r(l=>!l)},style:f,...d,"data-component":"nav",children:s})};exports.Nav=C;exports.NavItem=S;exports.NavLabel=z;
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|