@oscarrf2/goo-ds 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 (70) hide show
  1. package/README.md +163 -0
  2. package/package.json +60 -0
  3. package/src/components/Button/Button.css +107 -0
  4. package/src/components/Button/Button.tsx +82 -0
  5. package/src/components/Button/Button.types.ts +62 -0
  6. package/src/components/Button/index.ts +3 -0
  7. package/src/components/Cell/Cell.css +64 -0
  8. package/src/components/Cell/Cell.tsx +42 -0
  9. package/src/components/Cell/Cell.types.ts +42 -0
  10. package/src/components/Cell/index.ts +3 -0
  11. package/src/components/Codeblock/Codeblock.css +90 -0
  12. package/src/components/Codeblock/Codeblock.tsx +88 -0
  13. package/src/components/Codeblock/Codeblock.types.ts +42 -0
  14. package/src/components/Codeblock/index.ts +3 -0
  15. package/src/components/CoreText/CoreText.tsx +43 -0
  16. package/src/components/CoreText/CoreText.types.ts +56 -0
  17. package/src/components/CoreText/index.ts +2 -0
  18. package/src/components/Divider/Divider.css +38 -0
  19. package/src/components/Divider/Divider.tsx +35 -0
  20. package/src/components/Divider/Divider.types.ts +19 -0
  21. package/src/components/Divider/index.ts +3 -0
  22. package/src/components/InputImage/InputImage.css +212 -0
  23. package/src/components/InputImage/InputImage.tsx +314 -0
  24. package/src/components/InputImage/InputImage.types.ts +86 -0
  25. package/src/components/InputImage/index.ts +2 -0
  26. package/src/components/Sidebar/Sidebar.css +35 -0
  27. package/src/components/Sidebar/Sidebar.tsx +42 -0
  28. package/src/components/Sidebar/Sidebar.types.ts +24 -0
  29. package/src/components/Sidebar/index.ts +3 -0
  30. package/src/components/SidebarItem/SidebarItem.css +70 -0
  31. package/src/components/SidebarItem/SidebarItem.tsx +55 -0
  32. package/src/components/SidebarItem/SidebarItem.types.ts +39 -0
  33. package/src/components/SidebarItem/index.ts +3 -0
  34. package/src/components/Skeleton/Skeleton.css +25 -0
  35. package/src/components/Skeleton/Skeleton.tsx +41 -0
  36. package/src/components/Skeleton/Skeleton.types.ts +65 -0
  37. package/src/components/Skeleton/index.ts +5 -0
  38. package/src/components/Spacer/Spacer.tsx +31 -0
  39. package/src/components/Spacer/Spacer.types.ts +58 -0
  40. package/src/components/Spacer/index.ts +3 -0
  41. package/src/components/TabItem/TabItem.css +67 -0
  42. package/src/components/TabItem/TabItem.tsx +45 -0
  43. package/src/components/TabItem/TabItem.types.ts +35 -0
  44. package/src/components/TabItem/index.ts +3 -0
  45. package/src/components/Table/Table.css +16 -0
  46. package/src/components/Table/Table.tsx +39 -0
  47. package/src/components/Table/Table.types.ts +18 -0
  48. package/src/components/Table/index.ts +3 -0
  49. package/src/components/TableRow/TableRow.css +53 -0
  50. package/src/components/TableRow/TableRow.tsx +53 -0
  51. package/src/components/TableRow/TableRow.types.ts +41 -0
  52. package/src/components/TableRow/index.ts +3 -0
  53. package/src/components/Tabs/Tabs.css +11 -0
  54. package/src/components/Tabs/Tabs.tsx +37 -0
  55. package/src/components/Tabs/Tabs.types.ts +18 -0
  56. package/src/components/Tabs/index.ts +3 -0
  57. package/src/components/index.ts +15 -0
  58. package/src/compositions/index.ts +3 -0
  59. package/src/index.css +68 -0
  60. package/src/index.ts +4 -0
  61. package/src/styles/component-tokens.css +270 -0
  62. package/src/styles/component-tokens.current.css +3 -0
  63. package/src/styles/fonts.css +11 -0
  64. package/src/styles/global-tokens.css +257 -0
  65. package/src/styles/index.css +20 -0
  66. package/src/styles/number-tokens.css +72 -0
  67. package/src/styles/semantic-tokens.css +84 -0
  68. package/src/styles/style-tokens.css +219 -0
  69. package/src/styles/typography-tokens.css +50 -0
  70. package/src/styles.css +2 -0
