omnira-ui 0.5.0 → 0.6.5

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 (79) hide show
  1. package/README.md +3 -3
  2. package/cli/omnira-init.mjs +20 -1
  3. package/components/ui/ActivityFeed/ActivityFeed.module.css +143 -0
  4. package/components/ui/ActivityFeed/ActivityFeed.tsx +94 -0
  5. package/components/ui/ActivityFeed/index.ts +2 -0
  6. package/components/ui/AuthPage/AuthPage.module.css +554 -0
  7. package/components/ui/AuthPage/AuthPage.tsx +376 -0
  8. package/components/ui/AuthPage/index.ts +2 -0
  9. package/components/ui/Button/Button.module.css +5 -5
  10. package/components/ui/ButtonGroup/ButtonGroup.module.css +103 -0
  11. package/components/ui/ButtonGroup/ButtonGroup.tsx +153 -0
  12. package/components/ui/ButtonGroup/index.ts +2 -0
  13. package/components/ui/Carousel/Carousel.module.css +95 -0
  14. package/components/ui/Carousel/Carousel.tsx +137 -0
  15. package/components/ui/Carousel/index.ts +2 -0
  16. package/components/ui/CommandMenu/CommandMenu.module.css +187 -0
  17. package/components/ui/CommandMenu/CommandMenu.tsx +205 -0
  18. package/components/ui/CommandMenu/index.ts +2 -0
  19. package/components/ui/FeaturedIcon/FeaturedIcon.module.css +212 -0
  20. package/components/ui/FeaturedIcon/FeaturedIcon.tsx +46 -0
  21. package/components/ui/FeaturedIcon/index.ts +2 -0
  22. package/components/ui/HeaderNavigation/HeaderNavigation.module.css +99 -0
  23. package/components/ui/HeaderNavigation/HeaderNavigation.tsx +103 -0
  24. package/components/ui/HeaderNavigation/index.ts +2 -0
  25. package/components/ui/InlineCTA/InlineCTA.module.css +101 -0
  26. package/components/ui/InlineCTA/InlineCTA.tsx +59 -0
  27. package/components/ui/InlineCTA/index.ts +2 -0
  28. package/components/ui/LineBarChart/LineBarChart.module.css +41 -0
  29. package/components/ui/LineBarChart/LineBarChart.tsx +191 -0
  30. package/components/ui/LineBarChart/index.ts +2 -0
  31. package/components/ui/LoginCardSeparated/LoginCardSeparated.module.css +341 -0
  32. package/components/ui/LoginCardSeparated/LoginCardSeparated.tsx +293 -0
  33. package/components/ui/LoginCardSeparated/index.ts +2 -0
  34. package/components/ui/LoginSimple/LoginSimple.module.css +342 -0
  35. package/components/ui/LoginSimple/LoginSimple.tsx +213 -0
  36. package/components/ui/LoginSimple/index.ts +2 -0
  37. package/components/ui/LoginSplitImage/LoginSplitImage.module.css +395 -0
  38. package/components/ui/LoginSplitImage/LoginSplitImage.tsx +199 -0
  39. package/components/ui/LoginSplitImage/index.ts +2 -0
  40. package/components/ui/LoginSplitQuote/LoginSplitQuote.module.css +416 -0
  41. package/components/ui/LoginSplitQuote/LoginSplitQuote.tsx +224 -0
  42. package/components/ui/LoginSplitQuote/index.ts +2 -0
  43. package/components/ui/Matrix/Matrix.module.css +54 -0
  44. package/components/ui/Matrix/Matrix.tsx +99 -0
  45. package/components/ui/Matrix/index.ts +2 -0
  46. package/components/ui/Messaging/Messaging.module.css +186 -0
  47. package/components/ui/Messaging/Messaging.tsx +168 -0
  48. package/components/ui/Messaging/index.ts +2 -0
  49. package/components/ui/Pagination/Pagination.module.css +161 -0
  50. package/components/ui/Pagination/Pagination.tsx +150 -0
  51. package/components/ui/Pagination/index.ts +2 -0
  52. package/components/ui/PieChart/PieChart.module.css +91 -0
  53. package/components/ui/PieChart/PieChart.tsx +185 -0
  54. package/components/ui/PieChart/index.ts +2 -0
  55. package/components/ui/ProgressSteps/ProgressSteps.module.css +232 -0
  56. package/components/ui/ProgressSteps/ProgressSteps.tsx +134 -0
  57. package/components/ui/ProgressSteps/index.ts +2 -0
  58. package/components/ui/RadarChart/RadarChart.module.css +25 -0
  59. package/components/ui/RadarChart/RadarChart.tsx +140 -0
  60. package/components/ui/RadarChart/index.ts +2 -0
  61. package/components/ui/SectionFooter/SectionFooter.module.css +55 -0
  62. package/components/ui/SectionFooter/SectionFooter.tsx +63 -0
  63. package/components/ui/SectionFooter/index.ts +2 -0
  64. package/components/ui/SectionHeader/SectionHeader.module.css +73 -0
  65. package/components/ui/SectionHeader/SectionHeader.tsx +121 -0
  66. package/components/ui/SectionHeader/index.ts +2 -0
  67. package/components/ui/SignUpCardSeparated/SignUpCardSeparated.module.css +342 -0
  68. package/components/ui/SignUpCardSeparated/SignUpCardSeparated.tsx +214 -0
  69. package/components/ui/SignUpCardSeparated/index.ts +2 -0
  70. package/components/ui/SignUpSimple/SignUpSimple.module.css +330 -0
  71. package/components/ui/SignUpSimple/SignUpSimple.tsx +225 -0
  72. package/components/ui/SignUpSimple/index.ts +2 -0
  73. package/components/ui/SignUpSplitImage/SignUpSplitImage.module.css +399 -0
  74. package/components/ui/SignUpSplitImage/SignUpSplitImage.tsx +235 -0
  75. package/components/ui/SignUpSplitImage/index.ts +2 -0
  76. package/components/ui/SignUpSplitQuote/SignUpSplitQuote.module.css +430 -0
  77. package/components/ui/SignUpSplitQuote/SignUpSplitQuote.tsx +260 -0
  78. package/components/ui/SignUpSplitQuote/index.ts +2 -0
  79. package/package.json +2 -2
