@tcn/ui 0.14.0 → 0.15.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 (87) hide show
  1. package/dist/inputs/multiselect/multiselect_inline_values.js +9 -7
  2. package/dist/inputs/multiselect/multiselect_inline_values.js.map +1 -1
  3. package/dist/inputs/multiselect/multiselect_values.js +4 -2
  4. package/dist/inputs/multiselect/multiselect_values.js.map +1 -1
  5. package/dist/layouts/index.d.ts +1 -3
  6. package/dist/layouts/index.d.ts.map +1 -1
  7. package/dist/layouts/index.js +20 -20
  8. package/dist/layouts/section/detail.d.ts +4 -0
  9. package/dist/layouts/section/detail.d.ts.map +1 -0
  10. package/dist/layouts/section/detail.js +11 -0
  11. package/dist/layouts/section/detail.js.map +1 -0
  12. package/dist/layouts/section/heading.js +1 -1
  13. package/dist/layouts/section/index.d.ts +4 -0
  14. package/dist/layouts/section/index.d.ts.map +1 -0
  15. package/dist/layouts/section/index.js +9 -0
  16. package/dist/layouts/section/index.js.map +1 -0
  17. package/dist/layouts/section/section.js +1 -1
  18. package/dist/section.css +1 -1
  19. package/dist/section.module-BXlxYmJK.js +5 -0
  20. package/dist/section.module-BXlxYmJK.js.map +1 -0
  21. package/dist/surfaces/pop_confirm/pop_confirm.js +2 -2
  22. package/dist/term.css +1 -0
  23. package/dist/themes/build_stylesheet.d.ts +2 -0
  24. package/dist/themes/build_stylesheet.d.ts.map +1 -0
  25. package/dist/themes/build_stylesheet.js +9 -0
  26. package/dist/themes/build_stylesheet.js.map +1 -0
  27. package/dist/themes/theme_variables.d.ts +7 -0
  28. package/dist/themes/theme_variables.d.ts.map +1 -1
  29. package/dist/themes/theme_variables.js +16 -9
  30. package/dist/themes/theme_variables.js.map +1 -1
  31. package/dist/themes/themes/ergo/ergo_theme.css +1 -1
  32. package/dist/themes/themes/ergo/ergo_theme.d.ts.map +1 -1
  33. package/dist/themes/themes/ergo/ergo_theme.js +254 -152
  34. package/dist/themes/themes/ergo/ergo_theme.js.map +1 -1
  35. package/dist/themes/themes/ergo/tokens/system_tokens.css +1 -0
  36. package/dist/themes/themes/ergo/tokens/theme_tokens.css +1 -0
  37. package/dist/tokens/index.d.ts +1 -0
  38. package/dist/tokens/index.d.ts.map +1 -1
  39. package/dist/tokens/index.js +4 -2
  40. package/dist/tokens/index.js.map +1 -1
  41. package/dist/tokens/key/key.d.ts +8 -1
  42. package/dist/tokens/key/key.d.ts.map +1 -1
  43. package/dist/tokens/key/key.js +20 -3
  44. package/dist/tokens/key/key.js.map +1 -1
  45. package/dist/tokens/term/term.d.ts +4 -0
  46. package/dist/tokens/term/term.d.ts.map +1 -0
  47. package/dist/tokens/term/term.js +20 -0
  48. package/dist/tokens/term/term.js.map +1 -0
  49. package/dist/tokens/value/value.d.ts +8 -1
  50. package/dist/tokens/value/value.d.ts.map +1 -1
  51. package/dist/tokens/value/value.js +23 -5
  52. package/dist/tokens/value/value.js.map +1 -1
  53. package/dist/utils/types/variations.d.ts +1 -0
  54. package/dist/utils/types/variations.d.ts.map +1 -1
  55. package/dist/value.css +1 -0
  56. package/dist/value.module-DFaCouFD.js +5 -0
  57. package/dist/value.module-DFaCouFD.js.map +1 -0
  58. package/package.json +1 -1
  59. package/src/layouts/index.ts +1 -3
  60. package/src/layouts/section/__stories__/section.stories.tsx +79 -50
  61. package/src/layouts/section/detail.tsx +14 -0
  62. package/src/layouts/section/index.ts +3 -0
  63. package/src/layouts/section/section.module.css +0 -36
  64. package/src/surfaces/panel/__stories__/panel.stories.tsx +84 -40
  65. package/src/themes/build_stylesheet.ts +5 -0
  66. package/src/themes/theme_variables.ts +9 -0
  67. package/src/themes/themes/ergo/ergo_theme.css +148 -213
  68. package/src/themes/themes/ergo/ergo_theme.ts +4 -2
  69. package/src/themes/themes/ergo/tokens/system_tokens.css +68 -0
  70. package/src/themes/themes/ergo/tokens/theme_tokens.css +99 -0
  71. package/src/tokens/index.ts +1 -0
  72. package/src/tokens/key/key.tsx +23 -2
  73. package/src/tokens/term/term.module.css +14 -0
  74. package/src/tokens/term/term.stories.tsx +84 -0
  75. package/src/tokens/term/term.tsx +20 -0
  76. package/src/tokens/value/value.module.css +5 -0
  77. package/src/tokens/value/value.tsx +24 -2
  78. package/src/utils/types/variations.ts +1 -0
  79. package/dist/layouts/row/row.d.ts +0 -4
  80. package/dist/layouts/row/row.d.ts.map +0 -1
  81. package/dist/layouts/row/row.js +0 -11
  82. package/dist/layouts/row/row.js.map +0 -1
  83. package/dist/row.css +0 -1
  84. package/dist/section.module-0wyGkhDg.js +0 -5
  85. package/dist/section.module-0wyGkhDg.js.map +0 -1
  86. package/src/layouts/row/row.module.css +0 -5
  87. package/src/layouts/row/row.tsx +0 -15