@@ -0,0 +1,41 @@
1
+ import type { SkeletonProps } from "./Skeleton.types";
2
+
3
+ /**
4
+ * Skeleton - Loading state placeholder component for the goo-ds design system
5
+ *
6
+ * Provides consistent loading state placeholders using design system tokens.
7
+ * Includes a pulse animation to indicate loading state.
8
+ * Token-first per Constitution (no hardcoded values).
9
+ *
10
+ * @example
11
+ * ```tsx
12
+ * <Skeleton size="16" />
13
+ * <Skeleton size="48" width="200px" />
14
+ * <Skeleton size="64" animate={false} />
15
+ * ```
16
+ */
17
+ export function Skeleton({
18
+ size = "16",
19
+ className = "",
20
+ width = "100%",
21
+ animate = true,
22
+ ...props
23
+ }: SkeletonProps) {
24
+ return (
25
+ <div
26
+ className={`${animate ? "skeleton-pulse" : ""} ${className}`.trim()}
27
+ style={{
28
+ height: `var(--size-${size})`,
29
+ width: width,
30
+ backgroundColor: "var(--skeleton-background-default)",
31
+ borderRadius: "var(--radius-50)",
32
+ overflow: "clip",
33
+ }}
34
+ aria-hidden={props["aria-hidden"] !== false}
35
+ data-component="Skeleton"
36
+ data-size={size}
37
+ />
38
+ );
39
+ }
40
+
41
+ export default Skeleton;
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Skeleton component props
3
+ * Provides loading state placeholders using design system tokens
4
+ */
5
+
6
+ export type SkeletonSize =
7
+ | "1"
8
+ | "2"
9
+ | "4"
10
+ | "6"
11
+ | "8"
12
+ | "12"
13
+ | "16"
14
+ | "20"
15
+ | "24"
16
+ | "28"
17
+ | "32"
18
+ | "36"
19
+ | "40"
20
+ | "44"
21
+ | "48"
22
+ | "56"
23
+ | "64"
24
+ | "80"
25
+ | "96"
26
+ | "112"
27
+ | "128"
28
+ | "144"
29
+ | "160"
30
+ | "176"
31
+ | "192"
32
+ | "208"
33
+ | "224"
34
+ | "240"
35
+ | "256";
36
+
37
+ export interface SkeletonProps {
38
+ /**
39
+ * The height of the skeleton, corresponding to number tokens (--size-X)
40
+ * @default "16"
41
+ */
42
+ size?: SkeletonSize;
43
+
44
+ /**
45
+ * Additional CSS class names
46
+ */
47
+ className?: string;
48
+
49
+ /**
50
+ * Width of the skeleton (CSS value or percentage)
51
+ * @default "100%"
52
+ */
53
+ width?: string;
54
+
55
+ /**
56
+ * Whether to animate the skeleton with a pulse effect
57
+ * @default true
58
+ */
59
+ animate?: boolean;
60
+
61
+ /**
62
+ * ARIA label for accessibility (optional, for screen readers)
63
+ */
64
+ "aria-hidden"?: boolean;
65
+ }
@@ -0,0 +1,5 @@
1
+ import "./Skeleton.css";
2
+
3
+ export { Skeleton } from "./Skeleton";
4
+ export type { SkeletonProps, SkeletonSize } from "./Skeleton.types";
5
+ export { default } from "./Skeleton";
@@ -0,0 +1,31 @@
1
+ import type { SpacerProps } from "./Spacer.types";
2
+
3
+ /**
4
+ * Spacer - Layout spacing component for the goo-ds design system
5
+ *
6
+ * Provides consistent vertical spacing using number tokens from Figma.
7
+ * Token-first per Constitution (no hardcoded values).
8
+ *
9
+ * @example
10
+ * ```tsx
11
+ * <Spacer size="16" />
12
+ * <Spacer size="32" />
13
+ * <Spacer size="64" />
14
+ * ```
15
+ */
16
+ export function Spacer({ size = "16", className = "", ...props }: SpacerProps) {
17
+ return (
18
+ <div
19
+ className={className}
20
+ style={{
21
+ height: `var(--size-${size})`,
22
+ width: "100%",
23
+ }}
24
+ aria-hidden={props["aria-hidden"] !== false}
25
+ data-component="Spacer"
26
+ data-size={size}
27
+ />
28
+ );
29
+ }
30
+
31
+ export default Spacer;
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Spacer component props
3
+ * Provides vertical spacing using design system number tokens
4
+ */
5
+
6
+ export type SpacerSize =
7
+ | "1"
8
+ | "2"
9
+ | "4"
10
+ | "6"
11
+ | "8"
12
+ | "12"
13
+ | "16"
14
+ | "20"
15
+ | "24"
16
+ | "28"
17
+ | "32"
18
+ | "36"
19
+ | "40"
20
+ | "44"
21
+ | "48"
22
+ | "56"
23
+ | "64"
24
+ | "80"
25
+ | "96"
26
+ | "112"
27
+ | "128"
28
+ | "144"
29
+ | "160"
30
+ | "176"
31
+ | "192"
32
+ | "208"
33
+ | "224"
34
+ | "240"
35
+ | "256"
36
+ | "288"
37
+ | "320"
38
+ | "384"
39
+ | "448"
40
+ | "512";
41
+
42
+ export interface SpacerProps {
43
+ /**
44
+ * The size of the spacer, corresponding to number tokens (--size-X)
45
+ * @default "16"
46
+ */
47
+ size?: SpacerSize;
48
+
49
+ /**
50
+ * Additional CSS class names
51
+ */
52
+ className?: string;
53
+
54
+ /**
55
+ * ARIA label for accessibility (optional, for screen readers)
56
+ */
57
+ "aria-hidden"?: boolean;
58
+ }
@@ -0,0 +1,3 @@
1
+ export { Spacer } from "./Spacer";
2
+ export type { SpacerProps, SpacerSize } from "./Spacer.types";
3
+ export { default } from "./Spacer";
@@ -0,0 +1,67 @@
1
+ /**
2
+ * TabItem component styles
3
+ * Token-driven tab item styling for the goo-ds design system
4
+ */
5
+
6
+ .gds-tab-item {
7
+ display: flex;
8
+ align-items: center;
9
+ justify-content: center;
10
+ padding-top: var(--tab-item-medium-paddingTop);
11
+ padding-bottom: var(--tab-item-medium-paddingBottom);
12
+ padding-left: var(--tab-item-medium-paddingHorizontal);
13
+ padding-right: var(--tab-item-medium-paddingHorizontal);
14
+ border: none;
15
+ border-bottom: var(--tab-item-medium-strokeWidth) solid;
16
+ background: none;
17
+ cursor: pointer;
18
+ transition: all 0.2s ease;
19
+ box-sizing: border-box;
20
+ position: relative;
21
+ font-family: var(--coreText-family-primary);
22
+ font-size: var(--font-size-sm);
23
+ line-height: var(--font-lineHeight-sm);
24
+ }
25
+
26
+ /* Unselected state */
27
+ .gds-tab-item-unselected {
28
+ border-bottom-color: var(--tab-item-stroke-unselected);
29
+ color: var(--tab-item-text-unselected);
30
+ font-weight: var(--font-weight-regular);
31
+ }
32
+
33
+ .gds-tab-item-unselected:hover:not(.gds-tab-item-disabled) {
34
+ color: var(--tab-item-text-selected);
35
+ }
36
+
37
+ /* Selected state */
38
+ .gds-tab-item-selected {
39
+ border-bottom-color: var(--tab-item-stroke-selected);
40
+ color: var(--tab-item-text-selected);
41
+ font-weight: var(--font-weight-medium);
42
+ }
43
+
44
+ /* Disabled state */
45
+ .gds-tab-item-disabled {
46
+ opacity: 0.5;
47
+ cursor: not-allowed;
48
+ }
49
+
50
+ /* Focus state */
51
+ .gds-tab-item:focus-visible {
52
+ outline: 2px solid var(--color-stroke-focus);
53
+ outline-offset: 2px;
54
+ }
55
+
56
+ /* Text styling */
57
+ .gds-tab-item-text {
58
+ flex-shrink: 0;
59
+ white-space: nowrap;
60
+ }
61
+
62
+ /* Respect user's motion preferences */
63
+ @media (prefers-reduced-motion: reduce) {
64
+ .gds-tab-item {
65
+ transition: none;
66
+ }
67
+ }
@@ -0,0 +1,45 @@
1
+ import type { TabItemProps } from "./TabItem.types";
2
+ import "./TabItem.css";
3
+
4
+ /**
5
+ * TabItem - Tab navigation item component for the goo-ds design system
6
+ *
7
+ * Provides consistent tab item with selected/unselected states.
8
+ * Designed to be used within a Tabs container.
9
+ * Token-first per Constitution (no hardcoded values).
10
+ *
11
+ * @example
12
+ * ```tsx
13
+ * <TabItem selected>Overview</TabItem>
14
+ * <TabItem onClick={() => handleTabChange('details')}>Details</TabItem>
15
+ * <TabItem>Settings</TabItem>
16
+ * ```
17
+ */
18
+ export function TabItem({
19
+ selected = false,
20
+ children,
21
+ className = "",
22
+ onClick,
23
+ disabled = false,
24
+ ...props
25
+ }: TabItemProps) {
26
+ return (
27
+ <button
28
+ type="button"
29
+ className={`gds-tab-item ${selected ? "gds-tab-item-selected" : "gds-tab-item-unselected"} ${disabled ? "gds-tab-item-disabled" : ""} ${className}`.trim()}
30
+ onClick={onClick}
31
+ disabled={disabled}
32
+ role="tab"
33
+ aria-selected={selected}
34
+ aria-disabled={disabled}
35
+ tabIndex={selected ? 0 : -1}
36
+ data-component="TabItem"
37
+ data-selected={selected}
38
+ {...props}
39
+ >
40
+ <span className="gds-tab-item-text">{children}</span>
41
+ </button>
42
+ );
43
+ }
44
+
45
+ export default TabItem;
@@ -0,0 +1,35 @@
1
+ import type { ReactNode } from "react";
2
+
3
+ /**
4
+ * TabItem component props
5
+ * Provides tab navigation item using design system tokens
6
+ */
7
+
8
+ export interface TabItemProps extends React.HTMLAttributes<HTMLButtonElement> {
9
+ /**
10
+ * Whether this tab is currently selected/active
11
+ * @default false
12
+ */
13
+ selected?: boolean;
14
+
15
+ /**
16
+ * Tab content (text or other elements)
17
+ */
18
+ children?: ReactNode;
19
+
20
+ /**
21
+ * Additional CSS class names
22
+ */
23
+ className?: string;
24
+
25
+ /**
26
+ * Click handler for tab selection
27
+ */
28
+ onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void;
29
+
30
+ /**
31
+ * Whether the tab is disabled
32
+ * @default false
33
+ */
34
+ disabled?: boolean;
35
+ }
@@ -0,0 +1,3 @@
1
+ export { TabItem } from "./TabItem";
2
+ export type { TabItemProps } from "./TabItem.types";
3
+ export { default } from "./TabItem";
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Table component styles
3
+ * Token-driven table container styling for the goo-ds design system
4
+ */
5
+
6
+ .gds-table {
7
+ width: 100%;
8
+ background-color: var(--table-background-default);
9
+ border: var(--table-medium-strokeWidth) solid var(--table-stroke-default);
10
+ border-radius: var(--radius-200);
11
+ overflow: hidden;
12
+ box-sizing: border-box;
13
+ border-collapse: separate;
14
+ border-spacing: 0;
15
+ table-layout: auto;
16
+ }
@@ -0,0 +1,39 @@
1
+ import type { TableProps } from "./Table.types";
2
+ import "./Table.css";
3
+
4
+ /**
5
+ * Table - Table container component for the goo-ds design system
6
+ *
7
+ * Provides consistent table layout with background, border, and rounded corners.
8
+ * Designed to contain TableRow components with Cell children.
9
+ * Token-first per Constitution (no hardcoded values).
10
+ *
11
+ * @example
12
+ * ```tsx
13
+ * <Table>
14
+ * <TableRow>
15
+ * <Cell type="header">Name</Cell>
16
+ * <Cell type="header">Email</Cell>
17
+ * </TableRow>
18
+ * <TableRow>
19
+ * <Cell>John Doe</Cell>
20
+ * <Cell>john@example.com</Cell>
21
+ * </TableRow>
22
+ * </Table>
23
+ * ```
24
+ */
25
+ export function Table({ children, className = "", ...props }: TableProps) {
26
+ return (
27
+ <table
28
+ className={`gds-table ${className}`.trim()}
29
+ data-component="Table"
30
+ {...props}
31
+ >
32
+ <tbody>
33
+ {children}
34
+ </tbody>
35
+ </table>
36
+ );
37
+ }
38
+
39
+ export default Table;
@@ -0,0 +1,18 @@
1
+ import type { ReactNode } from "react";
2
+
3
+ /**
4
+ * Table component props
5
+ * Provides table container using design system tokens
6
+ */
7
+
8
+ export interface TableProps extends React.HTMLAttributes<HTMLDivElement> {
9
+ /**
10
+ * Table content (typically TableRow components)
11
+ */
12
+ children?: ReactNode;
13
+
14
+ /**
15
+ * Additional CSS class names
16
+ */
17
+ className?: string;
18
+ }
@@ -0,0 +1,3 @@
1
+ export { Table } from "./Table";
2
+ export type { TableProps } from "./Table.types";
3
+ export { default } from "./Table";
@@ -0,0 +1,53 @@
1
+ /**
2
+ * TableRow component styles
3
+ * Token-driven table row styling for the goo-ds design system
4
+ */
5
+
6
+ .gds-table-row {
7
+ box-sizing: border-box;
8
+ transition: background-color 0.2s ease;
9
+ }
10
+
11
+ /* Divider border - applied to cells when border-collapse is separate */
12
+ .gds-table-row-divider td,
13
+ .gds-table-row-divider th {
14
+ border-bottom: var(--table-row-medium-strokeWidth) solid var(--table-row-stroke-divider);
15
+ }
16
+
17
+ /* Interactive rows */
18
+ .gds-table-row-interactive {
19
+ cursor: pointer;
20
+ user-select: none;
21
+ }
22
+
23
+ .gds-table-row-interactive:hover:not(.gds-table-row-disabled):not(.gds-table-row-selected) {
24
+ background-color: var(--table-row-background-hover);
25
+ }
26
+
27
+ .gds-table-row-interactive:active:not(.gds-table-row-disabled):not(.gds-table-row-selected) {
28
+ background-color: var(--table-row-background-pressed);
29
+ }
30
+
31
+ .gds-table-row-interactive:focus-visible {
32
+ outline: 2px solid var(--color-stroke-focus);
33
+ outline-offset: -2px;
34
+ }
35
+
36
+ /* Selected state */
37
+ .gds-table-row-selected {
38
+ background-color: var(--table-row-background-active);
39
+ }
40
+
41
+ /* Disabled state */
42
+ .gds-table-row-disabled {
43
+ background-color: var(--table-row-background-disabled);
44
+ cursor: not-allowed;
45
+ opacity: 0.6;
46
+ }
47
+
48
+ /* Respect user's motion preferences */
49
+ @media (prefers-reduced-motion: reduce) {
50
+ .gds-table-row {
51
+ transition: none;
52
+ }
53
+ }
@@ -0,0 +1,53 @@
1
+ import type { TableRowProps } from "./TableRow.types";
2
+ import "./TableRow.css";
3
+
4
+ /**
5
+ * TableRow - Table row component for the goo-ds design system
6
+ *
7
+ * Provides consistent table row layout with interactive states and dividers.
8
+ * Designed to contain Cell components.
9
+ * Token-first per Constitution (no hardcoded values).
10
+ *
11
+ * @example
12
+ * ```tsx
13
+ * <TableRow>
14
+ * <Cell>Name</Cell>
15
+ * <Cell>Email</Cell>
16
+ * </TableRow>
17
+ * <TableRow selected>
18
+ * <Cell>John</Cell>
19
+ * <Cell>john@example.com</Cell>
20
+ * </TableRow>
21
+ * ```
22
+ */
23
+ export function TableRow({
24
+ divider = true,
25
+ selected = false,
26
+ disabled = false,
27
+ children,
28
+ className = "",
29
+ onClick,
30
+ ...props
31
+ }: TableRowProps) {
32
+ const isInteractive = Boolean(onClick && !disabled);
33
+
34
+ return (
35
+ <tr
36
+ 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()}
37
+ onClick={disabled ? undefined : onClick}
38
+ role={isInteractive ? "button" : undefined}
39
+ tabIndex={isInteractive ? 0 : undefined}
40
+ aria-disabled={disabled}
41
+ aria-selected={selected}
42
+ data-component="TableRow"
43
+ data-divider={divider}
44
+ data-selected={selected}
45
+ data-disabled={disabled}
46
+ {...props}
47
+ >
48
+ {children}
49
+ </tr>
50
+ );
51
+ }
52
+
53
+ export default TableRow;
@@ -0,0 +1,41 @@
1
+ import type { ReactNode } from "react";
2
+
3
+ /**
4
+ * TableRow component props
5
+ * Provides table row layout using design system tokens
6
+ */
7
+
8
+ export interface TableRowProps extends React.HTMLAttributes<HTMLDivElement> {
9
+ /**
10
+ * Whether to show a divider border at the bottom
11
+ * @default true
12
+ */
13
+ divider?: boolean;
14
+
15
+ /**
16
+ * Whether the row is selected
17
+ * @default false
18
+ */
19
+ selected?: boolean;
20
+
21
+ /**
22
+ * Whether the row is disabled
23
+ * @default false
24
+ */
25
+ disabled?: boolean;
26
+
27
+ /**
28
+ * Row content (typically Cell components)
29
+ */
30
+ children?: ReactNode;
31
+
32
+ /**
33
+ * Additional CSS class names
34
+ */
35
+ className?: string;
36
+
37
+ /**
38
+ * Click handler for interactive rows
39
+ */
40
+ onClick?: (event: React.MouseEvent<HTMLDivElement>) => void;
41
+ }
@@ -0,0 +1,3 @@
1
+ export { TableRow } from "./TableRow";
2
+ export type { TableRowProps } from "./TableRow.types";
3
+ export { default } from "./TableRow";
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Tabs component styles
3
+ * Token-driven tab container styling for the goo-ds design system
4
+ */
5
+
6
+ .gds-tabs {
7
+ display: flex;
8
+ align-items: flex-start;
9
+ position: relative;
10
+ box-sizing: border-box;
11
+ }
@@ -0,0 +1,37 @@
1
+ import type { TabsProps } from "./Tabs.types";
2
+ import "./Tabs.css";
3
+
4
+ /**
5
+ * Tabs - Tab navigation container component for the goo-ds design system
6
+ *
7
+ * Provides consistent tab navigation container.
8
+ * Designed to contain TabItem components.
9
+ * Token-first per Constitution (no hardcoded values).
10
+ *
11
+ * @example
12
+ * ```tsx
13
+ * <Tabs>
14
+ * <TabItem selected>Overview</TabItem>
15
+ * <TabItem>Details</TabItem>
16
+ * <TabItem>Settings</TabItem>
17
+ * </Tabs>
18
+ * ```
19
+ */
20
+ export function Tabs({
21
+ children,
22
+ className = "",
23
+ ...props
24
+ }: TabsProps) {
25
+ return (
26
+ <div
27
+ className={`gds-tabs ${className}`.trim()}
28
+ role="tablist"
29
+ data-component="Tabs"
30
+ {...props}
31
+ >
32
+ {children}
33
+ </div>
34
+ );
35
+ }
36
+
37
+ export default Tabs;
@@ -0,0 +1,18 @@
1
+ import type { ReactNode } from "react";
2
+
3
+ /**
4
+ * Tabs component props
5
+ * Provides tab navigation container using design system tokens
6
+ */
7
+
8
+ export interface TabsProps extends React.HTMLAttributes<HTMLDivElement> {
9
+ /**
10
+ * Tab items (typically TabItem components)
11
+ */
12
+ children?: ReactNode;
13
+
14
+ /**
15
+ * Additional CSS class names
16
+ */
17
+ className?: string;
18
+ }
@@ -0,0 +1,3 @@
1
+ export { Tabs } from "./Tabs";
2
+ export type { TabsProps } from "./Tabs.types";
3
+ export { default } from "./Tabs";
@@ -0,0 +1,15 @@
1
+ // Component exports
2
+ export * from "./CoreText";
3
+ export * from "./Spacer";
4
+ export * from "./Skeleton";
5
+ export * from "./Button";
6
+ export * from "./Cell";
7
+ export * from "./TableRow";
8
+ export * from "./Table";
9
+ export * from "./SidebarItem";
10
+ export * from "./Sidebar";
11
+ export * from "./Divider";
12
+ export * from "./Codeblock";
13
+ export * from "./InputImage";
14
+ export * from "./TabItem";
15
+ export * from "./Tabs";