@netlify/spark-ui 1.5.0-alpha.11 → 1.5.0-alpha.12

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.
@@ -1 +1 @@
1
- .chat-container{opacity:0;animation:appearContainer .12s ease-in-out forwards;animation-delay:.14s}@keyframes appearContainer{0%{opacity:0}to{opacity:1}}.conversation{height:calc(var(--n-search-container-height) + var(--n-search-footer-height));padding:var(--n-search-padding-inline);scroll-behavior:smooth;overflow-y:auto;display:grid;align-items:flex-end;gap:var(--space-s)}.question{border:none;color:var(--color-text-1);font-weight:var(--font-weight-regular);font-size:var(--step--1);border-radius:var(--radius-pill);transform:translate(-.75rem);text-wrap:pretty;text-align:left}.question-list li{opacity:0;transform:translateY(10px);animation:fadeInUp .5s forwards}.question-list li:nth-child(1){animation-delay:.5s}.question-list li:nth-child(2){animation-delay:.3s}.question-list li:nth-child(3){animation-delay:.1s}@keyframes fadeInUp{to{opacity:1;transform:translateY(0)}}.message{display:grid;gap:var(--space-s);margin-block-start:var(--space-2xl)}.message-bubble{padding:var(--space-xs) var(--space-s);background:var(--search-answer-message-color);border-radius:var(--radius-l);width:fit-content;max-width:85%;font-size:var(--step-0)}.prose{font-size:var(--step--0)}.prose>*+*{margin-top:var(--flow-space, var(--space-s))}.prose :where(ol,ul,li)>*+*{margin-top:var(--flow-space, var(--space-3xs))}.prose h1,.prose h2,.prose h3{font-size:var(--step-1)}.prose h4,.prose h5,.prose h6{font-size:var(--step-0)}.prose pre{background:var(--neutral-light-700);border-radius:var(--radius-m);max-width:100%;box-sizing:border-box;padding:var(--space-s);color:var(--neutral-100);overflow-x:auto}.prose code{overflow-x:auto}.prose code[class*=language-],.prose pre[class*=language-]{display:block;font-size:var(--font-size-text-xs)}.user-message{margin-inline-start:auto;background:var(--search-user-message-color)}.form-wrapper{display:flex;align-items:center;position:relative;height:var(--n-search-input-height)}.form-wrapper:after{content:"";display:block;width:100%;height:1px;background:var(--color-bg-3);position:absolute;top:0;left:0}.form-input{border:none;outline:none;padding-inline:var(--n-search-padding-inline)}.form-submit{padding:.7rem;border-radius:var(--radius-pill);margin-inline-end:var(--space-2xs);border:none;background:var(--color-link-1);color:var(--neutral-000);transition:background-color .15s ease-out}.form-submit>svg{width:1rem;height:auto;aspect-ratio:1 / 1;border-radius:1.5px;transition:opacity .15s ease-out}.form-submit[disabled]{background:var(--neutral-500)}.form-submit[disabled]>*{opacity:.5}.button-back{width:fit-content;background:transparent;position:absolute;z-index:1;padding:.5rem 1rem;background:var(--search-back-btn-bg-color);margin:1rem;border:2px solid var(--color-bg-3);border-radius:var(--radius-pill);font-size:var(--step--1);border:1px solid;cursor:pointer;border-color:var(--color-bg-3);color:var(--color-text-1);border-width:.5px}.message-loader{width:43px;height:auto;display:block;color:var(--search-loading-color)}.message-loader :where(#ask-netlify-tick-1,#ask-netlify-tick-2,#ask-netlify-tick-3){opacity:0;animation:tickFlicker .8s ease-in-out infinite}#ask-netlify-tick-1{animation-delay:.1s}#ask-netlify-tick-2{animation-delay:.2s}#ask-netlify-tick-3{animation-delay:.3s}@keyframes tickFlicker{0%{opacity:0}to{opacity:1}}#ask-netlify-eyelid-left,#ask-netlify-eyelid-right{transform-origin:top center;animation:blink 4s infinite;animation-delay:1s;transform:scaleY(.8)}@keyframes blink{0%,5%{transform:scaleY(.8)}6%,10%{transform:scaleY(1)}11%,15%{transform:scaleY(.8)}16%,20%{transform:scaleY(1)}21%,to{transform:scaleY(.8)}}
1
+ .chat-container{opacity:0;animation:appearContainer .12s ease-in-out forwards;animation-delay:.14s}@keyframes appearContainer{0%{opacity:0}to{opacity:1}}.conversation{height:calc(var(--n-search-container-height) + var(--n-search-footer-height));padding:var(--n-search-padding-inline);scroll-behavior:smooth;overflow-y:auto;display:grid;align-items:flex-end;gap:var(--space-s)}.question{border:none;color:var(--color-text-1);font-weight:var(--font-weight-regular);font-size:var(--step--1);border-radius:var(--radius-pill);transform:translate(-.75rem);text-wrap:pretty;text-align:left}.question-list li{opacity:0;transform:translateY(10px);animation:fadeInUp .5s forwards}.question-list li:nth-child(1){animation-delay:.5s}.question-list li:nth-child(2){animation-delay:.3s}.question-list li:nth-child(3){animation-delay:.1s}@keyframes fadeInUp{to{opacity:1;transform:translateY(0)}}.message{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-s);margin-block-start:var(--space-2xl)}.message-bubble{padding:var(--space-xs) var(--space-s);background:var(--search-answer-message-color);border-radius:var(--radius-l);width:fit-content;max-width:85%;font-size:var(--step-0)}.prose{font-size:var(--step--0)}.prose>*+*{margin-top:var(--flow-space, var(--space-s))}.prose :where(ol,ul,li)>*+*{margin-top:var(--flow-space, var(--space-3xs))}.prose h1,.prose h2,.prose h3{font-size:var(--step-1)}.prose h4,.prose h5,.prose h6{font-size:var(--step-0)}.prose pre{background:var(--neutral-light-700);border-radius:var(--radius-m);max-width:100%;box-sizing:border-box;padding:var(--space-s);color:var(--neutral-100);overflow-x:auto}.prose code{overflow-x:auto}.prose code[class*=language-],.prose pre[class*=language-]{display:block;font-size:var(--font-size-text-xs)}.user-message{margin-inline-start:auto;background:var(--search-user-message-color)}.form-wrapper{display:flex;align-items:center;position:relative;height:var(--n-search-input-height)}.form-wrapper:after{content:"";display:block;width:100%;height:1px;background:var(--color-bg-3);position:absolute;top:0;left:0}.form-input{border:none;outline:none;padding-inline:var(--n-search-padding-inline)}.form-submit{padding:.7rem;border-radius:var(--radius-pill);margin-inline-end:var(--space-2xs);border:none;background:var(--color-link-1);color:var(--neutral-000);transition:background-color .15s ease-out}.form-submit>svg{width:1rem;height:auto;aspect-ratio:1 / 1;border-radius:1.5px;transition:opacity .15s ease-out}.form-submit[disabled]{background:var(--neutral-500)}.form-submit[disabled]>*{opacity:.5}.button-back{width:fit-content;background:transparent;position:absolute;z-index:1;padding:.5rem 1rem;background:var(--search-back-btn-bg-color);margin:1rem;border:2px solid var(--color-bg-3);border-radius:var(--radius-pill);font-size:var(--step--1);border:1px solid;cursor:pointer;border-color:var(--color-bg-3);color:var(--color-text-1);border-width:.5px}.message-loader{width:43px;height:auto;display:block;color:var(--search-loading-color)}.message-loader :where(#ask-netlify-tick-1,#ask-netlify-tick-2,#ask-netlify-tick-3){opacity:0;animation:tickFlicker .8s ease-in-out infinite}#ask-netlify-tick-1{animation-delay:.1s}#ask-netlify-tick-2{animation-delay:.2s}#ask-netlify-tick-3{animation-delay:.3s}@keyframes tickFlicker{0%{opacity:0}to{opacity:1}}#ask-netlify-eyelid-left,#ask-netlify-eyelid-right{transform-origin:top center;animation:blink 4s infinite;animation-delay:1s;transform:scaleY(.8)}@keyframes blink{0%,5%{transform:scaleY(.8)}6%,10%{transform:scaleY(1)}11%,15%{transform:scaleY(.8)}16%,20%{transform:scaleY(1)}21%,to{transform:scaleY(.8)}}
@@ -5733,7 +5733,7 @@ function fl({ setModalState: e }) {
5733
5733
  __html: P.parse(h.answer)
5734
5734
  }
5735
5735
  }
