boltdocs 2.7.10 → 2.7.11

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 (137) hide show
  1. package/dist/client/index.cjs +1929 -1
  2. package/dist/client/index.js +1880 -1
  3. package/dist/client/mdx.cjs +7 -1
  4. package/dist/client/mdx.js +7 -1
  5. package/dist/client/primitives.cjs +60 -1
  6. package/dist/client/primitives.js +20 -1
  7. package/dist/docs-layout-BXHV0xw_.cjs +1431 -0
  8. package/dist/docs-layout-DwFndmj5.js +1231 -0
  9. package/dist/icons-dev-3cZMyt8r.cjs +1204 -0
  10. package/dist/icons-dev-Df8OQ481.js +839 -0
  11. package/dist/image-DtrI2cw3.cjs +268 -0
  12. package/dist/image-jxPb-2iV.js +214 -0
  13. package/dist/mdx-BdWkJTeB.cjs +523 -0
  14. package/dist/mdx-UTTLFWJq.js +494 -0
  15. package/dist/node/cli-entry.cjs +1 -1
  16. package/dist/node/cli-entry.mjs +1 -1
  17. package/dist/node/index.cjs +1 -1
  18. package/dist/node/index.mjs +1 -1
  19. package/dist/{node-DtEDyN1u.cjs → node-BSM4qcDK.cjs} +1 -1
  20. package/dist/{node-_1jhMGYx.mjs → node-BspZN3R2.mjs} +1 -1
  21. package/dist/{package-DrwtlXfk.cjs → package-DIIrjuWI.cjs} +1 -1
  22. package/dist/{package--0Yf0t1N.mjs → package-K0zsjGIz.mjs} +1 -1
  23. package/dist/{search-dialog-ByvGScjt.js → search-dialog-BHuIiUC6.js} +3 -1
  24. package/dist/search-dialog-BNF10tDl.js +375 -0
  25. package/dist/search-dialog-BwkDuI9R.cjs +220 -0
  26. package/dist/search-dialog-C7xuvyNk.cjs +386 -0
  27. package/dist/search-dialog-CIQg6k8c.cjs +8 -0
  28. package/dist/search-dialog-D-DDN7zJ.js +208 -0
  29. package/package.json +3 -4
  30. package/dist/docs-layout-KoWNZc8_.js +0 -6
  31. package/dist/docs-layout-x2yKt2cL.cjs +0 -6
  32. package/dist/icons-dev-B_RZIyxu.js +0 -6
  33. package/dist/icons-dev-BlV3wWFT.cjs +0 -6
  34. package/dist/image-BHhTvQzr.cjs +0 -6
  35. package/dist/image-CqKzYD8f.js +0 -6
  36. package/dist/mdx-DudBEac0.js +0 -7
  37. package/dist/mdx-r4cDQxWu.cjs +0 -7
  38. package/dist/search-dialog-B584t9ZF.js +0 -6
  39. package/dist/search-dialog-BvBopRsZ.cjs +0 -6
  40. package/dist/search-dialog-Cyko6TJm.cjs +0 -6
  41. package/dist/search-dialog-D6BNohIJ.js +0 -6
  42. package/dist/search-dialog-DuYTIefy.cjs +0 -6
  43. package/src/client/app/config-context.tsx +0 -51
  44. package/src/client/app/doc-page.tsx +0 -38
  45. package/src/client/app/docs-layout.tsx +0 -28
  46. package/src/client/app/head.tsx +0 -122
  47. package/src/client/app/helmet-compat.tsx +0 -36
  48. package/src/client/app/mdx-component.tsx +0 -8
  49. package/src/client/app/mdx-components-context.tsx +0 -72
  50. package/src/client/app/routes-context.tsx +0 -34
  51. package/src/client/app/scroll-handler.tsx +0 -74
  52. package/src/client/app/theme-context.tsx +0 -103
  53. package/src/client/app/ui-context.tsx +0 -42
  54. package/src/client/components/docs-layout-default.tsx +0 -85
  55. package/src/client/components/icons-dev.tsx +0 -282
  56. package/src/client/components/mdx/callout.tsx +0 -97
  57. package/src/client/components/mdx/card.tsx +0 -99
  58. package/src/client/components/mdx/cards.tsx +0 -27
  59. package/src/client/components/mdx/code-block.tsx +0 -184
  60. package/src/client/components/mdx/field.tsx +0 -33
  61. package/src/client/components/mdx/image.tsx +0 -44
  62. package/src/client/components/mdx/index.ts +0 -19
  63. package/src/client/components/mdx/table.tsx +0 -54
  64. package/src/client/components/mdx/typographics.tsx +0 -120
  65. package/src/client/components/mdx/use-code-block.ts +0 -34
  66. package/src/client/components/primitives/breadcrumbs.tsx +0 -54
  67. package/src/client/components/primitives/button-group.tsx +0 -54
  68. package/src/client/components/primitives/button.tsx +0 -6
  69. package/src/client/components/primitives/code-block.tsx +0 -120
  70. package/src/client/components/primitives/docs-layout.tsx +0 -125
  71. package/src/client/components/primitives/error-boundary.tsx +0 -107
  72. package/src/client/components/primitives/heading.tsx +0 -128
  73. package/src/client/components/primitives/helpers/observer.ts +0 -141
  74. package/src/client/components/primitives/image.tsx +0 -26
  75. package/src/client/components/primitives/link.tsx +0 -102
  76. package/src/client/components/primitives/menu.tsx +0 -137
  77. package/src/client/components/primitives/navbar.tsx +0 -466
  78. package/src/client/components/primitives/on-this-page.tsx +0 -430
  79. package/src/client/components/primitives/page-nav.tsx +0 -51
  80. package/src/client/components/primitives/popover.tsx +0 -28
  81. package/src/client/components/primitives/search-dialog.tsx +0 -193
  82. package/src/client/components/primitives/sidebar.tsx +0 -423
  83. package/src/client/components/primitives/skeleton.tsx +0 -26
  84. package/src/client/components/primitives/tabs.tsx +0 -70
  85. package/src/client/components/primitives/tooltip.tsx +0 -81
  86. package/src/client/components/primitives/types.ts +0 -11
  87. package/src/client/components/ui-base/banner.tsx +0 -66
  88. package/src/client/components/ui-base/breadcrumbs.tsx +0 -44
  89. package/src/client/components/ui-base/copy-markdown.tsx +0 -107
  90. package/src/client/components/ui-base/error-boundary.tsx +0 -15
  91. package/src/client/components/ui-base/github-stars.tsx +0 -29
  92. package/src/client/components/ui-base/icons.tsx +0 -240
  93. package/src/client/components/ui-base/index.ts +0 -16
  94. package/src/client/components/ui-base/last-updated.tsx +0 -27
  95. package/src/client/components/ui-base/navbar.tsx +0 -266
  96. package/src/client/components/ui-base/not-found.tsx +0 -26
  97. package/src/client/components/ui-base/on-this-page.tsx +0 -57
  98. package/src/client/components/ui-base/page-nav.tsx +0 -50
  99. package/src/client/components/ui-base/search-dialog.tsx +0 -163
  100. package/src/client/components/ui-base/search-highlight.tsx +0 -10
  101. package/src/client/components/ui-base/sidebar.tsx +0 -92
  102. package/src/client/components/ui-base/tabs.tsx +0 -83
  103. package/src/client/components/ui-base/theme-toggle.tsx +0 -130
  104. package/src/client/components/ui-base/version-i18n.tsx +0 -80
  105. package/src/client/hooks/index.ts +0 -13
  106. package/src/client/hooks/use-analytics.ts +0 -272
  107. package/src/client/hooks/use-breadcrumbs.ts +0 -22
  108. package/src/client/hooks/use-i18n.ts +0 -182
  109. package/src/client/hooks/use-localized-to.ts +0 -113
  110. package/src/client/hooks/use-location.ts +0 -5
  111. package/src/client/hooks/use-navbar.ts +0 -130
  112. package/src/client/hooks/use-page-nav.ts +0 -46
  113. package/src/client/hooks/use-routes.ts +0 -108
  114. package/src/client/hooks/use-search-highlight.ts +0 -185
  115. package/src/client/hooks/use-search.ts +0 -118
  116. package/src/client/hooks/use-sidebar.ts +0 -205
  117. package/src/client/hooks/use-tabs.ts +0 -46
  118. package/src/client/hooks/use-version.ts +0 -111
  119. package/src/client/index.ts +0 -31
  120. package/src/client/mdx.ts +0 -2
  121. package/src/client/primitives.ts +0 -19
  122. package/src/client/ssg/boltdocs-shell.tsx +0 -148
  123. package/src/client/ssg/create-routes.tsx +0 -473
  124. package/src/client/ssg/index.ts +0 -4
  125. package/src/client/ssg/mdx-page.tsx +0 -38
  126. package/src/client/store/boltdocs-context.tsx +0 -137
  127. package/src/client/theme/neutral.css +0 -141
  128. package/src/client/theme/reset.css +0 -189
  129. package/src/client/types.ts +0 -116
  130. package/src/client/utils/cn.ts +0 -6
  131. package/src/client/utils/copy-clipboard.ts +0 -22
  132. package/src/client/utils/get-base-file-path.ts +0 -21
  133. package/src/client/utils/github.ts +0 -121
  134. package/src/client/utils/i18n.ts +0 -23
  135. package/src/client/utils/path.ts +0 -9
  136. package/src/client/utils/react-to-text.ts +0 -34
  137. package/src/client/virtual.d.ts +0 -24
