jvetrau-ds 0.2.37 → 0.2.40

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 (144) hide show
  1. package/components/course-outline/course-outline.css +27 -0
  2. package/components/table/table.cjs +14 -1
  3. package/components/table/table.cjs.map +1 -1
  4. package/components/table/table.css +129 -5
  5. package/components/table/table.js +14 -1
  6. package/components/table/table.js.map +1 -1
  7. package/components/video/video.css +57 -6
  8. package/package.json +1 -1
  9. package/styles.css +213 -11
  10. package/themes/base/desktop.css +5 -1
  11. package/themes/base/desktop.md +5 -1
  12. package/themes/base/desktop.scoped.css +5 -1
  13. package/themes/base/diagram.css +5 -1
  14. package/themes/base/diagram.md +5 -1
  15. package/themes/base/diagram.scoped.css +5 -1
  16. package/themes/base/mobile.css +5 -1
  17. package/themes/base/mobile.md +5 -1
  18. package/themes/base/mobile.scoped.css +5 -1
  19. package/themes/brandcopilot/desktop.css +5 -1
  20. package/themes/brandcopilot/desktop.md +5 -1
  21. package/themes/brandcopilot/desktop.scoped.css +5 -1
  22. package/themes/brandcopilot/diagram.css +5 -1
  23. package/themes/brandcopilot/diagram.md +5 -1
  24. package/themes/brandcopilot/diagram.scoped.css +5 -1
  25. package/themes/brandcopilot/mobile.css +5 -1
  26. package/themes/brandcopilot/mobile.md +5 -1
  27. package/themes/brandcopilot/mobile.scoped.css +5 -1
  28. package/themes/dmpatterns/desktop.css +5 -1
  29. package/themes/dmpatterns/desktop.md +5 -1
  30. package/themes/dmpatterns/desktop.scoped.css +5 -1
  31. package/themes/dmpatterns/diagram.css +5 -1
  32. package/themes/dmpatterns/diagram.md +5 -1
  33. package/themes/dmpatterns/diagram.scoped.css +5 -1
  34. package/themes/dmpatterns/mobile.css +5 -1
  35. package/themes/dmpatterns/mobile.md +5 -1
  36. package/themes/dmpatterns/mobile.scoped.css +5 -1
  37. package/themes/pdigest/desktop.css +5 -1
  38. package/themes/pdigest/desktop.md +5 -1
  39. package/themes/pdigest/desktop.scoped.css +5 -1
  40. package/themes/pdigest/diagram.css +5 -1
  41. package/themes/pdigest/diagram.md +5 -1
  42. package/themes/pdigest/diagram.scoped.css +5 -1
  43. package/themes/pdigest/mobile.css +5 -1
  44. package/themes/pdigest/mobile.md +5 -1
  45. package/themes/pdigest/mobile.scoped.css +5 -1
  46. package/themes/retrack/desktop.css +5 -1
  47. package/themes/retrack/desktop.md +5 -1
  48. package/themes/retrack/desktop.scoped.css +5 -1
  49. package/themes/retrack/diagram.css +5 -1
  50. package/themes/retrack/diagram.md +5 -1
  51. package/themes/retrack/diagram.scoped.css +5 -1
  52. package/themes/retrack/mobile.css +5 -1
  53. package/themes/retrack/mobile.md +5 -1
  54. package/themes/retrack/mobile.scoped.css +5 -1
  55. package/tokens/runtime/tokens.base.desktop.runtime.cjs +5 -1
  56. package/tokens/runtime/tokens.base.desktop.runtime.cjs.map +1 -1
  57. package/tokens/runtime/tokens.base.desktop.runtime.d.ts +5 -1
  58. package/tokens/runtime/tokens.base.desktop.runtime.js +5 -1
  59. package/tokens/runtime/tokens.base.desktop.runtime.js.map +1 -1
  60. package/tokens/runtime/tokens.base.diagram.runtime.cjs +5 -1
  61. package/tokens/runtime/tokens.base.diagram.runtime.cjs.map +1 -1
  62. package/tokens/runtime/tokens.base.diagram.runtime.d.ts +5 -1
  63. package/tokens/runtime/tokens.base.diagram.runtime.js +5 -1
  64. package/tokens/runtime/tokens.base.diagram.runtime.js.map +1 -1
  65. package/tokens/runtime/tokens.base.mobile.runtime.cjs +5 -1
  66. package/tokens/runtime/tokens.base.mobile.runtime.cjs.map +1 -1
  67. package/tokens/runtime/tokens.base.mobile.runtime.d.ts +5 -1
  68. package/tokens/runtime/tokens.base.mobile.runtime.js +5 -1
  69. package/tokens/runtime/tokens.base.mobile.runtime.js.map +1 -1
  70. package/tokens/runtime/tokens.brandcopilot.desktop.runtime.cjs +5 -1
  71. package/tokens/runtime/tokens.brandcopilot.desktop.runtime.cjs.map +1 -1
  72. package/tokens/runtime/tokens.brandcopilot.desktop.runtime.d.ts +5 -1
  73. package/tokens/runtime/tokens.brandcopilot.desktop.runtime.js +5 -1
  74. package/tokens/runtime/tokens.brandcopilot.desktop.runtime.js.map +1 -1
  75. package/tokens/runtime/tokens.brandcopilot.diagram.runtime.cjs +5 -1
  76. package/tokens/runtime/tokens.brandcopilot.diagram.runtime.cjs.map +1 -1
  77. package/tokens/runtime/tokens.brandcopilot.diagram.runtime.d.ts +5 -1
  78. package/tokens/runtime/tokens.brandcopilot.diagram.runtime.js +5 -1
  79. package/tokens/runtime/tokens.brandcopilot.diagram.runtime.js.map +1 -1
  80. package/tokens/runtime/tokens.brandcopilot.mobile.runtime.cjs +5 -1
  81. package/tokens/runtime/tokens.brandcopilot.mobile.runtime.cjs.map +1 -1
  82. package/tokens/runtime/tokens.brandcopilot.mobile.runtime.d.ts +5 -1
  83. package/tokens/runtime/tokens.brandcopilot.mobile.runtime.js +5 -1
  84. package/tokens/runtime/tokens.brandcopilot.mobile.runtime.js.map +1 -1
  85. package/tokens/runtime/tokens.dmpatterns.desktop.runtime.cjs +5 -1
  86. package/tokens/runtime/tokens.dmpatterns.desktop.runtime.cjs.map +1 -1
  87. package/tokens/runtime/tokens.dmpatterns.desktop.runtime.d.ts +5 -1
  88. package/tokens/runtime/tokens.dmpatterns.desktop.runtime.js +5 -1
  89. package/tokens/runtime/tokens.dmpatterns.desktop.runtime.js.map +1 -1
  90. package/tokens/runtime/tokens.dmpatterns.diagram.runtime.cjs +5 -1
  91. package/tokens/runtime/tokens.dmpatterns.diagram.runtime.cjs.map +1 -1
  92. package/tokens/runtime/tokens.dmpatterns.diagram.runtime.d.ts +5 -1
  93. package/tokens/runtime/tokens.dmpatterns.diagram.runtime.js +5 -1
  94. package/tokens/runtime/tokens.dmpatterns.diagram.runtime.js.map +1 -1
  95. package/tokens/runtime/tokens.dmpatterns.mobile.runtime.cjs +5 -1
  96. package/tokens/runtime/tokens.dmpatterns.mobile.runtime.cjs.map +1 -1
  97. package/tokens/runtime/tokens.dmpatterns.mobile.runtime.d.ts +5 -1
  98. package/tokens/runtime/tokens.dmpatterns.mobile.runtime.js +5 -1
  99. package/tokens/runtime/tokens.dmpatterns.mobile.runtime.js.map +1 -1
  100. package/tokens/runtime/tokens.pdigest.desktop.runtime.cjs +5 -1
  101. package/tokens/runtime/tokens.pdigest.desktop.runtime.cjs.map +1 -1
  102. package/tokens/runtime/tokens.pdigest.desktop.runtime.d.ts +5 -1
  103. package/tokens/runtime/tokens.pdigest.desktop.runtime.js +5 -1
  104. package/tokens/runtime/tokens.pdigest.desktop.runtime.js.map +1 -1
  105. package/tokens/runtime/tokens.pdigest.diagram.runtime.cjs +5 -1
  106. package/tokens/runtime/tokens.pdigest.diagram.runtime.cjs.map +1 -1
  107. package/tokens/runtime/tokens.pdigest.diagram.runtime.d.ts +5 -1
  108. package/tokens/runtime/tokens.pdigest.diagram.runtime.js +5 -1
  109. package/tokens/runtime/tokens.pdigest.diagram.runtime.js.map +1 -1
  110. package/tokens/runtime/tokens.pdigest.mobile.runtime.cjs +5 -1
  111. package/tokens/runtime/tokens.pdigest.mobile.runtime.cjs.map +1 -1
  112. package/tokens/runtime/tokens.pdigest.mobile.runtime.d.ts +5 -1
  113. package/tokens/runtime/tokens.pdigest.mobile.runtime.js +5 -1
  114. package/tokens/runtime/tokens.pdigest.mobile.runtime.js.map +1 -1
  115. package/tokens/runtime/tokens.retrack.desktop.runtime.cjs +5 -1
  116. package/tokens/runtime/tokens.retrack.desktop.runtime.cjs.map +1 -1
  117. package/tokens/runtime/tokens.retrack.desktop.runtime.d.ts +5 -1
  118. package/tokens/runtime/tokens.retrack.desktop.runtime.js +5 -1
  119. package/tokens/runtime/tokens.retrack.desktop.runtime.js.map +1 -1
  120. package/tokens/runtime/tokens.retrack.diagram.runtime.cjs +5 -1
  121. package/tokens/runtime/tokens.retrack.diagram.runtime.cjs.map +1 -1
  122. package/tokens/runtime/tokens.retrack.diagram.runtime.d.ts +5 -1
  123. package/tokens/runtime/tokens.retrack.diagram.runtime.js +5 -1
  124. package/tokens/runtime/tokens.retrack.diagram.runtime.js.map +1 -1
  125. package/tokens/runtime/tokens.retrack.mobile.runtime.cjs +5 -1
  126. package/tokens/runtime/tokens.retrack.mobile.runtime.cjs.map +1 -1
  127. package/tokens/runtime/tokens.retrack.mobile.runtime.d.ts +5 -1
  128. package/tokens/runtime/tokens.retrack.mobile.runtime.js +5 -1
  129. package/tokens/runtime/tokens.retrack.mobile.runtime.js.map +1 -1
  130. package/tokens/themes/base/dist/desktop.json +34 -2
  131. package/tokens/themes/base/dist/diagram.json +34 -2
  132. package/tokens/themes/base/dist/mobile.json +34 -2
  133. package/tokens/themes/brandcopilot/dist/desktop.json +34 -2
  134. package/tokens/themes/brandcopilot/dist/diagram.json +34 -2
  135. package/tokens/themes/brandcopilot/dist/mobile.json +34 -2
  136. package/tokens/themes/dmpatterns/dist/desktop.json +34 -2
  137. package/tokens/themes/dmpatterns/dist/diagram.json +34 -2
  138. package/tokens/themes/dmpatterns/dist/mobile.json +34 -2
  139. package/tokens/themes/pdigest/dist/desktop.json +34 -2
  140. package/tokens/themes/pdigest/dist/diagram.json +34 -2
  141. package/tokens/themes/pdigest/dist/mobile.json +34 -2
  142. package/tokens/themes/retrack/dist/desktop.json +34 -2
  143. package/tokens/themes/retrack/dist/diagram.json +34 -2
  144. package/tokens/themes/retrack/dist/mobile.json +34 -2
