@oscarrf2/goo-ds 0.1.0 → 0.1.2

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 (103) hide show
  1. package/CHANGELOG.md +96 -0
  2. package/dist/assets/index.css +1 -0
  3. package/dist/components/Button/Button.js +60 -0
  4. package/dist/components/Button/Button.js.map +1 -0
  5. package/dist/components/Cell/Cell.js +28 -0
  6. package/dist/components/Cell/Cell.js.map +1 -0
  7. package/dist/components/Codeblock/Codeblock.js +51 -0
  8. package/dist/components/Codeblock/Codeblock.js.map +1 -0
  9. package/dist/components/CoreText/CoreText.js +26 -0
  10. package/dist/components/CoreText/CoreText.js.map +1 -0
  11. package/dist/components/Divider/Divider.js +25 -0
  12. package/dist/components/Divider/Divider.js.map +1 -0
  13. package/dist/components/InputImage/InputImage.js +284 -0
  14. package/dist/components/InputImage/InputImage.js.map +1 -0
  15. package/dist/components/Sidebar/Sidebar.js +27 -0
  16. package/dist/components/Sidebar/Sidebar.js.map +1 -0
  17. package/dist/components/SidebarItem/SidebarItem.js +37 -0
  18. package/dist/components/SidebarItem/SidebarItem.js.map +1 -0
  19. package/dist/components/Skeleton/Skeleton.js +30 -0
  20. package/dist/components/Skeleton/Skeleton.js.map +1 -0
  21. package/dist/components/Spacer/Spacer.js +21 -0
  22. package/dist/components/Spacer/Spacer.js.map +1 -0
  23. package/dist/components/TabItem/TabItem.js +33 -0
  24. package/dist/components/TabItem/TabItem.js.map +1 -0
  25. package/dist/components/Table/Table.js +18 -0
  26. package/dist/components/Table/Table.js.map +1 -0
  27. package/dist/components/TableRow/TableRow.js +35 -0
  28. package/dist/components/TableRow/TableRow.js.map +1 -0
  29. package/dist/components/Tabs/Tabs.js +23 -0
  30. package/dist/components/Tabs/Tabs.js.map +1 -0
  31. package/dist/index.js +32 -0
  32. package/dist/index.js.map +1 -0
  33. package/dist/styles.css +17 -0
  34. package/dist/vite.svg +1 -0
  35. package/package.json +19 -19
  36. package/src/components/Button/Button.tsx +0 -82
  37. package/src/components/Button/Button.types.ts +0 -62
  38. package/src/components/Button/index.ts +0 -3
  39. package/src/components/Cell/Cell.tsx +0 -42
  40. package/src/components/Cell/Cell.types.ts +0 -42
  41. package/src/components/Cell/index.ts +0 -3
  42. package/src/components/Codeblock/Codeblock.tsx +0 -88
  43. package/src/components/Codeblock/Codeblock.types.ts +0 -42
  44. package/src/components/Codeblock/index.ts +0 -3
  45. package/src/components/CoreText/CoreText.tsx +0 -43
  46. package/src/components/CoreText/CoreText.types.ts +0 -56
  47. package/src/components/CoreText/index.ts +0 -2
  48. package/src/components/Divider/Divider.tsx +0 -35
  49. package/src/components/Divider/Divider.types.ts +0 -19
  50. package/src/components/Divider/index.ts +0 -3
  51. package/src/components/InputImage/InputImage.tsx +0 -314
  52. package/src/components/InputImage/InputImage.types.ts +0 -86
  53. package/src/components/InputImage/index.ts +0 -2
  54. package/src/components/Sidebar/Sidebar.tsx +0 -42
  55. package/src/components/Sidebar/Sidebar.types.ts +0 -24
  56. package/src/components/Sidebar/index.ts +0 -3
  57. package/src/components/SidebarItem/SidebarItem.tsx +0 -55
  58. package/src/components/SidebarItem/SidebarItem.types.ts +0 -39
  59. package/src/components/SidebarItem/index.ts +0 -3
  60. package/src/components/Skeleton/Skeleton.tsx +0 -41
  61. package/src/components/Skeleton/Skeleton.types.ts +0 -65
  62. package/src/components/Skeleton/index.ts +0 -5
  63. package/src/components/Spacer/Spacer.tsx +0 -31
  64. package/src/components/Spacer/Spacer.types.ts +0 -58
  65. package/src/components/Spacer/index.ts +0 -3
  66. package/src/components/TabItem/TabItem.tsx +0 -45
  67. package/src/components/TabItem/TabItem.types.ts +0 -35
  68. package/src/components/TabItem/index.ts +0 -3
  69. package/src/components/Table/Table.tsx +0 -39
  70. package/src/components/Table/Table.types.ts +0 -18
  71. package/src/components/Table/index.ts +0 -3
  72. package/src/components/TableRow/TableRow.tsx +0 -53
  73. package/src/components/TableRow/TableRow.types.ts +0 -41
  74. package/src/components/TableRow/index.ts +0 -3
  75. package/src/components/Tabs/Tabs.tsx +0 -37
  76. package/src/components/Tabs/Tabs.types.ts +0 -18
  77. package/src/components/Tabs/index.ts +0 -3
  78. package/src/components/index.ts +0 -15
  79. package/src/compositions/index.ts +0 -3
  80. package/src/index.ts +0 -4
  81. package/src/styles.css +0 -2
  82. /package/{src → dist}/components/Button/Button.css +0 -0
  83. /package/{src → dist}/components/Cell/Cell.css +0 -0
  84. /package/{src → dist}/components/Codeblock/Codeblock.css +0 -0
  85. /package/{src → dist}/components/Divider/Divider.css +0 -0
  86. /package/{src → dist}/components/InputImage/InputImage.css +0 -0
  87. /package/{src → dist}/components/Sidebar/Sidebar.css +0 -0
  88. /package/{src → dist}/components/SidebarItem/SidebarItem.css +0 -0
  89. /package/{src → dist}/components/Skeleton/Skeleton.css +0 -0
  90. /package/{src → dist}/components/TabItem/TabItem.css +0 -0
  91. /package/{src → dist}/components/Table/Table.css +0 -0
  92. /package/{src → dist}/components/TableRow/TableRow.css +0 -0
  93. /package/{src → dist}/components/Tabs/Tabs.css +0 -0
  94. /package/{src → dist}/index.css +0 -0
  95. /package/{src → dist}/styles/component-tokens.css +0 -0
  96. /package/{src → dist}/styles/component-tokens.current.css +0 -0
  97. /package/{src → dist}/styles/fonts.css +0 -0
  98. /package/{src → dist}/styles/global-tokens.css +0 -0
  99. /package/{src → dist}/styles/index.css +0 -0
  100. /package/{src → dist}/styles/number-tokens.css +0 -0
  101. /package/{src → dist}/styles/semantic-tokens.css +0 -0
  102. /package/{src → dist}/styles/style-tokens.css +0 -0
  103. /package/{src → dist}/styles/typography-tokens.css +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InputImage.js","sources":["../../../src/components/InputImage/InputImage.tsx"],"sourcesContent":["import type { InputImageProps } from \"./InputImage.types\";\r\nimport { Button } from \"../Button/Button\";\r\nimport { CoreText } from \"../CoreText/CoreText\";\r\nimport \"./InputImage.css\";\r\n\r\n/**\r\n * InputImage - Image upload input component with drag-and-drop support\r\n *\r\n * Provides a file upload interface with multiple visual states including:\r\n * - Default: Empty state with drag-and-drop zone\r\n * - Hover: Visual feedback during drag-over\r\n * - Filled: Shows uploaded image with remove button\r\n * - Loading: Loading skeleton state\r\n * - Generating: Blurred preview during processing\r\n * - Generated: Final result with optional comparison slider\r\n * - Disabled: Non-interactive state\r\n *\r\n * Token-first per Constitution (no hardcoded values).\r\n *\r\n * @example\r\n * ```tsx\r\n * <InputImage state=\"Default\" onUploadClick={handleUpload} />\r\n * <InputImage state=\"Filled\" imageSrc=\"/path/to/image.jpg\" onRemoveClick={handleRemove} />\r\n * <InputImage state=\"Generated\" imageSrc=\"/path/to/image.jpg\" comparisonSlider={true} />\r\n * ```\r\n */\r\nexport function InputImage({\r\n state = \"Default\",\r\n comparisonSlider = true,\r\n imageSrc,\r\n imageAlt = \"\",\r\n onUploadClick,\r\n onRemoveClick,\r\n onDragEnter,\r\n onDragLeave,\r\n onDrop,\r\n className = \"\",\r\n children,\r\n sliderPosition = 50,\r\n // onSliderDrag not yet implemented\r\n}: InputImageProps) {\r\n // Default state\r\n if (state === \"Default\") {\r\n return (\r\n <div\r\n className={`gds-input-image gds-input-image-default ${className}`.trim()}\r\n onDragEnter={onDragEnter}\r\n onDragLeave={onDragLeave}\r\n onDrop={onDrop}\r\n data-component=\"InputImage\"\r\n data-state={state}\r\n >\r\n {children || (\r\n <>\r\n <CoreText\r\n style=\"label-lg-medium\"\r\n className=\"gds-input-image-label\"\r\n >\r\n Drag and drop\r\n </CoreText>\r\n <CoreText\r\n style=\"body-sm-regular\"\r\n className=\"gds-input-image-separator\"\r\n >\r\n or\r\n </CoreText>\r\n <Button\r\n variant=\"primary\"\r\n size=\"small\"\r\n onClick={onUploadClick}\r\n className=\"gds-input-image-button\"\r\n >\r\n Click to upload\r\n </Button>\r\n </>\r\n )}\r\n </div>\r\n );\r\n }\r\n\r\n // Hover state\r\n if (state === \"Hover\") {\r\n return (\r\n <div\r\n className={`gds-input-image gds-input-image-hover ${className}`.trim()}\r\n onDragEnter={onDragEnter}\r\n onDragLeave={onDragLeave}\r\n onDrop={onDrop}\r\n data-component=\"InputImage\"\r\n data-state={state}\r\n >\r\n {children || (\r\n <>\r\n <CoreText\r\n style=\"label-lg-medium\"\r\n className=\"gds-input-image-label\"\r\n >\r\n Drag and drop\r\n </CoreText>\r\n <CoreText\r\n style=\"body-sm-regular\"\r\n className=\"gds-input-image-separator\"\r\n >\r\n or\r\n </CoreText>\r\n <Button\r\n variant=\"primary\"\r\n size=\"small\"\r\n onClick={onUploadClick}\r\n className=\"gds-input-image-button\"\r\n >\r\n Click to upload\r\n </Button>\r\n </>\r\n )}\r\n </div>\r\n );\r\n }\r\n\r\n // Filled state\r\n if (state === \"Filled\") {\r\n return (\r\n <div\r\n className={`gds-input-image gds-input-image-filled ${className}`.trim()}\r\n data-component=\"InputImage\"\r\n data-state={state}\r\n >\r\n {imageSrc && (\r\n <img\r\n src={imageSrc}\r\n alt={imageAlt}\r\n className=\"gds-input-image-preview\"\r\n />\r\n )}\r\n <Button\r\n variant=\"primary\"\r\n size=\"small\"\r\n onClick={onRemoveClick}\r\n className=\"gds-input-image-remove-button\"\r\n iconLeft={\r\n <svg\r\n width=\"16\"\r\n height=\"16\"\r\n viewBox=\"0 0 16 16\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n aria-hidden=\"true\"\r\n >\r\n <path\r\n d=\"M12 4L4 12M4 4L12 12\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n />\r\n </svg>\r\n }\r\n />\r\n </div>\r\n );\r\n }\r\n\r\n // Loading state\r\n if (state === \"Loading\") {\r\n return (\r\n <div\r\n className={`gds-input-image gds-input-image-loading ${className}`.trim()}\r\n data-component=\"InputImage\"\r\n data-state={state}\r\n />\r\n );\r\n }\r\n\r\n // Generating state\r\n if (state === \"Generating\") {\r\n return (\r\n <div\r\n className={`gds-input-image gds-input-image-generating ${className}`.trim()}\r\n data-component=\"InputImage\"\r\n data-state={state}\r\n >\r\n <div className=\"gds-input-image-blur-container\">\r\n {imageSrc && (\r\n <img\r\n src={imageSrc}\r\n alt={imageAlt}\r\n className=\"gds-input-image-blur-preview\"\r\n />\r\n )}\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n // Generated state\r\n if (state === \"Generated\") {\r\n return (\r\n <div\r\n className={`gds-input-image gds-input-image-generated ${className}`.trim()}\r\n data-component=\"InputImage\"\r\n data-state={state}\r\n >\r\n {imageSrc && (\r\n <img\r\n src={imageSrc}\r\n alt={imageAlt}\r\n className=\"gds-input-image-result\"\r\n />\r\n )}\r\n {comparisonSlider && (\r\n <div \r\n className=\"gds-input-image-comparison-slider\"\r\n style={{\r\n left: `${sliderPosition}%`,\r\n }}\r\n >\r\n <div className=\"gds-input-image-slider-line\" />\r\n <Button\r\n variant=\"secondary\"\r\n size=\"small\"\r\n className=\"gds-input-image-slider-button\"\r\n iconLeft={\r\n <svg\r\n width=\"16\"\r\n height=\"16\"\r\n viewBox=\"0 0 16 16\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n aria-hidden=\"true\"\r\n >\r\n <path\r\n d=\"M6 12L2 8L6 4\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n />\r\n <path\r\n d=\"M10 4L14 8L10 12\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n />\r\n </svg>\r\n }\r\n />\r\n </div>\r\n )}\r\n </div>\r\n );\r\n }\r\n\r\n // Disabled state\r\n if (state === \"Disabled\") {\r\n return (\r\n <div\r\n className={`gds-input-image gds-input-image-disabled ${className}`.trim()}\r\n data-component=\"InputImage\"\r\n data-state={state}\r\n >\r\n {children || (\r\n <>\r\n <CoreText\r\n style=\"label-lg-medium\"\r\n className=\"gds-input-image-label\"\r\n >\r\n Drag and drop\r\n </CoreText>\r\n <CoreText\r\n style=\"body-sm-regular\"\r\n className=\"gds-input-image-separator\"\r\n >\r\n or\r\n </CoreText>\r\n <Button\r\n variant=\"primary\"\r\n size=\"small\"\r\n disabled\r\n className=\"gds-input-image-button\"\r\n >\r\n Click to upload\r\n </Button>\r\n </>\r\n )}\r\n </div>\r\n );\r\n }\r\n\r\n // Fallback to default\r\n return (\r\n <div\r\n className={`gds-input-image gds-input-image-default ${className}`.trim()}\r\n data-component=\"InputImage\"\r\n data-state=\"Default\"\r\n >\r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\nexport default InputImage;\r\n"],"names":["InputImage","state","comparisonSlider","imageSrc","imageAlt","onUploadClick","onRemoveClick","onDragEnter","onDragLeave","onDrop","className","children","sliderPosition","jsx","jsxs","Fragment","CoreText","Button"],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import { jsxs as s, jsx as a } from "react/jsx-runtime";
