@urbint/cl 1.0.1

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 (206) hide show
  1. package/.cursor/rules +313 -0
  2. package/.rnstorybook/index.ts +11 -0
  3. package/.rnstorybook/main.ts +8 -0
  4. package/.rnstorybook/preview.tsx +14 -0
  5. package/.rnstorybook/storybook.requires.ts +49 -0
  6. package/.storybook/main.ts +16 -0
  7. package/.storybook/preview.ts +32 -0
  8. package/.storybook/vitest.setup.ts +7 -0
  9. package/App.tsx +422 -0
  10. package/README.md +229 -0
  11. package/app.json +33 -0
  12. package/assets/adaptive-icon.png +0 -0
  13. package/assets/favicon.png +0 -0
  14. package/assets/icon.png +0 -0
  15. package/assets/splash-icon.png +0 -0
  16. package/babel.config.js +16 -0
  17. package/docs/components/CodeBlock.tsx +80 -0
  18. package/docs/components/PropTable.tsx +93 -0
  19. package/docs/components/Sidebar.tsx +199 -0
  20. package/docs/components/index.ts +8 -0
  21. package/docs/data/colorTokens.ts +70 -0
  22. package/docs/data/componentData.tsx +1685 -0
  23. package/docs/data/index.ts +7 -0
  24. package/docs/index.ts +19 -0
  25. package/docs/navigation.ts +94 -0
  26. package/docs/pages/ColorsPage.tsx +226 -0
  27. package/docs/pages/ComponentPage.tsx +235 -0
  28. package/docs/pages/InstallationPage.tsx +232 -0
  29. package/docs/pages/IntroductionPage.tsx +163 -0
  30. package/docs/pages/ThemingPage.tsx +251 -0
  31. package/docs/pages/index.ts +10 -0
  32. package/docs/theme.ts +64 -0
  33. package/docs/types.ts +54 -0
  34. package/index.ts +8 -0
  35. package/llms.txt +1893 -0
  36. package/mcp-config.example.json +10 -0
  37. package/mcp-server/README.md +192 -0
  38. package/mcp-server/package-lock.json +1707 -0
  39. package/mcp-server/package.json +38 -0
  40. package/mcp-server/src/index.ts +1136 -0
  41. package/mcp-server/src/registry/components.ts +1446 -0
  42. package/mcp-server/src/registry/index.ts +3 -0
  43. package/mcp-server/src/registry/tokens.ts +256 -0
  44. package/mcp-server/tsconfig.json +19 -0
  45. package/package.json +92 -0
  46. package/src/components/Accordion/Accordion.stories.tsx +226 -0
  47. package/src/components/Accordion/Accordion.tsx +255 -0
  48. package/src/components/Accordion/index.ts +12 -0
  49. package/src/components/ActionSheet/ActionSheet.stories.tsx +393 -0
  50. package/src/components/ActionSheet/ActionSheet.tsx +258 -0
  51. package/src/components/ActionSheet/index.ts +2 -0
  52. package/src/components/Alert/Alert.stories.tsx +165 -0
  53. package/src/components/Alert/Alert.tsx +164 -0
  54. package/src/components/Alert/index.ts +2 -0
  55. package/src/components/AlertDialog/AlertDialog.stories.tsx +330 -0
  56. package/src/components/AlertDialog/AlertDialog.tsx +234 -0
  57. package/src/components/AlertDialog/index.ts +2 -0
  58. package/src/components/Avatar/Avatar.stories.tsx +154 -0
  59. package/src/components/Avatar/Avatar.tsx +219 -0
  60. package/src/components/Avatar/index.ts +2 -0
  61. package/src/components/Badge/Badge.stories.tsx +146 -0
  62. package/src/components/Badge/Badge.tsx +125 -0
  63. package/src/components/Badge/index.ts +2 -0
  64. package/src/components/Box/Box.stories.tsx +192 -0
  65. package/src/components/Box/Box.tsx +184 -0
  66. package/src/components/Box/index.ts +2 -0
  67. package/src/components/Button/Button.stories.tsx +157 -0
  68. package/src/components/Button/Button.tsx +180 -0
  69. package/src/components/Button/index.ts +2 -0
  70. package/src/components/Card/Card.stories.tsx +145 -0
  71. package/src/components/Card/Card.tsx +169 -0
  72. package/src/components/Card/index.ts +11 -0
  73. package/src/components/Center/Center.stories.tsx +215 -0
  74. package/src/components/Center/Center.tsx +29 -0
  75. package/src/components/Center/index.ts +2 -0
  76. package/src/components/Checkbox/Checkbox.stories.tsx +94 -0
  77. package/src/components/Checkbox/Checkbox.tsx +242 -0
  78. package/src/components/Checkbox/index.ts +2 -0
  79. package/src/components/DatePicker/DatePicker.stories.tsx +623 -0
  80. package/src/components/DatePicker/DatePicker.tsx +1228 -0
  81. package/src/components/DatePicker/index.ts +8 -0
  82. package/src/components/Divider/Divider.stories.tsx +224 -0
  83. package/src/components/Divider/Divider.tsx +73 -0
  84. package/src/components/Divider/index.ts +2 -0
  85. package/src/components/Drawer/Drawer.stories.tsx +414 -0
  86. package/src/components/Drawer/Drawer.tsx +342 -0
  87. package/src/components/Drawer/index.ts +11 -0
  88. package/src/components/Fab/Fab.stories.tsx +360 -0
  89. package/src/components/Fab/Fab.tsx +185 -0
  90. package/src/components/Fab/index.ts +2 -0
  91. package/src/components/FormControl/FormControl.stories.tsx +276 -0
  92. package/src/components/FormControl/FormControl.tsx +185 -0
  93. package/src/components/FormControl/index.ts +12 -0
  94. package/src/components/Grid/Grid.stories.tsx +244 -0
  95. package/src/components/Grid/Grid.tsx +93 -0
  96. package/src/components/Grid/index.ts +2 -0
  97. package/src/components/HStack/HStack.stories.tsx +230 -0
  98. package/src/components/HStack/HStack.tsx +80 -0
  99. package/src/components/HStack/index.ts +2 -0
  100. package/src/components/Heading/Heading.stories.tsx +111 -0
  101. package/src/components/Heading/Heading.tsx +85 -0
  102. package/src/components/Heading/index.ts +2 -0
  103. package/src/components/Icon/Icon.stories.tsx +320 -0
  104. package/src/components/Icon/Icon.tsx +117 -0
  105. package/src/components/Icon/index.ts +2 -0
  106. package/src/components/Image/Image.stories.tsx +357 -0
  107. package/src/components/Image/Image.tsx +168 -0
  108. package/src/components/Image/index.ts +2 -0
  109. package/src/components/Input/Input.stories.tsx +164 -0
  110. package/src/components/Input/Input.tsx +274 -0
  111. package/src/components/Input/index.ts +2 -0
  112. package/src/components/Link/Link.stories.tsx +187 -0
  113. package/src/components/Link/Link.tsx +104 -0
  114. package/src/components/Link/index.ts +2 -0
  115. package/src/components/Menu/Menu.stories.tsx +363 -0
  116. package/src/components/Menu/Menu.tsx +238 -0
  117. package/src/components/Menu/index.ts +2 -0
  118. package/src/components/Modal/Modal.stories.tsx +156 -0
  119. package/src/components/Modal/Modal.tsx +280 -0
  120. package/src/components/Modal/index.ts +11 -0
  121. package/src/components/Popover/Popover.stories.tsx +330 -0
  122. package/src/components/Popover/Popover.tsx +315 -0
  123. package/src/components/Popover/index.ts +11 -0
  124. package/src/components/Portal/Portal.stories.tsx +376 -0
  125. package/src/components/Portal/Portal.tsx +100 -0
  126. package/src/components/Portal/index.ts +2 -0
  127. package/src/components/Pressable/Pressable.stories.tsx +338 -0
  128. package/src/components/Pressable/Pressable.tsx +71 -0
  129. package/src/components/Pressable/index.ts +2 -0
  130. package/src/components/Progress/Progress.stories.tsx +131 -0
  131. package/src/components/Progress/Progress.tsx +219 -0
  132. package/src/components/Progress/index.ts +2 -0
  133. package/src/components/Radio/Radio.stories.tsx +101 -0
  134. package/src/components/Radio/Radio.tsx +234 -0
  135. package/src/components/Radio/index.ts +2 -0
  136. package/src/components/Select/Select.stories.tsx +908 -0
  137. package/src/components/Select/Select.tsx +659 -0
  138. package/src/components/Select/index.ts +8 -0
  139. package/src/components/Skeleton/Skeleton.stories.tsx +154 -0
  140. package/src/components/Skeleton/Skeleton.tsx +192 -0
  141. package/src/components/Skeleton/index.ts +8 -0
  142. package/src/components/Slider/Slider.stories.tsx +363 -0
  143. package/src/components/Slider/Slider.tsx +209 -0
  144. package/src/components/Slider/index.ts +2 -0
  145. package/src/components/Spinner/Spinner.stories.tsx +108 -0
  146. package/src/components/Spinner/Spinner.tsx +121 -0
  147. package/src/components/Spinner/index.ts +2 -0
  148. package/src/components/Switch/Switch.stories.tsx +116 -0
  149. package/src/components/Switch/Switch.tsx +172 -0
  150. package/src/components/Switch/index.ts +2 -0
  151. package/src/components/Table/Table.stories.tsx +417 -0
  152. package/src/components/Table/Table.tsx +233 -0
  153. package/src/components/Table/index.ts +2 -0
  154. package/src/components/Text/Text.stories.tsx +93 -0
  155. package/src/components/Text/Text.tsx +119 -0
  156. package/src/components/Text/index.ts +2 -0
  157. package/src/components/Textarea/Textarea.stories.tsx +280 -0
  158. package/src/components/Textarea/Textarea.tsx +212 -0
  159. package/src/components/Textarea/index.ts +2 -0
  160. package/src/components/Toast/Toast.stories.tsx +446 -0
  161. package/src/components/Toast/Toast.tsx +221 -0
  162. package/src/components/Toast/index.ts +2 -0
  163. package/src/components/Tooltip/Tooltip.stories.tsx +354 -0
  164. package/src/components/Tooltip/Tooltip.tsx +261 -0
  165. package/src/components/Tooltip/index.ts +2 -0
  166. package/src/components/VStack/VStack.stories.tsx +183 -0
  167. package/src/components/VStack/VStack.tsx +76 -0
  168. package/src/components/VStack/index.ts +2 -0
  169. package/src/components/index.ts +62 -0
  170. package/src/hooks/index.ts +7 -0
  171. package/src/hooks/useControllableState.ts +41 -0
  172. package/src/hooks/useDisclosure.ts +51 -0
  173. package/src/index.ts +22 -0
  174. package/src/stories/Button.stories.tsx +53 -0
  175. package/src/stories/Button.tsx +101 -0
  176. package/src/stories/Configure.mdx +364 -0
  177. package/src/stories/Header.stories.tsx +33 -0
  178. package/src/stories/Header.tsx +75 -0
  179. package/src/stories/Page.stories.tsx +25 -0
  180. package/src/stories/Page.tsx +154 -0
  181. package/src/stories/assets/accessibility.png +0 -0
  182. package/src/stories/assets/accessibility.svg +1 -0
  183. package/src/stories/assets/addon-library.png +0 -0
  184. package/src/stories/assets/assets.png +0 -0
  185. package/src/stories/assets/avif-test-image.avif +0 -0
  186. package/src/stories/assets/context.png +0 -0
  187. package/src/stories/assets/discord.svg +1 -0
  188. package/src/stories/assets/docs.png +0 -0
  189. package/src/stories/assets/figma-plugin.png +0 -0
  190. package/src/stories/assets/github.svg +1 -0
  191. package/src/stories/assets/share.png +0 -0
  192. package/src/stories/assets/styling.png +0 -0
  193. package/src/stories/assets/testing.png +0 -0
  194. package/src/stories/assets/theming.png +0 -0
  195. package/src/stories/assets/tutorials.svg +1 -0
  196. package/src/stories/assets/youtube.svg +1 -0
  197. package/src/styles/index.ts +7 -0
  198. package/src/styles/tokens.ts +318 -0
  199. package/src/styles/unistyles.ts +254 -0
  200. package/src/utils/createContext.tsx +25 -0
  201. package/src/utils/index.ts +7 -0
  202. package/src/utils/mergeRefs.ts +21 -0
  203. package/tsconfig.json +26 -0
  204. package/urbint-cl-1.0.0.tgz +0 -0
  205. package/vitest.config.ts +37 -0
  206. package/vitest.shims.d.ts +1 -0
