jvetrau-ds 0.2.39 → 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 +2 -0
  2. package/components/table/table.cjs +7 -13
  3. package/components/table/table.cjs.map +1 -1
  4. package/components/table/table.css +70 -10
  5. package/components/table/table.js +7 -13
  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 +129 -16
  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
@@ -90,6 +90,8 @@
90
90
  var(--font-body-letter-spacing);
91
91
 
92
92
  /* size */
93
+ --course-outline-group-gap:
94
+ var(--margin-item);
93
95
 
94
96
  /* border */
95
97
 
@@ -78,7 +78,12 @@ const TableCell = ({
78
78
  "table__cell",
79
79
  className,
80
80
  {
81
- "table__cell--status": status !== void 0
81
+ "table__cell--status": status !== void 0,
82
+ "table__cell--good": status === "good",
83
+ "table__cell--semi-good": status === "semi-good",
84
+ "table__cell--med": status === "med",
85
+ "table__cell--semi-bad": status === "semi-bad",
86
+ "table__cell--bad": status === "bad"
82
87
  }
83
88
  );
84
89
  if (!status) {
@@ -91,23 +96,12 @@ const TableCell = ({
91
96
  }
92
97
  );
93
98
  }
94
- const statusClasses = classnames.classnames(
95
- "table__cell-status",
96
- "",
97
- {
98
- "table__cell-status--good": status === "good",
99
- "table__cell-status--semi-good": status === "semi-good",
100
- "table__cell-status--med": status === "med",
101
- "table__cell-status--semi-bad": status === "semi-bad",
102
- "table__cell-status--bad": status === "bad"
103
- }
104
- );
105
99
  return /* @__PURE__ */ jsxRuntime.jsx(
106
100
  "td",
107
101
  {
108
102
  className: classes,
109
103
  ...props,
110
- children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: statusClasses, children })
104
+ children: /* @__PURE__ */ jsxRuntime.jsx("span", { className: "table__cell-status", children })
111
105
  }
112
106
  );
