@activecollab/components 2.0.415 → 2.0.417

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 (44) hide show
  1. package/dist/cjs/components/PortableText/Styles.js +20 -2
  2. package/dist/cjs/components/PortableText/Styles.js.map +1 -1
  3. package/dist/cjs/components/PortableText/renderers.js +15 -6
  4. package/dist/cjs/components/PortableText/renderers.js.map +1 -1
  5. package/dist/cjs/components/PortableText/types.js +22 -2
  6. package/dist/cjs/components/PortableText/types.js.map +1 -1
  7. package/dist/cjs/components/PortableText/types.test.js +138 -0
  8. package/dist/cjs/components/PortableText/types.test.js.map +1 -1
  9. package/dist/cjs/components/TitledText/TitledText.js +5 -1
  10. package/dist/cjs/components/TitledText/TitledText.js.map +1 -1
  11. package/dist/cjs/presentation/shared/FeatureAvailability.js +217 -0
  12. package/dist/cjs/presentation/shared/FeatureAvailability.js.map +1 -0
  13. package/dist/cjs/presentation/shared/index.js +16 -1
  14. package/dist/cjs/presentation/shared/index.js.map +1 -1
  15. package/dist/esm/components/PortableText/Styles.d.ts +19 -1
  16. package/dist/esm/components/PortableText/Styles.d.ts.map +1 -1
  17. package/dist/esm/components/PortableText/Styles.js +20 -2
  18. package/dist/esm/components/PortableText/Styles.js.map +1 -1
  19. package/dist/esm/components/PortableText/renderers.d.ts.map +1 -1
  20. package/dist/esm/components/PortableText/renderers.js +15 -6
  21. package/dist/esm/components/PortableText/renderers.js.map +1 -1
  22. package/dist/esm/components/PortableText/types.d.ts +12 -1
  23. package/dist/esm/components/PortableText/types.d.ts.map +1 -1
  24. package/dist/esm/components/PortableText/types.js +18 -2
  25. package/dist/esm/components/PortableText/types.js.map +1 -1
  26. package/dist/esm/components/PortableText/types.test.js +138 -0
  27. package/dist/esm/components/PortableText/types.test.js.map +1 -1
  28. package/dist/esm/components/TitledText/TitledText.d.ts +7 -3
  29. package/dist/esm/components/TitledText/TitledText.d.ts.map +1 -1
  30. package/dist/esm/components/TitledText/TitledText.js +5 -1
  31. package/dist/esm/components/TitledText/TitledText.js.map +1 -1
  32. package/dist/esm/presentation/shared/FeatureAvailability.d.ts +52 -0
  33. package/dist/esm/presentation/shared/FeatureAvailability.d.ts.map +1 -0
  34. package/dist/esm/presentation/shared/FeatureAvailability.js +203 -0
  35. package/dist/esm/presentation/shared/FeatureAvailability.js.map +1 -0
  36. package/dist/esm/presentation/shared/index.d.ts +2 -0
  37. package/dist/esm/presentation/shared/index.d.ts.map +1 -1
  38. package/dist/esm/presentation/shared/index.js +1 -0
  39. package/dist/esm/presentation/shared/index.js.map +1 -1
  40. package/dist/index.js +62 -11
  41. package/dist/index.js.map +1 -1
  42. package/dist/index.min.js +1 -1
  43. package/dist/index.min.js.map +1 -1
  44. package/package.json +1 -1
