@likable-hair/svelte 0.0.4 → 0.0.5

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,38 +1,26 @@
1
- # create-svelte
1
+ # Likablehair Svelte component library
2
2
 
3
- Everything you need to build a Svelte project, powered by [`create-svelte`](https://github.com/sveltejs/kit/tree/master/packages/create-svelte);
3
+ A simple library that contains svelte components, used by likablehair frontend applications
4
4
 
5
- ## Creating a project
5
+ ## Developer guide
6
6
 
7
- If you're seeing this, you've probably already done this step. Congrats!
7
+ Install dependencies and start a local server to develop components:
8
8
 
9
9
  ```bash
10
- # create a new project in the current directory
11
- npm init svelte@next
10
+ # Install deps
11
+ npm install
12
12
 
13
- # create a new project in my-app
14
- npm init svelte@next my-app
15
- ```
16
-
17
- > Note: the `@next` is temporary
18
-
19
- ## Developing
20
-
21
- Once you've created a project and installed dependencies with `npm install` (or `pnpm install` or `yarn`), start a development server:
22
-
23
- ```bash
13
+ # Start local server
24
14
  npm run dev
25
15
 
26
16
  # or start the server and open the app in a new browser tab
27
17
  npm run dev -- --open
28
18
  ```
29
19
 
30
- ## Building
31
-
32
- Before creating a production version of your app, install an [adapter](https://kit.svelte.dev/docs#adapters) for your target environment. Then:
20
+ ## Publisher guide
33
21
 
34
- ```bash
35
- npm run build
36
- ```
22
+ To publish the package make the following steps:
37
23
 
38
- > You can preview the built app with `npm run preview`, regardless of whether you installed an adapter. This should _not_ be used to serve your app in production.
24
+ - edit the package.json version, then commit all the changes
25
+ - run `npm run package`, svelte will generate a package folder with all the necessary stuff inside
26
+ - make sure you're logged in with your npm account, then run `npm publish ./package --access=public`
@@ -0,0 +1,102 @@
1
+ <script >export let type = 'default';
2
+ export let icon = undefined;
3
+ export let iconSize = 15;
4
+ let clazz = '';
5
+ export { clazz as class };
6
+ $: position = !!$$slots.append ? 'relative' : undefined;
7
+ $: cssVariables = Object.entries({
8
+ '--icon-button-height': (iconSize + 15) + 'pt',
9
+ '--icon-button-width': (iconSize + 15) + 'pt',
10
+ '--button-position': position
11
+ }).filter(([key]) => key.startsWith('--'))
12
+ .reduce((css, [key, value]) => {
13
+ return `${css}${key}: ${value};`;
14
+ }, '');
15
+ import '$lib/common/tailwind.css';
16
+ import Icon from '../media/Icon.svelte';
17
+ </script>
18
+
19
+ <div
20
+ class="button {clazz}"
21
+ class:button-default={type === 'default'}
22
+ class:button-text={type === 'text'}
23
+ class:button-icon={type === 'icon'}
24
+ on:click
25
+ style={cssVariables}
26
+ >
27
+ {#if !!icon}
28
+ <Icon name={icon} size={iconSize}></Icon>
29
+ {:else}
30
+ <slot></slot>
31
+ {/if}
32
+ {#if $$slots.append}
33
+ <span class="append-item">
34
+ <slot name="append">
35
+
36
+ </slot>
37
+ </span>
38
+ {/if}
39
+ </div>
40
+
41
+ <style>
42
+ .append-item {
43
+ position: absolute;
44
+ right: 0px;
45
+ }
46
+
47
+ .button {
48
+ overflow: hidden;
49
+ position: var(--button-position);
50
+ width: var(--width, fit-content);
51
+ height: var(--height, fit-content);
52
+ text-align: var(--text-align, center);
53
+ cursor: var(--cursor, pointer);
54
+ padding: var(--padding, 5px);
55
+ font-size: var(--font-size);
56
+ }
57
+
58
+ .button-default {
59
+ transition: background-color 200ms;
60
+ color: var(--color);
61
+ background-color: var(--background-color);
62
+ outline: 0;
63
+ border: 0;
64
+ border-radius: var(--border-radius, 0.25rem);
65
+ box-shadow: var(--box-shadow, 0 0 0.5rem rgba(0, 0, 0, 0.3));
66
+ }
67
+
68
+ .button-default:hover {
69
+ background-color: var(--hover-background-color, var(--background-color));
70
+ }
71
+
72
+ .button-text {
73
+ color: var(--color);
74
+ transition: background-color 200ms;
75
+ text-transform: uppercase;
76
+ font-weight: 600;
77
+ outline: 0;
78
+ border: 0;
79
+ border-radius: var(--border-radius, 0.25rem);
80
+ }
81
+
82
+ .button-text:hover {
83
+ background-color: var(--hover-background-color, transparent);
84
+ }
85
+
86
+ .button-icon {
87
+ color: var(--color);
88
+ transition: background-color 200ms;
89
+ outline: 0;
90
+ border: 0;
91
+ border-radius: var(--border-radius, 50%);
92
+ height: var(--icon-button-height) !important;
93
+ width: var(--icon-button-width) !important;
94
+ display: flex;
95
+ align-items: center;
96
+ justify-content: center;
97
+ }
98
+
99
+ .button-icon:hover {
100
+ background-color: var(--hover-background-color, transparent);
101
+ }
102
+ </style>
@@ -0,0 +1,25 @@
1
+ import { SvelteComponentTyped } from "svelte";
2
+ import '$lib/common/tailwind.css';
3
+ declare const __propDef: {
4
+ props: {
5
+ type?: 'default' | 'text' | 'icon';
6
+ icon?: string;
7
+ iconSize?: number;
8
+ class?: string;
9
+ };
10
+ events: {
11
+ click: MouseEvent;
12
+ } & {
13
+ [evt: string]: CustomEvent<any>;
14
+ };
15
+ slots: {
16
+ default: {};
17
+ append: {};
18
+ };
19
+ };
20
+ export declare type ButtonProps = typeof __propDef.props;
21
+ export declare type ButtonEvents = typeof __propDef.events;
22
+ export declare type ButtonSlots = typeof __propDef.slots;
23
+ export default class Button extends SvelteComponentTyped<ButtonProps, ButtonEvents, ButtonSlots> {
24
+ }
25
+ export {};
@@ -88,6 +88,7 @@ import '$lib/common/tailwind.css';
88
88
  .fieldset-boxed {
89
89
  border: 2px solid var(--final-color);
90
90
  padding: 5px;
91
+ border-radius: var(--border-radius, 0);
91
92
  }
92
93
 
93
94
  .input-boxed {
package/index.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ declare const _default: {};
2
+ export default _default;
package/index.js ADDED
@@ -0,0 +1 @@
1
+ export default {};
package/media/Icon.svelte CHANGED
@@ -1,6 +1,9 @@
1
- <script >export let name, size = 15;
1
+ <script >export let name, size = 15, color = '';
2
+ let clazz = '';
3
+ export { clazz as class };
2
4
  $: cssVariables = Object.entries({
3
- '--size': size + 'pt'
5
+ '--size': size + 'pt',
6
+ '--color': color
4
7
  }).filter(([key]) => key.startsWith('--'))
5
8
  .reduce((css, [key, value]) => {
6
9
  return `${css}${key}: ${value};`;
@@ -11,11 +14,12 @@ import '../common/materialDesign.css';
11
14
  <style>
12
15
  .icon {
13
16
  font-size: var(--size);
17
+ color: var(--color);
14
18
  }
15
19
  </style>
16
20
 
17
21
  <span
18
22
  style={cssVariables}
19
- class="icon mdi {name}"
23
+ class="icon mdi {name} {clazz}"
20
24
  ></span>
21
25
 
@@ -4,6 +4,8 @@ declare const __propDef: {
4
4
  props: {
5
5
  name: string;
6
6
  size?: number;
7
+ color?: string;
8
+ class?: string;
7
9
  };
8
10
  events: {
9
11
  [evt: string]: CustomEvent<any>;
@@ -1,4 +1,5 @@
1
1
  <script >export let title = "";
2
+ export let items = [];
2
3
  export let hideOnScroll = true;
3
4
  let scrollY, lastScrollY, visible = true;
4
5
  function handleScroll() {
@@ -23,21 +24,34 @@ import Navigator from './Navigator.svelte';
23
24
 
24
25
  <nav
25
26
  class="
26
- shadow-md fixed h-12 w-screen -top-12 transition-all
27
+ shadow-md sticky h-12 -top-12 transition-all
27
28
  flex flex-wrap items-center
29
+ header-menu-container
28
30
  "
29
31
  class:top-0={visible}
30
32
  >
31
- <div class="flex-none w-14 h-12">
32
-
33
- </div>
34
- <div class="grow">
35
- <span class="text-2xl">{title}</span>
33
+ {#if $$slots.prepend}
34
+ <div class="h-12 flex-none">
35
+ <slot name="prepend"></slot>
36
+ </div>
37
+ {/if}
38
+ <div class="grow ml-1">
39
+ <slot name="title">
40
+ <span class="text-2xl">{title}</span>
41
+ </slot>
36
42
  </div>
37
43
  <div>
38
- <Navigator></Navigator>
44
+ <Navigator
45
+ items={items}
46
+ ></Navigator>
39
47
  </div>
48
+ <slot name="append"></slot>
40
49
  </nav>
41
50
 
42
51
  <style>
52
+ .header-menu-container {
53
+ background-color: var(--background-color, white);
54
+ color: var(--color);
55
+ width: var(--width, 100vw)
56
+ }
43
57
  </style>
@@ -1,14 +1,20 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
+ import type { Item } from "./Navigator.svelte";
2
3
  import '$lib/common/tailwind.css';
3
4
  declare const __propDef: {
4
5
  props: {
5
6
  title?: string;
7
+ items?: Item[];
6
8
  hideOnScroll?: boolean;
7
9
  };
8
10
  events: {
9
11
  [evt: string]: CustomEvent<any>;
10
12
  };
11
- slots: {};
13
+ slots: {
14
+ prepend: {};
15
+ title: {};
16
+ append: {};
17
+ };
12
18
  };
13
19
  export declare type HeaderMenuProps = typeof __propDef.props;
14
20
  export declare type HeaderMenuEvents = typeof __propDef.events;
@@ -1,29 +1,6 @@
1
- <script >let items = [
2
- {
3
- title: 'Works',
4
- name: 'works',
5
- },
6
- {
7
- title: 'Biography',
8
- name: 'biography',
9
- },
10
- {
11
- title: 'Publications',
12
- name: 'publications',
13
- },
14
- {
15
- title: 'Blog',
16
- name: 'blog',
17
- },
18
- {
19
- title: 'News',
20
- name: 'news',
21
- },
22
- {
23
- title: 'Contact',
24
- name: 'contact',
25
- },
26
- ];
1
+ <script context="module" ></script>
2
+
3
+ <script >export let items = [];
27
4
  </script>
28
5
 
29
6
  <div class="flex">
@@ -1,6 +1,13 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
+ export declare type Item = {
3
+ title: string;
4
+ name: string;
5
+ url?: string;
6
+ };
2
7
  declare const __propDef: {
3
- props: {};
8
+ props: {
9
+ items?: Item[];
10
+ };
4
11
  events: {
5
12
  [evt: string]: CustomEvent<any>;
6
13
  };
@@ -0,0 +1,86 @@
1
+ <script context="module"></script>
2
+
3
+ <script >import { onMount } from 'svelte';
4
+ export let tabs = [];
5
+ export let selected = undefined;
6
+ export let mandatory = true;
7
+ let tabButtons = {};
8
+ onMount(() => {
9
+ if (mandatory && !selected && tabs.length > 0)
10
+ selected = tabs[0].name;
11
+ if (!!selected) {
12
+ setBookmarkPosition();
13
+ }
14
+ });
15
+ let bookmarkWidth = 0, bookmarkLeft = 0;
16
+ function handleTabClick(clickedTab) {
17
+ selected = clickedTab.name;
18
+ setBookmarkPosition();
19
+ }
20
+ function setBookmarkPosition() {
21
+ let tabButton = tabButtons[selected];
22
+ bookmarkWidth = tabButton.offsetWidth - 10;
23
+ bookmarkLeft = tabButton.offsetLeft + 5;
24
+ }
25
+ $: cssVariables = Object.entries({
26
+ '--bookmark-left': bookmarkLeft + 'px',
27
+ '--bookmark-width': bookmarkWidth + 'px',
28
+ }).filter(([key]) => key.startsWith('--'))
29
+ .reduce((css, [key, value]) => {
30
+ return `${css}${key}: ${value};`;
31
+ }, '');
32
+ import '$lib/common/tailwind.css';
33
+ </script>
34
+
35
+ <div
36
+ class="tab-switcher-container flex relative"
37
+ style={cssVariables}
38
+ >
39
+ {#each tabs as tab}
40
+ <div
41
+ class="mx-3 p-2 cursor-pointer"
42
+ class:selected-tab={tab.name == selected}
43
+ on:click={() => handleTabClick(tab)}
44
+ bind:this={tabButtons[tab.name]}
45
+ >
46
+ {tab.label}
47
+ </div>
48
+ {/each}
49
+ <span
50
+ class="bookmark"
51
+ ></span>
52
+ <span class="horizontal-guide"></span>
53
+ </div>
54
+
55
+ <style>
56
+ .tab-switcher-container {
57
+ width: var(--width)
58
+ }
59
+
60
+ .selected-tab {
61
+ color: var(--color, rgb(51 65 85));
62
+ }
63
+
64
+ .horizontal-guide {
65
+ position: absolute;
66
+ width: var(--width, 100%);
67
+ z-index: 5;
68
+ bottom: 0px;
69
+ height: 1px;
70
+ background-color: var(--color, rgb(51 65 85));
71
+ opacity: 20%;
72
+ }
73
+
74
+ .bookmark {
75
+ position: absolute;
76
+ bottom: 0px;
77
+ height: 2px;
78
+ border-radius: 0.125rem;
79
+ z-index: 10;
80
+ background-color: var(--bookmark-color, var(--color, rgb(51 65 85)));
81
+ transition: left 400ms, width 400ms;
82
+ left: var(--bookmark-left);
83
+ width: var(--bookmark-width)
84
+ }
85
+
86
+ </style>
@@ -0,0 +1,24 @@
1
+ import { SvelteComponentTyped } from "svelte";
2
+ export declare type Tab = {
3
+ name: string;
4
+ label: string;
5
+ icon?: string;
6
+ };
7
+ import '$lib/common/tailwind.css';
8
+ declare const __propDef: {
9
+ props: {
10
+ tabs?: Tab[];
11
+ selected?: string;
12
+ mandatory?: boolean;
13
+ };
14
+ events: {
15
+ [evt: string]: CustomEvent<any>;
16
+ };
17
+ slots: {};
18
+ };
19
+ export declare type TabSwitcherProps = typeof __propDef.props;
20
+ export declare type TabSwitcherEvents = typeof __propDef.events;
21
+ export declare type TabSwitcherSlots = typeof __propDef.slots;
22
+ export default class TabSwitcher extends SvelteComponentTyped<TabSwitcherProps, TabSwitcherEvents, TabSwitcherSlots> {
23
+ }
24
+ export {};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@likable-hair/svelte",
3
3
  "description": "A Svelte component for likablehair",
4
- "version": "0.0.4",
4
+ "version": "0.0.5",
5
5
  "devDependencies": {
6
6
  "@sveltejs/adapter-auto": "next",
7
7
  "@sveltejs/kit": "next",
@@ -25,6 +25,7 @@
25
25
  },
26
26
  "exports": {
27
27
  "./package.json": "./package.json",
28
+ "./buttons/Button.svelte": "./buttons/Button.svelte",
28
29
  "./common/Card.svelte": "./common/Card.svelte",
29
30
  "./common/IntersectionObserver.svelte": "./common/IntersectionObserver.svelte",
30
31
  "./common/materialDesign.css": "./common/materialDesign.css",
@@ -34,6 +35,7 @@
34
35
  "./enums/elevation.enum": "./enums/elevation.enum.js",
35
36
  "./enums": "./enums/index.js",
36
37
  "./forms/Textfield.svelte": "./forms/Textfield.svelte",
38
+ ".": "./index.js",
37
39
  "./loaders/Skeleton.svelte": "./loaders/Skeleton.svelte",
38
40
  "./loaders/sectionType": "./loaders/sectionType.js",
39
41
  "./media/Carousel.svelte": "./media/Carousel.svelte",
@@ -42,8 +44,11 @@
42
44
  "./media/ImageGrid.svelte": "./media/ImageGrid.svelte",
43
45
  "./navigation/HeaderMenu.svelte": "./navigation/HeaderMenu.svelte",
44
46
  "./navigation/Navigator.svelte": "./navigation/Navigator.svelte",
47
+ "./navigation/TabSwitcher.svelte": "./navigation/TabSwitcher.svelte",
45
48
  "./shop/ProductCard.svelte": "./shop/ProductCard.svelte",
46
49
  "./shop/ProductsGrid.svelte": "./shop/ProductsGrid.svelte",
47
- "./timeline/ScrollTimeLine.svelte": "./timeline/ScrollTimeLine.svelte"
48
- }
50
+ "./timeline/ScrollTimeLine.svelte": "./timeline/ScrollTimeLine.svelte",
51
+ "./timeline/SimpleTimeLine.svelte": "./timeline/SimpleTimeLine.svelte"
52
+ },
53
+ "svelte": "./index.js"
49
54
  }
@@ -0,0 +1 @@
1
+ <div>Simple timeline</div>
@@ -0,0 +1,19 @@
1
+ /** @typedef {typeof __propDef.props} SimpleTimeLineProps */
2
+ /** @typedef {typeof __propDef.events} SimpleTimeLineEvents */
3
+ /** @typedef {typeof __propDef.slots} SimpleTimeLineSlots */
4
+ export default class SimpleTimeLine extends SvelteComponentTyped<{}, {
5
+ [evt: string]: CustomEvent<any>;
6
+ }, {}> {
7
+ }
8
+ export type SimpleTimeLineProps = typeof __propDef.props;
9
+ export type SimpleTimeLineEvents = typeof __propDef.events;
10
+ export type SimpleTimeLineSlots = typeof __propDef.slots;
11
+ import { SvelteComponentTyped } from "svelte";
12
+ declare const __propDef: {
13
+ props: {};
14
+ events: {
15
+ [evt: string]: CustomEvent<any>;
16
+ };
17
+ slots: {};
18
+ };
19
+ export {};