Git Product home page Git Product logo

webtrees-theme-justlight's Introduction

JustLight Theme for webtrees

Latest Release webtrees major version Downloads

paypal

Introduction

A light theme with focus on readability. It uses a full screen where necessary but takes into account small screens too. This theme is optimized for using on tablets and mobile phones. Furthermore this theme offers different layouts with some extra's. If you like a clean layout you certainly want to try this theme.

As of version 2.1.0, a new color palette has been introduced. Currently there are two palettes to choose from. The standard JustLight as you are used to and a new JustBlack theme which is a dark theme and looks a lot like the former independent JustBlack theme.

The JustLight palette is a modern theme in clean white and blue. The JustBlack palette is a theme with a dark background and orange accents. This palette is more relaxing for the eyes.

Installation and upgrading

Installing or upgrading the theme should be straightforward. Unzip the release package and place the jc-theme-justlight folder inside modules_v4 folder of your webtrees installation. If you need to upgrade an existing installation replace the module folder inside the modules_v4 folder with the new one.

Configuration

Go to the theme section in the control panel. The JustLight theme has a small configuration page where you can set the default color palette and specify whether the user can choose their own palette. In this case, an additional 'palette' menu is created.

Translation

The text on the configuration page is translatable. Copy the file nl.php into the resources/lang folder and replace the Dutch text with the translation into your own language. Use the official two-letter language code as file name. Look in the webtrees folder resources/lang to find the correct code.

Development

The JustLight theme is based on the Bootstrap framework and uses Sass to code the stylesheets. Composer and npm are required to generate the stylesheets.

If you wish to contribute, or create your own version of the JustLight theme please follow the steps below.

  • Clone the repository to your local machine
  • Install the Composer dependencies and run in dev mode to be able to generate the stylesheets. The fisharebest/webtrees package is explicitly set to use sources to be able to generate the stylesheets, do not override that setting.
  • Then install the node dependencies and run in dev mode to be able to generate the stylesheets.

Before building, make sure that the fisharebest/webtrees package is in the correct target webtrees version using the command 'composer show fisharebest/webtrees'. When ready to generate the stylesheets, run the command 'npm run production'.

Bugs and feature requests

If you experience any bugs or have a feature request for this theme you can create a new issue.

webtrees-theme-justlight's People

Contributors

dependabot[bot] avatar justcarmen avatar magicsunday avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

webtrees-theme-justlight's Issues

Suggestion to hide the media menu when media objects are protected by settings

If I restrict the access to f.i. media object by privacy restrictions it would by useful to hide the complete media menu if the user is not authorized to see it. I use the following code additions to do this:
media1

    if (Auth::check()) {
        if (count($folders) > 1) {
            $menu = new Menu(/* I18N: Main media menu */ I18N::translate('Media'), '', 'menu-media');

            foreach ($folders as $key => $folder) {
                if ($key !== $MEDIA_DIRECTORY) {
                    $submenu = new Menu(ucfirst($folder), 'medialist.php?' . $this->tree_url . '&action=filter&search=no&folder=' . Filter::escapeUrl($key) . '&sortby=title' . $show_subfolders . '&max=20&columns=2&action=submit', 'menu-mediafolder');
                    $menu->addSubmenu($submenu);
                }
            }
        } else { // fallback if we don't have any subfolders added to the list
            $menu = new Menu(/* I18N: Main media menu */ I18N::translate('Media'), 'medialist.php?' . $this->tree_url, 'menu-media');
        }
        return $menu;

    } else {
        return null;
    }
    }

media2

Hide, remove some features

Hi JustCarmen, sorry to bother again,
My doubt is: On the top-menu -> REPORTS... How could I remove from the list, feature like CEMETERY for example?

I would like to remove this option from the MENU>REPORTS, but I don't know how to do it. I'm building the family tree just for fun among relatives of my family, but certain options are a bit sad to see, such as "cemetery, "death" ... I will not set search engines for our family tree. It will be only for some relatives to have access, to review pictures and some interesting things.