@@ -0,0 +1,203 @@
1
+ import React from "react";
2
+ import styled from "styled-components";
3
+
4
+ /**
5
+ * FeatureAvailability — a compact, data-driven block that states where a
6
+ * feature is available: on which hosting, on which plans and to which roles.
7
+ *
8
+ * It is the reusable version of the availability panel used in the Help Docs
9
+ * example articles, extracted so several stories (and, later, the real
10
+ * PortableText renderer) can share one implementation and one visual language:
11
+ *
12
+ * • green check → available
13
+ * • analog clock → decided but not shipped yet ("to be determined")
14
+ * • strikethrough → not included
15
+ *
16
+ * The component is theme-agnostic (all colors come from `--color-*` tokens) and
17
+ * self-contained (it carries its own typography, so it renders correctly
18
+ * outside the article body as well).
19
+ */
20
+
21
+ /* ------------------------------------------------------------------ */
22
+ /* Marks */
23
+ /* ------------------------------------------------------------------ */
24
+
25
+ const CheckMark = () => /*#__PURE__*/React.createElement("svg", {
26
+ className: "ap-ic ap-yes",
27
+ viewBox: "0 0 16 16",
28
+ width: "15",
29
+ height: "15",
30
+ "aria-hidden": true
31
+ }, /*#__PURE__*/React.createElement("path", {
32
+ d: "M13 4.6 L6.5 11.4 L3 8",
33
+ fill: "none",
34
+ stroke: "currentColor",
35
+ strokeWidth: "2",
36
+ strokeLinecap: "round",
37
+ strokeLinejoin: "round"
38
+ }));
39
+ const ClockMark = () => /*#__PURE__*/React.createElement("svg", {
40
+ className: "ap-ic ap-clock",
41
+ viewBox: "0 0 16 16",
42
+ width: "14",
43
+ height: "14",
44
+ "aria-hidden": true
45
+ }, /*#__PURE__*/React.createElement("circle", {
46
+ cx: "8",
47
+ cy: "8",
48
+ r: "6.2",
49
+ fill: "none",
50
+ stroke: "currentColor",
51
+ strokeWidth: "1.4"
52
+ }), /*#__PURE__*/React.createElement("path", {
53
+ d: "M8 8 L8 4.4 M8 8 L10.5 9.3",
54
+ fill: "none",
55
+ stroke: "currentColor",
56
+ strokeWidth: "1.4",
57
+ strokeLinecap: "round"
58
+ }));
59
+ const StatusIcon = _ref => {
60
+ let status = _ref.status;
61
+ if (status === "available") {
62
+ return /*#__PURE__*/React.createElement(CheckMark, null);
63
+ }
64
+ if (status === "pending") {
65
+ return /*#__PURE__*/React.createElement(ClockMark, null);
66
+ }
67
+ return null;
68
+ };
69
+
70
+ /** A nested mark inside parentheses, e.g. "PM ✓". */
71
+ const ChildMark = _ref2 => {
72
+ let mark = _ref2.mark;
73
+ return mark.status === "excluded" ? /*#__PURE__*/React.createElement("span", {
74
+ className: "ap-excluded"
75
+ }, mark.label) : /*#__PURE__*/React.createElement(React.Fragment, null, mark.label, " ", /*#__PURE__*/React.createElement(StatusIcon, {
76
+ status: mark.status
77
+ }));
78
+ };
79
+ const Mark = _ref3 => {
80
+ var _mark$children;
81
+ let mark = _ref3.mark,
82
+ iconPosition = _ref3.iconPosition;
83
+ const hasChildren = Boolean(mark.children && mark.children.length > 0);
84
+ const excluded = mark.status === "excluded";
85
+ const icon = hasChildren ? null : /*#__PURE__*/React.createElement(StatusIcon, {
86
+ status: mark.status
87
+ });
88
+ return /*#__PURE__*/React.createElement("span", {
89
+ className: excluded ? "ap-item ap-excluded" : "ap-item"
90
+ }, iconPosition === "before" && icon, mark.label, mark.note && /*#__PURE__*/React.createElement("span", {
91
+ className: "ap-sub"
92
+ }, mark.note), mark.pending && /*#__PURE__*/React.createElement("span", {
93
+ className: "ap-tbd"
94
+ }, mark.pending), hasChildren && /*#__PURE__*/React.createElement("span", {
95
+ className: "ap-sub"
96
+ }, "(", (_mark$children = mark.children) == null ? void 0 : _mark$children.map((child, index) => /*#__PURE__*/React.createElement(React.Fragment, {
97
+ key: child.label
98
+ }, index > 0 && " / ", /*#__PURE__*/React.createElement(ChildMark, {
99
+ mark: child
100
+ }))), ")"), iconPosition === "after" && icon);
101
+ };
102
+
103
+ /* ------------------------------------------------------------------ */
104
+ /* Panel */
105
+ /* ------------------------------------------------------------------ */
106
+
107
+ const StyledPanel = styled.div.withConfig({
108
+ displayName: "FeatureAvailability__StyledPanel",
109
+ componentId: "sc-42kyhy-0"
110
+ })(["font-family:-apple-system,BlinkMacSystemFont,\"Roboto\",\"Helvetica Neue\",Arial,sans-serif;font-size:13px;line-height:20px;color:var(--color-theme-900);padding:12px 16px;border:1px solid var(--color-theme-300);border-radius:10px;background:var(--color-theme-100);.ap-row{display:flex;gap:10px;padding:6px 0;align-items:baseline;flex-wrap:wrap;}.ap-row:first-of-type{padding-top:0;}.ap-row:last-of-type{padding-bottom:0;}.ap-row + .ap-row{border-top:1px dashed var(--color-theme-300);}.ap-label{flex:0 0 84px;color:var(--color-theme-700);font-weight:600;font-size:13px;}.ap-vals{flex:1 1 240px;display:flex;flex-wrap:wrap;gap:4px 14px;align-items:center;}.ap-item{display:inline-flex;align-items:center;gap:5px;white-space:nowrap;}.ap-sub{color:var(--color-theme-600);}.ap-tbd{color:var(--color-theme-600);font-style:italic;}.ap-sep{color:var(--color-theme-400);}.ap-excluded{text-decoration:line-through;color:var(--color-theme-500);}.ap-ic{flex:none;vertical-align:-2px;}.ap-yes{color:var(--color-green-olive-drab);}.ap-clock{color:var(--color-theme-600);}"]);
111
+ export const FeatureAvailability = _ref4 => {
112
+ let rows = _ref4.rows,
113
+ className = _ref4.className;
114
+ return /*#__PURE__*/React.createElement(StyledPanel, {
115
+ className: className,
116
+ "aria-label": "Feature availability"
117
+ }, rows.map(row => {
118
+ var _row$iconPosition;
119
+ const iconPosition = (_row$iconPosition = row.iconPosition) != null ? _row$iconPosition : "after";
120
+ return /*#__PURE__*/React.createElement("div", {
121
+ className: "ap-row",
122
+ key: row.label
123
+ }, /*#__PURE__*/React.createElement("span", {
124
+ className: "ap-label"
125
+ }, row.label), /*#__PURE__*/React.createElement("span", {
126
+ className: "ap-vals"
127
+ }, row.items.map((item, index) => /*#__PURE__*/React.createElement(React.Fragment, {
128
+ key: item.label
129
+ }, index > 0 && row.separated && /*#__PURE__*/React.createElement("span", {
130
+ className: "ap-sep"
131
+ }, "\xB7"), /*#__PURE__*/React.createElement(Mark, {
132
+ mark: item,
133
+ iconPosition: iconPosition
134
+ })))));
135
+ }));
136
+ };
137
+
138
+ /* ------------------------------------------------------------------ */
139
+ /* Illustrative defaults */
140
+ /* ------------------------------------------------------------------ */
141
+
142
+ /**
143
+ * A realistic GA feature: shipped on Cloud, self-hosted still to be scheduled,
144
+ * on every plan, for internal roles but not for clients. Exercises all three
145
+ * marks (check / clock / strikethrough) out of the box.
146
+ */
147
+ export const DEFAULT_FEATURE_AVAILABILITY = {
148
+ rows: [{
149
+ label: "Availability",
150
+ iconPosition: "before",
151
+ separated: true,
152
+ items: [{
153
+ label: "Cloud",
154
+ status: "available",
155
+ note: "(stable, since Jun 17 2026)"
156
+ }, {
157
+ label: "Self-Hosted",
158
+ status: "pending",
159
+ pending: "to be determined"
160
+ }]
161
+ }, {
162
+ label: "Plans",
163
+ items: [{
164
+ label: "S–Mega",
165
+ status: "available"
166
+ }, {
167
+ label: "Plus",
168
+ status: "available"
169
+ }, {
170
+ label: "Pro",
171
+ status: "available"
172
+ }, {
173
+ label: "Pro+Get-Paid",
174
+ status: "available"
175
+ }]
176
+ }, {
177
+ label: "Roles",
178
+ items: [{
179
+ label: "Owner",
180
+ status: "available"
181
+ }, {
182
+ label: "Member",
183
+ status: "available"
184
+ }, {
185
+ label: "Member+",
186
+ status: "available",
187
+ children: [{
188
+ label: "PM",
189
+ status: "available"
190
+ }, {
191
+ label: "FM",
192
+ status: "available"
193
+ }]
194
+ }, {
195
+ label: "Client",
196
+ status: "excluded"
197
+ }, {
198
+ label: "Client+",
199
+ status: "excluded"
200
+ }]
201
+ }]
202
+ };
203
+ //# sourceMappingURL=FeatureAvailability.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FeatureAvailability.js","names":["React","styled","CheckMark","createElement","className","viewBox","width","height","d","fill","stroke","strokeWidth","strokeLinecap","strokeLinejoin","ClockMark","cx","cy","r","StatusIcon","_ref","status","ChildMark","_ref2","mark","label","Fragment","Mark","_ref3","_mark$children","iconPosition","hasChildren","Boolean","children","length","excluded","icon","note","pending","map","child","index","key","StyledPanel","div","withConfig","displayName","componentId","FeatureAvailability","_ref4","rows","row","_row$iconPosition","items","item","separated","DEFAULT_FEATURE_AVAILABILITY"],"sources":["../../../../src/presentation/shared/FeatureAvailability.tsx"],"sourcesContent":["import React, { ReactElement } from \"react\";\n\nimport styled from \"styled-components\";\n\n/**\n * FeatureAvailability — a compact, data-driven block that states where a\n * feature is available: on which hosting, on which plans and to which roles.\n *\n * It is the reusable version of the availability panel used in the Help Docs\n * example articles, extracted so several stories (and, later, the real\n * PortableText renderer) can share one implementation and one visual language:\n *\n * • green check → available\n * • analog clock → decided but not shipped yet (\"to be determined\")\n * • strikethrough → not included\n *\n * The component is theme-agnostic (all colors come from `--color-*` tokens) and\n * self-contained (it carries its own typography, so it renders correctly\n * outside the article body as well).\n */\n\nexport type AvailabilityStatus = \"available\" | \"pending\" | \"excluded\";\n\nexport interface AvailabilityMark {\n label: string;\n status: AvailabilityStatus;\n /** Muted parenthetical, e.g. \"(stable, since Jun 17 2026)\". Include the parens. */\n note?: string;\n /** Italic muted trailing text for the pending state, e.g. \"to be determined\". */\n pending?: string;\n /**\n * Nested marks rendered in parentheses, e.g. Member+ (PM ✓ / FM ✓). When a\n * mark has children it does not render its own status icon — the children\n * carry the marks.\n */\n children?: AvailabilityMark[];\n}\n\nexport interface AvailabilityRow {\n label: string;\n items: AvailabilityMark[];\n /** Icon before the label (Availability row) or after it (Plans / Roles). Default \"after\". */\n iconPosition?: \"before\" | \"after\";\n /** Separate items with a middot (used on the Availability row). Default false. */\n separated?: boolean;\n}\n\nexport interface FeatureAvailabilityProps {\n rows: AvailabilityRow[];\n className?: string;\n}\n\n/* ------------------------------------------------------------------ */\n/* Marks */\n/* ------------------------------------------------------------------ */\n\nconst CheckMark = (): ReactElement => (\n <svg\n className=\"ap-ic ap-yes\"\n viewBox=\"0 0 16 16\"\n width=\"15\"\n height=\"15\"\n aria-hidden\n >\n <path\n d=\"M13 4.6 L6.5 11.4 L3 8\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\nconst ClockMark = (): ReactElement => (\n <svg\n className=\"ap-ic ap-clock\"\n viewBox=\"0 0 16 16\"\n width=\"14\"\n height=\"14\"\n aria-hidden\n >\n <circle\n cx=\"8\"\n cy=\"8\"\n r=\"6.2\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.4\"\n />\n <path\n d=\"M8 8 L8 4.4 M8 8 L10.5 9.3\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.4\"\n strokeLinecap=\"round\"\n />\n </svg>\n);\n\nconst StatusIcon = ({\n status,\n}: {\n status: AvailabilityStatus;\n}): ReactElement | null => {\n if (status === \"available\") {\n return <CheckMark />;\n }\n if (status === \"pending\") {\n return <ClockMark />;\n }\n return null;\n};\n\n/** A nested mark inside parentheses, e.g. \"PM ✓\". */\nconst ChildMark = ({ mark }: { mark: AvailabilityMark }): ReactElement =>\n mark.status === \"excluded\" ? (\n <span className=\"ap-excluded\">{mark.label}</span>\n ) : (\n <>\n {mark.label} <StatusIcon status={mark.status} />\n </>\n );\n\nconst Mark = ({\n mark,\n iconPosition,\n}: {\n mark: AvailabilityMark;\n iconPosition: \"before\" | \"after\";\n}): ReactElement => {\n const hasChildren = Boolean(mark.children && mark.children.length > 0);\n const excluded = mark.status === \"excluded\";\n const icon = hasChildren ? null : <StatusIcon status={mark.status} />;\n\n return (\n <span className={excluded ? \"ap-item ap-excluded\" : \"ap-item\"}>\n {iconPosition === \"before\" && icon}\n {mark.label}\n {mark.note && <span className=\"ap-sub\">{mark.note}</span>}\n {mark.pending && <span className=\"ap-tbd\">{mark.pending}</span>}\n {hasChildren && (\n <span className=\"ap-sub\">\n (\n {mark.children?.map((child, index) => (\n <React.Fragment key={child.label}>\n {index > 0 && \" / \"}\n <ChildMark mark={child} />\n </React.Fragment>\n ))}\n )\n </span>\n )}\n {iconPosition === \"after\" && icon}\n </span>\n );\n};\n\n/* ------------------------------------------------------------------ */\n/* Panel */\n/* ------------------------------------------------------------------ */\n\nconst StyledPanel = styled.div`\n font-family: -apple-system, BlinkMacSystemFont, \"Roboto\", \"Helvetica Neue\",\n Arial, sans-serif;\n font-size: 13px;\n line-height: 20px;\n color: var(--color-theme-900);\n padding: 12px 16px;\n border: 1px solid var(--color-theme-300);\n border-radius: 10px;\n background: var(--color-theme-100);\n\n .ap-row {\n display: flex;\n gap: 10px;\n padding: 6px 0;\n align-items: baseline;\n flex-wrap: wrap;\n }\n\n .ap-row:first-of-type {\n padding-top: 0;\n }\n\n .ap-row:last-of-type {\n padding-bottom: 0;\n }\n\n .ap-row + .ap-row {\n border-top: 1px dashed var(--color-theme-300);\n }\n\n .ap-label {\n flex: 0 0 84px;\n color: var(--color-theme-700);\n font-weight: 600;\n font-size: 13px;\n }\n\n .ap-vals {\n flex: 1 1 240px;\n display: flex;\n flex-wrap: wrap;\n gap: 4px 14px;\n align-items: center;\n }\n\n .ap-item {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n white-space: nowrap;\n }\n\n .ap-sub {\n color: var(--color-theme-600);\n }\n\n .ap-tbd {\n color: var(--color-theme-600);\n font-style: italic;\n }\n\n .ap-sep {\n color: var(--color-theme-400);\n }\n\n .ap-excluded {\n text-decoration: line-through;\n color: var(--color-theme-500);\n }\n\n .ap-ic {\n flex: none;\n vertical-align: -2px;\n }\n\n .ap-yes {\n color: var(--color-green-olive-drab);\n }\n\n .ap-clock {\n color: var(--color-theme-600);\n }\n`;\n\nexport const FeatureAvailability = ({\n rows,\n className,\n}: FeatureAvailabilityProps): ReactElement => (\n <StyledPanel className={className} aria-label=\"Feature availability\">\n {rows.map((row) => {\n const iconPosition = row.iconPosition ?? \"after\";\n\n return (\n <div className=\"ap-row\" key={row.label}>\n <span className=\"ap-label\">{row.label}</span>\n <span className=\"ap-vals\">\n {row.items.map((item, index) => (\n <React.Fragment key={item.label}>\n {index > 0 && row.separated && (\n <span className=\"ap-sep\">·</span>\n )}\n <Mark mark={item} iconPosition={iconPosition} />\n </React.Fragment>\n ))}\n </span>\n </div>\n );\n })}\n </StyledPanel>\n);\n\n/* ------------------------------------------------------------------ */\n/* Illustrative defaults */\n/* ------------------------------------------------------------------ */\n\n/**\n * A realistic GA feature: shipped on Cloud, self-hosted still to be scheduled,\n * on every plan, for internal roles but not for clients. Exercises all three\n * marks (check / clock / strikethrough) out of the box.\n */\nexport const DEFAULT_FEATURE_AVAILABILITY: FeatureAvailabilityProps = {\n rows: [\n {\n label: \"Availability\",\n iconPosition: \"before\",\n separated: true,\n items: [\n {\n label: \"Cloud\",\n status: \"available\",\n note: \"(stable, since Jun 17 2026)\",\n },\n {\n label: \"Self-Hosted\",\n status: \"pending\",\n pending: \"to be determined\",\n },\n ],\n },\n {\n label: \"Plans\",\n items: [\n { label: \"S–Mega\", status: \"available\" },\n { label: \"Plus\", status: \"available\" },\n { label: \"Pro\", status: \"available\" },\n { label: \"Pro+Get-Paid\", status: \"available\" },\n ],\n },\n {\n label: \"Roles\",\n items: [\n { label: \"Owner\", status: \"available\" },\n { label: \"Member\", status: \"available\" },\n {\n label: \"Member+\",\n status: \"available\",\n children: [\n { label: \"PM\", status: \"available\" },\n { label: \"FM\", status: \"available\" },\n ],\n },\n { label: \"Client\", status: \"excluded\" },\n { label: \"Client+\", status: \"excluded\" },\n ],\n },\n ],\n};\n"],"mappings":"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","ignoreList":[]}
@@ -36,4 +36,6 @@ export { BackupCodesDialogs, CreateLoginCodeDialogs } from "./TwoFactorDialogs";
36
36
  export type { BackupCodesDialogsProps, CreateLoginCodeDialogsProps, } from "./TwoFactorDialogs";
