laif-ds 0.2.49 → 0.2.51

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 (33) hide show
  1. package/dist/_virtual/index4.js +5 -5
  2. package/dist/_virtual/index5.js +5 -5
  3. package/dist/_virtual/index6.js +2 -2
  4. package/dist/_virtual/index7.js +2 -2
  5. package/dist/components/kanban.js +21 -20
  6. package/dist/components/ui/app-kanban.js +89 -95
  7. package/dist/components/ui/app-radio-group.js +62 -48
  8. package/dist/components/ui/app-select.js +93 -90
  9. package/dist/components/ui/async-select.js +134 -126
  10. package/dist/components/ui/badge.js +38 -31
  11. package/dist/components/ui/button.js +49 -40
  12. package/dist/components/ui/card.js +36 -28
  13. package/dist/components/ui/checkbox.js +23 -20
  14. package/dist/components/ui/date-picker.js +64 -59
  15. package/dist/components/ui/dialog.js +54 -42
  16. package/dist/components/ui/input.js +116 -111
  17. package/dist/components/ui/popover.js +15 -13
  18. package/dist/components/ui/radio-group.js +29 -27
  19. package/dist/components/ui/select.js +74 -67
  20. package/dist/components/ui/sheet.js +39 -28
  21. package/dist/components/ui/slider.js +34 -28
  22. package/dist/components/ui/switch.js +16 -13
  23. package/dist/components/ui/tabs.js +35 -26
  24. package/dist/components/ui/textarea.js +26 -17
  25. package/dist/index.d.ts +2 -2
  26. package/dist/lib/design-tokens.js +43 -0
  27. package/dist/node_modules/eventemitter3/index2.js +1 -1
  28. package/dist/node_modules/hast-util-to-jsx-runtime/lib/index.js +1 -1
  29. package/dist/node_modules/style-to-object/cjs/index.js +1 -1
  30. package/dist/node_modules/unified/lib/index.js +1 -1
  31. package/dist/styles.css +1 -1
  32. package/dist/styles.v3.css +1 -1
  33. package/package.json +1 -1
@@ -1,68 +1,77 @@
1
1
  "use client";
2
2
  import { jsx as s } from "react/jsx-runtime";
3
- import { Root as o, Content as i, List as r, Trigger as a } from "../../node_modules/@radix-ui/react-tabs/dist/index.js";
3
+ import { Root as o, Content as r, List as i, Trigger as c } from "../../node_modules/@radix-ui/react-tabs/dist/index.js";
4
+ import { designTokens as a } from "../../lib/design-tokens.js";
4
5
  import { cn as n } from "../../lib/utils.js";
5
6
  function u({
6
- className: e,
7
- ...t
7
+ className: t,
8
+ ...e
8
9
  }) {
9
10
  return /* @__PURE__ */ s(
10
11
  o,
11
12
  {
12
13
  "data-slot": "tabs",
13
- className: n("flex flex-col gap-2", e),
14
- ...t
14
+ className: n("flex flex-col gap-2", t),
15
+ ...e
15
16
  }
16
17
  );
17
18
  }