2
+ /* empty css */
3
+ function m({
4
+ children: e,
5
+ showDivider: d = !0,
6
+ className: i = "",
7
+ ...r
8
+ }) {
9
+ return /* @__PURE__ */ s(
10
+ "div",
11
+ {
12
+ className: `gds-sidebar ${i}`.trim(),
13
+ "data-component": "Sidebar",
14
+ "data-show-divider": d,
15
+ ...r,
16
+ children: [
17
+ /* @__PURE__ */ a("div", { className: "gds-sidebar-content", children: e }),
18
+ d && /* @__PURE__ */ a("div", { className: "gds-sidebar-divider", "aria-hidden": "true" })
19
+ ]
20
+ }
21
+ );
22
+ }
23
+ export {
24
+ m as Sidebar,
25
+ m as default
26
+ };
27
+ //# sourceMappingURL=Sidebar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Sidebar.js","sources":["../../../src/components/Sidebar/Sidebar.tsx"],"sourcesContent":["import type { SidebarProps } from \"./Sidebar.types\";\r\nimport \"./Sidebar.css\";\r\n\r\n/**\r\n * Sidebar - Sidebar container component for the goo-ds design system\r\n *\r\n * Provides consistent sidebar layout with proper spacing and background.\r\n * Designed to contain SidebarItem components, titles, and other navigation elements.\r\n * Token-first per Constitution (no hardcoded values).\r\n *\r\n * @example\r\n * ```tsx\r\n * <Sidebar>\r\n * <CoreText style=\"headline-xs-bold\">Navigation</CoreText>\r\n * <Spacer size=\"16\" />\r\n * <SidebarItem icon={<HomeIcon />}>Home</SidebarItem>\r\n * <SidebarItem icon={<SettingsIcon />}>Settings</SidebarItem>\r\n * </Sidebar>\r\n * ```\r\n */\r\nexport function Sidebar({\r\n children,\r\n showDivider = true,\r\n className = \"\",\r\n ...props\r\n}: SidebarProps) {\r\n return (\r\n <div\r\n className={`gds-sidebar ${className}`.trim()}\r\n data-component=\"Sidebar\"\r\n data-show-divider={showDivider}\r\n {...props}\r\n >\r\n <div className=\"gds-sidebar-content\">\r\n {children}\r\n </div>\r\n {showDivider && <div className=\"gds-sidebar-divider\" aria-hidden=\"true\" />}\r\n </div>\r\n );\r\n}\r\n\r\nexport default Sidebar;\r\n"],"names":["Sidebar","children","showDivider","className","props","jsxs","jsx"],"mappings":";;AAoBO,SAASA,EAAQ;AAAA,EACtB,UAAAC;AAAA,EACA,aAAAC,IAAc;AAAA,EACd,WAAAC,IAAY;AAAA,EACZ,GAAGC;AACL,GAAiB;AACf,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW,eAAeF,CAAS,GAAG,KAAA;AAAA,MACtC,kBAAe;AAAA,MACf,qBAAmBD;AAAA,MAClB,GAAGE;AAAA,MAEJ,UAAA;AAAA,QAAA,gBAAAE,EAAC,OAAA,EAAI,WAAU,uBACZ,UAAAL,EAAA,CACH;AAAA,QACCC,KAAe,gBAAAI,EAAC,OAAA,EAAI,WAAU,uBAAsB,eAAY,OAAA,CAAO;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAG9E;"}
@@ -0,0 +1,37 @@
1
+ import { jsxs as l, jsx as d } from "react/jsx-runtime";
2
+ /* empty css */
3
+ function v({
4
+ active: i = !1,
5
+ icon: s,
6
+ children: r,
7
+ className: n = "",
8
+ onClick: e,
9
+ href: t,
10
+ ...o
11
+ }) {
12
+ const a = !!(e || t), m = (c) => {
13
+ e && e(c), t && !e && (window.location.href = t);
14
+ };
15
+ return /* @__PURE__ */ l(
16
+ "div",
17
+ {
18
+ className: `gds-sidebar-item ${i ? "gds-sidebar-item-active" : ""} ${a ? "gds-sidebar-item-interactive" : ""} ${n}`.trim(),
19
+ onClick: a ? m : void 0,
20
+ role: a ? "button" : void 0,
21
+ tabIndex: a ? 0 : void 0,
22
+ "aria-current": i ? "page" : void 0,
23
+ "data-component": "SidebarItem",
24
+ "data-active": i,
25
+ ...o,
26
+ children: [
27
+ s && /* @__PURE__ */ d("span", { className: "gds-sidebar-item-icon", children: s }),
28
+ /* @__PURE__ */ d("span", { className: "gds-sidebar-item-text", children: r })
29
+ ]
30
+ }
31
+ );
32
+ }
33
+ export {
34
+ v as SidebarItem,
35
+ v as default
36
+ };
37
+ //# sourceMappingURL=SidebarItem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SidebarItem.js","sources":["../../../src/components/SidebarItem/SidebarItem.tsx"],"sourcesContent":["import type { SidebarItemProps } from \"./SidebarItem.types\";\r\nimport \"./SidebarItem.css\";\r\n\r\n/**\r\n * SidebarItem - Sidebar navigation item component for the goo-ds design system\r\n *\r\n * Provides consistent sidebar navigation item with interactive states.\r\n * Supports icons and active state indication.\r\n * Token-first per Constitution (no hardcoded values).\r\n *\r\n * @example\r\n * ```tsx\r\n * <SidebarItem>Dashboard</SidebarItem>\r\n * <SidebarItem active icon={<HomeIcon />}>Home</SidebarItem>\r\n * <SidebarItem onClick={() => navigate('/settings')}>Settings</SidebarItem>\r\n * ```\r\n */\r\nexport function SidebarItem({\r\n active = false,\r\n icon,\r\n children,\r\n className = \"\",\r\n onClick,\r\n href,\r\n ...props\r\n}: SidebarItemProps) {\r\n const isInteractive = Boolean(onClick || href);\r\n\r\n const handleClick = (event: React.MouseEvent<HTMLDivElement>) => {\r\n if (onClick) {\r\n onClick(event);\r\n }\r\n if (href && !onClick) {\r\n window.location.href = href;\r\n }\r\n };\r\n\r\n return (\r\n <div\r\n className={`gds-sidebar-item ${active ? \"gds-sidebar-item-active\" : \"\"} ${isInteractive ? \"gds-sidebar-item-interactive\" : \"\"} ${className}`.trim()}\r\n onClick={isInteractive ? handleClick : undefined}\r\n role={isInteractive ? \"button\" : undefined}\r\n tabIndex={isInteractive ? 0 : undefined}\r\n aria-current={active ? \"page\" : undefined}\r\n data-component=\"SidebarItem\"\r\n data-active={active}\r\n {...props}\r\n >\r\n {icon && <span className=\"gds-sidebar-item-icon\">{icon}</span>}\r\n <span className=\"gds-sidebar-item-text\">{children}</span>\r\n </div>\r\n );\r\n}\r\n\r\nexport default SidebarItem;\r\n"],"names":["SidebarItem","active","icon","children","className","onClick","href","props","isInteractive","handleClick","event","jsxs","jsx"],"mappings":";;AAiBO,SAASA,EAAY;AAAA,EAC1B,QAAAC,IAAS;AAAA,EACT,MAAAC;AAAA,EACA,UAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,SAAAC;AAAA,EACA,MAAAC;AAAA,EACA,GAAGC;AACL,GAAqB;AACnB,QAAMC,IAAgB,GAAQH,KAAWC,IAEnCG,IAAc,CAACC,MAA4C;AAC/D,IAAIL,KACFA,EAAQK,CAAK,GAEXJ,KAAQ,CAACD,MACX,OAAO,SAAS,OAAOC;AAAA,EAE3B;AAEA,SACE,gBAAAK;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW,oBAAoBV,IAAS,4BAA4B,EAAE,IAAIO,IAAgB,iCAAiC,EAAE,IAAIJ,CAAS,GAAG,KAAA;AAAA,MAC7I,SAASI,IAAgBC,IAAc;AAAA,MACvC,MAAMD,IAAgB,WAAW;AAAA,MACjC,UAAUA,IAAgB,IAAI;AAAA,MAC9B,gBAAcP,IAAS,SAAS;AAAA,MAChC,kBAAe;AAAA,MACf,eAAaA;AAAA,MACZ,GAAGM;AAAA,MAEH,UAAA;AAAA,QAAAL,KAAQ,gBAAAU,EAAC,QAAA,EAAK,WAAU,yBAAyB,UAAAV,GAAK;AAAA,QACvD,gBAAAU,EAAC,QAAA,EAAK,WAAU,yBAAyB,UAAAT,EAAA,CAAS;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGxD;"}
@@ -0,0 +1,30 @@
1
+ import { jsx as d } from "react/jsx-runtime";
2
+ function l({
3
+ size: e = "16",
4
+ className: a = "",
5
+ width: r = "100%",
6
+ animate: o = !0,
7
+ ...t
8
+ }) {
9
+ return /* @__PURE__ */ d(
10
+ "div",
11
+ {
12
+ className: `${o ? "skeleton-pulse" : ""} ${a}`.trim(),
13
+ style: {
14
+ height: `var(--size-${e})`,
15
+ width: r,
16
+ backgroundColor: "var(--skeleton-background-default)",
17
+ borderRadius: "var(--radius-50)",
18
+ overflow: "clip"
19
+ },
20
+ "aria-hidden": t["aria-hidden"] !== !1,
21
+ "data-component": "Skeleton",
22
+ "data-size": e
23
+ }
24
+ );
25
+ }
26
+ export {
27
+ l as Skeleton,
28
+ l as default
29
+ };
30
+ //# sourceMappingURL=Skeleton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Skeleton.js","sources":["../../../src/components/Skeleton/Skeleton.tsx"],"sourcesContent":["import type { SkeletonProps } from \"./Skeleton.types\";\r\n\r\n/**\r\n * Skeleton - Loading state placeholder component for the goo-ds design system\r\n *\r\n * Provides consistent loading state placeholders using design system tokens.\r\n * Includes a pulse animation to indicate loading state.\r\n * Token-first per Constitution (no hardcoded values).\r\n *\r\n * @example\r\n * ```tsx\r\n * <Skeleton size=\"16\" />\r\n * <Skeleton size=\"48\" width=\"200px\" />\r\n * <Skeleton size=\"64\" animate={false} />\r\n * ```\r\n */\r\nexport function Skeleton({\r\n size = \"16\",\r\n className = \"\",\r\n width = \"100%\",\r\n animate = true,\r\n ...props\r\n}: SkeletonProps) {\r\n return (\r\n <div\r\n className={`${animate ? \"skeleton-pulse\" : \"\"} ${className}`.trim()}\r\n style={{\r\n height: `var(--size-${size})`,\r\n width: width,\r\n backgroundColor: \"var(--skeleton-background-default)\",\r\n borderRadius: \"var(--radius-50)\",\r\n overflow: \"clip\",\r\n }}\r\n aria-hidden={props[\"aria-hidden\"] !== false}\r\n data-component=\"Skeleton\"\r\n data-size={size}\r\n />\r\n );\r\n}\r\n\r\nexport default Skeleton;\r\n"],"names":["Skeleton","size","className","width","animate","props","jsx"],"mappings":";AAgBO,SAASA,EAAS;AAAA,EACvB,MAAAC,IAAO;AAAA,EACP,WAAAC,IAAY;AAAA,EACZ,OAAAC,IAAQ;AAAA,EACR,SAAAC,IAAU;AAAA,EACV,GAAGC;AACL,GAAkB;AAChB,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW,GAAGF,IAAU,mBAAmB,EAAE,IAAIF,CAAS,GAAG,KAAA;AAAA,MAC7D,OAAO;AAAA,QACL,QAAQ,cAAcD,CAAI;AAAA,QAC1B,OAAAE;AAAA,QACA,iBAAiB;AAAA,QACjB,cAAc;AAAA,QACd,UAAU;AAAA,MAAA;AAAA,MAEZ,eAAaE,EAAM,aAAa,MAAM;AAAA,MACtC,kBAAe;AAAA,MACf,aAAWJ;AAAA,IAAA;AAAA,EAAA;AAGjB;"}
@@ -0,0 +1,21 @@
1
+ import { jsx as i } from "react/jsx-runtime";
2
+ function d({ size: a = "16", className: e = "", ...t }) {
3
+ return /* @__PURE__ */ i(
4
+ "div",
5
+ {
6
+ className: e,
7
+ style: {
8
+ height: `var(--size-${a})`,
9
+ width: "100%"
10
+ },
11
+ "aria-hidden": t["aria-hidden"] !== !1,
12
+ "data-component": "Spacer",
13
+ "data-size": a
14
+ }
15
+ );
16
+ }
17
+ export {
18
+ d as Spacer,
19
+ d as default
20
+ };
21
+ //# sourceMappingURL=Spacer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Spacer.js","sources":["../../../src/components/Spacer/Spacer.tsx"],"sourcesContent":["import type { SpacerProps } from \"./Spacer.types\";\r\n\r\n/**\r\n * Spacer - Layout spacing component for the goo-ds design system\r\n *\r\n * Provides consistent vertical spacing using number tokens from Figma.\r\n * Token-first per Constitution (no hardcoded values).\r\n *\r\n * @example\r\n * ```tsx\r\n * <Spacer size=\"16\" />\r\n * <Spacer size=\"32\" />\r\n * <Spacer size=\"64\" />\r\n * ```\r\n */\r\nexport function Spacer({ size = \"16\", className = \"\", ...props }: SpacerProps) {\r\n return (\r\n <div\r\n className={className}\r\n style={{\r\n height: `var(--size-${size})`,\r\n width: \"100%\",\r\n }}\r\n aria-hidden={props[\"aria-hidden\"] !== false}\r\n data-component=\"Spacer\"\r\n data-size={size}\r\n />\r\n );\r\n}\r\n\r\nexport default Spacer;\r\n"],"names":["Spacer","size","className","props","jsx"],"mappings":";AAeO,SAASA,EAAO,EAAE,MAAAC,IAAO,MAAM,WAAAC,IAAY,IAAI,GAAGC,KAAsB;AAC7E,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAAF;AAAA,MACA,OAAO;AAAA,QACL,QAAQ,cAAcD,CAAI;AAAA,QAC1B,OAAO;AAAA,MAAA;AAAA,MAET,eAAaE,EAAM,aAAa,MAAM;AAAA,MACtC,kBAAe;AAAA,MACf,aAAWF;AAAA,IAAA;AAAA,EAAA;AAGjB;"}
@@ -0,0 +1,33 @@
1
+ import { jsx as e } from "react/jsx-runtime";
2
+ /* empty css */
3
+ function r({
4
+ selected: t = !1,
5
+ children: s,
6
+ className: m = "",
7
+ onClick: i,
8
+ disabled: a = !1,
9
+ ...b
10
+ }) {
11
+ return /* @__PURE__ */ e(
12
+ "button",
13
+ {
14
+ type: "button",
15
+ className: `gds-tab-item ${t ? "gds-tab-item-selected" : "gds-tab-item-unselected"} ${a ? "gds-tab-item-disabled" : ""} ${m}`.trim(),
16
+ onClick: i,
17
+ disabled: a,
18
+ role: "tab",
19
+ "aria-selected": t,
20
+ "aria-disabled": a,
21
+ tabIndex: t ? 0 : -1,
22
+ "data-component": "TabItem",
23
+ "data-selected": t,
24
+ ...b,
25
+ children: /* @__PURE__ */ e("span", { className: "gds-tab-item-text", children: s })
26
+ }
27
+ );
28
+ }
29
+ export {
30
+ r as TabItem,
31
+ r as default
32
+ };
33
+ //# sourceMappingURL=TabItem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TabItem.js","sources":["../../../src/components/TabItem/TabItem.tsx"],"sourcesContent":["import type { TabItemProps } from \"./TabItem.types\";\r\nimport \"./TabItem.css\";\r\n\r\n/**\r\n * TabItem - Tab navigation item component for the goo-ds design system\r\n *\r\n * Provides consistent tab item with selected/unselected states.\r\n * Designed to be used within a Tabs container.\r\n * Token-first per Constitution (no hardcoded values).\r\n *\r\n * @example\r\n * ```tsx\r\n * <TabItem selected>Overview</TabItem>\r\n * <TabItem onClick={() => handleTabChange('details')}>Details</TabItem>\r\n * <TabItem>Settings</TabItem>\r\n * ```\r\n */\r\nexport function TabItem({\r\n selected = false,\r\n children,\r\n className = \"\",\r\n onClick,\r\n disabled = false,\r\n ...props\r\n}: TabItemProps) {\r\n return (\r\n <button\r\n type=\"button\"\r\n className={`gds-tab-item ${selected ? \"gds-tab-item-selected\" : \"gds-tab-item-unselected\"} ${disabled ? \"gds-tab-item-disabled\" : \"\"} ${className}`.trim()}\r\n onClick={onClick}\r\n disabled={disabled}\r\n role=\"tab\"\r\n aria-selected={selected}\r\n aria-disabled={disabled}\r\n tabIndex={selected ? 0 : -1}\r\n data-component=\"TabItem\"\r\n data-selected={selected}\r\n {...props}\r\n >\r\n <span className=\"gds-tab-item-text\">{children}</span>\r\n </button>\r\n );\r\n}\r\n\r\nexport default TabItem;\r\n"],"names":["TabItem","selected","children","className","onClick","disabled","props","jsx"],"mappings":";;AAiBO,SAASA,EAAQ;AAAA,EACtB,UAAAC,IAAW;AAAA,EACX,UAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,SAAAC;AAAA,EACA,UAAAC,IAAW;AAAA,EACX,GAAGC;AACL,GAAiB;AACf,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,WAAW,gBAAgBN,IAAW,0BAA0B,yBAAyB,IAAII,IAAW,0BAA0B,EAAE,IAAIF,CAAS,GAAG,KAAA;AAAA,MACpJ,SAAAC;AAAA,MACA,UAAAC;AAAA,MACA,MAAK;AAAA,MACL,iBAAeJ;AAAA,MACf,iBAAeI;AAAA,MACf,UAAUJ,IAAW,IAAI;AAAA,MACzB,kBAAe;AAAA,MACf,iBAAeA;AAAA,MACd,GAAGK;AAAA,MAEJ,UAAA,gBAAAC,EAAC,QAAA,EAAK,WAAU,qBAAqB,UAAAL,EAAA,CAAS;AAAA,IAAA;AAAA,EAAA;AAGpD;"}
@@ -0,0 +1,18 @@
1
+ import { jsx as t } from "react/jsx-runtime";
2
+ /* empty css */
3
+ function m({ children: a, className: e = "", ...o }) {
4
+ return /* @__PURE__ */ t(
5
+ "table",
6
+ {
7
+ className: `gds-table ${e}`.trim(),
8
+ "data-component": "Table",
9
+ ...o,
10
+ children: /* @__PURE__ */ t("tbody", { children: a })
11
+ }
12
+ );
13
+ }
14
+ export {
15
+ m as Table,
16
+ m as default
17
+ };
18
+ //# sourceMappingURL=Table.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Table.js","sources":["../../../src/components/Table/Table.tsx"],"sourcesContent":["import type { TableProps } from \"./Table.types\";\r\nimport \"./Table.css\";\r\n\r\n/**\r\n * Table - Table container component for the goo-ds design system\r\n *\r\n * Provides consistent table layout with background, border, and rounded corners.\r\n * Designed to contain TableRow components with Cell children.\r\n * Token-first per Constitution (no hardcoded values).\r\n *\r\n * @example\r\n * ```tsx\r\n * <Table>\r\n * <TableRow>\r\n * <Cell type=\"header\">Name</Cell>\r\n * <Cell type=\"header\">Email</Cell>\r\n * </TableRow>\r\n * <TableRow>\r\n * <Cell>John Doe</Cell>\r\n * <Cell>john@example.com</Cell>\r\n * </TableRow>\r\n * </Table>\r\n * ```\r\n */\r\nexport function Table({ children, className = \"\", ...props }: TableProps) {\r\n return (\r\n <table\r\n className={`gds-table ${className}`.trim()}\r\n data-component=\"Table\"\r\n {...props}\r\n >\r\n <tbody>\r\n {children}\r\n </tbody>\r\n </table>\r\n );\r\n}\r\n\r\nexport default Table;\r\n"],"names":["Table","children","className","props","jsx"],"mappings":";;AAwBO,SAASA,EAAM,EAAE,UAAAC,GAAU,WAAAC,IAAY,IAAI,GAAGC,KAAqB;AACxE,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW,aAAaF,CAAS,GAAG,KAAA;AAAA,MACpC,kBAAe;AAAA,MACd,GAAGC;AAAA,MAEJ,UAAA,gBAAAC,EAAC,WACE,UAAAH,EAAA,CACH;AAAA,IAAA;AAAA,EAAA;AAGN;"}
@@ -0,0 +1,35 @@
1
+ import { jsx as s } from "react/jsx-runtime";
2
+ /* empty css */
3
+ function c({
4
+ divider: o = !0,
5
+ selected: t = !1,
6
+ disabled: a = !1,
7
+ children: d,
8
+ className: i = "",
9
+ onClick: r,
10
+ ...l
11
+ }) {
12
+ const e = !!(r && !a);
13
+ return /* @__PURE__ */ s(
14
+ "tr",
15
+ {
16
+ className: `gds-table-row ${o ? "gds-table-row-divider" : ""} ${t ? "gds-table-row-selected" : ""} ${a ? "gds-table-row-disabled" : ""} ${e ? "gds-table-row-interactive" : ""} ${i}`.trim(),
17
+ onClick: a ? void 0 : r,
18
+ role: e ? "button" : void 0,
19
+ tabIndex: e ? 0 : void 0,
20
+ "aria-disabled": a,
21
+ "aria-selected": t,
22
+ "data-component": "TableRow",
23
+ "data-divider": o,
24
+ "data-selected": t,
25
+ "data-disabled": a,
26
+ ...l,
27
+ children: d
28
+ }
29
+ );
30
+ }
31
+ export {
32
+ c as TableRow,
33
+ c as default
34
+ };
35
+ //# sourceMappingURL=TableRow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableRow.js","sources":["../../../src/components/TableRow/TableRow.tsx"],"sourcesContent":["import type { TableRowProps } from \"./TableRow.types\";\r\nimport \"./TableRow.css\";\r\n\r\n/**\r\n * TableRow - Table row component for the goo-ds design system\r\n *\r\n * Provides consistent table row layout with interactive states and dividers.\r\n * Designed to contain Cell components.\r\n * Token-first per Constitution (no hardcoded values).\r\n *\r\n * @example\r\n * ```tsx\r\n * <TableRow>\r\n * <Cell>Name</Cell>\r\n * <Cell>Email</Cell>\r\n * </TableRow>\r\n * <TableRow selected>\r\n * <Cell>John</Cell>\r\n * <Cell>john@example.com</Cell>\r\n * </TableRow>\r\n * ```\r\n */\r\nexport function TableRow({\r\n divider = true,\r\n selected = false,\r\n disabled = false,\r\n children,\r\n className = \"\",\r\n onClick,\r\n ...props\r\n}: TableRowProps) {\r\n const isInteractive = Boolean(onClick && !disabled);\r\n\r\n return (\r\n <tr\r\n className={`gds-table-row ${divider ? \"gds-table-row-divider\" : \"\"} ${selected ? \"gds-table-row-selected\" : \"\"} ${disabled ? \"gds-table-row-disabled\" : \"\"} ${isInteractive ? \"gds-table-row-interactive\" : \"\"} ${className}`.trim()}\r\n onClick={disabled ? undefined : onClick}\r\n role={isInteractive ? \"button\" : undefined}\r\n tabIndex={isInteractive ? 0 : undefined}\r\n aria-disabled={disabled}\r\n aria-selected={selected}\r\n data-component=\"TableRow\"\r\n data-divider={divider}\r\n data-selected={selected}\r\n data-disabled={disabled}\r\n {...props}\r\n >\r\n {children}\r\n </tr>\r\n );\r\n}\r\n\r\nexport default TableRow;\r\n"],"names":["TableRow","divider","selected","disabled","children","className","onClick","props","isInteractive","jsx"],"mappings":";;AAsBO,SAASA,EAAS;AAAA,EACvB,SAAAC,IAAU;AAAA,EACV,UAAAC,IAAW;AAAA,EACX,UAAAC,IAAW;AAAA,EACX,UAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,SAAAC;AAAA,EACA,GAAGC;AACL,GAAkB;AAChB,QAAMC,IAAgB,GAAQF,KAAW,CAACH;AAE1C,SACE,gBAAAM;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW,iBAAiBR,IAAU,0BAA0B,EAAE,IAAIC,IAAW,2BAA2B,EAAE,IAAIC,IAAW,2BAA2B,EAAE,IAAIK,IAAgB,8BAA8B,EAAE,IAAIH,CAAS,GAAG,KAAA;AAAA,MAC9N,SAASF,IAAW,SAAYG;AAAA,MAChC,MAAME,IAAgB,WAAW;AAAA,MACjC,UAAUA,IAAgB,IAAI;AAAA,MAC9B,iBAAeL;AAAA,MACf,iBAAeD;AAAA,MACf,kBAAe;AAAA,MACf,gBAAcD;AAAA,MACd,iBAAeC;AAAA,MACf,iBAAeC;AAAA,MACd,GAAGI;AAAA,MAEH,UAAAH;AAAA,IAAA;AAAA,EAAA;AAGP;"}
@@ -0,0 +1,23 @@
1
+ import { jsx as o } from "react/jsx-runtime";
2
+ /* empty css */
3
+ function i({
4
+ children: t,
5
+ className: a = "",
6
+ ...s
7
+ }) {
8
+ return /* @__PURE__ */ o(
9
+ "div",
10
+ {
11
+ className: `gds-tabs ${a}`.trim(),
12
+ role: "tablist",
13
+ "data-component": "Tabs",
14
+ ...s,
15
+ children: t
16
+ }
17
+ );
18
+ }
19
+ export {
20
+ i as Tabs,
21
+ i as default
22
+ };
23
+ //# sourceMappingURL=Tabs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tabs.js","sources":["../../../src/components/Tabs/Tabs.tsx"],"sourcesContent":["import type { TabsProps } from \"./Tabs.types\";\r\nimport \"./Tabs.css\";\r\n\r\n/**\r\n * Tabs - Tab navigation container component for the goo-ds design system\r\n *\r\n * Provides consistent tab navigation container.\r\n * Designed to contain TabItem components.\r\n * Token-first per Constitution (no hardcoded values).\r\n *\r\n * @example\r\n * ```tsx\r\n * <Tabs>\r\n * <TabItem selected>Overview</TabItem>\r\n * <TabItem>Details</TabItem>\r\n * <TabItem>Settings</TabItem>\r\n * </Tabs>\r\n * ```\r\n */\r\nexport function Tabs({\r\n children,\r\n className = \"\",\r\n ...props\r\n}: TabsProps) {\r\n return (\r\n <div\r\n className={`gds-tabs ${className}`.trim()}\r\n role=\"tablist\"\r\n data-component=\"Tabs\"\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n );\r\n}\r\n\r\nexport default Tabs;\r\n"],"names":["Tabs","children","className","props","jsx"],"mappings":";;AAmBO,SAASA,EAAK;AAAA,EACnB,UAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,GAAGC;AACL,GAAc;AACZ,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW,YAAYF,CAAS,GAAG,KAAA;AAAA,MACnC,MAAK;AAAA,MACL,kBAAe;AAAA,MACd,GAAGC;AAAA,MAEH,UAAAF;AAAA,IAAA;AAAA,EAAA;AAGP;"}
package/dist/index.js ADDED
@@ -0,0 +1,32 @@
1
+ import { CoreText as t } from "./components/CoreText/CoreText.js";
2
+ import { Spacer as p } from "./components/Spacer/Spacer.js";
3
+ /* empty css */
4
+ import { Skeleton as f } from "./components/Skeleton/Skeleton.js";
5
+ import { Button as b } from "./components/Button/Button.js";
6
+ import { Cell as i } from "./components/Cell/Cell.js";
7
+ import { TableRow as d } from "./components/TableRow/TableRow.js";
8
+ import { Table as S } from "./components/Table/Table.js";
9
+ import { SidebarItem as C } from "./components/SidebarItem/SidebarItem.js";
10
+ import { Sidebar as k } from "./components/Sidebar/Sidebar.js";
11
+ import { Divider as g } from "./components/Divider/Divider.js";
12
+ import { Codeblock as v } from "./components/Codeblock/Codeblock.js";
13
+ import { InputImage as B } from "./components/InputImage/InputImage.js";
14
+ import { TabItem as R } from "./components/TabItem/TabItem.js";
15
+ import { Tabs as j } from "./components/Tabs/Tabs.js";
16
+ export {
17
+ b as Button,
18
+ i as Cell,
19
+ v as Codeblock,
20
+ t as CoreText,
21
+ g as Divider,
22
+ B as InputImage,
23
+ k as Sidebar,
24
+ C as SidebarItem,
25
+ f as Skeleton,
26
+ p as Spacer,
27
+ R as TabItem,
28
+ S as Table,
29
+ d as TableRow,
30
+ j as Tabs
31
+ };
32
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;"}
@@ -0,0 +1,17 @@
1
+ /* Design System CSS Entry Point - Distribution Version */
2
+ /* Import order is fixed per Constitution and Scaffold */
3
+
4
+ /* 1. Fonts (must load first) */
5
+ @import "./styles/fonts.css";
6
+
7
+ /* 2. Base token layers */
8
+ @import "./styles/global-tokens.css";
9
+ @import "./styles/semantic-tokens.css";
10
+ @import "./styles/number-tokens.css";
11
+ @import "./styles/typography-tokens.css";
12
+
13
+ /* 3. Figma styles (text styles, gradients, shadows) */
14
+ @import "./styles/style-tokens.css";
15
+
16
+ /* 4. Theme layer (component tokens via alias) */
17
+ @import "./styles/component-tokens.current.css";
package/dist/vite.svg ADDED
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>
package/package.json CHANGED
@@ -1,28 +1,24 @@
1
1
  {
2
2
  "name": "@oscarrf2/goo-ds",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "type": "module",
5
- "main": "./src/index.ts",
6
- "types": "./src/index.ts",
5
+ "main": "./dist/index.js",
6
+ "types": "./dist/index.d.ts",
7
7
  "exports": {
8
- ".": "./src/index.ts",
9
- "./styles.css": "./src/styles.css"
8
+ ".": {
9
+ "types": "./dist/index.d.ts",
10
+ "import": "./dist/index.js"
11
+ },
12
+ "./styles.css": "./dist/styles.css"
10
13
  },
11
14
  "files": [
12
- "src/**/*.ts",
13
- "src/**/*.tsx",
14
- "src/**/*.css",
15
- "!src/**/*.test.ts",
16
- "!src/**/*.test.tsx",
17
- "!src/App.tsx",
18
- "!src/App.css",
19
- "!src/main.tsx",
20
- "!src/assets",
21
- "README.md"
15
+ "dist",
16
+ "README.md",
17
+ "CHANGELOG.md"
22
18
  ],
23
- "dependencies": {
24
- "react": "^19.2.0",
25
- "react-dom": "^19.2.0"
19
+ "peerDependencies": {
20
+ "react": "^19.0.0",
21
+ "react-dom": "^19.0.0"
26
22
  },
27
23
  "devDependencies": {
28
24
  "@eslint/js": "^9.39.1",
@@ -39,6 +35,7 @@
39
35
  "eslint": "^9.39.1",
40
36
  "eslint-plugin-react-hooks": "^7.0.1",
41
37
  "eslint-plugin-react-refresh": "^0.4.24",
38
+ "glob": "^13.0.0",
42
39
  "globals": "^16.5.0",
43
40
  "identity-obj-proxy": "^3.0.0",
44
41
  "jsdom": "^26.1.0",
@@ -51,7 +48,10 @@
51
48
  },
52
49
  "scripts": {
53
50
  "dev": "vite",
54
- "build": "tsc -b && vite build",
51
+ "build": "pnpm run build:types && pnpm run build:js && pnpm run build:css",
52
+ "build:types": "tsc --project tsconfig.build.json",
53
+ "build:js": "vite build",
54
+ "build:css": "node scripts/copy-styles.js",
55
55
  "lint": "eslint .",
56
56
  "preview": "vite preview",
57
57
  "test": "vitest",
@@ -1,82 +0,0 @@
1
- import type { ButtonProps } from "./Button.types";
2
- import "./Button.css";
3
-
4
- /**
5
- * Button - Interactive button component for the goo-ds design system
6
- *
7
- * Provides consistent button styles with multiple variants, sizes, and states.
8
- * Supports icons, disabled state, and all standard button interactions.
9
- * Token-first per Constitution (no hardcoded values).
10
- *
11
- * @example
12
- * ```tsx
13
- * <Button>Click me</Button>
14
- * <Button variant="secondary" size="small">Small button</Button>
15
- * <Button variant="destructive" disabled>Disabled</Button>
16
- * <Button iconLeft={<PlusIcon />}>With icon</Button>
17
- * ```
18
- */
19
- export function Button({
20
- variant = "primary",
21
- size = "medium",
22
- iconLeft,
23
- iconRight,
24
- disabled = false,
25
- children,
26
- className = "",
27
- type = "button",
28
- ...props
29
- }: ButtonProps) {
30
- const hasIcons = iconLeft || iconRight;
31
- const isIconOnly = hasIcons && !children;
32
-
33
- // Build CSS custom properties for the button variant
34
- const buttonVars = {
35
- "--btn-background": `var(--button-${variant}-background-default)`,
36
- "--btn-background-hover": `var(--button-${variant}-background-hover, var(--button-${variant}-background-default))`,
37
- "--btn-background-pressed": `var(--button-${variant}-background-pressed, var(--button-${variant}-background-default))`,
38
- "--btn-background-disabled": `var(--button-${variant}-background-disabled, var(--button-${variant}-background-default))`,
39
- "--btn-text": `var(--button-${variant}-text-default)`,
40
- "--btn-text-disabled": `var(--button-${variant}-text-disabled, var(--button-${variant}-text-default))`,
41
- "--btn-icon": `var(--button-${variant}-icon-default)`,
42
- "--btn-icon-disabled": `var(--button-${variant}-icon-disabled, var(--button-${variant}-icon-default))`,
43
- "--btn-stroke": `var(--button-${variant}-stroke-default, transparent)`,
44
- "--btn-stroke-hover": `var(--button-${variant}-stroke-hover, var(--button-${variant}-stroke-default, transparent))`,
45
- "--btn-stroke-disabled": `var(--button-${variant}-stroke-disabled, var(--button-${variant}-stroke-default, transparent))`,
46
- } as React.CSSProperties;
47
-
48
- // Size-dependent layout tokens
49
- const buttonType = isIconOnly ? "icon" : "cta";
50
- const sizeKey = size === "extraSmall" ? "extraSmall" : size;
51
-
52
- const layoutVars = {
53
- "--btn-gap": `var(--button-${sizeKey}-${buttonType}-gap)`,
54
- "--btn-padding-v": `var(--button-${sizeKey}-${buttonType}-paddingVertical)`,
55
- "--btn-padding-h": `var(--button-${sizeKey}-${buttonType}-paddingHorizontal)`,
56
- "--btn-min-height": `var(--button-${sizeKey}-${buttonType}-minHeight)`,
57
- "--btn-radius": `var(--button-${sizeKey}-${buttonType}-radius)`,
58
- "--btn-stroke-width": `var(--button-${sizeKey}-${buttonType}-strokeWidth)`,
59
- "--btn-min-width": isIconOnly ? `var(--button-${sizeKey}-${buttonType}-minWidth)` : "auto",
60
- "--btn-font-size": `var(--font-size-${size === "large" ? "md" : size === "medium" ? "sm" : "xs"})`,
61
- "--btn-line-height": `var(--font-lineHeight-${size === "large" ? "md" : size === "medium" ? "sm" : "xs"})`,
62
- } as React.CSSProperties;
63
-
64
- return (
65
- <button
66
- type={type}
67
- disabled={disabled}
68
- className={`gds-button gds-button-${variant} gds-button-${size} ${isIconOnly ? "gds-button-icon-only" : ""} ${className}`.trim()}
69
- style={{ ...buttonVars, ...layoutVars }}
70
- data-component="Button"
71
- data-variant={variant}
72
- data-size={size}
73
- {...props}
74
- >
75
- {iconLeft && <span className="gds-button-icon gds-button-icon-left">{iconLeft}</span>}
76
- {children && <span className="gds-button-text">{children}</span>}
77
- {iconRight && <span className="gds-button-icon gds-button-icon-right">{iconRight}</span>}
78
- </button>
79
- );
80
- }
81
-
82
- export default Button;
@@ -1,62 +0,0 @@
1
- import type { ReactNode } from "react";
2
-
3
- /**
4
- * Button component props
5
- * Provides interactive buttons using design system tokens
6
- */
7
-
8
- export type ButtonVariant =
9
- | "primary"
10
- | "secondary"
11
- | "destructive"
12
- | "outline"
13
- | "ghost"
14
- | "link";
15
-
16
- export type ButtonSize = "extraSmall" | "small" | "medium" | "large";
17
-
18
- export interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
19
- /**
20
- * The visual style variant of the button
21
- * @default "primary"
22
- */
23
- variant?: ButtonVariant;
24
-
25
- /**
26
- * The size of the button
27
- * @default "medium"
28
- */
29
- size?: ButtonSize;
30
-
31
- /**
32
- * Icon to display before the text
33
- */
34
- iconLeft?: ReactNode;
35
-
36
- /**
37
- * Icon to display after the text
38
- */
39
- iconRight?: ReactNode;
40
-
41
- /**
42
- * Whether the button is disabled
43
- * @default false
44
- */
45
- disabled?: boolean;
46
-
47
- /**
48
- * Button content (text or other elements)
49
- */
50
- children?: ReactNode;
51
-
52
- /**
53
- * Additional CSS class names
54
- */
55
- className?: string;
56
-
57
- /**
58
- * Button type attribute
59
- * @default "button"
60
- */
61
- type?: "button" | "submit" | "reset";
62
- }
@@ -1,3 +0,0 @@
1
- export { Button } from "./Button";
2
- export type { ButtonProps, ButtonVariant, ButtonSize } from "./Button.types";
3
- export { default } from "./Button";
@@ -1,42 +0,0 @@
1
- import type { CellProps } from "./Cell.types";
2
- import "./Cell.css";
3
-
4
- /**
5
- * Cell - Table cell component for the goo-ds design system
6
- *
7
- * Provides consistent table cell layout with alignment and width presets.
8
- * Designed to be used within table structures.
9
- * Token-first per Constitution (no hardcoded values).
10
- *
11
- * @example
12
- * ```tsx
13
- * <Cell type="header">Name</Cell>
14
- * <Cell>John Doe</Cell>
15
- * <Cell alignment="right" width="sm">$100</Cell>
16
- * ```
17
- */
18
- export function Cell({
19
- type = "body",
20
- alignment = "left",
21
- width = "md",
22
- children,
23
- className = "",
24
- ...props
25
- }: CellProps) {
26
- const Tag = type === "header" ? "th" : "td";
27
-
28
- return (
29
- <Tag
30
- className={`gds-cell gds-cell-${type} gds-cell-align-${alignment} gds-cell-width-${width} ${className}`.trim()}
31
- data-component="Cell"
32
- data-type={type}
33
- data-alignment={alignment}
34
- data-width={width}
35
- {...props}
36
- >
37
- {children}
38
- </Tag>
39
- );
40
- }
41
-
42
- export default Cell;