5736
- ) }) : /* @__PURE__ */ E("span", { class: "message-loader", children: /* @__PURE__ */ E(Vi, { name: "askNetlify" }) }) })
5736
+ ) }) : /* @__PURE__ */ E("div", { class: "message-loader", children: /* @__PURE__ */ E(Vi, { name: "askNetlify" }) }) })
5737
5737
  ] }, h.id || `qa-${d}`))
5738
5738
  ] }),
5739
5739
  /* @__PURE__ */ E("form", { onSubmit: c, className: "form-wrapper n-search-input-wrapper", children: [
@@ -1,42 +1,43 @@
1
1
  import { u as e } from "../../../../chunks/jsxRuntime.module.Bzuv3cXw.js";
2
- import { T as o } from "../../../../chunks/hooks.module.DGkdD5n9.js";
3
- import a from "./SearchHeading/SearchHeading.js";
4
- import s from "./SearchLink/SearchLink.js";
5
- import { Fragment as m } from "preact";
6
- const h = {
2
+ import { T as h } from "../../../../chunks/hooks.module.DGkdD5n9.js";
3
+ import s from "./SearchHeading/SearchHeading.js";
4
+ import a from "./SearchLink/SearchLink.js";
5
+ import { Fragment as d } from "preact";
6
+ const u = {
7
7
  light: "dark",
8
8
  dark: "light"
9
- }, d = (n) => {
10
- document.documentElement.setAttribute("data-theme", n), localStorage.setItem("theme", n);
11
- }, u = ({
9
+ }, g = (n) => {
10
+ const r = document.getElementById("site-theme-select");
11
+ r && (r.value = n), document.documentElement.setAttribute("data-theme", n), localStorage.setItem("theme", n);
12
+ }, f = ({
12
13
  searchLoading: n,
13
14
  searchTerm: r,
14
15
  results: t
15
16
  }) => {
16
17
  if (n)
17
- return /* @__PURE__ */ e(a, { children: [
18
+ return /* @__PURE__ */ e(s, { children: [
18
19
  "Searching for ",
19
20
  /* @__PURE__ */ e("span", { className: "n-search-term", children: r }),
20
21
  " ..."
21
22
  ] });
22
23
  if (!t || t.length === 0)
23
- return /* @__PURE__ */ e(a, { children: [
24
+ return /* @__PURE__ */ e(s, { children: [
24
25
  "0 results for ",
25
26
  /* @__PURE__ */ e("span", { className: "n-search-term", children: r })
26
27
  ] });
27
- const c = o(() => t.map((l, i) => /* @__PURE__ */ e("li", { className: "n-results-list-item", children: /* @__PURE__ */ e(s, { ...l }) }, i)), [t]);
28
+ const c = h(() => t.map((l, i) => /* @__PURE__ */ e("li", { className: "n-results-list-item", children: /* @__PURE__ */ e(a, { ...l }) }, i)), [t]);
28
29
  return /* @__PURE__ */ e("ul", { className: "n-results-list", role: "list", children: c });
29
30
  };
30
- function N({
31
+ function A({
31
32
  setModalState: n,
32
33
  searchLoading: r,
33
34
  searchTerm: t,
34
35
  results: c,
35
36
  children: l
36
37
  }) {
37
- return /* @__PURE__ */ e("div", { className: "n-search-window", children: /* @__PURE__ */ e("div", { className: "n-search-links", children: t && t.length > 1 ? /* @__PURE__ */ e(u, { searchLoading: r, searchTerm: t, results: c }) : l ? /* @__PURE__ */ e(m, { children: [
38
+ return /* @__PURE__ */ e("div", { className: "n-search-window", children: /* @__PURE__ */ e("div", { className: "n-search-links", children: t && t.length > 1 ? /* @__PURE__ */ e(f, { searchLoading: r, searchTerm: t, results: c }) : l ? /* @__PURE__ */ e(d, { children: [
38
39
  /* @__PURE__ */ e(
39
- s,
40
+ a,
40
41
  {
41
42
  as: "button",
42
43
  icon: "askNetlify",
@@ -47,21 +48,21 @@ function N({
47
48
  }
48
49
  ),
49
50
  l,
50
- /* @__PURE__ */ e(a, { children: "Actions" }),
51
+ /* @__PURE__ */ e(s, { children: "Actions" }),
51
52
  /* @__PURE__ */ e(
52
- s,
53
+ a,
53
54
  {
54
55
  as: "button",
55
56
  icon: "lightbulb",
56
57
  label: "Toggle theme",
57
58
  onClick: () => {
58
- const i = document.documentElement.getAttribute("data-theme");
59
- i && d(h[i]);
59
+ const i = window.matchMedia("(prefers-color-scheme: dark)").matches, m = document.documentElement.getAttribute("data-theme"), o = i ? "dark" : m || "light";
60
+ o && g(u[o]);
60
61
  }
61
62
  }
62
63
  )
63
64
  ] }) : null }) });
64
65
  }
65
66
  export {
66
- N as default
67
+ A as default
67
68
  };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@netlify/spark-ui",
3
3
  "description": "Assets, design tokens, components, and utilities",
4
- "version": "1.5.0-alpha.11",
4
+ "version": "1.5.0-alpha.12",
5
5
  "type": "module",
6
6
  "main": "dist/components/preact/index.js",
7
7
  "types": "dist/components/preact/index.d.ts",
@@ -61,6 +61,7 @@
61
61
 
62
62
  .message {
63
63
  display: grid;
64
+ grid-template-columns: minmax(0, 1fr);
64
65
  gap: var(--space-s);
65
66
  margin-block-start: var(--space-2xl);
66
67
  }
@@ -111,9 +111,9 @@ function ChatInterface({ setModalState }: AskNetlifyProps) {
111
111
  />
112
112
  </div>
113
113
  ) : (
114
- <span class="message-loader">
114
+ <div class="message-loader">
115
115
  <Icon name="askNetlify" />
116
- </span>
116
+ </div>
117
117
  )}
118
118
  </div>
119
119
  </div>
@@ -75,8 +75,10 @@ export default function SearchWindow({
75
75
  icon="lightbulb"
76
76
  label="Toggle theme"
77
77
  onClick={() => {
78
- const theme = document.documentElement.getAttribute('data-theme') as Theme;
79
- theme && handleThemeChange(ThemeMap[theme]);
78
+ const isDarkTheme = window.matchMedia('(prefers-color-scheme: dark)').matches;
79
+ const currentTheme = document.documentElement.getAttribute('data-theme');
80
+ const theme = isDarkTheme ? 'dark' : currentTheme ? currentTheme : 'light';
81
+ theme && handleThemeChange(ThemeMap[theme as Theme]);
80
82
  }}
81
83
  />
82
84
  </>
@@ -6,6 +6,10 @@ export const ThemeMap: Record<Theme, Theme> = {
6
6
  };
7
7
 
8
8
  export const handleThemeChange = (value: Theme) => {
9
+ const themeSelect = document.getElementById('site-theme-select') as HTMLSelectElement;
10
+ if (themeSelect) {
11
+ themeSelect.value = value;
12
+ }
9
13
  const element = document.documentElement;
10
14
  element.setAttribute('data-theme', value);
11
15
  localStorage.setItem('theme', value);