@leanspec/ui-components 0.2.10
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/README.md +244 -0
- package/dist/components/graph/dependency-graph.d.ts +28 -0
- package/dist/components/graph/dependency-graph.d.ts.map +1 -0
- package/dist/components/graph/index.d.ts +3 -0
- package/dist/components/graph/index.d.ts.map +1 -0
- package/dist/components/index.d.ts +9 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/layout/empty-state.d.ts +23 -0
- package/dist/components/layout/empty-state.d.ts.map +1 -0
- package/dist/components/layout/index.d.ts +3 -0
- package/dist/components/layout/index.d.ts.map +1 -0
- package/dist/components/layout/loading-skeletons.d.ts +38 -0
- package/dist/components/layout/loading-skeletons.d.ts.map +1 -0
- package/dist/components/navigation/back-to-top.d.ts +16 -0
- package/dist/components/navigation/back-to-top.d.ts.map +1 -0
- package/dist/components/navigation/index.d.ts +3 -0
- package/dist/components/navigation/index.d.ts.map +1 -0
- package/dist/components/navigation/theme-toggle.d.ts +26 -0
- package/dist/components/navigation/theme-toggle.d.ts.map +1 -0
- package/dist/components/project/index.d.ts +5 -0
- package/dist/components/project/index.d.ts.map +1 -0
- package/dist/components/project/project-avatar.d.ts +18 -0
- package/dist/components/project/project-avatar.d.ts.map +1 -0
- package/dist/components/project/project-card.d.ts +42 -0
- package/dist/components/project/project-card.d.ts.map +1 -0
- package/dist/components/project/project-dialog.d.ts +22 -0
- package/dist/components/project/project-dialog.d.ts.map +1 -0
- package/dist/components/project/project-switcher.d.ts +28 -0
- package/dist/components/project/project-switcher.d.ts.map +1 -0
- package/dist/components/search/filter-select.d.ts +28 -0
- package/dist/components/search/filter-select.d.ts.map +1 -0
- package/dist/components/search/index.d.ts +4 -0
- package/dist/components/search/index.d.ts.map +1 -0
- package/dist/components/search/search-input.d.ts +23 -0
- package/dist/components/search/search-input.d.ts.map +1 -0
- package/dist/components/search/search-results.d.ts +9 -0
- package/dist/components/search/search-results.d.ts.map +1 -0
- package/dist/components/spec/index.d.ts +10 -0
- package/dist/components/spec/index.d.ts.map +1 -0
- package/dist/components/spec/priority-badge.d.ts +33 -0
- package/dist/components/spec/priority-badge.d.ts.map +1 -0
- package/dist/components/spec/priority-editor.d.ts +24 -0
- package/dist/components/spec/priority-editor.d.ts.map +1 -0
- package/dist/components/spec/spec-card.d.ts +20 -0
- package/dist/components/spec/spec-card.d.ts.map +1 -0
- package/dist/components/spec/spec-metadata.d.ts +36 -0
- package/dist/components/spec/spec-metadata.d.ts.map +1 -0
- package/dist/components/spec/spec-timeline.d.ts +22 -0
- package/dist/components/spec/spec-timeline.d.ts.map +1 -0
- package/dist/components/spec/status-badge.d.ts +33 -0
- package/dist/components/spec/status-badge.d.ts.map +1 -0
- package/dist/components/spec/status-editor.d.ts +24 -0
- package/dist/components/spec/status-editor.d.ts.map +1 -0
- package/dist/components/spec/tag-badge.d.ts +30 -0
- package/dist/components/spec/tag-badge.d.ts.map +1 -0
- package/dist/components/spec/tags-editor.d.ts +24 -0
- package/dist/components/spec/tags-editor.d.ts.map +1 -0
- package/dist/components/stats/index.d.ts +4 -0
- package/dist/components/stats/index.d.ts.map +1 -0
- package/dist/components/stats/progress-bar.d.ts +20 -0
- package/dist/components/stats/progress-bar.d.ts.map +1 -0
- package/dist/components/stats/stats-card.d.ts +27 -0
- package/dist/components/stats/stats-card.d.ts.map +1 -0
- package/dist/components/stats/stats-overview.d.ts +36 -0
- package/dist/components/stats/stats-overview.d.ts.map +1 -0
- package/dist/components/ui/avatar.d.ts +19 -0
- package/dist/components/ui/avatar.d.ts.map +1 -0
- package/dist/components/ui/badge.d.ts +10 -0
- package/dist/components/ui/badge.d.ts.map +1 -0
- package/dist/components/ui/button.d.ts +12 -0
- package/dist/components/ui/button.d.ts.map +1 -0
- package/dist/components/ui/card.d.ts +9 -0
- package/dist/components/ui/card.d.ts.map +1 -0
- package/dist/components/ui/command.d.ts +81 -0
- package/dist/components/ui/command.d.ts.map +1 -0
- package/dist/components/ui/dialog.d.ts +20 -0
- package/dist/components/ui/dialog.d.ts.map +1 -0
- package/dist/components/ui/index.d.ts +12 -0
- package/dist/components/ui/index.d.ts.map +1 -0
- package/dist/components/ui/input.d.ts +6 -0
- package/dist/components/ui/input.d.ts.map +1 -0
- package/dist/components/ui/popover.d.ts +7 -0
- package/dist/components/ui/popover.d.ts.map +1 -0
- package/dist/components/ui/select.d.ts +14 -0
- package/dist/components/ui/select.d.ts.map +1 -0
- package/dist/components/ui/separator.d.ts +10 -0
- package/dist/components/ui/separator.d.ts.map +1 -0
- package/dist/components/ui/skeleton.d.ts +6 -0
- package/dist/components/ui/skeleton.d.ts.map +1 -0
- package/dist/hooks/index.d.ts +3 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/use-debounce.d.ts +9 -0
- package/dist/hooks/use-debounce.d.ts.map +1 -0
- package/dist/hooks/use-local-storage.d.ts +5 -0
- package/dist/hooks/use-local-storage.d.ts.map +1 -0
- package/dist/index.cjs +33 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10142 -0
- package/dist/lib/color-utils.d.ts +21 -0
- package/dist/lib/color-utils.d.ts.map +1 -0
- package/dist/lib/date-utils.d.ts +21 -0
- package/dist/lib/date-utils.d.ts.map +1 -0
- package/dist/lib/index.d.ts +4 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/utils.d.ts +10 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/specs.d.ts +169 -0
- package/dist/types/specs.d.ts.map +1 -0
- package/dist/ui-components.css +1 -0
- package/package.json +90 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-input.d.ts","sourceRoot":"","sources":["../../../src/components/search/search-input.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,MAAM,WAAW,gBACf,SAAQ,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAAE,UAAU,CAAC;IACrE,2BAA2B;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kCAAkC;IAClC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,oDAAoD;IACpD,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,kCAAkC;IAClC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gDAAgD;IAChD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6CAA6C;IAC7C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,+CAA+C;IAC/C,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,wBAAgB,WAAW,CAAC,EAC1B,KAAU,EACV,QAAQ,EACR,QAAQ,EACR,YAAmB,EACnB,WAAiB,EACjB,SAAgB,EAChB,SAAS,EACT,kBAAkB,EAClB,WAAyB,EACzB,GAAG,KAAK,EACT,EAAE,gBAAgB,2CAwElB"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { LightweightSpec } from '../../types/specs';
|
|
2
|
+
export interface SearchResultsProps {
|
|
3
|
+
results: LightweightSpec[];
|
|
4
|
+
query: string;
|
|
5
|
+
isSearching?: boolean;
|
|
6
|
+
onSpecClick?: (specId: string) => void;
|
|
7
|
+
}
|
|
8
|
+
export declare function SearchResults({ results, query, isSearching, onSpecClick, }: SearchResultsProps): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
//# sourceMappingURL=search-results.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search-results.d.ts","sourceRoot":"","sources":["../../../src/components/search/search-results.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACxC;AAED,wBAAgB,aAAa,CAAC,EAC5B,OAAO,EACP,KAAK,EACL,WAAmB,EACnB,WAAW,GACZ,EAAE,kBAAkB,2CAgCpB"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export { StatusBadge, defaultStatusConfig, getStatusLabel, type StatusBadgeProps, type StatusConfig as BadgeStatusConfig, } from './status-badge';
|
|
2
|
+
export { PriorityBadge, defaultPriorityConfig, getPriorityLabel, type PriorityBadgeProps, type PriorityConfig as BadgePriorityConfig, } from './priority-badge';
|
|
3
|
+
export { SpecCard, type SpecCardProps } from './spec-card';
|
|
4
|
+
export { TagBadge, TagList, type TagBadgeProps, type TagListProps } from './tag-badge';
|
|
5
|
+
export { SpecMetadata, type SpecMetadataProps, type SpecMetadataData } from './spec-metadata';
|
|
6
|
+
export { SpecTimeline, type SpecTimelineProps } from './spec-timeline';
|
|
7
|
+
export { StatusEditor, defaultStatusConfig as defaultStatusEditorConfig, type StatusEditorProps, type StatusConfig as EditorStatusConfig, } from './status-editor';
|
|
8
|
+
export { PriorityEditor, defaultPriorityConfig as defaultPriorityEditorConfig, type PriorityEditorProps, type PriorityConfig as EditorPriorityConfig, } from './priority-editor';
|
|
9
|
+
export { TagsEditor, type TagsEditorProps } from './tags-editor';
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/spec/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,cAAc,EACd,KAAK,gBAAgB,EACrB,KAAK,YAAY,IAAI,iBAAiB,GACvC,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,gBAAgB,EAChB,KAAK,kBAAkB,EACvB,KAAK,cAAc,IAAI,mBAAmB,GAC3C,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAE3D,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAEvF,OAAO,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAE9F,OAAO,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEvE,OAAO,EACL,YAAY,EACZ,mBAAmB,IAAI,yBAAyB,EAChD,KAAK,iBAAiB,EACtB,KAAK,YAAY,IAAI,kBAAkB,GACxC,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,cAAc,EACd,qBAAqB,IAAI,2BAA2B,EACpD,KAAK,mBAAmB,EACxB,KAAK,cAAc,IAAI,oBAAoB,GAC5C,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Priority badge component with icons
|
|
3
|
+
* Framework-agnostic - no i18n dependency, labels passed as props or using defaults
|
|
4
|
+
*/
|
|
5
|
+
import { type LucideIcon } from 'lucide-react';
|
|
6
|
+
import type { SpecPriority } from '@/types/specs';
|
|
7
|
+
export interface PriorityConfig {
|
|
8
|
+
icon: LucideIcon;
|
|
9
|
+
label: string;
|
|
10
|
+
className: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Default priority configuration
|
|
14
|
+
*/
|
|
15
|
+
export declare const defaultPriorityConfig: Record<SpecPriority, PriorityConfig>;
|
|
16
|
+
export interface PriorityBadgeProps {
|
|
17
|
+
/** The priority to display */
|
|
18
|
+
priority: string;
|
|
19
|
+
/** Additional CSS classes */
|
|
20
|
+
className?: string;
|
|
21
|
+
/** Show only icon, no label */
|
|
22
|
+
iconOnly?: boolean;
|
|
23
|
+
/** Custom label override */
|
|
24
|
+
label?: string;
|
|
25
|
+
/** Custom priority configuration */
|
|
26
|
+
priorityConfig?: Record<string, PriorityConfig>;
|
|
27
|
+
}
|
|
28
|
+
export declare function PriorityBadge({ priority, className, iconOnly, label, priorityConfig, }: PriorityBadgeProps): import("react/jsx-runtime").JSX.Element;
|
|
29
|
+
/**
|
|
30
|
+
* Get the default label for a priority
|
|
31
|
+
*/
|
|
32
|
+
export declare function getPriorityLabel(priority: string, priorityConfig?: Record<string, PriorityConfig>): string;
|
|
33
|
+
//# sourceMappingURL=priority-badge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"priority-badge.d.ts","sourceRoot":"","sources":["../../../src/components/spec/priority-badge.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAA0C,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAGvF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAElD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,YAAY,EAAE,cAAc,CAqBtE,CAAC;AAEF,MAAM,WAAW,kBAAkB;IACjC,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4BAA4B;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oCAAoC;IACpC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CACjD;AAED,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,SAAS,EACT,QAAgB,EAChB,KAAK,EACL,cAAsC,GACvC,EAAE,kBAAkB,2CAmBpB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,cAAc,GAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAyB,GACrE,MAAM,CAGR"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Inline priority editor component
|
|
3
|
+
* Framework-agnostic version that accepts onPriorityChange callback
|
|
4
|
+
*/
|
|
5
|
+
import * as React from 'react';
|
|
6
|
+
import type { SpecPriority } from '../../types/specs';
|
|
7
|
+
export interface PriorityConfig {
|
|
8
|
+
icon: React.ComponentType<{
|
|
9
|
+
className?: string;
|
|
10
|
+
}>;
|
|
11
|
+
label: string;
|
|
12
|
+
className: string;
|
|
13
|
+
}
|
|
14
|
+
export declare const defaultPriorityConfig: Record<SpecPriority, PriorityConfig>;
|
|
15
|
+
export interface PriorityEditorProps {
|
|
16
|
+
currentPriority: SpecPriority;
|
|
17
|
+
onPriorityChange: (newPriority: SpecPriority) => Promise<void> | void;
|
|
18
|
+
disabled?: boolean;
|
|
19
|
+
config?: Partial<Record<SpecPriority, Partial<PriorityConfig>>>;
|
|
20
|
+
className?: string;
|
|
21
|
+
ariaLabel?: string;
|
|
22
|
+
}
|
|
23
|
+
export declare function PriorityEditor({ currentPriority, onPriorityChange, disabled, config: customConfig, className, ariaLabel, }: PriorityEditorProps): import("react/jsx-runtime").JSX.Element;
|
|
24
|
+
//# sourceMappingURL=priority-editor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"priority-editor.d.ts","sourceRoot":"","sources":["../../../src/components/spec/priority-editor.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAU/B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAItD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClD,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,YAAY,EAAE,cAAc,CAqBtE,CAAC;AAEF,MAAM,WAAW,mBAAmB;IAClC,eAAe,EAAE,YAAY,CAAC;IAC9B,gBAAgB,EAAE,CAAC,WAAW,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACtE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IAChE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,cAAc,CAAC,EAC7B,eAAe,EACf,gBAAgB,EAChB,QAAgB,EAChB,MAAM,EAAE,YAAY,EACpB,SAAS,EACT,SAA6B,GAC9B,EAAE,mBAAmB,2CA8FrB"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SpecCard component for displaying a compact spec summary
|
|
3
|
+
*/
|
|
4
|
+
import type { LightweightSpec } from '@/types/specs';
|
|
5
|
+
export interface SpecCardProps {
|
|
6
|
+
/** Spec data to display */
|
|
7
|
+
spec: Pick<LightweightSpec, 'specNumber' | 'specName' | 'title' | 'status' | 'priority' | 'tags' | 'updatedAt'>;
|
|
8
|
+
/** Click handler */
|
|
9
|
+
onClick?: () => void;
|
|
10
|
+
/** Whether the card is currently selected */
|
|
11
|
+
selected?: boolean;
|
|
12
|
+
/** Additional CSS classes */
|
|
13
|
+
className?: string;
|
|
14
|
+
/** Locale for date formatting */
|
|
15
|
+
locale?: string;
|
|
16
|
+
/** Maximum number of tags to display */
|
|
17
|
+
maxTags?: number;
|
|
18
|
+
}
|
|
19
|
+
export declare function SpecCard({ spec, onClick, selected, className, locale, maxTags, }: SpecCardProps): import("react/jsx-runtime").JSX.Element;
|
|
20
|
+
//# sourceMappingURL=spec-card.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spec-card.d.ts","sourceRoot":"","sources":["../../../src/components/spec/spec-card.tsx"],"names":[],"mappings":"AAAA;;GAEG;AASH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAErD,MAAM,WAAW,aAAa;IAC5B,2BAA2B;IAC3B,IAAI,EAAE,IAAI,CACR,eAAe,EACf,YAAY,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,GAAG,WAAW,CACnF,CAAC;IACF,oBAAoB;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iCAAiC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wCAAwC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,QAAQ,CAAC,EACvB,IAAI,EACJ,OAAO,EACP,QAAgB,EAChB,SAAS,EACT,MAAM,EACN,OAAW,GACZ,EAAE,aAAa,2CAkEf"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SpecMetadata component
|
|
3
|
+
* Displays spec metadata in a card format with icons
|
|
4
|
+
*/
|
|
5
|
+
export interface SpecMetadataData {
|
|
6
|
+
status?: string | null;
|
|
7
|
+
priority?: string | null;
|
|
8
|
+
createdAt?: string | Date | null;
|
|
9
|
+
updatedAt?: string | Date | null;
|
|
10
|
+
completedAt?: string | Date | null;
|
|
11
|
+
assignee?: string | null;
|
|
12
|
+
tags?: string[] | null;
|
|
13
|
+
githubUrl?: string | null;
|
|
14
|
+
}
|
|
15
|
+
export interface SpecMetadataProps {
|
|
16
|
+
/** Spec data to display */
|
|
17
|
+
spec: SpecMetadataData;
|
|
18
|
+
/** Additional CSS classes */
|
|
19
|
+
className?: string;
|
|
20
|
+
/** Locale for date formatting */
|
|
21
|
+
locale?: string;
|
|
22
|
+
/** Labels for the metadata fields */
|
|
23
|
+
labels?: {
|
|
24
|
+
status?: string;
|
|
25
|
+
priority?: string;
|
|
26
|
+
created?: string;
|
|
27
|
+
updated?: string;
|
|
28
|
+
completed?: string;
|
|
29
|
+
assignee?: string;
|
|
30
|
+
tags?: string;
|
|
31
|
+
source?: string;
|
|
32
|
+
viewOnGitHub?: string;
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
export declare function SpecMetadata({ spec, className, locale, labels }: SpecMetadataProps): import("react/jsx-runtime").JSX.Element;
|
|
36
|
+
//# sourceMappingURL=spec-metadata.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spec-metadata.d.ts","sourceRoot":"","sources":["../../../src/components/spec/spec-metadata.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAYH,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IACjC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,iBAAiB;IAChC,2BAA2B;IAC3B,IAAI,EAAE,gBAAgB,CAAC;IACvB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iCAAiC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qCAAqC;IACrC,MAAM,CAAC,EAAE;QACP,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAcD,wBAAgB,YAAY,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAW,EAAE,EAAE,iBAAiB,2CAgJvF"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Timeline component to visualize spec evolution (vertical layout)
|
|
3
|
+
*/
|
|
4
|
+
export interface SpecTimelineProps {
|
|
5
|
+
createdAt: Date | string | number | null | undefined;
|
|
6
|
+
updatedAt: Date | string | number | null | undefined;
|
|
7
|
+
completedAt?: Date | string | number | null | undefined;
|
|
8
|
+
status: string;
|
|
9
|
+
className?: string;
|
|
10
|
+
labels?: {
|
|
11
|
+
created?: string;
|
|
12
|
+
inProgress?: string;
|
|
13
|
+
complete?: string;
|
|
14
|
+
archived?: string;
|
|
15
|
+
awaiting?: string;
|
|
16
|
+
queued?: string;
|
|
17
|
+
pending?: string;
|
|
18
|
+
};
|
|
19
|
+
language?: string;
|
|
20
|
+
}
|
|
21
|
+
export declare function SpecTimeline({ createdAt, updatedAt, completedAt, status, className, labels, language, }: SpecTimelineProps): import("react/jsx-runtime").JSX.Element | null;
|
|
22
|
+
//# sourceMappingURL=spec-timeline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spec-timeline.d.ts","sourceRoot":"","sources":["../../../src/components/spec/spec-timeline.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAeH,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACrD,SAAS,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACrD,WAAW,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACxD,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE;QACP,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAYD,wBAAgB,YAAY,CAAC,EAC3B,SAAS,EACT,SAAS,EACT,WAAW,EACX,MAAM,EACN,SAAS,EACT,MAAuB,EACvB,QAAe,GAChB,EAAE,iBAAiB,kDA2JnB"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Status badge component with icons
|
|
3
|
+
* Framework-agnostic - no i18n dependency, labels passed as props or using defaults
|
|
4
|
+
*/
|
|
5
|
+
import { type LucideIcon } from 'lucide-react';
|
|
6
|
+
import type { SpecStatus } from '@/types/specs';
|
|
7
|
+
export interface StatusConfig {
|
|
8
|
+
icon: LucideIcon;
|
|
9
|
+
label: string;
|
|
10
|
+
className: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Default status configuration
|
|
14
|
+
*/
|
|
15
|
+
export declare const defaultStatusConfig: Record<SpecStatus, StatusConfig>;
|
|
16
|
+
export interface StatusBadgeProps {
|
|
17
|
+
/** The status to display */
|
|
18
|
+
status: string;
|
|
19
|
+
/** Additional CSS classes */
|
|
20
|
+
className?: string;
|
|
21
|
+
/** Show only icon, no label */
|
|
22
|
+
iconOnly?: boolean;
|
|
23
|
+
/** Custom label override */
|
|
24
|
+
label?: string;
|
|
25
|
+
/** Custom status configuration */
|
|
26
|
+
statusConfig?: Record<string, StatusConfig>;
|
|
27
|
+
}
|
|
28
|
+
export declare function StatusBadge({ status, className, iconOnly, label, statusConfig, }: StatusBadgeProps): import("react/jsx-runtime").JSX.Element;
|
|
29
|
+
/**
|
|
30
|
+
* Get the default label for a status
|
|
31
|
+
*/
|
|
32
|
+
export declare function getStatusLabel(status: string, statusConfig?: Record<string, StatusConfig>): string;
|
|
33
|
+
//# sourceMappingURL=status-badge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status-badge.d.ts","sourceRoot":"","sources":["../../../src/components/spec/status-badge.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAA4C,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAGzF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,UAAU,EAAE,YAAY,CAqBhE,CAAC;AAEF,MAAM,WAAW,gBAAgB;IAC/B,4BAA4B;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4BAA4B;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kCAAkC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;CAC7C;AAED,wBAAgB,WAAW,CAAC,EAC1B,MAAM,EACN,SAAS,EACT,QAAgB,EAChB,KAAK,EACL,YAAkC,GACnC,EAAE,gBAAgB,2CAmBlB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,EACd,YAAY,GAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAuB,GAC/D,MAAM,CAGR"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Inline status editor component
|
|
3
|
+
* Framework-agnostic version that accepts onStatusChange callback
|
|
4
|
+
*/
|
|
5
|
+
import * as React from 'react';
|
|
6
|
+
import type { SpecStatus } from '../../types/specs';
|
|
7
|
+
export interface StatusConfig {
|
|
8
|
+
icon: React.ComponentType<{
|
|
9
|
+
className?: string;
|
|
10
|
+
}>;
|
|
11
|
+
label: string;
|
|
12
|
+
className: string;
|
|
13
|
+
}
|
|
14
|
+
export declare const defaultStatusConfig: Record<SpecStatus, StatusConfig>;
|
|
15
|
+
export interface StatusEditorProps {
|
|
16
|
+
currentStatus: SpecStatus;
|
|
17
|
+
onStatusChange: (newStatus: SpecStatus) => Promise<void> | void;
|
|
18
|
+
disabled?: boolean;
|
|
19
|
+
config?: Partial<Record<SpecStatus, Partial<StatusConfig>>>;
|
|
20
|
+
className?: string;
|
|
21
|
+
ariaLabel?: string;
|
|
22
|
+
}
|
|
23
|
+
export declare function StatusEditor({ currentStatus, onStatusChange, disabled, config: customConfig, className, ariaLabel, }: StatusEditorProps): import("react/jsx-runtime").JSX.Element;
|
|
24
|
+
//# sourceMappingURL=status-editor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status-editor.d.ts","sourceRoot":"","sources":["../../../src/components/spec/status-editor.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAU/B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAIpD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,KAAK,CAAC,aAAa,CAAC;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClD,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,UAAU,EAAE,YAAY,CAqBhE,CAAC;AAEF,MAAM,WAAW,iBAAiB;IAChC,aAAa,EAAE,UAAU,CAAC;IAC1B,cAAc,EAAE,CAAC,SAAS,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAChE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,YAAY,CAAC,EAC3B,aAAa,EACb,cAAc,EACd,QAAgB,EAChB,MAAM,EAAE,YAAY,EACpB,SAAS,EACT,SAA2B,GAC5B,EAAE,iBAAiB,2CA8FnB"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tag badge component for displaying spec tags
|
|
3
|
+
*/
|
|
4
|
+
export interface TagBadgeProps {
|
|
5
|
+
/** Tag name to display */
|
|
6
|
+
tag: string;
|
|
7
|
+
/** Additional CSS classes */
|
|
8
|
+
className?: string;
|
|
9
|
+
/** Show icon */
|
|
10
|
+
showIcon?: boolean;
|
|
11
|
+
/** Click handler */
|
|
12
|
+
onClick?: () => void;
|
|
13
|
+
/** Whether the tag is removable */
|
|
14
|
+
removable?: boolean;
|
|
15
|
+
/** Remove handler */
|
|
16
|
+
onRemove?: () => void;
|
|
17
|
+
}
|
|
18
|
+
export declare function TagBadge({ tag, className, showIcon, onClick, removable, onRemove, }: TagBadgeProps): import("react/jsx-runtime").JSX.Element;
|
|
19
|
+
export interface TagListProps {
|
|
20
|
+
/** Tags to display */
|
|
21
|
+
tags: string[];
|
|
22
|
+
/** Maximum tags to show before truncating */
|
|
23
|
+
maxVisible?: number;
|
|
24
|
+
/** Additional CSS classes */
|
|
25
|
+
className?: string;
|
|
26
|
+
/** Click handler for individual tags */
|
|
27
|
+
onTagClick?: (tag: string) => void;
|
|
28
|
+
}
|
|
29
|
+
export declare function TagList({ tags, maxVisible, className, onTagClick }: TagListProps): import("react/jsx-runtime").JSX.Element | null;
|
|
30
|
+
//# sourceMappingURL=tag-badge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tag-badge.d.ts","sourceRoot":"","sources":["../../../src/components/spec/tag-badge.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAMH,MAAM,WAAW,aAAa;IAC5B,0BAA0B;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,oBAAoB;IACpB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,mCAAmC;IACnC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,qBAAqB;IACrB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB;AAED,wBAAgB,QAAQ,CAAC,EACvB,GAAG,EACH,SAAS,EACT,QAAgB,EAChB,OAAO,EACP,SAAiB,EACjB,QAAQ,GACT,EAAE,aAAa,2CAoCf;AAED,MAAM,WAAW,YAAY;IAC3B,sBAAsB;IACtB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,6CAA6C;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wCAAwC;IACxC,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC;AAED,wBAAgB,OAAO,CAAC,EAAE,IAAI,EAAE,UAAc,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,YAAY,kDAsBpF"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tags editor component with add/remove functionality and autocomplete
|
|
3
|
+
* Framework-agnostic version that accepts callbacks
|
|
4
|
+
*/
|
|
5
|
+
export interface TagsEditorProps {
|
|
6
|
+
currentTags: string[];
|
|
7
|
+
availableTags?: string[];
|
|
8
|
+
onTagsChange: (newTags: string[]) => Promise<void> | void;
|
|
9
|
+
onFetchAvailableTags?: () => Promise<string[]> | string[];
|
|
10
|
+
disabled?: boolean;
|
|
11
|
+
className?: string;
|
|
12
|
+
labels?: {
|
|
13
|
+
addTag?: string;
|
|
14
|
+
removeTag?: string;
|
|
15
|
+
searchTag?: string;
|
|
16
|
+
createTag?: string;
|
|
17
|
+
noResults?: string;
|
|
18
|
+
existingTags?: string;
|
|
19
|
+
createSection?: string;
|
|
20
|
+
tagExists?: string;
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
export declare function TagsEditor({ currentTags, availableTags: initialAvailableTags, onTagsChange, onFetchAvailableTags, disabled, className, labels: customLabels, }: TagsEditorProps): import("react/jsx-runtime").JSX.Element;
|
|
24
|
+
//# sourceMappingURL=tags-editor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tags-editor.d.ts","sourceRoot":"","sources":["../../../src/components/spec/tags-editor.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAqBH,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC1D,oBAAoB,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC;IAC1D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE;QACP,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAaD,wBAAgB,UAAU,CAAC,EACzB,WAAW,EACX,aAAa,EAAE,oBAAyB,EACxC,YAAY,EACZ,oBAAoB,EACpB,QAAgB,EAChB,SAAS,EACT,MAAM,EAAE,YAAY,GACrB,EAAE,eAAe,2CAyLjB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/stats/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC1F,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ProgressBar component
|
|
3
|
+
* Displays a horizontal progress bar with optional label
|
|
4
|
+
*/
|
|
5
|
+
export interface ProgressBarProps {
|
|
6
|
+
/** Progress value (0-100) */
|
|
7
|
+
value: number;
|
|
8
|
+
/** Label to display */
|
|
9
|
+
label?: string;
|
|
10
|
+
/** Show percentage */
|
|
11
|
+
showPercentage?: boolean;
|
|
12
|
+
/** Color variant */
|
|
13
|
+
variant?: 'default' | 'success' | 'warning' | 'danger' | 'info';
|
|
14
|
+
/** Size variant */
|
|
15
|
+
size?: 'sm' | 'md' | 'lg';
|
|
16
|
+
/** Additional CSS classes */
|
|
17
|
+
className?: string;
|
|
18
|
+
}
|
|
19
|
+
export declare function ProgressBar({ value, label, showPercentage, variant, size, className, }: ProgressBarProps): import("react/jsx-runtime").JSX.Element;
|
|
20
|
+
//# sourceMappingURL=progress-bar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"progress-bar.d.ts","sourceRoot":"","sources":["../../../src/components/stats/progress-bar.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,WAAW,gBAAgB;IAC/B,6BAA6B;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,uBAAuB;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sBAAsB;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,oBAAoB;IACpB,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;IAChE,mBAAmB;IACnB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IAC1B,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAgBD,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,KAAK,EACL,cAAsB,EACtB,OAAmB,EACnB,IAAW,EACX,SAAS,GACV,EAAE,gBAAgB,2CAqBlB"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* StatsCard component
|
|
3
|
+
* Displays a single stat with icon and optional trend indicator
|
|
4
|
+
*/
|
|
5
|
+
import { type LucideIcon } from 'lucide-react';
|
|
6
|
+
export interface StatsCardProps {
|
|
7
|
+
/** Title of the stat */
|
|
8
|
+
title: string;
|
|
9
|
+
/** Main value to display */
|
|
10
|
+
value: number | string;
|
|
11
|
+
/** Optional subtitle or description */
|
|
12
|
+
subtitle?: string;
|
|
13
|
+
/** Icon to display */
|
|
14
|
+
icon?: LucideIcon;
|
|
15
|
+
/** Icon color class */
|
|
16
|
+
iconColorClass?: string;
|
|
17
|
+
/** Background gradient color class */
|
|
18
|
+
gradientClass?: string;
|
|
19
|
+
/** Trend direction */
|
|
20
|
+
trend?: 'up' | 'down' | 'neutral';
|
|
21
|
+
/** Trend percentage or label */
|
|
22
|
+
trendValue?: string;
|
|
23
|
+
/** Additional CSS classes */
|
|
24
|
+
className?: string;
|
|
25
|
+
}
|
|
26
|
+
export declare function StatsCard({ title, value, subtitle, icon: Icon, iconColorClass, gradientClass, trend, trendValue, className, }: StatsCardProps): import("react/jsx-runtime").JSX.Element;
|
|
27
|
+
//# sourceMappingURL=stats-card.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stats-card.d.ts","sourceRoot":"","sources":["../../../src/components/stats/stats-card.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,KAAK,UAAU,EAAmC,MAAM,cAAc,CAAC;AAIhF,MAAM,WAAW,cAAc;IAC7B,wBAAwB;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,4BAA4B;IAC5B,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,uCAAuC;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sBAAsB;IACtB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,uBAAuB;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,sCAAsC;IACtC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,sBAAsB;IACtB,KAAK,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC;IAClC,gCAAgC;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,KAAK,EACL,QAAQ,EACR,IAAI,EAAE,IAAI,EACV,cAAgC,EAChC,aAAkC,EAClC,KAAK,EACL,UAAU,EACV,SAAS,GACV,EAAE,cAAc,2CAiChB"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* StatsOverview component
|
|
3
|
+
* Displays an overview of project stats with multiple stat cards
|
|
4
|
+
*/
|
|
5
|
+
export interface StatsData {
|
|
6
|
+
totalSpecs: number;
|
|
7
|
+
completedSpecs: number;
|
|
8
|
+
inProgressSpecs: number;
|
|
9
|
+
plannedSpecs: number;
|
|
10
|
+
archivedSpecs?: number;
|
|
11
|
+
completionRate: number;
|
|
12
|
+
}
|
|
13
|
+
export interface StatsOverviewProps {
|
|
14
|
+
/** Stats data to display */
|
|
15
|
+
stats: StatsData;
|
|
16
|
+
/** Show archived specs card */
|
|
17
|
+
showArchived?: boolean;
|
|
18
|
+
/** Additional CSS classes */
|
|
19
|
+
className?: string;
|
|
20
|
+
/** Labels for localization */
|
|
21
|
+
labels?: {
|
|
22
|
+
total?: string;
|
|
23
|
+
totalSubtitle?: string;
|
|
24
|
+
completed?: string;
|
|
25
|
+
completedSubtitle?: string;
|
|
26
|
+
inProgress?: string;
|
|
27
|
+
inProgressSubtitle?: string;
|
|
28
|
+
planned?: string;
|
|
29
|
+
plannedSubtitle?: string;
|
|
30
|
+
archived?: string;
|
|
31
|
+
archivedSubtitle?: string;
|
|
32
|
+
completionRate?: string;
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
export declare function StatsOverview({ stats, showArchived, className, labels, }: StatsOverviewProps): import("react/jsx-runtime").JSX.Element;
|
|
36
|
+
//# sourceMappingURL=stats-overview.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stats-overview.d.ts","sourceRoot":"","sources":["../../../src/components/stats/stats-overview.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,4BAA4B;IAC5B,KAAK,EAAE,SAAS,CAAC;IACjB,+BAA+B;IAC/B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,8BAA8B;IAC9B,MAAM,CAAC,EAAE;QACP,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;CACH;AAgBD,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,YAAoB,EACpB,SAAS,EACT,MAAW,GACZ,EAAE,kBAAkB,2CAiDpB"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Simple Avatar implementation without @radix-ui/react-avatar dependency.
|
|
4
|
+
* Provides basic accessibility with role and aria-label attributes.
|
|
5
|
+
* For full accessibility features, consider using @radix-ui/react-avatar.
|
|
6
|
+
*/
|
|
7
|
+
export interface AvatarProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
8
|
+
/** Size variant */
|
|
9
|
+
size?: 'sm' | 'md' | 'lg' | 'xl';
|
|
10
|
+
}
|
|
11
|
+
declare const Avatar: React.ForwardRefExoticComponent<AvatarProps & React.RefAttributes<HTMLDivElement>>;
|
|
12
|
+
export interface AvatarImageProps extends React.ImgHTMLAttributes<HTMLImageElement> {
|
|
13
|
+
}
|
|
14
|
+
declare const AvatarImage: React.ForwardRefExoticComponent<AvatarImageProps & React.RefAttributes<HTMLImageElement>>;
|
|
15
|
+
export interface AvatarFallbackProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
16
|
+
}
|
|
17
|
+
declare const AvatarFallback: React.ForwardRefExoticComponent<AvatarFallbackProps & React.RefAttributes<HTMLDivElement>>;
|
|
18
|
+
export { Avatar, AvatarImage, AvatarFallback };
|
|
19
|
+
//# sourceMappingURL=avatar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"avatar.d.ts","sourceRoot":"","sources":["../../../src/components/ui/avatar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B;;;;GAIG;AAEH,MAAM,WAAW,WAAY,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IACvE,mBAAmB;IACnB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;CAClC;AASD,QAAA,MAAM,MAAM,oFAaX,CAAC;AAGF,MAAM,WAAW,gBAAiB,SAAQ,KAAK,CAAC,iBAAiB,CAAC,gBAAgB,CAAC;CAAG;AAEtF,QAAA,MAAM,WAAW,2FAIhB,CAAC;AAGF,MAAM,WAAW,mBAAoB,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;CAAG;AAEpF,QAAA,MAAM,cAAc,4FAYnB,CAAC;AAGF,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { type VariantProps } from 'class-variance-authority';
|
|
3
|
+
declare const badgeVariants: (props?: ({
|
|
4
|
+
variant?: "default" | "secondary" | "destructive" | "outline" | null | undefined;
|
|
5
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
6
|
+
export interface BadgeProps extends React.HTMLAttributes<HTMLDivElement>, VariantProps<typeof badgeVariants> {
|
|
7
|
+
}
|
|
8
|
+
declare function Badge({ className, variant, ...props }: BadgeProps): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export { Badge, badgeVariants };
|
|
10
|
+
//# sourceMappingURL=badge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"badge.d.ts","sourceRoot":"","sources":["../../../src/components/ui/badge.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAGlE,QAAA,MAAM,aAAa;;8EAkBlB,CAAC;AAEF,MAAM,WAAW,UACf,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAC1C,YAAY,CAAC,OAAO,aAAa,CAAC;CAAG;AAEzC,iBAAS,KAAK,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,UAAU,2CAE1D;AAED,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { type VariantProps } from 'class-variance-authority';
|
|
3
|
+
declare const buttonVariants: (props?: ({
|
|
4
|
+
variant?: "default" | "secondary" | "destructive" | "outline" | "link" | "ghost" | null | undefined;
|
|
5
|
+
size?: "default" | "sm" | "lg" | "icon" | null | undefined;
|
|
6
|
+
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
|
|
7
|
+
export interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {
|
|
8
|
+
asChild?: boolean;
|
|
9
|
+
}
|
|
10
|
+
declare const Button: React.ForwardRefExoticComponent<ButtonProps & React.RefAttributes<HTMLButtonElement>>;
|
|
11
|
+
export { Button, buttonVariants };
|
|
12
|
+
//# sourceMappingURL=button.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"button.d.ts","sourceRoot":"","sources":["../../../src/components/ui/button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAGlE,QAAA,MAAM,cAAc;;;8EA0BnB,CAAC;AAEF,MAAM,WAAW,WACf,SAAQ,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EACnD,YAAY,CAAC,OAAO,cAAc,CAAC;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,QAAA,MAAM,MAAM,uFAOX,CAAC;AAGF,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
declare const Card: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
|
|
3
|
+
declare const CardHeader: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
|
|
4
|
+
declare const CardTitle: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
|
|
5
|
+
declare const CardDescription: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
|
|
6
|
+
declare const CardContent: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
|
|
7
|
+
declare const CardFooter: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
|
|
8
|
+
export { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent };
|
|
9
|
+
//# sourceMappingURL=card.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"card.d.ts","sourceRoot":"","sources":["../../../src/components/ui/card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,QAAA,MAAM,IAAI,6GAWT,CAAC;AAGF,QAAA,MAAM,UAAU,6GAIf,CAAC;AAGF,QAAA,MAAM,SAAS,6GAQd,CAAC;AAGF,QAAA,MAAM,eAAe,6GAIpB,CAAC;AAGF,QAAA,MAAM,WAAW,6GAIhB,CAAC;AAGF,QAAA,MAAM,UAAU,6GAIf,CAAC;AAGF,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,eAAe,EAAE,WAAW,EAAE,CAAC"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import { type DialogProps } from "@radix-ui/react-dialog";
|
|
3
|
+
declare const Command: React.ForwardRefExoticComponent<Omit<{
|
|
4
|
+
children?: React.ReactNode;
|
|
5
|
+
} & Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
|
|
6
|
+
ref?: React.Ref<HTMLDivElement>;
|
|
7
|
+
} & {
|
|
8
|
+
asChild?: boolean;
|
|
9
|
+
}, "asChild" | "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
|
|
10
|
+
label?: string;
|
|
11
|
+
shouldFilter?: boolean;
|
|
12
|
+
filter?: (value: string, search: string, keywords?: string[]) => number;
|
|
13
|
+
defaultValue?: string;
|
|
14
|
+
value?: string;
|
|
15
|
+
onValueChange?: (value: string) => void;
|
|
16
|
+
loop?: boolean;
|
|
17
|
+
disablePointerSelection?: boolean;
|
|
18
|
+
vimBindings?: boolean;
|
|
19
|
+
} & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
20
|
+
declare const CommandDialog: ({ children, ...props }: DialogProps) => import("react/jsx-runtime").JSX.Element;
|
|
21
|
+
declare const CommandInput: React.ForwardRefExoticComponent<Omit<Omit<Pick<Pick<React.DetailedHTMLProps<React.InputHTMLAttributes<HTMLInputElement>, HTMLInputElement>, "key" | keyof React.InputHTMLAttributes<HTMLInputElement>> & {
|
|
22
|
+
ref?: React.Ref<HTMLInputElement>;
|
|
23
|
+
} & {
|
|
24
|
+
asChild?: boolean;
|
|
25
|
+
}, "asChild" | "key" | keyof React.InputHTMLAttributes<HTMLInputElement>>, "onChange" | "type" | "value"> & {
|
|
26
|
+
value?: string;
|
|
27
|
+
onValueChange?: (search: string) => void;
|
|
28
|
+
} & React.RefAttributes<HTMLInputElement>, "ref"> & React.RefAttributes<HTMLInputElement>>;
|
|
29
|
+
declare const CommandList: React.ForwardRefExoticComponent<Omit<{
|
|
30
|
+
children?: React.ReactNode;
|
|
31
|
+
} & Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
|
|
32
|
+
ref?: React.Ref<HTMLDivElement>;
|
|
33
|
+
} & {
|
|
34
|
+
asChild?: boolean;
|
|
35
|
+
}, "asChild" | "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
|
|
36
|
+
label?: string;
|
|
37
|
+
} & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
38
|
+
declare const CommandEmpty: React.ForwardRefExoticComponent<Omit<{
|
|
39
|
+
children?: React.ReactNode;
|
|
40
|
+
} & Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
|
|
41
|
+
ref?: React.Ref<HTMLDivElement>;
|
|
42
|
+
} & {
|
|
43
|
+
asChild?: boolean;
|
|
44
|
+
}, "asChild" | "key" | keyof React.HTMLAttributes<HTMLDivElement>> & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
45
|
+
declare const CommandGroup: React.ForwardRefExoticComponent<Omit<{
|
|
46
|
+
children?: React.ReactNode;
|
|
47
|
+
} & Omit<Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
|
|
48
|
+
ref?: React.Ref<HTMLDivElement>;
|
|
49
|
+
} & {
|
|
50
|
+
asChild?: boolean;
|
|
51
|
+
}, "asChild" | "key" | keyof React.HTMLAttributes<HTMLDivElement>>, "heading" | "value"> & {
|
|
52
|
+
heading?: React.ReactNode;
|
|
53
|
+
value?: string;
|
|
54
|
+
forceMount?: boolean;
|
|
55
|
+
} & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
56
|
+
declare const CommandSeparator: React.ForwardRefExoticComponent<Omit<Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
|
|
57
|
+
ref?: React.Ref<HTMLDivElement>;
|
|
58
|
+
} & {
|
|
59
|
+
asChild?: boolean;
|
|
60
|
+
}, "asChild" | "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
|
|
61
|
+
alwaysRender?: boolean;
|
|
62
|
+
} & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
63
|
+
declare const CommandItem: React.ForwardRefExoticComponent<Omit<{
|
|
64
|
+
children?: React.ReactNode;
|
|
65
|
+
} & Omit<Pick<Pick<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "key" | keyof React.HTMLAttributes<HTMLDivElement>> & {
|
|
66
|
+
ref?: React.Ref<HTMLDivElement>;
|
|
67
|
+
} & {
|
|
68
|
+
asChild?: boolean;
|
|
69
|
+
}, "asChild" | "key" | keyof React.HTMLAttributes<HTMLDivElement>>, "onSelect" | "disabled" | "value"> & {
|
|
70
|
+
disabled?: boolean;
|
|
71
|
+
onSelect?: (value: string) => void;
|
|
72
|
+
value?: string;
|
|
73
|
+
keywords?: string[];
|
|
74
|
+
forceMount?: boolean;
|
|
75
|
+
} & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
76
|
+
declare const CommandShortcut: {
|
|
77
|
+
({ className, ...props }: React.HTMLAttributes<HTMLSpanElement>): import("react/jsx-runtime").JSX.Element;
|
|
78
|
+
displayName: string;
|
|
79
|
+
};
|
|
80
|
+
export { Command, CommandDialog, CommandInput, CommandList, CommandEmpty, CommandGroup, CommandItem, CommandSeparator, CommandShortcut, };
|
|
81
|
+
//# sourceMappingURL=command.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../src/components/ui/command.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAOzD,QAAA,MAAM,OAAO;;;;;;;;;;;;;;;;sFAYX,CAAA;AAGF,QAAA,MAAM,aAAa,GAAI,wBAAwB,WAAW,4CAUzD,CAAA;AAED,QAAA,MAAM,YAAY;;;;;;;0FAehB,CAAA;AAIF,QAAA,MAAM,WAAW;;;;;;;;sFASf,CAAA;AAIF,QAAA,MAAM,YAAY;;;;;;uJAShB,CAAA;AAIF,QAAA,MAAM,YAAY;;;;;;;;;;sFAYhB,CAAA;AAIF,QAAA,MAAM,gBAAgB;;;;;;sFASpB,CAAA;AAGF,QAAA,MAAM,WAAW;;;;;;;;;;;;sFAYf,CAAA;AAIF,QAAA,MAAM,eAAe;8BAGlB,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC;;CAUvC,CAAA;AAGD,OAAO,EACL,OAAO,EACP,aAAa,EACb,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,gBAAgB,EAChB,eAAe,GAChB,CAAA"}
|