@uxf/ui 1.0.0-beta.73 → 1.0.0-beta.75

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.
@@ -33,6 +33,18 @@
33
33
  }
34
34
  }
35
35
 
36
+ &__popover {
37
+ @apply absolute left-0 z-dropdown mt-3 max-w-md rounded-lg border p-2 shadow-xl;
38
+
39
+ :root .light & {
40
+ @apply bg-white border-gray-500;
41
+ }
42
+
43
+ :root .dark & {
44
+ @apply bg-gray-900 border-2 border-gray-700;
45
+ }
46
+ }
47
+
36
48
  &--has-right-addon {
37
49
  .uxf-date-picker-input__wrapper {
38
50
  @apply rounded-r-none;
@@ -1,33 +1,90 @@
1
1
  .uxf-date-picker {
2
- &__month-select {
3
- @apply flex items-center justify-between px-4 md:w-[320px];
2
+ &__month-select,
3
+ &__year-select,
4
+ &__decade-select {
5
+ @apply flex items-center justify-between px-4 w-[320px] sm:w-[360px];
6
+ }
7
+
8
+ &__month-calendar,
9
+ &__year-calendar,
10
+ &__decade-calendar {
11
+ @apply grid place-items-center w-full px-4 pt-4 text-center;
4
12
  }
5
13
 
6
14
  &__month-calendar {
7
- @apply grid w-full grid-cols-7 px-4 pt-4 text-center;
15
+ @apply grid-cols-7 gap-0.5;
16
+ }
17
+
18
+ &__year-calendar {
19
+ @apply grid-cols-3 sm:grid-cols-4 gap-2;
20
+ }
21
+
22
+ &__decade-calendar {
23
+ @apply grid-cols-3 gap-2;
8
24
  }
9
25
 
10
26
  &__weekday-label {
11
27
  @apply uppercase pb-2;
12
28
  }
13
29
 
30
+ &__decade-label {
31
+ @apply font-semibold;
32
+ }
33
+
14
34
  &__cell {
15
- @apply transition hover:bg-gray-200;
35
+ @apply p-1 transition relative rounded-full outline-none before:absolute before:pointer-events-none
36
+ before:rounded-full before:-inset-1 focus-visible:before:border-2;
16
37
 
17
38
  &__day {
18
- @apply w-9 h-9 rounded-full;
39
+ @apply w-9 h-9;
40
+ }
19
41
 
20
- &--today {
21
- @apply bg-primary-200 hover:bg-primary-300;
22
- }
42
+ &__month {
43
+ @apply w-full;
44
+ }
23
45
 
24
- &--selected {
25
- @apply bg-primary-500 text-white hover:bg-primary-500;
26
- }
46
+ &__year {
47
+ @apply w-full;
48
+ }
49
+ }
50
+
51
+ :root .light & {
52
+ @apply text-gray-900;
53
+
54
+ .uxf-date-picker__cell {
55
+ @apply hover:bg-gray-200 focus-visible:before:border-primary-500;
56
+ }
57
+
58
+ .uxf-date-picker__cell__day--today {
59
+ @apply bg-primary-200 hover:bg-primary-300;
60
+ }
61
+
62
+ .uxf-date-picker__cell__day--selected {
63
+ @apply bg-primary-500 text-white hover:bg-primary-500;
64
+ }
65
+
66
+ .uxf-date-picker__cell__day--not-current-month {
67
+ @apply text-gray-400;
68
+ }
69
+ }
70
+
71
+ :root .dark & {
72
+ @apply bg-gray-900 text-white;
73
+
74
+ .uxf-date-picker__cell {
75
+ @apply hover:bg-gray-700 focus-visible:before:border-primary-500;
76
+ }
77
+
78
+ .uxf-date-picker__cell__day--today {
79
+ @apply bg-primary-400/50 hover:bg-primary-400/60;
80
+ }
81
+
82
+ .uxf-date-picker__cell__day--selected {
83
+ @apply bg-primary-500 text-white hover:bg-primary-500;
84
+ }
27
85
 
28
- &--not-current-month {
29
- @apply text-gray-400;
30
- }
86
+ .uxf-date-picker__cell__day--not-current-month {
87
+ @apply text-gray-600;
31
88
  }
32
89
  }
33
90
  }
package/css/toggle.css CHANGED
@@ -4,6 +4,14 @@
4
4
 
5
5
  &__wrapper {
6
6
  @apply flex items-center justify-between space-x-4 p-4;
7
+
8
+ &--reversed {
9
+ @apply flex-row-reverse space-x-0;
10
+
11
+ .uxf-toggle__label {
12
+ @apply pr-4;
13
+ }
14
+ }
7
15
  }
8
16
 
9
17
  &__label {
@@ -56,13 +56,13 @@ exports.DatePickerDecade = (0, react_1.memo)((props) => {
56
56
  onYearSelect(date);
57
57
  }
58
58
  }, [canGoToYear, onYearSelect]);
59
- return (react_1.default.createElement("div", { className: "flex w-full flex-col items-start" },
60
- react_1.default.createElement("div", { className: "flex w-full items-center justify-between px-4 md:w-[300px]" },
59
+ return (react_1.default.createElement(react_1.default.Fragment, null,
60
+ react_1.default.createElement("div", { className: "uxf-date-picker__decade-select" },
61
61
  react_1.default.createElement(button_1.Button, { iconButton: true, onClick: handleGoToPrevDecadeClick, title: "Zp\u011Bt", variant: "text" },
62
62
  react_1.default.createElement(icon_1.Icon, { name: "chevronLeft", size: 16 })),
63
- react_1.default.createElement("p", { className: "uppercase" }, decadeLabel),
63
+ react_1.default.createElement("p", { className: "uxf-date-picker__decade-label" }, decadeLabel),
64
64
  react_1.default.createElement(button_1.Button, { iconButton: true, onClick: handleGoToNextDecadeClick, title: "Vp\u0159ed", variant: "text" },
65
65
  react_1.default.createElement(icon_1.Icon, { name: "chevronRight", size: 16 }))),
66
- react_1.default.createElement("div", { className: "md:grild-cols-8 grid w-full grid-cols-6 px-4 pt-4" }, years.map((year, index) => (react_1.default.createElement("button", { className: (0, cx_1.cx)("uxf-datepicker-cell", !canGoToYear(year.date) && classes_1.CLASSES.IS_DISABLED, (0, localized_dayjs_1.localizedDayjs)(year.date).year() === currentYear && "uxf-datepicker-cell__year--current"), key: year.yearLabel + index, onClick: handleSelectYear(year.date) }, year.yearLabel))))));
66
+ react_1.default.createElement("div", { className: "uxf-date-picker__decade-calendar" }, years.map((year, index) => (react_1.default.createElement("button", { className: (0, cx_1.cx)("uxf-date-picker__cell uxf-date-picker__cell__year", !canGoToYear(year.date) && classes_1.CLASSES.IS_DISABLED, (0, localized_dayjs_1.localizedDayjs)(year.date).year() === currentYear && "uxf-date-picker__cell__year--current"), key: year.yearLabel + index, onClick: handleSelectYear(year.date) }, year.yearLabel))))));
67
67
  });
68
68
  exports.DatePickerDecade.displayName = "DatePickerDecade";
@@ -56,5 +56,5 @@ exports.DatePickerInput = (0, forwardRef_1.forwardRef)("DatePickerInput", (props
56
56
  react_1.default.createElement("input", { "aria-describedby": errorId, "aria-errormessage": props.error && errorId ? `${errorId}__error-message` : undefined, "aria-invalid": !!props.error, "aria-live": "polite", autoComplete: "off", className: "uxf-date-picker-input__element", disabled: props.isDisabled, form: props.form, id: id, inputMode: "none", name: props.name, onBlur: onBlur, onChange: () => props.onChange, onFocus: onFocus, placeholder: "Vyberte datum...", readOnly: props.isReadOnly, ref: ref, required: props.isRequired, tabIndex: props.isReadOnly ? -1 : undefined, value: props.value ? (0, localized_dayjs_1.localizedDayjs)(props.value).format("l") : "" }),
57
57
  react_1.default.createElement("span", { className: "uxf-date-picker-input__right-element" }, props.rightElement)),
58
58
  !props.isDisabled && !props.isReadOnly && (react_1.default.createElement(react_2.Transition, { as: react_1.Fragment, enter: "transition duration-200 ease-out", enterFrom: "origin-top scale-50 opacity-0", enterTo: "origin-top scale-100 opacity-100", leave: "transition duration-200 ease-out", leaveFrom: "origin-top scale-50 opacity-100", leaveTo: "origin-top scale-0 opacity-0" },
59
- react_1.default.createElement(react_2.Popover.Panel, { className: "absolute left-0 z-dropdown mt-3 max-w-md rounded border border-gray-500 bg-white p-2 shadow-xl", static: true }, ({ close }) => (react_1.default.createElement(date_picker_provider_1.DatePickerProvider, { closePopoverHandler: close, onChange: props.onChange, selectedDate: props.value }))))))));
59
+ react_1.default.createElement(react_2.Popover.Panel, { className: "uxf-date-picker-input__popover", static: true }, ({ close }) => (react_1.default.createElement(date_picker_provider_1.DatePickerProvider, { closePopoverHandler: close, onChange: props.onChange, selectedDate: props.value }))))))));
60
60
  });
