@gigo-ui/components 1.0.0-alpha

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 (96) hide show
  1. package/README.md +49 -0
  2. package/dist/assets/favicon.svg +1 -0
  3. package/dist/components/chaos/CatchSubmit.svelte +144 -0
  4. package/dist/components/chaos/CatchSubmit.svelte.d.ts +11 -0
  5. package/dist/components/chaos/ChaosButton.svelte +132 -0
  6. package/dist/components/chaos/ChaosButton.svelte.d.ts +4 -0
  7. package/dist/components/chaos/ChaosForm.svelte +206 -0
  8. package/dist/components/chaos/ChaosForm.svelte.d.ts +10 -0
  9. package/dist/components/chaos/ColorPickerWrong.svelte +141 -0
  10. package/dist/components/chaos/ColorPickerWrong.svelte.d.ts +11 -0
  11. package/dist/components/chaos/DropdownCalc.svelte +195 -0
  12. package/dist/components/chaos/DropdownCalc.svelte.d.ts +8 -0
  13. package/dist/components/chaos/GhostCard.svelte +157 -0
  14. package/dist/components/chaos/GhostCard.svelte.d.ts +13 -0
  15. package/dist/components/chaos/GravityInput.svelte +161 -0
  16. package/dist/components/chaos/GravityInput.svelte.d.ts +13 -0
  17. package/dist/components/chaos/PasswordPeekhole.svelte +141 -0
  18. package/dist/components/chaos/PasswordPeekhole.svelte.d.ts +11 -0
  19. package/dist/components/chaos/ProgressDoom.svelte +139 -0
  20. package/dist/components/chaos/ProgressDoom.svelte.d.ts +12 -0
  21. package/dist/components/chaos/RotaryDial.svelte +221 -0
  22. package/dist/components/chaos/RotaryDial.svelte.d.ts +10 -0
  23. package/dist/components/chaos/SliderPhone.svelte +92 -0
  24. package/dist/components/chaos/SliderPhone.svelte.d.ts +10 -0
  25. package/dist/components/chaos/TermsSidescroll.svelte +121 -0
  26. package/dist/components/chaos/TermsSidescroll.svelte.d.ts +12 -0
  27. package/dist/components/chaos/VolumeSlider.svelte +116 -0
  28. package/dist/components/chaos/VolumeSlider.svelte.d.ts +14 -0
  29. package/dist/components/ui/Button.svelte +162 -0
  30. package/dist/components/ui/Button.svelte.d.ts +4 -0
  31. package/dist/components/ui/Card.svelte +141 -0
  32. package/dist/components/ui/Card.svelte.d.ts +4 -0
  33. package/dist/components/ui/Carousel.svelte +164 -0
  34. package/dist/components/ui/Carousel.svelte.d.ts +4 -0
  35. package/dist/components/ui/Form.svelte +178 -0
  36. package/dist/components/ui/Form.svelte.d.ts +4 -0
  37. package/dist/components/ui/Input.svelte +135 -0
  38. package/dist/components/ui/Input.svelte.d.ts +4 -0
  39. package/dist/components/ui/Modal.svelte +173 -0
  40. package/dist/components/ui/Modal.svelte.d.ts +4 -0
  41. package/dist/components/ui/Navigation.svelte +91 -0
  42. package/dist/components/ui/Navigation.svelte.d.ts +4 -0
  43. package/dist/docs/categories.d.ts +13 -0
  44. package/dist/docs/categories.js +17 -0
  45. package/dist/docs/component-data.d.ts +6 -0
  46. package/dist/docs/component-data.js +49 -0
  47. package/dist/docs/components/badui/catch-submit.d.ts +2 -0
  48. package/dist/docs/components/badui/catch-submit.js +49 -0
  49. package/dist/docs/components/badui/color-picker-wrong.d.ts +2 -0
  50. package/dist/docs/components/badui/color-picker-wrong.js +40 -0
  51. package/dist/docs/components/badui/dropdown-calc.d.ts +2 -0
  52. package/dist/docs/components/badui/dropdown-calc.js +28 -0
  53. package/dist/docs/components/badui/ghost-card.d.ts +2 -0
  54. package/dist/docs/components/badui/ghost-card.js +54 -0
  55. package/dist/docs/components/badui/gravity-input.d.ts +2 -0
  56. package/dist/docs/components/badui/gravity-input.js +64 -0
  57. package/dist/docs/components/badui/password-peekhole.d.ts +2 -0
  58. package/dist/docs/components/badui/password-peekhole.js +51 -0
  59. package/dist/docs/components/badui/progress-doom.d.ts +2 -0
  60. package/dist/docs/components/badui/progress-doom.js +48 -0
  61. package/dist/docs/components/badui/rotary-dial.d.ts +2 -0
  62. package/dist/docs/components/badui/rotary-dial.js +40 -0
  63. package/dist/docs/components/badui/slider-phone.d.ts +2 -0
  64. package/dist/docs/components/badui/slider-phone.js +40 -0
  65. package/dist/docs/components/badui/terms-sidescroll.d.ts +2 -0
  66. package/dist/docs/components/badui/terms-sidescroll.js +46 -0
  67. package/dist/docs/components/badui/volume-slider.d.ts +2 -0
  68. package/dist/docs/components/badui/volume-slider.js +52 -0
  69. package/dist/docs/components/chaos/chaos-button.d.ts +2 -0
  70. package/dist/docs/components/chaos/chaos-button.js +48 -0
  71. package/dist/docs/components/chaos/chaos-form.d.ts +2 -0
  72. package/dist/docs/components/chaos/chaos-form.js +68 -0
  73. package/dist/docs/components/standard/button.d.ts +2 -0
  74. package/dist/docs/components/standard/button.js +66 -0
  75. package/dist/docs/components/standard/card.d.ts +2 -0
  76. package/dist/docs/components/standard/card.js +55 -0
  77. package/dist/docs/components/standard/carousel.d.ts +2 -0
  78. package/dist/docs/components/standard/carousel.js +63 -0
  79. package/dist/docs/components/standard/form.d.ts +2 -0
  80. package/dist/docs/components/standard/form.js +57 -0
  81. package/dist/docs/components/standard/input.d.ts +2 -0
  82. package/dist/docs/components/standard/input.js +65 -0
  83. package/dist/docs/components/standard/modal.d.ts +2 -0
  84. package/dist/docs/components/standard/modal.js +63 -0
  85. package/dist/docs/components/standard/navigation.d.ts +2 -0
  86. package/dist/docs/components/standard/navigation.js +51 -0
  87. package/dist/docs/types.d.ts +16 -0
  88. package/dist/docs/types.js +1 -0
  89. package/dist/index.d.ts +22 -0
  90. package/dist/index.js +21 -0
  91. package/dist/styles/globals.css +569 -0
  92. package/dist/types/index.d.ts +177 -0
  93. package/dist/types/index.js +1 -0
  94. package/dist/utils/cn.d.ts +9 -0
  95. package/dist/utils/cn.js +90 -0
  96. package/package.json +61 -0
