@port60/template-kit 0.20.2 → 0.20.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@port60/template-kit",
3
- "version": "0.20.2",
3
+ "version": "0.20.3",
4
4
  "description": "Build Port60 site templates locally: scaffold, live-preview, validate against the platform contract, and package for studio upload. AI-agent ready: every scaffold ships AGENTS.md and validate emits machine-readable JSON.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -4761,6 +4761,12 @@ textarea.p60-form-control {
4761
4761
  padding: 0.55rem 0.95rem;
4762
4762
  border-radius: 999px;
4763
4763
  }
4764
+ /* Named in every theme: the placeholder is the theme's ink at half strength, never the generic
4765
+ muted grey, which vanishes on a dark masthead. */
4766
+ .site-search-input::placeholder {
4767
+ color: color-mix(in srgb, var(--ink) 55%, transparent);
4768
+ opacity: 1;
4769
+ }
4764
4770
  .site-search-submit {
4765
4771
  padding: 0.55rem 0.95rem;
4766
4772
  border: 1px solid var(--line);
@@ -4855,39 +4861,56 @@ textarea.p60-form-control {
4855
4861
  margin: 0 0 0.35rem;
4856
4862
  }
4857
4863
  /* In the primary nav the box stays compact and grows on focus; Enter searches, so the button rests. */
4858
- .site-nav .site-search {
4864
+ /* In a header nav the box is compact and grows on focus; the submit button is the Enter key.
4865
+ Keyed off default's .site-nav AND the layout behaviour API's #site-nav (in attribute form on
4866
+ purpose: class-level specificity, so a template can still override with two classes of its own),
4867
+ so every artifact template's primary nav gets the same compact box whatever its class is called. */
4868
+ .site-nav .site-search,
4869
+ [id="site-nav"] .site-search {
4859
4870
  margin-inline-start: 0.35rem;
4860
4871
  }
4861
- .site-nav .site-search-input {
4872
+ .site-nav .site-search-input,
4873
+ [id="site-nav"] .site-search-input {
4862
4874
  width: 9rem;
4863
4875
  min-width: 0;
4864
4876
  padding: 0.45rem 0.85rem;
4865
4877
  font-size: 0.92rem;
4866
4878
  transition: width 0.16s ease;
4867
4879
  }
4868
- .site-nav .site-search-input:focus {
4880
+ .site-nav .site-search-input:focus,
4881
+ [id="site-nav"] .site-search-input:focus {
4869
4882
  width: 12.5rem;
4870
4883
  }
4871
- .site-nav .site-search-submit {
4884
+ .site-nav .site-search-submit,
4885
+ [id="site-nav"] .site-search-submit {
4872
4886
  display: none;
4873
4887
  }
4874
4888
  .site-nav .site-search-results,
4889
+ [id="site-nav"] .site-search-results,
4875
4890
  .site-nav .site-search-empty,
4876
- .site-nav .site-search-corrected {
4891
+ [id="site-nav"] .site-search-empty,
4892
+ .site-nav .site-search-corrected,
4893
+ [id="site-nav"] .site-search-corrected {
4877
4894
  right: 0;
4878
4895
  left: auto;
4879
4896
  }
4880
4897
  @media (max-width: 860px) {
4881
- .site-nav .site-search {
4898
+ .site-nav .site-search,
4899
+ [id="site-nav"] .site-search {
4882
4900
  margin: 0.5rem 0;
4883
4901
  }
4884
4902
  .site-nav .site-search-input,
4885
- .site-nav .site-search-input:focus {
4903
+ [id="site-nav"] .site-search-input,
4904
+ .site-nav .site-search-input:focus,
4905
+ [id="site-nav"] .site-search-input:focus {
4886
4906
  width: 100%;
4887
4907
  }
4888
4908
  .site-nav .site-search-results,
4909
+ [id="site-nav"] .site-search-results,
4889
4910
  .site-nav .site-search-empty,
4890
- .site-nav .site-search-corrected {
4911
+ [id="site-nav"] .site-search-empty,
4912
+ .site-nav .site-search-corrected,
4913
+ [id="site-nav"] .site-search-corrected {
4891
4914
  position: static;
4892
4915
  min-width: 0;
4893
4916
  box-shadow: none;
@@ -3,7 +3,7 @@
3
3
  chrome classes (.site-header/.site-nav/…) so the base mechanics (sticky header, burger
4
4
  breakpoint, dropdown hover) apply, and emits the documented behaviour attributes
5
5
  (data-nav-burger, #site-nav) so the platform tail script wires the mobile burger. Identity is
6
- PLACED, never rebuilt: {% island 'member_menu' %}. The footer derives everything from brand/nav, no fabricated copy (derive or omit).
6
+ PLACED, never rebuilt: {% island 'member_menu' %} and {% island 'search' %}. The footer derives everything from brand/nav, no fabricated copy (derive or omit).
7
7
  {% endcomment %}
8
8
  <header class="site-header">
9
9
  <div class="container header-inner">
@@ -42,6 +42,7 @@
42
42
  <a href="{{ item.href }}"{% if item.external %} target="_blank" rel="noopener"{% endif %}>{{ item.label }}</a>
43
43
  {% endif %}
44
44
  {% endfor %}
45
+ {% island 'search' %}
45
46
  {% island 'member_menu' %}
46
47
  </nav>
47
48
  </div>
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "starter",
3
- "version": "1.12.0",
3
+ "version": "1.13.0",
4
4
  "format": "port60-liquid@1",
5
5
  "label": "Starter",
6
6
  "description": "The reference template for the Port60 dialect, the developer docs' worked example and the base to copy when building your own. 1.1.0 adds the layout slot: the template owns the header, navigation and footer chrome.",
@@ -23,7 +23,8 @@
23
23
  "member_menu",
24
24
  "hero_carousel",
25
25
  "map",
26
- "primary_action_widget"
26
+ "primary_action_widget",
27
+ "search"
27
28
  ],
28
29
  "layout": true,
29
30
  "heroImagery": true,
@@ -53,7 +54,7 @@
53
54
  }
54
55
  ]
55
56
  },
56
- "changelog": "Adds the impact map section: pin your located work on a themed map of where you work.",
57
+ "changelog": "Places the site search box in the header: a typeahead across events, articles, services, campaigns, appeals, volunteering and documents, with the results page at /search.",
57
58
  "imagery": {
58
59
  "hero": {
59
60
  "idealAspect": "16:9",