@sankhyatronics/sankhya-cms 0.0.0-stage → 0.1.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.
Files changed (134) hide show
  1. package/README.md +34 -3
  2. package/custom-elements.json +4008 -0
  3. package/dist/bento-grid/index.d.ts +27 -0
  4. package/dist/bento-grid/index.js +10 -0
  5. package/dist/bento-grid/index.js.map +1 -0
  6. package/dist/card/index.d.ts +20 -0
  7. package/dist/card/index.js +9 -0
  8. package/dist/card/index.js.map +1 -0
  9. package/dist/carousel/index.d.ts +44 -0
  10. package/dist/carousel/index.js +10 -0
  11. package/dist/carousel/index.js.map +1 -0
  12. package/dist/chunk-23IHTBAB.js +557 -0
  13. package/dist/chunk-23IHTBAB.js.map +1 -0
  14. package/dist/chunk-2VZFHTBC.js +203 -0
  15. package/dist/chunk-2VZFHTBC.js.map +1 -0
  16. package/dist/chunk-3ERKQNZT.js +155 -0
  17. package/dist/chunk-3ERKQNZT.js.map +1 -0
  18. package/dist/chunk-3JU3R22O.js +193 -0
  19. package/dist/chunk-3JU3R22O.js.map +1 -0
  20. package/dist/chunk-3TCP25JG.js +347 -0
  21. package/dist/chunk-3TCP25JG.js.map +1 -0
  22. package/dist/chunk-3VE6VFJ4.js +87 -0
  23. package/dist/chunk-3VE6VFJ4.js.map +1 -0
  24. package/dist/chunk-4HKSA5UT.js +312 -0
  25. package/dist/chunk-4HKSA5UT.js.map +1 -0
  26. package/dist/chunk-5REZSZCK.js +266 -0
  27. package/dist/chunk-5REZSZCK.js.map +1 -0
  28. package/dist/chunk-5UFRGZWG.js +268 -0
  29. package/dist/chunk-5UFRGZWG.js.map +1 -0
  30. package/dist/chunk-74MILER4.js +215 -0
  31. package/dist/chunk-74MILER4.js.map +1 -0
  32. package/dist/chunk-7PSYCTEN.js +118 -0
  33. package/dist/chunk-7PSYCTEN.js.map +1 -0
  34. package/dist/chunk-CDC4P77V.js +299 -0
  35. package/dist/chunk-CDC4P77V.js.map +1 -0
  36. package/dist/chunk-E52WO7R7.js +279 -0
  37. package/dist/chunk-E52WO7R7.js.map +1 -0
  38. package/dist/chunk-EUXUH3YW.js +15 -0
  39. package/dist/chunk-EUXUH3YW.js.map +1 -0
  40. package/dist/chunk-IMACP7HN.js +156 -0
  41. package/dist/chunk-IMACP7HN.js.map +1 -0
  42. package/dist/chunk-LHU23TF6.js +273 -0
  43. package/dist/chunk-LHU23TF6.js.map +1 -0
  44. package/dist/chunk-OEX5FDMR.js +250 -0
  45. package/dist/chunk-OEX5FDMR.js.map +1 -0
  46. package/dist/chunk-RHAOQ6K4.js +138 -0
  47. package/dist/chunk-RHAOQ6K4.js.map +1 -0
  48. package/dist/chunk-RMIJVTFS.js +397 -0
  49. package/dist/chunk-RMIJVTFS.js.map +1 -0
  50. package/dist/chunk-U7YKCCJG.js +228 -0
  51. package/dist/chunk-U7YKCCJG.js.map +1 -0
  52. package/dist/chunk-USNFT4DU.js +125 -0
  53. package/dist/chunk-USNFT4DU.js.map +1 -0
  54. package/dist/chunk-VYON56QO.js +90 -0
  55. package/dist/chunk-VYON56QO.js.map +1 -0
  56. package/dist/chunk-WCO7JAIK.js +195 -0
  57. package/dist/chunk-WCO7JAIK.js.map +1 -0
  58. package/dist/chunk-XHBC23TV.js +254 -0
  59. package/dist/chunk-XHBC23TV.js.map +1 -0
  60. package/dist/chunk-XXPBFHWR.js +70 -0
  61. package/dist/chunk-XXPBFHWR.js.map +1 -0
  62. package/dist/cms-theme.css +15 -0
  63. package/dist/content-block/index.d.ts +25 -0
  64. package/dist/content-block/index.js +11 -0
  65. package/dist/content-block/index.js.map +1 -0
  66. package/dist/cookie-consent/index.d.ts +33 -0
  67. package/dist/cookie-consent/index.js +9 -0
  68. package/dist/cookie-consent/index.js.map +1 -0
  69. package/dist/dropdown/index.d.ts +89 -0
  70. package/dist/dropdown/index.js +9 -0
  71. package/dist/dropdown/index.js.map +1 -0
  72. package/dist/feature-split/index.d.ts +38 -0
  73. package/dist/feature-split/index.js +11 -0
  74. package/dist/feature-split/index.js.map +1 -0
  75. package/dist/features-section/index.d.ts +50 -0
  76. package/dist/features-section/index.js +14 -0
  77. package/dist/features-section/index.js.map +1 -0
  78. package/dist/footer/index.d.ts +64 -0
  79. package/dist/footer/index.js +9 -0
  80. package/dist/footer/index.js.map +1 -0
  81. package/dist/header/index.d.ts +112 -0
  82. package/dist/header/index.js +10 -0
  83. package/dist/header/index.js.map +1 -0
  84. package/dist/hero/index.d.ts +32 -0
  85. package/dist/hero/index.js +10 -0
  86. package/dist/hero/index.js.map +1 -0
  87. package/dist/icon-button/index.d.ts +23 -0
  88. package/dist/icon-button/index.js +9 -0
  89. package/dist/icon-button/index.js.map +1 -0
  90. package/dist/index.d.ts +22 -0
  91. package/dist/index.js +93 -0
  92. package/dist/index.js.map +1 -0
  93. package/dist/items-accordion/index.d.ts +31 -0
  94. package/dist/items-accordion/index.js +10 -0
  95. package/dist/items-accordion/index.js.map +1 -0
  96. package/dist/markdown/index.d.ts +33 -0
  97. package/dist/markdown/index.js +9 -0
  98. package/dist/markdown/index.js.map +1 -0
  99. package/dist/menu-grid/index.d.ts +21 -0
  100. package/dist/menu-grid/index.js +9 -0
  101. package/dist/menu-grid/index.js.map +1 -0
  102. package/dist/menu-grid-item/index.d.ts +53 -0
  103. package/dist/menu-grid-item/index.js +9 -0
  104. package/dist/menu-grid-item/index.js.map +1 -0
  105. package/dist/menu-item/index.d.ts +50 -0
  106. package/dist/menu-item/index.js +9 -0
  107. package/dist/menu-item/index.js.map +1 -0
  108. package/dist/promo-banner/index.d.ts +22 -0
  109. package/dist/promo-banner/index.js +10 -0
  110. package/dist/promo-banner/index.js.map +1 -0
  111. package/dist/schema/index.d.ts +72 -0
  112. package/dist/schema/index.js +75 -0
  113. package/dist/schema/index.js.map +1 -0
  114. package/dist/select/index.d.ts +77 -0
  115. package/dist/select/index.js +10 -0
  116. package/dist/select/index.js.map +1 -0
  117. package/dist/shared/icons.d.ts +77 -0
  118. package/dist/shared/icons.js +64 -0
  119. package/dist/shared/icons.js.map +1 -0
  120. package/dist/shared/styles.d.ts +90 -0
  121. package/dist/shared/styles.js +48 -0
  122. package/dist/shared/styles.js.map +1 -0
  123. package/dist/stats/index.d.ts +17 -0
  124. package/dist/stats/index.js +9 -0
  125. package/dist/stats/index.js.map +1 -0
  126. package/dist/testimonials/index.d.ts +25 -0
  127. package/dist/testimonials/index.js +10 -0
  128. package/dist/testimonials/index.js.map +1 -0
  129. package/dist/theme.css +292 -0
  130. package/dist/themes.css +65 -0
  131. package/dist/theming/index.d.ts +28 -0
  132. package/dist/theming/index.js +53 -0
  133. package/dist/theming/index.js.map +1 -0
  134. package/package.json +161 -4
