@dataimago/css 0.1.0-alpha.16 → 0.1.0-alpha.19

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.
@@ -0,0 +1,73 @@
1
+ // @dataimago/css@0.1.0-alpha.19 dist/templates/quarto_website/assets/js/logo-switch.js · sha256:f69f3ad9c9ab670197c32d75e072cdfa5fb5cc0fc720f636dd9a9e3a3c44015c · generated from tokens; do not edit · restore: npx -p @dataimago/css@0.1.0-alpha.19 dataimago-sync
2
+ var defaultLogoSrc = '/assets/img/ai_monogram.svg';
3
+ var defaultLogoHref = '{{SITE_URL}}';
4
+ var hoverLogoHref = 'https://dataimago.ai';
5
+
6
+ function getCurrentTheme() {
7
+ var dataTheme = document.documentElement.getAttribute('data-bs-theme');
8
+ if (dataTheme === 'dark') return 'dark';
9
+
10
+ var lightSheets = document.querySelectorAll('link.quarto-color-scheme:not(.quarto-color-alternate)');
11
+ var allLightDisabled = true;
12
+ for (var i = 0; i < lightSheets.length; i++) {
13
+ if (!lightSheets[i].disabled) { allLightDisabled = false; break; }
14
+ }
15
+ var darkSheets = document.querySelectorAll('link.quarto-color-scheme.quarto-color-alternate');
16
+ var anyDarkEnabled = false;
17
+ for (var j = 0; j < darkSheets.length; j++) {
18
+ if (!darkSheets[j].disabled) { anyDarkEnabled = true; break; }
19
+ }
20
+ if (allLightDisabled && anyDarkEnabled) return 'dark';
21
+ if (document.body.classList.contains('quarto-dark')) return 'dark';
22
+ return 'light';
23
+ }
24
+
25
+ function setupNavbarBrandHover() {
26
+ var navbarLogo = document.querySelector('.navbar-logo');
27
+ var navbarBrand = navbarLogo ? navbarLogo.closest('a') : document.querySelector('.navbar-brand');
28
+ if (!navbarBrand) return;
29
+
30
+ navbarBrand.addEventListener('mouseover', function() {
31
+ navbarBrand.href = hoverLogoHref;
32
+ if (navbarLogo) navbarLogo.classList.add('logo-hover');
33
+ });
34
+ navbarBrand.addEventListener('mouseout', function() {
35
+ navbarBrand.href = defaultLogoHref;
36
+ if (navbarLogo) navbarLogo.classList.remove('logo-hover');
37
+ });
38
+ }
39
+
40
+ function setupFooterLogoHover() {
41
+ var footerLogos = document.querySelectorAll('.footer-ai-monogram-logo');
42
+ footerLogos.forEach(function(logo) {
43
+ logo.addEventListener('mouseover', function() { logo.classList.add('logo-hover'); });
44
+ logo.addEventListener('mouseout', function() { logo.classList.remove('logo-hover'); });
45
+ });
46
+ }
47
+
48
+ function initLogoSwitch() {
49
+ setupNavbarBrandHover();
50
+ setupFooterLogoHover();
51
+ }
52
+
53
+ if (document.readyState === 'loading') {
54
+ document.addEventListener('DOMContentLoaded', initLogoSwitch);
55
+ } else {
56
+ initLogoSwitch();
57
+ }
58
+
59
+ var themeObserver = new MutationObserver(function(mutations) {
60
+ mutations.forEach(function(mutation) {
61
+ if (mutation.type === 'attributes' &&
62
+ (mutation.attributeName === 'data-bs-theme' || mutation.attributeName === 'class')) {
63
+ setTimeout(initLogoSwitch, 100);
64
+ }
65
+ });
66
+ });
67
+ themeObserver.observe(document.documentElement, { attributes: true });
68
+ themeObserver.observe(document.body, { attributes: true });
69
+
70
+ document.querySelectorAll('link.quarto-color-scheme').forEach(function(sheet) {
71
+ new MutationObserver(function() { setTimeout(initLogoSwitch, 100); })
72
+ .observe(sheet, { attributes: true, attributeFilter: ['disabled'] });
73
+ });
@@ -0,0 +1,67 @@
1
+ // @dataimago/css@0.1.0-alpha.19 dist/templates/quarto_website/assets/js/scroll.js · sha256:694f335a8c098d252123b523e1a7ac8d475da436eb3c5f73451d96108b2863d2 · generated from tokens; do not edit · restore: npx -p @dataimago/css@0.1.0-alpha.19 dataimago-sync
2
+ $(window).scroll(function(){
3
+ if($(window).scrollTop() > 35) {
4
+ $('.navbar').addClass("shrink");
5
+ $('.navbar-title').addClass("shrink");
6
+ $('.navbar-logo').addClass("shrink");
7
+ $('body').addClass("shrink");
8
+ } else {
9
+ $('.navbar').removeClass("shrink");
10
+ $('.navbar-title').removeClass("shrink");
11
+ $('.navbar-logo').removeClass("shrink");
12
+ $('body').removeClass("shrink");
13
+ }
14
+ });
15
+
16
+ $(document).ready(function() {
17
+ function observeDropdownChanges() {
18
+ var observer = new MutationObserver(function(mutations) {
19
+ mutations.forEach(function(mutation) {
20
+ if (mutation.type === 'attributes') {
21
+ var $target = $(mutation.target);
22
+ if ($target.hasClass('dropdown-toggle')) {
23
+ var $dropdown = $target.closest('.dropdown, .nav-item');
24
+ var isExpanded = $target.attr('aria-expanded') === 'true';
25
+
26
+ if (isExpanded) {
27
+ $dropdown.addClass('open');
28
+ } else {
29
+ $dropdown.removeClass('open');
30
+ }
31
+ }
32
+ }
33
+ });
34
+ });
35
+
36
+ $('.navbar-nav .dropdown-toggle').each(function() {
37
+ observer.observe(this, {
38
+ attributes: true,
39
+ attributeFilter: ['aria-expanded']
40
+ });
41
+ });
42
+ }
43
+
44
+ observeDropdownChanges();
45
+
46
+ $('.navbar-nav .dropdown-toggle').on('click', function() {
47
+ var $this = $(this);
48
+ var $dropdown = $this.closest('.dropdown, .nav-item');
49
+
50
+ setTimeout(function() {
51
+ var isExpanded = $this.attr('aria-expanded') === 'true';
52
+ if (isExpanded) {
53
+ $dropdown.addClass('open');
54
+ } else {
55
+ $dropdown.removeClass('open');
56
+ }
57
+ }, 50);
58
+ });
59
+
60
+ $('.navbar-nav .dropdown, .navbar-nav .nav-item').on('show.bs.dropdown', function() {
61
+ $(this).addClass('open');
62
+ });
63
+
64
+ $('.navbar-nav .dropdown, .navbar-nav .nav-item').on('hide.bs.dropdown', function() {
65
+ $(this).removeClass('open');
66
+ });
67
+ });
@@ -0,0 +1,49 @@
1
+ <!-- @dataimago/css@0.1.0-alpha.19 dist/templates/quarto_website/ethics.qmd.template · sha256:fc151adb9c9fd9934a3c23ca5822eb6b05ca27795070ff7dbb26acd0e50ddbe5 · generated from tokens; do not edit · restore: npx -p @dataimago/css@0.1.0-alpha.19 dataimago-sync -->
2
+ ---
3
+ title: "Ethical AI Principles"
4
+ subtitle: "Superalignment Through Design Architecture"
5
+ format:
6
+ html:
7
+ toc: true
8
+ toc-depth: 3
9
+ ---
10
+
11
+ {{PACKAGE_NAME}} treats every design token, animation curve, and color choice as a moral decision with consequences for human agency. Ethics is not bolted on after design --- it is embedded in the system architecture from the foundation.
12
+
13
+ ## Core Commitments
14
+
15
+ 1. **Emancipation over efficiency** --- When efficiency and emancipation conflict, emancipation always wins.
16
+ 2. **AI in culture, not culture in AI** --- Technology serves lived human contexts, not the reverse.
17
+ 3. **Democratic participation** --- Communities affected by design decisions must have binding authority.
18
+ 4. **Reflexive practice** --- The system questions its own power relations.
19
+ 5. **Dialectical thinking** --- Productive tension over false simplicity.
20
+
21
+ ## Design Principles
22
+
23
+ ### Accessibility Beyond Compliance
24
+ WCAG compliance is a floor, not a ceiling. Enhanced standards: 7.0:1 contrast, 48px touch targets, 300ms motion maximum.
25
+
26
+ ### Ethical Tokens First-Class
27
+ Ethical constraints are first-class design tokens enforced at build time through the three-tier hierarchy (Primitive, Semantic, Ethical).
28
+
29
+ ### Performance Equity
30
+ Speed is access. Design targets the most constrained users: 2G networks, single-core processors, 1GB RAM devices.
31
+
32
+ ### Color Democracy
33
+ Color is communication technology serving community meaning-making, not brand commodity.
34
+
35
+ ### Motion Dignity
36
+ Animation must respect vestibular safety, cognitive load, and cultural expectations.
37
+
38
+ ## How Ethics Are Enforced
39
+
40
+ ::: {.ethical-note}
41
+ **Build-time validation:** Three automated validators gate every deployment:
42
+
43
+ - **Contrast checking** --- 7.0:1 minimum ratio
44
+ - **Motion linting** --- 300ms maximum duration, `prefers-reduced-motion` required
45
+ - **Bundle size checking** --- Performance equity for low-bandwidth users
46
+ :::
47
+
48
+ For the complete design system documentation, see the [Design System](design_system.qmd) page.
49
+ For governance processes, see [Democratic Governance](governance.qmd).
@@ -0,0 +1,71 @@
1
+ <!-- @dataimago/css@0.1.0-alpha.19 dist/templates/quarto_website/index.qmd.template · sha256:fa09cd4cce412445d164a1ca1248c5080e03ee65db6e762e4bf2e543557c2958 · generated from tokens; do not edit · restore: npx -p @dataimago/css@0.1.0-alpha.19 dataimago-sync -->
2
+ ---
3
+ format:
4
+ html:
5
+ page-layout: full
6
+ toc: false
7
+ sidebar: false
8
+ ---
9
+
10
+ ::::::::: {.lenis-slide}
11
+ ::::::: {.hero-section}
12
+ :::::: {.grid}
13
+ :::: {.g-col-12 .g-col-md-4 .logo-column}
14
+ ::: {.logo-container}
15
+ ![](assets/img/package_hex_logo.svg){width=500 .hero-logo}
16
+ :::
17
+ ::::
18
+ :::: {.g-col-12 .g-col-md-8 .g-start-md-5}
19
+ ::: {.hero-content-scroller data-lenis-animate="fade-left"}
20
+ ::: {.scroller-content}
21
+
22
+ ### {{PACKAGE_NAME}} {.content-item}
23
+
24
+ {{PACKAGE_DESCRIPTION}}
25
+
26
+ ### Built with dataimago {.content-item}
27
+
28
+ This package is built using the dataimago framework --- an AI-native application development framework for data science with ethical AI principles at its core.
29
+
30
+ ### R-First Workflows {.content-item}
31
+
32
+ Familiar R interfaces wrap sophisticated web tools, providing modern development capabilities without leaving your preferred environment.
33
+
34
+ :::
35
+ :::
36
+ ::::
37
+ ::::::
38
+ :::::::
39
+ :::::::::
40
+
41
+ :::::: {.lenis-slide}
42
+ :::: {.cards-container}
43
+ :::: {.cards-grid}
44
+
45
+ ::: {.feature-card}
46
+ ### R Package
47
+
48
+ Complete function documentation and examples.
49
+
50
+ [View Documentation](r_package.qmd)
51
+ :::
52
+
53
+ ::: {.feature-card}
54
+ ### Ethical AI
55
+
56
+ Built on dataimago's ethical AI framework with build-time enforcement.
57
+
58
+ [Learn More](ethics.qmd)
59
+ :::
60
+
61
+ ::: {.feature-card}
62
+ ### Design System
63
+
64
+ Three-tier token architecture ensuring accessibility and cultural sensitivity.
65
+
66
+ [Explore](design_system.qmd)
67
+ :::
68
+
69
+ ::::
70
+ ::::
71
+ ::::::
package/dist/tokens.css CHANGED
@@ -116,6 +116,20 @@
116
116
  --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1);