37
37
  export { SettingsHeader, SettingsContent, StyledSettingRow, RowText, SettingRow, } from "./settings";
38
38
  export type { SettingsHeaderProps, SettingRowProps } from "./settings";
39
+ export { FeatureAvailability, DEFAULT_FEATURE_AVAILABILITY, } from "./FeatureAvailability";
40
+ export type { FeatureAvailabilityProps, AvailabilityRow, AvailabilityMark, AvailabilityStatus, } from "./FeatureAvailability";
39
41
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/presentation/shared/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,cAAc,UAAU,CAAC;AACzB,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACzE,YAAY,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACrE,YAAY,EACV,eAAe,EACf,sBAAsB,EACtB,cAAc,GACf,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EACL,aAAa,EACb,cAAc,EACd,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,YAAY,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAChF,YAAY,EAAE,kCAAkC,EAAE,MAAM,iCAAiC,CAAC;AAC1F,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EACX,oBAAoB,EACpB,wBAAwB,GACzB,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACV,4BAA4B,EAC5B,qBAAqB,EACrB,UAAU,EACV,iBAAiB,EACjB,UAAU,GACX,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,UAAU,GACX,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,iBAAiB,EACjB,QAAQ,EACR,OAAO,EACP,KAAK,EACL,aAAa,EACb,eAAe,GAChB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,UAAU,EACV,SAAS,EACT,KAAK,EACL,YAAY,EACZ,UAAU,EACV,UAAU,EACV,cAAc,GACf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACzE,YAAY,EACV,oBAAoB,EACpB,wBAAwB,GACzB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAChF,YAAY,EACV,uBAAuB,EACvB,2BAA2B,GAC5B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,OAAO,EACP,UAAU,GACX,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/presentation/shared/index.ts"],"names":[],"mappings":"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"}
@@ -23,4 +23,5 @@ export { UserMenu } from "./UserMenu";
23
23
  export { TwoFactorShield } from "./TwoFactorShield";
