@fluidattacks/design 1.2.15 → 1.2.17

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.
@@ -83,6 +83,8 @@ interface DefaultTheme {
83
83
  type TSpacing = keyof DefaultTheme["spacing"];
84
84
  type TShadows = keyof DefaultTheme["shadows"];
85
85
  type TIconSize = "xl" | "lg" | "md" | "sm" | "xs" | "xxs";
86
+ type TMode = "dark" | "light";
87
+ type TResolution = "desktop" | "mobile";
86
88
  interface IPaddingModifiable {
87
89
  padding?: [TSpacing, TSpacing, TSpacing, TSpacing];
88
90
  px?: TSpacing;
@@ -167,4 +169,4 @@ interface IInteractionModifiable {
167
169
  shadowHover?: TShadows;
168
170
  }
169
171
  type TModifiable = IBorderModifiable & IDisplayModifiable & IInteractionModifiable & IMarginModifiable & IPaddingModifiable & IPositionModifiable & ITextModifiable;
170
- export type { DefaultTheme as ThemeType, TSpacing, IPaddingModifiable, IMarginModifiable, IDisplayModifiable, IIconModifiable, ITextModifiable, IInteractionModifiable, IPositionModifiable, IBorderModifiable, TIconSize, TModifiable, };
172
+ export type { DefaultTheme as ThemeType, TSpacing, IPaddingModifiable, IMarginModifiable, IDisplayModifiable, IIconModifiable, ITextModifiable, IInteractionModifiable, IPositionModifiable, IBorderModifiable, TIconSize, TModifiable, TMode, TResolution, };
@@ -0,0 +1,3 @@
1
+ import { IAccordionContentProps } from './types';
2
+ declare const AccordionContent: ({ isSelectedAndOpen, item, variant, render, }: Readonly<IAccordionContentProps>) => JSX.Element | null;
3
+ export { AccordionContent };
@@ -0,0 +1,15 @@
1
+ import { IAccordionItemProps, TVariant } from '../types';
2
+ /**
3
+ * Accordion Content props
4
+ * @property {boolean} [isSelectedAndOpen] If item in accordion is selected and open.
5
+ * @property {IAccordionItemProps} [item] Accordion item.
6
+ * @property {TVariant} [variant] Type of accordion.
7
+ * @property {boolean} [render] Render condition.
8
+ */
9
+ interface IAccordionContentProps {
10
+ isSelectedAndOpen: boolean;
11
+ item: IAccordionItemProps;
12
+ variant: TVariant;
13
+ render: boolean;
14
+ }
15
+ export type { IAccordionContentProps };
@@ -0,0 +1,6 @@
1
+ import { Meta } from '@storybook/react';
2
+ import { IAccordionProps } from '../types';
3
+ declare const config: Meta;
4
+ declare const Default: import('@storybook/csf').AnnotatedStoryFn<import('@storybook/react').ReactRenderer, IAccordionProps>;
5
+ export { Default };
6
+ export default config;
@@ -1,29 +1,31 @@
1
- import { ICloudImageProps } from '../cloud-image';
2
- type TVariant = "progress" | "simple";
1
+ type TVariant = "progress" | "simple" | "platform";
2
+ type TAligned = "end" | "start";
3
3
  /**
4
4
  * Accordion item props
5
5
  * @property {string} [title] Accordion title.
6
- * @property {string} [title] Accordion description.
7
- * @property {ICloudImageProps} [image] Accordion image.
6
+ * @property {string} [description] Accordion description.
7
+ * @property {JSX.Element} [extraElement] Accordion extra components.
8
8
  */
9
9
  interface IAccordionItemProps {
10
10
  title: string;
11
- description: string;
12
- image?: ICloudImageProps;
11
+ description?: string;
12
+ extraElement?: JSX.Element;
13
13
  }
14
14
  /**
15
15
  * Pass more than 1 item to activate progress variant
16
16
  *
17
17
  * Accordion component props
18
+ * @property {TAligned} [aligned] Align title.
18
19
  * @property {IAccordionItemProps} [items] A list of accordion items.
19
20
  * @property {number} [progressTime] Time remaining until the next item (in seconds).
20
21
  * @property {string} [bgColor] Accordion background color.
21
22
  * @property {TVariant} [variant] Type of accordion.
22
23
  */
23
24
  interface IAccordionProps {
25
+ aligned?: TAligned;
24
26
  items: IAccordionItemProps[];
25
27
  progressTime?: number;
26
28
  bgColor?: string;
27
29
  variant?: TVariant;
28
30
  }
29
- export type { IAccordionProps, IAccordionItemProps };
31
+ export type { IAccordionProps, IAccordionItemProps, TVariant, TAligned };
@@ -1,12 +1,20 @@
1
1
  import { IconName } from '@fortawesome/free-solid-svg-icons';
2
2
  import { Property } from 'csstype';
3
3
  import { SetStateAction } from 'react';
4
- declare const getItemBorderBottom: (index: number, totalItems: number) => string | undefined;
5
- declare const getItemBorderTop: (index: number, currentItem: number, isOpen: boolean) => string | undefined;
6
- declare const getProgressIcon: (index: number, currentItem: number, isOpen: boolean) => IconName;
7
- declare const getSimpleIcon: (index: number, currentItem: number, isOpen: boolean) => IconName;
8
- declare const getContentDisplay: (index: number, currentItem: number, isOpen: boolean) => Property.Display;
4
+ import { TAligned, TVariant } from './types';
5
+ import { TSpacing } from '../@core';
6
+ declare const getItemBorderBottom: (index: number, isSelectedAndOpen: boolean, totalItems: number, variant: TVariant) => string | undefined;
7
+ declare const getItemBorderTop: (isSelectedAndOpen: boolean, variant: TVariant) => string | undefined;
8
+ declare const getIcon: (isSelectedAndOpen: boolean, variant: TVariant) => IconName;
9
+ declare const getContentDisplay: (isSelectedAndOpen: boolean) => Property.Display;
9
10
  declare const handleContentVisibility: (index: number, currentItem: number, setIsOpen: (value: SetStateAction<boolean>) => void) => void;
11
+ declare const getTitlePadding: (variant: TVariant) => [TSpacing, TSpacing, TSpacing, TSpacing];
12
+ declare const getContentPadding: (variant: TVariant) => [TSpacing, TSpacing, TSpacing, TSpacing] | undefined;
13
+ declare const getHoverBgColor: (variant: TVariant) => string | undefined;
14
+ declare const getBorderColor: (variant: TVariant) => string;
15
+ declare const getIconColor: (variant: TVariant) => string;
16
+ declare const getFlexDirection: (aligned: TAligned) => Property.FlexDirection;
17
+ declare const getFontSize: (variant: TVariant) => Property.FontSize;
10
18
  declare const getDelay: (progressTime: number) => number;
11
19
  declare const sleep: (seconds: number) => Promise<PromiseConstructor>;
12
- export { getItemBorderBottom, getItemBorderTop, getContentDisplay, getProgressIcon, getSimpleIcon, handleContentVisibility, getDelay, sleep, };
20
+ export { getItemBorderBottom, getItemBorderTop, getBorderColor, getContentDisplay, getDelay, getFlexDirection, getFontSize, getHoverBgColor, getIconColor, getTitlePadding, getContentPadding, getIcon, handleContentVisibility, sleep, };
@@ -1,8 +1,7 @@
1
1
  import { ButtonHTMLAttributes } from 'react';
2
- import { IBorderModifiable, IDisplayModifiable, IIconModifiable, IMarginModifiable, IPaddingModifiable } from '../@core';
2
+ import { IBorderModifiable, IDisplayModifiable, IIconModifiable, IMarginModifiable, IPaddingModifiable, TMode, TResolution } from '../@core';
3
3
  import { TPlace } from '../tooltip/types';
4
- type TMode = "dark" | "light";
5
- type TType = "desktop" | "mobile" | "platform";
4
+ type TType = TResolution | "platform";
6
5
  type TVariant = "primary" | "primaryWeb" | "secondary" | "secondaryWeb" | "tertiary" | "ghost" | "ghostWeb" | "link";
7
6
  /**
8
7
  * Button component props.
@@ -0,0 +1,3 @@
1
+ import { ILangSelectorProps } from './types';
2
+ declare const LanguageSelector: ({ items, handleClick, mode, resolution, }: Readonly<ILangSelectorProps>) => JSX.Element;
3
+ export { LanguageSelector };
@@ -0,0 +1,8 @@
1
+ import { Meta } from '@storybook/react';
2
+ import { ILangSelectorProps } from './types';
3
+ declare const config: Meta;
4
+ declare const Default: import('@storybook/csf').AnnotatedStoryFn<import('@storybook/react').ReactRenderer, ILangSelectorProps>;
5
+ declare const FullLanguage: import('@storybook/csf').AnnotatedStoryFn<import('@storybook/react').ReactRenderer, ILangSelectorProps>;
6
+ declare const DarkMode: import('@storybook/csf').AnnotatedStoryFn<import('@storybook/react').ReactRenderer, ILangSelectorProps>;
7
+ export { Default, FullLanguage, DarkMode };
8
+ export default config;
@@ -0,0 +1,3 @@
1
+ import { IItemList } from '../types';
2
+ declare const ItemList: ({ disabled, mode, onClick, resolution, text, }: Readonly<IItemList>) => JSX.Element;
3
+ export { ItemList };
@@ -0,0 +1,9 @@
1
+ import { IItemList } from './types';
2
+ interface IItemProps {
3
+ $resolution: IItemList["resolution"];
4
+ }
5
+ declare const StyledItem: import('styled-components/dist/types').IStyledComponentBase<"web", import('styled-components/dist/types').Substitute<import('react').DetailedHTMLProps<import('react').ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, IItemProps>> & string;
6
+ declare const StyledSelector: import('styled-components/dist/types').IStyledComponentBase<"web", import('styled-components').FastOmit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
7
+ declare const StyledDropdown: import('styled-components/dist/types').IStyledComponentBase<"web", import('styled-components').FastOmit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
8
+ declare const StyledLangSelector: import('styled-components/dist/types').IStyledComponentBase<"web", import('styled-components').FastOmit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
9
+ export { StyledDropdown, StyledLangSelector, StyledItem, StyledSelector };
@@ -0,0 +1,39 @@
1
+ import { TMode, TResolution } from '../@core';
2
+ /**
3
+ * Item list props
4
+ * @property {boolean} [disabled] Show the item as disabled.
5
+ * @property {string} text Item list text
6
+ */
7
+ interface IItem {
8
+ disabled?: boolean;
9
+ text: string;
10
+ }
11
+ /**
12
+ * Item list for language selector props
13
+ * @property {boolean} [disabled] Show the item as disabled.
14
+ * @property {TMode} [mode] The background theme: dark or light.
15
+ * @property {Function} [onClick] Function handler for click event.
16
+ * @property {TResolution} [resolution] The page resolution: desktop, or mobile.
17
+ * @property {string} [text] Item list text
18
+ */
19
+ interface IItemList {
20
+ disabled?: boolean;
21
+ mode?: TMode;
22
+ onClick: () => void;
23
+ resolution?: TResolution;
24
+ text: string;
25
+ }
26
+ /**
27
+ * Language selector component props
28
+ * @property {IItem} [items] The custom items to make selection.
29
+ * @property {Function} handleClick Function handler for click event.
30
+ * @property {TMode} [mode] The background theme: dark or light.
31
+ * @property {TResolution} [resolution] The page resolution: desktop, or mobile.
32
+ */
33
+ interface ILangSelectorProps {
34
+ items?: IItem[];
35
+ handleClick: (selection: string) => void;
36
+ mode?: TMode;
37
+ resolution?: TResolution;
38
+ }
39
+ export type { IItem, IItemList, ILangSelectorProps };
@@ -0,0 +1,6 @@
1
+ import { IItemSearchingProps } from './types';
2
+ interface IItemProps {
3
+ $size: IItemSearchingProps["size"];
4
+ }
5
+ declare const StyledItemSearching: import('styled-components/dist/types').IStyledComponentBase<"web", import('styled-components/dist/types').Substitute<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, IItemProps>> & string;
6
+ export { StyledItemSearching };
@@ -0,0 +1,14 @@
1
+ import { IIconModifiable } from '../@core';
2
+ type TSize = "lg" | "md" | "sm" | "xs";
3
+ /**
4
+ * Item searching component props.
5
+ * @property {IconName} [icon] Icon to show with item.
6
+ * @property {boolean} [showIcon] True if the item includes an icon.
7
+ * @property {TSize} size The item size according to window resolution.
8
+ */
9
+ interface IItemSearchingProps {
10
+ icon?: IIconModifiable["icon"];
11
+ showIcon?: boolean;
12
+ size: TSize;
13
+ }
14
+ export type { IItemSearchingProps };
@@ -1,2 +1,3 @@
1
+ import { useClickOutside } from './use-click-outside';
1
2
  import { useCloudinaryImage } from './use-cloudinary-image';
2
- export { useCloudinaryImage };
3
+ export { useCloudinaryImage, useClickOutside };
@@ -0,0 +1,2 @@
1
+ declare const useClickOutside: (element: Readonly<HTMLElement | null>, onClickOutside: VoidFunction, addEventListenerToFullDocument?: boolean) => void;
2
+ export { useClickOutside };
@@ -5,6 +5,7 @@ export * from './components/cloud-image';
5
5
  export * from './components/colors';
6
6
  export * from './components/container';
7
7
  export * from './components/icon';
8
+ export * from './components/language-selector';
8
9
  export * from './components/logo';
9
10
  export * from './components/tooltip';
10
11
  export * from './components/typography';
package/dist/style.css CHANGED
@@ -1 +1 @@
1
- *,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}.\!visible{visibility:visible!important}.visible{visibility:visible}.relative{position:relative}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.h-\[500px\]{height:500px}.max-h-min{max-height:-moz-min-content;max-height:min-content}.max-w-min{max-width:-moz-min-content;max-width:min-content}.flex-grow{flex-grow:1}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.resize{resize:both}.flex-wrap{flex-wrap:wrap}.content-center{align-content:center}.gap-4{gap:1rem}.rounded-xl{border-radius:.75rem}.border{border-width:1px}.bg-black{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity))}.bg-slate-100{--tw-bg-opacity: 1;background-color:rgb(241 245 249 / var(--tw-bg-opacity))}.p-4{padding:1rem}.px-12{padding-left:3rem;padding-right:3rem}.px-8{padding-left:2rem;padding-right:2rem}.py-4{padding-top:1rem;padding-bottom:1rem}.underline{text-decoration-line:underline}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}@property --animate-position{syntax: "<angle>"; initial-value: 45deg; inherits: false;}@property --border-angle{syntax: "<angle>"; initial-value: 0deg; inherits: false;}@property --color-1{syntax: "<color>"; initial-value: #f32637; inherits: false;}@property --color-2{syntax: "<color>"; initial-value: #b8075d; inherits: false;}@property --btn-padding{syntax: "<custom-ident>"; initial-value: 16px; inherits: false;}@property --btn-spacing{syntax: "<length>"; initial-value: 8px; inherits: false;}@property --grid-columns{syntax: "<number>"; initial-value: 12; inherits: false;}@property --grid-width{syntax: "<length>"; initial-value: 1440px; inherits: false;}@keyframes spinAnimation{to{--border-angle: 360deg}}@keyframes gradientAnimation{0%{--animate-position: 45deg}33%{--animate-position: -50deg}66%{--animate-position: -100deg}to{--animate-position: 45deg}}
1
+ *,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}.\!visible{visibility:visible!important}.visible{visibility:visible}.absolute{position:absolute}.relative{position:relative}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.h-\[500px\]{height:500px}.max-h-min{max-height:-moz-min-content;max-height:min-content}.max-w-72{max-width:18rem}.max-w-min{max-width:-moz-min-content;max-width:min-content}.flex-grow{flex-grow:1}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.resize{resize:both}.flex-wrap{flex-wrap:wrap}.content-center{align-content:center}.gap-4{gap:1rem}.rounded-xl{border-radius:.75rem}.border{border-width:1px}.bg-black{--tw-bg-opacity: 1;background-color:rgb(0 0 0 / var(--tw-bg-opacity))}.bg-slate-100{--tw-bg-opacity: 1;background-color:rgb(241 245 249 / var(--tw-bg-opacity))}.p-1{padding:.25rem}.p-4{padding:1rem}.px-12{padding-left:3rem;padding-right:3rem}.px-8{padding-left:2rem;padding-right:2rem}.py-4{padding-top:1rem;padding-bottom:1rem}.align-middle{vertical-align:middle}.text-sm{font-size:.875rem;line-height:1.25rem}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.underline{text-decoration-line:underline}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}@property --animate-position{syntax: "<angle>"; initial-value: 45deg; inherits: false;}@property --border-angle{syntax: "<angle>"; initial-value: 0deg; inherits: false;}@property --color-1{syntax: "<color>"; initial-value: #f32637; inherits: false;}@property --color-2{syntax: "<color>"; initial-value: #b8075d; inherits: false;}@property --btn-padding-x{syntax: "<length>"; initial-value: 16px; inherits: false;}@property --btn-padding-y{syntax: "<length>"; initial-value: 10px; inherits: false;}@property --btn-spacing{syntax: "<length>"; initial-value: 8px; inherits: false;}@property --grid-columns{syntax: "<number>"; initial-value: 12; inherits: false;}@property --grid-width{syntax: "<length>"; initial-value: 1440px; inherits: false;}@keyframes spinAnimation{to{--border-angle: 360deg}}@keyframes gradientAnimation{0%{--animate-position: 45deg}33%{--animate-position: -50deg}66%{--animate-position: -100deg}to{--animate-position: 45deg}}
package/package.json CHANGED
@@ -19,6 +19,7 @@
19
19
  "@storybook/addon-essentials": "8.3.5",
20
20
  "@storybook/addon-interactions": "8.3.5",
21
21
  "@storybook/addon-links": "8.3.5",
22
+ "@storybook/addon-viewport": "8.3.5",
22
23
  "@storybook/blocks": "8.3.5",
23
24
  "@storybook/react": "8.3.5",
24
25
  "@storybook/react-vite": "8.3.5",
@@ -78,7 +79,7 @@
78
79
  "preview": "vite preview",
79
80
  "storybook": "storybook dev"
80
81
  },
81
- "version": "1.2.15",
82
+ "version": "1.2.17",
82
83
  "eslintConfig": {
83
84
  "extends": [
84
85
  "plugin:storybook/recommended"