@xyd-js/themes 0.0.0 → 0.1.1-build.161

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.
Files changed (40) hide show
  1. package/CHANGELOG.md +1930 -0
  2. package/LICENSE +21 -0
  3. package/dist/decorators/atlas-vars.css +29 -0
  4. package/dist/decorators/header-sketch.css +23 -0
  5. package/dist/decorators/page-layout.css +11 -0
  6. package/dist/decorators/page-leftpad.css +46 -0
  7. package/dist/decorators/page-sketch.css +52 -0
  8. package/dist/decorators/sidebar-pad.css +24 -0
  9. package/dist/decorators/sidebar-scroll.css +51 -0
  10. package/dist/index.css +1259 -0
  11. package/dist/index.d.ts +116 -0
  12. package/dist/index.js +669 -0
  13. package/dist/index.js.map +1 -0
  14. package/dist/reset.css +56 -0
  15. package/dist/rollup.d.ts +28 -0
  16. package/dist/rollup.js +139 -0
  17. package/dist/rollup.js.map +1 -0
  18. package/package.json +55 -6
  19. package/postcss.config.cjs +7 -0
  20. package/scripts/build-css.js +73 -0
  21. package/src/BaseTheme.tsx +471 -0
  22. package/src/Theme.tsx +363 -0
  23. package/src/context.tsx +9 -0
  24. package/src/copyPresetsPlugin.ts +124 -0
  25. package/src/index.ts +11 -0
  26. package/src/rollup.ts +91 -0
  27. package/src/styles/decorators/atlas-vars.css +32 -0
  28. package/src/styles/decorators/header-sketch.css +23 -0
  29. package/src/styles/decorators/page-layout.css +11 -0
  30. package/src/styles/decorators/page-leftpad.css +46 -0
  31. package/src/styles/decorators/page-sketch.css +30 -0
  32. package/src/styles/decorators/sidebar-pad.css +24 -0
  33. package/src/styles/decorators/sidebar-scroll.css +51 -0
  34. package/src/styles/index.css +26 -0
  35. package/src/styles/reset.css +56 -0
  36. package/src/styles/styles.css +156 -0
  37. package/src/styles/tokens.css +472 -0
  38. package/tsconfig.json +51 -0
  39. package/tsup.config.ts +38 -0
  40. package/types.d.ts +13 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/BaseTheme.tsx","../src/Theme.tsx","../src/copyPresetsPlugin.ts"],"sourcesContent":["import * as React from 'react'\nimport { useEffect } from 'react'\nimport { useLocation, useMatches } from 'react-router'\nimport GitHubButton from 'react-github-btn'\nimport { UXNode } from \"openux-js\";\n\nimport {\n TocCard,\n Text,\n VideoGuide,\n useColorScheme,\n IconSocial,\n IconSocialProps,\n Icon\n} from '@xyd-js/components/writer';\nimport { ContentDecorator } from \"@xyd-js/components/content\";\nimport {\n LayoutPrimary\n} from \"@xyd-js/components/layouts\";\nimport { Footer } from \"@xyd-js/components/system\";\n\nimport {\n FwNav,\n FwNavLinks,\n FwToc,\n FwSubNav,\n FwSidebar,\n FwJsonComponent,\n FwLogo,\n\n useMatchedSubNav,\n useActiveRoute,\n useActivePageRoute,\n useMetadata,\n useSettings,\n FwBanner,\n useAppearance,\n useContentComponent,\n useContentOriginal,\n FwCopyPage,\n FwBreadcrumbs,\n} from \"@xyd-js/framework/react\";\n\nimport { Theme } from \"./Theme\";\nimport { Metadata } from '@xyd-js/core';\nimport { useRef } from 'react';\nimport { useUXEvents } from '@xyd-js/analytics';\nimport { useUXUnreachableElementTracker } from \"@xyd-js/components/uxsdk\";\n\nexport class BaseTheme extends Theme {\n constructor() {\n super()\n\n this.Page = this.Page.bind(this)\n this.Layout = this.Layout.bind(this)\n this.Navbar = this.Navbar.bind(this)\n this.Sidebar = this.Sidebar.bind(this)\n this.Content = this.Content.bind(this)\n this.ContentSecondary = this.ContentSecondary.bind(this)\n this.ContentNav = this.ContentNav.bind(this)\n this.TocTop = this.TocTop.bind(this)\n this.TocBottom = this.TocBottom.bind(this)\n this.PageFooter = this.PageFooter.bind(this)\n this.Footer = this.Footer.bind(this)\n this.Breadcrumbs = this.Breadcrumbs.bind(this)\n this.NavLinks = this.NavLinks.bind(this)\n }\n\n // public reactContentComponents(): { [component: string]: (props: any) => React.JSX.Element | null } {\n // return this.reactContent.components()\n // }\n\n public reactContentComponents(): { [component: string]: (props: any) => React.JSX.Element | null } {\n const meta = useMetadata()\n const appearance = useAppearance()\n const contentDecorator = appearance?.content?.contentDecorator\n\n if (contentDecorator === \"secondary\") {\n if (isDefaultContent(meta)) {\n return this.reactContent.components()\n }\n\n return {\n ...this.reactContent.components(),\n h1: () => null,\n Subtitle: () => null,\n }\n }\n\n return this.reactContent.components()\n }\n\n // TODO: rename and better cuz its only for fixing react-components in secondary content cuz it apply to non original content\n public reactFileComponents(): { [component: string]: (props: any) => React.JSX.Element | null } | false {\n const appearance = useAppearance()\n const contentDecorator = appearance?.content?.contentDecorator\n\n if (contentDecorator === \"secondary\") {\n return false\n }\n\n return {}\n }\n\n public Layout({ children }: { children: React.ReactNode }) {\n const {\n Navbar: $Navbar,\n Sidebar: $Sidebar,\n Footer: $Footer,\n SubNav: $SubNav,\n } = this\n\n const location = useLocation()\n const matchedSubNav = useMatchedSubNav()\n const matchActivePageRout = useActivePageRoute(true)\n const activeRoute = useActiveRoute()\n const meta = useMetadata()\n const appearance = useAppearance()\n const isPage = meta?.layout === \"page\"\n\n const hideSidebar = this.useHideSidebar()\n const subheader = matchedSubNav && !isPage ? <$SubNav /> : null\n const sidebar = <$Sidebar />\n\n const banner = appearance?.banner?.fixed ? <FwBanner /> : null\n\n const id = activeRoute?.id || matchActivePageRout?.id || undefined\n\n return <UXNode name=\"BaseTheme.Layout\" props={{}}>\n <LayoutPrimary\n subheader={!!subheader}\n layout={meta?.layout}\n scrollKey={location.pathname}\n id={id}\n >\n <LayoutPrimary.Header\n banner={banner}\n header={<$Navbar />}\n subheader={subheader}\n />\n <LayoutPrimary.MobileAside\n aside={sidebar}\n />\n\n <main part=\"main\">\n {hideSidebar ? null : <aside part=\"sidebar\">\n {sidebar}\n </aside>}\n\n {children}\n </main>\n\n {appearance?.footer?.surface !== \"page\" ? <$Footer /> : null}\n </LayoutPrimary>\n </UXNode>\n }\n\n public Page({ children }: { children: React.ReactNode }) {\n const {\n Content: $Content,\n ContentNav: $ContentNav,\n PageFooter: $PageFooter,\n Footer: $Footer,\n } = this\n\n const hideToc = this.useHideToc()\n const appearance = useAppearance()\n const meta = useMetadata()\n\n let contentNav = hideToc ? undefined : <$ContentNav />\n let footer = appearance?.footer?.surface === \"page\" ? <$Footer /> : null\n const isPage = meta?.layout === \"page\"\n\n return <UXNode name=\"BaseTheme.Page\" props={{}}>\n <LayoutPrimary.Page\n after={footer}\n contentNav={contentNav}\n >\n <$Content>\n {children}\n </$Content>\n\n {isPage ? (\n null\n ) : <$PageFooter>\n <$BuiltWithXYD />\n </$PageFooter>}\n </LayoutPrimary.Page>\n </UXNode>\n }\n\n protected Navbar() {\n return <>\n <FwNav />\n </>\n }\n\n protected Sidebar() {\n return <FwSidebar />\n }\n\n protected Content({ children }: { children: React.ReactNode }) {\n const meta = useMetadata()\n const appearance = useAppearance()\n\n const {\n ContentSecondary: $ContentSecondary,\n Breadcrumbs: $Breadcrumbs,\n NavLinks: $NavLinks,\n } = this\n\n const contentDecorator = appearance?.content?.contentDecorator\n\n if (contentDecorator === \"secondary\" && !isDefaultContent(meta)) {\n return <$ContentSecondary>\n {children}\n </$ContentSecondary>\n }\n\n return <>\n <$Breadcrumbs />\n\n <ContentDecorator metaComponent={meta?.component || undefined}>\n {children}\n </ContentDecorator>\n\n <$NavLinks />\n </>\n }\n\n private ContentSecondary({ children }: { children: React.ReactNode }) {\n const meta = useMetadata()\n const settings = useSettings()\n\n const ContentComponent = useContentComponent()\n\n const { h1, Subtitle, code } = this.reactContent.components()\n const {\n Breadcrumbs: $Breadcrumbs,\n NavLinks: $NavLinks,\n } = this\n\n let copyPageElement: React.JSX.Element | null = <FwCopyPage />\n\n if (\n meta?.copyPage !== true &&\n (\n meta?.copyPage === false ||\n settings.theme?.writer?.copyPage === false\n )\n ) {\n copyPageElement = null\n }\n\n return <ContentDecorator metaComponent={meta?.component || undefined}>\n <main>\n <xyd-secondary-content>\n <div part=\"secondary-content-header\">\n <div>\n <$Breadcrumbs />\n\n <ContentComponent components={{ // TODO: !!! BETTER API !!!\n ...this.reactContent.noop(),\n h1,\n Subtitle,\n code\n }} />\n </div>\n {copyPageElement}\n </div>\n\n <div part=\"secondary-content\">\n {children}\n <$NavLinks />\n </div>\n </xyd-secondary-content>\n </main>\n </ContentDecorator>\n }\n\n protected ContentNav() {\n const { TocTop, TocBottom } = this\n\n // TODO: toc top and bottom in the future\n return <>\n {/* <TocTop /> */}\n\n <div>\n <FwToc />\n </div>\n\n <TocBottom />\n </>\n }\n\n protected TocTop() {\n return <div>\n <VideoGuide.Miniature />\n </div>\n }\n\n protected TocBottom() {\n const meta = useMetadata()\n const tocCard = meta?.tocCard\n const isEmpty = !tocCard || (Array.isArray(tocCard) && tocCard.length === 0) || (!Array.isArray(tocCard) && (!tocCard.link || !tocCard.title || !tocCard.description))\n if (isEmpty) {\n return null\n }\n\n if (Array.isArray(tocCard)) {\n return <>\n {tocCard.map((card) => (\n <div>\n <TocCard key={card.link} href={card.link} title={card.title} description={card.description}\n icon={card.icon} />\n </div>\n ))}\n </>\n }\n\n return <div>\n <TocCard\n title={tocCard.title}\n description={tocCard.description}\n href={tocCard.link}\n icon={tocCard.icon}\n />\n </div>\n }\n\n protected PageFooter({ children }: { children: React.ReactNode }) {\n const githubButtonContainer = useRef<HTMLDivElement>(null)\n const settings = useSettings()\n const ux = useUXEvents()\n\n const apps = settings.integrations?.[\".apps\"]\n\n let pageFooterBottom: React.ReactNode | null = null\n\n // TOOD: its's a hack - in the future fork github buttons?\n useUXUnreachableElementTracker(githubButtonContainer, () => {\n ux.docs.github_star.hover({})\n }, () => {\n ux.docs.github_star.click({})\n })\n\n if (apps?.githubStar) {\n pageFooterBottom = <div part=\"github-button-container\">\n <Text size=\"small\">\n {apps.githubStar.label}\n </Text>\n\n <div ref={githubButtonContainer}>\n <GitHubButton\n href={apps.githubStar.href}\n data-icon={apps.githubStar.dataIcon || \"octicon-star\"}\n data-size={apps.githubStar.dataSize || \"large\"}\n data-show-count={apps.githubStar.dataShowCount || true}\n aria-label={apps.githubStar.ariaLabel}\n >\n {apps.githubStar.title}\n </GitHubButton>\n </div>\n </div>\n }\n\n return <>\n <xyd-page-footer>\n {children}\n\n {/* TODO: in the future */}\n {/* <Surface target=\"page.footer.bottom\"/> */}\n {pageFooterBottom}\n </xyd-page-footer>\n </>\n }\n\n protected Footer() {\n const settings = useSettings()\n\n let logoElement: React.ReactNode = null;\n\n const logo = settings?.components?.footer?.logo\n\n if (!settings.components?.footer) {\n return null\n }\n\n if (logo) {\n if (typeof logo === \"boolean\") {\n logoElement = <FwLogo />\n } else {\n logoElement = FwJsonComponent(logo)\n }\n }\n\n return <Footer\n kind={settings.components?.footer?.kind}\n logo={logoElement}\n footnote={FwJsonComponent(settings.components?.footer?.footnote || \"\")}\n socials={settings.components?.footer?.social ? Object.entries(settings.components?.footer?.social).map(([key, value]) => ({\n logo: <IconSocial kind={key as IconSocialProps[\"kind\"]} />,\n href: value\n })) : undefined}\n links={settings.components?.footer?.links}\n />\n }\n\n protected Breadcrumbs() {\n const appearance = useAppearance()\n const hideSidebar = this.useHideSidebar()\n\n if (!appearance?.content?.breadcrumbs) {\n return null\n }\n\n if (hideSidebar) {\n return null\n }\n\n return <FwBreadcrumbs />\n }\n\n protected NavLinks() {\n const hideSidebar = this.useHideSidebar()\n\n if (hideSidebar) {\n return null\n }\n return <FwNavLinks />\n }\n\n protected SubNav() {\n return <FwSubNav />\n }\n}\n\nfunction $BuiltWithXYD() {\n const [colorScheme] = useColorScheme()\n\n const fill = colorScheme === \"dark\" ? \"white\" : \"black\"\n\n return <a href=\"https://xyd.dev\" target=\"_blank\">\n <xyd-built-with>\n <div part=\"text\">Built with</div>\n <div part=\"logo\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={64} height={18} viewBox=\"0 0 64 18\" fill=\"none\">\n <g clipPath=\"url(#clip0_3_18)\">\n <path fillRule=\"evenodd\" clipRule=\"evenodd\"\n d=\"M12.9447 14.7921H10.6636L14.2428 9.73069L10.8861 4.9901H13.1857L14.9846 7.69901C15.0712 7.84158 15.1577 7.99307 15.2443 8.15347C15.2649 8.1918 15.2854 8.23023 15.3057 8.26877C15.3598 8.37166 15.4048 8.46149 15.4407 8.53824C15.4432 8.54364 15.4458 8.54904 15.4483 8.55446C15.4611 8.51802 15.4751 8.482 15.4904 8.44646C15.5265 8.36139 15.5743 8.26372 15.6337 8.15347C15.7203 7.99307 15.8068 7.84158 15.8934 7.69901L17.6923 4.9901H19.9919L16.6352 9.74852L20.1959 14.7921H17.8963L15.9119 11.8515C15.8254 11.7089 15.7388 11.5485 15.6523 11.3703C15.6317 11.328 15.6113 11.2857 15.5909 11.2434C15.551 11.1606 15.516 11.0873 15.4861 11.0237C15.4734 10.9967 15.4608 10.9696 15.4483 10.9426C15.3988 11.0495 15.3277 11.1921 15.235 11.3703C15.1851 11.4666 15.1319 11.5613 15.0755 11.6542C15.0349 11.7212 14.9922 11.7869 14.9476 11.8515L12.9447 14.7921ZM26.2973 18H24.1831L25.6482 14.2218L21.8464 4.9901H24.0533L26.186 10.5149C26.2523 10.6968 26.3186 10.9065 26.3848 11.1441C26.4058 11.2194 26.426 11.2947 26.4457 11.3703C26.5322 11.703 26.6064 11.9762 26.6682 12.1901C26.7125 11.9988 26.7716 11.76 26.8455 11.4737C26.8544 11.4392 26.8633 11.4047 26.8722 11.3703C26.9588 11.0376 27.0453 10.7525 27.1318 10.5149L29.1347 4.9901H31.2675L26.2973 18ZM33.5671 11.2812V8.51881C33.5671 8.5099 33.5671 8.50099 33.5671 8.49208C33.5713 7.51129 33.8055 6.70741 34.2698 6.08044C34.3394 5.98635 34.4144 5.89603 34.4943 5.8099C35.1125 5.14455 35.9347 4.81188 36.9609 4.81188C37.2432 4.80978 37.5248 4.83873 37.8002 4.89814C38.2353 4.98873 38.637 5.18972 38.9638 5.4802C39.4583 5.92574 39.7056 6.53465 39.7056 7.30693L39.279 6.86139H39.7427L39.687 4.5802V1.78218H41.6899V14.7921H39.7056V12.9208H39.279L39.7056 12.4752C39.7079 12.7346 39.6757 12.9931 39.6097 13.2446C39.5048 13.6495 39.2805 14.0166 38.9638 14.302C38.637 14.5925 38.2353 14.7935 37.8002 14.884C37.5248 14.9435 37.2432 14.9724 36.9609 14.9703C36.5745 14.9741 36.19 14.9196 35.8213 14.8087C35.3085 14.6502 34.8499 14.3611 34.4943 13.9723C33.8762 13.3069 33.5671 12.4099 33.5671 11.2812ZM2.07708 16.7525H0L6.52796 0H8.60504L2.07708 16.7525ZM64 9.92673L55.8771 13.7228V11.905L61.4222 9.35644C61.5629 9.29538 61.7054 9.23815 61.8495 9.18481C61.9412 9.15093 62.0337 9.11902 62.1269 9.08911C62.3475 9.01842 62.5134 8.97113 62.6247 8.94725C62.6257 8.94701 62.6267 8.94677 62.6276 8.94653C62.5884 8.93886 62.5495 8.93007 62.5108 8.92016C62.4265 8.89877 62.3263 8.86931 62.2102 8.83176C62.1731 8.81976 62.136 8.80752 62.0991 8.79505C61.8704 8.71782 61.6447 8.62574 61.4222 8.51881L55.8771 5.9703V4.11683L64 7.91287V9.92673ZM39.687 11.1743V8.60792C39.6886 8.39594 39.6672 8.18438 39.6231 7.97667C39.5654 7.71481 39.4687 7.48414 39.3328 7.28465C39.2758 7.20072 39.2112 7.12171 39.14 7.04852C38.8659 6.76894 38.503 6.58461 38.1083 6.52438C37.956 6.49891 37.8016 6.48645 37.6471 6.48713C37.4323 6.48547 37.218 6.50802 37.0087 6.55432C36.6672 6.62705 36.3545 6.79238 36.1078 7.03069C35.9021 7.23549 35.7516 7.48556 35.6696 7.75907C35.6117 7.94145 35.5751 8.14248 35.5598 8.36216C35.5541 8.44397 35.5514 8.52593 35.5514 8.60792V11.1743C35.55 11.3795 35.5691 11.5844 35.6086 11.7861C35.6563 12.0212 35.734 12.2299 35.8419 12.4122C35.9147 12.5359 36.0041 12.65 36.1078 12.7515C36.3578 12.9928 36.6752 13.1594 37.0217 13.2309C37.2269 13.2751 37.4367 13.2966 37.6471 13.2951C37.8632 13.2969 38.0786 13.2714 38.2878 13.2193C38.6141 13.1386 38.9098 12.9701 39.14 12.7337C39.4759 12.389 39.6571 11.9209 39.6837 11.3295C39.686 11.2778 39.6871 11.226 39.687 11.1743Z\"\n fill={fill} stroke={fill} strokeWidth=\"0.944882\" strokeLinecap=\"round\" />\n </g>\n <defs>\n <clipPath id=\"clip0_3_18\">\n <rect width={64} height={18} fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n </div>\n </xyd-built-with>\n </a>\n}\n\nfunction isDefaultContent(meta: Metadata) {\n return meta?.openapi ||\n meta?.graphql ||\n meta.component === \"atlas\" ||\n meta.uniform ||\n meta.layout === \"page\"\n}\n\n","import * as React from \"react\"\n\nimport type { Appearance, Navigation, Theme as ThemeSettings, UserPreferences, WebEditor, WebEditorNavigationItem } from \"@xyd-js/core\"\nimport { ReactContent } from \"@xyd-js/components/content\"\nimport { IconSocial } from \"@xyd-js/components/writer\"\nimport { Surfaces } from \"@xyd-js/framework\"\nimport { useMetadata } from \"@xyd-js/framework/react\"\n\n// ─── Theme Class ──────────────────────────────────────────────\n\n// TODO: still issues with double settings on dev changing\n// TODO: refactor\nexport abstract class Theme {\n constructor() {\n this.settings = globalThis.__xydThemeSettings\n\n this.useHideToc = this.useHideToc.bind(this)\n this.useHideSidebar = this.useHideSidebar.bind(this)\n this.appearanceWebEditor = this.appearanceWebEditor.bind(this)\n this.headerPrepend = this.headerPrepend.bind(this)\n this.mergeUserAppearance = this.mergeUserAppearance.bind(this)\n this.resetWebeditor = this.resetWebeditor.bind(this)\n\n globalThis.__xydThemeSettings.Update = this.update.bind(this) // TODO: in the future better solution cuz we modify original object\n globalThis.__xydThemeSettings.UpdatePreset = this.updateThemePreset.bind(this)\n\n this.theme = globalThis.__xydThemeSettings\n this.surfaces = globalThis.__xydSurfaces\n this.reactContent = globalThis.__xydReactContent\n this.navigation = globalThis.__xydNavigation as Navigation\n this.webeditor = globalThis.__xydWebeditor as WebEditor\n this.userPreferences = globalThis.__xydUserPreferences as UserPreferences\n\n this.userAppearance = JSON.parse(JSON.stringify(this.theme.appearance || {}))\n\n this.appearanceWebEditor()\n }\n\n private webeditor: WebEditor\n private navigation: Navigation\n\n private userAppearance: Appearance\n protected settings: ThemeSettings\n protected theme: CustomTheme<ThemeSettings>\n protected readonly reactContent: ReactContent\n protected readonly surfaces: Surfaces\n private readonly userPreferences: UserPreferences\n\n private get originalTheme(): ThemeSettings {\n return JSON.parse(JSON.stringify(globalThis.__xydSettingsClone?.theme))\n }\n\n private get originalWebeditor(): WebEditor {\n return JSON.parse(JSON.stringify(globalThis.__xydSettingsClone?.webeditor))\n }\n\n private get originalNavigation(): Navigation {\n return JSON.parse(JSON.stringify(globalThis.__xydSettingsClone?.navigation))\n }\n\n public abstract Page({ children }: { children: React.ReactNode }): React.ReactElement\n\n public abstract Layout({ children }: { children: React.ReactNode }): React.ReactElement\n\n public abstract reactContentComponents(): { [component: string]: (props: any) => React.JSX.Element | null }\n\n public abstract reactFileComponents(): { [component: string]: (props: any) => React.JSX.Element | null } | false\n\n protected useHideToc() {\n const meta = useMetadata()\n return meta?.layout === \"wide\" || meta?.layout === \"reader\" || meta?.layout === \"page\"\n }\n\n protected useHideSidebar() {\n const meta = useMetadata()\n return meta?.layout === \"page\" || meta?.layout === \"reader\"\n }\n\n private headerPrepend(searchItem: any, float: string) {\n const header = this.webeditor.header || []\n const insertIndex = header.findIndex(item => item.float === float)\n return insertIndex === -1\n ? [...header, searchItem]\n : [...header.slice(0, insertIndex), searchItem, ...header.slice(insertIndex)]\n }\n\n private headerAppend(searchItem: any, float: string = \"\") {\n const header = this.webeditor.header || []\n const insertIndex = header.findIndex(item => item.float === float)\n return insertIndex === -1\n ? [...header, searchItem]\n : [...header.slice(0, insertIndex + 1), searchItem, ...header.slice(insertIndex + 1)]\n }\n\n private update(patch: DeepPartial<ThemeSettings>) {\n deepMerge(this.theme, patch)\n this.appearanceWebEditor()\n }\n\n private updateThemePreset(patch: string[]) {\n this.update({\n appearance: {\n presets: [\n ...(this.settings.appearance?.presets || []),\n ...(patch || [])\n ]\n }\n })\n }\n\n private appearanceWebEditor() {\n if (!this.theme.appearance) {\n return\n }\n\n this.resetWebeditor()\n this.resetNavigation()\n\n const searchAppearance = this.theme.appearance?.search?.sidebar || this.theme.appearance?.search?.middle\n if (searchAppearance) {\n const hasSearch = this.webeditor.header?.find(item => item.component === \"Search\")\n\n if (hasSearch) {\n console.warn(\"Search already exists in webeditor.header\")\n return\n }\n\n if (this.theme.appearance?.search?.sidebar) {\n const search: WebEditorNavigationItem = {\n component: \"Search\",\n mobile: this.theme.appearance?.search?.sidebar === \"mobile\" || undefined,\n desktop: this.theme.appearance?.search?.sidebar === \"desktop\" || undefined\n }\n if (!this.webeditor.sidebarTop) {\n this.webeditor.sidebarTop = []\n }\n\n this.webeditor.sidebarTop?.unshift({\n ...search,\n })\n }\n\n if (this.theme.appearance?.search?.middle) {\n const search: WebEditorNavigationItem = {\n component: \"Search\",\n mobile: this.theme.appearance?.search?.middle === \"mobile\" || undefined,\n desktop: this.theme.appearance?.search?.middle === \"desktop\" || undefined\n }\n const searchItem = {\n ...search,\n float: \"center\" as const\n }\n\n this.webeditor.header = this.headerPrepend(searchItem, \"center\")\n }\n }\n\n if (\n this.theme.appearance?.sidebar?.scrollbarColor &&\n !this.theme.appearance?.sidebar?.scrollbar\n ) {\n this.theme.appearance.sidebar.scrollbar = \"secondary\"\n }\n\n if (this.theme.appearance?.logo?.sidebar) {\n const logo: WebEditorNavigationItem = {\n component: \"Logo\",\n mobile: this.theme.appearance?.logo?.sidebar === \"mobile\" || undefined,\n desktop: this.theme.appearance?.logo?.sidebar === \"desktop\" || undefined\n }\n if (!this.webeditor.sidebarTop) {\n this.webeditor.sidebarTop = []\n }\n\n // this.webeditor.sidebarTop = [\n // logo,\n // ...(this.originalWebeditor.sidebarTop || []),\n // ]\n\n this.webeditor.sidebarTop?.unshift(logo)\n }\n\n if (\n this.theme.appearance?.tabs?.surface === \"center\" &&\n this.navigation?.tabs?.length\n ) {\n this.insertCenterHeaderTabs()\n }\n\n if (\n this.navigation?.tabs?.length &&\n this.navigation?.segments?.length && // cuz segments defaults are inside subnav\n this.theme.appearance?.tabs?.surface !== \"center\") {\n\n this.navigation.segments = this.navigation.segments.map(segment => {\n if (segment.appearance !== \"sidebarDropdown\") {\n segment.appearance = \"sidebarDropdown\"\n }\n return segment\n })\n }\n\n if (this.navigation?.anchors?.header?.length) {\n this.navigation?.anchors?.header.forEach(item => {\n const button = {\n ...item,\n component: \"Button\",\n props: {},\n float: \"right\" as const,\n desktop: true,\n }\n\n if (\"button\" in item) {\n this.webeditor.header = this.headerAppend({\n ...button,\n props: {\n kind: item.button,\n children: item.title,\n size: this.theme.appearance?.header?.buttonSize || \"md\"\n },\n })\n\n return\n }\n\n if (\"social\" in item) {\n this.webeditor.header = this.headerAppend({\n ...button,\n icon: <IconSocial kind={item.social as any} />,\n props: {\n theme: \"ghost\",\n icon: <IconSocial kind={item.social as any} />,\n },\n })\n\n return\n }\n\n if (item.icon) {\n this.webeditor.header = this.headerAppend({\n ...button,\n props: {\n theme: \"ghost\",\n icon: item.icon,\n },\n })\n\n return\n }\n\n this.webeditor.header = this.headerAppend({\n ...item,\n float: \"right\" as const,\n desktop: true,\n })\n })\n }\n\n // TODO: in the future it should be in theme level\n if (this.theme.name === \"gusto\") {\n if (this.navigation?.tabs?.length) {\n this.navigation.sidebarDropdown = this.navigation.tabs\n\n // this.navigation.tabs.map(tab => {\n // this.webeditor.sidebarTop = this.headerAppend({\n // ...tab,\n // })\n // })\n }\n }\n }\n\n private mergeUserAppearance() {\n const update: DeepPartial<ThemeSettings> = {\n appearance: this.userAppearance\n }\n\n if (this.originalTheme.coder) {\n update.coder = this.originalTheme.coder\n }\n\n this.update(update)\n }\n\n private resetWebeditor() {\n for (const key in this.webeditor) {\n this.webeditor[key] = this.originalWebeditor[key] || []\n }\n }\n\n private resetNavigation() {\n for (const key in this.navigation) {\n this.navigation[key] = this.originalNavigation[key] || []\n }\n }\n\n private insertCenterHeaderTabs() {\n const tabsWithFloat = this.navigation?.tabs?.map(item => ({\n ...item,\n float: \"center\" as const\n })) ?? []\n\n const searchIndex = this.webeditor.header?.findIndex(item => item.component === \"Search\") ?? -1\n const currentHeader = this.webeditor.header ?? []\n\n if (searchIndex !== -1) {\n // Insert tabs after Search component\n this.webeditor.header = [\n ...currentHeader.slice(0, searchIndex + 1),\n ...tabsWithFloat,\n ...currentHeader.slice(searchIndex + 1)\n ]\n } else {\n // If no Search component, insert at the beginning\n this.webeditor.header = [\n ...tabsWithFloat,\n ...currentHeader\n ]\n }\n }\n}\n\n// ─── DeepPartial Type ─────────────────────────────────────────\n\ntype DeepPartial<T> = {\n [P in keyof T]?: T[P] extends object\n ? T[P] extends Function\n ? T[P]\n : T[P] extends Array<infer U>\n ? Array<DeepPartial<U>>\n : DeepPartial<T[P]>\n : T[P]\n}\n\n// ─── CustomTheme Type ─────────────────────────────────────────\n\ntype CustomTheme<T> = T & {\n Update: (value: DeepPartial<T>) => void\n UpdatePreset: (value: string[]) => void\n}\n\n// ─── Deep Merge Helper ────────────────────────────────────────\n\nfunction deepMerge<T>(target: T, source: DeepPartial<T>): T {\n for (const key in source) {\n const sourceVal = source[key]\n const targetVal = target[key]\n\n if (\n sourceVal &&\n typeof sourceVal === \"object\" &&\n !Array.isArray(sourceVal) &&\n typeof targetVal === \"object\" &&\n targetVal !== null\n ) {\n target[key] = deepMerge(targetVal, sourceVal)\n } else if (sourceVal !== undefined) {\n target[key] = sourceVal as any\n }\n }\n\n return target\n}","import fs from 'fs';\nimport path from 'path';\n\n/**\n * Creates a Rollup plugin to copy presets directory from src to dist\n * @param options - Plugin options\n * @param options.srcDir - Source directory (default: 'src/presets')\n * @param options.distDir - Destination directory (default: 'dist/presets')\n * @param options.packageRoot - Package root directory (default: process.cwd())\n * @returns Rollup plugin\n */\nexport function copyPresetsPlugin(options: {\n srcDir?: string;\n distDir?: string;\n packageRoot?: string;\n} = {}) {\n const {\n srcDir = 'src/presets',\n distDir = 'dist/presets',\n packageRoot = process.cwd()\n } = options;\n\n return {\n name: 'copy-presets',\n writeBundle() {\n const srcPresetsPath = path.join(packageRoot, srcDir);\n const distPresetsPath = path.join(packageRoot, distDir);\n \n try {\n // Check if src/presets exists\n if (!fs.existsSync(srcPresetsPath)) {\n console.log(`${srcDir} directory does not exist, skipping copy`);\n return;\n }\n \n // Copy presets directory recursively\n function copyDir(src: string, dest: string) {\n if (!fs.existsSync(dest)) {\n fs.mkdirSync(dest, { recursive: true });\n }\n \n const items = fs.readdirSync(src);\n for (const item of items) {\n const srcPath = path.join(src, item);\n const destPath = path.join(dest, item);\n \n const stat = fs.statSync(srcPath);\n if (stat.isDirectory()) {\n copyDir(srcPath, destPath);\n } else {\n fs.copyFileSync(srcPath, destPath);\n }\n }\n }\n \n copyDir(srcPresetsPath, distPresetsPath);\n console.log(`✅ Successfully copied ${srcDir} to ${distDir}`);\n } catch (error) {\n console.error(`❌ Error copying presets:`, error);\n }\n }\n };\n}\n\n/**\n * Creates a tsup plugin to copy presets directory\n * @param options - Plugin options\n * @param options.srcDir - Source directory (default: 'src/presets')\n * @param options.distDir - Destination directory (default: 'dist/presets')\n * @param options.packageRoot - Package root directory (default: process.cwd())\n * @returns tsup plugin function\n */\nexport function tsupCopyPresetsPlugin(options: {\n srcDir?: string;\n distDir?: string;\n packageRoot?: string;\n} = {}) {\n const {\n srcDir = 'src/presets',\n distDir = 'dist/presets',\n packageRoot = process.cwd()\n } = options;\n\n return () => ({\n name: 'copy-presets',\n closeBundle() {\n const srcPresetsPath = path.join(packageRoot, srcDir);\n const distPresetsPath = path.join(packageRoot, distDir);\n \n try {\n // Check if src/presets exists\n if (!fs.existsSync(srcPresetsPath)) {\n console.log(`${srcDir} directory does not exist, skipping copy`);\n return;\n }\n \n // Copy presets directory recursively\n function copyDir(src: string, dest: string) {\n if (!fs.existsSync(dest)) {\n fs.mkdirSync(dest, { recursive: true });\n }\n \n const items = fs.readdirSync(src);\n for (const item of items) {\n const srcPath = path.join(src, item);\n const destPath = path.join(dest, item);\n \n const stat = fs.statSync(srcPath);\n if (stat.isDirectory()) {\n copyDir(srcPath, destPath);\n } else {\n fs.copyFileSync(srcPath, destPath);\n }\n }\n }\n \n copyDir(srcPresetsPath, distPresetsPath);\n console.log(`✅ Successfully copied ${srcDir} to ${distDir}`);\n } catch (error) {\n console.error(`❌ Error copying presets:`, error);\n }\n }\n });\n} "],"mappings":"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","names":["React","IconSocial","useMetadata","_a","_b","useMetadata","IconSocial"]}