24
24
  export { BackupCodesDialogs, CreateLoginCodeDialogs } from "./TwoFactorDialogs";
25
25
  export { SettingsHeader, SettingsContent, StyledSettingRow, RowText, SettingRow } from "./settings";
26
+ export { FeatureAvailability, DEFAULT_FEATURE_AVAILABILITY } from "./FeatureAvailability";
26
27
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["MainLogo","RoundAvatar","PresentationShell","StyledPagePaper","PageHeader","ProjectPageHeader","TabHeader","FloatingControls","MessageDialog","DocLinkContext","messageComponents","HelpAndSupportMenu","LinkingCommandsButton","LinkBranchOrPullRequestDialog","ConnectRepositoryDialog","RepositorySelect","buildRepoOptions","CONNECTIONS","PROJECT_REPOSITORIES","CONNECTABLE_REPOSITORIES","WebhookLogsDialog","WEBHOOK_CONNECTIONS","WEBHOOK_REPOSITORIES","SourceCodeSection","IssueRow","CodeRow","Spine","HistoryDialog","CompletedHeader","SuggestSubtasksButton","TaskOptionsMenu","TaskListOptionsMenu","UserMenu","TwoFactorShield","BackupCodesDialogs","CreateLoginCodeDialogs","SettingsHeader","SettingsContent","StyledSettingRow","RowText","SettingRow"],"sources":["../../../../src/presentation/shared/index.ts"],"sourcesContent":["/**\n * Shared building blocks for the Presentation mock-ups (`Presentation/*`\n * stories). The application shell, page headers, tab bar and small widgets are\n * defined once here and reused by the List view, Column view, Task sheet and\n * empty-page stories so the chrome stays identical and in one place.\n */\nexport * from \"./tokens\";\nexport { MainLogo } from \"./MainLogo\";\nexport { RoundAvatar } from \"./RoundAvatar\";\nexport { PresentationShell, StyledPagePaper } from \"./PresentationShell\";\nexport type { PresentationShellProps } from \"./PresentationShell\";\nexport { PageHeader, ProjectPageHeader, TabHeader } from \"./headers\";\nexport type {\n PageHeaderProps,\n ProjectPageHeaderProps,\n TabHeaderProps,\n} from \"./headers\";\nexport { FloatingControls } from \"./FloatingControls\";\nexport {\n MessageDialog,\n DocLinkContext,\n messageComponents,\n} from \"./MessageDialog\";\nexport type {\n MessageDialogProps,\n MessageDialogSize,\n OpenArticleHandler,\n} from \"./MessageDialog\";\nexport { HelpAndSupportMenu } from \"./HelpAndSupportMenu\";\nexport type { HelpAndSupportMenuProps } from \"./HelpAndSupportMenu\";\nexport { LinkingCommandsButton } from \"./LinkingCommandsButton\";\nexport { LinkBranchOrPullRequestDialog } from \"./LinkBranchOrPullRequestDialog\";\nexport type { LinkBranchOrPullRequestDialogProps } from \"./LinkBranchOrPullRequestDialog\";\nexport {\n ConnectRepositoryDialog,\n RepositorySelect,\n buildRepoOptions,\n CONNECTIONS,\n PROJECT_REPOSITORIES,\n CONNECTABLE_REPOSITORIES,\n} from \"./ConnectRepositoryDialog\";\nexport type {\n ConnectRepositoryDialogProps,\n RepositorySelectProps,\n Connection,\n ConnectionService,\n Repository,\n} from \"./ConnectRepositoryDialog\";\nexport {\n WebhookLogsDialog,\n WEBHOOK_CONNECTIONS,\n WEBHOOK_REPOSITORIES,\n} from \"./WebhookLogsDialog\";\nexport type {\n WebhookLogsDialogProps,\n WebhookConnection,\n WebhookRepository,\n WebhookLog,\n} from \"./WebhookLogsDialog\";\nexport {\n SourceCodeSection,\n IssueRow,\n CodeRow,\n Spine,\n HistoryDialog,\n CompletedHeader,\n} from \"./SourceCodeSection\";\nexport type {\n IssueEntry,\n CodeEntry,\n Stage,\n HistoryEvent,\n StageState,\n CodeStatus,\n SectionVariant,\n} from \"./SourceCodeSection\";\nexport { SuggestSubtasksButton } from \"./SuggestSubtasksButton\";\nexport { TaskOptionsMenu, TaskListOptionsMenu } from \"./TaskOptionsMenu\";\nexport type {\n TaskOptionsMenuProps,\n TaskListOptionsMenuProps,\n} from \"./TaskOptionsMenu\";\nexport { UserMenu } from \"./UserMenu\";\nexport type { UserMenuProps, UserMenuVariant } from \"./UserMenu\";\nexport { TwoFactorShield } from \"./TwoFactorShield\";\nexport type { TwoFactorShieldProps } from \"./TwoFactorShield\";\nexport { BackupCodesDialogs, CreateLoginCodeDialogs } from \"./TwoFactorDialogs\";\nexport type {\n BackupCodesDialogsProps,\n CreateLoginCodeDialogsProps,\n} from \"./TwoFactorDialogs\";\nexport {\n SettingsHeader,\n SettingsContent,\n StyledSettingRow,\n RowText,\n SettingRow,\n} from \"./settings\";\nexport type { SettingsHeaderProps, SettingRowProps } from \"./settings\";\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,UAAU;AACxB,SAASA,QAAQ,QAAQ,YAAY;AACrC,SAASC,WAAW,QAAQ,eAAe;AAC3C,SAASC,iBAAiB,EAAEC,eAAe,QAAQ,qBAAqB;AAExE,SAASC,UAAU,EAAEC,iBAAiB,EAAEC,SAAS,QAAQ,WAAW;AAMpE,SAASC,gBAAgB,QAAQ,oBAAoB;AACrD,SACEC,aAAa,EACbC,cAAc,EACdC,iBAAiB,QACZ,iBAAiB;AAMxB,SAASC,kBAAkB,QAAQ,sBAAsB;AAEzD,SAASC,qBAAqB,QAAQ,yBAAyB;AAC/D,SAASC,6BAA6B,QAAQ,iCAAiC;AAE/E,SACEC,uBAAuB,EACvBC,gBAAgB,EAChBC,gBAAgB,EAChBC,WAAW,EACXC,oBAAoB,EACpBC,wBAAwB,QACnB,2BAA2B;AAQlC,SACEC,iBAAiB,EACjBC,mBAAmB,EACnBC,oBAAoB,QACf,qBAAqB;AAO5B,SACEC,iBAAiB,EACjBC,QAAQ,EACRC,OAAO,EACPC,KAAK,EACLC,aAAa,EACbC,eAAe,QACV,qBAAqB;AAU5B,SAASC,qBAAqB,QAAQ,yBAAyB;AAC/D,SAASC,eAAe,EAAEC,mBAAmB,QAAQ,mBAAmB;AAKxE,SAASC,QAAQ,QAAQ,YAAY;AAErC,SAASC,eAAe,QAAQ,mBAAmB;AAEnD,SAASC,kBAAkB,EAAEC,sBAAsB,QAAQ,oBAAoB;AAK/E,SACEC,cAAc,EACdC,eAAe,EACfC,gBAAgB,EAChBC,OAAO,EACPC,UAAU,QACL,YAAY","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["MainLogo","RoundAvatar","PresentationShell","StyledPagePaper","PageHeader","ProjectPageHeader","TabHeader","FloatingControls","MessageDialog","DocLinkContext","messageComponents","HelpAndSupportMenu","LinkingCommandsButton","LinkBranchOrPullRequestDialog","ConnectRepositoryDialog","RepositorySelect","buildRepoOptions","CONNECTIONS","PROJECT_REPOSITORIES","CONNECTABLE_REPOSITORIES","WebhookLogsDialog","WEBHOOK_CONNECTIONS","WEBHOOK_REPOSITORIES","SourceCodeSection","IssueRow","CodeRow","Spine","HistoryDialog","CompletedHeader","SuggestSubtasksButton","TaskOptionsMenu","TaskListOptionsMenu","UserMenu","TwoFactorShield","BackupCodesDialogs","CreateLoginCodeDialogs","SettingsHeader","SettingsContent","StyledSettingRow","RowText","SettingRow","FeatureAvailability","DEFAULT_FEATURE_AVAILABILITY"],"sources":["../../../../src/presentation/shared/index.ts"],"sourcesContent":["/**\n * Shared building blocks for the Presentation mock-ups (`Presentation/*`\n * stories). The application shell, page headers, tab bar and small widgets are\n * defined once here and reused by the List view, Column view, Task sheet and\n * empty-page stories so the chrome stays identical and in one place.\n */\nexport * from \"./tokens\";\nexport { MainLogo } from \"./MainLogo\";\nexport { RoundAvatar } from \"./RoundAvatar\";\nexport { PresentationShell, StyledPagePaper } from \"./PresentationShell\";\nexport type { PresentationShellProps } from \"./PresentationShell\";\nexport { PageHeader, ProjectPageHeader, TabHeader } from \"./headers\";\nexport type {\n PageHeaderProps,\n ProjectPageHeaderProps,\n TabHeaderProps,\n} from \"./headers\";\nexport { FloatingControls } from \"./FloatingControls\";\nexport {\n MessageDialog,\n DocLinkContext,\n messageComponents,\n} from \"./MessageDialog\";\nexport type {\n MessageDialogProps,\n MessageDialogSize,\n OpenArticleHandler,\n} from \"./MessageDialog\";\nexport { HelpAndSupportMenu } from \"./HelpAndSupportMenu\";\nexport type { HelpAndSupportMenuProps } from \"./HelpAndSupportMenu\";\nexport { LinkingCommandsButton } from \"./LinkingCommandsButton\";\nexport { LinkBranchOrPullRequestDialog } from \"./LinkBranchOrPullRequestDialog\";\nexport type { LinkBranchOrPullRequestDialogProps } from \"./LinkBranchOrPullRequestDialog\";\nexport {\n ConnectRepositoryDialog,\n RepositorySelect,\n buildRepoOptions,\n CONNECTIONS,\n PROJECT_REPOSITORIES,\n CONNECTABLE_REPOSITORIES,\n} from \"./ConnectRepositoryDialog\";\nexport type {\n ConnectRepositoryDialogProps,\n RepositorySelectProps,\n Connection,\n ConnectionService,\n Repository,\n} from \"./ConnectRepositoryDialog\";\nexport {\n WebhookLogsDialog,\n WEBHOOK_CONNECTIONS,\n WEBHOOK_REPOSITORIES,\n} from \"./WebhookLogsDialog\";\nexport type {\n WebhookLogsDialogProps,\n WebhookConnection,\n WebhookRepository,\n WebhookLog,\n} from \"./WebhookLogsDialog\";\nexport {\n SourceCodeSection,\n IssueRow,\n CodeRow,\n Spine,\n HistoryDialog,\n CompletedHeader,\n} from \"./SourceCodeSection\";\nexport type {\n IssueEntry,\n CodeEntry,\n Stage,\n HistoryEvent,\n StageState,\n CodeStatus,\n SectionVariant,\n} from \"./SourceCodeSection\";\nexport { SuggestSubtasksButton } from \"./SuggestSubtasksButton\";\nexport { TaskOptionsMenu, TaskListOptionsMenu } from \"./TaskOptionsMenu\";\nexport type {\n TaskOptionsMenuProps,\n TaskListOptionsMenuProps,\n} from \"./TaskOptionsMenu\";\nexport { UserMenu } from \"./UserMenu\";\nexport type { UserMenuProps, UserMenuVariant } from \"./UserMenu\";\nexport { TwoFactorShield } from \"./TwoFactorShield\";\nexport type { TwoFactorShieldProps } from \"./TwoFactorShield\";\nexport { BackupCodesDialogs, CreateLoginCodeDialogs } from \"./TwoFactorDialogs\";\nexport type {\n BackupCodesDialogsProps,\n CreateLoginCodeDialogsProps,\n} from \"./TwoFactorDialogs\";\nexport {\n SettingsHeader,\n SettingsContent,\n StyledSettingRow,\n RowText,\n SettingRow,\n} from \"./settings\";\nexport type { SettingsHeaderProps, SettingRowProps } from \"./settings\";\nexport {\n FeatureAvailability,\n DEFAULT_FEATURE_AVAILABILITY,\n} from \"./FeatureAvailability\";\nexport type {\n FeatureAvailabilityProps,\n AvailabilityRow,\n AvailabilityMark,\n AvailabilityStatus,\n} from \"./FeatureAvailability\";\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,UAAU;AACxB,SAASA,QAAQ,QAAQ,YAAY;AACrC,SAASC,WAAW,QAAQ,eAAe;AAC3C,SAASC,iBAAiB,EAAEC,eAAe,QAAQ,qBAAqB;AAExE,SAASC,UAAU,EAAEC,iBAAiB,EAAEC,SAAS,QAAQ,WAAW;AAMpE,SAASC,gBAAgB,QAAQ,oBAAoB;AACrD,SACEC,aAAa,EACbC,cAAc,EACdC,iBAAiB,QACZ,iBAAiB;AAMxB,SAASC,kBAAkB,QAAQ,sBAAsB;AAEzD,SAASC,qBAAqB,QAAQ,yBAAyB;AAC/D,SAASC,6BAA6B,QAAQ,iCAAiC;AAE/E,SACEC,uBAAuB,EACvBC,gBAAgB,EAChBC,gBAAgB,EAChBC,WAAW,EACXC,oBAAoB,EACpBC,wBAAwB,QACnB,2BAA2B;AAQlC,SACEC,iBAAiB,EACjBC,mBAAmB,EACnBC,oBAAoB,QACf,qBAAqB;AAO5B,SACEC,iBAAiB,EACjBC,QAAQ,EACRC,OAAO,EACPC,KAAK,EACLC,aAAa,EACbC,eAAe,QACV,qBAAqB;AAU5B,SAASC,qBAAqB,QAAQ,yBAAyB;AAC/D,SAASC,eAAe,EAAEC,mBAAmB,QAAQ,mBAAmB;AAKxE,SAASC,QAAQ,QAAQ,YAAY;AAErC,SAASC,eAAe,QAAQ,mBAAmB;AAEnD,SAASC,kBAAkB,EAAEC,sBAAsB,QAAQ,oBAAoB;AAK/E,SACEC,cAAc,EACdC,eAAe,EACfC,gBAAgB,EAChBC,OAAO,EACPC,UAAU,QACL,YAAY;AAEnB,SACEC,mBAAmB,EACnBC,4BAA4B,QACvB,uBAAuB","ignoreList":[]}
package/dist/index.js CHANGED
@@ -25321,11 +25321,29 @@
25321
25321
  })(["margin:0;border:none;border-top:1px solid var(--border-primary);"]);
