@treeseed/core 0.10.17 → 0.10.19

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.
@@ -99,7 +99,7 @@ const formsApiBaseUrl = SITE_FORMS?.apiBaseUrl ?? '/api/form/submit';
99
99
  <label class="grid gap-2">
100
100
  <span class="text-sm font-semibold text-[color:var(--ts-color-text)]">Topic <span aria-hidden="true" class="text-[color:var(--ts-color-warning)]">*</span></span>
101
101
  <select
102
- class="min-h-12 rounded-md border border-[color:var(--ts-color-border-strong)] bg-white/70 px-4 py-3"
102
+ class="ts-control ts-control--select min-h-12 rounded-md border border-[color:var(--ts-color-border-strong)] px-4 py-3"
103
103
  name="contactType"
104
104
  required
105
105
  aria-required="true"
@@ -43,7 +43,9 @@
43
43
 
44
44
  .ts-control {
45
45
  appearance: none;
46
- background-color: var(--ts-color-surface);
46
+ -webkit-appearance: none;
47
+ -moz-appearance: none;
48
+ background: var(--ts-control-background, var(--ts-color-surface));
47
49
  border: 1px solid var(--ts-color-border);
48
50
  border-radius: var(--ts-radius-md);
49
51
  color: var(--ts-color-text);
@@ -78,11 +80,13 @@
78
80
  .ts-control--select,
79
81
  select.ts-control {
80
82
  appearance: none;
81
- background-color: var(--ts-color-surface);
82
- background-image:
83
+ -webkit-appearance: none;
84
+ -moz-appearance: none;
85
+ background:
83
86
  linear-gradient(var(--ts-color-border), var(--ts-color-border)),
84
87
  linear-gradient(45deg, transparent 50%, currentColor 50%),
85
- linear-gradient(135deg, currentColor 50%, transparent 50%);
88
+ linear-gradient(135deg, currentColor 50%, transparent 50%),
89
+ var(--ts-control-background, var(--ts-color-surface));
86
90
  background-position:
87
91
  calc(100% - 2rem) 50%,
88
92
  calc(100% - 1.17rem) calc(50% - 0.08rem),
@@ -95,6 +99,12 @@ select.ts-control {
95
99
  padding-right: 2.5rem;
96
100
  }
97
101
 
102
+ .ts-control--select option,
103
+ select.ts-control option {
104
+ background-color: var(--ts-control-background, var(--ts-color-surface));
105
+ color: var(--ts-color-text);
106
+ }
107
+
98
108
  .ts-control--textarea {
99
109
  min-height: 7rem;
100
110
  resize: vertical;
@@ -120,11 +120,13 @@ body {
120
120
 
121
121
  .ts-theme-selector__field select {
122
122
  appearance: none;
123
- background-color: var(--ts-color-surface);
124
- background-image:
123
+ -webkit-appearance: none;
124
+ -moz-appearance: none;
125
+ background:
125
126
  linear-gradient(var(--ts-color-border), var(--ts-color-border)),
126
127
  linear-gradient(45deg, transparent 50%, currentColor 50%),
127
- linear-gradient(135deg, currentColor 50%, transparent 50%);
128
+ linear-gradient(135deg, currentColor 50%, transparent 50%),
129
+ var(--ts-control-background, var(--ts-color-surface));
128
130
  background-position:
129
131
  calc(100% - 1.7rem) 50%,
130
132
  calc(100% - 1rem) calc(50% - 0.08rem),
@@ -151,6 +153,11 @@ body {
151
153
  outline-offset: 2px;
152
154
  }
153
155
 
156
+ .ts-theme-selector__field select option {
157
+ background-color: var(--ts-control-background, var(--ts-color-surface));
158
+ color: var(--ts-color-text);
159
+ }
160
+
154
161
  .ts-theme-swatch {
155
162
  display: inline-grid;
156
163
  grid-template-columns: repeat(4, 0.85rem);
@@ -9,6 +9,7 @@
9
9
  --ts-color-surface-muted: #e8efe1;
10
10
  --ts-color-surface-raised: #fafcf7;
11
11
  --ts-color-surface-overlay: rgba(255, 255, 255, 0.88);
12
+ --ts-control-background: var(--ts-color-surface);
12
13
 
13
14
  --ts-color-text: #1f2a20;
14
15
  --ts-color-text-muted: #51604d;
@@ -1,3 +1,4 @@
1
+ import type { TemplateLaunchRequirements } from '@treeseed/sdk/template-launch-requirements';
1
2
  import type { CatalogItem, CatalogItemOfferMode } from '@treeseed/sdk/types';
2
3
  export interface TemplateContentEntry {
3
4
  id: string;
@@ -55,6 +56,7 @@ export interface TemplateSiteCard {
55
56
  templateVersion?: string;
56
57
  priceModel?: CatalogItemOfferMode | string;
57
58
  source: 'catalog' | 'content';
59
+ launchRequirements?: TemplateLaunchRequirements;
58
60
  }
59
61
  export interface TemplateSiteDetail extends TemplateSiteCard {
60
62
  description: string;
package/dist/templates.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import { getCollection } from "astro:content";
2
+ import { normalizeTemplateLaunchRequirements } from "@treeseed/sdk/template-launch-requirements";
2
3
  import { RUNTIME_TENANT } from "./tenant/runtime-config.js";
3
4
  import { siteModelRendered } from "./utils/site-models.js";
4
5
  function sortTemplateCards(entries) {
@@ -27,6 +28,9 @@ function catalogNumber(metadata, key) {
27
28
  const value = metadata?.[key];
28
29
  return typeof value === "number" ? value : void 0;
29
30
  }
31
+ function catalogLaunchRequirements(metadata, label) {
32
+ return normalizeTemplateLaunchRequirements(metadata?.launchRequirements, `${label} launchRequirements`);
33
+ }
30
34
  function contentCardFromEntry(entry) {
31
35
  if (entry.data.status !== "live") {
32
36
  return null;
@@ -40,7 +44,8 @@ function contentCardFromEntry(entry) {
40
44
  publisherName: entry.data.publisher.name,
41
45
  templateVersion: entry.data.templateVersion,
42
46
  priceModel: entry.data.offer?.priceModel,
43
- source: "content"
47
+ source: "content",
48
+ launchRequirements: void 0
44
49
  };
45
50
  }
46
51
  function detailFromContentEntry(entry) {
@@ -85,7 +90,8 @@ function cardFromCatalogItem(item) {
85
90
  publisherName: catalogString(item.metadata, "publisherName") ?? item.teamId,
86
91
  templateVersion: catalogString(item.metadata, "templateVersion"),
87
92
  priceModel: item.offerMode,
88
- source: "catalog"
93
+ source: "catalog",
94
+ launchRequirements: catalogLaunchRequirements(item.metadata, `catalog item ${item.slug}`)
89
95
  };
90
96
  }
91
97
  function detailFromCatalogItem(item) {
@@ -139,7 +145,13 @@ async function listSiteTemplates(context = {}) {
139
145
  }
140
146
  for (const item of catalogItems) {
141
147
  const card = cardFromCatalogItem(item);
142
- if (!cardsBySlug.has(card.slug)) {
148
+ const existing = cardsBySlug.get(card.slug);
149
+ if (existing) {
150
+ cardsBySlug.set(card.slug, {
151
+ ...existing,
152
+ launchRequirements: existing.launchRequirements ?? card.launchRequirements
153
+ });
154
+ } else {
143
155
  cardsBySlug.set(card.slug, card);
144
156
  }
145
157
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@treeseed/core",
3
- "version": "0.10.17",
3
+ "version": "0.10.19",
4
4
  "description": "Treeseed web framework package for Astro/Starlight site runtimes.",
5
5
  "license": "AGPL-3.0-only",
6
6
  "repository": {
@@ -70,7 +70,7 @@
70
70
  "@astrojs/sitemap": "3.7.0",
71
71
  "@astrojs/starlight": "0.37.6",
72
72
  "@tailwindcss/vite": "^4.1.4",
73
- "@treeseed/sdk": "github:treeseed-ai/sdk#0.10.23",
73
+ "@treeseed/sdk": "github:treeseed-ai/sdk#0.10.25",
74
74
  "astro": "^5.6.1",
75
75
  "esbuild": "^0.28.0",
76
76
  "katex": "^0.16.22",
@@ -108,7 +108,11 @@ __WORKING_DIRECTORY_BLOCK__ web:
108
108
  shell: bash
109
109
  run: |
110
110
  set -euo pipefail
111
+ TIMING_SUMMARY="${RUNNER_TEMP:-/tmp}/treeseed-provider-timing.md"
112
+ : > "${TIMING_SUMMARY}"
113
+ export TREESEED_PROVIDER_TIMING_SUMMARY_PATH="${TIMING_SUMMARY}"
111
114
  EXTRA_ARGS=()
112
115
  if [[ -n "${TREESEED_WORKFLOW_PROJECT:-}" ]]; then EXTRA_ARGS+=(--project-id "${TREESEED_WORKFLOW_PROJECT}"); fi
113
116
  if [[ -n "${TREESEED_WORKFLOW_PREVIEW_ID:-}" ]]; then EXTRA_ARGS+=(--preview-id "${TREESEED_WORKFLOW_PREVIEW_ID}"); fi
114
117
  node ./packages/sdk/scripts/run-ts.mjs ./packages/sdk/scripts/tenant-workflow-action.ts --action "${TREESEED_WORKFLOW_ACTION}" --environment "${TREESEED_WORKFLOW_ENVIRONMENT}" "${EXTRA_ARGS[@]}"
118
+ if [[ -n "${GITHUB_STEP_SUMMARY:-}" && -s "${TIMING_SUMMARY}" ]]; then cat "${TIMING_SUMMARY}" >> "${GITHUB_STEP_SUMMARY}"; fi