@@ -0,0 +1,68 @@
1
+ @layer tcn-theme {
2
+ :root {
3
+ /* ========== Blackcat System Tokens ========== */
4
+ --scalar: 1;
5
+ --accent-color: var(--ergo-primary);
6
+
7
+ /* Typography */
8
+ --font-color: var(--ergo-text-color-primary);
9
+ --font-family: "Lato", sans-serif;
10
+ --font-size: var(--ergo-text-size-default);
11
+
12
+ /* Spacing */
13
+ --gap-small: var(--ergo-spacing-sm);
14
+ --gap-medium: var(--ergo-spacing-md);
15
+ --gap-large: var(--ergo-spacing-lg);
16
+
17
+ --padding-small: var(--ergo-spacing-sm);
18
+ --padding-medium: var(--ergo-spacing-md);
19
+ --padding-large: var(--ergo-spacing-lg);
20
+
21
+ /* Status Colors */
22
+ --status-color-disabled: var(--ergo-grey-light);
23
+ --status-color-info: var(--ergo-status-blue);
24
+ --status-color-warning: var(--ergo-status-yellow);
25
+ --status-color-positive: var(--ergo-status-green);
26
+ --status-color-error: var(--ergo-status-red);
27
+
28
+ --async-color-initial: var(--ergo-grey);
29
+ --async-color-pending: var(--ergo-status-blue);
30
+ --async-color-success: var(--ergo-status-green);
31
+ --async-color-failed: var(--ergo-status-red);
32
+
33
+ /* Action Severity */
34
+ --action-severity-dangerous: var(--ergo-status-red);
35
+ --action-severity-cautious: var(--ergo-status-yellow);
36
+ --action-severity-neutral: var(--ergo-primary);
37
+ --action-severity-suggested: var(--ergo-status-blue);
38
+ --action-severity-encouraged: var(--ergo-status-green);
39
+
40
+ /* Palette */
41
+ --primary-color-faint: var(--ergo-grey-light);
42
+ --primary-color: var(--ergo-primary);
43
+ --primary-color-strong: var(--ergo-primary-dark);
44
+
45
+ --secondary-color-faint: var(--ergo-secondary-light);
46
+ --secondary-color: var(--ergo-secondary);
47
+ --secondary-color-strong: var(--ergo-secondary-dark);
48
+
49
+ --tertiary-color-faint: var(--ergo-tertiary-light);
50
+ --tertiary-color: var(--ergo-tertiary);
51
+ --tertiary-color-strong: var(--ergo-tertiary-dark);
52
+
53
+ --quaternary-color-faint: var(--ergo-accent-blue-light);
54
+ --quaternary-color: var(--ergo-accent-blue);
55
+ --quaternary-color-strong: var(--ergo-accent-blue-dark);
56
+
57
+ --background-color-primary: var(--ergo-material-bg-primary);
58
+ --background-color-secondary: var(--ergo-material-bg-secondary);
59
+ --background-color-tertiary: var(--ergo-material-bg-tertiary);
60
+ --background-color-quaternary: var(--ergo-material-bg-quaternary);
61
+
62
+ /* Not sure what other text colors are needed */
63
+ --foreground-color-primary: var(--ergo-text-color-primary);
64
+ --foreground-color-secondary: var(--ergo-text-color-primary);
65
+ --foreground-color-tertiary: var(--ergo-text-color-primary);
66
+ --foreground-color-quaternary: var(--ergo-text-color-primary);
67
+ }
68
+ }
@@ -0,0 +1,99 @@
1
+ @layer tcn-theme {
2
+ :root {
3
+ /* ========== Ergo Palette ========== */
4
+ --ergo-white: #ffffff;
5
+
6
+ --ergo-primary: #ce6b2b;
7
+ --ergo-primary-light: #fff7f0;
8
+ --ergo-primary-dark: #b86128;
9
+
10
+ --ergo-secondary: #669eb4;
11
+ --ergo-secondary-light: #ecf4fb;
12
+ --ergo-secondary-dark: #497485;
13
+
14
+ --ergo-tertiary: #dfd7cd;
15
+ --ergo-tertiary-light: #f9f4ed;
16
+ --ergo-tertiary-dark: #7e6c5d;
17
+
18
+ --ergo-accent-blue: #395578;
19
+ --ergo-accent-blue-light: #f3f4f6;
20
+ --ergo-accent-blue-dark: #627083;
21
+
22
+ --ergo-accent-green: #97bba3;
23
+ --ergo-accent-green-light: #eef8ef;
24
+ --ergo-accent-green-dark: #4f785c;
25
+
26
+ --ergo-accent-yellow: #dbc97e;
27
+ --ergo-accent-yellow-light: #fef9e7;
28
+ --ergo-accent-yellow-dark: #82722b;
29
+
30
+ --ergo-grey: #aaaaaa;
31
+ --ergo-grey-light: #d3d3d3;
32
+ --ergo-grey-dark: #808080;
33
+
34
+ --ergo-status-red: #ff6565;
35
+ --ergo-status-red-dark: #c24848;
36
+ --ergo-status-red-light: #fff4f4;
37
+
38
+ --ergo-status-yellow: #ffd439;
39
+ --ergo-status-yellow-dark: #dbb735;
40
+ --ergo-status-yellow-light: #ffeca9;
41
+
42
+ --ergo-status-blue: var(--ergo-secondary);
43
+ --ergo-status-blue-dark: var(--ergo-secondary-dark);
44
+ --ergo-status-blue-light: var(--ergo-secondary-light);
45
+
46
+ --ergo-status-green: #3fbc6a;
47
+ --ergo-status-green-dark: #2d904f;
48
+ --ergo-status-green-light: #87e8a8;
49
+
50
+ --ergo-material-bg-primary: #ffffff;
51
+ --ergo-material-bg-secondary: #fafafa;
52
+ --ergo-material-bg-tertiary: #f1f1f1;
53
+ --ergo-material-bg-quaternary: #ffffff;
54
+
55
+ --ergo-material-overlay: var(--ergo-secondary-dark);
56
+ --ergo-material-border: var(--ergo-grey);
57
+ --ergo-material-divider: var(--ergo-grey);
58
+ --ergo-material-disabled-outline: var(--ergo-grey-light);
59
+ --ergo-material-disabled-fill: var(--ergo-grey);
60
+
61
+ /* ========== Ergo Text ========== */
62
+ --ergo-text-size-input: 12px;
63
+ --ergo-text-size-default: 12px;
64
+ --ergo-text-color-primary: var(--ergo-accent-blue);
65
+ --ergo-text-color-inverse: var(--ergo-white);
66
+ --ergo-text-color-disabled-outline: var(--ergo-grey);
67
+ --ergo-text-color-disabled-fill: var(--ergo-white);
68
+
69
+ /* ========== Spacing ========== */
70
+ --ergo-spacing-xs: 2px;
71
+ --ergo-spacing-sm: 4px;
72
+ --ergo-spacing-md: 8px;
73
+ --ergo-spacing-lg: 16px;
74
+ --ergo-spacing-xl: 32px;
75
+
76
+ /* ========== Sizing ========== */
77
+ --ergo-sizing-bar-xs: 16px;
78
+ --ergo-sizing-bar-sm: 24px;
79
+ --ergo-sizing-bar-md: 32px;
80
+ --ergo-sizing-bar-lg: 40px;
81
+ --ergo-sizing-bar-xl: 48px;
82
+
83
+ --ergo-sizing-action-sm: 20px;
84
+ --ergo-sizing-action-md: 24px;
85
+ --ergo-sizing-action-lg: 32px;
86
+
87
+ /* ========== Shape ========== */
88
+ --ergo-shape-radius-small: 2px;
89
+ --ergo-shape-radius-medium: 4px;
90
+ --ergo-shape-radius-large: 8px;
91
+ --ergo-shape-triangle-medium: 12px;
92
+
93
+ /* Default Material - TODO: move to system once blackcat support material */
94
+ --action: var(--ergo-primary);
95
+ --on-action: var(--ergo-white);
96
+ --material: var(--ergo-white);
97
+ --on-material: var(--ergo-accent-blue);
98
+ }
99
+ }
@@ -3,3 +3,4 @@ export * from './badge/badge.js';
3
3
  export * from './bubble/bubble.js';
