@mich8060/chg-design-system 0.1.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 (260) hide show
  1. package/.github/workflows/figma-sync.yml +30 -0
  2. package/ARCHITECTURE_FIX.md +241 -0
  3. package/LICENSE +21 -0
  4. package/README.lib.md +103 -0
  5. package/README.md +177 -0
  6. package/figma.config.json +9 -0
  7. package/package.json +67 -0
  8. package/package.lib.json +49 -0
  9. package/public/data/figma-variables.json +40026 -0
  10. package/public/favicon.ico +0 -0
  11. package/public/index.html +46 -0
  12. package/public/logo192.png +0 -0
  13. package/public/logo512.png +0 -0
  14. package/public/manifest.json +25 -0
  15. package/public/robots.txt +3 -0
  16. package/public/styles/tokens.css +1994 -0
  17. package/scripts/index.js +896 -0
  18. package/scripts/publish-lib.js +150 -0
  19. package/scripts/validate.js +94 -0
  20. package/src/App.css +457 -0
  21. package/src/App.css.map +1 -0
  22. package/src/App.js +161 -0
  23. package/src/App.scss +548 -0
  24. package/src/App.test.js +8 -0
  25. package/src/assets/images/.gitkeep +0 -0
  26. package/src/assets/images/doctors/Avatar-1.png +0 -0
  27. package/src/assets/images/doctors/Avatar-10.png +0 -0
  28. package/src/assets/images/doctors/Avatar-11.png +0 -0
  29. package/src/assets/images/doctors/Avatar-12.png +0 -0
  30. package/src/assets/images/doctors/Avatar-13.png +0 -0
  31. package/src/assets/images/doctors/Avatar-14.png +0 -0
  32. package/src/assets/images/doctors/Avatar-15.png +0 -0
  33. package/src/assets/images/doctors/Avatar-16.png +0 -0
  34. package/src/assets/images/doctors/Avatar-17.png +0 -0
  35. package/src/assets/images/doctors/Avatar-18.png +0 -0
  36. package/src/assets/images/doctors/Avatar-19.png +0 -0
  37. package/src/assets/images/doctors/Avatar-2.png +0 -0
  38. package/src/assets/images/doctors/Avatar-20.png +0 -0
  39. package/src/assets/images/doctors/Avatar-21.png +0 -0
  40. package/src/assets/images/doctors/Avatar-3.png +0 -0
  41. package/src/assets/images/doctors/Avatar-4.png +0 -0
  42. package/src/assets/images/doctors/Avatar-5.png +0 -0
  43. package/src/assets/images/doctors/Avatar-6.png +0 -0
  44. package/src/assets/images/doctors/Avatar-7.png +0 -0
  45. package/src/assets/images/doctors/Avatar-8.png +0 -0
  46. package/src/assets/images/doctors/Avatar-9.png +0 -0
  47. package/src/assets/images/doctors/Avatar.png +0 -0
  48. package/src/assets/images/doctors/index.js +141 -0
  49. package/src/data/figma-variables.json +90305 -0
  50. package/src/index.js +20 -0
  51. package/src/index.scss +10 -0
  52. package/src/pages/AccordionDemo.jsx +206 -0
  53. package/src/pages/AccordionDemo.scss +34 -0
  54. package/src/pages/ActionMenuDemo.jsx +957 -0
  55. package/src/pages/ActionMenuDemo.scss +34 -0
  56. package/src/pages/AvatarDemo.jsx +328 -0
  57. package/src/pages/AvatarDemo.scss +40 -0
  58. package/src/pages/BadgeDemo.jsx +254 -0
  59. package/src/pages/BadgeDemo.scss +40 -0
  60. package/src/pages/BorderRadiusDemo.jsx +112 -0
  61. package/src/pages/BorderRadiusDemo.scss +50 -0
  62. package/src/pages/BrandingDemo.jsx +117 -0
  63. package/src/pages/BreadcrumbDemo.jsx +172 -0
  64. package/src/pages/ButtonDemo.jsx +708 -0
  65. package/src/pages/ButtonDemo.scss +34 -0
  66. package/src/pages/CheckboxDemo.jsx +194 -0
  67. package/src/pages/ChipDemo.jsx +359 -0
  68. package/src/pages/ChipDemo.scss +40 -0
  69. package/src/pages/ColorsDemo.jsx +566 -0
  70. package/src/pages/ColorsDemo.scss +243 -0
  71. package/src/pages/ComponentsUsage.jsx +401 -0
  72. package/src/pages/DatepickerDemo.jsx +223 -0
  73. package/src/pages/DividerDemo.jsx +337 -0
  74. package/src/pages/DotStatusDemo.jsx +223 -0
  75. package/src/pages/DropdownDemo.jsx +229 -0
  76. package/src/pages/FieldDemo.jsx +253 -0
  77. package/src/pages/FigmaVariablesDemo.jsx +426 -0
  78. package/src/pages/FigmaVariablesDemo.scss +316 -0
  79. package/src/pages/FileUploadDemo.jsx +186 -0
  80. package/src/pages/FlexDemo.jsx +144 -0
  81. package/src/pages/FlexDemo.scss +119 -0
  82. package/src/pages/FontInstallation.jsx +252 -0
  83. package/src/pages/FontInstallation.scss +40 -0
  84. package/src/pages/Home.jsx +3156 -0
  85. package/src/pages/IconDemo.jsx +1680 -0
  86. package/src/pages/ImageAspectDemo.jsx +152 -0
  87. package/src/pages/InputDemo.jsx +245 -0
  88. package/src/pages/Installation.jsx +257 -0
  89. package/src/pages/Installation.scss +40 -0
  90. package/src/pages/KeyDemo.jsx +184 -0
  91. package/src/pages/MenuDemo.jsx +139 -0
  92. package/src/pages/MicroCalendarDemo.jsx +165 -0
  93. package/src/pages/PaginationDemo.jsx +176 -0
  94. package/src/pages/PillToggleDemo.jsx +212 -0
  95. package/src/pages/ProgressCircleDemo.jsx +206 -0
  96. package/src/pages/ProgressIndicatorDemo.jsx +227 -0
  97. package/src/pages/RadioDemo.jsx +282 -0
  98. package/src/pages/ShadowsDemo.jsx +118 -0
  99. package/src/pages/ShadowsDemo.scss +93 -0
  100. package/src/pages/SliderDemo.jsx +226 -0
  101. package/src/pages/SpacingDemo.jsx +160 -0
  102. package/src/pages/SpacingDemo.scss +107 -0
  103. package/src/pages/StatusDemo.jsx +196 -0
  104. package/src/pages/StepsDemo.jsx +308 -0
  105. package/src/pages/TableDemo.jsx +376 -0
  106. package/src/pages/TabsDemo.jsx +221 -0
  107. package/src/pages/ToastDemo.jsx +195 -0
  108. package/src/pages/ToggleDemo.jsx +187 -0
  109. package/src/pages/TokensDemo.jsx +637 -0
  110. package/src/pages/TokensDemo.scss +270 -0
  111. package/src/pages/TokensUsage.jsx +220 -0
  112. package/src/pages/TooltipDemo.jsx +170 -0
  113. package/src/pages/TypographyDemo.jsx +229 -0
  114. package/src/pages/TypographyDemo.scss +105 -0
  115. package/src/pages/UtilitiesDemo.jsx +381 -0
  116. package/src/pages/UtilitiesDemo.scss +214 -0
  117. package/src/reportWebVitals.js +13 -0
  118. package/src/setupTests.js +5 -0
  119. package/src/styles/_typography.scss +932 -0
  120. package/src/styles/_utilities.scss +3635 -0
  121. package/src/styles/_variables.scss +887 -0
  122. package/src/styles/prism-custom.css +206 -0
  123. package/src/styles/prism-custom.css.map +1 -0
  124. package/src/styles/prism-custom.scss +205 -0
  125. package/src/styles/tokens.css +4416 -0
  126. package/src/styles/tokens.css.map +1 -0
  127. package/src/styles/tokens.scss +1456 -0
  128. package/src/ui/Accordion/Accordion.jsx +70 -0
  129. package/src/ui/Accordion/Accordion.scss +82 -0
  130. package/src/ui/Accordion/index.js +1 -0
  131. package/src/ui/ActionMenu/ActionMenu.jsx +383 -0
  132. package/src/ui/ActionMenu/ActionMenu.scss +198 -0
  133. package/src/ui/ActionMenu/index.js +1 -0
  134. package/src/ui/Avatar/Avatar.jsx +49 -0
  135. package/src/ui/Avatar/Avatar.scss +82 -0
  136. package/src/ui/Avatar/index.js +1 -0
  137. package/src/ui/Badge/Badge.jsx +64 -0
  138. package/src/ui/Badge/Badge.scss +84 -0
  139. package/src/ui/Badge/index.js +1 -0
  140. package/src/ui/Branding/Branding.jsx +65 -0
  141. package/src/ui/Branding/Branding.scss +116 -0
  142. package/src/ui/Branding/index.js +1 -0
  143. package/src/ui/Breadcrumb/Breadcrumb.jsx +162 -0
  144. package/src/ui/Breadcrumb/Breadcrumb.scss +46 -0
  145. package/src/ui/Breadcrumb/index.js +2 -0
  146. package/src/ui/Button/Button.figma.tsx +49 -0
  147. package/src/ui/Button/Button.jsx +135 -0
  148. package/src/ui/Button/Button.scss +188 -0
  149. package/src/ui/Button/index.js +1 -0
  150. package/src/ui/Card/Card.jsx +25 -0
  151. package/src/ui/Card/Card.scss +47 -0
  152. package/src/ui/Card/index.js +1 -0
  153. package/src/ui/Checkbox/Checkbox.jsx +70 -0
  154. package/src/ui/Checkbox/Checkbox.scss +96 -0
  155. package/src/ui/Checkbox/index.js +1 -0
  156. package/src/ui/Chip/Chip.jsx +104 -0
  157. package/src/ui/Chip/Chip.scss +118 -0
  158. package/src/ui/Chip/index.js +1 -0
  159. package/src/ui/CopyButton/CopyButton.jsx +102 -0
  160. package/src/ui/CopyButton/CopyButton.scss +56 -0
  161. package/src/ui/CopyButton/index.js +1 -0
  162. package/src/ui/Datepicker/Datepicker.jsx +326 -0
  163. package/src/ui/Datepicker/Datepicker.scss +187 -0
  164. package/src/ui/Datepicker/index.js +2 -0
  165. package/src/ui/Divider/Divider.jsx +89 -0
  166. package/src/ui/Divider/Divider.scss +112 -0
  167. package/src/ui/Divider/index.js +1 -0
  168. package/src/ui/DotStatus/DotStatus.jsx +64 -0
  169. package/src/ui/DotStatus/DotStatus.scss +87 -0
  170. package/src/ui/DotStatus/index.js +1 -0
  171. package/src/ui/Dropdown/Dropdown.jsx +200 -0
  172. package/src/ui/Dropdown/Dropdown.scss +156 -0
  173. package/src/ui/Dropdown/index.js +1 -0
  174. package/src/ui/Field/Field.jsx +89 -0
  175. package/src/ui/Field/Field.scss +119 -0
  176. package/src/ui/Field/index.js +1 -0
  177. package/src/ui/FileUpload/FileUpload.figma.tsx +28 -0
  178. package/src/ui/FileUpload/FileUpload.jsx +153 -0
  179. package/src/ui/FileUpload/FileUpload.scss +78 -0
  180. package/src/ui/FileUpload/index.js +2 -0
  181. package/src/ui/Flex/Flex.jsx +42 -0
  182. package/src/ui/Flex/Flex.scss +119 -0
  183. package/src/ui/Flex/index.js +1 -0
  184. package/src/ui/Icon/Icon.figma.tsx +22 -0
  185. package/src/ui/Icon/Icon.jsx +47 -0
  186. package/src/ui/Icon/index.js +1 -0
  187. package/src/ui/ImageAspect/ImageAspect.jsx +56 -0
  188. package/src/ui/ImageAspect/ImageAspect.scss +62 -0
  189. package/src/ui/ImageAspect/index.js +1 -0
  190. package/src/ui/Input/Input.figma.tsx +35 -0
  191. package/src/ui/Input/Input.jsx +68 -0
  192. package/src/ui/Input/Input.scss +64 -0
  193. package/src/ui/Input/index.js +2 -0
  194. package/src/ui/Key/Key.jsx +37 -0
  195. package/src/ui/Key/Key.scss +34 -0
  196. package/src/ui/Key/index.js +1 -0
  197. package/src/ui/Menu/Menu.jsx +389 -0
  198. package/src/ui/Menu/Menu.scss +382 -0
  199. package/src/ui/Menu/index.js +1 -0
  200. package/src/ui/MicroCalendar/MicroCalendar.jsx +392 -0
  201. package/src/ui/MicroCalendar/MicroCalendar.scss +277 -0
  202. package/src/ui/MicroCalendar/index.js +1 -0
  203. package/src/ui/Pagination/Pagination.jsx +237 -0
  204. package/src/ui/Pagination/Pagination.scss +182 -0
  205. package/src/ui/Pagination/index.js +1 -0
  206. package/src/ui/PillToggle/PillToggle.jsx +56 -0
  207. package/src/ui/PillToggle/PillToggle.scss +84 -0
  208. package/src/ui/PillToggle/index.js +1 -0
  209. package/src/ui/Playground/Playground.jsx +524 -0
  210. package/src/ui/Playground/Playground.scss +310 -0
  211. package/src/ui/Playground/index.js +2 -0
  212. package/src/ui/ProgressCircle/ProgressCircle.jsx +147 -0
  213. package/src/ui/ProgressCircle/ProgressCircle.scss +143 -0
  214. package/src/ui/ProgressCircle/index.js +1 -0
  215. package/src/ui/ProgressIndicator/ProgressIndicator.jsx +92 -0
  216. package/src/ui/ProgressIndicator/ProgressIndicator.scss +133 -0
  217. package/src/ui/ProgressIndicator/index.js +1 -0
  218. package/src/ui/Radio/Radio.jsx +57 -0
  219. package/src/ui/Radio/Radio.scss +84 -0
  220. package/src/ui/Radio/index.js +1 -0
  221. package/src/ui/Slider/Slider.jsx +283 -0
  222. package/src/ui/Slider/Slider.scss +156 -0
  223. package/src/ui/Slider/index.js +1 -0
  224. package/src/ui/Status/Status.jsx +66 -0
  225. package/src/ui/Status/Status.scss +90 -0
  226. package/src/ui/Status/index.js +1 -0
  227. package/src/ui/Steps/Steps.jsx +201 -0
  228. package/src/ui/Steps/Steps.scss +240 -0
  229. package/src/ui/Steps/index.js +1 -0
  230. package/src/ui/Table/Table.jsx +143 -0
  231. package/src/ui/Table/Table.scss +90 -0
  232. package/src/ui/Table/index.js +1 -0
  233. package/src/ui/Tabs/TabItem.jsx +86 -0
  234. package/src/ui/Tabs/Tabs.figma.tsx +30 -0
  235. package/src/ui/Tabs/Tabs.jsx +318 -0
  236. package/src/ui/Tabs/Tabs.scss +164 -0
  237. package/src/ui/Tabs/Untitled +1 -0
  238. package/src/ui/Tabs/index.js +3 -0
  239. package/src/ui/Tag/Tag.figma.tsx +29 -0
  240. package/src/ui/Tag/Tag.jsx +93 -0
  241. package/src/ui/Tag/Tag.scss +229 -0
  242. package/src/ui/Tag/index.js +2 -0
  243. package/src/ui/Textarea/Textarea.figma.tsx +35 -0
  244. package/src/ui/Textarea/Textarea.jsx +68 -0
  245. package/src/ui/Textarea/Textarea.scss +69 -0
  246. package/src/ui/Textarea/index.js +2 -0
  247. package/src/ui/Toast/Toast.jsx +75 -0
  248. package/src/ui/Toast/Toast.scss +132 -0
  249. package/src/ui/Toast/index.js +2 -0
  250. package/src/ui/Toggle/Toggle.jsx +73 -0
  251. package/src/ui/Toggle/Toggle.scss +139 -0
  252. package/src/ui/Toggle/index.js +1 -0
  253. package/src/ui/Tooltip/Tooltip.figma.tsx +24 -0
  254. package/src/ui/Tooltip/Tooltip.jsx +123 -0
  255. package/src/ui/Tooltip/Tooltip.scss +80 -0
  256. package/src/ui/Tooltip/index.js +2 -0
  257. package/src/ui/index.js +63 -0
  258. package/src/utils/formatDate.js +27 -0
  259. package/src/utils/headerVariants.js +69 -0
  260. package/vite.config.lib.js +55 -0