@@ -0,0 +1,50 @@
1
+ import * as lit from 'lit';
2
+ import { LitElement } from 'lit';
3
+
4
+ /**
5
+ * A single flat nav row — icon (`slot="icon"`) + title + badge on one line, an optional
6
+ * description below — as opposed to `st-menu-grid-item`'s card for a multi-column grid. A 1:1
7
+ * port of `SankhyaUI`'s React `MenuItem` (`SankhyaCMS/SankhyaUI/src/components/Menu`): same
8
+ * markup and CSS, with its `motion` effects redone in CSS — nudges right and scales to 1.01 on
9
+ * hover / 0.99 while pressed, the icon tilts on hover, the badge pops in, the description fades
10
+ * in. Colors come from the suite theme rather than per-item utility classes.
11
+ *
12
+ * Renders a real `<a href>` but fires a *cancelable* `menu-item-select` event (detail: `{ href }`)
13
+ * before navigating — a host doing client-side routing calls `event.preventDefault()` on it (the
14
+ * source used react-router's `Link` here; the suite apps have no router).
15
+ */
16
+ declare class MenuItem extends LitElement {
17
+ /** `focus()` on the element focuses its link, so `st-dropdown` can arrow-key between items. */
18
+ static shadowRootOptions: {
19
+ delegatesFocus: boolean;
20
+ clonable?: boolean;
21
+ customElementRegistry?: CustomElementRegistry | null;
22
+ mode: ShadowRootMode;
23
+ serializable?: boolean;
24
+ slotAssignment?: SlotAssignmentMode;
25
+ };
26
+ static styles: lit.CSSResult;
27
+ title: string;
28
+ href: string;
29
+ description: string;
30
+ /** Small trailing label, e.g. a count or "New"/"Beta" — omit for none. */
31
+ badge: string;
32
+ /** Highlights this row as the current page (source: `isActive`). */
33
+ active: boolean;
34
+ compact: boolean;
35
+ /** Suppresses the description even when `description` is set (source: `showDescription`, default `true`). */
36
+ showDescription: boolean;
37
+ /** `target` for the `<a>` (source default `_self`). */
38
+ target: string;
39
+ /** Whether `slot="icon"` has content, so an omitted icon leaves no empty box. */
40
+ private hasIcon;
41
+ private onIconSlotChange;
42
+ private onClick;
43
+ render(): lit.TemplateResult<1>;
44
+ }
45
+
46
+ interface MenuItemSelectEventDetail {
47
+ href: string;
48
+ }
49
+
50
+ export { MenuItem, type MenuItemSelectEventDetail };
@@ -0,0 +1,9 @@
1
+ import {
2
+ MenuItem
3
+ } from "../chunk-LHU23TF6.js";
4
+ import "../chunk-RHAOQ6K4.js";
5
+ import "../chunk-EUXUH3YW.js";
6
+ export {
7
+ MenuItem
8
+ };
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,22 @@
1
+ import * as lit from 'lit';
2
+ import { LitElement } from 'lit';
3
+
4
+ /**
5
+ * Rounded call-to-action banner (title, subtitle, one outlined button) on a dark panel or a
6
+ * background image. Port of `SankhyaUI`'s React `PromoBanner`; the button fires an `action` event
7
+ * (detail `{ href }`, empty unless set) in place of `onAction`.
8
+ */
9
+ declare class PromoBanner extends LitElement {
10
+ static styles: lit.CSSResult;
11
+ title: string;
12
+ subtitle: string;
13
+ actionLabel: string;
14
+ href: string;
15
+ imageSrc: string;
16
+ inverted: boolean;
17
+ protected willUpdate(): void;
18
+ private onAction;
19
+ render(): lit.TemplateResult<1>;
20
+ }
21
+
22
+ export { PromoBanner };
@@ -0,0 +1,10 @@
1
+ import {
2
+ PromoBanner
3
+ } from "../chunk-3ERKQNZT.js";
4
+ import "../chunk-3VE6VFJ4.js";
5
+ import "../chunk-RHAOQ6K4.js";
6
+ import "../chunk-EUXUH3YW.js";
7
+ export {
8
+ PromoBanner
9
+ };
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,72 @@
1
+ /** Dependency-free node types, safe to import from the content API layer. */
2
+ /** Action reference in JSON, resolved against the `handlers` prop of `DynamicRenderer`. */
3
+ type ActionRef = `@action:${string}`;
4
+ /** Keys the renderer owns; everything else on a node is passed to the component as a prop. */
5
+ interface NodeEnvelope<TNode> {
6
+ id?: string;
7
+ /** Named slot in the parent (e.g. Header: "utility"). Omit for the default slot. */
8
+ slot?: string;
9
+ /** Editor-only label, never passed to the component. */
10
+ label?: string;
11
+ children?: TNode[];
12
+ }
13
+ /**
14
+ * A node as it appears in JSON: flat, no `data` wrapper.
15
+ * `{ "type": "Hero", "id": "home-hero", "title": "...", "children": [...] }`
16
+ */
17
+ interface ComponentNode extends NodeEnvelope<ComponentNode> {
18
+ type: string;
19
+ [prop: string]: unknown;
20
+ }
21
+ /** A page is a list of nodes. */
22
+ type PageContent = ComponentNode[];
23
+ declare function isComponentNode(value: unknown): value is ComponentNode;
24
+
25
+ /**
26
+ * Returns a copy of `nodes` where the node with the given `id` has `props` merged in.
27
+ * Use it to inject runtime state (e.g. the selected language) into fetched JSON without mutating it.
28
+ */
29
+ declare function patchNodeById(nodes: ComponentNode[], id: string, props: Record<string, unknown>): ComponentNode[];
30
+
31
+ /**
32
+ * The JSON `type` of every base component, and the Lit element that renders it.
33
+ * This is the contract page JSON is written against — renderers (React, or any other binding)
34
+ * map each `type` to their own component for that element.
35
+ */
36
+ declare const componentTags: {
37
+ readonly BentoGrid: "st-bento-grid";
38
+ readonly Card: "st-card";
39
+ readonly Carousel: "st-carousel";
40
+ readonly ContentBlock: "st-content-block";
41
+ readonly CookieConsent: "st-cookie-consent";
42
+ readonly Dropdown: "st-dropdown";
43
+ readonly FeatureItem: "st-feature-item";
44
+ readonly FeatureSplit: "st-feature-split";
45
+ readonly FeaturesSection: "st-features-section";
46
+ readonly Footer: "st-footer";
47
+ readonly Header: "st-header";
48
+ readonly Hero: "st-hero";
49
+ readonly IconButton: "st-icon-button";
50
+ readonly ItemsAccordion: "st-items-accordion";
51
+ readonly MenuGrid: "st-menu-grid";
52
+ readonly MenuGridItem: "st-menu-grid-item";
53
+ readonly MenuItem: "st-menu-item";
54
+ readonly PromoBanner: "st-promo-banner";
55
+ readonly Select: "st-select";
56
+ readonly Stats: "st-stats";
57
+ readonly Testimonials: "st-testimonials";
58
+ };
59
+ /** Every `type` the base set knows. */
60
+ type ComponentType = keyof typeof componentTags;
61
+ declare function isBaseComponentType(type: string): type is ComponentType;
62
+
63
+ /**
64
+ * Returns the schema violations for a node and its descendants (empty when valid).
65
+ * `isKnownType` defaults to the base component set; pass a wider predicate when a renderer also
66
+ * registers custom components.
67
+ */
68
+ declare function validateNode(node: unknown, where?: string, isKnownType?: (type: string) => boolean): string[];
69
+ /** Validates a page: a node or a list of nodes. */
70
+ declare function validatePage(page: unknown, isKnownType?: (type: string) => boolean): string[];
71
+
72
+ export { type ActionRef, type ComponentNode, type ComponentType, type NodeEnvelope, type PageContent, componentTags, isBaseComponentType, isComponentNode, patchNodeById, validateNode, validatePage };
@@ -0,0 +1,75 @@
1
+ import "../chunk-EUXUH3YW.js";
2
+
3
+ // src/schema/node.ts
4
+ function isComponentNode(value) {
5
+ return typeof value === "object" && value !== null && !Array.isArray(value) && typeof value.type === "string" && value.type.trim().length > 0;
6
+ }
7
+
8
+ // src/schema/nodeUtils.ts
9
+ function patchNodeById(nodes, id, props) {
10
+ return nodes.map((node) => {
11
+ const patched = node.id === id ? { ...node, ...props } : node;
12
+ return patched.children ? { ...patched, children: patchNodeById(patched.children, id, props) } : patched;
13
+ });
14
+ }
15
+
16
+ // src/schema/components.ts
17
+ var componentTags = {
18
+ BentoGrid: "st-bento-grid",
19
+ Card: "st-card",
20
+ Carousel: "st-carousel",
21
+ ContentBlock: "st-content-block",
22
+ CookieConsent: "st-cookie-consent",
23
+ Dropdown: "st-dropdown",
24
+ FeatureItem: "st-feature-item",
25
+ FeatureSplit: "st-feature-split",
26
+ FeaturesSection: "st-features-section",
27
+ Footer: "st-footer",
28
+ Header: "st-header",
29
+ Hero: "st-hero",
30
+ IconButton: "st-icon-button",
31
+ ItemsAccordion: "st-items-accordion",
32
+ MenuGrid: "st-menu-grid",
33
+ MenuGridItem: "st-menu-grid-item",
34
+ MenuItem: "st-menu-item",
35
+ PromoBanner: "st-promo-banner",
36
+ Select: "st-select",
37
+ Stats: "st-stats",
38
+ Testimonials: "st-testimonials"
39
+ };
40
+ function isBaseComponentType(type) {
41
+ return Object.hasOwn(componentTags, type);
42
+ }
43
+
44
+ // src/schema/validate.ts
45
+ var LEGACY_KEYS = ["data", "embeddedView", "data-position", "image", "contentUrl"];
46
+ function validateNode(node, where = "node", isKnownType = isBaseComponentType) {
47
+ if (typeof node !== "object" || node === null || Array.isArray(node)) return [`${where}: node must be an object`];
48
+ const n = node;
49
+ const found = [];
50
+ if (typeof n.type !== "string" || !isKnownType(n.type)) found.push(`${where}: unknown type "${String(n.type)}"`);
51
+ for (const legacy of LEGACY_KEYS) {
52
+ if (legacy in n) found.push(`${where}: legacy key "${legacy}"`);
53
+ }
54
+ if (Array.isArray(n.items) && n.items.some((item) => typeof item === "object" && item !== null && "type" in item)) {
55
+ found.push(`${where}: "items" must hold plain data; nest components under "children"`);
56
+ }
57
+ if (n.children !== void 0) {
58
+ if (!Array.isArray(n.children)) found.push(`${where}: children must be an array`);
59
+ else n.children.forEach((child, i) => found.push(...validateNode(child, `${where}.children[${i}]`, isKnownType)));
60
+ }
61
+ return found;
62
+ }
63
+ function validatePage(page, isKnownType) {
64
+ const nodes = Array.isArray(page) ? page : [page];
65
+ return nodes.flatMap((node, i) => validateNode(node, `[${i}]`, isKnownType));
66
+ }
67
+ export {
68
+ componentTags,
69
+ isBaseComponentType,
70
+ isComponentNode,
71
+ patchNodeById,
72
+ validateNode,
73
+ validatePage
74
+ };
75
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/schema/node.ts","../../src/schema/nodeUtils.ts","../../src/schema/components.ts","../../src/schema/validate.ts"],"sourcesContent":["/** Dependency-free node types, safe to import from the content API layer. */\r\n\r\n/** Action reference in JSON, resolved against the `handlers` prop of `DynamicRenderer`. */\r\nexport type ActionRef = `@action:${string}`;\r\n\r\n/** Keys the renderer owns; everything else on a node is passed to the component as a prop. */\r\nexport interface NodeEnvelope<TNode> {\r\n id?: string;\r\n /** Named slot in the parent (e.g. Header: \"utility\"). Omit for the default slot. */\r\n slot?: string;\r\n /** Editor-only label, never passed to the component. */\r\n label?: string;\r\n children?: TNode[];\r\n}\r\n\r\n/**\r\n * A node as it appears in JSON: flat, no `data` wrapper.\r\n * `{ \"type\": \"Hero\", \"id\": \"home-hero\", \"title\": \"...\", \"children\": [...] }`\r\n */\r\nexport interface ComponentNode extends NodeEnvelope<ComponentNode> {\r\n type: string;\r\n [prop: string]: unknown;\r\n}\r\n\r\n/** A page is a list of nodes. */\r\nexport type PageContent = ComponentNode[];\r\n\r\nexport function isComponentNode(value: unknown): value is ComponentNode {\r\n return (\r\n typeof value === 'object' &&\r\n value !== null &&\r\n !Array.isArray(value) &&\r\n typeof (value as { type?: unknown }).type === 'string' &&\r\n (value as { type: string }).type.trim().length > 0\r\n );\r\n}\r\n","import type { ComponentNode } from './node';\r\n\r\n/**\r\n * Returns a copy of `nodes` where the node with the given `id` has `props` merged in.\r\n * Use it to inject runtime state (e.g. the selected language) into fetched JSON without mutating it.\r\n */\r\nexport function patchNodeById(nodes: ComponentNode[], id: string, props: Record<string, unknown>): ComponentNode[] {\r\n return nodes.map(node => {\r\n const patched = node.id === id ? { ...node, ...props } : node;\r\n return patched.children\r\n ? { ...patched, children: patchNodeById(patched.children, id, props) }\r\n : patched;\r\n });\r\n}\r\n","/**\r\n * The JSON `type` of every base component, and the Lit element that renders it.\r\n * This is the contract page JSON is written against — renderers (React, or any other binding)\r\n * map each `type` to their own component for that element.\r\n */\r\nexport const componentTags = {\r\n BentoGrid: 'st-bento-grid',\r\n Card: 'st-card',\r\n Carousel: 'st-carousel',\r\n ContentBlock: 'st-content-block',\r\n CookieConsent: 'st-cookie-consent',\r\n Dropdown: 'st-dropdown',\r\n FeatureItem: 'st-feature-item',\r\n FeatureSplit: 'st-feature-split',\r\n FeaturesSection: 'st-features-section',\r\n Footer: 'st-footer',\r\n Header: 'st-header',\r\n Hero: 'st-hero',\r\n IconButton: 'st-icon-button',\r\n ItemsAccordion: 'st-items-accordion',\r\n MenuGrid: 'st-menu-grid',\r\n MenuGridItem: 'st-menu-grid-item',\r\n MenuItem: 'st-menu-item',\r\n PromoBanner: 'st-promo-banner',\r\n Select: 'st-select',\r\n Stats: 'st-stats',\r\n Testimonials: 'st-testimonials'\r\n} as const;\r\n\r\n/** Every `type` the base set knows. */\r\nexport type ComponentType = keyof typeof componentTags;\r\n\r\nexport function isBaseComponentType(type: string): type is ComponentType {\r\n return Object.hasOwn(componentTags, type);\r\n}\r\n","import { isBaseComponentType } from './components';\r\nimport type { ComponentNode } from './node';\r\n\r\n/** Keys from the pre-flat schema; their presence means the JSON still needs `scripts/migrate-json.mjs`. */\r\nconst LEGACY_KEYS = ['data', 'embeddedView', 'data-position', 'image', 'contentUrl'] as const;\r\n\r\n/**\r\n * Returns the schema violations for a node and its descendants (empty when valid).\r\n * `isKnownType` defaults to the base component set; pass a wider predicate when a renderer also\r\n * registers custom components.\r\n */\r\nexport function validateNode(node: unknown, where = 'node', isKnownType: (type: string) => boolean = isBaseComponentType): string[] {\r\n if (typeof node !== 'object' || node === null || Array.isArray(node)) return [`${where}: node must be an object`];\r\n const n = node as ComponentNode;\r\n const found: string[] = [];\r\n if (typeof n.type !== 'string' || !isKnownType(n.type)) found.push(`${where}: unknown type \"${String(n.type)}\"`);\r\n for (const legacy of LEGACY_KEYS) {\r\n if (legacy in n) found.push(`${where}: legacy key \"${legacy}\"`);\r\n }\r\n if (Array.isArray(n.items) && n.items.some(item => typeof item === 'object' && item !== null && 'type' in item)) {\r\n found.push(`${where}: \"items\" must hold plain data; nest components under \"children\"`);\r\n }\r\n if (n.children !== undefined) {\r\n if (!Array.isArray(n.children)) found.push(`${where}: children must be an array`);\r\n else n.children.forEach((child, i) => found.push(...validateNode(child, `${where}.children[${i}]`, isKnownType)));\r\n }\r\n return found;\r\n}\r\n\r\n/** Validates a page: a node or a list of nodes. */\r\nexport function validatePage(page: unknown, isKnownType?: (type: string) => boolean): string[] {\r\n const nodes = Array.isArray(page) ? page : [page];\r\n return nodes.flatMap((node, i) => validateNode(node, `[${i}]`, isKnownType));\r\n}\r\n"],"mappings":";;;AA2BO,SAAS,gBAAgB,OAAwC;AACpE,SACI,OAAO,UAAU,YACjB,UAAU,QACV,CAAC,MAAM,QAAQ,KAAK,KACpB,OAAQ,MAA6B,SAAS,YAC7C,MAA2B,KAAK,KAAK,EAAE,SAAS;AAEzD;;;AC7BO,SAAS,cAAc,OAAwB,IAAY,OAAiD;AAC/G,SAAO,MAAM,IAAI,UAAQ;AACrB,UAAM,UAAU,KAAK,OAAO,KAAK,EAAE,GAAG,MAAM,GAAG,MAAM,IAAI;AACzD,WAAO,QAAQ,WACT,EAAE,GAAG,SAAS,UAAU,cAAc,QAAQ,UAAU,IAAI,KAAK,EAAE,IACnE;AAAA,EACV,CAAC;AACL;;;ACRO,IAAM,gBAAgB;AAAA,EACzB,WAAW;AAAA,EACX,MAAM;AAAA,EACN,UAAU;AAAA,EACV,cAAc;AAAA,EACd,eAAe;AAAA,EACf,UAAU;AAAA,EACV,aAAa;AAAA,EACb,cAAc;AAAA,EACd,iBAAiB;AAAA,EACjB,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,gBAAgB;AAAA,EAChB,UAAU;AAAA,EACV,cAAc;AAAA,EACd,UAAU;AAAA,EACV,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,cAAc;AAClB;AAKO,SAAS,oBAAoB,MAAqC;AACrE,SAAO,OAAO,OAAO,eAAe,IAAI;AAC5C;;;AC9BA,IAAM,cAAc,CAAC,QAAQ,gBAAgB,iBAAiB,SAAS,YAAY;AAO5E,SAAS,aAAa,MAAe,QAAQ,QAAQ,cAAyC,qBAA+B;AAChI,MAAI,OAAO,SAAS,YAAY,SAAS,QAAQ,MAAM,QAAQ,IAAI,EAAG,QAAO,CAAC,GAAG,KAAK,0BAA0B;AAChH,QAAM,IAAI;AACV,QAAM,QAAkB,CAAC;AACzB,MAAI,OAAO,EAAE,SAAS,YAAY,CAAC,YAAY,EAAE,IAAI,EAAG,OAAM,KAAK,GAAG,KAAK,mBAAmB,OAAO,EAAE,IAAI,CAAC,GAAG;AAC/G,aAAW,UAAU,aAAa;AAC9B,QAAI,UAAU,EAAG,OAAM,KAAK,GAAG,KAAK,iBAAiB,MAAM,GAAG;AAAA,EAClE;AACA,MAAI,MAAM,QAAQ,EAAE,KAAK,KAAK,EAAE,MAAM,KAAK,UAAQ,OAAO,SAAS,YAAY,SAAS,QAAQ,UAAU,IAAI,GAAG;AAC7G,UAAM,KAAK,GAAG,KAAK,kEAAkE;AAAA,EACzF;AACA,MAAI,EAAE,aAAa,QAAW;AAC1B,QAAI,CAAC,MAAM,QAAQ,EAAE,QAAQ,EAAG,OAAM,KAAK,GAAG,KAAK,6BAA6B;AAAA,QAC3E,GAAE,SAAS,QAAQ,CAAC,OAAO,MAAM,MAAM,KAAK,GAAG,aAAa,OAAO,GAAG,KAAK,aAAa,CAAC,KAAK,WAAW,CAAC,CAAC;AAAA,EACpH;AACA,SAAO;AACX;AAGO,SAAS,aAAa,MAAe,aAAmD;AAC3F,QAAM,QAAQ,MAAM,QAAQ,IAAI,IAAI,OAAO,CAAC,IAAI;AAChD,SAAO,MAAM,QAAQ,CAAC,MAAM,MAAM,aAAa,MAAM,IAAI,CAAC,KAAK,WAAW,CAAC;AAC/E;","names":[]}
@@ -0,0 +1,77 @@
1
+ import * as lit from 'lit';
2
+ import { LitElement, PropertyValues } from 'lit';
3
+
4
+ interface SelectChangedEventDetail {
5
+ value: string;
6
+ }
7
+ interface SelectOption {
8
+ value: string;
9
+ label: string;
10
+ /** Optional web URL this option points to (e.g. a SharePoint library) — set when a consumer wants to link out to it, such as a breadcrumb's first crumb. */
11
+ url?: string;
12
+ }
13
+
14
+ /**
15
+ * A fully custom-styled replacement for native `<select>`, used everywhere
16
+ * the wizard needs a single-choice dropdown (template source, list, document
17
+ * library, admin roles, ...).
18
+ *
19
+ * Built on the CSS Customizable Select API (`appearance: base-select`) —
20
+ * still a real `<select>`/`<option>` element tree, so focus, keyboard
21
+ * (arrows/Home/End/typeahead), and ARIA all come from the browser for free,
22
+ * but the trigger (`<button>`/`<selectedcontent>`) and popup
23
+ * (`::picker(select)`) are fully styleable instead of OS-rendered. Chromium
24
+ * only for now (Firefox/Safari fall back to an unstyled native `<select>` —
25
+ * the extra `<button>`/`<selectedcontent>` markup is simply not rendered by
26
+ * browsers that don't support the parsing/CSS additions, so the control
27
+ * still works there, just without the custom look).
28
+ *
29
+ * `options` intentionally has no "unselected" placeholder entry — set
30
+ * `value=""` (or any value with no matching option) and it falls back to
31
+ * showing `placeholder` in the trigger instead, letting callers swap the
32
+ * placeholder text dynamically (e.g. "Select a list" vs "Select a list
33
+ * first") without needing a synthetic option in the list. Internally this is
34
+ * a real hidden/disabled `<option value="">`, since a native `<select>`
35
+ * always has *some* option selected.
36
+ *
37
+ * Fires `select-change` (detail: `{ value }`) only when the value actually
38
+ * changes, matching native `<select>`'s `change` event semantics.
39
+ *
40
+ * `link-href` optionally renders an external-link button in front of
41
+ * `field-label` — the same glyph/placement as the "open library" links
42
+ * placed next to the Templates/Save-location breadcrumbs — for callers that
43
+ * want a one-click way to open whatever the current selection points at
44
+ * (e.g. the SharePoint site or library) in a new tab.
45
+ */
46
+ declare class Select extends LitElement {
47
+ static styles: lit.CSSResult;
48
+ options: SelectOption[];
49
+ value: string;
50
+ placeholder: string;
51
+ /** Renders an internal `<label>` above the trigger, associated via `aria-labelledby`. Leave empty when the field is labeled some other way (e.g. context alone). */
52
+ fieldLabel: string;
53
+ /**
54
+ * Optional URL for an external-link button rendered in front of
55
+ * `field-label` (same glyph/placement as the "open library" links next to
56
+ * the Templates/Save-location breadcrumbs) — e.g. a link to the
57
+ * SharePoint site or library the current selection points at. Ignored
58
+ * when `field-label` is empty, since there'd be nothing to place it in
59
+ * front of.
60
+ */
61
+ linkHref: string;
62
+ /** Accessible name/title for the `link-href` button. */
63
+ linkLabel: string;
64
+ /** Accessible name for the trigger when there's no visible `field-label` (e.g. a filter-row select). Ignored when `field-label` is set. */
65
+ selectLabel: string;
66
+ disabled: boolean;
67
+ /** Borderless variant for a header/toolbar utility slot — see the `:host([ghost])` styles. */
68
+ ghost: boolean;
69
+ private readonly selectEl;
70
+ private readonly instanceId;
71
+ private readonly fieldLabelId;
72
+ protected updated(changed: PropertyValues): void;
73
+ render(): lit.TemplateResult<1>;
74
+ private onChange;
75
+ }
76
+
77
+ export { Select, type SelectChangedEventDetail, type SelectOption };
@@ -0,0 +1,10 @@
1
+ import {
2
+ Select
3
+ } from "../chunk-5UFRGZWG.js";
4
+ import "../chunk-3TCP25JG.js";
5
+ import "../chunk-RHAOQ6K4.js";
6
+ import "../chunk-EUXUH3YW.js";
7
+ export {
8
+ Select
9
+ };
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,77 @@
1
+ import { TemplateResult } from 'lit';
2
+
3
+ /** Filled folder glyph (browse rows/tiles). Fixed 20x16 — folders don't resize per usage. */
4
+ declare function folderIcon(): TemplateResult;
5
+ /** Outlined folder glyph (breadcrumb crumb icon). `className` lets the caller hook its own layout class. */
6
+ declare function folderOutlineIcon(size?: number, className?: string): TemplateResult;
7
+ /** External-link/"open" glyph (open site/library actions in the Templates/Data/Save-location pickers). */
8
+ declare function externalLinkIcon(size?: number): TemplateResult;
9
+ /** Refresh/reload glyph (Templates/Data picker refresh buttons). */
10
+ declare function refreshIcon(size?: number): TemplateResult;
11
+ /** Clock glyph (the wizard's "Recent activity" history trigger button, Steps 1-3). */
12
+ declare function historyIcon(size?: number): TemplateResult;
13
+ /** Trash/delete glyph (clear-all button in the selected-chips summary badge). */
14
+ declare function trashIcon(size?: number): TemplateResult;
15
+ /** Chevron glyph (pager prev/next buttons, the select trigger's caret). */
16
+ declare function chevronIcon(direction: 'left' | 'right' | 'down', size?: number): TemplateResult;
17
+ /** Plus glyph ("New folder" action button). */
18
+ declare function plusIcon(size?: number): TemplateResult;
19
+ /** Cards-view glyph (2x2 grid — view-toggle button). */
20
+ declare function cardsViewIcon(size?: number): TemplateResult;
21
+ /** Checkmark glyph (completed-step marker in the step indicator). */
22
+ declare function checkIcon(size?: number): TemplateResult;
23
+ /** SharePoint site glyph (globe — root "All sites" browser rows). */
24
+ declare function siteIcon(size?: number): TemplateResult;
25
+ /** 3x3 dot-grid glyph (bento-menu app-switcher trigger). */
26
+ declare function bentoGridIcon(size?: number): TemplateResult;
27
+ /** List-view glyph (stacked rows — view-toggle button). */
28
+ declare function listViewIcon(size?: number): TemplateResult;
29
+ /**
30
+ * A small set of generic domain icons for `st-menu-grid-item`'s icon slot (nav "mega menu"
31
+ * entries — sales/purchase/accounting/settings items) — deliberately simple line glyphs rather
32
+ * than pixel-perfect illustrations, same fidelity level as the icons above.
33
+ */
34
+ /** Shopping-cart glyph (sales/orders). */
35
+ declare function cartIcon(size?: number): TemplateResult;
36
+ /** Delivery-truck glyph (purchase orders / receiving). */
37
+ declare function truckIcon(size?: number): TemplateResult;
38
+ /** Package/box glyph (products, inventory). */
39
+ declare function boxIcon(size?: number): TemplateResult;
40
+ /** Map-pin glyph (stock locations). */
41
+ declare function mapPinIcon(size?: number): TemplateResult;
42
+ /** Two-person glyph (partners — customers/vendors/employees). */
43
+ declare function usersIcon(size?: number): TemplateResult;
44
+ /** Open-book glyph (journals). */
45
+ declare function bookIcon(size?: number): TemplateResult;
46
+ /** Document/invoice glyph. */
47
+ declare function documentIcon(size?: number): TemplateResult;
48
+ /** Receipt glyph, zig-zag bottom edge (credit/debit notes). */
49
+ declare function receiptIcon(size?: number): TemplateResult;
50
+ /** Percent glyph (taxes). */
51
+ declare function percentIcon(size?: number): TemplateResult;
52
+ /** Stacked-coins glyph (payment terms). */
53
+ declare function coinsIcon(size?: number): TemplateResult;
54
+ /** Padlock glyph (fiscal year closing / lock dates). */
55
+ declare function lockIcon(size?: number): TemplateResult;
56
+ /**
57
+ * Office file-type glyphs, ported from `PennyIcons` in `@sankhyatronics/sankhya-icons`
58
+ * (FileWordIcon/FileExcelIcon/FilePowerPointIcon) — this package is Lit, so it can't import
59
+ * the React components and carries the same path data instead. Filled, `currentColor`.
60
+ */
61
+ declare const FILE_TYPE_ICON_PATHS: {
62
+ readonly word: "m19.95 5.54-3.48-3.49A6.96 6.96 0 0 0 11.52 0H7C4.24 0 2 2.24 2 5v14c0 2.76 2.24 5 5 5h10c2.76 0 5-2.24 5-5v-8.51c0-1.87-.73-3.63-2.05-4.95Zm-1.41 1.41c.32.32.59.67.81 1.05h-4.34c-.55 0-1-.45-1-1V2.66c.38.22.73.49 1.05.81l3.48 3.49ZM20 19c0 1.65-1.35 3-3 3H7c-1.65 0-3-1.35-3-3V5c0-1.65 1.35-3 3-3h4.51c.16 0 .33 0 .49.02V7c0 1.65 1.35 3 3 3h4.98c.02.16.02.32.02.49V19Zm-3.28-5.76L15.3 18.9c-.15.61-.68 1.05-1.31 1.09-.63.04-1.21-.32-1.44-.91L12 17.7l-.55 1.38c-.22.56-.75.91-1.34.91h-.1c-.63-.04-1.15-.48-1.31-1.1l-1.41-5.66a1 1 0 0 1 1.94-.48l1 4 .85-2.13a1 1 0 0 1 1.86 0l.84 2.13 1.01-4a1 1 0 0 1 1.94.48Z";
63
+ readonly excel: "M15.27 13.64 13.3 16l1.97 2.36a1.001 1.001 0 1 1-1.54 1.28L12 17.56l-1.73 2.08a.99.99 0 0 1-.77.36c-.23 0-.45-.08-.64-.23-.42-.35-.48-.98-.13-1.41L10.7 16l-1.97-2.36a1.001 1.001 0 1 1 1.54-1.28L12 14.44l1.73-2.08c.35-.42.98-.48 1.41-.13.42.35.48.98.13 1.41ZM22 10.49V19c0 2.76-2.24 5-5 5H7c-2.76 0-5-2.24-5-5V5c0-2.76 2.24-5 5-5h4.51c1.87 0 3.63.73 4.95 2.05l3.48 3.49a6.96 6.96 0 0 1 2.05 4.95Zm-6.95-7.03c-.32-.32-.67-.59-1.05-.81V7c0 .55.45 1 1 1h4.34c-.22-.38-.49-.73-.81-1.05l-3.48-3.49ZM20 10.48c0-.16 0-.33-.02-.49H15c-1.65 0-3-1.35-3-3V2.02C11.84 2 11.68 2 11.51 2H7C5.35 2 4 3.35 4 5v14c0 1.65 1.35 3 3 3h10c1.65 0 3-1.35 3-3v-8.51Z";
64
+ readonly powerpoint: "m19.95 5.54-3.49-3.49A6.96 6.96 0 0 0 11.51 0H7C4.24 0 2 2.24 2 5v14c0 2.76 2.24 5 5 5h10c2.76 0 5-2.24 5-5v-8.51c0-1.87-.73-3.63-2.05-4.95Zm-1.41 1.41c.32.32.59.67.81 1.05h-4.34c-.55 0-1-.45-1-1V2.66c.38.22.73.49 1.05.81l3.49 3.49ZM20 19c0 1.65-1.35 3-3 3H7c-1.65 0-3-1.35-3-3V5c0-1.65 1.35-3 3-3h4.51c.16 0 .33 0 .49.02V7c0 1.65 1.35 3 3 3h4.98c.02.16.02.32.02.49V19Zm-10 1c-.55 0-1-.45-1-1v-5c0-1.1.9-2 2-2h1c1.65 0 3 1.35 3 3s-1.35 3-3 3h-1v1c0 .55-.45 1-1 1Zm1-4h1c.55 0 1-.45 1-1s-.45-1-1-1h-1v2Z";
65
+ };
66
+ /** Word/Excel/PowerPoint file glyph (the document icon in front of template/file rows). */
67
+ declare function fileTypeIcon(type: keyof typeof FILE_TYPE_ICON_PATHS, size?: number): TemplateResult;
68
+ /** Hamburger glyph (`st-header`'s mobile nav toggle, closed state). */
69
+ declare function menuIcon(size?: number): TemplateResult;
70
+ /** X/close glyph (`st-header`'s mobile nav toggle, open state). */
71
+ declare function closeIcon(size?: number): TemplateResult;
72
+ /** Gear/cog glyph (company settings). */
73
+ declare function gearIcon(size?: number): TemplateResult;
74
+ /** Paint-palette glyph (theme/color-scheme switcher). */
75
+ declare function paletteIcon(size?: number): TemplateResult;
76
+
77
+ export { bentoGridIcon, bookIcon, boxIcon, cardsViewIcon, cartIcon, checkIcon, chevronIcon, closeIcon, coinsIcon, documentIcon, externalLinkIcon, fileTypeIcon, folderIcon, folderOutlineIcon, gearIcon, historyIcon, listViewIcon, lockIcon, mapPinIcon, menuIcon, paletteIcon, percentIcon, plusIcon, receiptIcon, refreshIcon, siteIcon, trashIcon, truckIcon, usersIcon };
@@ -0,0 +1,64 @@
1
+ import {
2
+ bentoGridIcon,
3
+ bookIcon,
4
+ boxIcon,
5
+ cardsViewIcon,
6
+ cartIcon,
7
+ checkIcon,
8
+ chevronIcon,
9
+ closeIcon,
10
+ coinsIcon,
11
+ documentIcon,
12
+ externalLinkIcon,
13
+ fileTypeIcon,
14
+ folderIcon,
15
+ folderOutlineIcon,
16
+ gearIcon,
17
+ historyIcon,
18
+ listViewIcon,
19
+ lockIcon,
20
+ mapPinIcon,
21
+ menuIcon,
22
+ paletteIcon,
23
+ percentIcon,
24
+ plusIcon,
25
+ receiptIcon,
26
+ refreshIcon,
27
+ siteIcon,
28
+ trashIcon,
29
+ truckIcon,
30
+ usersIcon
31
+ } from "../chunk-3TCP25JG.js";
32
+ import "../chunk-EUXUH3YW.js";
33
+ export {
34
+ bentoGridIcon,
35
+ bookIcon,
36
+ boxIcon,
37
+ cardsViewIcon,
38
+ cartIcon,
39
+ checkIcon,
40
+ chevronIcon,
41
+ closeIcon,
42
+ coinsIcon,
43
+ documentIcon,
44
+ externalLinkIcon,
45
+ fileTypeIcon,
46
+ folderIcon,
47
+ folderOutlineIcon,
48
+ gearIcon,
49
+ historyIcon,
50
+ listViewIcon,
51
+ lockIcon,
52
+ mapPinIcon,
53
+ menuIcon,
54
+ paletteIcon,
55
+ percentIcon,
56
+ plusIcon,
57
+ receiptIcon,
58
+ refreshIcon,
59
+ siteIcon,
60
+ trashIcon,
61
+ truckIcon,
62
+ usersIcon
63
+ };
64
+ //# sourceMappingURL=icons.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,90 @@
1
+ import * as lit from 'lit';
2
+
3
+ /**
4
+ * Reusable `css` fragments shared across component `static styles` blocks.
5
+ *
6
+ * Lit's `css` tag allows interpolating another `CSSResult` anywhere inside a
7
+ * template, including mid-rule — `${fragment}` below expands to raw CSS
8
+ * text, so these compose into a component's own selectors without forcing a
9
+ * shared class name or touching `render()`. Each component keeps its own
10
+ * selectors; only the duplicated property lists move here. Layout details
11
+ * that genuinely vary per component (padding, gap, font-size, ...) stay
12
+ * local, declared after a fragment so the cascade lets them override it.
13
+ *
14
+ * Add a fragment here only once a pattern is byte-identical (or near enough
15
+ * that the deltas are better expressed as local overrides) across 3+
16
+ * components — see `packages/suite-components/README.md#shared-style-fragments`.
17
+ */
18
+ /** Truncates overflowing text to a single line with an ellipsis. */
19
+ declare const truncateStyles: lit.CSSResult;
20
+ /**
21
+ * Base for an unstyled, click-through interactive element (icon buttons,
22
+ * menu triggers, link-like buttons) before component-specific padding,
23
+ * font-size, and color are layered on.
24
+ */
25
+ declare const buttonResetStyles: lit.CSSResult;
26
+ /**
27
+ * The dark-filled primary-action button look (wizard Next/Generate/Run/Save,
28
+ * active toggle buttons, ...). Pair with `ctaButtonDisabledStyles` on the
29
+ * same selector's `:disabled` state.
30
+ */
31
+ declare const ctaButtonStyles: lit.CSSResult;
32
+ declare const ctaButtonDisabledStyles: lit.CSSResult;
33
+ /**
34
+ * Just the fill (background + color) from `ctaButtonStyles`, for selectors
35
+ * that only need to swap an already-bordered/sized button into the CTA look
36
+ * on an active/pressed/selected state (`[aria-pressed='true']`, `.active`,
37
+ * ...) rather than defining the button from scratch.
38
+ */
39
+ declare const ctaButtonFillStyles: lit.CSSResult;
40
+ /** Floating menu/dropdown panel chrome (user menu, language menu, ...). */
41
+ declare const dropdownPanelStyles: lit.CSSResult;
42
+ /** "No results" / "Nothing here." empty-state text. Padding stays local. */
43
+ declare const emptyStateStyles: lit.CSSResult;
44
+ /** Bordered, rounded shell wrapping a data table (browse/list views). */
45
+ declare const tableShellStyles: lit.CSSResult;
46
+ /** A single bordered result row with a name (truncated) + trailing link. */
47
+ declare const resultRowStyles: lit.CSSResult;
48
+ declare const resultNameStyles: lit.CSSResult;
49
+ declare const resultLinkStyles: lit.CSSResult;
50
+ /**
51
+ * Uppercase, letter-spaced section/field "eyebrow" label (card headings,
52
+ * table headers, field labels, ...). Font-size stays local since it varies
53
+ * (11–12px) by context.
54
+ */
55
+ declare const eyebrowLabelStyles: lit.CSSResult;
56
+ /** Top border separating stacked rows in a list/table (folder rows, data rows, table rows, ...). */
57
+ declare const rowDividerStyles: lit.CSSResult;
58
+ /**
59
+ * Bordered, rounded surface shell for a card/tile/panel (as opposed to
60
+ * `tableShellStyles`, which additionally clips overflow for tabular content).
61
+ * Padding, gap, and cursor stay local since they vary by component.
62
+ */
63
+ declare const cardShellStyles: lit.CSSResult;
64
+ /** A card/tile/row's bold primary name line (folder tiles/rows, template cards, ...). */
65
+ declare const itemNameStyles: lit.CSSResult;
66
+ /** A card/tile/row's muted secondary caption line, paired with `itemNameStyles`. */
67
+ declare const itemCaptionStyles: lit.CSSResult;
68
+ /**
69
+ * Whole rules (not a property list) every component's stylesheet starts
70
+ * with: routes keyboard focus rings and native checkbox/radio tint through
71
+ * `--st-focus-ring` / `--st-checkbox-color`, whose defaults (`auto`) keep
72
+ * the browser's own look until a host app themes them.
73
+ */
74
+ declare const controlBaseStyles: lit.CSSResult;
75
+ /** Default font stack, used by nearly every component. */
76
+ declare const fontFamilyStyles: lit.CSSResult;
77
+ /**
78
+ * Font stack for page-root/chrome components (`st-template-hub`, the admin
79
+ * and configuration pages, `st-app-header`, ...). Identical to
80
+ * `fontFamilyStyles` now that `--st-font-family` always resolves via
81
+ * `theme.css` (no per-usage fallback) — kept as a separate export so those
82
+ * call sites stay semantically distinct if the two ever need to diverge
83
+ * again.
84
+ */
85
+ declare const rootFontFamilyStyles: lit.CSSResult;
86
+ /** Canonical responsive breakpoints (px). Interpolate as `${BREAKPOINT_TABLET}px`. */
87
+ declare const BREAKPOINT_TABLET = 900;
88
+ declare const BREAKPOINT_MOBILE = 500;
89
+
90
+ export { BREAKPOINT_MOBILE, BREAKPOINT_TABLET, buttonResetStyles, cardShellStyles, controlBaseStyles, ctaButtonDisabledStyles, ctaButtonFillStyles, ctaButtonStyles, dropdownPanelStyles, emptyStateStyles, eyebrowLabelStyles, fontFamilyStyles, itemCaptionStyles, itemNameStyles, resultLinkStyles, resultNameStyles, resultRowStyles, rootFontFamilyStyles, rowDividerStyles, tableShellStyles, truncateStyles };
@@ -0,0 +1,48 @@
1
+ import {
2
+ BREAKPOINT_MOBILE,
3
+ BREAKPOINT_TABLET,
4
+ buttonResetStyles,
5
+ cardShellStyles,
6
+ controlBaseStyles,
7
+ ctaButtonDisabledStyles,
8
+ ctaButtonFillStyles,
9
+ ctaButtonStyles,
10
+ dropdownPanelStyles,
11
+ emptyStateStyles,
12
+ eyebrowLabelStyles,
13
+ fontFamilyStyles,
14
+ itemCaptionStyles,
15
+ itemNameStyles,
16
+ resultLinkStyles,
17
+ resultNameStyles,
18
+ resultRowStyles,
19
+ rootFontFamilyStyles,
20
+ rowDividerStyles,
21
+ tableShellStyles,
22
+ truncateStyles
23
+ } from "../chunk-RHAOQ6K4.js";
24
+ import "../chunk-EUXUH3YW.js";
25
+ export {
26
+ BREAKPOINT_MOBILE,
27
+ BREAKPOINT_TABLET,
28
+ buttonResetStyles,
29
+ cardShellStyles,
30
+ controlBaseStyles,
31
+ ctaButtonDisabledStyles,
32
+ ctaButtonFillStyles,
33
+ ctaButtonStyles,
34
+ dropdownPanelStyles,
35
+ emptyStateStyles,
36
+ eyebrowLabelStyles,
37
+ fontFamilyStyles,
38
+ itemCaptionStyles,
39
+ itemNameStyles,
40
+ resultLinkStyles,
41
+ resultNameStyles,
42
+ resultRowStyles,
43
+ rootFontFamilyStyles,
44
+ rowDividerStyles,
45
+ tableShellStyles,
46
+ truncateStyles
47
+ };
48
+ //# sourceMappingURL=styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}