117
117
  --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1);
118
118
  --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1);
119
+ --color-dataviz-okabe-ito-orange: #E69F00;
120
+ --color-dataviz-okabe-ito-sky-blue: #56B4E9;
121
+ --color-dataviz-okabe-ito-bluish-green: #009E73;
122
+ --color-dataviz-okabe-ito-yellow: #F0E442;
123
+ --color-dataviz-okabe-ito-blue: #0072B2;
124
+ --color-dataviz-okabe-ito-vermillion: #D55E00;
125
+ --color-dataviz-okabe-ito-reddish-purple: #CC79A7;
126
+ --color-dataviz-categorical-1: #E69F00;
127
+ --color-dataviz-categorical-2: #56B4E9;
128
+ --color-dataviz-categorical-3: #009E73;
129
+ --color-dataviz-categorical-4: #F0E442;
130
+ --color-dataviz-categorical-5: #0072B2;
131
+ --color-dataviz-categorical-6: #D55E00;
132
+ --color-dataviz-categorical-7: #CC79A7;
119
133
  }
120
134
 
121
135
  :root, [data-bs-theme="light"] {
@@ -183,6 +197,11 @@
183
197
  --border-focus: #3498DB;
184
198
  --navigation-hover-background: rgba(20, 20, 16, 0.05);
185
199
  --navigation-active-background: rgba(20, 20, 16, 0.1);
200
+ --color-dataviz-okabe-ito-black: #000000;
201
+ --color-dataviz-categorical-8: #000000;
202
+ --color-dataviz-uncertainty-outer: #D6D6D6;
203
+ --color-dataviz-uncertainty-union: #9E9E9E;
204
+ --color-dataviz-uncertainty-inner: #333333;
186
205
  }
