@lp-labs/ui-components 0.0.0-stage → 1.0.0

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 (244) hide show
  1. package/CHANGELOG.md +41 -0
  2. package/LICENSE +21 -0
  3. package/README.md +256 -2
  4. package/dist/cjs/components/Accordion.d.ts +78 -0
  5. package/dist/cjs/components/Accordion.js +78 -0
  6. package/dist/cjs/components/AdvancedComponents.d.ts +353 -0
  7. package/dist/cjs/components/AdvancedComponents.js +353 -0
  8. package/dist/cjs/components/Alert.d.ts +102 -0
  9. package/dist/cjs/components/Alert.js +102 -0
  10. package/dist/cjs/components/Avatar.d.ts +89 -0
  11. package/dist/cjs/components/Avatar.js +89 -0
  12. package/dist/cjs/components/Badge.d.ts +57 -0
  13. package/dist/cjs/components/Badge.js +57 -0
  14. package/dist/cjs/components/Breadcrumb.d.ts +50 -0
  15. package/dist/cjs/components/Breadcrumb.js +50 -0
  16. package/dist/cjs/components/Button.d.ts +77 -0
  17. package/dist/cjs/components/Button.js +77 -0
  18. package/dist/cjs/components/ButtonVariants.d.ts +261 -0
  19. package/dist/cjs/components/ButtonVariants.js +261 -0
  20. package/dist/cjs/components/Card.d.ts +56 -0
  21. package/dist/cjs/components/Card.js +56 -0
  22. package/dist/cjs/components/CardVariants.d.ts +267 -0
  23. package/dist/cjs/components/CardVariants.js +267 -0
  24. package/dist/cjs/components/Checkbox.d.ts +50 -0
  25. package/dist/cjs/components/Checkbox.js +50 -0
  26. package/dist/cjs/components/Chip.d.ts +104 -0
  27. package/dist/cjs/components/Chip.js +104 -0
  28. package/dist/cjs/components/DataDisplayComponents.d.ts +275 -0
  29. package/dist/cjs/components/DataDisplayComponents.js +275 -0
  30. package/dist/cjs/components/Divider.d.ts +77 -0
  31. package/dist/cjs/components/Divider.js +77 -0
  32. package/dist/cjs/components/Drawer.d.ts +142 -0
  33. package/dist/cjs/components/Drawer.js +142 -0
  34. package/dist/cjs/components/Dropdown.d.ts +139 -0
  35. package/dist/cjs/components/Dropdown.js +139 -0
  36. package/dist/cjs/components/Form.d.ts +41 -0
  37. package/dist/cjs/components/Form.js +41 -0
  38. package/dist/cjs/components/FormGroup.d.ts +58 -0
  39. package/dist/cjs/components/FormGroup.js +58 -0
  40. package/dist/cjs/components/FormInputVariants.d.ts +298 -0
  41. package/dist/cjs/components/FormInputVariants.js +298 -0
  42. package/dist/cjs/components/Image.d.ts +106 -0
  43. package/dist/cjs/components/Image.js +106 -0
  44. package/dist/cjs/components/Input.d.ts +65 -0
  45. package/dist/cjs/components/Input.js +65 -0
  46. package/dist/cjs/components/LayoutComponents.d.ts +258 -0
  47. package/dist/cjs/components/LayoutComponents.js +258 -0
  48. package/dist/cjs/components/Link.d.ts +71 -0
  49. package/dist/cjs/components/Link.js +71 -0
  50. package/dist/cjs/components/LoadingFeedbackComponents.d.ts +230 -0
  51. package/dist/cjs/components/LoadingFeedbackComponents.js +230 -0
  52. package/dist/cjs/components/Menu.d.ts +167 -0
  53. package/dist/cjs/components/Menu.js +167 -0
  54. package/dist/cjs/components/Modal.d.ts +145 -0
  55. package/dist/cjs/components/Modal.js +145 -0
  56. package/dist/cjs/components/ModalTypes.d.ts +288 -0
  57. package/dist/cjs/components/ModalTypes.js +288 -0
  58. package/dist/cjs/components/Navbar.d.ts +181 -0
  59. package/dist/cjs/components/Navbar.js +181 -0
  60. package/dist/cjs/components/NavigationComponents.d.ts +276 -0
  61. package/dist/cjs/components/NavigationComponents.js +276 -0
  62. package/dist/cjs/components/Pagination.d.ts +94 -0
  63. package/dist/cjs/components/Pagination.js +94 -0
  64. package/dist/cjs/components/Popover.d.ts +108 -0
  65. package/dist/cjs/components/Popover.js +108 -0
  66. package/dist/cjs/components/Progress.d.ts +68 -0
  67. package/dist/cjs/components/Progress.js +68 -0
  68. package/dist/cjs/components/Radio.d.ts +93 -0
  69. package/dist/cjs/components/Radio.js +93 -0
  70. package/dist/cjs/components/Rating.d.ts +82 -0
  71. package/dist/cjs/components/Rating.js +82 -0
  72. package/dist/cjs/components/Select.d.ts +74 -0
  73. package/dist/cjs/components/Select.js +74 -0
  74. package/dist/cjs/components/Sidebar.d.ts +174 -0
  75. package/dist/cjs/components/Sidebar.js +174 -0
  76. package/dist/cjs/components/Skeleton.d.ts +57 -0
  77. package/dist/cjs/components/Skeleton.js +57 -0
  78. package/dist/cjs/components/Slider.d.ts +64 -0
  79. package/dist/cjs/components/Slider.js +64 -0
  80. package/dist/cjs/components/Spinner.d.ts +70 -0
  81. package/dist/cjs/components/Spinner.js +70 -0
  82. package/dist/cjs/components/Stack.d.ts +75 -0
  83. package/dist/cjs/components/Stack.js +75 -0
  84. package/dist/cjs/components/Stepper.d.ts +150 -0
  85. package/dist/cjs/components/Stepper.js +150 -0
  86. package/dist/cjs/components/Table.d.ts +173 -0
  87. package/dist/cjs/components/Table.js +173 -0
  88. package/dist/cjs/components/Tabs.d.ts +104 -0
  89. package/dist/cjs/components/Tabs.js +104 -0
  90. package/dist/cjs/components/Tag.d.ts +74 -0
  91. package/dist/cjs/components/Tag.js +74 -0
  92. package/dist/cjs/components/Textarea.d.ts +75 -0
  93. package/dist/cjs/components/Textarea.js +75 -0
  94. package/dist/cjs/components/Timeline.d.ts +124 -0
  95. package/dist/cjs/components/Timeline.js +124 -0
  96. package/dist/cjs/components/Toast.d.ts +155 -0
  97. package/dist/cjs/components/Toast.js +155 -0
  98. package/dist/cjs/components/Toggle.d.ts +75 -0
  99. package/dist/cjs/components/Toggle.js +75 -0
  100. package/dist/cjs/components/Tooltip.d.ts +80 -0
  101. package/dist/cjs/components/Tooltip.js +80 -0
  102. package/dist/cjs/components/TypographyComponents.d.ts +265 -0
  103. package/dist/cjs/components/TypographyComponents.js +265 -0
  104. package/dist/cjs/components/UtilityComponents.d.ts +345 -0
  105. package/dist/cjs/components/UtilityComponents.js +345 -0
  106. package/dist/cjs/components/Video.d.ts +82 -0
  107. package/dist/cjs/components/Video.js +82 -0
  108. package/dist/cjs/components/index.d.ts +311 -0
  109. package/dist/cjs/components/index.js +311 -0
  110. package/dist/cjs/index.d.ts +5 -0
  111. package/dist/cjs/index.js +5 -0
  112. package/dist/cjs/styles/main.css +493 -0
  113. package/dist/cjs/theme/ThemeProvider.d.ts +185 -0
  114. package/dist/cjs/theme/ThemeProvider.js +185 -0
  115. package/dist/cjs/theme/index.d.ts +2 -0
  116. package/dist/cjs/theme/index.js +2 -0
  117. package/dist/cjs/utilities/classNames.d.ts +200 -0
  118. package/dist/cjs/utilities/classNames.js +200 -0
  119. package/dist/cjs/utilities/index.d.ts +3 -0
  120. package/dist/cjs/utilities/index.js +3 -0
  121. package/dist/cjs/utilities/styles.d.ts +94 -0
  122. package/dist/cjs/utilities/styles.js +94 -0
  123. package/dist/esm/components/Accordion.d.ts +78 -0
  124. package/dist/esm/components/Accordion.js +78 -0
  125. package/dist/esm/components/AdvancedComponents.d.ts +353 -0
  126. package/dist/esm/components/AdvancedComponents.js +353 -0
  127. package/dist/esm/components/Alert.d.ts +102 -0
  128. package/dist/esm/components/Alert.js +102 -0
  129. package/dist/esm/components/Avatar.d.ts +89 -0
  130. package/dist/esm/components/Avatar.js +89 -0
  131. package/dist/esm/components/Badge.d.ts +57 -0
  132. package/dist/esm/components/Badge.js +57 -0
  133. package/dist/esm/components/Breadcrumb.d.ts +50 -0
  134. package/dist/esm/components/Breadcrumb.js +50 -0
  135. package/dist/esm/components/Button.d.ts +77 -0
  136. package/dist/esm/components/Button.js +77 -0
  137. package/dist/esm/components/ButtonVariants.d.ts +261 -0
  138. package/dist/esm/components/ButtonVariants.js +261 -0
  139. package/dist/esm/components/Card.d.ts +56 -0
  140. package/dist/esm/components/Card.js +56 -0
  141. package/dist/esm/components/CardVariants.d.ts +267 -0
  142. package/dist/esm/components/CardVariants.js +267 -0
  143. package/dist/esm/components/Checkbox.d.ts +50 -0
  144. package/dist/esm/components/Checkbox.js +50 -0
  145. package/dist/esm/components/Chip.d.ts +104 -0
  146. package/dist/esm/components/Chip.js +104 -0
  147. package/dist/esm/components/DataDisplayComponents.d.ts +275 -0
  148. package/dist/esm/components/DataDisplayComponents.js +275 -0
  149. package/dist/esm/components/Divider.d.ts +77 -0
  150. package/dist/esm/components/Divider.js +77 -0
  151. package/dist/esm/components/Drawer.d.ts +142 -0
  152. package/dist/esm/components/Drawer.js +142 -0
  153. package/dist/esm/components/Dropdown.d.ts +139 -0
  154. package/dist/esm/components/Dropdown.js +139 -0
  155. package/dist/esm/components/Form.d.ts +41 -0
  156. package/dist/esm/components/Form.js +41 -0
  157. package/dist/esm/components/FormGroup.d.ts +58 -0
  158. package/dist/esm/components/FormGroup.js +58 -0
  159. package/dist/esm/components/FormInputVariants.d.ts +298 -0
  160. package/dist/esm/components/FormInputVariants.js +298 -0
  161. package/dist/esm/components/Image.d.ts +106 -0
  162. package/dist/esm/components/Image.js +106 -0
  163. package/dist/esm/components/Input.d.ts +65 -0
  164. package/dist/esm/components/Input.js +65 -0
  165. package/dist/esm/components/LayoutComponents.d.ts +258 -0
  166. package/dist/esm/components/LayoutComponents.js +258 -0
  167. package/dist/esm/components/Link.d.ts +71 -0
  168. package/dist/esm/components/Link.js +71 -0
  169. package/dist/esm/components/LoadingFeedbackComponents.d.ts +230 -0
  170. package/dist/esm/components/LoadingFeedbackComponents.js +230 -0
  171. package/dist/esm/components/Menu.d.ts +167 -0
  172. package/dist/esm/components/Menu.js +167 -0
  173. package/dist/esm/components/Modal.d.ts +145 -0
  174. package/dist/esm/components/Modal.js +145 -0
  175. package/dist/esm/components/ModalTypes.d.ts +288 -0
  176. package/dist/esm/components/ModalTypes.js +288 -0
  177. package/dist/esm/components/Navbar.d.ts +181 -0
  178. package/dist/esm/components/Navbar.js +181 -0
  179. package/dist/esm/components/NavigationComponents.d.ts +276 -0
  180. package/dist/esm/components/NavigationComponents.js +276 -0
  181. package/dist/esm/components/Pagination.d.ts +94 -0
  182. package/dist/esm/components/Pagination.js +94 -0
  183. package/dist/esm/components/Popover.d.ts +108 -0
  184. package/dist/esm/components/Popover.js +108 -0
  185. package/dist/esm/components/Progress.d.ts +68 -0
  186. package/dist/esm/components/Progress.js +68 -0
  187. package/dist/esm/components/Radio.d.ts +93 -0
  188. package/dist/esm/components/Radio.js +93 -0
  189. package/dist/esm/components/Rating.d.ts +82 -0
  190. package/dist/esm/components/Rating.js +82 -0
  191. package/dist/esm/components/Select.d.ts +74 -0
  192. package/dist/esm/components/Select.js +74 -0
  193. package/dist/esm/components/Sidebar.d.ts +174 -0
  194. package/dist/esm/components/Sidebar.js +174 -0
  195. package/dist/esm/components/Skeleton.d.ts +57 -0
  196. package/dist/esm/components/Skeleton.js +57 -0
  197. package/dist/esm/components/Slider.d.ts +64 -0
  198. package/dist/esm/components/Slider.js +64 -0
  199. package/dist/esm/components/Spinner.d.ts +70 -0
  200. package/dist/esm/components/Spinner.js +70 -0
  201. package/dist/esm/components/Stack.d.ts +75 -0
  202. package/dist/esm/components/Stack.js +75 -0
  203. package/dist/esm/components/Stepper.d.ts +150 -0
  204. package/dist/esm/components/Stepper.js +150 -0
  205. package/dist/esm/components/Table.d.ts +173 -0
  206. package/dist/esm/components/Table.js +173 -0
  207. package/dist/esm/components/Tabs.d.ts +104 -0
  208. package/dist/esm/components/Tabs.js +104 -0
  209. package/dist/esm/components/Tag.d.ts +74 -0
  210. package/dist/esm/components/Tag.js +74 -0
  211. package/dist/esm/components/Textarea.d.ts +75 -0
  212. package/dist/esm/components/Textarea.js +75 -0
  213. package/dist/esm/components/Timeline.d.ts +124 -0
  214. package/dist/esm/components/Timeline.js +124 -0
  215. package/dist/esm/components/Toast.d.ts +155 -0
  216. package/dist/esm/components/Toast.js +155 -0
  217. package/dist/esm/components/Toggle.d.ts +75 -0
  218. package/dist/esm/components/Toggle.js +75 -0
  219. package/dist/esm/components/Tooltip.d.ts +80 -0
  220. package/dist/esm/components/Tooltip.js +80 -0
  221. package/dist/esm/components/TypographyComponents.d.ts +265 -0
  222. package/dist/esm/components/TypographyComponents.js +265 -0
  223. package/dist/esm/components/UtilityComponents.d.ts +345 -0
  224. package/dist/esm/components/UtilityComponents.js +345 -0
  225. package/dist/esm/components/Video.d.ts +82 -0
  226. package/dist/esm/components/Video.js +82 -0
  227. package/dist/esm/components/index.d.ts +311 -0
  228. package/dist/esm/components/index.js +311 -0
  229. package/dist/esm/index.d.ts +5 -0
  230. package/dist/esm/index.js +5 -0
  231. package/dist/esm/styles/main.css +493 -0
  232. package/dist/esm/theme/ThemeProvider.d.ts +185 -0
  233. package/dist/esm/theme/ThemeProvider.js +185 -0
  234. package/dist/esm/theme/index.d.ts +2 -0
  235. package/dist/esm/theme/index.js +2 -0
  236. package/dist/esm/utilities/classNames.d.ts +200 -0
  237. package/dist/esm/utilities/classNames.js +200 -0
  238. package/dist/esm/utilities/index.d.ts +3 -0
  239. package/dist/esm/utilities/index.js +3 -0
  240. package/dist/esm/utilities/styles.d.ts +94 -0
  241. package/dist/esm/utilities/styles.js +94 -0
  242. package/dist/styles/main.css +493 -0
  243. package/package.json +124 -6
  244. package/src/styles/main.css +493 -0