113
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 children,\n ...props\n}) => {\n const classes = classnames(\n 'table__cell',\n className,\n {\n 'table__cell--status':\n status !== undefined,\n },\n );\n\n if (!status) {\n return (\n <td\n className={classes}\n {...props}\n >\n {children}\n </td>\n );\n }\n\n const statusClasses = classnames(\n 'table__cell-status',\n '',\n {\n 'table__cell-status--good':\n status === 'good',\n 'table__cell-status--semi-good':\n status === 'semi-good',\n 'table__cell-status--med':\n status === 'med',\n 'table__cell-status--semi-bad':\n status === 'semi-bad',\n 'table__cell-status--bad':\n status === 'bad',\n },\n );\n\n return (\n <td\n className={classes}\n {...props}\n >\n <span className={statusClasses}>\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"]}
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);
@@ -151,6 +153,8 @@
151
153
 
152
154
  .table__cell--status {
153
155
  /* color */
156
+ background-color:
157
+ var(--table-cell-status-color);
154
158
 
155
159
  /* typography */
156
160
 
@@ -166,6 +170,14 @@
166
170
 
167
171
  .table__cell--status:first-child {
168
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
+ );
169
181
 
170
182
  /* typography */
171
183
 
@@ -181,6 +193,14 @@
181
193
 
182
194
  .table__cell--status:last-child {
183
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
+ );
184
204
 
185
205
  /* typography */
186
206
 
@@ -194,6 +214,39 @@
194
214
  /* motion */
195
215
  }
196
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
+
197
250
  .table__cell-status {
198
251
  /* color */
199
252
 
@@ -213,9 +266,11 @@
213
266
  /* motion */
214
267
  }
215
268
 
216
- .table__cell-status--good {
269
+ .table__cell--good {
217
270
  /* color */
218
- background-color: var(--color-good);
271
+ --table-cell-status-color:
272
+ var(--color-good);
273
+
219
274
  color: var(--color-text-primary-1);
220
275
 
221
276
  /* typography */
@@ -229,9 +284,11 @@
229
284
  /* motion */
230
285
  }
231
286
 
232
- .table__cell-status--semi-good {
287
+ .table__cell--semi-good {
233
288
  /* color */
234
- background-color: var(--color-semi-good);
289
+ --table-cell-status-color:
290
+ var(--color-semi-good);
291
+
235
292
  color: var(--color-text-primary-1);
236
293
 
237
294
  /* typography */
@@ -245,9 +302,10 @@
245
302
  /* motion */
246
303
  }
247
304
 
248
- .table__cell-status--med {
305
+ .table__cell--med {
249
306
  /* color */
250
- background-color: var(--color-med);
307
+ --table-cell-status-color:
308
+ var(--color-med);
251
309
 
252
310
  /* typography */
253
311
 
@@ -260,9 +318,10 @@
260
318
  /* motion */
261
319
  }
262
320
 
263
- .table__cell-status--semi-bad {
321
+ .table__cell--semi-bad {
264
322
  /* color */
265
- background-color: var(--color-semi-bad);
323
+ --table-cell-status-color:
324
+ var(--color-semi-bad);
266
325
 
267
326
  /* typography */
268
327
 
@@ -275,9 +334,10 @@
275
334
  /* motion */
276
335
  }
277
336
 
278
- .table__cell-status--bad {
337
+ .table__cell--bad {
279
338
  /* color */
280
- background-color: var(--color-bad);
339
+ --table-cell-status-color:
340
+ var(--color-bad);
281
341
 
282
342
  /* typography */
283
343
 
@@ -76,7 +76,12 @@ const TableCell = ({
76
76
  "table__cell",
77
77
  className,
78
78
  {
79
- "table__cell--status": status !== void 0
79
+ "table__cell--status": status !== void 0,
80
+ "table__cell--good": status === "good",
81
+ "table__cell--semi-good": status === "semi-good",
82
+ "table__cell--med": status === "med",
83
+ "table__cell--semi-bad": status === "semi-bad",
84
+ "table__cell--bad": status === "bad"
80
85
  }
81
86
  );
82
87
  if (!status) {
@@ -89,23 +94,12 @@ const TableCell = ({
89
94
  }
90
95
  );
91
96
  }
92
- const statusClasses = classnames(
93
- "table__cell-status",
94
- "",
95
- {
96
- "table__cell-status--good": status === "good",
97
- "table__cell-status--semi-good": status === "semi-good",
98
- "table__cell-status--med": status === "med",
99
- "table__cell-status--semi-bad": status === "semi-bad",
100
- "table__cell-status--bad": status === "bad"
101
- }
102
- );
103
97
  return /* @__PURE__ */ jsx(
104
98
  "td",
105
99
  {
106
100
  className: classes,
107
101
  ...props,
108
- children: /* @__PURE__ */ jsx("span", { className: statusClasses, children })
102
+ children: /* @__PURE__ */ jsx("span", { className: "table__cell-status", children })
109
103
  }
110
104
  );
111
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 children,\n ...props\n}) => {\n const classes = classnames(\n 'table__cell',\n className,\n {\n 'table__cell--status':\n status !== undefined,\n },\n );\n\n if (!status) {\n return (\n <td\n className={classes}\n {...props}\n >\n {children}\n </td>\n );\n }\n\n const statusClasses = classnames(\n 'table__cell-status',\n '',\n {\n 'table__cell-status--good':\n status === 'good',\n 'table__cell-status--semi-good':\n status === 'semi-good',\n 'table__cell-status--med':\n status === 'med',\n 'table__cell-status--semi-bad':\n status === 'semi-bad',\n 'table__cell-status--bad':\n status === 'bad',\n },\n );\n\n return (\n <td\n className={classes}\n {...props}\n >\n <span className={statusClasses}>\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"]}
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.39",
3
+ "version": "0.2.40",
4
4
  "description": "Multi-brand React design system with semantic tokens",
5
5
  "license": "UNLICENSED",
6
6
  "type": "module",