The webtrees is very professional, very cool, very fun to build, but it's a pity not to have a more simplified version or a theme with the option to hide these kind of items ("cemetery, "death", etc.) to avoid be seen.

Thanks a lot.

Statistic preferences with Justlight and Firefox

Hi Carmen,

I found a problem with the recent Firefox browser and the justlight theme 1.7.5 on webtrees 1.7.7. The statistic preferences are incomplete. Some checkboxes are not shown:
bildschirmfoto 2016-07-20 um 20 11 46
(I use Firefox 47.0.1 on MacOSX 10.9.5. With Safari on MacOSX or on my iPad with iOS 9 it works.)

With the webtrees theme it is shown right:
bildschirmfoto 2016-07-20 um 20 12 26

Do you have any idea?

Tabbladen niet aanklikbaar

Beste Carmen,

Ik maak, met veel plezier, gebruik van het JustLight thema. Na het upgraden naar de nieuwste webtrees versie en het upgraden van het thema lijken de linkjes van de tabbladen niet meer aanklikbaar. Bijvoorbeeld:
http://www.beckschebe.nl/webtrees/individual.php?pid=I0024&ged=beckschebe

Als je van 'Feiten en gebeurtenissen' naar 'Gezinnen' wilt dan gebeurt er niets. Met andere thema's werkt het wel (maar die wil ik natuurlijk niet gebruiken :) ). Ik ervaar dit probleem zowel in Microsoft Edge als in Google Chrome.

Is hier wellicht een oplossing voor?

Alvast bedankt voor je reactie!

Groet, Michiel Beckschebe

ERROR 8: Undefined property: WT_Menu::$getOnclick

This error occurs when I click "Default Individual" on Homepage.
ERROR 8: Undefined property: WT_Menu::$getOnclick
0 Error occurred on line 437 of file navmenu.php in function getModuleMenus
1 called from line 91 of file functions.php in function getJLNavMenu
2 called from line 116 of file header.php in function require
3 called from line 163 of file Page.php in function pageHeader
4 called from line 43 of file individual.php

Notice: Undefined property: WT_Menu::$getOnclick in /home/pettyp7/public_html/PettypoolTree/themes/justlight/theme-1.6.2/navmenu.php on line 437

Unable to install/upgrade via Git

Older versions of JustLight theme were installable and upgradable via Git, which was very quick and handy for power users.

Unfortunately this is not possible anymore. Is it possible to allow such workflow available again?

Feature Request: privacy policy

Ik zag op jouw eigen webtrees site een mooi privacy verklaring. Ik zou dat graag op dezelfde wijze willen doen. Is het mogelijk dit te integreren in het justlight thema?
Ik heb dit ook via het contactformulier via jouw website gevraagd, maar betwijfel of dit goed gegaan is.

Bij voorbaat dank!
Michiel

Some suggestions for style.css

Why the default person image is streched by padding: 0 0 0 5px;?
image1

I use this setting:

#indi_mainimage img {
    display: block;
    margin: auto;
    padding: 0px;
}

image2

The search box and button have a margin to the top border - that looks not perfect.
suche1

I use this setting:

.div_search {
    float:right;
    margin-top:0px;
    margin-left:3%;
    margin-right: 15px;
}

.div_search .btn {
    margin-top:0px;
}

suche2

It is only a suggestion. Thanks.

Fatal error: Call to a member function getSubmenus()

After upgrade to JustLight theme ver. 1.7.4 I get this error message at the login page.

Fatal error: Call to a member function getSubmenus() on null in /_/_/***/webtrees/themes/justlight/theme.php on line 373

  • Deleted old justlight theme folder
  • Uploaded theme folder using git into the webtrees themes folder
  • Theme worked fine untill logout!
  • Modules were updated same way too.

Could you please help me solving this issue?

Thanks.
Murat

Stories tab in personal facts

Hi,
to my understanding the tab should be highlighted in blue if chosen or in grey, if not chosen but a story exists, or in white, if not chosen and no story exists. At this point the tab is always highlighted in white. Could you please check this.
Kind regards
Jürgen
heiler-ahnen.de

