@goldlabelapps/theme 3.2.8 → 3.5.6

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 (88) hide show
  1. package/README.md +2 -2
  2. package/dist/components/RenderMarkdown.js +7 -2
  3. package/dist/components/download/DownloadBanner.js +1 -8
  4. package/dist/components/footer/Footer.js +6 -3
  5. package/dist/components/footer/FooterWrapper.d.ts +7 -0
  6. package/dist/components/footer/FooterWrapper.js +15 -0
  7. package/dist/components/footer/NXContactColumn.d.ts +13 -0
  8. package/dist/components/footer/NXContactColumn.js +32 -0
  9. package/dist/components/footer/NXLiveApps.d.ts +22 -0
  10. package/dist/components/footer/NXLiveApps.js +87 -0
  11. package/dist/components/footer/NXSocialColumn.d.ts +14 -0
  12. package/dist/components/footer/NXSocialColumn.js +17 -0
  13. package/dist/components/footer/NXTagsColumn.d.ts +14 -0
  14. package/dist/components/footer/NXTagsColumn.js +31 -0
  15. package/dist/components/footer/index.d.ts +6 -0
  16. package/dist/components/footer/index.js +6 -0
  17. package/dist/components/hero/HeroSection.js +1 -1
  18. package/dist/components/hero/VideoModal.js +1 -1
  19. package/dist/components/index.d.ts +11 -3
  20. package/dist/components/index.js +11 -3
  21. package/dist/components/layouts/GuideBreadcrumbs.d.ts +14 -0
  22. package/dist/components/layouts/GuideBreadcrumbs.js +15 -0
  23. package/dist/components/{guide → layouts}/MarkdownContent.js +1 -1
  24. package/dist/components/layouts/Standard.d.ts +10 -0
  25. package/dist/components/layouts/Standard.js +7 -0
  26. package/dist/components/navigation/DropdownMenu.js +1 -1
  27. package/dist/components/navigation/Header.js +3 -6
  28. package/dist/components/navigation/LayoutActions.d.ts +7 -0
  29. package/dist/components/navigation/LayoutActions.js +12 -0
  30. package/dist/components/navigation/LogoContextMenu.js +1 -1
  31. package/dist/components/navigation/MarkdownMenu.d.ts +9 -0
  32. package/dist/components/navigation/MarkdownMenu.js +12 -0
  33. package/dist/components/navigation/MobileMenu.js +1 -1
  34. package/dist/components/navigation/Waiting.d.ts +10 -0
  35. package/dist/components/navigation/Waiting.js +45 -0
  36. package/dist/components/search/HeroSearchBar.d.ts +16 -0
  37. package/dist/components/search/HeroSearchBar.js +38 -0
  38. package/dist/components/search/SearchDialog.d.ts +11 -0
  39. package/dist/components/search/SearchDialog.js +69 -0
  40. package/dist/components/search/SearchIconButton.d.ts +10 -0
  41. package/dist/components/search/SearchIconButton.js +10 -0
  42. package/dist/components/search/SearchResultsList.d.ts +13 -0
  43. package/dist/components/search/SearchResultsList.js +18 -0
  44. package/dist/components/search/index.d.ts +5 -0
  45. package/dist/components/search/index.js +5 -0
  46. package/dist/components/search/useSearch.d.ts +54 -0
  47. package/dist/components/search/useSearch.js +106 -0
  48. package/dist/components/shortcodes/PageLinkShortcode.d.ts +15 -0
  49. package/dist/components/shortcodes/PageLinkShortcode.js +51 -0
  50. package/dist/components/showcase/BlogSection.js +2 -2
  51. package/dist/components/showcase/FeatureExplorer.js +2 -2
  52. package/dist/components/showcase/FeaturedCard.d.ts +13 -0
  53. package/dist/components/showcase/FeaturedCard.js +6 -0
  54. package/dist/components/showcase/SolutionsSection.js +2 -2
  55. package/dist/components/showcase/StatementSection.js +1 -1
  56. package/dist/components/showcase/VideoSection.js +2 -2
  57. package/dist/components/ui/Bash.d.ts +16 -0
  58. package/dist/components/ui/Bash.js +30 -0
  59. package/dist/components/ui/Button.js +1 -1
  60. package/dist/components/ui/ThemeToggle.d.ts +5 -1
  61. package/dist/components/ui/ThemeToggle.js +32 -2
  62. package/dist/components/video/VideoLayout.js +2 -2
  63. package/dist/context/ThemeContext.d.ts +4 -0
  64. package/dist/context/ThemeContext.js +22 -17
  65. package/dist/data/og-images.json +205 -151
  66. package/dist/design-system/components/DesignSystemProvider/DesignSystemProvider.js +3 -8
  67. package/dist/design-system/components/buttons/Button/Button.js +6 -3
  68. package/dist/design-system/components/buttons/IconButton/IconButton.js +6 -3
  69. package/dist/design-system/components/feedback/Alert/Alert.js +3 -2
  70. package/dist/design-system/components/feedback/Card/Card.js +5 -3
  71. package/dist/design-system/components/headings/Heading/Heading.js +2 -1
  72. package/dist/design-system/components/images/FeaturedImage/FeaturedImage.js +6 -6
  73. package/dist/design-system/components/layout/index.d.ts +1 -0
  74. package/dist/design-system/components/layout/index.js +1 -0
  75. package/dist/design-system/components/navigation/SiteNav/SiteNav.js +1 -1
  76. package/dist/design-system/components/nxStyle.d.ts +0 -21
  77. package/dist/design-system/components/nxStyle.js +0 -14
  78. package/dist/design-system/types.d.ts +1 -0
  79. package/dist/design-system/types.js +1 -0
  80. package/dist/index.d.ts +4 -3
  81. package/dist/index.js +1 -0
  82. package/dist/styles/globals.css +10 -12
  83. package/dist/styles/theme.js +30 -3
  84. package/dist/types/index.d.ts +220 -0
  85. package/package.json +3 -2
  86. package/dist/components/guide/GuideLayout.d.ts +0 -8
  87. package/dist/components/guide/GuideLayout.js +0 -12
  88. /package/dist/components/{guide → layouts}/MarkdownContent.d.ts +0 -0