187
206
 
188
207
  [data-bs-theme="dark"] {
@@ -250,6 +269,11 @@
250
269
  --border-focus: #4FC3F7;
251
270
  --navigation-hover-background: rgba(237, 237, 235, 0.05);
252
271
  --navigation-active-background: rgba(237, 237, 235, 0.1);
272
+ --color-dataviz-okabe-ito-black: #FDF9F2;
273
+ --color-dataviz-categorical-8: #FDF9F2;
274
+ --color-dataviz-uncertainty-outer: #333333;
275
+ --color-dataviz-uncertainty-union: #6B6B6B;
276
+ --color-dataviz-uncertainty-inner: #D6D6D6;
253
277
  }
254
278
 
255
279
  @media (prefers-color-scheme: dark) {
@@ -318,5 +342,10 @@
318
342
  --border-focus: #4FC3F7;
319
343
  --navigation-hover-background: rgba(237, 237, 235, 0.05);
320
344
  --navigation-active-background: rgba(237, 237, 235, 0.1);
345
+ --color-dataviz-okabe-ito-black: #FDF9F2;
346
+ --color-dataviz-categorical-8: #FDF9F2;
347
+ --color-dataviz-uncertainty-outer: #333333;
348
+ --color-dataviz-uncertainty-union: #6B6B6B;
349
+ --color-dataviz-uncertainty-inner: #D6D6D6;
321
350
  }
