@axzydev/axzy_ui_system 1.2.13 → 1.2.14
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 +43 -0
- package/dist/index.cjs +6490 -6388
- package/dist/index.cjs.map +1 -1
- package/dist/index.css +1 -1
- package/dist/index.css.map +1 -1
- package/dist/index.d.cts +169 -110
- package/dist/index.d.ts +169 -110
- package/dist/index.js +6516 -6414
- package/dist/index.js.map +1 -1
- package/package.json +4 -2
- package/src/App.tsx +86 -81
- package/src/components/{avatar → atoms/avatar}/avatar.doc.mdx +2 -2
- package/src/components/{avatar → atoms/avatar}/avatar.stories.tsx +1 -2
- package/src/components/{avatar → atoms/avatar}/avatar.tsx +1 -1
- package/src/components/{badget → atoms/badget}/badget.doc.mdx +4 -4
- package/src/components/{badget → atoms/badget}/badget.props.ts +1 -1
- package/src/components/{badget → atoms/badget}/badget.stories.tsx +1 -2
- package/src/components/{badget → atoms/badget}/badget.tsx +3 -3
- package/src/components/{button → atoms/button}/button.doc.mdx +3 -3
- package/src/components/{button → atoms/button}/button.props.ts +3 -3
- package/src/components/{button → atoms/button}/button.stories.tsx +1 -2
- package/src/components/{button → atoms/button}/button.tsx +7 -7
- package/src/components/{checkbox → atoms/checkbox}/checkbox.doc.mdx +2 -2
- package/src/components/{checkbox → atoms/checkbox}/checkbox.stories.tsx +2 -3
- package/src/components/{checkbox → atoms/checkbox}/checkbox.tsx +1 -1
- package/src/components/{divider → atoms/divider}/divider.doc.mdx +2 -2
- package/src/components/{divider → atoms/divider}/divider.stories.tsx +3 -4
- package/src/components/{flex → atoms/flex}/flex.doc.mdx +2 -2
- package/src/components/{flex → atoms/flex}/flex.stories.tsx +1 -2
- package/src/components/{grid → atoms/grid}/grid.doc.mdx +2 -2
- package/src/components/{grid → atoms/grid}/grid.stories.tsx +1 -2
- package/src/components/{image → atoms/image}/image.doc.mdx +2 -2
- package/src/components/{image → atoms/image}/image.stories.tsx +1 -2
- package/src/components/{input → atoms/input}/input.doc.mdx +3 -3
- package/src/components/{input → atoms/input}/input.props.ts +3 -3
- package/src/components/{input → atoms/input}/input.stories.tsx +2 -4
- package/src/components/{input → atoms/input}/input.tsx +5 -14
- package/src/components/{loader → atoms/loader}/loader.doc.mdx +2 -2
- package/src/components/{loader → atoms/loader}/loader.stories.tsx +2 -3
- package/src/components/{loader → atoms/loader}/loader.tsx +1 -1
- package/src/components/{popover → atoms/popover}/popover.doc.mdx +2 -2
- package/src/components/{popover → atoms/popover}/popover.stories.tsx +3 -4
- package/src/components/{progress → atoms/progress}/progress.doc.mdx +2 -2
- package/src/components/{progress → atoms/progress}/progress.stories.tsx +2 -3
- package/src/components/{radio → atoms/radio}/radio.doc.mdx +2 -2
- package/src/components/{radio → atoms/radio}/radio.stories.tsx +1 -3
- package/src/components/{radio → atoms/radio}/radio.tsx +1 -1
- package/src/components/{segmented-control → atoms/segmented-control}/segmented-control.doc.mdx +2 -2
- package/src/components/{segmented-control → atoms/segmented-control}/segmented-control.stories.tsx +1 -2
- package/src/components/{segmented-control → atoms/segmented-control}/segmented-control.tsx +1 -1
- package/src/components/{skeleton → atoms/skeleton}/skeleton.doc.mdx +2 -2
- package/src/components/{skeleton → atoms/skeleton}/skeleton.stories.tsx +2 -3
- package/src/components/{slide → atoms/slide}/slide.doc.mdx +2 -2
- package/src/components/{slide → atoms/slide}/slide.stories.tsx +1 -2
- package/src/components/{slider → atoms/slider}/slider.doc.mdx +2 -2
- package/src/components/{slider → atoms/slider}/slider.stories.tsx +1 -2
- package/src/components/{slider → atoms/slider}/slider.tsx +1 -1
- package/src/components/{stack → atoms/stack}/stack.doc.mdx +2 -2
- package/src/components/{stack → atoms/stack}/stack.stories.tsx +2 -3
- package/src/components/{text → atoms/text}/text.doc.mdx +2 -2
- package/src/components/{text → atoms/text}/text.stories.tsx +1 -2
- package/src/components/{textarea → atoms/textarea}/textarea.doc.mdx +2 -2
- package/src/components/{textarea → atoms/textarea}/textarea.props.ts +0 -2
- package/src/components/{textarea → atoms/textarea}/textarea.stories.tsx +1 -2
- package/src/components/{textarea → atoms/textarea}/textarea.tsx +1 -1
- package/src/components/{tooltip → atoms/tooltip}/tooltip.doc.mdx +2 -2
- package/src/components/{tooltip → atoms/tooltip}/tooltip.stories.tsx +2 -3
- package/src/components/{tooltip → atoms/tooltip}/tooltip.tsx +1 -1
- package/src/components/isolation/isolation.stories.tsx +202 -0
- package/src/components/{alert → molecules/alert}/alert.doc.mdx +2 -2
- package/src/components/{alert → molecules/alert}/alert.stories.tsx +1 -2
- package/src/components/{alert → molecules/alert}/alert.tsx +1 -2
- package/src/components/{breadcrumbs → molecules/breadcrumbs}/breadcrumbs.doc.mdx +2 -2
- package/src/components/{breadcrumbs → molecules/breadcrumbs}/breadcrumbs.stories.tsx +1 -2
- package/src/components/{breadcrumbs → molecules/breadcrumbs}/breadcrumbs.tsx +1 -1
- package/src/components/{calendar → molecules/calendar}/calendar.doc.mdx +2 -2
- package/src/components/{calendar → molecules/calendar}/calendar.stories.tsx +1 -2
- package/src/components/{calendar → molecules/calendar}/calendar.tsx +42 -42
- package/src/components/molecules/calendar/index.ts +2 -0
- package/src/components/{card → molecules/card}/card.doc.mdx +2 -2
- package/src/components/{card → molecules/card}/card.stories.tsx +2 -3
- package/src/components/{card → molecules/card}/card.tsx +4 -4
- package/src/components/{date-picker → molecules/date-picker}/date-picker.doc.mdx +3 -3
- package/src/components/{date-picker → molecules/date-picker}/date-picker.props.ts +1 -1
- package/src/components/{date-picker → molecules/date-picker}/date-picker.stories.tsx +1 -3
- package/src/components/{date-picker → molecules/date-picker}/datePicker.tsx +3 -3
- package/src/components/{empty-state → molecules/empty-state}/empty-state.doc.mdx +3 -3
- package/src/components/{empty-state → molecules/empty-state}/empty-state.stories.tsx +3 -4
- package/src/components/{empty-state → molecules/empty-state}/empty-state.tsx +1 -1
- package/src/components/{form-header → molecules/form-header}/form-header.doc.mdx +2 -2
- package/src/components/{form-header → molecules/form-header}/form-header.stories.tsx +1 -2
- package/src/components/{form-header → molecules/form-header}/form-header.tsx +2 -2
- package/src/components/{pagination → molecules/pagination}/pagination.doc.mdx +2 -2
- package/src/components/{pagination → molecules/pagination}/pagination.stories.tsx +1 -2
- package/src/components/{pagination → molecules/pagination}/pagination.tsx +8 -8
- package/src/components/{search-select → molecules/search-select}/index.ts +1 -1
- package/src/components/{search-select → molecules/search-select}/search-select.doc.mdx +2 -2
- package/src/components/{search-select → molecules/search-select}/search-select.props.ts +3 -0
- package/src/components/{search-select → molecules/search-select}/search-select.stories.tsx +1 -2
- package/src/components/{search-select → molecules/search-select}/search-select.tsx +8 -6
- package/src/components/{select → molecules/select}/select.doc.mdx +2 -2
- package/src/components/{select → molecules/select}/select.stories.tsx +1 -2
- package/src/components/{select → molecules/select}/select.tsx +8 -16
- package/src/components/{stat-card → molecules/stat-card}/stat-card.doc.mdx +2 -2
- package/src/components/{stat-card → molecules/stat-card}/stat-card.stories.tsx +2 -3
- package/src/components/{stat-card → molecules/stat-card}/stat-card.tsx +1 -1
- package/src/components/{stepper → molecules/stepper}/stepper.doc.mdx +2 -2
- package/src/components/{stepper → molecules/stepper}/stepper.stories.tsx +1 -2
- package/src/components/{stepper → molecules/stepper}/stepper.tsx +9 -10
- package/src/components/{table → molecules/table}/table.doc.mdx +2 -2
- package/src/components/{table → molecules/table}/table.stories.tsx +5 -22
- package/src/components/{table → molecules/table}/table.tsx +5 -15
- package/src/components/{tabs → molecules/tabs}/tabs.doc.mdx +2 -2
- package/src/components/{tabs → molecules/tabs}/tabs.stories.tsx +1 -2
- package/src/components/{tabs → molecules/tabs}/tabs.tsx +1 -1
- package/src/components/{time-picker → molecules/time-picker}/timePicker.doc.mdx +3 -3
- package/src/components/{time-picker → molecules/time-picker}/timePicker.props.ts +4 -2
- package/src/components/{time-picker → molecules/time-picker}/timePicker.stories.tsx +3 -4
- package/src/components/{time-picker → molecules/time-picker}/timePicker.tsx +5 -5
- package/src/components/{confirm-dialog → organisms/confirm-dialog}/confirm-dialog.doc.mdx +2 -2
- package/src/components/{confirm-dialog → organisms/confirm-dialog}/confirm-dialog.stories.tsx +2 -3
- package/src/components/{confirm-dialog → organisms/confirm-dialog}/confirm-dialog.tsx +4 -4
- package/src/components/{data-table → organisms/data-table}/ITDataTable.doc.mdx +2 -2
- package/src/components/{data-table → organisms/data-table}/ITDataTable.stories.tsx +3 -4
- package/src/components/{data-table → organisms/data-table}/dataTable.props.ts +1 -1
- package/src/components/{data-table → organisms/data-table}/dataTable.tsx +7 -8
- package/src/components/{dialog → organisms/dialog}/dialog.doc.mdx +2 -2
- package/src/components/{dialog → organisms/dialog}/dialog.stories.tsx +3 -5
- package/src/components/{dialog → organisms/dialog}/dialog.tsx +2 -2
- package/src/components/{drawer → organisms/drawer}/drawer.doc.mdx +2 -2
- package/src/components/{drawer → organisms/drawer}/drawer.stories.tsx +2 -3
- package/src/components/{drawer → organisms/drawer}/drawer.tsx +1 -1
- package/src/components/{dropfile → organisms/dropfile}/dropfile.doc.mdx +3 -3
- package/src/components/{dropfile → organisms/dropfile}/dropfile.props.ts +8 -4
- package/src/components/{dropfile → organisms/dropfile}/dropfile.stories.tsx +2 -5
- package/src/components/{dropfile → organisms/dropfile}/dropfile.tsx +25 -12
- package/src/components/{form-builder → organisms/form-builder}/fieldRenderer.tsx +30 -20
- package/src/components/{form-builder → organisms/form-builder}/formBuilder.context.tsx +3 -2
- package/src/components/{form-builder → organisms/form-builder}/formBuilder.doc.mdx +2 -2
- package/src/components/{form-builder → organisms/form-builder}/formBuilder.stories.tsx +0 -1
- package/src/components/{form-builder → organisms/form-builder}/formBuilder.tsx +4 -5
- package/src/components/{form-builder → organisms/form-builder}/useFormBuilder.ts +4 -4
- package/src/components/{navbar → organisms/navbar}/navbar.doc.mdx +2 -2
- package/src/components/{navbar → organisms/navbar}/navbar.stories.tsx +1 -2
- package/src/components/{navbar → organisms/navbar}/navbar.tsx +1 -1
- package/src/components/{page-header → organisms/page-header}/page-header.doc.mdx +2 -2
- package/src/components/{page-header → organisms/page-header}/page-header.props.ts +1 -1
- package/src/components/{page-header → organisms/page-header}/page-header.stories.tsx +5 -6
- package/src/components/{page-header → organisms/page-header}/page-header.tsx +2 -2
- package/src/components/{searchTable → organisms/searchTable}/components/EditableCell.tsx +4 -5
- package/src/components/{searchTable → organisms/searchTable}/components/PaginationControls.tsx +6 -6
- package/src/components/{searchTable → organisms/searchTable}/components/PaginationInfo.tsx +1 -1
- package/src/components/{searchTable → organisms/searchTable}/components/SearchAndSortBar.tsx +3 -3
- package/src/components/{searchTable → organisms/searchTable}/components/SearchInput.tsx +1 -1
- package/src/components/{searchTable → organisms/searchTable}/components/SortButton.tsx +1 -1
- package/src/components/{searchTable → organisms/searchTable}/components/TableEmptyState.tsx +1 -1
- package/src/components/{searchTable → organisms/searchTable}/components/TableHeaderCell.tsx +1 -1
- package/src/components/{searchTable → organisms/searchTable}/searchTable.doc.mdx +2 -2
- package/src/components/{searchTable → organisms/searchTable}/searchTable.stories.tsx +1 -2
- package/src/components/{searchTable → organisms/searchTable}/searchTable.tsx +1 -2
- package/src/components/{sidebar → organisms/sidebar}/sidebar.doc.mdx +2 -2
- package/src/components/{sidebar → organisms/sidebar}/sidebar.stories.tsx +1 -2
- package/src/components/{sidebar → organisms/sidebar}/sidebar.tsx +45 -43
- package/src/components/{toast → organisms/toast}/toast.doc.mdx +2 -2
- package/src/components/{toast → organisms/toast}/toast.stories.tsx +2 -3
- package/src/components/{toast → organisms/toast}/toast.tsx +1 -2
- package/src/components/{topbar → organisms/topbar}/topbar.doc.mdx +2 -2
- package/src/components/{topbar → organisms/topbar}/topbar.stories.tsx +1 -2
- package/src/components/{topbar → organisms/topbar}/topbar.tsx +25 -25
- package/src/components/{triple-filter → organisms/triple-filter}/tripleFilter.doc.mdx +2 -2
- package/src/components/{triple-filter → organisms/triple-filter}/tripleFilter.props.ts +0 -1
- package/src/components/{triple-filter → organisms/triple-filter}/tripleFilter.stories.tsx +0 -1
- package/src/components/{triple-filter → organisms/triple-filter}/tripleFilter.tsx +1 -1
- package/src/components/{layout → templates/layout}/layout.doc.mdx +2 -2
- package/src/components/{layout → templates/layout}/layout.props.ts +2 -2
- package/src/components/{layout → templates/layout}/layout.stories.tsx +1 -2
- package/src/components/{layout → templates/layout}/layout.tsx +2 -2
- package/src/components/{page → templates/page}/page.doc.mdx +2 -2
- package/src/components/{page → templates/page}/page.props.ts +1 -1
- package/src/components/{page → templates/page}/page.stories.tsx +6 -7
- package/src/components/{page → templates/page}/page.tsx +6 -6
- package/src/components/theme-provider/themePresets.ts +154 -0
- package/src/components/theme-provider/themeProvider.doc.mdx +10 -2
- package/src/components/theme-provider/themeProvider.props.ts +6 -0
- package/src/components/theme-provider/themeProvider.stories.tsx +3 -4
- package/src/components/theme-provider/themeProvider.tsx +210 -268
- package/src/hooks/useEditableRow.ts +1 -1
- package/src/index.css +36 -86
- package/src/index.ts +97 -97
- package/src/showcases/DataShowcases.tsx +4 -8
- package/src/showcases/FeedbackShowcases.tsx +6 -6
- package/src/showcases/FormShowcases.tsx +7 -7
- package/src/showcases/GettingStartedShowcase.tsx +8 -9
- package/src/showcases/HomeShowcase.tsx +12 -12
- package/src/showcases/LayoutPrimitivesShowcases.tsx +36 -57
- package/src/showcases/PageShowcases.tsx +41 -53
- package/src/showcases/ShowcaseLayout.tsx +1 -2
- package/src/showcases/SizesShowcase.tsx +85 -0
- package/src/showcases/StructureShowcases.tsx +31 -33
- package/src/theme/theme-context.ts +37 -0
- package/src/theme/theme.ts +71 -64
- package/src/theme/theme.types.ts +41 -0
- package/src/types/badget.types.ts +3 -3
- package/src/types/button.types.ts +3 -3
- package/src/types/sizes.types.ts +2 -1
- package/src/utils/styles.ts +37 -0
- package/src/components/calendar/index.ts +0 -3
- package/src/components/stepper/stepper.css +0 -26
- package/src/components/toast/toast.css +0 -32
- package/src/types/input.types.ts +0 -14
- /package/src/components/{avatar → atoms/avatar}/avatar.props.ts +0 -0
- /package/src/components/{checkbox → atoms/checkbox}/checkbox.props.ts +0 -0
- /package/src/components/{divider → atoms/divider}/divider.props.ts +0 -0
- /package/src/components/{divider → atoms/divider}/divider.tsx +0 -0
- /package/src/components/{flex → atoms/flex}/flex.props.ts +0 -0
- /package/src/components/{flex → atoms/flex}/flex.tsx +0 -0
- /package/src/components/{grid → atoms/grid}/grid.props.ts +0 -0
- /package/src/components/{grid → atoms/grid}/grid.tsx +0 -0
- /package/src/components/{image → atoms/image}/image.props.ts +0 -0
- /package/src/components/{image → atoms/image}/image.tsx +0 -0
- /package/src/components/{loader → atoms/loader}/loader.props.ts +0 -0
- /package/src/components/{popover → atoms/popover}/popover.props.ts +0 -0
- /package/src/components/{popover → atoms/popover}/popover.tsx +0 -0
- /package/src/components/{progress → atoms/progress}/progress.props.ts +0 -0
- /package/src/components/{progress → atoms/progress}/progress.tsx +0 -0
- /package/src/components/{radio → atoms/radio}/radio.props.ts +0 -0
- /package/src/components/{segmented-control → atoms/segmented-control}/segmented-control.props.ts +0 -0
- /package/src/components/{skeleton → atoms/skeleton}/skeleton.props.ts +0 -0
- /package/src/components/{skeleton → atoms/skeleton}/skeleton.tsx +0 -0
- /package/src/components/{slide → atoms/slide}/slide.props.ts +0 -0
- /package/src/components/{slide → atoms/slide}/slide.tsx +0 -0
- /package/src/components/{slider → atoms/slider}/slider.props.ts +0 -0
- /package/src/components/{stack → atoms/stack}/stack.props.ts +0 -0
- /package/src/components/{stack → atoms/stack}/stack.tsx +0 -0
- /package/src/components/{text → atoms/text}/text.props.ts +0 -0
- /package/src/components/{text → atoms/text}/text.tsx +0 -0
- /package/src/components/{tooltip → atoms/tooltip}/tooltip.props.ts +0 -0
- /package/src/components/{alert → molecules/alert}/alert.props.ts +0 -0
- /package/src/components/{breadcrumbs → molecules/breadcrumbs}/breadcrumbs.props.ts +0 -0
- /package/src/components/{calendar → molecules/calendar}/calendar.props.ts +0 -0
- /package/src/components/{card → molecules/card}/card.props.ts +0 -0
- /package/src/components/{empty-state → molecules/empty-state}/empty-state.props.ts +0 -0
- /package/src/components/{form-header → molecules/form-header}/form-header.props.ts +0 -0
- /package/src/components/{pagination → molecules/pagination}/pagination.props.ts +0 -0
- /package/src/components/{select → molecules/select}/select.props.ts +0 -0
- /package/src/components/{stat-card → molecules/stat-card}/stat-card.props.ts +0 -0
- /package/src/components/{stepper → molecules/stepper}/stepper.props.ts +0 -0
- /package/src/components/{table → molecules/table}/table.props.ts +0 -0
- /package/src/components/{tabs → molecules/tabs}/tabs.props.ts +0 -0
- /package/src/components/{confirm-dialog → organisms/confirm-dialog}/confirm-dialog.props.ts +0 -0
- /package/src/components/{dialog → organisms/dialog}/dialog.props.ts +0 -0
- /package/src/components/{drawer → organisms/drawer}/drawer.props.ts +0 -0
- /package/src/components/{form-builder → organisms/form-builder}/formBuilder.props.ts +0 -0
- /package/src/components/{navbar → organisms/navbar}/navbar.props.ts +0 -0
- /package/src/components/{searchTable → organisms/searchTable}/components/TableHeader.tsx +0 -0
- /package/src/components/{searchTable → organisms/searchTable}/components/TableRow.tsx +0 -0
- /package/src/components/{searchTable → organisms/searchTable}/searchTable.props.ts +0 -0
- /package/src/components/{sidebar → organisms/sidebar}/sidebar.props.ts +0 -0
- /package/src/components/{toast → organisms/toast}/toast.props.ts +0 -0
- /package/src/components/{topbar → organisms/topbar}/topbar.props.ts +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Meta, Title, Description, Primary, Controls, Stories } from '@storybook/blocks';
|
|
2
|
-
import * as
|
|
2
|
+
import * as StoriesData from './searchTable.stories';
|
|
3
3
|
|
|
4
|
-
<Meta of={
|
|
4
|
+
<Meta of={StoriesData} />
|
|
5
5
|
|
|
6
6
|
# ITSearchTable
|
|
7
7
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Meta, StoryObj } from '@storybook/react';
|
|
2
|
-
import ITSearchTable from '
|
|
2
|
+
import ITSearchTable from '@/components/organisms/searchTable/searchTable';
|
|
3
3
|
import { SearchColumn } from './searchTable.props';
|
|
4
4
|
|
|
5
5
|
interface SampleRow {
|
|
@@ -26,7 +26,6 @@ const meta = {
|
|
|
26
26
|
title: 'Components/Data Display/ITSearchTable',
|
|
27
27
|
component: ITSearchTable,
|
|
28
28
|
parameters: { layout: 'padded' },
|
|
29
|
-
tags: ['autodocs'],
|
|
30
29
|
argTypes: {
|
|
31
30
|
columns: { control: false, description: 'Column definitions' },
|
|
32
31
|
data: { control: false, description: 'Row data array' },
|
|
@@ -10,7 +10,7 @@ import TableRow from "./components/TableRow";
|
|
|
10
10
|
import { getNestedValue } from "@/utils/table.utils";
|
|
11
11
|
import TableEmptyState from "./components/TableEmptyState";
|
|
12
12
|
import PaginationControls from "./components/PaginationControls";
|
|
13
|
-
import ITText from "@/components/text/text";
|
|
13
|
+
import ITText from "@/components/atoms/text/text";
|
|
14
14
|
|
|
15
15
|
interface CustomITSearchTableProps<T> extends ITSearchTableProps<T> {
|
|
16
16
|
editingRow?: number | null;
|
|
@@ -54,7 +54,6 @@ export default function ITSearchTable<T extends Record<string, unknown>>({
|
|
|
54
54
|
containerClassName,
|
|
55
55
|
searchTermInitial = "",
|
|
56
56
|
searchInputPlaceholder = "Buscar en todos los campos...",
|
|
57
|
-
className,
|
|
58
57
|
variant = "default",
|
|
59
58
|
size = "md",
|
|
60
59
|
itemsPerPageOptions = [10, 20, 50, 100],
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Meta, StoryObj } from '@storybook/react';
|
|
2
|
-
import ITSidebar from '
|
|
2
|
+
import ITSidebar from '@/components/organisms/sidebar/sidebar';
|
|
3
3
|
import { FaHome, FaUsers, FaCog, FaChartBar, FaShieldAlt } from 'react-icons/fa';
|
|
4
4
|
|
|
5
5
|
const meta: Meta<typeof ITSidebar> = {
|
|
@@ -13,7 +13,6 @@ const meta: Meta<typeof ITSidebar> = {
|
|
|
13
13
|
},
|
|
14
14
|
},
|
|
15
15
|
},
|
|
16
|
-
tags: ['autodocs'],
|
|
17
16
|
};
|
|
18
17
|
|
|
19
18
|
export default meta;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { useEffect, useRef, useState } from "react";
|
|
2
2
|
import { FaChevronDown } from "react-icons/fa";
|
|
3
3
|
import { ITNavigationItem, ITSidebarProps } from "./sidebar.props";
|
|
4
|
-
import ITText from "@/components/text/text";
|
|
4
|
+
import ITText from "@/components/atoms/text/text";
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* Vertical navigation sidebar with submenu expand/collapse, hover tooltips in collapsed mode,
|
|
@@ -28,7 +28,6 @@ import ITText from "@/components/text/text";
|
|
|
28
28
|
export default function ITSidebar({
|
|
29
29
|
navigationItems = [],
|
|
30
30
|
isCollapsed = false,
|
|
31
|
-
onToggleCollapse,
|
|
32
31
|
className = "",
|
|
33
32
|
visibleOnMobile = false,
|
|
34
33
|
onItemClick,
|
|
@@ -42,6 +41,9 @@ export default function ITSidebar({
|
|
|
42
41
|
const leaveTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);
|
|
43
42
|
|
|
44
43
|
useEffect(() => {
|
|
44
|
+
const hoverTimer = hoverTimeoutRef.current;
|
|
45
|
+
const leaveTimer = leaveTimeoutRef.current;
|
|
46
|
+
|
|
45
47
|
const handleMouseEnter = () => {
|
|
46
48
|
if (hoverTimeoutRef.current) clearTimeout(hoverTimeoutRef.current);
|
|
47
49
|
if (leaveTimeoutRef.current) clearTimeout(leaveTimeoutRef.current);
|
|
@@ -64,8 +66,8 @@ export default function ITSidebar({
|
|
|
64
66
|
sidebar.removeEventListener("mouseenter", handleMouseEnter);
|
|
65
67
|
sidebar.removeEventListener("mouseleave", handleMouseLeave);
|
|
66
68
|
}
|
|
67
|
-
if (
|
|
68
|
-
if (
|
|
69
|
+
if (hoverTimer) clearTimeout(hoverTimer);
|
|
70
|
+
if (leaveTimer) clearTimeout(leaveTimer);
|
|
69
71
|
};
|
|
70
72
|
}, [isCollapsed]);
|
|
71
73
|
|
|
@@ -125,30 +127,30 @@ export default function ITSidebar({
|
|
|
125
127
|
`}
|
|
126
128
|
style={{
|
|
127
129
|
zIndex: 50,
|
|
128
|
-
backgroundColor: "var(--sidebar-bg, rgba(255, 255, 255, 0.90))",
|
|
129
|
-
borderRight: "1px solid var(--sidebar-border, var(--color-secondary-200))",
|
|
130
|
+
backgroundColor: "var(--it-sidebar-bg, rgba(255, 255, 255, 0.90))",
|
|
131
|
+
borderRight: "1px solid var(--it-sidebar-border, var(--color-secondary-200))",
|
|
130
132
|
WebkitBackdropFilter: 'blur(12px)',
|
|
131
133
|
backdropFilter: 'blur(12px)',
|
|
132
134
|
}}
|
|
133
135
|
>
|
|
134
136
|
{/* Navigation Items */}
|
|
135
|
-
<nav className="flex-1 py-
|
|
136
|
-
<ul className="space-y-
|
|
137
|
+
<nav className="flex-1 py-4 overflow-y-auto overflow-x-hidden custom-scrollbar px-4">
|
|
138
|
+
<ul className="space-y-1">
|
|
137
139
|
{navigationItems.map((item) => (
|
|
138
140
|
<li key={item.id} className="relative group/navitem">
|
|
139
141
|
<div
|
|
140
142
|
className={`flex items-center cursor-pointer
|
|
141
143
|
transition-all duration-300 ease-[cubic-bezier(0.2,0,0,1)]
|
|
142
144
|
rounded-xl relative overflow-visible
|
|
143
|
-
${isSidebarCollapsed ? "justify-center p-2
|
|
145
|
+
${isSidebarCollapsed ? "justify-center p-2 mb-1" : "justify-between px-3 py-2 mb-0.5"}
|
|
144
146
|
`}
|
|
145
147
|
style={{
|
|
146
|
-
backgroundColor: item.isActive ? "var(--sidebar-active-bg, var(--color-secondary-50))" : 'transparent',
|
|
148
|
+
backgroundColor: item.isActive ? "var(--it-sidebar-active-bg, var(--color-secondary-50))" : 'transparent',
|
|
147
149
|
boxShadow: item.isActive ? 'var(--shadow-xs)' : 'none',
|
|
148
|
-
border: item.isActive ? "1px solid var(--sidebar-border, var(--color-secondary-200))" : '1px solid transparent'
|
|
150
|
+
border: item.isActive ? "1px solid var(--it-sidebar-border, var(--color-secondary-200))" : '1px solid transparent'
|
|
149
151
|
}}
|
|
150
152
|
onMouseEnter={(e) => {
|
|
151
|
-
if (!item.isActive) e.currentTarget.style.backgroundColor = "var(--sidebar-hover-bg, var(--color-secondary-100))";
|
|
153
|
+
if (!item.isActive) e.currentTarget.style.backgroundColor = "var(--it-sidebar-hover-bg, var(--color-secondary-100))";
|
|
152
154
|
}}
|
|
153
155
|
onMouseLeave={(e) => {
|
|
154
156
|
if (!item.isActive) e.currentTarget.style.backgroundColor = 'transparent';
|
|
@@ -158,18 +160,18 @@ export default function ITSidebar({
|
|
|
158
160
|
{item.isActive && !isSidebarCollapsed && (
|
|
159
161
|
<div
|
|
160
162
|
className="absolute left-0 top-1/4 bottom-1/4 w-[3px] rounded-r-full transition-all"
|
|
161
|
-
style={{ backgroundColor: "var(--sidebar-active-icon, var(--color-primary-500))", boxShadow: "0 0 10px var(--sidebar-active-icon, var(--color-primary-500))" }}
|
|
163
|
+
style={{ backgroundColor: "var(--it-sidebar-active-icon, var(--color-primary-500))", boxShadow: "0 0 10px var(--it-sidebar-active-icon, var(--color-primary-500))" }}
|
|
162
164
|
/>
|
|
163
165
|
)}
|
|
164
166
|
|
|
165
|
-
<div className={`flex items-center ${!isSidebarCollapsed ? "gap-
|
|
167
|
+
<div className={`flex items-center ${!isSidebarCollapsed ? "gap-2.5" : "justify-center"} relative z-10 w-full`}>
|
|
166
168
|
{item.icon && (
|
|
167
169
|
<div
|
|
168
170
|
className={`transition-all duration-300 flex-shrink-0 flex items-center justify-center`}
|
|
169
171
|
style={{
|
|
170
|
-
color: item.isActive ? "var(--sidebar-active-icon, var(--color-primary-500))" : "var(--sidebar-icon-color, #9ca3af)",
|
|
172
|
+
color: item.isActive ? "var(--it-sidebar-active-icon, var(--color-primary-500))" : "var(--it-sidebar-icon-color, #9ca3af)",
|
|
171
173
|
opacity: item.isActive ? 1 : 0.8,
|
|
172
|
-
fontSize: item.isActive ? '1.
|
|
174
|
+
fontSize: item.isActive ? '1.12rem' : '1.05rem',
|
|
173
175
|
filter: item.isActive ? 'drop-shadow(0 0 8px rgba(255,255,255,0.2))' : 'none'
|
|
174
176
|
}}
|
|
175
177
|
>
|
|
@@ -181,8 +183,8 @@ export default function ITSidebar({
|
|
|
181
183
|
<ITText as="span"
|
|
182
184
|
className={`transition-all duration-300 truncate tracking-wide`}
|
|
183
185
|
style={{
|
|
184
|
-
color: item.isActive ? "var(--sidebar-active-color, #ffffff)" : "var(--sidebar-label-color, var(--color-secondary-300))",
|
|
185
|
-
fontSize: '0.
|
|
186
|
+
color: item.isActive ? "var(--it-sidebar-active-color, #ffffff)" : "var(--it-sidebar-label-color, var(--color-secondary-300))",
|
|
187
|
+
fontSize: '0.8rem',
|
|
186
188
|
fontWeight: item.isActive ? '600' : '500'
|
|
187
189
|
}}
|
|
188
190
|
>
|
|
@@ -193,7 +195,7 @@ export default function ITSidebar({
|
|
|
193
195
|
|
|
194
196
|
{!isSidebarCollapsed && item.subitems && item.subitems.length > 0 && (
|
|
195
197
|
<div className={`flex-shrink-0 transition-transform duration-300 ease-[cubic-bezier(0.2,0,0,1)] ${expandedItems.has(item.id) ? "rotate-180" : ""}`}
|
|
196
|
-
style={{ color: item.isActive ? "var(--sidebar-active-color, var(--color-secondary-900))" : "var(--sidebar-icon-color, var(--color-secondary-500))", opacity: 0.7 }}>
|
|
198
|
+
style={{ color: item.isActive ? "var(--it-sidebar-active-color, var(--color-secondary-900))" : "var(--it-sidebar-icon-color, var(--color-secondary-500))", opacity: 0.7 }}>
|
|
197
199
|
<FaChevronDown className="w-3 h-3" />
|
|
198
200
|
</div>
|
|
199
201
|
)}
|
|
@@ -204,12 +206,12 @@ export default function ITSidebar({
|
|
|
204
206
|
absolute flex items-center justify-center font-bold shadow-md
|
|
205
207
|
${isSidebarCollapsed
|
|
206
208
|
? "top-1 right-1 w-2.5 h-2.5 rounded-full ring-2 ring-white"
|
|
207
|
-
: "right-3 top-1/2 transform -translate-y-1/2 px-
|
|
209
|
+
: "right-3 top-1/2 transform -translate-y-1/2 px-1.5 py-0 text-[9px] rounded-full backdrop-blur-sm"}
|
|
208
210
|
`}
|
|
209
211
|
style={{
|
|
210
|
-
backgroundColor: "var(--sidebar-badge-bg, var(--color-primary-500))",
|
|
211
|
-
color: "var(--sidebar-badge-color, #ffffff)",
|
|
212
|
-
boxShadow: isSidebarCollapsed ? "0 0 0 2px var(--sidebar-bg, var(--color-secondary-900))" : 'none'
|
|
212
|
+
backgroundColor: "var(--it-sidebar-badge-bg, var(--color-primary-500))",
|
|
213
|
+
color: "var(--it-sidebar-badge-color, #ffffff)",
|
|
214
|
+
boxShadow: isSidebarCollapsed ? "0 0 0 2px var(--it-sidebar-bg, var(--color-secondary-900))" : 'none'
|
|
213
215
|
}}
|
|
214
216
|
>
|
|
215
217
|
{isSidebarCollapsed ? "" : item.badge}
|
|
@@ -222,14 +224,14 @@ export default function ITSidebar({
|
|
|
222
224
|
<div
|
|
223
225
|
className="absolute left-full top-0 ml-4 rounded-2xl opacity-0 invisible group-hover/navitem:opacity-100 group-hover/navitem:visible transition-all duration-300 pointer-events-none z-[70] min-w-[220px] overflow-hidden -translate-x-2 group-hover/navitem:translate-x-0 shadow-[0_10px_40px_-10px_rgba(0,0,0,0.15)]"
|
|
224
226
|
style={{
|
|
225
|
-
backgroundColor: "var(--sidebar-bg, #ffffff)",
|
|
226
|
-
border: "1px solid var(--sidebar-border, var(--color-secondary-200))",
|
|
227
|
+
backgroundColor: "var(--it-sidebar-bg, #ffffff)",
|
|
228
|
+
border: "1px solid var(--it-sidebar-border, var(--color-secondary-200))",
|
|
227
229
|
WebkitBackdropFilter: 'blur(16px)',
|
|
228
230
|
backdropFilter: 'blur(16px)',
|
|
229
231
|
}}
|
|
230
232
|
>
|
|
231
|
-
<div className="px-5 py-4 flex items-center gap-3 font-semibold border-b" style={{ borderColor: "var(--sidebar-border, var(--color-secondary-200))", color: "var(--sidebar-active-color, var(--color-secondary-900))" }}>
|
|
232
|
-
{item.icon && <span style={{ color: "var(--sidebar-active-icon, var(--color-primary-500))" }} className="text-xl drop-shadow-sm">{item.icon}</span>}
|
|
233
|
+
<div className="px-5 py-4 flex items-center gap-3 font-semibold border-b" style={{ borderColor: "var(--it-sidebar-border, var(--color-secondary-200))", color: "var(--it-sidebar-active-color, var(--color-secondary-900))" }}>
|
|
234
|
+
{item.icon && <span style={{ color: "var(--it-sidebar-active-icon, var(--color-primary-500))" }} className="text-xl drop-shadow-sm">{item.icon}</span>}
|
|
233
235
|
<ITText as="span" className="tracking-wide text-[15px]">{item.label}</ITText>
|
|
234
236
|
</div>
|
|
235
237
|
|
|
@@ -244,18 +246,18 @@ export default function ITSidebar({
|
|
|
244
246
|
<div
|
|
245
247
|
className="absolute left-0 top-1/3 bottom-1/3 w-[2.5px] rounded-r-full"
|
|
246
248
|
style={{
|
|
247
|
-
backgroundColor: "var(--sidebar-active-icon, var(--color-primary-500))",
|
|
248
|
-
boxShadow: "0 0 6px color-mix(in srgb, var(--sidebar-active-icon, var(--color-primary-500)) 25%, transparent)",
|
|
249
|
+
backgroundColor: "var(--it-sidebar-active-icon, var(--color-primary-500))",
|
|
250
|
+
boxShadow: "0 0 6px color-mix(in srgb, var(--it-sidebar-active-icon, var(--color-primary-500)) 25%, transparent)",
|
|
249
251
|
}}
|
|
250
252
|
/>
|
|
251
253
|
)}
|
|
252
|
-
<span className={`w-1.5 h-1.5 rounded-full transition-all ${subitem.isActive ? "scale-125" : ""}`} style={{ backgroundColor: subitem.isActive ? "var(--sidebar-active-icon, var(--color-primary-500))" : "var(--sidebar-icon-color, var(--color-secondary-400))" }} />
|
|
253
|
-
<ITText as="span" style={{ color: subitem.isActive ? "var(--sidebar-active-color, var(--color-secondary-900))" : "var(--sidebar-label-color, var(--color-secondary-600))", fontWeight: subitem.isActive ? 600 : 500 }}>{subitem.label}</ITText>
|
|
254
|
+
<span className={`w-1.5 h-1.5 rounded-full transition-all ${subitem.isActive ? "scale-125" : ""}`} style={{ backgroundColor: subitem.isActive ? "var(--it-sidebar-active-icon, var(--color-primary-500))" : "var(--it-sidebar-icon-color, var(--color-secondary-400))" }} />
|
|
255
|
+
<ITText as="span" style={{ color: subitem.isActive ? "var(--it-sidebar-active-color, var(--color-secondary-900))" : "var(--it-sidebar-label-color, var(--color-secondary-600))", fontWeight: subitem.isActive ? 600 : 500 }}>{subitem.label}</ITText>
|
|
254
256
|
</div>
|
|
255
257
|
))}
|
|
256
258
|
</div>
|
|
257
259
|
) : (
|
|
258
|
-
<ITText as="div" className="px-5 py-3 text-sm italic" style={{ color: "var(--sidebar-label-color, var(--color-secondary-400))" }}>No hay submenú</ITText>
|
|
260
|
+
<ITText as="div" className="px-5 py-3 text-sm italic" style={{ color: "var(--it-sidebar-label-color, var(--color-secondary-400))" }}>No hay submenú</ITText>
|
|
259
261
|
)}
|
|
260
262
|
</div>
|
|
261
263
|
)}
|
|
@@ -264,10 +266,10 @@ export default function ITSidebar({
|
|
|
264
266
|
{!isSidebarCollapsed && item.subitems && item.subitems.length > 0 && (
|
|
265
267
|
<div className={`overflow-hidden transition-all duration-400 ease-[cubic-bezier(0.2,0,0,1)] ${expandedItems.has(item.id) ? "max-h-[500px] opacity-100 mt-1" : "max-h-0 opacity-0"}`}>
|
|
266
268
|
<ul
|
|
267
|
-
className="ml-
|
|
269
|
+
className="ml-4 flex flex-col gap-0 py-0.5"
|
|
268
270
|
style={{
|
|
269
271
|
borderLeft: subitemConnector === '|'
|
|
270
|
-
? "1px solid var(--sidebar-border, var(--color-secondary-200))"
|
|
272
|
+
? "1px solid var(--it-sidebar-border, var(--color-secondary-200))"
|
|
271
273
|
: 'none'
|
|
272
274
|
}}
|
|
273
275
|
>
|
|
@@ -278,18 +280,18 @@ export default function ITSidebar({
|
|
|
278
280
|
if (subitem.action) subitem.action();
|
|
279
281
|
if (onSubItemClick) onSubItemClick(subitem);
|
|
280
282
|
}}
|
|
281
|
-
className={`flex items-center gap-2
|
|
283
|
+
className={`flex items-center gap-2 w-full text-left px-3 py-1.5 rounded-xl transition-all duration-300`}
|
|
282
284
|
style={{
|
|
283
|
-
color: subitem.isActive ? "var(--sidebar-active-color, var(--color-secondary-900))" : "var(--sidebar-label-color, var(--color-secondary-600))",
|
|
284
|
-
backgroundColor: subitem.isActive ? "var(--sidebar-active-bg, var(--color-secondary-50))" : 'transparent',
|
|
285
|
-
fontSize: '0.
|
|
285
|
+
color: subitem.isActive ? "var(--it-sidebar-active-color, var(--color-secondary-900))" : "var(--it-sidebar-label-color, var(--color-secondary-600))",
|
|
286
|
+
backgroundColor: subitem.isActive ? "var(--it-sidebar-active-bg, var(--color-secondary-50))" : 'transparent',
|
|
287
|
+
fontSize: '0.78rem',
|
|
286
288
|
fontWeight: subitem.isActive ? 600 : 500,
|
|
287
289
|
letterSpacing: '0.01em',
|
|
288
290
|
marginLeft: subitemConnector === '|' ? '-1px' : '0',
|
|
289
291
|
}}
|
|
290
292
|
onMouseEnter={(e) => {
|
|
291
293
|
if (!subitem.isActive) {
|
|
292
|
-
e.currentTarget.style.backgroundColor = "var(--sidebar-hover-bg, var(--color-secondary-100))";
|
|
294
|
+
e.currentTarget.style.backgroundColor = "var(--it-sidebar-hover-bg, var(--color-secondary-100))";
|
|
293
295
|
e.currentTarget.style.transform = 'translateX(3px)';
|
|
294
296
|
}
|
|
295
297
|
}}
|
|
@@ -304,8 +306,8 @@ export default function ITSidebar({
|
|
|
304
306
|
<div
|
|
305
307
|
className="absolute left-0 top-1/3 bottom-1/3 w-[2.5px] rounded-r-full transition-all"
|
|
306
308
|
style={{
|
|
307
|
-
backgroundColor: "var(--sidebar-active-icon, var(--color-primary-500))",
|
|
308
|
-
boxShadow: "0 0 6px color-mix(in srgb, var(--sidebar-active-icon, var(--color-primary-500)) 25%, transparent)",
|
|
309
|
+
backgroundColor: "var(--it-sidebar-active-icon, var(--color-primary-500))",
|
|
310
|
+
boxShadow: "0 0 6px color-mix(in srgb, var(--it-sidebar-active-icon, var(--color-primary-500)) 25%, transparent)",
|
|
309
311
|
}}
|
|
310
312
|
/>
|
|
311
313
|
)}
|
|
@@ -314,8 +316,8 @@ export default function ITSidebar({
|
|
|
314
316
|
className={`w-1.5 h-1.5 rounded-full flex-shrink-0 transition-all duration-300 ${subitem.isActive ? 'scale-125' : ''}`}
|
|
315
317
|
style={{
|
|
316
318
|
backgroundColor: subitem.isActive
|
|
317
|
-
? "var(--sidebar-active-icon, var(--color-primary-500))"
|
|
318
|
-
: "var(--sidebar-icon-color, var(--color-secondary-400))"
|
|
319
|
+
? "var(--it-sidebar-active-icon, var(--color-primary-500))"
|
|
320
|
+
: "var(--it-sidebar-icon-color, var(--color-secondary-400))"
|
|
319
321
|
}}
|
|
320
322
|
/>
|
|
321
323
|
)}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Meta, StoryObj } from "@storybook/react";
|
|
2
|
-
import ITToast from "
|
|
2
|
+
import ITToast from "@/components/organisms/toast/toast";
|
|
3
3
|
import { useState } from "react";
|
|
4
|
-
import ITButton from "
|
|
4
|
+
import ITButton from "@/components/atoms/button/button";
|
|
5
5
|
|
|
6
6
|
const meta: Meta<typeof ITToast> = {
|
|
7
7
|
title: "Components/Feedback/ITToast",
|
|
@@ -9,7 +9,6 @@ const meta: Meta<typeof ITToast> = {
|
|
|
9
9
|
parameters: {
|
|
10
10
|
layout: "centered",
|
|
11
11
|
},
|
|
12
|
-
tags: ["autodocs"],
|
|
13
12
|
argTypes: {
|
|
14
13
|
type: {
|
|
15
14
|
control: "select",
|
|
@@ -2,10 +2,9 @@ import { positionStyles } from "@/types/toast.types";
|
|
|
2
2
|
import { theme } from "@/theme/theme";
|
|
3
3
|
import clsx from "clsx";
|
|
4
4
|
import { useEffect, useState } from "react";
|
|
5
|
-
import "./toast.css";
|
|
6
5
|
import { ITToastProps } from "./toast.props";
|
|
7
6
|
import { FaTimesCircle, FaCheckCircle, FaExclamationTriangle, FaInfoCircle, FaTimes } from "react-icons/fa";
|
|
8
|
-
import ITText from "@/components/text/text";
|
|
7
|
+
import ITText from "@/components/atoms/text/text";
|
|
9
8
|
|
|
10
9
|
/**
|
|
11
10
|
* ITToast — floating notification with automatic dismiss and severity-based styling.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Meta, StoryObj } from '@storybook/react';
|
|
2
|
-
import ITTopBar from '
|
|
2
|
+
import ITTopBar from '@/components/organisms/topbar/topbar';
|
|
3
3
|
import { FaShieldAlt, FaChartBar, FaUserCog } from 'react-icons/fa';
|
|
4
4
|
|
|
5
5
|
const meta: Meta<typeof ITTopBar> = {
|
|
@@ -13,7 +13,6 @@ const meta: Meta<typeof ITTopBar> = {
|
|
|
13
13
|
},
|
|
14
14
|
},
|
|
15
15
|
},
|
|
16
|
-
tags: ['autodocs'],
|
|
17
16
|
};
|
|
18
17
|
|
|
19
18
|
export default meta;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { FaUserCircle, FaBars } from "react-icons/fa";
|
|
2
|
-
import useClickOutside from "
|
|
2
|
+
import useClickOutside from "@/hooks/useClickOutside";
|
|
3
3
|
import { useRef, useState } from "react";
|
|
4
4
|
import { ITTopBarProps } from "./topbar.props";
|
|
5
|
-
import ITText from "@/components/text/text";
|
|
5
|
+
import ITText from "@/components/atoms/text/text";
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* ITTopBar — sticky top navigation bar with logo, nav items, and user avatar dropdown.
|
|
@@ -60,8 +60,8 @@ export default function ITTopBar({
|
|
|
60
60
|
<header
|
|
61
61
|
className="sticky top-0 z-40 backdrop-blur-md transition-all duration-300"
|
|
62
62
|
style={{
|
|
63
|
-
backgroundColor: "var(--topbar-bg, rgba(255, 255, 255, 0.9))",
|
|
64
|
-
borderBottom: "1px solid var(--topbar-border, rgba(15, 23, 42, 0.06))",
|
|
63
|
+
backgroundColor: "var(--it-topbar-bg, rgba(255, 255, 255, 0.9))",
|
|
64
|
+
borderBottom: "1px solid var(--it-topbar-border, rgba(15, 23, 42, 0.06))",
|
|
65
65
|
boxShadow: "var(--shadow-xs)",
|
|
66
66
|
}}
|
|
67
67
|
>
|
|
@@ -75,9 +75,9 @@ export default function ITTopBar({
|
|
|
75
75
|
<button
|
|
76
76
|
className="lg:hidden p-2.5 rounded-xl transition-colors duration-200"
|
|
77
77
|
style={{
|
|
78
|
-
color: "var(--topbar-icon, #64748b)",
|
|
78
|
+
color: "var(--it-topbar-icon, #64748b)",
|
|
79
79
|
}}
|
|
80
|
-
onMouseEnter={(e) => e.currentTarget.style.backgroundColor = "var(--topbar-user-hover, #f1f5f9)"}
|
|
80
|
+
onMouseEnter={(e) => e.currentTarget.style.backgroundColor = "var(--it-topbar-user-hover, #f1f5f9)"}
|
|
81
81
|
onMouseLeave={(e) => e.currentTarget.style.backgroundColor = "transparent"}
|
|
82
82
|
onClick={onToggleMobileMenu}
|
|
83
83
|
>
|
|
@@ -96,7 +96,7 @@ export default function ITTopBar({
|
|
|
96
96
|
{logoText && (
|
|
97
97
|
<ITText as="span"
|
|
98
98
|
className="text-[1.15rem] font-bold tracking-tight"
|
|
99
|
-
style={{ color: "var(--topbar-text, #0f172a)" }}
|
|
99
|
+
style={{ color: "var(--it-topbar-text, #0f172a)" }}
|
|
100
100
|
>
|
|
101
101
|
{logoText}
|
|
102
102
|
</ITText>
|
|
@@ -105,19 +105,19 @@ export default function ITTopBar({
|
|
|
105
105
|
|
|
106
106
|
{/* Top Navigation Items (Desktop) */}
|
|
107
107
|
{navItems && navItems.length > 0 && (
|
|
108
|
-
<nav className="hidden md:flex ml-8 space-x-1 border-l pl-8" style={{ borderColor: "var(--topbar-border, rgba(15, 23, 42, 0.06))" }}>
|
|
108
|
+
<nav className="hidden md:flex ml-8 space-x-1 border-l pl-8" style={{ borderColor: "var(--it-topbar-border, rgba(15, 23, 42, 0.06))" }}>
|
|
109
109
|
{navItems.map((item) => (
|
|
110
110
|
<button
|
|
111
111
|
key={item.id}
|
|
112
112
|
onClick={() => onNavItemClick?.(item.id)}
|
|
113
113
|
className="px-4 py-2 rounded-lg font-medium text-[0.9rem] transition-all duration-200 ease-[cubic-bezier(0.2,0,0,1)]"
|
|
114
|
-
style={{ color: "var(--topbar-text, #475569)" }}
|
|
114
|
+
style={{ color: "var(--it-topbar-text, #475569)" }}
|
|
115
115
|
onMouseEnter={(e) => {
|
|
116
|
-
e.currentTarget.style.color = "var(--topbar-text, #0f172a)";
|
|
117
|
-
e.currentTarget.style.backgroundColor = "var(--topbar-user-hover, #f1f5f9)";
|
|
116
|
+
e.currentTarget.style.color = "var(--it-topbar-text, #0f172a)";
|
|
117
|
+
e.currentTarget.style.backgroundColor = "var(--it-topbar-user-hover, #f1f5f9)";
|
|
118
118
|
}}
|
|
119
119
|
onMouseLeave={(e) => {
|
|
120
|
-
e.currentTarget.style.color = "var(--topbar-text, #475569)";
|
|
120
|
+
e.currentTarget.style.color = "var(--it-topbar-text, #475569)";
|
|
121
121
|
e.currentTarget.style.backgroundColor = "transparent";
|
|
122
122
|
}}
|
|
123
123
|
>
|
|
@@ -138,10 +138,10 @@ export default function ITTopBar({
|
|
|
138
138
|
type="button"
|
|
139
139
|
className="flex items-center gap-3 rounded-full pl-2 pr-4 py-1.5 transition-all duration-200 ease-[cubic-bezier(0.2,0,0,1)] border border-transparent hover:border-secondary-200"
|
|
140
140
|
style={{
|
|
141
|
-
backgroundColor: isUserMenuOpen ? "var(--topbar-user-hover, #f1f5f9)" : "transparent",
|
|
141
|
+
backgroundColor: isUserMenuOpen ? "var(--it-topbar-user-hover, #f1f5f9)" : "transparent",
|
|
142
142
|
}}
|
|
143
143
|
onMouseEnter={(e) => {
|
|
144
|
-
if (!isUserMenuOpen) e.currentTarget.style.backgroundColor = "var(--topbar-user-hover, #f1f5f9)";
|
|
144
|
+
if (!isUserMenuOpen) e.currentTarget.style.backgroundColor = "var(--it-topbar-user-hover, #f1f5f9)";
|
|
145
145
|
}}
|
|
146
146
|
onMouseLeave={(e) => {
|
|
147
147
|
if (!isUserMenuOpen) e.currentTarget.style.backgroundColor = "transparent";
|
|
@@ -158,7 +158,7 @@ export default function ITTopBar({
|
|
|
158
158
|
/>
|
|
159
159
|
) : (
|
|
160
160
|
<div className="w-9 h-9 rounded-full bg-slate-100 flex items-center justify-center ring-2 ring-white shadow-sm">
|
|
161
|
-
<FaUserCircle className="w-6 h-6" style={{ color: "var(--topbar-icon, #94a3b8)" }} />
|
|
161
|
+
<FaUserCircle className="w-6 h-6" style={{ color: "var(--it-topbar-icon, #94a3b8)" }} />
|
|
162
162
|
</div>
|
|
163
163
|
)}
|
|
164
164
|
{/* Active dot indicator */}
|
|
@@ -169,13 +169,13 @@ export default function ITTopBar({
|
|
|
169
169
|
<div className="hidden sm:flex flex-col text-left py-0.5">
|
|
170
170
|
<ITText as="span"
|
|
171
171
|
className="font-semibold text-[0.85rem] leading-tight"
|
|
172
|
-
style={{ color: "var(--topbar-user-text, #0f172a)" }}
|
|
172
|
+
style={{ color: "var(--it-topbar-user-text, #0f172a)" }}
|
|
173
173
|
>
|
|
174
174
|
{userMenu.userName}
|
|
175
175
|
</ITText>
|
|
176
176
|
<ITText as="span"
|
|
177
177
|
className="text-[0.7rem] font-medium"
|
|
178
|
-
style={{ color: "var(--topbar-user-subtitle, #64748b)" }}
|
|
178
|
+
style={{ color: "var(--it-topbar-user-subtitle, #64748b)" }}
|
|
179
179
|
>
|
|
180
180
|
{userMenu.userEmail}
|
|
181
181
|
</ITText>
|
|
@@ -190,16 +190,16 @@ export default function ITTopBar({
|
|
|
190
190
|
${isUserMenuOpen ? "scale-100 opacity-100 translate-y-0" : "scale-95 opacity-0 -translate-y-2 pointer-events-none"}
|
|
191
191
|
`}
|
|
192
192
|
style={{
|
|
193
|
-
backgroundColor: "var(--topbar-user-dropdown-bg, #ffffff)",
|
|
194
|
-
border: "1px solid var(--topbar-user-dropdown-border, #f1f5f9)"
|
|
193
|
+
backgroundColor: "var(--it-topbar-user-dropdown-bg, #ffffff)",
|
|
194
|
+
border: "1px solid var(--it-topbar-user-dropdown-border, #f1f5f9)"
|
|
195
195
|
}}
|
|
196
196
|
>
|
|
197
197
|
{/* Dropdown Header */}
|
|
198
|
-
<div className="px-5 py-4 border-b" style={{ borderColor: "var(--topbar-user-dropdown-border, #f1f5f9)", backgroundColor: "var(--topbar-user-bg, #f8fafc)" }}>
|
|
199
|
-
<ITText as="span" className="block font-bold text-[0.9rem]" style={{ color: "var(--topbar-user-text, #0f172a)" }}>
|
|
198
|
+
<div className="px-5 py-4 border-b" style={{ borderColor: "var(--it-topbar-user-dropdown-border, #f1f5f9)", backgroundColor: "var(--it-topbar-user-bg, #f8fafc)" }}>
|
|
199
|
+
<ITText as="span" className="block font-bold text-[0.9rem]" style={{ color: "var(--it-topbar-user-text, #0f172a)" }}>
|
|
200
200
|
{userMenu.userName}
|
|
201
201
|
</ITText>
|
|
202
|
-
<ITText as="span" className="block text-xs font-medium truncate mt-0.5" style={{ color: "var(--topbar-user-subtitle, #64748b)" }}>
|
|
202
|
+
<ITText as="span" className="block text-xs font-medium truncate mt-0.5" style={{ color: "var(--it-topbar-user-subtitle, #64748b)" }}>
|
|
203
203
|
{userMenu.userEmail}
|
|
204
204
|
</ITText>
|
|
205
205
|
</div>
|
|
@@ -215,14 +215,14 @@ export default function ITTopBar({
|
|
|
215
215
|
<div className="h-px bg-slate-100 my-1 mx-2"></div>
|
|
216
216
|
)}
|
|
217
217
|
<button
|
|
218
|
-
onClick={(
|
|
218
|
+
onClick={() => {
|
|
219
219
|
m.onClick();
|
|
220
220
|
setIsUserMenuOpen(false);
|
|
221
221
|
}}
|
|
222
222
|
className="block w-full text-left px-3 py-2.5 rounded-xl text-[0.875rem] font-medium transition-colors duration-150"
|
|
223
|
-
style={{ color: isDestructive ? 'var(--color-danger-500)' : "var(--topbar-user-text, #334155)" }}
|
|
223
|
+
style={{ color: isDestructive ? 'var(--color-danger-500)' : "var(--it-topbar-user-text, #334155)" }}
|
|
224
224
|
onMouseEnter={(e) => {
|
|
225
|
-
e.currentTarget.style.backgroundColor = isDestructive ? 'var(--color-danger-50)' : "var(--topbar-user-item-hover, #f8fafc)";
|
|
225
|
+
e.currentTarget.style.backgroundColor = isDestructive ? 'var(--color-danger-50)' : "var(--it-topbar-user-item-hover, #f8fafc)";
|
|
226
226
|
}}
|
|
227
227
|
onMouseLeave={(e) => {
|
|
228
228
|
e.currentTarget.style.backgroundColor = "transparent";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Meta, Title, Description, Primary, Controls, Stories } from '@storybook/blocks';
|
|
2
|
-
import * as
|
|
2
|
+
import * as StoriesData from './tripleFilter.stories';
|
|
3
3
|
|
|
4
|
-
<Meta of={
|
|
4
|
+
<Meta of={StoriesData} />
|
|
5
5
|
|
|
6
6
|
# ITTripleFilter
|
|
7
7
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import clsx from "clsx";
|
|
2
2
|
import { ITTripleFilterProps } from "./tripleFilter.props";
|
|
3
3
|
import { ColorsTypes } from "@/types/colors.types";
|
|
4
|
-
import ITText from "@/components/text/text";
|
|
4
|
+
import ITText from "@/components/atoms/text/text";
|
|
5
5
|
|
|
6
6
|
const colorMap: Record<ColorsTypes, string> = {
|
|
7
7
|
primary: "text-primary-600",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ITTopBarProps } from "
|
|
2
|
-
import { ITSidebarProps } from "
|
|
1
|
+
import { ITTopBarProps } from "@/components/organisms/topbar/topbar.props";
|
|
2
|
+
import { ITSidebarProps } from "@/components/organisms/sidebar/sidebar.props";
|
|
3
3
|
|
|
4
4
|
export interface ITLayoutProps {
|
|
5
5
|
/** Top bar configuration and props */
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Meta, StoryObj } from '@storybook/react';
|
|
2
|
-
import ITLayout from '
|
|
2
|
+
import ITLayout from '@/components/templates/layout/layout';
|
|
3
3
|
import { FaHome, FaUsers, FaChartBar, FaCog, FaShieldAlt } from 'react-icons/fa';
|
|
4
4
|
|
|
5
5
|
const meta: Meta<typeof ITLayout> = {
|
|
@@ -17,7 +17,6 @@ const meta: Meta<typeof ITLayout> = {
|
|
|
17
17
|
},
|
|
18
18
|
},
|
|
19
19
|
},
|
|
20
|
-
tags: ['autodocs'],
|
|
21
20
|
};
|
|
22
21
|
|
|
23
22
|
export default meta;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { useState } from "react";
|
|
2
2
|
import clsx from "clsx";
|
|
3
|
-
import ITTopBar from "
|
|
4
|
-
import ITSidebar from "
|
|
3
|
+
import ITTopBar from "@/components/organisms/topbar/topbar";
|
|
4
|
+
import ITSidebar from "@/components/organisms/sidebar/sidebar";
|
|
5
5
|
import { ITLayoutProps } from "./layout.props";
|
|
6
6
|
import { theme } from "@/theme/theme";
|
|
7
7
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ReactNode } from "react";
|
|
2
|
-
import { ITBreadcrumbItem } from "
|
|
2
|
+
import { ITBreadcrumbItem } from "@/components/molecules/breadcrumbs/breadcrumbs.props";
|
|
3
3
|
|
|
4
4
|
/** Props for the ITPage component. */
|
|
5
5
|
export interface ITPageProps {
|