@@ -1,103 +0,0 @@
1
- import { createContext, use, useState, useEffect } from 'react'
2
-
3
- export type Theme = 'light' | 'dark' | 'system'
4
- export type ResolvedTheme = 'light' | 'dark'
5
-
6
- interface ThemeContextType {
7
- theme: Theme
8
- resolvedTheme: ResolvedTheme
9
- setTheme: (theme: Theme) => void
10
- }
11
-
12
- const THEME_CONTEXT_SYMBOL = Symbol.for('__BDOCS_THEME_CONTEXT__')
13
- const THEME_INSTANCE_SYMBOL = Symbol.for('__BDOCS_THEME_INSTANCE__')
14
- const THEME_EVENT = 'boltdocs-theme-change'
15
-
16
- const ThemeContext =
17
- (globalThis as any)[THEME_CONTEXT_SYMBOL] ||
18
- ((globalThis as any)[THEME_CONTEXT_SYMBOL] = createContext<
19
- ThemeContextType | undefined
20
- >(undefined))
21
-
22
- export function ThemeProvider({ children }: { children: React.ReactNode }) {
23
- const [theme, setThemeState] = useState<Theme>('system')
24
- const [resolvedTheme, setResolvedTheme] = useState<ResolvedTheme>('dark')
25
-
26
- const applyTheme = (targetTheme: Theme) => {
27
- const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)')
28
- const isDark =
29
- targetTheme === 'dark' || (targetTheme === 'system' && mediaQuery.matches)
30
-
31
- const root = window.document.documentElement
32
- root.classList.toggle('dark', isDark)
33
- root.dataset.theme = isDark ? 'dark' : 'light'
34
- setResolvedTheme(isDark ? 'dark' : 'light')
35
- }
36
-
37
- useEffect(() => {
38
- const savedTheme = localStorage.getItem('boltdocs-theme') as Theme | null
39
- if (savedTheme) {
40
- setThemeState(savedTheme)
41
- applyTheme(savedTheme)
42
- } else {
43
- applyTheme('system')
44
- }
45
-
46
- const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)')
47
- const listener = () => {
48
- const current =
49
- (localStorage.getItem('boltdocs-theme') as Theme) || 'system'
50
- if (current === 'system') applyTheme('system')
51
- }
52
-
53
- mediaQuery.addEventListener('change', listener)
54
- return () => mediaQuery.removeEventListener('change', listener)
55
- }, [])
56
-
57
- const setTheme = (newTheme: Theme) => {
58
- setThemeState(newTheme)
59
- localStorage.setItem('boltdocs-theme', newTheme)
60
- applyTheme(newTheme)
61
-
62
- // Notify external listeners (dual-package hazard)
63
- if (typeof window !== 'undefined') {
64
- window.dispatchEvent(new CustomEvent(THEME_EVENT, { detail: newTheme }))
65
- }
66
- }
67
-
68
- const value = { theme, resolvedTheme, setTheme }
69
-
70
- // Sync with global registry
71
- if (typeof globalThis !== 'undefined') {
72
- ;(globalThis as any)[THEME_INSTANCE_SYMBOL] = value
73
- }
74
-
75
- return <ThemeContext.Provider value={value}>{children}</ThemeContext.Provider>
76
- }
77
-
78
- export function useTheme() {
79
- const context = use(ThemeContext)
80
- const [, forceUpdate] = useState({})
81
-
82
- useEffect(() => {
83
- if (context) return
84
-
85
- const handler = () => forceUpdate({})
86
- window.addEventListener(THEME_EVENT, handler)
87
- return () => window.removeEventListener(THEME_EVENT, handler)
88
- }, [context])
89
-
90
- // Fallback to global registry for dual-package hazards
91
- if (
92
- !context &&
93
- typeof globalThis !== 'undefined' &&
94
- (globalThis as any)[THEME_INSTANCE_SYMBOL]
95
- ) {
96
- return (globalThis as any)[THEME_INSTANCE_SYMBOL] as ThemeContextType
97
- }
98
-
99
- if (context === undefined) {
100
- throw new Error('useTheme must be used within a ThemeProvider')
101
- }
102
- return context as ThemeContextType
103
- }
@@ -1,42 +0,0 @@
1
- import { createContext, useContext, useState, useEffect } from 'react'
2
- import { useLocation } from 'react-router-dom'
3
-
4
- interface UIContextType {
5
- isSidebarOpen: boolean
6
- toggleSidebar: () => void
7
- closeSidebar: () => void
8
- }
9
-
10
- const UIContext = createContext<UIContextType | undefined>(undefined)
11
-
12
- export function UIProvider({ children }: { children: React.ReactNode }) {
13
- const [isSidebarOpen, setIsSidebarOpen] = useState(false)
14
- const location = useLocation()
15
-
16
- const toggleSidebar = () => setIsSidebarOpen((prev) => !prev)
17
- const closeSidebar = () => setIsSidebarOpen(false)
18
-
19
- // Close sidebar on navigation
20
- useEffect(() => {
21
- setIsSidebarOpen(false)
22
- }, [location.pathname])
23
-
24
- return (
25
- <UIContext.Provider value={{ isSidebarOpen, toggleSidebar, closeSidebar }}>
26
- {children}
27
- </UIContext.Provider>
28
- )
29
- }
30
-
31
- export function useUI() {
32
- const context = useContext(UIContext)
33
- if (context === undefined) {
34
- // Safe fallback for split bundles, independent component renders, or during SSR
35
- return {
36
- isSidebarOpen: false,
37
- toggleSidebar: () => {},
38
- closeSidebar: () => {},
39
- }
40
- }
41
- return context
42
- }
@@ -1,85 +0,0 @@
1
- import { DocsLayout as DocsLayoutPrimitive } from './primitives/docs-layout'
2
- import { Navbar } from './ui-base/navbar'
3
- import { Sidebar } from './ui-base/sidebar'
4
- import { OnThisPage } from './ui-base/on-this-page'
5
- import { Breadcrumbs } from './ui-base/breadcrumbs'
6
- import { PageNav } from './ui-base/page-nav'
7
- import { ErrorBoundary } from './ui-base/error-boundary'
8
- import { CopyMarkdown } from './ui-base/copy-markdown'
9
- import { useRoutes } from '../hooks/use-routes'
10
- import { useConfig } from '../app/config-context'
11
-
12
- interface DocsLayoutThemeProps {
13
- children?: React.ReactNode
14
- }
15
-
16
- /**
17
- * Pre-assembled high-fidelity documentation layout component.
18
- * Fully styled and optimized to adapt seamlessly to our custom Parchment/Slate theme.
19
- */
20
- function DocsLayoutComponent({ children }: DocsLayoutThemeProps) {
21
- const { routes: filteredRoutes, currentRoute } = useRoutes()
22
- const config = useConfig()
23
-
24
- return (
25
- <DocsLayoutPrimitive className="selection:bg-primary-500/10 selection:text-primary-500">
26
- <Navbar />
27
- <DocsLayoutPrimitive.Body className="bg-main">
28
- <Sidebar routes={filteredRoutes || []} config={config} />
29
- <DocsLayoutPrimitive.Content className="animate-in fade-in duration-500 scroll-smooth">
30
- <DocsLayoutPrimitive.ContentMdx className="max-w-3xl sm:max-w-4xl lg:max-w-4xl px-2 pt-8 pb-24">
31
- <DocsLayoutPrimitive.Header>
32
- <div className="mb-4 border-b border-subtle pb-4 flex flex-wrap items-center justify-between gap-3">
33
- <Breadcrumbs />
34
- <CopyMarkdown
35
- mdxRaw={currentRoute?._rawContent}
36
- route={currentRoute}
37
- />
38
- </div>
39
-
40
- {/* Inject Main Page Heading automatically */}
41
- {currentRoute?.title && (
42
- <h1 className="text-4xl font-bold tracking-tight text-default mb-3">
43
- {currentRoute.title}
44
- </h1>
45
- )}
46
- {currentRoute?.description && (
47
- <p className="text-lg text-muted-foreground mb-6 leading-relaxed">
48
- {currentRoute.description}
49
- </p>
50
- )}
51
- </DocsLayoutPrimitive.Header>
52
-
53
- <ErrorBoundary>
54
- <div className="prose prose-neutral dark:prose-invert max-w-none">
55
- {children}
56
- </div>
57
- </ErrorBoundary>
58
-
59
- <DocsLayoutPrimitive.Footer>
60
- <PageNav />
61
- </DocsLayoutPrimitive.Footer>
62
- </DocsLayoutPrimitive.ContentMdx>
63
- </DocsLayoutPrimitive.Content>
64
- <OnThisPage
65
- headings={currentRoute?.headings}
66
- editLink={config.theme?.editLink}
67
- communityHelp={config.theme?.communityHelp}
68
- filePath={currentRoute?.filePath}
69
- />
70
- </DocsLayoutPrimitive.Body>
71
- </DocsLayoutPrimitive>
72
- )
73
- }
74
-
75
- // Expose the primitive sub-components directly on the Default DocsLayout
76
- // to maintain complete backward-compatibility for custom theme assemblies.
77
- export const DocsLayout = Object.assign(DocsLayoutComponent, {
78
- Body: DocsLayoutPrimitive.Body,
79
- Content: DocsLayoutPrimitive.Content,
80
- ContentMdx: DocsLayoutPrimitive.ContentMdx,
81
- Header: DocsLayoutPrimitive.Header,
82
- Footer: DocsLayoutPrimitive.Footer,
83
- }) as any
84
-
85
- export default DocsLayout
@@ -1,282 +0,0 @@
1
- type WrapperProps = React.SVGProps<SVGSVGElement> & {
2
- size?: number
3
- }
4
-
5
- function wrapperProps(props: WrapperProps) {
6
- const { size = 20, ...rest } = props
7
- return {
8
- ...rest,
9
- width: size,
10
- height: size,
11
- }
12
- }
13
-
14
- export const Github = (props: WrapperProps) => (
15
- <svg
16
- xmlns="http://www.w3.org/2000/svg"
17
- viewBox="0 0 24 24"
18
- fill="currentColor"
19
- {...wrapperProps(props)}
20
- >
21
- <title>{'GitHub'}</title>
22
- <path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12" />
23
- </svg>
24
- )
25
-
26
- export const Csv = (props: WrapperProps) => (
27
- <svg
28
- xmlns="http://www.w3.org/2000/svg"
29
- fill="none"
30
- viewBox="0 0 24 24"
31
- {...wrapperProps(props)}
32
- >
33
- <title>{'CSV'}</title>
34
- <mask
35
- id="a"
36
- maskUnits="userSpaceOnUse"
37
- x="3"
38
- y="3"
39
- width="18"
40
- height="18"
41
- fill="#000"
42
- >
43
- <path fill="#fff" d="M3 3h18v18H3z" />
44
- <path
45
- fillRule="evenodd"
46
- clipRule="evenodd"
47
- d="M15.8889 5H8.11111C6.39289 5 5 6.39289 5 8.11111v7.77779C5 17.6071 6.39289 19 8.11111 19h7.77779C17.6071 19 19 17.6071 19 15.8889V8.11111C19 6.39289 17.6071 5 15.8889 5Zm0 12.4444H8.1111c-.05369 0-.10674-.0027-.15904-.008.0523.0053.10536.008.15905.008h7.77779Zm1.5555-1.5555c0 .8054-.6121 1.4679-1.3965 1.5475.7844-.0797 1.3965-.7421 1.3965-1.5475V8.11111v7.77779Z"
48
- />
49
- </mask>
50
- <path
51
- d="M15.8889 19.4444c1.1046 0 2-.8954 2-2 0-1.1045-.8954-2-2-2v4Zm-7.7778-2 .00001-2H8.1111v2Zm-.15904-.008.20206-1.9898c-1.09891-.1115-2.08022.6888-2.19182 1.7877-.1116 1.099.68877 2.0803 1.78768 2.1919l.20208-1.9898Zm8.09584 0-.2021-1.9897c-1.0989.1116-1.8992 1.0929-1.7876 2.1918.1116 1.0989 1.0929 1.8993 2.1918 1.7877l-.2021-1.9898Zm3.3965-9.32529c0-1.10457-.8954-2-2-2-1.1045 0-2 .89543-2 2h4ZM8.11111 7h7.77779V3H8.11111v4ZM7 8.11111C7 7.49746 7.49746 7 8.11111 7V3C5.28832 3 3 5.28832 3 8.11111h4Zm0 7.77779V8.11111H3v7.77779h4ZM8.11111 17C7.49746 17 7 16.5025 7 15.8889H3C3 18.7117 5.28832 21 8.11111 21v-4Zm7.77779 0H8.11111v4h7.77779v-4ZM17 15.8889C17 16.5025 16.5025 17 15.8889 17v4C18.7117 21 21 18.7117 21 15.8889h-4Zm0-7.77779v7.77779h4V8.11111h-4ZM15.8889 7C16.5025 7 17 7.49746 17 8.11111h4C21 5.28832 18.7117 3 15.8889 3v4Zm0 8.4444H8.11111l-.00001 4h7.7778v-4Zm-7.7778 0c.01378 0 .02816.0007.04302.0022l-.40411 3.9796c.11944.0121.23994.0182.36109.0182v-4Zm-.36112 3.9818c.11935.0121.23985.0182.36113.0182v-4c.01389 0 .02828.0008.04304.0022l-.40417 3.9796Zm.36113.0182h7.77779v-4H8.11111v4Zm8.13889-.0182c1.7951-.1823 3.1944-1.6951 3.1944-3.5373h-4c0-.2314.1752-.4193.4015-.4423l.4041 3.9796Zm-.8056-3.5373c0-.2314.1752-.4193.4014-.4422l.4042 3.9795c1.795-.1823 3.1944-1.6951 3.1944-3.5373h-4Zm0-7.77779v7.77779h4V8.11111h-4Zm4 0c0-.07155-.0038-.14596-.0124-.22267-.0086-.07678-.0218-.15478-.0403-.23343-.0184-.07869-.0416-.15651-.0697-.233-.0281-.07648-.0604-.15005-.0963-.22045-.036-.07036-.0749-.13629-.1158-.1978-.0408-.06145-.0832-.11775-.1258-.16912-.085-.10251-.1704-.18478-.2468-.2495-.0383-.03245-.0749-.061-.1089-.08594-.034-.02494-.0659-.04672-.0949-.06556-.029-.01883-.0558-.03518-.0797-.04914-.0239-.01396-.0456-.02598-.0644-.03606-.0188-.01008-.0355-.01864-.0493-.02558-.0139-.00694-.0257-.01268-.0348-.01701-.009-.00429-.0163-.00769-.0207-.00971-.0022-.00104-.004-.00187-.0051-.00238-.0006-.00025-.001-.00046-.0013-.00059-.0002-.00006-.0003-.00011-.0003-.00014-.0001-.00001-.0001-.00003-.0001-.00004v-.00001c-.0006-.00027.0028.00131.0068.00316.0044.00202.0117.00541.0207.00971.0091.00433.0209.01007.0348.01701.0138.00694.0305.0155.0493.02558.0188.01008.0405.0221.0644.03606.0239.01396.0507.03031.0797.04914.029.01883.0609.04062.0949.06556.0339.02494.0706.05349.1089.08594.0764.06472.1618.14698.2468.24949.0426.05138.085.10768.1258.16913.0409.06151.0798.12744.1157.19779.036.07041.0683.14397.0964.22046.028.07648.0513.15431.0697.23299.0185.07865.0317.15665.0403.23344.0086.07671.0124.15112.0124.22267h-4c0 .07154.0039.14595.0125.22267.0086.07678.0218.15478.0402.23343.0185.07868.0417.15651.0698.233.0281.07648.0604.15005.0963.22045.036.07036.0749.13629.1158.1978.0408.06144.0832.11775.1258.16912.0849.10251.1704.18478.2468.2495.0383.03244.0749.061.1089.08594.0339.02493.0658.04672.0949.06556.029.01883.0558.03517.0797.04914.0239.01396.0456.02598.0644.03606.0188.01007.0354.01864.0493.02558.0139.00693.0257.01268.0348.01701.009.00429.0163.00769.0207.00971.0022.00104.004.00187.0051.00237.0006.00026.001.00047.0013.00059.0001.00007.0003.00012.0003.00015.0001.00001.0001.00003.0001.00004v.00001c.0006.00026-.0028-.00131-.0068-.00316-.0044-.00202-.0117-.00542-.0207-.00971-.0091-.00433-.0209-.01008-.0348-.01701-.0139-.00694-.0305-.01551-.0493-.02558-.0188-.01008-.0405-.0221-.0644-.03606-.0239-.01396-.0507-.03031-.0797-.04914-.029-.01884-.061-.04062-.0949-.06556-.034-.02494-.0706-.0535-.1089-.08594-.0764-.06472-.1619-.14699-.2468-.2495-.0426-.05137-.085-.10767-.1258-.16912-.0409-.06151-.0798-.12744-.1158-.1978-.0359-.0704-.0682-.14397-.0963-.22045-.0281-.07649-.0513-.15431-.0698-.233-.0184-.07865-.0316-.15665-.0402-.23343-.0086-.07671-.0125-.15112-.0125-.22267h4Zm0 7.77779V8.11111h-4v7.77779h4Z"
52
- fill="#14B8A6"
53
- mask="url(#a)"
54
- />
55
- <rect x="7" y="7" width="4" height="2" rx="1" fill="#14B8A6" />
56
- <rect x="7" y="11" width="4" height="2" rx="1" fill="#14B8A6" />
57
- <rect x="7" y="15" width="4" height="2" rx="1" fill="#14B8A6" />
58
- <rect x="13" y="7" width="4" height="2" rx="1" fill="#14B8A6" />
59
- <rect x="13" y="11" width="4" height="2" rx="1" fill="#14B8A6" />
60
- <rect x="13" y="15" width="4" height="2" rx="1" fill="#14B8A6" />
61
- </svg>
62
- )
63
-
64
- export const Discord = (props: WrapperProps) => (
65
- <svg
66
- xmlns="http://www.w3.org/2000/svg"
67
- viewBox="0 0 24 24"
68
- fill="currentColor"
69
- {...wrapperProps(props)}
70
- >
71
- <title>{'Discord'}</title>
72
- <path d="M20.317 4.37a19.791 19.791 0 0 0-4.885-1.515.074.074 0 0 0-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 0 0-5.487 0 12.64 12.64 0 0 0-.617-1.25.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 0 0 .031.057 19.9 19.9 0 0 0 5.993 3.03.078.078 0 0 0 .084-.028c.462-.63.874-1.295 1.226-1.994a.076.076 0 0 0-.041-.106 13.107 13.107 0 0 1-1.872-.892.077.077 0 0 1-.008-.128 10.2 10.2 0 0 0 .372-.292.074.074 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 0 1 .078.01c.12.098.246.198.373.292a.077.077 0 0 1-.006.127 12.299 12.299 0 0 1-1.873.892.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028 19.839 19.839 0 0 0 6.002-3.03.077.077 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.03zM8.02 15.33c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.956-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.955-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.946 2.418-2.157 2.418Z" />
73
- </svg>
74
- )
75
-
76
- export const XSocial = (props: WrapperProps) => (
77
- <svg
78
- xmlns="http://www.w3.org/2000/svg"
79
- viewBox="0 0 24 24"
80
- fill="currentColor"
81
- {...wrapperProps(props)}
82
- >
83
- <title>{'X'}</title>
84
- <path d="M14.234 10.162 22.977 0h-2.072l-7.591 8.824L7.251 0H.258l9.168 13.343L.258 24H2.33l8.016-9.318L16.749 24h6.993zm-2.837 3.299-.929-1.329L3.076 1.56h3.182l5.965 8.532.929 1.329 7.754 11.09h-3.182z" />
85
- </svg>
86
- )
87
-
88
- export const Bluesky = (props: WrapperProps) => (
89
- <svg
90
- xmlns="http://www.w3.org/2000/svg"
91
- viewBox="0 0 24 24"
92
- fill="currentColor"
93
- {...wrapperProps(props)}
94
- >
95
- <title>{'Bluesky'}</title>
96
- <path d="M5.202 2.857C7.954 4.922 10.913 9.11 12 11.358c1.087-2.247 4.046-6.436 6.798-8.501C20.783 1.366 24 .213 24 3.883c0 .732-.42 6.156-.667 7.037-.856 3.061-3.978 3.842-6.755 3.37 4.854.826 6.089 3.562 3.422 6.299-5.065 5.196-7.28-1.304-7.847-2.97-.104-.305-.152-.448-.153-.327 0-.121-.05.022-.153.327-.568 1.666-2.782 8.166-7.847 2.97-2.667-2.737-1.432-5.473 3.422-6.3-2.777.473-5.899-.308-6.755-3.369C.42 10.04 0 4.615 0 3.883c0-3.67 3.217-2.517 5.202-1.026" />
97
- </svg>
98
- )
99
-
100
- // Icons file
101
-
102
- export const TypeScript = (props: WrapperProps) => (
103
- <svg
104
- xmlns="http://www.w3.org/2000/svg"
105
- fill="none"
106
- viewBox="0 0 24 24"
107
- {...wrapperProps(props)}
108
- >
109
- <title>{'TypeScript'}</title>
110
- <path
111
- fill="#2563EB"
112
- d="M3.234 9.093V7.318h8.363v1.775H8.479V17.5H6.352V9.093H3.234zm15.263 1.153c-.04-.4-.21-.712-.512-.934-.301-.222-.71-.333-1.228-.333-.351 0-.648.05-.89.149-.242.096-.427.23-.557.403a.969.969 0 0 0-.189.586.838.838 0 0 0 .115.477c.086.136.204.254.353.353.149.097.321.181.517.254.195.07.404.13.626.179l.915.219c.444.1.852.232 1.223.397.371.166.693.37.965.612.271.242.482.527.631.855.152.328.23.704.234 1.129-.004.623-.163 1.163-.478 1.62-.311.454-.762.807-1.352 1.06-.587.248-1.294.372-2.123.372-.822 0-1.538-.126-2.147-.378-.607-.252-1.081-.624-1.422-1.118-.338-.497-.516-1.112-.532-1.845h2.083c.023.342.12.627.293.855.176.226.41.397.701.513a2.8 2.8 0 0 0 1 .168c.364 0 .68-.053.949-.159a1.45 1.45 0 0 0 .631-.442c.15-.189.224-.406.224-.651a.846.846 0 0 0-.204-.577c-.132-.156-.328-.288-.586-.398a5.964 5.964 0 0 0-.94-.298l-1.109-.278c-.858-.21-1.536-.536-2.033-.98-.497-.444-.744-1.042-.74-1.795-.004-.616.16-1.155.491-1.615.335-.461.794-.82 1.377-1.08.584-.258 1.247-.387 1.99-.387.755 0 1.414.13 1.978.388.567.258 1.007.618 1.322 1.079.315.46.477.994.488 1.6h-2.064z"
113
- />
114
- </svg>
115
- )
116
-
117
- export const JavaScript = (props: WrapperProps) => (
118
- <svg
119
- xmlns="http://www.w3.org/2000/svg"
120
- fill="none"
121
- viewBox="0 0 24 24"
122
- {...wrapperProps(props)}
123
- >
124
- <title>{'JavaScript'}</title>
125
- <path
126
- fill="#F59E0B"
127
- d="M8.383 7.318h2.127v7.1c0 .656-.147 1.226-.442 1.71a2.924 2.924 0 01-1.218 1.118c-.52.262-1.125.393-1.815.393-.613 0-1.17-.107-1.67-.323a2.67 2.67 0 01-1.183-.994c-.292-.448-.436-1.01-.433-1.686h2.143c.006.269.061.5.164.691.106.19.25.335.432.438.186.1.405.15.657.15.265 0 .488-.057.67-.17.186-.116.327-.285.423-.507.096-.222.145-.496.145-.82v-7.1zm9.43 2.928c-.04-.4-.21-.712-.511-.934-.302-.222-.711-.333-1.228-.333-.352 0-.648.05-.89.149-.242.096-.428.23-.557.403a.969.969 0 00-.19.586.838.838 0 00.115.477c.087.136.204.254.353.353.15.097.322.181.517.254.196.07.405.13.627.179l.915.219c.444.1.851.232 1.223.397.37.166.692.37.964.612s.482.527.631.855a2.7 2.7 0 01.234 1.129c-.003.623-.162 1.163-.477 1.62-.312.454-.763.807-1.353 1.06-.586.248-1.294.372-2.122.372-.822 0-1.538-.126-2.148-.378-.607-.252-1.08-.624-1.422-1.118-.338-.497-.515-1.112-.532-1.845h2.083c.023.342.121.627.293.855.176.226.41.397.702.513.295.112.628.168.999.168.364 0 .68-.053.95-.159.271-.106.482-.253.63-.442.15-.189.224-.406.224-.651a.846.846 0 00-.203-.577c-.133-.156-.329-.288-.587-.398a5.964 5.964 0 00-.94-.298l-1.108-.278c-.859-.21-1.537-.536-2.034-.98-.497-.444-.744-1.042-.74-1.795-.004-.616.16-1.155.492-1.615.334-.461.793-.82 1.377-1.08.583-.258 1.246-.387 1.989-.387.755 0 1.415.13 1.978.388.567.258 1.008.618 1.323 1.079.314.46.477.994.487 1.6h-2.063z"
128
- ></path>
129
- </svg>
130
- )
131
-
132
- export const Json = (props: WrapperProps) => (
133
- <svg
134
- xmlns="http://www.w3.org/2000/svg"
135
- fill="none"
136
- viewBox="0 0 24 24"
137
- {...wrapperProps(props)}
138
- >
139
- <title>{'JSON'}</title>
140
- <path
141
- fill="#F59E0B"
142
- d="M4.778 6.667A2.667 2.667 0 017.444 4a.889.889 0 010 1.778.889.889 0 00-.888.889v3.5c0 .701-.273 1.35-.73 1.833.457.483.73 1.132.73 1.832v3.501c0 .491.398.89.888.89a.889.889 0 010 1.777 2.667 2.667 0 01-2.666-2.667v-3.5a.889.889 0 00-.674-.863l-.43-.108a.889.889 0 010-1.724l.43-.108a.889.889 0 00.674-.862V6.667zm14.222 0A2.667 2.667 0 0016.333 4a.889.889 0 000 1.778c.491 0 .89.398.89.889v3.5c0 .701.272 1.35.729 1.833a2.664 2.664 0 00-.73 1.832v3.501a.889.889 0 01-.889.89.889.889 0 000 1.777A2.667 2.667 0 0019 17.333v-3.5c0-.408.278-.764.673-.863l.431-.108a.889.889 0 000-1.724l-.43-.108a.889.889 0 01-.674-.862V6.667z"
143
- ></path>
144
- </svg>
145
- )
146
-
147
- export const Css = (props: WrapperProps) => (
148
- <svg
149
- xmlns="http://www.w3.org/2000/svg"
150
- fill="none"
151
- viewBox="0 0 24 24"
152
- {...wrapperProps(props)}
153
- >
154
- <title>{'CSS'}</title>
155
- <path
156
- fill="#0EA5E9"
157
- d="M4.778 6.667A2.667 2.667 0 017.444 4a.889.889 0 010 1.778.889.889 0 00-.888.889v3.5c0 .701-.273 1.35-.73 1.833.457.483.73 1.132.73 1.832v3.501c0 .491.398.89.888.89a.889.889 0 010 1.777 2.667 2.667 0 01-2.666-2.667v-3.5a.889.889 0 00-.674-.863l-.43-.108a.889.889 0 010-1.724l.43-.108a.889.889 0 00.674-.862V6.667zm14.222 0A2.667 2.667 0 0016.333 4a.889.889 0 000 1.778c.491 0 .89.398.89.889v3.5c0 .701.272 1.35.729 1.833a2.664 2.664 0 00-.73 1.832v3.501a.889.889 0 01-.889.89.889.889 0 000 1.777A2.667 2.667 0 0019 17.333v-3.5c0-.408.278-.764.673-.863l.431-.108a.889.889 0 000-1.724l-.43-.108a.889.889 0 01-.674-.862V6.667z"
158
- ></path>
159
- </svg>
160
- )
161
-
162
- export const BracketsOrange = (props: WrapperProps) => (
163
- <svg
164
- xmlns="http://www.w3.org/2000/svg"
165
- fill="none"
166
- viewBox="0 0 24 24"
167
- {...wrapperProps(props)}
168
- >
169
- <title>{'HTML'}</title>
170
- <path
171
- fill="#EA580C"
172
- d="M4.778 6.667A2.667 2.667 0 017.444 4a.889.889 0 010 1.778.889.889 0 00-.888.889v3.5c0 .701-.273 1.35-.73 1.833.457.483.73 1.132.73 1.832v3.501c0 .491.398.89.888.89a.889.889 0 010 1.777 2.667 2.667 0 01-2.666-2.667v-3.5a.889.889 0 00-.674-.863l-.43-.108a.889.889 0 010-1.724l.43-.108a.889.889 0 00.674-.862V6.667zm14.222 0A2.667 2.667 0 0016.333 4a.889.889 0 000 1.778c.491 0 .89.398.89.889v3.5c0 .701.272 1.35.729 1.833a2.664 2.664 0 00-.73 1.832v3.501a.889.889 0 01-.889.89.889.889 0 000 1.777A2.667 2.667 0 0019 17.333v-3.5c0-.408.278-.764.673-.863l.431-.108a.889.889 0 000-1.724l-.43-.108a.889.889 0 01-.674-.862V6.667z"
173
- ></path>
174
- </svg>
175
- )
176
-
177
- export const React = (props: WrapperProps) => (
178
- <svg
179
- xmlns="http://www.w3.org/2000/svg"
180
- fill="none"
181
- viewBox="0 0 24 24"
182
- {...wrapperProps(props)}
183
- >
184
- <title>{'React'}</title>
185
- <path
186
- fill="#0E8ADC"
187
- d="M12 13.677a1.677 1.677 0 100-3.354 1.677 1.677 0 000 3.354z"
188
- ></path>
189
- <path
190
- stroke="#0E8ADC"
191
- d="M12 15.436c4.97 0 9-1.538 9-3.436s-4.03-3.436-9-3.436S3 10.102 3 12s4.03 3.436 9 3.436z"
192
- ></path>
193
- <path
194
- stroke="#0E8ADC"
195
- d="M9.024 13.718c2.485 4.305 5.832 7.025 7.476 6.076 1.644-.949.961-5.208-1.524-9.512C12.491 5.977 9.144 3.257 7.5 4.206c-1.644.949-.961 5.208 1.524 9.512z"
196
- ></path>
197
- <path
198
- stroke="#0E8ADC"
199
- d="M9.024 10.282c-2.485 4.304-3.168 8.563-1.524 9.512 1.644.95 4.99-1.771 7.476-6.076 2.485-4.304 3.168-8.563 1.524-9.512-1.644-.95-4.99 1.771-7.476 6.076z"
200
- ></path>
201
- </svg>
202
- )
203
-
204
- export const Markdown = (props: WrapperProps) => (
205
- <svg
206
- xmlns="http://www.w3.org/2000/svg"
207
- fill="none"
208
- viewBox="0 0 24 24"
209
- {...wrapperProps(props)}
210
- >
211
- <title>{'Markdown'}</title>
212
- <path
213
- fill="#60A5FA"
214
- d="M3 15.714V8h2.323l2.322 2.836L9.968 8h2.322v7.714H9.968V11.29l-2.323 2.836-2.322-2.836v4.424H3zm14.516 0l-3.484-3.743h2.323V8h2.322v3.97H21l-3.484 3.744z"
215
- ></path>
216
- </svg>
217
- )
218
-
219
- export const Shell = (props: WrapperProps) => (
220
- <svg
221
- xmlns="http://www.w3.org/2000/svg"
222
- fill="none"
223
- viewBox="0 0 25 24"
224
- {...wrapperProps(props)}
225
- >
226
- <title>{'Shell'}</title>
227
- <path
228
- stroke="#14B8A6"
229
- strokeLinecap="round"
230
- strokeLinejoin="round"
231
- strokeWidth="2"
232
- d="M4.336 17l6-6-6-6M12.336 19h8"
233
- ></path>
234
- </svg>
235
- )
236
-
237
- export const Yaml = (props: WrapperProps) => (
238
- <svg
239
- xmlns="http://www.w3.org/2000/svg"
240
- fill="none"
241
- viewBox="0 0 24 24"
242
- {...wrapperProps(props)}
243
- >
244
- <title>YAML</title>
245
- <path
246
- fill="#A78BFA"
247
- d="M6.533 5.864h2.755l2.654 5.011h.113l2.654-5.011h2.756l-4.245 7.522V17.5h-2.443v-4.114L6.533 5.864z"
248
- ></path>
249
- </svg>
250
- )
251
-
252
- export const Rust = (props: WrapperProps) => (
253
- <svg
254
- xmlns="http://www.w3.org/2000/svg"
255
- fill="none"
256
- viewBox="0 0 25 24"
257
- {...wrapperProps(props)}
258
- >
259
- <title>Rust</title>
260
- <path
261
- fill="#EA580C"
262
- fillRule="evenodd"
263
- d="M12.58 2.136a.287.287 0 00-.488 0l-.526.85a8.974 8.974 0 00-.232.022l-.683-.73a.287.287 0 00-.478.096l-.35.935c-.075.021-.15.044-.224.067l-.812-.583a.287.287 0 00-.45.187l-.162.989a9.088 9.088 0 00-.204.11l-.913-.417a.287.287 0 00-.406.272l.036 1.005a9.099 9.099 0 00-.175.144l-.98-.231a.287.287 0 00-.345.345l.231.98a9.125 9.125 0 00-.144.175L4.27 6.316a.287.287 0 00-.271.406l.416.913a9.036 9.036 0 00-.11.203L3.317 8a.287.287 0 00-.187.45l.584.813a8.953 8.953 0 00-.068.223l-.935.35a.287.287 0 00-.095.479l.73.682a8.966 8.966 0 00-.023.233l-.85.526a.287.287 0 000 .488l.85.526c.007.078.014.156.023.233l-.73.682a.287.287 0 00.095.479l.935.35.068.223-.584.812a.287.287 0 00.187.451l.99.162c.035.068.072.135.109.203l-.416.913a.287.287 0 00.271.406l1.006-.036c.047.059.095.117.143.174l-.23.981a.287.287 0 00.344.345l.981-.23c.057.048.115.095.174.142l-.036 1.006a.287.287 0 00.406.272l.914-.417c.067.038.135.074.203.11l.161.99a.287.287 0 00.451.186l.813-.584c.074.024.148.046.223.068l.35.935a.287.287 0 00.478.095l.683-.73c.077.01.154.017.232.023l.526.85a.287.287 0 00.489 0l.526-.85c.078-.006.155-.014.232-.023l.682.73a.287.287 0 00.479-.095l.35-.935c.075-.022.15-.044.223-.068l.813.584a.287.287 0 00.45-.187l.162-.99a8.77 8.77 0 00.203-.109l.913.417a.287.287 0 00.406-.272l-.035-1.006c.058-.047.116-.094.174-.143l.98.231a.287.287 0 00.346-.345l-.231-.98.143-.175 1.006.036a.287.287 0 00.271-.406l-.416-.913a9.4 9.4 0 00.109-.203l.99-.162a.287.287 0 00.187-.45l-.584-.813a8.43 8.43 0 00.067-.223l.935-.35a.287.287 0 00.096-.479l-.73-.682c.009-.077.016-.155.023-.233l.85-.526a.287.287 0 000-.488l-.85-.526a8.844 8.844 0 00-.023-.233l.73-.682a.287.287 0 00-.096-.479l-.934-.35a9.246 9.246 0 00-.068-.223l.584-.812A.287.287 0 0021.357 8l-.99-.162a8.92 8.92 0 00-.11-.203l.417-.913a.287.287 0 00-.271-.406l-1.006.036a9.178 9.178 0 00-.143-.174l.23-.981a.287.287 0 00-.345-.345l-.98.23a9.43 9.43 0 00-.174-.142l.035-1.006a.287.287 0 00-.405-.272l-.914.417a9.11 9.11 0 00-.203-.11l-.162-.99a.287.287 0 00-.45-.186l-.813.584a9.088 9.088 0 00-.223-.068l-.35-.935a.287.287 0 00-.479-.095l-.682.73a9.062 9.062 0 00-.232-.023l-.526-.85zm-.257 1.62a.592.592 0 01.578.596.595.595 0 11-.578-.595zm1.363.98A7.324 7.324 0 0118.7 8.309l-.702 1.585a.547.547 0 00.275.717l1.352.6c.041.422.047.847.015 1.27h-.752c-.075 0-.106.05-.106.123v.344c0 .812-.457.99-.859 1.034-.383.044-.806-.161-.86-.394-.22-1.24-.583-1.526-1.152-1.975l-.041-.033c.736-.467 1.502-1.158 1.502-2.08 0-.998-.683-1.625-1.148-1.934-.655-.43-1.379-.516-1.574-.516H6.88a7.324 7.324 0 014.098-2.312l.916.96a.54.54 0 00.766.018l1.026-.978zm-8.46 4.407a.595.595 0 11-.034 1.19.595.595 0 01.034-1.19zm14.192.026a.595.595 0 11-.035 1.19.595.595 0 01.035-1.19zm-13.07.096h1.037v4.678H5.291a7.324 7.324 0 01-.237-2.797l1.282-.57a.542.542 0 00.276-.716l-.264-.595zm4.33.05h2.47c.128 0 .901.147.901.727 0 .48-.593.653-1.081.653h-2.293l.002-1.38zm0 3.36h1.892c.172 0 .924.05 1.164 1.011.026.104.064.291.107.503.078.389.174.861.247 1.06.113.345.57 1.034 1.058 1.034h3.089c-.207.277-.433.54-.677.785l-1.258-.27a.544.544 0 00-.645.417l-.298 1.394a7.323 7.323 0 01-6.108-.03l-.298-1.392a.542.542 0 00-.643-.418l-1.23.264a7.32 7.32 0 01-.636-.75h5.984c.067 0 .113-.011.113-.074v-2.117c0-.061-.046-.075-.113-.075h-1.75l.001-1.341zm-2.763 4.848a.595.595 0 11-.034 1.19.595.595 0 01.034-1.19zm8.814.027a.596.596 0 11-.035 1.19.596.596 0 01.035-1.19z"
264
- clipRule="evenodd"
265
- ></path>
266
- </svg>
267
- )
268
-
269
- export const BracketsRed = (props: WrapperProps) => (
270
- <svg
271
- xmlns="http://www.w3.org/2000/svg"
272
- fill="none"
273
- viewBox="0 0 24 24"
274
- {...wrapperProps(props)}
275
- >
276
- <title>Rust</title>
277
- <path
278
- fill="#F87171"
279
- d="M4.778 6.667A2.667 2.667 0 017.444 4a.889.889 0 010 1.778.889.889 0 00-.888.889v3.5c0 .701-.273 1.35-.73 1.833.457.483.73 1.132.73 1.832v3.501c0 .491.398.89.888.89a.889.889 0 010 1.777 2.667 2.667 0 01-2.666-2.667v-3.5a.889.889 0 00-.674-.863l-.43-.108a.889.889 0 010-1.724l.43-.108a.889.889 0 00.674-.862V6.667zm14.222 0A2.667 2.667 0 0016.333 4a.889.889 0 000 1.778c.491 0 .89.398.89.889v3.5c0 .701.272 1.35.729 1.833a2.664 2.664 0 00-.73 1.832v3.501a.889.889 0 01-.889.89.889.889 0 000 1.777A2.667 2.667 0 0019 17.333v-3.5c0-.408.278-.764.673-.863l.431-.108a.889.889 0 000-1.724l-.43-.108a.889.889 0 01-.674-.862V6.667z"
280
- ></path>
281
- </svg>
282
- )
@@ -1,97 +0,0 @@
1
- import { Info, Lightbulb, AlertTriangle, AlertCircle } from '../ui-base/icons'
2
- import { cn } from '../../utils/cn'
3
-
4
- export type CalloutVariant = 'note' | 'tip' | 'warning' | 'danger' | 'info'
5
-
6
- export interface CalloutProps extends React.HTMLAttributes<HTMLDivElement> {
7
- variant?: CalloutVariant
8
- title?: string
9
- }
10
-
11
- const variantStyles: Record<
12
- CalloutVariant,
13
- {
14
- container: string
15
- titleText: string
16
- iconColor: string
17
- icon: React.ComponentType<any>
18
- defaultTitle: string
19
- }
20
- > = {
21
- note: {
22
- container:
23
- 'bg-slate-500/5 dark:bg-slate-500/10 border-slate-500/40 text-slate-800 dark:text-slate-200',
24
- titleText: 'text-slate-900 dark:text-slate-100',
25
- iconColor: 'text-slate-500',
26
- icon: Info,
27
- defaultTitle: 'Note',
28
- },
29
- info: {
30
- container:
31
- 'bg-indigo-500/5 dark:bg-indigo-500/10 border-indigo-500/40 text-indigo-800 dark:text-indigo-200',
32
- titleText: 'text-indigo-900 dark:text-indigo-100',
33
- iconColor: 'text-indigo-500',
34
- icon: Info,
35
- defaultTitle: 'Info',
36
- },
37
- tip: {
38
- container:
39
- 'bg-green-500/5 dark:bg-green-500/10 border-green-500/40 text-green-800 dark:text-green-200',
40
- titleText: 'text-green-900 dark:text-green-100',
41
- iconColor: 'text-green-500',
42
- icon: Lightbulb,
43
- defaultTitle: 'Tip',
44
- },
45
- warning: {
46
- container:
47
- 'bg-amber-500/5 dark:bg-amber-500/10 border-amber-500/40 text-amber-800 dark:text-amber-200',
48
- titleText: 'text-amber-900 dark:text-amber-100',
49
- iconColor: 'text-amber-500',
50
- icon: AlertTriangle,
51
- defaultTitle: 'Warning',
52
- },
53
- danger: {
54
- container:
55
- 'bg-rose-500/5 dark:bg-rose-500/10 border-rose-500/40 text-rose-800 dark:text-rose-200',
56
- titleText: 'text-rose-900 dark:text-rose-100',
57
- iconColor: 'text-rose-500',
58
- icon: AlertCircle,
59
- defaultTitle: 'Danger',
60
- },
61
- }
62
-
63
- export function Callout({
64
- children,
65
- className = '',
66
- variant = 'note',
67
- title,
68
- ...props
69
- }: CalloutProps) {
70
- const styles = variantStyles[variant] || variantStyles.note
71
- const Icon = styles.icon
72
-
73
- return (
74
- <div
75
- className={cn(
76
- 'my-6 flex gap-4 p-4 rounded-xl border-2',
77
- styles.container,
78
- className,
79
- )}
80
- {...props}
81
- >
82
- <div className={cn('shrink-0 pt-0.5', styles.iconColor)}>
83
- <Icon className="w-5 h-5 stroke-[2]" />
84
- </div>
85
- <div className="flex-1 text-[0.875rem] leading-[1.6]">
86
- <div className={cn('font-bold text-sm mb-1', styles.titleText)}>
87
- {title || styles.defaultTitle}
88
- </div>
89
- <div className="prose prose-neutral dark:prose-invert max-w-none [&>p]:m-0 [&>p+p]:mt-2">
90
- {children}
91
- </div>
92
- </div>
93
- </div>
94
- )
95
- }
96
-
97
- export default Callout