codeapp-js 0.1.1 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/codeApp/dist/codeapp.js +552 -78
- package/codeApp/dist/power-apps-data.js +2531 -2531
- package/dev files/outlook.js +218 -9
- package/examples/combined demo/dist/codeapp.js +1098 -0
- package/examples/combined demo/dist/index.js +69 -114
- package/examples/combined demo/dist/power-apps-data.js +646 -170
- package/examples/combined demo/power.config.json +42 -42
- package/examples/dataverse Demo/dist/codeapp.js +1085 -0
- package/examples/dataverse Demo/dist/index.html +54 -54
- package/examples/dataverse Demo/dist/index.js +82 -70
- package/examples/dataverse Demo/dist/power-apps-data.js +551 -170
- package/examples/dataverse Demo/power.config.json +34 -34
- package/examples/dataverse Demo/readme.md +79 -79
- package/examples/groups Demo/dist/codeapp.js +1085 -0
- package/examples/groups Demo/dist/index.js +27 -27
- package/examples/groups Demo/dist/power-apps-data.js +551 -170
- package/examples/kanban/dist/dataverse.js +94 -94
- package/examples/kanban/dist/environmentVar.js +55 -55
- package/examples/kanban/dist/office365groups.js +97 -97
- package/examples/kanban/dist/office365users.js +169 -169
- package/examples/kanban/dist/outlook.js +162 -162
- package/examples/kanban/dist/power-apps-data.js +560 -138
- package/examples/kanban/dist/sharepoint.js +339 -339
- package/examples/myProfile/dist/index.html +184 -184
- package/examples/myProfile/dist/index.js +141 -141
- package/examples/myProfile/dist/office365users.js +169 -169
- package/examples/myProfile/dist/power-apps-data.js +560 -138
- package/examples/myProfile/power.config.json +22 -22
- package/examples/myProfile/readme.md +79 -79
- package/examples/outlook Demo/dist/codeapp.js +1085 -0
- package/examples/outlook Demo/dist/index.html +35 -35
- package/examples/outlook Demo/dist/index.js +170 -166
- package/examples/outlook Demo/dist/outlook.js +121 -121
- package/examples/outlook Demo/dist/power-apps-data.js +551 -170
- package/examples/outlook Demo/dist/styles.css +84 -84
- package/examples/outlook Demo/readme.md +82 -82
- package/examples/outlook Demo2/OutlookDemo_1_0_0_1.zip +0 -0
- package/examples/outlook Demo2/agent/decision-log.md +7 -0
- package/examples/outlook Demo2/dist/codeapp.js +1334 -0
- package/examples/outlook Demo2/dist/icon-512.png +0 -0
- package/examples/outlook Demo2/dist/index.html +98 -0
- package/examples/outlook Demo2/dist/index.js +346 -0
- package/examples/outlook Demo2/dist/power-apps-data.js +3007 -0
- package/examples/outlook Demo2/dist/styles.css +639 -0
- package/examples/outlook Demo2/power.config.json +23 -0
- package/examples/outlook Demo2/src/generated/index.ts +14 -0
- package/examples/outlook Demo2/src/generated/models/Office365GroupsModel.ts +363 -0
- package/examples/outlook Demo2/src/generated/models/Office365OutlookModel.ts +2046 -0
- package/examples/outlook Demo2/src/generated/models/Office365UsersModel.ts +254 -0
- package/examples/outlook Demo2/src/generated/services/Office365GroupsService.ts +326 -0
- package/examples/outlook Demo2/src/generated/services/Office365OutlookService.ts +2476 -0
- package/examples/outlook Demo2/src/generated/services/Office365UsersService.ts +358 -0
- package/examples/planning Poker/.vscode/settings.json +4 -4
- package/examples/planning Poker/additional files/customizations (tables).xml +6428 -6428
- package/examples/planning Poker/additional files/dataverse-tables.json +165 -165
- package/examples/planning Poker/additional files/readme.md +122 -122
- package/examples/planning Poker/dist/dataverse.js +78 -78
- package/examples/planning Poker/dist/index.html +198 -198
- package/examples/planning Poker/dist/index.js +954 -954
- package/examples/planning Poker/dist/power-apps-data.js +560 -138
- package/examples/planning Poker/dist/styles.css +815 -815
- package/examples/sharePoint Demo/agent/decision-log.md +5 -5
- package/examples/sharePoint Demo/dist/codeapp.js +1085 -0
- package/examples/sharePoint Demo/dist/index.js +44 -51
- package/examples/sharePoint Demo/dist/power-apps-data.js +551 -170
- package/examples/sharePoint Demo/power.config.json +22 -22
- package/examples/solution explorer/agent/decision-log.md +27 -0
- package/examples/solution explorer/agent/mockup-01-swiss-grid.html +452 -0
- package/examples/solution explorer/agent/mockup-02-dark-glass.html +496 -0
- package/examples/solution explorer/agent/mockup-03-paper-console.html +510 -0
- package/examples/solution explorer/agent/mockup-04-neon-noir.html +546 -0
- package/examples/solution explorer/agent/mockup-05-zen-garden.html +534 -0
- package/examples/solution explorer/dist/codeapp.js +1098 -0
- package/examples/solution explorer/dist/icon-512.png +0 -0
- package/examples/solution explorer/dist/index.html +80 -0
- package/examples/solution explorer/dist/index.js +735 -0
- package/examples/solution explorer/dist/power-apps-data.js +3007 -0
- package/examples/solution explorer/dist/styles.css +571 -0
- package/examples/solution explorer/power.config.json +151 -0
- package/examples/todo/dist/dataverse.js +64 -64
- package/examples/todo/dist/index.html +75 -75
- package/examples/todo/dist/index.js +8 -8
- package/examples/todo/dist/power-apps-data.js +560 -138
- package/examples/todo/dist/renderer.js +375 -375
- package/examples/todo/dist/styles.css +691 -691
- package/examples/todo/power.config.json +34 -34
- package/package.json +1 -8
- package/docs-mockups/atelier/index.html +0 -120
- package/docs-mockups/atelier/script.js +0 -23
- package/docs-mockups/atelier/styles.css +0 -361
- package/docs-mockups/field-guide/index.html +0 -112
- package/docs-mockups/field-guide/script.js +0 -20
- package/docs-mockups/field-guide/styles.css +0 -272
- package/docs-mockups/index.html +0 -80
- package/docs-mockups/maker-hub/index.html +0 -178
- package/docs-mockups/maker-hub/script.js +0 -20
- package/docs-mockups/maker-hub/styles.css +0 -404
- package/docs-mockups/script.js +0 -26
- package/docs-mockups/signal/index.html +0 -146
- package/docs-mockups/signal/script.js +0 -20
- package/docs-mockups/signal/styles.css +0 -314
- package/docs-mockups/styles.css +0 -287
- package/examples/combined demo/dist/dataverse.js +0 -86
- package/examples/combined demo/dist/environmentVar.js +0 -55
- package/examples/combined demo/dist/office365groups.js +0 -97
- package/examples/combined demo/dist/office365users.js +0 -169
- package/examples/combined demo/dist/outlook.js +0 -162
- package/examples/combined demo/dist/sharepoint.js +0 -339
- package/examples/dataverse Demo/dist/dataverse.js +0 -86
- package/examples/groups Demo/dist/dataverse.js +0 -86
- package/examples/groups Demo/dist/environmentVar.js +0 -55
- package/examples/groups Demo/dist/office365groups.js +0 -97
- package/examples/groups Demo/dist/office365users.js +0 -169
- package/examples/groups Demo/dist/outlook.js +0 -162
- package/examples/groups Demo/dist/sharepoint.js +0 -339
- package/examples/sharePoint Demo/dist/dataverse.js +0 -94
- package/examples/sharePoint Demo/dist/environmentVar.js +0 -55
- package/examples/sharePoint Demo/dist/office365groups.js +0 -97
- package/examples/sharePoint Demo/dist/office365users.js +0 -169
- package/examples/sharePoint Demo/dist/outlook.js +0 -162
- package/examples/sharePoint Demo/dist/sharepoint.js +0 -339
|
@@ -1,35 +1,35 @@
|
|
|
1
|
-
{
|
|
2
|
-
"appDisplayName": "Todo",
|
|
3
|
-
"description": "A task management app backed by the Dataverse task table.",
|
|
4
|
-
"environmentId": "<ENVIRONMENT_ID>",
|
|
5
|
-
"buildPath": "./dist",
|
|
6
|
-
"buildEntryPoint": "index.html",
|
|
7
|
-
"logoPath": "icon192.png",
|
|
8
|
-
"localAppUrl": "http://localhost:3000",
|
|
9
|
-
"region": "prod",
|
|
10
|
-
"connectionReferences": {
|
|
11
|
-
"dataverse": {
|
|
12
|
-
"id": "/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps",
|
|
13
|
-
"displayName": "Microsoft Dataverse",
|
|
14
|
-
"dataSources": [
|
|
15
|
-
"commondataserviceforapps"
|
|
16
|
-
],
|
|
17
|
-
"authenticationType": null,
|
|
18
|
-
"sharedConnectionId": null,
|
|
19
|
-
"dataSets": {}
|
|
20
|
-
}
|
|
21
|
-
},
|
|
22
|
-
"databaseReferences": {
|
|
23
|
-
"default.cds": {
|
|
24
|
-
"databaseDetails": null,
|
|
25
|
-
"dataSources": {
|
|
26
|
-
"tasks": {
|
|
27
|
-
"entitySetName": "tasks",
|
|
28
|
-
"logicalName": "task",
|
|
29
|
-
"isHidden": false
|
|
30
|
-
}
|
|
31
|
-
},
|
|
32
|
-
"actions": null
|
|
33
|
-
}
|
|
34
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"appDisplayName": "Todo",
|
|
3
|
+
"description": "A task management app backed by the Dataverse task table.",
|
|
4
|
+
"environmentId": "<ENVIRONMENT_ID>",
|
|
5
|
+
"buildPath": "./dist",
|
|
6
|
+
"buildEntryPoint": "index.html",
|
|
7
|
+
"logoPath": "icon192.png",
|
|
8
|
+
"localAppUrl": "http://localhost:3000",
|
|
9
|
+
"region": "prod",
|
|
10
|
+
"connectionReferences": {
|
|
11
|
+
"dataverse": {
|
|
12
|
+
"id": "/providers/Microsoft.PowerApps/apis/shared_commondataserviceforapps",
|
|
13
|
+
"displayName": "Microsoft Dataverse",
|
|
14
|
+
"dataSources": [
|
|
15
|
+
"commondataserviceforapps"
|
|
16
|
+
],
|
|
17
|
+
"authenticationType": null,
|
|
18
|
+
"sharedConnectionId": null,
|
|
19
|
+
"dataSets": {}
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
"databaseReferences": {
|
|
23
|
+
"default.cds": {
|
|
24
|
+
"databaseDetails": null,
|
|
25
|
+
"dataSources": {
|
|
26
|
+
"tasks": {
|
|
27
|
+
"entitySetName": "tasks",
|
|
28
|
+
"logicalName": "task",
|
|
29
|
+
"isHidden": false
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
"actions": null
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
35
|
}
|
package/package.json
CHANGED
|
@@ -1,20 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "codeapp-js",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.2",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "JavaScript library with samples and starter app for Power Apps Code Apps.",
|
|
6
6
|
"scripts": {
|
|
7
|
-
"build": "npm run build:sdk",
|
|
8
|
-
"build:sdk": "node ./scripts/build-power-sdk.mjs",
|
|
9
|
-
"postinstall": "npm run build:sdk",
|
|
10
7
|
"start": "http-server . -p 4173 -c-1",
|
|
11
8
|
"start:codeapp": "http-server . -p 4173 -c-1 -o /codeApp/dist/"
|
|
12
9
|
},
|
|
13
|
-
"dependencies": {
|
|
14
|
-
"@microsoft/power-apps": "1.0.4"
|
|
15
|
-
},
|
|
16
10
|
"devDependencies": {
|
|
17
|
-
"esbuild": "0.25.1",
|
|
18
11
|
"http-server": "14.1.1"
|
|
19
12
|
}
|
|
20
13
|
}
|
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="UTF-8">
|
|
5
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
-
<title>Atelier Ledger | codeapp-js Docs</title>
|
|
7
|
-
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
8
|
-
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
9
|
-
<link href="https://fonts.googleapis.com/css2?family=Cormorant+Garamond:wght@500;600;700&family=Manrope:wght@400;500;600;700;800&display=swap" rel="stylesheet">
|
|
10
|
-
<link rel="stylesheet" href="./styles.css">
|
|
11
|
-
</head>
|
|
12
|
-
<body>
|
|
13
|
-
<div class="pageShell">
|
|
14
|
-
<header class="topbar">
|
|
15
|
-
<a class="brand" href="../index.html">codeapp-js</a>
|
|
16
|
-
<nav>
|
|
17
|
-
<a href="#overview">Overview</a>
|
|
18
|
-
<a href="#install">Install</a>
|
|
19
|
-
<a href="#config">Config</a>
|
|
20
|
-
<a href="#examples">Examples</a>
|
|
21
|
-
</nav>
|
|
22
|
-
</header>
|
|
23
|
-
|
|
24
|
-
<main>
|
|
25
|
-
<section class="hero" id="overview">
|
|
26
|
-
<div class="heroCopy">
|
|
27
|
-
<p class="eyebrow">Editorial Concept</p>
|
|
28
|
-
<h1>Documentation that sells the craft, not just the commands.</h1>
|
|
29
|
-
<p class="intro">codeapp-js wraps the Power Apps Code Apps workflow in a cleaner JavaScript-first package: generated services, connector libraries, and a repo layout that feels familiar to frontend developers.</p>
|
|
30
|
-
<div class="heroActions">
|
|
31
|
-
<button class="primaryButton" id="copyInstallButton">Copy install command</button>
|
|
32
|
-
<a class="secondaryButton" href="#config">See config anatomy</a>
|
|
33
|
-
</div>
|
|
34
|
-
</div>
|
|
35
|
-
<div class="heroPanel">
|
|
36
|
-
<p class="panelKicker">Starter flow</p>
|
|
37
|
-
<ol>
|
|
38
|
-
<li>Install the package and local dependencies.</li>
|
|
39
|
-
<li>Authenticate with `pac auth create`.</li>
|
|
40
|
-
<li>Add tables and connectors in `power.config.json`.</li>
|
|
41
|
-
<li>Run `pac code push` to generate services.</li>
|
|
42
|
-
</ol>
|
|
43
|
-
<div class="miniStatRow">
|
|
44
|
-
<div>
|
|
45
|
-
<strong>5</strong>
|
|
46
|
-
<span>connector families</span>
|
|
47
|
-
</div>
|
|
48
|
-
<div>
|
|
49
|
-
<strong>4173</strong>
|
|
50
|
-
<span>default local port</span>
|
|
51
|
-
</div>
|
|
52
|
-
</div>
|
|
53
|
-
</div>
|
|
54
|
-
</section>
|
|
55
|
-
|
|
56
|
-
<section class="splitSection" id="install">
|
|
57
|
-
<article class="paperCard commandCard">
|
|
58
|
-
<p class="sectionLabel">Quick start</p>
|
|
59
|
-
<h2>Start with the exact workflow your repo already expects.</h2>
|
|
60
|
-
<pre><code id="installSnippet">npm install codeapp-js
|
|
61
|
-
npm start
|
|
62
|
-
pac auth create</code></pre>
|
|
63
|
-
</article>
|
|
64
|
-
<article class="paperCard proseCard">
|
|
65
|
-
<p class="sectionLabel">Why it lands well</p>
|
|
66
|
-
<p>The package stays close to the Power Apps mental model, but frames it in a frontend repo structure: generated services in `src/generated`, a simple `power.config.json`, and local serving from the repository root.</p>
|
|
67
|
-
<div class="connectorRow">
|
|
68
|
-
<span>Dataverse</span>
|
|
69
|
-
<span>Outlook</span>
|
|
70
|
-
<span>SharePoint</span>
|
|
71
|
-
<span>Groups</span>
|
|
72
|
-
<span>Users</span>
|
|
73
|
-
</div>
|
|
74
|
-
</article>
|
|
75
|
-
</section>
|
|
76
|
-
|
|
77
|
-
<section class="storyGrid" id="config">
|
|
78
|
-
<article class="storyCard accentCard">
|
|
79
|
-
<p class="sectionLabel">Configuration</p>
|
|
80
|
-
<h2>`power.config.json` becomes the center of gravity.</h2>
|
|
81
|
-
<p>Describe Dataverse tables in `databaseReferences.default.cds.dataSources`, then add connector references for Outlook, SharePoint, Groups, and Users. The docs style here treats config like a system diagram rather than a dump of JSON.</p>
|
|
82
|
-
</article>
|
|
83
|
-
<article class="storyCard quoteCard">
|
|
84
|
-
<p class="quote">“The docs feel premium and narrative-driven, which is useful if the package needs credibility with both makers and JavaScript developers.”</p>
|
|
85
|
-
</article>
|
|
86
|
-
<article class="storyCard codeCard">
|
|
87
|
-
<p class="sectionLabel">Generated output</p>
|
|
88
|
-
<code>src/generated/services/AccountsService.ts</code>
|
|
89
|
-
<code>src/generated/models/AccountsModel.ts</code>
|
|
90
|
-
<code>examples/todo/dist/</code>
|
|
91
|
-
</article>
|
|
92
|
-
</section>
|
|
93
|
-
|
|
94
|
-
<section class="examplesSection" id="examples">
|
|
95
|
-
<div class="examplesHeader">
|
|
96
|
-
<p class="sectionLabel">Examples</p>
|
|
97
|
-
<h2>Anchor the package with sample-driven documentation.</h2>
|
|
98
|
-
</div>
|
|
99
|
-
<div class="exampleCards">
|
|
100
|
-
<article>
|
|
101
|
-
<h3>Starter app</h3>
|
|
102
|
-
<p>Focus on the smallest successful path from install to `codeApp/dist/`.</p>
|
|
103
|
-
</article>
|
|
104
|
-
<article>
|
|
105
|
-
<h3>Connector demos</h3>
|
|
106
|
-
<p>Show SharePoint, Outlook, Groups, and Users as self-contained demos with short “what it proves” summaries.</p>
|
|
107
|
-
</article>
|
|
108
|
-
<article>
|
|
109
|
-
<h3>Generated service reference</h3>
|
|
110
|
-
<p>Document the generated files once, then reuse the structure across every example.</p>
|
|
111
|
-
</article>
|
|
112
|
-
</div>
|
|
113
|
-
</section>
|
|
114
|
-
</main>
|
|
115
|
-
</div>
|
|
116
|
-
|
|
117
|
-
<div class="toast" id="toast" aria-live="polite"></div>
|
|
118
|
-
<script src="./script.js"></script>
|
|
119
|
-
</body>
|
|
120
|
-
</html>
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
const eCopyInstallButton = document.getElementById('copyInstallButton');
|
|
2
|
-
const eInstallSnippet = document.getElementById('installSnippet');
|
|
3
|
-
const eToast = document.getElementById('toast');
|
|
4
|
-
|
|
5
|
-
const showToast = (sMessage) => {
|
|
6
|
-
eToast.textContent = sMessage;
|
|
7
|
-
eToast.classList.add('is-visible');
|
|
8
|
-
|
|
9
|
-
window.setTimeout(() => {
|
|
10
|
-
eToast.classList.remove('is-visible');
|
|
11
|
-
}, 1800);
|
|
12
|
-
};
|
|
13
|
-
|
|
14
|
-
const copyInstallSnippet = async () => {
|
|
15
|
-
try {
|
|
16
|
-
await navigator.clipboard.writeText(eInstallSnippet.textContent);
|
|
17
|
-
showToast('Install command copied');
|
|
18
|
-
} catch (oError) {
|
|
19
|
-
showToast('Clipboard unavailable in this browser');
|
|
20
|
-
}
|
|
21
|
-
};
|
|
22
|
-
|
|
23
|
-
eCopyInstallButton.addEventListener('click', copyInstallSnippet);
|
|
@@ -1,361 +0,0 @@
|
|
|
1
|
-
:root {
|
|
2
|
-
--bg: #f8f1e7;
|
|
3
|
-
--paper: rgba(255, 252, 247, 0.86);
|
|
4
|
-
--ink: #211715;
|
|
5
|
-
--muted: #66564e;
|
|
6
|
-
--line: rgba(33, 23, 21, 0.12);
|
|
7
|
-
--accent: #8b3d2e;
|
|
8
|
-
--accent-soft: #e7d3c6;
|
|
9
|
-
--green: #0d6b63;
|
|
10
|
-
--shadow: 0 24px 60px rgba(91, 57, 27, 0.12);
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
* {
|
|
14
|
-
box-sizing: border-box;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
html {
|
|
18
|
-
scroll-behavior: smooth;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
body {
|
|
22
|
-
margin: 0;
|
|
23
|
-
min-height: 100vh;
|
|
24
|
-
background:
|
|
25
|
-
radial-gradient(circle at top right, rgba(13, 107, 99, 0.14), transparent 24%),
|
|
26
|
-
radial-gradient(circle at 10% 10%, rgba(139, 61, 46, 0.14), transparent 25%),
|
|
27
|
-
linear-gradient(180deg, #fbf5ec, var(--bg));
|
|
28
|
-
color: var(--ink);
|
|
29
|
-
font-family: 'Manrope', sans-serif;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
.pageShell {
|
|
33
|
-
width: min(1180px, calc(100% - 48px));
|
|
34
|
-
margin: 0 auto;
|
|
35
|
-
padding-bottom: 56px;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
.topbar {
|
|
39
|
-
display: flex;
|
|
40
|
-
justify-content: space-between;
|
|
41
|
-
align-items: center;
|
|
42
|
-
padding: 22px 0;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
.brand,
|
|
46
|
-
.topbar nav a {
|
|
47
|
-
color: var(--ink);
|
|
48
|
-
text-decoration: none;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
.brand {
|
|
52
|
-
font-family: 'Cormorant Garamond', serif;
|
|
53
|
-
font-size: 1.9rem;
|
|
54
|
-
font-weight: 700;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
.topbar nav {
|
|
58
|
-
display: flex;
|
|
59
|
-
gap: 18px;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
.topbar nav a {
|
|
63
|
-
font-size: 0.95rem;
|
|
64
|
-
font-weight: 700;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
.hero {
|
|
68
|
-
display: grid;
|
|
69
|
-
grid-template-columns: 1.3fr 0.9fr;
|
|
70
|
-
gap: 28px;
|
|
71
|
-
padding: 48px 0 28px;
|
|
72
|
-
align-items: stretch;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
.heroCopy h1,
|
|
76
|
-
.splitSection h2,
|
|
77
|
-
.storyCard h2,
|
|
78
|
-
.examplesHeader h2 {
|
|
79
|
-
font-family: 'Cormorant Garamond', serif;
|
|
80
|
-
font-weight: 700;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
.heroCopy h1 {
|
|
84
|
-
margin: 10px 0 0;
|
|
85
|
-
font-size: clamp(3.4rem, 7vw, 6rem);
|
|
86
|
-
line-height: 0.92;
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
.eyebrow,
|
|
90
|
-
.sectionLabel,
|
|
91
|
-
.panelKicker {
|
|
92
|
-
margin: 0;
|
|
93
|
-
color: var(--accent);
|
|
94
|
-
font-size: 0.84rem;
|
|
95
|
-
font-weight: 800;
|
|
96
|
-
letter-spacing: 0.16em;
|
|
97
|
-
text-transform: uppercase;
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
.intro {
|
|
101
|
-
max-width: 640px;
|
|
102
|
-
margin: 20px 0 0;
|
|
103
|
-
color: var(--muted);
|
|
104
|
-
font-size: 1.06rem;
|
|
105
|
-
line-height: 1.8;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
.heroActions {
|
|
109
|
-
display: flex;
|
|
110
|
-
flex-wrap: wrap;
|
|
111
|
-
gap: 14px;
|
|
112
|
-
margin-top: 28px;
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
.primaryButton,
|
|
116
|
-
.secondaryButton {
|
|
117
|
-
border-radius: 999px;
|
|
118
|
-
padding: 14px 20px;
|
|
119
|
-
font: inherit;
|
|
120
|
-
font-weight: 800;
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
.primaryButton {
|
|
124
|
-
border: 0;
|
|
125
|
-
background: var(--ink);
|
|
126
|
-
color: #fffaf6;
|
|
127
|
-
cursor: pointer;
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
.secondaryButton {
|
|
131
|
-
border: 1px solid var(--line);
|
|
132
|
-
background: rgba(255, 250, 246, 0.8);
|
|
133
|
-
color: var(--ink);
|
|
134
|
-
text-decoration: none;
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
.heroPanel,
|
|
138
|
-
.paperCard,
|
|
139
|
-
.storyCard,
|
|
140
|
-
.exampleCards article {
|
|
141
|
-
border: 1px solid var(--line);
|
|
142
|
-
border-radius: 30px;
|
|
143
|
-
background: var(--paper);
|
|
144
|
-
box-shadow: var(--shadow);
|
|
145
|
-
backdrop-filter: blur(14px);
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
.heroPanel {
|
|
149
|
-
padding: 28px;
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
.heroPanel ol {
|
|
153
|
-
margin: 18px 0 0;
|
|
154
|
-
padding-left: 18px;
|
|
155
|
-
line-height: 1.8;
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
.miniStatRow {
|
|
159
|
-
display: grid;
|
|
160
|
-
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
161
|
-
gap: 14px;
|
|
162
|
-
margin-top: 22px;
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
.miniStatRow div {
|
|
166
|
-
padding: 18px;
|
|
167
|
-
border-radius: 22px;
|
|
168
|
-
background: linear-gradient(135deg, rgba(231, 211, 198, 0.86), rgba(255, 252, 247, 0.6));
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
.miniStatRow strong {
|
|
172
|
-
display: block;
|
|
173
|
-
font-size: 1.7rem;
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
.miniStatRow span {
|
|
177
|
-
color: var(--muted);
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
.splitSection {
|
|
181
|
-
display: grid;
|
|
182
|
-
grid-template-columns: 1.1fr 0.9fr;
|
|
183
|
-
gap: 22px;
|
|
184
|
-
margin-top: 22px;
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
.paperCard {
|
|
188
|
-
padding: 28px;
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
.paperCard h2 {
|
|
192
|
-
margin: 12px 0 12px;
|
|
193
|
-
font-size: clamp(2rem, 3.5vw, 3rem);
|
|
194
|
-
line-height: 1;
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
pre {
|
|
198
|
-
overflow-x: auto;
|
|
199
|
-
margin: 0;
|
|
200
|
-
padding: 20px;
|
|
201
|
-
border-radius: 22px;
|
|
202
|
-
background: #201816;
|
|
203
|
-
color: #f6ebe1;
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
code {
|
|
207
|
-
font-family: 'Courier New', monospace;
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
.proseCard p {
|
|
211
|
-
color: var(--muted);
|
|
212
|
-
line-height: 1.8;
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
.connectorRow {
|
|
216
|
-
display: flex;
|
|
217
|
-
flex-wrap: wrap;
|
|
218
|
-
gap: 10px;
|
|
219
|
-
margin-top: 18px;
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
.connectorRow span {
|
|
223
|
-
padding: 9px 12px;
|
|
224
|
-
border: 1px solid var(--line);
|
|
225
|
-
border-radius: 999px;
|
|
226
|
-
background: rgba(255, 252, 247, 0.78);
|
|
227
|
-
font-size: 0.88rem;
|
|
228
|
-
font-weight: 800;
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
.storyGrid {
|
|
232
|
-
display: grid;
|
|
233
|
-
grid-template-columns: 1.2fr 0.9fr 0.9fr;
|
|
234
|
-
gap: 22px;
|
|
235
|
-
margin-top: 22px;
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
.storyCard {
|
|
239
|
-
min-height: 240px;
|
|
240
|
-
padding: 28px;
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
.accentCard {
|
|
244
|
-
background: linear-gradient(145deg, rgba(13, 107, 99, 0.94), rgba(5, 58, 53, 0.92));
|
|
245
|
-
color: #effcf8;
|
|
246
|
-
}
|
|
247
|
-
|
|
248
|
-
.accentCard .sectionLabel,
|
|
249
|
-
.accentCard p {
|
|
250
|
-
color: rgba(239, 252, 248, 0.78);
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
.accentCard h2 {
|
|
254
|
-
margin: 14px 0;
|
|
255
|
-
font-size: clamp(2rem, 3vw, 3.2rem);
|
|
256
|
-
}
|
|
257
|
-
|
|
258
|
-
.quoteCard {
|
|
259
|
-
display: flex;
|
|
260
|
-
align-items: end;
|
|
261
|
-
background: linear-gradient(180deg, rgba(231, 211, 198, 0.68), rgba(255, 252, 247, 0.88));
|
|
262
|
-
}
|
|
263
|
-
|
|
264
|
-
.quote {
|
|
265
|
-
margin: 0;
|
|
266
|
-
font-family: 'Cormorant Garamond', serif;
|
|
267
|
-
font-size: 2rem;
|
|
268
|
-
line-height: 1.1;
|
|
269
|
-
}
|
|
270
|
-
|
|
271
|
-
.codeCard {
|
|
272
|
-
display: grid;
|
|
273
|
-
gap: 12px;
|
|
274
|
-
}
|
|
275
|
-
|
|
276
|
-
.codeCard code {
|
|
277
|
-
display: block;
|
|
278
|
-
padding: 16px;
|
|
279
|
-
border-radius: 18px;
|
|
280
|
-
background: rgba(255, 252, 247, 0.84);
|
|
281
|
-
border: 1px solid var(--line);
|
|
282
|
-
}
|
|
283
|
-
|
|
284
|
-
.examplesSection {
|
|
285
|
-
margin-top: 22px;
|
|
286
|
-
padding: 30px 0 0;
|
|
287
|
-
}
|
|
288
|
-
|
|
289
|
-
.examplesHeader h2 {
|
|
290
|
-
margin: 12px 0 0;
|
|
291
|
-
font-size: clamp(2rem, 4vw, 3.5rem);
|
|
292
|
-
}
|
|
293
|
-
|
|
294
|
-
.exampleCards {
|
|
295
|
-
display: grid;
|
|
296
|
-
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
297
|
-
gap: 18px;
|
|
298
|
-
margin-top: 22px;
|
|
299
|
-
}
|
|
300
|
-
|
|
301
|
-
.exampleCards article {
|
|
302
|
-
padding: 24px;
|
|
303
|
-
}
|
|
304
|
-
|
|
305
|
-
.exampleCards h3 {
|
|
306
|
-
margin: 0 0 12px;
|
|
307
|
-
font-size: 1.3rem;
|
|
308
|
-
}
|
|
309
|
-
|
|
310
|
-
.exampleCards p {
|
|
311
|
-
margin: 0;
|
|
312
|
-
color: var(--muted);
|
|
313
|
-
line-height: 1.7;
|
|
314
|
-
}
|
|
315
|
-
|
|
316
|
-
.toast {
|
|
317
|
-
position: fixed;
|
|
318
|
-
right: 20px;
|
|
319
|
-
bottom: 20px;
|
|
320
|
-
padding: 12px 16px;
|
|
321
|
-
border-radius: 999px;
|
|
322
|
-
background: var(--ink);
|
|
323
|
-
color: #fffaf6;
|
|
324
|
-
opacity: 0;
|
|
325
|
-
transform: translateY(12px);
|
|
326
|
-
transition: opacity 180ms ease, transform 180ms ease;
|
|
327
|
-
}
|
|
328
|
-
|
|
329
|
-
.toast.is-visible {
|
|
330
|
-
opacity: 1;
|
|
331
|
-
transform: translateY(0);
|
|
332
|
-
}
|
|
333
|
-
|
|
334
|
-
@media (max-width: 980px) {
|
|
335
|
-
.hero,
|
|
336
|
-
.splitSection,
|
|
337
|
-
.storyGrid,
|
|
338
|
-
.exampleCards {
|
|
339
|
-
grid-template-columns: 1fr;
|
|
340
|
-
}
|
|
341
|
-
}
|
|
342
|
-
|
|
343
|
-
@media (max-width: 720px) {
|
|
344
|
-
.pageShell {
|
|
345
|
-
width: min(100% - 28px, 1180px);
|
|
346
|
-
}
|
|
347
|
-
|
|
348
|
-
.topbar {
|
|
349
|
-
flex-direction: column;
|
|
350
|
-
gap: 12px;
|
|
351
|
-
align-items: flex-start;
|
|
352
|
-
}
|
|
353
|
-
|
|
354
|
-
.topbar nav {
|
|
355
|
-
flex-wrap: wrap;
|
|
356
|
-
}
|
|
357
|
-
|
|
358
|
-
.heroActions {
|
|
359
|
-
flex-direction: column;
|
|
360
|
-
}
|
|
361
|
-
}
|