Demo

It'd be nice to have a demo of the theme hosted somewhere, so I could test it out before installing it.

justlight not recognised by webtrees v2.0.3

I can't get justlight to be recognised by version 2.0.3 of webtrees. I understand that the structure of webtrees 2 changed a bit and as a result the theme would need to be slightly modified. Would this be possible? It would be really sad if justlight development ends as it was a great-looking theme and much better than the default themes.

Compatibility with Webtrees 2

I have installed webtrees dev version 2 from github. It seems this theme is not working with the same.

It will be great if this theme works with webtrees version 2 as I dont want to miss a beautiful theme in forward.

Preferred named not highlighted

If an individual was not known by their first given name, the preferred name should be indicated with an asterisk. This renders as underlined in the default themes but is not highlighted in any fashion in just light. See the below images.
image
image

Make the font-size of the title adjustable

The default font-size of 32px is too large for long titles.

Make the font-size of the title adjustable (option) or shrink it automatically when it is getting too large.

Error message with webtrees 2 dev and justlight 2 dev

With the latest webtrees changes from today I receive the following error message at start:

error: Call to undefined method Fisharebest\Webtrees\Tree::getTitleHtml() in file /themes/justlight/app/Theme/JustBaseTheme.php on line 180 Stack trace: 1. Error->() /themes/justlight/app/Theme/JustBaseTheme.php:180 2. JustCarmen\WebtreesThemes\JustLight\Theme\JustBaseTheme->formatTreeTitleLink() /themes/justlight/app/Theme/JustLightTheme.php:55 3. JustCarmen\WebtreesThemes\JustLight\Theme\JustLightTheme->formatTreeTitle() /themes/justlight/app/Theme/JustLightTheme.php:83 4. JustCarmen\WebtreesThemes\JustLight\Theme\JustLightTheme->headerContent() /themes/justlight/app/Theme/JustLightTheme.php:40 5. JustCarmen\WebtreesThemes\JustLight\Theme\JustLightTheme->bodyHeader() /app/Http/Controllers/AbstractBaseController.php:180 6. Fisharebest\Webtrees\Http\Controllers\AbstractBaseController->viewResponse() /app/Http/Controllers/HomePageController.php:228 7. Fisharebest\Webtrees\Http\Controllers\HomePageController->treePage() /index.php:93 8. call_user_func() /index.php:93 9. Fisharebest\Webtrees{closure}() /index.php:96 10. call_user_func() /index.php:96

Google map not visible on placelist.php for visitors

If I check View -> Lists -> Place hierarchy (placelist.php) as an unregistred visitor I do not see the google map within webtrees 1.7.8 and Justlight theme 1.7.8. When I'm logged-in I can see it.

I have tested it with a Google maps API key V3 too but I do not see the map as visitor (ffp.bauschaffen.de/placelist.php).

Any idea? With other themes it works.

Large markdown table crashes layout

When I have a large markdown table (created with census assistant) the layout crashes.

Is there a css solution? With other webtrees themes the table is horizontal scrollable and the page layout stops on the right side.

markdown_table

Problem displaying charts

Using for example the pedigree chart, the browser window width needs to be as wide (or wider) that the overall chart width otherwise the right hand side (for ltr language) is cut off and inaccessible as there is no scrollbar

Panels as tabs

Hi , thank you for this wonderful theme
I would like to know if it is possible to have panels as tabs in the individual pages just like in the justblack theme ?

Would it be possible to change a piece of code of the justlight theme from the justblack theme just to replace panels by tabs ?

Thanks

Constantly occuring error

In webtrees website log we constantly are getting below error,

Fancy Imagebar: /..../modules_v3/fancy_imagebar/src/FancyImagebarClass.php:434 Undefined variable: thumbnails

Is is any bug?

Error after installation

