@toolr/ui-design 0.1.8 → 0.1.9
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.
- package/ai-manifest.json +35 -20
- package/components/composites/dashboard-list-item.tsx +172 -0
- package/components/composites/dashboard-panel.tsx +218 -0
- package/components/content/info-panel-primitives.tsx +9 -8
- package/components/diagrams/diagram-utils.tsx +2 -1
- package/components/hooks/use-dropdown-portal.ts +39 -0
- package/components/lib/accent-context.ts +10 -0
- package/components/lib/{ai-tools.tsx → coding-agents.tsx} +23 -8
- package/components/lib/custom-icons.tsx +37 -0
- package/components/lib/git-providers.tsx +39 -0
- package/components/lib/theme-engine.ts +59 -10
- package/components/lib/toolr-brand.tsx +23 -9
- package/components/sections/captured-issues/captured-issues-panel.tsx +17 -8
- package/components/sections/{ai-tools-paths/tools-paths-panel.tsx → coding-agent-paths/agent-paths-panel.tsx} +70 -62
- package/components/sections/coding-agent-paths/index.ts +37 -0
- package/components/sections/{ai-tools-paths → coding-agent-paths}/types.ts +28 -28
- package/components/sections/coding-agent-paths/use-agent-paths.ts +159 -0
- package/components/sections/golden-snapshots/file-diff-viewer.tsx +10 -9
- package/components/sections/golden-snapshots/golden-sync-panel.tsx +12 -3
- package/components/sections/golden-snapshots/snapshot-manager.tsx +9 -7
- package/components/sections/golden-snapshots/status-overview.tsx +8 -8
- package/components/sections/golden-snapshots/version-manager.tsx +6 -6
- package/components/sections/prompt-editor/file-type-tabbed-prompt-editor.tsx +3 -3
- package/components/sections/prompt-editor/index.ts +1 -1
- package/components/sections/prompt-editor/simulator-prompt-editor.tsx +13 -5
- package/components/sections/prompt-editor/tabbed-prompt-editor.tsx +18 -10
- package/components/sections/prompt-editor/types.ts +2 -2
- package/components/sections/report-bug/report-bug-form.tsx +12 -4
- package/components/sections/report-bug/screenshot-uploader.tsx +11 -3
- package/components/sections/snapshot-browser/snapshot-browser-panel.tsx +12 -4
- package/components/sections/snapshot-browser/snapshot-tree.tsx +5 -4
- package/components/sections/snapshot-browser/types.ts +1 -1
- package/components/sections/snippets-editor/snippets-editor.tsx +16 -9
- package/components/settings/SettingsHeader.tsx +2 -2
- package/components/settings/SettingsPanel.tsx +11 -3
- package/components/settings/SettingsTreeNav.tsx +15 -9
- package/components/ui/action-dialog.tsx +24 -30
- package/components/ui/ai-action-button.tsx +10 -7
- package/components/ui/ai-execution-action-buttons.tsx +13 -5
- package/components/ui/badge.tsx +7 -4
- package/components/ui/bottom-panel-header.tsx +9 -5
- package/components/ui/breadcrumb.tsx +9 -1
- package/components/ui/{extension-list-card.tsx → capability-list-card.tsx} +13 -5
- package/components/ui/checkbox.tsx +6 -3
- package/components/ui/collapsible-section.tsx +38 -29
- package/components/ui/confirm-badge.tsx +7 -4
- package/components/ui/cookie-consent.tsx +13 -7
- package/components/ui/detail-section.tsx +24 -16
- package/components/ui/detail-view-wrapper.tsx +30 -22
- package/components/ui/editor-placeholder-card.tsx +28 -24
- package/components/ui/editor-toolbar.tsx +7 -4
- package/components/ui/execution-details-panel.tsx +10 -5
- package/components/ui/file-structure-section.tsx +3 -3
- package/components/ui/file-tree.tsx +3 -1
- package/components/ui/files-panel.tsx +147 -27
- package/components/ui/filter-dropdown.tsx +84 -74
- package/components/ui/form-actions.tsx +14 -6
- package/components/ui/frontmatter-form-header.tsx +10 -2
- package/components/ui/icon-button.tsx +22 -9
- package/components/ui/input.tsx +7 -4
- package/components/ui/label.tsx +5 -5
- package/components/ui/layout-tab-bar.tsx +7 -5
- package/components/ui/modal.tsx +18 -4
- package/components/ui/nav-card.tsx +6 -3
- package/components/ui/navigation-bar.tsx +37 -9
- package/components/ui/number-input.tsx +8 -4
- package/components/ui/project-explorer.tsx +666 -0
- package/components/ui/registry-browser.tsx +12 -1
- package/components/ui/registry-card.tsx +49 -42
- package/components/ui/registry-detail.tsx +34 -11
- package/components/ui/resizable-textarea.tsx +18 -11
- package/components/ui/scope-badge.tsx +18 -11
- package/components/ui/segmented-toggle.tsx +5 -2
- package/components/ui/select.tsx +12 -9
- package/components/ui/selection-grid.tsx +36 -37
- package/components/ui/setting-row.tsx +2 -2
- package/components/ui/settings-card.tsx +10 -3
- package/components/ui/settings-info-box.tsx +9 -5
- package/components/ui/settings-section-title.tsx +14 -2
- package/components/ui/snapshot-card.tsx +10 -2
- package/components/ui/snippets-panel.tsx +4 -2
- package/components/ui/sort-dropdown.tsx +39 -29
- package/components/ui/status-card.tsx +9 -1
- package/components/ui/tab-bar.tsx +12 -9
- package/components/ui/toggle.tsx +13 -7
- package/components/ui/tooltip.tsx +9 -1
- package/dist/content.js +8 -8
- package/dist/diagrams.d.ts +0 -1
- package/dist/index.d.ts +421 -182
- package/dist/index.js +2984 -1691
- package/dist/tokens/primitives.css +28 -6
- package/dist/tokens/semantic.css +15 -15
- package/dist/tokens/theme.css +23 -0
- package/index.ts +25 -11
- package/package.json +1 -1
- package/tokens/primitives.css +28 -6
- package/tokens/semantic.css +15 -15
- package/tokens/theme.css +23 -0
- package/components/sections/ai-tools-paths/index.ts +0 -37
- package/components/sections/ai-tools-paths/use-tools-paths.ts +0 -159
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
import { iconMap, type IconName } from './icon-button.tsx'
|
|
4
4
|
import { cn } from '../lib/cn.ts'
|
|
5
|
+
import type { FormColor } from '../lib/form-colors.ts'
|
|
6
|
+
import { useAccentColor, AccentColorProvider } from '../lib/accent-context.ts'
|
|
5
7
|
|
|
6
8
|
type StatusType = 'success' | 'warning' | 'error' | 'info' | 'neutral'
|
|
7
9
|
|
|
@@ -18,6 +20,7 @@ export interface StatusCardProps {
|
|
|
18
20
|
items: StatusItem[]
|
|
19
21
|
action?: { label: string; onClick: () => void }
|
|
20
22
|
className?: string
|
|
23
|
+
accentColor?: FormColor
|
|
21
24
|
}
|
|
22
25
|
|
|
23
26
|
const statusDotColor: Record<StatusType, string> = {
|
|
@@ -43,11 +46,15 @@ export function StatusCard({
|
|
|
43
46
|
items,
|
|
44
47
|
action,
|
|
45
48
|
className,
|
|
49
|
+
accentColor: accentColorProp,
|
|
46
50
|
}: StatusCardProps) {
|
|
51
|
+
const contextAccent = useAccentColor()
|
|
52
|
+
const effectiveColor = accentColorProp ?? contextAccent ?? 'blue'
|
|
47
53
|
const Icon = icon ? iconMap[icon] : undefined
|
|
48
54
|
|
|
49
55
|
return (
|
|
50
|
-
<
|
|
56
|
+
<AccentColorProvider value={effectiveColor}>
|
|
57
|
+
<div className={cn('rounded-lg border border-neutral-700 bg-neutral-960 overflow-hidden', className)}>
|
|
51
58
|
<div className="flex items-center gap-2.5 px-4 py-3 border-b border-neutral-700">
|
|
52
59
|
{Icon && (
|
|
53
60
|
<Icon className="w-4 h-4 shrink-0" style={{ color: iconColor }} />
|
|
@@ -81,5 +88,6 @@ export function StatusCard({
|
|
|
81
88
|
</div>
|
|
82
89
|
)}
|
|
83
90
|
</div>
|
|
91
|
+
</AccentColorProvider>
|
|
84
92
|
)
|
|
85
93
|
}
|
|
@@ -6,6 +6,7 @@ import { iconMap, type IconName } from './icon-button.tsx'
|
|
|
6
6
|
import { Badge, type BadgeColor } from './badge.tsx'
|
|
7
7
|
import { cn } from '../lib/cn.ts'
|
|
8
8
|
import { Tooltip } from './tooltip.tsx'
|
|
9
|
+
import type { FormColor } from '../lib/form-colors.ts'
|
|
9
10
|
|
|
10
11
|
export interface Tab {
|
|
11
12
|
id: string
|
|
@@ -25,6 +26,7 @@ export interface TabBarProps {
|
|
|
25
26
|
variant?: 'underline' | 'pill' | 'card'
|
|
26
27
|
size?: 'xss' | 'xs' | 'sm' | 'md' | 'lg'
|
|
27
28
|
className?: string
|
|
29
|
+
accentColor?: FormColor
|
|
28
30
|
}
|
|
29
31
|
|
|
30
32
|
const sizeConfig = {
|
|
@@ -32,7 +34,7 @@ const sizeConfig = {
|
|
|
32
34
|
xs: { text: 'text-sm', icon: 'w-3 h-3', px: 'px-2', py: 'py-1', close: 'w-3 h-3', badgeSize: 'xs' as const, gap: 'gap-1' },
|
|
33
35
|
sm: { text: 'text-md', icon: 'w-3.5 h-3.5', px: 'px-3', py: 'py-1.5', close: 'w-3 h-3', badgeSize: 'sm' as const, gap: 'gap-1.5' },
|
|
34
36
|
md: { text: 'text-base', icon: 'w-4 h-4', px: 'px-4', py: 'py-2', close: 'w-3.5 h-3.5', badgeSize: 'md' as const, gap: 'gap-2' },
|
|
35
|
-
lg: { text: 'text-lg', icon: 'w-5 h-5', px: 'px-
|
|
37
|
+
lg: { text: 'text-lg', icon: 'w-5 h-5', px: 'px-4', py: 'py-2.5', close: 'w-4 h-4', badgeSize: 'lg' as const, gap: 'gap-2' },
|
|
36
38
|
}
|
|
37
39
|
|
|
38
40
|
const colorMap: Record<string, { active: string; icon: string; indicator: string }> = {
|
|
@@ -85,7 +87,7 @@ function TabIcon({ icon, size, color }: { icon: IconName; size: 'xss' | 'xs' | '
|
|
|
85
87
|
|
|
86
88
|
function TabBadge({ badge, size, badgeColor }: { badge: number | string; size: 'xss' | 'xs' | 'sm' | 'md' | 'lg'; badgeColor?: BadgeColor }) {
|
|
87
89
|
const s = sizeConfig[size]
|
|
88
|
-
return <Badge value={badge}
|
|
90
|
+
return <Badge value={badge} accentColor={badgeColor} size={s.badgeSize} className="flex-shrink-0" />
|
|
89
91
|
}
|
|
90
92
|
|
|
91
93
|
function CloseButton({ size, onClick, tabLabel }: { size: 'xss' | 'xs' | 'sm' | 'md' | 'lg'; onClick: () => void; tabLabel: string }) {
|
|
@@ -117,8 +119,8 @@ function CompactTab({
|
|
|
117
119
|
? cn('bg-neutral-700 font-medium', c.active)
|
|
118
120
|
: 'text-neutral-500 hover:text-neutral-400 hover:bg-neutral-700/50',
|
|
119
121
|
card: isActive
|
|
120
|
-
? cn('bg-neutral-
|
|
121
|
-
: 'bg-transparent border-transparent text-neutral-500 hover:text-neutral-400 hover:bg-neutral-
|
|
122
|
+
? cn('bg-neutral-960 border-neutral-700', c.active)
|
|
123
|
+
: 'bg-transparent border-transparent text-neutral-500 hover:text-neutral-400 hover:bg-neutral-980',
|
|
122
124
|
}[variant]
|
|
123
125
|
|
|
124
126
|
return (
|
|
@@ -139,7 +141,7 @@ function CompactTab({
|
|
|
139
141
|
{tab.icon && <TabIcon icon={tab.icon} size={size} color={isActive ? tab.color : undefined} />}
|
|
140
142
|
{tab.badge !== undefined && (
|
|
141
143
|
<span className="absolute -top-1.5 -right-2.5">
|
|
142
|
-
<Badge value={tab.badge}
|
|
144
|
+
<Badge value={tab.badge} accentColor={tab.badgeColor} size="xss" />
|
|
143
145
|
</span>
|
|
144
146
|
)}
|
|
145
147
|
</span>
|
|
@@ -147,7 +149,7 @@ function CompactTab({
|
|
|
147
149
|
<span className={cn('absolute bottom-0 left-0 right-0 h-0.5 rounded-full', c.indicator)} />
|
|
148
150
|
)}
|
|
149
151
|
{isActive && variant === 'card' && (
|
|
150
|
-
<span className="absolute -bottom-px left-0 right-0 h-px bg-neutral-
|
|
152
|
+
<span className="absolute -bottom-px left-0 right-0 h-px bg-neutral-960" />
|
|
151
153
|
)}
|
|
152
154
|
</button>
|
|
153
155
|
)
|
|
@@ -232,8 +234,8 @@ function CardTab({
|
|
|
232
234
|
s.text, s.px, s.py, s.gap,
|
|
233
235
|
isActive && 'is-active',
|
|
234
236
|
isActive
|
|
235
|
-
? cn('bg-neutral-
|
|
236
|
-
: 'bg-transparent border-transparent text-neutral-500 hover:text-neutral-400 hover:bg-neutral-
|
|
237
|
+
? cn('bg-neutral-960 border-neutral-700', c.active)
|
|
238
|
+
: 'bg-transparent border-transparent text-neutral-500 hover:text-neutral-400 hover:bg-neutral-980',
|
|
237
239
|
)}
|
|
238
240
|
>
|
|
239
241
|
{tab.icon && <TabIcon icon={tab.icon} size={size} color={isActive ? tab.color : undefined} />}
|
|
@@ -241,7 +243,7 @@ function CardTab({
|
|
|
241
243
|
{tab.badge !== undefined && <TabBadge badge={tab.badge} size={size} badgeColor={tab.badgeColor} />}
|
|
242
244
|
{showClose && <CloseButton size={size} onClick={onClose!} tabLabel={tab.label} />}
|
|
243
245
|
{isActive && (
|
|
244
|
-
<span className="absolute -bottom-px left-0 right-0 h-px bg-neutral-
|
|
246
|
+
<span className="absolute -bottom-px left-0 right-0 h-px bg-neutral-960" />
|
|
245
247
|
)}
|
|
246
248
|
</button>
|
|
247
249
|
)
|
|
@@ -261,6 +263,7 @@ export function TabBar({
|
|
|
261
263
|
variant = 'underline',
|
|
262
264
|
size = 'sm',
|
|
263
265
|
className,
|
|
266
|
+
accentColor: _accentColor,
|
|
264
267
|
}: TabBarProps) {
|
|
265
268
|
const containerRef = useRef<HTMLDivElement>(null)
|
|
266
269
|
const [compact, setCompact] = useState(false)
|
package/components/ui/toggle.tsx
CHANGED
|
@@ -8,11 +8,13 @@
|
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
import { type AccentColor } from '../lib/form-colors.ts'
|
|
11
|
+
import { useAccentColor } from '../lib/accent-context.ts'
|
|
11
12
|
import { cn } from '../lib/cn.ts'
|
|
12
13
|
|
|
13
14
|
export type ToggleColor = AccentColor
|
|
14
15
|
|
|
15
|
-
// Border colors per accent
|
|
16
|
+
// Border colors per accent — rgba values required for inline style with precise opacity control.
|
|
17
|
+
// Base RGB values map to Tailwind accent-500 palette shades.
|
|
16
18
|
const BORDER_COLORS: Record<ToggleColor, { idle: string; active: string }> = {
|
|
17
19
|
blue: { idle: 'rgba(59,130,246,0.3)', active: 'rgba(59,130,246,0.4)' },
|
|
18
20
|
green: { idle: 'rgba(34,197,94,0.3)', active: 'rgba(34,197,94,0.4)' },
|
|
@@ -31,7 +33,9 @@ const BORDER_COLORS: Record<ToggleColor, { idle: string; active: string }> = {
|
|
|
31
33
|
teal: { idle: 'rgba(20,184,166,0.3)', active: 'rgba(20,184,166,0.4)' },
|
|
32
34
|
}
|
|
33
35
|
|
|
34
|
-
// Knob colors: checked = accent color, unchecked = gray
|
|
36
|
+
// Knob colors: checked = accent color, unchecked = gray.
|
|
37
|
+
// Hex values required — applied via inline style for the toggle knob element.
|
|
38
|
+
// Values map to Tailwind accent-400 palette shades.
|
|
35
39
|
const KNOB_COLORS: Record<ToggleColor, { on: string; off: string }> = {
|
|
36
40
|
blue: { on: '#60a5fa', off: 'rgba(96,165,250,0.35)' },
|
|
37
41
|
green: { on: '#4ade80', off: 'rgba(74,222,128,0.35)' },
|
|
@@ -84,7 +88,7 @@ export interface ToggleProps {
|
|
|
84
88
|
disabled?: boolean
|
|
85
89
|
size?: ToggleSize
|
|
86
90
|
className?: string
|
|
87
|
-
|
|
91
|
+
accentColor?: ToggleColor
|
|
88
92
|
/** Accessible label — required for screen readers */
|
|
89
93
|
'aria-label'?: string
|
|
90
94
|
/** Test ID for E2E testing */
|
|
@@ -97,13 +101,15 @@ export function Toggle({
|
|
|
97
101
|
disabled = false,
|
|
98
102
|
size = 'sm',
|
|
99
103
|
className,
|
|
100
|
-
|
|
104
|
+
accentColor,
|
|
101
105
|
'aria-label': ariaLabel,
|
|
102
106
|
testId,
|
|
103
107
|
}: ToggleProps) {
|
|
108
|
+
const contextAccent = useAccentColor()
|
|
109
|
+
const effectiveColor = accentColor ?? contextAccent ?? 'blue'
|
|
104
110
|
const s = TOGGLE_SIZES[size]
|
|
105
|
-
const bc = BORDER_COLORS[
|
|
106
|
-
const kc = KNOB_COLORS[
|
|
111
|
+
const bc = BORDER_COLORS[effectiveColor]
|
|
112
|
+
const kc = KNOB_COLORS[effectiveColor]
|
|
107
113
|
return (
|
|
108
114
|
<button
|
|
109
115
|
type="button"
|
|
@@ -117,7 +123,7 @@ export function Toggle({
|
|
|
117
123
|
className={cn(
|
|
118
124
|
'relative rounded-full transition-all flex-shrink-0 cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed',
|
|
119
125
|
s.track,
|
|
120
|
-
checked ? TOGGLE_CHECKED_TRACK[
|
|
126
|
+
checked ? TOGGLE_CHECKED_TRACK[effectiveColor] : TOGGLE_UNCHECKED_TRACK[effectiveColor],
|
|
121
127
|
className,
|
|
122
128
|
)}
|
|
123
129
|
>
|
|
@@ -2,6 +2,8 @@ import { useState, useRef, useLayoutEffect, useEffect, useCallback } from 'react
|
|
|
2
2
|
import type { ReactNode } from 'react'
|
|
3
3
|
import { createPortal } from 'react-dom'
|
|
4
4
|
import { useClickOutside } from '../hooks/use-click-outside.ts'
|
|
5
|
+
import { AccentColorProvider, useAccentColor } from '../lib/accent-context.ts'
|
|
6
|
+
import type { FormColor } from '../lib/form-colors.ts'
|
|
5
7
|
|
|
6
8
|
export interface TooltipContent {
|
|
7
9
|
title?: string
|
|
@@ -32,6 +34,7 @@ interface TooltipProps {
|
|
|
32
34
|
trigger?: 'hover' | 'click'
|
|
33
35
|
/** Additional classes for the wrapper element (e.g., 'h-full' for flex containers) */
|
|
34
36
|
wrapperClassName?: string
|
|
37
|
+
accentColor?: FormColor
|
|
35
38
|
}
|
|
36
39
|
|
|
37
40
|
const TOOLTIP_GAP = 8
|
|
@@ -176,7 +179,10 @@ export function Tooltip({
|
|
|
176
179
|
trigger = 'hover',
|
|
177
180
|
interactive = false,
|
|
178
181
|
wrapperClassName = '',
|
|
182
|
+
accentColor,
|
|
179
183
|
}: TooltipProps) {
|
|
184
|
+
const contextAccent = useAccentColor()
|
|
185
|
+
const effectiveColor = accentColor ?? contextAccent ?? 'blue'
|
|
180
186
|
const [isVisible, setIsVisible] = useState(false)
|
|
181
187
|
const [coords, setCoords] = useState({ top: 0, left: 0 })
|
|
182
188
|
const [actualPosition, setActualPosition] = useState<ResolvedPosition>(position === 'auto' ? 'top' : position)
|
|
@@ -276,7 +282,9 @@ export function Tooltip({
|
|
|
276
282
|
onClick={trigger === 'click' ? () => setIsVisible((v) => !v) : undefined}
|
|
277
283
|
className={wrapperClassName || 'inline-flex'}
|
|
278
284
|
>
|
|
279
|
-
{
|
|
285
|
+
<AccentColorProvider value={effectiveColor}>
|
|
286
|
+
{children}
|
|
287
|
+
</AccentColorProvider>
|
|
280
288
|
</div>
|
|
281
289
|
{isVisible && createPortal(tooltipContent, document.body)}
|
|
282
290
|
</>
|
package/dist/content.js
CHANGED
|
@@ -13,8 +13,8 @@ function DL({ children }) {
|
|
|
13
13
|
function DLRow({ term, children, even }) {
|
|
14
14
|
const bg = even ? "bg-white/[0.015]" : "";
|
|
15
15
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
16
|
-
/* @__PURE__ */ jsx("div", { className: `py-2 border-b border-neutral-
|
|
17
|
-
/* @__PURE__ */ jsx("div", { className: `py-2 border-b border-neutral-
|
|
16
|
+
/* @__PURE__ */ jsx("div", { className: `py-2 border-b border-neutral-960/60 ${bg} font-semibold text-md whitespace-nowrap`, children: term }),
|
|
17
|
+
/* @__PURE__ */ jsx("div", { className: `py-2 border-b border-neutral-960/60 ${bg} text-md text-neutral-400`, children })
|
|
18
18
|
] });
|
|
19
19
|
}
|
|
20
20
|
function UL({ children }) {
|
|
@@ -65,17 +65,17 @@ function Callout({ color, children }) {
|
|
|
65
65
|
}
|
|
66
66
|
function CalloutCode({ color, children }) {
|
|
67
67
|
const c = CALLOUT_COLORS[color] ?? CALLOUT_COLORS.blue;
|
|
68
|
-
return /* @__PURE__ */ jsx("code", { className: `block bg-neutral-
|
|
68
|
+
return /* @__PURE__ */ jsx("code", { className: `block bg-neutral-960/80 px-2 py-1 rounded mt-1.5 text-md ${c.codeText}`, children });
|
|
69
69
|
}
|
|
70
70
|
function CalloutDim({ children }) {
|
|
71
71
|
return /* @__PURE__ */ jsx("p", { className: "text-neutral-500 mt-1.5", children });
|
|
72
72
|
}
|
|
73
73
|
function CodeBlock({ children }) {
|
|
74
|
-
return /* @__PURE__ */ jsx("div", { className: "bg-neutral-
|
|
74
|
+
return /* @__PURE__ */ jsx("div", { className: "bg-neutral-980/60 rounded-md p-3 font-mono text-sm text-neutral-400 mb-5 whitespace-pre overflow-x-auto leading-normal", children });
|
|
75
75
|
}
|
|
76
76
|
function CK({ color, children }) {
|
|
77
77
|
const textColor = color ? `text-${color}-400` : "";
|
|
78
|
-
return /* @__PURE__ */ jsx("code", { className: `bg-neutral-
|
|
78
|
+
return /* @__PURE__ */ jsx("code", { className: `bg-neutral-960/80 px-1.5 py-px rounded text-[0.9em] ${textColor}`, children });
|
|
79
79
|
}
|
|
80
80
|
function ExternalLink({ href, children }) {
|
|
81
81
|
return /* @__PURE__ */ jsx("a", { href, target: "_blank", rel: "noopener noreferrer", className: "underline cursor-pointer", children });
|
|
@@ -91,7 +91,7 @@ function LocationItem({
|
|
|
91
91
|
}) {
|
|
92
92
|
const bg = even ? "bg-white/[0.015]" : "";
|
|
93
93
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
94
|
-
/* @__PURE__ */ jsxs("div", { className: `py-2 border-b border-neutral-
|
|
94
|
+
/* @__PURE__ */ jsxs("div", { className: `py-2 border-b border-neutral-960/60 ${bg} flex items-center gap-1.5`, children: [
|
|
95
95
|
/* @__PURE__ */ jsx(
|
|
96
96
|
"span",
|
|
97
97
|
{
|
|
@@ -100,7 +100,7 @@ function LocationItem({
|
|
|
100
100
|
),
|
|
101
101
|
/* @__PURE__ */ jsx("span", { className: `text-${color}-400 text-md font-semibold`, children: label })
|
|
102
102
|
] }),
|
|
103
|
-
/* @__PURE__ */ jsx("div", { className: `py-2 border-b border-neutral-
|
|
103
|
+
/* @__PURE__ */ jsx("div", { className: `py-2 border-b border-neutral-960/60 ${bg} text-md text-neutral-400`, children })
|
|
104
104
|
] });
|
|
105
105
|
}
|
|
106
106
|
function TitledLI({ color, title, children }) {
|
|
@@ -115,7 +115,7 @@ function TitledLI({ color, title, children }) {
|
|
|
115
115
|
] });
|
|
116
116
|
}
|
|
117
117
|
function CalloutDialog({ color, lines }) {
|
|
118
|
-
return /* @__PURE__ */ jsx("div", { className: "bg-neutral-
|
|
118
|
+
return /* @__PURE__ */ jsx("div", { className: "bg-neutral-960/80 rounded px-2 py-1 mt-1.5 flex flex-col gap-0.5 text-md", children: lines.map((line, idx) => /* @__PURE__ */ jsxs("div", { children: [
|
|
119
119
|
/* @__PURE__ */ jsxs("span", { className: `text-${color}-300 font-semibold mr-1`, children: [
|
|
120
120
|
line.speaker,
|
|
121
121
|
":"
|