4
4
  export * from './key/key.js';
5
5
  export * from './value/value.js';
6
+ export * from './term/term.js';
@@ -1,9 +1,30 @@
1
1
  import clsx from 'clsx';
2
2
  import { HStack, HStackProps } from '../../stacks/h_stack.js';
3
+ import type { Emphasis, Severity } from '../../utils/index.js';
3
4
 
4
- export const Key = ({ children, className, hAlign = 'start', ...props }: HStackProps) => {
5
+ export interface KeyOwnProps {
6
+ emphasis?: Emphasis;
7
+ severity?: Severity;
8
+ }
9
+
10
+ export interface KeyProps extends HStackProps, KeyOwnProps {}
11
+
12
+ export const Key = ({
13
+ children,
14
+ className,
15
+ hAlign = 'start',
16
+ emphasis = 'normal',
17
+ severity = 'neutral',
18
+ ...props
19
+ }: KeyProps) => {
5
20
  return (
6
- <HStack className={clsx(className, 'tcn-key')} hAlign={hAlign} {...props}>
21
+ <HStack
22
+ data-emphasis={emphasis}
23
+ data-severity={severity}
24
+ className={clsx(className, 'tcn-datum', 'tcn-key')}
25
+ hAlign={hAlign}
26
+ {...props}
27
+ >
7
28
  {children}
8
29
  </HStack>
9
30
  );
@@ -0,0 +1,14 @@
1
+ @layer tcn-system {
2
+ :where(.term) {
3
+ padding-block: 4px;
4
+ }
5
+
6
+ :where(.term) > :where(.tcn-key) {
7
+ flex-shrink: 0;
8
+ }
9
+
10
+ :where(.term) > :where(.tcn-value) {
11
+ flex: 1;
12
+ min-width: 0;
13
+ }
14
+ }
@@ -0,0 +1,84 @@
1
+ import { Term } from './term.js';
2
+ import { Key } from '../key/key.js';
3
+ import { Value } from '../value/value.js';
4
+ import { Chip } from '../chip/chip.js';
5
+ import { VStack } from '../../stacks/v_stack.js';
6
+
7
+ export default {
8
+ title: 'Tokens/Term',
9
+ component: Term,
10
+ tags: ['autodocs'],
11
+ };
12
+
13
+ export const Default = () => (
14
+ <Term maxWidth="300px">
15
+ <Key>Status:</Key>
16
+ <Value>Active</Value>
17
+ </Term>
18
+ );
19
+
20
+ export const WithChipValue = () => (
21
+ <Term maxWidth="300px">
22
+ <Key>Category:</Key>
23
+ <Value>
24
+ <Chip>Engineering</Chip>
25
+ </Value>
26
+ </Term>
27
+ );
28
+
29
+ export const WithLongText = () => (
30
+ <Term maxWidth="300px">
31
+ <Key>Description:</Key>
32
+ <Value>This is a long value that will wrap across multiple lines</Value>
33
+ </Term>
34
+ );
35
+
36
+ export const Severity = () => (
37
+ <VStack maxWidth="300px">
38
+ <Term>
39
+ <Key>Neutral:</Key>
40
+ <Value severity="neutral">Default</Value>
41
+ </Term>
42
+ <Term>
43
+ <Key>Dangerous:</Key>
44
+ <Value severity="dangerous">Deleted</Value>
45
+ </Term>
46
+ <Term>
47
+ <Key>Cautious:</Key>
48
+ <Value severity="cautious">Pending Review</Value>
49
+ </Term>
50
+ <Term>
51
+ <Key>Suggested:</Key>
52
+ <Value severity="suggested">Recommended</Value>
53
+ </Term>
54
+ <Term>
55
+ <Key>Encouraged:</Key>
56
+ <Value severity="encouraged">Verified</Value>
57
+ </Term>
58
+ </VStack>
59
+ );
60
+
61
+ export const MultipleTerms = () => (
62
+ <VStack maxWidth="300px">
63
+ <Term>
64
+ <Key>Name:</Key>
65
+ <Value>Jane Smith</Value>
66
+ </Term>
67
+ <Term>
68
+ <Key>Role:</Key>
69
+ <Value>
70
+ <Chip>Admin</Chip>
71
+ </Value>
72
+ </Term>
73
+ <Term>
74
+ <Key emphasis="strong">Status (Strong):</Key>
75
+ <Value>
76
+ <Chip>Active</Chip>
77
+ </Value>
78
+ </Term>
79
+ <Term>
80
+ <Key emphasis="faint">Department (Faint):</Key>
81
+ <Value>Engineering</Value>
82
+ </Term>
83
+ </VStack>
84
+ );
@@ -0,0 +1,20 @@
1
+ import React from 'react';
2
+ import { HStackProps, HStack } from '../../stacks/h_stack.js';
3
+ import { clsx } from 'clsx';
4
+ import styles from './term.module.css';
5
+
6
+ export const Term = React.forwardRef<HTMLDivElement, HStackProps>(function Term(
7
+ { children, className, vAlign = 'start', as = 'div', ...props },
8
+ ref
9
+ ) {
10
+ return (
11
+ <HStack
12
+ ref={ref}
13
+ vAlign={vAlign}
14
+ className={clsx(className, styles.term, 'tcn-term')}
15
+ {...props}
16
+ >
17
+ {children}
18
+ </HStack>
19
+ );
20
+ });
@@ -0,0 +1,5 @@
1
+ @layer tcn-system {
2
+ :where(.value) {
3
+ text-align: end;
4
+ }
5
+ }
@@ -1,9 +1,31 @@
1
1
  import clsx from 'clsx';
2
2
  import { HStack, HStackProps } from '../../stacks/h_stack.js';
3
+ import type { Emphasis, Severity } from '../../utils/index.js';
4
+ import styles from './value.module.css';
3
5
 
4
- export const Value = ({ children, className, hAlign = 'end', ...props }: HStackProps) => {
6
+ export interface ValueOwnProps {
7
+ emphasis?: Emphasis;
8
+ severity?: Severity;
9
+ }
10
+
11
+ export interface ValueProps extends HStackProps, ValueOwnProps {}
12
+
13
+ export const Value = ({
14
+ children,
15
+ className,
16
+ hAlign = 'end',
17
+ emphasis = 'normal',
18
+ severity = 'neutral',
19
+ ...props
20
+ }: ValueProps) => {
5
21
  return (
6
- <HStack className={clsx(className, 'tcn-value')} hAlign={hAlign} {...props}>
22
+ <HStack
23
+ data-emphasis={emphasis}
24
+ data-severity={severity}
25
+ className={clsx(className, styles.value, 'tcn-datum', 'tcn-value')}
26
+ hAlign={hAlign}
27
+ {...props}
28
+ >
7
29
  {children}
8
30
  </HStack>
9
31
  );
@@ -2,3 +2,4 @@ export type Size = 'sm' | 'md' | 'lg';
2
2
  export type ExpandedSize = Size | 'xs' | 'xl';
3
3
  export type Hierarchy = 'primary' | 'secondary' | 'tertiary';
4
4
  export type Emphasis = 'strong' | 'normal' | 'faint';
5
+ export type Severity = 'dangerous' | 'cautious' | 'neutral' | 'suggested' | 'encouraged';
@@ -1,4 +0,0 @@
1
- import { default as React } from 'react';
2
- import { HStackProps } from '../../stacks/h_stack.js';
3
- export declare const Row: React.ForwardRefExoticComponent<HStackProps<HTMLElement> & React.RefAttributes<HTMLDivElement>>;
4
- //# sourceMappingURL=row.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"row.d.ts","sourceRoot":"","sources":["../../../src/layouts/row/row.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,WAAW,EAAU,MAAM,yBAAyB,CAAC;AAI9D,eAAO,MAAM,GAAG,iGASd,CAAC"}
@@ -1,11 +0,0 @@
1
- import { jsx as s } from "react/jsx-runtime";
2
- import m from "react";
3
- import { HStack as f } from "../../stacks/h_stack.js";
4
- import { clsx as a } from "clsx";
5
- import '../../row.css';const e = "_row_59c35b2", n = { row: e }, d = m.forwardRef(function({ children: o, className: r, as: i = "div", ...t }, c) {
6
- return /* @__PURE__ */ s(f, { ref: c, className: a(r, n.row, "tcn-row"), ...t, children: o });
7
- });
8
- export {
9
- d as Row
10
- };
11
- //# sourceMappingURL=row.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"row.js","sources":["../../../src/layouts/row/row.tsx"],"sourcesContent":["import React from 'react';\nimport { HStackProps, HStack } from '../../stacks/h_stack.js';\nimport { clsx } from 'clsx';\nimport styles from './row.module.css';\n\nexport const Row = React.forwardRef<HTMLDivElement, HStackProps>(function Row(\n { children, className, as = 'div', ...props },\n ref\n) {\n return (\n <HStack ref={ref} className={clsx(className, styles.row, 'tcn-row')} {...props}>\n {children}\n </HStack>\n );\n});\n"],"names":["Row","React","children","className","as","props","ref","jsx","HStack","clsx","styles"],"mappings":";;;;0CAKaA,IAAMC,EAAM,WAAwC,SAC/D,EAAE,UAAAC,GAAU,WAAAC,GAAW,IAAAC,IAAK,OAAO,GAAGC,EAAA,GACtCC,GACA;AACA,SACE,gBAAAC,EAACC,GAAA,EAAO,KAAAF,GAAU,WAAWG,EAAKN,GAAWO,EAAO,KAAK,SAAS,GAAI,GAAGL,GACtE,UAAAH,EAAA,CACH;AAEJ,CAAC;"}
package/dist/row.css DELETED
@@ -1 +0,0 @@
1
- @layer tcn-system{:where(._row_59c35b2){padding-block:4px}}
@@ -1,5 +0,0 @@
1
- import './section.css';const s = "_section_0d82329", e = "_heading_7bf5e47", n = { section: s, heading: e };
2
- export {
3
- n as s
4
- };
5
- //# sourceMappingURL=section.module-0wyGkhDg.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"section.module-0wyGkhDg.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1,5 +0,0 @@
1
- @layer tcn-system {
2
- :where(.row) {
3
- padding-block: 4px;
4
- }
5
- }
@@ -1,15 +0,0 @@
1
- import React from 'react';
2
- import { HStackProps, HStack } from '../../stacks/h_stack.js';
3
- import { clsx } from 'clsx';
4
- import styles from './row.module.css';
5
-
6
- export const Row = React.forwardRef<HTMLDivElement, HStackProps>(function Row(
7
- { children, className, as = 'div', ...props },
8
- ref
9
- ) {
10
- return (
11
- <HStack ref={ref} className={clsx(className, styles.row, 'tcn-row')} {...props}>
12
- {children}
13
- </HStack>
14
- );
15
- });