25322
25322
  StyledDivider.displayName = "StyledDivider";
25323
25323
 
25324
- /** The default `list` block; rendered as ul or ol through the `as` prop. */
25324
+ /**
25325
+ * The default `list` block; rendered as ul or ol through the `as` prop, and
25326
+ * tagged `data-portable-list` so the depth rules below scope to design-system
25327
+ * lists — a stray `<ul>`/`<ol>` from an injected renderer is left untouched.
25328
+ *
25329
+ * Nesting works structurally: each level is its own StyledList inside a parent
25330
+ * `<li>`, so it re-applies its own `padding-left` (indentation compounds) and,
25331
+ * for ordered levels, restarts numbering. A nested list carries no vertical
25332
+ * margin, so it hugs the item it belongs to.
25333
+ *
25334
+ * Both bullet and numbered levels change their marker by nesting depth, so
25335
+ * levels stay distinct even where the two interleave:
25336
+ * bullets disc → circle → square → (disc)
25337
+ * numbers decimal → lower-alpha → lower-roman → (upper-alpha)
25338
+ * Depth is counted from the list ancestors themselves (not per-tag), so an
25339
+ * intervening `<ol>` never throws off a `<ul>`'s depth and vice-versa. The
25340
+ * rules are ordered shallow-to-deep; a deeper rule is more specific, so it
25341
+ * wins the cascade for the levels it applies to.
25342
+ */
25325
25343
  var StyledList$1 = styled__default["default"].ul.withConfig({
25326
25344
  displayName: "Styles__StyledList",
25327
25345
  componentId: "sc-1fss4z4-5"
25328
- })(["margin:0;padding-left:", ";list-style:", " outside;li + li{margin-top:", ";}"], "1.25rem", function (_ref) {
25346
+ })(["margin:0;padding-left:", ";list-style:", " outside;li + li{margin-top:", ";}& ul[data-portable-list]{list-style-type:circle;}& ol[data-portable-list]{list-style-type:lower-alpha;}& [data-portable-list] ul[data-portable-list]{list-style-type:square;}& [data-portable-list] ol[data-portable-list]{list-style-type:lower-roman;}& [data-portable-list] [data-portable-list] ul[data-portable-list]{list-style-type:disc;}& [data-portable-list] [data-portable-list] ol[data-portable-list]{list-style-type:upper-alpha;}"], "1.25rem", function (_ref) {
25329
25347
  var $ordered = _ref.$ordered;
25330
25348
  return $ordered ? "decimal" : "disc";
25331
25349
  }, SPACE.xs);
