fluid-ui-svelte 0.0.4 → 0.0.6

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.
package/README.md CHANGED
@@ -1,3 +1,105 @@
1
1
  # Fluid UI for Svelte/SvelteKit
2
2
 
3
- Under development
3
+ Fluid UI is a UI library with minimal styling and layout. All of the primitives are basic abstractions of html elements and components are just building blocks for the actual component. You will need to build components yourself using those building blocks.
4
+
5
+ # Getting Started
6
+
7
+ Install the library.
8
+ ```
9
+ npm i fluid-ui-svelte
10
+ ```
11
+
12
+ Import a component to your UI.
13
+ ```
14
+ <script lang="ts">
15
+ import '../app.css';
16
+ import {Button} from '$lib/index.js';
17
+ </script>
18
+
19
+ <Button></Button>
20
+ ```
21
+ Success :)
22
+
23
+ # Tailwind "app.css" Template.
24
+ ```
25
+ @tailwind base;
26
+ @tailwind components;
27
+ @tailwind utilities;
28
+
29
+
30
+ .fluid-audio {
31
+ @apply m-2 p-2
32
+ }
33
+
34
+ .fluid-button {
35
+ @apply m-2 p-2 disabled:bg-opacity-25
36
+ }
37
+
38
+ .fluid-container {
39
+ @apply m-2 p-2
40
+ }
41
+
42
+ .fluid-form {
43
+ @apply m-2 p-2
44
+ }
45
+
46
+ .fluid-image {
47
+ @apply m-2 p-2
48
+ }
49
+
50
+ .fluid-color-input {
51
+ @apply m-2 p-2
52
+ }
53
+
54
+ .fluid-date-time-input {
55
+ @apply m-2 p-2
56
+ }
57
+
58
+ .fluid-file-input {
59
+ @apply m-2 p-2
60
+ }
61
+
62
+ .fluid-color-input {
63
+ @apply m-2 p-2
64
+ }
65
+
66
+ .fluid-color-input {
67
+ @apply m-2 p-2
68
+ }
69
+
70
+ .fluid-label {
71
+ @apply m-2 p-2
72
+ }
73
+
74
+ .fluid-link {
75
+ @apply m-2 p-2
76
+ }
77
+
78
+ .fluid-select {
79
+ @apply m-2 p-2
80
+ }
81
+
82
+ .fluid-option {
83
+ @apply m-2 p-2
84
+ }
85
+
86
+ .fluid-table {
87
+ @apply m-2 p-2
88
+ }
89
+
90
+ .fluid-text {
91
+ @apply m-2 p-2
92
+ }
93
+
94
+ .fluid-video {
95
+ @apply m-2 p-2
96
+ }
97
+
98
+ .fluid-avatar {
99
+ @apply m-2 p-2 rounded-full w-full h-full aspect-square
100
+ }
101
+
102
+ .fluid-toggle {
103
+ @apply bg-gray after:bg-graylight after:border-graylight w-11 h-6 rounded-full after:absolute after:top-[2px] after:left-[2px] after:border after:rounded-full after:h-5 after:w-5 after:transition-all
104
+ }
105
+ ```
@@ -1,5 +1,5 @@
1
1
  <script>import Image from "../../primitives/Image/Image.svelte";
2
- export let avatarClass = "rounded-full w-full h-full aspect-square";
2
+ export let avatarClass = "";
3
3
  export let defaultClass = "fluid-avatar";
4
4
  export let overrideClass = false;
5
5
  export let avatarUrl;
@@ -1,12 +1,25 @@
1
1
  <script>import Container from "../../primitives/Container/Container.svelte";
2
2
  export let modalClass = "absolute w-screen h-screen left-0 bottom-0 bg-gray flex flex-col bg-opacity-50 justify-center items-center z-0";
3
3
  export let isVisible = true;
4
+ const closeOnEscape = (event) => {
5
+ if (event.key == "Escape") {
6
+ isVisible = false;
7
+ }
8
+ };
4
9
  </script>
5
10
 