@@ -0,0 +1,63 @@
1
+ /**
2
+ * UDS Component Library
3
+ *
4
+ * A comprehensive React component library built with design tokens.
5
+ *
6
+ * Usage:
7
+ * import { Button, Chip, Avatar } from "@yourorg/uds-components";
8
+ * import "@yourorg/uds-components/dist/styles.css";
9
+ */
10
+
11
+ // Layout & Structure
12
+ export { default as Accordion, AccordionItem } from "./Accordion";
13
+ export { default as Card } from "./Card";
14
+ export { default as Divider } from "./Divider";
15
+ export { default as Flex } from "./Flex";
16
+ export { default as ImageAspect } from "./ImageAspect";
17
+ export { default as Steps } from "./Steps";
18
+ export { default as Table } from "./Table";
19
+ export { default as Tabs, TabItem } from "./Tabs";
20
+
21
+ // Navigation
22
+ export { default as ActionMenu } from "./ActionMenu";
23
+ export { default as Breadcrumb } from "./Breadcrumb";
24
+ export { default as Dropdown } from "./Dropdown";
25
+ export { default as Menu } from "./Menu";
26
+ export { default as Pagination } from "./Pagination";
27
+
28
+ // Form Controls
29
+ export { default as Button } from "./Button";
30
+ export { default as Checkbox } from "./Checkbox";
31
+ export { default as Chip } from "./Chip";
32
+ export { default as Datepicker } from "./Datepicker";
33
+ export { default as Field } from "./Field";
34
+ export { default as FileUpload } from "./FileUpload";
35
+ export { default as Input } from "./Input";
36
+ export { default as PillToggle } from "./PillToggle";
37
+ export { default as Radio } from "./Radio";
38
+ export { default as Slider } from "./Slider";
39
+ export { default as Textarea } from "./Textarea";
40
+ export { default as Toggle } from "./Toggle";
41
+
42
+ // Data Display
43
+ export { default as Avatar } from "./Avatar";
44
+ export { default as Badge } from "./Badge";
45
+ export { default as DotStatus } from "./DotStatus";
46
+ export { default as Icon } from "./Icon";
47
+ export { default as Key } from "./Key";
48
+ export { default as ProgressCircle } from "./ProgressCircle";
49
+ export { default as ProgressIndicator } from "./ProgressIndicator";
50
+ export { default as Status } from "./Status";
51
+ export { default as Tag } from "./Tag";
52
+
53
+ // Feedback
54
+ export { default as Toast } from "./Toast";
55
+ export { default as Tooltip } from "./Tooltip";
56
+
57
+ // Branding
58
+ export { default as Branding } from "./Branding";
59
+
60
+ // Utilities
61
+ export { default as CopyButton } from "./CopyButton";
62
+ export { default as MicroCalendar } from "./MicroCalendar";
63
+ export { default as Playground } from "./Playground";
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Format date as "Month Day, Year" (e.g., "March 11, 2025")
3
+ * @param {Date} date - Date object to format (defaults to today)
4
+ * @returns {string} Formatted date string
5
+ */
6
+ export function formatLastUpdated(date = new Date()) {
7
+ const months = [
8
+ "January",
9
+ "February",
10
+ "March",
11
+ "April",
12
+ "May",
13
+ "June",
14
+ "July",
15
+ "August",
16
+ "September",
17
+ "October",
18
+ "November",
19
+ "December",
20
+ ];
21
+
22
+ const month = months[date.getMonth()];
23
+ const day = date.getDate();
24
+ const year = date.getFullYear();
25
+
26
+ return `${month} ${day}, ${year}`;
27
+ }
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Utility to assign random geometric shapes to headers
3
+ * Each page gets unique shapes positioned around the edges based on the Figma design
4
+ */
5
+
6
+ /**
7
+ * Generate unique shapes data for a given pathname
8
+ * Returns an object with shapes to render
9
+ */
10
+ export function getHeaderShapes(pathname) {
11
+ if (!pathname || pathname === "/") {
12
+ return generateShapes(0);
13
+ }
14
+
15
+ // Simple hash function to convert pathname to a number
16
+ let hash = 0;
17
+ for (let i = 0; i < pathname.length; i++) {
18
+ const char = pathname.charCodeAt(i);
19
+ hash = (hash << 5) - hash + char;
20
+ hash = hash & hash; // Convert to 32-bit integer
21
+ }
22
+
23
+ return generateShapes(Math.abs(hash));
24
+ }
25
+
26
+ function generateShapes(seed) {
27
+ // Use seed to generate consistent but varied shapes
28
+ const shapes = [];
29
+ const colors = [
30
+ "#00D4FF",
31
+ "#3B82F6",
32
+ "#06B6D4",
33
+ "#8B5CF6",
34
+ "#6366F1",
35
+ "#EC4899",
36
+ "#F472B6",
37
+ "#DB2777",
38
+ ];
39
+
40
+ // Generate circles
41
+ for (let i = 0; i < 4; i++) {
42
+ const x = (seed + i * 23) % 95;
43
+ const y = (seed + i * 37) % 90;
44
+ const size = 6 + ((seed + i * 7) % 8);
45
+ const color = colors[(seed + i * 3) % colors.length];
46
+ shapes.push({ type: "circle", x, y, size, color });
47
+ }
48
+
49
+ // Generate triangles
50
+ for (let i = 0; i < 5; i++) {
51
+ const x = (seed + i * 19) % 95;
52
+ const y = (seed + i * 41) % 90;
53
+ const size = 5 + ((seed + i * 11) % 6);
54
+ const color = colors[(seed + i * 5) % colors.length];
55
+ shapes.push({ type: "triangle", x, y, size, color });
56
+ }
57
+
58
+ // Generate lines (dashes)
59
+ for (let i = 0; i < 6; i++) {
60
+ const x = (seed + i * 31) % 95;
61
+ const y = (seed + i * 17) % 90;
62
+ const length = 8 + ((seed + i * 13) % 10);
63
+ const angle = (seed + i * 29) % 360;
64
+ const color = colors[(seed + i * 7) % colors.length];
65
+ shapes.push({ type: "line", x, y, length, angle, color });
66
+ }
67
+
68
+ return shapes;
69
+ }
@@ -0,0 +1,55 @@
1
+ import { defineConfig } from "vite";
2
+ import react from "@vitejs/plugin-react";
3
+ import { resolve } from "path";
4
+
5
+ /**
6
+ * Vite configuration for building the component library
7
+ *
8
+ * Run with: npm run build:lib
9
+ *
10
+ * This creates:
11
+ * - dist/uds-components.es.js (ES modules)
12
+ * - dist/uds-components.umd.js (UMD for script tags)
13
+ * - dist/style.css (all component styles bundled)
14
+ */
15
+ export default defineConfig({
16
+ plugins: [react()],
17
+ build: {
18
+ outDir: "dist",
19
+ lib: {
20
+ entry: resolve(__dirname, "src/ui/index.js"),
21
+ name: "UDSComponents",
22
+ fileName: (format) => `uds-components.${format}.js`,
23
+ },
24
+ rollupOptions: {
25
+ // Externalize deps that shouldn't be bundled
26
+ external: ["react", "react-dom", "react-router-dom"],
27
+ output: {
28
+ // Global variables for UMD build
29
+ globals: {
30
+ react: "React",
31
+ "react-dom": "ReactDOM",
32
+ "react-router-dom": "ReactRouterDOM",
33
+ },
34
+ // Preserve component folder structure for CSS
35
+ assetFileNames: (assetInfo) => {
36
+ if (assetInfo.name === "style.css") return "styles.css";
37
+ return assetInfo.name;
38
+ },
39
+ },
40
+ },
41
+ // Generate sourcemaps for debugging
42
+ sourcemap: true,
43
+ // Don't minify for better debugging (set to true for production)
44
+ minify: false,
45
+ },
46
+ // Resolve SCSS imports
47
+ css: {
48
+ preprocessorOptions: {
49
+ scss: {
50
+ // Use modern Sass API
51
+ api: "modern-compiler",
52
+ },
53
+ },
54
+ },
55
+ });