@codraoss/ui 0.9.4

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 (44) hide show
  1. package/LICENSE +625 -0
  2. package/README.md +15 -0
  3. package/dist/chunk-HCQJTSV3.js +39 -0
  4. package/dist/chunk-HCQJTSV3.js.map +1 -0
  5. package/dist/chunk-OU66JJZD.js +7 -0
  6. package/dist/chunk-OU66JJZD.js.map +1 -0
  7. package/dist/chunk-PZ5AY32C.js +10 -0
  8. package/dist/chunk-PZ5AY32C.js.map +1 -0
  9. package/dist/chunk-TXNSYK4G.js +23 -0
  10. package/dist/chunk-TXNSYK4G.js.map +1 -0
  11. package/dist/components/motion/index.d.ts +92 -0
  12. package/dist/components/motion/index.js +643 -0
  13. package/dist/components/motion/index.js.map +1 -0
  14. package/dist/hooks/index.d.ts +3 -0
  15. package/dist/hooks/index.js +8 -0
  16. package/dist/hooks/index.js.map +1 -0
  17. package/dist/index.d.ts +241 -0
  18. package/dist/index.js +1144 -0
  19. package/dist/index.js.map +1 -0
  20. package/dist/lib/ease.d.ts +3 -0
  21. package/dist/lib/ease.js +8 -0
  22. package/dist/lib/ease.js.map +1 -0
  23. package/dist/lib/file-tree.d.ts +16 -0
  24. package/dist/lib/file-tree.js +46 -0
  25. package/dist/lib/file-tree.js.map +1 -0
  26. package/dist/lib/highlight.d.ts +14 -0
  27. package/dist/lib/highlight.js +35 -0
  28. package/dist/lib/highlight.js.map +1 -0
  29. package/dist/lib/markdown-plugins.d.ts +6 -0
  30. package/dist/lib/markdown-plugins.js +11041 -0
  31. package/dist/lib/markdown-plugins.js.map +1 -0
  32. package/dist/lib/prompt-diff.d.ts +21 -0
  33. package/dist/lib/prompt-diff.js +95 -0
  34. package/dist/lib/prompt-diff.js.map +1 -0
  35. package/dist/lib/selection.d.ts +11 -0
  36. package/dist/lib/selection.js +15 -0
  37. package/dist/lib/selection.js.map +1 -0
  38. package/dist/lib/theme.d.ts +14 -0
  39. package/dist/lib/theme.js +78 -0
  40. package/dist/lib/theme.js.map +1 -0
  41. package/dist/lib/utils.d.ts +15 -0
  42. package/dist/lib/utils.js +14 -0
  43. package/dist/lib/utils.js.map +1 -0
  44. package/package.json +150 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/utils.ts"],"sourcesContent":["import { clsx, type ClassValue } from 'clsx';\r\nimport { twMerge } from 'tailwind-merge';\r\n\r\nexport function cn(...inputs: ClassValue[]) {\r\n return twMerge(clsx(inputs));\r\n}\r\n\r\nexport function fmtNumber(n: number) {\r\n if (n >= 1_000_000) return `${(n / 1_000_000).toFixed(1)}M`;\r\n if (n >= 1_000) return `${(n / 1_000).toFixed(n >= 10_000 ? 0 : 1)}k`;\r\n return n.toLocaleString();\r\n}\r\n\r\n/**\r\n * Like {@link fmtNumber} but returns the numeric part and its unit suffix\r\n * separately, so a card can render \"1.4\" large and \"M\" as a smaller unit.\r\n */\r\nexport function fmtStat(n: number): { value: string; unit: string } {\r\n if (n >= 1_000_000) return { value: (n / 1_000_000).toFixed(1), unit: 'M' };\r\n if (n >= 1_000) return { value: (n / 1_000).toFixed(n >= 10_000 ? 0 : 1), unit: 'k' };\r\n return { value: n.toLocaleString(), unit: '' };\r\n}\r\n\r\nexport function formatPreciseDuration(ms: number | null | undefined): string {\r\n if (ms == null) return '';\r\n // Sub-minute: show one decimal so e.g. a 724ms review reads as \"0.7s\" rather than \"0s\".\r\n if (ms < 60_000) {\r\n return `${(ms / 1000).toFixed(1)}s`;\r\n }\r\n const totalSeconds = Math.round(ms / 1000);\r\n const minutes = Math.floor(totalSeconds / 60);\r\n const seconds = totalSeconds % 60;\r\n if (minutes < 60) {\r\n return `${minutes}m ${seconds}s`;\r\n }\r\n const hours = Math.floor(minutes / 60);\r\n const remainingMinutes = minutes % 60;\r\n return `${hours}h ${remainingMinutes}m`;\r\n}\r\n"],"mappings":";AAAA,SAAS,YAA6B;AACtC,SAAS,eAAe;AAEjB,SAAS,MAAM,QAAsB;AAC1C,SAAO,QAAQ,KAAK,MAAM,CAAC;AAC7B;AAEO,SAAS,UAAU,GAAW;AACnC,MAAI,KAAK,IAAW,QAAO,IAAI,IAAI,KAAW,QAAQ,CAAC,CAAC;AACxD,MAAI,KAAK,IAAW,QAAO,IAAI,IAAI,KAAO,QAAQ,KAAK,MAAS,IAAI,CAAC,CAAC;AACtE,SAAO,EAAE,eAAe;AAC1B;AAMO,SAAS,QAAQ,GAA4C;AAClE,MAAI,KAAK,IAAW,QAAO,EAAE,QAAQ,IAAI,KAAW,QAAQ,CAAC,GAAG,MAAM,IAAI;AAC1E,MAAI,KAAK,IAAW,QAAO,EAAE,QAAQ,IAAI,KAAO,QAAQ,KAAK,MAAS,IAAI,CAAC,GAAG,MAAM,IAAI;AACxF,SAAO,EAAE,OAAO,EAAE,eAAe,GAAG,MAAM,GAAG;AAC/C;AAEO,SAAS,sBAAsB,IAAuC;AAC3E,MAAI,MAAM,KAAM,QAAO;AAEvB,MAAI,KAAK,KAAQ;AACf,WAAO,IAAI,KAAK,KAAM,QAAQ,CAAC,CAAC;AAAA,EAClC;AACA,QAAM,eAAe,KAAK,MAAM,KAAK,GAAI;AACzC,QAAM,UAAU,KAAK,MAAM,eAAe,EAAE;AAC5C,QAAM,UAAU,eAAe;AAC/B,MAAI,UAAU,IAAI;AAChB,WAAO,GAAG,OAAO,KAAK,OAAO;AAAA,EAC/B;AACA,QAAM,QAAQ,KAAK,MAAM,UAAU,EAAE;AACrC,QAAM,mBAAmB,UAAU;AACnC,SAAO,GAAG,KAAK,KAAK,gBAAgB;AACtC;","names":[]}
@@ -0,0 +1,7 @@
1
+ // src/lib/ease.ts
2
+ var EASE_OUT = [0.16, 1, 0.3, 1];
3
+
4
+ export {
5
+ EASE_OUT
6
+ };
7
+ //# sourceMappingURL=chunk-OU66JJZD.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/ease.ts"],"sourcesContent":["export const EASE_OUT = [0.16, 1, 0.3, 1] as const;\n"],"mappings":";AAAO,IAAM,WAAW,CAAC,MAAM,GAAG,KAAK,CAAC;","names":[]}
@@ -0,0 +1,10 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __export = (target, all) => {
3
+ for (var name in all)
4
+ __defProp(target, name, { get: all[name], enumerable: true });
5
+ };
6
+
7
+ export {
8
+ __export
9
+ };
10
+ //# sourceMappingURL=chunk-PZ5AY32C.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,23 @@
1
+ // src/hooks/use-is-dark-mode.ts
2
+ import { useState, useEffect } from "react";
3
+ function useIsDarkMode() {
4
+ const [isDark, setIsDark] = useState(
5
+ () => document.documentElement.classList.contains("dark")
6
+ );
7
+ useEffect(() => {
8
+ const obs = new MutationObserver(() => {
9
+ setIsDark(document.documentElement.classList.contains("dark"));
10
+ });
11
+ obs.observe(document.documentElement, {
12
+ attributes: true,
13
+ attributeFilter: ["class"]
14
+ });
15
+ return () => obs.disconnect();
16
+ }, []);
17
+ return isDark;
18
+ }
19
+
20
+ export {
21
+ useIsDarkMode
22
+ };
23
+ //# sourceMappingURL=chunk-TXNSYK4G.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/hooks/use-is-dark-mode.ts"],"sourcesContent":["import { useState, useEffect } from 'react';\n\nexport function useIsDarkMode() {\n const [isDark, setIsDark] = useState(() => \n document.documentElement.classList.contains('dark')\n );\n\n useEffect(() => {\n const obs = new MutationObserver(() => {\n setIsDark(document.documentElement.classList.contains('dark'));\n });\n obs.observe(document.documentElement, { \n attributes: true, \n attributeFilter: ['class'] \n });\n return () => obs.disconnect();\n }, []);\n\n return isDark;\n}\n"],"mappings":";AAAA,SAAS,UAAU,iBAAiB;AAE7B,SAAS,gBAAgB;AAC9B,QAAM,CAAC,QAAQ,SAAS,IAAI;AAAA,IAAS,MACnC,SAAS,gBAAgB,UAAU,SAAS,MAAM;AAAA,EACpD;AAEA,YAAU,MAAM;AACd,UAAM,MAAM,IAAI,iBAAiB,MAAM;AACrC,gBAAU,SAAS,gBAAgB,UAAU,SAAS,MAAM,CAAC;AAAA,IAC/D,CAAC;AACD,QAAI,QAAQ,SAAS,iBAAiB;AAAA,MACpC,YAAY;AAAA,MACZ,iBAAiB,CAAC,OAAO;AAAA,IAC3B,CAAC;AACD,WAAO,MAAM,IAAI,WAAW;AAAA,EAC9B,GAAG,CAAC,CAAC;AAEL,SAAO;AACT;","names":[]}
@@ -0,0 +1,92 @@
1
+ import * as React from 'react';
2
+ import { ReactNode } from 'react';
3
+ import Lenis from 'lenis';
4
+ import { MotionValue } from 'motion/react';
5
+
6
+ interface SharedLayoutBgProps {
7
+ children: ReactNode;
8
+ className?: string;
9
+ pillClassName?: string;
10
+ /** Horizontal inset of the pill relative to each row (px). */
11
+ inset?: number;
12
+ }
13
+ declare function SharedLayoutBg({ children, className, pillClassName, inset, }: SharedLayoutBgProps): React.JSX.Element;
14
+
15
+ type ScrollTarget = number | string | HTMLElement;
16
+ type ScrollToOptions = {
17
+ offset?: number;
18
+ immediate?: boolean;
19
+ duration?: number;
20
+ };
21
+ type SmoothScrollApi = {
22
+ /** Underlying Lenis instance, or null on the reduced-motion / native path. */
23
+ lenis: Lenis | null;
24
+ /** Current scroll offset in px. */
25
+ scrollY: MotionValue<number>;
26
+ /** Scroll position as 0..1 of the scrollable height. */
27
+ progress: MotionValue<number>;
28
+ /** Signed scroll velocity (px/frame). */
29
+ velocity: MotionValue<number>;
30
+ /** Programmatic smooth scroll. Respects reduced motion (jumps instantly). */
31
+ scrollTo: (target: ScrollTarget, options?: ScrollToOptions) => void;
32
+ };
33
+ interface SmoothScrollProps {
34
+ children: ReactNode;
35
+ /** Drive the page (window) when true, or a contained scroll area when false. */
36
+ root?: boolean;
37
+ /** Smoothing factor; lower is smoother and heavier. */
38
+ lerp?: number;
39
+ /** Wheel / programmatic ease duration in seconds. */
40
+ duration?: number;
41
+ orientation?: 'vertical' | 'horizontal';
42
+ wheelMultiplier?: number;
43
+ /** Off by default - native touch momentum is already good on mobile. */
44
+ touch?: boolean;
45
+ className?: string;
46
+ }
47
+ declare function SmoothScroll({ children, root, lerp, duration, orientation, wheelMultiplier, touch, className, }: SmoothScrollProps): React.JSX.Element;
48
+
49
+ interface SteppedSliderStep {
50
+ value: number;
51
+ label: string;
52
+ }
53
+ interface SteppedSliderProps {
54
+ id?: string;
55
+ value?: number;
56
+ defaultValue?: number;
57
+ onValueChange?: (value: number) => void;
58
+ min?: number;
59
+ max?: number;
60
+ step?: number;
61
+ /** Tick dots + labels rendered at each defined step. */
62
+ steps?: SteppedSliderStep[];
63
+ /** Live value readout shown above the track, and used as the accessible aria-valuetext. Defaults to the raw value. */
64
+ formatValue?: (value: number) => string;
65
+ disabled?: boolean;
66
+ className?: string;
67
+ 'aria-label'?: string;
68
+ 'aria-labelledby'?: string;
69
+ }
70
+ declare function SteppedSlider({ id, value, defaultValue, onValueChange, min, max, step, steps, formatValue, disabled, className, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy, }: SteppedSliderProps): React.JSX.Element;
71
+
72
+ type Variant = 'pill' | 'underline' | 'segment';
73
+ declare function Tabs({ defaultValue, value, onValueChange, variant, children, className, }: {
74
+ defaultValue?: string;
75
+ value?: string;
76
+ onValueChange?: (v: string) => void;
77
+ variant?: Variant;
78
+ children: ReactNode;
79
+ className?: string;
80
+ }): React.JSX.Element;
81
+ declare function TabsList({ children, className }: {
82
+ children: ReactNode;
83
+ className?: string;
84
+ }): React.JSX.Element;
85
+ declare function TabsTrigger({ value, children, className, indicatorClassName, }: {
86
+ value: string;
87
+ children: ReactNode;
88
+ className?: string;
89
+ indicatorClassName?: string;
90
+ }): React.JSX.Element;
91
+
92
+ export { SharedLayoutBg, type SharedLayoutBgProps, SmoothScroll, type SmoothScrollApi, SteppedSlider, type SteppedSliderProps, type SteppedSliderStep, Tabs, TabsList, TabsTrigger };