package/dist/reset.css ADDED
@@ -0,0 +1,56 @@
1
+ /*TODO: in the future not needed cuz every component would have have default styles itself?*/
2
+
3
+ @layer reset {
4
+ body {
5
+ margin: 0;
6
+ }
7
+
8
+ ol, ul, menu {
9
+ list-style: none;
10
+ margin: 0;
11
+ padding: 0;
12
+ }
13
+
14
+ button, input:where([type=button]), input:where([type=reset]), input:where([type=submit]) {
15
+ -webkit-appearance: button;
16
+ background-color: transparent;
17
+ background-image: none;
18
+ }
19
+
20
+ button, [role=button] {
21
+ cursor: pointer;
22
+ }
23
+
24
+ button, select {
25
+ text-transform: none;
26
+ }
27
+
28
+ button, input, optgroup, select, textarea {
29
+ font-family: inherit;
30
+ font-feature-settings: inherit;
31
+ font-variation-settings: inherit;
32
+ font-size: 100%;
33
+ font-weight: inherit;
34
+ line-height: inherit;
35
+ letter-spacing: inherit;
36
+ color: inherit;
37
+ margin: 0;
38
+ padding: 0;
39
+ }
40
+
41
+ a {
42
+ color: inherit;
43
+ text-decoration: inherit;
44
+ }
45
+
46
+ *, :before, :after {
47
+ box-sizing: border-box;
48
+ border-width: 0;
49
+ border-style: solid;
50
+ }
51
+
52
+ p {
53
+ padding: 0;
54
+ margin: 0;
55
+ }
56
+ }
@@ -0,0 +1,28 @@
1
+ import * as rollup from 'rollup';
2
+
3
+ declare function export_default(importPath: string): ({
4
+ input: {
5
+ index: string;
6
+ };
7
+ output: {
8
+ dir: string;
9
+ format: string;
10
+ sourcemap: boolean;
11
+ entryFileNames: string;
12
+ }[];
13
+ plugins: (rollup.Plugin<any> | {
14
+ name: string;
15
+ writeBundle(): void;
16
+ })[];
17
+ external: string[];
18
+ } | {
19
+ input: string;
20
+ output: {
21
+ file: string;
22
+ format: string;
23
+ };
24
+ plugins: rollup.Plugin<any>[];
25
+ external: (string | RegExp)[];
26
+ })[];
27
+
28
+ export { export_default as default };
package/dist/rollup.js ADDED
@@ -0,0 +1,139 @@
1
+ // src/rollup.ts
2
+ import { createRequire } from "module";
3
+ import resolve from "@rollup/plugin-node-resolve";
4
+ import commonjs from "@rollup/plugin-commonjs";
5
+ import typescript from "@rollup/plugin-typescript";
6
+ import dts from "rollup-plugin-dts";
7
+ import postcss from "rollup-plugin-postcss";
8
+ import postcssImport from "postcss-import";
9
+ import postcssMixins from "postcss-mixins";
10
+ import wyw from "@wyw-in-js/rollup";
11
+
12
+ // src/copyPresetsPlugin.ts
13
+ import fs from "fs";
14
+ import path from "path";
15
+ function copyPresetsPlugin(options = {}) {
16
+ const {
17
+ srcDir = "src/presets",
18
+ distDir = "dist/presets",
19
+ packageRoot = process.cwd()
20
+ } = options;
21
+ return {
22
+ name: "copy-presets",
23
+ writeBundle() {
24
+ const srcPresetsPath = path.join(packageRoot, srcDir);
25
+ const distPresetsPath = path.join(packageRoot, distDir);
26
+ try {
27
+ let copyDir = function(src, dest) {
28
+ if (!fs.existsSync(dest)) {
29
+ fs.mkdirSync(dest, { recursive: true });
30
+ }
31
+ const items = fs.readdirSync(src);
32
+ for (const item of items) {
33
+ const srcPath = path.join(src, item);
34
+ const destPath = path.join(dest, item);
35
+ const stat = fs.statSync(srcPath);
36
+ if (stat.isDirectory()) {
37
+ copyDir(srcPath, destPath);
38
+ } else {
39
+ fs.copyFileSync(srcPath, destPath);
40
+ }
41
+ }
42
+ };
43
+ if (!fs.existsSync(srcPresetsPath)) {
44
+ console.log(`${srcDir} directory does not exist, skipping copy`);
45
+ return;
46
+ }
47
+ copyDir(srcPresetsPath, distPresetsPath);
48
+ console.log(`\u2705 Successfully copied ${srcDir} to ${distDir}`);
49
+ } catch (error) {
50
+ console.error(`\u274C Error copying presets:`, error);
51
+ }
52
+ }
53
+ };
54
+ }
55
+
56
+ // src/rollup.ts
57
+ function rollup_default(importPath) {
58
+ const require2 = createRequire(importPath);
59
+ const {
60
+ dependencies,
61
+ peerDependencies,
62
+ devDependencies
63
+ } = require2("./package.json");
64
+ const external = [
65
+ ...Object.keys(dependencies),
66
+ ...Object.keys(peerDependencies),
67
+ ...Object.keys(devDependencies),
68
+ "@xyd-js/framework/react",
69
+ "@xyd-js/components/brand",
70
+ "@xyd-js/components/coder",
71
+ "@xyd-js/components/content",
72
+ "@xyd-js/components/layouts",
73
+ "@xyd-js/components/pages",
74
+ "@xyd-js/components/views"
75
+ ];
76
+ return [
77
+ {
78
+ input: {
79
+ index: "./src/index.ts"
80
+ },
81
+ output: [
82
+ {
83
+ dir: "dist",
84
+ format: "esm",
85
+ sourcemap: true,
86
+ entryFileNames: "[name].js"
87
+ }
88
+ ],
89
+ plugins: [
90
+ wyw({
91
+ include: ["**/*.{ts,tsx}"],
92
+ babelOptions: {
93
+ presets: [
94
+ "@babel/preset-typescript",
95
+ "@babel/preset-react"
96
+ ]
97
+ }
98
+ }),
99
+ resolve(),
100
+ commonjs(),
101
+ typescript({
102
+ tsconfig: "./tsconfig.json"
103
+ }),
104
+ postcss({
105
+ extensions: [".css"],
106
+ plugins: [postcssImport(), postcssMixins()],
107
+ extract: true,
108
+ // Extract CSS into a separate file
109
+ minimize: true
110
+ // Minify the CSS
111
+ }),
112
+ copyPresetsPlugin()
113
+ ],
114
+ external
115
+ },
116
+ {
117
+ input: "./src/index.ts",
118
+ output: {
119
+ file: "dist/index.d.ts",
120
+ format: "es"
121
+ },
122
+ plugins: [
123
+ dts({
124
+ respectExternal: true
125
+ // Ignore unresolved imports
126
+ })
127
+ ],
128
+ external: [
129
+ ...external,
130
+ /\.css$/
131
+ // Mark CSS imports as external
132
+ ]
133
+ }
134
+ ];
135
+ }
136
+ export {
137
+ rollup_default as default
138
+ };
139
+ //# sourceMappingURL=rollup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/rollup.ts","../src/copyPresetsPlugin.ts"],"sourcesContent":["import {createRequire} from \"module\";\n\nimport resolve from '@rollup/plugin-node-resolve';\nimport commonjs from '@rollup/plugin-commonjs';\nimport typescript from '@rollup/plugin-typescript';\nimport dts from 'rollup-plugin-dts';\nimport postcss from 'rollup-plugin-postcss';\nimport postcssImport from 'postcss-import';\nimport postcssMixins from 'postcss-mixins';\nimport wyw from '@wyw-in-js/rollup';\n\nimport {copyPresetsPlugin} from './copyPresetsPlugin';\n\nexport default function (importPath: string) {\n const require = createRequire(importPath);\n\n const {\n dependencies,\n peerDependencies,\n devDependencies\n } = require('./package.json');\n\n const external = [\n ...Object.keys(dependencies),\n ...Object.keys(peerDependencies),\n ...Object.keys(devDependencies),\n \"@xyd-js/framework/react\",\n \"@xyd-js/components/brand\",\n \"@xyd-js/components/coder\",\n \"@xyd-js/components/content\",\n \"@xyd-js/components/layouts\",\n \"@xyd-js/components/pages\",\n \"@xyd-js/components/views\",\n ];\n\n return [\n {\n input: {\n index: './src/index.ts'\n },\n output: [\n {\n dir: 'dist',\n format: 'esm',\n sourcemap: true,\n entryFileNames: '[name].js'\n }\n ],\n plugins: [\n wyw({\n include: ['**/*.{ts,tsx}'],\n babelOptions: {\n presets: [\n '@babel/preset-typescript',\n '@babel/preset-react'\n ],\n },\n }),\n resolve(),\n commonjs(),\n typescript({\n tsconfig: './tsconfig.json',\n }),\n postcss({\n extensions: ['.css'],\n plugins: [postcssImport(), postcssMixins()],\n extract: true, // Extract CSS into a separate file\n minimize: true, // Minify the CSS\n }),\n copyPresetsPlugin(),\n ],\n external\n },\n {\n input: './src/index.ts',\n output: {\n file: 'dist/index.d.ts',\n format: 'es',\n },\n plugins: [\n dts({\n respectExternal: true, // Ignore unresolved imports\n }),\n ],\n external: [\n ...external,\n /\\.css$/ // Mark CSS imports as external\n ],\n },\n ];\n}","import fs from 'fs';\nimport path from 'path';\n\n/**\n * Creates a Rollup plugin to copy presets directory from src to dist\n * @param options - Plugin options\n * @param options.srcDir - Source directory (default: 'src/presets')\n * @param options.distDir - Destination directory (default: 'dist/presets')\n * @param options.packageRoot - Package root directory (default: process.cwd())\n * @returns Rollup plugin\n */\nexport function copyPresetsPlugin(options: {\n srcDir?: string;\n distDir?: string;\n packageRoot?: string;\n} = {}) {\n const {\n srcDir = 'src/presets',\n distDir = 'dist/presets',\n packageRoot = process.cwd()\n } = options;\n\n return {\n name: 'copy-presets',\n writeBundle() {\n const srcPresetsPath = path.join(packageRoot, srcDir);\n const distPresetsPath = path.join(packageRoot, distDir);\n \n try {\n // Check if src/presets exists\n if (!fs.existsSync(srcPresetsPath)) {\n console.log(`${srcDir} directory does not exist, skipping copy`);\n return;\n }\n \n // Copy presets directory recursively\n function copyDir(src: string, dest: string) {\n if (!fs.existsSync(dest)) {\n fs.mkdirSync(dest, { recursive: true });\n }\n \n const items = fs.readdirSync(src);\n for (const item of items) {\n const srcPath = path.join(src, item);\n const destPath = path.join(dest, item);\n \n const stat = fs.statSync(srcPath);\n if (stat.isDirectory()) {\n copyDir(srcPath, destPath);\n } else {\n fs.copyFileSync(srcPath, destPath);\n }\n }\n }\n \n copyDir(srcPresetsPath, distPresetsPath);\n console.log(`✅ Successfully copied ${srcDir} to ${distDir}`);\n } catch (error) {\n console.error(`❌ Error copying presets:`, error);\n }\n }\n };\n}\n\n/**\n * Creates a tsup plugin to copy presets directory\n * @param options - Plugin options\n * @param options.srcDir - Source directory (default: 'src/presets')\n * @param options.distDir - Destination directory (default: 'dist/presets')\n * @param options.packageRoot - Package root directory (default: process.cwd())\n * @returns tsup plugin function\n */\nexport function tsupCopyPresetsPlugin(options: {\n srcDir?: string;\n distDir?: string;\n packageRoot?: string;\n} = {}) {\n const {\n srcDir = 'src/presets',\n distDir = 'dist/presets',\n packageRoot = process.cwd()\n } = options;\n\n return () => ({\n name: 'copy-presets',\n closeBundle() {\n const srcPresetsPath = path.join(packageRoot, srcDir);\n const distPresetsPath = path.join(packageRoot, distDir);\n \n try {\n // Check if src/presets exists\n if (!fs.existsSync(srcPresetsPath)) {\n console.log(`${srcDir} directory does not exist, skipping copy`);\n return;\n }\n \n // Copy presets directory recursively\n function copyDir(src: string, dest: string) {\n if (!fs.existsSync(dest)) {\n fs.mkdirSync(dest, { recursive: true });\n }\n \n const items = fs.readdirSync(src);\n for (const item of items) {\n const srcPath = path.join(src, item);\n const destPath = path.join(dest, item);\n \n const stat = fs.statSync(srcPath);\n if (stat.isDirectory()) {\n copyDir(srcPath, destPath);\n } else {\n fs.copyFileSync(srcPath, destPath);\n }\n }\n }\n \n copyDir(srcPresetsPath, distPresetsPath);\n console.log(`✅ Successfully copied ${srcDir} to ${distDir}`);\n } catch (error) {\n console.error(`❌ Error copying presets:`, error);\n }\n }\n });\n} "],"mappings":"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","names":["require"]}
package/package.json CHANGED
@@ -1,11 +1,60 @@
1
1
  {
2
2
  "name": "@xyd-js/themes",
3
- "version": "0.0.0",
4
- "description": "* gusto - general purpose docs theme",
5
- "main": "index.js",
6
- "author": "",
7
- "license": "ISC",
3
+ "version": "0.1.1-build.161",
4
+ "description": "xyd themes API",
5
+ "main": "dist/index.js",
6
+ "type": "module",
7
+ "exports": {
8
+ "./package.json": "./package.json",
9
+ "./reset.css": "./dist/reset.css",
10
+ "./index.css": "./dist/index.css",
11
+ "./decorators/*": "./dist/decorators/*",
12
+ ".": {
13
+ "import": "./dist/index.js"
14
+ },
15
+ "./rollup": "./dist/rollup.js"
16
+ },
17
+ "dependencies": {
18
+ "react-github-btn": "^1.4.0"
19
+ },
20
+ "peerDependencies": {
21
+ "openux-js": "0.0.0-pre.1",
22
+ "react": "^19.1.0",
23
+ "react-dom": "^19.1.0",
24
+ "@xyd-js/components": "0.1.0-build.169",
25
+ "@xyd-js/core": "0.1.0-build.171",
26
+ "@xyd-js/atlas": "0.1.0-build.174",
27
+ "@xyd-js/ui": "0.1.0-build.174",
28
+ "@xyd-js/analytics": "0.1.0-build.158",
29
+ "@xyd-js/framework": "0.1.0-build.190"
30
+ },
31
+ "devDependencies": {
32
+ "@types/node": "^20.0.0",
33
+ "@babel/preset-env": "^7.26.0",
34
+ "@babel/preset-flow": "^7.25.9",
35
+ "@babel/preset-react": "^7.26.0",
36
+ "@babel/preset-typescript": "^7.26.0",
37
+ "@rollup/plugin-alias": "^5.1.1",
38
+ "@rollup/plugin-babel": "^6.0.4",
39
+ "@rollup/plugin-commonjs": "^28.0.1",
40
+ "@rollup/plugin-node-resolve": "^15.3.0",
41
+ "@rollup/plugin-typescript": "^12.1.1",
42
+ "@wyw-in-js/rollup": "^0.5.5",
43
+ "@wyw-in-js/vite": "^0.5.5",
44
+ "typescript": "5.6.2",
45
+ "autoprefixer": "^10.4.20",
46
+ "postcss": "^8.4.47",
47
+ "postcss-import": "^16.1.0",
48
+ "postcss-mixins": "^12.0.0",
49
+ "rimraf": "^3.0.2",
50
+ "rollup": "^4.27.4",
51
+ "rollup-plugin-css-only": "^4.5.2",
52
+ "rollup-plugin-dts": "^6.1.1",
53
+ "rollup-plugin-postcss": "^4.0.2",
54
+ "rollup-plugin-terser": "^7.0.2",
55
+ "tsup": "^8.3.0"
56
+ },
8
57
  "scripts": {
9
- "test": "echo \"Error: no test specified\" && exit 1"
58
+ "build": "tsup && node scripts/build-css.js"
10
59
  }
11
60
  }
