acidui-core 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 (194) hide show
  1. package/README.md +127 -0
  2. package/eslint.config.js +23 -0
  3. package/git +0 -0
  4. package/index.html +13 -0
  5. package/package.json +38 -0
  6. package/public/vite.svg +1 -0
  7. package/src/App.css +8 -0
  8. package/src/App.tsx +26 -0
  9. package/src/assets/react.svg +1 -0
  10. package/src/cli/main.mjs +209 -0
  11. package/src/components/AcidAccordion.css +52 -0
  12. package/src/components/AcidAccordion.tsx +72 -0
  13. package/src/components/AcidAlert.css +86 -0
  14. package/src/components/AcidAlert.tsx +52 -0
  15. package/src/components/AcidAnimatedNotification.css +103 -0
  16. package/src/components/AcidAnimatedNotification.tsx +62 -0
  17. package/src/components/AcidAspectRatio.css +16 -0
  18. package/src/components/AcidAspectRatio.tsx +21 -0
  19. package/src/components/AcidAuroraText.css +49 -0
  20. package/src/components/AcidAuroraText.tsx +19 -0
  21. package/src/components/AcidAvatar.css +70 -0
  22. package/src/components/AcidAvatar.tsx +32 -0
  23. package/src/components/AcidBadge.css +54 -0
  24. package/src/components/AcidBadge.tsx +27 -0
  25. package/src/components/AcidBentoGrid.css +98 -0
  26. package/src/components/AcidBentoGrid.tsx +68 -0
  27. package/src/components/AcidBorderBeam.css +27 -0
  28. package/src/components/AcidBorderBeam.tsx +37 -0
  29. package/src/components/AcidBreadcrumb.css +36 -0
  30. package/src/components/AcidBreadcrumb.tsx +35 -0
  31. package/src/components/AcidButton.css +97 -0
  32. package/src/components/AcidButton.tsx +29 -0
  33. package/src/components/AcidCalendar.css +136 -0
  34. package/src/components/AcidCalendar.tsx +144 -0
  35. package/src/components/AcidCard.css +42 -0
  36. package/src/components/AcidCard.tsx +26 -0
  37. package/src/components/AcidCarousel.css +166 -0
  38. package/src/components/AcidCarousel.tsx +168 -0
  39. package/src/components/AcidChart.css +132 -0
  40. package/src/components/AcidChart.tsx +198 -0
  41. package/src/components/AcidCheckbox.css +64 -0
  42. package/src/components/AcidCheckbox.tsx +58 -0
  43. package/src/components/AcidCodeBlock.css +51 -0
  44. package/src/components/AcidCodeBlock.tsx +25 -0
  45. package/src/components/AcidCodeDisplay.css +79 -0
  46. package/src/components/AcidCodeDisplay.tsx +42 -0
  47. package/src/components/AcidCollapsible.css +54 -0
  48. package/src/components/AcidCollapsible.tsx +56 -0
  49. package/src/components/AcidCommand.css +207 -0
  50. package/src/components/AcidCommand.tsx +149 -0
  51. package/src/components/AcidConfettiButton.tsx +37 -0
  52. package/src/components/AcidContextMenu.css +84 -0
  53. package/src/components/AcidContextMenu.tsx +111 -0
  54. package/src/components/AcidCountUp.css +54 -0
  55. package/src/components/AcidCountUp.tsx +66 -0
  56. package/src/components/AcidDialog.css +124 -0
  57. package/src/components/AcidDialog.tsx +89 -0
  58. package/src/components/AcidDivider.css +44 -0
  59. package/src/components/AcidDivider.tsx +28 -0
  60. package/src/components/AcidDock.css +74 -0
  61. package/src/components/AcidDock.tsx +65 -0
  62. package/src/components/AcidDragOrderList.css +45 -0
  63. package/src/components/AcidDragOrderList.tsx +58 -0
  64. package/src/components/AcidDrawer.css +64 -0
  65. package/src/components/AcidDrawer.tsx +55 -0
  66. package/src/components/AcidDropdown.css +103 -0
  67. package/src/components/AcidDropdown.tsx +87 -0
  68. package/src/components/AcidDynamicNavbar.css +273 -0
  69. package/src/components/AcidDynamicNavbar.tsx +157 -0
  70. package/src/components/AcidElectroBorder.css +141 -0
  71. package/src/components/AcidElectroBorder.tsx +53 -0
  72. package/src/components/AcidFloatingNavbar.css +152 -0
  73. package/src/components/AcidFloatingNavbar.tsx +111 -0
  74. package/src/components/AcidForm.css +78 -0
  75. package/src/components/AcidForm.tsx +45 -0
  76. package/src/components/AcidGlassFolder.css +111 -0
  77. package/src/components/AcidGlassFolder.tsx +34 -0
  78. package/src/components/AcidGradientButton.css +99 -0
  79. package/src/components/AcidGradientButton.tsx +37 -0
  80. package/src/components/AcidGridBox.css +61 -0
  81. package/src/components/AcidGridBox.tsx +26 -0
  82. package/src/components/AcidIconBox.css +42 -0
  83. package/src/components/AcidIconBox.tsx +18 -0
  84. package/src/components/AcidInput.css +99 -0
  85. package/src/components/AcidInput.tsx +27 -0
  86. package/src/components/AcidInputOtp.css +57 -0
  87. package/src/components/AcidInputOtp.tsx +102 -0
  88. package/src/components/AcidLabel.css +26 -0
  89. package/src/components/AcidLabel.tsx +18 -0
  90. package/src/components/AcidLayout.css +42 -0
  91. package/src/components/AcidLayout.tsx +35 -0
  92. package/src/components/AcidLink.css +26 -0
  93. package/src/components/AcidLink.tsx +19 -0
  94. package/src/components/AcidMagicCard.css +27 -0
  95. package/src/components/AcidMagicCard.tsx +49 -0
  96. package/src/components/AcidMagicLoader.css +47 -0
  97. package/src/components/AcidMagicLoader.tsx +43 -0
  98. package/src/components/AcidMarquee.css +59 -0
  99. package/src/components/AcidMarquee.tsx +28 -0
  100. package/src/components/AcidMeter.css +118 -0
  101. package/src/components/AcidMeter.tsx +37 -0
  102. package/src/components/AcidNavbar.css +142 -0
  103. package/src/components/AcidNavbar.tsx +111 -0
  104. package/src/components/AcidNavigationMenu.css +47 -0
  105. package/src/components/AcidNavigationMenu.tsx +38 -0
  106. package/src/components/AcidPagination.css +57 -0
  107. package/src/components/AcidPagination.tsx +51 -0
  108. package/src/components/AcidProgress.css +57 -0
  109. package/src/components/AcidProgress.tsx +40 -0
  110. package/src/components/AcidRadioGroup.css +98 -0
  111. package/src/components/AcidRadioGroup.tsx +70 -0
  112. package/src/components/AcidResizable.css +34 -0
  113. package/src/components/AcidResizable.tsx +46 -0
  114. package/src/components/AcidRippleButton.css +34 -0
  115. package/src/components/AcidRippleButton.tsx +61 -0
  116. package/src/components/AcidRippleLoader.css +23 -0
  117. package/src/components/AcidRippleLoader.tsx +40 -0
  118. package/src/components/AcidScrollArea.css +28 -0
  119. package/src/components/AcidScrollArea.tsx +21 -0
  120. package/src/components/AcidScrollList.css +107 -0
  121. package/src/components/AcidScrollList.tsx +58 -0
  122. package/src/components/AcidScrollReveal.tsx +29 -0
  123. package/src/components/AcidScrollStack.css +46 -0
  124. package/src/components/AcidScrollStack.tsx +54 -0
  125. package/src/components/AcidSelect.css +144 -0
  126. package/src/components/AcidSelect.tsx +108 -0
  127. package/src/components/AcidSeparator.css +15 -0
  128. package/src/components/AcidSeparator.tsx +24 -0
  129. package/src/components/AcidSheet.css +99 -0
  130. package/src/components/AcidSheet.tsx +68 -0
  131. package/src/components/AcidShineButton.css +36 -0
  132. package/src/components/AcidShineButton.tsx +24 -0
  133. package/src/components/AcidShinyText.css +22 -0
  134. package/src/components/AcidShinyText.tsx +20 -0
  135. package/src/components/AcidSidebar.css +152 -0
  136. package/src/components/AcidSidebar.tsx +44 -0
  137. package/src/components/AcidSkeleton.css +61 -0
  138. package/src/components/AcidSkeleton.tsx +29 -0
  139. package/src/components/AcidSlider.css +89 -0
  140. package/src/components/AcidSlider.tsx +87 -0
  141. package/src/components/AcidSolidCard.css +55 -0
  142. package/src/components/AcidSolidCard.tsx +35 -0
  143. package/src/components/AcidStackList.css +59 -0
  144. package/src/components/AcidStackList.tsx +38 -0
  145. package/src/components/AcidStepList.css +35 -0
  146. package/src/components/AcidStepList.tsx +31 -0
  147. package/src/components/AcidSwitch.css +48 -0
  148. package/src/components/AcidSwitch.tsx +48 -0
  149. package/src/components/AcidTable.css +60 -0
  150. package/src/components/AcidTable.tsx +44 -0
  151. package/src/components/AcidTabs.css +102 -0
  152. package/src/components/AcidTabs.tsx +47 -0
  153. package/src/components/AcidTerminalCard.css +63 -0
  154. package/src/components/AcidTerminalCard.tsx +35 -0
  155. package/src/components/AcidTextMarquee.css +30 -0
  156. package/src/components/AcidTextMarquee.tsx +37 -0
  157. package/src/components/AcidTextarea.tsx +32 -0
  158. package/src/components/AcidTimeline.css +129 -0
  159. package/src/components/AcidTimeline.tsx +59 -0
  160. package/src/components/AcidToast.css +77 -0
  161. package/src/components/AcidToast.tsx +72 -0
  162. package/src/components/AcidToggle.css +73 -0
  163. package/src/components/AcidToggle.tsx +56 -0
  164. package/src/components/AcidToggleGroup.css +61 -0
  165. package/src/components/AcidToggleGroup.tsx +76 -0
  166. package/src/components/AcidTooltip.css +81 -0
  167. package/src/components/AcidTooltip.tsx +44 -0
  168. package/src/components/AcidTopLoader.css +24 -0
  169. package/src/components/AcidTopLoader.tsx +61 -0
  170. package/src/components/AcidTopStickyBar.css +99 -0
  171. package/src/components/AcidTopStickyBar.tsx +51 -0
  172. package/src/components/AcidTrialButton.css +55 -0
  173. package/src/components/AcidTrialButton.tsx +26 -0
  174. package/src/components/AcidTrustedUsers.css +59 -0
  175. package/src/components/AcidTrustedUsers.tsx +46 -0
  176. package/src/components/AcidTypewriterInput.css +37 -0
  177. package/src/components/AcidTypewriterInput.tsx +31 -0
  178. package/src/components/AcidTypingText.tsx +32 -0
  179. package/src/components/AcidVideoText.css +35 -0
  180. package/src/components/AcidVideoText.tsx +25 -0
  181. package/src/data/sidebar.ts +135 -0
  182. package/src/data/snippets.ts +13 -0
  183. package/src/index.css +136 -0
  184. package/src/main.tsx +13 -0
  185. package/src/pages/Docs.css +604 -0
  186. package/src/pages/Docs.tsx +2347 -0
  187. package/src/pages/Landing.css +342 -0
  188. package/src/pages/Landing.tsx +216 -0
  189. package/src/pages/Library.css +426 -0
  190. package/src/pages/Library.tsx +254 -0
  191. package/tsconfig.app.json +28 -0
  192. package/tsconfig.json +7 -0
  193. package/tsconfig.node.json +26 -0
  194. package/vite.config.ts +7 -0
