7k-design-system 1.0.0-alpha.1

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 (89) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/CONSUMER_GUIDE.md +471 -0
  3. package/DESIGN.md +1207 -0
  4. package/LICENSE +21 -0
  5. package/README.md +192 -0
  6. package/SKILL.md +252 -0
  7. package/build/icon.svg +10 -0
  8. package/build/logo-7k-light.svg +10 -0
  9. package/build/logo-7k.svg +10 -0
  10. package/dist/7k-design-system.css +1 -0
  11. package/dist/animations.css +1 -0
  12. package/dist/build/icon.svg +10 -0
  13. package/dist/build/logo-7k-light.svg +10 -0
  14. package/dist/build/logo-7k.svg +10 -0
  15. package/dist/components.css +1 -0
  16. package/dist/fonts/GeistPixel-Circle.ttf +0 -0
  17. package/dist/fonts/GeistPixel-Grid.ttf +0 -0
  18. package/dist/fonts/GeistPixel-Line.ttf +0 -0
  19. package/dist/fonts/GeistPixel-Square.ttf +0 -0
  20. package/dist/fonts/GeistPixel-Triangle.ttf +0 -0
  21. package/dist/preview/brand-assets.html +83 -0
  22. package/dist/preview/brand-assets.html.artifact.json +19 -0
  23. package/dist/preview/colors-primary.html +101 -0
  24. package/dist/preview/colors-primary.html.artifact.json +19 -0
  25. package/dist/preview/components-buttons.html +84 -0
  26. package/dist/preview/components-buttons.html.artifact.json +19 -0
  27. package/dist/preview/spacing-tokens.html +79 -0
  28. package/dist/preview/spacing-tokens.html.artifact.json +19 -0
  29. package/dist/preview/textures-backgrounds.html +102 -0
  30. package/dist/preview/textures-backgrounds.html.artifact.json +19 -0
  31. package/dist/preview/typography-specimens.html +73 -0
  32. package/dist/preview/typography-specimens.html.artifact.json +19 -0
  33. package/dist/react/index.cjs +1 -0
  34. package/dist/react/index.js +129 -0
  35. package/dist/react/react/components/Badge.d.ts +3 -0
  36. package/dist/react/react/components/Badge.d.ts.map +1 -0
  37. package/dist/react/react/components/Badge.stories.d.ts +12 -0
  38. package/dist/react/react/components/Badge.stories.d.ts.map +1 -0
  39. package/dist/react/react/components/Button.d.ts +3 -0
  40. package/dist/react/react/components/Button.d.ts.map +1 -0
  41. package/dist/react/react/components/Button.stories.d.ts +16 -0
  42. package/dist/react/react/components/Button.stories.d.ts.map +1 -0
  43. package/dist/react/react/components/Input.d.ts +3 -0
  44. package/dist/react/react/components/Input.d.ts.map +1 -0
  45. package/dist/react/react/components/Input.stories.d.ts +11 -0
  46. package/dist/react/react/components/Input.stories.d.ts.map +1 -0
  47. package/dist/react/react/components/ThemeToggle.d.ts +4 -0
  48. package/dist/react/react/components/ThemeToggle.d.ts.map +1 -0
  49. package/dist/react/react/components/ThemeToggle.stories.d.ts +7 -0
  50. package/dist/react/react/components/ThemeToggle.stories.d.ts.map +1 -0
  51. package/dist/react/react/hooks/useTheme.d.ts +11 -0
  52. package/dist/react/react/hooks/useTheme.d.ts.map +1 -0
  53. package/dist/react/react/index.d.ts +8 -0
  54. package/dist/react/react/index.d.ts.map +1 -0
  55. package/dist/react/react/theme/ThemeContext.d.ts +3 -0
  56. package/dist/react/react/theme/ThemeProvider.d.ts +9 -0
  57. package/dist/react/react/theme/useTheme.d.ts +3 -0
  58. package/dist/react/react/types.d.ts +33 -0
  59. package/dist/react/react/types.d.ts.map +1 -0
  60. package/dist/react/stories/Button.d.ts +17 -0
  61. package/dist/react/stories/Button.d.ts.map +1 -0
  62. package/dist/react/stories/Button.stories.d.ts +25 -0
  63. package/dist/react/stories/Button.stories.d.ts.map +1 -0
  64. package/dist/react/stories/Components.stories.d.ts +10 -0
  65. package/dist/react/stories/Components.stories.d.ts.map +1 -0
  66. package/dist/react/stories/Header.d.ts +14 -0
  67. package/dist/react/stories/Header.d.ts.map +1 -0
  68. package/dist/react/stories/Header.stories.d.ts +20 -0
  69. package/dist/react/stories/Header.stories.d.ts.map +1 -0
  70. package/dist/react/stories/Page.d.ts +4 -0
  71. package/dist/react/stories/Page.d.ts.map +1 -0
  72. package/dist/react/stories/Page.stories.d.ts +14 -0
  73. package/dist/react/stories/Page.stories.d.ts.map +1 -0
  74. package/dist/react/stories/Textures.stories.d.ts +11 -0
  75. package/dist/react/stories/Textures.stories.d.ts.map +1 -0
  76. package/dist/textures.css +1 -0
  77. package/dist/tokens.css +1 -0
  78. package/fonts/GeistPixel-Circle.ttf +0 -0
  79. package/fonts/GeistPixel-Grid.ttf +0 -0
  80. package/fonts/GeistPixel-Line.ttf +0 -0
  81. package/fonts/GeistPixel-Square.ttf +0 -0
  82. package/fonts/GeistPixel-Triangle.ttf +0 -0
  83. package/package.json +147 -0
  84. package/preview/brand-assets.html +83 -0
  85. package/preview/colors-primary.html +101 -0
  86. package/preview/components-buttons.html +84 -0
  87. package/preview/spacing-tokens.html +79 -0
  88. package/preview/textures-backgrounds.html +102 -0
  89. package/preview/typography-specimens.html +73 -0