@@ -40,6 +40,6 @@ function Default() {
40
40
  react_1.default.createElement(date_picker_input_1.DatePickerInput, { id: "date-test-invalid", name: "date-invalid", label: "Datum invalid", rightElement: react_1.default.createElement(icon_1.Icon, { name: "calendar", size: 24 }), value: date, onChange: (data) => setDate(data !== null && data !== void 0 ? data : null), isInvalid: true })));
41
41
  return (react_1.default.createElement(react_1.default.Fragment, null,
42
42
  react_1.default.createElement("div", { className: "light max-w-[640px] space-y-4 rounded bg-white p-8" }, testDatePickers),
43
- react_1.default.createElement("div", { className: "dark max-w-[640px] space-y-4 rounded bg-gray-900 p-8" }, testDatePickers)));
43
+ react_1.default.createElement("div", { className: "dark max-w-[640px] space-y-4 rounded bg-gray-900 p-8 text-white" }, testDatePickers)));
44
44
  }
45
45
  exports.Default = Default;
@@ -29,7 +29,6 @@ const use_year_1 = require("@uxf/datepicker/hooks/use-year");
29
29
  const date_picker_context_1 = require("@uxf/datepicker/contexts/date-picker-context");
30
30
  const button_1 = require("../button");
31
31
  const icon_1 = require("../icon");
