create-yss-spec 1.1.2 → 1.1.3

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 (239) hide show
  1. package/package.json +1 -1
  2. package/template/.codex/skills/data-analytics/.app.json +84 -0
  3. package/template/.codex/skills/data-analytics/.codex-plugin/plugin.json +66 -0
  4. package/template/.codex/skills/data-analytics/.mcp.json +30 -0
  5. package/template/.codex/skills/data-analytics/AGENTS.md +20 -0
  6. package/template/.codex/skills/data-analytics/DEPENDENCIES.MD +27 -0
  7. package/template/.codex/skills/data-analytics/README.md +60 -0
  8. package/template/.codex/skills/data-analytics/assets/datascience-artifact-widget.html +16 -0
  9. package/template/.codex/skills/data-analytics/assets/datascience-artifact-widget.html.gz.b64.part001 +1 -0
  10. package/template/.codex/skills/data-analytics/assets/datascience-artifact-widget.html.gz.b64.part002 +1 -0
  11. package/template/.codex/skills/data-analytics/assets/datascience-artifact-widget.html.gz.b64.part003 +1 -0
  12. package/template/.codex/skills/data-analytics/assets/datascience-artifact-widget.html.gz.b64.part004 +1 -0
  13. package/template/.codex/skills/data-analytics/assets/datascience-artifact-widget.html.gz.b64.part005 +1 -0
  14. package/template/.codex/skills/data-analytics/assets/datascience-artifact-widget.html.gz.b64.part006 +1 -0
  15. package/template/.codex/skills/data-analytics/assets/datascience-chart-widget.html +16 -0
  16. package/template/.codex/skills/data-analytics/assets/datascience-chart-widget.html.gz.b64.part001 +1 -0
  17. package/template/.codex/skills/data-analytics/assets/datascience-chart-widget.html.gz.b64.part002 +1 -0
  18. package/template/.codex/skills/data-analytics/assets/datascience-chart-widget.html.gz.b64.part003 +1 -0
  19. package/template/.codex/skills/data-analytics/assets/datascience-chart-widget.html.gz.b64.part004 +1 -0
  20. package/template/.codex/skills/data-analytics/assets/datascience-chart-widget.html.gz.b64.part005 +1 -0
  21. package/template/.codex/skills/data-analytics/assets/datascience-chart-widget.html.gz.b64.part006 +1 -0
  22. package/template/.codex/skills/data-analytics/assets/datascience-chart-widget.html.gz.b64.part007 +1 -0
  23. package/template/.codex/skills/data-analytics/assets/datascience-small.svg +5 -0
  24. package/template/.codex/skills/data-analytics/assets/datascience-table-widget.html +16 -0
  25. package/template/.codex/skills/data-analytics/assets/datascience-table-widget.html.gz.b64.part001 +1 -0
  26. package/template/.codex/skills/data-analytics/assets/datascience-table-widget.html.gz.b64.part002 +1 -0
  27. package/template/.codex/skills/data-analytics/assets/datascience-table-widget.html.gz.b64.part003 +1 -0
  28. package/template/.codex/skills/data-analytics/assets/datascience-table-widget.html.gz.b64.part004 +1 -0
  29. package/template/.codex/skills/data-analytics/assets/datascience.png +0 -0
  30. package/template/.codex/skills/data-analytics/assets/datascience.svg +10 -0
  31. package/template/.codex/skills/data-analytics/mcp/server.cjs +2963 -0
  32. package/template/.codex/skills/data-analytics/package-lock.json +3048 -0
  33. package/template/.codex/skills/data-analytics/package.json +43 -0
  34. package/template/.codex/skills/data-analytics/scripts/normalize-widget-assets.mjs +75 -0
  35. package/template/.codex/skills/data-analytics/skills/analyze-data-quality/SKILL.md +160 -0
  36. package/template/.codex/skills/data-analytics/skills/analyze-data-quality/agents/openai.yaml +6 -0
  37. package/template/.codex/skills/data-analytics/skills/build-dashboard/SKILL.md +148 -0
  38. package/template/.codex/skills/data-analytics/skills/build-dashboard/agents/openai.yaml +6 -0
  39. package/template/.codex/skills/data-analytics/skills/build-dashboard/specifications/bi-platform-dashboard.md +18 -0
  40. package/template/.codex/skills/data-analytics/skills/build-dashboard/specifications/html-dashboard.md +24 -0
  41. package/template/.codex/skills/data-analytics/skills/build-dashboard/specifications/mcp-artifact-dashboard.md +71 -0
  42. package/template/.codex/skills/data-analytics/skills/build-dashboard/specifications/streamlit-dashboard.md +85 -0
  43. package/template/.codex/skills/data-analytics/skills/build-report/SKILL.md +207 -0
  44. package/template/.codex/skills/data-analytics/skills/build-report/agents/openai.yaml +6 -0
  45. package/template/.codex/skills/data-analytics/skills/build-report/assets/executive-report-shell.html +70 -0
  46. package/template/.codex/skills/data-analytics/skills/build-report/assets/technical-report-shell.html +66 -0
  47. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/SKILL.md +118 -0
  48. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/agents/openai.yaml +6 -0
  49. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/scripts/report_to_google_doc/__init__.py +1 -0
  50. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/scripts/report_to_google_doc/cli.py +57 -0
  51. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/scripts/report_to_google_doc/constants.py +61 -0
  52. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/scripts/report_to_google_doc/docx_writer.py +362 -0
  53. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/scripts/report_to_google_doc/html_parser.py +829 -0
  54. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/scripts/report_to_google_doc/model.py +30 -0
  55. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/scripts/report_to_google_doc/plan.py +129 -0
  56. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/scripts/report_to_google_doc/quality.py +374 -0
  57. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/scripts/report_to_google_doc/rendering.py +613 -0
  58. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/scripts/report_to_google_doc/table_utils.py +54 -0
  59. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/scripts/report_to_google_doc/utils.py +16 -0
  60. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-doc/scripts/report_to_google_doc_plan.py +9 -0
  61. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-slides/SKILL.md +78 -0
  62. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-slides/agents/openai.yaml +6 -0
  63. package/template/.codex/skills/data-analytics/skills/build-report/report-to-google-slides/scripts/report_to_google_slides.py +2379 -0
  64. package/template/.codex/skills/data-analytics/skills/build-report/report-to-pdf/SKILL.md +88 -0
  65. package/template/.codex/skills/data-analytics/skills/build-report/report-to-pdf/agents/openai.yaml +6 -0
  66. package/template/.codex/skills/data-analytics/skills/build-report/specifications/executive-report.md +97 -0
  67. package/template/.codex/skills/data-analytics/skills/build-report/specifications/mcp-app-report.md +59 -0
  68. package/template/.codex/skills/data-analytics/skills/build-report/specifications/technical-report.md +75 -0
  69. package/template/.codex/skills/data-analytics/skills/design-kpis/SKILL.md +103 -0
  70. package/template/.codex/skills/data-analytics/skills/design-kpis/agents/openai.yaml +6 -0
  71. package/template/.codex/skills/data-analytics/skills/gather-business-context/SKILL.md +68 -0
  72. package/template/.codex/skills/data-analytics/skills/gather-business-context/agents/openai.yaml +6 -0
  73. package/template/.codex/skills/data-analytics/skills/index/SKILL.md +251 -0
  74. package/template/.codex/skills/data-analytics/skills/index/agents/openai.yaml +6 -0
  75. package/template/.codex/skills/data-analytics/skills/jupyter-notebooks/SKILL.md +131 -0
  76. package/template/.codex/skills/data-analytics/skills/jupyter-notebooks/agents/openai.yaml +6 -0
  77. package/template/.codex/skills/data-analytics/skills/kpi-reporting/SKILL.md +141 -0
  78. package/template/.codex/skills/data-analytics/skills/kpi-reporting/agents/openai.yaml +6 -0
  79. package/template/.codex/skills/data-analytics/skills/kpi-reporting/references/report-templates.md +32 -0
  80. package/template/.codex/skills/data-analytics/skills/market-sizing/SKILL.md +106 -0
  81. package/template/.codex/skills/data-analytics/skills/market-sizing/agents/openai.yaml +6 -0
  82. package/template/.codex/skills/data-analytics/skills/metric-diagnostics/SKILL.md +130 -0
  83. package/template/.codex/skills/data-analytics/skills/metric-diagnostics/agents/openai.yaml +6 -0
  84. package/template/.codex/skills/data-analytics/skills/product-business-analysis/SKILL.md +141 -0
  85. package/template/.codex/skills/data-analytics/skills/product-business-analysis/agents/openai.yaml +6 -0
  86. package/template/.codex/skills/data-analytics/skills/spreadsheets/SKILL.md +178 -0
  87. package/template/.codex/skills/data-analytics/skills/spreadsheets/agents/openai.yaml +9 -0
  88. package/template/.codex/skills/data-analytics/skills/spreadsheets/assets/file-spreadsheet.png +0 -0
  89. package/template/.codex/skills/data-analytics/skills/spreadsheets/charts.md +31 -0
  90. package/template/.codex/skills/data-analytics/skills/spreadsheets/references/artifact_tool_api.md +466 -0
  91. package/template/.codex/skills/data-analytics/skills/spreadsheets/style_guidelines.md +99 -0
  92. package/template/.codex/skills/data-analytics/skills/user-context/SKILL.md +195 -0
  93. package/template/.codex/skills/data-analytics/skills/user-context/agents/openai.yaml +6 -0
  94. package/template/.codex/skills/data-analytics/skills/user-context/plugin-author-config/automation-config.md +26 -0
  95. package/template/.codex/skills/data-analytics/skills/user-context/plugin-author-config/source-category-config.json +51 -0
  96. package/template/.codex/skills/data-analytics/skills/user-context/plugin-author-config/user-context-config.md +66 -0
  97. package/template/.codex/skills/data-analytics/skills/user-context/references/automation.md +69 -0
  98. package/template/.codex/skills/data-analytics/skills/user-context/references/onboarding-examples.md +204 -0
  99. package/template/.codex/skills/data-analytics/skills/user-context/references/onboarding-state-template.json +87 -0
  100. package/template/.codex/skills/data-analytics/skills/user-context/references/onboarding.md +497 -0
  101. package/template/.codex/skills/data-analytics/skills/user-context/references/semantic-layer/connector-playbook.md +74 -0
  102. package/template/.codex/skills/data-analytics/skills/user-context/references/semantic-layer/setup.md +65 -0
  103. package/template/.codex/skills/data-analytics/skills/user-context/references/semantic-layer/skill-template.md +160 -0
  104. package/template/.codex/skills/data-analytics/skills/user-context/references/semantic-layer/source-intake.md +75 -0
  105. package/template/.codex/skills/data-analytics/skills/user-context/references/semantic-layer/weekly-polling-automation.md +96 -0
  106. package/template/.codex/skills/data-analytics/skills/user-context/references/source-category-runtime.md +263 -0
  107. package/template/.codex/skills/data-analytics/skills/user-context/scripts/data_analytics_preflight.py +1460 -0
  108. package/template/.codex/skills/data-analytics/skills/user-context/scripts/init_user_context_state.py +128 -0
  109. package/template/.codex/skills/data-analytics/skills/user-context/scripts/reset_user_context_state.py +101 -0
  110. package/template/.codex/skills/data-analytics/skills/user-context/scripts/validate_user_context_preflight.py +499 -0
  111. package/template/.codex/skills/data-analytics/skills/user-context/tests/test_state_helpers.py +978 -0
  112. package/template/.codex/skills/data-analytics/skills/validate-data/SKILL.md +190 -0
  113. package/template/.codex/skills/data-analytics/skills/validate-data/agents/openai.yaml +6 -0
  114. package/template/.codex/skills/data-analytics/skills/visualize-data/SKILL.md +157 -0
  115. package/template/.codex/skills/data-analytics/skills/visualize-data/agents/openai.yaml +6 -0
  116. package/template/.codex/skills/data-analytics/skills/visualize-data/references/seaborn-templates.md +774 -0
  117. package/template/.codex/skills/data-analytics/src/DESIGN.md +222 -0
  118. package/template/.codex/skills/data-analytics/src/analytics-app/App.tsx +3666 -0
  119. package/template/.codex/skills/data-analytics/src/analytics-app/analytics-layout.test.mjs +136 -0
  120. package/template/.codex/skills/data-analytics/src/analytics-app/charting/ChartFrame.tsx +54 -0
  121. package/template/.codex/skills/data-analytics/src/analytics-app/charting/ChartLegend.tsx +96 -0
  122. package/template/.codex/skills/data-analytics/src/analytics-app/charting/ChartRenderer.tsx +1647 -0
  123. package/template/.codex/skills/data-analytics/src/analytics-app/charting/ChartTooltip.tsx +245 -0
  124. package/template/.codex/skills/data-analytics/src/analytics-app/charting/chart-app-helpers.tsx +462 -0
  125. package/template/.codex/skills/data-analytics/src/analytics-app/charting/chart-capabilities.ts +107 -0
  126. package/template/.codex/skills/data-analytics/src/analytics-app/charting/chart-compatibility.ts +164 -0
  127. package/template/.codex/skills/data-analytics/src/analytics-app/charting/chart-contract.ts +192 -0
  128. package/template/.codex/skills/data-analytics/src/analytics-app/charting/chart-theme.ts +203 -0
  129. package/template/.codex/skills/data-analytics/src/analytics-app/charting/chart-tokens.css +619 -0
  130. package/template/.codex/skills/data-analytics/src/analytics-app/charting/chart-transforms.ts +402 -0
  131. package/template/.codex/skills/data-analytics/src/analytics-app/fonts/SystemSansVariableVF.woff2 +0 -0
  132. package/template/.codex/skills/data-analytics/src/analytics-app/imageExport.ts +370 -0
  133. package/template/.codex/skills/data-analytics/src/analytics-app/layout/AnalyticsLayoutCanvas.tsx +536 -0
  134. package/template/.codex/skills/data-analytics/src/analytics-app/layout/RichMarkdown.tsx +681 -0
  135. package/template/.codex/skills/data-analytics/src/analytics-app/layout/analyticsLayoutCore.ts +164 -0
  136. package/template/.codex/skills/data-analytics/src/analytics-app/main.tsx +21 -0
  137. package/template/.codex/skills/data-analytics/src/analytics-app/scripts/chart_contract.py +472 -0
  138. package/template/.codex/skills/data-analytics/src/analytics-app/scripts/check_analytics_app_runtime_links.py +75 -0
  139. package/template/.codex/skills/data-analytics/src/analytics-app/scripts/design_contract.py +142 -0
  140. package/template/.codex/skills/data-analytics/src/analytics-app/scripts/package_utils.py +142 -0
  141. package/template/.codex/skills/data-analytics/src/analytics-app/scripts/tests/test_package_utils.py +377 -0
  142. package/template/.codex/skills/data-analytics/src/analytics-app/styles.css +3468 -0
  143. package/template/.codex/skills/data-analytics/src/analytics-app/tables/DataTable.d.ts +44 -0
  144. package/template/.codex/skills/data-analytics/src/analytics-app/tables/DataTable.jsx +639 -0
  145. package/template/.codex/skills/data-analytics/src/analytics-app/tables/data-table.css +327 -0
  146. package/template/.codex/skills/data-analytics/src/analytics-app/tokens.css +225 -0
  147. package/template/.codex/skills/data-analytics/src/analytics-app/types.ts +204 -0
  148. package/template/.codex/skills/data-analytics/src/analytics-app-core.md +85 -0
  149. package/template/.codex/skills/data-analytics/src/codex-style-contract.md +30 -0
  150. package/template/.codex/skills/data-analytics/src/datascience-artifact-widget.html +12 -0
  151. package/template/.codex/skills/data-analytics/src/datascience-artifact-widget.jsx +1008 -0
  152. package/template/.codex/skills/data-analytics/src/datascience-chart-widget.css +2117 -0
  153. package/template/.codex/skills/data-analytics/src/datascience-chart-widget.html +122 -0
  154. package/template/.codex/skills/data-analytics/src/datascience-chart-widget.js +3588 -0
  155. package/template/.codex/skills/data-analytics/src/datascience-table-widget.css +483 -0
  156. package/template/.codex/skills/data-analytics/src/datascience-table-widget.html +32 -0
  157. package/template/.codex/skills/data-analytics/src/datascience-table-widget.js +333 -0
  158. package/template/.codex/skills/data-analytics/src/mcp-host.js +153 -0
  159. package/template/.codex/skills/data-analytics/src/recharts-config.js +315 -0
  160. package/template/.codex/skills/data-analytics/src/recharts-renderer.jsx +294 -0
  161. package/template/.codex/skills/data-analytics/src/sql-source-view.css +33 -0
  162. package/template/.codex/skills/data-analytics/src/sql-source-view.js +157 -0
  163. package/template/.codex/skills/data-analytics/src/styles/codex-theme.css +121 -0
  164. package/template/.codex/skills/data-analytics/src/table-renderer.jsx +28 -0
  165. package/template/.codex/skills/data-analytics/tests/chart-transforms.test.mjs +87 -0
  166. package/template/.codex/skills/data-analytics/tests/funnel-smoke.html +105 -0
  167. package/template/.codex/skills/data-analytics/tests/inline-widget-compare.html +233 -0
  168. package/template/.codex/skills/data-analytics/tests/mcp-server.test.mjs +1500 -0
  169. package/template/.codex/skills/data-analytics/tests/native-style-contract.test.mjs +219 -0
  170. package/template/.codex/skills/data-analytics/tests/recharts-config.test.mjs +144 -0
  171. package/template/.codex/skills/data-analytics/tests/recharts-renderer.test.mjs +11 -0
  172. package/template/.codex/skills/data-analytics/tests/rich-markdown.test.mjs +54 -0
  173. package/template/.codex/skills/data-analytics/tests/widget-render-harness.html +321 -0
  174. package/template/.codex/skills/data-analytics/tsconfig.json +19 -0
  175. package/template/.codex/skills/data-analytics/vite.config.ts +46 -0
  176. package/template/.codex/skills/product-design/.app.json +7 -0
  177. package/template/.codex/skills/product-design/.codex-plugin/plugin.json +50 -0
  178. package/template/.codex/skills/product-design/README.md +50 -0
  179. package/template/.codex/skills/product-design/agents/openai.yaml +4 -0
  180. package/template/.codex/skills/product-design/assets/composerIcon.svg +9 -0
  181. package/template/.codex/skills/product-design/assets/logo.png +0 -0
  182. package/template/.codex/skills/product-design/package.json +11 -0
  183. package/template/.codex/skills/product-design/references/browser-order.md +9 -0
  184. package/template/.codex/skills/product-design/references/communication-protocol.md +45 -0
  185. package/template/.codex/skills/product-design/references/critical-overrides.md +58 -0
  186. package/template/.codex/skills/product-design/references/local-prototype-preflight.md +16 -0
  187. package/template/.codex/skills/product-design/scripts/bootstrap-prototype.mjs +147 -0
  188. package/template/.codex/skills/product-design/skills/audit/SKILL.md +159 -0
  189. package/template/.codex/skills/product-design/skills/audit/agents/openai.yaml +6 -0
  190. package/template/.codex/skills/product-design/skills/audit/references/design-audit-framework.md +73 -0
  191. package/template/.codex/skills/product-design/skills/design-qa/SKILL.md +133 -0
  192. package/template/.codex/skills/product-design/skills/design-qa/agents/openai.yaml +6 -0
  193. package/template/.codex/skills/product-design/skills/design-qa/references/qa-rubric.md +61 -0
  194. package/template/.codex/skills/product-design/skills/get-context/SKILL.md +81 -0
  195. package/template/.codex/skills/product-design/skills/get-context/agents/openai.yaml +6 -0
  196. package/template/.codex/skills/product-design/skills/ideate/SKILL.md +179 -0
  197. package/template/.codex/skills/product-design/skills/ideate/agents/openai.yaml +6 -0
  198. package/template/.codex/skills/product-design/skills/image-to-code/SKILL.md +105 -0
  199. package/template/.codex/skills/product-design/skills/image-to-code/agents/openai.yaml +6 -0
  200. package/template/.codex/skills/product-design/skills/index/SKILL.md +126 -0
  201. package/template/.codex/skills/product-design/skills/index/agents/openai.yaml +6 -0
  202. package/template/.codex/skills/product-design/skills/prototype/SKILL.md +128 -0
  203. package/template/.codex/skills/product-design/skills/prototype/agents/openai.yaml +6 -0
  204. package/template/.codex/skills/product-design/skills/prototype/references/existing-codebase-edits.md +18 -0
  205. package/template/.codex/skills/product-design/skills/research/SKILL.md +92 -0
  206. package/template/.codex/skills/product-design/skills/research/agents/openai.yaml +6 -0
  207. package/template/.codex/skills/product-design/skills/share/SKILL.md +41 -0
  208. package/template/.codex/skills/product-design/skills/share/agents/openai.yaml +6 -0
  209. package/template/.codex/skills/product-design/skills/url-to-code/SKILL.md +124 -0
  210. package/template/.codex/skills/product-design/skills/url-to-code/agents/openai.yaml +6 -0
  211. package/template/.codex/skills/product-design/skills/user-context/SKILL.md +147 -0
  212. package/template/.codex/skills/product-design/skills/user-context/agents/openai.yaml +6 -0
  213. package/template/.codex/skills/product-design/skills/user-context/plugin-author-config/user-context-template.md +63 -0
  214. package/template/.codex/skills/product-design/skills/user-context/references/onboarding.md +66 -0
  215. package/template/.codex/skills/product-design/skills/user-context/scripts/init_user_context.py +86 -0
  216. package/template/.codex/skills/product-design/skills/user-context/scripts/user_context_preflight.py +204 -0
  217. package/template/.codex/skills/product-design/templates/prototype/AGENTS.md +7 -0
  218. package/template/.codex/skills/product-design/templates/prototype/index.html +12 -0
  219. package/template/.codex/skills/product-design/templates/prototype/package.json +18 -0
  220. package/template/.codex/skills/product-design/templates/prototype/src/App.jsx +5 -0
  221. package/template/.codex/skills/product-design/templates/prototype/src/main.jsx +10 -0
  222. package/template/.codex/skills/product-design/templates/prototype/src/styles.css +13 -0
  223. package/template/.codex/skills/product-design/templates/prototype/vite.config.mjs +14 -0
  224. package/template/.codex/skills/yss-product-lifecycle/SKILL.md +3 -3
  225. package/template/AGENTS.md +3 -3
  226. package/template/docs/adr/adr-product-design-prototype-entrypoint.md +54 -0
  227. package/template/docs/api/templates/openapi-draft-review-checklist.md +4 -2
  228. package/template/docs/design/README.md +8 -4
  229. package/template/docs/design/templates/interaction-spec-template.md +4 -1
  230. package/template/docs/design/templates/prototype-confirmation-template.md +57 -0
  231. package/template/docs/design/templates/prototype-review-checklist.md +6 -2
  232. package/template/docs/design/templates/state-matrix-template.md +1 -1
  233. package/template/docs/process/harness-executive-blueprint.md +2 -1
  234. package/template/docs/process/harness-process-tailoring.md +1 -1
  235. package/template/docs/process/harness-work-unit-map.md +1 -1
  236. package/template/docs/process/lifecycle-artifact-map.md +4 -3
  237. package/template/docs/process/product-prototype-workflow.md +82 -0
  238. package/template/docs/user-guide/product-lifecycle-workflow.md +2 -2
  239. package/template/docs/user-guide/product-rd-lifecycle-best-practices.md +15 -10
