@goldlabelapps/theme 3.2.0 → 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 (140) hide show
  1. package/README.md +2 -2
  2. package/dist/components/RenderMarkdown.d.ts +7 -0
  3. package/dist/components/RenderMarkdown.js +123 -0
  4. package/dist/components/download/DownloadBanner.js +1 -8
  5. package/dist/components/footer/Footer.js +6 -3
  6. package/dist/components/footer/FooterWrapper.d.ts +7 -0
  7. package/dist/components/footer/FooterWrapper.js +15 -0
  8. package/dist/components/footer/NXContactColumn.d.ts +13 -0
  9. package/dist/components/footer/NXContactColumn.js +32 -0
  10. package/dist/components/footer/NXLiveApps.d.ts +22 -0
  11. package/dist/components/footer/NXLiveApps.js +87 -0
  12. package/dist/components/footer/NXSocialColumn.d.ts +14 -0
  13. package/dist/components/footer/NXSocialColumn.js +17 -0
  14. package/dist/components/footer/NXTagsColumn.d.ts +14 -0
  15. package/dist/components/footer/NXTagsColumn.js +31 -0
  16. package/dist/components/footer/index.d.ts +6 -0
  17. package/dist/components/footer/index.js +6 -0
  18. package/dist/components/hero/HeroSection.js +1 -1
  19. package/dist/components/hero/VideoModal.js +1 -2
  20. package/dist/components/index.d.ts +11 -3
  21. package/dist/components/index.js +11 -3
  22. package/dist/components/layouts/GuideBreadcrumbs.d.ts +14 -0
  23. package/dist/components/layouts/GuideBreadcrumbs.js +15 -0
  24. package/dist/components/layouts/MarkdownContent.js +6 -0
  25. package/dist/components/layouts/Standard.d.ts +10 -0
  26. package/dist/components/layouts/Standard.js +7 -0
  27. package/dist/components/navigation/DropdownMenu.js +1 -1
  28. package/dist/components/navigation/Header.js +3 -6
  29. package/dist/components/navigation/LayoutActions.d.ts +7 -0
  30. package/dist/components/navigation/LayoutActions.js +12 -0
  31. package/dist/components/navigation/LogoContextMenu.d.ts +0 -1
  32. package/dist/components/navigation/LogoContextMenu.js +1 -2
  33. package/dist/components/navigation/MarkdownMenu.d.ts +9 -0
  34. package/dist/components/navigation/MarkdownMenu.js +12 -0
  35. package/dist/components/navigation/MobileMenu.js +16 -7
  36. package/dist/components/navigation/ShareMenu.d.ts +1 -1
  37. package/dist/components/navigation/ShareMenu.js +1 -2
  38. package/dist/components/navigation/Waiting.d.ts +10 -0
  39. package/dist/components/navigation/Waiting.js +45 -0
  40. package/dist/components/search/HeroSearchBar.d.ts +16 -0
  41. package/dist/components/search/HeroSearchBar.js +38 -0
  42. package/dist/components/search/SearchDialog.d.ts +11 -0
  43. package/dist/components/search/SearchDialog.js +69 -0
  44. package/dist/components/search/SearchIconButton.d.ts +10 -0
  45. package/dist/components/search/SearchIconButton.js +10 -0
  46. package/dist/components/search/SearchResultsList.d.ts +13 -0
  47. package/dist/components/search/SearchResultsList.js +18 -0
  48. package/dist/components/search/index.d.ts +5 -0
  49. package/dist/components/search/index.js +5 -0
  50. package/dist/components/search/useSearch.d.ts +54 -0
  51. package/dist/components/search/useSearch.js +106 -0
  52. package/dist/components/shortcodes/PageLinkShortcode.d.ts +15 -0
  53. package/dist/components/shortcodes/PageLinkShortcode.js +51 -0
  54. package/dist/components/showcase/BlogSection.js +2 -2
  55. package/dist/components/showcase/FeatureExplorer.js +2 -2
  56. package/dist/components/showcase/FeaturedCard.d.ts +13 -0
  57. package/dist/components/showcase/FeaturedCard.js +6 -0
  58. package/dist/components/showcase/SolutionsSection.js +2 -2
  59. package/dist/components/showcase/StatementSection.js +1 -1
  60. package/dist/components/showcase/VideoSection.js +2 -2
  61. package/dist/components/ui/Bash.d.ts +16 -0
  62. package/dist/components/ui/Bash.js +30 -0
  63. package/dist/components/ui/Button.js +1 -1
  64. package/dist/components/ui/Card.d.ts +2 -1
  65. package/dist/components/ui/Card.js +29 -7
  66. package/dist/components/ui/ThemeToggle.d.ts +5 -1
  67. package/dist/components/ui/ThemeToggle.js +32 -2
  68. package/dist/components/video/VideoLayout.js +2 -2
  69. package/dist/context/ConfigContext.js +1 -1
  70. package/dist/context/ThemeContext.d.ts +4 -0
  71. package/dist/context/ThemeContext.js +23 -18
  72. package/dist/data/og-images.json +530 -0
  73. package/dist/design-system/components/DesignSystemProvider/DesignSystemProvider.js +4 -9
  74. package/dist/design-system/components/buttons/Button/Button.js +6 -3
  75. package/dist/design-system/components/buttons/IconButton/IconButton.js +6 -3
  76. package/dist/design-system/components/feedback/Alert/Alert.js +45 -7
  77. package/dist/design-system/components/feedback/Card/Card.d.ts +1 -1
  78. package/dist/design-system/components/feedback/Card/Card.js +15 -9
  79. package/dist/design-system/components/headings/Heading/Heading.js +2 -1
  80. package/dist/design-system/components/icons/SVGIcons/BlokeyIcon.d.ts +2 -1
  81. package/dist/design-system/components/icons/SVGIcons/BlokeyIcon.js +1 -1
  82. package/dist/design-system/components/icons/SVGIcons/ChromeIcon.d.ts +2 -1
  83. package/dist/design-system/components/icons/SVGIcons/ChromeIcon.js +1 -1
  84. package/dist/design-system/components/icons/SVGIcons/DesktopIcon.d.ts +2 -1
  85. package/dist/design-system/components/icons/SVGIcons/DesktopIcon.js +1 -1
  86. package/dist/design-system/components/icons/SVGIcons/EdgeIcon.d.ts +2 -1
  87. package/dist/design-system/components/icons/SVGIcons/EdgeIcon.js +1 -1
  88. package/dist/design-system/components/icons/SVGIcons/FallmanagerIcon.d.ts +2 -1
  89. package/dist/design-system/components/icons/SVGIcons/FirefoxIcon.d.ts +2 -1
  90. package/dist/design-system/components/icons/SVGIcons/FirefoxIcon.js +1 -1
  91. package/dist/design-system/components/icons/SVGIcons/FlickrIcon.d.ts +2 -1
  92. package/dist/design-system/components/icons/SVGIcons/FlickrIcon.js +1 -1
  93. package/dist/design-system/components/icons/SVGIcons/GatsbyIcon.d.ts +2 -1
  94. package/dist/design-system/components/icons/SVGIcons/GoldenticketIcon.d.ts +2 -1
  95. package/dist/design-system/components/icons/SVGIcons/GoldenticketIcon.js +1 -1
  96. package/dist/design-system/components/icons/SVGIcons/GoldlabelOutlined.d.ts +2 -1
  97. package/dist/design-system/components/icons/SVGIcons/GraphqlIcon.d.ts +2 -1
  98. package/dist/design-system/components/icons/SVGIcons/GraphqlIcon.js +1 -1
  99. package/dist/design-system/components/icons/SVGIcons/IphoneIcon.d.ts +2 -1
  100. package/dist/design-system/components/icons/SVGIcons/IphoneIcon.js +1 -1
  101. package/dist/design-system/components/icons/SVGIcons/LinuxIcon.d.ts +2 -1
  102. package/dist/design-system/components/icons/SVGIcons/LinuxIcon.js +1 -1
  103. package/dist/design-system/components/icons/SVGIcons/MacIcon.d.ts +2 -1
  104. package/dist/design-system/components/icons/SVGIcons/MacIcon.js +1 -1
  105. package/dist/design-system/components/icons/SVGIcons/MacromediaIcon.d.ts +2 -1
  106. package/dist/design-system/components/icons/SVGIcons/MacromediaIcon.js +1 -1
  107. package/dist/design-system/components/icons/SVGIcons/OliverIcon.d.ts +2 -1
  108. package/dist/design-system/components/icons/SVGIcons/OpenAIIcon.d.ts +2 -1
  109. package/dist/design-system/components/icons/SVGIcons/PingpongballIcon.d.ts +2 -1
  110. package/dist/design-system/components/icons/SVGIcons/SafariIcon.d.ts +2 -1
  111. package/dist/design-system/components/icons/SVGIcons/SafariIcon.js +1 -1
  112. package/dist/design-system/components/icons/SVGIcons/WindowsIcon.d.ts +2 -1
  113. package/dist/design-system/components/icons/SVGIcons/WindowsIcon.js +1 -1
  114. package/dist/design-system/components/icons/SVGIcons/WordpressIcon.d.ts +2 -1
  115. package/dist/design-system/components/icons/SVGIcons/WordpressIcon.js +1 -1
  116. package/dist/design-system/components/icons/SVGIcons/XboxIcon.d.ts +2 -1
  117. package/dist/design-system/components/icons/SVGIcons/XboxIcon.js +1 -1
  118. package/dist/design-system/components/images/FeaturedImage/FeaturedImage.d.ts +1 -1
  119. package/dist/design-system/components/images/FeaturedImage/FeaturedImage.js +73 -25
  120. package/dist/design-system/components/images/FeaturedImage/types.d.ts +1 -1
  121. package/dist/design-system/components/layout/Footer/Footer.js +1 -1
  122. package/dist/design-system/components/layout/index.d.ts +1 -0
  123. package/dist/design-system/components/layout/index.js +1 -0
  124. package/dist/design-system/components/navigation/SiteNav/SiteNav.js +1 -1
  125. package/dist/design-system/components/nxStyle.d.ts +39 -0
  126. package/dist/design-system/components/nxStyle.js +40 -14
  127. package/dist/design-system/types.d.ts +1 -0
  128. package/dist/design-system/types.js +1 -0
  129. package/dist/index.d.ts +5 -3
  130. package/dist/index.js +2 -0
  131. package/dist/styles/globals.css +150 -3
  132. package/dist/styles/site-layout.css +1 -1
  133. package/dist/styles/theme.js +106 -7
  134. package/dist/styles/tokens.css +65 -0
  135. package/dist/types/index.d.ts +220 -0
  136. package/package.json +5 -2
  137. package/dist/components/guide/GuideLayout.d.ts +0 -8
  138. package/dist/components/guide/GuideLayout.js +0 -12
  139. package/dist/components/guide/MarkdownContent.js +0 -6
  140. /package/dist/components/{guide → layouts}/MarkdownContent.d.ts +0 -0