@@ -25360,6 +25378,12 @@
25360
25378
 
25361
25379
  /** 1 maps to Title1, 2 to Title2, 3 to Header2 typography. */
25362
25380
 
25381
+ /**
25382
+ * A list item's children are its own spans first, then any nested `list`
25383
+ * block(s) — the shape that carries multi-level lists. A spans-only item (no
25384
+ * nested list) is the common, flat case and stays valid unchanged.
25385
+ */
25386
+
25363
25387
  /** Screenshots render framed (border, no shadow); illustrations render flat. */
25364
25388
 
25365
25389
  /**
@@ -25457,11 +25481,25 @@
25457
25481
  }
25458
25482
  switch (value.type) {
25459
25483
  case "paragraph":
25484
+ return Array.isArray(value.children) && value.children.every(isPortableTextSpan);
25460
25485
  case "heading":
25486
+ return (value.id === undefined || typeof value.id === "string") && Array.isArray(value.children) && value.children.every(isPortableTextSpan);
25461
25487
  case "list-item":
25462
- return Array.isArray(value.children) && value.children.every(isPortableTextSpan);
25488
+ // The item's spans, plus optional nested `list` block(s). Widened only
25489
+ // for nested lists: any other block child (a stray paragraph, an object)
25490
+ // still fails, so a serializer bug is caught here, not at render.
25491
+ return Array.isArray(value.children) && value.children.every(function (child) {
25492
+ return isPortableTextSpan(child) || _isPortableTextBlock(child) && child.type === "list";
25493
+ });
25463
25494
  case "list":
25464
- return Array.isArray(value.children) && value.children.every(_isPortableTextBlock);
25495
+ // A list holds `list-item`s only. A sublist emitted as a sibling of the
25496
+ // items (the classic half-implemented-nesting bug) renders invalid HTML
25497
+ // — <ul> with a direct <ul> child — so it fails here, not at render.
25498
+ // `list-item` is validated but sits outside the PortableTextBlock union,
25499
+ // so the discriminator is checked before isPortableTextBlock narrows it.
25500
+ return Array.isArray(value.children) && value.children.every(function (child) {
25501
+ return isRecord(child) && child.type === "list-item" && _isPortableTextBlock(child);
25502
+ });
25465
25503
  case "media":
25466
25504
  return typeof value.src === "string";
25467
25505
  case "titled-text":
@@ -25554,9 +25592,13 @@
25554
25592
 
25555
25593
  /** Heading typography of a TitledText — a component prop, not wire data. */