@@ -0,0 +1,483 @@
1
+ * {
2
+ box-sizing: border-box;
3
+ }
4
+
5
+ [hidden] {
6
+ display: none !important;
7
+ }
8
+
9
+ html {
10
+ min-height: 0;
11
+ overflow: clip;
12
+ }
13
+
14
+ body {
15
+ margin: 0;
16
+ overflow: clip;
17
+ background: transparent;
18
+ color: var(--ds-text);
19
+ font: 14px/1.45 var(--ds-font);
20
+ letter-spacing: 0;
21
+ min-height: 0;
22
+ }
23
+
24
+ .widget {
25
+ overflow: clip;
26
+ border: 0;
27
+ border-radius: 0;
28
+ background: transparent;
29
+ box-shadow: none;
30
+ }
31
+
32
+ .widget:not([data-display-mode="fullscreen"]) {
33
+ padding: 16px;
34
+ }
35
+
36
+ .widget[data-display-mode="fullscreen"] {
37
+ min-height: 100vh;
38
+ padding: 0;
39
+ background: var(--ds-surface);
40
+ }
41
+
42
+ header {
43
+ padding: 0 0 16px;
44
+ border-bottom: 0;
45
+ background: transparent;
46
+ box-shadow: none;
47
+ }
48
+
49
+ .title-row {
50
+ display: flex;
51
+ align-items: center;
52
+ justify-content: space-between;
53
+ gap: 16px;
54
+ }
55
+
56
+ h1 {
57
+ min-width: 0;
58
+ overflow: hidden;
59
+ margin: 0;
60
+ color: var(--ds-text-primary);
61
+ font-size: 16px;
62
+ font-weight: 500;
63
+ line-height: 24px;
64
+ letter-spacing: -0.01px;
65
+ text-overflow: ellipsis;
66
+ white-space: nowrap;
67
+ }
68
+
69
+ .subtitle {
70
+ margin: 4px 0 0;
71
+ color: var(--ds-text-muted);
72
+ font-size: 14px;
73
+ font-weight: 400;
74
+ line-height: 22px;
75
+ letter-spacing: -0.14px;
76
+ max-width: 980px;
77
+ }
78
+
79
+ .query-actions {
80
+ display: inline-flex;
81
+ align-items: center;
82
+ gap: 8px;
83
+ min-width: 0;
84
+ }
85
+
86
+ .query-status {
87
+ overflow: hidden;
88
+ max-width: 220px;
89
+ color: var(--ds-text-muted);
90
+ font-size: 12px;
91
+ text-overflow: ellipsis;
92
+ white-space: nowrap;
93
+ }
94
+
95
+ .widget:not([data-display-mode="fullscreen"]) .query-status {
96
+ display: none;
97
+ }
98
+
99
+ .table-wrap {
100
+ box-sizing: border-box;
101
+ overflow-x: auto;
102
+ overflow-y: clip;
103
+ padding: 0 0 10px;
104
+ scrollbar-gutter: stable;
105
+ }
106
+
107
+ .table-wrap.fullscreen {
108
+ max-height: min(68vh, 720px);
109
+ overflow: auto;
110
+ }
111
+
112
+ .query-preview {
113
+ margin-top: 18px;
114
+ }
115
+
116
+ .widget:not([data-display-mode="fullscreen"]) .query-preview {
117
+ display: none !important;
118
+ }
119
+
120
+ .query-preview-heading {
121
+ margin-bottom: 8px;
122
+ color: var(--ds-text-primary);
123
+ font-size: 13px;
124
+ font-weight: 650;
125
+ line-height: 20px;
126
+ }
127
+
128
+ .source-code {
129
+ max-height: min(32vh, 360px);
130
+ padding: 16px;
131
+ font-size: 12px;
132
+ line-height: 1.5;
133
+ }
134
+
135
+ table {
136
+ width: 100%;
137
+ min-width: 100%;
138
+ border-collapse: collapse;
139
+ color: var(--ds-text);
140
+ font-size: 14px;
141
+ table-layout: auto;
142
+ }
143
+
144
+ .data-table-resizable {
145
+ table-layout: fixed;
146
+ }
147
+
148
+ th,
149
+ td {
150
+ border-bottom: 1px solid var(--ds-border-subtle);
151
+ max-width: 0;
152
+ overflow: hidden;
153
+ text-align: left;
154
+ text-overflow: ellipsis;
155
+ vertical-align: top;
156
+ }
157
+
158
+ th {
159
+ position: relative;
160
+ min-height: 30px;
161
+ overflow: visible;
162
+ padding: 0;
163
+ background: transparent;
164
+ color: var(--ds-text-tertiary);
165
+ font-size: 12px;
166
+ font-weight: 600;
167
+ line-height: 18px;
168
+ letter-spacing: 0;
169
+ }
170
+
171
+ th button {
172
+ display: flex;
173
+ max-width: 100%;
174
+ align-items: center;
175
+ justify-content: flex-start;
176
+ gap: 3px;
177
+ width: 100%;
178
+ height: 100%;
179
+ min-height: 30px;
180
+ border: 0;
181
+ padding: 0 16px 0 0;
182
+ border-radius: 0;
183
+ background: transparent;
184
+ box-sizing: border-box;
185
+ color: inherit;
186
+ cursor: pointer;
187
+ font: inherit;
188
+ text-align: left;
189
+ white-space: normal;
190
+ }
191
+
192
+ th button:focus-visible {
193
+ outline: 2px solid color-mix(in srgb, var(--blue-mid) 45%, transparent);
194
+ outline-offset: 2px;
195
+ }
196
+
197
+ .table-sort-button span {
198
+ min-width: 0;
199
+ overflow: visible;
200
+ text-overflow: clip;
201
+ }
202
+
203
+ .table-sort-button:hover,
204
+ .table-sort-button:focus-visible {
205
+ background: var(--ds-surface-secondary);
206
+ }
207
+
208
+ .table-sort-button svg {
209
+ flex: 0 0 auto;
210
+ width: 12px;
211
+ height: 12px;
212
+ color: var(--ds-text-secondary);
213
+ }
214
+
215
+ th.numeric,
216
+ td.table-cell-number {
217
+ text-align: right;
218
+ }
219
+
220
+ th.numeric .table-sort-button {
221
+ justify-content: flex-end;
222
+ text-align: right;
223
+ }
224
+
225
+ th.numeric .table-sort-button span {
226
+ text-align: right;
227
+ }
228
+
229
+ th.center,
230
+ td.center {
231
+ text-align: center;
232
+ }
233
+
234
+ th.center .table-sort-button {
235
+ justify-content: center;
236
+ text-align: center;
237
+ }
238
+
239
+ .table-column-resize-handle {
240
+ position: absolute;
241
+ top: 0;
242
+ right: -9px;
243
+ bottom: 0;
244
+ z-index: 2;
245
+ width: 18px;
246
+ padding: 0;
247
+ border: 0;
248
+ border-radius: 0;
249
+ background: transparent;
250
+ cursor: col-resize;
251
+ touch-action: none;
252
+ }
253
+
254
+ .table-column-resize-handle:hover {
255
+ cursor: col-resize;
256
+ }
257
+
258
+ .table-column-resize-handle::after {
259
+ position: absolute;
260
+ top: 0;
261
+ bottom: 0;
262
+ left: 50%;
263
+ transform: translateX(-50%);
264
+ width: 1px;
265
+ border-radius: 999px;
266
+ background: transparent;
267
+ content: "";
268
+ cursor: col-resize;
269
+ pointer-events: none;
270
+ }
271
+
272
+ .table-column-resize-handle:hover::after,
273
+ .table-column-resize-handle:focus-visible::after,
274
+ .data-table-resizable.is-column-resizing .table-column-resize-handle::after {
275
+ background: var(--ds-border-strong);
276
+ }
277
+
278
+ .table-column-resize-handle:focus-visible {
279
+ outline: 2px solid var(--ds-blue-bright);
280
+ outline-offset: -3px;
281
+ }
282
+
283
+ th.is-sorted {
284
+ color: var(--ds-text-secondary);
285
+ }
286
+
287
+ td {
288
+ padding: 8px 16px 8px 0;
289
+ color: var(--ds-text-secondary);
290
+ font-size: 14px;
291
+ line-height: 22px;
292
+ white-space: normal;
293
+ }
294
+
295
+ th:last-child,
296
+ td:last-child {
297
+ padding-right: 0;
298
+ }
299
+
300
+ th:last-child .table-sort-button {
301
+ padding-right: 0;
302
+ }
303
+
304
+ td:first-child {
305
+ color: var(--ds-text-primary);
306
+ }
307
+
308
+ .table-density-dense td {
309
+ height: 40px;
310
+ padding: 0 8px;
311
+ vertical-align: middle;
312
+ white-space: nowrap;
313
+ }
314
+
315
+ .table-density-dense th {
316
+ padding: 0;
317
+ }
318
+
319
+ .table-density-dense .table-sort-button {
320
+ padding: 0 8px;
321
+ }
322
+
323
+ .table-density-dense th:first-child .table-sort-button {
324
+ padding-left: 0;
325
+ }
326
+
327
+ .table-density-dense th:last-child .table-sort-button {
328
+ padding-right: 0;
329
+ }
330
+
331
+ .table-density-dense td:first-child {
332
+ padding-left: 0;
333
+ }
334
+
335
+ .table-density-dense td:last-child {
336
+ padding-right: 0;
337
+ }
338
+
339
+ .table-density-dense tbody tr:nth-child(even) {
340
+ background: transparent;
341
+ }
342
+
343
+ .table-cell-number {
344
+ font-variant-numeric: tabular-nums;
345
+ font-feature-settings: "tnum" 1, "lnum" 1;
346
+ letter-spacing: 0;
347
+ text-align: right;
348
+ }
349
+
350
+ .table-cell-movement {
351
+ font-variant-numeric: tabular-nums;
352
+ font-feature-settings: "tnum" 1, "lnum" 1;
353
+ }
354
+
355
+ .table-cell-movement-positive {
356
+ color: var(--ds-green);
357
+ }
358
+
359
+ .table-cell-movement-negative {
360
+ color: var(--ds-red);
361
+ }
362
+
363
+ tbody tr {
364
+ transition: background-color 120ms ease;
365
+ }
366
+
367
+ tbody tr:hover {
368
+ background: var(--ds-surface-secondary);
369
+ }
370
+
371
+ .numeric {
372
+ text-align: right;
373
+ font-variant-numeric: tabular-nums;
374
+ }
375
+
376
+ .center {
377
+ text-align: center;
378
+ }
379
+
380
+ .empty {
381
+ padding: 28px 16px;
382
+ color: var(--ds-text-muted);
383
+ font-size: 13px;
384
+ }
385
+
386
+ .empty-state {
387
+ padding: 28px 16px;
388
+ color: var(--ds-text-muted);
389
+ font-size: 13px;
390
+ }
391
+
392
+ .table-pagination {
393
+ display: flex;
394
+ gap: 10px;
395
+ align-items: center;
396
+ justify-content: space-between;
397
+ min-height: 38px;
398
+ padding: 0;
399
+ border-top: 1px solid var(--ds-border-subtle);
400
+ color: var(--ds-text-secondary);
401
+ font-size: 12px;
402
+ line-height: 18px;
403
+ }
404
+
405
+ .table-result-count {
406
+ display: inline-flex;
407
+ align-items: center;
408
+ min-height: 30px;
409
+ color: var(--ds-text-tertiary);
410
+ }
411
+
412
+ .table-page-control {
413
+ display: inline-flex;
414
+ gap: 10px;
415
+ align-items: center;
416
+ margin-left: auto;
417
+ }
418
+
419
+ .table-page-buttons {
420
+ display: inline-flex;
421
+ gap: 6px;
422
+ align-items: center;
423
+ }
424
+
425
+ .table-arrow-button {
426
+ display: inline-flex;
427
+ width: 28px;
428
+ height: 28px;
429
+ align-items: center;
430
+ justify-content: center;
431
+ border: 1px solid var(--ds-border);
432
+ border-radius: var(--ds-radius-sm);
433
+ background: var(--ds-surface);
434
+ color: var(--ds-text-secondary);
435
+ cursor: pointer;
436
+ }
437
+
438
+ .table-arrow-button:hover:not(:disabled) {
439
+ background: var(--ds-surface-secondary);
440
+ color: var(--ds-text-primary);
441
+ }
442
+
443
+ .table-arrow-button:disabled {
444
+ cursor: default;
445
+ opacity: 0.45;
446
+ }
447
+
448
+ .table-arrow-button svg {
449
+ width: 14px;
450
+ height: 14px;
451
+ }
452
+
453
+ footer {
454
+ padding: 8px 0 0;
455
+ border-top: 0;
456
+ }
457
+
458
+ .notes {
459
+ display: flex;
460
+ flex-wrap: wrap;
461
+ gap: 8px 14px;
462
+ margin: 0;
463
+ padding: 0;
464
+ list-style: none;
465
+ }
466
+
467
+ .note,
468
+ .count {
469
+ color: var(--ds-text-muted);
470
+ font-size: 12px;
471
+ line-height: 1.4;
472
+ }
473
+
474
+ @media (prefers-reduced-motion: reduce) {
475
+ *,
476
+ *::before,
477
+ *::after {
478
+ animation-duration: 0.01ms !important;
479
+ animation-iteration-count: 1 !important;
480
+ scroll-behavior: auto !important;
481
+ transition-duration: 0.01ms !important;
482
+ }
483
+ }
@@ -0,0 +1,32 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
6
+ <title>Data Analytics table</title>
7
+ </head>
8
+ <body>
9
+ <article class="widget" aria-label="Data Analytics table widget">
10
+ <header>
11
+ <div class="title-row">
12
+ <h1 id="title">Data Analytics table</h1>
13
+ <div class="query-actions">
14
+ <span class="query-status" id="query-status" aria-live="polite"></span>
15
+ </div>
16
+ </div>
17
+ <p class="subtitle" id="subtitle" hidden></p>
18
+ </header>
19
+ <div class="table-wrap" id="table-wrap"></div>
20
+ <div class="table-pagination" id="pagination" hidden></div>
21
+ <section class="query-preview" id="query-preview" aria-label="Source query" hidden>
22
+ <div class="query-preview-heading" id="query-heading">Source query</div>
23
+ <pre class="source-code" id="query-code"></pre>
24
+ </section>
25
+ <footer id="footer" hidden>
26
+ <span class="count" id="count"></span>
27
+ <ul class="notes" id="notes"></ul>
28
+ </footer>
29
+ </article>
30
+ <script type="module" src="./datascience-table-widget.js"></script>
31
+ </body>
32
+ </html>