@@ -0,0 +1,7 @@
1
+ module.exports = {
2
+ plugins: {
3
+ 'postcss-import': {
4
+ path: ['node_modules', 'src']
5
+ }
6
+ }
7
+ }
@@ -0,0 +1,73 @@
1
+ import fs from 'fs/promises';
2
+ import path from 'path';
3
+ import { fileURLToPath } from 'url';
4
+
5
+ import postcss from 'postcss';
6
+ import postcssImport from 'postcss-import';
7
+
8
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
9
+ const workspaceRoot = path.join(__dirname, '../../..');
10
+
11
+ async function processCSS(inputFile, outputFile) {
12
+ const css = await fs.readFile(inputFile, 'utf8');
13
+ const result = await postcss([
14
+ postcssImport({
15
+ path: [
16
+ path.join(__dirname, '../src'),
17
+ path.join(workspaceRoot, 'packages'),
18
+ workspaceRoot
19
+ ],
20
+ filter: (url) => {
21
+ // Handle package imports
22
+ if (url.startsWith('@xyd-js/')) {
23
+ const [scope, packageName, ...rest] = url.split('/');
24
+ // Look in dist directory for the CSS files
25
+ return path.join(workspaceRoot, 'packages', packageName, 'dist', ...rest);
26
+ }
27
+ return url;
28
+ }
29
+ })
30
+ ]).process(css, {
31
+ from: inputFile,
32
+ to: outputFile,
33
+ config: path.join(__dirname, '../postcss.config.cjs')
34
+ });
35
+
36
+ await fs.writeFile(outputFile, result.css);
37
+ }
38
+
39
+ async function main() {
40
+ const distDir = path.join(__dirname, '../dist');
41
+ const decoratorsDir = path.join(distDir, 'decorators');
42
+ const srcDecoratorsDir = path.join(__dirname, '../src/styles/decorators');
43
+
44
+ await fs.mkdir(distDir, { recursive: true });
45
+ await fs.mkdir(decoratorsDir, { recursive: true });
46
+
47
+ await processCSS(
48
+ path.join(__dirname, '../src/styles/index.css'),
49
+ path.join(distDir, 'index.css')
50
+ );
51
+
52
+ await processCSS(
53
+ path.join(__dirname, '../src/styles/reset.css'),
54
+ path.join(distDir, 'reset.css')
55
+ );
56
+
57
+ // Process all decorators
58
+ try {
59
+ const decoratorFiles = await fs.readdir(srcDecoratorsDir);
60
+ for (const file of decoratorFiles) {
61
+ if (file.endsWith('.css')) {
62
+ await processCSS(
63
+ path.join(srcDecoratorsDir, file),
64
+ path.join(decoratorsDir, file)
65
+ );
66
+ }
67
+ }
68
+ } catch (error) {
69
+ console.warn('No decorators directory found or no CSS files in decorators:', error.message);
70
+ }
71
+ }
72
+
73
+ main().catch(console.error);