After installation and first selection of this new webtrees 2 theme, I got an error:
ErrorException: filemtime(): stat failed for /mnt/web312/a3/99/51547399/htdocs/hermann/hartenthaler/php/webtrees/modules_v4/webtrees-theme-justlight/resources/css/justlight.min.css in /mnt/web312/a3/99/51547399/htdocs/hermann/hartenthaler/php/webtrees/app/Module/ModuleCustomTrait.php:146 Stack trace: #0 [internal function]: Fisharebest\Webtrees\Webtrees::Fisharebest\Webtrees\{closure}(2, 'filemtime(): st...', '/mnt/web312/a3/...', 146, Array) #1 /mnt/web312/a3/99/51547399/htdocs/hermann/hartenthaler/php/webtrees/app/Module/ModuleCustomTrait.php(146): filemtime('/mnt/web312/a3/...') #2 /mnt/web312/a3/99/51547399/htdocs/hermann/hartenthaler/php/webtrees/modules_v4/webtrees-theme-justlight/module.php(104): class@anonymous->assetUrl('css/justlight.m...') #3 /mnt/web312/a3/99/51547399/htdocs/hermann/hartenthaler/php/webtrees/modules_v4/webtrees-theme-justlight/resources/views/layouts/default.phtml(69): class@anonymous->stylesheets() #4 /mnt/web312/a3/99/51547399/htdocs/hermann/hartenthaler/php/webtrees/app/View.php(189): include('/mnt/web312/a3/...') #5 /mnt/web312/a3/99/51547399/htdocs/hermann/hartenthaler/php/webtrees/app/View.php(286): Fisharebest\Webtrees\View->render() #6 /mnt/web312/a3/99/51547399/htdocs/hermann/hartenthaler/php/webtrees/app/Helpers/functions.php(203): Fisharebest\Webtrees\View::make('layouts/default', Array) #7 /mnt/web312/a3/99/51547399/htdocs/hermann/hartenthaler/php/webtrees/app/Http/ViewResponseTrait.php(58): view('layouts/default', Array) #8 /mnt/web312/a3/99/51547399/htdocs/hermann/hartenthaler/php/webtrees/app/Http/RequestHandlers/UserPage.php(91): Fisharebest\Webtrees\Http\RequestHandlers\UserPage->viewResponse('user-page', Array) #9 /mnt/web312/a3/99/51547399/htdocs/hermann/hartenthaler/php/webtrees/app/Http/Middleware/WrapHandler.php(83): Fisharebest\Webtrees\Http\RequestHandlers\UserPage->handle(Object(Nyholm\Psr7\ServerRequest)) #10 /mnt/web312/a3/99/51547399/htdocs/hermann/hartenthaler/php/webtrees/vendor/oscarotero/middleland/src/Dispatcher.php(136): Fisharebest\Webtrees\Http\Middleware\WrapHandler->process(Object(Nyholm\Psr7\ServerRequest), Object(Middleland\Dispatcher)) #11 /mnt/web312/a3/99/51547399/htdocs/hermann/hartenthaler/php/webtrees/modules_v4/vesta_classic_look_and_feel/ClassicLAFModule.php(146): Middleland\Dispatcher->handle(Object(Nyholm\Psr7\ServerRequest)) #12 /mnt/web312/a3/99/51547399/htdocs/hermann/hartenthaler/php/webtrees/vendor/oscarotero/middleland/src/Dispatcher.php(136): Cissee\Webtrees\Module\ClassicLAF\ClassicLAFModule->process(Object(Nyholm\Psr7\ServerRequest), Object(Middleland\Dispatcher)) #13 /mnt/web312/a3/99/51547399/htdocs/hermann/hartenthaler/php/webtrees/modules_v4/faces/src/Modules/FacesModule.php(93): Middleland\Dispatcher->handle(Object(Nyholm\Psr7\ServerRequest)) #14 /mnt/web312/a3/99/51547399/htdocs/hermann/hartenthaler/php/webtrees/vendor/oscarotero/middleland/src/Dispatcher.php(136): UksusoFF\WebtreesModules\Faces\Modules\FacesModule->process(Object(Nyholm\Psr7\ServerRequest), Object(Middleland\Dispatcher)) #15 /mnt/web312/a3/99/51547399/htdocs/hermann/hartenthaler/php/webtrees/modules_v4/vesta_research_suggestions/ResearchSuggestionsModule.php(212): Middleland\Dispatcher->handle(Object(Nyholm\Psr7\ServerRequest)) #16 /mnt/web312/a3/99/51547399/htdocs/hermann/hartenthaler/php/webtrees/vendor/oscarotero/middleland/src/Dispatcher.php(136): Cissee\Webtrees\Module\ResearchSuggestions\ResearchSuggestionsModule->process(Object(Nyholm\Psr7\ServerRequest), Object(Middleland\Dispatcher)) #17 /mnt/web312/a3/99/51547399/htdocs/hermann/hartenthaler/php/webtrees/app/Module/HitCountFooterModule.php(157): Middleland\Dispatcher->handle(Object(Nyholm\Psr7\ServerRequest)) #18 /mnt/web312/a3/99/51547399/htdocs/hermann/hartenthaler/php/webtrees/vendor/oscarotero/middleland/src/Dispatcher.php(136): Fisharebest\Webtrees\Module\HitCountFooterModule->process(Object(Nyholm\Psr7\ServerRequest), Object(Middleland\Dispatcher)) #19 /mnt/web312/a3/99/51547399/htdocs/hermann/hartenthaler/php/webtrees/app/Http/Middleware/AuthMember.php(57): Middleland\Dispatcher->handle(Object(Nyholm\Psr7\ServerRequest)) #20 /mnt/web312/a3/99/51547399/htdocs/hermann/hartenthaler/php/webtrees/vendor/oscarotero/middleland/src/Dispatcher.php(136): Fisharebest\Webtrees\Http\Middleware\AuthMember->process(Object(Nyholm\Psr7\ServerRequest), Object(Middleland\Dispatcher)) #21 /mnt/web312/a3/99/51547399/htdocs/hermann/hartenthaler/php/webtrees/app/Http/Middleware/CheckCsrf.php(75): Middleland\Dispatcher->handle(Object(Nyholm\Psr7\ServerRequest)) #22 /mnt/web312/a3/99/51547399/htdocs/hermann/hartenthaler/php/webtrees/vendor/oscarotero/middleland/src/Dispatcher.php(136): Fisharebest\Webtrees\Http\Middleware\CheckCsrf->process(Object(Nyholm\Psr7\ServerRequest), Object(Middleland\Dispatcher)) #23 /mnt/web312/a3/99/51547399/htdocs/hermann/hartenthaler/php/webtrees/vendor/oscarotero/middleland/src/Dispatcher.php(118): Middleland\Dispatcher->handle(Object(Nyholm\Psr7\ServerRequest)) #24 /mnt/web312/a3/99/51547399/htdocs/hermann/hartenthaler/php/webtrees/app/Http/Middleware/Router.php(134): Middleland\Dispatcher->dispatch(Object(Nyholm\Psr7\ServerRequest)) #25 /mnt/web312/a3/99/51547399/htdocs/hermann/hartenthaler/php/webtrees/vendor/oscarotero/middleland/src/Dispatcher.php(136): Fisharebest\Webtrees\Http\Middleware\Router->process(Object(Nyholm\Psr7\ServerRequest), Object(Middleland\Dispatcher)) #26 /mnt/web312/a3/99/51547399/htdocs/hermann/hartenthaler/php/webtrees/app/Http/Middleware/BootModules.php(62): Middleland\Dispatcher->handle(Object(Nyholm\Psr7\ServerRequest)) #27 /mnt/web312/a3/99/51547399/htdocs/hermann/hartenthaler/php/webtrees/vendor/oscarotero/middleland/src/Dispatcher.php(136): Fisharebest\Webtrees\Http\Middleware\BootModules->process(Object(Nyholm\Psr7\ServerRequest), Object(Middleland\Dispatcher)) #28 /mnt/web312/a3/99/51547399/htdocs/hermann/hartenthaler/php/webtrees/app/Http/Middleware/LoadRoutes.php(76): Middleland\Dispatcher->handle(Object(Nyholm\Psr7\ServerRequest)) #29 ...