18
- function f({
19
- className: e,
20
- ...t
19
+ function p({
20
+ className: t,
21
+ ...e
21
22
  }) {
22
23
  return /* @__PURE__ */ s(
23
- r,
24
+ i,
24
25
  {
25
26
  "data-slot": "tabs-list",
26
27
  className: n(
27
- "bg-d-secondary text-d-secondary-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]",
28
- e
28
+ "bg-d-secondary text-d-secondary-foreground inline-flex h-9 w-fit items-center justify-center p-[3px]",
29
+ a.radius.lg,
30
+ t
29
31
  ),
30
- ...t
32
+ ...e
31
33
  }
32
34
  );
33
35
  }
34
36
  function b({
35
- className: e,
36
- ...t
37
+ className: t,
38
+ ...e
37
39
  }) {
38
40
  return /* @__PURE__ */ s(
39
- a,
41
+ c,
40
42
  {
41
43
  "data-slot": "tabs-trigger",
42
44
  className: n(
43
- "data-[state=active]:bg-d-background focus-visible:border-d-ring focus-visible:ring-d-ring/50 focus-visible:outline-d-ring text-d-foreground d-border inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
44
- e
45
+ "inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 border-transparent px-2 py-1 whitespace-nowrap transition-[color,box-shadow]",
46
+ a.text.base,
47
+ a.radius.default,
48
+ a.focusRing,
49
+ a.interaction.disabled,
50
+ // Active state
51
+ "data-[state=active]:bg-d-background data-[state=active]:text-d-foreground data-[state=active]:shadow-sm",
52
+ "[&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
53
+ t
45
54
  ),
46
- ...t
55
+ ...e
47
56
  }
48
57
  );
49
58
  }
50
- function g({
51
- className: e,
52
- ...t
59
+ function m({
60
+ className: t,
61
+ ...e
53
62
  }) {
54
63
  return /* @__PURE__ */ s(
55
- i,
64
+ r,
56
65
  {
57
66
  "data-slot": "tabs-content",
58
- className: n("flex-1 outline-none", e),
59
- ...t
67
+ className: n("flex-1 outline-none", t),
68
+ ...e
60
69
  }
61
70
  );
62
71
  }
63
72
  export {
64
73
  u as Tabs,
65
- g as TabsContent,
66
- f as TabsList,
74
+ m as TabsContent,
75
+ p as TabsList,
67
76
  b as TabsTrigger
68
77
  };
@@ -1,28 +1,37 @@
1
1
  "use client";
2
- import { jsxs as l, jsx as t } from "react/jsx-runtime";
3
- import { Label as c } from "./label.js";
4
- import { cn as d } from "../../lib/utils.js";
2
+ import { jsxs as c, jsx as r } from "react/jsx-runtime";
3
+ import { Label as m } from "./label.js";
4
+ import { designTokens as t } from "../../lib/design-tokens.js";
5
+ import { cn as s } from "../../lib/utils.js";
5
6
  function b({
6
- wrpClassName: i,
7
- className: o,
7
+ wrpClassName: o,
8
+ className: a,
8
9
  label: e,
9
- labelClassName: a,
10
- id: s,
11
- ...n
10
+ labelClassName: n,
11
+ id: d,
12
+ ...l
12
13
  }) {
13
- const r = s || (e ? `textarea-${Math.random().toString(36).substring(2, 9)}` : void 0);
14
- return /* @__PURE__ */ l("div", { className: d("space-y-1.5", i), children: [
15
- e && /* @__PURE__ */ t(c, { htmlFor: r, className: a, children: e }),
16
- /* @__PURE__ */ t(
14
+ const i = d || (e ? `textarea-${Math.random().toString(36).substring(2, 9)}` : void 0);
15
+ return /* @__PURE__ */ c("div", { className: s("space-y-1.5", o), children: [
16
+ e && /* @__PURE__ */ r(m, { htmlFor: i, className: n, children: e }),
17
+ /* @__PURE__ */ r(
17
18
  "textarea",
18
19
  {
19
- id: r,
20
+ id: i,
20
21
  "data-slot": "textarea",
21
- className: d(
22
- "border-d-border/50 placeholder:text-d-muted-foreground focus-visible:border-d-ring focus-visible:ring-d-ring/50 aria-invalid:ring-d-destructive/20 aria-invalid:border-d-destructive bg-d-input flex field-sizing-content min-h-16 w-full rounded-md border px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
23
- o
22
+ className: s(
23
+ t.input.base,
24
+ t.radius.default,
25
+ t.text.base,
26
+ t.text.placeholder,
27
+ t.interaction.disabled,
28
+ "flex field-sizing-content min-h-16 w-full px-3 py-2 shadow-xs transition-[color,box-shadow] outline-none md:text-sm",
29
+ // Focus states
30
+ "focus-visible:ring-d-ring/50 focus-visible:border-d-ring focus-visible:ring-[3px]",
31
+ t.input.invalid,
32
+ a
24
33
  ),
25
- ...n
34
+ ...l
26
35
  }
27
36
  )
28
37
  ] });
package/dist/index.d.ts CHANGED
@@ -184,7 +184,7 @@ declare interface AppFormProps {
184
184
  showSubmitButton?: boolean;
185
185
  }
186
186
 
187
- export declare function AppKanban<T = any>({ columns, initialTasks, onTaskMove, onTaskEdit, onTaskCreate, taskActions, renderTaskContent, className, allowTaskCreate, createTaskLabel, }: AppKanbanConfig<T>): JSX.Element;
187
+ export declare function AppKanban<T = any>({ columns, initialTasks, onTaskMove, onTaskEdit, onTaskCreate, taskActions, renderTaskContent, className, allowTaskCreate, }: AppKanbanConfig<T>): JSX.Element;
188
188
 
189
189
  export declare type AppKanbanColumn = {
190
190
  id: string;
@@ -1421,7 +1421,7 @@ export declare interface DataTableState {
1421
1421
  computedSorting?: DataTableSorting;
1422
1422
  }
1423
1423
 
1424
- export declare function DatePicker({ value, onChange, placeholder, dateFormat, className, buttonVariant, disabled, size, firstDate, lastDate, availableDates, locale, initialCalendarMonth, customCalendarProps, }: DatePickerProps): JSX.Element;
1424
+ export declare function DatePicker({ value, onChange, placeholder, dateFormat, className, disabled, size, firstDate, lastDate, availableDates, locale, initialCalendarMonth, customCalendarProps, }: DatePickerProps): JSX.Element;
1425
1425
 
1426
1426
  export declare interface DatePickerProps {
1427
1427
  value?: Date;
@@ -0,0 +1,43 @@
1
+ "use client";
2
+ const e = {
3
+ // Interaction states
4
+ focusRing: "focus-visible:ring-d-ring/50 focus-visible:ring-[3px] focus-visible:border-d-ring outline-none transition-all duration-200",
5
+ // Base shapes
6
+ radius: {
7
+ default: "rounded-md",
8
+ sm: "rounded-sm",
9
+ lg: "rounded-lg",
10
+ full: "rounded-full"
11
+ },
12
+ // Input & Button heights/paddings
13
+ sizes: {
14
+ default: "h-9 px-3 py-2",
15
+ sm: "h-8 px-2.5 py-1.5 text-xs",
16
+ lg: "h-10 px-4 py-2 text-base",
17
+ icon: {
18
+ default: "size-9"
19
+ }
20
+ },
21
+ // Text styles for inputs/buttons
22
+ text: {
23
+ base: "text-sm font-medium whitespace-nowrap",
24
+ placeholder: "placeholder:text-d-muted-foreground"
25
+ },
26
+ // Common interactive behaviors
27
+ interaction: {
28
+ active: "active:scale-[0.98] active:shadow-sm transform-gpu",
29
+ disabled: "disabled:cursor-not-allowed disabled:opacity-50"
30
+ },
31
+ // Input specific
32
+ input: {
33
+ base: "flex w-full border border-d-border/50 bg-d-input transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium",
34
+ invalid: "aria-invalid:ring-d-destructive/20 aria-invalid:border-d-destructive"
35
+ },
36
+ // Badge specific
37
+ badge: {
38
+ base: "inline-flex items-center justify-center border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 gap-1"
39
+ }
40
+ };
41
+ export {
42
+ e as designTokens
43
+ };
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { __module as x } from "../../_virtual/index6.js";
2
+ import { __module as x } from "../../_virtual/index7.js";
3
3
  var w;
4
4
  function O() {
5
5
  return w ? x.exports : (w = 1, (function(d) {
@@ -3,7 +3,7 @@ import { stringify as w } from "../../comma-separated-tokens/index.js";
3
3
  import { ok as u } from "../../devlop/lib/default.js";
4
4
  import { svg as m, html as C } from "../../property-information/index.js";
5
5
  import { stringify as N } from "../../space-separated-tokens/index.js";
6
- import S from "../../../_virtual/index4.js";
6
+ import S from "../../../_virtual/index5.js";
7
7
  import { whitespace as j } from "../../hast-util-whitespace/lib/index.js";
8
8
  import { name as x } from "../../estree-util-is-identifier-name/lib/index.js";
9
9
  import { VFileMessage as h } from "../../vfile-message/lib/index.js";
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { __exports as r } from "../../../_virtual/index7.js";
2
+ import { __exports as r } from "../../../_virtual/index6.js";
3
3
  import { __require as c } from "../../inline-style-parser/index.js";
4
4
  var f;
5
5
  function j() {
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
  import { bail as P } from "../../bail/index.js";
3
- import y from "../../../_virtual/index5.js";
3
+ import y from "../../../_virtual/index4.js";
4
4
  import z from "../../is-plain-obj/index.js";
5
5
  import { CallableInstance as C } from "./callable-instance.js";
6
6
  import { trough as A } from "../../trough/lib/index.js";
package/dist/styles.css CHANGED
@@ -1 +1 @@
1
- @import "tailwindcss";@import "tw-animate-css";@import "./laif-styles.css";@import "./css-for-template.css";@custom-variant dark (&:is(.dark *));.dark,:root{--d-radius:6px;--d-background:var(--colors--surface--background);--d-foreground:var(--colors--text--body-primary);--d-card:var(--colors--surface--primary);--d-card-foreground:var(--colors--text--body-primary);--d-popover:var(--colors--surface--primary);--d-popover-foreground:var(--colors--text--body-primary);--d-primary:var(--colors--surface--accent-primary);--d-primary-foreground:var(--colors--text--on-accent);--d-secondary:var(--colors--surface--secondary);--d-secondary-foreground:var(--colors--text--body-primary);--d-muted:var(--colors--surface--secondary);--d-muted-foreground:var(--colors--text--body-secondary);--d-accent:var(--colors--surface--tertiary);--d-accent-foreground:var(--colors--text--body-primary);--d-destructive:var(--colors--surface--danger);--d-destructive-foreground:var(--colors--text--on-danger);--d-warning:var(--colors--text--warning);--d-warning-background:var(--colors--surface--warning);--d-warning-foreground:var(--colors--text--on-warning);--d-success:var(--colors--text--success);--d-success-background:var(--colors--surface--success);--d-success-foreground:var(--colors--text--on-success);--d-border:var(--colors--border--subtle);--d-input:var(--colors--surface--primary);--d-ring:var(--colors--border--subtle);--d-chart-1:var(--colors--surface--accent-primary);--d-chart-2:var(--colors--surface--success);--d-chart-3:var(--colors--surface--warning);--d-chart-4:var(--colors--text--warning);--d-chart-5:var(--colors--surface--danger);--d-sidebar:var(--colors--surface--background);--d-sidebar-foreground:var(--colors--text--body-primary);--d-sidebar-primary:var(--colors--surface--accent-primary);--d-sidebar-primary-foreground:var(--colors--text--on-accent);--d-sidebar-accent:color-mix(in srgb,var(--colors--surface--tertiary) 40%,#0000);--d-sidebar-accent-foreground:var(--colors--text--body-primary);--d-sidebar-border:var(--colors--border--subtle);--d-sidebar-ring:var(--colors--surface--accent-primary)}.tangerine{--d-background:oklch(0.26 0.03 262.67);--d-foreground:oklch(0.92 0 0);--d-card:oklch(0.31 0.03 268.64);--d-card-foreground:oklch(0.92 0 0);--d-popover:oklch(0.29 0.02 268.4);--d-popover-foreground:oklch(0.92 0 0);--d-primary:oklch(0.64 0.17 36.44);--d-primary-foreground:oklch(1 0 0);--d-secondary:oklch(0.31 0.03 266.71);--d-secondary-foreground:oklch(0.92 0 0);--d-muted:oklch(0.31 0.03 266.71);--d-muted-foreground:oklch(0.72 0 0);--d-accent:oklch(0.34 0.06 267.59);--d-accent-foreground:oklch(0.88 0.06 254.13);--d-destructive:oklch(0.64 0.21 25.33);--d-destructive-foreground:oklch(1 0 0);--d-warning:#fee6b7;--d-warning-foreground:#8f6113;--d-success:#b9f3d1;--d-success-foreground:#479766;--d-border:oklch(0.38 0.03 269.73);--d-input:oklch(0.38 0.03 269.73);--d-ring:oklch(0.64 0.17 36.44);--d-chart-1:oklch(0.72 0.06 248.68);--d-chart-2:oklch(0.77 0.09 34.19);--d-chart-3:oklch(0.58 0.08 254.16);--d-chart-4:oklch(0.5 0.08 259.49);--d-chart-5:oklch(0.42 0.1 264.03);--d-sidebar:oklch(0.31 0.03 267.74);--d-sidebar-foreground:oklch(0.92 0 0);--d-sidebar-primary:oklch(0.64 0.17 36.44);--d-sidebar-primary-foreground:oklch(1 0 0);--d-sidebar-accent:oklch(0.34 0.06 267.59);--d-sidebar-accent-foreground:oklch(0.88 0.06 254.13);--d-sidebar-border:oklch(0.38 0.03 269.73);--d-sidebar-ring:oklch(0.64 0.17 36.44);--d-font-sans:Inter,sans-serif;--d-font-serif:Source Serif 4,serif;--d-font-mono:JetBrains Mono,monospace;--d-radius:0.75rem;--d-shadow-2xs:0px 1px 3px 0px #0000000d;--d-shadow-xs:0px 1px 3px 0px #0000000d;--d-shadow-sm:0px 1px 3px 0px #0000001a,0px 1px 2px -1px #0000001a;--d-shadow:0px 1px 3px 0px #0000001a,0px 1px 2px -1px #0000001a;--d-shadow-md:0px 1px 3px 0px #0000001a,0px 2px 4px -1px #0000001a;--d-shadow-lg:0px 1px 3px 0px #0000001a,0px 4px 6px -1px #0000001a;--d-shadow-xl:0px 1px 3px 0px #0000001a,0px 8px 10px -1px #0000001a;--d-shadow-2xl:0px 1px 3px 0px #00000040}.claymorphism{--d-background:#1e1b18;--d-foreground:#e2e8f0;--d-card:#2c2825;--d-card-foreground:#e2e8f0;--d-popover:#2c2825;--d-popover-foreground:#e2e8f0;--d-primary:#818cf8;--d-primary-foreground:#1e1b18;--d-secondary:#3a3633;--d-secondary-foreground:#d1d5db;--d-muted:#2c2825;--d-muted-foreground:#9ca3af;--d-accent:#484441;--d-accent-foreground:#d1d5db;--d-destructive:#ef4444;--d-destructive-foreground:#1e1b18;--d-warning:#fee6b7;--d-warning-foreground:#8f6113;--d-success:#b9f3d1;--d-success-foreground:#479766;--d-border:#3a3633;--d-input:#3a3633;--d-ring:#818cf8;--d-chart-1:#818cf8;--d-chart-2:#6366f1;--d-chart-3:#4f46e5;--d-chart-4:#4338ca;--d-chart-5:#3730a3;--d-sidebar:#3a3633;--d-sidebar-foreground:#e2e8f0;--d-sidebar-primary:#818cf8;--d-sidebar-primary-foreground:#1e1b18;--d-sidebar-accent:#484441;--d-sidebar-accent-foreground:#d1d5db;--d-sidebar-border:#3a3633;--d-sidebar-ring:#818cf8;--d-font-sans:Plus Jakarta Sans,sans-serif;--d-font-serif:Lora,serif;--d-font-mono:Roboto Mono,monospace;--d-radius:1.25rem;--d-shadow-2xs:2px 2px 10px 4px #00000017;--d-shadow-xs:2px 2px 10px 4px #00000017;--d-shadow-sm:2px 2px 10px 4px #0000002e,2px 1px 2px 3px #0000002e;--d-shadow:2px 2px 10px 4px #0000002e,2px 1px 2px 3px #0000002e;--d-shadow-md:2px 2px 10px 4px #0000002e,2px 2px 4px 3px #0000002e;--d-shadow-lg:2px 2px 10px 4px #0000002e,2px 4px 6px 3px #0000002e;--d-shadow-xl:2px 2px 10px 4px #0000002e,2px 8px 10px 3px #0000002e;--d-shadow-2xl:2px 2px 10px 4px #00000073}
1
+ @import "tailwindcss";@import "tw-animate-css";@import "./laif-styles.css";@import "./css-for-template.css";.dark,:root{--d-radius:6px;--d-background:var(--colors--surface--background);--d-foreground:var(--colors--text--body-primary);--d-card:var(--colors--surface--primary);--d-card-foreground:var(--colors--text--body-primary);--d-popover:var(--colors--surface--primary);--d-popover-foreground:var(--colors--text--body-primary);--d-primary:var(--colors--surface--accent-primary);--d-primary-foreground:var(--colors--text--on-accent);--d-secondary:var(--colors--surface--secondary);--d-secondary-foreground:var(--colors--text--body-primary);--d-muted:var(--colors--surface--secondary);--d-muted-foreground:var(--colors--text--body-secondary);--d-accent:var(--colors--surface--tertiary);--d-accent-foreground:var(--colors--text--body-primary);--d-destructive:var(--colors--surface--danger);--d-destructive-foreground:var(--colors--text--on-danger);--d-warning:var(--colors--text--warning);--d-warning-background:var(--colors--surface--warning);--d-warning-foreground:var(--colors--text--on-warning);--d-success:var(--colors--text--success);--d-success-background:var(--colors--surface--success);--d-success-foreground:var(--colors--text--on-success);--d-border:var(--colors--border--subtle);--d-input:var(--colors--surface--primary);--d-ring:var(--colors--border--subtle);--d-chart-1:var(--colors--surface--accent-primary);--d-chart-2:var(--colors--surface--success);--d-chart-3:var(--colors--surface--warning);--d-chart-4:var(--colors--text--warning);--d-chart-5:var(--colors--surface--danger);--d-sidebar:var(--colors--surface--background);--d-sidebar-foreground:var(--colors--text--body-primary);--d-sidebar-primary:var(--colors--surface--accent-primary);--d-sidebar-primary-foreground:var(--colors--text--on-accent);--d-sidebar-accent:color-mix(in srgb,var(--colors--surface--tertiary) 40%,#0000);--d-sidebar-accent-foreground:var(--colors--text--body-primary);--d-sidebar-border:var(--colors--border--subtle);--d-sidebar-ring:var(--colors--surface--accent-primary)}.tangerine{--d-background:oklch(0.26 0.03 262.67);--d-foreground:oklch(0.92 0 0);--d-card:oklch(0.31 0.03 268.64);--d-card-foreground:oklch(0.92 0 0);--d-popover:oklch(0.29 0.02 268.4);--d-popover-foreground:oklch(0.92 0 0);--d-primary:oklch(0.64 0.17 36.44);--d-primary-foreground:oklch(1 0 0);--d-secondary:oklch(0.31 0.03 266.71);--d-secondary-foreground:oklch(0.92 0 0);--d-muted:oklch(0.31 0.03 266.71);--d-muted-foreground:oklch(0.72 0 0);--d-accent:oklch(0.34 0.06 267.59);--d-accent-foreground:oklch(0.88 0.06 254.13);--d-destructive:oklch(0.64 0.21 25.33);--d-destructive-foreground:oklch(1 0 0);--d-warning:#fee6b7;--d-warning-foreground:#8f6113;--d-success:#b9f3d1;--d-success-foreground:#479766;--d-border:oklch(0.38 0.03 269.73);--d-input:oklch(0.38 0.03 269.73);--d-ring:oklch(0.64 0.17 36.44);--d-chart-1:oklch(0.72 0.06 248.68);--d-chart-2:oklch(0.77 0.09 34.19);--d-chart-3:oklch(0.58 0.08 254.16);--d-chart-4:oklch(0.5 0.08 259.49);--d-chart-5:oklch(0.42 0.1 264.03);--d-sidebar:oklch(0.31 0.03 267.74);--d-sidebar-foreground:oklch(0.92 0 0);--d-sidebar-primary:oklch(0.64 0.17 36.44);--d-sidebar-primary-foreground:oklch(1 0 0);--d-sidebar-accent:oklch(0.34 0.06 267.59);--d-sidebar-accent-foreground:oklch(0.88 0.06 254.13);--d-sidebar-border:oklch(0.38 0.03 269.73);--d-sidebar-ring:oklch(0.64 0.17 36.44);--d-font-sans:Inter,sans-serif;--d-font-serif:Source Serif 4,serif;--d-font-mono:JetBrains Mono,monospace;--d-radius:0.75rem;--d-shadow-2xs:0px 1px 3px 0px #0000000d;--d-shadow-xs:0px 1px 3px 0px #0000000d;--d-shadow-sm:0px 1px 3px 0px #0000001a,0px 1px 2px -1px #0000001a;--d-shadow:0px 1px 3px 0px #0000001a,0px 1px 2px -1px #0000001a;--d-shadow-md:0px 1px 3px 0px #0000001a,0px 2px 4px -1px #0000001a;--d-shadow-lg:0px 1px 3px 0px #0000001a,0px 4px 6px -1px #0000001a;--d-shadow-xl:0px 1px 3px 0px #0000001a,0px 8px 10px -1px #0000001a;--d-shadow-2xl:0px 1px 3px 0px #00000040}.claymorphism{--d-background:#1e1b18;--d-foreground:#e2e8f0;--d-card:#2c2825;--d-card-foreground:#e2e8f0;--d-popover:#2c2825;--d-popover-foreground:#e2e8f0;--d-primary:#818cf8;--d-primary-foreground:#1e1b18;--d-secondary:#3a3633;--d-secondary-foreground:#d1d5db;--d-muted:#2c2825;--d-muted-foreground:#9ca3af;--d-accent:#484441;--d-accent-foreground:#d1d5db;--d-destructive:#ef4444;--d-destructive-foreground:#1e1b18;--d-warning:#fee6b7;--d-warning-foreground:#8f6113;--d-success:#b9f3d1;--d-success-foreground:#479766;--d-border:#3a3633;--d-input:#3a3633;--d-ring:#818cf8;--d-chart-1:#818cf8;--d-chart-2:#6366f1;--d-chart-3:#4f46e5;--d-chart-4:#4338ca;--d-chart-5:#3730a3;--d-sidebar:#3a3633;--d-sidebar-foreground:#e2e8f0;--d-sidebar-primary:#818cf8;--d-sidebar-primary-foreground:#1e1b18;--d-sidebar-accent:#484441;--d-sidebar-accent-foreground:#d1d5db;--d-sidebar-border:#3a3633;--d-sidebar-ring:#818cf8;--d-font-sans:Plus Jakarta Sans,sans-serif;--d-font-serif:Lora,serif;--d-font-mono:Roboto Mono,monospace;--d-radius:1.25rem;--d-shadow-2xs:2px 2px 10px 4px #00000017;--d-shadow-xs:2px 2px 10px 4px #00000017;--d-shadow-sm:2px 2px 10px 4px #0000002e,2px 1px 2px 3px #0000002e;--d-shadow:2px 2px 10px 4px #0000002e,2px 1px 2px 3px #0000002e;--d-shadow-md:2px 2px 10px 4px #0000002e,2px 2px 4px 3px #0000002e;--d-shadow-lg:2px 2px 10px 4px #0000002e,2px 4px 6px 3px #0000002e;--d-shadow-xl:2px 2px 10px 4px #0000002e,2px 8px 10px 3px #0000002e;--d-shadow-2xl:2px 2px 10px 4px #00000073}