@@ -0,0 +1,129 @@
1
+ import { jsx as d } from "react/jsx-runtime";
2
+ import { forwardRef as u, createContext as g, useContext as p, useState as T, useEffect as k, useCallback as h } from "react";
3
+ const w = u(
4
+ ({
5
+ children: e,
6
+ variant: r = "primary",
7
+ size: o = "md",
8
+ disabled: t = !1,
9
+ onClick: s,
10
+ type: a = "button",
11
+ className: l = "",
12
+ style: i,
13
+ ...n
14
+ }, c) => {
15
+ const m = o === "sm" ? "btn-modern-sm" : o === "lg" ? "btn-modern-lg" : "", b = ["btn-modern", `btn-modern-${r}`, m, l].filter(Boolean).join(" ");
16
+ return /* @__PURE__ */ d(
17
+ "button",
18
+ {
19
+ ref: c,
20
+ type: a,
21
+ className: b,
22
+ style: i,
23
+ disabled: t,
24
+ onClick: s,
25
+ ...n,
26
+ children: e
27
+ }
28
+ );
29
+ }
30
+ );
31
+ w.displayName = "Button";
32
+ const v = u(
33
+ ({
34
+ type: e = "text",
35
+ placeholder: r,
36
+ disabled: o = !1,
37
+ value: t,
38
+ onChange: s,
39
+ className: a = "",
40
+ style: l,
41
+ ...i
42
+ }, n) => {
43
+ const c = ["input", a].filter(Boolean).join(" ");
44
+ return /* @__PURE__ */ d(
45
+ "input",
46
+ {
47
+ ref: n,
48
+ type: e,
49
+ className: c,
50
+ style: l,
51
+ placeholder: r,
52
+ disabled: o,
53
+ value: t,
54
+ onChange: (m) => s == null ? void 0 : s(m.target.value),
55
+ ...i
56
+ }
57
+ );
58
+ }
59
+ );
60
+ v.displayName = "Input";
61
+ const S = u(
62
+ ({ children: e, variant: r = "default", className: o = "", style: t, ...s }, a) => {
63
+ const i = ["badge", r === "default" ? "" : `badge-${r}`, o].filter(Boolean).join(" ");
64
+ return /* @__PURE__ */ d("span", { ref: a, className: i, style: t, ...s, children: e });
65
+ }
66
+ );
67
+ S.displayName = "Badge";
68
+ const f = g(void 0);
69
+ function x() {
70
+ const e = p(f);
71
+ if (!e)
72
+ throw new Error("useTheme must be used within a ThemeProvider");
73
+ return e;
74
+ }
75
+ function j({ className: e = "" }) {
76
+ const { theme: r, toggleTheme: o } = x(), t = r === "dark";
77
+ return /* @__PURE__ */ d(
78
+ "button",
79
+ {
80
+ onClick: o,
81
+ className: `btn-modern btn-modern-ghost btn-modern-icon ${e}`,
82
+ style: {
83
+ width: 32,
84
+ height: 32,
85
+ fontSize: 12,
86
+ padding: 0,
87
+ border: "1px solid var(--border-default)",
88
+ borderRadius: 0
89
+ },
90
+ title: t ? "Switch to light theme" : "Switch to dark theme",
91
+ "aria-label": t ? "Switch to light theme" : "Switch to dark theme",
92
+ children: t ? "☀" : "☾"
93
+ }
94
+ );
95
+ }
96
+ const B = "7k-theme";
97
+ function y({
98
+ children: e,
99
+ defaultTheme: r = "dark",
100
+ storageKey: o = B
101
+ }) {
102
+ const [t, s] = T(() => {
103
+ if (typeof window > "u") return r;
104
+ const n = localStorage.getItem(o);
105
+ return n === "light" || n === "dark" ? n : r;
106
+ });
107
+ k(() => {
108
+ document.documentElement.setAttribute("data-theme", t), localStorage.setItem(o, t);
109
+ }, [t, o]);
110
+ const a = h(() => {
111
+ s((n) => n === "dark" ? "light" : "dark");
112
+ }, []), l = h((n) => {
113
+ s(n);
114
+ }, []), i = {
115
+ theme: t,
116
+ toggleTheme: a,
117
+ setTheme: l
118
+ };
119
+ return /* @__PURE__ */ d(f.Provider, { value: i, children: e });
120
+ }
121
+ export {
122
+ S as Badge,
123
+ w as Button,
124
+ v as Input,
125
+ f as ThemeContext,
126
+ y as ThemeProvider,
127
+ j as ThemeToggle,
128
+ x as useTheme
129
+ };
@@ -0,0 +1,3 @@
1
+ import { BadgeProps } from '../types';
2
+
3
+ export declare const Badge: import('react').ForwardRefExoticComponent<BadgeProps & import('react').RefAttributes<HTMLSpanElement>>;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Badge.d.ts","sourceRoot":"","sources":["../../../../src/react/components/Badge.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C,eAAO,MAAM,KAAK,wGAWjB,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { Meta, StoryObj } from '@storybook/react-vite';
2
+ import { Badge } from './Badge';
3
+
4
+ declare const meta: Meta<typeof Badge>;
5
+ export default meta;
6
+ type Story = StoryObj<typeof Badge>;
7
+ export declare const Default: Story;
8
+ export declare const Success: Story;
9
+ export declare const Warning: Story;
10
+ export declare const Danger: Story;
11
+ export declare const Info: Story;
12
+ export declare const AllVariants: Story;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Badge.stories.d.ts","sourceRoot":"","sources":["../../../../src/react/components/Badge.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,KAAK,CAmB5B,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,KAAK,CAAC,CAAC;AAEpC,eAAO,MAAM,OAAO,EAAE,KAKrB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,KAKrB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,KAKrB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,KAKpB,CAAC;AAEF,eAAO,MAAM,IAAI,EAAE,KAKlB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAWzB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { ButtonProps } from '../types';
2
+
3
+ export declare const Button: import('react').ForwardRefExoticComponent<ButtonProps & import('react').RefAttributes<HTMLButtonElement>>;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../../../src/react/components/Button.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C,eAAO,MAAM,MAAM,2GAiClB,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { Meta, StoryObj } from '@storybook/react-vite';
2
+ import { Button } from './Button';
3
+
4
+ declare const meta: Meta<typeof Button>;
5
+ export default meta;
6
+ type Story = StoryObj<typeof Button>;
7
+ export declare const Primary: Story;
8
+ export declare const Secondary: Story;
9
+ export declare const Ghost: Story;
10
+ export declare const Glow: Story;
11
+ export declare const Danger: Story;
12
+ export declare const Small: Story;
13
+ export declare const Large: Story;
14
+ export declare const Disabled: Story;
15
+ export declare const AllVariants: Story;
16
+ export declare const AllSizes: Story;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Button.stories.d.ts","sourceRoot":"","sources":["../../../../src/react/components/Button.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,MAAM,CA6B7B,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,MAAM,CAAC,CAAC;AAErC,eAAO,MAAM,OAAO,EAAE,KAKrB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,KAKvB,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,KAKnB,CAAC;AAEF,eAAO,MAAM,IAAI,EAAE,KAKlB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,KAKpB,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,KAKnB,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,KAKnB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAKtB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAYzB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAQtB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { InputProps } from '../types';
2
+
3
+ export declare const Input: import('react').ForwardRefExoticComponent<InputProps & import('react').RefAttributes<HTMLInputElement>>;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Input.d.ts","sourceRoot":"","sources":["../../../../src/react/components/Input.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C,eAAO,MAAM,KAAK,yGA8BjB,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { Meta, StoryObj } from '@storybook/react-vite';
2
+ import { Input } from './Input';
3
+
4
+ declare const meta: Meta<typeof Input>;
5
+ export default meta;
6
+ type Story = StoryObj<typeof Input>;
7
+ export declare const Default: Story;
8
+ export declare const WithValue: Story;
9
+ export declare const Disabled: Story;
10
+ export declare const Password: Story;
11
+ export declare const Types: Story;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Input.stories.d.ts","sourceRoot":"","sources":["../../../../src/react/components/Input.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,KAAK,CA2B5B,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,KAAK,CAAC,CAAC;AAEpC,eAAO,MAAM,OAAO,EAAE,KAIrB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,KAKvB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAKtB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAKtB,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,KAUnB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export interface ThemeToggleProps {
2
+ className?: string;
3
+ }
4
+ export declare function ThemeToggle({ className }: ThemeToggleProps): import("react").JSX.Element;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThemeToggle.d.ts","sourceRoot":"","sources":["../../../../src/react/components/ThemeToggle.tsx"],"names":[],"mappings":"AAEA,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,WAAW,CAAC,EAAE,SAAc,EAAE,EAAE,gBAAgB,+BAsB/D"}
@@ -0,0 +1,7 @@
1
+ import { Meta, StoryObj } from '@storybook/react-vite';
2
+ import { ThemeToggle } from './ThemeToggle';
3
+
4
+ declare const meta: Meta<typeof ThemeToggle>;
5
+ export default meta;
6
+ type Story = StoryObj<typeof ThemeToggle>;
7
+ export declare const Default: Story;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThemeToggle.stories.d.ts","sourceRoot":"","sources":["../../../../src/react/components/ThemeToggle.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,WAAW,CAmBlC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,WAAW,CAAC,CAAC;AAE1C,eAAO,MAAM,OAAO,EAAE,KAAU,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { default as React } from 'react';
2
+ import { Theme, ThemeContextValue } from '../types';
3
+
4
+ export declare function useTheme(): ThemeContextValue;
5
+ export interface ThemeProviderProps {
6
+ children: React.ReactNode;
7
+ defaultTheme?: Theme;
8
+ storageKey?: string;
9
+ }
10
+ export declare function ThemeProvider({ children, defaultTheme, storageKey, }: ThemeProviderProps): React.JSX.Element;
11
+ //# sourceMappingURL=useTheme.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTheme.d.ts","sourceRoot":"","sources":["../../../../src/react/hooks/useTheme.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsE,MAAM,OAAO,CAAC;AAC3F,OAAO,KAAK,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAOzD,wBAAgB,QAAQ,IAAI,iBAAiB,CAM5C;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,YAAY,CAAC,EAAE,KAAK,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,YAAqB,EACrB,UAA8B,GAC/B,EAAE,kBAAkB,qBA8BpB"}
@@ -0,0 +1,8 @@
1
+ export * from './types';
2
+ export * from './components/Button';
3
+ export * from './components/Input';
4
+ export * from './components/Badge';
5
+ export * from './components/ThemeToggle';
6
+ export * from './theme/useTheme';
7
+ export * from './theme/ThemeContext';
8
+ export * from './theme/ThemeProvider';
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/react/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { ThemeContextValue } from '../types';
2
+
3
+ export declare const ThemeContext: import('react').Context<ThemeContextValue | undefined>;
@@ -0,0 +1,9 @@
1
+ import { default as React } from 'react';
2
+ import { Theme } from '../types';
3
+
4
+ export interface ThemeProviderProps {
5
+ children: React.ReactNode;
6
+ defaultTheme?: Theme;
7
+ storageKey?: string;
8
+ }
9
+ export declare function ThemeProvider({ children, defaultTheme, storageKey, }: ThemeProviderProps): React.JSX.Element;
@@ -0,0 +1,3 @@
1
+ import { ThemeContextValue } from '../types';
2
+
3
+ export declare function useTheme(): ThemeContextValue;
@@ -0,0 +1,33 @@
1
+ import { CSSProperties, ReactNode } from 'react';
2
+
3
+ export interface BaseProps {
4
+ className?: string;
5
+ style?: CSSProperties;
6
+ children?: ReactNode;
7
+ }
8
+ export type ButtonVariant = 'primary' | 'secondary' | 'ghost' | 'glow' | 'glow-cyan' | 'glow-grid' | 'danger';
9
+ export type ButtonSize = 'sm' | 'md' | 'lg';
10
+ export interface ButtonProps extends BaseProps {
11
+ variant?: ButtonVariant;
12
+ size?: ButtonSize;
13
+ disabled?: boolean;
14
+ onClick?: () => void;
15
+ type?: 'button' | 'submit' | 'reset';
16
+ }
17
+ export type BadgeVariant = 'default' | 'success' | 'warning' | 'danger' | 'info' | 'neutral';
18
+ export interface BadgeProps extends BaseProps {
19
+ variant?: BadgeVariant;
20
+ }
21
+ export interface InputProps extends BaseProps {
22
+ type?: string;
23
+ placeholder?: string;
24
+ disabled?: boolean;
25
+ value?: string;
26
+ onChange?: (value: string) => void;
27
+ }
28
+ export type Theme = 'dark' | 'light';
29
+ export interface ThemeContextValue {
30
+ theme: Theme;
31
+ toggleTheme: () => void;
32
+ setTheme: (theme: Theme) => void;
33
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/react/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEtD,MAAM,WAAW,SAAS;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,MAAM,MAAM,aAAa,GACrB,SAAS,GACT,WAAW,GACX,OAAO,GACP,MAAM,GACN,WAAW,GACX,WAAW,GACX,QAAQ,CAAC;AAEb,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE5C,MAAM,WAAW,WAAY,SAAQ,SAAS;IAC5C,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;CACtC;AAED,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;AAE7F,MAAM,WAAW,UAAW,SAAQ,SAAS;IAC3C,OAAO,CAAC,EAAE,YAAY,CAAC;CACxB;AAED,MAAM,WAAW,UAAW,SAAQ,SAAS;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC;AAED,MAAM,MAAM,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;AAErC,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,KAAK,CAAC;IACb,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC"}
@@ -0,0 +1,17 @@
1
+ import { default as React } from 'react';
2
+
3
+ export interface ButtonProps {
4
+ /** Is this the principal call to action on the page? */
5
+ primary?: boolean;
6
+ /** What background color to use */
7
+ backgroundColor?: string;
8
+ /** How large should the button be? */
9
+ size?: 'small' | 'medium' | 'large';
10
+ /** Button contents */
11
+ label: string;
12
+ /** Optional click handler */
13
+ onClick?: () => void;
14
+ }
15
+ /** Primary UI component for user interaction */
16
+ export declare const Button: ({ primary, size, backgroundColor, label, ...props }: ButtonProps) => React.JSX.Element;
17
+ //# sourceMappingURL=Button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../../src/stories/Button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,cAAc,CAAC;AAEtB,MAAM,WAAW,WAAW;IAC1B,wDAAwD;IACxD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,mCAAmC;IACnC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,sCAAsC;IACtC,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;IACpC,sBAAsB;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,6BAA6B;IAC7B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,gDAAgD;AAChD,eAAO,MAAM,MAAM,GAAI,qDAMpB,WAAW,sBAYb,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { StoryObj } from '@storybook/react-vite';
2
+
3
+ declare const meta: {
4
+ title: string;
5
+ component: ({ primary, size, backgroundColor, label, ...props }: import('./Button').ButtonProps) => import("react").JSX.Element;
6
+ parameters: {
7
+ layout: string;
8
+ };
9
+ tags: string[];
10
+ argTypes: {
11
+ backgroundColor: {
12
+ control: "color";
13
+ };
14
+ };
15
+ args: {
16
+ onClick: import('storybook/test').Mock<(...args: any[]) => any>;
17
+ };
18
+ };
19
+ export default meta;
20
+ type Story = StoryObj<typeof meta>;
21
+ export declare const Primary: Story;
22
+ export declare const Secondary: Story;
23
+ export declare const Large: Story;
24
+ export declare const Small: Story;
25
+ //# sourceMappingURL=Button.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Button.stories.d.ts","sourceRoot":"","sources":["../../../src/stories/Button.stories.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAO5D,QAAA,MAAM,IAAI;;;;;;;;;;;;;;;CAeqB,CAAC;AAEhC,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAGnC,eAAO,MAAM,OAAO,EAAE,KAKrB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,KAIvB,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,KAKnB,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,KAKnB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { Meta, StoryObj } from '@storybook/react-vite';
2
+
3
+ declare const meta: Meta;
4
+ export default meta;
5
+ type Story = StoryObj;
6
+ export declare const Buttons: Story;
7
+ export declare const Inputs: Story;
8
+ export declare const Badges: Story;
9
+ export declare const Navigation: Story;
10
+ export declare const Cards: Story;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Components.stories.d.ts","sourceRoot":"","sources":["../../../src/stories/Components.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAE5D,QAAA,MAAM,IAAI,EAAE,IAWX,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC;AAEtB,eAAO,MAAM,OAAO,EAAE,KAUrB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,KAapB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,KAWpB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,KASxB,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,KAmBnB,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { default as React } from 'react';
2
+
3
+ type User = {
4
+ name: string;
5
+ };
6
+ export interface HeaderProps {
7
+ user?: User;
8
+ onLogin?: () => void;
9
+ onLogout?: () => void;
10
+ onCreateAccount?: () => void;
11
+ }
12
+ export declare const Header: ({ user, onLogin, onLogout, onCreateAccount }: HeaderProps) => React.JSX.Element;
13
+ export {};
14
+ //# sourceMappingURL=Header.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Header.d.ts","sourceRoot":"","sources":["../../../src/stories/Header.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,cAAc,CAAC;AAEtB,KAAK,IAAI,GAAG;IACV,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;CAC9B;AAED,eAAO,MAAM,MAAM,GAAI,8CAA8C,WAAW,sBAuC/E,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { StoryObj } from '@storybook/react-vite';
2
+
3
+ declare const meta: {
4
+ title: string;
5
+ component: ({ user, onLogin, onLogout, onCreateAccount }: import('./Header').HeaderProps) => import("react").JSX.Element;
6
+ tags: string[];
7
+ parameters: {
8
+ layout: string;
9
+ };
10
+ args: {
11
+ onLogin: import('storybook/test').Mock<(...args: any[]) => any>;
12
+ onLogout: import('storybook/test').Mock<(...args: any[]) => any>;
13
+ onCreateAccount: import('storybook/test').Mock<(...args: any[]) => any>;
14
+ };
15
+ };
16
+ export default meta;
17
+ type Story = StoryObj<typeof meta>;
18
+ export declare const LoggedIn: Story;
19
+ export declare const LoggedOut: Story;
20
+ //# sourceMappingURL=Header.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Header.stories.d.ts","sourceRoot":"","sources":["../../../src/stories/Header.stories.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAM5D,QAAA,MAAM,IAAI;;;;;;;;;;;;CAcqB,CAAC;AAEhC,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,QAAQ,EAAE,KAMtB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,KAAU,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { default as React } from 'react';
2
+
3
+ export declare const Page: React.FC;
4
+ //# sourceMappingURL=Page.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Page.d.ts","sourceRoot":"","sources":["../../../src/stories/Page.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,YAAY,CAAC;AAMpB,eAAO,MAAM,IAAI,EAAE,KAAK,CAAC,EA+DxB,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { StoryObj } from '@storybook/react-vite';
2
+
3
+ declare const meta: {
4
+ title: string;
5
+ component: import('react').FC<{}>;
6
+ parameters: {
7
+ layout: string;
8
+ };
9
+ };
10
+ export default meta;
11
+ type Story = StoryObj<typeof meta>;
12
+ export declare const LoggedOut: Story;
13
+ export declare const LoggedIn: Story;
14
+ //# sourceMappingURL=Page.stories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Page.stories.d.ts","sourceRoot":"","sources":["../../../src/stories/Page.stories.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAM5D,QAAA,MAAM,IAAI;;;;;;CAOmB,CAAC;AAE9B,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,SAAS,EAAE,KAAU,CAAC;AAGnC,eAAO,MAAM,QAAQ,EAAE,KAWtB,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { Meta, StoryObj } from '@storybook/react-vite';
2
+
3
+ declare const meta: Meta;
4
+ export default meta;
5
+ type Story = StoryObj;
6
+ export declare const Scanline: Story;
7
+ export declare const Halftone: Story;
8
+ export declare const DotMatrix: Story;
9
+ export declare const Stripes: Story;
10
+ export declare const Noise: Story;
11
+ export declare const Vignette: Story;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Textures.stories.d.ts","sourceRoot":"","sources":["../../../src/stories/Textures.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAE5D,QAAA,MAAM,IAAI,EAAE,IAWX,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC;AAqBtB,eAAO,MAAM,QAAQ,EAAE,KAOtB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAStB,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,KAQvB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,KASrB,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,KAOnB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAOtB,CAAC"}
@@ -0,0 +1 @@
1
+ .scanline{overflow:hidden;position:relative}.scanline:after{animation:scanline-scroll 8s linear infinite;background:repeating-linear-gradient(0deg,transparent,transparent 2px,var(--texture-03) 2px,var(--texture-03) 4px);content:"";top:0;right:0;bottom:0;left:0;pointer-events:none;position:absolute;z-index:1}.scanline-fast{overflow:hidden;position:relative}.scanline-fast:after{animation:scanline-scroll 3s linear infinite;background:repeating-linear-gradient(0deg,transparent,transparent 1px,var(--texture-05) 1px,var(--texture-05) 2px);content:"";top:0;right:0;bottom:0;left:0;pointer-events:none;position:absolute;z-index:1}.halftone-sm{background-image:radial-gradient(var(--texture-08) .5px,transparent .5px);background-size:4px 4px}.halftone-md{background-image:radial-gradient(var(--texture-05) 1px,transparent 1px);background-size:6px 6px}.halftone-lg{background-image:radial-gradient(var(--texture-04) 1.5px,transparent 1.5px);background-size:10px 10px}.halftone-accent{background-image:radial-gradient(var(--brand-primary) 1px,transparent 1px);background-size:8px 8px}.dot-matrix{background-image:radial-gradient(var(--texture-07) .5px,transparent .5px);background-size:6px 6px}.dot-matrix-dense{background-image:radial-gradient(var(--texture-09) .5px,transparent .5px);background-size:3px 3px}.dot-matrix-sparse{background-image:radial-gradient(var(--texture-04) 1px,transparent 1px);background-size:12px 12px}.diagonal-stripes{background:repeating-linear-gradient(45deg,transparent,transparent 6px,var(--texture-04) 6px,var(--texture-04) 7px)}.diagonal-stripes-dense{background:repeating-linear-gradient(45deg,transparent,transparent 3px,var(--texture-08) 3px,var(--texture-08) 4px)}.diagonal-stripes-negative{background:repeating-linear-gradient(45deg,var(--onebit-black),var(--onebit-black) 6px,var(--onebit-white) 6px,var(--onebit-white) 7px)}.stripes-h{background:repeating-linear-gradient(0deg,transparent,transparent 8px,var(--texture-04) 8px,var(--texture-04) 9px)}.stripes-h-dense{background:repeating-linear-gradient(0deg,transparent,transparent 4px,var(--texture-08) 4px,var(--texture-08) 5px)}.stripes-v{background:repeating-linear-gradient(90deg,transparent,transparent 8px,var(--texture-04) 8px,var(--texture-04) 9px)}.stripes-v-dense{background:repeating-linear-gradient(90deg,transparent,transparent 4px,var(--texture-08) 4px,var(--texture-08) 5px)}.crosshatch{background-image:repeating-linear-gradient(45deg,transparent,transparent 6px,var(--texture-04) 6px,var(--texture-04) 7px),repeating-linear-gradient(-45deg,transparent,transparent 6px,var(--texture-04) 6px,var(--texture-04) 7px)}.crosshatch-dense{background-image:repeating-linear-gradient(45deg,transparent,transparent 3px,var(--texture-08) 3px,var(--texture-08) 4px),repeating-linear-gradient(-45deg,transparent,transparent 3px,var(--texture-08) 3px,var(--texture-08) 4px)}.checkerboard{background-image:linear-gradient(45deg,var(--texture-04) 25%,transparent 25%),linear-gradient(-45deg,var(--texture-04) 25%,transparent 25%),linear-gradient(45deg,transparent 75%,var(--texture-04) 75%),linear-gradient(-45deg,transparent 75%,var(--texture-04) 75%);background-position:0 0,0 6px,6px -6px,-6px 0;background-size:12px 12px}.checkerboard-onebit{background-image:linear-gradient(45deg,var(--onebit-black) 25%,transparent 25%),linear-gradient(-45deg,var(--onebit-black) 25%,transparent 25%),linear-gradient(45deg,transparent 75%,var(--onebit-black) 75%),linear-gradient(-45deg,transparent 75%,var(--onebit-black) 75%);background-position:0 0,0 8px,8px -8px,-8px 0;background-size:16px 16px}.noise{position:relative}.noise:before{background-image:var(--texture-noise-svg);background-size:128px 128px;content:"";top:0;right:0;bottom:0;left:0;opacity:.5;pointer-events:none;position:absolute;z-index:1}.noise-heavy:before{opacity:.12}.vignette-onebit{position:relative}.vignette-onebit:after{background:radial-gradient(ellipse at center,transparent 50%,var(--onebit-black)80 100%);content:"";top:0;right:0;bottom:0;left:0;pointer-events:none;position:absolute;z-index:1}.vignette-onebit-sharp:after{background:radial-gradient(ellipse at center,transparent 30%,var(--onebit-black) 100%)}.waves{background:radial-gradient(ellipse at 50% 0,transparent 60%,var(--texture-02) 60%,var(--texture-02) 61%),radial-gradient(ellipse at 50% 0,transparent 50%,var(--texture-02) 50%,var(--texture-02) 51%),radial-gradient(ellipse at 50% 0,transparent 40%,var(--texture-03) 40%,var(--texture-03) 41%),radial-gradient(ellipse at 50% 0,transparent 30%,var(--texture-02) 30%,var(--texture-02) 31%),radial-gradient(ellipse at 50% 0,transparent 20%,var(--texture-03) 20%,var(--texture-03) 21%),radial-gradient(ellipse at 50% 0,transparent 10%,var(--texture-02) 10%,var(--texture-02) 11%);background-position:0 0,0 10px,0 20px,0 30px,0 40px,0 50px;background-size:100px 80px,100px 80px,100px 80px,100px 80px,100px 80px,100px 80px}.waves-dense{background:radial-gradient(ellipse at 50% 0,transparent 65%,var(--texture-05) 65%,var(--texture-05) 66%),radial-gradient(ellipse at 50% 0,transparent 55%,var(--texture-04) 55%,var(--texture-04) 56%),radial-gradient(ellipse at 50% 0,transparent 45%,var(--texture-05) 45%,var(--texture-05) 46%),radial-gradient(ellipse at 50% 0,transparent 35%,var(--texture-04) 35%,var(--texture-04) 36%),radial-gradient(ellipse at 50% 0,transparent 25%,var(--texture-05) 25%,var(--texture-05) 26%),radial-gradient(ellipse at 50% 0,transparent 15%,var(--texture-04) 15%,var(--texture-04) 16%);background-position:0 0,0 8px,0 16px,0 24px,0 32px,0 40px;background-size:60px 50px,60px 50px,60px 50px,60px 50px,60px 50px,60px 50px}.concentric-rings{background:radial-gradient(circle at 50% 50%,transparent 10%,var(--texture-03) 10%,var(--texture-03) 11%,transparent 11%),radial-gradient(circle at 50% 50%,transparent 20%,var(--texture-03) 20%,var(--texture-03) 21%,transparent 21%),radial-gradient(circle at 50% 50%,transparent 30%,var(--texture-04) 30%,var(--texture-04) 31%,transparent 31%),radial-gradient(circle at 50% 50%,transparent 40%,var(--texture-03) 40%,var(--texture-03) 41%,transparent 41%),radial-gradient(circle at 50% 50%,transparent 50%,var(--texture-03) 50%,var(--texture-03) 51%,transparent 51%),radial-gradient(circle at 50% 50%,transparent 60%,var(--texture-02) 60%,var(--texture-02) 61%);background-position:50%;background-size:200px 200px}.concentric-rings-dense{background:radial-gradient(circle at 50% 50%,transparent 8%,var(--texture-06) 8%,var(--texture-06) 9%,transparent 9%),radial-gradient(circle at 50% 50%,transparent 16%,var(--texture-05) 16%,var(--texture-05) 17%,transparent 17%),radial-gradient(circle at 50% 50%,transparent 24%,var(--texture-06) 24%,var(--texture-06) 25%,transparent 25%),radial-gradient(circle at 50% 50%,transparent 32%,var(--texture-05) 32%,var(--texture-05) 33%,transparent 33%),radial-gradient(circle at 50% 50%,transparent 40%,var(--texture-06) 40%,var(--texture-06) 41%,transparent 41%),radial-gradient(circle at 50% 50%,transparent 48%,var(--texture-05) 48%,var(--texture-05) 49%);background-position:50%;background-size:120px 120px}.grid-dots{background-image:radial-gradient(var(--texture-06) 1px,transparent 1px),radial-gradient(var(--texture-06) 1px,transparent 1px);background-position:0 0,8px 8px;background-size:16px 16px,16px 16px}.grid-dots-dense{background-image:radial-gradient(var(--texture-09) .8px,transparent .8px),radial-gradient(var(--texture-09) .8px,transparent .8px);background-position:0 0,4px 4px;background-size:8px 8px,8px 8px}.grid-dots-accent{background-image:radial-gradient(var(--magenta-500/.15) 1px,transparent 1px),radial-gradient(var(--magenta-500/.15) 1px,transparent 1px);background-position:0 0,10px 10px;background-size:20px 20px,20px 20px}.rain{background:repeating-linear-gradient(20deg,transparent,transparent 3px,var(--texture-02) 3px,var(--texture-02) 4px);background-size:8px 20px}.rain-dense{background:repeating-linear-gradient(20deg,transparent,transparent 2px,var(--texture-05) 2px,var(--texture-05) 3px);background-size:6px 12px}.rain-angled{background:repeating-linear-gradient(35deg,transparent,transparent 3px,var(--texture-03) 3px,var(--texture-03) 4px),repeating-linear-gradient(-35deg,transparent,transparent 6px,var(--texture-02) 6px,var(--texture-02) 7px);background-size:12px 24px}.starburst{background:repeating-conic-gradient(var(--texture-03) 0,var(--texture-03) .5%,transparent .5%,transparent 5%);background-size:100% 100%}.starburst-dense{background:repeating-conic-gradient(var(--texture-06) 0,var(--texture-06) .3%,transparent .3%,transparent 3%)}.starburst-accent{background:repeating-conic-gradient(color-mix(in srgb,var(--brand-primary) 12%,transparent) 0,color-mix(in srgb,var(--brand-primary) 12%,transparent) .5%,transparent .5%,transparent 4%)}.zigzag{background:repeating-linear-gradient(75deg,transparent,transparent 8px,var(--texture-04) 8px,var(--texture-04) 9px),repeating-linear-gradient(-75deg,transparent,transparent 8px,var(--texture-04) 8px,var(--texture-04) 9px);background-size:24px 12px}.zigzag-dense{background:repeating-linear-gradient(75deg,transparent,transparent 4px,var(--texture-07) 4px,var(--texture-07) 5px),repeating-linear-gradient(-75deg,transparent,transparent 4px,var(--texture-07) 4px,var(--texture-07) 5px);background-size:12px 6px}.zigzag-horizontal{background:repeating-linear-gradient(165deg,transparent,transparent 8px,var(--texture-04) 8px,var(--texture-04) 9px),repeating-linear-gradient(-165deg,transparent,transparent 8px,var(--texture-04) 8px,var(--texture-04) 9px);background-size:24px 12px}.separator-onebit{background:var(--texture-solid);border:none;height:1px;margin:0;opacity:.25;width:100%}.separator-onebit-thick{height:2px;opacity:.4}.separator-onebit-dashed{background:transparent;border-top:2px dashed var(--texture-solid);height:0;opacity:.3}.separator-onebit-dotted{background:transparent;border-top:2px dotted var(--texture-solid);height:0;opacity:.25}
@@ -0,0 +1 @@
1
+ :root{--magenta-50:#ffe5ff;--magenta-100:#ffc2ff;--magenta-200:#f9f;--magenta-300:#f6f;--magenta-400:#f3f;--magenta-500:#f0f;--magenta-600:#d600d6;--magenta-700:#a800a8;--magenta-800:purple;--magenta-900:#570057;--magenta-950:#303;--solar-50:#fffce5;--solar-100:#fff5b8;--solar-200:#ffee8a;--solar-300:#ffe65c;--solar-400:#ffde2e;--solar-500:#ffd60a;--solar-600:#d6b208;--solar-700:#a88d06;--solar-800:#806c04;--solar-900:#574903;--solar-950:#332b02;--cyan-50:#e5fbff;--cyan-100:#b8f6ff;--cyan-200:#8af0ff;--cyan-300:#5ce9ff;--cyan-400:#2ee2ff;--cyan-500:#00e5ff;--cyan-600:#00b8cc;--cyan-700:#008fa0;--cyan-800:#006b78;--cyan-900:#00474d;--cyan-950:#002a2e;--acid-50:#f2ffe5;--acid-100:#deffb8;--acid-200:#caff8a;--acid-300:#b7ff5c;--acid-400:#a3ff2e;--acid-500:#7cff00;--acid-600:#6c0;--acid-700:#4d9900;--acid-800:#3a7300;--acid-900:#274d00;--acid-950:#172e00;--ember-50:#ffeee5;--ember-100:#ffd2b8;--ember-200:#ffb68a;--ember-300:#ff9b5c;--ember-400:#ff7f2e;--ember-500:#ff6b35;--ember-600:#d45929;--ember-700:#a8431c;--ember-800:#802f13;--ember-900:#57200c;--ember-950:#331205;--neutral-50:#fafafb;--neutral-100:#eeeef1;--neutral-200:#d7d7dc;--neutral-300:#b0b0b8;--neutral-400:#82828a;--neutral-500:#6b6b72;--neutral-600:#50505a;--neutral-700:#3a3a42;--neutral-800:#26262b;--neutral-900:#1c1c22;--neutral-950:#131318;--neutral-1000:#0a0a0d;--neutral-void:#000;--success-50:#e5fcef;--success-100:#b8f5d2;--success-200:#8aedb6;--success-300:#5ce69a;--success-400:#2ede7d;--success-500:#00e676;--success-600:#00b85d;--success-700:#008a46;--success-800:#006534;--success-900:#004423;--success-950:#002915;--warning-50:#fff8e5;--warning-100:#ffeab8;--warning-200:#ffdc8a;--warning-300:#ffce5c;--warning-400:#ffc02e;--warning-500:#ffb300;--warning-600:#d69500;--warning-700:#a87600;--warning-800:#805900;--warning-900:#573d00;--warning-950:#332400;--danger-50:#ffe5eb;--danger-100:#ffb8c5;--danger-200:#ff8aa0;--danger-300:#ff5c7a;--danger-400:#ff4c6b;--danger-500:#ff3b5c;--danger-600:#d62e4a;--danger-700:#a82338;--danger-800:#801a29;--danger-900:#57111c;--danger-950:#330a10;--info-50:#e5efff;--info-100:#b8d2ff;--info-200:#8ab5ff;--info-300:#5c99ff;--info-400:#4f94ff;--info-500:#3f8eff;--info-600:#2c71d6;--info-700:#1f58a8;--info-800:#174180;--info-900:#0f2c57;--info-950:#091a33;--onebit-black:#000;--onebit-white:#fff;--texture-02:hsla(0,0%,100%,.02);--texture-03:hsla(0,0%,100%,.03);--texture-04:hsla(0,0%,100%,.04);--texture-05:hsla(0,0%,100%,.05);--texture-06:hsla(0,0%,100%,.06);--texture-07:hsla(0,0%,100%,.07);--texture-08:hsla(0,0%,100%,.08);--texture-09:hsla(0,0%,100%,.09);--texture-13:hsla(0,0%,100%,.13);--texture-19:hsla(0,0%,100%,.19);--texture-38:hsla(0,0%,100%,.38);--texture-50:hsla(0,0%,100%,.5);--texture-solid:#fff;--texture-noise-svg:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 256 256'%3E%3Cfilter id='a'%3E%3CfeTurbulence baseFrequency='.85' numOctaves='4' stitchTiles='stitch' type='fractalNoise'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' fill='%23fff' filter='url(%23a)' opacity='.04'/%3E%3C/svg%3E");--brand-primary:var(--magenta-500);--brand-primary-hover:var(--magenta-400);--brand-primary-active:var(--magenta-600);--brand-primary-muted:var(--magenta-800);--brand-primary-subtle:var(--magenta-950);--brand-primary-glow:color-mix(in srgb,var(--magenta-500) 25%,transparent);--text-on-brand:var(--neutral-void);--brand-primary-soft:var(--magenta-400);--brand-primary-deep:var(--magenta-700);--bg-void:var(--neutral-void);--bg-base:var(--neutral-1000);--bg-elevated:var(--neutral-950);--bg-raised:var(--neutral-900);--bg-overlay:var(--neutral-800);--bg-pressed:var(--neutral-700);--bg-translucent:hsla(0,0%,100%,.04);--text-primary:var(--neutral-50);--text-secondary:var(--neutral-300);--text-tertiary:var(--neutral-500);--text-placeholder:var(--neutral-500);--text-disabled:var(--neutral-700);--text-inverse:var(--neutral-void);--border-subtle:hsla(0,0%,100%,.06);--border-default:hsla(0,0%,100%,.1);--border-strong:hsla(0,0%,100%,.18);--border-focus:var(--magenta-500);--border-brand:var(--magenta-500);--status-success:var(--success-500);--status-success-bg:var(--success-950);--status-success-fg:var(--success-300);--status-warning:var(--warning-500);--status-warning-bg:var(--warning-950);--status-warning-fg:var(--warning-300);--status-danger:var(--danger-500);--status-danger-bg:var(--danger-950);--status-danger-fg:var(--danger-300);--status-info:var(--info-500);--status-info-bg:var(--info-950);--status-info-fg:var(--info-300);--status-neutral:var(--neutral-400);--status-neutral-bg:var(--neutral-900);--status-neutral-fg:var(--neutral-300);--accent-square:var(--magenta-500);--accent-triangle:var(--solar-500);--accent-circle:var(--cyan-500);--accent-grid:var(--acid-500);--accent-line:var(--ember-500);--font-sans:"Geist",system-ui,-apple-system,sans-serif;--font-mono:"Geist Mono",ui-monospace,"SF Mono",menlo,monospace;--font-pixel:"Geist Pixel",monospace;--text-display:clamp(48px,8vw,160px);--text-7xl:7.5rem;--text-6xl:5.5rem;--text-5xl:4rem;--text-4xl:3rem;--text-3xl:2.25rem;--text-2xl:1.75rem;--text-xl:1.375rem;--text-lg:1.125rem;--text-base:1rem;--text-sm:.875rem;--text-xs:.75rem;--text-2xs:.625rem;--text-h1:4rem;--text-h2:3rem;--text-h3:2rem;--text-h4:1.5rem;--text-body-lg:1.125rem;--text-body:1rem;--text-body-sm:.875rem;--text-caption:.75rem;--text-mono-label:.6875rem;--text-mono-body:.8125rem;--leading-none:1;--leading-tight:1.15;--leading-snug:1.3;--leading-normal:1.5;--leading-relaxed:1.65;--tracking-tightest:-.04em;--tracking-tighter:-.02em;--tracking-tight:-.01em;--tracking-normal:0;--tracking-wide:.02em;--tracking-wider:.06em;--tracking-widest:.14em;--weight-thin:100;--weight-extralight:200;--weight-light:300;--weight-regular:400;--weight-medium:500;--weight-semibold:600;--weight-bold:700;--weight-extrabold:800;--weight-black:900;--space-0:0;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-8:2rem;--space-10:2.5rem;--space-12:3rem;--space-16:4rem;--space-20:5rem;--space-24:6rem;--space-32:8rem;--radius-none:0;--radius-xs:2px;--radius-sm:4px;--radius-md:8px;--radius-lg:12px;--radius-xl:16px;--radius-2xl:24px;--radius-full:9999px;--shadow-sm:0 1px 2px rgba(0,0,0,.4);--shadow-md:0 4px 12px rgba(0,0,0,.5);--shadow-lg:0 12px 32px rgba(0,0,0,.6);--shadow-xl:0 24px 64px rgba(0,0,0,.7);--shadow-glow:0 0 0 1px var(--brand-primary),0 0 24px var(--brand-primary-glow);--shadow-inset:inset 0 1px 0 hsla(0,0%,100%,.04);--ease-out:cubic-bezier(.16,1,.3,1);--ease-in-out:cubic-bezier(.65,0,.35,1);--ease-spring:cubic-bezier(.34,1.56,.64,1);--duration-instant:80ms;--duration-fast:.15s;--duration-base:.24s;--duration-slow:.4s;--duration-slower:.64s;--container-sm:640px;--container-md:960px;--container-lg:1200px;--container-xl:1440px;--grid-gutter:var(--space-6);--z-base:0;--z-raised:10;--z-sticky:100;--z-overlay:200;--z-modal:300;--z-toast:400;--z-max:999}
Binary file
Binary file
Binary file
Binary file
Binary file