32
- const text_link_1 = require("../text-link");
33
32
  const cx_1 = require("@uxf/core/utils/cx");
34
33
  const classes_1 = require("@uxf/core/constants/classes");
35
34
  const localized_dayjs_1 = require("../utils/localized-dayjs");
@@ -60,14 +59,14 @@ exports.DatePickerYear = (0, react_1.memo)((props) => {
60
59
  props.onMonthSelect(date);
61
60
  }
62
61
  }, [canGoToMonth, props]);
63
- return (react_1.default.createElement("div", { className: "flex w-full flex-col items-start" },
64
- react_1.default.createElement("div", { className: "flex w-full items-center justify-between px-4 md:w-[300px]" },
62
+ return (react_1.default.createElement(react_1.default.Fragment, null,
63
+ react_1.default.createElement("div", { className: "uxf-date-picker__year-select" },
65
64
  react_1.default.createElement(button_1.Button, { disabled: !canGoToPrevYear, iconButton: true, onClick: canGoToPrevYear ? handleGoToPrevYear : undefined, title: "P\u0159edchoz\u00ED rok", variant: "text" },
66
65
  react_1.default.createElement(icon_1.Icon, { name: "chevronLeft", size: 16 })),
67
- react_1.default.createElement(text_link_1.TextLink, { onClick: handleYearClick }, yearLabel),
66
+ react_1.default.createElement(button_1.Button, { variant: "text", onClick: handleYearClick }, yearLabel),
68
67
  react_1.default.createElement(button_1.Button, { disabled: !canGoToNextYear, iconButton: true, onClick: canGoToNextYear ? handleGoToNextYear : undefined, title: "Dal\u0161\u00ED rok", variant: "text" },
69
68
  react_1.default.createElement(icon_1.Icon, { name: "chevronRight", size: 16 }))),
70
- react_1.default.createElement("div", { className: "grid w-full grid-cols-4 px-4 pt-4" }, months.map((month, index) => (react_1.default.createElement("button", { className: (0, cx_1.cx)("uxf-datepicker-cell", !canGoToMonth(month.date) && classes_1.CLASSES.IS_DISABLED, (0, localized_dayjs_1.localizedDayjs)(month.date).month() === currentMonth &&
71
- "uxf-datepicker-cell__month--current"), key: month.monthLabel + index, onClick: handleMonthClick(month.date) }, month.monthLabel))))));
69
+ react_1.default.createElement("div", { className: "uxf-date-picker__year-calendar" }, months.map((month, index) => (react_1.default.createElement("button", { className: (0, cx_1.cx)("uxf-date-picker__cell uxf-date-picker__cell__month", !canGoToMonth(month.date) && classes_1.CLASSES.IS_DISABLED, (0, localized_dayjs_1.localizedDayjs)(month.date).month() === currentMonth &&
70
+ "uxf-date-picker__cell__month--current"), key: month.monthLabel + index, onClick: handleMonthClick(month.date) }, month.monthLabel))))));
72
71
  });