error on calculated dates

Hello,

I use justlight (1.7.8) on webtrees 1.7.8 (PHP 7).
While editing date of birth (e.g. CAL 1710) justlight changes it to 17 OCT 2016.
The same effect while using the other terms of calculated dates (only complete dates works correctly).
Before I changed to PHP 7 (PHP 5.6) the input (e.g. CAL 1710) was deleted, so I can save nothing.

Best regards
Hauke Sumfleth

Incomplete release zip

Hi Carmen, I think the zip file of the new version is not complete. At least the file module.php is missing. Could you check this? Thanks for the great layout.

New module?

Hi,
Is there already a module that instead of only the "Save Clippings" of Webtrees (save to the hard drive), this module give to us the possibility to also send the link, or file/attachment, to an Email Client software (like Office Outlook)?

Missing switch reference icon in interactive tree

When in the interactive tree view, in the default theme there is a small icon next to the name of a person, which switches the reference of the interactive tree to said person.

Screenshot from 2020-09-21 17-55-42

This is missing in JustLight. Is it possible to add this? Is it determined by the theme?

Fixes for mobile

First, I want to say this theme is very nice. Specifically, I like that you used bootstrap, and I really like that you designed for the mobile experience. That said, I found a couple visual bugs on my phone.

(FYI: I'm using a Samsung Galaxy Note 3. Also, I'm viewing this page on my Webtrees install.)

  • The button for the right sidebar is mostly cut off. I have to zoom out to press it.
  • The nav bar is too tall. I'd say you can remove margin-top from ".navbar-header", and decrease main div's top padding to 50px.
  • The lines in the Facts and events tab are not wrapping at the width of the screen.
  • Not sure if you can control it, but the params for the tab control seems a little off. Eg: The third tab (the first hidden one) is Sources. It can definitely fit in the space between Families and the arrow. I hope that makes sense.