@@ -1,20 +1,44 @@
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
- const resolvedPrimary = themeConfig?.primary ?? (isDark ? '#F3F3F3' : '#5A5A5A');
5
- const resolvedSecondary = themeConfig?.secondary ?? (isDark ? '#E3E3E3' : '#7A7A7A');
6
- const palette = {
4
+ const resolvedPrimary = themeConfig?.primary ?? (isDark ? '#FFFFFF' : '#5A5A5A');
5
+ const resolvedSecondary = themeConfig?.secondary ?? (isDark ? '#F5F5F5' : '#7A7A7A');
6
+ const paletteMap = {
7
7
  dark: {
8
8
  primary: resolvedPrimary,
9
9
  secondary: resolvedSecondary,
10
10
  background: '#111111',
11
11
  paper: '#1C1C1C',
12
- text: '#F7F7F7',
13
- textSecondary: '#C7C7C7',
12
+ text: '#FFFFFF',
13
+ textSecondary: '#CBD5E1',
14
14
  border: 'rgba(255, 255, 255, 0.16)',
15
15
  borderSoft: 'rgba(255, 255, 255, 0.10)',
16
16
  shadow: '0 12px 40px rgba(0, 0, 0, 0.35)',
17
17
  buttonShadow: '0 12px 30px rgba(0, 0, 0, 0.4)',
18
+ error: {
19
+ main: '#F87171',
20
+ light: '#FCA5A5',
21
+ dark: '#EF4444',
22
+ contrastText: '#0F172A',
23
+ },
24
+ warning: {
25
+ main: '#FBBF24',
26
+ light: '#FDE047',
27
+ dark: '#F59E0B',
28
+ contrastText: '#0F172A',
29
+ },
30
+ info: {
31
+ main: '#38BDF8',
32
+ light: '#7DD3FC',
33
+ dark: '#0284C7',
34
+ contrastText: '#0F172A',
35
+ },
36
+ success: {
37
+ main: '#4ADE80',
38
+ light: '#86EFAC',
39
+ dark: '#22C55E',
40
+ contrastText: '#0F172A',
41
+ },
18
42
  },
19
43
  light: {
20
44
  primary: resolvedPrimary,
@@ -27,8 +51,33 @@ export function createAppTheme(mode = 'light', themeConfig) {
27
51
  borderSoft: 'rgba(31, 31, 31, 0.08)',
28
52
  shadow: '0 12px 40px rgba(31, 31, 31, 0.12)',
29
53
  buttonShadow: '0 12px 30px rgba(31, 31, 31, 0.18)',
54
+ error: {
55
+ main: '#DC2626',
56
+ light: '#EF4444',
57
+ dark: '#991B1B',
58
+ contrastText: '#FFFFFF',
59
+ },
60
+ warning: {
61
+ main: '#D97706',
62
+ light: '#F59E0B',
63
+ dark: '#92400E',
64
+ contrastText: '#FFFFFF',
65
+ },
66
+ info: {
67
+ main: '#2563EB',
68
+ light: '#3B82F6',
69
+ dark: '#1E40AF',
70
+ contrastText: '#FFFFFF',
71
+ },
72
+ success: {
73
+ main: '#16A34A',
74
+ light: '#22C55E',
75
+ dark: '#166534',
76
+ contrastText: '#FFFFFF',
77
+ },
30
78
  },
31
- }[mode];
79
+ };
80
+ const palette = paletteMap[mode && mode in paletteMap ? mode : 'light'];
32
81
  const resolvedPalette = {
33
82
  ...palette,
34
83
  background: themeConfig?.background ?? palette.background,
@@ -47,6 +96,10 @@ export function createAppTheme(mode = 'light', themeConfig) {
47
96
  main: resolvedPalette.secondary,
48
97
  contrastText: isDark ? '#111111' : '#FFFFFF',
49
98
  },
99
+ error: palette.error,
100
+ warning: palette.warning,
101
+ info: palette.info,
102
+ success: palette.success,
50
103
  background: {
51
104
  default: resolvedPalette.background,
52
105
  paper: resolvedPalette.paper,
@@ -82,6 +135,32 @@ export function createAppTheme(mode = 'light', themeConfig) {
82
135
  fontSize: '1.5rem',
83
136
  color: resolvedPalette.secondary,
84
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
+ },
85
164
  button: {
86
165
  textTransform: 'none',
87
166
  fontWeight: 400,
@@ -89,6 +168,26 @@ export function createAppTheme(mode = 'light', themeConfig) {
89
168
  }
90
169
  },
91
170
  components: {
171
+ MuiFormHelperText: {
172
+ styleOverrides: {
173
+ root: {
174
+ '&.Mui-error': {
175
+ color: isDark ? '#FCA5A5' : '#DC2626',
176
+ fontWeight: 500,
177
+ },
178
+ },
179
+ },
180
+ },
181
+ MuiInputBase: {
182
+ styleOverrides: {
183
+ root: {
184
+ backgroundColor: isDark ? '#1E293B' : undefined,
185
+ '&.Mui-error .MuiOutlinedInput-notchedOutline': {
186
+ borderColor: isDark ? '#F87171' : '#DC2626',
187
+ },
188
+ },
189
+ },
190
+ },
92
191
  MuiButton: {
93
192
  styleOverrides: {
94
193
  root: {
@@ -106,4 +106,69 @@
106
106
  --border-input-hover: rgba(30, 28, 52, 0.42);
107
107
  --border-input-focus: var(--nx-clay);
108
108
  --focus-ring: var(--nx-clay);
109
+ --nx-error: #dc2626;
110
+ --nx-error-bg: rgba(220, 38, 38, 0.08);
111
+ --nx-error-border: rgba(220, 38, 38, 0.3);
112
+ --nx-error-text: #991b1b;
113
+ --nx-warning: #d97706;
114
+ --nx-warning-bg: rgba(217, 119, 6, 0.08);
115
+ --nx-warning-border: rgba(217, 119, 6, 0.3);
116
+ --nx-warning-text: #92400e;
117
+ --nx-success: #16a34a;
118
+ --nx-success-bg: rgba(22, 163, 74, 0.08);
119
+ --nx-success-border: rgba(22, 163, 74, 0.3);
120
+ --nx-success-text: #166534;
121
+ --nx-info: #2563eb;
122
+ --nx-info-bg: rgba(37, 99, 235, 0.08);
123
+ --nx-info-border: rgba(37, 99, 235, 0.3);
124
+ --nx-info-text: #1e40af;
109
125
  }
126
+
127
+ :where(.dark, .dark *),
128
+ .dark,
129
+ [data-theme="dark"] {
130
+ color-scheme: dark;
131
+ --nx-ink: #ffffff;
132
+ --nx-ink-logo: #ffffff;
133
+ --nx-dusty: #f8fafc;
134
+ --nx-body: #f8fafc;
135
+ --nx-sign: #f1f5f9;
136
+ --nx-ash: #e2e8f0;
137
+ --nx-muted: #cbd5e1;
138
+ --nx-fog: #cbd5e1;
139
+ --nx-parchment: #0f172a;
140
+ --nx-paper: #1e293b;
141
+ --nx-oat: #334155;
142
+ --nx-clay: #60a5fa;
143
+ --nx-line: rgba(255, 255, 255, 0.16);
144
+ --nx-line-soft: rgba(255, 255, 255, 0.10);
145
+ --nx-glass: rgba(30, 41, 59, 0.72);
146
+ --nx-glass-hi: rgba(51, 65, 85, 0.82);
147
+ --nx-tile: rgba(30, 41, 59, 0.86);
148
+ --nx-scrim: rgba(15, 23, 42, 0.95);
149
+ --surface-input: rgba(30, 41, 59, 0.92);
150
+ --surface-input-hover: #334155;
151
+ --surface-input-focus: #475569;
152
+ --surface-input-disabled: #1e293b;
153
+ --border-input: rgba(255, 255, 255, 0.22);
154
+ --border-input-hover: rgba(255, 255, 255, 0.32);
155
+ --border-input-focus: #ffffff;
156
+ --focus-ring: #ffffff;
157
+ --nx-error: #f87171;
158
+ --nx-error-bg: rgba(248, 113, 113, 0.15);
159
+ --nx-error-border: rgba(248, 113, 113, 0.4);
160
+ --nx-error-text: #fca5a5;
161
+ --nx-warning: #fbbf24;
162
+ --nx-warning-bg: rgba(251, 191, 36, 0.15);
163
+ --nx-warning-border: rgba(251, 191, 36, 0.4);
164
+ --nx-warning-text: #fde047;
165
+ --nx-success: #4ade80;
166
+ --nx-success-bg: rgba(74, 222, 128, 0.15);
167
+ --nx-success-border: rgba(74, 222, 128, 0.4);
168
+ --nx-success-text: #86efac;
169
+ --nx-info: #60a5fa;
170
+ --nx-info-bg: rgba(96, 165, 250, 0.15);
171
+ --nx-info-border: rgba(96, 165, 250, 0.4);
172
+ --nx-info-text: #93c5fd;
173
+ }
174
+
@@ -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.0",
3
+ "version": "3.5.6",
4
4
  "description": "NX° theme tokens, UI primitives, and layout showcase blocks",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -45,7 +45,7 @@
45
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
- "lint": "echo \"No lint configured yet\"",
48
+ "lint": "eslint .",
49
49
  "clean": "rm -rf dist"
50
50
  },
51
51
  "peerDependencies": {
@@ -56,10 +56,13 @@
56
56
  "react-dom": ">=18.0.0"
57
57
  },
58
58
  "dependencies": {
59
+ "@goldlabelapps/flash": "workspace:*",
60
+ "@goldlabelapps/uberedux": "workspace:*",
59
61
  "canvas-confetti": "^1.9.4",
60
62
  "clsx": "^2.1.1",
61
63
  "framer-motion": "^13.1.1",
62
64
  "lucide-react": "^1.34.0",
65
+ "react-markdown": "^10.1.0",
63
66
  "react-share": "^5.3.0",
64
67
  "tailwind-merge": "^3.6.0"
65
68
  },
@@ -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
- }
@@ -1,6 +0,0 @@
1
- "use client";
2
- import { jsx as _jsx } from "react/jsx-runtime";
3
- export function MarkdownContent({ content }) {
4
- // Simple markdown renderer for headers, tables, code blocks, and lists
5
- return (_jsx("div", { className: "prose prose-slate max-w-none text-slate-800 leading-relaxed font-sans", children: _jsx("div", { dangerouslySetInnerHTML: { __html: content } }) }));
6
- }