25556
25594
 
25595
+ /** Props every heading in the trio accepts: content plus an optional anchor id. */
25596
+
25557
25597
  var BoldTitle2 = function BoldTitle2(_ref) {
25558
- var children = _ref.children;
25598
+ var id = _ref.id,
25599
+ children = _ref.children;
25559
25600
  return /*#__PURE__*/React__default["default"].createElement(Title2, {
25601
+ id: id,
25560
25602
  weight: "bold"
25561
25603
  }, children);
25562
25604
  };
@@ -25657,9 +25699,12 @@
25657
25699
  var block = _ref5.block,
25658
25700
  children = _ref5.children;
25659
25701
  var _ref6 = block,
25660
- level = _ref6.level;
25702
+ level = _ref6.level,
25703
+ id = _ref6.id;
25661
25704
  var Heading = titledTextHeadings[headingVariantForLevel(level)];
25662
- return /*#__PURE__*/React__default["default"].createElement(Heading, null, children);
25705
+ return /*#__PURE__*/React__default["default"].createElement(Heading, {
25706
+ id: id
25707
+ }, children);
25663
25708
  };
25664
25709
  var portableTextDefaultBlockRenderers = {
25665
25710
  paragraph: function paragraph(_ref7) {
@@ -25671,10 +25716,16 @@
25671
25716
  var block = _ref8.block,
25672
25717
  children = _ref8.children;
25673
25718
  var ordered = block.style === "number";
25674
- return /*#__PURE__*/React__default["default"].createElement(StyledList$1, {
25675
- as: ordered ? "ol" : "ul",
25676
- $ordered: ordered
25677
- }, children);
25719
+ return (
25720
+ /*#__PURE__*/
25721
+ // `data-portable-list` scopes the depth-marker rules in Styles.ts to
25722
+ // design-system lists, and marks the ancestors those rules count.
25723
+ React__default["default"].createElement(StyledList$1, {
25724
+ as: ordered ? "ol" : "ul",
25725
+ $ordered: ordered,
25726
+ "data-portable-list": ""
25727
+ }, children)
25728
+ );
25678
25729
  },
25679
25730
  "list-item": function listItem(_ref9) {
25680
25731
  var children = _ref9.children;