73
72
  exports.DatePickerYear.displayName = "DatePickerYear";
@@ -46,7 +46,7 @@ const DatePicker = (props) => {
46
46
  year: react_1.default.createElement(date_picker_year_1.DatePickerYear, { onMonthSelect: (date) => onMonthSelect(date), onYearSelect: onYearSelect }),
47
47
  decade: react_1.default.createElement(date_picker_decade_1.DatePickerDecade, { onYearSelect: (date) => onDecadeYearSelect(date) }),
48
48
  }), [onMonthSelect, onYearSelect, onDecadeYearSelect, setViewMode, activeMonths]);
49
- return (react_1.default.createElement("div", null,
49
+ return (react_1.default.createElement("div", { className: "uxf-date-picker" },
50
50
  props.children,
51
51
  datePickerComponents[viewMode]));
52
52
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uxf/ui",
3
- "version": "1.0.0-beta.73",
3
+ "version": "1.0.0-beta.75",
4
4
  "description": "",
5
5
  "publishConfig": {
6
6
  "access": "public"
package/tabs/tabs.d.ts CHANGED
@@ -1,14 +1,18 @@
1
- import React, { FC, HTMLAttributes, ReactNode } from "react";
2
- export interface TabProps {
3
- children: ReactNode;
1
+ import React, { ReactNode } from "react";
2
+ export interface TabsPanelProps {
4
3
  className?: string;
5
- tabTitle: ReactNode;
4
+ title: ReactNode;
6
5
  }
7
- export declare const TabPanel: FC<TabProps>;
8
- export interface TabsProps extends Omit<HTMLAttributes<HTMLDivElement>, "onChange"> {
6
+ export interface TabsProps {
7
+ className?: string;
9
8
  defaultIndex?: number;
9
+ grow?: boolean;
10
10
  onChange?: (index: number) => void;
11
+ tabListClassName?: string;
11
12
  variant?: "default" | "segmented";
12
- grow?: boolean;
13
13
  }
14
- export declare const Tabs: React.ForwardRefExoticComponent<TabsProps & React.RefAttributes<HTMLDivElement>>;
14
+ export declare const Tabs: React.ForwardRefExoticComponent<TabsProps & {
15
+ children?: React.ReactNode;
16
+ } & React.RefAttributes<HTMLDivElement>> & {
17
+ Panel: React.FC<React.PropsWithChildren<TabsPanelProps>>;
18
+ };
package/tabs/tabs.js CHANGED
@@ -23,16 +23,15 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  return result;
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.Tabs = exports.TabPanel = void 0;
26
+ exports.Tabs = void 0;
27
27
  const react_1 = require("@headlessui/react");
28
- const forwardRef_1 = require("@uxf/core/utils/forwardRef");
29
- const cx_1 = require("@uxf/core/utils/cx");
30
- const react_2 = __importStar(require("react"));
31
28
  const classes_1 = require("@uxf/core/constants/classes");
32
29
  const useMouseDragToScroll_1 = require("@uxf/core/hooks/useMouseDragToScroll");
33
- const TabPanel = (props) => react_2.default.createElement("div", { className: props.className }, props.children);
34
- exports.TabPanel = TabPanel;
35
- exports.Tabs = (0, forwardRef_1.forwardRef)("Tabs", (props, ref) => {
30
+ const cx_1 = require("@uxf/core/utils/cx");
31
+ const forwardRef_1 = require("@uxf/core/utils/forwardRef");
32
+ const react_2 = __importStar(require("react"));
33
+ const Panel = (props) => react_2.default.createElement("div", { className: props.className }, props.children);
34
+ const TabsRoot = (0, forwardRef_1.forwardRef)("Tabs", (props, ref) => {
36
35
  var _a, _b;
37
36
  const tabsClassName = (0, cx_1.cx)("uxf-tabs", props.grow && "uxf-tabs--grow", props.className);
38
37
  const containerRef = (0, react_2.useRef)(null);
@@ -51,16 +50,16 @@ exports.Tabs = (0, forwardRef_1.forwardRef)("Tabs", (props, ref) => {
51
50
  };
52
51
  }, []);
53
52
  if (react_2.Children.count(props.children) === 0) {
54
- return null;
53
+ return react_2.default.createElement("div", { className: tabsClassName, ref: ref });
55
54
  }
56
- const tabPanels = react_2.Children.toArray(props.children).filter((child) => (0, react_2.isValidElement)(child) && child.props.tabTitle);
57
- const tabs = tabPanels.map((c) => c.props.tabTitle);
55
+ const tabPanels = react_2.Children.toArray(props.children).filter((child) => (0, react_2.isValidElement)(child) && child.props.title);
56
+ const tabs = tabPanels.map((c) => c.props.title);
58
57
  return (react_2.default.createElement(react_1.Tab.Group, { as: "div", className: tabsClassName, defaultIndex: props.defaultIndex, onChange: props.onChange, ref: ref },
59
- react_2.default.createElement(react_1.Tab.List, null,
60
- react_2.default.createElement("div", { className: (0, cx_1.cx)("uxf-tabs__tab-list__wrapper", `uxf-tabs__tab-list__wrapper--${(_a = props.variant) !== null && _a !== void 0 ? _a : "default"}`) },
61
- react_2.default.createElement("div", { className: (0, cx_1.cx)("uxf-tabs__tab-list", `uxf-tabs__tab-list--${(_b = props.variant) !== null && _b !== void 0 ? _b : "default"}`), ref: containerRef, style: { justifyContent: hasOverflow ? "flex-start" : undefined, ...dragStyle } }, tabs.map((tab, index) => (react_2.default.createElement(react_1.Tab, { className: ({ selected }) => {
62
- var _a;
63
- return (0, cx_1.cx)("uxf-tabs__tab", selected && classes_1.CLASSES.IS_ACTIVE, `uxf-tabs__tab--${(_a = props.variant) !== null && _a !== void 0 ? _a : "default"}`);
64
- }, key: `${tab}--${index}` }, tab)))))),
58
+ react_2.default.createElement(react_1.Tab.List, { className: (0, cx_1.cx)("uxf-tabs__tab-list__wrapper", `uxf-tabs__tab-list__wrapper--${(_a = props.variant) !== null && _a !== void 0 ? _a : "default"}`, props.tabListClassName) },
59
+ react_2.default.createElement("div", { className: (0, cx_1.cx)("uxf-tabs__tab-list", `uxf-tabs__tab-list--${(_b = props.variant) !== null && _b !== void 0 ? _b : "default"}`), ref: containerRef, style: { justifyContent: hasOverflow ? "flex-start" : undefined, ...dragStyle } }, tabs.map((tab, index) => (react_2.default.createElement(react_1.Tab, { className: ({ selected }) => {
60
+ var _a;
61
+ return (0, cx_1.cx)("uxf-tabs__tab", selected && classes_1.CLASSES.IS_ACTIVE, `uxf-tabs__tab--${(_a = props.variant) !== null && _a !== void 0 ? _a : "default"}`);
62
+ }, key: `${tab}--${index}` }, tab))))),
65
63
  react_2.default.createElement(react_1.Tab.Panels, { className: "uxf-tabs__panels" }, tabPanels.map((tab, index) => (react_2.default.createElement(react_1.Tab.Panel, { className: "outline-none", key: `${tab}--${index}` }, tab))))));
66
64
  });
65
+ exports.Tabs = Object.assign(TabsRoot, { Panel });
@@ -1,7 +1,11 @@
1
1
  import React from "react";
2
2
  declare const _default: {
3
3
  title: string;
4
- component: React.ForwardRefExoticComponent<import("./tabs").TabsProps & React.RefAttributes<HTMLDivElement>>;
4
+ component: React.ForwardRefExoticComponent<import("./tabs").TabsProps & {
5
+ children?: React.ReactNode;
6
+ } & React.RefAttributes<HTMLDivElement>> & {
7
+ Panel: React.FC<React.PropsWithChildren<import("./tabs").TabsPanelProps>>;
8
+ };
5
9
  };
6
10
  export default _default;
7
11
  export declare function Default(): JSX.Element;
@@ -4,8 +4,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.Default = void 0;
7
- const tabs_1 = require("./tabs");
8
7
  const react_1 = __importDefault(require("react"));
8
+ const tabs_1 = require("./tabs");
9
9
  exports.default = {
10
10
  title: "UI/Tabs",
11
11
  component: tabs_1.Tabs,
@@ -16,31 +16,31 @@ function Default() {
16
16
  react_1.default.createElement("div", null,
17
17
  react_1.default.createElement("p", { className: "mb-4 text-gray-500" }, "Default"),
18
18
  react_1.default.createElement(tabs_1.Tabs, null,
19
- react_1.default.createElement(tabs_1.TabPanel, { tabTitle: "Tab 1 title", className: "grid h-12 w-56 place-items-center bg-red-300" }, "content of the Tab 1"),
20
- react_1.default.createElement(tabs_1.TabPanel, { tabTitle: "Tab 2 title", className: "grid h-12 w-56 place-items-center bg-green-300" }, "content of the Tab 2"),
21
- react_1.default.createElement(tabs_1.TabPanel, { tabTitle: "Tab 3 title", className: "grid h-12 w-56 place-items-center bg-amber-300" }, "content of the Tab 3"),
22
- react_1.default.createElement(tabs_1.TabPanel, { tabTitle: "Tab 4 title", className: "grid h-12 w-56 place-items-center bg-gray-300" }, "content of the Tab 4"))),
19
+ react_1.default.createElement(tabs_1.Tabs.Panel, { title: "Tab 1 title", className: "grid h-12 w-56 place-items-center bg-red-300" }, "content of the Tab 1"),
20
+ react_1.default.createElement(tabs_1.Tabs.Panel, { title: "Tab 2 title", className: "grid h-12 w-56 place-items-center bg-green-300" }, "content of the Tab 2"),
21
+ react_1.default.createElement(tabs_1.Tabs.Panel, { title: "Tab 3 title", className: "grid h-12 w-56 place-items-center bg-amber-300" }, "content of the Tab 3"),
22
+ react_1.default.createElement(tabs_1.Tabs.Panel, { title: "Tab 4 title", className: "grid h-12 w-56 place-items-center bg-gray-300" }, "content of the Tab 4"))),
23
23
  react_1.default.createElement("div", null,
24
24
  react_1.default.createElement("p", { className: "mb-4 text-gray-500" }, "Segmented"),
25
25
  react_1.default.createElement(tabs_1.Tabs, { variant: "segmented" },
26
- react_1.default.createElement(tabs_1.TabPanel, { tabTitle: "Tab 1 title", className: "grid h-12 w-56 place-items-center bg-red-300" }, "content of the Tab 1"),
27
- react_1.default.createElement(tabs_1.TabPanel, { tabTitle: "Tab 2 title", className: "grid h-12 w-56 place-items-center bg-green-300" }, "content of the Tab 2"),
28
- react_1.default.createElement(tabs_1.TabPanel, { tabTitle: "Tab 3 title", className: "grid h-12 w-56 place-items-center bg-amber-300" }, "content of the Tab 3"),
29
- react_1.default.createElement(tabs_1.TabPanel, { tabTitle: "Tab 4 title", className: "grid h-12 w-56 place-items-center bg-gray-300" }, "content of the Tab 4")))),
26
+ react_1.default.createElement(tabs_1.Tabs.Panel, { title: "Tab 1 title", className: "grid h-12 w-56 place-items-center bg-red-300" }, "content of the Tab 1"),
27
+ react_1.default.createElement(tabs_1.Tabs.Panel, { title: "Tab 2 title", className: "grid h-12 w-56 place-items-center bg-green-300" }, "content of the Tab 2"),
28
+ react_1.default.createElement(tabs_1.Tabs.Panel, { title: "Tab 3 title", className: "grid h-12 w-56 place-items-center bg-amber-300" }, "content of the Tab 3"),
29
+ react_1.default.createElement(tabs_1.Tabs.Panel, { title: "Tab 4 title", className: "grid h-12 w-56 place-items-center bg-gray-300" }, "content of the Tab 4")))),
30
30
  react_1.default.createElement("div", { className: "w-[600px]" },
31
31
  react_1.default.createElement("p", { className: "mb-4 text-gray-500" }, "Default grow"),
32
32
  react_1.default.createElement(tabs_1.Tabs, { grow: true },
33
- react_1.default.createElement(tabs_1.TabPanel, { tabTitle: "Tab 1 title", className: "grid h-12 w-56 place-items-center bg-red-300" }, "content of the Tab 1"),
34
- react_1.default.createElement(tabs_1.TabPanel, { tabTitle: "Tab 2 title", className: "grid h-12 w-56 place-items-center bg-green-300" }, "content of the Tab 2"),
35
- react_1.default.createElement(tabs_1.TabPanel, { tabTitle: "Tab 3 title", className: "grid h-12 w-56 place-items-center bg-amber-300" }, "content of the Tab 3"),
36
- react_1.default.createElement(tabs_1.TabPanel, { tabTitle: "Tab 4 title", className: "grid h-12 w-56 place-items-center bg-gray-300" }, "content of the Tab 4"))),
33
+ react_1.default.createElement(tabs_1.Tabs.Panel, { title: "Tab 1 title", className: "grid h-12 w-56 place-items-center bg-red-300" }, "content of the Tab 1"),
34
+ react_1.default.createElement(tabs_1.Tabs.Panel, { title: "Tab 2 title", className: "grid h-12 w-56 place-items-center bg-green-300" }, "content of the Tab 2"),
35
+ react_1.default.createElement(tabs_1.Tabs.Panel, { title: "Tab 3 title", className: "grid h-12 w-56 place-items-center bg-amber-300" }, "content of the Tab 3"),
36
+ react_1.default.createElement(tabs_1.Tabs.Panel, { title: "Tab 4 title", className: "grid h-12 w-56 place-items-center bg-gray-300" }, "content of the Tab 4"))),
37
37
  react_1.default.createElement("div", { className: "w-[600px]" },
38
38
  react_1.default.createElement("p", { className: "mb-4 text-gray-500" }, "Segmented grow"),
39
39
  react_1.default.createElement(tabs_1.Tabs, { variant: "segmented", grow: true },
40
- react_1.default.createElement(tabs_1.TabPanel, { tabTitle: "Tab 1 title", className: "grid h-12 w-56 place-items-center bg-red-300" }, "content of the Tab 1"),
41
- react_1.default.createElement(tabs_1.TabPanel, { tabTitle: "Tab 2 title", className: "grid h-12 w-56 place-items-center bg-green-300" }, "content of the Tab 2"),
42
- react_1.default.createElement(tabs_1.TabPanel, { tabTitle: "Tab 3 title", className: "grid h-12 w-56 place-items-center bg-amber-300" }, "content of the Tab 3"),
43
- react_1.default.createElement(tabs_1.TabPanel, { tabTitle: "Tab 4 title", className: "grid h-12 w-56 place-items-center bg-gray-300" }, "content of the Tab 4")))));
40
+ react_1.default.createElement(tabs_1.Tabs.Panel, { title: "Tab 1 title", className: "grid h-12 w-56 place-items-center bg-red-300" }, "content of the Tab 1"),
41
+ react_1.default.createElement(tabs_1.Tabs.Panel, { title: "Tab 2 title", className: "grid h-12 w-56 place-items-center bg-green-300" }, "content of the Tab 2"),
42
+ react_1.default.createElement(tabs_1.Tabs.Panel, { title: "Tab 3 title", className: "grid h-12 w-56 place-items-center bg-amber-300" }, "content of the Tab 3"),
43
+ react_1.default.createElement(tabs_1.Tabs.Panel, { title: "Tab 4 title", className: "grid h-12 w-56 place-items-center bg-gray-300" }, "content of the Tab 4")))));
44
44
  return (react_1.default.createElement(react_1.default.Fragment, null,
45
45
  react_1.default.createElement("div", { className: "light rounded bg-white p-8" }, testTabs),
46
46
  react_1.default.createElement("div", { className: "dark rounded bg-gray-900 p-8 text-white" }, testTabs)));
