@axzydev/axzy_ui_system 1.4.8 → 1.5.0
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 +2 -11
- package/dist/index.cjs +1826 -1351
- 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 +115 -14
- package/dist/index.d.ts +115 -14
- package/dist/index.js +1481 -1010
- package/dist/index.js.map +1 -1
- package/dist/layered.css +1 -1
- package/package.json +3 -16
- package/src/App.tsx +90 -73
- package/src/components/atoms/badget/badget.tsx +23 -5
- package/src/components/atoms/chip/chip.tsx +3 -1
- package/src/components/atoms/image/image.tsx +3 -1
- package/src/components/atoms/input/input.tsx +8 -5
- package/src/components/atoms/loader/loader.tsx +3 -1
- package/src/components/atoms/slide/slide.props.ts +12 -0
- package/src/components/atoms/slide/slide.tsx +3 -0
- package/src/components/molecules/alert/alert.tsx +3 -1
- package/src/components/molecules/breadcrumbs/breadcrumbs.tsx +3 -1
- package/src/components/molecules/calendar/calendar.tsx +9 -6
- package/src/components/molecules/card/card.tsx +5 -2
- package/src/components/molecules/chip-input/chip-input.tsx +9 -7
- package/src/components/molecules/date-picker/datePicker.tsx +9 -9
- package/src/components/molecules/dropdown-menu/dropdown-menu.props.ts +1 -1
- package/src/components/molecules/dropdown-menu/dropdown-menu.tsx +6 -3
- package/src/components/molecules/field/field.tsx +3 -1
- package/src/components/molecules/form-header/form-header.tsx +3 -1
- package/src/components/molecules/line-bar-chart/line-bar-chart.props.ts +2 -2
- package/src/components/molecules/line-bar-chart/line-bar-chart.tsx +20 -15
- package/src/components/molecules/masked-input/masked-input.tsx +3 -1
- package/src/components/molecules/multi-select/multi-select.tsx +12 -9
- package/src/components/molecules/pagination/pagination.tsx +11 -5
- package/src/components/molecules/search-select/search-select.tsx +11 -9
- package/src/components/molecules/select/select.tsx +6 -4
- package/src/components/molecules/stepper/stepper.tsx +6 -4
- package/src/components/molecules/table/table.tsx +30 -28
- package/src/components/molecules/time-picker/timePicker.tsx +8 -6
- package/src/components/molecules/wysiwyg/wysiwyg.tsx +23 -12
- package/src/components/organisms/confirm-dialog/confirm-dialog.props.ts +4 -4
- package/src/components/organisms/confirm-dialog/confirm-dialog.tsx +16 -8
- package/src/components/organisms/data-table/dataTable.tsx +31 -25
- package/src/components/organisms/dialog/dialog.tsx +3 -0
- package/src/components/organisms/drawer/drawer.tsx +3 -0
- package/src/components/organisms/dropfile/dropfile.tsx +19 -17
- package/src/components/organisms/form-builder/fieldRenderer.tsx +4 -2
- package/src/components/organisms/navbar/navbar.tsx +4 -2
- package/src/components/organisms/page-header/page-header.tsx +3 -1
- package/src/components/organisms/searchTable/components/PaginationControls.tsx +8 -6
- package/src/components/organisms/searchTable/components/PaginationInfo.tsx +3 -1
- package/src/components/organisms/searchTable/components/SearchAndSortBar.tsx +7 -5
- package/src/components/organisms/searchTable/components/SearchInput.tsx +4 -2
- package/src/components/organisms/searchTable/components/SortButton.tsx +13 -11
- package/src/components/organisms/searchTable/components/TableEmptyState.tsx +4 -2
- package/src/components/organisms/searchTable/components/TableRow.tsx +6 -4
- package/src/components/organisms/searchTable/searchTable.tsx +4 -2
- package/src/components/organisms/sidebar/sidebar.props.ts +1 -1
- package/src/components/organisms/sidebar/sidebar.tsx +9 -4
- package/src/components/organisms/toast/toast.tsx +3 -1
- package/src/components/organisms/topbar/topbar.tsx +4 -2
- package/src/components/templates/page/page.props.ts +4 -4
- package/src/components/templates/page/page.tsx +6 -4
- package/src/components/theme-provider/themeProvider.tsx +28 -17
- package/src/dev.css +77 -2
- package/src/global.d.ts +10 -0
- package/src/i18n/context.ts +9 -0
- package/src/i18n/index.ts +22 -0
- package/src/i18n/locales/en.ts +163 -0
- package/src/i18n/locales/es.ts +165 -0
- package/src/i18n/provider.tsx +44 -0
- package/src/i18n/translator.ts +82 -0
- package/src/i18n/types.ts +54 -0
- package/src/i18n/useITTranslation.ts +20 -0
- package/src/index.css +0 -1
- package/src/index.ts +7 -1
- package/src/sandbox/LandingShowcase.tsx +224 -580
- package/src/sandbox/NotFoundShowcase.tsx +51 -36
- package/src/sandbox/TopbarSearch.tsx +6 -4
- package/src/sandbox/controls.tsx +180 -0
- package/src/sandbox/i18n.ts +1929 -0
- package/src/sandbox/icons.tsx +25 -0
- package/src/sandbox/locale.tsx +72 -0
- package/src/sandbox/ui.tsx +377 -0
- package/src/sandbox/useHashRoute.ts +46 -10
- package/src/showcases/DataShowcases.tsx +103 -87
- package/src/showcases/FeedbackShowcases.tsx +37 -30
- package/src/showcases/FormShowcases.tsx +302 -214
- package/src/showcases/GettingStartedShowcase.tsx +151 -145
- package/src/showcases/HelpShowcase.tsx +126 -128
- package/src/showcases/HomeShowcase.tsx +678 -482
- package/src/showcases/LayoutPrimitivesShowcases.tsx +129 -114
- package/src/showcases/NavigationShowcases.tsx +45 -37
- package/src/showcases/PageShowcases.tsx +171 -152
- package/src/showcases/ProductoDetalle.tsx +272 -129
- package/src/showcases/ShowcaseLayout.tsx +270 -216
- package/src/showcases/SizesShowcase.tsx +123 -64
- package/src/showcases/StructureShowcases.tsx +157 -131
- package/src/showcases/portfolioUi.tsx +153 -0
- package/src/showcases/techIcons.ts +3 -0
- package/src/utils/table.utils.ts +10 -2
- package/src/components/atoms/avatar/avatar.doc.mdx +0 -48
- package/src/components/atoms/avatar/avatar.stories.tsx +0 -64
- package/src/components/atoms/badget/badget.doc.mdx +0 -46
- package/src/components/atoms/badget/badget.stories.tsx +0 -75
- package/src/components/atoms/button/button.doc.mdx +0 -59
- package/src/components/atoms/button/button.stories.tsx +0 -173
- package/src/components/atoms/checkbox/checkbox.doc.mdx +0 -54
- package/src/components/atoms/checkbox/checkbox.stories.tsx +0 -53
- package/src/components/atoms/chip/chip.doc.mdx +0 -47
- package/src/components/atoms/chip/chip.stories.tsx +0 -64
- package/src/components/atoms/divider/divider.doc.mdx +0 -42
- package/src/components/atoms/divider/divider.stories.tsx +0 -33
- package/src/components/atoms/flex/flex.doc.mdx +0 -59
- package/src/components/atoms/flex/flex.stories.tsx +0 -70
- package/src/components/atoms/grid/grid.doc.mdx +0 -54
- package/src/components/atoms/grid/grid.stories.tsx +0 -71
- package/src/components/atoms/image/image.doc.mdx +0 -44
- package/src/components/atoms/image/image.stories.tsx +0 -48
- package/src/components/atoms/input/input.doc.mdx +0 -70
- package/src/components/atoms/input/input.stories.tsx +0 -113
- package/src/components/atoms/input-number/input-number.doc.mdx +0 -74
- package/src/components/atoms/input-number/input-number.stories.tsx +0 -111
- package/src/components/atoms/loader/loader.doc.mdx +0 -43
- package/src/components/atoms/loader/loader.stories.tsx +0 -104
- package/src/components/atoms/popover/popover.doc.mdx +0 -53
- package/src/components/atoms/popover/popover.stories.tsx +0 -24
- package/src/components/atoms/progress/progress.doc.mdx +0 -48
- package/src/components/atoms/progress/progress.stories.tsx +0 -39
- package/src/components/atoms/radio/radio.doc.mdx +0 -62
- package/src/components/atoms/radio/radio.stories.tsx +0 -48
- package/src/components/atoms/segmented-control/segmented-control.doc.mdx +0 -60
- package/src/components/atoms/segmented-control/segmented-control.stories.tsx +0 -62
- package/src/components/atoms/skeleton/skeleton.doc.mdx +0 -43
- package/src/components/atoms/skeleton/skeleton.stories.tsx +0 -29
- package/src/components/atoms/slide/slide.doc.mdx +0 -46
- package/src/components/atoms/slide/slide.stories.tsx +0 -120
- package/src/components/atoms/slider/slider.doc.mdx +0 -49
- package/src/components/atoms/slider/slider.stories.tsx +0 -29
- package/src/components/atoms/stack/stack.doc.mdx +0 -126
- package/src/components/atoms/stack/stack.stories.tsx +0 -283
- package/src/components/atoms/text/text.doc.mdx +0 -41
- package/src/components/atoms/text/text.stories.tsx +0 -66
- package/src/components/atoms/textarea/textarea.doc.mdx +0 -64
- package/src/components/atoms/textarea/textarea.stories.tsx +0 -26
- package/src/components/atoms/tooltip/tooltip.doc.mdx +0 -47
- package/src/components/atoms/tooltip/tooltip.stories.tsx +0 -19
- package/src/components/isolation/isolation.stories.tsx +0 -202
- package/src/components/molecules/accordion/accordion.doc.mdx +0 -47
- package/src/components/molecules/accordion/accordion.stories.tsx +0 -68
- package/src/components/molecules/alert/alert.doc.mdx +0 -48
- package/src/components/molecules/alert/alert.stories.tsx +0 -40
- package/src/components/molecules/breadcrumbs/breadcrumbs.doc.mdx +0 -57
- package/src/components/molecules/breadcrumbs/breadcrumbs.stories.tsx +0 -20
- package/src/components/molecules/calendar/calendar.doc.mdx +0 -76
- package/src/components/molecules/calendar/calendar.stories.tsx +0 -90
- package/src/components/molecules/card/card.doc.mdx +0 -54
- package/src/components/molecules/card/card.stories.tsx +0 -57
- package/src/components/molecules/chip-input/chip-input.doc.mdx +0 -44
- package/src/components/molecules/chip-input/chip-input.stories.tsx +0 -52
- package/src/components/molecules/date-picker/date-picker.doc.mdx +0 -65
- package/src/components/molecules/date-picker/date-picker.stories.tsx +0 -88
- package/src/components/molecules/dropdown-menu/dropdown-menu.doc.mdx +0 -46
- package/src/components/molecules/dropdown-menu/dropdown-menu.stories.tsx +0 -41
- package/src/components/molecules/empty-state/empty-state.doc.mdx +0 -50
- package/src/components/molecules/empty-state/empty-state.stories.tsx +0 -19
- package/src/components/molecules/field/field.doc.mdx +0 -43
- package/src/components/molecules/field/field.stories.tsx +0 -42
- package/src/components/molecules/form-header/form-header.doc.mdx +0 -38
- package/src/components/molecules/form-header/form-header.stories.tsx +0 -52
- package/src/components/molecules/masked-input/masked-input.doc.mdx +0 -78
- package/src/components/molecules/masked-input/masked-input.stories.tsx +0 -126
- package/src/components/molecules/multi-select/multi-select.doc.mdx +0 -55
- package/src/components/molecules/multi-select/multi-select.stories.tsx +0 -59
- package/src/components/molecules/pagination/pagination.doc.mdx +0 -62
- package/src/components/molecules/pagination/pagination.stories.tsx +0 -110
- package/src/components/molecules/search-select/search-select.doc.mdx +0 -77
- package/src/components/molecules/search-select/search-select.stories.tsx +0 -146
- package/src/components/molecules/select/select.doc.mdx +0 -75
- package/src/components/molecules/select/select.stories.tsx +0 -85
- package/src/components/molecules/stat-card/stat-card.doc.mdx +0 -48
- package/src/components/molecules/stat-card/stat-card.stories.tsx +0 -40
- package/src/components/molecules/stepper/stepper.doc.mdx +0 -54
- package/src/components/molecules/stepper/stepper.stories.tsx +0 -154
- package/src/components/molecules/table/table.doc.mdx +0 -140
- package/src/components/molecules/table/table.stories.tsx +0 -402
- package/src/components/molecules/tabs/tabs.doc.mdx +0 -52
- package/src/components/molecules/tabs/tabs.stories.tsx +0 -31
- package/src/components/molecules/time-picker/timePicker.doc.mdx +0 -68
- package/src/components/molecules/time-picker/timePicker.stories.tsx +0 -130
- package/src/components/molecules/wysiwyg/wysiwyg.stories.tsx +0 -95
- package/src/components/organisms/confirm-dialog/confirm-dialog.doc.mdx +0 -60
- package/src/components/organisms/confirm-dialog/confirm-dialog.stories.tsx +0 -32
- package/src/components/organisms/data-table/ITDataTable.doc.mdx +0 -132
- package/src/components/organisms/data-table/ITDataTable.stories.tsx +0 -353
- package/src/components/organisms/dialog/dialog.doc.mdx +0 -54
- package/src/components/organisms/dialog/dialog.stories.tsx +0 -126
- package/src/components/organisms/drawer/drawer.doc.mdx +0 -59
- package/src/components/organisms/drawer/drawer.stories.tsx +0 -40
- package/src/components/organisms/dropfile/dropfile.doc.mdx +0 -74
- package/src/components/organisms/dropfile/dropfile.stories.tsx +0 -93
- package/src/components/organisms/form-builder/formBuilder.doc.mdx +0 -251
- package/src/components/organisms/form-builder/formBuilder.stories.tsx +0 -914
- package/src/components/organisms/navbar/navbar.doc.mdx +0 -77
- package/src/components/organisms/navbar/navbar.stories.tsx +0 -83
- package/src/components/organisms/page-header/page-header.doc.mdx +0 -54
- package/src/components/organisms/page-header/page-header.stories.tsx +0 -74
- package/src/components/organisms/searchTable/searchTable.doc.mdx +0 -79
- package/src/components/organisms/searchTable/searchTable.stories.tsx +0 -73
- package/src/components/organisms/sidebar/sidebar.doc.mdx +0 -176
- package/src/components/organisms/sidebar/sidebar.stories.tsx +0 -234
- package/src/components/organisms/toast/toast.doc.mdx +0 -50
- package/src/components/organisms/toast/toast.stories.tsx +0 -137
- package/src/components/organisms/topbar/topbar.doc.mdx +0 -72
- package/src/components/organisms/topbar/topbar.stories.tsx +0 -79
- package/src/components/organisms/triple-filter/tripleFilter.doc.mdx +0 -62
- package/src/components/organisms/triple-filter/tripleFilter.stories.tsx +0 -31
- package/src/components/templates/layout/layout.doc.mdx +0 -53
- package/src/components/templates/layout/layout.stories.tsx +0 -113
- package/src/components/templates/page/page.doc.mdx +0 -86
- package/src/components/templates/page/page.stories.tsx +0 -97
- package/src/components/theme-provider/themeProvider.doc.mdx +0 -85
- package/src/components/theme-provider/themeProvider.stories.tsx +0 -58
|
@@ -14,6 +14,7 @@ import {
|
|
|
14
14
|
ITDataTableResponse
|
|
15
15
|
} from "../index";
|
|
16
16
|
import { ShowcaseLayout } from "./ShowcaseLayout";
|
|
17
|
+
import { useITTranslation } from "@/i18n";
|
|
17
18
|
|
|
18
19
|
const TABLE_DATA: Record<string, unknown>[] = [
|
|
19
20
|
{ id: 1, name: "Sofía Castillo", email: "sofia@axzy.dev", role: "Admin", status: "active", lastLogin: "2026-07-18T09:30:00", sales: 28400 },
|
|
@@ -148,6 +149,7 @@ const roleColor = (r: string) =>
|
|
|
148
149
|
|
|
149
150
|
// 1. ITTable Showcase
|
|
150
151
|
export const TableShowcase = () => {
|
|
152
|
+
const { t } = useITTranslation();
|
|
151
153
|
const [variant, setVariant] = useState<any>("default");
|
|
152
154
|
const [size, setSize] = useState<any>("sm");
|
|
153
155
|
const [useCustomCard, setUseCustomCard] = useState(true);
|
|
@@ -231,10 +233,10 @@ export const TableShowcase = () => {
|
|
|
231
233
|
type: "actions",
|
|
232
234
|
actions: () => (
|
|
233
235
|
<div className="flex gap-1">
|
|
234
|
-
<button className="p-1.5 rounded-md hover:bg-slate-100 dark:hover:bg-slate-700 text-slate-400 hover:text-primary-600 transition-colors" title="
|
|
236
|
+
<button className="p-1.5 rounded-md hover:bg-slate-100 dark:hover:bg-slate-700 text-slate-400 hover:text-primary-600 transition-colors" title={t("showcase.common.view")}>
|
|
235
237
|
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2"><path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"/><circle cx="12" cy="12" r="3"/></svg>
|
|
236
238
|
</button>
|
|
237
|
-
<button className="p-1.5 rounded-md hover:bg-slate-100 dark:hover:bg-slate-700 text-slate-400 hover:text-blue-600 transition-colors" title="
|
|
239
|
+
<button className="p-1.5 rounded-md hover:bg-slate-100 dark:hover:bg-slate-700 text-slate-400 hover:text-blue-600 transition-colors" title={t("showcase.common.edit")}>
|
|
238
240
|
<svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2"><path d="M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"/><path d="M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z"/></svg>
|
|
239
241
|
</button>
|
|
240
242
|
</div>
|
|
@@ -289,20 +291,20 @@ export const TableShowcase = () => {
|
|
|
289
291
|
return (
|
|
290
292
|
<ShowcaseLayout
|
|
291
293
|
title="ITTable"
|
|
292
|
-
description="
|
|
294
|
+
description={t("showcase.data.tableDesc")}
|
|
293
295
|
code={code}
|
|
294
296
|
demo={
|
|
295
297
|
<div className="w-full space-y-2">
|
|
296
298
|
<div className="text-xs font-medium text-slate-500 dark:text-slate-400 px-1">
|
|
297
299
|
{selectedRow
|
|
298
|
-
?
|
|
299
|
-
: "
|
|
300
|
+
? t("showcase.data.selectedName", { name: selectedRow.name as string })
|
|
301
|
+
: t("showcase.data.clickToSelect")}
|
|
300
302
|
</div>
|
|
301
303
|
<div className="w-full bg-white dark:bg-slate-900 rounded-xl overflow-hidden shadow-sm">
|
|
302
304
|
<ITTable
|
|
303
305
|
columns={columns}
|
|
304
306
|
data={TABLE_DATA}
|
|
305
|
-
title="
|
|
307
|
+
title={t("showcase.data.teamMembers")}
|
|
306
308
|
variant={variant}
|
|
307
309
|
size={size}
|
|
308
310
|
defaultItemsPerPage={5}
|
|
@@ -316,7 +318,7 @@ export const TableShowcase = () => {
|
|
|
316
318
|
<>
|
|
317
319
|
<ITSelect
|
|
318
320
|
name="var_ctrl"
|
|
319
|
-
label="
|
|
321
|
+
label={t("showcase.data.tableVariant")}
|
|
320
322
|
value={variant}
|
|
321
323
|
onChange={(e: any) => setVariant(e.target.value)}
|
|
322
324
|
options={[
|
|
@@ -327,7 +329,7 @@ export const TableShowcase = () => {
|
|
|
327
329
|
/>
|
|
328
330
|
<ITSelect
|
|
329
331
|
name="sz_ctrl"
|
|
330
|
-
label="
|
|
332
|
+
label={t("showcase.data.rowSize")}
|
|
331
333
|
value={size}
|
|
332
334
|
onChange={(e: any) => setSize(e.target.value)}
|
|
333
335
|
options={[
|
|
@@ -337,12 +339,14 @@ export const TableShowcase = () => {
|
|
|
337
339
|
]}
|
|
338
340
|
/>
|
|
339
341
|
<div className="flex items-center justify-between pt-2">
|
|
340
|
-
<span className="text-sm font-semibold text-gray-700 dark:text-slate-300">
|
|
341
|
-
<ITSlideToggle isOn={useCustomCard} onToggle={setUseCustomCard} size="sm"
|
|
342
|
+
<span className="text-sm font-semibold text-gray-700 dark:text-slate-300">{t("showcase.data.customCardTemplate")}</span>
|
|
343
|
+
<ITSlideToggle isOn={useCustomCard} onToggle={setUseCustomCard} size="sm"
|
|
344
|
+
ariaLabel={t("showcase.data.customCardTemplate")}
|
|
345
|
+
/>
|
|
342
346
|
</div>
|
|
343
347
|
{!useCustomCard && (
|
|
344
348
|
<div className="p-2 bg-slate-100 dark:bg-slate-800 rounded text-xs text-slate-500">
|
|
345
|
-
|
|
349
|
+
{t("showcase.data.defaultCardActive")}
|
|
346
350
|
</div>
|
|
347
351
|
)}
|
|
348
352
|
</>
|
|
@@ -414,7 +418,7 @@ export const TableShowcase = () => {
|
|
|
414
418
|
gallery={
|
|
415
419
|
<div className="space-y-6">
|
|
416
420
|
<div>
|
|
417
|
-
<
|
|
421
|
+
<h3 className="mb-3 font-mono text-[11px] font-medium uppercase tracking-[0.14em] text-slate-500 dark:text-slate-400">{t("showcase.data.galleryCustomCardsHover")}</h3>
|
|
418
422
|
<div className="grid grid-cols-1 sm:grid-cols-2 gap-4">
|
|
419
423
|
{TABLE_DATA.slice(0, 4).map((row, i) => {
|
|
420
424
|
const initials = (row.name as string).split(" ").map((w: string) => w[0]).join("");
|
|
@@ -451,8 +455,8 @@ export const TableShowcase = () => {
|
|
|
451
455
|
</div>
|
|
452
456
|
|
|
453
457
|
<div>
|
|
454
|
-
<
|
|
455
|
-
<div className="border border-slate-200 dark:border-slate-
|
|
458
|
+
<h3 className="mb-3 font-mono text-[11px] font-medium uppercase tracking-[0.14em] text-slate-500 dark:text-slate-400">{t("showcase.data.galleryDefaultCards")}</h3>
|
|
459
|
+
<div className="overflow-hidden rounded-[10px] border border-slate-200 dark:border-slate-800">
|
|
456
460
|
<ITTable
|
|
457
461
|
columns={columns}
|
|
458
462
|
data={TABLE_DATA.slice(0, 6)}
|
|
@@ -465,13 +469,13 @@ export const TableShowcase = () => {
|
|
|
465
469
|
</div>
|
|
466
470
|
|
|
467
471
|
<div>
|
|
468
|
-
<
|
|
469
|
-
<div className="border border-slate-200 dark:border-slate-
|
|
472
|
+
<h3 className="mb-3 font-mono text-[11px] font-medium uppercase tracking-[0.14em] text-slate-500 dark:text-slate-400">{t("showcase.data.galleryCustomCardsPagination")}</h3>
|
|
473
|
+
<div className="overflow-hidden rounded-[10px] border border-slate-200 dark:border-slate-800">
|
|
470
474
|
<ITTable
|
|
471
475
|
columns={columns}
|
|
472
476
|
data={TABLE_DATA}
|
|
473
477
|
size="sm"
|
|
474
|
-
title="
|
|
478
|
+
title={t("showcase.data.galleryAllMembers")}
|
|
475
479
|
defaultItemsPerPage={4}
|
|
476
480
|
renderCard={(row: any) => {
|
|
477
481
|
const initials = (row.name as string).split(" ").map((w: string) => w[0]).join("");
|
|
@@ -497,12 +501,12 @@ export const TableShowcase = () => {
|
|
|
497
501
|
</div>
|
|
498
502
|
|
|
499
503
|
<div>
|
|
500
|
-
<
|
|
501
|
-
<div className="border border-slate-200 dark:border-slate-
|
|
504
|
+
<h3 className="mb-3 font-mono text-[11px] font-medium uppercase tracking-[0.14em] text-slate-500 dark:text-slate-400">{t("showcase.data.galleryCompactFixed")}</h3>
|
|
505
|
+
<div className="overflow-hidden rounded-[10px] border border-slate-200 dark:border-slate-800" style={{ maxWidth: 560 }}>
|
|
502
506
|
<ITTable
|
|
503
507
|
columns={fixedColumns}
|
|
504
508
|
data={TABLE_DATA}
|
|
505
|
-
title="
|
|
509
|
+
title={t("showcase.data.galleryFixedLayout")}
|
|
506
510
|
layout="fixed"
|
|
507
511
|
density="compact"
|
|
508
512
|
defaultItemsPerPage={5}
|
|
@@ -511,12 +515,12 @@ export const TableShowcase = () => {
|
|
|
511
515
|
</div>
|
|
512
516
|
|
|
513
517
|
<div>
|
|
514
|
-
<
|
|
515
|
-
<div className="border border-slate-200 dark:border-slate-
|
|
518
|
+
<h3 className="mb-3 font-mono text-[11px] font-medium uppercase tracking-[0.14em] text-slate-500 dark:text-slate-400">{t("showcase.data.galleryPinnedNameActions")}</h3>
|
|
519
|
+
<div className="overflow-hidden rounded-[10px] border border-slate-200 dark:border-slate-800" style={{ maxWidth: 520 }}>
|
|
516
520
|
<ITTable
|
|
517
521
|
columns={pinnedColumns}
|
|
518
522
|
data={TABLE_DATA}
|
|
519
|
-
title="
|
|
523
|
+
title={t("showcase.data.galleryPinnedColumns")}
|
|
520
524
|
layout="fixed"
|
|
521
525
|
density="compact"
|
|
522
526
|
defaultItemsPerPage={5}
|
|
@@ -528,12 +532,12 @@ export const TableShowcase = () => {
|
|
|
528
532
|
</div>
|
|
529
533
|
|
|
530
534
|
<div>
|
|
531
|
-
<
|
|
532
|
-
<div className="border border-slate-200 dark:border-slate-
|
|
535
|
+
<h3 className="mb-3 font-mono text-[11px] font-medium uppercase tracking-[0.14em] text-slate-500 dark:text-slate-400">{t("showcase.data.galleryAutoCards")}</h3>
|
|
536
|
+
<div className="overflow-hidden rounded-[10px] border border-slate-200 dark:border-slate-800" style={{ maxWidth: 420 }}>
|
|
533
537
|
<ITTable
|
|
534
538
|
columns={columns}
|
|
535
539
|
data={TABLE_DATA.slice(0, 6)}
|
|
536
|
-
title="
|
|
540
|
+
title={t("showcase.data.galleryNarrowContainer")}
|
|
537
541
|
autoCardBreakpoint={640}
|
|
538
542
|
defaultItemsPerPage={6}
|
|
539
543
|
/>
|
|
@@ -541,12 +545,12 @@ export const TableShowcase = () => {
|
|
|
541
545
|
</div>
|
|
542
546
|
|
|
543
547
|
<div>
|
|
544
|
-
<
|
|
545
|
-
<div className="border border-slate-200 dark:border-slate-
|
|
548
|
+
<h3 className="mb-3 font-mono text-[11px] font-medium uppercase tracking-[0.14em] text-slate-500 dark:text-slate-400">{t("showcase.data.galleryVirtualized")}</h3>
|
|
549
|
+
<div className="overflow-hidden rounded-[10px] border border-slate-200 dark:border-slate-800">
|
|
546
550
|
<ITTable
|
|
547
551
|
columns={virtualColumns}
|
|
548
552
|
data={virtualData}
|
|
549
|
-
title="
|
|
553
|
+
title={t("showcase.data.galleryVirtualizedTitle")}
|
|
550
554
|
virtualized
|
|
551
555
|
stickyHeader
|
|
552
556
|
layout="fixed"
|
|
@@ -559,12 +563,12 @@ export const TableShowcase = () => {
|
|
|
559
563
|
</div>
|
|
560
564
|
|
|
561
565
|
<div>
|
|
562
|
-
<
|
|
563
|
-
<div className="border border-slate-200 dark:border-slate-
|
|
566
|
+
<h3 className="mb-3 font-mono text-[11px] font-medium uppercase tracking-[0.14em] text-slate-500 dark:text-slate-400">{t("showcase.data.galleryColumnFilters")}</h3>
|
|
567
|
+
<div className="overflow-hidden rounded-[10px] border border-slate-200 dark:border-slate-800">
|
|
564
568
|
<ITTable
|
|
565
569
|
columns={filterDemoColumns}
|
|
566
570
|
data={filterDemoData}
|
|
567
|
-
title="
|
|
571
|
+
title={t("showcase.data.galleryFilterDemo")}
|
|
568
572
|
size="sm"
|
|
569
573
|
defaultItemsPerPage={8}
|
|
570
574
|
/>
|
|
@@ -575,12 +579,12 @@ export const TableShowcase = () => {
|
|
|
575
579
|
</div>
|
|
576
580
|
|
|
577
581
|
<div>
|
|
578
|
-
<
|
|
579
|
-
<div className="border border-slate-200 dark:border-slate-
|
|
582
|
+
<h3 className="mb-3 font-mono text-[11px] font-medium uppercase tracking-[0.14em] text-slate-500 dark:text-slate-400">{t("showcase.data.galleryDesignOverrides")}</h3>
|
|
583
|
+
<div className="overflow-hidden rounded-[10px] border border-slate-200 dark:border-slate-800">
|
|
580
584
|
<ITTable
|
|
581
585
|
columns={columns}
|
|
582
586
|
data={TABLE_DATA.slice(0, 5)}
|
|
583
|
-
title="
|
|
587
|
+
title={t("showcase.data.galleryCustomDesign")}
|
|
584
588
|
defaultItemsPerPage={5}
|
|
585
589
|
showViewToggle={false}
|
|
586
590
|
colors={{
|
|
@@ -605,8 +609,8 @@ export const TableShowcase = () => {
|
|
|
605
609
|
</div>
|
|
606
610
|
|
|
607
611
|
<div>
|
|
608
|
-
<
|
|
609
|
-
<div className="border border-slate-200 dark:border-slate-
|
|
612
|
+
<h3 className="mb-3 font-mono text-[11px] font-medium uppercase tracking-[0.14em] text-slate-500 dark:text-slate-400">{t("showcase.data.galleryPerColumnDesign")}</h3>
|
|
613
|
+
<div className="overflow-hidden rounded-[10px] border border-slate-200 dark:border-slate-800">
|
|
610
614
|
<ITTable
|
|
611
615
|
columns={columns.map((col: any) =>
|
|
612
616
|
col.key === "sales"
|
|
@@ -616,7 +620,7 @@ export const TableShowcase = () => {
|
|
|
616
620
|
: col
|
|
617
621
|
)}
|
|
618
622
|
data={TABLE_DATA.slice(0, 5)}
|
|
619
|
-
title="
|
|
623
|
+
title={t("showcase.data.galleryPerColumnTitle")}
|
|
620
624
|
defaultItemsPerPage={5}
|
|
621
625
|
showViewToggle={false}
|
|
622
626
|
/>
|
|
@@ -633,6 +637,7 @@ export const TableShowcase = () => {
|
|
|
633
637
|
|
|
634
638
|
// 2. ITDataTable Showcase
|
|
635
639
|
export const DataTableShowcase = () => {
|
|
640
|
+
const { t } = useITTranslation();
|
|
636
641
|
const [useCustomCard, setUseCustomCard] = useState(true);
|
|
637
642
|
const [apiState, setApiState] = useState<"normal" | "loading" | "empty" | "error">("normal");
|
|
638
643
|
const [reloadKey, setReloadKey] = useState(0);
|
|
@@ -815,21 +820,21 @@ export const DataTableShowcase = () => {
|
|
|
815
820
|
return (
|
|
816
821
|
<ShowcaseLayout
|
|
817
822
|
title="ITDataTable"
|
|
818
|
-
description="
|
|
823
|
+
description={t("showcase.data.dataTableDesc")}
|
|
819
824
|
code={code}
|
|
820
825
|
demo={
|
|
821
826
|
<div className="w-full space-y-2">
|
|
822
827
|
<div className="text-xs font-medium text-slate-500 dark:text-slate-400 px-1">
|
|
823
828
|
{selectedRow
|
|
824
|
-
?
|
|
825
|
-
: "
|
|
829
|
+
? t("showcase.data.selectedNameId", { name: selectedRow.name as string, id: selectedRow.id as number })
|
|
830
|
+
: t("showcase.data.clickToSelect")}
|
|
826
831
|
</div>
|
|
827
832
|
<div className="w-full bg-white dark:bg-slate-900 border border-slate-200 dark:border-slate-800 rounded-xl overflow-hidden shadow-md">
|
|
828
833
|
<ITDataTable
|
|
829
834
|
key={reloadKey}
|
|
830
835
|
columns={userColumns}
|
|
831
836
|
fetchData={fetchData}
|
|
832
|
-
title={apiState === "error" ? "
|
|
837
|
+
title={apiState === "error" ? t("showcase.data.titleConnectionError") : apiState === "empty" ? t("showcase.data.titleNoData") : t("showcase.data.titleUsers")}
|
|
833
838
|
defaultItemsPerPage={4}
|
|
834
839
|
size={dtSize}
|
|
835
840
|
layout={dtLayout}
|
|
@@ -849,7 +854,7 @@ export const DataTableShowcase = () => {
|
|
|
849
854
|
</div>
|
|
850
855
|
<span className={`px-2 py-0.5 text-[9px] font-bold uppercase tracking-wider rounded-md ${
|
|
851
856
|
row.active ? "bg-emerald-100 text-emerald-700 dark:bg-emerald-950/30 dark:text-emerald-300" : "bg-slate-100 text-slate-600 dark:bg-slate-800 dark:text-slate-400"
|
|
852
|
-
}`}>{row.active ? "
|
|
857
|
+
}`}>{row.active ? t("showcase.common.active") : t("showcase.data.inactive")}</span>
|
|
853
858
|
</div>
|
|
854
859
|
<div className="flex items-center justify-between">
|
|
855
860
|
<span className={`px-1.5 py-0.5 text-[10px] font-bold rounded ${
|
|
@@ -869,7 +874,7 @@ export const DataTableShowcase = () => {
|
|
|
869
874
|
controls={
|
|
870
875
|
<div className="space-y-3">
|
|
871
876
|
<div>
|
|
872
|
-
<p className="text-xs font-bold uppercase tracking-wider text-slate-400 dark:text-slate-500 mb-2">
|
|
877
|
+
<p className="text-xs font-bold uppercase tracking-wider text-slate-400 dark:text-slate-500 mb-2">{t("showcase.data.apiState")}</p>
|
|
873
878
|
<div className="flex flex-wrap gap-2">
|
|
874
879
|
{(["normal", "loading", "empty", "error"] as const).map((s) => (
|
|
875
880
|
<button
|
|
@@ -881,22 +886,24 @@ export const DataTableShowcase = () => {
|
|
|
881
886
|
: "bg-slate-100 dark:bg-slate-800 text-slate-600 dark:text-slate-300 hover:bg-slate-200 dark:hover:bg-slate-700"
|
|
882
887
|
}`}
|
|
883
888
|
>
|
|
884
|
-
{s === "normal" ?
|
|
889
|
+
{s === "normal" ? `✅ ${t("showcase.data.stateNormal")}` : s === "loading" ? `⏳ ${t("showcase.data.stateLoading")}` : s === "empty" ? `📭 ${t("showcase.data.stateEmpty")}` : `💥 ${t("showcase.data.stateError")}`}
|
|
885
890
|
</button>
|
|
886
891
|
))}
|
|
887
892
|
</div>
|
|
888
893
|
</div>
|
|
889
894
|
<div className="flex items-center justify-between pt-1">
|
|
890
|
-
<span className="text-sm font-semibold text-gray-700 dark:text-slate-300">
|
|
891
|
-
<ITSlideToggle isOn={useCustomCard} onToggle={setUseCustomCard} size="sm"
|
|
895
|
+
<span className="text-sm font-semibold text-gray-700 dark:text-slate-300">{t("showcase.data.customCardTemplate")}</span>
|
|
896
|
+
<ITSlideToggle isOn={useCustomCard} onToggle={setUseCustomCard} size="sm"
|
|
897
|
+
ariaLabel={t("showcase.data.customCardTemplate")}
|
|
898
|
+
/>
|
|
892
899
|
</div>
|
|
893
900
|
{!useCustomCard && (
|
|
894
901
|
<div className="p-2 bg-slate-100 dark:bg-slate-800 rounded text-xs text-slate-500">
|
|
895
|
-
|
|
902
|
+
{t("showcase.data.defaultCardActive")}
|
|
896
903
|
</div>
|
|
897
904
|
)}
|
|
898
905
|
<div>
|
|
899
|
-
<p className="text-xs font-bold uppercase tracking-wider text-slate-400 dark:text-slate-500 mb-2">
|
|
906
|
+
<p className="text-xs font-bold uppercase tracking-wider text-slate-400 dark:text-slate-500 mb-2">{t("showcase.data.borders")}</p>
|
|
900
907
|
<div className="flex flex-wrap gap-2">
|
|
901
908
|
{(["default", "blue", "rose", "none"] as const).map((s) => (
|
|
902
909
|
<button
|
|
@@ -911,16 +918,16 @@ export const DataTableShowcase = () => {
|
|
|
911
918
|
: "bg-slate-100 dark:bg-slate-800 text-slate-600 dark:text-slate-300 hover:bg-slate-200 dark:hover:bg-slate-700"
|
|
912
919
|
}`}
|
|
913
920
|
>
|
|
914
|
-
{s === "default" ? "
|
|
921
|
+
{s === "default" ? t("showcase.data.borderGray") : s === "blue" ? t("showcase.data.borderBlue") : s === "rose" ? t("showcase.data.borderRose") : t("showcase.data.borderNone")}
|
|
915
922
|
</button>
|
|
916
923
|
))}
|
|
917
924
|
</div>
|
|
918
925
|
</div>
|
|
919
926
|
<div className="space-y-3">
|
|
920
|
-
<p className="text-xs font-bold uppercase tracking-wider text-slate-400 dark:text-slate-500 mb-2">
|
|
927
|
+
<p className="text-xs font-bold uppercase tracking-wider text-slate-400 dark:text-slate-500 mb-2">{t("showcase.data.tableCapabilities")}</p>
|
|
921
928
|
<ITSelect
|
|
922
929
|
name="dt_size"
|
|
923
|
-
label="
|
|
930
|
+
label={t("showcase.common.size")}
|
|
924
931
|
value={dtSize}
|
|
925
932
|
onChange={(e: any) => setDtSize(e.target.value as "sm" | "md" | "lg")}
|
|
926
933
|
options={[
|
|
@@ -931,7 +938,7 @@ export const DataTableShowcase = () => {
|
|
|
931
938
|
/>
|
|
932
939
|
<ITSelect
|
|
933
940
|
name="dt_density"
|
|
934
|
-
label="
|
|
941
|
+
label={t("showcase.data.density")}
|
|
935
942
|
value={dtDensity}
|
|
936
943
|
onChange={(e: any) => setDtDensity(e.target.value as "compact" | "normal" | "comfortable")}
|
|
937
944
|
options={[
|
|
@@ -942,7 +949,7 @@ export const DataTableShowcase = () => {
|
|
|
942
949
|
/>
|
|
943
950
|
<ITSelect
|
|
944
951
|
name="dt_layout"
|
|
945
|
-
label="
|
|
952
|
+
label={t("showcase.data.layout")}
|
|
946
953
|
value={dtLayout}
|
|
947
954
|
onChange={(e: any) => setDtLayout(e.target.value as "auto" | "fixed")}
|
|
948
955
|
options={[
|
|
@@ -952,7 +959,7 @@ export const DataTableShowcase = () => {
|
|
|
952
959
|
/>
|
|
953
960
|
<ITSelect
|
|
954
961
|
name="dt_autocards"
|
|
955
|
-
label="
|
|
962
|
+
label={t("showcase.data.autoCardsBelow")}
|
|
956
963
|
value={String(dtAutoCardBreakpoint)}
|
|
957
964
|
onChange={(e: any) => setDtAutoCardBreakpoint(Number(e.target.value))}
|
|
958
965
|
options={[
|
|
@@ -963,16 +970,20 @@ export const DataTableShowcase = () => {
|
|
|
963
970
|
]}
|
|
964
971
|
/>
|
|
965
972
|
<div className="flex items-center justify-between pt-2">
|
|
966
|
-
<span className="text-sm font-semibold text-gray-700 dark:text-slate-300">
|
|
967
|
-
<ITSlideToggle isOn={dtVirtualized} onToggle={setDtVirtualized} size="sm"
|
|
973
|
+
<span className="text-sm font-semibold text-gray-700 dark:text-slate-300">{t("showcase.data.virtualizedGallery")}</span>
|
|
974
|
+
<ITSlideToggle isOn={dtVirtualized} onToggle={setDtVirtualized} size="sm"
|
|
975
|
+
ariaLabel={t("showcase.data.virtualizedGallery")}
|
|
976
|
+
/>
|
|
968
977
|
</div>
|
|
969
978
|
<div className="flex items-center justify-between">
|
|
970
|
-
<span className="text-sm font-semibold text-gray-700 dark:text-slate-300">
|
|
971
|
-
<ITSlideToggle isOn={dtStickyHeader} onToggle={setDtStickyHeader} size="sm" disabled={!dtVirtualized}
|
|
979
|
+
<span className="text-sm font-semibold text-gray-700 dark:text-slate-300">{t("showcase.data.stickyHeader")}</span>
|
|
980
|
+
<ITSlideToggle isOn={dtStickyHeader} onToggle={setDtStickyHeader} size="sm" disabled={!dtVirtualized}
|
|
981
|
+
ariaLabel={t("showcase.data.stickyHeader")}
|
|
982
|
+
/>
|
|
972
983
|
</div>
|
|
973
984
|
{dtVirtualized && (
|
|
974
985
|
<div className="p-2 bg-slate-100 dark:bg-slate-800 rounded text-xs text-slate-500">
|
|
975
|
-
|
|
986
|
+
{t("showcase.data.capabilitiesHint")}
|
|
976
987
|
</div>
|
|
977
988
|
)}
|
|
978
989
|
</div>
|
|
@@ -1051,10 +1062,10 @@ export const DataTableShowcase = () => {
|
|
|
1051
1062
|
gallery={
|
|
1052
1063
|
<div className="space-y-6">
|
|
1053
1064
|
<div>
|
|
1054
|
-
<
|
|
1055
|
-
<div className="border border-slate-200 dark:border-slate-
|
|
1065
|
+
<h3 className="mb-3 font-mono text-[11px] font-medium uppercase tracking-[0.14em] text-slate-500 dark:text-slate-400">{t("showcase.data.galleryCustomCardsHover")}</h3>
|
|
1066
|
+
<div className="overflow-hidden rounded-[10px] border border-slate-200 dark:border-slate-800">
|
|
1056
1067
|
<GalleryDataTable
|
|
1057
|
-
title="
|
|
1068
|
+
title={t("showcase.data.teamMembers")}
|
|
1058
1069
|
defaultItemsPerPage={4}
|
|
1059
1070
|
renderCard={(row: any) => {
|
|
1060
1071
|
const initials = (row.name as string).split(" ").map((w: string) => w[0]).join("");
|
|
@@ -1070,7 +1081,7 @@ export const DataTableShowcase = () => {
|
|
|
1070
1081
|
</div>
|
|
1071
1082
|
<span className={`px-2 py-0.5 text-[10px] font-bold uppercase tracking-wider rounded-md ${
|
|
1072
1083
|
row.active ? "bg-emerald-100 text-emerald-700 dark:bg-emerald-950/30 dark:text-emerald-300" : "bg-slate-100 text-slate-600 dark:bg-slate-800 dark:text-slate-400"
|
|
1073
|
-
}`}>{row.active ? "
|
|
1084
|
+
}`}>{row.active ? t("showcase.common.active") : t("showcase.data.inactive")}</span>
|
|
1074
1085
|
</div>
|
|
1075
1086
|
<div className="flex items-center gap-2 text-xs text-slate-500 mb-3">
|
|
1076
1087
|
<span className={`px-2 py-0.5 rounded-md font-semibold ${
|
|
@@ -1094,8 +1105,8 @@ export const DataTableShowcase = () => {
|
|
|
1094
1105
|
</div>
|
|
1095
1106
|
|
|
1096
1107
|
<div>
|
|
1097
|
-
<
|
|
1098
|
-
<div className="border border-slate-200 dark:border-slate-
|
|
1108
|
+
<h3 className="mb-3 font-mono text-[11px] font-medium uppercase tracking-[0.14em] text-slate-500 dark:text-slate-400">{t("showcase.data.galleryDefaultCardsPagination")}</h3>
|
|
1109
|
+
<div className="overflow-hidden rounded-[10px] border border-slate-200 dark:border-slate-800">
|
|
1099
1110
|
<GalleryDataTable
|
|
1100
1111
|
size="sm"
|
|
1101
1112
|
defaultItemsPerPage={3}
|
|
@@ -1105,12 +1116,12 @@ export const DataTableShowcase = () => {
|
|
|
1105
1116
|
</div>
|
|
1106
1117
|
|
|
1107
1118
|
<div>
|
|
1108
|
-
<
|
|
1109
|
-
<div className="border border-slate-200 dark:border-slate-
|
|
1119
|
+
<h3 className="mb-3 font-mono text-[11px] font-medium uppercase tracking-[0.14em] text-slate-500 dark:text-slate-400">{t("showcase.data.galleryDesignOverrides")}</h3>
|
|
1120
|
+
<div className="overflow-hidden rounded-[10px] border border-slate-200 dark:border-slate-800">
|
|
1110
1121
|
<ITDataTable
|
|
1111
1122
|
columns={userColumns}
|
|
1112
1123
|
fetchData={fetchData}
|
|
1113
|
-
title="
|
|
1124
|
+
title={t("showcase.data.galleryCustomDesign")}
|
|
1114
1125
|
defaultItemsPerPage={4}
|
|
1115
1126
|
debounceMs={0}
|
|
1116
1127
|
showViewToggle={false}
|
|
@@ -1129,12 +1140,12 @@ export const DataTableShowcase = () => {
|
|
|
1129
1140
|
</div>
|
|
1130
1141
|
|
|
1131
1142
|
<div>
|
|
1132
|
-
<
|
|
1133
|
-
<div className="border border-slate-200 dark:border-slate-
|
|
1143
|
+
<h3 className="mb-3 font-mono text-[11px] font-medium uppercase tracking-[0.14em] text-slate-500 dark:text-slate-400">{t("showcase.data.galleryPinnedIdActive")}</h3>
|
|
1144
|
+
<div className="overflow-hidden rounded-[10px] border border-slate-200 dark:border-slate-800" style={{ maxWidth: 520 }}>
|
|
1134
1145
|
<ITDataTable
|
|
1135
1146
|
columns={pinnedColumns}
|
|
1136
1147
|
fetchData={fetchData}
|
|
1137
|
-
title="
|
|
1148
|
+
title={t("showcase.data.galleryPinnedColumns")}
|
|
1138
1149
|
layout="fixed"
|
|
1139
1150
|
density="compact"
|
|
1140
1151
|
defaultItemsPerPage={4}
|
|
@@ -1147,13 +1158,13 @@ export const DataTableShowcase = () => {
|
|
|
1147
1158
|
</div>
|
|
1148
1159
|
|
|
1149
1160
|
<div>
|
|
1150
|
-
<
|
|
1151
|
-
<div className="border border-slate-200 dark:border-slate-
|
|
1161
|
+
<h3 className="mb-3 font-mono text-[11px] font-medium uppercase tracking-[0.14em] text-slate-500 dark:text-slate-400">{t("showcase.data.galleryServerVirtualization", { page: dtVirtualized ? 200 : 10 })}</h3>
|
|
1162
|
+
<div className="overflow-hidden rounded-[10px] border border-slate-200 dark:border-slate-800">
|
|
1152
1163
|
<ITDataTable
|
|
1153
1164
|
key={dtVirtualized ? "dt-virt-on" : "dt-virt-off"}
|
|
1154
1165
|
columns={virtualUserColumns}
|
|
1155
1166
|
fetchData={virtualFetchData}
|
|
1156
|
-
title="
|
|
1167
|
+
title={t("showcase.data.galleryVirtualizedUsers")}
|
|
1157
1168
|
defaultItemsPerPage={dtVirtualized ? 200 : 10}
|
|
1158
1169
|
itemsPerPageOptions={dtVirtualized ? [50, 100, 200] : [5, 10, 20]}
|
|
1159
1170
|
size={dtSize}
|
|
@@ -1233,6 +1244,7 @@ function GalleryDataTable({ title, size, defaultItemsPerPage, defaultView, rende
|
|
|
1233
1244
|
|
|
1234
1245
|
// 3. ITBadget Showcase
|
|
1235
1246
|
export const BadgetShowcase = () => {
|
|
1247
|
+
const { t } = useITTranslation();
|
|
1236
1248
|
const [color, setColor] = useState<any>("success");
|
|
1237
1249
|
const [size, setSize] = useState<any>("medium");
|
|
1238
1250
|
const [labelText, setLabelText] = useState("Activo");
|
|
@@ -1242,7 +1254,7 @@ export const BadgetShowcase = () => {
|
|
|
1242
1254
|
return (
|
|
1243
1255
|
<ShowcaseLayout
|
|
1244
1256
|
title="ITBadget"
|
|
1245
|
-
description="
|
|
1257
|
+
description={t("showcase.data.badgetDesc")}
|
|
1246
1258
|
code={code}
|
|
1247
1259
|
demo={
|
|
1248
1260
|
<ITBadget label={labelText} color={color} size={size} />
|
|
@@ -1251,14 +1263,14 @@ export const BadgetShowcase = () => {
|
|
|
1251
1263
|
<>
|
|
1252
1264
|
<ITInput
|
|
1253
1265
|
name="label"
|
|
1254
|
-
label="
|
|
1266
|
+
label={t("showcase.data.textLabel")}
|
|
1255
1267
|
value={labelText}
|
|
1256
1268
|
onChange={(e: any) => setLabelText(e.target.value)}
|
|
1257
1269
|
onBlur={() => { }}
|
|
1258
1270
|
/>
|
|
1259
1271
|
<ITSelect
|
|
1260
1272
|
name="color"
|
|
1261
|
-
label="
|
|
1273
|
+
label={t("showcase.common.color")}
|
|
1262
1274
|
value={color}
|
|
1263
1275
|
onChange={(e: any) => setColor(e.target.value)}
|
|
1264
1276
|
options={[
|
|
@@ -1272,7 +1284,7 @@ export const BadgetShowcase = () => {
|
|
|
1272
1284
|
/>
|
|
1273
1285
|
<ITSelect
|
|
1274
1286
|
name="size"
|
|
1275
|
-
label="
|
|
1287
|
+
label={t("showcase.common.size")}
|
|
1276
1288
|
value={size}
|
|
1277
1289
|
onChange={(e: any) => setSize(e.target.value)}
|
|
1278
1290
|
options={[
|
|
@@ -1303,6 +1315,7 @@ export const BadgetShowcase = () => {
|
|
|
1303
1315
|
|
|
1304
1316
|
// 4. ITImage Showcase
|
|
1305
1317
|
export const ImageShowcase = () => {
|
|
1318
|
+
const { t } = useITTranslation();
|
|
1306
1319
|
const [broken, setBroken] = useState(false);
|
|
1307
1320
|
const src = broken ? "https://nonexistent.image.site/broken.jpg" : "https://images.unsplash.com/photo-1618005182384-a83a8bd57fbe?w=400&q=80";
|
|
1308
1321
|
|
|
@@ -1311,26 +1324,28 @@ export const ImageShowcase = () => {
|
|
|
1311
1324
|
return (
|
|
1312
1325
|
<ShowcaseLayout
|
|
1313
1326
|
title="ITImage"
|
|
1314
|
-
description="
|
|
1327
|
+
description={t("showcase.data.imageDesc")}
|
|
1315
1328
|
code={code}
|
|
1316
1329
|
demo={
|
|
1317
1330
|
<div className="w-full max-w-sm flex flex-col items-center gap-3">
|
|
1318
1331
|
<ITImage
|
|
1319
1332
|
src={src}
|
|
1320
|
-
alt="
|
|
1333
|
+
alt={t("showcase.data.imageAlt")}
|
|
1321
1334
|
fallback="https://placehold.co/400x200?text=Error+Carga+Imagen"
|
|
1322
1335
|
className="rounded-xl object-cover h-40 w-full shadow-md"
|
|
1323
1336
|
/>
|
|
1324
1337
|
<span className="text-xs text-slate-500 font-mono">
|
|
1325
|
-
{broken ? "
|
|
1338
|
+
{broken ? t("showcase.data.imageBroken") : t("showcase.data.imageOk")}
|
|
1326
1339
|
</span>
|
|
1327
1340
|
</div>
|
|
1328
1341
|
}
|
|
1329
1342
|
controls={
|
|
1330
1343
|
<>
|
|
1331
1344
|
<div className="flex items-center justify-between pt-2">
|
|
1332
|
-
<span className="text-
|
|
1333
|
-
<ITSlideToggle isOn={broken} onToggle={setBroken} activeColor="danger" size="sm"
|
|
1345
|
+
<span className="font-mono text-[11px] font-medium uppercase tracking-[0.14em] text-slate-500 dark:text-slate-400">{t("showcase.data.forceError")}</span>
|
|
1346
|
+
<ITSlideToggle isOn={broken} onToggle={setBroken} activeColor="danger" size="sm"
|
|
1347
|
+
ariaLabel={t("showcase.data.forceError")}
|
|
1348
|
+
/>
|
|
1334
1349
|
</div>
|
|
1335
1350
|
</>
|
|
1336
1351
|
}
|
|
@@ -1340,6 +1355,7 @@ export const ImageShowcase = () => {
|
|
|
1340
1355
|
|
|
1341
1356
|
// ITChip Showcase
|
|
1342
1357
|
export const ChipShowcase = () => {
|
|
1358
|
+
const { t } = useITTranslation();
|
|
1343
1359
|
const [active, setActive] = useState<string[]>(["mx"]);
|
|
1344
1360
|
|
|
1345
1361
|
const toggle = (id: string) =>
|
|
@@ -1356,7 +1372,7 @@ export const ChipShowcase = () => {
|
|
|
1356
1372
|
return (
|
|
1357
1373
|
<ShowcaseLayout
|
|
1358
1374
|
title="ITChip"
|
|
1359
|
-
description="
|
|
1375
|
+
description={t("showcase.data.chipDesc")}
|
|
1360
1376
|
code={code}
|
|
1361
1377
|
demo={
|
|
1362
1378
|
<div className="w-full max-w-lg space-y-5">
|
|
@@ -1378,13 +1394,13 @@ export const ChipShowcase = () => {
|
|
|
1378
1394
|
</div>
|
|
1379
1395
|
<div className="flex flex-wrap items-center gap-2">
|
|
1380
1396
|
<ITChip label="México" color="danger" variant="outlined" removable onRemove={() => {}} />
|
|
1381
|
-
<ITChip label="
|
|
1397
|
+
<ITChip label={t("showcase.data.chipDisabled")} color="secondary" disabled />
|
|
1382
1398
|
</div>
|
|
1383
1399
|
</div>
|
|
1384
1400
|
}
|
|
1385
1401
|
controls={
|
|
1386
1402
|
<p className="text-xs text-slate-500">
|
|
1387
|
-
|
|
1403
|
+
{t("showcase.data.chipHint")}
|
|
1388
1404
|
</p>
|
|
1389
1405
|
}
|
|
1390
1406
|
doc={{
|