@inferencesh/ui 0.0.0-stage → 0.1.2

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 (165) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +68 -2
  3. package/components.json +22 -0
  4. package/package.json +231 -4
  5. package/src/components/audio-player.tsx +549 -0
  6. package/src/components/button.tsx +13 -0
  7. package/src/components/chart.tsx +403 -0
  8. package/src/components/circuit.tsx +276 -0
  9. package/src/components/code-block/code-block.tsx +260 -0
  10. package/src/components/code-block/index.ts +18 -0
  11. package/src/components/code-block/languages.ts +311 -0
  12. package/src/components/code-block/styles.ts +39 -0
  13. package/src/components/code-block/tokenizer.ts +290 -0
  14. package/src/components/code-block/types.ts +38 -0
  15. package/src/components/code-block/utils.ts +39 -0
  16. package/src/components/code.tsx +48 -0
  17. package/src/components/cookie-consent.tsx +137 -0
  18. package/src/components/copy-button.tsx +44 -0
  19. package/src/components/country-dropdown.tsx +188 -0
  20. package/src/components/glow-loader-fast.tsx +32 -0
  21. package/src/components/glow-loader-mono.tsx +33 -0
  22. package/src/components/glow-loader-sm-fast.tsx +32 -0
  23. package/src/components/glow-loader-sm-mono.tsx +34 -0
  24. package/src/components/glow-loader-sm.tsx +32 -0
  25. package/src/components/glow-loader.tsx +32 -0
  26. package/src/components/glow-logo.tsx +32 -0
  27. package/src/components/gradient.tsx +80 -0
  28. package/src/components/index.ts +45 -0
  29. package/src/components/inline-sidebar.tsx +351 -0
  30. package/src/components/input-color.tsx +349 -0
  31. package/src/components/logo-base.tsx +213 -0
  32. package/src/components/logo-color.tsx +23 -0
  33. package/src/components/logo-full.tsx +71 -0
  34. package/src/components/logo-svg.tsx +23 -0
  35. package/src/components/menu-navigation.tsx +359 -0
  36. package/src/components/multi-select.tsx +721 -0
  37. package/src/components/pastel-gradient.tsx +25 -0
  38. package/src/components/pixel-symmetry.tsx +151 -0
  39. package/src/components/progress.tsx +28 -0
  40. package/src/components/scroll-more.tsx +131 -0
  41. package/src/components/select.tsx +85 -0
  42. package/src/components/shimmering-text.tsx +108 -0
  43. package/src/components/sidebar-light.tsx +102 -0
  44. package/src/components/sonner.tsx +38 -0
  45. package/src/components/theme-switcher-sidebar.tsx +56 -0
  46. package/src/components/theme-switcher-simple.tsx +110 -0
  47. package/src/components/theme-switcher.tsx +47 -0
  48. package/src/components/toggle-group.tsx +55 -0
  49. package/src/components/tooltip-button.tsx +91 -0
  50. package/src/components/tooltip.tsx +71 -0
  51. package/src/components/tree-view.tsx +499 -0
  52. package/src/components/unglow-loader.tsx +33 -0
  53. package/src/components/waveform.tsx +1632 -0
  54. package/src/components/zoomable-image.tsx +76 -0
  55. package/src/docs/api-docs.tsx +763 -0
  56. package/src/docs/callout.tsx +160 -0
  57. package/src/docs/code-group.tsx +215 -0
  58. package/src/docs/copy-menu.tsx +143 -0
  59. package/src/docs/doc-tabs.tsx +84 -0
  60. package/src/docs/index.ts +16 -0
  61. package/src/docs/steps.tsx +105 -0
  62. package/src/docs/table-of-contents.tsx +174 -0
  63. package/src/examples/guide-markdown.ts +129 -0
  64. package/src/examples/index.ts +1153 -0
  65. package/src/global.d.ts +1 -0
  66. package/src/hooks/use-copy-to-clipboard.ts +36 -0
  67. package/src/hooks/use-mobile.ts +19 -0
  68. package/src/lib/display-name.ts +15 -0
  69. package/src/lib/example-input.ts +130 -0
  70. package/src/lib/plans.ts +44 -0
  71. package/src/lib/safe-content.ts +137 -0
  72. package/src/lib/schema.ts +320 -0
  73. package/src/lib/storage.ts +108 -0
  74. package/src/markdown/docs-markdown-renderer.tsx +518 -0
  75. package/src/markdown/helpers.ts +95 -0
  76. package/src/markdown/index.ts +24 -0
  77. package/src/markdown/markdown-renderer.tsx +232 -0
  78. package/src/markdown/youtube-embed.tsx +43 -0
  79. package/src/og/image.ts +312 -0
  80. package/src/og/index.tsx +430 -0
  81. package/src/og/query.ts +26 -0
  82. package/src/shadcn/accordion.tsx +71 -0
  83. package/src/shadcn/alert-dialog.tsx +187 -0
  84. package/src/shadcn/alert.tsx +75 -0
  85. package/src/shadcn/aspect-ratio.tsx +22 -0
  86. package/src/shadcn/attachment.tsx +207 -0
  87. package/src/shadcn/avatar.tsx +106 -0
  88. package/src/shadcn/badge.tsx +51 -0
  89. package/src/shadcn/breadcrumb.tsx +124 -0
  90. package/src/shadcn/bubble.tsx +127 -0
  91. package/src/shadcn/button-group.tsx +87 -0
  92. package/src/shadcn/button.tsx +57 -0
  93. package/src/shadcn/calendar.tsx +219 -0
  94. package/src/shadcn/card.tsx +102 -0
  95. package/src/shadcn/carousel.tsx +242 -0
  96. package/src/shadcn/chart.tsx +372 -0
  97. package/src/shadcn/checkbox.tsx +28 -0
  98. package/src/shadcn/collapsible.tsx +19 -0
  99. package/src/shadcn/combobox.tsx +297 -0
  100. package/src/shadcn/command.tsx +194 -0
  101. package/src/shadcn/context-menu.tsx +270 -0
  102. package/src/shadcn/dialog.tsx +158 -0
  103. package/src/shadcn/direction.tsx +4 -0
  104. package/src/shadcn/drawer.tsx +227 -0
  105. package/src/shadcn/dropdown-menu.tsx +265 -0
  106. package/src/shadcn/empty.tsx +103 -0
  107. package/src/shadcn/field.tsx +238 -0
  108. package/src/shadcn/form.tsx +173 -0
  109. package/src/shadcn/hover-card.tsx +50 -0
  110. package/src/shadcn/index.ts +53 -0
  111. package/src/shadcn/input-group.tsx +156 -0
  112. package/src/shadcn/input-otp.tsx +84 -0
  113. package/src/shadcn/input.tsx +19 -0
  114. package/src/shadcn/item.tsx +201 -0
  115. package/src/shadcn/kbd.tsx +26 -0
  116. package/src/shadcn/label.tsx +19 -0
  117. package/src/shadcn/marker.tsx +70 -0
  118. package/src/shadcn/menubar.tsx +278 -0
  119. package/src/shadcn/message-scroller.tsx +131 -0
  120. package/src/shadcn/message.tsx +91 -0
  121. package/src/shadcn/native-select.tsx +60 -0
  122. package/src/shadcn/navigation-menu.tsx +167 -0
  123. package/src/shadcn/pagination.tsx +130 -0
  124. package/src/shadcn/popover.tsx +87 -0
  125. package/src/shadcn/progress.tsx +82 -0
  126. package/src/shadcn/radio-group.tsx +35 -0
  127. package/src/shadcn/resizable.tsx +49 -0
  128. package/src/shadcn/scroll-area.tsx +52 -0
  129. package/src/shadcn/select.tsx +200 -0
  130. package/src/shadcn/separator.tsx +22 -0
  131. package/src/shadcn/sheet.tsx +136 -0
  132. package/src/shadcn/sidebar.tsx +721 -0
  133. package/src/shadcn/skeleton.tsx +13 -0
  134. package/src/shadcn/slider.tsx +51 -0
  135. package/src/shadcn/sonner.tsx +49 -0
  136. package/src/shadcn/spinner.tsx +10 -0
  137. package/src/shadcn/switch.tsx +29 -0
  138. package/src/shadcn/table.tsx +115 -0
  139. package/src/shadcn/tabs.tsx +79 -0
  140. package/src/shadcn/textarea.tsx +17 -0
  141. package/src/shadcn/toggle-group.tsx +89 -0
  142. package/src/shadcn/toggle.tsx +44 -0
  143. package/src/shadcn/tooltip.tsx +63 -0
  144. package/src/theme/config.ts +48 -0
  145. package/src/theme/css/base.css +92 -0
  146. package/src/theme/css/bitboy.css +75 -0
  147. package/src/theme/css/dark.css +47 -0
  148. package/src/theme/css/designer.css +122 -0
  149. package/src/theme/css/fonts.css +33 -0
  150. package/src/theme/css/globals.css +14 -0
  151. package/src/theme/css/hackintosh.css +57 -0
  152. package/src/theme/css/llama.css +103 -0
  153. package/src/theme/css/safelist.css +39 -0
  154. package/src/theme/css/shadcn.css +77 -0
  155. package/src/theme/css/theme.css +216 -0
  156. package/src/theme/embed-theme.ts +146 -0
  157. package/src/theme/fonts/FiraCode-VF.woff2 +0 -0
  158. package/src/theme/fonts/Hack-Regular.woff2 +0 -0
  159. package/src/theme/fonts/LICENSE-FiraCode.txt +93 -0
  160. package/src/theme/fonts/LICENSE-Hack.txt +45 -0
  161. package/src/theme/fonts/LICENSE-MonaSans.txt +93 -0
  162. package/src/theme/fonts/Mona-Sans.woff2 +0 -0
  163. package/src/theme/index.ts +15 -0
  164. package/src/utils/cn.ts +3 -0
  165. package/src/utils/index.ts +2 -0
