diff --git a/internal/database/database.go b/internal/database/database.go index 58e333e..d2360f6 100644 --- a/internal/database/database.go +++ b/internal/database/database.go @@ -40,6 +40,9 @@ type DB interface { // GetAccount fetch account with matching username. GetAccount(username string) (model.Account, bool) + // GetTags fetch list of tags and its frequency from database. + GetTags() ([]model.Tag, error) + // CreateNewID creates new id for specified table. CreateNewID(table string) (int, error) } diff --git a/internal/database/sqlite.go b/internal/database/sqlite.go index be358f6..8962003 100644 --- a/internal/database/sqlite.go +++ b/internal/database/sqlite.go @@ -444,6 +444,22 @@ func (db *SQLiteDatabase) GetAccount(username string) (model.Account, bool) { return account, account.ID != 0 } +// GetTags fetch list of tags and their frequency. +func (db *SQLiteDatabase) GetTags() ([]model.Tag, error) { + tags := []model.Tag{} + query := `SELECT bt.tag_id id, t.name, COUNT(bt.tag_id) n_bookmarks + FROM bookmark_tag bt + LEFT JOIN tag t ON bt.tag_id = t.id + GROUP BY bt.tag_id ORDER BY t.name` + + err := db.Select(&tags, query) + if err != nil && err != sql.ErrNoRows { + return nil, fmt.Errorf("failed to fetch tags: %v", err) + } + + return tags, nil +} + // CreateNewID creates new ID for specified table func (db *SQLiteDatabase) CreateNewID(table string) (int, error) { var tableID int diff --git a/internal/view/css/custom-dialog.css b/internal/view/css/custom-dialog.css index 42e9f8a..af5f905 100644 --- a/internal/view/css/custom-dialog.css +++ b/internal/view/css/custom-dialog.css @@ -1 +1 @@ -:root{--dialogHeaderBg:#292929;--colorDialogHeader:#FFF}.custom-dialog-overlay{display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-flow:column nowrap;-webkit-box-align:center;align-items:center;-webkit-box-pack:center;justify-content:center;min-width:0;min-height:0;overflow:hidden;position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:10001;background-color:rgba(0,0,0,0.6);padding:32px}.custom-dialog-overlay .custom-dialog{display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-flow:column nowrap;width:100%;max-width:400px;min-height:0;max-height:100%;overflow:auto;background-color:var(--contentBg);font-size:16px}.custom-dialog-overlay .custom-dialog .custom-dialog-header{padding:16px;color:var(--colorDialogHeader);background-color:var(--dialogHeaderBg);font-weight:600;font-size:1em;text-transform:uppercase}.custom-dialog-overlay .custom-dialog .custom-dialog-body{padding:16px;display:grid;max-height:100%;min-height:80px;min-width:0;overflow:auto;font-size:1em;grid-template-columns:max-content 1fr;-webkit-box-align:baseline;align-items:baseline;grid-gap:16px}.custom-dialog-overlay .custom-dialog .custom-dialog-body .custom-dialog-content{grid-column:1 / span 2;color:var(--color);align-self:baseline}.custom-dialog-overlay .custom-dialog .custom-dialog-body>input{color:var(--color);padding:8px;font-size:1em;border:1px solid var(--border);min-width:0}.custom-dialog-overlay .custom-dialog .custom-dialog-footer{padding:16px;display:-webkit-box;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-flow:row wrap;-webkit-box-pack:end;justify-content:flex-end;border-top:1px solid var(--border)}.custom-dialog-overlay .custom-dialog .custom-dialog-footer>a{padding:0 8px;font-size:.9em;font-weight:600;color:var(--color);text-transform:uppercase}.custom-dialog-overlay .custom-dialog .custom-dialog-footer>a:hover{color:var(--main)}.custom-dialog-overlay .custom-dialog .custom-dialog-footer>a:focus{outline:none;color:var(--main);border-bottom:1px dashed var(--main)}.custom-dialog-overlay .custom-dialog .custom-dialog-footer>i.fa-spinner.fa-spin{width:19px;line-height:19px;text-align:center} \ No newline at end of file +:root{--dialogHeaderBg:#292929;--colorDialogHeader:#FFF}.custom-dialog-overlay{display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-flow:column nowrap;-webkit-box-align:center;align-items:center;-webkit-box-pack:center;justify-content:center;min-width:0;min-height:0;overflow:hidden;position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:10001;background-color:rgba(0,0,0,0.6);padding:32px}.custom-dialog-overlay .custom-dialog{display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-flow:column nowrap;width:100%;max-width:400px;min-height:0;max-height:100%;overflow:auto;background-color:var(--contentBg);font-size:16px}.custom-dialog-overlay .custom-dialog .custom-dialog-header{padding:16px;color:var(--colorDialogHeader);background-color:var(--dialogHeaderBg);font-weight:600;font-size:1em;text-transform:uppercase;border-bottom:1px solid var(--border)}.custom-dialog-overlay .custom-dialog .custom-dialog-body{padding:16px;display:grid;max-height:100%;min-height:80px;min-width:0;overflow:auto;font-size:1em;grid-template-columns:max-content 1fr;-webkit-box-align:baseline;align-items:baseline;grid-gap:16px}.custom-dialog-overlay .custom-dialog .custom-dialog-body .custom-dialog-content{grid-column:1 / span 2;color:var(--color);align-self:baseline}.custom-dialog-overlay .custom-dialog .custom-dialog-body>input,.custom-dialog-overlay .custom-dialog .custom-dialog-body>textarea{color:var(--color);padding:8px;font-size:1em;border:1px solid var(--border);background-color:var(--contentBg);min-width:0}.custom-dialog-overlay .custom-dialog .custom-dialog-body>textarea{min-height:37px;resize:vertical}.custom-dialog-overlay .custom-dialog .custom-dialog-body>.suggestion{position:absolute;display:block;padding:8px;background-color:var(--contentBg);border:1px solid var(--border);color:var(--color);font-size:.9em}.custom-dialog-overlay .custom-dialog .custom-dialog-footer{padding:16px;display:-webkit-box;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-flow:row wrap;-webkit-box-pack:end;justify-content:flex-end;border-top:1px solid var(--border)}.custom-dialog-overlay .custom-dialog .custom-dialog-footer>a{padding:0 8px;font-size:.9em;font-weight:600;color:var(--color);text-transform:uppercase}.custom-dialog-overlay .custom-dialog .custom-dialog-footer>a:hover{color:var(--main)}.custom-dialog-overlay .custom-dialog .custom-dialog-footer>a:focus{outline:none;color:var(--main);border-bottom:1px dashed var(--main)}.custom-dialog-overlay .custom-dialog .custom-dialog-footer>i.fa-spinner.fa-spin{width:19px;line-height:19px;text-align:center} \ No newline at end of file diff --git a/internal/view/css/stylesheet.css b/internal/view/css/stylesheet.css index b9182ef..5298b2c 100644 --- a/internal/view/css/stylesheet.css +++ b/internal/view/css/stylesheet.css @@ -1 +1 @@ -:root{--bg:#EEE;--sidebarBg:#292929;--sidebarHoverBg:#232323;--headerBg:#FFF;--contentBg:#FFF;--border:#E5E5E5;--color:#232323;--colorLink:#999;--colorSidebar:#FFF;--main:#F44336;--errorColor:#F44336}.night{--bg:#1F1F1F;--headerBg:#292929;--contentBg:#292929;--border:#191919;--color:#FFF}*{border-width:0;box-sizing:border-box;font-family:"Source Sans Pro",sans-serif;margin:0;padding:0;text-decoration:none}a{cursor:pointer}.spacer{-webkit-box-flex:1;flex:1}body{overflow:hidden}.login{height:100vh;padding:16px;overflow:auto;display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-flow:column nowrap;background-color:var(--bg)}.login>.error-message{width:100%;max-width:400px;font-size:.9em;background-color:var(--contentBg);border:1px solid var(--border);padding:16px;margin-top:auto;margin-bottom:16px;text-align:center;color:var(--errorColor)}.login #login-box{width:100%;max-width:400px;margin-bottom:auto;background-color:var(--contentBg);display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-flow:column nowrap;border:1px solid var(--border);flex-shrink:0}.login #login-box:first-child{margin-top:auto}.login #login-box #logo-area{display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-flow:column nowrap;padding:16px;background-color:var(--main);border-bottom:1px solid var(--border);flex-shrink:0}.login #login-box #logo-area #logo{font-size:3em;font-weight:100;color:var(--contentBg)}.login #login-box #logo-area #logo span{margin-right:8px}.login #login-box #logo-area #tagline{font-weight:500;margin-top:4px;color:var(--contentBg);text-align:center}.login #login-box #input-area{padding:16px;display:grid;grid-gap:16px;grid-template-columns:auto 1fr;-webkit-box-pack:baseline;justify-content:baseline;-webkit-box-align:center;align-items:center;border-bottom:1px solid var(--border)}.login #login-box #input-area>label{color:var(--color);font-size:.9em}.login #login-box #input-area>input{color:var(--color);padding:8px;background-color:var(--contentBg);border:1px solid var(--border);font-size:.9em;min-width:0}.login #login-box #input-area .checkbox-field{grid-column:1 / span 2;display:-webkit-box;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-flow:row nowrap;-webkit-box-align:center;align-items:center;-webkit-box-pack:center;justify-content:center;font-size:.9em;cursor:pointer}.login #login-box #input-area .checkbox-field>input[type="checkbox"]{margin-right:8px}.login #login-box #button-area{display:-webkit-box;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-flow:row nowrap;padding:16px;-webkit-box-pack:center;justify-content:center}.login #login-box #button-area a{color:var(--color);text-transform:uppercase;text-align:center;font-size:.9em;font-weight:600;cursor:default}.login #login-box #button-area a.button{cursor:pointer}.login #login-box #button-area a.button:hover,.login #login-box #button-area a.button:focus{color:var(--main)}.home{display:grid;grid-template-rows:minmax(0, 1fr);grid-template-columns:60px minmax(0, 1fr);background-color:var(--bg);width:100vw;height:100vh}.home .home-sidebar{display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-flow:column nowrap;background-color:var(--sidebarBg)}.home .home-sidebar a{flex-shrink:0;display:block;width:60px;line-height:60px;text-align:center;font-size:1em;color:var(--colorSidebar)}.home .home-sidebar a.active{cursor:default}.home .home-sidebar a:hover,.home .home-sidebar a:focus{color:var(--main);background-color:var(--sidebarHoverBg)}.home .home-sidebar a.active{color:var(--contentBg);background-color:var(--main)}.home h1.page-header{display:block;color:var(--color);background-color:var(--headerBg);border-bottom:1px solid var(--border);line-height:60px;font-size:1.3em;font-weight:600;padding:0 16px}.home div.page-header{display:-webkit-box;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-flow:row nowrap;-webkit-box-align:center;align-items:center;background-color:var(--headerBg);border-bottom:1px solid var(--border);padding:0 16px}.home div.page-header p{-webkit-box-flex:1;flex:1 0;font-size:1.3em;font-weight:600;line-height:60px;color:var(--color)}.home div.page-header input[type="text"]{-webkit-box-flex:1;flex:1 0;min-width:0;margin-right:8px;font-size:1.1em;font-weight:500;line-height:60px;color:var(--color);background-color:var(--contentBg)}.home div.page-header input[type="text"]::-webkit-input-placeholder{color:var(--colorLink)}.home div.page-header input[type="text"]::placeholder{color:var(--colorLink)}.home div.page-header a{display:block;width:24px;line-height:24px;color:var(--colorLink);text-align:center}.home div.page-header a:not(:last-child){margin-right:8px}.home div.page-header a:hover{color:var(--main)}.home .loading-overlay{display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-flow:column nowrap;-webkit-box-align:center;align-items:center;-webkit-box-pack:center;justify-content:center;overflow:hidden;position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:10001;background-color:rgba(0,0,0,0.6)}.home .loading-overlay i{color:var(--colorSidebar);font-size:4em;text-align:center;width:80px;line-height:80px;position:absolute}@media (max-width:600px){.home{grid-template-rows:minmax(0, 1fr);grid-template-columns:minmax(0, 1fr)}.home .home-sidebar{display:none;overflow-x:auto;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-flow:row nowrap;-webkit-box-pack:center;justify-content:center}.home .home-sidebar .spacer{display:none}.home h1.page-header{text-align:center;font-size:1em;line-height:1.2em;padding:8px}.home div.page-header{-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-flow:row wrap}.home div.page-header p{-webkit-box-flex:1;flex:auto;text-align:center;font-size:1em;line-height:3em;width:100%;padding:0}.home div.page-header input[type="text"]{-webkit-box-flex:1;flex:1 0;font-size:1em;font-weight:500;line-height:3em;color:var(--color)}.home div.page-header input[type="text"]::-webkit-input-placeholder{color:var(--colorLink)}.home div.page-header input[type="text"]::placeholder{color:var(--colorLink)}.home div.page-header a{display:block;width:24px;line-height:100%}}#page-home{display:grid;grid-template-columns:1fr;grid-template-rows:auto minmax(0, 1fr)}#page-home #bookmarks-grid{display:grid;grid-template-rows:min-content;grid-template-columns:repeat(auto-fill, minmax(300px, 1fr));grid-gap:16px;padding:16px;overflow:auto}#page-home #bookmarks-grid::after{content:"";display:block;min-height:1px;grid-column-end:-1;grid-column-start:1}#page-home #bookmarks-grid .bookmark{align-self:start}#page-home #bookmarks-grid .pagination-box{grid-column-end:-1;grid-column-start:1;display:-webkit-box;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-flow:row nowrap;align-self:start}#page-home #bookmarks-grid .pagination-box a{padding:8px;color:var(--colorLink)}#page-home #bookmarks-grid .pagination-box a:hover,#page-home #bookmarks-grid .pagination-box a:focus{color:var(--main)}#page-home #bookmarks-grid .pagination-box input{width:40px;padding:8px;text-align:center;font-size:.9em;color:var(--color);border:1px solid var(--border);background-color:var(--contentBg);margin:0 8px}#page-home #bookmarks-grid .pagination-box p{font-size:.9em;color:var(--colorLink);line-height:37px;font-weight:600}#page-home #bookmarks-grid .pagination-box p:last-of-type::before{content:"/";margin-right:8px}#page-home #bookmarks-grid.list{grid-gap:0;grid-template-columns:minmax(0, 1000px)}#page-home #bookmarks-grid.list .pagination-box{padding:16px 0}@media (max-width:600px){#page-home #bookmarks-grid.list{padding:0}#page-home #bookmarks-grid.list .pagination-box{padding:16px}} \ No newline at end of file +:root{--bg:#EEE;--sidebarBg:#292929;--sidebarHoverBg:#232323;--headerBg:#FFF;--contentBg:#FFF;--border:#E5E5E5;--color:#232323;--colorLink:#999;--colorSidebar:#FFF;--main:#F44336;--errorColor:#F44336}.night{--bg:#1F1F1F;--headerBg:#292929;--contentBg:#292929;--border:#191919;--color:#FFF}*{border-width:0;box-sizing:border-box;font-family:"Source Sans Pro",sans-serif;margin:0;padding:0;text-decoration:none}a{cursor:pointer}.spacer{-webkit-box-flex:1;flex:1}body{overflow:hidden}.login{height:100vh;padding:16px;overflow:auto;display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-flow:column nowrap;background-color:var(--bg)}.login>.error-message{width:100%;max-width:400px;font-size:.9em;background-color:var(--contentBg);border:1px solid var(--border);padding:16px;margin-top:auto;margin-bottom:16px;text-align:center;color:var(--errorColor)}.login #login-box{width:100%;max-width:400px;margin-bottom:auto;background-color:var(--contentBg);display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-flow:column nowrap;border:1px solid var(--border);flex-shrink:0}.login #login-box:first-child{margin-top:auto}.login #login-box #logo-area{display:-webkit-box;display:flex;-webkit-box-align:center;align-items:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-flow:column nowrap;padding:16px;background-color:var(--main);border-bottom:1px solid var(--border);flex-shrink:0}.login #login-box #logo-area #logo{font-size:3em;font-weight:100;color:var(--contentBg)}.login #login-box #logo-area #logo span{margin-right:8px}.login #login-box #logo-area #tagline{font-weight:500;margin-top:4px;color:var(--contentBg);text-align:center}.login #login-box #input-area{padding:16px;display:grid;grid-gap:16px;grid-template-columns:auto 1fr;-webkit-box-pack:baseline;justify-content:baseline;-webkit-box-align:center;align-items:center;border-bottom:1px solid var(--border)}.login #login-box #input-area>label{color:var(--color);font-size:.9em}.login #login-box #input-area>input{color:var(--color);padding:8px;background-color:var(--contentBg);border:1px solid var(--border);font-size:.9em;min-width:0}.login #login-box #input-area .checkbox-field{grid-column:1 / span 2;display:-webkit-box;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-flow:row nowrap;-webkit-box-align:center;align-items:center;-webkit-box-pack:center;justify-content:center;font-size:.9em;cursor:pointer}.login #login-box #input-area .checkbox-field>input[type="checkbox"]{margin-right:8px}.login #login-box #button-area{display:-webkit-box;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-flow:row nowrap;padding:16px;-webkit-box-pack:center;justify-content:center}.login #login-box #button-area a{color:var(--color);text-transform:uppercase;text-align:center;font-size:.9em;font-weight:600;cursor:default}.login #login-box #button-area a.button{cursor:pointer}.login #login-box #button-area a.button:hover,.login #login-box #button-area a.button:focus{color:var(--main)}.home{display:grid;grid-template-rows:minmax(0, 1fr);grid-template-columns:60px minmax(0, 1fr);background-color:var(--bg);width:100vw;height:100vh}.home .home-sidebar{display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-flow:column nowrap;background-color:var(--sidebarBg)}.home .home-sidebar a{flex-shrink:0;display:block;width:60px;line-height:60px;text-align:center;font-size:1em;color:var(--colorSidebar)}.home .home-sidebar a.active{cursor:default}.home .home-sidebar a:hover,.home .home-sidebar a:focus{color:var(--main);background-color:var(--sidebarHoverBg)}.home .home-sidebar a.active{color:var(--colorSidebar);background-color:var(--main)}.home h1.page-header{display:block;color:var(--color);background-color:var(--headerBg);border-bottom:1px solid var(--border);line-height:60px;font-size:1.3em;font-weight:600;padding:0 16px}.home div.page-header{display:-webkit-box;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-flow:row nowrap;-webkit-box-align:center;align-items:center;background-color:var(--headerBg);border-bottom:1px solid var(--border);padding:0 16px}.home div.page-header p{-webkit-box-flex:1;flex:1 0;font-size:1.3em;font-weight:600;line-height:60px;color:var(--color)}.home div.page-header input[type="text"]{-webkit-box-flex:1;flex:1 0;min-width:0;margin-right:8px;font-size:1.1em;font-weight:500;line-height:60px;color:var(--color);background-color:var(--contentBg)}.home div.page-header input[type="text"]::-webkit-input-placeholder{color:var(--colorLink)}.home div.page-header input[type="text"]::placeholder{color:var(--colorLink)}.home div.page-header a{display:block;width:24px;line-height:24px;color:var(--colorLink);text-align:center}.home div.page-header a:not(:last-child){margin-right:8px}.home div.page-header a:hover{color:var(--main)}.home .loading-overlay{display:-webkit-box;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-flow:column nowrap;-webkit-box-align:center;align-items:center;-webkit-box-pack:center;justify-content:center;overflow:hidden;position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:10001;background-color:rgba(0,0,0,0.6)}.home .loading-overlay i{color:var(--colorSidebar);font-size:4em;text-align:center;width:80px;line-height:80px;position:absolute}@media (max-width:600px){.home{grid-template-rows:minmax(0, 1fr);grid-template-columns:minmax(0, 1fr)}.home .home-sidebar{display:none;overflow-x:auto;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-flow:row nowrap;-webkit-box-pack:center;justify-content:center}.home .home-sidebar .spacer{display:none}.home h1.page-header{text-align:center;font-size:1em;line-height:1.2em;padding:8px}.home div.page-header{-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-flow:row wrap}.home div.page-header p{-webkit-box-flex:1;flex:auto;text-align:center;font-size:1em;line-height:3em;width:100%;padding:0}.home div.page-header input[type="text"]{-webkit-box-flex:1;flex:1 0;font-size:1em;font-weight:500;line-height:3em;color:var(--color)}.home div.page-header input[type="text"]::-webkit-input-placeholder{color:var(--colorLink)}.home div.page-header input[type="text"]::placeholder{color:var(--colorLink)}.home div.page-header a{display:block;width:24px;line-height:100%}}#page-home{display:grid;grid-template-columns:1fr;grid-template-rows:auto minmax(0, 1fr)}#page-home #bookmarks-grid{display:grid;grid-template-rows:min-content;grid-template-columns:repeat(auto-fill, minmax(300px, 1fr));grid-gap:16px;padding:16px;overflow:auto}#page-home #bookmarks-grid::after{content:"";display:block;min-height:1px;grid-column-end:-1;grid-column-start:1}#page-home #bookmarks-grid .bookmark{align-self:start}#page-home #bookmarks-grid .pagination-box{grid-column-end:-1;grid-column-start:1;display:-webkit-box;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;flex-flow:row nowrap;align-self:start}#page-home #bookmarks-grid .pagination-box a{padding:8px;color:var(--colorLink)}#page-home #bookmarks-grid .pagination-box a:hover,#page-home #bookmarks-grid .pagination-box a:focus{color:var(--main)}#page-home #bookmarks-grid .pagination-box input{width:40px;padding:8px;text-align:center;font-size:.9em;color:var(--color);border:1px solid var(--border);background-color:var(--contentBg);margin:0 8px}#page-home #bookmarks-grid .pagination-box p{font-size:.9em;color:var(--colorLink);line-height:37px;font-weight:600}#page-home #bookmarks-grid .pagination-box p:last-of-type::before{content:"/";margin-right:8px}#page-home #bookmarks-grid.list{grid-gap:0;grid-template-columns:minmax(0, 1000px)}#page-home #bookmarks-grid.list .pagination-box{padding:16px 0}@media (max-width:600px){#page-home #bookmarks-grid.list{padding:0}#page-home #bookmarks-grid.list .pagination-box{padding:16px}} \ No newline at end of file diff --git a/internal/view/js/component/dialog.js b/internal/view/js/component/dialog.js index b3664c6..e4623d4 100644 --- a/internal/view/js/component/dialog.js +++ b/internal/view/js/component/dialog.js @@ -3,18 +3,34 @@ var template = `

{{title}}

-

{{content}}

- + +

{{content}}

+ +