6
- <Container
7
- containerType="div"
8
- overrideClass={true}
9
- containerClass={(isVisible ? 'visible ' : 'hidden ') + modalClass}
10
- >
11
- <slot />
12
- </Container>
11
+ {#if isVisible}
12
+ <Container
13
+ containerType="div"
14
+ overrideClass={true}
15
+ containerClass={modalClass}
16
+ registerMount={() => {
17
+ document.addEventListener('keydown', closeOnEscape);
18
+ }}
19
+ registerDestroy={() => {
20
+ document.removeEventListener('keydown', closeOnEscape);
21
+ }}
22
+ >
23
+ <slot />
24
+ </Container>
25
+ {/if}
package/dist/index.d.ts CHANGED
@@ -7,6 +7,7 @@ export { default as ColorInput } from "./primitives/Input/ColorInput.svelte";
7
7
  export { default as DateTimeInput } from "./primitives/Input/DateTimeInput.svelte";
8
8
  export { default as FileInput } from "./primitives/Input/FileInput.svelte";
9
9
  export { default as TextInput } from "./primitives/Input/TextInput.svelte";
10
+ export { default as PasswordInput } from "./primitives/Input/PasswordInput.svelte";
10
11
  export { default as ToggleInput } from "./primitives/Input/ToggleInput.svelte";
11
12
  export { default as Label } from "./primitives/Label/Label.svelte";
12
13
  export { default as Link } from "./primitives/Link/Link.svelte";
package/dist/index.js CHANGED
@@ -8,6 +8,7 @@ export { default as ColorInput } from './primitives/Input/ColorInput.svelte';
8
8
  export { default as DateTimeInput } from './primitives/Input/DateTimeInput.svelte';
9
9
  export { default as FileInput } from './primitives/Input/FileInput.svelte';
10
10
  export { default as TextInput } from './primitives/Input/TextInput.svelte';
11
+ export { default as PasswordInput } from './primitives/Input/PasswordInput.svelte';
11
12
  export { default as ToggleInput } from './primitives/Input/ToggleInput.svelte';
12
13
  export { default as Label } from './primitives/Label/Label.svelte';
13
14
  export { default as Link } from "./primitives/Link/Link.svelte";
@@ -5,9 +5,22 @@ export let buttonType = "button";
5
5
  export let isDisabled = false;
6
6
  export let buttonName = "";
7
7
  export let buttonValue = "";
8
+ export let registerMount = () => {
9
+ };
10
+ export let registerDestroy = () => {
11
+ };
12
+ function registerAction(node) {
13
+ registerMount(node);
14
+ return {
15
+ destroy() {
16
+ registerDestroy(node);
17
+ }
18
+ };
19
+ }
8
20
  </script>
9
21
 
10
22
  <button
23
+ use:registerAction
11
24
  on:click
12
25
  type={buttonType}
13
26
  class={overrideClass ? buttonClass : defaultClass + ' ' + buttonClass}
@@ -9,6 +9,8 @@ declare const __propDef: {
9
9
  isDisabled?: boolean | undefined;
10
10
  buttonName?: string | undefined;
11
11
  buttonValue?: string | undefined;
12
+ registerMount?: ((node: Node) => void) | undefined;
13
+ registerDestroy?: ((node: Node) => void) | undefined;
12
14
  };
13
15
  events: {
14
16
  click: MouseEvent;
@@ -2,10 +2,23 @@
2
2
  export let defaultClass = "fluid-container";
3
3
  export let overrideClass = false;
4
4
  export let containerType = "div";
5
+ export let registerMount = () => {
6
+ };
7
+ export let registerDestroy = () => {
8
+ };
9
+ function registerAction(node) {
10
+ registerMount(node);
11
+ return {
12
+ destroy() {
13
+ registerDestroy();
14
+ }
15
+ };
16
+ }
5
17
  </script>
6
18
 
7
19
  {#if containerType == 'div'}
8
20
  <div
21
+ use:registerAction
9
22
  class={overrideClass ? containerClass : defaultClass + ' ' + containerClass}
10
23
  {...$$restProps}
11
24
  >
@@ -13,6 +26,7 @@ export let containerType = "div";
13
26
  </div>
14
27
  {:else if containerType == 'section'}
15
28
  <section
29
+ use:registerAction
16
30
  class={overrideClass ? containerClass : defaultClass + ' ' + containerClass}
17
31
  {...$$restProps}
18
32
  >
@@ -20,6 +34,7 @@ export let containerType = "div";
20
34
  </section>
21
35
  {:else if containerType == 'nav'}
22
36
  <nav
37
+ use:registerAction
23
38
  class={overrideClass ? containerClass : defaultClass + ' ' + containerClass}
24
39
  {...$$restProps}
25
40
  >
@@ -27,6 +42,7 @@ export let containerType = "div";
27
42
  </nav>
28
43
  {:else if containerType == 'footer'}
29
44
  <nav
45
+ use:registerAction
30
46
  class={overrideClass ? containerClass : defaultClass + ' ' + containerClass}
31
47
  {...$$restProps}
32
48
  >
@@ -6,6 +6,8 @@ declare const __propDef: {
6
6
  defaultClass?: string | undefined;
7
7
  overrideClass?: boolean | undefined;
8
8
  containerType?: "div" | "section" | "nav" | "footer" | undefined;
9
+ registerMount?: Function | undefined;
10
+ registerDestroy?: Function | undefined;
9
11
  };
10
12
  events: {
11
13
  [evt: string]: CustomEvent<any>;
@@ -1,9 +1,11 @@
1
1
  <script>export let inputClass = "input";
2
2
  export let defaultClass = "fluid-color-input";
3
3
  export let overrideClass = false;
4
+ export let value = "";
4
5
  </script>
5
6
 
6
7
  <input
8
+ bind:value
7
9
  type="color"
8
10
  class={overrideClass ? inputClass : defaultClass + ' ' + inputClass}
9
11
  {...$$restProps}
@@ -5,6 +5,7 @@ declare const __propDef: {
5
5
  inputClass?: string | undefined;
6
6
  defaultClass?: string | undefined;
7
7
  overrideClass?: boolean | undefined;
8
+ value?: string | undefined;
8
9
  };
9
10
  events: {
10
11
  [evt: string]: CustomEvent<any>;
@@ -1,12 +1,12 @@
1
- <script>export let inputType = "date";
2
- export let inputClass = "";
1
+ <script>export let inputClass = "";
3
2
  export let defaultClass = "fluid-date-time-input";
4
3
  export let overrideClass = false;
4
+ export let value = "";
5
5
  </script>
6
6
 
7
7
  <input
8
- type={inputType}
8
+ bind:value
9
+ type="date"
9
10
  class={overrideClass ? inputClass : defaultClass + ' ' + inputClass}
10
- {...$$restProps}
11
11
  />
12
12
  a
@@ -1,11 +1,10 @@
1
1
  import { SvelteComponent } from "svelte";
2
2
  declare const __propDef: {
3
3
  props: {
4
- [x: string]: any;
5
- inputType?: "date" | "datetime-local" | "month" | "time" | "week" | undefined;
6
4
  inputClass?: string | undefined;
7
5
  defaultClass?: string | undefined;
8
6
  overrideClass?: boolean | undefined;
7
+ value?: string | undefined;
9
8
  };
10
9
  events: {
11
10
  [evt: string]: CustomEvent<any>;
@@ -1,11 +1,6 @@
1
- <script>export let inputType = "file";
2
- export let inputClass = "";
1
+ <script>export let inputClass = "";
3
2
  export let defaultClass = "fluid-file-input";
4
3
  export let overrideClass = false;
5
4
  </script>
6
5
 
7
- <input
8
- type={inputType}
9
- class={overrideClass ? inputClass : defaultClass + ' ' + inputClass}
10
- {...$$restProps}
11
- />
6
+ <input type="file" class={overrideClass ? inputClass : defaultClass + ' ' + inputClass} />
@@ -1,8 +1,6 @@
1
1
  import { SvelteComponent } from "svelte";
2
2
  declare const __propDef: {
3
3
  props: {
4
- [x: string]: any;
5
- inputType?: "file" | "image" | undefined;
6
4
  inputClass?: string | undefined;
7
5
  defaultClass?: string | undefined;
8
6
  overrideClass?: boolean | undefined;
@@ -0,0 +1,11 @@
1
+ <script>export let inputClass = "";
2
+ export let defaultClass = "fluid-text-input";
3
+ export let overrideClass = false;
4
+ export let value = "";
5
+ </script>
6
+
7
+ <input
8
+ bind:value
9
+ type="password"
10
+ class={overrideClass ? inputClass : defaultClass + ' ' + inputClass}
11
+ />
@@ -0,0 +1,19 @@
1
+ import { SvelteComponent } from "svelte";
2
+ declare const __propDef: {
3
+ props: {
4
+ inputClass?: string | undefined;
5
+ defaultClass?: string | undefined;
6
+ overrideClass?: boolean | undefined;
7
+ value?: string | undefined;
8
+ };
9
+ events: {
10
+ [evt: string]: CustomEvent<any>;
11
+ };
12
+ slots: {};
13
+ };
14
+ export type PasswordInputProps = typeof __propDef.props;
15
+ export type PasswordInputEvents = typeof __propDef.events;
16
+ export type PasswordInputSlots = typeof __propDef.slots;
17
+ export default class PasswordInput extends SvelteComponent<PasswordInputProps, PasswordInputEvents, PasswordInputSlots> {
18
+ }
19
+ export {};
@@ -1,11 +1,11 @@
1
- <script>export let inputType = "text";
2
- export let inputClass = "";
1
+ <script>export let inputClass = "";
3
2
  export let defaultClass = "fluid-text-input";
4
3
  export let overrideClass = false;
4
+ export let value = "";
5
5
  </script>
6
6
 
7
7
  <input
8
- type={inputType}
8
+ bind:value
9
+ type="text"
9
10
  class={overrideClass ? inputClass : defaultClass + ' ' + inputClass}
10
- {...$$restProps}
11
11
  />
@@ -1,11 +1,10 @@
1
1
  import { SvelteComponent } from "svelte";
2
2
  declare const __propDef: {
3
3
  props: {
4
- [x: string]: any;
5
- inputType?: "number" | "email" | "password" | "search" | "tel" | "text" | "url" | undefined;
6
4
  inputClass?: string | undefined;
7
5
  defaultClass?: string | undefined;
8
6
  overrideClass?: boolean | undefined;
7
+ value?: string | undefined;
9
8
  };
10
9
  events: {
11
10
  [evt: string]: CustomEvent<any>;
@@ -1,11 +1,12 @@
1
- <script>export let inputType = "checkbox";
2
- export let inputClass = "input";
3
- export let defaultClass = "fluid-toggle-input";
4
- export let overrideClass = false;
1
+ <script>export let defaultClass = "fluid-toggle";
2
+ export let isChecked = false;
5
3
  </script>
6
4
 
7
- <input
8
- type={inputType}
9
- class={overrideClass ? inputClass : defaultClass + ' ' + inputClass}
10
- {...$$restProps}
11
- />
5
+ <label class="relative inline-flex items-center cursor-pointer">
6
+ <input type="checkbox" bind:value={isChecked} class="sr-only peer" />
7
+ <div
8
+ class={defaultClass +
9
+ ' ' +
10
+ "peer peer-checked:after:translate-x-full peer-checked:after:border-white after:content-[''] peer-checked:bg-green"}
11
+ />
12
+ </label>
@@ -1,11 +1,8 @@
1
1
  import { SvelteComponent } from "svelte";
2
2
  declare const __propDef: {
3
3
  props: {
4
- [x: string]: any;
5
- inputType?: "checkbox" | "radio" | undefined;
6
- inputClass?: string | undefined;
7
4
  defaultClass?: string | undefined;
8
- overrideClass?: boolean | undefined;
5
+ isChecked?: boolean | undefined;
9
6
  };
10
7
  events: {
11
8
  [evt: string]: CustomEvent<any>;
package/package.json CHANGED
@@ -1,7 +1,11 @@
1
1
  {
2
2
  "name": "fluid-ui-svelte",
3
- "version": "0.0.4",
3
+ "version": "0.0.6",
4
4
  "description": "Unopinionated UI library for Svelte.",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "https://github.com/ayazemre/fluid-ui-svelte.git"
8
+ },
5
9
  "scripts": {
6
10
  "dev": "vite dev",
7
11
  "build": "vite build && npm run package",