322
351
  }
package/dist/tokens.scss CHANGED
@@ -116,6 +116,20 @@
116
116
  --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1);
117
117
  --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1);
118
118
  --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1);
119
+ --color-dataviz-okabe-ito-orange: #E69F00;
120
+ --color-dataviz-okabe-ito-sky-blue: #56B4E9;
121
+ --color-dataviz-okabe-ito-bluish-green: #009E73;
122
+ --color-dataviz-okabe-ito-yellow: #F0E442;
123
+ --color-dataviz-okabe-ito-blue: #0072B2;
124
+ --color-dataviz-okabe-ito-vermillion: #D55E00;
125
+ --color-dataviz-okabe-ito-reddish-purple: #CC79A7;
126
+ --color-dataviz-categorical-1: #E69F00;
127
+ --color-dataviz-categorical-2: #56B4E9;
128
+ --color-dataviz-categorical-3: #009E73;
129
+ --color-dataviz-categorical-4: #F0E442;
130
+ --color-dataviz-categorical-5: #0072B2;
131
+ --color-dataviz-categorical-6: #D55E00;
132
+ --color-dataviz-categorical-7: #CC79A7;
119
133
  }
120
134
 
121
135
  :root, [data-bs-theme="light"] {
@@ -183,6 +197,11 @@
183
197
  --border-focus: #3498DB;
184
198
  --navigation-hover-background: rgba(20, 20, 16, 0.05);
185
199
  --navigation-active-background: rgba(20, 20, 16, 0.1);
200
+ --color-dataviz-okabe-ito-black: #000000;
201
+ --color-dataviz-categorical-8: #000000;
202
+ --color-dataviz-uncertainty-outer: #D6D6D6;
203
+ --color-dataviz-uncertainty-union: #9E9E9E;
204
+ --color-dataviz-uncertainty-inner: #333333;
186
205
  }