@@ -0,0 +1,25 @@
1
+
2
+ import clsx from 'clsx';
3
+ import './AcidVideoText.css';
4
+
5
+ export interface AcidVideoTextProps {
6
+ text: string;
7
+ videoSrc: string;
8
+ className?: string;
9
+ }
10
+
11
+ export const AcidVideoText = ({ text, videoSrc, className }: AcidVideoTextProps) => {
12
+ return (
13
+ <div className={clsx('ac-video-text-container', className)}>
14
+ <video
15
+ src={videoSrc}
16
+ autoPlay
17
+ muted
18
+ loop
19
+ playsInline
20
+ className="ac-video-text-bg"
21
+ />
22
+ <h1 className="ac-video-text-mask">{text}</h1>
23
+ </div>
24
+ );
25
+ };
@@ -0,0 +1,135 @@
1
+ import type { SidebarCategory } from '../components/AcidSidebar';
2
+
3
+ export const sidebarData: SidebarCategory[] = [
4
+ {
5
+ title: 'GETTING_STARTED',
6
+ items: [
7
+ { name: 'Introduction' },
8
+ { name: 'Installation' },
9
+ ]
10
+ },
11
+ {
12
+ title: 'UI_ELEMENTS',
13
+ items: [
14
+ { name: 'Alert' },
15
+ { name: 'Avatar', isNew: true },
16
+ { name: 'Badge' },
17
+ { name: 'Button' },
18
+ { name: 'Card' },
19
+ { name: 'Carousel', isNew: true },
20
+ { name: 'Dialog' },
21
+ { name: 'Dropdown', isNew: true },
22
+ { name: 'Progress', isNew: true },
23
+ { name: 'Skeleton', isNew: true },
24
+ { name: 'Toast', isNew: true },
25
+ { name: 'Tooltip' },
26
+ { name: 'Accordion', isNew: true },
27
+ { name: 'Tabs', isNew: true },
28
+ { name: 'Chart', isNew: true },
29
+ { name: 'Collapsible', isNew: true },
30
+ { name: 'Context Menu', isNew: true },
31
+ { name: 'Sheet', isNew: true },
32
+ { name: 'Drawer', isNew: true },
33
+ { name: 'Bento Grid', isNew: true },
34
+ { name: 'Dock', isNew: true },
35
+ { name: 'Animated Notification', isNew: true },
36
+ { name: 'Magic Card', isNew: true },
37
+ { name: 'Electro Border', isNew: true },
38
+ { name: 'Drag Order List', isNew: true },
39
+ { name: 'Magic Loader', isNew: true },
40
+ { name: 'Ripple Loader', isNew: true },
41
+ { name: 'Trusted Users', isNew: true },
42
+ ]
43
+ },
44
+ {
45
+ title: 'FORM_CONTROLS',
46
+ items: [
47
+ { name: 'Calendar', isNew: true },
48
+ { name: 'Checkbox', isNew: true },
49
+ { name: 'Command', isNew: true },
50
+ { name: 'Form', isNew: true },
51
+ { name: 'Input' },
52
+ { name: 'Input Otp', isNew: true },
53
+ { name: 'Label' },
54
+ { name: 'Radio Group', isNew: true },
55
+ { name: 'Select', isNew: true },
56
+ { name: 'Slider', isNew: true },
57
+ { name: 'Switch' },
58
+ { name: 'Textarea', isNew: true },
59
+ { name: 'Toggle', isNew: true },
60
+ { name: 'Toggle Group', isNew: true },
61
+ ]
62
+ },
63
+ {
64
+ title: 'LAYOUT',
65
+ items: [
66
+ { name: 'Layout', isNew: true },
67
+ { name: 'Aspect Ratio', isNew: true },
68
+ { name: 'Resizable', isNew: true },
69
+ { name: 'Scroll Area', isNew: true },
70
+ { name: 'Separator', isNew: true },
71
+ { name: 'Sidebar', isNew: true },
72
+ { name: 'Scroll Stack', isNew: true },
73
+ ]
74
+ },
75
+ {
76
+ title: 'NAVIGATION',
77
+ items: [
78
+ { name: 'Breadcrumb', isNew: true },
79
+ { name: 'Navigation Menu', isNew: true },
80
+ { name: 'Navbar', isNew: true },
81
+ { name: 'Dynamic Navbar', isNew: true },
82
+ { name: 'Pagination', isNew: true },
83
+ ]
84
+ },
85
+ {
86
+ title: 'DATA_DISPLAY',
87
+ items: [
88
+ { name: 'Table', isNew: true },
89
+ { name: 'Marquee', isNew: true },
90
+ { name: 'Timeline' },
91
+ { name: 'Meter' },
92
+ { name: 'Step List' },
93
+ { name: 'Count Up', isNew: true },
94
+ { name: 'Terminal Card', isNew: true },
95
+ { name: 'Stack List', isNew: true },
96
+ { name: 'Scroll List', isNew: true },
97
+ ]
98
+ },
99
+ {
100
+ title: 'UTILITIES',
101
+ items: [
102
+ { name: 'Glass Folder', isNew: true },
103
+ { name: 'Icon Box', isNew: true },
104
+ { name: 'Link', isNew: true },
105
+ { name: 'Grid Box' },
106
+ { name: 'Solid Card' },
107
+ { name: 'Divider' },
108
+ { name: 'Top Loader', isNew: true },
109
+ { name: 'Top Sticky Bar', isNew: true },
110
+ ]
111
+ },
112
+ {
113
+ title: 'TEXT_EFFECTS',
114
+ items: [
115
+ { name: 'Aurora Text', isNew: true },
116
+ { name: 'Scroll Reveal', isNew: true },
117
+ { name: 'Shiny Text', isNew: true },
118
+ { name: 'Text Marquee', isNew: true },
119
+ { name: 'Typewriter Input', isNew: true },
120
+ { name: 'Typing Text', isNew: true },
121
+ { name: 'Video Text', isNew: true },
122
+ ]
123
+ },
124
+ {
125
+ title: 'PREMIUM_MODULES',
126
+ items: [
127
+ { name: 'Border Beam', isNew: true },
128
+ { name: 'Confetti Button', isNew: true },
129
+ { name: 'Gradient Button', isNew: true },
130
+ { name: 'Ripple Button', isNew: true },
131
+ { name: 'Shine Button', isNew: true },
132
+ { name: 'Trial Button', isNew: true },
133
+ ]
134
+ }
135
+ ];
@@ -0,0 +1,13 @@
1
+ export const componentSnippets: Record<string, string> = {
2
+ 'button': `import React from 'react';\nimport { motion, type HTMLMotionProps } from 'framer-motion';\nimport clsx from 'clsx';\nimport './AcidButton.css';\n\nexport interface AcidButtonProps extends HTMLMotionProps<"button"> {\n variant?: 'primary' | 'secondary' | 'ghost' | 'outline';\n size?: 'sm' | 'md' | 'lg';\n}\n\nexport const AcidButton = React.forwardRef<HTMLButtonElement, AcidButtonProps>(\n ({ className, variant = 'primary', size = 'md', children, ...props }, ref) => {\n return (\n <motion.button\n ref={ref}\n whileHover={{ y: -2, boxShadow: '0 4px 12px rgba(244, 67, 54, 0.2)' }}\n whileTap={{ scale: 0.98 }}\n className={clsx(\n 'ac-button',\n \`ac-btn-\${variant}\`,\n \`ac-btn-size-\${size}\`,\n className\n )}\n {...props}\n >\n <span className="ac-btn-text">{children as React.ReactNode}</span>\n </motion.button>\n );\n }\n);`,
3
+ 'card': `import React from 'react';\nimport { motion, type HTMLMotionProps } from 'framer-motion';\nimport clsx from 'clsx';\nimport './AcidCard.css';\n\nexport interface AcidCardProps extends HTMLMotionProps<"div"> {\n variant?: 'flat' | 'outline' | 'dashed';\n}\n\nexport const AcidCard = React.forwardRef<HTMLDivElement, AcidCardProps>(\n ({ className, variant = 'outline', children, ...props }, ref) => {\n return (\n <motion.div\n ref={ref}\n initial={{ opacity: 0, y: 10 }}\n whileInView={{ opacity: 1, y: 0 }}\n viewport={{ once: true }}\n transition={{ duration: 0.3, ease: 'easeOut' }}\n whileHover={{ y: -4, borderColor: 'var(--ac-brand)' }}\n className={clsx('ac-card', \`ac-card-\${variant}\`, className)}\n {...props}\n >\n {children}\n </motion.div>\n );\n }\n);`,
4
+ 'glass-folder': `import React from "react";\nimport { cn } from "../lib/utils"; \nimport "./AcidGlassFolder.css";\n\ntype GlassFolderProps = {\n icon?: React.ReactNode;\n title?: string;\n className?: string;\n};\n\nexport const AcidGlassFolder: React.FC<GlassFolderProps> = ({ icon, title, className }) => {\n return (\n <section className={cn("ac-glass-folder-group", className)}>\n <div className="ac-folder-container">\n <div className="ac-folder-tab"></div>\n <div className="ac-folder-front">\n <div className="ac-folder-icon">{icon}</div>\n <div className="ac-folder-title">{title}</div>\n </div>\n <div className="ac-folder-back"></div>\n </div>\n </section>\n );\n};`,
5
+ 'table': `import clsx from 'clsx';\nimport './AcidTable.css';\n\ninterface Column {\n header: string;\n accessor: string;\n}\n\ninterface AcidTableProps {\n columns: Column[];\n data: any[];\n className?: string;\n}\n\nexport const AcidTable = ({ columns, data, className }: AcidTableProps) => {\n return (\n <div className={clsx('ac-table-wrapper', className)}>\n <table className="ac-table">\n <thead className="ac-table-thead">\n <tr>\n {columns.map((col, i) => (\n <th key={i} className="ac-table-th">{col.header}</th>\n ))}\n </tr>\n </thead>\n <tbody>\n {data.map((row, i) => (\n <tr key={i} className="ac-table-tr">\n {columns.map((col, j) => (\n <td key={j} className="ac-table-td">\n {row[col.accessor]}\n </td>\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n );\n};`,
6
+ 'input': `import React from 'react';\nimport clsx from 'clsx';\nimport './AcidInput.css';\n\ninterface AcidInputProps extends React.InputHTMLAttributes<HTMLInputElement> {\n variant?: 'outline' | 'filled' | 'terminal';\n}\n\nexport const AcidInput = ({ variant = 'outline', className, ...props }: AcidInputProps) => {\n return (\n <div className={clsx('ac-input-wrapper', \`ac-input-\${variant}\`, className)}>\n {variant === 'terminal' && <span className="ac-input-prompt">></span>}\n <input className="ac-input-field" {...props} />\n </div>\n );\n};`,
7
+ 'grid-box': `import React from 'react';\nimport clsx from 'clsx';\nimport './AcidGridBox.css';\n\nexport const AcidGridBox = ({ children, className, style }: any) => {\n return (\n <div className={clsx('ac-grid-box', className)} style={style}>\n <div className="ac-grid-corner tl" />\n <div className="ac-grid-corner tr" />\n <div className="ac-grid-corner bl" />\n <div className="ac-grid-corner br" />\n {children}\n </div>\n );\n};`,
8
+ 'label': `import React from 'react';\nimport clsx from 'clsx';\nimport './AcidLabel.css';\n\nexport const AcidLabel = ({ children, color = 'default', className }: any) => {\n return (\n <span className={clsx('ac-label', \`ac-label-\${color}\`, className)}>\n {children}\n </span>\n );\n};`,
9
+ 'solid-card': `import React from 'react';\nimport clsx from 'clsx';\nimport './AcidSolidCard.css';\n\nexport const AcidSolidCard = ({ label, title, children, className }: any) => {\n return (\n <div className={clsx('ac-solid-card', className)}>\n <div className="ac-solid-header">\n <span className="ac-solid-label">{label}</span>\n </div>\n <div className="ac-solid-body">\n <h3 className="ac-solid-title">{title}</h3>\n {children}\n </div>\n </div>\n );\n};`,
10
+ 'timeline': `import React from 'react';\nimport clsx from 'clsx';\nimport './AcidTimeline.css';\n\nexport const AcidTimeline = ({ data, className }: any) => {\n return (\n <div className={clsx('ac-timeline', className)}>\n {data.map((item, i) => (\n <div className="ac-timeline-item" key={i}>\n <div className="ac-timeline-point" />\n <div className="ac-timeline-content">\n <h4 className="ac-timeline-title">{item.title}</h4>\n <p className="ac-timeline-desc">{item.content}</p>\n </div>\n </div>\n ))}\n </div>\n );\n};`,
11
+ 'dialog': `import React, { useState } from 'react';\nimport { motion, AnimatePresence } from 'framer-motion';\nimport { X } from 'lucide-react';\nimport clsx from 'clsx';\nimport './AcidDialog.css';\n\nexport const AcidDialog = ({ trigger, title, description, children, footer, ...props }: any) => {\n const [isOpen, setIsOpen] = useState(false);\n return (\n <>\n <div onClick={() => setIsOpen(true)}>{trigger}</div>\n <AnimatePresence>\n {isOpen && (\n <div className="ac-dialog-overlay-wrapper" onClick={() => setIsOpen(false)}>\n <motion.div \n initial={{ opacity: 0, scale: 0.95 }}\n animate={{ opacity: 1, scale: 1 }}\n className="ac-dialog"\n onClick={(e) => e.stopPropagation()}\n >\n <div className="ac-dialog-header">\n <h3>{title}</h3>\n <X onClick={() => setIsOpen(false)} />\n </div>\n <div className="ac-dialog-body">{children}</div>\n </motion.div>\n </div>\n )}\n </AnimatePresence>\n </>\n );\n};`,
12
+ 'meter': `import React from 'react';\nimport clsx from 'clsx';\nimport { motion } from 'framer-motion';\nimport './AcidMeter.css';\n\nexport const AcidMeter = ({ value, label, orientation = 'vertical' }: any) => {\n return (\n <div className={clsx('ac-meter', \`ac-meter-\${orientation}\`)}>\n {label && <span className="ac-meter-label">{label}</span>}\n <div className="ac-meter-track">\n <motion.div \n initial={orientation === 'vertical' ? { height: 0 } : { width: 0 }}\n animate={orientation === 'vertical' ? { height: \`\${value}%\` } : { width: \`\${value}%\` }}\n className="ac-meter-fill"\n />\n </div>\n </div>\n );\n};`
13
+ };
package/src/index.css ADDED
@@ -0,0 +1,136 @@
1
+ :root {
2
+ /* Minimalist Technical Palette - DARK (Default) */
3
+ --ac-bg: #000000;
4
+ --ac-surface: #0a0a0a;
5
+ --ac-surface-hover: #121212;
6
+
7
+ --ac-text-primary: #ededed;
8
+ --ac-text-secondary: #a0a0a0;
9
+ --ac-text-muted: #666666;
10
+
11
+ --ac-border-muted: #1f1f1f;
12
+ --ac-border-bright: #333333;
13
+ --ac-border-active: #ffffff;
14
+
15
+ /* Aliases for compatibility */
16
+ --ac-border: var(--ac-border-muted);
17
+ --ac-text: var(--ac-text-primary);
18
+
19
+ /* Brand Accent */
20
+ --ac-brand: #f44336;
21
+ --ac-brand-rgb: 244, 67, 54;
22
+
23
+ /* Technical Indicators */
24
+ --ac-success: #27c93f;
25
+ --ac-lime: #27c93f;
26
+ --ac-warning: #ffbd2e;
27
+ --ac-error: #ff5f57;
28
+ --ac-info: #00f0ff;
29
+ --ac-cyan: #00f0ff;
30
+
31
+ /* Typography */
32
+ --font-primary: 'Space Mono', 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace;
33
+ --font-mono: 'Space Mono', 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace;
34
+
35
+ /* Radii */
36
+ --ac-radius-sm: 4px;
37
+ --ac-radius-md: 8px;
38
+ --ac-radius-lg: 12px;
39
+ --ac-radius-full: 99px;
40
+
41
+ /* Background Effects */
42
+ --ac-grid-opacity: 0.05;
43
+ }
44
+
45
+ [data-theme='light'] {
46
+ --ac-bg: #ffffff;
47
+ --ac-surface: #f7f7f7;
48
+ --ac-surface-hover: #eeeeee;
49
+
50
+ --ac-text-primary: #121212;
51
+ --ac-text-secondary: #555555;
52
+ --ac-text-muted: #999999;
53
+
54
+ --ac-border-muted: #e5e5e5;
55
+ --ac-border-bright: #cccccc;
56
+ --ac-border-active: #000000;
57
+
58
+ /* Aliases for compatibility */
59
+ --ac-border: var(--ac-border-muted);
60
+ --ac-text: var(--ac-text-primary);
61
+
62
+ /* Technical Indicators */
63
+ --ac-success: #1a8a2a;
64
+ --ac-lime: #1a8a2a;
65
+ --ac-warning: #b38600;
66
+ --ac-error: #cc3300;
67
+ --ac-info: #007780;
68
+ --ac-cyan: #007780;
69
+
70
+ --ac-grid-opacity: 0.1;
71
+ --ac-brand-rgb: 244, 67, 54;
72
+ }
73
+
74
+ body {
75
+ margin: 0;
76
+ font-family: var(--font-primary);
77
+ background-color: var(--ac-bg);
78
+ color: var(--ac-text-primary);
79
+ min-height: 100vh;
80
+ overflow-x: hidden;
81
+ line-height: 1.5;
82
+ -webkit-font-smoothing: antialiased;
83
+ -moz-osx-font-smoothing: grayscale;
84
+ }
85
+
86
+ * {
87
+ box-sizing: border-box;
88
+ }
89
+
90
+ h1,
91
+ h2,
92
+ h3,
93
+ h4,
94
+ h5,
95
+ h6 {
96
+ margin: 0;
97
+ font-family: var(--font-primary);
98
+ font-weight: 700;
99
+ letter-spacing: -0.02em;
100
+ text-transform: uppercase;
101
+ }
102
+
103
+ p {
104
+ margin: 0;
105
+ }
106
+
107
+ /* Base Utility Classes for Layout */
108
+ .ac-container {
109
+ max-width: 1200px;
110
+ margin: 0 auto;
111
+ padding: 0 2rem;
112
+ }
113
+
114
+ .ac-grid {
115
+ display: grid;
116
+ gap: 1px;
117
+ /* 1px gap for grid lines */
118
+ background: var(--ac-border-muted);
119
+ border: 1px solid var(--ac-border-muted);
120
+ }
121
+
122
+ .ac-grid>* {
123
+ background: var(--ac-bg);
124
+ }
125
+
126
+ .ac-flex-center {
127
+ display: flex;
128
+ align-items: center;
129
+ justify-content: center;
130
+ }
131
+
132
+ /* Selection */
133
+ ::selection {
134
+ background: var(--ac-text-primary);
135
+ color: var(--ac-bg);
136
+ }
package/src/main.tsx ADDED
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ import { createRoot } from 'react-dom/client';
3
+ import { BrowserRouter } from 'react-router-dom';
4
+ import App from './App.tsx';
5
+ import './index.css';
6
+
7
+ createRoot(document.getElementById('root')!).render(
8
+ <React.StrictMode>
9
+ <BrowserRouter>
10
+ <App />
11
+ </BrowserRouter>
12
+ </React.StrictMode>,
13
+ );