@@ -0,0 +1,188 @@
1
+ "use client";
2
+ import React, { forwardRef, useCallback, useEffect, useState } from "react";
3
+
4
+ // shadcn
5
+ import {
6
+ Command,
7
+ CommandEmpty,
8
+ CommandGroup,
9
+ CommandInput,
10
+ CommandItem,
11
+ CommandList
12
+ } from "../shadcn/command";
13
+ import {
14
+ Popover,
15
+ PopoverContent,
16
+ PopoverTrigger
17
+ } from "../shadcn/popover";
18
+
19
+ // utils
20
+ import { cn } from "cn";
21
+
22
+ // assets
23
+ import { CheckIcon, ChevronDown, Globe } from "lucide-react";
24
+ import { CircleFlag } from "react-circle-flags";
25
+
26
+ // data
27
+ import { countries } from "country-data-list";
28
+
29
+ // Country interface
30
+ export interface Country {
31
+ alpha2: string;
32
+ alpha3: string;
33
+ countryCallingCodes: string[];
34
+ currencies: string[];
35
+ emoji?: string;
36
+ ioc: string;
37
+ languages: string[];
38
+ name: string;
39
+ status: string;
40
+ }
41
+
42
+ // Dropdown props
43
+ interface CountryDropdownProps {
44
+ options?: Country[];
45
+ onChange?: (country: Country) => void;
46
+ defaultValue?: string;
47
+ disabled?: boolean;
48
+ placeholder?: string;
49
+ slim?: boolean;
50
+ }
51
+
52
+ const CountryDropdownComponent = (
53
+ {
54
+ options = countries.all.filter(
55
+ (country: Country) =>
56
+ country.emoji && country.status !== "deleted" && country.ioc !== "PRK"
57
+ ),
58
+ onChange,
59
+ defaultValue,
60
+ disabled = false,
61
+ placeholder = "Select a country",
62
+ slim = false,
63
+ ...props
64
+ }: CountryDropdownProps,
65
+ ref: React.ForwardedRef<HTMLButtonElement>
66
+ ) => {
67
+ const [open, setOpen] = useState(false);
68
+ const [selectedCountry, setSelectedCountry] = useState<Country | undefined>(
69
+ undefined
70
+ );
71
+
72
+ useEffect(() => {
73
+ if (defaultValue) {
74
+ // Match either alpha2 or alpha3 code
75
+ const initialCountry = options.find(
76
+ (country) => country.alpha2 === defaultValue || country.alpha3 === defaultValue
77
+ );
78
+ if (initialCountry) {
79
+ setSelectedCountry(initialCountry);
80
+ } else {
81
+ // Reset selected country if defaultValue is not found
82
+ setSelectedCountry(undefined);
83
+ }
84
+ } else {
85
+ // Reset selected country if defaultValue is undefined or null
86
+ setSelectedCountry(undefined);
87
+ }
88
+ }, [defaultValue, options]);
89
+
90
+ const handleSelect = useCallback(
91
+ (country: Country) => {
92
+ console.log("🌍 CountryDropdown value: ", country);
93
+ setSelectedCountry(country);
94
+ onChange?.(country);
95
+ setOpen(false);
96
+ },
97
+ [onChange]
98
+ );
99
+
100
+ const triggerClasses = cn(
101
+ "flex h-9 w-full items-center justify-between whitespace-nowrap rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-1 focus:ring-ring disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1 cursor-pointer",
102
+ slim === true && "w-20"
103
+ );
104
+
105
+ return (
106
+ <Popover open={open} onOpenChange={setOpen}>
107
+ <PopoverTrigger
108
+ ref={ref}
109
+ className={triggerClasses}
110
+ disabled={disabled}
111
+ {...props}
112
+ >
113
+ {selectedCountry ? (
114
+ <div className="flex items-center flex-grow w-0 gap-2 overflow-hidden">
115
+ <div className="inline-flex items-center justify-center w-5 h-5 shrink-0 overflow-hidden rounded-full">
116
+ <CircleFlag
117
+ countryCode={selectedCountry.alpha2.toLowerCase()}
118
+ height={20}
119
+ />
120
+ </div>
121
+ {slim === false && (
122
+ <span className="overflow-hidden text-ellipsis whitespace-nowrap">
123
+ {selectedCountry.name}
124
+ </span>
125
+ )}
126
+ </div>
127
+ ) : (
128
+ <span className="text-muted-foreground/30">
129
+ {slim === false ? (
130
+ placeholder || setSelectedCountry.name
131
+ ) : (
132
+ <Globe size={20} />
133
+ )}
134
+ </span>
135
+ )}
136
+ <ChevronDown size={16} />
137
+ </PopoverTrigger>
138
+ <PopoverContent
139
+ side="bottom"
140
+ className="min-w-[--radix-popper-anchor-width] p-0"
141
+ >
142
+ <Command className="w-full max-h-[200px] sm:max-h-[270px]">
143
+ <CommandList>
144
+ <div className="sticky top-0 z-10 bg-popover">
145
+ <CommandInput placeholder="Search country..." />
146
+ </div>
147
+ <CommandEmpty>No country found.</CommandEmpty>
148
+ <CommandGroup>
149
+ {options
150
+ .filter((x) => x.name)
151
+ .map((option, key: number) => (
152
+ <CommandItem
153
+ className="flex items-center w-full gap-2"
154
+ key={key}
155
+ onSelect={() => handleSelect(option)}
156
+ >
157
+ <div className="flex flex-grow w-0 space-x-2 overflow-hidden">
158
+ <div className="inline-flex items-center justify-center w-5 h-5 shrink-0 overflow-hidden rounded-full">
159
+ <CircleFlag
160
+ countryCode={option.alpha2.toLowerCase()}
161
+ height={20}
162
+ />
163
+ </div>
164
+ <span className="overflow-hidden text-ellipsis whitespace-nowrap">
165
+ {option.name}
166
+ </span>
167
+ </div>
168
+ <CheckIcon
169
+ className={cn(
170
+ "ml-auto h-4 w-4 shrink-0",
171
+ option.name === selectedCountry?.name
172
+ ? "opacity-100"
173
+ : "opacity-0"
174
+ )}
175
+ />
176
+ </CommandItem>
177
+ ))}
178
+ </CommandGroup>
179
+ </CommandList>
180
+ </Command>
181
+ </PopoverContent>
182
+ </Popover>
183
+ );
184
+ };
185
+
186
+ CountryDropdownComponent.displayName = "CountryDropdownComponent";
187
+
188
+ export const CountryDropdown = forwardRef(CountryDropdownComponent);
@@ -0,0 +1,32 @@
1
+ "use client";
2
+
3
+ import LogoBase from "./logo-base";
4
+
5
+ interface GlowLoaderFastProps {
6
+ width?: number;
7
+ height?: number;
8
+ className?: string;
9
+ strokeWidth?: number;
10
+ }
11
+
12
+ /**
13
+ * Fast animated logo loader (1s animation cycle).
14
+ * For contexts where speed/urgency is implied.
15
+ */
16
+ const GlowLoaderFast = ({ width = 240, height = 240, className, strokeWidth = 3 }: GlowLoaderFastProps) => {
17
+ return (
18
+ <LogoBase
19
+ width={width}
20
+ height={height}
21
+ className={className}
22
+ strokeWidth={strokeWidth}
23
+ animated={true}
24
+ animationDuration={1}
25
+ animationStagger={0.01}
26
+ colored={true}
27
+ withGlow={true}
28
+ />
29
+ );
30
+ };
31
+
32
+ export default GlowLoaderFast;
@@ -0,0 +1,33 @@
1
+ "use client";
2
+
3
+ import LogoBase from "./logo-base";
4
+
5
+ interface GlowLoaderMonoProps {
6
+ width?: number;
7
+ height?: number;
8
+ className?: string;
9
+ strokeWidth?: number;
10
+ }
11
+
12
+ /**
13
+ * Monochrome animated logo loader (uses muted-foreground).
14
+ * Apply opacity via className if needed.
15
+ */
16
+ const GlowLoaderMono = ({ width = 240, height = 240, className, strokeWidth }: GlowLoaderMonoProps) => {
17
+ return (
18
+ <LogoBase
19
+ width={width}
20
+ height={height}
21
+ className={className}
22
+ strokeWidth={strokeWidth}
23
+ animated={true}
24
+ animationDuration={3}
25
+ animationStagger={0.05}
26
+ colored={false}
27
+ monoColor="hsl(var(--muted-foreground))"
28
+ withGlow={false}
29
+ />
30
+ );
31
+ };
32
+
33
+ export default GlowLoaderMono;
@@ -0,0 +1,32 @@
1
+ "use client";
2
+
3
+ import LogoBase from "./logo-base";
4
+
5
+ interface GlowLoaderSmFastProps {
6
+ width?: number;
7
+ height?: number;
8
+ className?: string;
9
+ strokeWidth?: number;
10
+ }
11
+
12
+ /**
13
+ * Small fast animated logo loader (60px, 1s animation).
14
+ * For inline loading indicators that need urgency.
15
+ */
16
+ const GlowLoaderSmFast = ({ width = 60, height = 60, className, strokeWidth = 1 }: GlowLoaderSmFastProps) => {
17
+ return (
18
+ <LogoBase
19
+ width={width}
20
+ height={height}
21
+ className={className}
22
+ strokeWidth={strokeWidth}
23
+ animated={true}
24
+ animationDuration={1}
25
+ animationStagger={0.05}
26
+ colored={true}
27
+ withGlow={true}
28
+ />
29
+ );
30
+ };
31
+
32
+ export default GlowLoaderSmFast;
@@ -0,0 +1,34 @@
1
+ "use client";
2
+
3
+ import LogoBase from "./logo-base";
4
+
5
+ interface GlowLoaderSmMonoProps {
6
+ width?: number;
7
+ height?: number;
8
+ className?: string;
9
+ strokeWidth?: number;
10
+ }
11
+
12
+ /**
13
+ * Small monochrome animated logo loader (60px, thicker strokes).
14
+ * Apply opacity via className if needed.
15
+ */
16
+ const GlowLoaderSmMono = ({ width = 60, height = 60, className, strokeWidth = 16 }: GlowLoaderSmMonoProps) => {
17
+ return (
18
+ <LogoBase
19
+ width={width}
20
+ height={height}
21
+ className={className}
22
+ strokeWidth={strokeWidth}
23
+ animated={true}
24
+ animationDuration={3}
25
+ animationStagger={0.05}
26
+ colored={false}
27
+ monoColor="hsl(var(--muted-foreground))"
28
+ withGlow={false}
29
+ label="loading"
30
+ />
31
+ );
32
+ };
33
+
34
+ export default GlowLoaderSmMono;
@@ -0,0 +1,32 @@
1
+ "use client";
2
+
3
+ import LogoBase from "./logo-base";
4
+
5
+ interface GlowLoaderSmProps {
6
+ width?: number;
7
+ height?: number;
8
+ className?: string;
9
+ strokeWidth?: number;
10
+ }
11
+
12
+ /**
13
+ * Small animated logo loader (60px, 16px strokes, 3s animation).
14
+ * For inline loading indicators.
15
+ */
16
+ const GlowLoaderSm = ({ width = 60, height = 60, className, strokeWidth = 2 }: GlowLoaderSmProps) => {
17
+ return (
18
+ <LogoBase
19
+ width={width}
20
+ height={height}
21
+ className={className}
22
+ strokeWidth={strokeWidth}
23
+ animated={true}
24
+ animationDuration={3}
25
+ animationStagger={0.05}
26
+ colored={true}
27
+ withGlow={true}
28
+ />
29
+ );
30
+ };
31
+
32
+ export default GlowLoaderSm;
@@ -0,0 +1,32 @@
1
+ "use client";
2
+
3
+ import LogoBase from "./logo-base";
4
+
5
+ interface GlowLoaderProps {
6
+ width?: number;
7
+ height?: number;
8
+ className?: string;
9
+ strokeWidth?: number;
10
+ }
11
+
12
+ /**
13
+ * Standard animated logo loader (240px, 3s animation cycle).
14
+ * For full-page loading states.
15
+ */
16
+ const GlowLoader = ({ width = 240, height = 240, className, strokeWidth = 1 }: GlowLoaderProps) => {
17
+ return (
18
+ <LogoBase
19
+ width={width}
20
+ height={height}
21
+ className={className}
22
+ strokeWidth={strokeWidth}
23
+ animated={true}
24
+ animationDuration={3}
25
+ animationStagger={0.05}
26
+ colored={true}
27
+ withGlow={true}
28
+ />
29
+ );
30
+ };
31
+
32
+ export default GlowLoader;
@@ -0,0 +1,32 @@
1
+ "use client";
2
+
3
+ import LogoBase from "./logo-base";
4
+
5
+ interface GlowLogoProps {
6
+ width?: number;
7
+ height?: number;
8
+ className?: string;
9
+ strokeWidth?: number;
10
+ }
11
+
12
+ /**
13
+ * Slow ambient animated logo (8s animation cycle).
14
+ * For decorative/branding displays where loading isn't implied.
15
+ */
16
+ const GlowLogo = ({ width = 240, height = 240, className, strokeWidth = 1 }: GlowLogoProps) => {
17
+ return (
18
+ <LogoBase
19
+ width={width}
20
+ height={height}
21
+ className={className}
22
+ strokeWidth={strokeWidth}
23
+ animated={true}
24
+ animationDuration={8}
25
+ animationStagger={0.05}
26
+ colored={true}
27
+ withGlow={true}
28
+ />
29
+ );
30
+ };
31
+
32
+ export default GlowLogo;
@@ -0,0 +1,80 @@
1
+ import { cn } from "cn";
2
+
3
+ export type GradientVariant =
4
+ | "sunset"
5
+ | "poppy"
6
+ | "rosebud"
7
+ | "sunshine"
8
+ | "gold"
9
+ | "twilight"
10
+ | "powder"
11
+ | "holly"
12
+ | "northern-lights"
13
+ | "raw-green"
14
+ | "lime"
15
+ | "nemesia"
16
+ | "snowflake"
17
+ | "blue-bird"
18
+ | "blueprint"
19
+ | "salvia"
20
+ | "heartsease"
21
+ | "amaranthus"
22
+ | "candy"
23
+ | "verbena"
24
+ | "clematis"
25
+ | "hibiscus"
26
+ | "clear-night"
27
+ | "clay"
28
+ | "soil"
29
+ | "silver"
30
+ | "fir-tree"
31
+ | "metal"
32
+ | "darkness";
33
+
34
+ interface GradientProps extends React.HTMLAttributes<HTMLDivElement> {
35
+ variant?: GradientVariant;
36
+ }
37
+ const gradientVariants: Record<GradientVariant, string> = {
38
+ sunset: "bg-gradient-to-r from-red-400 to-orange-400",
39
+ poppy: "bg-gradient-to-r from-rose-300 to-red-400",
40
+ rosebud: "bg-gradient-to-r from-pink-400 to-rose-400",
41
+ sunshine: "bg-gradient-to-r from-amber-100 to-yellow-300",
42
+ gold: "bg-gradient-to-r from-amber-100 to-yellow-400",
43
+ twilight: "bg-gradient-to-r from-amber-400 to-pink-400",
44
+ powder: "bg-gradient-to-r from-violet-100 to-pink-100",
45
+ holly: "bg-gradient-to-r from-blue-100 to-cyan-100",
46
+ "northern-lights": "bg-gradient-to-r from-teal-100 to-teal-400",
47
+ "raw-green": "bg-gradient-to-r from-lime-300 to-lime-400",
48
+ lime: "bg-gradient-to-r from-teal-300 to-yellow-100",
49
+ nemesia: "bg-gradient-to-r from-emerald-300 to-cyan-300",
50
+ snowflake: "bg-gradient-to-r from-indigo-300 to-cyan-300",
51
+ "blue-bird": "bg-gradient-to-r from-cyan-400 to-blue-400",
52
+ blueprint: "bg-gradient-to-r from-indigo-400 to-blue-400",
53
+ salvia: "bg-gradient-to-r from-blue-500 to-violet-500",
54
+ heartsease: "bg-gradient-to-r from-fuchsia-500 to-pink-500",
55
+ amaranthus: "bg-gradient-to-r from-fuchsia-500 to-purple-500",
56
+ candy: "bg-gradient-to-r from-fuchsia-400 to-pink-400",
57
+ verbena: "bg-gradient-to-r from-violet-400 to-purple-400",
58
+ clematis: "bg-gradient-to-r from-violet-500 to-indigo-500",
59
+ hibiscus: "bg-gradient-to-r from-purple-400 to-purple-800",
60
+ "clear-night": "bg-gradient-to-r from-blue-700 to-indigo-800",
61
+ clay: "bg-gradient-to-r from-neutral-200 to-stone-300",
62
+ soil: "bg-gradient-to-r from-stone-400 to-stone-600",
63
+ silver: "bg-gradient-to-r from-slate-200 to-slate-400",
64
+ "fir-tree": "bg-gradient-to-r from-emerald-400 to-emerald-800",
65
+ metal: "bg-gradient-to-r from-slate-400 to-slate-700",
66
+ darkness: "bg-gradient-to-r from-slate-800 to-slate-600",
67
+ };
68
+
69
+ export function Gradient({
70
+ variant = "salvia",
71
+ className,
72
+ ...props
73
+ }: GradientProps) {
74
+ return (
75
+ <div
76
+ className={cn(gradientVariants[variant], className)}
77
+ {...props}
78
+ />
79
+ );
80
+ }
@@ -0,0 +1,45 @@
1
+ // Custom inference UI components
2
+ // Re-exported from @inference/common/ui/infsh
3
+
4
+ export * from "./audio-player"
5
+ export * from "./circuit"
6
+ export * from "./pastel-gradient"
7
+ export * from "./pixel-symmetry"
8
+ export * from "./code"
9
+ export * from "./copy-button"
10
+ export { default as CookieConsent } from "./cookie-consent"
11
+ export * from "./country-dropdown"
12
+ export * from "./gradient"
13
+ export * from "./inline-sidebar"
14
+ export * from "./input-color"
15
+ export * from "./logo-color"
16
+ export * from "./logo-full"
17
+ export * from "./logo-svg"
18
+ export * from "./menu-navigation"
19
+ export * from "./multi-select"
20
+ export * from "./scroll-more"
21
+ export * from "./shimmering-text"
22
+ export * from "./tooltip-button"
23
+ export * from "./tree-view"
24
+ export * from "./waveform"
25
+ export * from "./zoomable-image"
26
+
27
+ // Theme (sidebar-based - requires SidebarProvider)
28
+ export * from "./theme-switcher"
29
+ export * from "./theme-switcher-sidebar"
30
+ // Theme (simple - no sidebar required)
31
+ export * from "./theme-switcher-simple"
32
+
33
+ // Loaders
34
+ export { default as GlowLoader } from "./glow-loader"
35
+ export { default as GlowLoaderSm } from "./glow-loader-sm"
36
+ export { default as GlowLogo } from "./glow-logo"
37
+ export { default as GlowLoaderFast } from "./glow-loader-fast"
38
+ export { default as GlowLoaderMono } from "./glow-loader-mono"
39
+ export { default as GlowLoaderSmFast } from "./glow-loader-sm-fast"
40
+ export { default as GlowLoaderSmMono } from "./glow-loader-sm-mono"
41
+ export { default as UnglowLoader } from "./unglow-loader"
42
+ export * from "./select"
43
+ export * from "./sidebar-light"
44
+ export * from "./toggle-group"
45
+ export * from "./button"