pillardash-ui-react 0.1.140 → 0.1.143
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/dist/cjs/components/Cards/Card.js +1 -1
- package/dist/cjs/components/Cards/Card.js.map +1 -1
- package/dist/cjs/components/Form/TextEditor/extensions.js +1 -1
- package/dist/cjs/components/Form/TextEditor/extensions.js.map +1 -1
- package/dist/cjs/components/Table/Pagination.js +1 -1
- package/dist/cjs/components/Table/Pagination.js.map +1 -1
- package/dist/cjs/components/Table/Table.js +1 -1
- package/dist/cjs/components/Table/Table.js.map +1 -1
- package/dist/cjs/components/Table/TableDropdown.js +1 -1
- package/dist/cjs/components/Table/TableDropdown.js.map +1 -1
- package/dist/cjs/components/Table/TableSkeleton.js +1 -1
- package/dist/cjs/components/Table/TableSkeleton.js.map +1 -1
- package/dist/esm/components/Cards/Card.mjs +1 -1
- package/dist/esm/components/Cards/Card.mjs.map +1 -1
- package/dist/esm/components/Form/TextEditor/extensions.mjs +1 -1
- package/dist/esm/components/Form/TextEditor/extensions.mjs.map +1 -1
- package/dist/esm/components/Table/Pagination.mjs +1 -1
- package/dist/esm/components/Table/Pagination.mjs.map +1 -1
- package/dist/esm/components/Table/Table.mjs +1 -1
- package/dist/esm/components/Table/Table.mjs.map +1 -1
- package/dist/esm/components/Table/TableDropdown.mjs +1 -1
- package/dist/esm/components/Table/TableDropdown.mjs.map +1 -1
- package/dist/esm/components/Table/TableSkeleton.mjs +1 -1
- package/dist/esm/components/Table/TableSkeleton.mjs.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var n=require("react/jsx-runtime");module.exports=function(
|
|
1
|
+
"use strict";var n=require("react/jsx-runtime");module.exports=function(r){var e=r.children,o=r.className,a=void 0===o?"":o,t=r.glass,d=void 0!==t&&t,b="".concat("\n w-full\n rounded-2xl\n shadow-xl\n transition-all\n duration-300\n ease-out\n hover:-translate-y-0.5\n p-5\n relative\n z-0\n "," ").concat(d?"\n backdrop-blur-xl\n bg-white/20\n dark:bg-gray-800/20\n border\n border-white/30\n dark:border-gray-700/30\n shadow-lg\n hover:shadow-xl\n hover:bg-white/30\n dark:hover:bg-gray-800/30\n before:absolute\n before:inset-0\n before:rounded-2xl\n before:bg-gradient-to-br\n before:from-white/10\n before:dark:from-gray-900/10\n before:to-transparent\n before:pointer-events-none\n ":"\n backdrop-blur-2xl\n bg-white\n dark:bg-gray-800\n "," ").concat(a);return n.jsx("div",{className:b,children:e})};
|
|
2
2
|
//# sourceMappingURL=Card.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Card.js","sources":["../../../../src/components/Cards/Card.tsx"],"sourcesContent":["import { ReactNode } from \"react\";\n\ninterface CardProps {\n children: ReactNode;\n className?: string;\n glass?: boolean;\n}\n\nconst Card = ({ children, className = \"\", glass = false }: CardProps) => {\n const baseClasses = `\n w-full\n rounded-2xl\n shadow-xl\n transition-all\n duration-300\n ease-out\n hover:-translate-y-0.5\n p-5\n relative\n z-0\n `;\n\n const glassClasses = `\n backdrop-blur-xl\n bg-white/20\n border\n border-white/30\n shadow-lg\n hover:shadow-xl\n hover:bg-white/30\n before:absolute\n before:inset-0\n before:rounded-2xl\n before:bg-gradient-to-br\n before:from-white/10\n before:to-transparent\n before:pointer-events-none\n `;\n\n const solidClasses = `\n backdrop-blur-2xl\n bg-white\n `;\n\n const combinedClasses = `${baseClasses} ${glass ? glassClasses : solidClasses} ${className}`;\n\n return (\n <div className={combinedClasses}>\n {children}\n </div>\n );\n};\n\nexport default Card;\n"],"names":["_a","children","_b","className","_c","glass","combinedClasses","concat","_jsx"],"mappings":"+DAQa,SAACA,GAAE,IAAAC,EAAQD,EAAAC,SAAEC,EAAAF,EAAAG,UAAAA,OAAS,IAAAD,EAAG,GAAEA,EAAEE,EAAAJ,EAAAK,MAAAA,OAAK,IAAAD,GAAQA,
|
|
1
|
+
{"version":3,"file":"Card.js","sources":["../../../../src/components/Cards/Card.tsx"],"sourcesContent":["import { ReactNode } from \"react\";\n\ninterface CardProps {\n children: ReactNode;\n className?: string;\n glass?: boolean;\n}\n\nconst Card = ({ children, className = \"\", glass = false }: CardProps) => {\n const baseClasses = `\n w-full\n rounded-2xl\n shadow-xl\n transition-all\n duration-300\n ease-out\n hover:-translate-y-0.5\n p-5\n relative\n z-0\n `;\n\n const glassClasses = `\n backdrop-blur-xl\n bg-white/20\n dark:bg-gray-800/20\n border\n border-white/30\n dark:border-gray-700/30\n shadow-lg\n hover:shadow-xl\n hover:bg-white/30\n dark:hover:bg-gray-800/30\n before:absolute\n before:inset-0\n before:rounded-2xl\n before:bg-gradient-to-br\n before:from-white/10\n before:dark:from-gray-900/10\n before:to-transparent\n before:pointer-events-none\n `;\n\n const solidClasses = `\n backdrop-blur-2xl\n bg-white\n dark:bg-gray-800\n `;\n\n const combinedClasses = `${baseClasses} ${glass ? glassClasses : solidClasses} ${className}`;\n\n return (\n <div className={combinedClasses}>\n {children}\n </div>\n );\n};\n\nexport default Card;\n"],"names":["_a","children","_b","className","_c","glass","combinedClasses","concat","_jsx"],"mappings":"+DAQa,SAACA,GAAE,IAAAC,EAAQD,EAAAC,SAAEC,EAAAF,EAAAG,UAAAA,OAAS,IAAAD,EAAG,GAAEA,EAAEE,EAAAJ,EAAAK,MAAAA,OAAK,IAAAD,GAAQA,EAyC7CE,EAAkB,GAAAC,OAxCJ,6MAwCkB,KAAAA,OAAIF,EA3BrB,+fAqBA,gFAMwD,KAAAE,OAAIJ,GAEjF,OACIK,EAAAA,WAAKL,UAAWG,EAAeL,SAC1BA,GAGb"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e=require("../../../node_modules/tslib/tslib.es6.js"),t=require("../../../node_modules/@tiptap/extension-bold/dist/index.js"),i=require("../../../node_modules/@tiptap/extension-bullet-list/dist/index.js"),s=require("../../../node_modules/@tiptap/extension-code/dist/index.js"),n=require("../../../node_modules/@tiptap/extension-code-block/dist/index.js"),r=require("../../../node_modules/@tiptap/extension-heading/dist/index.js"),a=require("@tiptap/extension-image"),d=require("../../../node_modules/@tiptap/extension-italic/dist/index.js"),o=require("@tiptap/extension-link"),l=require("../../../node_modules/@tiptap/extension-list-item/dist/index.js"),u=require("../../../node_modules/@tiptap/extension-ordered-list/dist/index.js"),p=require("../../../node_modules/@tiptap/extension-strike/dist/index.js"),x=require("../../../node_modules/@tiptap/extension-table/dist/index.js"),m=require("../../../node_modules/@tiptap/extension-table-cell/dist/index.js"),_=require("../../../node_modules/@tiptap/extension-table-header/dist/index.js"),f=require("../../../node_modules/@tiptap/extension-table-row/dist/index.js"),g=require("../../../node_modules/@tiptap/extension-task-item/dist/index.js"),c=require("../../../node_modules/@tiptap/extension-task-list/dist/index.js"),b=require("../../../node_modules/@tiptap/extension-text-align/dist/index.js"),h=require("@tiptap/extension-underline"),q=require("@tiptap/starter-kit"),j={heading:!0,formatting:!0,lists:!0,code:!0,quote:!0,link:!0,history:!0,placeholder:!0,slashCommand:!1,table:!1,image:!1,taskList:!1,alignment:!0},k={minimal:{heading:!1,formatting:!0,lists:!
|
|
1
|
+
"use strict";var e=require("../../../node_modules/tslib/tslib.es6.js"),t=require("../../../node_modules/@tiptap/extension-bold/dist/index.js"),i=require("../../../node_modules/@tiptap/extension-bullet-list/dist/index.js"),s=require("../../../node_modules/@tiptap/extension-code/dist/index.js"),n=require("../../../node_modules/@tiptap/extension-code-block/dist/index.js"),r=require("../../../node_modules/@tiptap/extension-heading/dist/index.js"),a=require("@tiptap/extension-image"),d=require("../../../node_modules/@tiptap/extension-italic/dist/index.js"),o=require("@tiptap/extension-link"),l=require("../../../node_modules/@tiptap/extension-list-item/dist/index.js"),u=require("../../../node_modules/@tiptap/extension-ordered-list/dist/index.js"),p=require("../../../node_modules/@tiptap/extension-strike/dist/index.js"),x=require("../../../node_modules/@tiptap/extension-table/dist/index.js"),m=require("../../../node_modules/@tiptap/extension-table-cell/dist/index.js"),_=require("../../../node_modules/@tiptap/extension-table-header/dist/index.js"),f=require("../../../node_modules/@tiptap/extension-table-row/dist/index.js"),g=require("../../../node_modules/@tiptap/extension-task-item/dist/index.js"),c=require("../../../node_modules/@tiptap/extension-task-list/dist/index.js"),b=require("../../../node_modules/@tiptap/extension-text-align/dist/index.js"),h=require("@tiptap/extension-underline"),q=require("@tiptap/starter-kit"),j={heading:!0,formatting:!0,lists:!0,code:!0,quote:!0,link:!0,history:!0,placeholder:!0,slashCommand:!1,table:!1,image:!1,taskList:!1,alignment:!0},k={minimal:{heading:!1,formatting:!0,lists:!0,code:!1,quote:!1,link:!0,history:!0,placeholder:!0,slashCommand:!1,table:!1,image:!1,taskList:!1,alignment:!1},standard:e.__assign({},j),full:e.__assign(e.__assign({},j),{slashCommand:!0,table:!0,image:!0,taskList:!0,alignment:!0})},y=function(t){return e.__assign(e.__assign({},j),t)};exports.createTextEditorExtensions=function(j){var k=y(j);return e.__spreadArray(e.__spreadArray(e.__spreadArray(e.__spreadArray(e.__spreadArray(e.__spreadArray(e.__spreadArray(e.__spreadArray(e.__spreadArray([q.configure({heading:!1,bulletList:!1,orderedList:!1,listItem:!1,codeBlock:!1})],k.formatting?[t.default,d.default,h,p.default]:[],!0),k.code?[s.default,n.default.configure({HTMLAttributes:{class:"bg-gray-100 p-3 rounded text-sm font-mono"}})]:[],!0),k.heading?[r.default.configure({levels:[1,2,3]})]:[],!0),k.alignment?[b.default.configure({types:["heading","paragraph"]})]:[],!0),k.lists?[i.default,u.default,l.default]:[],!0),k.link?[o.configure({openOnClick:!1,HTMLAttributes:{class:"text-blue-600 underline"}})]:[],!0),k.taskList?[c.default,g.default.configure({nested:!0})]:[],!0),k.image?[a.configure({inline:!1,allowBase64:!0})]:[],!0),k.table?[x.Table.configure({resizable:!0}),f.default,_.default,m.default]:[],!0)},exports.defaultTextEditorFeatures=j,exports.editorContentClassName="prose prose-sm max-w-none prose-h1:text-3xl prose-h1:font-bold prose-h2:text-2xl prose-h2:font-semibold prose-h3:text-xl prose-h3:font-semibold mx-auto focus:outline-none min-h-[200px] p-4",exports.toolbarPresetFeatures=k,exports.withDefaultFeatures=y;
|
|
2
2
|
//# sourceMappingURL=extensions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extensions.js","sources":["../../../../../src/components/Form/TextEditor/extensions.ts"],"sourcesContent":["import Bold from \"@tiptap/extension-bold\";\nimport BulletList from \"@tiptap/extension-bullet-list\";\nimport Code from \"@tiptap/extension-code\";\nimport CodeBlock from \"@tiptap/extension-code-block\";\nimport Heading from \"@tiptap/extension-heading\";\nimport Image from \"@tiptap/extension-image\";\nimport Italic from \"@tiptap/extension-italic\";\nimport Link from \"@tiptap/extension-link\";\nimport ListItem from \"@tiptap/extension-list-item\";\nimport OrderedList from \"@tiptap/extension-ordered-list\";\nimport Strike from \"@tiptap/extension-strike\";\nimport { Table } from \"@tiptap/extension-table\";\nimport TableCell from \"@tiptap/extension-table-cell\";\nimport TableHeader from \"@tiptap/extension-table-header\";\nimport TableRow from \"@tiptap/extension-table-row\";\nimport TaskItem from \"@tiptap/extension-task-item\";\nimport TaskList from \"@tiptap/extension-task-list\";\nimport TextAlign from \"@tiptap/extension-text-align\";\nimport Underline from \"@tiptap/extension-underline\";\nimport StarterKit from \"@tiptap/starter-kit\";\n\nexport interface TextEditorFeatures {\n heading?: boolean;\n formatting?: boolean;\n lists?: boolean;\n code?: boolean;\n quote?: boolean;\n link?: boolean;\n history?: boolean;\n placeholder?: boolean;\n slashCommand?: boolean;\n table?: boolean;\n image?: boolean;\n taskList?: boolean;\n alignment?: boolean;\n}\n\nexport type ToolbarPreset = \"minimal\" | \"standard\" | \"full\";\n\nexport const defaultTextEditorFeatures: Required<TextEditorFeatures> = {\n heading: true,\n formatting: true,\n lists: true,\n code: true,\n quote: true,\n link: true,\n history: true,\n placeholder: true,\n slashCommand: false,\n table: false,\n image: false,\n taskList: false,\n alignment: true,\n};\n\nexport const toolbarPresetFeatures: Record<ToolbarPreset, Required<TextEditorFeatures>> = {\n minimal: {\n heading: false,\n formatting: true,\n lists:
|
|
1
|
+
{"version":3,"file":"extensions.js","sources":["../../../../../src/components/Form/TextEditor/extensions.ts"],"sourcesContent":["import Bold from \"@tiptap/extension-bold\";\nimport BulletList from \"@tiptap/extension-bullet-list\";\nimport Code from \"@tiptap/extension-code\";\nimport CodeBlock from \"@tiptap/extension-code-block\";\nimport Heading from \"@tiptap/extension-heading\";\nimport Image from \"@tiptap/extension-image\";\nimport Italic from \"@tiptap/extension-italic\";\nimport Link from \"@tiptap/extension-link\";\nimport ListItem from \"@tiptap/extension-list-item\";\nimport OrderedList from \"@tiptap/extension-ordered-list\";\nimport Strike from \"@tiptap/extension-strike\";\nimport { Table } from \"@tiptap/extension-table\";\nimport TableCell from \"@tiptap/extension-table-cell\";\nimport TableHeader from \"@tiptap/extension-table-header\";\nimport TableRow from \"@tiptap/extension-table-row\";\nimport TaskItem from \"@tiptap/extension-task-item\";\nimport TaskList from \"@tiptap/extension-task-list\";\nimport TextAlign from \"@tiptap/extension-text-align\";\nimport Underline from \"@tiptap/extension-underline\";\nimport StarterKit from \"@tiptap/starter-kit\";\n\nexport interface TextEditorFeatures {\n heading?: boolean;\n formatting?: boolean;\n lists?: boolean;\n code?: boolean;\n quote?: boolean;\n link?: boolean;\n history?: boolean;\n placeholder?: boolean;\n slashCommand?: boolean;\n table?: boolean;\n image?: boolean;\n taskList?: boolean;\n alignment?: boolean;\n}\n\nexport type ToolbarPreset = \"minimal\" | \"standard\" | \"full\";\n\nexport const defaultTextEditorFeatures: Required<TextEditorFeatures> = {\n heading: true,\n formatting: true,\n lists: true,\n code: true,\n quote: true,\n link: true,\n history: true,\n placeholder: true,\n slashCommand: false,\n table: false,\n image: false,\n taskList: false,\n alignment: true,\n};\n\nexport const toolbarPresetFeatures: Record<ToolbarPreset, Required<TextEditorFeatures>> = {\n minimal: {\n heading: false,\n formatting: true,\n lists: true,\n code: false,\n quote: false,\n link: true,\n history: true,\n placeholder: true,\n slashCommand: false,\n table: false,\n image: false,\n taskList: false,\n alignment: false,\n },\n standard: {\n ...defaultTextEditorFeatures,\n },\n full: {\n ...defaultTextEditorFeatures,\n slashCommand: true,\n table: true,\n image: true,\n taskList: true,\n alignment: true,\n },\n};\n\nexport const withDefaultFeatures = (features?: TextEditorFeatures): Required<TextEditorFeatures> => ({\n ...defaultTextEditorFeatures,\n ...features,\n});\n\nexport const createTextEditorExtensions = (features?: TextEditorFeatures) => {\n const f = withDefaultFeatures(features);\n\n return [\n StarterKit.configure({\n heading: false,\n bulletList: false,\n orderedList: false,\n listItem: false,\n codeBlock: false,\n }),\n ...(f.formatting ? [Bold, Italic, Underline, Strike] : []),\n ...(f.code\n ? [\n Code,\n CodeBlock.configure({\n HTMLAttributes: {\n class: \"bg-gray-100 p-3 rounded text-sm font-mono\",\n },\n }),\n ]\n : []),\n ...(f.heading ? [Heading.configure({ levels: [1, 2, 3] })] : []),\n ...(f.alignment ? [TextAlign.configure({ types: [\"heading\", \"paragraph\"] })] : []),\n ...(f.lists ? [BulletList, OrderedList, ListItem] : []),\n ...(f.link\n ? [\n Link.configure({\n openOnClick: false,\n HTMLAttributes: {\n class: \"text-blue-600 underline\",\n },\n }),\n ]\n : []),\n ...(f.taskList ? [TaskList, TaskItem.configure({ nested: true })] : []),\n ...(f.image ? [Image.configure({ inline: false, allowBase64: true })] : []),\n ...(f.table\n ? [\n Table.configure({ resizable: true }),\n TableRow,\n TableHeader,\n TableCell,\n ]\n : []),\n ];\n};\n\nexport const editorContentClassName =\n \"prose prose-sm max-w-none prose-h1:text-3xl prose-h1:font-bold prose-h2:text-2xl prose-h2:font-semibold prose-h3:text-xl prose-h3:font-semibold mx-auto focus:outline-none min-h-[200px] p-4\";\n"],"names":["defaultTextEditorFeatures","heading","formatting","lists","code","quote","link","history","placeholder","slashCommand","table","image","taskList","alignment","toolbarPresetFeatures","minimal","standard","__assign","full","withDefaultFeatures","features","f","__spreadArray","StarterKit","configure","bulletList","orderedList","listItem","codeBlock","Bold","Italic","Underline","Strike","Code","CodeBlock","HTMLAttributes","class","Heading","levels","TextAlign","types","BulletList","OrderedList","ListItem","Link","openOnClick","TaskList","TaskItem","nested","Image","inline","allowBase64","Table","resizable","TableRow","TableHeader","TableCell"],"mappings":"+5CAuCaA,EAA0D,CACnEC,SAAS,EACTC,YAAY,EACZC,OAAO,EACPC,MAAM,EACNC,OAAO,EACPC,MAAM,EACNC,SAAS,EACTC,aAAa,EACbC,cAAc,EACdC,OAAO,EACPC,OAAO,EACPC,UAAU,EACVC,WAAW,GAGFC,EAA6E,CACtFC,QAAS,CACLd,SAAS,EACTC,YAAY,EACZC,OAAO,EACPC,MAAM,EACNC,OAAO,EACPC,MAAM,EACNC,SAAS,EACTC,aAAa,EACbC,cAAc,EACdC,OAAO,EACPC,OAAO,EACPC,UAAU,EACVC,WAAW,GAEfG,SAAQC,EAAAA,SAAA,CAAA,EACDjB,GAEPkB,KAAID,EAAAA,SAAAA,WAAA,CAAA,EACGjB,GAAyB,CAC5BS,cAAc,EACdC,OAAO,EACPC,OAAO,EACPC,UAAU,EACVC,WAAW,KAINM,EAAsB,SAACC,GAAgE,OAAAH,EAAAA,SAAAA,WAAA,CAAA,EAC7FjB,GACAoB,EAF6F,qCAK1D,SAACA,GACvC,IAAMC,EAAIF,EAAoBC,GAE9B,OAAAE,EAAAA,cAAAA,gBAAAA,EAAAA,cAAAA,EAAAA,cAAAA,EAAAA,cAAAA,gBAAAA,EAAAA,cAAAA,EAAAA,cAAAA,gBAAA,CACIC,EAAWC,UAAU,CACjBvB,SAAS,EACTwB,YAAY,EACZC,aAAa,EACbC,UAAU,EACVC,WAAW,KAEXP,EAAEnB,WAAa,CAAC2B,EAAAA,QAAMC,EAAAA,QAAQC,EAAWC,EAAAA,SAAU,IAAG,GACtDX,EAAEjB,KACA,CACI6B,EAAAA,QACAC,EAAAA,QAAUV,UAAU,CAChBW,eAAgB,CACZC,MAAO,gDAInB,OACFf,EAAEpB,QAAU,CAACoC,UAAQb,UAAU,CAAEc,OAAQ,CAAC,EAAG,EAAG,MAAS,OACzDjB,EAAER,UAAY,CAAC0B,EAAAA,QAAUf,UAAU,CAAEgB,MAAO,CAAC,UAAW,gBAAmB,OAC3EnB,EAAElB,MAAQ,CAACsC,EAAAA,QAAYC,EAAAA,QAAaC,EAAAA,SAAY,OAChDtB,EAAEf,KACA,CACIsC,EAAKpB,UAAU,CACXqB,aAAa,EACbV,eAAgB,CACZC,MAAO,8BAInB,IAAG,GACLf,EAAET,SAAW,CAACkC,EAAAA,QAAUC,EAAAA,QAASvB,UAAU,CAAEwB,QAAQ,KAAW,IAAG,GACnE3B,EAAEV,MAAQ,CAACsC,EAAMzB,UAAU,CAAE0B,QAAQ,EAAOC,aAAa,KAAW,IAAG,GACvE9B,EAAEX,MACA,CACI0C,EAAAA,MAAM5B,UAAU,CAAE6B,WAAW,IAC7BC,EAAAA,QACAC,EAAAA,QACAC,EAAAA,SAEJ,IAAG,EAEjB,qEAGI"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e=require("react/jsx-runtime"),r=require("../Button/Button.js");require("../Button/ExportButton.js"),exports.Pagination=function(
|
|
1
|
+
"use strict";var e=require("react/jsx-runtime"),r=require("../Button/Button.js");require("../Button/ExportButton.js"),exports.Pagination=function(a){var t=a.currentPage,n=a.totalPages,i=a.totalItems,s=a.itemsPerPage,d=a.onPageChange,l=a.onViewChange,o=a.loading,c=void 0!==o&&o,g=function(e){e>0&&e<=n&&!c&&d&&d(e)},u=(t-1)*s,x=Math.min(u+s,i);return e.jsxs("div",{className:"flex items-center justify-between border-t border-gray-200 bg-white py-3 dark:border-gray-700 dark:bg-gray-900",children:[e.jsx("div",{className:"block flex-1 sm:hidden",children:e.jsxs("div",{className:"flex justify-between",children:[e.jsx("button",{onClick:function(){return g(t-1)},disabled:1===t||c,className:"relative inline-flex items-center rounded-md border border-gray-300 bg-white px-4 py-2 text-sm font-medium text-gray-700 hover:bg-gray-50 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-200 dark:hover:bg-gray-700 ".concat(1===t||c?"cursor-not-allowed opacity-50":""),children:"Previous"}),e.jsx("button",{onClick:function(){return g(t+1)},disabled:t===n||c,className:"relative ml-3 inline-flex items-center rounded-md border border-gray-300 bg-white px-4 py-2 text-sm font-medium text-gray-700 hover:bg-gray-50 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-200 dark:hover:bg-gray-700 ".concat(t===n||c?"cursor-not-allowed opacity-50":""),children:"Next"})]})}),e.jsxs("div",{className:"hidden sm:flex sm:flex-1 sm:items-center sm:justify-between",children:[e.jsxs("div",{className:"flex items-center justify-center gap-2",children:[e.jsxs("div",{className:"relative",children:[e.jsx("select",{value:s,onChange:function(e){return l&&l(e.target.value)},disabled:c,className:"appearance-none rounded-md border border-gray-300 bg-white py-2 pl-3 pr-8 text-sm focus:outline-none focus:ring-2 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-200",children:[10,20,30,50,100].map((function(r){return e.jsx("option",{value:r,children:r},r)}))}),e.jsx("div",{className:"pointer-events-none absolute inset-y-0 right-0 flex items-center px-2 text-gray-700 dark:text-gray-300",children:e.jsx("svg",{className:"h-4 w-4",fill:"currentColor",viewBox:"0 0 20 20",children:e.jsx("path",{fillRule:"evenodd",d:"M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z",clipRule:"evenodd"})})})]}),e.jsxs("p",{className:"text-sm text-gray-700 dark:text-gray-300",children:[e.jsxs("span",{children:[i," Entries"]}),e.jsxs("span",{className:"ml-1",children:["(Showing ",u+1,"-",x," of ",i,")"]})]})]}),e.jsx("div",{children:e.jsxs("nav",{className:"relative z-0 inline-flex gap-2 -space-x-px rounded-md shadow-sm","aria-label":"Pagination",children:[e.jsxs("button",{onClick:function(){return g(t-1)},disabled:1===t||c,className:"relative inline-flex items-center rounded-md border border-gray-300 bg-white px-2 py-2 text-sm font-medium text-gray-500 hover:bg-gray-50 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-300 dark:hover:bg-gray-700 ".concat(1===t||c?"cursor-not-allowed opacity-50":""),children:[e.jsx("span",{className:"sr-only",children:"Previous"}),e.jsx("svg",{className:"h-5 w-5",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true",children:e.jsx("path",{fillRule:"evenodd",d:"M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z",clipRule:"evenodd"})})]}),function(){var e=[];if(n<=5)for(var r=1;r<=n;r++)e.push(r);else{var a=Math.max(1,t-2),i=Math.min(n,a+5-1);i-a<4&&(a=Math.max(1,i-5+1));for(r=a;r<=i;r++)e.push(r)}return e}().map((function(r){return e.jsx("button",{onClick:function(){return g(r)},disabled:c,"aria-current":t===r?"page":void 0,className:"relative inline-flex items-center rounded-md border px-4 py-2 text-sm font-semibold ".concat(t===r?"z-10 border-primary-100 bg-primary-50 text-primary":"border-gray-300 bg-white text-gray-500 hover:bg-gray-50 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-300 dark:hover:bg-gray-700"," ").concat(c?"cursor-not-allowed opacity-50":""),children:r},r)})),e.jsxs(r,{onClick:function(){return g(t+1)},disabled:t===n||c,type:"button",variant:"primary",size:"sm",outline:!0,children:["Next Page",e.jsx("svg",{className:"h-5 w-5",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true",children:e.jsx("path",{fillRule:"evenodd",d:"M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z",clipRule:"evenodd"})})]})]})})]})]})};
|
|
2
2
|
//# sourceMappingURL=Pagination.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pagination.js","sources":["../../../../src/components/Table/Pagination.tsx"],"sourcesContent":["import { PaginationProps } from \"./types\";\nimport { Button } from \"../Button\";\n\nexport function Pagination({\n currentPage,\n totalPages,\n totalItems,\n itemsPerPage,\n onPageChange,\n onViewChange,\n loading = false,\n}: PaginationProps) {\n const perPageOptions = [10, 20, 30, 50, 100];\n const goToPage = (page: number) => {\n if (page > 0 && page <= totalPages && !loading && onPageChange) {\n onPageChange(page);\n }\n };\n\n const getPageNumbers = () => {\n const pageNumbers = [];\n const maxPagesToShow = 5;\n\n if (totalPages <= maxPagesToShow) {\n for (let i = 1; i <= totalPages; i++) {\n pageNumbers.push(i);\n }\n } else {\n let startPage = Math.max(1, currentPage - 2);\n const endPage = Math.min(totalPages, startPage + maxPagesToShow - 1);\n\n if (endPage - startPage < maxPagesToShow - 1) {\n startPage = Math.max(1, endPage - maxPagesToShow + 1);\n }\n\n for (let i = startPage; i <= endPage; i++) {\n pageNumbers.push(i);\n }\n }\n\n return pageNumbers;\n };\n\n const startIndex = (currentPage - 1) * itemsPerPage;\n const endIndex = Math.min(startIndex + itemsPerPage, totalItems);\n\n return (\n <div className=\"flex items-center justify-between border-t border-gray-200 bg-white py-3\">\n <div className=\"flex flex-1 justify-between sm:hidden\">\n <button\n onClick={() => goToPage(currentPage - 1)}\n disabled={currentPage === 1 || loading}\n className={`relative inline-flex items-center rounded-md border border-gray-300 bg-white px-4 py-2 text-sm font-medium text-gray-700 hover:bg-gray-50 ${\n currentPage === 1 || loading ? \"cursor-not-allowed opacity-50\" : \"\"\n }`}\n >\n Previous\n </button>\n <button\n onClick={() => goToPage(currentPage + 1)}\n disabled={currentPage === totalPages || loading}\n className={`relative ml-3 inline-flex items-center rounded-md border border-gray-300 bg-white px-4 py-2 text-sm font-medium text-gray-700 hover:bg-gray-50 ${\n currentPage === totalPages || loading\n ? \"cursor-not-allowed opacity-50\"\n : \"\"\n }`}\n >\n Next\n </button>\n </div>\n\n <div className=\"hidden sm:flex sm:flex-1 sm:items-center sm:justify-between\">\n <div className=\"flex items-center justify-center gap-2\">\n {/*{onViewChange && (*/}\n <div className=\"relative\">\n <select\n value={itemsPerPage}\n onChange={(e) => onViewChange && onViewChange(e.target.value)}\n disabled={loading}\n className=\"appearance-none rounded-md border border-gray-300 bg-white py-2 pl-3 pr-8 text-sm focus:outline-none focus:ring-2 focus:ring-blue-500\"\n >\n {perPageOptions.map((option) => (\n <option key={option} value={option}>\n {option}\n </option>\n ))}\n </select>\n <div className=\"pointer-events-none absolute inset-y-0 right-0 flex items-center px-2 text-gray-700\">\n <svg className=\"h-4 w-4\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n d=\"M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </div>\n </div>\n {/*)}*/}\n <p className=\"text-sm text-gray-700\">\n <span>{totalItems} Entries</span>\n <span className=\"ml-1\">\n (Showing {startIndex + 1}-{endIndex} of {totalItems})\n </span>\n </p>\n </div>\n <div>\n <nav\n className=\"relative z-0 inline-flex gap-2 -space-x-px rounded-md shadow-sm\"\n aria-label=\"Pagination\"\n >\n <button\n onClick={() => goToPage(currentPage - 1)}\n disabled={currentPage === 1 || loading}\n className={`relative inline-flex items-center rounded-md border border-gray-300 bg-white px-2 py-2 text-sm font-medium text-gray-500 hover:bg-gray-50 ${\n currentPage === 1 || loading\n ? \"cursor-not-allowed opacity-50\"\n : \"\"\n }`}\n >\n <span className=\"sr-only\">Previous</span>\n <svg\n className=\"h-5 w-5\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </button>\n\n {getPageNumbers().map((number) => (\n <button\n key={number}\n onClick={() => goToPage(number)}\n disabled={loading}\n aria-current={currentPage === number ? \"page\" : undefined}\n className={`relative inline-flex items-center rounded-md border px-4 py-2 text-sm font-semibold ${\n currentPage === number\n ? \"z-10 border-primary-100 bg-primary-50 text-primary\"\n : \"border-gray-300 bg-white text-gray-500 hover:bg-gray-50\"\n } ${loading ? \"cursor-not-allowed opacity-50\" : \"\"}`}\n >\n {number}\n </button>\n ))}\n\n <Button\n onClick={() => goToPage(currentPage + 1)}\n disabled={currentPage === totalPages || loading}\n type=\"button\"\n variant=\"primary\"\n size=\"sm\"\n outline\n >\n Next Page\n <svg\n className=\"h-5 w-5\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </Button>\n </nav>\n </div>\n </div>\n </div>\n );\n}\n"],"names":["_a","currentPage","totalPages","totalItems","itemsPerPage","onPageChange","onViewChange","_b","loading","goToPage","page","startIndex","endIndex","Math","min","_jsxs","className","_jsx","onClick","disabled","concat","children","value","onChange","e","target","map","option","fill","viewBox","fillRule","d","clipRule","xmlns","pageNumbers","i","push","startPage","max","endPage","maxPagesToShow","getPageNumbers","number","undefined","Button","type","variant","size","outline"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Pagination.js","sources":["../../../../src/components/Table/Pagination.tsx"],"sourcesContent":["import { PaginationProps } from \"./types\";\nimport { Button } from \"../Button\";\n\nexport function Pagination({\n currentPage,\n totalPages,\n totalItems,\n itemsPerPage,\n onPageChange,\n onViewChange,\n loading = false,\n}: PaginationProps) {\n const perPageOptions = [10, 20, 30, 50, 100];\n const goToPage = (page: number) => {\n if (page > 0 && page <= totalPages && !loading && onPageChange) {\n onPageChange(page);\n }\n };\n\n const getPageNumbers = () => {\n const pageNumbers = [];\n const maxPagesToShow = 5;\n\n if (totalPages <= maxPagesToShow) {\n for (let i = 1; i <= totalPages; i++) {\n pageNumbers.push(i);\n }\n } else {\n let startPage = Math.max(1, currentPage - 2);\n const endPage = Math.min(totalPages, startPage + maxPagesToShow - 1);\n\n if (endPage - startPage < maxPagesToShow - 1) {\n startPage = Math.max(1, endPage - maxPagesToShow + 1);\n }\n\n for (let i = startPage; i <= endPage; i++) {\n pageNumbers.push(i);\n }\n }\n\n return pageNumbers;\n };\n\n const startIndex = (currentPage - 1) * itemsPerPage;\n const endIndex = Math.min(startIndex + itemsPerPage, totalItems);\n\n return (\n <div className=\"flex items-center justify-between border-t border-gray-200 bg-white py-3 dark:border-gray-700 dark:bg-gray-900\">\n <div className=\"block flex-1 sm:hidden\">\n <div className=\"flex justify-between\">\n <button\n onClick={() => goToPage(currentPage - 1)}\n disabled={currentPage === 1 || loading}\n className={`relative inline-flex items-center rounded-md border border-gray-300 bg-white px-4 py-2 text-sm font-medium text-gray-700 hover:bg-gray-50 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-200 dark:hover:bg-gray-700 ${\n currentPage === 1 || loading ? \"cursor-not-allowed opacity-50\" : \"\"\n }`}\n >\n Previous\n </button>\n <button\n onClick={() => goToPage(currentPage + 1)}\n disabled={currentPage === totalPages || loading}\n className={`relative ml-3 inline-flex items-center rounded-md border border-gray-300 bg-white px-4 py-2 text-sm font-medium text-gray-700 hover:bg-gray-50 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-200 dark:hover:bg-gray-700 ${\n currentPage === totalPages || loading\n ? \"cursor-not-allowed opacity-50\"\n : \"\"\n }`}\n >\n Next\n </button>\n </div>\n </div>\n\n <div className=\"hidden sm:flex sm:flex-1 sm:items-center sm:justify-between\">\n <div className=\"flex items-center justify-center gap-2\">\n {/*{onViewChange && (*/}\n <div className=\"relative\">\n <select\n value={itemsPerPage}\n onChange={(e) => onViewChange && onViewChange(e.target.value)}\n disabled={loading}\n className=\"appearance-none rounded-md border border-gray-300 bg-white py-2 pl-3 pr-8 text-sm focus:outline-none focus:ring-2 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-200\"\n >\n {perPageOptions.map((option) => (\n <option key={option} value={option}>\n {option}\n </option>\n ))}\n </select>\n <div className=\"pointer-events-none absolute inset-y-0 right-0 flex items-center px-2 text-gray-700 dark:text-gray-300\">\n <svg className=\"h-4 w-4\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n d=\"M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </div>\n </div>\n {/*)}*/}\n <p className=\"text-sm text-gray-700 dark:text-gray-300\">\n <span>{totalItems} Entries</span>\n <span className=\"ml-1\">\n (Showing {startIndex + 1}-{endIndex} of {totalItems})\n </span>\n </p>\n </div>\n <div>\n <nav\n className=\"relative z-0 inline-flex gap-2 -space-x-px rounded-md shadow-sm\"\n aria-label=\"Pagination\"\n >\n <button\n onClick={() => goToPage(currentPage - 1)}\n disabled={currentPage === 1 || loading}\n className={`relative inline-flex items-center rounded-md border border-gray-300 bg-white px-2 py-2 text-sm font-medium text-gray-500 hover:bg-gray-50 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-300 dark:hover:bg-gray-700 ${\n currentPage === 1 || loading\n ? \"cursor-not-allowed opacity-50\"\n : \"\"\n }`}\n >\n <span className=\"sr-only\">Previous</span>\n <svg\n className=\"h-5 w-5\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </button>\n\n {getPageNumbers().map((number) => (\n <button\n key={number}\n onClick={() => goToPage(number)}\n disabled={loading}\n aria-current={currentPage === number ? \"page\" : undefined}\n className={`relative inline-flex items-center rounded-md border px-4 py-2 text-sm font-semibold ${\n currentPage === number\n ? \"z-10 border-primary-100 bg-primary-50 text-primary\"\n : \"border-gray-300 bg-white text-gray-500 hover:bg-gray-50 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-300 dark:hover:bg-gray-700\"\n } ${loading ? \"cursor-not-allowed opacity-50\" : \"\"}`}\n >\n {number}\n </button>\n ))}\n\n <Button\n onClick={() => goToPage(currentPage + 1)}\n disabled={currentPage === totalPages || loading}\n type=\"button\"\n variant=\"primary\"\n size=\"sm\"\n outline\n >\n Next Page\n <svg\n className=\"h-5 w-5\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </Button>\n </nav>\n </div>\n </div>\n </div>\n );\n}\n"],"names":["_a","currentPage","totalPages","totalItems","itemsPerPage","onPageChange","onViewChange","_b","loading","goToPage","page","startIndex","endIndex","Math","min","_jsxs","className","children","_jsx","onClick","disabled","concat","value","onChange","e","target","map","option","fill","viewBox","fillRule","d","clipRule","xmlns","pageNumbers","i","push","startPage","max","endPage","maxPagesToShow","getPageNumbers","number","undefined","Button","type","variant","size","outline"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e=require("../../node_modules/tslib/tslib.es6.js"),
|
|
1
|
+
"use strict";var e=require("../../node_modules/tslib/tslib.es6.js"),r=require("react/jsx-runtime"),a=require("react"),t=require("lucide-react"),n=require("./Pagination.js"),s=require("./TableSkeleton.js"),l=require("../Cards/EmptyStateCard.js");module.exports=function(i){var d=i.data,o=i.columns,c=i.itemsPerPage,g=void 0===c?20:c,u=i.onViewChange,x=i.totalItems,m=i.currentPage,h=void 0===m?1:m,y=i.onPageChange,v=i.loading,b=void 0!==v&&v,p=i.showPagination,f=void 0===p||p,j=i.onRowClick,w=i.useCardLayout,N=void 0!==w&&w,k=i.emptyState,S=i.expandableRows,C=void 0!==S&&S,P=i.expandedRowRender,R=i.onRowToggle,q=i.defaultExpandedRows,z=void 0===q?new Set:q,_=i.getRowKey,A=void 0===_?function(e,r){return r}:_,K=i.paginationMeta,D=i.defaultSortKey,F=i.defaultSortOrder,M=void 0===F?"asc":F,T=i.onSort,E=a.useState(z),I=E[0],U=E[1],V=a.useState(D||null),H=V[0],L=V[1],O=a.useState(D?M:null),B=O[0],G=O[1],J=(null==K?void 0:K.total)||x||d.length,Q=(null==K?void 0:K.last_page)||Math.ceil(J/g),W=(null==K?void 0:K.current_page)||h,X=(null==K?void 0:K.per_page)||g,Y=a.useMemo((function(){return H&&B?e.__spreadArray([],d,!0).sort((function(e,r){var a,t,n=o.find((function(e){return(e.sortKey||e.value)===H}));return n?("function"==typeof n.value?(a=e[H],t=r[H]):(a=e[n.value],t=r[n.value]),null==a&&null==t?0:null==a?1:null==t?-1:"string"==typeof a&&"string"==typeof t?"asc"===B?a.localeCompare(t):t.localeCompare(a):"number"==typeof a&&"number"==typeof t?"asc"===B?a-t:t-a:"asc"===B?String(a).localeCompare(String(t)):String(t).localeCompare(String(a))):0})):d}),[d,H,B,o]),Z=function(e){if(!e.sortable)return null;var a=String(e.sortKey||e.value);return H!==a?r.jsx(t.ArrowUpDown,{size:14,className:"text-gray-400 dark:text-gray-500"}):"asc"===B?r.jsx(t.ArrowUp,{size:14,className:"text-blue-600"}):r.jsx(t.ArrowDown,{size:14,className:"text-blue-600"})},$=function(e,r){C&&P?ee(e,r):j&&j(e)},ee=function(e,r){var a=A(e,r),t=new Set(I),n=I.has(a);n?t.delete(a):t.add(a),U(t),R&&R(e,!n)},re=function(e,r){var a=A(e,r);return I.has(a)},ae=r.jsx(l,{title:"No Record found"}),te=function(e){switch(e){case"center":return"text-center";case"right":return"text-right";default:return"text-left"}},ne=function(){return r.jsxs("div",{className:"grid gap-4 grid-cols-1 sm:grid-cols-2 lg:grid-cols-3",children:[b&&Array.from({length:X}).map((function(e,a){return r.jsx("div",{className:"rounded-lg border border-gray-200 bg-white p-4 animate-pulse dark:border-gray-700 dark:bg-gray-800",children:r.jsx("div",{className:"space-y-3",children:o.slice(0,3).map((function(e,a){return r.jsxs("div",{className:"flex justify-between items-center",children:[r.jsx("div",{className:"h-4 w-1/3 rounded bg-gray-200 dark:bg-gray-700"}),r.jsx("div",{className:"h-4 w-1/2 rounded bg-gray-200 dark:bg-gray-700"})]},a)}))})},a)})),Y.length>0?Y.map((function(e,a){var n=re(e,a);return r.jsxs("div",{className:"rounded-lg border border-gray-200 bg-white dark:border-gray-700 dark:bg-gray-800",children:[r.jsx("div",{onClick:function(){return $(e,a)},className:"p-4 transition-all duration-200 hover:border-gray-300 hover:shadow-md dark:hover:border-gray-600 ".concat(j||C?"cursor-pointer":""," ").concat(b?"opacity-50":""," ").concat(C?"border-b border-gray-100 last:border-b-0 dark:border-gray-700":""),children:r.jsxs("div",{className:"space-y-3",children:[C&&r.jsx("div",{className:"flex items-center justify-between mb-2",children:r.jsxs("div",{className:"flex items-center text-sm text-gray-500 dark:text-gray-400",children:[n?r.jsx(t.ChevronDown,{size:16,className:"mr-1"}):r.jsx(t.ChevronRight,{size:16,className:"mr-1"}),r.jsx("span",{children:n?"Hide details":"Show details"})]})}),o.map((function(a,t){return r.jsxs("div",{className:"flex justify-between items-start",children:[r.jsxs("span",{className:"mr-3 flex-shrink-0 text-sm font-medium text-gray-500 dark:text-gray-400",children:[a.title,":"]}),r.jsx("span",{className:"text-right text-sm text-gray-800 dark:text-gray-100",children:"function"==typeof a.value?a.value(e):e[a.value]})]},t)}))]})}),C&&n&&P&&r.jsx("div",{className:"rounded-b-lg border-t border-gray-100 bg-gray-50 p-4 dark:border-gray-700 dark:bg-gray-900/50",children:P(e)})]},a)})):!b&&r.jsx("div",{className:"col-span-full",children:k||ae})]})};return r.jsxs(r.Fragment,{children:[N?ne():r.jsxs(r.Fragment,{children:[r.jsx("div",{className:"hidden md:block",children:r.jsx("div",{className:"relative overflow-x-auto",children:r.jsxs("table",{className:"w-full",children:[r.jsx("thead",{children:r.jsxs("tr",{children:[C&&r.jsx("th",{className:"w-12 rounded-bl-xl rounded-tl-xl bg-gray-100 px-6 py-3 text-left text-sm font-semibold tracking-wider text-gray-500 dark:bg-gray-800 dark:text-gray-300"}),o.map((function(e,a){return r.jsx("th",{onClick:function(){return function(e){if(e.sortable){var r=String(e.sortKey||e.value),a="asc";H===r&&(a="asc"===B?"desc":"desc"===B?null:"asc"),L(a?r:null),G(a),T&&a&&T(r,a)}}(e)},className:"bg-gray-100 px-6 py-3 text-sm font-semibold tracking-wider text-gray-500 dark:bg-gray-800 dark:text-gray-300 ".concat(e.width||""," ").concat(te(e.align)," ").concat(e.sortable?"cursor-pointer select-none hover:bg-gray-200 dark:hover:bg-gray-700":""," ").concat(C||0!==a?"":"rounded-bl-xl rounded-tl-xl"," ").concat(a===o.length-1?"rounded-br-xl rounded-tr-xl":""," ").concat(e.className||""),style:e.width?{width:e.width}:void 0,children:r.jsxs("div",{className:"flex items-center gap-2 justify-between",children:[r.jsx("span",{children:e.title}),Z(e)]})},a)}))]})}),r.jsxs("tbody",{className:"divide-y divide-gray-200 bg-white dark:divide-gray-700 dark:bg-gray-900 ".concat(b?"opacity-50":""," ").concat(j||C?"cursor-pointer":""),children:[b&&r.jsx(s.TableSkeleton,{columns:o.length+(C?1:0),rows:X}),Y.length>0?Y.map((function(e,n){var s=re(e,n);return r.jsxs(a.Fragment,{children:[r.jsxs("tr",{onClick:function(){return $(e,n)},className:"transition-colors duration-150 hover:bg-gray-50 dark:hover:bg-gray-800 ".concat(s?"bg-blue-50 dark:bg-blue-950/40":""),children:[C&&r.jsx("td",{className:"whitespace-nowrap px-6 py-4 text-sm font-medium text-gray-800 dark:text-gray-100",children:r.jsx("div",{className:"flex items-center justify-center",children:s?r.jsx(t.ChevronDown,{size:16,className:"text-gray-500 dark:text-gray-400"}):r.jsx(t.ChevronRight,{size:16,className:"text-gray-500 dark:text-gray-400"})})}),o.map((function(a,t){return r.jsx("td",{className:"whitespace-nowrap px-6 py-4 text-sm font-medium text-gray-800 dark:text-gray-100 ".concat(te(a.align)," ").concat(a.className||""),style:a.width?{width:a.width}:void 0,children:"function"==typeof a.value?a.value(e):e[a.value]},t)}))]}),C&&s&&P&&r.jsx("tr",{className:"bg-gray-50 dark:bg-gray-900/50",children:r.jsx("td",{colSpan:o.length+1,className:"px-6 py-4",children:r.jsx("div",{className:"animate-fade-in",children:P(e)})})},"".concat(n,"-expanded"))]},n)})):!b&&r.jsx("tr",{children:r.jsx("td",{colSpan:o.length+(C?1:0),className:"px-6 py-12 text-center",children:k||ae})})]})]})})}),r.jsx("div",{className:"block md:hidden",children:ne()})]}),f&&r.jsx(n.Pagination,{currentPage:W,totalPages:Q,totalItems:J,itemsPerPage:X,onPageChange:y,onViewChange:u,loading:b})]})};
|
|
2
2
|
//# sourceMappingURL=Table.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Table.js","sources":["../../../../src/components/Table/Table.tsx"],"sourcesContent":["import {ReactNode, useMemo, useState} from \"react\";\nimport {ArrowDown, ArrowUp, ArrowUpDown, ChevronDown, ChevronRight} from \"lucide-react\";\n\nimport { Pagination } from \"./Pagination\";\nimport {ExpandableTableProps, Column} from \"./types\";\nimport { TableSkeleton } from \"./TableSkeleton\";\nimport { EmptyStateCard } from \"../Cards\";\nimport React from \"react\";\n\ntype SortOrder = \"asc\" | \"desc\" | null;\n\nexport default function Table<T>({\n data,\n columns,\n itemsPerPage = 20,\n onViewChange,\n totalItems,\n currentPage = 1,\n onPageChange,\n loading = false,\n showPagination = true,\n onRowClick,\n useCardLayout = false,\n emptyState,\n expandableRows = false,\n expandedRowRender,\n onRowToggle,\n defaultExpandedRows = new Set(),\n getRowKey = (item: T, index: number) => index,\n paginationMeta,\n defaultSortKey,\n defaultSortOrder = \"asc\",\n onSort,\n}: ExpandableTableProps<T>) {\n const [expandedRows, setExpandedRows] =\n useState<Set<string | number>>(defaultExpandedRows);\n const [sortKey, setSortKey] = useState<string | null>(defaultSortKey || null);\n const [sortOrder, setSortOrder] = useState<SortOrder>(\n defaultSortKey ? defaultSortOrder : null,\n );\n\n // Pagination calculations\n const totalItemsCount = paginationMeta?.total || totalItems || data.length;\n const totalPages =\n paginationMeta?.last_page || Math.ceil(totalItemsCount / itemsPerPage);\n const currentPageNumber = paginationMeta?.current_page || currentPage;\n const perPage = paginationMeta?.per_page || itemsPerPage;\n\n // Sorting logic\n const sortedData = useMemo(() => {\n if (!sortKey || !sortOrder) return data;\n\n const sorted = [...data].sort((a, b) => {\n const column = columns.find(\n (col) => (col.sortKey || col.value) === sortKey,\n );\n if (!column) return 0;\n\n let aValue: any;\n let bValue: any;\n\n if (typeof column.value === \"function\") {\n // For function-based columns, use the sortKey to get raw values\n aValue = (a as any)[sortKey];\n bValue = (b as any)[sortKey];\n } else {\n aValue = a[column.value];\n bValue = b[column.value];\n }\n\n // Handle null/undefined\n if (aValue == null && bValue == null) return 0;\n if (aValue == null) return 1;\n if (bValue == null) return -1;\n\n // Handle different types\n if (typeof aValue === \"string\" && typeof bValue === \"string\") {\n return sortOrder === \"asc\"\n ? aValue.localeCompare(bValue)\n : bValue.localeCompare(aValue);\n }\n\n if (typeof aValue === \"number\" && typeof bValue === \"number\") {\n return sortOrder === \"asc\" ? aValue - bValue : bValue - aValue;\n }\n\n // Default comparison\n return sortOrder === \"asc\"\n ? String(aValue).localeCompare(String(bValue))\n : String(bValue).localeCompare(String(aValue));\n });\n\n return sorted;\n }, [data, sortKey, sortOrder, columns]);\n\n const currentItems = sortedData;\n\n // Sorting handler\n const handleSort = (column: Column<T>) => {\n if (!column.sortable) return;\n\n const key = String(column.sortKey || column.value);\n let newOrder: SortOrder = \"asc\";\n\n if (sortKey === key) {\n if (sortOrder === \"asc\") newOrder = \"desc\";\n else if (sortOrder === \"desc\") newOrder = null;\n else newOrder = \"asc\";\n }\n\n setSortKey(newOrder ? key : null);\n setSortOrder(newOrder);\n\n if (onSort && newOrder) {\n onSort(key, newOrder);\n }\n };\n\n const getSortIcon = (column: Column<T>) => {\n if (!column.sortable) return null;\n\n const key = String(column.sortKey || column.value);\n if (sortKey !== key) {\n return <ArrowUpDown size={14} className=\"text-gray-400\" />;\n }\n\n return sortOrder === \"asc\" ? (\n <ArrowUp size={14} className=\"text-blue-600\" />\n ) : (\n <ArrowDown size={14} className=\"text-blue-600\" />\n );\n };\n\n // Row expansion logic\n const handleRowClick = (item: T, index: number) => {\n if (expandableRows && expandedRowRender) {\n toggleRow(item, index);\n } else if (onRowClick) {\n onRowClick(item);\n }\n };\n\n const toggleRow = (item: T, index: number) => {\n const rowKey = getRowKey(item, index);\n const newExpandedRows = new Set(expandedRows);\n const isCurrentlyExpanded = expandedRows.has(rowKey);\n\n if (isCurrentlyExpanded) {\n newExpandedRows.delete(rowKey);\n } else {\n newExpandedRows.add(rowKey);\n }\n\n setExpandedRows(newExpandedRows);\n\n if (onRowToggle) {\n onRowToggle(item, !isCurrentlyExpanded);\n }\n };\n\n const isRowExpanded = (item: T, index: number) => {\n const rowKey = getRowKey(item, index);\n return expandedRows.has(rowKey);\n };\n\n const defaultEmptyState = <EmptyStateCard title=\"No Record found\" />;\n\n const getAlignmentClass = (align?: \"left\" | \"center\" | \"right\") => {\n switch (align) {\n case \"center\":\n return \"text-center\";\n case \"right\":\n return \"text-right\";\n default:\n return \"text-left\";\n }\n };\n\n // Card Layout Renderer\n const renderCardLayout = () => (\n <div className=\"grid gap-4 grid-cols-1 sm:grid-cols-2 lg:grid-cols-3\">\n {loading &&\n Array.from({ length: perPage }).map((_, index) => (\n <div\n key={index}\n className=\"bg-white rounded-lg border border-gray-200 p-4 animate-pulse\"\n >\n <div className=\"space-y-3\">\n {columns.slice(0, 3).map((_, colIndex) => (\n <div\n key={colIndex}\n className=\"flex justify-between items-center\"\n >\n <div className=\"h-4 bg-gray-200 rounded w-1/3\"></div>\n <div className=\"h-4 bg-gray-200 rounded w-1/2\"></div>\n </div>\n ))}\n </div>\n </div>\n ))}\n {currentItems.length > 0\n ? currentItems.map((item: T, rowIndex) => {\n const expanded = isRowExpanded(item, rowIndex);\n return (\n <div\n key={rowIndex}\n className=\"bg-white rounded-lg border border-gray-200\"\n >\n <div\n onClick={() => handleRowClick(item, rowIndex)}\n className={`p-4 transition-all duration-200 hover:shadow-md hover:border-gray-300 ${\n onRowClick || expandableRows ? \"cursor-pointer\" : \"\"\n } ${loading ? \"opacity-50\" : \"\"} ${\n expandableRows\n ? \"border-b border-gray-100 last:border-b-0\"\n : \"\"\n }`}\n >\n <div className=\"space-y-3\">\n {expandableRows && (\n <div className=\"flex items-center justify-between mb-2\">\n <div className=\"flex items-center text-sm text-gray-500\">\n {expanded ? (\n <ChevronDown size={16} className=\"mr-1\" />\n ) : (\n <ChevronRight size={16} className=\"mr-1\" />\n )}\n <span>\n {expanded ? \"Hide details\" : \"Show details\"}\n </span>\n </div>\n </div>\n )}\n {columns.map((column, colIndex) => (\n <div\n key={colIndex}\n className=\"flex justify-between items-start\"\n >\n <span className=\"text-sm font-medium text-gray-500 flex-shrink-0 mr-3\">\n {column.title}:\n </span>\n <span className=\"text-sm text-gray-800 text-right\">\n {typeof column.value === \"function\"\n ? column.value(item)\n : (item[column.value] as ReactNode)}\n </span>\n </div>\n ))}\n </div>\n </div>\n {expandableRows && expanded && expandedRowRender && (\n <div className=\"p-4 bg-gray-50 border-t border-gray-100 rounded-b-lg\">\n {expandedRowRender(item)}\n </div>\n )}\n </div>\n );\n })\n : !loading && (\n <div className=\"col-span-full\">\n {emptyState || defaultEmptyState}\n </div>\n )}\n </div>\n );\n\n // Table Layout Renderer\n const renderTableLayout = () => (\n <div className=\"relative overflow-x-auto\">\n <table className=\"w-full\">\n <thead>\n <tr>\n {expandableRows && (\n <th className=\"bg-gray-100 px-6 py-3 text-left text-sm font-semibold tracking-wider text-gray-500 w-12 rounded-bl-xl rounded-tl-xl\">\n {/* Toggle column */}\n </th>\n )}\n {columns.map((column, index) => (\n <th\n key={index}\n onClick={() => handleSort(column)}\n className={`bg-gray-100 px-6 py-3 text-sm font-semibold tracking-wider text-gray-500 ${\n column.width || \"\"\n } ${getAlignmentClass(column.align)} ${\n column.sortable\n ? \"cursor-pointer select-none hover:bg-gray-200\"\n : \"\"\n } ${!expandableRows && index === 0 ? \"rounded-bl-xl rounded-tl-xl\" : \"\"} ${\n index === columns.length - 1\n ? \"rounded-br-xl rounded-tr-xl\"\n : \"\"\n } ${column.className || \"\"}`}\n style={column.width ? { width: column.width } : undefined}\n >\n <div className=\"flex items-center gap-2 justify-between\">\n <span>{column.title}</span>\n {getSortIcon(column)}\n </div>\n </th>\n ))}\n </tr>\n </thead>\n <tbody\n className={`divide-y divide-gray-200 bg-white ${loading ? \"opacity-50\" : \"\"} ${\n onRowClick || expandableRows ? \"cursor-pointer\" : \"\"\n }`}\n >\n {loading && (\n <TableSkeleton\n columns={columns.length + (expandableRows ? 1 : 0)}\n rows={perPage}\n />\n )}\n {currentItems.length > 0\n ? currentItems.map((item: T, rowIndex) => {\n const expanded = isRowExpanded(item, rowIndex);\n return (\n <React.Fragment key={rowIndex}>\n <tr\n onClick={() => handleRowClick(item, rowIndex)}\n className={`hover:bg-gray-50 transition-colors duration-150 ${\n expanded ? \"bg-blue-50\" : \"\"\n }`}\n >\n {expandableRows && (\n <td className=\"whitespace-nowrap px-6 py-4 text-sm font-medium text-gray-800\">\n <div className=\"flex items-center justify-center\">\n {expanded ? (\n <ChevronDown\n size={16}\n className=\"text-gray-500\"\n />\n ) : (\n <ChevronRight\n size={16}\n className=\"text-gray-500\"\n />\n )}\n </div>\n </td>\n )}\n {columns.map((column, colIndex) => (\n <td\n key={colIndex}\n className={`whitespace-nowrap px-6 py-4 text-sm font-medium text-gray-800 ${getAlignmentClass(\n column.align,\n )} ${column.className || \"\"}`}\n style={\n column.width ? { width: column.width } : undefined\n }\n >\n {typeof column.value === \"function\"\n ? column.value(item)\n : (item[column.value] as ReactNode)}\n </td>\n ))}\n </tr>\n {expandableRows && expanded && expandedRowRender && (\n <tr key={`${rowIndex}-expanded`} className=\"bg-gray-50\">\n <td colSpan={columns.length + 1} className=\"px-6 py-4\">\n <div className=\"animate-fade-in\">\n {expandedRowRender(item)}\n </div>\n </td>\n </tr>\n )}\n </React.Fragment>\n );\n })\n : !loading && (\n <tr>\n <td\n colSpan={columns.length + (expandableRows ? 1 : 0)}\n className=\"px-6 py-12 text-center\"\n >\n {emptyState || defaultEmptyState}\n </td>\n </tr>\n )}\n </tbody>\n </table>\n </div>\n );\n\n return (\n <>\n {useCardLayout ? (\n renderCardLayout()\n ) : (\n <>\n <div className=\"hidden md:block\">{renderTableLayout()}</div>\n <div className=\"block md:hidden\">{renderCardLayout()}</div>\n </>\n )}\n\n {showPagination && (\n <Pagination\n currentPage={currentPageNumber}\n totalPages={totalPages}\n totalItems={totalItemsCount}\n itemsPerPage={perPage}\n onPageChange={onPageChange}\n onViewChange={onViewChange}\n loading={loading}\n />\n )}\n </>\n );\n}\n"],"names":["_a","data","columns","_b","itemsPerPage","onViewChange","totalItems","_c","currentPage","onPageChange","_d","loading","_e","showPagination","onRowClick","_f","useCardLayout","emptyState","_g","expandableRows","expandedRowRender","onRowToggle","_h","defaultExpandedRows","Set","_j","getRowKey","item","index","paginationMeta","defaultSortKey","_k","defaultSortOrder","onSort","_l","useState","expandedRows","setExpandedRows","_m","sortKey","setSortKey","_o","sortOrder","setSortOrder","totalItemsCount","total","length","totalPages","last_page","Math","ceil","currentPageNumber","current_page","perPage","per_page","currentItems","useMemo","__spreadArray","sort","a","b","aValue","bValue","column","find","col","value","localeCompare","String","getSortIcon","sortable","key","_jsx","ArrowUpDown","size","className","ArrowUp","ArrowDown","handleRowClick","toggleRow","rowKey","newExpandedRows","isCurrentlyExpanded","has","delete","add","isRowExpanded","defaultEmptyState","EmptyStateCard","title","getAlignmentClass","align","renderCardLayout","_jsxs","children","Array","from","map","_","slice","colIndex","rowIndex","expanded","onClick","concat","ChevronDown","ChevronRight","_Fragment","newOrder","handleSort","width","style","undefined","TableSkeleton","rows","React","Fragment","colSpan","Pagination"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Table.js","sources":["../../../../src/components/Table/Table.tsx"],"sourcesContent":["import {ReactNode, useMemo, useState} from \"react\";\nimport {ArrowDown, ArrowUp, ArrowUpDown, ChevronDown, ChevronRight} from \"lucide-react\";\n\nimport { Pagination } from \"./Pagination\";\nimport {ExpandableTableProps, Column} from \"./types\";\nimport { TableSkeleton } from \"./TableSkeleton\";\nimport { EmptyStateCard } from \"../Cards\";\nimport React from \"react\";\n\ntype SortOrder = \"asc\" | \"desc\" | null;\n\nexport default function Table<T>({\n data,\n columns,\n itemsPerPage = 20,\n onViewChange,\n totalItems,\n currentPage = 1,\n onPageChange,\n loading = false,\n showPagination = true,\n onRowClick,\n useCardLayout = false,\n emptyState,\n expandableRows = false,\n expandedRowRender,\n onRowToggle,\n defaultExpandedRows = new Set(),\n getRowKey = (item: T, index: number) => index,\n paginationMeta,\n defaultSortKey,\n defaultSortOrder = \"asc\",\n onSort,\n}: ExpandableTableProps<T>) {\n const [expandedRows, setExpandedRows] =\n useState<Set<string | number>>(defaultExpandedRows);\n const [sortKey, setSortKey] = useState<string | null>(defaultSortKey || null);\n const [sortOrder, setSortOrder] = useState<SortOrder>(\n defaultSortKey ? defaultSortOrder : null,\n );\n\n // Pagination calculations\n const totalItemsCount = paginationMeta?.total || totalItems || data.length;\n const totalPages =\n paginationMeta?.last_page || Math.ceil(totalItemsCount / itemsPerPage);\n const currentPageNumber = paginationMeta?.current_page || currentPage;\n const perPage = paginationMeta?.per_page || itemsPerPage;\n\n // Sorting logic\n const sortedData = useMemo(() => {\n if (!sortKey || !sortOrder) return data;\n\n const sorted = [...data].sort((a, b) => {\n const column = columns.find(\n (col) => (col.sortKey || col.value) === sortKey,\n );\n if (!column) return 0;\n\n let aValue: any;\n let bValue: any;\n\n if (typeof column.value === \"function\") {\n // For function-based columns, use the sortKey to get raw values\n aValue = (a as any)[sortKey];\n bValue = (b as any)[sortKey];\n } else {\n aValue = a[column.value];\n bValue = b[column.value];\n }\n\n // Handle null/undefined\n if (aValue == null && bValue == null) return 0;\n if (aValue == null) return 1;\n if (bValue == null) return -1;\n\n // Handle different types\n if (typeof aValue === \"string\" && typeof bValue === \"string\") {\n return sortOrder === \"asc\"\n ? aValue.localeCompare(bValue)\n : bValue.localeCompare(aValue);\n }\n\n if (typeof aValue === \"number\" && typeof bValue === \"number\") {\n return sortOrder === \"asc\" ? aValue - bValue : bValue - aValue;\n }\n\n // Default comparison\n return sortOrder === \"asc\"\n ? String(aValue).localeCompare(String(bValue))\n : String(bValue).localeCompare(String(aValue));\n });\n\n return sorted;\n }, [data, sortKey, sortOrder, columns]);\n\n const currentItems = sortedData;\n\n // Sorting handler\n const handleSort = (column: Column<T>) => {\n if (!column.sortable) return;\n\n const key = String(column.sortKey || column.value);\n let newOrder: SortOrder = \"asc\";\n\n if (sortKey === key) {\n if (sortOrder === \"asc\") newOrder = \"desc\";\n else if (sortOrder === \"desc\") newOrder = null;\n else newOrder = \"asc\";\n }\n\n setSortKey(newOrder ? key : null);\n setSortOrder(newOrder);\n\n if (onSort && newOrder) {\n onSort(key, newOrder);\n }\n };\n\n const getSortIcon = (column: Column<T>) => {\n if (!column.sortable) return null;\n\n const key = String(column.sortKey || column.value);\n if (sortKey !== key) {\n return <ArrowUpDown size={14} className=\"text-gray-400 dark:text-gray-500\" />;\n }\n\n return sortOrder === \"asc\" ? (\n <ArrowUp size={14} className=\"text-blue-600\" />\n ) : (\n <ArrowDown size={14} className=\"text-blue-600\" />\n );\n };\n\n // Row expansion logic\n const handleRowClick = (item: T, index: number) => {\n if (expandableRows && expandedRowRender) {\n toggleRow(item, index);\n } else if (onRowClick) {\n onRowClick(item);\n }\n };\n\n const toggleRow = (item: T, index: number) => {\n const rowKey = getRowKey(item, index);\n const newExpandedRows = new Set(expandedRows);\n const isCurrentlyExpanded = expandedRows.has(rowKey);\n\n if (isCurrentlyExpanded) {\n newExpandedRows.delete(rowKey);\n } else {\n newExpandedRows.add(rowKey);\n }\n\n setExpandedRows(newExpandedRows);\n\n if (onRowToggle) {\n onRowToggle(item, !isCurrentlyExpanded);\n }\n };\n\n const isRowExpanded = (item: T, index: number) => {\n const rowKey = getRowKey(item, index);\n return expandedRows.has(rowKey);\n };\n\n const defaultEmptyState = <EmptyStateCard title=\"No Record found\" />;\n\n const getAlignmentClass = (align?: \"left\" | \"center\" | \"right\") => {\n switch (align) {\n case \"center\":\n return \"text-center\";\n case \"right\":\n return \"text-right\";\n default:\n return \"text-left\";\n }\n };\n\n // Card Layout Renderer\n const renderCardLayout = () => (\n <div className=\"grid gap-4 grid-cols-1 sm:grid-cols-2 lg:grid-cols-3\">\n {loading &&\n Array.from({ length: perPage }).map((_, index) => (\n <div\n key={index}\n className=\"rounded-lg border border-gray-200 bg-white p-4 animate-pulse dark:border-gray-700 dark:bg-gray-800\"\n >\n <div className=\"space-y-3\">\n {columns.slice(0, 3).map((_, colIndex) => (\n <div\n key={colIndex}\n className=\"flex justify-between items-center\"\n >\n <div className=\"h-4 w-1/3 rounded bg-gray-200 dark:bg-gray-700\"></div>\n <div className=\"h-4 w-1/2 rounded bg-gray-200 dark:bg-gray-700\"></div>\n </div>\n ))}\n </div>\n </div>\n ))}\n {currentItems.length > 0\n ? currentItems.map((item: T, rowIndex) => {\n const expanded = isRowExpanded(item, rowIndex);\n return (\n <div\n key={rowIndex}\n className=\"rounded-lg border border-gray-200 bg-white dark:border-gray-700 dark:bg-gray-800\"\n >\n <div\n onClick={() => handleRowClick(item, rowIndex)}\n className={`p-4 transition-all duration-200 hover:border-gray-300 hover:shadow-md dark:hover:border-gray-600 ${\n onRowClick || expandableRows ? \"cursor-pointer\" : \"\"\n } ${loading ? \"opacity-50\" : \"\"} ${\n expandableRows\n ? \"border-b border-gray-100 last:border-b-0 dark:border-gray-700\"\n : \"\"\n }`}\n >\n <div className=\"space-y-3\">\n {expandableRows && (\n <div className=\"flex items-center justify-between mb-2\">\n <div className=\"flex items-center text-sm text-gray-500 dark:text-gray-400\">\n {expanded ? (\n <ChevronDown size={16} className=\"mr-1\" />\n ) : (\n <ChevronRight size={16} className=\"mr-1\" />\n )}\n <span>\n {expanded ? \"Hide details\" : \"Show details\"}\n </span>\n </div>\n </div>\n )}\n {columns.map((column, colIndex) => (\n <div\n key={colIndex}\n className=\"flex justify-between items-start\"\n >\n <span className=\"mr-3 flex-shrink-0 text-sm font-medium text-gray-500 dark:text-gray-400\">\n {column.title}:\n </span>\n <span className=\"text-right text-sm text-gray-800 dark:text-gray-100\">\n {typeof column.value === \"function\"\n ? column.value(item)\n : (item[column.value] as ReactNode)}\n </span>\n </div>\n ))}\n </div>\n </div>\n {expandableRows && expanded && expandedRowRender && (\n <div className=\"rounded-b-lg border-t border-gray-100 bg-gray-50 p-4 dark:border-gray-700 dark:bg-gray-900/50\">\n {expandedRowRender(item)}\n </div>\n )}\n </div>\n );\n })\n : !loading && (\n <div className=\"col-span-full\">\n {emptyState || defaultEmptyState}\n </div>\n )}\n </div>\n );\n\n // Table Layout Renderer\n const renderTableLayout = () => (\n <div className=\"relative overflow-x-auto\">\n <table className=\"w-full\">\n <thead>\n <tr>\n {expandableRows && (\n <th className=\"w-12 rounded-bl-xl rounded-tl-xl bg-gray-100 px-6 py-3 text-left text-sm font-semibold tracking-wider text-gray-500 dark:bg-gray-800 dark:text-gray-300\">\n {/* Toggle column */}\n </th>\n )}\n {columns.map((column, index) => (\n <th\n key={index}\n onClick={() => handleSort(column)}\n className={`bg-gray-100 px-6 py-3 text-sm font-semibold tracking-wider text-gray-500 dark:bg-gray-800 dark:text-gray-300 ${\n column.width || \"\"\n } ${getAlignmentClass(column.align)} ${\n column.sortable\n ? \"cursor-pointer select-none hover:bg-gray-200 dark:hover:bg-gray-700\"\n : \"\"\n } ${!expandableRows && index === 0 ? \"rounded-bl-xl rounded-tl-xl\" : \"\"} ${\n index === columns.length - 1\n ? \"rounded-br-xl rounded-tr-xl\"\n : \"\"\n } ${column.className || \"\"}`}\n style={column.width ? { width: column.width } : undefined}\n >\n <div className=\"flex items-center gap-2 justify-between\">\n <span>{column.title}</span>\n {getSortIcon(column)}\n </div>\n </th>\n ))}\n </tr>\n </thead>\n <tbody\n className={`divide-y divide-gray-200 bg-white dark:divide-gray-700 dark:bg-gray-900 ${loading ? \"opacity-50\" : \"\"} ${\n onRowClick || expandableRows ? \"cursor-pointer\" : \"\"\n }`}\n >\n {loading && (\n <TableSkeleton\n columns={columns.length + (expandableRows ? 1 : 0)}\n rows={perPage}\n />\n )}\n {currentItems.length > 0\n ? currentItems.map((item: T, rowIndex) => {\n const expanded = isRowExpanded(item, rowIndex);\n return (\n <React.Fragment key={rowIndex}>\n <tr\n onClick={() => handleRowClick(item, rowIndex)}\n className={`transition-colors duration-150 hover:bg-gray-50 dark:hover:bg-gray-800 ${\n expanded ? \"bg-blue-50 dark:bg-blue-950/40\" : \"\"\n }`}\n >\n {expandableRows && (\n <td className=\"whitespace-nowrap px-6 py-4 text-sm font-medium text-gray-800 dark:text-gray-100\">\n <div className=\"flex items-center justify-center\">\n {expanded ? (\n <ChevronDown\n size={16}\n className=\"text-gray-500 dark:text-gray-400\"\n />\n ) : (\n <ChevronRight\n size={16}\n className=\"text-gray-500 dark:text-gray-400\"\n />\n )}\n </div>\n </td>\n )}\n {columns.map((column, colIndex) => (\n <td\n key={colIndex}\n className={`whitespace-nowrap px-6 py-4 text-sm font-medium text-gray-800 dark:text-gray-100 ${getAlignmentClass(\n column.align,\n )} ${column.className || \"\"}`}\n style={\n column.width ? { width: column.width } : undefined\n }\n >\n {typeof column.value === \"function\"\n ? column.value(item)\n : (item[column.value] as ReactNode)}\n </td>\n ))}\n </tr>\n {expandableRows && expanded && expandedRowRender && (\n <tr key={`${rowIndex}-expanded`} className=\"bg-gray-50 dark:bg-gray-900/50\">\n <td colSpan={columns.length + 1} className=\"px-6 py-4\">\n <div className=\"animate-fade-in\">\n {expandedRowRender(item)}\n </div>\n </td>\n </tr>\n )}\n </React.Fragment>\n );\n })\n : !loading && (\n <tr>\n <td\n colSpan={columns.length + (expandableRows ? 1 : 0)}\n className=\"px-6 py-12 text-center\"\n >\n {emptyState || defaultEmptyState}\n </td>\n </tr>\n )}\n </tbody>\n </table>\n </div>\n );\n\n return (\n <>\n {useCardLayout ? (\n renderCardLayout()\n ) : (\n <>\n <div className=\"hidden md:block\">{renderTableLayout()}</div>\n <div className=\"block md:hidden\">{renderCardLayout()}</div>\n </>\n )}\n\n {showPagination && (\n <Pagination\n currentPage={currentPageNumber}\n totalPages={totalPages}\n totalItems={totalItemsCount}\n itemsPerPage={perPage}\n onPageChange={onPageChange}\n onViewChange={onViewChange}\n loading={loading}\n />\n )}\n </>\n );\n}\n"],"names":["_a","data","columns","_b","itemsPerPage","onViewChange","totalItems","_c","currentPage","onPageChange","_d","loading","_e","showPagination","onRowClick","_f","useCardLayout","emptyState","_g","expandableRows","expandedRowRender","onRowToggle","_h","defaultExpandedRows","Set","_j","getRowKey","item","index","paginationMeta","defaultSortKey","_k","defaultSortOrder","onSort","_l","useState","expandedRows","setExpandedRows","_m","sortKey","setSortKey","_o","sortOrder","setSortOrder","totalItemsCount","total","length","totalPages","last_page","Math","ceil","currentPageNumber","current_page","perPage","per_page","currentItems","useMemo","__spreadArray","sort","a","b","aValue","bValue","column","find","col","value","localeCompare","String","getSortIcon","sortable","key","_jsx","ArrowUpDown","size","className","ArrowUp","ArrowDown","handleRowClick","toggleRow","rowKey","newExpandedRows","isCurrentlyExpanded","has","delete","add","isRowExpanded","defaultEmptyState","EmptyStateCard","title","getAlignmentClass","align","renderCardLayout","_jsxs","children","Array","from","map","_","slice","colIndex","rowIndex","expanded","onClick","concat","ChevronDown","ChevronRight","_Fragment","newOrder","handleSort","width","style","undefined","TableSkeleton","rows","React","Fragment","colSpan","Pagination"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var e=require("react/jsx-runtime"),t=require("react"),
|
|
1
|
+
"use strict";var e=require("react/jsx-runtime"),t=require("react"),r=require("react-dom"),n=require("lucide-react");module.exports=function(o){var a=o.actions,i=o.trigger,c=o.className,d=void 0===c?"":c,s=o.dropdownClassName,l=void 0===s?"":s,u=t.useState(!1),f=u[0],g=u[1],m=t.useState({top:0,left:0}),x=m[0],v=m[1],w=t.useRef(null),p=t.useRef(null),h=function(){g(!f)},y=function(){g(!1)};t.useEffect((function(){if(f&&p.current){var e=p.current.getBoundingClientRect(),t=window.innerHeight-e.bottom,r=e.top;v({top:t<300&&r>t?e.top-300+window.scrollY:e.bottom+window.scrollY,left:e.right-192+window.scrollX})}}),[f]),t.useEffect((function(){var e=function(e){w.current&&!w.current.contains(e.target)&&p.current&&!p.current.contains(e.target)&&y()};return f&&document.addEventListener("mousedown",e),function(){document.removeEventListener("mousedown",e)}}),[f]),t.useEffect((function(){var e=function(e){"Escape"===e.key&&y()};return f&&document.addEventListener("keydown",e),function(){document.removeEventListener("keydown",e)}}),[f]),t.useEffect((function(){var e=function(){if(f&&p.current){var e=p.current.getBoundingClientRect(),t=window.innerHeight-e.bottom,r=e.top;v({top:t<300&&r>t?e.top-300+window.scrollY:e.bottom+window.scrollY,left:e.right-192+window.scrollX})}};return f&&window.addEventListener("scroll",e,!0),function(){window.removeEventListener("scroll",e,!0)}}),[f]);var b=f&&e.jsx("div",{ref:w,className:"fixed z-[9999] w-48 rounded-md bg-white shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none dark:bg-gray-800 dark:ring-gray-700 ".concat(l),style:{top:"".concat(x.top,"px"),left:"".concat(x.left,"px")},children:e.jsxs("div",{className:"py-1",role:"menu","aria-orientation":"vertical",children:[a.map((function(t,r){return e.jsxs("button",{className:"flex w-full items-center px-4 py-2 text-left text-sm transition-colors duration-150 ".concat(t.disabled?"cursor-not-allowed bg-gray-50 text-gray-400 dark:bg-gray-700 dark:text-gray-500":"danger"===t.variant?"text-red-700 hover:bg-red-50 hover:text-red-900 dark:text-red-400 dark:hover:bg-red-950/40 dark:hover:text-red-300":"text-gray-700 hover:bg-gray-100 hover:text-gray-900 dark:text-gray-200 dark:hover:bg-gray-700 dark:hover:text-white"," "),onClick:function(){return function(e){e.disabled||(e.onClick(),y())}(t)},disabled:t.disabled,role:"menuitem",children:[t.icon&&e.jsx("span",{className:"mr-3 flex-shrink-0",children:t.icon}),t.label]},r)})),0===a.length&&e.jsx("div",{className:"px-4 py-2 text-sm text-gray-500 dark:text-gray-300",children:"No actions available"})]})});return e.jsxs("div",{className:"relative inline-block ".concat(d),children:[e.jsx("div",{ref:p,className:"flex",children:i?e.jsx("div",{onClick:h,className:"cursor-pointer",children:i}):e.jsx("button",{className:"rounded-md border border-gray-300 bg-white px-2 py-2 text-sm font-medium text-gray-700 transition-colors duration-200 focus:ring-offset-2 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-200",onClick:h,"aria-expanded":f,"aria-haspopup":"true",children:e.jsx(n.MoreVertical,{className:"h-4 w-4"})})}),"undefined"!=typeof document&&b&&r.createPortal(b,document.body)]})};
|
|
2
2
|
//# sourceMappingURL=TableDropdown.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableDropdown.js","sources":["../../../../src/components/Table/TableDropdown.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\n\nimport { MoreVertical } from \"lucide-react\";\nimport { TableDropdownProps } from \"./types\";\n\nexport default function TableDropdown({\n actions,\n trigger,\n className = \"\",\n dropdownClassName = \"\",\n}: TableDropdownProps) {\n const [isOpen, setIsOpen] = useState(false);\n const [dropdownPosition, setDropdownPosition] = useState({ top: 0, left: 0 });\n const dropdownRef = useRef<HTMLDivElement>(null);\n const triggerRef = useRef<HTMLDivElement>(null);\n\n const toggleDropdown = () => {\n setIsOpen(!isOpen);\n };\n\n const closeDropdown = () => {\n setIsOpen(false);\n };\n\n // Calculate dropdown position when opened\n useEffect(() => {\n if (isOpen && triggerRef.current) {\n const rect = triggerRef.current.getBoundingClientRect();\n const dropdownHeight = 300; // Approximate max height\n const spaceBelow = window.innerHeight - rect.bottom;\n const spaceAbove = rect.top;\n\n // Determine if dropdown should open above or below\n const shouldOpenAbove =\n spaceBelow < dropdownHeight && spaceAbove > spaceBelow;\n\n setDropdownPosition({\n top: shouldOpenAbove\n ? rect.top - dropdownHeight + window.scrollY\n : rect.bottom + window.scrollY,\n left: rect.right - 192 + window.scrollX, // 192px is the dropdown width (w-48)\n });\n }\n }, [isOpen]);\n\n // Close dropdown when clicking outside\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n dropdownRef.current &&\n !dropdownRef.current.contains(event.target as Node) &&\n triggerRef.current &&\n !triggerRef.current.contains(event.target as Node)\n ) {\n closeDropdown();\n }\n };\n\n if (isOpen) {\n document.addEventListener(\"mousedown\", handleClickOutside);\n }\n\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [isOpen]);\n\n // Close dropdown on escape key\n useEffect(() => {\n const handleEscapeKey = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n closeDropdown();\n }\n };\n\n if (isOpen) {\n document.addEventListener(\"keydown\", handleEscapeKey);\n }\n\n return () => {\n document.removeEventListener(\"keydown\", handleEscapeKey);\n };\n }, [isOpen]);\n\n // Handle scroll to reposition dropdown\n useEffect(() => {\n const handleScroll = () => {\n if (isOpen && triggerRef.current) {\n const rect = triggerRef.current.getBoundingClientRect();\n const dropdownHeight = 300;\n const spaceBelow = window.innerHeight - rect.bottom;\n const spaceAbove = rect.top;\n const shouldOpenAbove =\n spaceBelow < dropdownHeight && spaceAbove > spaceBelow;\n\n setDropdownPosition({\n top: shouldOpenAbove\n ? rect.top - dropdownHeight + window.scrollY\n : rect.bottom + window.scrollY,\n left: rect.right - 192 + window.scrollX,\n });\n }\n };\n\n if (isOpen) {\n window.addEventListener(\"scroll\", handleScroll, true);\n }\n\n return () => {\n window.removeEventListener(\"scroll\", handleScroll, true);\n };\n }, [isOpen]);\n\n const handleActionClick = (action: (typeof actions)[0]) => {\n if (!action.disabled) {\n action.onClick();\n closeDropdown();\n }\n };\n\n const dropdownContent = isOpen && (\n <div\n ref={dropdownRef}\n className={`fixed z-[9999] w-48 rounded-md bg-white shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none ${dropdownClassName}`}\n style={{\n top: `${dropdownPosition.top}px`,\n left: `${dropdownPosition.left}px`,\n }}\n >\n <div className=\"py-1\" role=\"menu\" aria-orientation=\"vertical\">\n {actions.map((action, index) => (\n <button\n key={index}\n className={`flex w-full items-center px-4 py-2 text-left text-sm transition-colors duration-150 ${\n action.disabled\n ? \"cursor-not-allowed bg-gray-50 text-gray-400\"\n : action.variant === \"danger\"\n ? \"text-red-700 hover:bg-red-50 hover:text-red-900\"\n : \"text-gray-700 hover:bg-gray-100 hover:text-gray-900\"\n } `}\n onClick={() => handleActionClick(action)}\n disabled={action.disabled}\n role=\"menuitem\"\n >\n {action.icon && (\n <span className=\"mr-3 flex-shrink-0\">{action.icon}</span>\n )}\n {action.label}\n </button>\n ))}\n\n {actions.length === 0 && (\n <div className=\"px-4 py-2 text-sm text-gray-500\">\n No actions available\n </div>\n )}\n </div>\n </div>\n );\n\n return (\n <div className={`relative inline-block ${className}`}>\n {/* Trigger Button */}\n <div ref={triggerRef} className=\"flex\">\n {trigger ? (\n <div onClick={toggleDropdown} className=\"cursor-pointer\">\n {trigger}\n </div>\n ) : (\n <button\n className=\"rounded-md border-gray-300 bg-white px-2 py-2 text-sm font-medium text-gray-700 transition-colors duration-200 focus:ring-offset-2\"\n onClick={toggleDropdown}\n aria-expanded={isOpen}\n aria-haspopup=\"true\"\n >\n <MoreVertical className=\"h-4 w-4\" />\n </button>\n )}\n </div>\n\n {/* Render dropdown in a portal */}\n {typeof document !== \"undefined\" &&\n dropdownContent &&\n createPortal(dropdownContent, document.body)}\n </div>\n );\n}\n"],"names":["_a","actions","trigger","_b","className","_c","dropdownClassName","_d","useState","isOpen","setIsOpen","_e","top","left","dropdownPosition","setDropdownPosition","dropdownRef","useRef","triggerRef","toggleDropdown","closeDropdown","useEffect","current","rect","getBoundingClientRect","spaceBelow","window","innerHeight","bottom","spaceAbove","scrollY","right","scrollX","handleClickOutside","event","contains","target","document","addEventListener","removeEventListener","handleEscapeKey","key","handleScroll","dropdownContent","_jsx","ref","concat","style","children","_jsxs","role","map","action","index","disabled","variant","onClick","handleActionClick","icon","label","length","MoreVertical","createPortal","body"],"mappings":"mIAMc,SAAwBA,GACpC,IAAAC,YACAC,EAAOF,EAAAE,QACPC,cAAAC,OAAS,IAAAD,EAAG,KACZE,EAAAL,EAAAM,kBAAAA,OAAiB,IAAAD,EAAG,GAAEA,EAEhBE,EAAsBC,EAAAA,UAAS,GAA9BC,EAAMF,EAAA,GAAEG,EAASH,EAAA,GAClBI,EAA0CH,EAAAA,SAAS,CAAEI,IAAK,EAAGC,KAAM,IAAlEC,OAAkBC,OACnBC,EAAcC,EAAAA,OAAuB,MACrCC,EAAaD,EAAAA,OAAuB,MAEpCE,EAAiB,WACrBT,GAAWD,EACb,EAEMW,EAAgB,WACpBV,GAAU,EACZ,EAGAW,EAAAA,WAAU,WACR,GAAIZ,GAAUS,EAAWI,QAAS,CAChC,IAAMC,EAAOL,EAAWI,QAAQE,wBAE1BC,EAAaC,OAAOC,YAAcJ,EAAKK,OACvCC,EAAaN,EAAKX,IAMxBG,EAAoB,CAClBH,IAHAa,EANqB,KAMUI,EAAaJ,EAIxCF,EAAKX,IAVY,IAUWc,OAAOI,QACnCP,EAAKK,OAASF,OAAOI,QACzBjB,KAAMU,EAAKQ,MAAQ,IAAML,OAAOM,SAEpC,CACF,GAAG,CAACvB,IAGJY,EAAAA,WAAU,WACR,IAAMY,EAAqB,SAACC,GAExBlB,EAAYM,UACXN,EAAYM,QAAQa,SAASD,EAAME,SACpClB,EAAWI,UACVJ,EAAWI,QAAQa,SAASD,EAAME,SAEnChB,GAEJ,EAMA,OAJIX,GACF4B,SAASC,iBAAiB,YAAaL,GAGlC,WACLI,SAASE,oBAAoB,YAAaN,EAC5C,CACF,GAAG,CAACxB,IAGJY,EAAAA,WAAU,WACR,IAAMmB,EAAkB,SAACN,GACL,WAAdA,EAAMO,KACRrB,GAEJ,EAMA,OAJIX,GACF4B,SAASC,iBAAiB,UAAWE,GAGhC,WACLH,SAASE,oBAAoB,UAAWC,EAC1C,CACF,GAAG,CAAC/B,IAGJY,EAAAA,WAAU,WACR,IAAMqB,EAAe,WACnB,GAAIjC,GAAUS,EAAWI,QAAS,CAChC,IAAMC,EAAOL,EAAWI,QAAQE,wBAE1BC,EAAaC,OAAOC,YAAcJ,EAAKK,OACvCC,EAAaN,EAAKX,IAIxBG,EAAoB,CAClBH,IAHAa,EAJqB,KAIUI,EAAaJ,EAIxCF,EAAKX,IARY,IAQWc,OAAOI,QACnCP,EAAKK,OAASF,OAAOI,QACzBjB,KAAMU,EAAKQ,MAAQ,IAAML,OAAOM,SAEpC,CACF,EAMA,OAJIvB,GACFiB,OAAOY,iBAAiB,SAAUI,GAAc,GAG3C,WACLhB,OAAOa,oBAAoB,SAAUG,GAAc,EACrD,CACF,GAAG,CAACjC,IAEJ,IAOMkC,EAAkBlC,GACtBmC,aACEC,IAAK7B,EACLZ,UAAW,
|
|
1
|
+
{"version":3,"file":"TableDropdown.js","sources":["../../../../src/components/Table/TableDropdown.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\n\nimport { MoreVertical } from \"lucide-react\";\nimport { TableDropdownProps } from \"./types\";\n\nexport default function TableDropdown({\n actions,\n trigger,\n className = \"\",\n dropdownClassName = \"\",\n}: TableDropdownProps) {\n const [isOpen, setIsOpen] = useState(false);\n const [dropdownPosition, setDropdownPosition] = useState({ top: 0, left: 0 });\n const dropdownRef = useRef<HTMLDivElement>(null);\n const triggerRef = useRef<HTMLDivElement>(null);\n\n const toggleDropdown = () => {\n setIsOpen(!isOpen);\n };\n\n const closeDropdown = () => {\n setIsOpen(false);\n };\n\n // Calculate dropdown position when opened\n useEffect(() => {\n if (isOpen && triggerRef.current) {\n const rect = triggerRef.current.getBoundingClientRect();\n const dropdownHeight = 300; // Approximate max height\n const spaceBelow = window.innerHeight - rect.bottom;\n const spaceAbove = rect.top;\n\n // Determine if dropdown should open above or below\n const shouldOpenAbove =\n spaceBelow < dropdownHeight && spaceAbove > spaceBelow;\n\n setDropdownPosition({\n top: shouldOpenAbove\n ? rect.top - dropdownHeight + window.scrollY\n : rect.bottom + window.scrollY,\n left: rect.right - 192 + window.scrollX, // 192px is the dropdown width (w-48)\n });\n }\n }, [isOpen]);\n\n // Close dropdown when clicking outside\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n dropdownRef.current &&\n !dropdownRef.current.contains(event.target as Node) &&\n triggerRef.current &&\n !triggerRef.current.contains(event.target as Node)\n ) {\n closeDropdown();\n }\n };\n\n if (isOpen) {\n document.addEventListener(\"mousedown\", handleClickOutside);\n }\n\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [isOpen]);\n\n // Close dropdown on escape key\n useEffect(() => {\n const handleEscapeKey = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n closeDropdown();\n }\n };\n\n if (isOpen) {\n document.addEventListener(\"keydown\", handleEscapeKey);\n }\n\n return () => {\n document.removeEventListener(\"keydown\", handleEscapeKey);\n };\n }, [isOpen]);\n\n // Handle scroll to reposition dropdown\n useEffect(() => {\n const handleScroll = () => {\n if (isOpen && triggerRef.current) {\n const rect = triggerRef.current.getBoundingClientRect();\n const dropdownHeight = 300;\n const spaceBelow = window.innerHeight - rect.bottom;\n const spaceAbove = rect.top;\n const shouldOpenAbove =\n spaceBelow < dropdownHeight && spaceAbove > spaceBelow;\n\n setDropdownPosition({\n top: shouldOpenAbove\n ? rect.top - dropdownHeight + window.scrollY\n : rect.bottom + window.scrollY,\n left: rect.right - 192 + window.scrollX,\n });\n }\n };\n\n if (isOpen) {\n window.addEventListener(\"scroll\", handleScroll, true);\n }\n\n return () => {\n window.removeEventListener(\"scroll\", handleScroll, true);\n };\n }, [isOpen]);\n\n const handleActionClick = (action: (typeof actions)[0]) => {\n if (!action.disabled) {\n action.onClick();\n closeDropdown();\n }\n };\n\n const dropdownContent = isOpen && (\n <div\n ref={dropdownRef}\n className={`fixed z-[9999] w-48 rounded-md bg-white shadow-lg ring-1 ring-black ring-opacity-5 focus:outline-none dark:bg-gray-800 dark:ring-gray-700 ${dropdownClassName}`}\n style={{\n top: `${dropdownPosition.top}px`,\n left: `${dropdownPosition.left}px`,\n }}\n >\n <div className=\"py-1\" role=\"menu\" aria-orientation=\"vertical\">\n {actions.map((action, index) => (\n <button\n key={index}\n className={`flex w-full items-center px-4 py-2 text-left text-sm transition-colors duration-150 ${\n action.disabled\n ? \"cursor-not-allowed bg-gray-50 text-gray-400 dark:bg-gray-700 dark:text-gray-500\"\n : action.variant === \"danger\"\n ? \"text-red-700 hover:bg-red-50 hover:text-red-900 dark:text-red-400 dark:hover:bg-red-950/40 dark:hover:text-red-300\"\n : \"text-gray-700 hover:bg-gray-100 hover:text-gray-900 dark:text-gray-200 dark:hover:bg-gray-700 dark:hover:text-white\"\n } `}\n onClick={() => handleActionClick(action)}\n disabled={action.disabled}\n role=\"menuitem\"\n >\n {action.icon && (\n <span className=\"mr-3 flex-shrink-0\">{action.icon}</span>\n )}\n {action.label}\n </button>\n ))}\n\n {actions.length === 0 && (\n <div className=\"px-4 py-2 text-sm text-gray-500 dark:text-gray-300\">\n No actions available\n </div>\n )}\n </div>\n </div>\n );\n\n return (\n <div className={`relative inline-block ${className}`}>\n {/* Trigger Button */}\n <div ref={triggerRef} className=\"flex\">\n {trigger ? (\n <div onClick={toggleDropdown} className=\"cursor-pointer\">\n {trigger}\n </div>\n ) : (\n <button\n className=\"rounded-md border border-gray-300 bg-white px-2 py-2 text-sm font-medium text-gray-700 transition-colors duration-200 focus:ring-offset-2 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-200\"\n onClick={toggleDropdown}\n aria-expanded={isOpen}\n aria-haspopup=\"true\"\n >\n <MoreVertical className=\"h-4 w-4\" />\n </button>\n )}\n </div>\n\n {/* Render dropdown in a portal */}\n {typeof document !== \"undefined\" &&\n dropdownContent &&\n createPortal(dropdownContent, document.body)}\n </div>\n );\n}\n"],"names":["_a","actions","trigger","_b","className","_c","dropdownClassName","_d","useState","isOpen","setIsOpen","_e","top","left","dropdownPosition","setDropdownPosition","dropdownRef","useRef","triggerRef","toggleDropdown","closeDropdown","useEffect","current","rect","getBoundingClientRect","spaceBelow","window","innerHeight","bottom","spaceAbove","scrollY","right","scrollX","handleClickOutside","event","contains","target","document","addEventListener","removeEventListener","handleEscapeKey","key","handleScroll","dropdownContent","_jsx","ref","concat","style","children","_jsxs","role","map","action","index","disabled","variant","onClick","handleActionClick","icon","label","length","MoreVertical","createPortal","body"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var r=require("react/jsx-runtime");exports.TableSkeleton=function(e){var n=e.columns,t=void 0===n?5:n,a=e.rows,c=void 0===a?3:a;return r.jsx(r.Fragment,{children:Array.from({length:c}).map((function(e,n){return r.jsx("tr",{children:Array.from({length:t}).map((function(e,t){return r.jsx("td",{className:"whitespace-nowrap px-6 py-4",children:r.jsx("div",{className:"h-4 animate-pulse rounded bg-gray-200 dark:bg-gray-700"})},"skeleton-cell-".concat(n,"-").concat(t))}))},"skeleton-row-".concat(n))}))})};
|
|
2
2
|
//# sourceMappingURL=TableSkeleton.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableSkeleton.js","sources":["../../../../src/components/Table/TableSkeleton.tsx"],"sourcesContent":["export function TableSkeleton({ columns = 5, rows = 3 }: { columns?: number; rows?: number }) {\n return (\n <>\n {Array.from({ length: rows }).map((_, rowIndex) => (\n <tr key={`skeleton-row-${rowIndex}`}>\n {Array.from({ length: columns }).map((_, colIndex) => (\n <td\n key={`skeleton-cell-${rowIndex}-${colIndex}`}\n className='whitespace-nowrap px-6 py-4'\n >\n <div className='h-4 animate-pulse rounded bg-gray-200'></div>\n </td>\n ))}\n </tr>\n ))}\n </>\n );\n}\n"],"names":["_a","_b","columns","_c","rows","_jsx","_Fragment","children","Array","from","length","map","_","rowIndex","colIndex","className","concat"],"mappings":"sEAAM,SAAwBA,OAAEC,EAAAD,EAAAE,QAAAA,OAAO,IAAAD,EAAG,EAACA,EAAEE,EAAAH,EAAAI,KAAAA,OAAI,IAAAD,EAAG,EAACA,EACjD,OACIE,EAAAA,IAAAC,EAAAA,SAAA,CAAAC,SACKC,MAAMC,KAAK,CAAEC,OAAQN,IAAQO,KAAI,SAACC,EAAGC,GAAa,OAC/CR,EAAAA,IAAA,KAAA,CAAAE,SACKC,MAAMC,KAAK,CAAEC,OAAQR,IAAWS,KAAI,SAACC,EAAGE,GAAa,OAClDT,MAAA,KAAA,CAEIU,UAAU,8BAA6BR,SAEvCF,EAAAA,IAAA,MAAA,CAAKU,UAAU,
|
|
1
|
+
{"version":3,"file":"TableSkeleton.js","sources":["../../../../src/components/Table/TableSkeleton.tsx"],"sourcesContent":["export function TableSkeleton({ columns = 5, rows = 3 }: { columns?: number; rows?: number }) {\n return (\n <>\n {Array.from({ length: rows }).map((_, rowIndex) => (\n <tr key={`skeleton-row-${rowIndex}`}>\n {Array.from({ length: columns }).map((_, colIndex) => (\n <td\n key={`skeleton-cell-${rowIndex}-${colIndex}`}\n className='whitespace-nowrap px-6 py-4'\n >\n <div className='h-4 animate-pulse rounded bg-gray-200 dark:bg-gray-700'></div>\n </td>\n ))}\n </tr>\n ))}\n </>\n );\n}\n"],"names":["_a","_b","columns","_c","rows","_jsx","_Fragment","children","Array","from","length","map","_","rowIndex","colIndex","className","concat"],"mappings":"sEAAM,SAAwBA,OAAEC,EAAAD,EAAAE,QAAAA,OAAO,IAAAD,EAAG,EAACA,EAAEE,EAAAH,EAAAI,KAAAA,OAAI,IAAAD,EAAG,EAACA,EACjD,OACIE,EAAAA,IAAAC,EAAAA,SAAA,CAAAC,SACKC,MAAMC,KAAK,CAAEC,OAAQN,IAAQO,KAAI,SAACC,EAAGC,GAAa,OAC/CR,EAAAA,IAAA,KAAA,CAAAE,SACKC,MAAMC,KAAK,CAAEC,OAAQR,IAAWS,KAAI,SAACC,EAAGE,GAAa,OAClDT,MAAA,KAAA,CAEIU,UAAU,8BAA6BR,SAEvCF,EAAAA,IAAA,MAAA,CAAKU,UAAU,4DAHV,wBAAiBF,EAAQ,KAAAG,OAAIF,GAFY,KADjD,gBAAAE,OAAgBH,GADsB,KAc/D"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as n}from"react/jsx-runtime";var
|
|
1
|
+
import{jsx as n}from"react/jsx-runtime";var r=function(r){var e=r.children,o=r.className,a=void 0===o?"":o,t=r.glass,d=void 0!==t&&t,b="".concat("\n w-full\n rounded-2xl\n shadow-xl\n transition-all\n duration-300\n ease-out\n hover:-translate-y-0.5\n p-5\n relative\n z-0\n "," ").concat(d?"\n backdrop-blur-xl\n bg-white/20\n dark:bg-gray-800/20\n border\n border-white/30\n dark:border-gray-700/30\n shadow-lg\n hover:shadow-xl\n hover:bg-white/30\n dark:hover:bg-gray-800/30\n before:absolute\n before:inset-0\n before:rounded-2xl\n before:bg-gradient-to-br\n before:from-white/10\n before:dark:from-gray-900/10\n before:to-transparent\n before:pointer-events-none\n ":"\n backdrop-blur-2xl\n bg-white\n dark:bg-gray-800\n "," ").concat(a);return n("div",{className:b,children:e})};export{r as default};
|
|
2
2
|
//# sourceMappingURL=Card.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Card.mjs","sources":["../../../../src/components/Cards/Card.tsx"],"sourcesContent":["import { ReactNode } from \"react\";\n\ninterface CardProps {\n children: ReactNode;\n className?: string;\n glass?: boolean;\n}\n\nconst Card = ({ children, className = \"\", glass = false }: CardProps) => {\n const baseClasses = `\n w-full\n rounded-2xl\n shadow-xl\n transition-all\n duration-300\n ease-out\n hover:-translate-y-0.5\n p-5\n relative\n z-0\n `;\n\n const glassClasses = `\n backdrop-blur-xl\n bg-white/20\n border\n border-white/30\n shadow-lg\n hover:shadow-xl\n hover:bg-white/30\n before:absolute\n before:inset-0\n before:rounded-2xl\n before:bg-gradient-to-br\n before:from-white/10\n before:to-transparent\n before:pointer-events-none\n `;\n\n const solidClasses = `\n backdrop-blur-2xl\n bg-white\n `;\n\n const combinedClasses = `${baseClasses} ${glass ? glassClasses : solidClasses} ${className}`;\n\n return (\n <div className={combinedClasses}>\n {children}\n </div>\n );\n};\n\nexport default Card;\n"],"names":["Card","_a","children","_b","className","_c","glass","combinedClasses","concat","_jsx"],"mappings":"wCAQA,IAAMA,EAAO,SAACC,GAAE,IAAAC,EAAQD,EAAAC,SAAEC,EAAAF,EAAAG,UAAAA,OAAS,IAAAD,EAAG,GAAEA,EAAEE,EAAAJ,EAAAK,MAAAA,OAAK,IAAAD,GAAQA,
|
|
1
|
+
{"version":3,"file":"Card.mjs","sources":["../../../../src/components/Cards/Card.tsx"],"sourcesContent":["import { ReactNode } from \"react\";\n\ninterface CardProps {\n children: ReactNode;\n className?: string;\n glass?: boolean;\n}\n\nconst Card = ({ children, className = \"\", glass = false }: CardProps) => {\n const baseClasses = `\n w-full\n rounded-2xl\n shadow-xl\n transition-all\n duration-300\n ease-out\n hover:-translate-y-0.5\n p-5\n relative\n z-0\n `;\n\n const glassClasses = `\n backdrop-blur-xl\n bg-white/20\n dark:bg-gray-800/20\n border\n border-white/30\n dark:border-gray-700/30\n shadow-lg\n hover:shadow-xl\n hover:bg-white/30\n dark:hover:bg-gray-800/30\n before:absolute\n before:inset-0\n before:rounded-2xl\n before:bg-gradient-to-br\n before:from-white/10\n before:dark:from-gray-900/10\n before:to-transparent\n before:pointer-events-none\n `;\n\n const solidClasses = `\n backdrop-blur-2xl\n bg-white\n dark:bg-gray-800\n `;\n\n const combinedClasses = `${baseClasses} ${glass ? glassClasses : solidClasses} ${className}`;\n\n return (\n <div className={combinedClasses}>\n {children}\n </div>\n );\n};\n\nexport default Card;\n"],"names":["Card","_a","children","_b","className","_c","glass","combinedClasses","concat","_jsx"],"mappings":"wCAQA,IAAMA,EAAO,SAACC,GAAE,IAAAC,EAAQD,EAAAC,SAAEC,EAAAF,EAAAG,UAAAA,OAAS,IAAAD,EAAG,GAAEA,EAAEE,EAAAJ,EAAAK,MAAAA,OAAK,IAAAD,GAAQA,EAyC7CE,EAAkB,GAAAC,OAxCJ,6MAwCkB,KAAAA,OAAIF,EA3BrB,+fAqBA,gFAMwD,KAAAE,OAAIJ,GAEjF,OACIK,SAAKL,UAAWG,EAAeL,SAC1BA,GAGb"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{__assign as e,__spreadArray as t}from"../../../node_modules/tslib/tslib.es6.mjs";import i from"../../../node_modules/@tiptap/extension-bold/dist/index.mjs";import o from"../../../node_modules/@tiptap/extension-bullet-list/dist/index.mjs";import n from"../../../node_modules/@tiptap/extension-code/dist/index.mjs";import s from"../../../node_modules/@tiptap/extension-code-block/dist/index.mjs";import m from"../../../node_modules/@tiptap/extension-heading/dist/index.mjs";import d from"@tiptap/extension-image";import r from"../../../node_modules/@tiptap/extension-italic/dist/index.mjs";import l from"@tiptap/extension-link";import a from"../../../node_modules/@tiptap/extension-list-item/dist/index.mjs";import p from"../../../node_modules/@tiptap/extension-ordered-list/dist/index.mjs";import x from"../../../node_modules/@tiptap/extension-strike/dist/index.mjs";import{Table as u}from"../../../node_modules/@tiptap/extension-table/dist/index.mjs";import f from"../../../node_modules/@tiptap/extension-table-cell/dist/index.mjs";import g from"../../../node_modules/@tiptap/extension-table-header/dist/index.mjs";import c from"../../../node_modules/@tiptap/extension-table-row/dist/index.mjs";import b from"../../../node_modules/@tiptap/extension-task-item/dist/index.mjs";import h from"../../../node_modules/@tiptap/extension-task-list/dist/index.mjs";import j from"../../../node_modules/@tiptap/extension-text-align/dist/index.mjs";import _ from"@tiptap/extension-underline";import k from"@tiptap/starter-kit";var L={heading:!0,formatting:!0,lists:!0,code:!0,quote:!0,link:!0,history:!0,placeholder:!0,slashCommand:!1,table:!1,image:!1,taskList:!1,alignment:!0},y={minimal:{heading:!1,formatting:!0,lists:!
|
|
1
|
+
import{__assign as e,__spreadArray as t}from"../../../node_modules/tslib/tslib.es6.mjs";import i from"../../../node_modules/@tiptap/extension-bold/dist/index.mjs";import o from"../../../node_modules/@tiptap/extension-bullet-list/dist/index.mjs";import n from"../../../node_modules/@tiptap/extension-code/dist/index.mjs";import s from"../../../node_modules/@tiptap/extension-code-block/dist/index.mjs";import m from"../../../node_modules/@tiptap/extension-heading/dist/index.mjs";import d from"@tiptap/extension-image";import r from"../../../node_modules/@tiptap/extension-italic/dist/index.mjs";import l from"@tiptap/extension-link";import a from"../../../node_modules/@tiptap/extension-list-item/dist/index.mjs";import p from"../../../node_modules/@tiptap/extension-ordered-list/dist/index.mjs";import x from"../../../node_modules/@tiptap/extension-strike/dist/index.mjs";import{Table as u}from"../../../node_modules/@tiptap/extension-table/dist/index.mjs";import f from"../../../node_modules/@tiptap/extension-table-cell/dist/index.mjs";import g from"../../../node_modules/@tiptap/extension-table-header/dist/index.mjs";import c from"../../../node_modules/@tiptap/extension-table-row/dist/index.mjs";import b from"../../../node_modules/@tiptap/extension-task-item/dist/index.mjs";import h from"../../../node_modules/@tiptap/extension-task-list/dist/index.mjs";import j from"../../../node_modules/@tiptap/extension-text-align/dist/index.mjs";import _ from"@tiptap/extension-underline";import k from"@tiptap/starter-kit";var L={heading:!0,formatting:!0,lists:!0,code:!0,quote:!0,link:!0,history:!0,placeholder:!0,slashCommand:!1,table:!1,image:!1,taskList:!1,alignment:!0},y={minimal:{heading:!1,formatting:!0,lists:!0,code:!1,quote:!1,link:!0,history:!0,placeholder:!0,slashCommand:!1,table:!1,image:!1,taskList:!1,alignment:!1},standard:e({},L),full:e(e({},L),{slashCommand:!0,table:!0,image:!0,taskList:!0,alignment:!0})},C=function(t){return e(e({},L),t)},v=function(e){var L=C(e);return t(t(t(t(t(t(t(t(t([k.configure({heading:!1,bulletList:!1,orderedList:!1,listItem:!1,codeBlock:!1})],L.formatting?[i,r,_,x]:[],!0),L.code?[n,s.configure({HTMLAttributes:{class:"bg-gray-100 p-3 rounded text-sm font-mono"}})]:[],!0),L.heading?[m.configure({levels:[1,2,3]})]:[],!0),L.alignment?[j.configure({types:["heading","paragraph"]})]:[],!0),L.lists?[o,p,a]:[],!0),L.link?[l.configure({openOnClick:!1,HTMLAttributes:{class:"text-blue-600 underline"}})]:[],!0),L.taskList?[h,b.configure({nested:!0})]:[],!0),L.image?[d.configure({inline:!1,allowBase64:!0})]:[],!0),L.table?[u.configure({resizable:!0}),c,g,f]:[],!0)},w="prose prose-sm max-w-none prose-h1:text-3xl prose-h1:font-bold prose-h2:text-2xl prose-h2:font-semibold prose-h3:text-xl prose-h3:font-semibold mx-auto focus:outline-none min-h-[200px] p-4";export{v as createTextEditorExtensions,L as defaultTextEditorFeatures,w as editorContentClassName,y as toolbarPresetFeatures,C as withDefaultFeatures};
|
|
2
2
|
//# sourceMappingURL=extensions.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extensions.mjs","sources":["../../../../../src/components/Form/TextEditor/extensions.ts"],"sourcesContent":["import Bold from \"@tiptap/extension-bold\";\nimport BulletList from \"@tiptap/extension-bullet-list\";\nimport Code from \"@tiptap/extension-code\";\nimport CodeBlock from \"@tiptap/extension-code-block\";\nimport Heading from \"@tiptap/extension-heading\";\nimport Image from \"@tiptap/extension-image\";\nimport Italic from \"@tiptap/extension-italic\";\nimport Link from \"@tiptap/extension-link\";\nimport ListItem from \"@tiptap/extension-list-item\";\nimport OrderedList from \"@tiptap/extension-ordered-list\";\nimport Strike from \"@tiptap/extension-strike\";\nimport { Table } from \"@tiptap/extension-table\";\nimport TableCell from \"@tiptap/extension-table-cell\";\nimport TableHeader from \"@tiptap/extension-table-header\";\nimport TableRow from \"@tiptap/extension-table-row\";\nimport TaskItem from \"@tiptap/extension-task-item\";\nimport TaskList from \"@tiptap/extension-task-list\";\nimport TextAlign from \"@tiptap/extension-text-align\";\nimport Underline from \"@tiptap/extension-underline\";\nimport StarterKit from \"@tiptap/starter-kit\";\n\nexport interface TextEditorFeatures {\n heading?: boolean;\n formatting?: boolean;\n lists?: boolean;\n code?: boolean;\n quote?: boolean;\n link?: boolean;\n history?: boolean;\n placeholder?: boolean;\n slashCommand?: boolean;\n table?: boolean;\n image?: boolean;\n taskList?: boolean;\n alignment?: boolean;\n}\n\nexport type ToolbarPreset = \"minimal\" | \"standard\" | \"full\";\n\nexport const defaultTextEditorFeatures: Required<TextEditorFeatures> = {\n heading: true,\n formatting: true,\n lists: true,\n code: true,\n quote: true,\n link: true,\n history: true,\n placeholder: true,\n slashCommand: false,\n table: false,\n image: false,\n taskList: false,\n alignment: true,\n};\n\nexport const toolbarPresetFeatures: Record<ToolbarPreset, Required<TextEditorFeatures>> = {\n minimal: {\n heading: false,\n formatting: true,\n lists:
|
|
1
|
+
{"version":3,"file":"extensions.mjs","sources":["../../../../../src/components/Form/TextEditor/extensions.ts"],"sourcesContent":["import Bold from \"@tiptap/extension-bold\";\nimport BulletList from \"@tiptap/extension-bullet-list\";\nimport Code from \"@tiptap/extension-code\";\nimport CodeBlock from \"@tiptap/extension-code-block\";\nimport Heading from \"@tiptap/extension-heading\";\nimport Image from \"@tiptap/extension-image\";\nimport Italic from \"@tiptap/extension-italic\";\nimport Link from \"@tiptap/extension-link\";\nimport ListItem from \"@tiptap/extension-list-item\";\nimport OrderedList from \"@tiptap/extension-ordered-list\";\nimport Strike from \"@tiptap/extension-strike\";\nimport { Table } from \"@tiptap/extension-table\";\nimport TableCell from \"@tiptap/extension-table-cell\";\nimport TableHeader from \"@tiptap/extension-table-header\";\nimport TableRow from \"@tiptap/extension-table-row\";\nimport TaskItem from \"@tiptap/extension-task-item\";\nimport TaskList from \"@tiptap/extension-task-list\";\nimport TextAlign from \"@tiptap/extension-text-align\";\nimport Underline from \"@tiptap/extension-underline\";\nimport StarterKit from \"@tiptap/starter-kit\";\n\nexport interface TextEditorFeatures {\n heading?: boolean;\n formatting?: boolean;\n lists?: boolean;\n code?: boolean;\n quote?: boolean;\n link?: boolean;\n history?: boolean;\n placeholder?: boolean;\n slashCommand?: boolean;\n table?: boolean;\n image?: boolean;\n taskList?: boolean;\n alignment?: boolean;\n}\n\nexport type ToolbarPreset = \"minimal\" | \"standard\" | \"full\";\n\nexport const defaultTextEditorFeatures: Required<TextEditorFeatures> = {\n heading: true,\n formatting: true,\n lists: true,\n code: true,\n quote: true,\n link: true,\n history: true,\n placeholder: true,\n slashCommand: false,\n table: false,\n image: false,\n taskList: false,\n alignment: true,\n};\n\nexport const toolbarPresetFeatures: Record<ToolbarPreset, Required<TextEditorFeatures>> = {\n minimal: {\n heading: false,\n formatting: true,\n lists: true,\n code: false,\n quote: false,\n link: true,\n history: true,\n placeholder: true,\n slashCommand: false,\n table: false,\n image: false,\n taskList: false,\n alignment: false,\n },\n standard: {\n ...defaultTextEditorFeatures,\n },\n full: {\n ...defaultTextEditorFeatures,\n slashCommand: true,\n table: true,\n image: true,\n taskList: true,\n alignment: true,\n },\n};\n\nexport const withDefaultFeatures = (features?: TextEditorFeatures): Required<TextEditorFeatures> => ({\n ...defaultTextEditorFeatures,\n ...features,\n});\n\nexport const createTextEditorExtensions = (features?: TextEditorFeatures) => {\n const f = withDefaultFeatures(features);\n\n return [\n StarterKit.configure({\n heading: false,\n bulletList: false,\n orderedList: false,\n listItem: false,\n codeBlock: false,\n }),\n ...(f.formatting ? [Bold, Italic, Underline, Strike] : []),\n ...(f.code\n ? [\n Code,\n CodeBlock.configure({\n HTMLAttributes: {\n class: \"bg-gray-100 p-3 rounded text-sm font-mono\",\n },\n }),\n ]\n : []),\n ...(f.heading ? [Heading.configure({ levels: [1, 2, 3] })] : []),\n ...(f.alignment ? [TextAlign.configure({ types: [\"heading\", \"paragraph\"] })] : []),\n ...(f.lists ? [BulletList, OrderedList, ListItem] : []),\n ...(f.link\n ? [\n Link.configure({\n openOnClick: false,\n HTMLAttributes: {\n class: \"text-blue-600 underline\",\n },\n }),\n ]\n : []),\n ...(f.taskList ? [TaskList, TaskItem.configure({ nested: true })] : []),\n ...(f.image ? [Image.configure({ inline: false, allowBase64: true })] : []),\n ...(f.table\n ? [\n Table.configure({ resizable: true }),\n TableRow,\n TableHeader,\n TableCell,\n ]\n : []),\n ];\n};\n\nexport const editorContentClassName =\n \"prose prose-sm max-w-none prose-h1:text-3xl prose-h1:font-bold prose-h2:text-2xl prose-h2:font-semibold prose-h3:text-xl prose-h3:font-semibold mx-auto focus:outline-none min-h-[200px] p-4\";\n"],"names":["defaultTextEditorFeatures","heading","formatting","lists","code","quote","link","history","placeholder","slashCommand","table","image","taskList","alignment","toolbarPresetFeatures","minimal","standard","__assign","full","withDefaultFeatures","features","createTextEditorExtensions","f","__spreadArray","StarterKit","configure","bulletList","orderedList","listItem","codeBlock","Bold","Italic","Underline","Strike","Code","CodeBlock","HTMLAttributes","class","Heading","levels","TextAlign","types","BulletList","OrderedList","ListItem","Link","openOnClick","TaskList","TaskItem","nested","Image","inline","allowBase64","Table","resizable","TableRow","TableHeader","TableCell","editorContentClassName"],"mappings":"i/CAuCO,IAAMA,EAA0D,CACnEC,SAAS,EACTC,YAAY,EACZC,OAAO,EACPC,MAAM,EACNC,OAAO,EACPC,MAAM,EACNC,SAAS,EACTC,aAAa,EACbC,cAAc,EACdC,OAAO,EACPC,OAAO,EACPC,UAAU,EACVC,WAAW,GAGFC,EAA6E,CACtFC,QAAS,CACLd,SAAS,EACTC,YAAY,EACZC,OAAO,EACPC,MAAM,EACNC,OAAO,EACPC,MAAM,EACNC,SAAS,EACTC,aAAa,EACbC,cAAc,EACdC,OAAO,EACPC,OAAO,EACPC,UAAU,EACVC,WAAW,GAEfG,SAAQC,EAAA,CAAA,EACDjB,GAEPkB,KAAID,EAAAA,EAAA,CAAA,EACGjB,GAAyB,CAC5BS,cAAc,EACdC,OAAO,EACPC,OAAO,EACPC,UAAU,EACVC,WAAW,KAINM,EAAsB,SAACC,GAAgE,OAAAH,EAAAA,EAAA,CAAA,EAC7FjB,GACAoB,EAF6F,EAKvFC,EAA6B,SAACD,GACvC,IAAME,EAAIH,EAAoBC,GAE9B,OAAAG,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAA,CACIC,EAAWC,UAAU,CACjBxB,SAAS,EACTyB,YAAY,EACZC,aAAa,EACbC,UAAU,EACVC,WAAW,KAEXP,EAAEpB,WAAa,CAAC4B,EAAMC,EAAQC,EAAWC,GAAU,IAAG,GACtDX,EAAElB,KACA,CACI8B,EACAC,EAAUV,UAAU,CAChBW,eAAgB,CACZC,MAAO,gDAInB,OACFf,EAAErB,QAAU,CAACqC,EAAQb,UAAU,CAAEc,OAAQ,CAAC,EAAG,EAAG,MAAS,OACzDjB,EAAET,UAAY,CAAC2B,EAAUf,UAAU,CAAEgB,MAAO,CAAC,UAAW,gBAAmB,OAC3EnB,EAAEnB,MAAQ,CAACuC,EAAYC,EAAaC,GAAY,OAChDtB,EAAEhB,KACA,CACIuC,EAAKpB,UAAU,CACXqB,aAAa,EACbV,eAAgB,CACZC,MAAO,8BAInB,IAAG,GACLf,EAAEV,SAAW,CAACmC,EAAUC,EAASvB,UAAU,CAAEwB,QAAQ,KAAW,IAAG,GACnE3B,EAAEX,MAAQ,CAACuC,EAAMzB,UAAU,CAAE0B,QAAQ,EAAOC,aAAa,KAAW,IAAG,GACvE9B,EAAEZ,MACA,CACI2C,EAAM5B,UAAU,CAAE6B,WAAW,IAC7BC,EACAC,EACAC,GAEJ,IAAG,EAEjB,EAEaC,EACT"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsxs as e,jsx as r}from"react/jsx-runtime";import
|
|
1
|
+
import{jsxs as e,jsx as r}from"react/jsx-runtime";import a from"../Button/Button.mjs";import"../Button/ExportButton.mjs";function t(t){var n=t.currentPage,i=t.totalPages,d=t.totalItems,l=t.itemsPerPage,o=t.onPageChange,s=t.onViewChange,c=t.loading,g=void 0!==c&&c,m=function(e){e>0&&e<=i&&!g&&o&&o(e)},u=(n-1)*l,h=Math.min(u+l,d);return e("div",{className:"flex items-center justify-between border-t border-gray-200 bg-white py-3 dark:border-gray-700 dark:bg-gray-900",children:[r("div",{className:"block flex-1 sm:hidden",children:e("div",{className:"flex justify-between",children:[r("button",{onClick:function(){return m(n-1)},disabled:1===n||g,className:"relative inline-flex items-center rounded-md border border-gray-300 bg-white px-4 py-2 text-sm font-medium text-gray-700 hover:bg-gray-50 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-200 dark:hover:bg-gray-700 ".concat(1===n||g?"cursor-not-allowed opacity-50":""),children:"Previous"}),r("button",{onClick:function(){return m(n+1)},disabled:n===i||g,className:"relative ml-3 inline-flex items-center rounded-md border border-gray-300 bg-white px-4 py-2 text-sm font-medium text-gray-700 hover:bg-gray-50 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-200 dark:hover:bg-gray-700 ".concat(n===i||g?"cursor-not-allowed opacity-50":""),children:"Next"})]})}),e("div",{className:"hidden sm:flex sm:flex-1 sm:items-center sm:justify-between",children:[e("div",{className:"flex items-center justify-center gap-2",children:[e("div",{className:"relative",children:[r("select",{value:l,onChange:function(e){return s&&s(e.target.value)},disabled:g,className:"appearance-none rounded-md border border-gray-300 bg-white py-2 pl-3 pr-8 text-sm focus:outline-none focus:ring-2 focus:ring-blue-500 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-200",children:[10,20,30,50,100].map((function(e){return r("option",{value:e,children:e},e)}))}),r("div",{className:"pointer-events-none absolute inset-y-0 right-0 flex items-center px-2 text-gray-700 dark:text-gray-300",children:r("svg",{className:"h-4 w-4",fill:"currentColor",viewBox:"0 0 20 20",children:r("path",{fillRule:"evenodd",d:"M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z",clipRule:"evenodd"})})})]}),e("p",{className:"text-sm text-gray-700 dark:text-gray-300",children:[e("span",{children:[d," Entries"]}),e("span",{className:"ml-1",children:["(Showing ",u+1,"-",h," of ",d,")"]})]})]}),r("div",{children:e("nav",{className:"relative z-0 inline-flex gap-2 -space-x-px rounded-md shadow-sm","aria-label":"Pagination",children:[e("button",{onClick:function(){return m(n-1)},disabled:1===n||g,className:"relative inline-flex items-center rounded-md border border-gray-300 bg-white px-2 py-2 text-sm font-medium text-gray-500 hover:bg-gray-50 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-300 dark:hover:bg-gray-700 ".concat(1===n||g?"cursor-not-allowed opacity-50":""),children:[r("span",{className:"sr-only",children:"Previous"}),r("svg",{className:"h-5 w-5",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true",children:r("path",{fillRule:"evenodd",d:"M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z",clipRule:"evenodd"})})]}),function(){var e=[];if(i<=5)for(var r=1;r<=i;r++)e.push(r);else{var a=Math.max(1,n-2),t=Math.min(i,a+5-1);t-a<4&&(a=Math.max(1,t-5+1));for(r=a;r<=t;r++)e.push(r)}return e}().map((function(e){return r("button",{onClick:function(){return m(e)},disabled:g,"aria-current":n===e?"page":void 0,className:"relative inline-flex items-center rounded-md border px-4 py-2 text-sm font-semibold ".concat(n===e?"z-10 border-primary-100 bg-primary-50 text-primary":"border-gray-300 bg-white text-gray-500 hover:bg-gray-50 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-300 dark:hover:bg-gray-700"," ").concat(g?"cursor-not-allowed opacity-50":""),children:e},e)})),e(a,{onClick:function(){return m(n+1)},disabled:n===i||g,type:"button",variant:"primary",size:"sm",outline:!0,children:["Next Page",r("svg",{className:"h-5 w-5",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor","aria-hidden":"true",children:r("path",{fillRule:"evenodd",d:"M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z",clipRule:"evenodd"})})]})]})})]})]})}export{t as Pagination};
|
|
2
2
|
//# sourceMappingURL=Pagination.mjs.map
|