@@ -0,0 +1,46 @@
1
+ export const termsSidescroll = {
2
+ name: "Terms Sidescroll",
3
+ slug: "terms-sidescroll",
4
+ emoji: "📜",
5
+ category: "badui",
6
+ tagline: "Terms & conditions that scroll sideways and scramble",
7
+ description: "A terms and conditions box that scrolls horizontally instead of vertically. Text rotates as you scroll, characters randomly scramble, and the accept checkbox only works 50% of the time.",
8
+ usage: `<script lang="ts">
9
+ import { TermsSidescroll } from '@gigo-ui/components';
10
+ let accepted = $state(false);
11
+ </script>
12
+
13
+ <TermsSidescroll bind:accepted />`,
14
+ props: [
15
+ {
16
+ name: "content",
17
+ type: "string",
18
+ default: "'...'",
19
+ description: "Terms text content",
20
+ },
21
+ {
22
+ name: "accepted",
23
+ type: "boolean",
24
+ default: "false",
25
+ description: "Accept state (bindable)",
26
+ },
27
+ {
28
+ name: "rotateText",
29
+ type: "boolean",
30
+ default: "true",
31
+ description: "Text rotates on scroll",
32
+ },
33
+ {
34
+ name: "scrambleOnScroll",
35
+ type: "boolean",
36
+ default: "true",
37
+ description: "Characters scramble while scrolling",
38
+ },
39
+ {
40
+ name: "sidewaysScroll",
41
+ type: "boolean",
42
+ default: "true",
43
+ description: "Scroll horizontally instead of vertically",
44
+ },
45
+ ],
46
+ };
@@ -0,0 +1,2 @@
1
+ import type { ComponentDoc } from "../../types.js";
2
+ export declare const volumeSlider: ComponentDoc;
@@ -0,0 +1,52 @@
1
+ export const volumeSlider = {
2
+ name: "Volume Slider",
3
+ slug: "volume-slider",
4
+ emoji: "🔊",
5
+ category: "badui",
6
+ tagline: "A volume control that lies, inverts, and jumps",
7
+ description: "A volume slider where dragging left increases volume and right decreases it. Labels lie about the current level, and the slider randomly jumps to new positions on its own.",
8
+ usage: `<script lang="ts">
9
+ import { VolumeSlider } from '@gigo-ui/components';
10
+ let volume = $state(50);
11
+ </script>
12
+
13
+ <VolumeSlider bind:value={volume} />`,
14
+ props: [
15
+ {
16
+ name: "value",
17
+ type: "number",
18
+ default: "50",
19
+ description: "Current volume (bindable)",
20
+ },
21
+ {
22
+ name: "min",
23
+ type: "number",
24
+ default: "0",
25
+ description: "Minimum value",
26
+ },
27
+ {
28
+ name: "max",
29
+ type: "number",
30
+ default: "100",
31
+ description: "Maximum value",
32
+ },
33
+ {
34
+ name: "invertDirection",
35
+ type: "boolean",
36
+ default: "true",
37
+ description: "Invert slider direction",
38
+ },
39
+ {
40
+ name: "jumpAround",
41
+ type: "boolean",
42
+ default: "true",
43
+ description: "Slider randomly jumps",
44
+ },
45
+ {
46
+ name: "fakeLabels",
47
+ type: "boolean",
48
+ default: "true",
49
+ description: "Show lying volume labels",
50
+ },
51
+ ],
52
+ };
@@ -0,0 +1,2 @@
1
+ import type { ComponentDoc } from "../../types.js";
2
+ export declare const chaosButton: ComponentDoc;
@@ -0,0 +1,48 @@
1
+ export const chaosButton = {
2
+ name: "Chaos Button",
3
+ slug: "chaos-button",
4
+ emoji: "🎯",
5
+ category: "chaos",
6
+ tagline: "Teleports, spawns decoys, and mutates text",
7
+ description: "A button trapped in a container that teleports every 2 seconds, changes its label randomly, requires a random number of clicks (1-10), and spawns fake decoy buttons on each click attempt.",
8
+ usage: `<script lang="ts">
9
+ import { ChaosButton } from '@gigo-ui/components';
10
+ </script>
11
+
12
+ <ChaosButton
13
+ label="Click Me"
14
+ onclick={() => console.log('Caught!')}
15
+ />`,
16
+ props: [
17
+ {
18
+ name: "label",
19
+ type: "string",
20
+ default: "'Click me'",
21
+ description: "Initial button label",
22
+ },
23
+ {
24
+ name: "chaos",
25
+ type: "boolean",
26
+ default: "true",
27
+ description: "Enable chaos behaviors",
28
+ },
29
+ {
30
+ name: "chaosLevel",
31
+ type: "number",
32
+ default: "8",
33
+ description: "Chaos intensity (0-10)",
34
+ },
35
+ {
36
+ name: "onclick",
37
+ type: "() => void",
38
+ default: "undefined",
39
+ description: "Click handler (fires after required clicks met)",
40
+ },
41
+ {
42
+ name: "class",
43
+ type: "string",
44
+ default: "''",
45
+ description: "Additional CSS classes",
46
+ },
47
+ ],
48
+ };
@@ -0,0 +1,2 @@
1
+ import type { ComponentDoc } from "../../types.js";
2
+ export declare const chaosForm: ComponentDoc;
@@ -0,0 +1,68 @@
1
+ export const chaosForm = {
2
+ name: "Chaos Form",
3
+ slug: "chaos-form",
4
+ emoji: "📝",
5
+ category: "chaos",
6
+ tagline: "Corrupts data, shuffles fields, CRT scanlines",
7
+ description: "A form that actively sabotages user input: injects garbage text, shuffles field order, multiplies submit buttons, shows fake validation, auto-submits randomly, and nests additional forms on submit. Features CRT scanline overlay.",
8
+ usage: `<script lang="ts">
9
+ import { ChaosForm } from '@gigo-ui/components';
10
+ </script>
11
+
12
+ <ChaosForm
13
+ autoSubmit
14
+ autoSubmitInterval={10000}
15
+ corruptionInterval={2000}
16
+ onsubmit={(data) => console.log('Submitted:', data)}
17
+ />`,
18
+ props: [
19
+ {
20
+ name: "chaos",
21
+ type: "boolean",
22
+ default: "true",
23
+ description: "Enable chaos behaviors",
24
+ },
25
+ {
26
+ name: "chaosLevel",
27
+ type: "number",
28
+ default: "8",
29
+ description: "Chaos intensity (0-10)",
30
+ },
31
+ {
32
+ name: "onsubmit",
33
+ type: "(data: Record<string, string>) => void",
34
+ default: "undefined",
35
+ description: "Submit callback with form data",
36
+ },
37
+ {
38
+ name: "autoSubmit",
39
+ type: "boolean",
40
+ default: "false",
41
+ description: "Enable random auto-submission",
42
+ },
43
+ {
44
+ name: "autoSubmitInterval",
45
+ type: "number",
46
+ default: "12000",
47
+ description: "Max milliseconds between auto-submits",
48
+ },
49
+ {
50
+ name: "corruptionInterval",
51
+ type: "number",
52
+ default: "3000",
53
+ description: "Milliseconds between data corruption cycles",
54
+ },
55
+ {
56
+ name: "shuffleInterval",
57
+ type: "number",
58
+ default: "4000",
59
+ description: "Milliseconds between field order shuffles",
60
+ },
61
+ {
62
+ name: "class",
63
+ type: "string",
64
+ default: "''",
65
+ description: "Additional CSS classes",
66
+ },
67
+ ],
68
+ };
@@ -0,0 +1,2 @@
1
+ import type { ComponentDoc } from "../../types.js";
2
+ export declare const button: ComponentDoc;
@@ -0,0 +1,66 @@
1
+ export const button = {
2
+ name: "Button",
3
+ slug: "button",
4
+ emoji: "🔘",
5
+ category: "standard",
6
+ tagline: "9 variants with optional chaos behaviors",
7
+ description: "A fully-featured button with 9 style variants (default, destructive, outline, secondary, ghost, link, chaos-primary, chaos-destructive, chaos-nightmare) and optional chaos features like hover escape, text randomization, and multi-click requirements.",
8
+ usage: `<script lang="ts">
9
+ import { Button } from '@gigo-ui/components';
10
+ </script>
11
+
12
+ <Button variant="default">Click me</Button>
13
+ <Button variant="chaos-primary" chaos escapeOnHover>
14
+ Try to click me
15
+ </Button>`,
16
+ props: [
17
+ {
18
+ name: "variant",
19
+ type: "ButtonVariant",
20
+ default: "'default'",
21
+ description: "Visual style variant",
22
+ },
23
+ {
24
+ name: "size",
25
+ type: "ButtonSize",
26
+ default: "'md'",
27
+ description: "Button size",
28
+ },
29
+ {
30
+ name: "chaos",
31
+ type: "boolean",
32
+ default: "false",
33
+ description: "Enable chaos mode",
34
+ },
35
+ {
36
+ name: "disabled",
37
+ type: "boolean",
38
+ default: "false",
39
+ description: "Disabled state",
40
+ },
41
+ {
42
+ name: "escapeOnHover",
43
+ type: "boolean",
44
+ default: "false",
45
+ description: "Button moves away on hover",
46
+ },
47
+ {
48
+ name: "randomizeText",
49
+ type: "boolean",
50
+ default: "false",
51
+ description: "Text changes randomly",
52
+ },
53
+ {
54
+ name: "multiClickRequired",
55
+ type: "number",
56
+ default: "1",
57
+ description: "Clicks needed to trigger onclick",
58
+ },
59
+ {
60
+ name: "onclick",
61
+ type: "() => void",
62
+ default: "undefined",
63
+ description: "Click handler",
64
+ },
65
+ ],
66
+ };
@@ -0,0 +1,2 @@
1
+ import type { ComponentDoc } from "../../types.js";
2
+ export declare const card: ComponentDoc;
@@ -0,0 +1,55 @@
1
+ export const card = {
2
+ name: "Card",
3
+ slug: "card",
4
+ emoji: "🃏",
5
+ category: "standard",
6
+ tagline: "3D tilt card with chaos rotation",
7
+ description: "A content card with interactive 3D tilt on hover using perspective transforms and a dynamic spotlight effect. Chaos features include random rotation, click resistance, and z-index fighting.",
8
+ usage: `<script lang="ts">
9
+ import { Card } from '@gigo-ui/components';
10
+ </script>
11
+
12
+ <Card title="My Card" description="Hover for 3D tilt.">
13
+ {#snippet children()}
14
+ <p>Card content goes here.</p>
15
+ {/snippet}
16
+ </Card>`,
17
+ props: [
18
+ {
19
+ name: "title",
20
+ type: "string",
21
+ default: "''",
22
+ description: "Card title",
23
+ },
24
+ {
25
+ name: "description",
26
+ type: "string",
27
+ default: "''",
28
+ description: "Card description",
29
+ },
30
+ {
31
+ name: "chaos",
32
+ type: "boolean",
33
+ default: "false",
34
+ description: "Enable chaos mode",
35
+ },
36
+ {
37
+ name: "randomRotation",
38
+ type: "boolean",
39
+ default: "false",
40
+ description: "Card rotates randomly",
41
+ },
42
+ {
43
+ name: "resistClicks",
44
+ type: "boolean",
45
+ default: "false",
46
+ description: "Requires 3 clicks to trigger",
47
+ },
48
+ {
49
+ name: "zIndexWar",
50
+ type: "boolean",
51
+ default: "false",
52
+ description: "Random z-index changes",
53
+ },
54
+ ],
55
+ };
@@ -0,0 +1,2 @@
1
+ import type { ComponentDoc } from "../../types.js";
2
+ export declare const carousel: ComponentDoc;
@@ -0,0 +1,63 @@
1
+ export const carousel = {
2
+ name: "Carousel",
3
+ slug: "carousel",
4
+ emoji: "🎠",
5
+ category: "standard",
6
+ tagline: "Slide carousel with lying navigation",
7
+ description: "A content carousel with autoplay that features deceptive navigation buttons (prev does next and vice versa), reverse autoplay direction, random slide jumps, and a fake slide counter that inflates.",
8
+ usage: `<script lang="ts">
9
+ import { Carousel } from '@gigo-ui/components';
10
+
11
+ const slides = [
12
+ { id: '1', content: 'Slide 1' },
13
+ { id: '2', content: 'Slide 2' },
14
+ { id: '3', content: 'Slide 3' },
15
+ ];
16
+ </script>
17
+
18
+ <Carousel {slides} autoplay chaos lyingNavigation />`,
19
+ props: [
20
+ {
21
+ name: "slides",
22
+ type: "CarouselSlide[]",
23
+ default: "[]",
24
+ description: "Slide data array",
25
+ },
26
+ {
27
+ name: "autoplay",
28
+ type: "boolean",
29
+ default: "false",
30
+ description: "Auto-advance slides",
31
+ },
32
+ {
33
+ name: "interval",
34
+ type: "number",
35
+ default: "3000",
36
+ description: "Autoplay interval (ms)",
37
+ },
38
+ {
39
+ name: "chaos",
40
+ type: "boolean",
41
+ default: "false",
42
+ description: "Enable chaos mode",
43
+ },
44
+ {
45
+ name: "lyingNavigation",
46
+ type: "boolean",
47
+ default: "false",
48
+ description: "Prev/Next buttons do the opposite",
49
+ },
50
+ {
51
+ name: "reverseDirection",
52
+ type: "boolean",
53
+ default: "false",
54
+ description: "Autoplay goes backwards",
55
+ },
56
+ {
57
+ name: "randomJumps",
58
+ type: "boolean",
59
+ default: "false",
60
+ description: "Jumps to random slides",
61
+ },
62
+ ],
63
+ };
@@ -0,0 +1,2 @@
1
+ import type { ComponentDoc } from "../../types.js";
2
+ export declare const form: ComponentDoc;
@@ -0,0 +1,57 @@
1
+ export const form = {
2
+ name: "Form",
3
+ slug: "form",
4
+ emoji: "📋",
5
+ category: "standard",
6
+ tagline: "Form that sabotages submissions",
7
+ description: "A composable form with configurable fields that optionally resets random fields, shows fake validation, always fails submission, and shuffles field order periodically.",
8
+ usage: `<script lang="ts">
9
+ import { Form } from '@gigo-ui/components';
10
+ import type { FormField } from '@gigo-ui/components';
11
+
12
+ const fields: FormField[] = [
13
+ { id: 'name', label: 'Name', type: 'text', required: true },
14
+ { id: 'email', label: 'Email', type: 'email', required: true },
15
+ ];
16
+ </script>
17
+
18
+ <Form {fields} chaos randomReset alwaysFails />`,
19
+ props: [
20
+ {
21
+ name: "fields",
22
+ type: "FormField[]",
23
+ default: "[]",
24
+ description: "Form field definitions",
25
+ },
26
+ {
27
+ name: "chaos",
28
+ type: "boolean",
29
+ default: "false",
30
+ description: "Enable chaos mode",
31
+ },
32
+ {
33
+ name: "randomReset",
34
+ type: "boolean",
35
+ default: "false",
36
+ description: "Randomly clears fields",
37
+ },
38
+ {
39
+ name: "fakeValidation",
40
+ type: "boolean",
41
+ default: "false",
42
+ description: "Shows fake errors",
43
+ },
44
+ {
45
+ name: "alwaysFails",
46
+ type: "boolean",
47
+ default: "false",
48
+ description: "Submission always fails",
49
+ },
50
+ {
51
+ name: "shuffleFields",
52
+ type: "boolean",
53
+ default: "false",
54
+ description: "Reorders fields periodically",
55
+ },
56
+ ],
57
+ };
@@ -0,0 +1,2 @@
1
+ import type { ComponentDoc } from "../../types.js";
2
+ export declare const input: ComponentDoc;
@@ -0,0 +1,65 @@
1
+ export const input = {
2
+ name: "Input",
3
+ slug: "input",
4
+ emoji: "✏️",
5
+ category: "standard",
6
+ tagline: "Text input with chaos features",
7
+ description: "A styled text input that optionally deletes characters randomly, escapes when focused, shows fake validation errors, and changes its type (text/password/email) unpredictably.",
8
+ usage: `<script lang="ts">
9
+ import { Input } from '@gigo-ui/components';
10
+ let value = $state('');
11
+ </script>
12
+
13
+ <Input bind:value placeholder="Type here..." />
14
+ <Input bind:value chaos randomDelete fakeValidation />`,
15
+ props: [
16
+ {
17
+ name: "type",
18
+ type: "InputType",
19
+ default: "'text'",
20
+ description: "Input type",
21
+ },
22
+ {
23
+ name: "value",
24
+ type: "string",
25
+ default: "''",
26
+ description: "Current value (bindable)",
27
+ },
28
+ {
29
+ name: "placeholder",
30
+ type: "string",
31
+ default: "''",
32
+ description: "Placeholder text",
33
+ },
34
+ {
35
+ name: "chaos",
36
+ type: "boolean",
37
+ default: "false",
38
+ description: "Enable chaos mode",
39
+ },
40
+ {
41
+ name: "randomDelete",
42
+ type: "boolean",
43
+ default: "false",
44
+ description: "Randomly deletes characters",
45
+ },
46
+ {
47
+ name: "escapeOnFocus",
48
+ type: "boolean",
49
+ default: "false",
50
+ description: "Input moves when focused",
51
+ },
52
+ {
53
+ name: "fakeValidation",
54
+ type: "boolean",
55
+ default: "false",
56
+ description: "Shows fake error messages",
57
+ },
58
+ {
59
+ name: "randomizeType",
60
+ type: "boolean",
61
+ default: "false",
62
+ description: "Changes input type randomly",
63
+ },
64
+ ],
65
+ };
@@ -0,0 +1,2 @@
1
+ import type { ComponentDoc } from "../../types.js";
2
+ export declare const modal: ComponentDoc;
@@ -0,0 +1,63 @@
1
+ export const modal = {
2
+ name: "Modal",
3
+ slug: "modal",
4
+ emoji: "💬",
5
+ category: "standard",
6
+ tagline: "Dialog that fights being closed",
7
+ description: "A glassmorphism modal dialog with chaos features: resists closing (requires 3 attempts), Escape key moves the modal instead of closing it, spawns additional nested modals, and adds fake close buttons.",
8
+ usage: `<script lang="ts">
9
+ import { Button, Modal } from '@gigo-ui/components';
10
+ let open = $state(false);
11
+ </script>
12
+
13
+ <Button onclick={() => (open = true)}>Open Modal</Button>
14
+ <Modal bind:open title="Example" chaos resistClose spawnMoreModals>
15
+ {#snippet children()}
16
+ <p>Try closing this.</p>
17
+ {/snippet}
18
+ </Modal>`,
19
+ props: [
20
+ {
21
+ name: "open",
22
+ type: "boolean",
23
+ default: "false",
24
+ description: "Open state (bindable)",
25
+ },
26
+ {
27
+ name: "title",
28
+ type: "string",
29
+ default: "'Modal'",
30
+ description: "Modal title",
31
+ },
32
+ {
33
+ name: "chaos",
34
+ type: "boolean",
35
+ default: "false",
36
+ description: "Enable chaos mode",
37
+ },
38
+ {
39
+ name: "resistClose",
40
+ type: "boolean",
41
+ default: "false",
42
+ description: "Requires multiple close attempts",
43
+ },
44
+ {
45
+ name: "escapeModal",
46
+ type: "boolean",
47
+ default: "false",
48
+ description: "Escape key offsets instead of closing",
49
+ },
50
+ {
51
+ name: "spawnMoreModals",
52
+ type: "boolean",
53
+ default: "false",
54
+ description: "Spawns nested modals on close",
55
+ },
56
+ {
57
+ name: "fakeCloseButtons",
58
+ type: "boolean",
59
+ default: "false",
60
+ description: "Adds non-functional close buttons",
61
+ },
62
+ ],
63
+ };
@@ -0,0 +1,2 @@
1
+ import type { ComponentDoc } from "../../types.js";
2
+ export declare const navigation: ComponentDoc;