@@ -89,6 +89,33 @@
89
89
  --course-outline-item-title-letter-spacing:
90
90
  var(--font-body-letter-spacing);
91
91
 
92
+ /* size */
93
+ --course-outline-group-gap:
94
+ var(--margin-item);
95
+
96
+ /* border */
97
+
98
+ /* depth */
99
+
100
+ /* motion */
101
+ }
102
+
103
+ .layout-sidebar__side
104
+ .course-outline__action {
105
+ /* color */
106
+
107
+ /* typography */
108
+ font-family:
109
+ var(--course-outline-note-font-family);
110
+ font-size:
111
+ var(--course-outline-note-font-size);
112
+ font-weight:
113
+ var(--course-outline-note-font-weight);
114
+ line-height:
115
+ var(--course-outline-note-line-height);
116
+ letter-spacing:
117
+ var(--course-outline-note-letter-spacing);
118
+
92
119
  /* size */
93
120
 
94
121
  /* border */
@@ -71,12 +71,14 @@ const TableRow = ({
71
71
  const TableCell = ({
72
72
  status,
73
73
  className = "",
74
+ children,
74
75
  ...props
75
76
  }) => {
76
77
  const classes = classnames.classnames(
77
78
  "table__cell",
78
79
  className,
79
80
  {
81
+ "table__cell--status": status !== void 0,
80
82
  "table__cell--good": status === "good",
81
83
  "table__cell--semi-good": status === "semi-good",
82
84
  "table__cell--med": status === "med",
@@ -84,11 +86,22 @@ const TableCell = ({
84
86
  "table__cell--bad": status === "bad"
85
87
  }
86
88
  );
89
+ if (!status) {
90
+ return /* @__PURE__ */ jsxRuntime.jsx(
91
+ "td",
92
+ {
93
+ className: classes,
94
+ ...props,
95
+ children
96
+ }
97
+ );
98
+ }
87
99
  return /* @__PURE__ */ jsxRuntime.jsx(
88
100
  "td",
89
101
  {
90
102
  className: classes,
91
- ...props
103
+ ...props,
104
+ children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "table__cell-status", children })
92
105
  }
93
106
  );
94
107
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/table/table.tsx"],"names":["classnames","jsx","jsxs"],"mappings":"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","file":"table.cjs","sourcesContent":["import React from 'react';\n\nimport './table.css';\nimport { classnames } from '../helpers/classnames';\n\nexport type TableColumnWidth =\n | {\n type: 'auto';\n }\n | {\n type: 'max';\n }\n | {\n type: 'fraction';\n value: number;\n }\n | {\n type: 'min';\n }\n | {\n type: 'fixed';\n value: string;\n };\n\nexport type TableCellStatus =\n | 'good'\n | 'semi-good'\n | 'med'\n | 'semi-bad'\n | 'bad';\n\nexport interface TableColumn {\n id: React.Key;\n header: React.ReactNode;\n width?: TableColumnWidth;\n}\n\nexport interface TableProps\n extends React.TableHTMLAttributes<HTMLTableElement> {\n columns: TableColumn[];\n}\n\nexport interface TableBodyProps\n extends React.HTMLAttributes<HTMLTableSectionElement> {}\n\nexport interface TableRowProps\n extends React.HTMLAttributes<HTMLTableRowElement> {}\n\nexport interface TableCellProps\n extends React.TdHTMLAttributes<HTMLTableCellElement> {\n status?: TableCellStatus;\n}\n\nconst getFractionTotal = (\n columns: TableColumn[],\n) =>\n columns.reduce((total, column) => {\n if (\n column.width?.type !== 'fraction' ||\n column.width.value <= 0\n ) {\n return total;\n }\n\n return total + column.width.value;\n }, 0);\n\nconst getFractionPercentage = (\n value: number,\n total: number,\n) =>\n Number(\n ((value / total) * 100).toFixed(6),\n );\n\nconst getColumnWidth = (\n width: TableColumnWidth | undefined,\n fractionTotal: number,\n): React.CSSProperties['width'] => {\n if (!width || width.type === 'auto') {\n return undefined;\n }\n\n if (width.type === 'min') {\n return '1%';\n }\n\n if (width.type === 'max') {\n return '100%';\n }\n\n if (width.type === 'fixed') {\n return width.value;\n }\n\n if (\n width.value <= 0 ||\n fractionTotal <= 0\n ) {\n return undefined;\n }\n\n return `${getFractionPercentage(\n width.value,\n fractionTotal,\n )}%`;\n};\n\nconst TableBody: React.FC<\n TableBodyProps\n> = ({\n className = '',\n ...props\n}) => {\n const classes = classnames(\n 'table__body',\n className,\n {},\n );\n\n return (\n <tbody\n className={classes}\n {...props}\n />\n );\n};\n\nconst TableRow: React.FC<\n TableRowProps\n> = ({\n className = '',\n ...props\n}) => {\n const classes = classnames(\n 'table__row',\n className,\n {},\n );\n\n return (\n <tr\n className={classes}\n {...props}\n />\n );\n};\n\nconst TableCell: React.FC<\n TableCellProps\n> = ({\n status,\n className = '',\n ...props\n}) => {\n const classes = classnames(\n 'table__cell',\n className,\n {\n 'table__cell--good':\n status === 'good',\n 'table__cell--semi-good':\n status === 'semi-good',\n 'table__cell--med':\n status === 'med',\n 'table__cell--semi-bad':\n status === 'semi-bad',\n 'table__cell--bad':\n status === 'bad',\n },\n );\n\n return (\n <td\n className={classes}\n {...props}\n />\n );\n};\n\ninterface TableComponent\n extends React.FC<TableProps> {\n Body: typeof TableBody;\n Row: typeof TableRow;\n Cell: typeof TableCell;\n}\n\nconst Table: TableComponent = ({\n columns,\n className = '',\n children,\n ...props\n}) => {\n const classes = classnames(\n 'table',\n className,\n {},\n );\n\n const fractionTotal =\n getFractionTotal(columns);\n\n return (\n <table\n className={classes}\n {...props}\n >\n <colgroup>\n {columns.map((column) => (\n <col\n key={column.id}\n style={{\n width: getColumnWidth(\n column.width,\n fractionTotal,\n ),\n }}\n />\n ))}\n </colgroup>\n\n <thead className=\"table__head\">\n <tr className=\"table__row\">\n {columns.map((column) => (\n <th\n key={column.id}\n className=\"table__header\"\n scope=\"col\"\n >\n {column.header}\n </th>\n ))}\n </tr>\n </thead>\n\n {children}\n </table>\n );\n};\n\nTable.Body = TableBody;\nTable.Row = TableRow;\nTable.Cell = TableCell;\n\nexport default Table;\n"]}
1
+ {"version":3,"sources":["../../../src/components/table/table.tsx"],"names":["classnames","jsx","jsxs"],"mappings":"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","file":"table.cjs","sourcesContent":["import React from 'react';\n\nimport './table.css';\nimport { classnames } from '../helpers/classnames';\n\nexport type TableColumnWidth =\n | {\n type: 'auto';\n }\n | {\n type: 'max';\n }\n | {\n type: 'fraction';\n value: number;\n }\n | {\n type: 'min';\n }\n | {\n type: 'fixed';\n value: string;\n };\n\nexport type TableCellStatus =\n | 'good'\n | 'semi-good'\n | 'med'\n | 'semi-bad'\n | 'bad';\n\nexport interface TableColumn {\n id: React.Key;\n header: React.ReactNode;\n width?: TableColumnWidth;\n}\n\nexport interface TableProps\n extends React.TableHTMLAttributes<HTMLTableElement> {\n columns: TableColumn[];\n}\n\nexport interface TableBodyProps\n extends React.HTMLAttributes<HTMLTableSectionElement> {}\n\nexport interface TableRowProps\n extends React.HTMLAttributes<HTMLTableRowElement> {}\n\nexport interface TableCellProps\n extends React.TdHTMLAttributes<HTMLTableCellElement> {\n status?: TableCellStatus;\n}\n\nconst getFractionTotal = (\n columns: TableColumn[],\n) =>\n columns.reduce((total, column) => {\n if (\n column.width?.type !== 'fraction' ||\n column.width.value <= 0\n ) {\n return total;\n }\n\n return total + column.width.value;\n }, 0);\n\nconst getFractionPercentage = (\n value: number,\n total: number,\n) =>\n Number(\n ((value / total) * 100).toFixed(6),\n );\n\nconst getColumnWidth = (\n width: TableColumnWidth | undefined,\n fractionTotal: number,\n): React.CSSProperties['width'] => {\n if (!width || width.type === 'auto') {\n return undefined;\n }\n\n if (width.type === 'min') {\n return '1%';\n }\n\n if (width.type === 'max') {\n return '100%';\n }\n\n if (width.type === 'fixed') {\n return width.value;\n }\n\n if (\n width.value <= 0 ||\n fractionTotal <= 0\n ) {\n return undefined;\n }\n\n return `${getFractionPercentage(\n width.value,\n fractionTotal,\n )}%`;\n};\n\nconst TableBody: React.FC<\n TableBodyProps\n> = ({\n className = '',\n ...props\n}) => {\n const classes = classnames(\n 'table__body',\n className,\n {},\n );\n\n return (\n <tbody\n className={classes}\n {...props}\n />\n );\n};\n\nconst TableRow: React.FC<\n TableRowProps\n> = ({\n className = '',\n ...props\n}) => {\n const classes = classnames(\n 'table__row',\n className,\n {},\n );\n\n return (\n <tr\n className={classes}\n {...props}\n />\n );\n};\n\nconst TableCell: React.FC<\n TableCellProps\n> = ({\n status,\n className = '',\n children,\n ...props\n}) => {\n const classes = classnames(\n 'table__cell',\n className,\n {\n 'table__cell--status':\n status !== undefined,\n 'table__cell--good':\n status === 'good',\n 'table__cell--semi-good':\n status === 'semi-good',\n 'table__cell--med':\n status === 'med',\n 'table__cell--semi-bad':\n status === 'semi-bad',\n 'table__cell--bad':\n status === 'bad',\n },\n );\n\n if (!status) {\n return (\n <td\n className={classes}\n {...props}\n >\n {children}\n </td>\n );\n }\n\n return (\n <td\n className={classes}\n {...props}\n >\n <span className=\"table__cell-status\">\n {children}\n </span>\n </td>\n );\n};\n\ninterface TableComponent\n extends React.FC<TableProps> {\n Body: typeof TableBody;\n Row: typeof TableRow;\n Cell: typeof TableCell;\n}\n\nconst Table: TableComponent = ({\n columns,\n className = '',\n children,\n ...props\n}) => {\n const classes = classnames(\n 'table',\n className,\n {},\n );\n\n const fractionTotal =\n getFractionTotal(columns);\n\n return (\n <table\n className={classes}\n {...props}\n >\n <colgroup>\n {columns.map((column) => (\n <col\n key={column.id}\n style={{\n width: getColumnWidth(\n column.width,\n fractionTotal,\n ),\n }}\n />\n ))}\n </colgroup>\n\n <thead className=\"table__head\">\n <tr className=\"table__row\">\n {columns.map((column) => (\n <th\n key={column.id}\n className=\"table__header\"\n scope=\"col\"\n >\n {column.header}\n </th>\n ))}\n </tr>\n </thead>\n\n {children}\n </table>\n );\n};\n\nTable.Body = TableBody;\nTable.Row = TableRow;\nTable.Cell = TableCell;\n\nexport default Table;\n"]}
@@ -3,6 +3,8 @@
3
3
  --table-color: var(--color-text);
4
4
  --table-border-color: var(--color-line-grid);
5
5
 
6
+ color: var(--table-color);
7
+
6
8
  /* typography */
7
9
  --table-font-family: var(--font-h4-family);
8
10
  --table-font-size: var(--font-h4);
@@ -149,9 +151,126 @@
149
151
  /* motion */
150
152
  }
151
153
 
154
+ .table__cell--status {
155
+ /* color */
156
+ background-color:
157
+ var(--table-cell-status-color);
158
+
159
+ /* typography */
160
+
161
+ /* size */
162
+ padding: 0;
163
+
164
+ /* border */
165
+
166
+ /* depth */
167
+
168
+ /* motion */
169
+ }
170
+
171
+ .table__cell--status:first-child {
172
+ /* color */
173
+ background:
174
+ linear-gradient(
175
+ to right,
176
+ transparent
177
+ var(--padding-table-horz),
178
+ var(--table-cell-status-color)
179
+ var(--padding-table-horz)
180
+ );
181
+
182
+ /* typography */
183
+
184
+ /* size */
185
+ padding-left: var(--padding-table-horz);
186
+
187
+ /* border */
188
+
189
+ /* depth */
190
+
191
+ /* motion */
192
+ }
193
+
194
+ .table__cell--status:last-child {
195
+ /* color */
196
+ background:
197
+ linear-gradient(
198
+ to left,
199
+ transparent
200
+ var(--padding-table-horz),
201
+ var(--table-cell-status-color)
202
+ var(--padding-table-horz)
203
+ );
204
+
205
+ /* typography */
206
+
207
+ /* size */
208
+ padding-right: var(--padding-table-horz);
209
+
210
+ /* border */
211
+
212
+ /* depth */
213
+
214
+ /* motion */
215
+ }
216
+
217
+ .table__cell--status:first-child:last-child {
218
+ /* color */
219
+ background:
220
+ linear-gradient(
221
+ to right,
222
+ transparent
223
+ var(--padding-table-horz),
224
+ var(--table-cell-status-color)
225
+ var(--padding-table-horz),
226
+ var(--table-cell-status-color)
227
+ calc(
228
+ 100% -
229
+ var(--padding-table-horz)
230
+ ),
231
+ transparent
232
+ calc(
233
+ 100% -
234
+ var(--padding-table-horz)
235
+ )
236
+ );
237
+
238
+ /* typography */
239
+
240
+ /* size */
241
+ padding-inline: var(--padding-table-horz);
242
+
243
+ /* border */
244
+
245
+ /* depth */
246
+
247
+ /* motion */
248
+ }
249
+
250
+ .table__cell-status {
251
+ /* color */
252
+
253
+ /* typography */
254
+
255
+ /* size */
256
+ display: block;
257
+ padding-block: var(--table-row-gap);
258
+ padding-inline: calc(
259
+ var(--table-column-gap) / 2
260
+ );
261
+
262
+ /* border */
263
+
264
+ /* depth */
265
+
266
+ /* motion */
267
+ }
268
+
152
269
  .table__cell--good {
153
270
  /* color */
154
- background-color: var(--color-good);
271
+ --table-cell-status-color:
272
+ var(--color-good);
273
+
155
274
  color: var(--color-text-primary-1);
156
275
 
157
276
  /* typography */
@@ -167,7 +286,9 @@
167
286
 
168
287
  .table__cell--semi-good {
169
288
  /* color */
170
- background-color: var(--color-semi-good);
289
+ --table-cell-status-color:
290
+ var(--color-semi-good);
291
+
171
292
  color: var(--color-text-primary-1);
172
293
 
173
294
  /* typography */
@@ -183,7 +304,8 @@
183
304
 
184
305
  .table__cell--med {
185
306
  /* color */
186
- background-color: var(--color-med);
307
+ --table-cell-status-color:
308
+ var(--color-med);
187
309
 
188
310
  /* typography */
189
311
 
@@ -198,7 +320,8 @@
198
320
 
199
321
  .table__cell--semi-bad {
200
322
  /* color */
201
- background-color: var(--color-semi-bad);
323
+ --table-cell-status-color:
324
+ var(--color-semi-bad);
202
325
 
203
326
  /* typography */
204
327
 
@@ -213,7 +336,8 @@
213
336
 
214
337
  .table__cell--bad {
215
338
  /* color */
216
- background-color: var(--color-bad);
339
+ --table-cell-status-color:
340
+ var(--color-bad);
217
341
 
218
342
  /* typography */
219
343
 
@@ -69,12 +69,14 @@ const TableRow = ({
69
69
  const TableCell = ({
70
70
  status,
71
71
  className = "",
72
+ children,
72
73
  ...props
73
74
  }) => {
74
75
  const classes = classnames(
75
76
  "table__cell",
76
77
  className,
77
78
  {
79
+ "table__cell--status": status !== void 0,
78
80
  "table__cell--good": status === "good",
79
81
  "table__cell--semi-good": status === "semi-good",
80
82
  "table__cell--med": status === "med",
@@ -82,11 +84,22 @@ const TableCell = ({
82
84
  "table__cell--bad": status === "bad"
83
85
  }
84
86
  );
87
+ if (!status) {
88
+ return /* @__PURE__ */ jsx(
89
+ "td",
90
+ {
91
+ className: classes,
92
+ ...props,
93
+ children
94
+ }
95
+ );
96
+ }
85
97
  return /* @__PURE__ */ jsx(
86
98
  "td",
87
99
  {
88
100
  className: classes,
89
- ...props
101
+ ...props,
102
+ children: /* @__PURE__ */ jsx("span", { className: "table__cell-status", children })
90
103
  }
91
104
  );
92
105
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/table/table.tsx"],"names":[],"mappings":"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","file":"table.js","sourcesContent":["import React from 'react';\n\nimport './table.css';\nimport { classnames } from '../helpers/classnames';\n\nexport type TableColumnWidth =\n | {\n type: 'auto';\n }\n | {\n type: 'max';\n }\n | {\n type: 'fraction';\n value: number;\n }\n | {\n type: 'min';\n }\n | {\n type: 'fixed';\n value: string;\n };\n\nexport type TableCellStatus =\n | 'good'\n | 'semi-good'\n | 'med'\n | 'semi-bad'\n | 'bad';\n\nexport interface TableColumn {\n id: React.Key;\n header: React.ReactNode;\n width?: TableColumnWidth;\n}\n\nexport interface TableProps\n extends React.TableHTMLAttributes<HTMLTableElement> {\n columns: TableColumn[];\n}\n\nexport interface TableBodyProps\n extends React.HTMLAttributes<HTMLTableSectionElement> {}\n\nexport interface TableRowProps\n extends React.HTMLAttributes<HTMLTableRowElement> {}\n\nexport interface TableCellProps\n extends React.TdHTMLAttributes<HTMLTableCellElement> {\n status?: TableCellStatus;\n}\n\nconst getFractionTotal = (\n columns: TableColumn[],\n) =>\n columns.reduce((total, column) => {\n if (\n column.width?.type !== 'fraction' ||\n column.width.value <= 0\n ) {\n return total;\n }\n\n return total + column.width.value;\n }, 0);\n\nconst getFractionPercentage = (\n value: number,\n total: number,\n) =>\n Number(\n ((value / total) * 100).toFixed(6),\n );\n\nconst getColumnWidth = (\n width: TableColumnWidth | undefined,\n fractionTotal: number,\n): React.CSSProperties['width'] => {\n if (!width || width.type === 'auto') {\n return undefined;\n }\n\n if (width.type === 'min') {\n return '1%';\n }\n\n if (width.type === 'max') {\n return '100%';\n }\n\n if (width.type === 'fixed') {\n return width.value;\n }\n\n if (\n width.value <= 0 ||\n fractionTotal <= 0\n ) {\n return undefined;\n }\n\n return `${getFractionPercentage(\n width.value,\n fractionTotal,\n )}%`;\n};\n\nconst TableBody: React.FC<\n TableBodyProps\n> = ({\n className = '',\n ...props\n}) => {\n const classes = classnames(\n 'table__body',\n className,\n {},\n );\n\n return (\n <tbody\n className={classes}\n {...props}\n />\n );\n};\n\nconst TableRow: React.FC<\n TableRowProps\n> = ({\n className = '',\n ...props\n}) => {\n const classes = classnames(\n 'table__row',\n className,\n {},\n );\n\n return (\n <tr\n className={classes}\n {...props}\n />\n );\n};\n\nconst TableCell: React.FC<\n TableCellProps\n> = ({\n status,\n className = '',\n ...props\n}) => {\n const classes = classnames(\n 'table__cell',\n className,\n {\n 'table__cell--good':\n status === 'good',\n 'table__cell--semi-good':\n status === 'semi-good',\n 'table__cell--med':\n status === 'med',\n 'table__cell--semi-bad':\n status === 'semi-bad',\n 'table__cell--bad':\n status === 'bad',\n },\n );\n\n return (\n <td\n className={classes}\n {...props}\n />\n );\n};\n\ninterface TableComponent\n extends React.FC<TableProps> {\n Body: typeof TableBody;\n Row: typeof TableRow;\n Cell: typeof TableCell;\n}\n\nconst Table: TableComponent = ({\n columns,\n className = '',\n children,\n ...props\n}) => {\n const classes = classnames(\n 'table',\n className,\n {},\n );\n\n const fractionTotal =\n getFractionTotal(columns);\n\n return (\n <table\n className={classes}\n {...props}\n >\n <colgroup>\n {columns.map((column) => (\n <col\n key={column.id}\n style={{\n width: getColumnWidth(\n column.width,\n fractionTotal,\n ),\n }}\n />\n ))}\n </colgroup>\n\n <thead className=\"table__head\">\n <tr className=\"table__row\">\n {columns.map((column) => (\n <th\n key={column.id}\n className=\"table__header\"\n scope=\"col\"\n >\n {column.header}\n </th>\n ))}\n </tr>\n </thead>\n\n {children}\n </table>\n );\n};\n\nTable.Body = TableBody;\nTable.Row = TableRow;\nTable.Cell = TableCell;\n\nexport default Table;\n"]}
1
+ {"version":3,"sources":["../../../src/components/table/table.tsx"],"names":[],"mappings":"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","file":"table.js","sourcesContent":["import React from 'react';\n\nimport './table.css';\nimport { classnames } from '../helpers/classnames';\n\nexport type TableColumnWidth =\n | {\n type: 'auto';\n }\n | {\n type: 'max';\n }\n | {\n type: 'fraction';\n value: number;\n }\n | {\n type: 'min';\n }\n | {\n type: 'fixed';\n value: string;\n };\n\nexport type TableCellStatus =\n | 'good'\n | 'semi-good'\n | 'med'\n | 'semi-bad'\n | 'bad';\n\nexport interface TableColumn {\n id: React.Key;\n header: React.ReactNode;\n width?: TableColumnWidth;\n}\n\nexport interface TableProps\n extends React.TableHTMLAttributes<HTMLTableElement> {\n columns: TableColumn[];\n}\n\nexport interface TableBodyProps\n extends React.HTMLAttributes<HTMLTableSectionElement> {}\n\nexport interface TableRowProps\n extends React.HTMLAttributes<HTMLTableRowElement> {}\n\nexport interface TableCellProps\n extends React.TdHTMLAttributes<HTMLTableCellElement> {\n status?: TableCellStatus;\n}\n\nconst getFractionTotal = (\n columns: TableColumn[],\n) =>\n columns.reduce((total, column) => {\n if (\n column.width?.type !== 'fraction' ||\n column.width.value <= 0\n ) {\n return total;\n }\n\n return total + column.width.value;\n }, 0);\n\nconst getFractionPercentage = (\n value: number,\n total: number,\n) =>\n Number(\n ((value / total) * 100).toFixed(6),\n );\n\nconst getColumnWidth = (\n width: TableColumnWidth | undefined,\n fractionTotal: number,\n): React.CSSProperties['width'] => {\n if (!width || width.type === 'auto') {\n return undefined;\n }\n\n if (width.type === 'min') {\n return '1%';\n }\n\n if (width.type === 'max') {\n return '100%';\n }\n\n if (width.type === 'fixed') {\n return width.value;\n }\n\n if (\n width.value <= 0 ||\n fractionTotal <= 0\n ) {\n return undefined;\n }\n\n return `${getFractionPercentage(\n width.value,\n fractionTotal,\n )}%`;\n};\n\nconst TableBody: React.FC<\n TableBodyProps\n> = ({\n className = '',\n ...props\n}) => {\n const classes = classnames(\n 'table__body',\n className,\n {},\n );\n\n return (\n <tbody\n className={classes}\n {...props}\n />\n );\n};\n\nconst TableRow: React.FC<\n TableRowProps\n> = ({\n className = '',\n ...props\n}) => {\n const classes = classnames(\n 'table__row',\n className,\n {},\n );\n\n return (\n <tr\n className={classes}\n {...props}\n />\n );\n};\n\nconst TableCell: React.FC<\n TableCellProps\n> = ({\n status,\n className = '',\n children,\n ...props\n}) => {\n const classes = classnames(\n 'table__cell',\n className,\n {\n 'table__cell--status':\n status !== undefined,\n 'table__cell--good':\n status === 'good',\n 'table__cell--semi-good':\n status === 'semi-good',\n 'table__cell--med':\n status === 'med',\n 'table__cell--semi-bad':\n status === 'semi-bad',\n 'table__cell--bad':\n status === 'bad',\n },\n );\n\n if (!status) {\n return (\n <td\n className={classes}\n {...props}\n >\n {children}\n </td>\n );\n }\n\n return (\n <td\n className={classes}\n {...props}\n >\n <span className=\"table__cell-status\">\n {children}\n </span>\n </td>\n );\n};\n\ninterface TableComponent\n extends React.FC<TableProps> {\n Body: typeof TableBody;\n Row: typeof TableRow;\n Cell: typeof TableCell;\n}\n\nconst Table: TableComponent = ({\n columns,\n className = '',\n children,\n ...props\n}) => {\n const classes = classnames(\n 'table',\n className,\n {},\n );\n\n const fractionTotal =\n getFractionTotal(columns);\n\n return (\n <table\n className={classes}\n {...props}\n >\n <colgroup>\n {columns.map((column) => (\n <col\n key={column.id}\n style={{\n width: getColumnWidth(\n column.width,\n fractionTotal,\n ),\n }}\n />\n ))}\n </colgroup>\n\n <thead className=\"table__head\">\n <tr className=\"table__row\">\n {columns.map((column) => (\n <th\n key={column.id}\n className=\"table__header\"\n scope=\"col\"\n >\n {column.header}\n </th>\n ))}\n </tr>\n </thead>\n\n {children}\n </table>\n );\n};\n\nTable.Body = TableBody;\nTable.Row = TableRow;\nTable.Cell = TableCell;\n\nexport default Table;\n"]}
@@ -16,7 +16,6 @@
16
16
  /* size */
17
17
  --video-width: 100%;
18
18
  --video-aspect-ratio: 16 / 9;
19
- --video-padding: var(--padding-container);
20
19
  --video-controls-gap: var(--margin-icon);
21
20
  --video-volume-height: 400px;
22
21
  --video-time-digit-width: 0.6em;
@@ -26,7 +25,6 @@
26
25
  position: relative;
27
26
  width: var(--video-width);
28
27
  aspect-ratio: var(--video-aspect-ratio);
29
- padding: var(--video-padding);
30
28
 
31
29
  /* border */
32
30
  --video-radius: var(--radius-container);
@@ -78,6 +76,11 @@
78
76
  }
79
77
 
80
78
  .video__cover {
79
+ /* color */
80
+
81
+ /* typography */
82
+
83
+ /* size */
81
84
  position: absolute;
82
85
  inset: 0;
83
86
  z-index: 1;
@@ -86,6 +89,12 @@
86
89
  height: 100%;
87
90
  object-fit: cover;
88
91
  pointer-events: none;
92
+
93
+ /* border */
94
+
95
+ /* depth */
96
+
97
+ /* motion */
89
98
  }
90
99
 
91
100
  .video__main-action {
@@ -109,20 +118,32 @@
109
118
 
110
119
  .video__controls {
111
120
  /* color */
121
+ background: color-mix(
122
+ in srgb,
123
+ var(--color-bg-toolbar)
124
+ calc(var(--tone-value-toolbar) * 100%),
125
+ transparent
126
+ );
112
127
 
113
128
  /* typography */
114
129
 
115
130
  /* size */
116
131
  position: absolute;
117
- right: var(--video-padding);
118
- bottom: var(--video-padding);
119
- left: var(--video-padding);
132
+ right: 0;
133
+ bottom: 0;
134
+ left: 0;
120
135
  z-index: 1;
121
136
  display: flex;
122
137
  align-items: center;
123
138
  gap: var(--video-controls-gap);
139
+ padding: var(--padding-toolbar);
124
140
 
125
141
  /* border */
142
+ border-radius:
143
+ 0
144
+ 0
145
+ var(--video-radius)
146
+ var(--video-radius);
126
147
 
127
148
  /* depth */
128
149
 
@@ -233,9 +254,19 @@
233
254
  }
234
255
 
235
256
  .video__progress {
257
+ /* color */
258
+
259
+ /* typography */
260
+
236
261
  /* size */
237
262
  flex: 1;
238
263
  min-width: 0;
264
+
265
+ /* border */
266
+
267
+ /* depth */
268
+
269
+ /* motion */
239
270
  }
240
271
 
241
272
  .video__sound-control {
@@ -275,16 +306,36 @@
275
306
  }
276
307
 
277
308
  .video:fullscreen {
309
+ /* color */
310
+
311
+ /* typography */
312
+
278
313
  /* size */
279
314
  width: 100vw;
280
315
  height: 100vh;
281
316
  aspect-ratio: auto;
282
317
 
283
318
  /* border */
284
- border-radius: 0;
319
+ --video-radius: 0;
320
+
321
+ border-radius: var(--video-radius);
322
+
323
+ /* depth */
324
+
325
+ /* motion */
285
326
  }
286
327
 
287
328
  .video:fullscreen .video__media {
329
+ /* color */
330
+
331
+ /* typography */
332
+
288
333
  /* size */
289
334
  object-fit: contain;
335
+
336
+ /* border */
337
+
338
+ /* depth */
339
+
340
+ /* motion */
290
341
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jvetrau-ds",
3
- "version": "0.2.37",
3
+ "version": "0.2.40",
4
4
  "description": "Multi-brand React design system with semantic tokens",
5
5
  "license": "UNLICENSED",
6
6
  "type": "module",