@umami/shiso 1.10.0 → 1.11.0

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.
@@ -1193,7 +1193,7 @@ function CodeBlock({ children, className }) {
1193
1193
  };
1194
1194
  return /* @__PURE__ */ jsxs("div", {
1195
1195
  "data-slot": "code-block",
1196
- className: "relative my-5 overflow-hidden rounded-lg bg-muted/50",
1196
+ className: "relative my-5 overflow-hidden rounded-lg bg-card",
1197
1197
  children: [/* @__PURE__ */ jsx(ScrollArea, {
1198
1198
  scrollbars: "horizontal",
1199
1199
  className: "w-full",
@@ -8085,10 +8085,10 @@ function DocContent({ page, doc, site }) {
8085
8085
  });
8086
8086
  }
8087
8087
  const NavigationButton = ({ label, url, eyebrow, isPrev }) => {
8088
- if (!url || !label) return /* @__PURE__ */ jsx("div", {});
8088
+ if (!url || !label) return /* @__PURE__ */ jsx("div", { className: "flex-1" });
8089
8089
  return /* @__PURE__ */ jsxs(Link, {
8090
8090
  to: url,
8091
- className: cn("group my-3 inline-flex items-end gap-3 text-base text-foreground", { "text-right": !isPrev }),
8091
+ className: cn("group flex flex-1 items-end gap-3 py-3 text-base text-foreground", { "justify-end text-right": !isPrev }),
8092
8092
  rel: isPrev ? "prev" : "next",
8093
8093
  children: [
8094
8094
  isPrev && /* @__PURE__ */ jsx(ArrowLeft, {
@@ -9832,7 +9832,8 @@ const styles = {
9832
9832
  accordionItem: "",
9833
9833
  accordionTrigger: "text-foreground",
9834
9834
  accordionContent: "text-muted-foreground [&_p]:mt-0 [&_p:last-child]:mb-0",
9835
- expandableTrigger: "items-center px-4 py-3 text-sm font-normal text-foreground hover:no-underline",
9835
+ expandableTrigger: "items-center py-3 text-sm font-normal text-foreground hover:no-underline",
9836
+ expandableContent: "pl-6",
9836
9837
  callout: "my-4 flex items-start gap-3 rounded-lg border px-3 py-2.5 text-sm leading-6",
9837
9838
  calloutIcon: "flex h-6 w-5 shrink-0 items-center justify-center [&_svg]:block [&_svg]:size-4",
9838
9839
  calloutBody: "flex min-w-0 flex-1 flex-col gap-[0.35rem] [&>:first-child]:mt-0 [&>:last-child]:mb-0 [&_:where(p,ul,ol)]:my-[0.35rem] [&>:where(p,ul,ol):first-child]:mt-0 [&>:where(p,ul,ol):last-child]:mb-0",
@@ -9844,7 +9845,8 @@ const styles = {
9844
9845
  tip: "border-green-300 bg-green-50 text-green-900 dark:border-green-400/40 dark:bg-green-400/10 dark:text-green-300",
9845
9846
  check: "border-emerald-300 bg-emerald-50 text-emerald-900 dark:border-emerald-400/40 dark:bg-emerald-400/10 dark:text-emerald-300",
9846
9847
  danger: "border-destructive/40 bg-destructive/10 text-destructive",
9847
- card: "block h-full gap-0 rounded-lg border border-border bg-transparent p-4 text-base ring-0 hover:border-primary",
9848
+ card: "block h-full gap-0 rounded-lg border border-border p-4 text-sm ring-0 hover:border-primary",
9849
+ cardPlain: "bg-card",
9848
9850
  cardHorizontal: "[&_[data-slot=card-inner]]:items-center [&_[data-slot=card-main]]:flex-row [&_[data-slot=card-main]]:items-center [&_[data-slot=card-main]]:gap-3 [&_[data-slot=card-body]]:m-0 [&_[data-slot=card-header]]:flex-row [&_[data-slot=card-header]]:items-center [&_[data-slot=card-header]]:gap-2",
9849
9851
  cardTyped: "[&_[data-slot=card-title]]:text-inherit [&_[data-slot=card-body]]:text-inherit [&_[data-slot=card-cta]]:text-inherit [&_[data-slot=card-arrow]]:text-inherit",
9850
9852
  cardImageLayout: "p-0 [&_[data-slot=card-inner]]:p-6",
@@ -9853,7 +9855,7 @@ const styles = {
9853
9855
  cardMain: "flex min-w-0 flex-col gap-2",
9854
9856
  cardHeader: "flex flex-col items-start gap-3",
9855
9857
  cardIcon: "inline-flex shrink-0 items-center justify-center [&_img]:size-6 [&_svg]:size-6",
9856
- cardTitle: "text-base font-semibold text-foreground",
9858
+ cardTitle: "text-sm font-semibold text-foreground",
9857
9859
  cardBody: "text-muted-foreground [&>:first-child]:mt-0 [&>:last-child]:mb-0",
9858
9860
  cardCta: "flex shrink-0 items-center gap-[0.35rem] text-[0.9rem] font-medium text-muted-foreground",
9859
9861
  cardArrow: "shrink-0 text-muted-foreground",
@@ -10377,7 +10379,7 @@ function DocsCardContent({ title, icon, color, img, cta, arrow, type, children }
10377
10379
  function Card({ title, href, icon, color, img, cta, horizontal, arrow, type, children }) {
10378
10380
  const external = typeof href === "string" && /^https?:\/\//i.test(href);
10379
10381
  const showArrow = arrow ?? external;
10380
- const className = `${styles.card} ${type ? `${styles.cardTyped} ${styles[type]} ${CARD_TYPE_HOVER[type]}` : ""} ${horizontal ? styles.cardHorizontal : ""} ${img ? styles.cardImageLayout : ""}`;
10382
+ const className = `${styles.card} ${type ? `${styles.cardTyped} ${styles[type]} ${CARD_TYPE_HOVER[type]}` : styles.cardPlain} ${horizontal ? styles.cardHorizontal : ""} ${img ? styles.cardImageLayout : ""}`;
10381
10383
  const content = /* @__PURE__ */ jsx(Card$1, {
10382
10384
  className,
10383
10385
  children: /* @__PURE__ */ jsx(DocsCardContent, {
@@ -11304,7 +11306,7 @@ function CodeGroup({ children }) {
11304
11306
  return /* @__PURE__ */ jsxs(Tabs$1, {
11305
11307
  value: selected,
11306
11308
  onValueChange: setSelectedKey,
11307
- className: "my-4 gap-0 overflow-hidden rounded-lg bg-muted/50 [&_[data-slot=code-block]]:my-0 [&_[data-slot=code-block]]:rounded-none [&_[data-slot=code-block]]:border-0 [&_[data-slot=code-block]]:bg-transparent",
11309
+ className: "my-4 gap-0 overflow-hidden rounded-lg bg-card [&_[data-slot=code-block]]:my-0 [&_[data-slot=code-block]]:rounded-none [&_[data-slot=code-block]]:border-0 [&_[data-slot=code-block]]:bg-transparent",
11308
11310
  children: [/* @__PURE__ */ jsx(TabsList, {
11309
11311
  variant: "line",
11310
11312
  className: "h-9 w-full justify-start gap-5 overflow-x-auto overflow-y-hidden rounded-none px-3 py-0 shadow-[inset_0_-1px_0_var(--border)] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden",
@@ -11541,7 +11543,7 @@ function Expandable({ title, children, defaultOpen = false }) {
11541
11543
  className: `${styles.expandableTrigger} group/collapsible-trigger flex w-full justify-start gap-2 text-left outline-none focus-visible:ring-3 focus-visible:ring-ring/50`,
11542
11544
  children: [/* @__PURE__ */ jsx(ChevronRight, { className: "size-4 shrink-0 text-muted-foreground transition-transform group-aria-expanded/collapsible-trigger:rotate-90" }), title]
11543
11545
  }), /* @__PURE__ */ jsx(CollapsibleContent, { children: /* @__PURE__ */ jsx("div", {
11544
- className: styles.accordionContent,
11546
+ className: `${styles.accordionContent} ${styles.expandableContent}`,
11545
11547
  children
11546
11548
  }) })]
11547
11549
  })
@@ -11725,53 +11727,43 @@ function PropertiesTable({ children }) {
11725
11727
  const rows = toElementArray(children);
11726
11728
  if (!rows.length) return null;
11727
11729
  return /* @__PURE__ */ jsx("div", {
11728
- className: "my-4 overflow-x-auto rounded-lg border border-border px-6 py-2",
11730
+ className: "my-4 overflow-x-auto",
11729
11731
  children: /* @__PURE__ */ jsxs("table", {
11730
- className: "m-0 min-w-[40rem] table-fixed border-collapse border-0",
11732
+ className: "m-0 min-w-[40rem] table-fixed",
11731
11733
  children: [/* @__PURE__ */ jsx("thead", { children: /* @__PURE__ */ jsxs("tr", { children: [
11732
11734
  /* @__PURE__ */ jsx("th", {
11733
- className: "w-1/5 border-x-0 border-t-0 border-b border-border bg-transparent px-0 py-2 pr-6 text-left text-sm font-semibold text-foreground",
11735
+ className: "w-1/5",
11734
11736
  children: "Name"
11735
11737
  }),
11736
11738
  /* @__PURE__ */ jsx("th", {
11737
- className: "w-1/4 border-x-0 border-t-0 border-b border-border bg-transparent px-0 py-2 pr-6 text-left text-sm font-semibold text-foreground",
11739
+ className: "w-1/4",
11738
11740
  children: "Type"
11739
11741
  }),
11740
- /* @__PURE__ */ jsx("th", {
11741
- className: "border-x-0 border-t-0 border-b border-border bg-transparent px-0 py-2 text-left text-sm font-semibold text-foreground",
11742
- children: "Description"
11743
- })
11744
- ] }) }), /* @__PURE__ */ jsx("tbody", { children: rows.map((row, index) => {
11742
+ /* @__PURE__ */ jsx("th", { children: "Description" })
11743
+ ] }) }), /* @__PURE__ */ jsx("tbody", { children: rows.map((row) => {
11745
11744
  const { name, type, required, deprecated, children: description } = row.props;
11746
11745
  const defaultValue = displayValue(row.props.default);
11747
- const borderClass = index === rows.length - 1 ? "border-b-0" : "border-b";
11748
11746
  return /* @__PURE__ */ jsxs("tr", { children: [
11749
- /* @__PURE__ */ jsx("td", {
11750
- className: `${borderClass} border-x-0 border-t-0 border-border px-0 py-2 pr-6 align-top text-sm text-foreground`,
11751
- children: /* @__PURE__ */ jsxs("span", {
11752
- className: "inline-flex flex-wrap items-center gap-2",
11753
- children: [
11754
- name,
11755
- required ? /* @__PURE__ */ jsx(Badge, {
11756
- size: "xs",
11757
- tone: "primary",
11758
- children: "required"
11759
- }) : null,
11760
- deprecated ? /* @__PURE__ */ jsx(Badge, {
11761
- size: "xs",
11762
- children: "deprecated"
11763
- }) : null
11764
- ]
11765
- })
11766
- }),
11767
- /* @__PURE__ */ jsx("td", {
11768
- className: `${borderClass} border-x-0 border-t-0 border-border px-0 py-2 pr-6 align-top text-sm text-foreground`,
11769
- children: displayValue(type)
11770
- }),
11747
+ /* @__PURE__ */ jsx("td", { children: /* @__PURE__ */ jsxs("span", {
11748
+ className: "inline-flex flex-wrap items-center gap-2",
11749
+ children: [
11750
+ name,
11751
+ required ? /* @__PURE__ */ jsx(Badge, {
11752
+ size: "xs",
11753
+ tone: "primary",
11754
+ children: "required"
11755
+ }) : null,
11756
+ deprecated ? /* @__PURE__ */ jsx(Badge, {
11757
+ size: "xs",
11758
+ children: "deprecated"
11759
+ }) : null
11760
+ ]
11761
+ }) }),
11762
+ /* @__PURE__ */ jsx("td", { children: displayValue(type) }),
11771
11763
  /* @__PURE__ */ jsxs("td", {
11772
- className: `${borderClass} border-x-0 border-t-0 border-border px-0 py-2 align-top text-sm leading-6 text-foreground [&_p]:m-0`,
11764
+ className: "[&_p]:m-0",
11773
11765
  children: [description, defaultValue ? /* @__PURE__ */ jsxs("span", {
11774
- className: "mt-1 block text-sm text-muted-foreground",
11766
+ className: "mt-1 block text-muted-foreground",
11775
11767
  children: ["Default: ", defaultValue]
11776
11768
  }) : null]
11777
11769
  })
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@umami/shiso",
3
- "version": "1.10.0",
3
+ "version": "1.11.0",
4
4
  "description": "Open-source documentation framework for Markdown and MDX sites.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -22,7 +22,7 @@ export function CodeBlock({ children, className }: CodeBlockProps) {
22
22
  };
23
23
 
24
24
  return (
25
- <div data-slot="code-block" className="relative my-5 overflow-hidden rounded-lg bg-muted/50">
25
+ <div data-slot="code-block" className="relative my-5 overflow-hidden rounded-lg bg-card">
26
26
  <ScrollArea scrollbars="horizontal" className="w-full">
27
27
  <pre
28
28
  ref={textInput}
@@ -170,14 +170,17 @@ const NavigationButton = ({
170
170
  isPrev?: boolean;
171
171
  }) => {
172
172
  if (!url || !label) {
173
- return <div />;
173
+ return <div className="flex-1" />;
174
174
  }
175
175
 
176
176
  return (
177
177
  <Link
178
178
  to={url}
179
- className={cn('group my-3 inline-flex items-end gap-3 text-base text-foreground', {
180
- 'text-right': !isPrev,
179
+ // The link stretches across its half of the row so the whole box is
180
+ // clickable, not just the text. Vertical margin became padding for the
181
+ // same reason.
182
+ className={cn('group flex flex-1 items-end gap-3 py-3 text-base text-foreground', {
183
+ 'justify-end text-right': !isPrev,
181
184
  })}
182
185
  rel={isPrev ? 'prev' : 'next'}
183
186
  >
@@ -110,7 +110,7 @@ export function Card({
110
110
  }: CardProps) {
111
111
  const external = typeof href === 'string' && /^https?:\/\//i.test(href);
112
112
  const showArrow = arrow ?? external;
113
- const className = `${styles.card} ${type ? `${styles.cardTyped} ${styles[type]} ${CARD_TYPE_HOVER[type]}` : ''} ${horizontal ? styles.cardHorizontal : ''} ${img ? styles.cardImageLayout : ''}`;
113
+ const className = `${styles.card} ${type ? `${styles.cardTyped} ${styles[type]} ${CARD_TYPE_HOVER[type]}` : styles.cardPlain} ${horizontal ? styles.cardHorizontal : ''} ${img ? styles.cardImageLayout : ''}`;
114
114
  const content = (
115
115
  <CardPrimitive className={className}>
116
116
  <DocsCardContent
@@ -46,7 +46,7 @@ export function CodeGroup({ children }: CodeGroupProps) {
46
46
  <TabsPrimitive
47
47
  value={selected}
48
48
  onValueChange={setSelectedKey}
49
- className="my-4 gap-0 overflow-hidden rounded-lg bg-muted/50 [&_[data-slot=code-block]]:my-0 [&_[data-slot=code-block]]:rounded-none [&_[data-slot=code-block]]:border-0 [&_[data-slot=code-block]]:bg-transparent"
49
+ className="my-4 gap-0 overflow-hidden rounded-lg bg-card [&_[data-slot=code-block]]:my-0 [&_[data-slot=code-block]]:rounded-none [&_[data-slot=code-block]]:border-0 [&_[data-slot=code-block]]:bg-transparent"
50
50
  >
51
51
  <TabsList
52
52
  variant="line"
@@ -20,7 +20,7 @@ export function Expandable({ title, children, defaultOpen = false }: ExpandableP
20
20
  {title}
21
21
  </CollapsibleTrigger>
22
22
  <CollapsibleContent>
23
- <div className={styles.accordionContent}>{children}</div>
23
+ <div className={`${styles.accordionContent} ${styles.expandableContent}`}>{children}</div>
24
24
  </CollapsibleContent>
25
25
  </div>
26
26
  </Collapsible>
@@ -22,33 +22,26 @@ export function PropertiesTable({ children }: PropertiesTableProps) {
22
22
  return null;
23
23
  }
24
24
 
25
+ // Rendered as a plain table so the .docs-markdown table rules in global.css
26
+ // style it exactly like a GFM table; only column widths are set here.
25
27
  return (
26
- <div className="my-4 overflow-x-auto rounded-lg border border-border px-6 py-2">
27
- <table className="m-0 min-w-[40rem] table-fixed border-collapse border-0">
28
+ <div className="my-4 overflow-x-auto">
29
+ <table className="m-0 min-w-[40rem] table-fixed">
28
30
  <thead>
29
31
  <tr>
30
- <th className="w-1/5 border-x-0 border-t-0 border-b border-border bg-transparent px-0 py-2 pr-6 text-left text-sm font-semibold text-foreground">
31
- Name
32
- </th>
33
- <th className="w-1/4 border-x-0 border-t-0 border-b border-border bg-transparent px-0 py-2 pr-6 text-left text-sm font-semibold text-foreground">
34
- Type
35
- </th>
36
- <th className="border-x-0 border-t-0 border-b border-border bg-transparent px-0 py-2 text-left text-sm font-semibold text-foreground">
37
- Description
38
- </th>
32
+ <th className="w-1/5">Name</th>
33
+ <th className="w-1/4">Type</th>
34
+ <th>Description</th>
39
35
  </tr>
40
36
  </thead>
41
37
  <tbody>
42
- {rows.map((row, index) => {
38
+ {rows.map(row => {
43
39
  const { name, type, required, deprecated, children: description } = row.props;
44
40
  const defaultValue = displayValue(row.props.default);
45
- const borderClass = index === rows.length - 1 ? 'border-b-0' : 'border-b';
46
41
 
47
42
  return (
48
43
  <tr key={row.key ?? name}>
49
- <td
50
- className={`${borderClass} border-x-0 border-t-0 border-border px-0 py-2 pr-6 align-top text-sm text-foreground`}
51
- >
44
+ <td>
52
45
  <span className="inline-flex flex-wrap items-center gap-2">
53
46
  {name}
54
47
  {required ? (
@@ -59,17 +52,11 @@ export function PropertiesTable({ children }: PropertiesTableProps) {
59
52
  {deprecated ? <Badge size="xs">deprecated</Badge> : null}
60
53
  </span>
61
54
  </td>
62
- <td
63
- className={`${borderClass} border-x-0 border-t-0 border-border px-0 py-2 pr-6 align-top text-sm text-foreground`}
64
- >
65
- {displayValue(type)}
66
- </td>
67
- <td
68
- className={`${borderClass} border-x-0 border-t-0 border-border px-0 py-2 align-top text-sm leading-6 text-foreground [&_p]:m-0`}
69
- >
55
+ <td>{displayValue(type)}</td>
56
+ <td className="[&_p]:m-0">
70
57
  {description}
71
58
  {defaultValue ? (
72
- <span className="mt-1 block text-sm text-muted-foreground">
59
+ <span className="mt-1 block text-muted-foreground">
73
60
  Default: {defaultValue}
74
61
  </span>
75
62
  ) : null}
@@ -9,8 +9,9 @@ export const styles = {
9
9
  accordionItem: '',
10
10
  accordionTrigger: 'text-foreground',
11
11
  accordionContent: 'text-muted-foreground [&_p]:mt-0 [&_p:last-child]:mb-0',
12
- expandableTrigger:
13
- 'items-center px-4 py-3 text-sm font-normal text-foreground hover:no-underline',
12
+ expandableTrigger: 'items-center py-3 text-sm font-normal text-foreground hover:no-underline',
13
+ /* Indent by chevron width + gap so body text lines up with the title. */
14
+ expandableContent: 'pl-6',
14
15
 
15
16
  callout: 'my-4 flex items-start gap-3 rounded-lg border px-3 py-2.5 text-sm leading-6',
16
17
  calloutIcon: 'flex h-6 w-5 shrink-0 items-center justify-center [&_svg]:block [&_svg]:size-4',
@@ -27,7 +28,9 @@ export const styles = {
27
28
  'border-emerald-300 bg-emerald-50 text-emerald-900 dark:border-emerald-400/40 dark:bg-emerald-400/10 dark:text-emerald-300',
28
29
  danger: 'border-destructive/40 bg-destructive/10 text-destructive',
29
30
 
30
- card: 'block h-full gap-0 rounded-lg border border-border bg-transparent p-4 text-base ring-0 hover:border-primary',
31
+ card: 'block h-full gap-0 rounded-lg border border-border p-4 text-sm ring-0 hover:border-primary',
32
+ /* Typed cards bring their own tinted background; plain cards get the surface tint. */
33
+ cardPlain: 'bg-card',
31
34
  cardHorizontal:
32
35
  '[&_[data-slot=card-inner]]:items-center [&_[data-slot=card-main]]:flex-row [&_[data-slot=card-main]]:items-center [&_[data-slot=card-main]]:gap-3 [&_[data-slot=card-body]]:m-0 [&_[data-slot=card-header]]:flex-row [&_[data-slot=card-header]]:items-center [&_[data-slot=card-header]]:gap-2',
33
36
  cardTyped:
@@ -38,7 +41,7 @@ export const styles = {
38
41
  cardMain: 'flex min-w-0 flex-col gap-2',
39
42
  cardHeader: 'flex flex-col items-start gap-3',
40
43
  cardIcon: 'inline-flex shrink-0 items-center justify-center [&_img]:size-6 [&_svg]:size-6',
41
- cardTitle: 'text-base font-semibold text-foreground',
44
+ cardTitle: 'text-sm font-semibold text-foreground',
42
45
  cardBody: 'text-muted-foreground [&>:first-child]:mt-0 [&>:last-child]:mb-0',
43
46
  cardCta:
44
47
  'flex shrink-0 items-center gap-[0.35rem] text-[0.9rem] font-medium text-muted-foreground',
@@ -186,8 +186,8 @@
186
186
  font-size: 0.875rem;
187
187
  }
188
188
 
189
- /* Styled to match the PropertiesTable component: rounded outer border,
190
- horizontal row separators only, and no header fill. */
189
+ /* Shared by GFM tables and the PropertiesTable component: rounded outer border,
190
+ horizontal row separators only, and a card-colored header fill. */
191
191
  .docs-markdown table:not(:where(.not-prose, .not-prose *)) {
192
192
  width: 100%;
193
193
  margin: 1rem 0;
@@ -222,10 +222,19 @@
222
222
  }
223
223
 
224
224
  .docs-markdown th:not(:where(.not-prose, .not-prose *)) {
225
- background: transparent;
225
+ background: var(--card);
226
226
  font-weight: 600;
227
227
  }
228
228
 
229
+ /* The header fill must follow the table's rounded top corners. */
230
+ .docs-markdown th:first-child:not(:where(.not-prose, .not-prose *)) {
231
+ border-top-left-radius: calc(var(--radius-lg) - 1px);
232
+ }
233
+
234
+ .docs-markdown th:last-child:not(:where(.not-prose, .not-prose *)) {
235
+ border-top-right-radius: calc(var(--radius-lg) - 1px);
236
+ }
237
+
229
238
  .docs-markdown tbody tr:last-child td:not(:where(.not-prose, .not-prose *)) {
230
239
  border-bottom: none;
231
240
  }