@@ -3,8 +3,8 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import ErrorOutlineRoundedIcon from '@mui/icons-material/ErrorOutlineRounded';
4
4
  import { Box } from '@mui/material';
5
5
  import { alpha, useTheme as useMuiTheme } from '@mui/material/styles';
6
- import { useState } from 'react';
7
- import { useTheme as useThemeContext } from '../../../../context/ThemeContext';
6
+ import { useContext, useState } from 'react';
7
+ import { ThemeContext } from '../../../../context/ThemeContext';
8
8
  import defaultOgManifest from '../../../../data/og-images.json';
9
9
  function findOgImageItem(manifest, slug) {
10
10
  if (!slug || !manifest?.items)
@@ -24,9 +24,9 @@ function findOgImageItem(manifest, slug) {
24
24
  return undefined;
25
25
  }
26
26
  export default function FeaturedImage({ image, slug = 'nx', alt, width = '100%', height, objectFit: propObjectFit, manifest = defaultOgManifest, borderRadius: propBorderRadius, flushTop = false, }) {
27
- const contextTheme = useThemeContext()?.theme;
27
+ const themeContext = useContext(ThemeContext);
28
28
  const muiTheme = useMuiTheme();
29
- const activeTheme = contextTheme === 'dark' || muiTheme?.palette?.mode === 'dark' ? 'dark' : 'light';
29
+ const activeTheme = themeContext ? themeContext.theme : (muiTheme?.palette?.mode ?? 'dark');
30
30
  let resolvedSrc = image?.src;
31
31
  let resolvedAlt = typeof alt === 'string' ? alt : (typeof image?.alt === 'string' ? image.alt : null);
32
32
  let resolvedImageWidth = image?.width;
@@ -44,7 +44,7 @@ export default function FeaturedImage({ image, slug = 'nx', alt, width = '100%',
44
44
  if (version) {
45
45
  resolvedSrc = version.path;
46
46
  if (resolvedAlt == null) {
47
- resolvedAlt = ogItem.name;
47
+ resolvedAlt = ogItem.name ?? null;
48
48
  }
49
49
  if (resolvedImageWidth == null && version.dimensions?.width) {
50
50
  resolvedImageWidth = version.dimensions.width;
@@ -78,7 +78,7 @@ export default function FeaturedImage({ image, slug = 'nx', alt, width = '100%',
78
78
  ...(resolvedPaddingTop ? { paddingTop: resolvedPaddingTop } : {}),
79
79
  overflow: 'hidden',
80
80
  borderRadius: propBorderRadius ?? defaultRadius,
81
- bgcolor: 'grey.100',
81
+ bgcolor: 'transparent',
82
82
  position: 'relative',
83
83
  }, children: [status === 'error' ? (_jsxs(Box, { "data-testid": "featured-image-error", sx: {
84
84
  position: 'absolute',
@@ -3,5 +3,6 @@ export { default as PageSection } from './PageSection/PageSection';
3
3
  export { default as SectionTitle } from './SectionTitle/SectionTitle';
4
4
  export { default as SiteFooter } from './Footer/Footer';
5
5
  export { default as Header } from './Header/Header';
6
+ export { LayoutActions } from '../../../components/navigation/LayoutActions';
6
7
  export { default as MenuDrawer } from './MenuDrawer/MenuDrawer';
7
8
  export { default as SiteMain } from './Main/Main';
@@ -3,5 +3,6 @@ export { default as PageSection } from './PageSection/PageSection';
3
3
  export { default as SectionTitle } from './SectionTitle/SectionTitle';
4
4
  export { default as SiteFooter } from './Footer/Footer';
5
5
  export { default as Header } from './Header/Header';
6
+ export { LayoutActions } from '../../../components/navigation/LayoutActions';
6
7
  export { default as MenuDrawer } from './MenuDrawer/MenuDrawer';
7
8
  export { default as SiteMain } from './Main/Main';
@@ -78,5 +78,5 @@ export default function SiteNav({ items, navigateTo }) {
78
78
  const pathname = window.location.pathname;
79
79
  setCurrentPath(pathname.endsWith('/') && pathname !== '/' ? pathname.slice(0, -1) : pathname);
80
80
  }, []);
81
- return renderNavItems(items, navigateTo, 0, 'nav', currentPath);
81
+ return renderNavItems(items ?? [], navigateTo, 0, 'nav', currentPath);
82
82
  }
@@ -40,13 +40,6 @@ export declare const nxLightStyle: {
40
40
  color: string;
41
41
  transition: string;
42
42
  };
43
- a: {
44
- color: string;
45
- textDecoration: string;
46
- '&:hover': {
47
- color: string;
48
- };
49
- };
50
43
  code: {
51
44
  backgroundColor: string;
52
45
  color: string;
@@ -103,13 +96,6 @@ export declare const nxDarkStyle: {
103
96
  color: string;
104
97
  transition: string;
105
98
  };
106
- a: {
107
- color: string;
108
- textDecoration: string;
109
- '&:hover': {
110
- color: string;
111
- };
112
- };
113
99
  code: {
114
100
  backgroundColor: string;
115
101
  color: string;
@@ -166,13 +152,6 @@ export declare function getNxStyle(mode: 'light' | 'dark'): {
166
152
  color: string;
167
153
  transition: string;
168
154
  };
169
- a: {
170
- color: string;
171
- textDecoration: string;
172
- '&:hover': {
173
- color: string;
174
- };
175
- };
176
155
  code: {
177
156
  backgroundColor: string;
178
157
  color: string;
@@ -40,13 +40,6 @@ export const nxLightStyle = {
40
40
  color: '#1E1E1E',
41
41
  transition: 'background-color 0.2s ease',
42
42
  },
43
- a: {
44
- color: '#012867',
45
- textDecoration: 'none',
46
- '&:hover': {
47
- color: '#011f52',
48
- },
49
- },
50
43
  code: {
51
44
  backgroundColor: '#F1F5F9',
52
45
  color: '#0F172A',
@@ -103,13 +96,6 @@ export const nxDarkStyle = {
103
96
  color: '#F8FAFC',
104
97
  transition: 'background-color 0.2s ease',
105
98
  },
106
- a: {
107
- color: '#F8FAFC',
108
- textDecoration: 'none',
109
- '&:hover': {
110
- color: '#E2E8F0',
111
- },
112
- },
113
99
  code: {
114
100
  backgroundColor: '#1E293B',
115
101
  color: '#F8FAFC',
@@ -0,0 +1 @@
1
+ export * from '../types';
@@ -0,0 +1 @@
1
+ export * from '../types';
package/dist/index.d.ts CHANGED
@@ -2,6 +2,9 @@ export * from "./types";
2
2
  export * from "./lib/utils";
3
3
  export * from "./context";
4
4
  export * from "./components";
5
+ export type { ButtonProps } from "./components/ui/Button";
6
+ export type { CardProps } from "./components/ui/Card";
7
+ export type { BashProps, BashCommand } from "./components/ui/Bash";
5
8
  export { default as DesignSystemProvider } from "./design-system/components/DesignSystemProvider/DesignSystemProvider";
6
9
  export { default as Heading } from "./design-system/components/headings/Heading/Heading";
7
10
  export { default as Logo } from "./design-system/components/brand/Logo/Logo";
@@ -12,8 +15,6 @@ export { default as ListItemText } from "./design-system/components/lists/ListIt
12
15
  export { default as ListSubheader } from "./design-system/components/lists/ListSubheader/ListSubheader";
13
16
  export { default as Alert } from "./design-system/components/feedback/Alert/Alert";
14
17
  export { default as Field } from "./design-system/components/feedback/Field/Field";
15
- export type { AlertProps } from "./design-system/components/feedback/Alert/types";
16
- export type { FieldProps } from "./design-system/components/feedback/Field/types";
17
18
  export { default as NxButton } from "./design-system/components/buttons/Button/Button";
18
19
  export { Button } from "./components/ui/Button";
19
20
  export { default as IconButton } from "./design-system/components/buttons/IconButton/IconButton";
@@ -25,6 +26,6 @@ export { default as Swatch } from "./design-system/components/surfaces/Swatch/Sw
25
26
  export { default as SwatchGroup } from "./design-system/components/surfaces/SwatchGroup/SwatchGroup";
26
27
  export { default as Icon, ICON_NAMES } from "./design-system/components/icons/Icon/Icon";
27
28
  export { DesktopOnly, MobileOnly, useIsMobile } from "./design-system/components/responsive/Viewport/Viewport";
29
+ export { Waiting, type WaitingProps } from "./components/navigation/Waiting";
28
30
  export { createAppTheme } from "./styles/theme";
29
31
  export type { IconName, IconProps } from "./design-system/components/icons/Icon/Icon";
30
- export type { DesignSystemMode, DesignSystemProviderProps, DesignSystemThemeConfig } from "./design-system/types";
package/dist/index.js CHANGED
@@ -23,4 +23,5 @@ export { default as Swatch } from "./design-system/components/surfaces/Swatch/Sw
23
23
  export { default as SwatchGroup } from "./design-system/components/surfaces/SwatchGroup/SwatchGroup";
24
24
  export { default as Icon, ICON_NAMES } from "./design-system/components/icons/Icon/Icon";
25
25
  export { DesktopOnly, MobileOnly, useIsMobile } from "./design-system/components/responsive/Viewport/Viewport";
26
+ export { Waiting } from "./components/navigation/Waiting";
26
27
  export { createAppTheme } from "./styles/theme";
@@ -24,8 +24,8 @@
24
24
  --background: #0F172A;
25
25
  --background-secondary: #1E293B;
26
26
  --paper: #1E293B;
27
- --primary: #F8FAFC;
28
- --primary-hover: #E2E8F0;
27
+ --primary: #ffffff;
28
+ --primary-hover: #38BDF8;
29
29
  --secondary: #F8FAFC;
30
30
  --foreground: #F8FAFC;
31
31
  --foreground-muted: #CBD5E1;
@@ -85,19 +85,17 @@
85
85
  color: var(--foreground);
86
86
  }
87
87
 
88
- * {
89
- border-color: rgba(15, 23, 42, 0.12);
88
+ h1, h2, h3, h4, h5, h6,
89
+ :where(.dark, .dark *) h1,
90
+ :where(.dark, .dark *) h2,
91
+ :where(.dark, .dark *) h3,
92
+ :where(.dark, .dark *) h4,
93
+ :where(.dark, .dark *) h5,
94
+ :where(.dark, .dark *) h6 {
95
+ font-weight: 400 !important;
90
96
  }
91
97
 
92
- a {
93
- color: var(--primary);
94
- text-decoration: none;
95
- transition: color 0.15s ease;
96
- }
97
98
 
98
- a:hover {
99
- color: var(--primary-hover);
100
- }
101
99
 
102
100
  html {
103
101
  scroll-behavior: smooth;
@@ -1,9 +1,9 @@
1
1
  import { createTheme } from '@mui/material/styles';
2
- export function createAppTheme(mode = 'light', themeConfig) {
2
+ export function createAppTheme(mode = 'dark', themeConfig) {
3
3
  const isDark = mode === 'dark';
4
4
  const resolvedPrimary = themeConfig?.primary ?? (isDark ? '#FFFFFF' : '#5A5A5A');
5
5
  const resolvedSecondary = themeConfig?.secondary ?? (isDark ? '#F5F5F5' : '#7A7A7A');
6
- const palette = {
6
+ const paletteMap = {
7
7
  dark: {
8
8
  primary: resolvedPrimary,
9
9
  secondary: resolvedSecondary,
@@ -76,7 +76,8 @@ export function createAppTheme(mode = 'light', themeConfig) {
76
76
  contrastText: '#FFFFFF',
77
77
  },
78
78
  },
79
- }[mode];
79
+ };
80
+ const palette = paletteMap[mode && mode in paletteMap ? mode : 'light'];
80
81
  const resolvedPalette = {
81
82
  ...palette,
82
83
  background: themeConfig?.background ?? palette.background,
@@ -134,6 +135,32 @@ export function createAppTheme(mode = 'light', themeConfig) {
134
135
  fontSize: '1.5rem',
135
136
  color: resolvedPalette.secondary,
136
137
  },
138
+ h4: {
139
+ fontFamily: 'var(--font-title)',
140
+ fontWeight: 400,
141
+ fontSize: '1.25rem',
142
+ color: resolvedPalette.secondary,
143
+ },
144
+ h5: {
145
+ fontFamily: 'var(--font-title)',
146
+ fontWeight: 400,
147
+ fontSize: '1.1rem',
148
+ color: resolvedPalette.secondary,
149
+ },
150
+ h6: {
151
+ fontFamily: 'var(--font-title)',
152
+ fontWeight: 400,
153
+ fontSize: '1rem',
154
+ color: resolvedPalette.secondary,
155
+ },
156
+ subtitle1: {
157
+ fontFamily: 'var(--font-title)',
158
+ fontWeight: 400,
159
+ },
160
+ subtitle2: {
161
+ fontFamily: 'var(--font-title)',
162
+ fontWeight: 400,
163
+ },
137
164
  button: {
138
165
  textTransform: 'none',
139
166
  fontWeight: 400,
@@ -1,3 +1,4 @@
1
+ import type { TextFieldProps } from '@mui/material';
1
2
  export interface SiteMetadata {
2
3
  title: string;
3
4
  description: string;
@@ -317,3 +318,222 @@ export interface GuideArticle extends GuideMeta {
317
318
  content: string;
318
319
  rawMarkdown: string;
319
320
  }
321
+ export type DesignSystemMode = 'light' | 'dark';
322
+ export interface DesignSystemThemeConfig {
323
+ primary?: string;
324
+ secondary?: string;
325
+ background?: string;
326
+ paper?: string;
327
+ text?: string;
328
+ textSecondary?: string;
329
+ }
330
+ export interface DesignSystemProviderProps {
331
+ children: React.ReactNode;
332
+ mode?: DesignSystemMode;
333
+ themeConfig?: DesignSystemThemeConfig;
334
+ }
335
+ export type ButtonSize = 'sm' | 'md' | 'lg';
336
+ export type ButtonTone = 'primary' | 'neutral' | 'danger';
337
+ export type ButtonVariant = 'solid' | 'outline' | 'ghost' | 'text';
338
+ export interface NxButtonProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'color'> {
339
+ variant?: ButtonVariant;
340
+ tone?: ButtonTone;
341
+ size?: ButtonSize;
342
+ fullWidth?: boolean;
343
+ href?: string;
344
+ startIcon?: React.ReactNode;
345
+ endIcon?: React.ReactNode;
346
+ ariaLabel?: string;
347
+ sx?: unknown;
348
+ }
349
+ export type ButtonProps = NxButtonProps;
350
+ export interface IconButtonProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'color'> {
351
+ icon?: React.ReactNode;
352
+ variant?: ButtonVariant;
353
+ tone?: ButtonTone;
354
+ size?: ButtonSize;
355
+ href?: string;
356
+ ariaLabel?: string;
357
+ color?: string;
358
+ sx?: unknown;
359
+ }
360
+ export interface AlertProps {
361
+ children?: React.ReactNode;
362
+ title?: string;
363
+ severity?: 'info' | 'success' | 'warning' | 'error';
364
+ dismissible?: boolean;
365
+ }
366
+ export interface NxCardProps {
367
+ children?: React.ReactNode;
368
+ padding?: 'sm' | 'md' | 'lg';
369
+ variant?: 'paper' | 'glass' | 'tile' | 'ink';
370
+ hoverLift?: boolean;
371
+ mode?: DesignSystemMode;
372
+ }
373
+ export type CardProps = NxCardProps;
374
+ export interface FieldProps extends Omit<TextFieldProps, 'label' | 'error' | 'helperText'> {
375
+ label?: string;
376
+ error?: string;
377
+ helperText?: string;
378
+ hint?: string;
379
+ }
380
+ export type HeadingTone = 'clay' | 'ink' | 'primary' | 'secondary';
381
+ export type HeadingVariant = 'label' | 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
382
+ export interface HeadingProps extends React.HTMLAttributes<HTMLHeadingElement> {
383
+ tone?: HeadingTone;
384
+ as?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'span';
385
+ variant?: HeadingVariant;
386
+ style?: React.CSSProperties;
387
+ sx?: unknown;
388
+ }
389
+ export interface FeaturedImageData {
390
+ src?: string;
391
+ alt?: string;
392
+ width?: number | string;
393
+ height?: number | string;
394
+ objectFit?: 'cover' | 'contain' | 'fill';
395
+ }
396
+ export interface OgImageVersion {
397
+ path: string;
398
+ dimensions?: {
399
+ width: number;
400
+ height: number;
401
+ };
402
+ }
403
+ export interface OgImageItem {
404
+ id?: string;
405
+ category?: string;
406
+ name?: string;
407
+ versions?: {
408
+ light?: OgImageVersion;
409
+ dark?: OgImageVersion;
410
+ [key: string]: OgImageVersion | undefined;
411
+ };
412
+ }
413
+ export interface OgImagesManifest {
414
+ items: OgImageItem[];
415
+ }
416
+ export interface FeaturedImageProps {
417
+ image?: FeaturedImageData;
418
+ slug?: string;
419
+ alt?: string;
420
+ width?: number | string;
421
+ height?: number | string;
422
+ objectFit?: 'cover' | 'contain' | 'fill';
423
+ manifest?: OgImagesManifest;
424
+ borderRadius?: string | number;
425
+ flushTop?: boolean;
426
+ }
427
+ export interface AppShellProps {
428
+ children: React.ReactNode;
429
+ header?: React.ReactNode;
430
+ footer?: React.ReactNode;
431
+ }
432
+ export interface SiteFooterLink {
433
+ title: string;
434
+ href: string;
435
+ }
436
+ export interface SiteFooterColumn {
437
+ title: string;
438
+ href: string;
439
+ children?: SiteFooterLink[];
440
+ }
441
+ export interface SiteFooterProps {
442
+ columns?: SiteFooterColumn[];
443
+ }
444
+ export interface SiteHeaderProps {
445
+ title?: string;
446
+ icon?: string;
447
+ iconSize?: number;
448
+ homeHref?: string;
449
+ logoSrc?: string;
450
+ logoAlt?: string;
451
+ logo?: React.ReactNode;
452
+ nav?: React.ReactNode;
453
+ actions?: React.ReactNode;
454
+ children?: React.ReactNode;
455
+ }
456
+ export interface SiteMainProps {
457
+ children?: React.ReactNode;
458
+ className?: string;
459
+ featuredImage?: string;
460
+ }
461
+ export interface MenuDrawerProps {
462
+ open: boolean;
463
+ onClose: () => void;
464
+ children?: React.ReactNode;
465
+ navItems?: React.ReactNode;
466
+ actions?: React.ReactNode;
467
+ toggleAriaLabel?: string;
468
+ }
469
+ export interface PageSectionProps {
470
+ children?: React.ReactNode;
471
+ id?: string;
472
+ className?: string;
473
+ title?: string;
474
+ subtitle?: string;
475
+ }
476
+ export interface SectionTitleProps {
477
+ title: string;
478
+ subtitle?: string;
479
+ align?: 'left' | 'center' | 'right';
480
+ }
481
+ export interface BreadcrumbItem {
482
+ label: string;
483
+ href?: string;
484
+ }
485
+ export interface BreadcrumbProps {
486
+ items: BreadcrumbItem[];
487
+ }
488
+ export type ShareSize = 'sm' | 'md' | 'lg' | 'small' | 'medium' | 'large';
489
+ export interface ShareProps {
490
+ url?: string;
491
+ title?: string;
492
+ description?: string;
493
+ size?: ShareSize;
494
+ }
495
+ export interface T_NavNode {
496
+ slug?: string;
497
+ path?: string;
498
+ title?: string;
499
+ label?: string;
500
+ href?: string;
501
+ children?: T_NavNode[];
502
+ items?: T_NavNode[];
503
+ [key: string]: unknown;
504
+ }
505
+ export interface SiteNavProps {
506
+ nodes?: T_NavNode[];
507
+ items?: T_NavNode[];
508
+ navigateTo?: (path: string) => void;
509
+ }
510
+ export interface UseIsMobileOptions {
511
+ breakpoint?: number;
512
+ maxWidth?: number | string;
513
+ }
514
+ export interface VisibilityProps {
515
+ children: React.ReactNode;
516
+ isMobile?: boolean;
517
+ maxWidth?: number | string;
518
+ fallback?: React.ReactNode;
519
+ }
520
+ export interface SwatchProps {
521
+ label: string;
522
+ value: string;
523
+ }
524
+ export interface SwatchGroupProps {
525
+ items: SwatchProps[];
526
+ }
527
+ export interface LogoProps {
528
+ href?: string;
529
+ name?: string;
530
+ text?: string;
531
+ subtitle?: string;
532
+ src?: string;
533
+ icon?: string;
534
+ favicon?: boolean;
535
+ faceColor?: string;
536
+ smileColor?: string;
537
+ iconSize?: number;
538
+ children?: React.ReactNode;
539
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@goldlabelapps/theme",
3
- "version": "3.2.8",
3
+ "version": "3.5.6",
4
4
  "description": "NX° theme tokens, UI primitives, and layout showcase blocks",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -42,7 +42,7 @@
42
42
  "dist"
43
43
  ],
44
44
  "scripts": {
45
- "build": "pnpm --dir ../flash build && tsc -p tsconfig.build.json && mkdir -p dist/styles && cp src/styles/*.css dist/styles/",
45
+ "build": "tsc -p tsconfig.build.json && mkdir -p dist/styles && cp src/styles/*.css dist/styles/",
46
46
  "type-check": "tsc --noEmit",
47
47
  "test": "vitest run",
48
48
  "lint": "eslint .",
@@ -57,6 +57,7 @@
57
57
  },
58
58
  "dependencies": {
59
59
  "@goldlabelapps/flash": "workspace:*",
60
+ "@goldlabelapps/uberedux": "workspace:*",
60
61
  "canvas-confetti": "^1.9.4",
61
62
  "clsx": "^2.1.1",
62
63
  "framer-motion": "^13.1.1",
@@ -1,8 +0,0 @@
1
- import React from "react";
2
- import type { GuideMeta } from "../../types";
3
- export interface GuideLayoutProps {
4
- guides: GuideMeta[];
5
- currentGuide?: GuideMeta;
6
- children: React.ReactNode;
7
- }
8
- export declare function GuideLayout({ guides, currentGuide, children, }: GuideLayoutProps): React.JSX.Element;
@@ -1,12 +0,0 @@
1
- "use client";
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import Link from "next/link";
4
- import { BookOpen } from "lucide-react";
5
- export function GuideLayout({ guides, currentGuide, children, }) {
6
- return (_jsx("div", { className: "min-h-screen pt-28 pb-20 bg-white", children: _jsx("div", { className: "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8", children: _jsxs("div", { className: "grid grid-cols-1 lg:grid-cols-12 gap-8", children: [_jsx("aside", { className: "lg:col-span-3 space-y-4", children: _jsxs("div", { className: "p-4 rounded-2xl bg-slate-50 border border-slate-200", children: [_jsxs("div", { className: "flex items-center gap-2 mb-4 text-[#012867] font-bold text-sm", children: [_jsx(BookOpen, { className: "h-4 w-4" }), _jsx("span", { children: "How To Guides" })] }), _jsx("ul", { className: "space-y-1", children: guides.map((g) => {
7
- const isActive = currentGuide?.slug === g.slug;
8
- return (_jsx("li", { children: _jsx(Link, { href: `/how-to${g.slug === "/" ? "" : g.slug}`, className: `block px-3 py-2 rounded-xl text-xs font-semibold transition-colors ${isActive
9
- ? "bg-[#012867] text-white"
10
- : "text-slate-700 hover:bg-slate-200/70"}`, children: g.title }) }, g.slug));
11
- }) })] }) }), _jsx("main", { className: "lg:col-span-9", children: children })] }) }) }));
12
- }