187
206
 
188
207
  [data-bs-theme="dark"] {
@@ -250,6 +269,11 @@
250
269
  --border-focus: #4FC3F7;
251
270
  --navigation-hover-background: rgba(237, 237, 235, 0.05);
252
271
  --navigation-active-background: rgba(237, 237, 235, 0.1);
272
+ --color-dataviz-okabe-ito-black: #FDF9F2;
273
+ --color-dataviz-categorical-8: #FDF9F2;
274
+ --color-dataviz-uncertainty-outer: #333333;
275
+ --color-dataviz-uncertainty-union: #6B6B6B;
276
+ --color-dataviz-uncertainty-inner: #D6D6D6;
253
277
  }
254
278
 
255
279
  @media (prefers-color-scheme: dark) {
@@ -318,5 +342,10 @@
318
342
  --border-focus: #4FC3F7;
319
343
  --navigation-hover-background: rgba(237, 237, 235, 0.05);
320
344
  --navigation-active-background: rgba(237, 237, 235, 0.1);
345
+ --color-dataviz-okabe-ito-black: #FDF9F2;
346
+ --color-dataviz-categorical-8: #FDF9F2;
347
+ --color-dataviz-uncertainty-outer: #333333;
348
+ --color-dataviz-uncertainty-union: #6B6B6B;
349
+ --color-dataviz-uncertainty-inner: #D6D6D6;
321
350
  }
322
351
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dataimago/css",
3
- "version": "0.1.0-alpha.16",
3
+ "version": "0.1.0-alpha.19",
4
4
  "description": "Compiled CSS and Tailwind preset for the dataimago ethical AI design system",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -18,14 +18,22 @@
18
18
  "./dataimago.min.css": "./dist/dataimago.min.css",
19
19
  "./tokens.css": "./dist/tokens.css",
20
20
  "./tailwind-preset": "./dist/tailwind-preset.js",
21
+ "./quarto/*": "./dist/quarto/*",
22
+ "./latex/*": "./dist/latex/*",
23
+ "./dataviz/*": "./dist/dataviz/*",
24
+ "./templates/*": "./dist/templates/*",
25
+ "./outputs.json": "./dist/outputs.json",
21
26
  "./package.json": "./package.json"
22
27
  },
28
+ "bin": {
29
+ "dataimago-sync": "./dist/bin/dataimago-sync.mjs"
30
+ },
23
31
  "files": [
24
32
  "dist",
25
33
  "README.md"
26
34
  ],
27
35
  "dependencies": {
28
- "@dataimago/tokens": "^0.1.0-alpha.16"
36
+ "@dataimago/tokens": "^0.1.0-alpha.18"
29
37
  },
30
38
  "devDependencies": {
31
39
  "sass": "^1.69.0"