diff --git a/.changeset/curvy-actors-divide.md b/.changeset/curvy-actors-divide.md
new file mode 100644
index 00000000..85d595d7
--- /dev/null
+++ b/.changeset/curvy-actors-divide.md
@@ -0,0 +1,5 @@
+---
+"@nais/ds-svelte-community": patch
+---
+
+Preview darkside
diff --git a/packages/ds-svelte-community/.gitignore b/packages/ds-svelte-community/.gitignore
index d53a39a7..b426d1fa 100644
--- a/packages/ds-svelte-community/.gitignore
+++ b/packages/ds-svelte-community/.gitignore
@@ -12,3 +12,4 @@ vite.config.ts.timestamp-*
/storybook-static
/src/testlib/*.d.ts
!/src/testlib/ambient.d.ts
+.vscode
diff --git a/packages/ds-svelte-community/src/app.html b/packages/ds-svelte-community/src/app.html
index 058203f5..ac867137 100644
--- a/packages/ds-svelte-community/src/app.html
+++ b/packages/ds-svelte-community/src/app.html
@@ -6,7 +6,7 @@
%sveltekit.head%
-
+
%sveltekit.body%
diff --git a/packages/ds-svelte-community/src/doclib/Properties.svelte b/packages/ds-svelte-community/src/doclib/Properties.svelte
index be5d94e1..8d1276c1 100644
--- a/packages/ds-svelte-community/src/doclib/Properties.svelte
+++ b/packages/ds-svelte-community/src/doclib/Properties.svelte
@@ -214,14 +214,14 @@
}
.title {
- font-size: var(--a-font-size-medium);
- font-weight: var(--a-font-weight-bold);
- background: var(--a-surface-alt-1-subtle);
+ font-size: var(--ax-font-size-medium, var(--a-font-size-medium));
+ font-weight: var(--ax-font-weight-bold, var(--a-font-weight-bold));
+ background: var(--ax-bg-meta-purple-moderate, var(--a-surface-alt-1-subtle));
user-select: none;
vertical-align: middle;
&:hover {
- background: var(--a-surface-alt-1-moderate);
+ background: var(--ax-bg-meta-purple-moderate-hover, var(--a-surface-alt-1-moderate));
cursor: pointer;
}
}
@@ -235,14 +235,14 @@
button {
background: none;
border: none;
- color: var(--a-text-subtle);
+ color: var(--ax-text-neutral, var(--a-text-subtle));
font-size: 0.9rem;
padding: 0.5rem;
margin: 0;
cursor: pointer;
&:hover {
- color: var(--a-text-default);
+ color: var(--ax-text-default, var(--a-text-default));
}
}
@@ -284,35 +284,35 @@
tbody {
tr {
td {
- border-bottom: 1px solid var(--a-border-default);
+ border-bottom: 1px solid var(--ax-border-neutral-subtle, var(--a-border-default));
&:first-of-type {
- border-left: 1px solid var(--a-border-default);
+ border-left: 1px solid var(--ax-border-neutral-subtle, var(--a-border-default));
}
&:last-of-type {
- border-right: 1px solid var(--a-border-default);
+ border-right: 1px solid var(--ax-border-neutral-subtle, var(--a-border-default));
}
}
&:first-child td {
- border-top: 1px solid var(--a-border-default);
+ border-top: 1px solid var(--ax-border-neutral-subtle, var(--a-border-default));
&:first-of-type {
- border-left: 1px solid var(--a-border-default);
- border-top-left-radius: var(--a-border-radius-medium);
+ border-left: 1px solid var(--ax-border-neutral-subtle, var(--a-border-default));
+ border-top-left-radius: var(--ax-border-radius-medium, var(--a-border-radius-medium));
}
&:last-of-type {
- border-right: 1px solid var(--a-border-default);
- border-top-right-radius: var(--a-border-radius-medium);
+ border-right: 1px solid var(--ax-border-neutral-subtle, var(--a-border-default));
+ border-top-right-radius: var(--ax-border-radius-medium, var(--a-border-radius-medium));
}
}
&:last-child td {
&:first-of-type {
- border-bottom-left-radius: var(--a-border-radius-medium);
+ border-bottom-left-radius: var(--ax-border-radius-medium, var(--a-border-radius-medium));
}
&:last-of-type {
- border-bottom-right-radius: var(--a-border-radius-medium);
+ border-bottom-right-radius: var(--ax-border-radius-medium, var(--a-border-radius-medium));
}
}
}
@@ -320,36 +320,32 @@
thead {
th {
- color: var(--a-text-subtle);
+ color: var(--ax-text-neutral, var(--a-text-subtle));
text-align: left;
}
}
- span.required {
- color: var(--a-text-danger);
- }
-
.tags {
margin-top: 0.5rem;
span {
- border: 1px solid var(--a-border-default);
- border-radius: var(--a-border-radius-medium);
+ border: 1px solid var(--ax-border-neutral-subtle, var(--a-border-default));
+ border-radius: var(--ax-border-radius-medium, var(--a-border-radius-medium));
padding: 0.1rem 0.2rem;
- font-size: 0.8rem;
+ font-size: var(--ax-font-size-small, var(--a-font-size-small));
&:not(:first-child) {
margin-left: 0.5rem;
}
&.required {
- color: var(--a-text-danger);
- border-color: var(--a-text-danger);
+ color: var(--ax-text-danger, var(--a-text-danger));
+ border-color: var(--ax-border-danger-subtle, var(--a-text-danger));
}
&.bindable {
- color: var(--a-blue-700);
- border-color: var(--a-blue-700);
+ color: var(--ax-text-info, var(--a-blue-700));
+ border-color: var(--ax-border-info, var(--a-blue-700));
}
}
}
diff --git a/packages/ds-svelte-community/src/doclib/Renderer.svelte b/packages/ds-svelte-community/src/doclib/Renderer.svelte
index 3ed0554d..551c2b6c 100644
--- a/packages/ds-svelte-community/src/doclib/Renderer.svelte
+++ b/packages/ds-svelte-community/src/doclib/Renderer.svelte
@@ -118,9 +118,9 @@
diff --git a/packages/ds-svelte-community/src/doclib/styles.css b/packages/ds-svelte-community/src/doclib/styles.css
index ac065fd7..58f8f8d1 100644
--- a/packages/ds-svelte-community/src/doclib/styles.css
+++ b/packages/ds-svelte-community/src/doclib/styles.css
@@ -1,8 +1,8 @@
@tailwind utilities;
code {
- background: var(--a-surface-alt-1-subtle);
- border-radius: var(--a-border-radius-small);
+ background: var(--ax-bg-meta-purple-moderate, var(--a-surface-alt-1-subtle));
+ border-radius: var(--ax-border-radius-small, var(--a-border-radius-small));
padding: 0.1rem 0.3rem;
font-size: 0.7rem;
}
diff --git a/packages/ds-svelte-community/src/lib/components/Switch/Switch.svelte b/packages/ds-svelte-community/src/lib/components/Switch/Switch.svelte
index 498ec85c..471c13ca 100644
--- a/packages/ds-svelte-community/src/lib/components/Switch/Switch.svelte
+++ b/packages/ds-svelte-community/src/lib/components/Switch/Switch.svelte
@@ -48,7 +48,7 @@ Read more about this component in the [Aksel documentation](https://aksel.nav.no
{#if loading}
-
+
{/if}
diff --git a/packages/ds-svelte-community/src/lib/components/Tabs/Tab.svelte b/packages/ds-svelte-community/src/lib/components/Tabs/Tab.svelte
index fa6fd17e..a8c4bd3f 100644
--- a/packages/ds-svelte-community/src/lib/components/Tabs/Tab.svelte
+++ b/packages/ds-svelte-community/src/lib/components/Tabs/Tab.svelte
@@ -71,6 +71,7 @@
)}
class:navds-tabs__tab--icon-only={icon && !children}
class:unstyled={as === "a"}
+ data-state={ctx.value == value ? "active" : "inactive"}
type="button"
role="tab"
aria-controls={ctx.idFor("panel", value)}
diff --git a/packages/ds-svelte-community/src/lib/components/Tooltip/Tooltip.svelte b/packages/ds-svelte-community/src/lib/components/Tooltip/Tooltip.svelte
index e9926a3d..dd9ab6fd 100644
--- a/packages/ds-svelte-community/src/lib/components/Tooltip/Tooltip.svelte
+++ b/packages/ds-svelte-community/src/lib/components/Tooltip/Tooltip.svelte
@@ -159,6 +159,7 @@ Read more about this component in the [Aksel documentation](https://aksel.nav.no
id="r7"
class={classes(restProps, "navds-tooltip", "navds-detail", "navds-detail--small")}
data-side={placement}
+ data-state={open ? "open" : "closed"}
style="position: absolute; visibility: visible; {tooltipStyles}"
bind:clientWidth={tooltipWidth}
bind:clientHeight={tooltipHeight}
diff --git a/packages/ds-svelte-community/src/lib/components/primitives/Bleed/bleed.test.ts b/packages/ds-svelte-community/src/lib/components/primitives/Bleed/bleed.test.ts
index 9c3877a1..3ed044a8 100644
--- a/packages/ds-svelte-community/src/lib/components/primitives/Bleed/bleed.test.ts
+++ b/packages/ds-svelte-community/src/lib/components/primitives/Bleed/bleed.test.ts
@@ -24,6 +24,16 @@ describe("Bleed", () => {
await bunmatch(render(Bleed, props), ReactBleed, {
props,
children: [React.createElement("span", {}, "Bleed body")],
+ opts: {
+ alterAttrValue(name, value) {
+ // TODO: This is to support darkside styles
+ if (name === "style") {
+ const reg = /--__ax[^;]+;/g;
+ return value.replaceAll(reg, "");
+ }
+ return value;
+ },
+ },
}),
).toBeTrue();
});
diff --git a/packages/ds-svelte-community/src/lib/components/primitives/Box/box.test.ts b/packages/ds-svelte-community/src/lib/components/primitives/Box/box.test.ts
index 71c5e4d7..99688b5d 100644
--- a/packages/ds-svelte-community/src/lib/components/primitives/Box/box.test.ts
+++ b/packages/ds-svelte-community/src/lib/components/primitives/Box/box.test.ts
@@ -29,6 +29,16 @@ describe("Box", () => {
await bunmatch(render(Box, props), ReactBox, {
props,
children: [React.createElement("span", {}, "Box body")],
+ opts: {
+ alterAttrValue(name, value) {
+ // TODO: This is to support darkside styles
+ if (name === "style") {
+ const reg = /--__ax[^;]+;/g;
+ return value.replaceAll(reg, "");
+ }
+ return value;
+ },
+ },
}),
).toBeTrue();
});
diff --git a/packages/ds-svelte-community/src/lib/components/primitives/HGrid/hgrid.test.ts b/packages/ds-svelte-community/src/lib/components/primitives/HGrid/hgrid.test.ts
index 721f7c9c..0302eda8 100644
--- a/packages/ds-svelte-community/src/lib/components/primitives/HGrid/hgrid.test.ts
+++ b/packages/ds-svelte-community/src/lib/components/primitives/HGrid/hgrid.test.ts
@@ -21,6 +21,16 @@ describe("HGrid", () => {
React.createElement("div", { key: "1" }),
React.createElement("div", { key: "2" }),
],
+ opts: {
+ alterAttrValue(name, value) {
+ // TODO: This is to support darkside styles
+ if (name === "style") {
+ const reg = /--__ax[^;]+;/g;
+ return value.replaceAll(reg, "");
+ }
+ return value;
+ },
+ },
}),
).toBeTrue();
});
diff --git a/packages/ds-svelte-community/src/lib/components/utils/css.ts b/packages/ds-svelte-community/src/lib/components/utils/css.ts
index 5d2c1c25..72856e1c 100644
--- a/packages/ds-svelte-community/src/lib/components/utils/css.ts
+++ b/packages/ds-svelte-community/src/lib/components/utils/css.ts
@@ -32,6 +32,7 @@ const translateExceptionToCSS = (exception: string) => {
};
const translateTokenStringToCSS = (
+ domain: "a" | "ax",
componentProp: string,
tokenString: string,
tokenSubgroup: string,
@@ -46,7 +47,7 @@ const translateTokenStringToCSS = (
return `calc((100vw - ${width}%)/-2)`;
}
- let output = `var(--a-${tokenSubgroup}-${x})`;
+ let output = `var(--${domain}-${tokenSubgroup}-${x})`;
if (tokenExceptions.includes(x)) {
output = translateExceptionToCSS(x);
}
@@ -76,6 +77,15 @@ export function getResponsiveProps(
if (typeof responsiveProp === "string") {
return {
[`--__ac-${componentName}-${componentProp}-xs`]: translateTokenStringToCSS(
+ "a",
+ componentProp,
+ responsiveProp,
+ tokenSubgroup,
+ tokenExceptions,
+ invert,
+ ),
+ [`--__axc-${componentName}-${componentProp}-xs`]: translateTokenStringToCSS(
+ "ax",
componentProp,
responsiveProp,
tokenSubgroup,
@@ -89,6 +99,16 @@ export function getResponsiveProps(
Object.entries(responsiveProp).forEach(([breakpointAlias, aliasOrScale]) => {
styleProps[`--__ac-${componentName}-${componentProp}-${breakpointAlias}`] =
translateTokenStringToCSS(
+ "a",
+ componentProp,
+ aliasOrScale,
+ tokenSubgroup,
+ tokenExceptions,
+ invert,
+ );
+ styleProps[`--__axc-${componentName}-${componentProp}-${breakpointAlias}`] =
+ translateTokenStringToCSS(
+ "ax",
componentProp,
aliasOrScale,
tokenSubgroup,
diff --git a/packages/ds-svelte-community/src/lib/css/a.darkside.css b/packages/ds-svelte-community/src/lib/css/a.darkside.css
new file mode 100644
index 00000000..af82c0b1
--- /dev/null
+++ b/packages/ds-svelte-community/src/lib/css/a.darkside.css
@@ -0,0 +1,51 @@
+a:not(.unstyled) {
+ color: var(--ax-text-accent);
+ display: inline-flex;
+ align-items: center;
+ gap: var(--ax-spacing-05);
+ text-decoration: underline;
+ text-underline-offset: 0.1em;
+ text-decoration-thickness: 0.05em;
+
+ &:hover,
+ &:active {
+ text-decoration-thickness: 0.111em;
+ }
+
+ &:focus-visible {
+ outline: 2px solid var(--ax-border-focus);
+ outline-offset: 2px;
+ }
+
+ &.navds-link--inline-text {
+ display: inline;
+
+ & > svg {
+ /* stylelint-disable-next-line plugin/declaration-block-no-ignored-properties */
+ margin: 0.1em 0.1em -0.1em;
+ transform: translateY(0.05em);
+ display: inline;
+ vertical-align: baseline;
+ }
+ }
+
+ &.navds-link--remove-underline {
+ text-decoration: none;
+
+ &:hover {
+ text-decoration: underline;
+ }
+ }
+
+ & svg {
+ color: inherit;
+ flex-shrink: 0;
+ }
+}
+
+.navds-alert:not(.navds-alert--inline),
+.navds-confirmation-panel {
+ & a:not(.unstyled) {
+ color: var(--ax-text-default);
+ }
+}
diff --git a/packages/ds-svelte-community/src/lib/css/darkside.css b/packages/ds-svelte-community/src/lib/css/darkside.css
new file mode 100644
index 00000000..87f0581d
--- /dev/null
+++ b/packages/ds-svelte-community/src/lib/css/darkside.css
@@ -0,0 +1,2 @@
+@import "@navikt/ds-css/darkside";
+@import "a.darkside.css" layer(aksel.components);
diff --git a/packages/ds-svelte-community/src/routes/+layout.svelte b/packages/ds-svelte-community/src/routes/+layout.svelte
index 80717974..1b9d6bcf 100644
--- a/packages/ds-svelte-community/src/routes/+layout.svelte
+++ b/packages/ds-svelte-community/src/routes/+layout.svelte
@@ -1,7 +1,11 @@
-
-
-
-
- ds-svelte-community
-
- NAIS docs
-
-
-
-
-
-
-
+
+ ds-svelte-community
+
+ Nais Docs
+
+ {
+ showSidebar = !showSidebar;
+ }}
+ >
+ Toggle menu
+
+
+
+