@xyd-js/components 0.0.0-build-31e77be-20250820145657 → 0.0.0-build-75f5bd5-20250820183622
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/CHANGELOG.md +2 -2
- package/dist/{Button-Dt63khxw.js → Button-BGKCu3zj.js} +2 -2
- package/dist/{Button-Dt63khxw.js.map → Button-BGKCu3zj.js.map} +1 -1
- package/dist/{CodeSample-DR0Y_Db7.js → CodeSample--8QL2quc.js} +2 -2
- package/dist/{CodeSample-DR0Y_Db7.js.map → CodeSample--8QL2quc.js.map} +1 -1
- package/dist/{Icon-CLBvjYJA.js → Icon-BZN_N2sA.js} +2 -2
- package/dist/{Icon-CLBvjYJA.js.map → Icon-BZN_N2sA.js.map} +1 -1
- package/dist/{PageFirstSlide-6iCgscxN.js → PageFirstSlide-BMUNA02H.js} +2 -2
- package/dist/{PageFirstSlide-6iCgscxN.js.map → PageFirstSlide-BMUNA02H.js.map} +1 -1
- package/dist/{TabsAnalytics-B8X5qjDN.js → TabsAnalytics-zAYQfBEL.js} +2 -2
- package/dist/{TabsAnalytics-B8X5qjDN.js.map → TabsAnalytics-zAYQfBEL.js.map} +1 -1
- package/dist/{Update-Cuab0G-A.js → Update-C3p3XY0D.js} +2 -2
- package/dist/{Update-Cuab0G-A.js.map → Update-C3p3XY0D.js.map} +1 -1
- package/dist/{VideoGuide-DS_3b7gh.js → VideoGuide-CJX4uBhq.js} +2 -2
- package/dist/{VideoGuide-DS_3b7gh.js.map → VideoGuide-CJX4uBhq.js.map} +1 -1
- package/dist/{_rollupPluginBabelHelpers-DN3J0MQT.js → _rollupPluginBabelHelpers-DBTxcuvK.js} +1 -1
- package/dist/_rollupPluginBabelHelpers-DBTxcuvK.js.map +1 -0
- package/dist/coder.js +1 -1
- package/dist/content.js +1 -1
- package/dist/index.css +26 -26
- package/dist/layouts.js +1 -1
- package/dist/pages.js +1 -1
- package/dist/system.js +1 -1
- package/dist/system.js.map +1 -1
- package/dist/{useUXClick-B1kkYM5K.js → useUXClick-C6Oda9v6.js} +2 -2
- package/dist/{useUXClick-B1kkYM5K.js.map → useUXClick-C6Oda9v6.js.map} +1 -1
- package/dist/{useUXEvents-Di7EfOhU.js → useUXEvents-Dxw3DupE.js} +1 -1
- package/dist/{useUXEvents-Di7EfOhU.js.map → useUXEvents-Dxw3DupE.js.map} +1 -1
- package/dist/{useUXScrollDepth-y0kY2WZF.js → useUXScrollDepth-DvG9B-YJ.js} +1 -1
- package/dist/{useUXScrollDepth-y0kY2WZF.js.map → useUXScrollDepth-DvG9B-YJ.js.map} +1 -1
- package/dist/uxsdk.js +1 -1
- package/dist/writer.js +1 -1
- package/package.json +2 -2
- package/src/coder/CodeTabs/CodeTabs.styles.tsx +7 -3
- package/src/system/SearchButton/SearchButton.styles.tsx +1 -0
- package/dist/_rollupPluginBabelHelpers-DN3J0MQT.js.map +0 -1
package/dist/system.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as e}from"./Icon-
|
|
1
|
+
import{a as e}from"./Icon-BZN_N2sA.js";import*as t from"react";import n,{useEffect as r,useRef as a}from"react";import{B as o}from"./Button-BGKCu3zj.js";import{a as l}from"./_rollupPluginBabelHelpers-DBTxcuvK.js";function i(n){var r=n.title,a=n.toolGroups,o=e(n,["title","toolGroups"]);return t.createElement("details",Object.assign({className:"bigwo3e"},o),t.createElement("summary",null,t.createElement("span",{part:"icon"}),t.createElement("div",{part:"title"},r),t.createElement("div",{part:"compatibility"},a.map(function(e,n){return t.createElement("span",{part:"tools",key:n},e.map(function(e,n){var r;return t.createElement("span",{key:e.tool+(null!==(r=e.label)&&void 0!==r?r:"")+n,"data-tool":e.tool,"data-supported":!!e.supported||void 0},e.label?e.label:null)}))}))))}var c="f30yyk8";function d(e){var t,r,a,o;return"minimal"===e.kind?n.createElement(d.Minimal,Object.assign({},e)):n.createElement("footer",{className:c},n.createElement("div",{part:"container"},n.createElement("div",{part:"content"},e.logo&&n.createElement("div",{part:"first-column"},e.logo),(null===(t=e.links)||void 0===t?void 0:t.length)&&n.createElement("div",{part:"columns","data-cols":null===(r=e.links)||void 0===r?void 0:r.length},null===(a=e.links)||void 0===a?void 0:a.map(function(e,t){var r;return n.createElement("div",{part:"col",key:"".concat(e.header,"-").concat(t)},n.createElement("div",{part:"col-items"},n.createElement("p",null,e.header),null===(r=e.items)||void 0===r?void 0:r.map(function(e){return n.createElement("a",{key:"".concat(e.label,"-").concat(t),target:"_blank",href:e.href},e.label)})))})),n.createElement("div",{part:"social-links"},null===(o=e.socials)||void 0===o?void 0:o.map(function(e,t){return n.createElement("div",{key:"".concat(e.href,"-").concat(t)},n.createElement("a",{target:"_blank",href:e.href},e.logo))}))),e.footnote&&n.createElement("hr",null),n.createElement("div",{part:"footnote"},e.footnote)))}d.Minimal=function(e){var t,r,a,l;return n.createElement("footer",{className:c,"data-kind":"minimal"},n.createElement("div",{part:"container"},n.createElement("div",{part:"content"},(null===(t=e.links)||void 0===t?void 0:t.length)&&n.createElement("div",{part:"columns","data-cols":null===(r=e.links)||void 0===r?void 0:r.length},n.createElement("div",{part:"col"},n.createElement("div",{part:"col-items"},null===(a=e.links)||void 0===a?void 0:a.map(function(e,t){return n.createElement(o,{key:"".concat(e.label,"-").concat(t),kind:"tertiary",href:e.href},e.label)})))),n.createElement("div",{part:"social-links"},null===(l=e.socials)||void 0===l?void 0:l.map(function(e,t){return n.createElement(o,{key:"".concat(e.href,"-").concat(t),kind:"tertiary",href:e.href,icon:e.logo})})))))};function u(t){var o=t.shortcutKeys,i=void 0===o?["⌘","K"]:o,c=e(t,["shortcutKeys"]);return function(e,t){var n=a(t);r(function(){n.current=t},[t]),r(function(){if(!window.__UNSAFE_xyd_search_button_inited){var t=function(t){if(1!==e.length){if(2===e.length){var r=l(e,2),a=r[0],o=r[1],i=t.key.toLowerCase();("⌘"===a&&t.metaKey||"Ctrl"===a&&t.ctrlKey)&&i===o.toLowerCase()&&(t.preventDefault(),n.current())}}else t.key.toLowerCase()===e[0].toLowerCase()&&(t.preventDefault(),n.current())};return window.addEventListener("keydown",t,{capture:!0}),window.addEventListener("keyup",t,{capture:!0}),function(){window.removeEventListener("keydown",t,{capture:!0}),window.removeEventListener("keyup",t,{capture:!0})}}},[])}(i,function(){var e;return null===(e=c.onClick)||void 0===e?void 0:e.call(c)}),r(function(){return window.__UNSAFE_xyd_search_button_inited=!0,function(){window.__UNSAFE_xyd_search_button_inited=!1}},[]),n.createElement("xyd-search-button",{className:"s1f8k5y3","aria-label":"Search",onClick:c.onClick,"data-fullWidth":c.fullWidth},n.createElement("span",{part:"container"},n.createElement("svg",{width:20,height:20,part:"icon",viewBox:"0 0 20 20"},n.createElement("path",{d:"M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"})),n.createElement("span",{part:"placeholder"},c.placeholder||"Search")),i.length>0&&n.createElement("span",{part:"keys"},i.map(function(e,t){return n.createElement("kbd",{key:"".concat(e,"-").concat(t),part:"key"},e)})))}export{i as Baseline,d as Footer,u as SearchButton};
|
|
2
2
|
//# sourceMappingURL=system.js.map
|
package/dist/system.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system.js","sources":["../src/system/Baseline/Baseline.tsx","../src/system/Baseline/Baseline.styles.tsx","../src/system/Footer/Footer.styles.tsx","../src/system/Footer/Footer.tsx","../src/system/SearchButton/SearchButton.tsx","../src/system/SearchButton/SearchButton.styles.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport * as cn from './Baseline.styles';\n\nexport interface BaselineTool {\n tool: 'bun' | 'node' | 'npm' | 'pnpm' | string\n supported: boolean;\n label?: React.ReactNode;\n}\n\nexport interface BaselineProps extends React.HTMLAttributes<HTMLDetailsElement> {\n title: string;\n toolGroups: BaselineTool[][];\n}\n\nexport function Baseline({ title, toolGroups, ...props }: BaselineProps) {\n return (\n <details className={cn.BaselineHost} {...props}>\n <summary>\n <span part=\"icon\" />\n <div part=\"title\">{title}</div>\n <div part=\"compatibility\">\n {toolGroups.map((group, i) => (\n <span part=\"tools\" key={i}>\n {group.map((tool, j) => (\n <span\n key={tool.tool + (tool.label ?? '') + j}\n data-tool={tool.tool}\n data-supported={tool.supported ? true : undefined}\n >\n {tool.label ? tool.label : null}\n </span>\n ))}\n </span>\n ))}\n </div>\n </summary>\n </details>\n );\n}","\nimport { css } from \"@linaria/core\";\n\nimport checkUrl from \"./check.svg\"\nimport bunUrl from \"./bun.svg\"\nimport logoUrl from \"./logo.svg\"\nimport pnpmUrl from \"./pnpm.svg\"\nimport nodeUrl from \"./node.svg\"\nimport npmUrl from \"./npm.svg\"\n\nexport const BaselineHost = css`\n --baseline-logo-bun: url(${bunUrl});\n --baseline-logo-node: url(${nodeUrl});\n --baseline-logo-npm: url(${npmUrl});\n\n --baseline-high-bg: #e6f4ea;\n --baseline-high-engine-bg: #ceead6;\n --baseline-high-img: url(${logoUrl});\n --baseline-high-check: #099949;\n\n --baseline-bg: var(--baseline-high-bg);\n --baseline-engine-bg: var(--baseline-high-engine-bg);\n --baseline-img: var(--baseline-high-img);\n --baseline-check: var(--baseline-high-check);\n\n --baseline-cross: var(--baseline-limited-cross);\n --feedback-link-icon: var(--icon-primary);\n background: var(--baseline-bg);\n border-radius: .25rem;\n margin: 1rem 0;\n padding-left: 3.8125rem;\n\n summary {\n --chevron-size: 0.6875rem;\n --chevron-padding-left: 0.75rem;\n --chevron-padding-right: 1.25rem;\n align-items: center;\n cursor: pointer;\n display: flex;\n flex-wrap: wrap;\n gap: .5rem;\n justify-content: space-between;\n padding: 1rem 0;\n padding-right: calc(var(--chevron-padding-left) + var(--chevron-size) + var(--chevron-padding-right));\n position: relative;\n }\n\n [part=\"icon\"] {\n --width: 2.3125rem;\n background-image: var(--baseline-img);\n background-position: 50%;\n background-repeat: no-repeat;\n background-size: contain;\n display: block;\n height: 2.25rem;\n left: calc(-.5rem - var(--width));\n position: absolute;\n top: 1rem;\n width: var(--width);\n }\n\n [part=\"title\"] {\n font-size: 1rem;\n font-weight: 600;\n letter-spacing: 0;\n line-height: 1.5;\n margin: 0;\n padding: .375rem 0;\n }\n\n [part=\"compatibility\"] {\n display: flex;\n flex-wrap: wrap;\n gap: .5rem;\n }\n\n [part=\"tools\"] {\n background: var(--baseline-engine-bg);\n border-radius: 2rem;\n display: flex;\n flex-wrap: wrap;\n gap: .5rem;\n padding: .5rem .625rem;\n\n [data-tool] {\n display: flex;\n --baseline-tool-image: none;\n }\n [data-tool=\"bun\"] {\n --baseline-tool-image: var(--baseline-logo-bun);\n }\n [data-tool=\"node\"] {\n --baseline-tool-image: var(--baseline-logo-node);\n }\n [data-tool=\"npm\"] {\n --baseline-tool-image: var(--baseline-logo-npm);\n }\n [data-tool=\"pnpm\"] {\n --baseline-tool-image: url(${pnpmUrl});\n }\n\n [data-tool]::before {\n background-repeat: no-repeat;\n background-size: contain;\n content: \"\";\n display: block;\n height: 1.25rem;\n width: 1.25rem;\n background-image: var(--baseline-tool-image);\n }\n\n [data-tool]::after {\n background-color: var(--baseline-check);\n mask-image: url(${checkUrl});\n -webkit-mask-image: url(${checkUrl});\n\n content: \"\";\n display: block;\n height: 1.25rem;\n -webkit-mask-repeat: no-repeat;\n mask-repeat: no-repeat;\n -webkit-mask-size: contain;\n mask-size: contain;\n width: 1rem;\n }\n }\n\n`;","import { css } from \"@linaria/core\";\n\nexport const Footer = css`\n --footer-anchor-color: var(--dark48);\n --footer-anchor-color--secondary: var(--dark32);\n --footer-anchor-color--hover: var(--xyd-anchor-color--hover);\n /* transform: translateY(-100%); */\n\n border-top: 1px solid var(--footer-anchor-color--secondary);\n display: flex;\n align-items: center;\n flex-direction: column;\n\n p {\n color: var(--text-primary);\n font-weight: bold;\n }\n hr {\n background: var(--footer-anchor-color--secondary);\n width: 100%;\n height: 1px;\n }\n\n a {\n color: var(--footer-anchor-color);\n font-weight: var(--xyd-font-weight-medium);\n\n &:hover {\n color: var(--footer-anchor-color--hover);\n }\n }\n\n [part=\"container\"] {\n display: flex;\n align-items: center;\n flex-direction: column;\n gap: 24px;\n justify-content: space-between;\n max-width: 1050px;\n width: 100%;\n\n padding: 100px 25px\n }\n &[data-kind=\"minimal\"] [part=\"container\"] {\n max-width: 100%;\n padding: 20px;\n }\n\n [part=\"content\"] {\n display: flex;\n flex-direction: row;\n gap: 32px;\n justify-content: space-between;\n width: 100%;\n\n @media (max-width: 768px) {\n flex-direction: column;\n gap: 24px;\n }\n }\n\n [part=\"first-column\"] {\n display: flex;\n height: 24px;\n\n img, svg {\n height: 28px;\n width: auto;\n }\n\n @media (min-width: 1024px) {\n min-width: 140px;\n }\n\n @media (max-width: 768px) {\n align-self: flex-start;\n }\n }\n\n [part=\"columns\"] {\n display: grid;\n gap: 32px;\n grid-template-columns: repeat(auto-fill, minmax(0, 1fr));\n flex: 1 1 0%;\n\n @media (max-width: 768px) {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n gap: 24px;\n width: 100%;\n }\n\n @media (max-width: 680px) {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n gap: 20px;\n }\n\n &[data-cols=\"1\"] {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n\n &[data-cols=\"2\"] {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n \n @media (max-width: 680px) {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n }\n\n &[data-cols=\"3\"] {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n \n @media (max-width: 768px) {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n \n @media (max-width: 680px) {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n }\n\n &[data-cols=\"4\"] {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n \n @media (max-width: 768px) {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n \n @media (max-width: 680px) {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n }\n\n &[data-cols=\"5\"] {\n grid-template-columns: repeat(5, minmax(0, 1fr));\n \n @media (max-width: 768px) {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n \n @media (max-width: 680px) {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n }\n }\n &[data-kind=\"minimal\"] [part=\"columns\"] {\n display: flex;\n }\n\n [part=\"col\"] {\n display: flex;\n flex-direction: column;\n align-items: center;\n white-space: nowrap;\n gap: 16px;\n\n @media (max-width: 768px) {\n align-items: flex-start;\n white-space: normal;\n }\n }\n\n [part=\"col-items\"] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n align-items: flex-start;\n\n @media (max-width: 768px) {\n align-items: flex-start;\n }\n }\n &[data-kind=\"minimal\"] [part=\"col-items\"] {\n flex-direction: row;\n flex-wrap: wrap;\n }\n\n [part=\"social-links\"] {\n display: flex;\n gap: 16px;\n justify-content: flex-end;\n flex-wrap: wrap;\n max-width: 492px;\n min-width: 140px;\n\n @media (max-width: 768px) {\n justify-content: flex-start;\n max-width: 100%;\n min-width: auto;\n }\n\n svg {\n width: 24px;\n height: 24px;\n\n color: var(--footer-anchor-color);\n fill: var(--footer-anchor-color);\n\n &:hover {\n color: var(--footer-anchor-color--hover);\n fill: var(--footer-anchor-color--hover);\n }\n }\n }\n\n [part=\"footnote\"] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n\n @media (max-width: 768px) {\n flex-direction: column;\n gap: 16px;\n align-items: flex-start;\n }\n }\n`;","import React from \"react\";\n\nimport { Button } from \"../../writer/Button\"\nimport * as cn from \"./Footer.styles\";\n\nexport interface FooterLinkItemsProps {\n label: string;\n href: string;\n}\n\nexport interface FooterProps {\n footnote: React.ReactNode;\n\n kind?: \"minimal\"\n\n logo?: React.ReactNode;\n\n socials?: {\n logo: React.ReactNode;\n href: string\n }[]\n\n links?: {\n header: string;\n items?: FooterLinkItemsProps[]\n }[] | FooterLinkItemsProps[]\n}\n\nexport function Footer(props: FooterProps) {\n if (props.kind === \"minimal\") {\n return <Footer.Minimal {...props} />\n }\n\n return <footer className={cn.Footer}>\n <div part=\"container\">\n <div part=\"content\">\n {\n props.logo && <div part=\"first-column\">\n {props.logo}\n </div>\n }\n\n {props.links?.length && <div part=\"columns\" data-cols={props.links?.length}>\n {props.links?.map((link, index) => (\n <div part=\"col\" key={`${link.header}-${index}`}>\n <div part=\"col-items\">\n <p>{link.header}</p>\n {link.items?.map((item) => (\n <a key={`${item.label}-${index}`} target=\"_blank\" href={item.href}>{item.label}</a>\n ))}\n </div>\n </div>\n ))}\n </div>}\n\n\n <div part=\"social-links\">\n {props.socials?.map((social, index) => (\n <div key={`${social.href}-${index}`}>\n <a target=\"_blank\" href={social.href}>{social.logo}</a>\n </div>\n ))}\n </div>\n </div>\n\n {props.footnote && <hr />}\n\n <div part=\"footnote\">\n {props.footnote}\n </div>\n </div>\n </footer>\n}\n\nFooter.Minimal = function MinimalFooter(props: FooterProps) {\n return <footer className={cn.Footer} data-kind=\"minimal\">\n <div part=\"container\">\n <div part=\"content\">\n {\n props.links?.length && <div part=\"columns\" data-cols={props.links?.length}>\n <div part=\"col\">\n <div part=\"col-items\">\n {props.links?.map((item, index) => (\n <Button\n key={`${item.label}-${index}`} kind=\"tertiary\" href={item.href}>\n {item.label}\n </Button>\n ))}\n </div>\n </div>\n </div>\n }\n\n <div part=\"social-links\">\n {props.socials?.map((social, index) => (\n <Button\n key={`${social.href}-${index}`}\n kind=\"tertiary\"\n href={social.href}\n icon={social.logo}\n />\n ))}\n </div>\n </div>\n </div>\n </footer>\n}","import React, { useEffect, useRef } from 'react';\n\nimport * as cn from \"./SearchButton.styles\";\n\ninterface SearchButtonProps {\n onClick?: () => void;\n placeholder?: string;\n shortcutKeys?: string[];\n fullWidth?: boolean;\n}\n\nexport function SearchButton({\n shortcutKeys = ['⌘', 'K'],\n ...props\n}: SearchButtonProps) {\n useShortcuts(shortcutKeys, () => props.onClick?.());\n\n useEffect(() => {\n // @ts-ignore - !!! FIX IN THE FUTURE !!! its a fix for loading virtual-component:Search twice? original and from plugin - check if exists on prod\n window.__UNSAFE_xyd_search_button_inited = true\n\n return () => {\n // @ts-ignore\n window.__UNSAFE_xyd_search_button_inited = false\n }\n }, [])\n\n return (\n <xyd-search-button\n className={cn.SearchButton}\n aria-label=\"Search\"\n onClick={props.onClick}\n data-fullWidth={props.fullWidth}\n >\n <span part=\"container\">\n <svg\n width={20}\n height={20}\n part=\"icon\"\n viewBox=\"0 0 20 20\"\n >\n <path\n d=\"M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z\"\n stroke=\"currentColor\"\n fill=\"none\"\n fillRule=\"evenodd\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n <span part=\"placeholder\">{props.placeholder || \"Search\"}</span>\n </span>\n\n {\n shortcutKeys.length > 0 && (\n <span part=\"keys\">\n {shortcutKeys.map((key, index) => (\n <kbd key={`${key}-${index}`} part=\"key\">{key}</kbd>\n ))}\n </span>\n )\n }\n </xyd-search-button>\n )\n}\n\nfunction useShortcuts(shortcutKeys: string[], onTrigger: () => void): void {\n // Keep latest handler reference to avoid stale closures\n const savedHandler = useRef(onTrigger);\n\n useEffect(() => {\n savedHandler.current = onTrigger;\n }, [onTrigger]);\n\n useEffect(() => {\n // @ts-ignore\n if (window.__UNSAFE_xyd_search_button_inited) {\n return\n }\n\n const listener = (event: KeyboardEvent) => {\n // For single key shortcuts\n if (shortcutKeys.length === 1) {\n if (event.key.toLowerCase() === shortcutKeys[0].toLowerCase()) {\n event.preventDefault();\n\n savedHandler.current();\n }\n return;\n }\n\n // For modifier combinations\n if (shortcutKeys.length === 2) {\n const [modifier, key] = shortcutKeys;\n const pressedKey = event.key.toLowerCase();\n\n const isModifierMatch =\n (modifier === '⌘' && event.metaKey) ||\n (modifier === 'Ctrl' && event.ctrlKey);\n\n if (isModifierMatch && pressedKey === key.toLowerCase()) {\n event.preventDefault();\n\n savedHandler.current();\n }\n }\n };\n\n // Use capture phase and listen to both keydown and keyup\n window.addEventListener('keydown', listener, { capture: true });\n window.addEventListener('keyup', listener, { capture: true });\n\n return () => {\n window.removeEventListener('keydown', listener, { capture: true });\n window.removeEventListener('keyup', listener, { capture: true });\n };\n }, []);\n}","import { css } from \"@linaria/core\";\n\nexport const SearchButton = css`\n @layer defaults {\n background-color: transparent;\n border-radius: var(--xyd-border-radius-large);\n border: 1px solid var(--dark32);\n color: var(--text-primary);\n background: var(--dark16);\n font-size: var(--xyd-font-size-small);\n font-weight: var(--xyd-font-weight-semibold);\n height: 36px;\n justify-content: space-between;\n display: flex;\n align-items: center;\n flex: 1;\n\n padding: 0 8px;\n margin: 12px 0 0;\n user-select: none;\n width: 100%;\n transition: border-color .15s ease;\n\n max-width: var(--xyd-search-width, 300px);\n margin: 0;\n\n cursor: pointer;\n\n &[data-fullWidth] {\n max-width: 100%;\n }\n\n &:hover {\n background: var(--dark16);\n box-shadow: none;\n color: var(--dark48);\n outline: none;\n\n box-shadow: none;\n border-color: var(--dark48);\n }\n \n [part=\"container\"] {\n align-items: center;\n display: flex;\n }\n\n [part=\"placeholder\"] {\n display: block !important;\n font-size: var(--xyd-font-size-small);\n color: var(--dark48);\n font-weight: var(--xyd-font-weight-normal);\n }\n\n [part=\"icon\"] {\n stroke-width: 1.4;\n color: var(--dark48) !important;\n height: 15px;\n transition: color .15s var(--cubic-enter);\n }\n \n\n [part=\"keys\"] {\n display: flex;\n gap: 4px;\n min-width: auto;\n }\n\n [part=\"key\"] {\n align-items: center;\n background: var(--dark16);\n border-radius: var(--xyd-border-radius-small);\n box-shadow: none;\n color: var(--dark48);\n display: flex;\n height: 18px;\n line-height: 18px;\n justify-content: center;\n font-size: 12px;\n letter-spacing: 1px;\n position: relative;\n padding: 0;\n margin: 0;\n border: 0px;\n top: 0;\n width: 20px;\n }\n }\n`\n"],"names":["Baseline","_a","title","toolGroups","props","__rest","React","className","createElement","part","map","group","i","key","tool","j","label","supported","undefined","Footer","kind","Minimal","Object","assign","cn","logo","links","length","_b","_c","link","index","concat","header","items","item","target","href","_d","socials","social","footnote","Button","icon","SearchButton","_a$shortcutKeys","shortcutKeys","onTrigger","savedHandler","useRef","useEffect","current","window","__UNSAFE_xyd_search_button_inited","listener","event","_shortcutKeys","_slicedToArray","modifier","pressedKey","toLowerCase","metaKey","ctrlKey","preventDefault","addEventListener","capture","removeEventListener","useShortcuts","onClick","call","fullWidth","width","height","viewBox","d","stroke","fill","fillRule","strokeLinecap","strokeLinejoin","placeholder"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"system.js","sources":["../src/system/Baseline/Baseline.tsx","../src/system/Baseline/Baseline.styles.tsx","../src/system/Footer/Footer.styles.tsx","../src/system/Footer/Footer.tsx","../src/system/SearchButton/SearchButton.tsx","../src/system/SearchButton/SearchButton.styles.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport * as cn from './Baseline.styles';\n\nexport interface BaselineTool {\n tool: 'bun' | 'node' | 'npm' | 'pnpm' | string\n supported: boolean;\n label?: React.ReactNode;\n}\n\nexport interface BaselineProps extends React.HTMLAttributes<HTMLDetailsElement> {\n title: string;\n toolGroups: BaselineTool[][];\n}\n\nexport function Baseline({ title, toolGroups, ...props }: BaselineProps) {\n return (\n <details className={cn.BaselineHost} {...props}>\n <summary>\n <span part=\"icon\" />\n <div part=\"title\">{title}</div>\n <div part=\"compatibility\">\n {toolGroups.map((group, i) => (\n <span part=\"tools\" key={i}>\n {group.map((tool, j) => (\n <span\n key={tool.tool + (tool.label ?? '') + j}\n data-tool={tool.tool}\n data-supported={tool.supported ? true : undefined}\n >\n {tool.label ? tool.label : null}\n </span>\n ))}\n </span>\n ))}\n </div>\n </summary>\n </details>\n );\n}","\nimport { css } from \"@linaria/core\";\n\nimport checkUrl from \"./check.svg\"\nimport bunUrl from \"./bun.svg\"\nimport logoUrl from \"./logo.svg\"\nimport pnpmUrl from \"./pnpm.svg\"\nimport nodeUrl from \"./node.svg\"\nimport npmUrl from \"./npm.svg\"\n\nexport const BaselineHost = css`\n --baseline-logo-bun: url(${bunUrl});\n --baseline-logo-node: url(${nodeUrl});\n --baseline-logo-npm: url(${npmUrl});\n\n --baseline-high-bg: #e6f4ea;\n --baseline-high-engine-bg: #ceead6;\n --baseline-high-img: url(${logoUrl});\n --baseline-high-check: #099949;\n\n --baseline-bg: var(--baseline-high-bg);\n --baseline-engine-bg: var(--baseline-high-engine-bg);\n --baseline-img: var(--baseline-high-img);\n --baseline-check: var(--baseline-high-check);\n\n --baseline-cross: var(--baseline-limited-cross);\n --feedback-link-icon: var(--icon-primary);\n background: var(--baseline-bg);\n border-radius: .25rem;\n margin: 1rem 0;\n padding-left: 3.8125rem;\n\n summary {\n --chevron-size: 0.6875rem;\n --chevron-padding-left: 0.75rem;\n --chevron-padding-right: 1.25rem;\n align-items: center;\n cursor: pointer;\n display: flex;\n flex-wrap: wrap;\n gap: .5rem;\n justify-content: space-between;\n padding: 1rem 0;\n padding-right: calc(var(--chevron-padding-left) + var(--chevron-size) + var(--chevron-padding-right));\n position: relative;\n }\n\n [part=\"icon\"] {\n --width: 2.3125rem;\n background-image: var(--baseline-img);\n background-position: 50%;\n background-repeat: no-repeat;\n background-size: contain;\n display: block;\n height: 2.25rem;\n left: calc(-.5rem - var(--width));\n position: absolute;\n top: 1rem;\n width: var(--width);\n }\n\n [part=\"title\"] {\n font-size: 1rem;\n font-weight: 600;\n letter-spacing: 0;\n line-height: 1.5;\n margin: 0;\n padding: .375rem 0;\n }\n\n [part=\"compatibility\"] {\n display: flex;\n flex-wrap: wrap;\n gap: .5rem;\n }\n\n [part=\"tools\"] {\n background: var(--baseline-engine-bg);\n border-radius: 2rem;\n display: flex;\n flex-wrap: wrap;\n gap: .5rem;\n padding: .5rem .625rem;\n\n [data-tool] {\n display: flex;\n --baseline-tool-image: none;\n }\n [data-tool=\"bun\"] {\n --baseline-tool-image: var(--baseline-logo-bun);\n }\n [data-tool=\"node\"] {\n --baseline-tool-image: var(--baseline-logo-node);\n }\n [data-tool=\"npm\"] {\n --baseline-tool-image: var(--baseline-logo-npm);\n }\n [data-tool=\"pnpm\"] {\n --baseline-tool-image: url(${pnpmUrl});\n }\n\n [data-tool]::before {\n background-repeat: no-repeat;\n background-size: contain;\n content: \"\";\n display: block;\n height: 1.25rem;\n width: 1.25rem;\n background-image: var(--baseline-tool-image);\n }\n\n [data-tool]::after {\n background-color: var(--baseline-check);\n mask-image: url(${checkUrl});\n -webkit-mask-image: url(${checkUrl});\n\n content: \"\";\n display: block;\n height: 1.25rem;\n -webkit-mask-repeat: no-repeat;\n mask-repeat: no-repeat;\n -webkit-mask-size: contain;\n mask-size: contain;\n width: 1rem;\n }\n }\n\n`;","import { css } from \"@linaria/core\";\n\nexport const Footer = css`\n --footer-anchor-color: var(--dark48);\n --footer-anchor-color--secondary: var(--dark32);\n --footer-anchor-color--hover: var(--xyd-anchor-color--hover);\n /* transform: translateY(-100%); */\n\n border-top: 1px solid var(--footer-anchor-color--secondary);\n display: flex;\n align-items: center;\n flex-direction: column;\n\n p {\n color: var(--text-primary);\n font-weight: bold;\n }\n hr {\n background: var(--footer-anchor-color--secondary);\n width: 100%;\n height: 1px;\n }\n\n a {\n color: var(--footer-anchor-color);\n font-weight: var(--xyd-font-weight-medium);\n\n &:hover {\n color: var(--footer-anchor-color--hover);\n }\n }\n\n [part=\"container\"] {\n display: flex;\n align-items: center;\n flex-direction: column;\n gap: 24px;\n justify-content: space-between;\n max-width: 1050px;\n width: 100%;\n\n padding: 100px 25px\n }\n &[data-kind=\"minimal\"] [part=\"container\"] {\n max-width: 100%;\n padding: 20px;\n }\n\n [part=\"content\"] {\n display: flex;\n flex-direction: row;\n gap: 32px;\n justify-content: space-between;\n width: 100%;\n\n @media (max-width: 768px) {\n flex-direction: column;\n gap: 24px;\n }\n }\n\n [part=\"first-column\"] {\n display: flex;\n height: 24px;\n\n img, svg {\n height: 28px;\n width: auto;\n }\n\n @media (min-width: 1024px) {\n min-width: 140px;\n }\n\n @media (max-width: 768px) {\n align-self: flex-start;\n }\n }\n\n [part=\"columns\"] {\n display: grid;\n gap: 32px;\n grid-template-columns: repeat(auto-fill, minmax(0, 1fr));\n flex: 1 1 0%;\n\n @media (max-width: 768px) {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n gap: 24px;\n width: 100%;\n }\n\n @media (max-width: 680px) {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n gap: 20px;\n }\n\n &[data-cols=\"1\"] {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n\n &[data-cols=\"2\"] {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n \n @media (max-width: 680px) {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n }\n\n &[data-cols=\"3\"] {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n \n @media (max-width: 768px) {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n \n @media (max-width: 680px) {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n }\n\n &[data-cols=\"4\"] {\n grid-template-columns: repeat(4, minmax(0, 1fr));\n \n @media (max-width: 768px) {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n \n @media (max-width: 680px) {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n }\n\n &[data-cols=\"5\"] {\n grid-template-columns: repeat(5, minmax(0, 1fr));\n \n @media (max-width: 768px) {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n \n @media (max-width: 680px) {\n grid-template-columns: repeat(1, minmax(0, 1fr));\n }\n }\n }\n &[data-kind=\"minimal\"] [part=\"columns\"] {\n display: flex;\n }\n\n [part=\"col\"] {\n display: flex;\n flex-direction: column;\n align-items: center;\n white-space: nowrap;\n gap: 16px;\n\n @media (max-width: 768px) {\n align-items: flex-start;\n white-space: normal;\n }\n }\n\n [part=\"col-items\"] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n align-items: flex-start;\n\n @media (max-width: 768px) {\n align-items: flex-start;\n }\n }\n &[data-kind=\"minimal\"] [part=\"col-items\"] {\n flex-direction: row;\n flex-wrap: wrap;\n }\n\n [part=\"social-links\"] {\n display: flex;\n gap: 16px;\n justify-content: flex-end;\n flex-wrap: wrap;\n max-width: 492px;\n min-width: 140px;\n\n @media (max-width: 768px) {\n justify-content: flex-start;\n max-width: 100%;\n min-width: auto;\n }\n\n svg {\n width: 24px;\n height: 24px;\n\n color: var(--footer-anchor-color);\n fill: var(--footer-anchor-color);\n\n &:hover {\n color: var(--footer-anchor-color--hover);\n fill: var(--footer-anchor-color--hover);\n }\n }\n }\n\n [part=\"footnote\"] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n\n @media (max-width: 768px) {\n flex-direction: column;\n gap: 16px;\n align-items: flex-start;\n }\n }\n`;","import React from \"react\";\n\nimport { Button } from \"../../writer/Button\"\nimport * as cn from \"./Footer.styles\";\n\nexport interface FooterLinkItemsProps {\n label: string;\n href: string;\n}\n\nexport interface FooterProps {\n footnote: React.ReactNode;\n\n kind?: \"minimal\"\n\n logo?: React.ReactNode;\n\n socials?: {\n logo: React.ReactNode;\n href: string\n }[]\n\n links?: {\n header: string;\n items?: FooterLinkItemsProps[]\n }[] | FooterLinkItemsProps[]\n}\n\nexport function Footer(props: FooterProps) {\n if (props.kind === \"minimal\") {\n return <Footer.Minimal {...props} />\n }\n\n return <footer className={cn.Footer}>\n <div part=\"container\">\n <div part=\"content\">\n {\n props.logo && <div part=\"first-column\">\n {props.logo}\n </div>\n }\n\n {props.links?.length && <div part=\"columns\" data-cols={props.links?.length}>\n {props.links?.map((link, index) => (\n <div part=\"col\" key={`${link.header}-${index}`}>\n <div part=\"col-items\">\n <p>{link.header}</p>\n {link.items?.map((item) => (\n <a key={`${item.label}-${index}`} target=\"_blank\" href={item.href}>{item.label}</a>\n ))}\n </div>\n </div>\n ))}\n </div>}\n\n\n <div part=\"social-links\">\n {props.socials?.map((social, index) => (\n <div key={`${social.href}-${index}`}>\n <a target=\"_blank\" href={social.href}>{social.logo}</a>\n </div>\n ))}\n </div>\n </div>\n\n {props.footnote && <hr />}\n\n <div part=\"footnote\">\n {props.footnote}\n </div>\n </div>\n </footer>\n}\n\nFooter.Minimal = function MinimalFooter(props: FooterProps) {\n return <footer className={cn.Footer} data-kind=\"minimal\">\n <div part=\"container\">\n <div part=\"content\">\n {\n props.links?.length && <div part=\"columns\" data-cols={props.links?.length}>\n <div part=\"col\">\n <div part=\"col-items\">\n {props.links?.map((item, index) => (\n <Button\n key={`${item.label}-${index}`} kind=\"tertiary\" href={item.href}>\n {item.label}\n </Button>\n ))}\n </div>\n </div>\n </div>\n }\n\n <div part=\"social-links\">\n {props.socials?.map((social, index) => (\n <Button\n key={`${social.href}-${index}`}\n kind=\"tertiary\"\n href={social.href}\n icon={social.logo}\n />\n ))}\n </div>\n </div>\n </div>\n </footer>\n}","import React, { useEffect, useRef } from 'react';\n\nimport * as cn from \"./SearchButton.styles\";\n\ninterface SearchButtonProps {\n onClick?: () => void;\n placeholder?: string;\n shortcutKeys?: string[];\n fullWidth?: boolean;\n}\n\nexport function SearchButton({\n shortcutKeys = ['⌘', 'K'],\n ...props\n}: SearchButtonProps) {\n useShortcuts(shortcutKeys, () => props.onClick?.());\n\n useEffect(() => {\n // @ts-ignore - !!! FIX IN THE FUTURE !!! its a fix for loading virtual-component:Search twice? original and from plugin - check if exists on prod\n window.__UNSAFE_xyd_search_button_inited = true\n\n return () => {\n // @ts-ignore\n window.__UNSAFE_xyd_search_button_inited = false\n }\n }, [])\n\n return (\n <xyd-search-button\n className={cn.SearchButton}\n aria-label=\"Search\"\n onClick={props.onClick}\n data-fullWidth={props.fullWidth}\n >\n <span part=\"container\">\n <svg\n width={20}\n height={20}\n part=\"icon\"\n viewBox=\"0 0 20 20\"\n >\n <path\n d=\"M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z\"\n stroke=\"currentColor\"\n fill=\"none\"\n fillRule=\"evenodd\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n <span part=\"placeholder\">{props.placeholder || \"Search\"}</span>\n </span>\n\n {\n shortcutKeys.length > 0 && (\n <span part=\"keys\">\n {shortcutKeys.map((key, index) => (\n <kbd key={`${key}-${index}`} part=\"key\">{key}</kbd>\n ))}\n </span>\n )\n }\n </xyd-search-button>\n )\n}\n\nfunction useShortcuts(shortcutKeys: string[], onTrigger: () => void): void {\n // Keep latest handler reference to avoid stale closures\n const savedHandler = useRef(onTrigger);\n\n useEffect(() => {\n savedHandler.current = onTrigger;\n }, [onTrigger]);\n\n useEffect(() => {\n // @ts-ignore\n if (window.__UNSAFE_xyd_search_button_inited) {\n return\n }\n\n const listener = (event: KeyboardEvent) => {\n // For single key shortcuts\n if (shortcutKeys.length === 1) {\n if (event.key.toLowerCase() === shortcutKeys[0].toLowerCase()) {\n event.preventDefault();\n\n savedHandler.current();\n }\n return;\n }\n\n // For modifier combinations\n if (shortcutKeys.length === 2) {\n const [modifier, key] = shortcutKeys;\n const pressedKey = event.key.toLowerCase();\n\n const isModifierMatch =\n (modifier === '⌘' && event.metaKey) ||\n (modifier === 'Ctrl' && event.ctrlKey);\n\n if (isModifierMatch && pressedKey === key.toLowerCase()) {\n event.preventDefault();\n\n savedHandler.current();\n }\n }\n };\n\n // Use capture phase and listen to both keydown and keyup\n window.addEventListener('keydown', listener, { capture: true });\n window.addEventListener('keyup', listener, { capture: true });\n\n return () => {\n window.removeEventListener('keydown', listener, { capture: true });\n window.removeEventListener('keyup', listener, { capture: true });\n };\n }, []);\n}","import { css } from \"@linaria/core\";\n\nexport const SearchButton = css`\n @layer defaults {\n background-color: transparent;\n border-radius: var(--xyd-border-radius-large);\n border: 1px solid var(--dark32);\n color: var(--text-primary);\n background: var(--dark16);\n font-size: var(--xyd-font-size-small);\n font-weight: var(--xyd-font-weight-semibold);\n height: 36px;\n justify-content: space-between;\n display: flex;\n align-items: center;\n flex: 1;\n\n padding: 0 8px;\n margin: 12px 0 0;\n user-select: none;\n width: 100%;\n transition: border-color .15s ease;\n\n max-width: var(--xyd-search-width, 300px);\n margin: 0;\n\n cursor: pointer;\n\n &[data-fullWidth] {\n max-width: 100%;\n }\n\n &:hover {\n background: var(--dark16);\n box-shadow: none;\n color: var(--dark48);\n outline: none;\n\n box-shadow: none;\n border-color: var(--dark48);\n }\n \n [part=\"container\"] {\n align-items: center;\n display: flex;\n gap: var(--xyd-padding-small);\n }\n\n [part=\"placeholder\"] {\n display: block !important;\n font-size: var(--xyd-font-size-small);\n color: var(--dark48);\n font-weight: var(--xyd-font-weight-normal);\n }\n\n [part=\"icon\"] {\n stroke-width: 1.4;\n color: var(--dark48) !important;\n height: 15px;\n transition: color .15s var(--cubic-enter);\n }\n \n\n [part=\"keys\"] {\n display: flex;\n gap: 4px;\n min-width: auto;\n }\n\n [part=\"key\"] {\n align-items: center;\n background: var(--dark16);\n border-radius: var(--xyd-border-radius-small);\n box-shadow: none;\n color: var(--dark48);\n display: flex;\n height: 18px;\n line-height: 18px;\n justify-content: center;\n font-size: 12px;\n letter-spacing: 1px;\n position: relative;\n padding: 0;\n margin: 0;\n border: 0px;\n top: 0;\n width: 20px;\n }\n }\n`\n"],"names":["Baseline","_a","title","toolGroups","props","__rest","React","className","createElement","part","map","group","i","key","tool","j","label","supported","undefined","Footer","kind","Minimal","Object","assign","cn","logo","links","length","_b","_c","link","index","concat","header","items","item","target","href","_d","socials","social","footnote","Button","icon","SearchButton","_a$shortcutKeys","shortcutKeys","onTrigger","savedHandler","useRef","useEffect","current","window","__UNSAFE_xyd_search_button_inited","listener","event","_shortcutKeys","_slicedToArray","modifier","pressedKey","toLowerCase","metaKey","ctrlKey","preventDefault","addEventListener","capture","removeEventListener","useShortcuts","onClick","call","fullWidth","width","height","viewBox","d","stroke","fill","fillRule","strokeLinecap","strokeLinejoin","placeholder"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as r}from"./_rollupPluginBabelHelpers-
|
|
2
|
-
//# sourceMappingURL=useUXClick-
|
|
1
|
+
import{a as r}from"./_rollupPluginBabelHelpers-DBTxcuvK.js";import{useState as a}from"react";function o(o,t,e){var n=a(!1),u=r(n,2),i=u[0],l=u[1];return function(r){var a=!i;l(a);var n=e();a?o(n):t(n)}}export{o as u};
|
|
2
|
+
//# sourceMappingURL=useUXClick-C6Oda9v6.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useUXClick-
|
|
1
|
+
{"version":3,"file":"useUXClick-C6Oda9v6.js","sources":["../src/uxsdk/useUXClick.ts"],"sourcesContent":["import React, {useState} from \"react\";\n\nexport function useUXClick(\n openEvent: (data: any) => void,\n closeEvent: (data: any) => void,\n getData: () => any\n) {\n const [open, setOpen] = useState(false);\n\n return (event: React.MouseEvent) => {\n const newOpen = !open;\n setOpen(newOpen);\n\n const data = getData();\n if (newOpen) {\n openEvent(data);\n } else {\n closeEvent(data);\n }\n };\n}\n"],"names":["useUXClick","openEvent","closeEvent","getData","_useState","useState","_useState2","_slicedToArray","open","setOpen","event","newOpen","data"],"mappings":"sGAEgBA,EACZC,EACAC,EACAC,GAEA,IAAAC,EAAwBC,GAAS,GAAMC,EAAAC,EAAAH,EAAA,GAAhCI,EAAIF,EAAA,GAAEG,EAAOH,EAAA,GAEpB,OAAO,SAACI,GACJ,IAAMC,GAAWH,EACjBC,EAAQE,GAER,IAAMC,EAAOT,IACTQ,EACAV,EAAUW,GAEVV,EAAWU,EAEnB,CACJ"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import{defineEvents as e}from"openux-js";var a="components.tabs.change",n=e(function(e){var a=e.CodeSample,n=e.Framework;return{docs:{code:{example_change:function(e){var a=e.example;return Object.assign(Object.assign({},t({Framework:n})),{example:a})},tab_change:function(e){var t=e.tab;return Object.assign(Object.assign({},r({CodeSample:a,Framework:n})),{tab:t})},copy:function(e){var t=e.code;return Object.assign(Object.assign({},r({CodeSample:a,Framework:n})),{code:(t||"").slice(0,100)+"..."})},scroll_100:function(){return Object.assign({},r({CodeSample:a,Framework:n}))},scroll_depth:function(e){var t=e.depth;return Object.assign(Object.assign({},r({CodeSample:a,Framework:n})),{depth:t})}},details:{open:function(e){var a=e.label;return Object.assign(Object.assign({},t({Framework:n})),{label:a})},close:function(e){var a=e.label;return Object.assign(Object.assign({},t({Framework:n})),{label:a})}},anchor:{click:function(e){var a=e.id;return Object.assign(Object.assign({},t({Framework:n})),{id:a})}}}}});function r(e){var a=e.CodeSample,n=e.Framework;return Object.assign(Object.assign({},t({Framework:n})),{tab:null==a?void 0:a.tab,example:null==a?void 0:a.example})}function t(e){var a=e.Framework;return{location:null==a?void 0:a.location}}export{a as E,n as u};
|
|
2
|
-
//# sourceMappingURL=useUXEvents-
|
|
2
|
+
//# sourceMappingURL=useUXEvents-Dxw3DupE.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useUXEvents-
|
|
1
|
+
{"version":3,"file":"useUXEvents-Dxw3DupE.js","sources":["../src/uxsdk/const.ts","../src/uxsdk/useUXEvents.ts"],"sourcesContent":["export const EVENT_COMPONENT_TAB_CHANGE = \"components.tabs.change\"\n","import {defineEvents} from 'openux-js'\n\ninterface NodeCodeSample {\n tab?: string\n example?: string\n code?: string\n}\n\ninterface NodeFramework {\n location: string\n uniformRegion?: string\n}\n\ninterface AnalyticsNodes {\n CodeSample: NodeCodeSample\n Framework: NodeFramework\n}\n\n// TODO: in the future + maybe better API\n// TODO: how to share nodes between packages\n// TODO: node abstraction?\n// TODO: merge abstraction?\nexport const useUXEvents = defineEvents(({CodeSample, Framework}: AnalyticsNodes) => ({\n docs: {\n code: {\n example_change({example}: { example: string }) {\n return {\n ...commonFrameworkProps({Framework}),\n example: example,\n }\n },\n tab_change({tab}: { tab: string }) {\n return {\n ...commonCodeSampleProps({CodeSample, Framework}),\n tab: tab,\n }\n },\n copy({code}: { code: string }) {\n return {\n ...commonCodeSampleProps({CodeSample, Framework}),\n code: (code || \"\").slice(0, 100) + \"...\",\n }\n },\n scroll_100() {\n return {\n ...commonCodeSampleProps({CodeSample, Framework}),\n }\n },\n scroll_depth({depth}: { depth: number }) {\n return {\n ...commonCodeSampleProps({CodeSample, Framework}),\n depth,\n }\n },\n },\n\n details: {\n open({label}: { label: string }) {\n return {\n ...commonFrameworkProps({Framework}),\n label: label,\n }\n },\n close({label}: { label: string }) {\n return {\n ...commonFrameworkProps({Framework}),\n label: label,\n }\n }\n },\n\n anchor: {\n click({id}: { id: string }) {\n return {\n ...commonFrameworkProps({Framework}),\n id: id,\n }\n }\n }\n }\n}))\n\nfunction commonCodeSampleProps({\n CodeSample,\n Framework\n }: {\n CodeSample: NodeCodeSample | undefined\n Framework: NodeFramework | undefined\n}) {\n return {\n ...commonFrameworkProps({Framework}),\n tab: CodeSample?.tab!,\n example: CodeSample?.example!,\n }\n}\n\nfunction commonFrameworkProps({\n Framework\n }: {\n Framework: NodeFramework | undefined\n}) {\n return {\n location: Framework?.location!,\n }\n}\n"],"names":["EVENT_COMPONENT_TAB_CHANGE","useUXEvents","defineEvents","_ref","CodeSample","Framework","docs","code","example_change","_ref2","example","Object","assign","commonFrameworkProps","tab_change","_ref3","tab","commonCodeSampleProps","copy","_ref4","slice","scroll_100","scroll_depth","_ref5","depth","details","open","_ref6","label","close","_ref7","anchor","click","_ref8","id","_ref9","_ref0","location"],"mappings":"yCAAO,IAAMA,EAA6B,yBCsB7BC,EAAcC,EAAa,SAAAC,GAAA,IAAEC,EAAUD,EAAVC,WAAYC,EAASF,EAATE,UAAS,MAAuB,CAClFC,KAAM,CACFC,KAAM,CACFC,eAAc,SAAAC,GAA+B,IAA7BC,EAAOD,EAAPC,QACZ,OAAAC,OAAAC,OAAAD,OAAAC,OAAA,CAAA,EACOC,EAAqB,CAACR,UAAAA,KAAW,CACpCK,QAASA,GAEjB,EACAI,WAAU,SAAAC,GAAuB,IAArBC,EAAGD,EAAHC,IACR,OAAAL,OAAAC,OAAAD,OAAAC,OAAA,CAAA,EACOK,EAAsB,CAACb,WAAAA,EAAYC,UAAAA,KAAW,CACjDW,IAAKA,GAEb,EACAE,KAAI,SAAAC,GAAyB,IAAvBZ,EAAIY,EAAJZ,KACF,OAAAI,OAAAC,OAAAD,OAAAC,OAAA,CAAA,EACOK,EAAsB,CAACb,WAAAA,EAAYC,UAAAA,KAAW,CACjDE,MAAOA,GAAQ,IAAIa,MAAM,EAAG,KAAO,OAE3C,EACAC,WAAU,WACN,OAAAV,OAAAC,OAAA,CAAA,EACOK,EAAsB,CAACb,WAAAA,EAAYC,UAAAA,IAE9C,EACAiB,aAAY,SAAAC,GAA2B,IAAzBC,EAAKD,EAALC,MACV,OAAAb,OAAAC,OAAAD,OAAAC,OAAA,CAAA,EACOK,EAAsB,CAACb,WAAAA,EAAYC,UAAAA,KAAW,CACjDmB,MAAAA,GAER,GAGJC,QAAS,CACLC,KAAI,SAAAC,GAA2B,IAAzBC,EAAKD,EAALC,MACF,OAAAjB,OAAAC,OAAAD,OAAAC,OAAA,CAAA,EACOC,EAAqB,CAACR,UAAAA,KAAW,CACpCuB,MAAOA,GAEf,EACAC,MAAK,SAAAC,GAA2B,IAAzBF,EAAKE,EAALF,MACH,OAAAjB,OAAAC,OAAAD,OAAAC,OAAA,CAAA,EACOC,EAAqB,CAACR,UAAAA,KAAW,CACpCuB,MAAOA,GAEf,GAGJG,OAAQ,CACJC,MAAK,SAAAC,GAAqB,IAAnBC,EAAED,EAAFC,GACH,OAAAvB,OAAAC,OAAAD,OAAAC,OAAA,CAAA,EACOC,EAAqB,CAACR,UAAAA,KAAW,CACpC6B,GAAIA,GAEZ,IAGX,GAED,SAASjB,EAAqBkB,GAM7B,IALkC/B,EAAU+B,EAAV/B,WACAC,EAAS8B,EAAT9B,UAK/B,OAAAM,OAAAC,OAAAD,OAAAC,OAAA,CAAA,EACOC,EAAqB,CAACR,UAAAA,KAAW,CACpCW,IAAKZ,aAAU,EAAVA,EAAYY,IACjBN,QAASN,aAAU,EAAVA,EAAYM,SAE7B,CAEA,SAASG,EAAoBuB,GAI5B,IAHiC/B,EAAS+B,EAAT/B,UAI9B,MAAO,CACHgC,SAAUhC,aAAS,EAATA,EAAWgC,SAE7B"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import{useRef as r,useEffect as e}from"react";function n(n){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=t.thresholds,c=void 0===o?[25,50,75,100]:o,i=t.onDepthReached,u=r(new Set);e(function(){if(n.current){var r=n.current;return r.addEventListener("scroll",e),function(){r.removeEventListener("scroll",e)}}function e(){var r=n.current;if(r){var e=r.scrollTop,t=r.scrollHeight-r.clientHeight;if(!(t<=0)){var o=Math.round(e/t*100);c.forEach(function(r){o>=r&&!u.current.has(r)&&(u.current.add(r),null==i||i(r))})}}}},[n.current,c,i])}export{n as u};
|
|
2
|
-
//# sourceMappingURL=useUXScrollDepth-
|
|
2
|
+
//# sourceMappingURL=useUXScrollDepth-DvG9B-YJ.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useUXScrollDepth-
|
|
1
|
+
{"version":3,"file":"useUXScrollDepth-DvG9B-YJ.js","sources":["../src/uxsdk/useUXScrollDepth.ts"],"sourcesContent":["import React, {useEffect, useRef} from \"react\";\n\nexport interface ScrollDepthOptions {\n thresholds?: number[]; // Default: [25, 50, 75, 100]\n onDepthReached?: (depth: number) => void;\n}\n\nexport function useUXScrollDepth(\n ref: React.RefObject<HTMLElement | null>, \n options: ScrollDepthOptions = {}\n) {\n const { thresholds = [25, 50, 75, 100], onDepthReached } = options;\n const reachedDepthsRef = useRef<Set<number>>(new Set());\n\n useEffect(() => {\n if (!ref.current) {\n return\n }\n\n function handleScroll() {\n const element = ref.current;\n if (!element) return;\n\n const { scrollTop, scrollHeight, clientHeight } = element;\n \n // Calculate current scroll percentage\n const scrollableHeight = scrollHeight - clientHeight;\n if (scrollableHeight <= 0) return;\n \n const scrollPercentage = Math.round((scrollTop / scrollableHeight) * 100);\n \n // Check which thresholds have been reached\n thresholds.forEach(threshold => {\n if (scrollPercentage >= threshold && !reachedDepthsRef.current.has(threshold)) {\n reachedDepthsRef.current.add(threshold);\n onDepthReached?.(threshold);\n }\n });\n }\n\n const element = ref.current;\n element.addEventListener('scroll', handleScroll);\n\n return () => {\n element.removeEventListener('scroll', handleScroll);\n };\n }, [ref.current, thresholds, onDepthReached]);\n}\n\n"],"names":["useUXScrollDepth","ref","options","_options$thresholds","thresholds","onDepthReached","reachedDepthsRef","useRef","Set","useEffect","current","element","addEventListener","handleScroll","removeEventListener","scrollTop","scrollableHeight","scrollHeight","clientHeight","scrollPercentage","Math","round","forEach","threshold","has","add"],"mappings":"uDAOgBA,EACZC,GACgC,IAAhCC,yDAA8B,CAAA,EAE9BC,EAA2DD,EAAnDE,WAAAA,OAAU,IAAAD,EAAG,CAAC,GAAI,GAAI,GAAI,KAAIA,EAAEE,EAAmBH,EAAnBG,eAClCC,EAAmBC,EAAoB,IAAIC,KAEjDC,EAAU,WACN,GAAKR,EAAIS,QAAT,CAyBA,IAAMC,EAAUV,EAAIS,QAGpB,OAFAC,EAAQC,iBAAiB,SAAUC,GAE5B,WACHF,EAAQG,oBAAoB,SAAUD,EAC1C,CA5BA,CAEA,SAASA,IACL,IAAMF,EAAUV,EAAIS,QACpB,GAAKC,EAAL,CAEA,IAAQI,EAA0CJ,EAA1CI,UAGFC,EAH4CL,EAA/BM,aAA+BN,EAAjBO,aAIjC,KAAIF,GAAoB,GAAxB,CAEA,IAAMG,EAAmBC,KAAKC,MAAON,EAAYC,EAAoB,KAGrEZ,EAAWkB,QAAQ,SAAAC,GACXJ,GAAoBI,IAAcjB,EAAiBI,QAAQc,IAAID,KAC/DjB,EAAiBI,QAAQe,IAAIF,GAC7BlB,SAAAA,EAAiBkB,GAEzB,EAV2B,CANb,CAiBlB,CAQJ,EAAG,CAACtB,EAAIS,QAASN,EAAYC,GACjC"}
|
package/dist/uxsdk.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export{E as EVENT_COMPONENT_TAB_CHANGE,u as useUXEvents}from"./useUXEvents-
|
|
1
|
+
export{E as EVENT_COMPONENT_TAB_CHANGE,u as useUXEvents}from"./useUXEvents-Dxw3DupE.js";export{u as useUXClick}from"./useUXClick-C6Oda9v6.js";export{u as useUXScrollDepth}from"./useUXScrollDepth-DvG9B-YJ.js";import{useRef as e,useCallback as r,useEffect as t}from"react";import"openux-js";import"./_rollupPluginBabelHelpers-DBTxcuvK.js";function n(n,u,c){var o=e(!1),i=e(!1),s=e(null),l=e(0),a=r(function(){var e=Date.now();e-l.current>1e3&&(o.current=!0,l.current=e,u())},[u]),m=r(function(){s.current&&clearTimeout(s.current),s.current=setTimeout(function(){o.current=!1,s.current=null},50)},[]);t(function(){if(n.current)return n.current.addEventListener("mouseenter",a),n.current.addEventListener("mouseleave",m),function(){n.current&&(n.current.removeEventListener("mouseenter",a),n.current.removeEventListener("mouseleave",m)),s.current&&clearTimeout(s.current)}},[n.current,a,m]);var v=r(function(){s.current&&(clearTimeout(s.current),s.current=null),i.current=!1,o.current&&(o.current=!1,i.current=!0,c())},[c]);t(function(){return document.addEventListener("visibilitychange",v),function(){document.removeEventListener("visibilitychange",v),s.current&&clearTimeout(s.current)}},[v])}export{n as useUXUnreachableElementTracker};
|
|
2
2
|
//# sourceMappingURL=uxsdk.js.map
|
package/dist/writer.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export{A as Anchor,B as Badge,c as Banner,G as GuideCard,H as Heading,I as IconSocial,L as List,a as ListOl,N as NavLinks,S as Steps,T as Table,b as Tabs,V as VideoGuide}from"./VideoGuide-
|
|
1
|
+
export{A as Anchor,B as Badge,c as Banner,G as GuideCard,H as Heading,I as IconSocial,L as List,a as ListOl,N as NavLinks,S as Steps,T as Table,b as Tabs,V as VideoGuide}from"./VideoGuide-CJX4uBhq.js";export{B as Blockquote,c as Breadcrumbs,a as Callout,d as Card,b as Code,C as ColorSchemeButton,D as Details,H as Hr,I as Image,U as Update,u as useColorScheme}from"./Update-C3p3XY0D.js";export{B as Button}from"./Button-BGKCu3zj.js";import{I as e,a as r}from"./Icon-BZN_N2sA.js";export{b as IconProvider}from"./Icon-BZN_N2sA.js";import t from"react";export{T as Text}from"./TabsAnalytics-zAYQfBEL.js";import"./useUXEvents-Dxw3DupE.js";import"./_rollupPluginBabelHelpers-DBTxcuvK.js";import"radix-ui";import"lucide-react";import"./useUXClick-C6Oda9v6.js";import"openux-js";function s(e){return e}function o(e){var a=e.children,r=e.className;return t.createElement("pre",{className:"".concat("p1vb39qj"," ").concat(r||"")},a)}function n(e){return e}var i="TocCard-module_TocCardHost__pT0XJ";function l(a){var r=a.title,s=a.description,o=a.href,n=a.className,c=a.icon,l=a.as||m;return t.createElement("xyd-toccard",{className:"".concat(i," ").concat(n||"")},t.createElement("div",{part:"container"},t.createElement(l,{part:"link",href:o,target:"_blank",rel:"noreferrer"},t.createElement("div",{part:"title-container"},t.createElement("div",{part:"title"},r),c&&t.createElement(e,{name:c,size:16})),t.createElement("div",{part:"description"},s))))}function m(e){var a=e.children,s=e.href,o=r(e,["children","href"]);return t.createElement("a",Object.assign({href:s},o),a)}export{s as DetailsPropsProps,e as Icon,o as Pre,n as TabsProps,l as TocCard};
|
|
2
2
|
//# sourceMappingURL=writer.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xyd-js/components",
|
|
3
|
-
"version": "0.0.0-build-
|
|
3
|
+
"version": "0.0.0-build-75f5bd5-20250820183622",
|
|
4
4
|
"description": "",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"@code-hike/lighter": "^1.0.3",
|
|
50
50
|
"openux-js": "0.0.0-pre.1",
|
|
51
51
|
"react": "^19.1.0",
|
|
52
|
-
"@xyd-js/core": "0.0.0-build-
|
|
52
|
+
"@xyd-js/core": "0.0.0-build-75f5bd5-20250820183622"
|
|
53
53
|
},
|
|
54
54
|
"devDependencies": {
|
|
55
55
|
"@linaria/core": "^6.2.0",
|
|
@@ -96,11 +96,14 @@ export const CodeTabsLanguagesHost = css`
|
|
|
96
96
|
|
|
97
97
|
color: var(--codetabs-color);
|
|
98
98
|
|
|
99
|
+
border-bottom-left-radius: 0;
|
|
100
|
+
border-bottom-right-radius: 0;
|
|
101
|
+
|
|
102
|
+
border-bottom: 1px solid transparent;
|
|
103
|
+
|
|
99
104
|
&[data-state="active"] {
|
|
100
105
|
color: var(--codetabs-color--active);
|
|
101
|
-
border-bottom:
|
|
102
|
-
border-bottom-left-radius: 0px;
|
|
103
|
-
border-bottom-right-radius: 0px;
|
|
106
|
+
border-bottom-color: var(--codetabs-color--active);
|
|
104
107
|
}
|
|
105
108
|
|
|
106
109
|
&:hover {
|
|
@@ -118,6 +121,7 @@ export const CodeTabsLanguagesHost = css`
|
|
|
118
121
|
&[data-single="true"] [part="copy"] {
|
|
119
122
|
position: absolute;
|
|
120
123
|
right: 0;
|
|
124
|
+
top: 5px;
|
|
121
125
|
}
|
|
122
126
|
}
|
|
123
127
|
`;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_rollupPluginBabelHelpers-DN3J0MQT.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
|