torch-glare 2.4.0 → 2.4.1
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 +8 -0
- package/apps/lib/components/ActionButton.tsx +7 -12
- package/apps/lib/components/ActionsGroup.tsx +4 -15
- package/apps/lib/components/AlertDialog.tsx +173 -191
- package/apps/lib/components/Avatar.tsx +13 -16
- package/apps/lib/components/Badge.tsx +1 -3
- package/apps/lib/components/BadgeField.tsx +76 -71
- package/apps/lib/components/Breadcrumb.tsx +49 -85
- package/apps/lib/components/Button.tsx +20 -19
- package/apps/lib/components/ButtonGroup.tsx +31 -41
- package/apps/lib/components/Calendar.tsx +51 -29
- package/apps/lib/components/Card.tsx +2 -13
- package/apps/lib/components/ChartBlockTool.ts +17 -52
- package/apps/lib/components/Checkbox.tsx +9 -16
- package/apps/lib/components/ContextMenu.tsx +97 -96
- package/apps/lib/components/CountBadge.tsx +4 -6
- package/apps/lib/components/DataTable.tsx +196 -216
- package/apps/lib/components/DataViews/DataViewRadio.tsx +1 -6
- package/apps/lib/components/DataViews/DataViewsConfigPanel.tsx +13 -47
- package/apps/lib/components/DataViews/DataViewsHeader.tsx +1 -3
- package/apps/lib/components/DataViews/DataViewsLayout.tsx +5 -12
- package/apps/lib/components/DataViews/FilterPanel.tsx +155 -149
- package/apps/lib/components/DataViews/HeaderSearch.tsx +1 -5
- package/apps/lib/components/DataViews/InboxView.tsx +22 -68
- package/apps/lib/components/DataViews/InboxViewCard.tsx +68 -77
- package/apps/lib/components/DataViews/KanbanView.tsx +8 -25
- package/apps/lib/components/DataViews/PanelControls.tsx +3 -13
- package/apps/lib/components/DataViews/SettingsPanel.tsx +83 -89
- package/apps/lib/components/DataViews/TableView.tsx +8 -28
- package/apps/lib/components/DataViews/TreeView.tsx +12 -40
- package/apps/lib/components/DataViews/badgeAdapter.ts +32 -28
- package/apps/lib/components/DataViews/fieldRenderers.tsx +106 -141
- package/apps/lib/components/DataViews/filters/DatePickerRangeFilter.tsx +30 -23
- package/apps/lib/components/DataViews/filters/DateRangePopover.tsx +39 -32
- package/apps/lib/components/DataViews/filters/PresetChips.tsx +15 -15
- package/apps/lib/components/DataViews/filters/RangeSliderWithInputs.tsx +69 -58
- package/apps/lib/components/DataViews/index.ts +26 -26
- package/apps/lib/components/DataViews/tree/TreeDrawer.tsx +12 -16
- package/apps/lib/components/DataViews/tree/TreeSidebar.tsx +28 -31
- package/apps/lib/components/DataViews/types.ts +104 -115
- package/apps/lib/components/DatePicker.tsx +198 -196
- package/apps/lib/components/Dialog.tsx +92 -105
- package/apps/lib/components/Divider.tsx +21 -24
- package/apps/lib/components/Drawer.tsx +79 -139
- package/apps/lib/components/DropdownMenu.tsx +131 -171
- package/apps/lib/components/FieldHint.tsx +4 -11
- package/apps/lib/components/Form.tsx +146 -155
- package/apps/lib/components/FormStepper.tsx +9 -39
- package/apps/lib/components/HeaderBar.tsx +1 -9
- package/apps/lib/components/ImageAttachment.tsx +111 -73
- package/apps/lib/components/InnerLabelField.tsx +20 -16
- package/apps/lib/components/Input.tsx +171 -172
- package/apps/lib/components/InputField.tsx +44 -45
- package/apps/lib/components/InputOTP.tsx +68 -69
- package/apps/lib/components/Label.tsx +31 -35
- package/apps/lib/components/LabelField.tsx +4 -5
- package/apps/lib/components/LabeledCheckBox.tsx +8 -12
- package/apps/lib/components/LabeledRadio.tsx +7 -5
- package/apps/lib/components/LinkButton.tsx +2 -9
- package/apps/lib/components/LoginButton.tsx +4 -9
- package/apps/lib/components/PasswordLevel.tsx +5 -5
- package/apps/lib/components/Popover.tsx +15 -33
- package/apps/lib/components/ProfileMenu.tsx +67 -72
- package/apps/lib/components/Radio.tsx +1 -5
- package/apps/lib/components/RadioCard.tsx +9 -28
- package/apps/lib/components/ScrollArea.tsx +45 -43
- package/apps/lib/components/SearchField.tsx +49 -39
- package/apps/lib/components/SearchableSelect.tsx +8 -14
- package/apps/lib/components/SearchableTable.tsx +108 -118
- package/apps/lib/components/SearchableTree.tsx +469 -0
- package/apps/lib/components/SearchableTreeDialog.tsx +493 -0
- package/apps/lib/components/SectionBlock.tsx +4 -16
- package/apps/lib/components/Select.tsx +53 -80
- package/apps/lib/components/SimpleSelect.tsx +196 -187
- package/apps/lib/components/Skeleton.tsx +9 -12
- package/apps/lib/components/SlideDatePicker.tsx +215 -166
- package/apps/lib/components/SpinLoading.tsx +33 -49
- package/apps/lib/components/Stepper.tsx +13 -56
- package/apps/lib/components/Switch.tsx +8 -10
- package/apps/lib/components/TabFormItem.tsx +3 -12
- package/apps/lib/components/TabSwitch.tsx +7 -34
- package/apps/lib/components/Table.tsx +60 -75
- package/apps/lib/components/TableDnDWrapper.ts +15 -48
- package/apps/lib/components/TextEditor.tsx +93 -104
- package/apps/lib/components/Textarea.tsx +8 -12
- package/apps/lib/components/Timeline.tsx +21 -41
- package/apps/lib/components/Toast.tsx +83 -83
- package/apps/lib/components/Toggle.tsx +112 -114
- package/apps/lib/components/ToggleButton.tsx +1 -1
- package/apps/lib/components/Tooltip.tsx +24 -19
- package/apps/lib/components/TransparentLabel.tsx +61 -62
- package/apps/lib/components/TreeDropDown.tsx +86 -52
- package/apps/lib/components/TreeFolder/TreeFolder.tsx +15 -48
- package/apps/lib/components/TreeFolder/TreeFolderBreadcrumb.tsx +16 -21
- package/apps/lib/components/TreeFolder/TreeFolderRow.tsx +9 -20
- package/apps/lib/components/TreeFolder/TreeFolderStyles.tsx +3 -3
- package/apps/lib/components/TreeFolder/icons.tsx +14 -17
- package/apps/lib/components/TreeFolder/index.ts +15 -8
- package/apps/lib/components/TreeFolder/treeFolderUtils.ts +47 -52
- package/apps/lib/components/TreeFolder/types.ts +32 -32
- package/apps/lib/components/TreeFolder/useTreeFolderDnD.ts +117 -123
- package/apps/lib/hooks/useActiveTreeItem.ts +52 -55
- package/apps/lib/hooks/useClickOutside.ts +21 -20
- package/apps/lib/hooks/useDataViewsState.ts +86 -80
- package/apps/lib/hooks/useIsMobile.ts +12 -12
- package/apps/lib/hooks/useResize.ts +54 -65
- package/apps/lib/hooks/useTagSelection.ts +201 -201
- package/apps/lib/layouts/CNLayout.tsx +181 -140
- package/apps/lib/layouts/DataViewCard.tsx +4 -18
- package/apps/lib/layouts/FieldSection.tsx +2 -6
- package/apps/lib/layouts/TreeSubLayout.tsx +24 -38
- package/apps/lib/providers/ThemeProvider.tsx +8 -23
- package/apps/lib/registry.json +1004 -0
- package/apps/lib/tsconfig.json +9 -0
- package/apps/lib/utils/cn.ts +1 -1
- package/apps/lib/utils/dataViews/columnUtils.ts +46 -44
- package/apps/lib/utils/dataViews/fieldUtils.ts +70 -71
- package/apps/lib/utils/dataViews/nestedDataUtils.tsx +129 -122
- package/apps/lib/utils/dataViews/pathUtils.ts +74 -67
- package/apps/lib/utils/dataViews/rangeUtils.ts +121 -112
- package/apps/lib/utils/dataViews/treeUtils.ts +204 -211
- package/apps/lib/utils/dateFormat.ts +64 -54
- package/apps/lib/utils/markdownParser.ts +2 -7
- package/apps/lib/utils/resize.ts +21 -25
- package/apps/lib/utils/types.ts +13 -13
- package/dist/bin/index.js +8 -2
- package/dist/bin/index.js.map +1 -1
- package/dist/src/shared/getAvailableFiles.d.ts.map +1 -1
- package/dist/src/shared/getAvailableFiles.js +6 -1
- package/dist/src/shared/getAvailableFiles.js.map +1 -1
- package/dist/src/shared/loadRegistry.d.ts +7 -0
- package/dist/src/shared/loadRegistry.d.ts.map +1 -0
- package/dist/src/shared/loadRegistry.js +31 -0
- package/dist/src/shared/loadRegistry.js.map +1 -0
- package/dist/src/shared/resolveInstallPlan.d.ts +12 -0
- package/dist/src/shared/resolveInstallPlan.d.ts.map +1 -0
- package/dist/src/shared/resolveInstallPlan.js +39 -0
- package/dist/src/shared/resolveInstallPlan.js.map +1 -0
- package/dist/src/types/main.d.ts +24 -0
- package/dist/src/types/main.d.ts.map +1 -1
- package/docs/README.md +10 -2
- package/docs/components/action-button.md +30 -24
- package/docs/components/actions-group.md +26 -20
- package/docs/components/alert-dialog.md +45 -45
- package/docs/components/avatar.md +6 -2
- package/docs/components/badge-field.md +6 -2
- package/docs/components/badge.md +7 -1
- package/docs/components/breadcrumb.md +15 -40
- package/docs/components/button-group.md +13 -10
- package/docs/components/button.md +58 -33
- package/docs/components/calendar.md +26 -19
- package/docs/components/card.md +19 -16
- package/docs/components/chart-block-tool.md +128 -0
- package/docs/components/checkbox.md +16 -8
- package/docs/components/cn-layout.md +7 -1
- package/docs/components/context-menu.md +18 -25
- package/docs/components/count-badge.md +7 -1
- package/docs/components/data-table.md +45 -33
- package/docs/components/data-views-config-panel.md +15 -11
- package/docs/components/data-views-layout.md +13 -16
- package/docs/components/date-picker.md +30 -23
- package/docs/components/dialog.md +43 -42
- package/docs/components/divider.md +10 -4
- package/docs/components/drawer.md +8 -33
- package/docs/components/dropdown-menu.md +25 -34
- package/docs/components/field-hint.md +37 -25
- package/docs/components/field-section.md +9 -3
- package/docs/components/form-stepper.md +6 -0
- package/docs/components/form.md +17 -20
- package/docs/components/header-bar.md +6 -0
- package/docs/components/image-attachment.md +33 -41
- package/docs/components/inbox-view.md +16 -5
- package/docs/components/inner-label-field.md +34 -24
- package/docs/components/input-field.md +18 -10
- package/docs/components/input-otp.md +14 -11
- package/docs/components/input.md +22 -16
- package/docs/components/kanban-view.md +15 -5
- package/docs/components/label-field.md +32 -22
- package/docs/components/label.md +43 -32
- package/docs/components/labeled-check-box.md +16 -8
- package/docs/components/labeled-radio.md +18 -11
- package/docs/components/link-button.md +7 -1
- package/docs/components/login-button.md +8 -2
- package/docs/components/password-level.md +37 -24
- package/docs/components/popover.md +26 -23
- package/docs/components/profile-menu.md +38 -27
- package/docs/components/radio-card.md +16 -9
- package/docs/components/radio.md +16 -8
- package/docs/components/scroll-area.md +6 -2
- package/docs/components/search-field.md +14 -6
- package/docs/components/searchable-select.md +19 -14
- package/docs/components/searchable-table.md +18 -13
- package/docs/components/searchable-tree-dialog.md +190 -0
- package/docs/components/searchable-tree.md +200 -0
- package/docs/components/section-block.md +12 -4
- package/docs/components/select.md +23 -18
- package/docs/components/simple-select.md +14 -10
- package/docs/components/skeleton.md +43 -33
- package/docs/components/slide-date-picker.md +37 -29
- package/docs/components/spin-loading.md +32 -23
- package/docs/components/stepper.md +6 -0
- package/docs/components/switch.md +14 -6
- package/docs/components/tab-form-item.md +7 -1
- package/docs/components/tab-switch.md +13 -6
- package/docs/components/table-dnd-wrapper.md +105 -0
- package/docs/components/table-view.md +15 -5
- package/docs/components/table.md +28 -28
- package/docs/components/text-editor.md +19 -13
- package/docs/components/textarea.md +15 -7
- package/docs/components/timeline.md +6 -0
- package/docs/components/toast.md +35 -26
- package/docs/components/toggle-button.md +24 -21
- package/docs/components/toggle.md +23 -15
- package/docs/components/tooltip.md +42 -30
- package/docs/components/transparent-label.md +29 -20
- package/docs/components/tree-drop-down.md +31 -23
- package/docs/components/tree-sub-layout.md +6 -2
- package/docs/components/tree-view.md +16 -5
- package/docs/explanation/architecture.md +54 -0
- package/docs/explanation/design-system.md +52 -0
- package/docs/how-to/data-views-from-backend-response.md +6 -4
- package/docs/how-to/guides.md +24 -18
- package/docs/migration/changelog.md +38 -0
- package/docs/reference/cli.md +87 -0
- package/docs/reference/components.md +11 -12
- package/docs/reference/hooks.md +8 -8
- package/docs/reference/providers.md +22 -22
- package/docs/reference/tailwind-plugins.md +2 -2
- package/docs/reference/theme.md +85 -0
- package/docs/reference/types.md +4 -4
- package/docs/reference/utilities.md +19 -26
- package/docs/tutorials/building-first-form.md +20 -13
- package/docs/tutorials/component-composition.md +34 -50
- package/docs/tutorials/getting-started.md +2 -2
- package/docs/tutorials/theming-basics.md +13 -10
- package/package.json +31 -3
- package/dist/src/commands/block.d.ts +0 -5
- package/dist/src/commands/block.d.ts.map +0 -1
- package/dist/src/commands/block.js +0 -255
- package/dist/src/commands/block.js.map +0 -1
- package/dist/src/shared/configureFonts.d.ts +0 -6
- package/dist/src/shared/configureFonts.d.ts.map +0 -1
- package/dist/src/shared/configureFonts.js +0 -106
- package/dist/src/shared/configureFonts.js.map +0 -1
- package/dist/src/shared/configureGlobalCss.d.ts +0 -6
- package/dist/src/shared/configureGlobalCss.d.ts.map +0 -1
- package/dist/src/shared/configureGlobalCss.js +0 -154
- package/dist/src/shared/configureGlobalCss.js.map +0 -1
- package/dist/src/shared/configureTailwind.d.ts +0 -7
- package/dist/src/shared/configureTailwind.d.ts.map +0 -1
- package/dist/src/shared/configureTailwind.js +0 -163
- package/dist/src/shared/configureTailwind.js.map +0 -1
- package/dist/src/shared/detectFramework.d.ts +0 -23
- package/dist/src/shared/detectFramework.d.ts.map +0 -1
- package/dist/src/shared/detectFramework.js +0 -119
- package/dist/src/shared/detectFramework.js.map +0 -1
- package/dist/src/shared/installBaseUtils.d.ts +0 -5
- package/dist/src/shared/installBaseUtils.d.ts.map +0 -1
- package/dist/src/shared/installBaseUtils.js +0 -79
- package/dist/src/shared/installBaseUtils.js.map +0 -1
- package/dist/src/shared/resolveAliases.d.ts +0 -24
- package/dist/src/shared/resolveAliases.d.ts.map +0 -1
- package/dist/src/shared/resolveAliases.js +0 -98
- package/dist/src/shared/resolveAliases.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
"use client";
|
|
2
2
|
import { usePathname } from "next/navigation";
|
|
3
3
|
import TabFormItem from "../components/TabFormItem";
|
|
4
4
|
import { cn } from "../utils/cn";
|
|
@@ -32,7 +32,6 @@ export default function TreeSubLayout({
|
|
|
32
32
|
]);
|
|
33
33
|
const { activeId } = useActiveTreeItem(allIds);
|
|
34
34
|
|
|
35
|
-
|
|
36
35
|
return (
|
|
37
36
|
<div
|
|
38
37
|
className={cn(
|
|
@@ -58,8 +57,7 @@ export default function TreeSubLayout({
|
|
|
58
57
|
key={item.id}
|
|
59
58
|
href={`${item.id}`}
|
|
60
59
|
isActive={
|
|
61
|
-
activeId === item.id ||
|
|
62
|
-
item.subTree?.some((sub) => sub.id === activeId)
|
|
60
|
+
activeId === item.id || item.subTree?.some((sub) => sub.id === activeId)
|
|
63
61
|
}
|
|
64
62
|
title={item?.title}
|
|
65
63
|
subTitles={item?.subTree?.map((sub) => ({
|
|
@@ -76,8 +74,6 @@ export default function TreeSubLayout({
|
|
|
76
74
|
);
|
|
77
75
|
}
|
|
78
76
|
|
|
79
|
-
|
|
80
|
-
|
|
81
77
|
function TreeSection({
|
|
82
78
|
href,
|
|
83
79
|
isActive,
|
|
@@ -89,31 +85,21 @@ function TreeSection({
|
|
|
89
85
|
title: string;
|
|
90
86
|
subTitles?: { id: string; title: string; isActive?: boolean }[];
|
|
91
87
|
}) {
|
|
92
|
-
|
|
93
88
|
return (
|
|
94
|
-
<div
|
|
95
|
-
className={`
|
|
96
|
-
|
|
97
|
-
<TabFormItem
|
|
98
|
-
componentType="tree"
|
|
99
|
-
active={isActive}
|
|
100
|
-
className={`w-full`}
|
|
101
|
-
asChild
|
|
102
|
-
>
|
|
103
|
-
<Link href={`#${href}`}>
|
|
104
|
-
{title}
|
|
105
|
-
</Link>
|
|
89
|
+
<div className={`flex flex-col items-start gap-[12px] w-full transition-colors duration-200`}>
|
|
90
|
+
<TabFormItem componentType="tree" active={isActive} className={`w-full`} asChild>
|
|
91
|
+
<Link href={`#${href}`}>{title}</Link>
|
|
106
92
|
</TabFormItem>
|
|
107
|
-
{subTitles &&
|
|
108
|
-
|
|
93
|
+
{subTitles && (
|
|
94
|
+
<div
|
|
95
|
+
className={`w-full h-[1px]
|
|
109
96
|
bg-border-presentation-global-primary
|
|
110
97
|
`}
|
|
111
|
-
|
|
112
|
-
|
|
98
|
+
></div>
|
|
99
|
+
)}
|
|
100
|
+
{subTitles && (
|
|
113
101
|
<div className="flex items-start flex-1 w-full pl-4">
|
|
114
|
-
<div
|
|
115
|
-
className={`w-[1px] h-full bg-border-presentation-global-primary`}
|
|
116
|
-
/>
|
|
102
|
+
<div className={`w-[1px] h-full bg-border-presentation-global-primary`} />
|
|
117
103
|
<div className="flex p-[4px_0px_4px_8px] flex-col items-start gap-1 w-full flex-1">
|
|
118
104
|
{subTitles?.map((item) => (
|
|
119
105
|
<TabFormItem
|
|
@@ -123,19 +109,16 @@ function TreeSection({
|
|
|
123
109
|
className="w-full"
|
|
124
110
|
asChild
|
|
125
111
|
>
|
|
126
|
-
<Link href={`#${item.id}`}>
|
|
127
|
-
{item.title}
|
|
128
|
-
</Link>
|
|
112
|
+
<Link href={`#${item.id}`}>{item.title}</Link>
|
|
129
113
|
</TabFormItem>
|
|
130
114
|
))}
|
|
131
115
|
</div>
|
|
132
116
|
</div>
|
|
133
|
-
}
|
|
117
|
+
)}
|
|
134
118
|
</div>
|
|
135
119
|
);
|
|
136
120
|
}
|
|
137
121
|
|
|
138
|
-
|
|
139
122
|
export function HeaderPage({
|
|
140
123
|
title,
|
|
141
124
|
subTitle,
|
|
@@ -151,32 +134,35 @@ export function HeaderPage({
|
|
|
151
134
|
}) {
|
|
152
135
|
return (
|
|
153
136
|
<div
|
|
154
|
-
className={cn(
|
|
137
|
+
className={cn(
|
|
138
|
+
"w-full h-fit transition-all duration-300 ease-in-out lg:rounded-[8px_8px_0px_0px] lg:z-auto",
|
|
155
139
|
"bg-[linear-gradient(90deg,var(--blue-sparkle-600)_0px,rgba(44,45,46,1)_190px)] lg:bg-background-system-body-base",
|
|
156
140
|
"pb-[2px] lg:pb-0",
|
|
157
|
-
className
|
|
141
|
+
className,
|
|
142
|
+
)}
|
|
158
143
|
>
|
|
159
144
|
<div className="w-full h-full flex flex-col justify-center items-start rounded-[6px_6px_0px_0px] transition-all duration-300 ease-in-out lg:bg-none lg:bg-background-system-body-base lg:h-fit">
|
|
160
|
-
<div className="lg:hidden w-full bg-background-system-body-base px-[12px] h-[52px] flex justify-start items-center overflow-y-scroll border-b-[2px] border-[#2c2d2e]">
|
|
161
|
-
</div>
|
|
145
|
+
<div className="lg:hidden w-full bg-background-system-body-base px-[12px] h-[52px] flex justify-start items-center overflow-y-scroll border-b-[2px] border-[#2c2d2e]"></div>
|
|
162
146
|
<div
|
|
163
147
|
className={cn(
|
|
164
148
|
`flex h-fit relative gap-2 items-center w-full lg:w-fit `,
|
|
165
149
|
"bg-background-system-body-secondary lg:bg-transparent",
|
|
166
150
|
"h-[52px] px-[16px] lg:py-[16px] rtl:pr-4 ltr:pl-4 lg:h-[60px]",
|
|
167
|
-
className
|
|
151
|
+
className,
|
|
168
152
|
)}
|
|
169
153
|
>
|
|
170
154
|
<h1 className="text-content-system-global-primary whitespace-nowrap leading-none typography-display-large-semibold z-20 text-left lg:typography-display-medium-regular lg:uppercase">
|
|
171
155
|
{title}
|
|
172
156
|
</h1>
|
|
173
|
-
<p className="hidden mb-[-6px] sm:block text-content-presentation-global-secondary typography-headers-medium-regular z-20 lg:uppercase">
|
|
157
|
+
<p className="hidden mb-[-6px] sm:block text-content-presentation-global-secondary typography-headers-medium-regular z-20 lg:uppercase">
|
|
158
|
+
{subTitle}
|
|
159
|
+
</p>
|
|
174
160
|
<div className="h-[24px] hidden w-[1px] bg-border-presentation-global-primary z-20 sm:block"></div>
|
|
175
161
|
</div>
|
|
176
162
|
<div
|
|
177
163
|
className={cn(
|
|
178
164
|
"w-full flex rtl:pl-4 items-center ltr:pr-4",
|
|
179
|
-
type === "space-between" && "justify-end"
|
|
165
|
+
type === "space-between" && "justify-end",
|
|
180
166
|
)}
|
|
181
167
|
>
|
|
182
168
|
{children}
|
|
@@ -1,11 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
createContext,
|
|
4
|
-
ReactNode,
|
|
5
|
-
useContext,
|
|
6
|
-
useEffect,
|
|
7
|
-
useState,
|
|
8
|
-
} from "react";
|
|
1
|
+
"use client";
|
|
2
|
+
import { createContext, ReactNode, useContext, useEffect, useState } from "react";
|
|
9
3
|
|
|
10
4
|
interface ThemeProps {
|
|
11
5
|
theme: "light" | "dark" | "default";
|
|
@@ -30,14 +24,9 @@ export const ThemeProvider: React.FC<ThemeProviderProps> = ({
|
|
|
30
24
|
const [theme, setTheme] = useState<"light" | "dark" | "default">(() => {
|
|
31
25
|
if (typeof window !== "undefined" && document) {
|
|
32
26
|
const mode =
|
|
33
|
-
(document.documentElement.getAttribute("data-theme") as
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
| "default") || defaultTheme;
|
|
37
|
-
const storedTheme = localStorage.getItem("theme") as
|
|
38
|
-
| "light"
|
|
39
|
-
| "dark"
|
|
40
|
-
| "default";
|
|
27
|
+
(document.documentElement.getAttribute("data-theme") as "light" | "dark" | "default") ||
|
|
28
|
+
defaultTheme;
|
|
29
|
+
const storedTheme = localStorage.getItem("theme") as "light" | "dark" | "default";
|
|
41
30
|
return storedTheme || mode || defaultTheme;
|
|
42
31
|
}
|
|
43
32
|
return defaultTheme;
|
|
@@ -45,9 +34,7 @@ export const ThemeProvider: React.FC<ThemeProviderProps> = ({
|
|
|
45
34
|
|
|
46
35
|
const [themeMode, setThemeMode] = useState<"TORCH" | "CSS">(() => {
|
|
47
36
|
if (typeof window !== "undefined") {
|
|
48
|
-
const storedThemeMode = localStorage.getItem("theme-mode") as
|
|
49
|
-
| "TORCH"
|
|
50
|
-
| "CSS";
|
|
37
|
+
const storedThemeMode = localStorage.getItem("theme-mode") as "TORCH" | "CSS";
|
|
51
38
|
return storedThemeMode || defaultThemeMode;
|
|
52
39
|
}
|
|
53
40
|
return defaultThemeMode;
|
|
@@ -85,9 +72,7 @@ export const ThemeProvider: React.FC<ThemeProviderProps> = ({
|
|
|
85
72
|
themeMode,
|
|
86
73
|
};
|
|
87
74
|
|
|
88
|
-
return
|
|
89
|
-
<ThemeContext.Provider value={value}>{children}</ThemeContext.Provider>
|
|
90
|
-
);
|
|
75
|
+
return <ThemeContext.Provider value={value}>{children}</ThemeContext.Provider>;
|
|
91
76
|
};
|
|
92
77
|
|
|
93
78
|
export const useTheme = () => {
|
|
@@ -96,4 +81,4 @@ export const useTheme = () => {
|
|
|
96
81
|
throw new Error("useTheme must be used within a ThemeProvider");
|
|
97
82
|
}
|
|
98
83
|
return context;
|
|
99
|
-
};
|
|
84
|
+
};
|