@@ -0,0 +1,94 @@
1
+ /**
2
+ * CSS-in-JS style utilities for dynamic styling
3
+ */
4
+
5
+ export interface StyleObject {
6
+ [key: string]: string | number | undefined;
7
+ }
8
+
9
+ export function createStyles(styles: StyleObject): React.CSSProperties {
10
+ const result: React.CSSProperties = {};
11
+
12
+ for (const [key, value] of Object.entries(styles)) {
13
+ if (value !== undefined) {
14
+ // Convert camelCase CSS property names to kebab-case if needed
15
+ const cssKey = key as keyof React.CSSProperties;
16
+ result[cssKey] = value;
17
+ }
18
+ }
19
+
20
+ return result;
21
+ }
22
+
23
+ export function combineStyles(...styles: (StyleObject | undefined | null)[]): React.CSSProperties {
24
+ const result: React.CSSProperties = {};
25
+
26
+ for (const style of styles) {
27
+ if (style) {
28
+ Object.assign(result, createStyles(style));
29
+ }
30
+ }
31
+
32
+ return result;
33
+ }
34
+
35
+ /**
36
+ * Media query builder
37
+ */
38
+ export const media = {
39
+ sm: '@media (min-width: 640px)',
40
+ md: '@media (min-width: 768px)',
41
+ lg: '@media (min-width: 1024px)',
42
+ xl: '@media (min-width: 1280px)',
43
+ '2xl': '@media (min-width: 1536px)',
44
+ dark: '@media (prefers-color-scheme: dark)',
45
+ light: '@media (prefers-color-scheme: light)',
46
+ motion: '@media (prefers-reduced-motion: no-preference)',
47
+ };
48
+
49
+ /**
50
+ * CSS variable builder
51
+ */
52
+ export function createCSSVariables(variables: Record<string, string>): Record<string, string> {
53
+ const result: Record<string, string> = {};
54
+
55
+ for (const [key, value] of Object.entries(variables)) {
56
+ result[`--${key}`] = value;
57
+ }
58
+
59
+ return result;
60
+ }
61
+
62
+ /**
63
+ * Get CSS variable value
64
+ */
65
+ export function getCSSVariable(name: string): string {
66
+ if (typeof window === 'undefined') {
67
+ return '';
68
+ }
69
+ return getComputedStyle(document.documentElement).getPropertyValue(`--${name}`).trim();
70
+ }
71
+
72
+ /**
73
+ * Set CSS variable value
74
+ */
75
+ export function setCSSVariable(name: string, value: string): void {
76
+ if (typeof document === 'undefined') {
77
+ return;
78
+ }
79
+ document.documentElement.style.setProperty(`--${name}`, value);
80
+ }
81
+
82
+ /**
83
+ * CSS animation utilities
84
+ */
85
+ export const animations = {
86
+ fadeIn: 'animation: fadeIn 0.3s ease-in-out',
87
+ fadeOut: 'animation: fadeOut 0.3s ease-in-out',
88
+ slideInUp: 'animation: slideInUp 0.3s ease-in-out',
89
+ slideOutDown: 'animation: slideOutDown 0.3s ease-in-out',
90
+ slideInRight: 'animation: slideInRight 0.3s ease-in-out',
91
+ slideOutLeft: 'animation: slideOutLeft 0.3s ease-in-out',
92
+ scaleIn: 'animation: scaleIn 0.3s ease-in-out',
93
+ scaleOut: 'animation: scaleOut 0.3s ease-in-out',
94
+ };
@@ -0,0 +1,493 @@
1
+ /* @lp-labs/ui-components - Main Stylesheet */
2
+
3
+ /* ========================================
4
+ CSS Variables & Root Styles
5
+ ======================================== */
6
+
7
+ :root {
8
+ /* Colors */
9
+ --color-primary: #007bff;
10
+ --color-primary-light: #cfe2ff;
11
+ --color-primary-dark: #0a58ca;
12
+ --color-secondary: #6c757d;
13
+ --color-secondary-light: #e2e3e5;
14
+ --color-secondary-dark: #565e64;
15
+ --color-success: #28a745;
16
+ --color-success-light: #d4edda;
17
+ --color-success-dark: #1e7e34;
18
+ --color-warning: #ffc107;
19
+ --color-warning-light: #fff3cd;
20
+ --color-warning-dark: #ff9800;
21
+ --color-danger: #dc3545;
22
+ --color-danger-light: #f8d7da;
23
+ --color-danger-dark: #bd2130;
24
+ --color-info: #17a2b8;
25
+ --color-info-light: #d1ecf1;
26
+ --color-info-dark: #0c5460;
27
+
28
+ /* Grays */
29
+ --color-gray-50: #f9fafb;
30
+ --color-gray-100: #f3f4f6;
31
+ --color-gray-200: #e5e7eb;
32
+ --color-gray-300: #d1d5db;
33
+ --color-gray-400: #9ca3af;
34
+ --color-gray-500: #6b7280;
35
+ --color-gray-600: #4b5563;
36
+ --color-gray-700: #374151;
37
+ --color-gray-800: #1f2937;
38
+ --color-gray-900: #111827;
39
+
40
+ /* Background & Text */
41
+ --color-background: #ffffff;
42
+ --color-background-alt: #f8f9fa;
43
+ --color-text: #212529;
44
+ --color-text-muted: #6c757d;
45
+ --color-text-light: #ffffff;
46
+
47
+ /* Borders */
48
+ --color-border: #dee2e6;
49
+ --color-border-light: #e9ecef;
50
+
51
+ /* Spacing */
52
+ --spacing-xs: 0.25rem;
53
+ --spacing-sm: 0.5rem;
54
+ --spacing-md: 1rem;
55
+ --spacing-lg: 1.5rem;
56
+ --spacing-xl: 2rem;
57
+ --spacing-2xl: 3rem;
58
+
59
+ /* Typography */
60
+ --font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
61
+ --font-size-xs: 0.75rem;
62
+ --font-size-sm: 0.875rem;
63
+ --font-size-md: 1rem;
64
+ --font-size-lg: 1.125rem;
65
+ --font-size-xl: 1.25rem;
66
+ --font-size-2xl: 1.5rem;
67
+
68
+ --font-weight-light: 300;
69
+ --font-weight-normal: 400;
70
+ --font-weight-medium: 500;
71
+ --font-weight-semibold: 600;
72
+ --font-weight-bold: 700;
73
+
74
+ --line-height-tight: 1.2;
75
+ --line-height-normal: 1.5;
76
+ --line-height-relaxed: 1.75;
77
+
78
+ /* Border Radius */
79
+ --radius-sm: 0.25rem;
80
+ --radius-md: 0.5rem;
81
+ --radius-lg: 0.75rem;
82
+ --radius-full: 9999px;
83
+
84
+ /* Shadows */
85
+ --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
86
+ --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
87
+ --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1);
88
+ --shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1);
89
+
90
+ /* Transitions */
91
+ --transition-fast: 150ms ease-in-out;
92
+ --transition-normal: 250ms ease-in-out;
93
+ --transition-slow: 350ms ease-in-out;
94
+
95
+ /* Z-Index */
96
+ --z-dropdown: 1000;
97
+ --z-sticky: 1020;
98
+ --z-fixed: 1030;
99
+ --z-modal-backdrop: 1040;
100
+ --z-modal: 1050;
101
+ --z-popover: 1060;
102
+ --z-tooltip: 1070;
103
+ }
104
+
105
+ [data-theme="dark"] {
106
+ --color-background: #1f2937;
107
+ --color-background-alt: #111827;
108
+ --color-text: #f3f4f6;
109
+ --color-text-muted: #d1d5db;
110
+ --color-border: #374151;
111
+ --color-border-light: #4b5563;
112
+ }
113
+
114
+ /* ========================================
115
+ Base Styles
116
+ ======================================== */
117
+
118
+ * {
119
+ box-sizing: border-box;
120
+ }
121
+
122
+ html,
123
+ body {
124
+ margin: 0;
125
+ padding: 0;
126
+ }
127
+
128
+ body {
129
+ font-family: var(--font-family);
130
+ font-size: var(--font-size-md);
131
+ line-height: var(--line-height-normal);
132
+ color: var(--color-text);
133
+ background-color: var(--color-background);
134
+ transition: background-color var(--transition-normal), color var(--transition-normal);
135
+ }
136
+
137
+ /* ========================================
138
+ Animations
139
+ ======================================== */
140
+
141
+ @keyframes fadeIn {
142
+ from {
143
+ opacity: 0;
144
+ }
145
+ to {
146
+ opacity: 1;
147
+ }
148
+ }
149
+
150
+ @keyframes fadeOut {
151
+ from {
152
+ opacity: 1;
153
+ }
154
+ to {
155
+ opacity: 0;
156
+ }
157
+ }
158
+
159
+ @keyframes slideInUp {
160
+ from {
161
+ transform: translateY(10px);
162
+ opacity: 0;
163
+ }
164
+ to {
165
+ transform: translateY(0);
166
+ opacity: 1;
167
+ }
168
+ }
169
+
170
+ @keyframes slideOutDown {
171
+ from {
172
+ transform: translateY(0);
173
+ opacity: 1;
174
+ }
175
+ to {
176
+ transform: translateY(10px);
177
+ opacity: 0;
178
+ }
179
+ }
180
+
181
+ @keyframes slideInRight {
182
+ from {
183
+ transform: translateX(-10px);
184
+ opacity: 0;
185
+ }
186
+ to {
187
+ transform: translateX(0);
188
+ opacity: 1;
189
+ }
190
+ }
191
+
192
+ @keyframes slideOutLeft {
193
+ from {
194
+ transform: translateX(0);
195
+ opacity: 1;
196
+ }
197
+ to {
198
+ transform: translateX(-10px);
199
+ opacity: 0;
200
+ }
201
+ }
202
+
203
+ @keyframes scaleIn {
204
+ from {
205
+ transform: scale(0.95);
206
+ opacity: 0;
207
+ }
208
+ to {
209
+ transform: scale(1);
210
+ opacity: 1;
211
+ }
212
+ }
213
+
214
+ @keyframes scaleOut {
215
+ from {
216
+ transform: scale(1);
217
+ opacity: 1;
218
+ }
219
+ to {
220
+ transform: scale(0.95);
221
+ opacity: 0;
222
+ }
223
+ }
224
+
225
+ @keyframes spin {
226
+ to {
227
+ transform: rotate(360deg);
228
+ }
229
+ }
230
+
231
+ /* ========================================
232
+ Utility Classes
233
+ ======================================== */
234
+
235
+ /* Spacing */
236
+ .p-0 { padding: 0; }
237
+ .p-1 { padding: var(--spacing-xs); }
238
+ .p-2 { padding: var(--spacing-sm); }
239
+ .p-3 { padding: calc(var(--spacing-sm) + var(--spacing-xs)); }
240
+ .p-4 { padding: var(--spacing-md); }
241
+ .p-6 { padding: var(--spacing-lg); }
242
+ .p-8 { padding: var(--spacing-xl); }
243
+ .p-12 { padding: var(--spacing-2xl); }
244
+
245
+ .m-0 { margin: 0; }
246
+ .m-1 { margin: var(--spacing-xs); }
247
+ .m-2 { margin: var(--spacing-sm); }
248
+ .m-4 { margin: var(--spacing-md); }
249
+ .m-6 { margin: var(--spacing-lg); }
250
+ .m-8 { margin: var(--spacing-xl); }
251
+ .m-12 { margin: var(--spacing-2xl); }
252
+
253
+ .gap-1 { gap: var(--spacing-xs); }
254
+ .gap-2 { gap: var(--spacing-sm); }
255
+ .gap-3 { gap: calc(var(--spacing-sm) + var(--spacing-xs)); }
256
+ .gap-4 { gap: var(--spacing-md); }
257
+ .gap-6 { gap: var(--spacing-lg); }
258
+ .gap-8 { gap: var(--spacing-xl); }
259
+ .gap-12 { gap: var(--spacing-2xl); }
260
+
261
+ .mb-1 { margin-bottom: var(--spacing-xs); }
262
+ .mb-1\.5 { margin-bottom: calc(var(--spacing-xs) + 0.25rem); }
263
+ .mb-2 { margin-bottom: var(--spacing-sm); }
264
+ .mt-1 { margin-top: var(--spacing-xs); }
265
+ .mt-2 { margin-top: var(--spacing-sm); }
266
+ .mt-0\.5 { margin-top: 0.125rem; }
267
+ .ml-1 { margin-left: var(--spacing-xs); }
268
+ .ml-2 { margin-left: var(--spacing-sm); }
269
+ .ml-3 { margin-left: calc(var(--spacing-sm) + var(--spacing-xs)); }
270
+ .ml-auto { margin-left: auto; }
271
+ .mr-3 { margin-right: calc(var(--spacing-sm) + var(--spacing-xs)); }
272
+ .mx-4 { margin-left: var(--spacing-md); margin-right: var(--spacing-md); }
273
+
274
+ /* Display */
275
+ .block { display: block; }
276
+ .inline { display: inline; }
277
+ .inline-block { display: inline-block; }
278
+ .flex { display: flex; }
279
+ .grid { display: grid; }
280
+ .hidden { display: none; }
281
+ .invisible { visibility: hidden; }
282
+
283
+ /* Flex Utilities */
284
+ .flex-col { flex-direction: column; }
285
+ .items-start { align-items: flex-start; }
286
+ .items-center { align-items: center; }
287
+ .items-end { align-items: flex-end; }
288
+ .justify-start { justify-content: flex-start; }
289
+ .justify-center { justify-content: center; }
290
+ .justify-between { justify-content: space-between; }
291
+ .justify-end { justify-content: flex-end; }
292
+ .flex-1 { flex: 1; }
293
+ .flex-shrink-0 { flex-shrink: 0; }
294
+
295
+ /* Colors */
296
+ .bg-white { background-color: #ffffff; }
297
+ .bg-gray-50 { background-color: var(--color-gray-50); }
298
+ .bg-gray-100 { background-color: var(--color-gray-100); }
299
+ .bg-gray-200 { background-color: var(--color-gray-200); }
300
+ .bg-gray-900 { background-color: var(--color-gray-900); }
301
+ .bg-blue-50 { background-color: var(--color-primary-light); }
302
+ .bg-blue-600 { background-color: var(--color-primary); }
303
+ .bg-blue-700 { background-color: var(--color-primary-dark); }
304
+ .bg-red-50 { background-color: var(--color-danger-light); }
305
+ .bg-red-600 { background-color: var(--color-danger); }
306
+ .bg-green-50 { background-color: var(--color-success-light); }
307
+ .bg-green-100 { background-color: var(--color-success-light); }
308
+ .bg-yellow-50 { background-color: var(--color-warning-light); }
309
+ .bg-yellow-100 { background-color: var(--color-warning-light); }
310
+ .bg-cyan-100 { background-color: var(--color-info-light); }
311
+ .bg-transparent { background-color: transparent; }
312
+ .bg-opacity-50 { opacity: 0.5; }
313
+
314
+ .text-white { color: #ffffff; }
315
+ .text-gray-700 { color: var(--color-gray-700); }
316
+ .text-gray-900 { color: var(--color-gray-900); }
317
+ .text-gray-500 { color: var(--color-gray-500); }
318
+ .text-blue-600 { color: var(--color-primary); }
319
+ .text-red-600 { color: var(--color-danger); }
320
+ .text-green-600 { color: var(--color-success); }
321
+ .text-yellow-800 { color: var(--color-warning-dark); }
322
+ .text-red-800 { color: var(--color-danger-dark); }
323
+ .text-green-800 { color: var(--color-success-dark); }
324
+ .text-blue-800 { color: var(--color-primary-dark); }
325
+ .text-cyan-800 { color: var(--color-info-dark); }
326
+ .text-gray-400 { color: var(--color-gray-400); }
327
+ .text-gray-600 { color: var(--color-gray-600); }
328
+ .text-current { color: currentColor; }
329
+
330
+ /* Borders */
331
+ .border { border: 1px solid var(--color-border); }
332
+ .border-b { border-bottom: 1px solid var(--color-border); }
333
+ .border-t { border-top: 1px solid var(--color-border); }
334
+ .border-l { border-left: 1px solid var(--color-border); }
335
+ .border-r { border-right: 1px solid var(--color-border); }
336
+ .border-gray-200 { border-color: var(--color-gray-200); }
337
+ .border-gray-300 { border-color: var(--color-gray-300); }
338
+ .border-gray-100 { border-color: var(--color-gray-100); }
339
+ .border-red-500 { border-color: var(--color-danger); }
340
+ .border-blue-600 { border-color: var(--color-primary); }
341
+ .border-yellow-200 { border-color: var(--color-warning-light); }
342
+ .border-red-200 { border-color: var(--color-danger-light); }
343
+ .border-green-200 { border-color: var(--color-success-light); }
344
+ .border-blue-200 { border-color: var(--color-primary-light); }
345
+
346
+ /* Border Radius */
347
+ .rounded-none { border-radius: 0; }
348
+ .rounded-sm { border-radius: var(--radius-sm); }
349
+ .rounded-md { border-radius: var(--radius-md); }
350
+ .rounded-lg { border-radius: var(--radius-lg); }
351
+ .rounded-full { border-radius: var(--radius-full); }
352
+
353
+ /* Shadows */
354
+ .shadow-none { box-shadow: none; }
355
+ .shadow-sm { box-shadow: var(--shadow-sm); }
356
+ .shadow-md { box-shadow: var(--shadow-md); }
357
+ .shadow-lg { box-shadow: var(--shadow-lg); }
358
+ .shadow-xl { box-shadow: var(--shadow-xl); }
359
+
360
+ /* Typography */
361
+ .text-xs { font-size: var(--font-size-xs); }
362
+ .text-sm { font-size: var(--font-size-sm); }
363
+ .text-base { font-size: var(--font-size-md); }
364
+ .text-lg { font-size: var(--font-size-lg); }
365
+ .text-xl { font-size: var(--font-size-xl); }
366
+ .text-2xl { font-size: var(--font-size-2xl); }
367
+
368
+ .font-light { font-weight: var(--font-weight-light); }
369
+ .font-normal { font-weight: var(--font-weight-normal); }
370
+ .font-medium { font-weight: var(--font-weight-medium); }
371
+ .font-semibold { font-weight: var(--font-weight-semibold); }
372
+ .font-bold { font-weight: var(--font-weight-bold); }
373
+
374
+ .leading-tight { line-height: var(--line-height-tight); }
375
+ .leading-normal { line-height: var(--line-height-normal); }
376
+ .leading-relaxed { line-height: var(--line-height-relaxed); }
377
+
378
+ /* Position & Size */
379
+ .relative { position: relative; }
380
+ .absolute { position: absolute; }
381
+ .fixed { position: fixed; }
382
+ .sticky { position: sticky; }
383
+ .inset-0 { top: 0; right: 0; bottom: 0; left: 0; }
384
+ .top-full { top: 100%; }
385
+ .left-0 { left: 0; }
386
+ .w-full { width: 100%; }
387
+ .h-full { height: 100%; }
388
+ .w-screen { width: 100vw; }
389
+ .h-screen { height: 100vh; }
390
+ .w-min { width: min-content; }
391
+ .h-min { height: min-content; }
392
+ .w-max { width: max-content; }
393
+ .h-max { height: max-content; }
394
+ .w-6 { width: 1.5rem; }
395
+ .h-6 { height: 1.5rem; }
396
+ .w-5 { width: 1.25rem; }
397
+ .h-5 { height: 1.25rem; }
398
+ .w-1\.5 { width: 0.375rem; }
399
+ .h-1\.5 { height: 0.375rem; }
400
+
401
+ /* Transitions & Animations */
402
+ .transition-all { transition: all var(--transition-normal); }
403
+ .transition-colors { transition: color var(--transition-normal), background-color var(--transition-normal); }
404
+ .transition-opacity { transition: opacity var(--transition-normal); }
405
+ .transition-transform { transition: transform var(--transition-normal); }
406
+ .transition-shadow { transition: box-shadow var(--transition-normal); }
407
+ .animate-spin { animation: spin 1s linear infinite; }
408
+
409
+ /* Hover & States */
410
+ .hover\:opacity-80:hover { opacity: 0.8; }
411
+ .hover\:opacity-90:hover { opacity: 0.9; }
412
+ .hover\:opacity-100:hover { opacity: 1; }
413
+ .hover\:bg-blue-700:hover { background-color: var(--color-primary-dark); }
414
+ .hover\:bg-blue-600:hover { background-color: var(--color-primary); }
415
+ .hover\:bg-gray-100:hover { background-color: var(--color-gray-100); }
416
+ .hover\:bg-gray-300:hover { background-color: var(--color-gray-300); }
417
+ .hover\:bg-gray-400:hover { background-color: var(--color-gray-400); }
418
+ .hover\:bg-red-700:hover { background-color: var(--color-danger-dark); }
419
+ .hover\:text-gray-600:hover { color: var(--color-gray-600); }
420
+ .hover\:text-gray-900:hover { color: var(--color-gray-900); }
421
+ .hover\:shadow-lg:hover { box-shadow: var(--shadow-lg); }
422
+ .hover\:shadow-xl:hover { box-shadow: var(--shadow-xl); }
423
+ .active\:opacity-75:active { opacity: 0.75; }
424
+ .active\:bg-blue-800:active { background-color: var(--color-primary-dark); }
425
+ .active\:bg-gray-200:active { background-color: var(--color-gray-200); }
426
+ .active\:bg-red-800:active { background-color: var(--color-danger-dark); }
427
+ .active\:bg-gray-400:active { background-color: var(--color-gray-400); }
428
+
429
+ .focus\:outline-none:focus { outline: none; }
430
+ .focus\:ring-2:focus { box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.5); }
431
+ .focus\:ring-offset-1:focus { outline-offset: 0.25rem; }
432
+ .focus\:ring-offset-2:focus { outline-offset: 0.5rem; }
433
+ .focus\:ring-blue-500:focus { box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.5); }
434
+ .focus\:ring-red-500:focus { box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.5); }
435
+
436
+ .disabled\:opacity-50:disabled { opacity: 0.5; }
437
+ .disabled\:cursor-not-allowed:disabled { cursor: not-allowed; }
438
+ .disabled\:bg-gray-100:disabled { background-color: var(--color-gray-100); }
439
+ .disabled\:text-gray-500:disabled { color: var(--color-gray-500); }
440
+
441
+ /* Responsive */
442
+ .hidden { display: none; }
443
+
444
+ @media (min-width: 640px) {
445
+ .sm\:block { display: block; }
446
+ .sm\:hidden { display: none; }
447
+ }
448
+
449
+ @media (min-width: 768px) {
450
+ .md\:block { display: block; }
451
+ .md\:hidden { display: none; }
452
+ .md\:flex { display: flex; }
453
+ .md\:grid { display: grid; }
454
+ }
455
+
456
+ @media (min-width: 1024px) {
457
+ .lg\:block { display: block; }
458
+ .lg\:hidden { display: none; }
459
+ .lg\:max-w-7xl { max-width: 80rem; }
460
+ }
461
+
462
+ @media (prefers-reduced-motion: no-preference) {
463
+ * {
464
+ scroll-behavior: smooth;
465
+ }
466
+ }
467
+
468
+ /* ========================================
469
+ Component Specific Styles
470
+ ======================================== */
471
+
472
+ /* Max Width */
473
+ .max-w-sm { max-width: 24rem; }
474
+ .max-w-md { max-width: 28rem; }
475
+ .max-w-lg { max-width: 32rem; }
476
+ .max-w-7xl { max-width: 80rem; }
477
+ .min-w-max { min-width: max-content; }
478
+
479
+ /* Cursor */
480
+ .cursor-pointer { cursor: pointer; }
481
+ .cursor-not-allowed { cursor: not-allowed; }
482
+
483
+ /* Print Styles */
484
+ @media print {
485
+ body {
486
+ background: white;
487
+ color: black;
488
+ }
489
+
490
+ .no-print {
491
+ display: none !important;
492
+ }
493
+ }
package/package.json CHANGED
@@ -1,6 +1,124 @@
1
- {
2
- "name": "@lp-labs/ui-components",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
1
+ {
2
+ "name": "@lp-labs/ui-components",
3
+ "version": "1.0.0",
4
+ "description": "A comprehensive hybrid UI component library with utilities and theming support. Includes pre-built components and customizable utilities.",
5
+ "license": "MIT",
6
+ "type": "module",
7
+ "main": "./dist/cjs/index.js",
8
+ "module": "./dist/esm/index.js",
9
+ "types": "./dist/esm/index.d.ts",
10
+ "exports": {
11
+ ".": {
12
+ "import": {
13
+ "types": "./dist/esm/index.d.ts",
14
+ "default": "./dist/esm/index.js"
15
+ },
16
+ "require": {
17
+ "types": "./dist/cjs/index.d.ts",
18
+ "default": "./dist/cjs/index.js"
19
+ }
20
+ },
21
+ "./components": {
22
+ "import": {
23
+ "types": "./dist/esm/components/index.d.ts",
24
+ "default": "./dist/esm/components/index.js"
25
+ },
26
+ "require": {
27
+ "types": "./dist/cjs/components/index.d.ts",
28
+ "default": "./dist/cjs/components/index.js"
29
+ }
30
+ },
31
+ "./utilities": {
32
+ "import": {
33
+ "types": "./dist/esm/utilities/index.d.ts",
34
+ "default": "./dist/esm/utilities/index.js"
35
+ },
36
+ "require": {
37
+ "types": "./dist/cjs/utilities/index.d.ts",
38
+ "default": "./dist/cjs/utilities/index.js"
39
+ }
40
+ },
41
+ "./theme": {
42
+ "import": {
43
+ "types": "./dist/esm/theme/index.d.ts",
44
+ "default": "./dist/esm/theme/index.js"
45
+ },
46
+ "require": {
47
+ "types": "./dist/cjs/theme/index.d.ts",
48
+ "default": "./dist/cjs/theme/index.js"
49
+ }
50
+ },
51
+ "./styles": "./dist/styles/main.css",
52
+ "./styles.scss": "./src/styles/main.scss",
53
+ "./package.json": "./package.json"
54
+ },
55
+ "files": [
56
+ "dist",
57
+ "src/styles",
58
+ "README.md",
59
+ "LICENSE",
60
+ "CHANGELOG.md"
61
+ ],
62
+ "sideEffects": [
63
+ "*.css",
64
+ "*.scss"
65
+ ],
66
+ "engines": {
67
+ "node": ">=18"
68
+ },
69
+ "peerDependencies": {
70
+ "react": "^18.0.0"
71
+ },
72
+ "peerDependenciesOptional": {
73
+ "react": true
74
+ },
75
+ "devDependencies": {
76
+ "typescript": "^5.9.3",
77
+ "prettier": "^3.6.2",
78
+ "@types/react": "^18.2.0",
79
+ "react": "^18.2.0"
80
+ },
81
+ "scripts": {
82
+ "build": "node scripts/build.mjs",
83
+ "build:watch": "node scripts/build.mjs --watch",
84
+ "typecheck": "npm run build && node scripts/check-types.mjs",
85
+ "test": "npm run build && node --test tests/**/*.test.mjs",
86
+ "test:watch": "npm run build && node --test --watch tests/**/*.test.mjs",
87
+ "lint": "prettier --check src scripts tests *.json README.md",
88
+ "format": "prettier --write src scripts tests *.json README.md",
89
+ "prepack": "npm run build"
90
+ },
91
+ "prettier": {
92
+ "singleQuote": true,
93
+ "semi": true,
94
+ "trailingComma": "all",
95
+ "printWidth": 100,
96
+ "endOfLine": "lf"
97
+ },
98
+ "publishConfig": {
99
+ "access": "public",
100
+ "registry": "https://registry.npmjs.org/"
101
+ },
102
+ "author": {
103
+ "name": "Libin Prasanth",
104
+ "url": "https://www.linkedin.com/in/libinprasanth/"
105
+ },
106
+ "keywords": [
107
+ "ui",
108
+ "components",
109
+ "react",
110
+ "library",
111
+ "design-system",
112
+ "utilities",
113
+ "theme",
114
+ "hybrid"
115
+ ],
116
+ "repository": {
117
+ "type": "git",
118
+ "url": "https://github.com/lp-labs/flow"
119
+ },
120
+ "funding": {
121
+ "type": "paypal",
122
+ "url": "https://www.paypal.me/LibinPrasanth"
123
+ }
124
+ }