That's all I noticed right now. If I see anything else, I'll let you know. Also, let me know if screenshots would help.

Cookie statement

Hi Carmen,

On your own website I see you have a cookie statement on the bottom of the page. I can't find a setting for this in webtrees. Is this custom made or am I missing a setting.

Thank you!

Michiel

Image thumbnail - carousel-control

When more than one level 1 image, green plus icons appears together with the "previous" and "next" arrows at the
top of img thumbnail. (when not signed in)
When signed in, only the "previous" and "next" arrows are displayed, and correctly centered.

logged_out
logged_in

Feature Request: Graphics

Would it be possible to have the same graphics as in the Webtrees Theme, please see encl. screenshot?
Kind regards

Bildschirmfoto vom 2020-10-09 14-42-08

footer line in middle of page

Using the nice JustLight theme I get the footer Line in the middle of the page www.helmutpaul.at (www.paul-engl.at/at). Just light is the only theme which really works nice on a smaller screen! With others the sides always are cropped. Please have a look to the screenshot and let me know about the problem.
THANKS!

Bildschirmfoto 2020-09-28 um 14 01 49

Default images

Hi,
How do I modify the default images: "silhouette ..... png", and favicon, of the JustLight theme?
I'm not finding all the default images.
Thanks.

Can't create Reports

I can't create any type of report when justlight theme is active. I can not select a person and webtrees show me only the string "undefined" (Screenshot: http://imgur.com/a/w3mKD:)

My Setup:
Webserver: Nginx
PHP: 7.0 via Fastcgi

No errors in PHP or Webserver Error log.

Version 1.6.2.1 typo (syntax error)

Navmenu.php line 437 should read

$onclick = $submenu->getOnclick() ? 'onclick="' . $submenu->getOnclick() . '"' : "";

(braces after first getOnclick)

Gender filter on search results page

The gender filters on search results pages (eg. general search for an individual) don't toggle in the justlight theme.

(Note: If I enable the filter in another theme, I can toggle off in justlight, but not on again)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.