@@ -0,0 +1,4 @@
1
+ export interface ToggleVariants {
2
+ default: true;
3
+ reversed: true;
4
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,9 +1,12 @@
1
1
  import React, { CSSProperties } from "react";
2
2
  import { FormControlProps } from "../types";
3
+ import { ToggleVariants } from "./theme";
4
+ export declare type ToggleVariant = keyof ToggleVariants;
3
5
  export interface ToggleProps extends FormControlProps<boolean> {
4
6
  className?: string;
5
7
  hiddenLabel?: boolean;
6
8
  label: string;
7
9
  style?: Partial<CSSProperties>;
10
+ variant?: ToggleVariant;
8
11
  }
9
12
  export declare const Toggle: React.ForwardRefExoticComponent<ToggleProps & React.RefAttributes<HTMLButtonElement>>;
package/toggle/toggle.js CHANGED
@@ -10,9 +10,10 @@ const forwardRef_1 = require("@uxf/core/utils/forwardRef");
10
10
  const react_1 = __importDefault(require("react"));
11
11
  const react_2 = require("@headlessui/react");
12
12
  exports.Toggle = (0, forwardRef_1.forwardRef)("Toggle", (props, ref) => {
13
+ var _a, _b;
13
14
  return (react_1.default.createElement(react_2.Switch.Group, null,
14
- react_1.default.createElement("div", { className: `uxf-toggle__wrapper ${props.hiddenLabel ? "uxf-toggle__wrapper--hiddenLabel" : ""}` },
15
- react_1.default.createElement(react_2.Switch, { checked: props.value, className: (0, cx_1.cx)(props.value && classes_1.CLASSES.IS_SELECTED, props.isDisabled && classes_1.CLASSES.IS_DISABLED, "uxf-toggle", props.className), disabled: props.isDisabled, onChange: props.onChange, style: props.style, ref: ref },
15
+ react_1.default.createElement("div", { className: (0, cx_1.cx)("uxf-toggle__wrapper", `uxf-toggle__wrapper--${(_a = props.variant) !== null && _a !== void 0 ? _a : "default"}`, props.hiddenLabel && "uxf-toggle__wrapper--hiddenLabel", props.className) },
16
+ react_1.default.createElement(react_2.Switch, { checked: props.value, className: (0, cx_1.cx)(props.value && classes_1.CLASSES.IS_SELECTED, props.isDisabled && classes_1.CLASSES.IS_DISABLED, "uxf-toggle", `uxf-toggle--${(_b = props.variant) !== null && _b !== void 0 ? _b : "default"}`), disabled: props.isDisabled, onChange: props.onChange, style: props.style, ref: ref },
16
17
  react_1.default.createElement("span", { className: "uxf-toggle__inner" })),
17
18
  react_1.default.createElement(react_2.Switch.Label, { hidden: props.hiddenLabel, className: "uxf-toggle__label" }, props.label))));
18
19
  });
@@ -41,9 +41,12 @@ function Default() {
41
41
  }, value: checked, isDisabled: true }),
42
42
  react_1.default.createElement(index_1.Toggle, { label: "Opravdu?", onChange: () => {
43
43
  setChecked((prev) => !prev);
44
- }, value: checked, hiddenLabel: true })));
44
+ }, value: checked, hiddenLabel: true }),
45
+ react_1.default.createElement(index_1.Toggle, { label: "Opravdu? (reversed)", onChange: () => {
46
+ setChecked((prev) => !prev);
47
+ }, value: checked, variant: "reversed" })));
45
48
  return (react_1.default.createElement("div", { className: "flex" },
46
- react_1.default.createElement("div", { className: "light flex gap-4 p-20" }, storyToggles),
47
- react_1.default.createElement("div", { className: "dark flex gap-4 bg-gray-900 p-20" }, storyToggles)));
49
+ react_1.default.createElement("div", { className: "light w-1/2 gap-4 p-20" }, storyToggles),
50
+ react_1.default.createElement("div", { className: "dark w-1/2 gap-4 bg-gray-900 p-20 text-white" }, storyToggles)));
48
51
  }
49
52
  exports.Default = Default;
@@ -87,6 +87,9 @@ module.exports = {
87
87
  900: "#7f1d1d",
88
88
  },
89
89
  },
90
+ spacing: {
91
+ inherit: "inherit",
92
+ },
90
93
  zIndex: {
91
94
  1: "1",
92
95
  focus: "5",