@@ -0,0 +1,80 @@
1
+ /**
2
+ * Code Block Component
3
+ */
4
+
5
+ import React, { useState } from 'react';
6
+ import { View, Text, Pressable, StyleSheet } from 'react-native';
7
+ import { colors, spacing, fontSize } from '../theme';
8
+
9
+ type CodeBlockProps = {
10
+ code: string;
11
+ language?: string;
12
+ };
13
+
14
+ export const CodeBlock = ({ code, language = 'tsx' }: CodeBlockProps) => {
15
+ const [copied, setCopied] = useState(false);
16
+
17
+ const handleCopy = () => {
18
+ // In a real app, you'd use Clipboard API
19
+ setCopied(true);
20
+ setTimeout(() => setCopied(false), 2000);
21
+ };
22
+
23
+ return (
24
+ <View style={styles.container}>
25
+ <View style={styles.header}>
26
+ <Text style={styles.language}>{language}</Text>
27
+ <Pressable onPress={handleCopy} style={styles.copyButton}>
28
+ <Text style={styles.copyText}>{copied ? '✓ Copied' : 'Copy'}</Text>
29
+ </Pressable>
30
+ </View>
31
+ <View style={styles.codeContainer}>
32
+ <Text style={styles.code}>{code}</Text>
33
+ </View>
34
+ </View>
35
+ );
36
+ };
37
+
38
+ const styles = StyleSheet.create({
39
+ container: {
40
+ borderRadius: 8,
41
+ overflow: 'hidden',
42
+ borderWidth: 1,
43
+ borderColor: colors.borderLight,
44
+ },
45
+ header: {
46
+ flexDirection: 'row',
47
+ justifyContent: 'space-between',
48
+ alignItems: 'center',
49
+ backgroundColor: colors.bgTertiary,
50
+ paddingHorizontal: spacing.md,
51
+ paddingVertical: spacing.sm,
52
+ borderBottomWidth: 1,
53
+ borderBottomColor: colors.borderLight,
54
+ },
55
+ language: {
56
+ fontSize: fontSize.sm,
57
+ color: colors.textTertiary,
58
+ fontWeight: '500',
59
+ },
60
+ copyButton: {
61
+ paddingHorizontal: spacing.sm,
62
+ paddingVertical: spacing.xs,
63
+ },
64
+ copyText: {
65
+ fontSize: fontSize.sm,
66
+ color: colors.accent,
67
+ fontWeight: '500',
68
+ },
69
+ codeContainer: {
70
+ backgroundColor: colors.bgDark,
71
+ padding: spacing.lg,
72
+ },
73
+ code: {
74
+ fontFamily: 'monospace',
75
+ fontSize: fontSize.md,
76
+ color: '#E5E7EB',
77
+ lineHeight: 20,
78
+ },
79
+ });
80
+
@@ -0,0 +1,93 @@
1
+ /**
2
+ * Props Table Component
3
+ */
4
+
5
+ import React from 'react';
6
+ import { View, Text, StyleSheet } from 'react-native';
7
+ import { PropDoc } from '../types';
8
+ import { colors, spacing, fontSize } from '../theme';
9
+
10
+ type PropTableProps = {
11
+ props: PropDoc[];
12
+ };
13
+
14
+ export const PropTable = ({ props }: PropTableProps) => {
15
+ return (
16
+ <View style={styles.container}>
17
+ <View style={styles.header}>
18
+ <Text style={[styles.headerCell, { flex: 1.2 }]}>Prop</Text>
19
+ <Text style={[styles.headerCell, { flex: 2 }]}>Type</Text>
20
+ <Text style={[styles.headerCell, { flex: 0.8 }]}>Default</Text>
21
+ <Text style={[styles.headerCell, { flex: 2 }]}>Description</Text>
22
+ </View>
23
+ {props.map((prop, index) => (
24
+ <View
25
+ key={prop.name}
26
+ style={[styles.row, index === props.length - 1 && styles.lastRow]}
27
+ >
28
+ <View style={{ flex: 1.2, flexDirection: 'row' }}>
29
+ <Text style={styles.propName}>{prop.name}</Text>
30
+ {prop.required && <Text style={styles.required}>*</Text>}
31
+ </View>
32
+ <Text style={[styles.propType, { flex: 2 }]}>{prop.type}</Text>
33
+ <Text style={[styles.cell, { flex: 0.8 }]}>{prop.default || '-'}</Text>
34
+ <Text style={[styles.cell, { flex: 2 }]}>{prop.description}</Text>
35
+ </View>
36
+ ))}
37
+ </View>
38
+ );
39
+ };
40
+
41
+ const styles = StyleSheet.create({
42
+ container: {
43
+ borderRadius: 8,
44
+ borderWidth: 1,
45
+ borderColor: colors.borderLight,
46
+ overflow: 'hidden',
47
+ },
48
+ header: {
49
+ flexDirection: 'row',
50
+ backgroundColor: colors.bgTertiary,
51
+ paddingVertical: spacing.sm,
52
+ paddingHorizontal: spacing.md,
53
+ borderBottomWidth: 1,
54
+ borderBottomColor: colors.borderLight,
55
+ },
56
+ headerCell: {
57
+ fontSize: fontSize.sm,
58
+ fontWeight: '600',
59
+ color: colors.textTertiary,
60
+ textTransform: 'uppercase',
61
+ },
62
+ row: {
63
+ flexDirection: 'row',
64
+ paddingVertical: spacing.sm,
65
+ paddingHorizontal: spacing.md,
66
+ borderBottomWidth: 1,
67
+ borderBottomColor: colors.borderLight,
68
+ backgroundColor: colors.bgSecondary,
69
+ },
70
+ lastRow: {
71
+ borderBottomWidth: 0,
72
+ },
73
+ cell: {
74
+ fontSize: fontSize.md,
75
+ color: colors.textTertiary,
76
+ },
77
+ propName: {
78
+ fontFamily: 'monospace',
79
+ fontSize: fontSize.md,
80
+ fontWeight: '500',
81
+ color: colors.textPrimary,
82
+ },
83
+ propType: {
84
+ fontFamily: 'monospace',
85
+ fontSize: fontSize.sm,
86
+ color: colors.purple,
87
+ },
88
+ required: {
89
+ color: colors.error,
90
+ marginLeft: 2,
91
+ },
92
+ });
93
+
@@ -0,0 +1,199 @@
1
+ /**
2
+ * Sidebar Navigation Component
3
+ */
4
+
5
+ import React from 'react';
6
+ import { View, Text, Pressable, ScrollView, StyleSheet } from 'react-native';
7
+ import { NAV_ITEMS } from '../navigation';
8
+ import { colors, spacing, fontSize } from '../theme';
9
+
10
+ type SidebarProps = {
11
+ activePage: string;
12
+ onNavigate: (pageId: string) => void;
13
+ expandedSections: string[];
14
+ onToggleSection: (sectionId: string) => void;
15
+ };
16
+
17
+ export const Sidebar = ({
18
+ activePage,
19
+ onNavigate,
20
+ expandedSections,
21
+ onToggleSection,
22
+ }: SidebarProps) => {
23
+ return (
24
+ <View style={styles.container}>
25
+ {/* Logo */}
26
+ <View style={styles.logoContainer}>
27
+ <View style={styles.logoIcon}>
28
+ <Text style={styles.logoText}>U</Text>
29
+ </View>
30
+ <View>
31
+ <Text style={styles.logoTitle}>Urbint CL</Text>
32
+ <Text style={styles.logoVersion}>v1.0.0</Text>
33
+ </View>
34
+ </View>
35
+
36
+ {/* Navigation */}
37
+ <ScrollView style={styles.nav} showsVerticalScrollIndicator={false}>
38
+ {NAV_ITEMS.map((section) => {
39
+ const isExpanded = expandedSections.includes(section.id);
40
+
41
+ return (
42
+ <View key={section.id} style={styles.section}>
43
+ <Pressable
44
+ style={styles.sectionHeader}
45
+ onPress={() => onToggleSection(section.id)}
46
+ >
47
+ <View style={styles.sectionLeft}>
48
+ <Text style={styles.sectionIcon}>{section.icon}</Text>
49
+ <Text style={styles.sectionTitle}>{section.title}</Text>
50
+ </View>
51
+ <Text style={styles.chevron}>{isExpanded ? '▼' : '▶'}</Text>
52
+ </Pressable>
53
+
54
+ {isExpanded && section.children && (
55
+ <View style={styles.sectionItems}>
56
+ {section.children.map((item) => {
57
+ const isActive = activePage === item.id;
58
+ return (
59
+ <Pressable
60
+ key={item.id}
61
+ style={[styles.navItem, isActive && styles.navItemActive]}
62
+ onPress={() => onNavigate(item.id)}
63
+ >
64
+ <View style={[styles.navIndicator, isActive && styles.navIndicatorActive]} />
65
+ <Text style={[styles.navItemText, isActive && styles.navItemTextActive]}>
66
+ {item.title}
67
+ </Text>
68
+ </Pressable>
69
+ );
70
+ })}
71
+ </View>
72
+ )}
73
+ </View>
74
+ );
75
+ })}
76
+ </ScrollView>
77
+
78
+ {/* Footer */}
79
+ <View style={styles.footer}>
80
+ <Text style={styles.footerText}>Built with Unistyles</Text>
81
+ </View>
82
+ </View>
83
+ );
84
+ };
85
+
86
+ const styles = StyleSheet.create({
87
+ container: {
88
+ width: 260,
89
+ backgroundColor: colors.bgSecondary,
90
+ borderRightWidth: 1,
91
+ borderRightColor: colors.borderLight,
92
+ height: '100%',
93
+ },
94
+ logoContainer: {
95
+ flexDirection: 'row',
96
+ alignItems: 'center',
97
+ padding: spacing.lg,
98
+ paddingVertical: spacing.xl,
99
+ borderBottomWidth: 1,
100
+ borderBottomColor: colors.borderLight,
101
+ gap: spacing.md,
102
+ },
103
+ logoIcon: {
104
+ width: 40,
105
+ height: 40,
106
+ backgroundColor: colors.navy,
107
+ borderRadius: 8,
108
+ alignItems: 'center',
109
+ justifyContent: 'center',
110
+ },
111
+ logoText: {
112
+ color: colors.textInverse,
113
+ fontSize: fontSize.xl,
114
+ fontWeight: '700',
115
+ },
116
+ logoTitle: {
117
+ fontSize: fontSize.lg,
118
+ fontWeight: '700',
119
+ color: colors.textPrimary,
120
+ },
121
+ logoVersion: {
122
+ fontSize: fontSize.sm,
123
+ color: colors.textTertiary,
124
+ },
125
+ nav: {
126
+ flex: 1,
127
+ padding: spacing.md,
128
+ },
129
+ section: {
130
+ marginBottom: spacing.sm,
131
+ },
132
+ sectionHeader: {
133
+ flexDirection: 'row',
134
+ alignItems: 'center',
135
+ justifyContent: 'space-between',
136
+ paddingVertical: spacing.sm,
137
+ paddingHorizontal: spacing.sm,
138
+ },
139
+ sectionLeft: {
140
+ flexDirection: 'row',
141
+ alignItems: 'center',
142
+ gap: spacing.sm,
143
+ },
144
+ sectionIcon: {
145
+ fontSize: fontSize.base,
146
+ },
147
+ sectionTitle: {
148
+ fontSize: fontSize.base,
149
+ fontWeight: '600',
150
+ color: colors.textPrimary,
151
+ },
152
+ chevron: {
153
+ fontSize: fontSize.xs,
154
+ color: colors.textTertiary,
155
+ },
156
+ sectionItems: {
157
+ marginLeft: spacing.xl,
158
+ marginTop: spacing.xs,
159
+ },
160
+ navItem: {
161
+ flexDirection: 'row',
162
+ alignItems: 'center',
163
+ paddingVertical: spacing.sm,
164
+ paddingHorizontal: spacing.sm,
165
+ borderRadius: 6,
166
+ gap: spacing.sm,
167
+ },
168
+ navItemActive: {
169
+ backgroundColor: colors.bgTertiary,
170
+ },
171
+ navIndicator: {
172
+ width: 4,
173
+ height: 4,
174
+ borderRadius: 2,
175
+ backgroundColor: 'transparent',
176
+ },
177
+ navIndicatorActive: {
178
+ backgroundColor: colors.accent,
179
+ },
180
+ navItemText: {
181
+ fontSize: fontSize.base,
182
+ color: colors.textSecondary,
183
+ },
184
+ navItemTextActive: {
185
+ color: colors.accent,
186
+ fontWeight: '500',
187
+ },
188
+ footer: {
189
+ padding: spacing.lg,
190
+ borderTopWidth: 1,
191
+ borderTopColor: colors.borderLight,
192
+ },
193
+ footerText: {
194
+ fontSize: fontSize.sm,
195
+ color: colors.textDisabled,
196
+ textAlign: 'center',
197
+ },
198
+ });
199
+
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Component Exports
3
+ */
4
+
5
+ export { Sidebar } from './Sidebar';
6
+ export { CodeBlock } from './CodeBlock';
7
+ export { PropTable } from './PropTable';
8
+
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Color Token Documentation Data
3
+ */
4
+
5
+ import { ColorGroup } from '../types';
6
+
7
+ export const COLOR_GROUPS: ColorGroup[] = [
8
+ {
9
+ name: 'Brand',
10
+ description: 'Primary brand colors that define the Urbint visual identity',
11
+ colors: [
12
+ { name: 'Navy', value: '#0D2B3E', description: 'Primary dark brand color, used for headers and emphasis' },
13
+ { name: 'Blue', value: '#00A0CC', description: 'Primary action color, used for buttons and links' },
14
+ ],
15
+ },
16
+ {
17
+ name: 'Text',
18
+ description: 'Text colors for different hierarchy levels',
19
+ colors: [
20
+ { name: 'Default', value: '#1F2937', description: 'Primary text color for body content' },
21
+ { name: 'Secondary', value: '#6B7280', description: 'Secondary text for less emphasis' },
22
+ { name: 'Disabled', value: '#9CA3AF', description: 'Disabled or placeholder text' },
23
+ { name: 'On Dark', value: '#FFFFFF', description: 'Text on dark backgrounds' },
24
+ ],
25
+ },
26
+ {
27
+ name: 'Background',
28
+ description: 'Background colors for different surface levels',
29
+ colors: [
30
+ { name: 'Default', value: '#FFFFFF', description: 'Primary background color' },
31
+ { name: 'Secondary', value: '#F9FAFB', description: 'Subtle background for sections' },
32
+ { name: 'Tertiary', value: '#F3F4F6', description: 'Elevated surface background' },
33
+ { name: 'Inverse', value: '#111827', description: 'Dark background for contrast' },
34
+ ],
35
+ },
36
+ {
37
+ name: 'Border',
38
+ description: 'Border colors for component boundaries',
39
+ colors: [
40
+ { name: 'Disabled', value: '#E5E7EB', description: 'Subtle borders, dividers' },
41
+ { name: 'Default', value: '#D1D5DB', description: 'Standard component borders' },
42
+ { name: 'Hover', value: '#9CA3AF', description: 'Borders on hover state' },
43
+ { name: 'Active', value: '#00A0CC', description: 'Focus/active state borders' },
44
+ ],
45
+ },
46
+ {
47
+ name: 'Feedback',
48
+ description: 'Status and feedback colors',
49
+ colors: [
50
+ { name: 'Info', value: '#3B82F6', description: 'Informational messages' },
51
+ { name: 'Success', value: '#22C55E', description: 'Success states and confirmations' },
52
+ { name: 'Warning', value: '#F59E0B', description: 'Warning messages and caution' },
53
+ { name: 'Error', value: '#EF4444', description: 'Error states and destructive actions' },
54
+ ],
55
+ },
56
+ {
57
+ name: 'Badge',
58
+ description: 'Badge and tag colors for categorization',
59
+ colors: [
60
+ { name: 'Gray', value: '#6B7280', description: 'Default/neutral badges' },
61
+ { name: 'Red', value: '#DC2626', description: 'High priority or critical' },
62
+ { name: 'Orange', value: '#EA580C', description: 'Medium priority' },
63
+ { name: 'Yellow', value: '#CA8A04', description: 'Low priority or pending' },
64
+ { name: 'Green', value: '#16A34A', description: 'Active or completed' },
65
+ { name: 'Blue', value: '#2563EB', description: 'Informational' },
66
+ { name: 'Purple', value: '#7C3AED', description: 'New or special' },
67
+ ],
68
+ },
69
+ ];
70
+