package/README.md CHANGED
@@ -4,7 +4,7 @@ A premium glassmorphism design system — dark-first, glass-forward, no compromi
4
4
 
5
5
  30+ base components, sidebar navigation, feature cards, 1,000+ icons, and a CLI to scaffold your project with your chosen accent color and theme mode.
6
6
 
7
- **[Live Documentation →](https://ui.omnira.space)**
7
+ **[Live Documentation →](https://omnira.one)**
8
8
 
9
9
  ---
10
10
 
@@ -75,7 +75,7 @@ export default function MyPage() {
75
75
 
76
76
  Browse the full library and copy advanced components (Sidebar, Feature Cards, etc.) directly from the docs:
77
77
 
78
- **[ui.omnira.space →](https://ui.omnira.space)**
78
+ **[omnira.one →](https://omnira.one)**
79
79
 
80
80
  ---
81
81
 
@@ -170,4 +170,4 @@ lib/ # Shared utilities
170
170
 
171
171
  ## License
172
172
 
173
- MIT © [Omnira UI](https://ui.omnira.space)
173
+ MIT © [Omnira UI](https://omnira.one)
@@ -384,7 +384,7 @@ async function main() {
384
384
  log(` ${MAGENTA}import${RESET} { Button } ${MAGENTA}from${RESET} ${WHITE}"@/components/ui/Button"${RESET};`);
385
385
  blank();
386
386
  log(` ${DIM}4.${RESET} Browse all components & copy advanced ones:`);
387
- log(` ${CYAN}https://ui.omnira.space${RESET}`);
387
+ log(` ${CYAN}https://omnira.one${RESET}`);
388
388
  blank();
389
389
  }
390
390
 
@@ -468,6 +468,25 @@ const PAGE_BUNDLES = {
468
468
  "card": ["Card", "Button", "Badge"],
469
469
  // Matrix
470
470
  "matrix": ["Card"],
471
+ // ── Base component slug aliases (hyphenated → PascalCase folder) ──
472
+ "app-store-button": ["AppStoreButton"],
473
+ "badge-group": ["BadgeGroup"],
474
+ "button-group": ["ButtonGroup"],
475
+ "credit-card": ["CreditCard"],
476
+ "featured-icon": ["FeaturedIcon"],
477
+ "progress-indicator": ["ProgressBar"],
478
+ "qr-code": ["QRCode"],
479
+ "radio-button": ["RadioButton"],
480
+ "radio-group": ["RadioGroup"],
481
+ "social-button": ["SocialButton"],
482
+ "text-editor": ["TextEditor"],
483
+ "utility": ["ButtonUtility"],
484
+ "verification-code-input": ["PinInput"],
485
+ "video-player": ["VideoPlayer"],
486
+ "agent-thinking": ["AgentThinking"],
487
+ // ── Shared pages bundles ──
488
+ "login": ["AuthPage", "LoginSimple", "LoginSplitImage", "LoginSplitQuote", "LoginCardSeparated", "SocialButton", "Button", "Input", "Checkbox"],
489
+ "sign-up": ["SignUpSimple", "SignUpSplitImage", "SignUpSplitQuote", "SignUpCardSeparated", "SocialButton", "Button", "Input", "Checkbox"],
471
490
  };
472
491
 
473
492
  // ── Add command — copy a single component ───────────────────────────
@@ -0,0 +1,143 @@
1
+ /* ── Root ── */
2
+ .root {
3
+ display: flex;
4
+ flex-direction: column;
5
+ }
6
+
7
+ .card {
8
+ background: var(--color-bg-card);
9
+ border: 1px solid var(--color-border-standard);
10
+ border-radius: var(--radius-xl);
11
+ padding: 24px;
12
+ }
13
+
14
+ /* ── Item ── */
15
+ .item {
16
+ display: flex;
17
+ gap: 12px;
18
+ position: relative;
19
+ }
20
+
21
+ .default .item + .item {
22
+ margin-top: 0;
23
+ }
24
+
25
+ .compact .item + .item {
26
+ margin-top: 0;
27
+ }
28
+
29
+ /* ── Timeline Column ── */
30
+ .timeline {
31
+ display: flex;
32
+ flex-direction: column;
33
+ align-items: center;
34
+ flex-shrink: 0;
35
+ width: 36px;
36
+ }
37
+
38
+ .avatar {
39
+ width: 36px;
40
+ height: 36px;
41
+ border-radius: 50%;
42
+ object-fit: cover;
43
+ flex-shrink: 0;
44
+ }
45
+
46
+ .avatarFallback {
47
+ width: 36px;
48
+ height: 36px;
49
+ border-radius: 50%;
50
+ background: var(--color-bg-elevated);
51
+ border: 1px solid var(--color-border-standard);
52
+ display: flex;
53
+ align-items: center;
54
+ justify-content: center;
55
+ font-size: 12px;
56
+ font-weight: 600;
57
+ color: var(--color-text-secondary);
58
+ flex-shrink: 0;
59
+ font-family: var(--font-display);
60
+ }
61
+
62
+ .iconBubble {
63
+ width: 36px;
64
+ height: 36px;
65
+ border-radius: 50%;
66
+ background: var(--color-bg-lime-subtle);
67
+ display: flex;
68
+ align-items: center;
69
+ justify-content: center;
70
+ color: var(--color-lime);
71
+ flex-shrink: 0;
72
+ }
73
+
74
+ .connector {
75
+ width: 2px;
76
+ flex: 1;
77
+ min-height: 24px;
78
+ background: var(--color-border-standard);
79
+ }
80
+
81
+ /* ── Compact ── */
82
+ .compact .timeline {
83
+ width: 28px;
84
+ }
85
+
86
+ .compact .avatar,
87
+ .compact .avatarFallback,
88
+ .compact .iconBubble {
89
+ width: 28px;
90
+ height: 28px;
91
+ }
92
+
93
+ .compact .avatarFallback {
94
+ font-size: 10px;
95
+ }
96
+
97
+ .compact .connector {
98
+ min-height: 16px;
99
+ }
100
+
101
+ /* ── Content Column ── */
102
+ .content {
103
+ flex: 1;
104
+ min-width: 0;
105
+ padding-bottom: 24px;
106
+ }
107
+
108
+ .compact .content {
109
+ padding-bottom: 16px;
110
+ }
111
+
112
+ .item:last-child .content {
113
+ padding-bottom: 0;
114
+ }
115
+
116
+ .header {
117
+ display: flex;
118
+ align-items: center;
119
+ gap: 8px;
120
+ margin-bottom: 4px;
121
+ flex-wrap: wrap;
122
+ }
123
+
124
+ .userName {
125
+ font-size: 14px;
126
+ font-weight: 600;
127
+ color: var(--color-text-primary);
128
+ }
129
+
130
+ .timestamp {
131
+ font-size: 12px;
132
+ color: var(--color-text-tertiary);
133
+ }
134
+
135
+ .body {
136
+ font-size: 14px;
137
+ color: var(--color-text-secondary);
138
+ line-height: 1.5;
139
+ }
140
+
141
+ .body p {
142
+ margin: 0;
143
+ }
@@ -0,0 +1,94 @@
1
+ "use client";
2
+
3
+ import { forwardRef } from "react";
4
+ import { cn } from "@/lib/cn";
5
+ import styles from "./ActivityFeed.module.css";
6
+
7
+ /* ── Types ── */
8
+
9
+ export interface ActivityFeedItem {
10
+ id: string;
11
+ /** User display name */
12
+ user: string;
13
+ /** Avatar URL (falls back to initials) */
14
+ avatar?: string;
15
+ /** Event content — plain text or ReactNode */
16
+ content: React.ReactNode;
17
+ /** Timestamp label (e.g. "2 hours ago") */
18
+ timestamp: string;
19
+ /** Optional icon (replaces avatar dot) */
20
+ icon?: React.ReactNode;
21
+ /** Icon background color */
22
+ iconBg?: string;
23
+ /** Event type for styling */
24
+ type?: "default" | "comment" | "status" | "assignment" | "commit";
25
+ }
26
+
27
+ export interface ActivityFeedProps extends React.HTMLAttributes<HTMLDivElement> {
28
+ items: ActivityFeedItem[];
29
+ /** Visual variant */
30
+ variant?: "default" | "compact" | "card";
31
+ }
32
+
33
+ /* ── Helpers ── */
34
+
35
+ function getInitials(name: string) {
36
+ return name
37
+ .split(" ")
38
+ .map((w) => w[0])
39
+ .join("")
40
+ .toUpperCase()
41
+ .slice(0, 2);
42
+ }
43
+
44
+ /* ── Component ── */
45
+
46
+ export const ActivityFeed = forwardRef<HTMLDivElement, ActivityFeedProps>(
47
+ ({ items, variant = "default", className, ...props }, ref) => {
48
+ return (
49
+ <div
50
+ ref={ref}
51
+ className={cn(styles.root, styles[variant], className)}
52
+ {...props}
53
+ >
54
+ {items.map((item, i) => (
55
+ <div key={item.id} className={styles.item}>
56
+ {/* Timeline column */}
57
+ <div className={styles.timeline}>
58
+ {item.icon ? (
59
+ <div
60
+ className={styles.iconBubble}
61
+ style={item.iconBg ? { background: item.iconBg } : undefined}
62
+ >
63
+ {item.icon}
64
+ </div>
65
+ ) : item.avatar ? (
66
+ <img
67
+ src={item.avatar}
68
+ alt={item.user}
69
+ className={styles.avatar}
70
+ />
71
+ ) : (
72
+ <div className={styles.avatarFallback}>
73
+ {getInitials(item.user)}
74
+ </div>
75
+ )}
76
+ {i < items.length - 1 && <div className={styles.connector} />}
77
+ </div>
78
+
79
+ {/* Content column */}
80
+ <div className={styles.content}>
81
+ <div className={styles.header}>
82
+ <span className={styles.userName}>{item.user}</span>
83
+ <span className={styles.timestamp}>{item.timestamp}</span>
84
+ </div>
85
+ <div className={styles.body}>{item.content}</div>
86
+ </div>
87
+ </div>
88
+ ))}
89
+ </div>
90
+ );
91
+ }
92
+ );
93
+
94
+ ActivityFeed.displayName = "ActivityFeed";
@@ -0,0 +1,2 @@
1
+ export { ActivityFeed } from "./ActivityFeed";
2
+ export type { ActivityFeedProps, ActivityFeedItem } from "./ActivityFeed";